10.1 协处理器介绍
协处理器一词通常用来表示处理器的一个可选部件,负责处理指令集的某个扩展,具有与处理器核独立的寄存器。MIPS32架构提供了最多4个协处理器,分别是CP0-CP3,作用如表所示:
协处理器CP0用作系统控制,CP1,CP3用作浮点处理单元,而CP2被保留用于特定实现。除CP0处的协处理器都是可选的,OpenMIPS没有实现浮点运算,所以CP1,CP3不用实现,而CP0是不可选的,需要实现,所以下面重点介绍协处理器CP0.
截至本章,我们的OpenMIPS处理器实现了很多指令,但这些指令都是用来运算的,实际的处理器还要支持其他广泛的操作,例如:中断处理、提供可选的配置、观察并控制系统缓存或时钟、地址转换等。MIPS32架构定义的协处理器CP0的作用就是协助实现上述的广泛操作。CP0负责的主要工作如下。
- 配置CPU工作状态:符合MIPS32架构的硬件通常是很灵活的,可以通过读/写一个或一些内部寄存器来改变一些很根本的CPU特性(如:将字节次序从MSB变为LSB,或者从LSB变为MSB)。
- 高速缓存控制:符合MIPS32架构的CPU一般会集成缓存控制器,用来控制、读、写缓存。
- 异常控制:异常发生时的检测和处理都由CP0中一些控制寄存器来定义和控制。
- 存储管理单元控制:对系统的存储区域进行合理的控制、管理和分配,主要是对MMU、TLB的一些配置、管理、访问。
- 其他:当要把额外的功能集成在CPU中,但又不方便当作外设访问时,常常在CP0中增加一些模块以实现这些功能。例如:时钟、时间计数器、奇偶校验错误检测等。