1、2024/4/8 周一1一、CPU响应中断的条件中断响应是指从CPU发现中断请求,中止现行程序到调出中断处理程序这一过程。7.2 中断的处理过程第七章 中断对每个中断源来说,既要能发出中断请求信号,而且能保持这个信号,直至CPU响应该请求后再将其清除。因此,每个中断源都要有一个中断请求触发器,如下图中的触发器A。设置中断请求触发器2024/4/8 周一2具有中断屏蔽的接口电路7.2 中断处理过程一、CPU响应中断的条件2024/4/8 周一3 设置中断屏蔽触发器中断屏蔽,是指即使某个中断源发出中断请求信号,也使该信号不起作用的措施。设置屏蔽的目的是为了增加控制的灵活性。方法是在每个外设的接口电
2、路中设置一个中断屏蔽触发器,用来控制其对应外设所发出的中断请求能否送到CPU,进而又可把一组屏蔽触发器(如8个)组成一个中断屏蔽寄存器端口,用输出指令来控制其状态,如上图所示触发器B。7.2 中断处理过程一、CPU响应中断的条件2024/4/8 周一4 开放CPU内部的中断允许触发器尽管外设有中断请求,但CPU并不一定会响应。因为,在CPU内部设置了一个中断允许触发器,该触发器的状态决定CPU对外设的中断是否响应。CPU不响应中断,称关中断(中断关闭)CPU响应中断,称开中断(中断开放)中断允许触发器017.2 中断处理过程一、CPU响应中断的条件2024/4/8 周一51)当CPU复位时,中
3、断允许触发器处于关中断状态;2)中断请求被响应后,CPU自动关中断;3)CPU执行关中断指令CLI后,中断关闭。中断允许触发器的状态可用指令CLI和 STI来改变,下述三种情况可关闭中断:7.2 中断处理过程一、CPU响应中断的条件2024/4/8 周一6中断关闭与中断屏蔽不同。中断关闭对INTR上所有的可屏蔽中断均不理睬;中断屏蔽则只封锁被屏蔽的那个中断源,使其中断请求不能到达CPU的INTR线上。即:不让其中断请求发往CPU,在接口中屏蔽INTR线上有中断请求,但CPU当时不能响应,CPU内部关闭屏蔽关闭7.2 中断处理过程一、CPU响应中断的条件2024/4/8 周一7 现行指令执行完毕
4、在满足前三个条件后,CPU在执行现行指令的最后一个机器周期的最后一个T状态时,才去采样中断请求输入线INTR,若发现有中断请求,则把CPU内部的中断锁存器置“1”,下一个机器周期就不进入取指周期,而进入中断响应周期。7.2 中断处理过程一、CPU响应中断的条件2024/4/8 周一8二、CPU对中断的响应CPU进入中断响应周期后,中断响应过程如下:7.2 中断处理过程1.关中断2.保护断点CPU在响应中断后,发出中断响应信号INTA,同时内部自动关中断,以禁止接受其它的中断请求。把断点处的IP及CS值入栈保存,以备中断处理完后能正确返回断点。2024/4/8 周一97.2 中断处理过程二、CP
5、U对中断的响应4.保护现场5.执行中断服务程序6.恢复现场7.开中断及返回为了不使中断服务程序的运行影响主程序的状态,必须把断点处的相关寄存器及标志寄存器压栈保护。3.识别中断源CPU要对中断进行处理,必须找到相应的中断服务程序的入口地址,这就是中断源的识别。2024/4/8 周一10三、中断源的识别当CPU响应中断、关中断及保护断点之后,就要寻找中断源,找到相应的中断服务程序的入口地址。这是中断处理过程的重要的一环。识别中断源有两种方法,即查询中断和矢量中断。7.2 中断处理过程2024/4/8 周一11 查询中断查询中断采用软件来识别中断源,其方法是用程序依次读出每一外设的中断标志位,通过
6、测试这一标志位来判断它是否曾经发生中断请求,若该标志位无效则继续往下测试,直到被检测的设备状态(如中断请求触发器的状态)出现“1”时,中断识别程序便转向相应的中断服务程序。若查完所有状态,仍没有任何设备请求服务时,说明是错误所致,转到出错处理。查询过程如下图所示:7.2 中断处理过程三、中断源的识别2024/4/8 周一127.2 中断处理过程三、中断源的识别2024/4/8 周一13查询中断与数据的查询传送方式有本质上的不同。查询传送方式需要CPU花费大量时间不断循环询问,以等待设备的“就绪”信号;而查询中断在外设无中断请求时CPU照常执行程序,只有当CPU收到中断请求,设备已“就绪”时,才
7、查询是谁发出的中断请求。因此查询中断是一种由中断启动而不是由微处理器启动的“查询”。7.2 中断处理过程三、中断源的识别查询中断通常用于比较简单的小系统中。对于中断源较多的大系统来说,查询需要花费较长的时间。2024/4/8 周一14 矢量中断7.2 中断处理过程三、中断源的识别矢量中断是指在CPU中断响应周期内,控制逻辑将发中断请求的外设预先准备好的一个地址送入CPU,CPU在硬件的支持下由该地址自动找到相应的中断服务程序的入口,并转入中断服务程序。外设提供给CPU的这一地址叫做中断矢量,每个外设都预先设定一个自己的中断矢量,中断矢量与中断源一一对应。矢量中断采用硬件来识别中断源,需要花费较
8、多的硬件资源,但速度快,目前被广泛采用。2024/4/8 周一15矢量中断以硬件的开销换取较快的中断响应速度,而查询方式以软件和时间为代价来节省硬件。有时混合使用这两种技术可获预期的较好效果,如在一个较大的中断系统中,用矢量方法将中断源分为若干小组,然后用查询法迅速从组内中识别出请求中断的中断源。这两种方法结合比完全采用矢量中断既经济,又不致对速度造成太大的影响。7.2 中断处理过程三、中断源的识别2024/4/8 周一16四、中断优先级实际应用中,常遇到多个中断源同时请求中断,这时CPU必须确定先为哪个中断服务。解决的方法是采用中断优先排队,即把全部中断源按其中断的必要性和实时性以及处理的轻
9、重缓急进行排队,给出优先级。因此,中断优先级是指多个中断同时发生时,CPU对中断源响应的顺序。优先权高的先被响应。7.2 中断处理过程另外,当CPU正在处理中断时,要能响应优先级更高的中断请求,同时屏蔽同级或较低的中断请求。即多重中断或中断嵌套的问题。2024/4/8 周一17 软件查询优先方式这是最简单的中断优先级处理方式。右图是软件查询方式的接口电路,下页图为其流程图。7.2 中断处理过程四、中断优先级2024/4/8 周一18实现方法:将8个外设的中断请求触发器组合为一个端口,并给这个端口赋以设备号(口地址),7.2 中断处理过程四、中断优先级2024/4/8 周一19然后,把各外设的中
10、断请求信号相或后作为INTR信号。任何外设有中断请求时,都可向CPU发出INTR信号。CPU响应中断后,把中断寄存器的状态作为一个输入端口读进CPU,然后逐位检测其状态,若有中断请求就转入相应的中断服务程序,这样优先级的级别取决于软件查询的顺序,先测试的中断源具有较高的优先级。该方式的优点是硬件简单,不需要硬件排队电路。但在中断源较多时,软件查询的时间较长。7.2 中断处理过程四、中断优先级2024/4/8 周一20 硬件查询优先方式常用的硬件查询优先方式有两种:优先级中断链矢量优先权排队7.2 中断处理过程四、中断优先级2024/4/8 周一21排队链优先级中断系统 优先级中断链7.2 中断
11、处理过程四、中断优先级2024/4/8 周一22当中断请求得到响应时,中断响应信号就传送到优先级最高的I/O设备,并按串行方式往下传送。若某设备有中断请求,中断响应信号就不再往下传送,而中止在该设备上,从而允许该设备使用总线与CPU交换信息,该设备以后的中断就被屏蔽了。显然,排在链的最前面的优先级最高。各中断源的中断优先级按其在链式排队电路中的先后次序决定。7.2 中断处理过程四、中断优先级2024/4/8 周一23用硬件实现优先级的另一种方法是使用优先级控制器。优先级控制器或可编程中断控制器(PIC)构成的“矢量”是一个由优先级编码器和比较器等构成的电路,它的基本逻辑结构如下图所示。优先级控制器可接受8个中断输入,每一个中断请求能否送到优先级编码器,取决于屏蔽寄存器的对应位。矢量优先级排队7.2 中断处理过程四、中断优先级2024/4/8 周一247.2 中断处理过程四、中断优先级