5.4 程序中断方式及接口
1.定义
CPU暂时中止现行程序的执行,转去执行为某个随机事态服务的中断处理程序。处理完毕后自动恢复原程序的执行。
2.实质和特点
(1)实质
程序切换:1.方法:保存断点,获取服务程序入口地址;(中断处理前)返回断点。(中断处理后)
2.时间:一条指令完整结束时切换,保证程序的完整性。
(2)特点
随机性:1.随机发生的事态(按键、故障)
2.有意调用,随机请求与处理的事态(调用打印机)
3.随机插入的事态(软中断指令插入程序任何位置)
注意中断与转子的区别
1.子程序的执行由程序员事先安排,而中断服务程序的执行则是由随机中断事件触发。
2.子程序的执行受主程序或上层程序控制,而中断服务程序一般与被中断的现行程序无关。
3.一般不存在同时调用多个子程序的情况,但可能发生多个外设同时向CPU发出中断服务请求的情况。
3.中断分类
中断源:引起中断的原因或事件
(1)硬中断与软中断
硬中断:由硬件请求信号引发中断
软中断:由软中断指令引发中断
(2)内中断与外中断
内中断:中断源来自主机内部(比如:掉电、除法错、溢出INTO、……)
外中断:中断源来自主机外部(比如打印机、键盘等外设)
(3)可屏蔽中断与非屏蔽中断
可屏蔽中断:可通过屏蔽字屏蔽请求;关中断时不响应请求。
非屏蔽中断:与屏蔽字无关;请求的响应与开/关中断无关。
(4)*向量中断与非向量中断(根据中断源获取服务程序入口地址)
非向量中断:由软件提供服务程序入口地址
向量中断:由硬件提供服务程序入口地址
4.中断典型应用
1)管理中、低速I/O操作,比如键盘、打印机等
2)处理突发故障
硬件故障:掉电、校验错、…
软件故障:溢出、越界访问、……
3)实时处理
某事件出现的实际时间内及时处理,不是批量处理。利用时钟中断定时采集参数,检测,调节。
4)系统调度
多任务切换、缺页中断、……
5)人机交互
5、中断系统的硬、软件组织
1)中断请求源
1.外部硬件中断源:8种,IREQ0~IREQ7
2.内部中断源:掉电、溢出、校验错中断等
3.软中断:模型机软中断为INT11~INTn
2)中断服务程序
在主存中的空间不必连续。
3)中断向量表
存放在模型机中主存的2号单元开始;
向量地址=中断号+2
6.中断请求过程(外中断)
1.中断请求的提出与传递
条件:
1.外设工作 :“完成”标志为1
2.CPU允许请求:“屏蔽”标志为0
2、中断请求的传送(如何传送中断请求?)
稍微看看就行下面的例子
7.中断请求优先级判断
当这些中断源同时提出申请时,CPU该响应哪个请求?该中断请求是否能够中断CPU现行程序执行?所有这些都由中断判优处理逻辑电路来处理。
(1)优先顺序
从左到右依次是:故障、内中断、DMA、外中断。
基本原则:高速操作优于低速操作,输入优于输出。
(2)CPU现行程序与外设请求的判优
在一般计算机中,CPU进行简单的判优处理,根据CPU标志寄存器中的“允许中断”控制位(IF)状态,确定是否响应该中断请求。
补充:
IF(Interrupt Enable Flag)————中断允许标志位。
IF=1使CPU可以响应可屏蔽中断请求。
回忆一下之前讲过的标志位:
6个状态位:CF(进位标志位)、PF(奇偶标志位)、AF(辅助进位标志位)、ZF(零标志位)、SF(符号标志位)、OF(溢出标志位)
3个控制标志位:IF(中断允许标志位)、TF(陷阱标志位)、DF(方向标志位)
在性能更强的计算机中,除了设置IF中断控制位外,还在程序状态字PSW中设定现行程序优先级,以便进一步细分现行程序任务的重要程度。
(3).各外设请求的判优方式
a.软件判优 由程序查询顺序确定优先级。可灵活修改优先级。
b.硬件判优
并行优先排队逻辑、链式优先排队逻辑、二维结构的优先排队、中断控制器判优等。
例子如下:
最后一个图补充:
(1) 当编码器有多个输入(INTi)同时为1时, 编码器只输出优先级最高的编码;
(2) 正在处理的中断优先权编码通过CPU执行软件送往优先权寄存器;
(3) CPU响应中断并进入中断响应周期送出INTA信号, 打开三态缓冲器, 新产生的中断对应的中断源的优先权编码送往CPU; CPU识别后产生新的中断向量, 转去执行优先级更高的中断服务程序;
(4) 如果当前CPU没有执行任何中断服务程序, 则设置优先权失效信号为“1”, 使任何请求信号都INTi能通过“与门2”到达CPU。
8.中断响应(服务程序入口地址的获取方式)
1)响应条件
1.外设有请求,且未被屏蔽;
2.CPU开中断;
3.中断源优先级高于当前程序的优先
4.一条指令(非停机)结束,即ET之后。
1、向量中断
1)概念
a.中断向量:
采用向量化的中断响应方式,将中断服务程序的入口地址及其程序状态字存放在特定的存储区中,所有的中断服务程序入口地址和状态字一起,称为中断向量。
b.中断向量表:
即用来存放中断向量的一张表。在实际的系统中,常将所有中断服务程序的入口地址(或包括服务程序状态字)组织成一张一维表格,并存放于主存的一段连续的存储区,此表就是中断向量表。 c.向量地址:
访问中断向量表的地址码,即读取中断向量所需的地址(也可称为中断指针)。
2)向量中断:
将各个中断服务程序的入口地址(或包括状态字)组织成中断向量表;响应中断时,由硬件直接产生对应于中断源的向量地址;据此访问中断向量表,从中读取服务程序入口地址,由此转向服务程序的执行。这些工作在中断周期IT中由硬件直接实现(不需编写程序实现)
3)中断向量表的组成
在模型机中,中断向量表在主存中占用0~1023号地址单元(即1K),每个中断源占用4个单元,因此,该表中可存放256个中断源。
4)如何从中断向量表中获取中断服务程序入口地址
2、非向量中断
CPU响应中断时只产生一个固定的地址,由此读取中断查询程序的入口地址,从而转向查询程序,通过软件查询,确定被优先批准的中断源,然后分支进入相应的中断服务程序
3、响应中断的条件
1)有中断请求信号发生,如IREQi或INT n。
2)该中断请求未被屏蔽。
3)CPU处于开中断状态,即中断允许触发器TIEN=1(或中断允许标志位IF=1)。
4)没有更重要的事件要处理(如因故障引起的内部中断,或是其优先权高于程序中断的DMA请求等)。
5)CPU刚刚执行的指令不是停机指令(HLT指令)。
6)在一条指令完整结束时响应(因为程序中断的过程是程序切换过程, 不能在一条指令执行的中间就切换)。
4、响应过程
9.模型机中断接口
1.组成(寄存器级)
(1)寄存器选择——对接口寄存器寻址。
(2)命令字寄存器——接收CPU发向外设的命令字,转换为相应操作命令送外设。
(3)状态字寄存器——反映设备和接口的运行状态。(状态字格式的拟定:用代码表示各种状态。)
(4)数据缓冲器——传送数据,实现缓冲。
(5)控制逻辑——请求信号产生、电平转换逻辑、串-并转换逻辑(串口)、针对设备特性的逻辑
(6)公用中断控制器——1.接收外设请求,判优,送出公共请求INT;2.接收中断批准INTA,送出中断号(中断类型码)
2.工作过程(外中断)
1)初始化:设置工作方式,送屏蔽字,送中断号(确定高位)。
2)发启动命令(送命令字),启动设备。
3)设备完成工作,申请中断。
4)中断控制器汇集各请求,经屏蔽、判优,形成中断号,并向CPU送INT。
5)CPU响应,发INTA
6)中断控制器送出中断号
7)CPU执行中断隐指令,转中断服务程序
3.接口设计(涉及命令字、状态字格式的拟定,中断源的扩展。)
这里主要是中断源的扩展
例 模型机需扩展两个外中断源,共用一个中断号。假设通过IRQ2进行扩展
(1)接口组成
两个扩展中断源共用一个接口。
主机发向外设的命令包括:启动、停止、数据选通
外设的状态包括:忙、完成、出错
(2)判断中断源
1.向量中断与非向量中断相结合(软件扩展)
2.请求1与请求2在控制逻辑中形成公共请求IRQ2,送入8259参加判优;
3.CPU响应后执行IRQ2服务程序(向量中断过程)
4.CPU在IRQ2服务程序中查询各设备状态,判中断源,转入相应设备服务程序(非向量中断过程)