1956 年,ERA 1103A 计算机系统引入了中断(interrupt)机制。这一创新主要是为了提高计算机的利用率,特别是在处理风洞实验数据时。
ERA 1103A 主要用于接收和处理风洞试验数据,并将处理结果返回给风洞。在数据准备阶段,风洞数据的获取需要较长时间,导致计算机处于等待状态,这段时间的资源被浪费掉了。为了解决这个问题,ERA 1103A 设计了一条中断线。
通过中断机制,ERA 1103A 可以在等待风洞数据的过程中运行其他程序。当风洞数据准备好后,风洞系统会通过中断线向 ERA 1103A 发送信号,通知其停止当前工作并接收新到的数据。这种机制有效地提升了系统的资源利用率,使得计算机能够更灵活地处理多任务。
以上就是最初的中断设计原型,它为后来的计算机系统中断机制的发展奠定了基础。
2. 中断分类
现代处理器中的中断概念已经得到了广泛的发展,不再仅限于外部设备的中断。中断的主要作用在于使CPU在控制外部设备的同时,能够灵活地响应外部设备的请求。这一设计思想现已扩展为以下几个方面:
a. 外部设备对CPU的控制(Hardware Interrupt):即硬件中断,允许外部设备请求CPU的处理能力。
b. 软件对CPU的控制(Software Interrupt):包括软件中断,通常用于系统调用和其他软件层面的操作。
c. CPU的内部管理(Exceptions):对应异常处理,主要用于处理执行过程中的错误或特殊情况。
Faults 异常
Faults 异常通常不会影响软件代码的继续运行,主要包括以下几种情况:
a. 除零操作:当程序尝试进行除以零的操作时,会引发此类异常。
b. 无效操作码:当CPU遇到无法识别的指令码时,会触发无效操作码异常。
c. 设备不可用:当程序尝试访问一个未连接或不可用的硬件设备时,会产生此异常。
Traps 异常
Traps 异常通常与调试相关,比较常见的就是 JTAG 调试。当 CPU 收到调试指令后,会进入异常模式。此类异常主要包括:
a. 断点:在调试过程中设置的断点会触发此异常。
b. 溢出:当程序在执行过程中出现算术溢出时,会引发此异常。
c. 调试指令:专门用于调试的指令,如读取寄存器的状态等,也会产生此异常。
Abort 异常
Abort 异常通常与指令获取失败有关。常见的取指异常是在从RAM中未能正确获取待执行指令时触发。此类异常主要包括:
a. 访存错误:当访问非法或无效的内存地址时,会产生此异常。
b. 总线错误:在数据传输过程中,若发生总线错误,会引发此异常。
c. Cache 错误:如果在缓存中发生错误而无法正确读取数据,也可能导致此异常。