异常中断

定义

  • 异常中断
    • 异常 (内中断)
      • 故障 Fault
        • IF 非法操作码
        • 缺页缺段
        • 除数为 0,浮点上溢 (下溢不算)
      • 自陷 Trap
        • teq / teqi / tne / tnei
      • 终止 Abort
        • 硬件故障
          • 控制器错误
          • 存储器校验错
          • 总线错误
    • 中断 (外中断)
      • 可屏蔽中断 (INTR, INTerrupt Request)
      • 不可屏蔽中断 (NMI, Non Maskable Interrupt)
  • 软硬件中断
    • 软中断 (程序性中断)
      • Fault
      • Trap
    • 硬中断
      • Abort
      • 外中断
  • 检测负责人 $\Rightarrow$ 硬件
    • 异常 $\Rightarrow$ CPU 内部自省
    • 中断 $\Rightarrow$ INTR / NMI 外部告知

处理

  1. 关中断
  2. 保存现场
    1. 断点
    2. 程序状态
  3. 识别种类&跳转
    1. 软件识别:mcause & …
    2. 硬件识别:中断向量 mtvec
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
关中断 {                 // 1
	存断点&程序状态       // 2
	查中断源&中断服务地址  // 3 
/* ------------------------ */
	保存现场&屏蔽字       // 4
} 开中断                // 5 (单级中断无)
执行中断服务             // 6
关中断 {                // 7 (单级中断无)
	恢复现场&屏蔽字      // 8
} 开中断                // 9
返回                   // 10
  1. 1~3 由中断隐指令 (硬件) 实现
  2. 4~10 由中断服务 (软件) 实现

注意

  1. 中断隐指令
    1. 中断响应周期中 cpu 的核心工作
    2. 硬件实现
  2. 中断向量
    • 中断向量 := 中断服务地址
    • 中断向量地址 := 中断服务地址的地址
  3. 中断优先级】分为
    • 响应优先级
      • 硬件电路判优
      • 决定开始次序 (响应次序)
    • 处理优先级
      • 屏蔽字决定
      • 决定结束次序
  4. mret】mret 不止包括返回,还包括恢复现场&屏蔽字 (7~10)
  5. 响应时机
    1. 中断:总是在指令执行结束后响应中断
    2. 异常:立刻响应
  6. 关键保护状态】保存现场的主要状态是
    • PC: Program Counter
    • PSW: Program State Word
  7. 单级中断】单级中断响应系统中,“执行中断服务” 不可再被打断,所以没有 5 & 7