32位嵌入式CPU中系统控制协处理器的设计与实现
MIPS体系结构中的系统控制协处理器简称CP0,它提供指令正常执行所需的环境,进行异常/中断处理、高速缓存填充、虚实地址转换、操作模式转换等操作。单从硬件的角度而言,系统控制协处理器对指令集的作用就相当于操作系统对应用程序的作用一样。
异常处理
CPU运行过程中常常需要中断正常执行的指令流程,跳转去执行某段特殊的指令段,接着再恢复原来的指令序列。MIPS体系结构中称这样的过程为异常(Exception)。所有的异常都采用统一的机制处理。
对于异常情况,需要采取以下3方面的措施:
1) 异常检测:CPU需要及时检测出哪个部件发生了什么异常;一般而言,异常检测由各个模块进行,如加法溢出由加法器在运算过程中产生,并在相应的流水段被系统控制协处理器CP0读入。因此这部分功能不属于CP0的设计范围。
2) 异常处理:CPU按照优先级选择哪个异常被处理,并进行必要的上下文切换(Context Switch),为进入异常服务子程序做准备,保证与该种异常对应的服务程序被执行,并且能够从中断处完全恢复原来的指令执行现场。
3) 异常服务:执行异常服务子程序,这部分主要由软件(操作系统)来完成。
对异常处理机制的要求
与传统的异常/中断处理机制相比,在MIPS 4Kc体系结构下的异常处理需要特别考虑3个因素。
流水线的划分
本设计采用五段流水线设计,即每条指令的执行一般都经过IF(取指)、DE(指令译码)、EX(指令执行)、MEM(访问存储器)和WB(数据写回R.F.)五个步骤。因为指令动作被分割,所以异常源也被分割到各个流水线段。例如:加法溢出异常只能在EX被检测到。
精确异常处理机制
精确异常处理是指在发生异常时,仅仅对发生异常的指令或其后面的指令进行异常处理;而其前面的指令要保证能够正常结束。所谓“精确”,是指受到异常处理影响的只有产生异常条件的那条指令,所有在此之前的指令在异常被处理前都将被执行完成。异常处理结束后仍将从发生异常的指令开始继续执行。
操作模式切换
对于多进程操作系统,至少要区分两种进程:有特权的操作系统“核心”进程和一般程序的“用户”进程。当CPU检测到异常发生时,指令执行的正常顺序会被暂停,处理器进入核心模式。当异常服务子程序执行完后,CPU从断点中恢复现场,继续执行原指令序列。
异常处理流水线
根据上述分析可以确定,硬件异常处理流水线的主要任务有3个:更新相应的CP0寄存器,即写CP0寄存器;保存发生异常的指令地址,或当异常指令在延迟槽时,保存引起延迟槽的跳转指令地址;选择异常服务子程序的入口地址。
相关文章
- 2024-01-31影响转动惯量测量过程质量的主要因素分析
- 2024-01-21应对RoHS指令建立我国相关化学计量溯源体系
- 2023-05-17激光干涉仪在速度校准中的应用
- 2023-09-30用调制度评价卤化银乳胶全息记录材料的特性
- 2023-10-11测量空气折射率的瑞利干涉仪及使用中的定度问题
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。