当前位置:课程学习>>第七章>>知识讲解>>视频课堂>>知识点一
本节的视频讲解请参见[录人 7.1.中断.概述.pptx]。
1. 中断与中断源
中断
在CPU正常执行程序的过程中,如果发生内部/外部事件或是程序预先安排的事件急需CPU处理时,CPU会暂时中断正在执行的程序,转去执行相应的事件处理程序。待事件处理完毕后,CPU再返回到被暂时中断的程序继续执行。这个过程就称为中断。
中断是微处理器CPU与外部设备交换信息的一种方式,是CPU处理随机事件和外部请求的主要手段。
最初,中断技术引入计算机系统,只是为了解决快速的CPU与慢速的外部设备之间传送数据的矛盾。
例如:打印输出时,CPU传送数据的速度高,而打印机打印的速度低。如果不采用中断技术,CPU将经常处于等待状态,效率极低。采用中断技术后,CPU可以正常进行其它的工作,只在打印机缓冲区中的当前内容打印完毕发出中断请求之后,才予以响应。这时,CPU暂时停止执行当前程序而转去执行向缓冲区传送数据的程序,传送完成后又返回原来的程序执行。这样就大大地提高了CPU的效率。
随着计算机技术的发展,中断技术不断被赋予新的功能,它可以使计算机系统完成分时操作、实现实时处理、故障处理等功能。
中断源
产生中断请求的设备或事件称为“中断源”。
根据中断源不同,中断可分为三类:
(1)由计算机硬件异常或故障引起的中断,也称为内部异常中断;
(2)程序中执行了中断指令引起的中断,也称为软件中断或软中断;
(3)外部设备(如输入、输出设备)请求引起的中断,也称为硬件中断或外部中断。
2.中断系统的功能
中断过程需要由计算机的软、硬件共同完成,能完成中断过程的所有硬件和软件构成中断系统。
中断系统应具备如下功能:
(1)接收中断请求
(2)中断源识别
(3)中断源判优
(4)中断嵌套
(5)中断处理与返回
3.简单的中断处理过程
对于不同的微机系统和不同的中断方式(如软件、硬件中断),CPU进行中断处理的具体过程不完全一样。
但都要经过:请求中断、中断判优、中断响应、中断处理和中断返回等阶段。
3.1 CPU响应中断的条件
(1)中断请求触发器置位
CPU只有在当前指令执行结束后才会检测有无中断请求发生,因此对于外部中断,中断源要向CPU发出中断请求,就必须把自己的中断请求信号保持到CPU响应,才可以清除。
故要求每一个中断源都有一个中断请求触发器,用于记录中断请求标志。当提出中断请求时,该触发器被置位,如下图所示。
(2)中断屏蔽触发器置位
在通常情况下,往往有多个中断源。
在外设接口中,为每一个中断源设置了一个中断屏蔽触发器,用来开放或关闭中断源的请求。
只有中断屏蔽触发器设置为“1”时,外设的中断请求信号才能被送到CPU,如下图所示。
(3)中断是开放的
外部中断是否响应,还取决于CPU是允许中断还是禁止中断。CPU通过内部设置的一个中断允许触发器(标志寄存器FR的IF位),来开放或关闭可屏蔽中断INTR。
执行STI指令后,IF置“1”,称为开中断,允许CPU响应INTR请求;
执行CLI指令后,IF清“0”时,称为关中断,禁止CPU响应INTR请求。
(4)CPU在执行当前指令的最后一个时钟周期
CPU在执行当前指令的最后一个时钟周期才去查询INTR引脚。
若查询到该引脚信号为高电平,则表示收到有效中断请求信号。
在开中断(即IF=1)的情况下,CPU在下一个总线周期不进入取指周期,而是进入中断响应周期处理中断。
3.2CPU对中断的响应
CPU进入中断响应周期后,自动完成如下操作:
(1)关闭中断
FR中的中断标志位IF清零;
(2)保护断点
将当前CS和IP的内容压入堆栈保存,以便中断处理完毕后能返回被中断的原程序继续执行;
(3)送中断类型号
在中断响应周期的第二个总线周期中,由中断控制器给出中断类型号,CPU根据中断类型号获取中断服务子程序的入口地址,并装入CS与IP;
一旦装入完毕,中断服务程序就开始执行。
3.3 CPU对中断的处理
中断服务程序,就是为实现中断源所期望达到的功能而编写的程序。
步骤:
(1)保护现场
为使中断处理程序不破坏主程序中寄存器的内容,应先将断点处各寄存器的内容压入堆栈保护起来;
(2)中断服务
不同的中断请求,有各自不同的中断服务内容;
需要根据中断源所要完成的功能,事先编写相应的中断服务程序存入内存;
(3)恢复现场
中断处理完后,恢复主程序断点处各寄存器的内容。
在中断服务子程序的最后,要开中断(CPU能响应新的中断请求)并安排一条中断返回指令IRET。
执行指令IRET后,之前压入堆栈的断点值及程序状态字弹回到CS、IP及FLAGS中,CPU继续执行主程序。
4.中断源识别及优先权判断
4.1 中断源识别
原因:当系统中有多个中断源时,一旦发生中断,CPU需确定是哪一个中断源提出了中断请求。
任务:确定该响应的是哪个中断源;
找到该中断服务程序的入口地址。
(1)软件查询法
任一中断请求,都可向CPU发出INTR信号;
将中断请求信号相“或”后,作为INTR信号。
优点:硬件电路简单,无需优先权的硬件排队电路,可随时修改优先级(改变查询的先后顺序);
缺点:软件查询由询问转至相应中断服务程序入口时间长,尤其在中断源较多的情况下,中断响应的实时性受到影响。
(2)中断向量法
通过硬件控制电路形成一个供CPU识别中断源的中断向量号,并由此中断向量号实现中断响应。
优点
CPU可直接通过中断向量表转向相应的处理程序,不需要CPU去逐个检测和确定中断源,因此大大加快了中断响应的速度。
4.2 中断优先权
系统按任务的轻重缓急,为每个中断源进行排队,并给出顺序编号,称为中断优先级。
可事先给各中断源安排一个中断优先级次序,当多个中断源同时申请时,按优先级从高到低的次序来处理,选中当前优先级最高的中断进行处理,这个过程称为中断优先级判优。
在一般情况下,系统的内部中断优先于外部中断,不可屏蔽中断优先于可屏蔽中断。中断源的优先级判优可以通过软件查询方式和硬件排队电路两种方法实现。
(1)软件查询方式
基本原理
当CPU接收到中断请求信号后,执行优先级判优的查询程序,逐个检测外设中断请求标志位的状态;
检测的顺序:优先级的高低;
最先检测到的中断源具有最高的优先级;
最后检测到的中断源具有最低的优先级。
优点:硬件电路简单,无需优先权硬件排队电路,可以通过修改程序的方法随时修改优先级;
缺点:软件查询影响中断响应的实时性。
(2)硬件优先权排队电路
硬件优先权排队电路是专门的硬件电路;
优点:节省CPU的时间,而且中断响应较快;
缺点:成本比较高。
菊花链(或称链式)优先权排队电路
在每个中断源的电路中设置一个菊花链逻辑电路
当某设备有中断请求时,会向CPU发送中断请求信号
若CPU允许中断,则CPU发出中断响应信号信号在菊花链中传递
如果某设备没有中断请求,则信号通过菊花链逻辑电路继续往下一级传递。