中断控制器:原理、设计与实现
1. 中断控制器概述
在计算机系统中,存在许多可能中断程序正常执行流程的事件。这些事件可分为外部事件和内部事件。外部事件由特定实用程序下运行的 I/O 设备产生,这些程序使得 I/O 设备能够与 CPU 进行数据传输。内部事件则源于 CPU 执行用户程序时遇到的情况,如除零错误或溢出条件,这些会产生异常。所有这些与硬件相关的外部事件和与软件相关的内部事件都由中断控制器管理。
1.1 中断类型及优先级
根据优先级,中断可分为四种类型:
- CPU 复位中断 :具有最高优先级。当复位发生时,每个 CPU 寄存器中的数据需要保存在特殊内存中,以便后续恢复。
- 内部中断 :优先级次之。通常源于用户程序中遇到的错误,或用户程序中设置的断点。
- 软件中断 :排在优先级列表的第三位。实际上是由软件仿真例程产生的向量子例程调用,浮点除法就是一个例子。
- 硬件中断 :优先级最低。尽管硬件中断的优先级完全可由用户编程设置,但操作系统也可以管理硬件优先级列表,并通过设备驱动程序与特定设备进行通信。
1.2 硬件中断处理流程
硬件中断处理过程始于一个或多个 I/O 设备向中断接口提交中断请求。中断接口设计为最多处理 256 个中断输入(INTR0 至 INTR255)。中断控制器是一个可编程状态机,它对所有待处理的中断进行优先级排序,根据优先级列表选择最高优先级的设备,并通过 INTR 输出与 CPU 进行通信。当从 CPU 接收到