8.4 中断系统8.4.1 概述
引起中断的各种因素
- 人为设置的中断:这种中断一般称为自愿中断,因为它是程序中人为设置的,故一旦机器执行这种人为中断,便自愿停止现行程序而转入中断处理。
- 程序性事故:如定点溢出、浮点溢出、操作码不能识别、除法中出现“非法”等,这些都属于由程序设计不周而引起的中断。
- 硬件故障
- I/O设备:I/O设备被启动以后,一旦准备就绪,便向CPU发出中断请求。
- 外部事件:用户通过键盘来中断现行程序属于外部事件中断。
通常将能引起中断的各个因素称为中断源
中断源可分为两大类:
一类为不可屏蔽中断,这类中断CPU不能禁止,如电源掉电;
另一类为可屏蔽中断,对可屏蔽中断源的请求,CPU可根据该中断源是否被屏蔽来确定是否给予响应。若未屏蔽则能响应;若已被屏蔽,则CPU不能响应。
8.4.2 中断请求标记和中断判优逻辑中断请求标记为了判断是哪个中断源提出的请求,在中断系统中必须设置中断请求标记触发器,简称中断请求触发器,记作INTR。当其状态为“1”时,表示中断源有请求。
这种触发器可集中设在CPU内,组成一个中断请求标记寄存器。
中断请求触发器越多,说明计算机处理中断的能力越强。这些触发器既可以集中在CPU的中断系统内, 也可以分散到各个中断源中。
中断判优逻辑任何一个中断系统,在任一时刻,只能响应一个中断源的请求。当某一时刻多个中断源提出中断请求时,中断系统必须按其优先顺序予以响应,这称为中断判优。
各中断源的优先顺序是根据该中断源若得不到及时响应,致使机器工作出错的严重程度而定的。
中断判优可用硬件实现,也可用软件实现。
1. 硬件排队硬件排队又可分为两种。
- 链式排队器,对应中断请求触发器分散在各个接口电路中的情况,每一个接口电路中都设有一个非门和一个与非门,它们犹如链条一样串接起来。
- 排队器设在CPU内,当最高优先级的中断源有请求时INTR1=1,就可封住比它优先级低的中断源的请求。
解释一下这张图:
- 首先 1 为非门、& 为与非门
- 假设INTR1和INTR2都有中断请求,为高电平1
- INTR1经过非门变成0,并把这个0传到后面,再经过一个非门变成1 即INTP1为1;中断请求有效
- INTR2为1,和INTR1传过来的0做与非运算,得1,再经过非门得0,即INTP2为0;中断请求无效;依次类推......
- 目的是将优先级低的中断请求屏蔽掉
软件排队是通过编写查询程序实现的。程序按中断源的优先等级,从高至低逐级查询各中断源是否有中断请求,这样就可以保证CPU首先响应级别高的中断源的请求。
8.4.3 中断服务程序入口地址的寻找通常有两种方法寻找入口地址:硬件向量法和软件查询法。
硬件向量法硬件向量法就是利用硬件产生向量地址,再由向量地址找到中断服务程序的入口地址。向量地址由中断向量地址形成部件产生,这个电路可分散设置在各个接口电路中,也可设置在CPU内。
由向量地址寻找中断服务程序的入口地址通常采用两种办法。
- 一种在向量地址内存放一条无条件转移指令,CPU响应中断时,只要将向量地址送至PC,执行这条指令,便可无条件转向打印机服务程序的入口地址200。
- 另一种是设置向量地址表,该表设在存储器内,存储单元的地址为向量地址,存储单元的地址为入口地址。只要访问向量地址所指示的存储单元,便可获得入口地址。
硬件向量法寻找入口地址速度快。