"MIPS32架构下的异常相关指令实现与精确异常处理"

需积分: 0 1 下载量 120 浏览量 更新于2023-12-13 1 收藏 4.42MB DOCX 举报
No.11 异常相关指令的实现 引入延迟槽之前,处理器执行转移指令的顺序是先执行转移指令,再执行转移目标地址的指令。然而,在引入延迟槽之后,处理器执行转移指令的顺序变为先执行转移指令,再执行延迟槽指令,最后执行转移目标地址的指令。下图是转移指令、延迟槽指令和转移目标地址指令执行顺序的示意图。 No.111 | 异常相关指令的实现 在MIPS32架构中,定义了一系列异常类型,包括中断、陷阱和系统调用等。这些异常类型可以打断程序正常运行的流程。异常类型及其优先级如下表所示。本节将只实现灰色部分的异常。 No.112 | 本OpenMIPS处理器只实现其中6种异常情况: 1. 硬件复位:不需要考虑保护现场,只需要将寄存器全部清零,然后从地址0x0处取指执行即可。 2. 中断(包含软中断和硬中断):中断的发生会打断当前指令的执行,处理器需要根据中断类型跳转到相应的中断处理程序进行处理。 3. System系统调用:系统调用指令在执行时会引发异常,处理器需要将控制权转移到系统调用处理程序来处理这个异常。 4. 无效指令:当处理器遇到无效指令时,会引发异常,处理器需要根据异常类型进行相应的处理。 5. 溢出:当运算结果超出目标寄存器所能表示的范围时,会引发异常,处理器需要进行溢出处理。 6. 自陷指令引发的异常:当执行自陷指令时会引发异常,处理器需要将控制权转移到相应的异常处理程序进行处理。 在精确异常的处理中,当异常发生时,处理器需要记录下流水线上还未执行完的指令所处的阶段,以便在异常处理结束后恢复执行。被异常打断的指令被称为异常受害者,而异常发生的指令之前的所有指令都需要被处理器记录下来以备恢复执行。 这是关于异常相关指令的实现的总结。通过引入延迟槽和处理不同类型的异常,处理器能够更好地处理异常情况,保证程序的正常运行。了解和理解异常的相关指令实现对于设计和开发处理器架构至关重要。