1. 核心定义
- 异常 (Exception):内部产生的意外(如除零、非法指令、缺页、溢出、系统调用)。同步发生。
- 中断 (Interrupt):外部设备的请求(如键盘输入、磁盘就绪)。异步发生。
2. 硬件处理流程
当异常发生时,CPU 必须“停下手里的活”:
- 关中断:防止嵌套中断破坏现场。
- 保存现场:将当前 PC 保存到
EPC(Exception PC),状态保存到Cause寄存器。 - 跳转:PC 指向异常处理程序入口(通常是固定地址,如 MIPS 的
0x80000180)。 - 执行处理程序:操作系统接管。
- 恢复现场:处理完后,从
EPC恢复执行。
3. 这里的坑 (Traps)
- EPC 指向哪里?
- 如果是 Fault (如缺页),EPC 指向当前指令(处理完后重试)。
- 如果是 Trap (如系统调用) 或 Interrupt,EPC 指向下一条指令(处理完后继续)。
- 精确异常:CPU 必须保证异常指令之前的所有指令都已提交,之后的指令都未执行。乱序执行 CPU 实现这一点非常难。