中断
中断:Interrupt
是一种程序随机切换的方式
中断的典型应用:
- 实现CPU与外界信息交换的握手联络:实现CPU和外部设别的并行工作、提高CPU的效率
- 故障处理:硬件故障
- 实时处理
- 程序调度
- 软中断(程序自愿中断)
中断的分类:
- CPU 中断
- 软件中断
- 硬件中断
几个中断的概念
- 中断向量: 中断服务的入口
- 中断单级/多级:多个中断服务程序
- 开/关(清)中断:开中断(STI,Set Interrupt)就是允许响应中断请求,关中断(CLI, Clean Interrupt) 就是拒绝响应中断请求。
- 中断请求: IR(Interrupt Request): 请求进行中断,由外部设备、软件发出
- 中断响应: INTA(INTerrupt Accept): CPU 发出,可以进行中断。
- 中断返回:返回到进入中断程序之前的程序(继续之前的程序执行)
8259 芯片
Intel 8259芯片: 可编程中断控制器芯片
可以级联,单片支持8个中断向量设置 (本实验仪中只能使用一个, KK+ 连接 IR0, 且设置了ICW4 只接受 IR0)
和实验 3.2 没有中断的复杂模型机的区别: 更多的操作(至少包括 STI, CLI, IRET)
挂接 8259 芯片
注意:
- 8259 作为一个外部设备挂接在 IOY3 上
- 控制总线 INTA 与 8259 相连
当外部中断请求有效(IR),CPU允许中断(EI, 也就是
经过了STI),在一条指令执行完时,将响应中断。
CPU响应中断时会向 8259 发送 $\overline{INTA}$
实现堆栈
需要保存中断之前执行的地址,也为了实现多中断、中断嵌套(本实现没有实现) 需要实现堆栈。
中断响应微程序
T4 节拍如果有 EI(Enable Interrupt)和INTR(Interrupt Request)通过 P<4>校验产生程序分支
SP就是栈
- 22: 从栈中取地址给AR
- 23:PC 存到主存中
- 24:栈中地址到A
- 25:A + 1 存到 SP
这一步是将当前正在执行的程序地址暂存到栈中
- 26:入口到AR (向量中所指的入口)
- 27:MEM -> PC
这是开始执行中断服务程序
机器指令代码
|
|