1第6章中断技术1956年,美国,IBM公司IBM7049机上首先使用了中断处理技术并开始使用“中断”(interrupt)这一术语2第一节概述在中断方式中,由外部设备主动向CPU发出请求,等候处理;在没有发出请求时,CPU和外设都可以独立进行的工作。3引入中断技术以后,可以使CPU和外设在大部分时间里并行工作,提高CPU利用率。外设接收到CPU的命令后,按自己的控制规律执行相应操作,完成后向CPU发出中断请求,CPU暂停正在执行的程序,转为对外设进行处理,处理完后返回断点处继续执行。一、中断的作用4二、中断的定义:中断定义:CPU执行程序时,由于发生了某种随机的事件(外部或内部),引起CPU暂时中断正在运行的程序,转去执行一段特殊的服务程序(称为中断服务程序或中断处理程序),以处理该事件,该事件处理完后又返回被中断的程序继续执行,这一过程称为中断。中断请求:外设的硬件和系统软件指令的软件中断请求。断点主程序中断服务程序有中断请求对外设进行处理继续执行返回断点中断请求取决于事件的发生时间,而这个时间是随机的,因此在执行程序的过程中中断程序的插入也是随机的。这是子程序和中断处理程序的重要区别。6三、中断源中断源:引起CPU中断的事件,发出中断请求的来源。硬件中断源:I/O设备,系统时钟,故障源等等。软件中断源:程序中断指令,指令运行出错等。目前的微处理器系统都具有中断功能,且已经不仅局限在输入/输出处理中,而是在更多的方面其重要作用。例如:自动监视系统运行情况的故障源,BIOS和DOS操作系统为用户提供的中断调用服务程序等。7中断源分类内部中断外部中断异常中断软件中断可屏蔽中断非屏蔽中断异常事件引起中断指令引起INTR中断NMI中断8外部中断响应的一般过程中断请求中断判优及中断源识别中断响应中断处理(服务)中断返回9中断请求中断请求信号应保持到中断被处理为止;CPU响应中断后,中断请求信号应及时撤销。NMIINTR10(一)中断请求中断源向CPU发出的中断信号。对于硬件中断源:必须通过专门的电路传送给CPU;CPU也有专门的引脚接收中断请求信号。8086/8088CPU用INTR引脚和NMI引脚接收硬件中断请求信号。对于软件中断源,在CPU内部由中断指令或程序出错直接引发中断。11(二)中断标志1、中断允许标志在CPU的标志寄存器中的IF标志。表示是否可以响应外设的中断请求。通常用1来表示允许。2、中断请求标志对应每个外设有一位,用来纪录外设的中断请求状态。有请求时置1,中断处理完后清0。在PC机中,用8259A来管理外设的中断请求,而在8051系列的单片机中,该标志也在CPU内部。12(三)中断屏蔽有些硬件中断源的请求可以根据IF标志决定是否响应,而有些硬件中断源的请求需要一定被响应。在8086/8088系统中,INTR是可屏蔽中断请求引脚;NMI是不可屏蔽的中断请求引脚。在PC机系统中,通过8259A管理的外设中断源连在CPU的INTR引脚上。在8259A内部有8位的中断申请寄存器和8位的中断屏蔽寄存器,可以对应于8个外设的中断申请和中断屏蔽。13当系统具有多个中断源时,有可能同时发出请求,由CPU按照重要性和急迫性(中断优先级别)择优响应。一般的处理原则是:1、不同优先级同时请求,按优先级别处理。2、低优先级中断正在处理,出现高优先级请求,转去处理高优先级请求。3、高优先级中断正在处理,出现低优先级请求,暂不响应。4、中断处理时,出现同级别请求,当前中断处理完以后再处理新的请求。中断判优及中断源识别14中断判优要解决的问题对同时产生的中断:首先处理优先级别较高的中断;若优先级别相同,则按先来先服务的原则对非同时产生的中断:低优先级的中断程序允许被高优先级的中断源所中断中断嵌套15中断嵌套在CPU的处理外部中断的时候,如果有更高优先级的中断请求,再转去处理高优先级的中断。在PC机中,可以中断嵌套。16中断判优控制方法软件判优顺序查询中断请求,先查询的先服务(即先查询的优先级别高)硬件判优链式判优、并行判优(中断向量法)171、软件中断(除单步中断外)2、NMI3、INTR4、单步中断在PC机系统中外设中断源通过8259A中断优先级管理器连接到INTR引脚,外设中断源的优先级别由8259A进行管理。优先级的顺序18中断源识别软件查询法中断矢量法。由中断源提供中断类型号,CPU根据类型确定中断源。19断点与返回地址CPU在每条指令执行的最后一个时钟周期检测中断请求,如果响应中断的话,转去执行中断处理程序,程序被中断的地方称为“断点”。断点处的指令是中断处理结束后,返回时恢复执行的第一条指令的地址称为“返回地址”。201、CPU在每条指令执行的最后一个时钟周期检测中断请求,如果以下之一,CPU自动进入中断响应周期。(1)有软件中断;(2)有NMI中断信号;(3)有INTR中断信号且CPU允许响应中断。中断响应和处理212、进入中断响应周期以后,如果是INTR,则产生INTA信号给中断源,让中断源通过数据总线的低8位送出中断类型码给CPU;如果是NMI,类型码是2;中断指令中有类型码;程序出错有默认类型码。3、标志寄存器进栈,清除TF和IF标志,返回地址的CS和IP进栈。224、形成中断服务程序入口地址,转入中断服务程序执行。每个中断的有自己的处理程序,各种微处理器形成中断服务程序入口地址的方法也不相同。235、进入中断服务程序。通常由以下步骤组成:(1)保护现场,开中断;(2)中断处理;(3)关中断,恢复现场,开中断;(4)用中断返回指令(IRET)返回。(七)中断返回从堆栈中恢复断点(返回地址的CS和IP、标志寄存器)返回到主程序继续执行。(八)优先级判别常见的有软件判别法和硬件判别法。24通常用专门的中断优先级处理电路Intel8259A来管理若干个硬件中断源,将中断请求信号送给微处理器。例如:在PC/XT机中使用8259A管理硬件中断源,将中断请求送到8088的INTR引脚,将中断类型码送到数据总线D7~D0上。26中断返回执行IRET指令,使IP、CS和FLAGS从堆栈弹出27第二节8086/8088的中断结构在8086/8088系统中提供了256种中断类型的结构,用1个字节进行编码称为中断类型码;每个中断类型对应于4个字节的程序入口地址称为中断向量;256个中断向量存放在内存最开始的1KB的中断向量表中。┇┇00000H003FFH28中断向量表存放各类中断的中断服务程序的入口地址每个入口占用4Bytes,低字为段内偏移,高字为段基址表的地址位于内存的00000H~003FFH,大小为1KB,共256个入口29中断向量表的初始化将用户自定义的中断服务程序入口地址放入向量表两种方法:直接写中断向量表利用DOS中断功能调用:INT25H31内部中断外部中断除法错中断溢出中断单步中断软件中断非屏蔽中断可屏蔽中断256个中断源32NMIINTR中断逻辑软件中断指令溢出中断除法错单步中断非屏蔽中断请求中断控制器8259APIC8086/8088CPU内部逻辑断点中断可屏蔽中断请求n430128086/8088中断源类型:中断向量表中358088/8086中断系统的优先级优先级从高到低的顺序为:内部中断NMI中断INTR中断单步中断36第三节8259A可编程中断控制器8259A是Intel公司专为简化中断控制硬件接口而设计的LSI芯片。它可以接收8级外部硬件中断,具有中断优先级排队、中断屏蔽、提供中断类型号等功能,并可通过编程选择不同工作方式,使用非常方便,因而在PC和各种系统中得到普遍应用。378259A的外部特性及连接8259A是一个28脚DIP(双列直插式)封装的接口芯片。是其方框图和外部引脚图。38芯片引脚信号定义如下:(1)D7~D0:8位双向数据线。用于在CPU和8259A之间传送命令字、状态或中断类型号。一般与CPU的D7~D0数据总线连接。(2)WR:写控制信号,低电平有效。(3)RD:读控制信号,低电平有效。(4)CS:片选信号,当为低电平时,8259A被选中,CPU才可对它进行读写。(5)A0:地址线。用来选择8259A内部不同的命令字。(6)IR7~IR0:中断请求输入。在多个8259A构成的主从级连系统中,则用来与从片8259A连接。(7)INT:中断请求输出信号,用来向CPU发中断请求信号。39(8)INTA:中断响应,输入信号。它与系统的INTA信号连接。当信号有效时,8259A将把中断类型号送入数据总线。(9)CAS2~CAS0:级连线。用于构成多个8259A的主从系统。(10)SP/EN:双功能信号。在缓冲方式下,该引脚作为控制缓冲器传送方向的输出信号。而其他方式则为输入信号,用于表示该8259A是主片(1)还是从片(0)。单片8259A与CPU的连接见图8.15。在单片系统中,8259A的CAS2~CAS0不用,SP/EN引脚置为高电平,表明是主8259A。CS接地址译码输出,8259A的A0一般与CPU的地址线A0连接,这样,8259A将占有两个端口地址。PC/XT计算机使用单片8259A,使用20H和21H两个端口地址。40如果系统的中断源超过8个,单片8259A就无法满足要求。这时需要级连多片8259A。以PC/AT机为例,它使用了两片8259A。SP/EN=1的8259A为主片,其INT信号直接与CPU的INTR引脚连接,而另一个8259A的SP/EN接地,表明是从片。注意从片的INT信号连接与主片不同,它的INT信号不需和CPU总线相连,而连接到主片的某个IR引脚,此处是IR2。其他信号如CAS2~CAS0、INTA、RD、WR、D7~D0、A0都是主从8259A各自同名的信号并接在一起,如果有更多的从片也是如此,但为了保证信号传输可靠,一般需在这些信号线之间接入驱动缓冲器。42图8.15PC/AT计算机连接一个从片之后可以处理15级中断。8259A最多可级连8个从片,处理64级中断。438259A的内部结构8259A内部结构见图8.17,它由中断请求寄存器IRR、优先级电路、中断服务寄存器ISR、中断屏蔽寄存器IMR,控制逻辑、数据总线缓冲器、读/写逻辑、级联/比较器共8个功能部分组成。IRR为8位,对应IR7~IR0引脚产生的中断请求状态,某个引脚产生请求,IRR的相应位就置1。它具有锁存功能。45IMR起到屏蔽中断请求的作用,它也是8位,对应IR7~IR0中断请求输入。当设置为1时,禁止相应的中断请求,为0则允许。该寄存器可由软件进行读写。对于多个中断请求,优先级电路将根据软件设置的优先级策略对有效中断请求进行判定,确定最高的优先级,并在中断响应周期将状态存放在ISR中,表示处理器将为其服务。数据总线缓冲器是8位的三态缓冲器,用于连接系统数据总线与8259A内部总线,以允许处理器向8259A写入命令和读出状态。读/写控制逻辑用于控制数据的写入、读出和命令字选择。级连/比较器用于多片8259A连接的控制。46第四节Pentium处理器的中断系统Pentium处理器将引起程序中断的来源分为硬件中断、软件中断和异常三类。硬件中断由外部I/O设备引起;软件中断由程序员事先编写指令产生;异常不是由用户定义,而是CPU在执行指令过程中检测到满足事先定义的条件而产生的同步事件,如除法错误、溢出错误、段不存在错误等。下面对这些中断分别介绍:1.硬件中断硬件中断又称外部中断,通常由连接I/O设备的接口电路产生中断请求。它的产生是一个异步事件。47Pentium处理器有两条引脚用来接收外部中断请求,分别是可屏蔽中断INTR和非屏蔽中断NMI。(1)可屏蔽中断可屏蔽中断指Pentium处理器的INTR引脚接收到中断请求后是否给予响应完全由指令控制。当使用STI指令将EFLAGS寄存器的IF(中断允许)标志置为1时予以响应;使用CLI指令将其置为0时不予响应,即禁止中断处理。Pentium