1、什么叫中断响应(InterruptResponse)•处理机从发现中断请求、中止现行程序到调出中断处理程序的过程。•其中的实质性工作是中断请求设备的识别和程序的切换。二、中断响应2、中断响应的条件(以下同时满足则进入中断响应周期)(1)中断源有中断请求,其中断请求触发器处于“1”状态;(2)接口中未对该请求设屏蔽,即中断屏蔽触发器为“0”;(3)CPU允许中断,即CPU内部设置的中断允许触发器EINT为开放状态(开中断);(4)中断请求的级别高于当前程序的优先级;(5)一条指令执行完毕(如图7.16所示).7.3.3程序中断的处理过程中断的过程一般分为几个阶段:中断请求、中断响应、中断判优、中断服务和中断返回.一、中断请求信号的建立与传送某个中断源在准备就绪,且相应的中断屏蔽触发器在非屏蔽状态(MASK=0),其中断请求触发器(INTR)被置“1”,通过相应的信号传送电路(公共传送线路、独立请求线等)将其中断请求信号送往CPU.取指周期执行周期间址周期中断周期有间址吗是否有中断吗是否图7.16指令周期的流程3、中断响应周期与中断隐指令中断响应周期(INTC):指响应中断开始至执行服务程序之前CPU所处的一个机器周期状态.CPU一旦进入中断周期,即执行一条中断隐指令.中断隐指令,它类似于一条指令,但在机器指令系统中并不存在,是CPU在中断周期由硬件自动完成的一条指令.3、中断响应周期与中断隐指令中断隐指令完成以下操作:(1)发中断响应信号(INTA)(2)关中断(关闭中断允许触发器EINT,使EINT置“0”)为保护断点期间不被更高级的中断请求所打断,保证被中断的程序在中断服务程序执行完后能接着正确地执行下去.(3)保护程序断点为了使得切换前后的程序能正确运行,将程序状态字PSW和PC的内容压入堆栈.(4)寻找服务程序入口地址通过硬件自动生成向量地址,进而找到中断向量(即中断服务程序的入口地址),将其送入PC.详见图7.17.响应中断(发INTA信号)关中断保护断点,找中断源转移到中断服务子程序……图7.17中断响应周期完成的工作硬件直接实现(相当于执行了一条机器指令,称为隐指令)三、中断服务处理不同设备的服务程序是不同的,但其程序流程类似.一般中断服务程序的流程包括:保护现场、中断服务、恢复现场和中断返回.1、保护现场含义是将中断服务程序中用到的通用寄存器的内容保存起来.具体做法是,在中断服务程序起始部分安排若干条存数指令,将寄存器的内容存至存储器中保存,或用进栈指令将现场内容压入堆栈.三、中断服务处理2、中断服务中断服务程序的主体部分对不同的中断源,中断服务操作不同若中断源为打印机,中断服务程序中的指令为数据传送指令,将CPU中需要打印的字符代码,送入接口中的数据端口,供打印之用.三、中断服务处理3、恢复现场中断服务程序的结尾部分含义是将原程序中的“现场”恢复到原来的寄存器中具体做法是,用取数指令或出栈指令,将保存在存储器(或堆栈)中的信息,送到原来的寄存器4、中断返回中断服务程序的最后一条指令为中断返回指令其作用是将原程序断点处内容(PC、PSW)送回原寄存器,以便继续执行原程序7.3.4中断屏蔽技术一、概念多重中断:计算机在处理中断的过程中,有可能出现新的中断请求.此时,如果CPU暂停现行的中断服务程序,转去执行新的中断请求,称为中断嵌套,或多级中断,如图7.18所示.单重中断:若CPU在执行中断服务程序时,对新的中断请求不予理睬,称为单级中断.两种中断的处理流程略有不同,见图7.19.主程序一级中断服务程序二级中断服务程序三级中断服务程序图7.18多重中断示意图第一次中断请求优先级别更高的中断请求优先级别更高的中断请求返回中断服务程序中断周期取指令执行指令中断否NY中断响应关中断保存断点中断向量→PC保护现场设备服务恢复现场开中断中断返回中断服务程序中断周期取指令执行指令中断否NY中断响应关中断保存断点中断向量→PC保护现场设备服务关中断、恢复现场、中断返回设置新屏蔽字、开中断图7.19单重中断和多重中断服务程序流程单重中断多重中断区别:“开中断”的设置时间不同恢复屏蔽字、开中断返回二、实现多重中断的条件提前设置“开中断”指令(见图7.18)优先级别高的中断源有权中断优先级别低的中断源例如:有A、B、C、D四个中断源,优先级为A→B→C→D.主程序中断请求ABCD中断服务程序图7.20多重中断处理示意图B、C→D→A→为保证级别低的中断源不干扰级别高的中断源的中断处理过程,特采用屏蔽技术.三、屏蔽技术1、屏蔽触发器与屏蔽字:接口中每级(n级)中断源均有各自的中断屏蔽触发器(共n个),用来决定是否屏蔽该中断源提出的中断请求,它们组成n位的中断屏蔽寄存器,其内容,称之为屏蔽码(屏蔽字).屏蔽字与中断源的优先级别是一一对应的.见表7.1.优先级屏蔽字AABCD1111B0111C0011D0001表7.1中断优先级与屏蔽字的关系2、屏蔽技术可改变优先等级中断响应优先级:指CPU响应各中断源请求的优先次序,这种次序是由硬件(排队判优线路)决定的.中断处理优先级:指CPU对各中断请求处理的先后次序.如不使用屏蔽技术,响应的优先次序就是处理的优先次序.(1)中断响应优先级与中断处理优先级相同的情况下屏蔽码的设置例:设某机中有4级响应优先权,由高到低为1→2→3→4,每级对应一位屏蔽码.如果中断处理优先级和中断响应优先级相同,屏蔽码的设置如下所示:程序级别屏蔽码备注1级2级3级4级第1级中断11110——开放第2级中断0111第3级中断00111——屏蔽第4级中断0001用户程序0000表7.2程序优先级别与屏蔽码○。。。QD&1QQINTRD∧来自CPU的中断查询信号MASKQ图7.9接口电路中D、INTR、MASK和中断查询信号的关系回顾:向量地址形成部件(编码器)与与与INTR1‘INTR2‘INTR3‘INTR4‘INTR1INTR2INTR3INTR4排队器向量地址………设备1设备2设备3设备4中断请求寄存器图7.13独立请求方式的优先级排队逻辑中断屏蔽寄存器设备1设备2设备3设备40000用户程序运行当中的屏蔽字中断请求寄存器和中断屏蔽寄存器的关系,见图7.91—屏蔽0—开放向量地址形成部件(编码器)与与与INTR1‘INTR2‘INTR3‘INTR4‘INTR1INTR2INTR3INTR4排队器向量地址………设备1设备2设备3设备4中断请求寄存器图7.13独立请求方式的优先级排队逻辑中断屏蔽寄存器设备1设备2设备3设备41111设备1中断服务程序中的屏蔽字(响应优先级别=处理优先级别)中断请求寄存器和中断屏蔽寄存器的关系,见图7.91—屏蔽0—开放向量地址形成部件(编码器)与与与INTR1‘INTR2‘INTR3‘INTR4‘INTR1INTR2INTR3INTR4排队器向量地址………设备1设备2设备3设备4中断请求寄存器图7.13独立请求方式的优先级排队逻辑中断屏蔽寄存器设备1设备2设备3设备40111设备2中断服务程序中的屏蔽字(响应优先级别=处理优先级别)中断请求寄存器和中断屏蔽寄存器的关系,见图7.91—屏蔽0—开放向量地址形成部件(编码器)与与与INTR1‘INTR2‘INTR3‘INTR4‘INTR1INTR2INTR3INTR4排队器向量地址………设备1设备2设备3设备4中断请求寄存器图7.13独立请求方式的优先级排队逻辑中断屏蔽寄存器设备1设备2设备3设备40011设备3中断服务程序中的屏蔽字(响应优先级别=处理优先级别)中断请求寄存器和中断屏蔽寄存器的关系,见图7.91—屏蔽0—开放向量地址形成部件(编码器)与与与INTR1‘INTR2‘INTR3‘INTR4‘INTR1INTR2INTR3INTR4排队器向量地址………设备1设备2设备3设备4中断请求寄存器图7.13独立请求方式的优先级排队逻辑中断屏蔽寄存器设备1设备2设备3设备40001设备4中断服务程序中的屏蔽字(响应优先级别=处理优先级别)中断请求寄存器和中断屏蔽寄存器的关系,见图7.91—屏蔽0—开放例:如果CPU在执行某一个正常程序时出现了1、2、4级的中断请求,在执行4级中断的中断处理程序的过程当中,又出现了3级中断请求,在执行3级中断的中断处理过程中,又出现了1级中断请求,画出CPU执行程序的轨迹图.主程序⑴⑵⑷中断服务程序1234(3)(1)注意:是在主程序执行完一条指令后,才转去执行相应的中断服务程序。原因见P276图8.3或图7.19。(2)改变中断处理优先级的情况下屏蔽码的设置如果采用中断屏蔽技术来改变中断处理的次序,如将上例中处理次序改为1→4→3→2,只需将中断屏蔽码改为:表7.3修改中断处理次序屏蔽码程序级别屏蔽码备注1级2级3级4级第1级中断11110——开放第2级中断0100第3级中断01101——屏蔽第4级中断0111用户程序0000总结:中断过程示意图…………CPU检测到中断请求并决定响应此请求在本指令执行完毕进入中断隐指令流程关中断保存断点判断优先级别最高的中断源中断服务程序入口地址转中断服务程序主程序……保存现场信息;保存旧屏蔽字并设置新屏蔽字;开中断执行中断服务子程序关中断;恢复旧屏蔽字及其它现场信息;开中断;返回中断服务程序图7.21中断处理过程示意图(P.303)第8题:设某机有5级中断:L0,L1,L2,L3,L4,其中断响应优先次序为:L0最高,L1次之,L4最低。现在要求将中断处理次序改为L1→L3→L0→L4→L2,试问:(1)表8.2中(见下页)各级中断处理程序的各级中断屏蔽值如何设置(每级对应一位,该位为“0”表示允许中断,该位为“1”表示中断屏蔽)?解:1中断处理程序级别中断处理级屏蔽位L0L1L2L3L4L010101L111111L200100L310111L400101(2)若这5级中断同时都发出中断请求,按更改后的次序画出进入各中断处理程序的过程示意图.图7.22CPU运行程序的轨迹L4L3L2L1L0中断服务程序现行程序1-5同时提出中断请求例:某计算机系统共有5级中断,其中断响应优先级从高到低为12345,先按如下规定修改:各级中断处理时均屏蔽本级中断,且处理1级中断时屏蔽2、3、4、5级中断;处理2级中断时屏蔽3、4、5级中断;处理4级中断时不屏蔽其它中断;处理3级中断时屏蔽4级和5级中断;处理5级中断时屏蔽4级中断.试问中断处理优先级(从高到低)顺序如何排列?并给出各级中断处理程序的中断屏蔽字?解:实际中断处理优先级(从高到低)顺序为123541级中断屏蔽字为:11111;2级中断屏蔽字为:01111;3级中断屏蔽字为:00111;4级中断屏蔽字为:00010;5级中断屏蔽字为:00011练习:某计算机中断系统有4级中断I1,I2,I3和I4,中断响应的优先次序是I1→I2→I3→I4。每级中断对应一个屏蔽码,屏蔽码中某位为“1”表示禁止中断,为“0”表示允许中断。各级中断处理程序与屏蔽码的关系如下表所示。中断处理程序屏蔽码I1级I2级I4级I3级I1级I4级I3级I2级1111011100110001(1)确定中断处理的优先次序;(1)确定中断处理的优先次序;解:由表可知,中断处理的优先次序与中断响应的优先次序一致。(2)在ti时刻I1,I2和I4级同时提出中断请求,中断处理完毕后,在tj时刻I3级发出中断申请,在CPU为I3服务过程中,I1级发出请求,在CPU为I1服务时,I2级发出请求。试画出CPU的运行轨迹。I1I2I3I4用户程序I1,I2,I4I3I1I2中断服务程序中断时间titj(3)若将中断处理次序设为I1→I4→I3→I2,问将怎样设置各级的屏蔽码?中断处理程序屏蔽码I1级I2级I4级I3级I1级I4级I3级I2级1111010001100111(4)按照(3)确定的中断处理次序,画出在(2)的情况下CPU的运行轨迹.解:(4)中断处理次序为I1→