《自己动手写CPU》第十章-学习笔记

本章首先介绍MIPS32架构中的协处理器,说明了协处理器的作用。由于OpenMIPS计划实现其中的一个协处理器-CP0,所以10.2节专题介绍CP0,然后在10.3节实现协处理器CP0,其实现方式有点类似HI、LO寄存器的实现方式。10.4节说明协处理器访问指令mfc0、mtc0的格式、作用、用法.10.5节给出了协处理器访问指令的实现思路,以及对系统结构的修改。10.6节通过修改OpenMIPS。实现了协处理器访问指令,最后编写测试程序,在ModeSim中进行仿真验证。

10.1协处理器介绍

协处理器一词通常用来表示处理器的一个可选部件,负责处理指令集的某个扩展,具有与处理器核独立的寄存器。MIPS32架构提供了最多四个协处理器,分别是CP0~CP3,作用

 《自己动手写CPU》第十章-学习笔记_第1张图片

截止本章,我们的OpenMIPS处理器实现了很多指令,但这些指令都是用来运算的,实际的处理器还要支持其他广泛的操作,例如:中断处理、提供可选的配置、观察并控制系统缓存或时钟、地址转换等。MIPS32架构定义的协处理器CP0的作用就是协助实现上述的广泛操作。CP0负责的主要工作如下:

--配置CPU工作状态:符合MIPS32架构的硬件通常是很灵活的,可以通过读/写一个或一些内部寄存器来改变一些很根本的CPU特性(如:将字节次序从MSB变为LSB或者从LSB变为MSB)。

--高速缓存控制:符合MIPS32架构的CPU一般会集成缓存控制器,用来控制、读、写缓存。

--异常控制:异常发生时的检测和处理都由CP0中的一些控制寄存器来定义和控制。

--存储管理单元控制:对系统的存储区域进行合理的控制、管理和分配,主要是对MMU、TLB的一些配置、管理、访问。

--其他:当要把额外的功能集成在CPU中,但又不方便当作外设访问时,常常在CP0中增加一些模块以实现这些功能。例如:时钟、时间计数机、奇偶校验错误检测等。

10.2协处理器CP0中的寄存器

《自己动手写CPU》第十章-学习笔记_第2张图片

 《自己动手写CPU》第十章-学习笔记_第3张图片

 从表中可以发现有很多寄存器都是与缓存、MMU、TLB、调试有关的,而OpenMIPS的设计目标是一个轻量级的处理器,并不打算实现缓存、MMU、TLB、调试等复杂功能。

下面依次介绍这7个寄存器的格式、作用。

1.Count寄存器(标号为9)

Count寄存器是一个不停计数的32位寄存器,计数频率一般与CPU时钟频率相同,当计数达到32为无符号数的上限时,会从0开始重新计数。Count寄存器可读、可写。

《自己动手写CPU》第十章-学习笔记_第4张图片

 2.Compare寄存器(标号为11)

Compare寄存器是一个32位的寄存器,与Count寄存器在一起完成定时中断功能。当Count寄存器的计数值与Compare寄存器中的值一样时,会产生定时中断。这个中断会一直保持,知道有数据被写入Compare寄存器。Compare寄存器可读、可写

 3.Status寄存器(标号为12)

Status寄存器也是一个32位、可读、可写的寄存器,用来控制处理器的操作模式、中断使能以及诊断状态

《自己动手写CPU》第十章-学习笔记_第5张图片

CU3-CU0

表示协处理器是否可用,分别控制协处理器CP3、CP2、CP1、CP0.为0时,表示相应的协处理器不可用为1时,表示相应的协处理器可用。对于OpenMIPS处理器而言,只有协处理器CP0所以可以设置本字段为4'b0001

RP
表示是否启用低功耗模式,但是是否实现以及如何实现是同具体处理器相关的,比如:有的处理器可以通过降低工作频率、工作电压,来实现低功耗,OpenMIPS处理器没有实现这些功能,所以本子段没有作用。

 《自己动手写CPU》第十章-学习笔记_第6张图片

 《自己动手写CPU》第十章-学习笔记_第7张图片

4.Cause寄存器(标号为13)

Cause寄存器主要记录最近一次异常发生的原因,也控制软件中断请求。Cause寄存器的各字段如图所示,除了IP[1:0]、IV和WP,其余字段都是只读的。

《自己动手写CPU》第十章-学习笔记_第8张图片

 《自己动手写CPU》第十章-学习笔记_第9张图片

 《自己动手写CPU》第十章-学习笔记_第10张图片

《自己动手写CPU》第十章-学习笔记_第11张图片

《自己动手写CPU》第十章-学习笔记_第12张图片

《自己动手写CPU》第十章-学习笔记_第13张图片

《自己动手写CPU》第十章-学习笔记_第14张图片

《自己动手写CPU》第十章-学习笔记_第15张图片

 10.3协处理器CP0的实现

《自己动手写CPU》第十章-学习笔记_第16张图片《自己动手写CPU》第十章-学习笔记_第17张图片

你可能感兴趣的:(fpga开发)