您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 《微机原理与接口技术(80386-Pentium)》-第5章 中断
1第5章中断25.1中断的概念5.1.1概述中断是现代计算机技术领域里的一项非常重要的技术。最初,中断仅仅是为了解决对I/O接口进行查询而使得CPU效率变低的弊端,同时又确保在运行过程中能够实时处理外围设备的各种服务要求而采用的一种措施。中断是为快速改变程序的运行环境而提供的一种机制。程序控制的转换是由微处理机内部事件或者是外部硬件事件启动的。特别是高速运行的微处理机与数据传送速度较低或接收数据的速度较低的输入/输出设备接口之间进行数据交换时,中断就显得特别有用。例如,在利用键盘进行输入操作时,若用82C55的选通和软件查询来获得来自键盘的数据,可以说是“少、慢、差、费”。利用中断处理程序是一种最佳选择。3所谓中断,其实是CPU在执行当前程序的过程中,由于某种随机出现的外围设备的请求,使得CPU暂时停止正在执行的程序(即中断),转去执行为外围设备服务的程序。当为外围设备服务的程序执行完后,CPU再返回到暂时停止正在执行的程序处(即断点)继续执行其原来的程序。这种中断就是人们通常所说的外部中断。但是随着计算机体系结构不断的更新换代和应用技术的日益提高,中断技术发展的速度也是非常迅速,中断的概念也随之延伸,中断的应用范围也随之扩大。除了传统的外围部件引起的硬件中断外,又出现了内部的软件中断概念。4外部中断和内部软件中断就构成了一个完整的中断系统。发出中断请求的来源非常多,不管是由于外部事件而引起的外部中断、还是由于软件执行过程而引发的内部软件中断,凡是能够提出中断请求的设备或异常故障,均被称其为中断源。按中断源的不同,Pentium又把中断分成三种类型。(1)中断:(2)异常:(3)程序异常:55.1.1.1实模式下的中断操作当微处理机执行完当前指令之后,它就按给定的顺序来检查下面一些条件,以便确定一个中断是否有效。①检查指令的执行;②检查是否单步执行的指令;③检查是不是一条不可屏蔽中断NMI;④检查浮点部件的段是否越界;⑤检查是不是一条可屏蔽中断INTR;⑥检查是不是一条调用中断过程指令INT。如果在检查的过程中发现一个或多个中断条件与检查的条件相符合,就按顺序执行下列操作步骤:6(1)将标志寄存器的内容下压入栈。(2)清除标志寄存器中的允许中断标志IF位和自陷标志TF位,此举就有效地禁止可屏蔽中断INTR外引线上的信号的出现以及自陷或单步功能的实施。(3)将代码段寄存器CS的内容下压入栈。(4)将指令指针寄存器IF的内容下压入栈。(5)将中断向量的内容取出,并将其送入指令指针寄存器IF和代码段寄存器CS,这样就可以将程序下一条指令的执行从中断向量寻址的中断服务程序开始。75.1.1.2保护模式下的中断操作保护模式下的中断操作与实模式下的中断操作几乎是一样的,但二者的中断向量表有所不同。在实模式下,使用的是中断向量。而在保护模式下,使用的是保存在中断描述符表IDT中的中断描述符。实模式下的中断向量完全可以转换成保护模式下的中断,其实施的方法是将复制的中断向量表中的中断服务程序地址转换成中断描述符表IDT中的32位偏移量地址而实现的。保护模式下的中断功能,除了使用中断描述符表IDT中的中断描述符之外,其余与实模式下的中断功能类似,均是通过使用从中断返回IRET指令或IRETD指令实现。其中,惟一的差别是:在保护模式下微处理机访问的是中断描述符表IDT,而不是中断向量表。85.1.2中断系统5.1.2.1中断系统的作用(1)实现分时操作:Pentium微处理机可同时运行多道程序,它可以依靠定时器,通过中断系统将CPU的时间分配给各道程序使用。对I/O系统而言,中断系统可作为低速的外部设备与高速的CPU之间的一种联系纽带,通过中断系统可以实现多个I/O设备与CPU之间的并行操作。9(2)处理异常事故:当处理机在执行操作时,若出现了诸如除数为0、计算结果溢出、非法操作等程序性的错误,或者出现了机器故障。这时就可以通过中断系统进行处理,或者将故障与错误记录下来为故障诊断和机器的恢复作好准备。(3)实现实时操作:在实时控制系统中,许多信号往往都是随机产生的,只有通过中断系统才能对它们进行处理,以避免信息的丢失。105.1.2.2中断响应和处理过程计算机的结构不同,中断系统的响应与处理过程也不尽相同,但其基本处理过程还是相似的。处理机系统内存在着多个中断源,而且每一个中断源的处理内容也不会是一样的。因此必须为每个中断源预先编好中断处理程序并且将其存放到主存储器中。而当CPU响应中断之后,就会调出相应的中断处理程序对中断进行处理。有的机器则是通过中断系统硬件为每个中断源形成一个程序入口,通过这个入口而进入相应的中断处理程序。当中断源相当多时,可对中断源进行分类,把性质相近的中断源归成一类,并给出一个中断处理程序入口。11当CPU在执行主程序时,同时发生多个中断请求,则由中断响应硬件中的排队器决定中断的响应程序。在一般情况下,此时CPU应处于“开中断”状态,而且每个中断源的屏蔽位也均处于“0”状态(不屏蔽),因此CPU将响应其中级别最高的中断源所提出的中断请求。进入中断程序后,把原来的各个中断屏蔽位保存在存储器中,而将现行屏蔽位取出存放在各个屏蔽触发器中,以保证能响应更高级的中断请求,而不能再响应同级或更低级的中断请求125.2异常和中断异常和中断是对正在执行的任务或过程的强制性转移,称所转向的任务或过程为处理程序。中断是在程序执行期间随着硬件信号一起而随机出现。而异常则是在执行引起异常的指令时产生。通常,给中断和异常进行的服务对应用程序来说是透明的。例如,除以0的情况等即属于异常范畴。不论是中断还是异常均有两个中断源。135.2.1中断源分类5.2.1.1中断1.可屏蔽中断INTR。它是从Pentium微处理机的管脚INTR输入端上接收的中断请求信号,除非把标志寄存器上的中断允许标志位(IF)置成1,否则是不会有可屏蔽中断发生的。2.不可屏蔽中断NMI它是从Pentium微处理机的NMI,不可屏蔽中断)管脚上接收到的输入信号。处理机上不提供阻止不可屏蔽中断的机制。14图5.1中对可屏蔽中断和不可屏蔽中断的逻辑关系进行了解释。Q≥1&微处理机中断非屏蔽中断输入可屏蔽中断输入允许中断禁止中断中断允许触发器SCKR155.2.1.2异常异常是由处理机检测到的。根据报告异常的方式以及是否支持重新启动引起异常的指令,可将异常分为故障、自陷和异常终止三种类型。(1)故障(Faults):是指在该指令中检测到异常之前,在指令边界处报告的异常。在报告故障时,机器已恢复到准许指令重新启动的状态。故障处理程序的返回地址指向的是产生这次故障的指令,而不是出现故障指令的下面那条指令。(2)自陷(Traps):是指在指令中检测到异常之后马上就在指令边界处报告的异常。(3)异常终止(Aborts):是指不总是报告引起异常的指令的位置,且不允许重新启动引起异常的程序。只有在报告像硬件错及系统表中出现了不一致的或非法值这样的严重错误时才使用异常终止。165.2.1.3程序异常溢出则中断INTO、中断类型3INT3、中断类型INTn和按界检查数组下标BOUND指令均可触发异常,通常称这些指令为“软中断”。不过,处理机是把它们当作异常来处理的。175.2.2中断控制器可编程中断控制器8259A负责对Pentium微处理机系统的中断进行管理。8259A的可编程特性使得它能以多种方式与一特殊系统的中断请求相适应。一个单独的8259A中断控制器可从多达8个外部中断源中接受中断请求。而若把几个8259A芯片串接起来,则它们所能接收的中断请求可达64个之多。8259A首先分辨出各现役中断的优先级,然后中断处理机的操作并把一个用于识别中断源的代码送给处理机。185.2.3异常和中断向量Pentium微处理机把每个不同类型的中断或异常与识别号一一对应联系起来,以便于识别,把这个识别号称之为向量(Vector)。为不可屏蔽中断和异常分配的向量在0~31之间。目前,Pentium微处理机并没有全部用到这些向量,那些未被使用的向量为今后可能的应用而保留起来。且请用户也不要使用它们。可屏蔽中断的向量是由硬件测定的,外部中断控制器(如Intel的8259A可编程中断控制器)在它的中断应答周期期间将中断向量放在Pentium微处理机的总线上。任何一个在32~255之间这个范围内的向量都可以使用,表5.1中列出了异常和中断向量的分配情况。19表5.1异常和中断向量向量号说明0除法错1调试异常2不可屏蔽中断3断点4被检测出的INTO上溢5超出了BOUND范围6无效操作码7设备不可用8双故障9协同处理器越段运行(保留)10无效任务状态段11段不存在12堆栈故障13一般保护故障14页故障15保留,未使用16浮点错17对准检查18~31保留,未使用32~255可屏蔽中断205.2.4指令的重新启动对大多数异常和中断来说,在当前指令结束之前是不会出现执行转移的。指令指针EIP寄存器指向的是异常和中断发生时正在执行指令之后的那条指令。如果指令有一重复前缀,则转移在当前重复结束后发生。随之也将寄存器置成去执行下一次重复。但如果异常是一个故障,则处理机寄存器被恢复成它们在指令开始执行前保留起来的状态,这样就可以使指令重新启动了。215.3允许和禁止中断Pentium微处理机在一定的条件和标志设置下将禁止某些类型的中断和异常。5.3.1不可屏蔽中断对未来的不可屏蔽中断的屏蔽当执行一个不可屏蔽中断的中断服务程序时,在下一条中断返回IRET指令执行之前,Pentium微处理机将禁止对处理中断的过程或任务进行另外的调用,这样做可防止对中断程序的重复调用。因为来自可屏蔽中断处理程序的中断返回IRET指令可能会重新允许不可屏蔽中断。所以,为禁止出现嵌套的可屏蔽中断,可采取对不可屏蔽中断使用中断门的办法。225.3.2IF屏蔽INTR标志寄存器上的允许中断标志IF标志可将从处理机的可屏蔽中断请求INTR管脚上接收到的中断请求服务关闭掉。当允许中断标志IF位被清成0时,可屏蔽中断请求信号INTR上的中断信号也就被忽略。当IF标志被置成1时,INTR中断才可得到服务。为对一个复位RESET信号做出响应,Pentium微处理机需把IF标志位与其他标志位一起被清成0,设置和清除IF标志位的指令是置中断允许标志STI和清中断标志CLI。235.3.3RF对调试故障的屏蔽Pentium微处理机的标志寄存器EFLAGS中的恢复标志RF标志位,被用来防止对一个指令断点故障进行多次服务。恢复标志RF要进行如下一些操作。(1)Pentium并不把压入处理程序堆栈内的标志寄存器EFLAGS映象中的恢复标志位RF置成1。(2)当故障处理程序在执行中断返回IRETD指令返回出故障的指令时,RF位会由故障处理程序将其置成1。(3)在每一条指令都成功地执行完之际,恢复标志位RF则由Pentium将其清成0。(4)一旦RF被置成1,恢复标志RF位就会使Pentium去制止指令断点故障报告。由于指令断点故障的优先级别最高,所以它们总是在同一条指令所出现的其他故障之前被报告出来。在第一次企图执行这条指令时则把RF清成0。在一条指令被中断或出现了其他故障之后去重新启动指令时,则把RF置成1,这样就可以确保指令断点故障仅被报告一次。245.4中断描述符表5.4.1异常和中断同时存在时的优先级如果在一指令边界处有一个以上的未决异常或中断,则处理机将按预先定好的顺序为它们提供服务。表5.2中列出了各类异常和中断源的优先级。虽然这些优先级在整个体系结构之内是一致的,但每一级别之内的异常在实现时则是依处理机而定,不同的处理机其处理顺序是不一样的。但总的原则是:具有最高优先级的未决异常或中断将首先得到处理机的服务,处理机将执行转移到相应处理程序的
本文标题:《微机原理与接口技术(80386-Pentium)》-第5章 中断
链接地址:https://www.777doc.com/doc-3207168 .html