《六章中断与中控制课件.ppt》由会员分享,可在线阅读,更多相关《六章中断与中控制课件.ppt(73页珍藏版)》请在三一办公上搜索。
1、第六章 中断与中断控制,6.1 中断的基本概念6.2 中断源的识别与判优6.3 8259A可编程中断控制器6.4 80486CPU的中断机理6.5 80X86微机的硬件中断控制逻辑,第六章 中断与中断控制6.1 中断的基本概念,6.1 中断的基本概念,中断与中断类型中断优先级与中断嵌套CPU响应中断的条件中断处理过程,6.1 中断的基本概念中断与中断类型,6.1.1 中断与中断类型,中断的最初定义:,作为计算机与外部设备交换信息的一种同步控制方式,中断是指执行当前程序的过程中,由于某种随机出现的外设请求,使CPU暂停(即中断)正在执行的程序而转去执行为外设服务的程序;当服务完毕后,CPU再返回
2、到暂停处(即断点)继续执行原来的程序。,3,6.1.1 中断与中断类型中断的最初定义: 作为计算机,6.1.1 中断与中断类型,现在所谓的中断是一种广义的中断概念,它实质上应包括两大类:,硬中断:由CPU外部事件引起的中断,又 叫外中断。简称中断。,非屏蔽中断(NMI):一种为外部紧急请求提供服务的中断,不受CPU内部的中断允许标志IF的屏蔽;,可屏蔽中断(INTR): CPU用来响应各种异步的外部硬件中断的最常用方法,受CPU内部的IF的控制。,4,6.1.1 中断与中断类型 现在所谓的中断是一种广义的,软中断:由CPU内部原因(指令或异常)引起 的中断又叫内中断,统称为异常。,失效(Fau
3、lt)-在引起失效的指令启动之后,执行之前被检测到,且在处理异常的程序执行完后退回该条指令重新启动并执行完毕;,自陷(Trap)-在产生自陷的指令执行完后才被报告,且其中断服务程序结束后是返回到主程序中该条指令的下一条指令。,终止(Abort)-对引起异常的指令的确切位置无法确定的异常。这类异常用于报告严重错误,一般无法继续运行,只能终止,而由中断服务程序重新启动OS并重建系统表格。,6.1.1 中断与中断类型,5,软中断:由CPU内部原因(指令或异常)引起 的中断,6.1.2 中断优先级与中断嵌套,当多个中断源同时申请中断时,CPU同一时刻只能响应一个中断源的申请,应按各中断源的轻重缓急程度
4、来确定它们的优先级别。,中断嵌套是指在优先级已定的情况下,低优先级的中断服务程序可以被高优先级的中断源所中断,等高优先级的中断服务程序结束后,再返回去执行被中断的低优先级中断服务程序。,6,6.1.2 中断优先级与中断嵌套 当多个中断源同时申请,6.1.2 中断优先级与中断嵌套,中断嵌套示意图:,1#中断请求,原主程序,1#中断服务程序,2#中断请求,2#中断服务程序,3#中断请求,3#中断服务程序,返回,返回,返回,(中断优先级:3#2#1#),嵌套的级数原则上不限,只取决于堆栈深度,实际上与要求的中断响应速度也有关。,7,6.1.2 中断优先级与中断嵌套中断嵌套示意图:1#中断请求,6.1
5、.3 CPU响应中断的条件,对中断源发出的中断请求是否响应,视CPU内中断和外中断有所不同:,对内中断请求,可在当前指令执行前或执行后直 接转入中断周期,由内部硬件自动执行预定的操作;,对外中断请求,通常必须满足以下条件才能响应:,置位了中断请求触发器-每个中断源对应一 个,通过它来保持请求信号,直至中断响应。,8,6.1.3 CPU响应中断的条件 对中断源发出的中断请,6.1.3 CPU响应中断的条件,中断屏蔽触发器处于非屏蔽状态-在多中断 源系统中,为增加中断控制的灵活性,一般 为每个中断源都设置一个中断屏蔽触发器。,9,6.1.3 CPU响应中断的条件中断屏蔽触发器处于非屏蔽状,CPU内
6、部是中断开放的-CPU内部有中断允许 触发器,只有当它为1时才能响应外部中断。 (STI指令就是起这种作用的,使IF标志位置1),没有更高优先级别的中断请求正在被响应或 正发出、正挂起。,CPU正在执行的现行指令已经结束-因为CPU 一定是在每条指令执行完后才采样INTR线而 响应可能提出的中断请求。,6.1.3 CPU响应中断的条件,10,CPU内部是中断开放的-CPU内部有中断允许没有更高,6.1.4 中断处理过程,响应中断请求,保护断点和现场,开中断,中断服务,恢复现场,开中断,中断返回,关中断,11,6.1.4 中断处理过程响应中断请求保护断点和现场 开中断中,6.1.4 中断处理过程
7、,保护断点和现场,为使中断处理程序不影响被中断程序运行,须首先将断点处的有关各寄存器内容和标志位的状态压入堆栈保护起来,以便中断处理完毕后能返回原程序,从断点开始正确执行。,要保护的断点现场内容通常包括:,CPU的标志寄存器(FR)内容,代表断点地址的程序计数器PC内容或代码 段寄存器CS和指令指针(E)IP内容,中断处理程序中将用到的各CPU内部寄存器 内容,开中断,以便执行中断服务程序时,能响应更高级别的中断源请求。,12,6.1.4 中断处理过程保护断点和现场 为使中断处理程,完成I/O操作或异常事件处理,是整个中断处理程序的核心。,中断服务,关中断,目的是保证在恢复现场时不被新的中断所
8、打扰。,恢复现场,多数CPU是用POP指令把保存的断点信息从堆栈中弹出,以达到恢复现场的目的,中断返回,使断点地址送回程序计数器或CS:(E)IP,继续执行被中断的程序。,6.1.4 中断处理过程,13,完成I/O操作或异常事件处理,是整个中断处理程序的核,中断处理过程,响应中断请求,保护断点和现场,开中断,中断服务,恢复现场,开中断,中断返回,关中断,上述一般中断处理流程中是否每步工作都要做,取决于具体的CPU种类。,14,中断处理过程响应中断请求保护断点和现场 开中断中断服务恢复现,6.2 中断源的识别与判优,凡有多中断源存在时,都存在一个中断源的识别与判优问题。,如果CPU或CPU模块提
9、供了多根中断请求线,且多于外部中断源数目,则由于它们之间的识别和判优已由芯片或模块内部逻辑按一定优先级算法(一般为固定优先级算法)设计好了,用户只需按要求将不同中断源接至不同中断请求输入线上即可。,如果系统只有一根中断请求线或者虽有多根中断请求线但仍比中断源数目少时,就需要多中断源合用一根中断请求线,这种情况下就需要用户自己来设计中断源的识别与判优逻辑。,15,6.2 中断源的识别与判优 凡有多中断源存在时,都存,6.2 中断源的识别与判优,多中断源的识别与判优,要解决两大问题:,1)判别哪个中断请求源的优先权最高;2)将程序转移到相应的中断处理程序入口。,完成这一任务的方法通常有两种:,程序
10、查询式识别与判优,中断向量式识别与判优,16,6.2 中断源的识别与判优多中断源的识别与判优,要解决两大,程序查询式识别与判优,软件识别与判优方法。所需的硬件支持最少,主要需要一个中断请求锁存器作为状态输入口,以供MPU查询用。,中断响应时,MPU用软件程序读入中断请求锁存器状态,按确定的次序逐位查询,以识别中断请求源,当查到某位状态有效时,便转入相应I/O服务程序,为该外设服务。查询各位的次序就决定了各外设的中断优先级。,6.2 中断源的识别与判优,17,程序查询式识别与判优 软件识别与判优方法。所需的硬件支,中断处理程序,保护现场,读中断请求状态,N,N,恢复现场,N,中断返回,查询式中断
11、流程图,6.2 中断源的识别与判优,程序查询式识别与判优,18,中断处理程序保护现场读中断请求状态NN恢复现场Y7#I/O请,程序查询式识别与判优的优缺点:,优点:硬件简单,程序层次分明,只要改变程序中查询的顺序而不必改变硬件连接,即可方便地改变外设的中断优先级。,缺点:中断源较多时,中断响应速度慢,CPU使用效率降低。,6.2 中断源的识别与判优,程序查询式识别与判优,19,程序查询式识别与判优的优缺点:优点:硬件简单,程序层次分明,,中断向量式识别与判优,硬件识别与判优方法。主要用硬件电路对中断源进行优先级排队,并将程序引导到有关I/O的中断服务程序入口。,具体实现方案有菊花链优先级仲裁和
12、并行优先级仲裁两种。,每个中断请求源对应有一个向量发生器。,6.2 中断源的识别与判优,20,中断向量式识别与判优 硬件识别与判优方法。主要用硬件电,并行优先级仲裁,其核心部件是一个优先级编码器和各中断源公用的中断向量发生器。当IACK有效时,中断向量发生器将把与最高优先级中断请求源对应的中断向量号送上数据总线DB。,无论菊花链还是并行结构,当MPU在中断响应周期中收到中断向量号后,便通过计算或查表得到中断向量(即中断服务程序入口地址),并自动进入和执行相应的中断服务程序。,6.2 中断源的识别与判优,中断向量式识别与判优,21,并行优先级仲裁 其核心部件是一个优先级编码器和各中断源,例如在8
13、086/8088/80186/80286微机中,都在内存的最低1024个字节专门建立了一个中断向量表,用来存放256个中断向量,每个中断向量占用4字节,低2字节装中断服务程序入口地址的偏移量,高2字节装其段基址。MPU收到中断向量号(8位)后,乘以4作为查表索引,即可查得对应的中断向量,并将它装入CS:IP,从而控制程序转移到中断处理程序去执行。,6.2 中断源的识别与判优,中断向量式识别与判优,22,例如在8086/8088/80186/80286微机,这种向量式中断结构的最大优点是中断响应速度快,CPU使用效率高,原因是其中断源识别、判优和中断向量提供都是由硬件完成的。,实际中应用最多的典
14、型中断控制器芯片有:,i8214-不可编程(8080等8位机中采用),6.2 中断源的识别与判优,中断向量式识别与判优,i8259A-可编程(PC系列微机中广泛采用),23,这种向量式中断结构的最大优点是中断响应速度快,CPU,6.3 8259A可编程中断控制器,内部结构与引脚功能中断工作过程应用编程,24,6.3 8259A可编程中断控制器内部结构与引脚功能24,6.3.1 8259A的内部结构与引脚功能,D7D0,数据总线缓冲器,RD,WR,A0,CS,CAS0,CAS1,CAS2,SP/EN,ICW1,ICW2,ICW3,ICW4,读写电路,级联缓冲器/比较器,初始化命令寄存器组,内部总
15、线,中断服务寄存器(ISR),优先级分析器,中断请求寄存器(IRR),INTA,IR0,IR1,IR2,IR7,中断屏蔽寄存器(IMR),操作命令寄存器组,OCW1,OCW2,OCW3,控 制 逻 辑,INT,25,6.3.1 8259A的内部结构与引脚功能D7D0数据总线,6.3.1 8259A的内部结构与引脚功能,A0、RD、WR、CS对8259A读写操作的控制作用,这些命令的输入顺序由8259A内部的时序逻辑通过适当的时序控制加以保证。,对IRR、ISR或中断级BCD码的选择,决定于在读出操作之前,CPU写入的操作命令字OCW3的内容。,26,6.3.1 8259A的内部结构与引脚功能A
16、0、RD、WR、,级联缓冲器/比较器有关引脚功能:,SP/EN(从编程/使能缓冲线)-输入/输出线,作输入用时,用于区别主从8259A芯片:主片使SP=1;从片使SP=0。作输出用时,用于选通8259A至CPU之间的数据总线缓冲器。,CAS0、CAS1、CAS2(级联线)-输入/输出线,当8259A是主片时,CAS0CAS2是输出线,在CPU响应中断时用来输出级联选择代码,选出请求中断的从片;当8259A为从片(SP=0)时,CAS0CAS2是输入线,接收主片送来的选择代码。,6.3.1 8259A的内部结构与引脚功能,27,级联缓冲器/比较器有关引脚功能: SP/EN(从编程/,6.3.2
17、8259A的中断工作过程,8259A进入工作状态的先决条件是必须按要求对其初始化,使其处于准备就绪状态。,8259A对外部中断请求的响应和处理过程如下:,1)当中断请求输入线IR0IR7中有一条或多条变高时,则中断请求寄存器IRR的相应位置1。,2)若中断请求线中至少有一条是中断允许的,则8259A由INT引脚向CPU发出中断请求信号。,3)如CPU是处于开中断状态,则在当前指令执行完后,用INTA信号作为响应。,4)8259A在接收到CPU的INTA信号后,使最高优先级的ISR位置“1”,而相应的IRR位清“0”,但在该中断响应周期中,8259A并不向系统总线送任何内容。,28,6.3.2
18、8259A的中断工作过程 8259A进入工,6.3.2 8259A的中断工作过程,5)CPU(8086/8088和80X86)输出第二个INTA信号,启动第二个中断响应周期。在此周期中,8259A向数据总线输送一个8位的中断类型号(也叫指针或向量号);CPU读取此类型号后将它乘以4(左移2位),即可从中断服务程序向量表(即入口地址表)中取出中断服务程序的入口地址,包括段地址和段内偏移地址,据此CPU便可转入中断服务程序。,6)如8259A工作在AEOI模式,则在第二个INTA脉冲信号结束时,将使被响应的中断源在ISR中的对应位清0,否则,直至中断服务程序结束,发出EOI命令才使ISR中的对应位
19、清0。,29,6.3.2 8259A的中断工作过程5)CPU(8086/8,6.3.3 8259A的应用编程,8259A的编程是指用户通过写操作送一些命令字(也叫控制字)到8259A内部的控制寄存器(命令字寄存器),用于设定或动态改变它的工作方式和控制模式。,8259A的编程包括两方面:,初始化编程,操作方式编程,30,6.3.3 8259A的应用编程 8259A的编程是指,6.3.3 8259A的应用编程,1.初始化编程,写初始化命令字ICW1ICW4到初始化命令寄存器组,这项工作一定要在8259A开始工作之前完成,用于建立基本工作条件,写入后一般不再改变。,对初始化编程要注意两点:,写IC
20、W的流程必须按规 定顺序写,不能颠倒。,各ICW的格式/功能,初始化完成,N,N,31,6.3.3 8259A的应用编程1.初始化编程 写初始,写初始化命令字ICW1,使8259A对中断请求信号边沿检测电路复位。 它仅在中断请求信号由低变高时能产生中断。,清除中断屏蔽寄存器,设置中断优先级排 队,IRQ0IRQ7依次降低。,指明系统使用的8259A是单片还是多片级联。,格式:,6.3.3 8259A的应用编程,0-多片8259A1-单片8259A,中断向量地址,仅在8080/8085模式下用,0-边沿触发1-电位触发,0-不需ICW41-需要ICW4,地址间距0-间距81-间距4,32,写初始
21、化命令字ICW1使8259A对中断请求信号边沿检测电,初始化命令字ICW2,设定8080/8085模式系统的中断向量地址高8位A15A8或8086/8088模式系统的中断向量号高5位T7T3,格式:,6.3.3 8259A的应用编程,33,初始化命令字ICW2 设定8080/8085模式系统,目的:用于定义8259A 8根中断请求线上有无级联8259A从片,写初始化命令字ICW3,若系统只有一片8259A,则不用ICW3,若有 多片8259A级联,则每一片8259A都必须使用ICW3,且主、从片的ICW3格式不同。,6.3.3 8259A的应用编程,34,目的:用于定义8259A 8根中断请求
22、线上有无级联8259,目的:定义8259A工作时用8080/8085模式还是8086/8088模式,以及中断服务程序是否要送出EOI命令,以清除中断服务寄存器ISR,允许其他中断。,写初始化命令字ICW4,格式:,6.3.3 8259A的应用编程,35,目的:定义8259A工作时用8080/8085模式还是808,-有选择地写操作命令字OCW1OCW3到操作命 令寄存器组,2.操作方式编程,这项工作可在8259A已经初始化后的任何时候进行,目的是对中断处理过程实现动态控制。,如果不写操作命令字,8259A就按初始化编程所设置好的方式和模式工作,工作于IR0优先级最高,从IR0IR7优先级依次降
23、低的固定优先级的全嵌套工作方式。,如需改变初始化时设置的中断控制方式,或屏蔽某些中断级,读出一些状态信息,就必须在8259A进入工作之前或工作过程中酌情写入操作命令字OCW。,6.3.3 8259A的应用编程,36,-有选择地写操作命令字OCW1OCW3到操作命2.操作,目的:用来设置/清除对中断源的屏蔽,写操作命令字OCW1,格式:,6.3.3 8259A的应用编程,37,目的:用来设置/清除对中断源的屏蔽写操作命令字OCW1格式,目的:设置中断优先级是否循环,循环的方式及中断结束的方式,写操作命令字OCW2,格式:,最低优先级编码,6.3.3 8259A的应用编程,38,目的:设置中断优先
24、级是否循环,循环的方式及写操作命令字OC,目的:用于设置查询方式、特殊屏蔽方式、以及用来读8259A的IRR、ISR、IMR的当前状态,写操作命令字OCW3,格式:,6.3.3 8259A的应用编程,39,目的:用于设置查询方式、特殊屏蔽方式、以及用来读8259A,把正在执行的高级中断屏蔽掉,而开放较低级中断的屏蔽方式,特殊屏蔽方式,先利用OCW1命令将正在执行的高级中断屏蔽掉;然后用OCW3命令(D6D5=11)设置特殊屏蔽方式,这样可使ISR相应位的功能中止,直到清除特殊屏蔽方式。,利用该功能,可使中断不受优先级限制,而人为地为某一较低优先级中断服务,这就为用户提供了很大的灵活性。,实现方
25、法:,6.3.3 8259A的应用编程,40,把正在执行的高级中断屏蔽掉,而开放较低级中断的屏蔽方,例如系统正在为IRQ4中断服务,服务过程中为了允许比它低的中断得到响应,可用特殊屏蔽命令字将IRQ4中断暂时屏蔽,当为较低级中断服务完后,再解除对IRQ4中断的屏蔽,以最后完成对它的中断服务。,. ;为IRQ4中断服务的程序 . ;屏蔽除准备允许响应的低级中断外的. ;所有其它低级中断CLI ;为在IRQ4服务程序中开放低级中断设 ;置特殊命令字而关中断MOV AL,10H ;送屏蔽IRQ4的OCW1命令MOV DX,PORT1 ;送OCW1口地址DXOUT DX,AL ;OCW18259A,A
26、0=1MOV AL,68H ;送特殊屏蔽方式字OCW3AL,S1S2=11,6.3.3 8259A的应用编程,41,例如系统正在为IRQ4中断服务,服务过程中为了允许比,MOV DX,PORT2 ;送OCW3口地址DXOUT DX,AL ;OCW38259A,A0=0STI ;开中断.CLI ;为复位特殊屏蔽方式而关中断MOV AL,48H ;OCW3AL,S1S2=10MOV DX,PORT2 ;送OCW3口地址DXOUT DX,AL ;OCW38259A,A0=0MOV AL,0 ;解除对IRQ4的屏蔽MOV DX,PORT1 ;OCW1口地址DXOUT DX,AL ;OCW18259A,
27、A0=1STI ;开中断 ;包含EOI的中断结束命令IRET ;中断结束返回,6.3.3 8259A的应用编程,42,MOV DX,PORT2 ;送OCW3口地址DX,CPU根据需要随时查询中断源,当查询到有中断请求时,就转入为相应中断源服务的程序中去。,查询方式,系统关中断,写入查询命令字OCW3至0端口,实现方法:,读0口,可读到下列查询字:,I X X X X W2 W1 W0,6.3.3 8259A的应用编程,43,CPU根据需要随时查询中断源,当查询到有中断请求时,,读IRR、ISR的方法:先发读命令字OCW3到0端口, 再读0端口。,读8259A状态,读命令字格式为:,0 0 0
28、0 1 0 R1 R0,R1R0=10,读出的是中断请求寄存器IRR;,R1R0=11,读出的是中断服务寄存器ISR。,读IMR的方法:直接对1端口进行读操作,即可 读出IMR的内容。,6.3.3 8259A的应用编程,44,读IRR、ISR的方法:先发读命令字OCW3到0端口,读,8259A具有十分灵活的中断管理方式:,3.可编程设置的工作方式,中断优先级管理-中断管理的核心,6.3.3 8259A的应用编程,1)中断嵌套方式 2)中断优先级循环方式 3)中断屏蔽方式 4)程序查询方式 5)中断结束方式 6)中断请求触发方式 7)读状态方式 8)数据缓冲方式 9)多片级联方式,45,8259
29、A具有十分灵活的中断管理方式:3.可编程设置的工作方,8259A中有两种中断嵌套方式:全嵌套方式和特殊全嵌套方式,1.中断嵌套方式,全嵌套方式,一种最普通的工作方式,芯片写完初始化命令字ICW后,如不再写入操作命令字OCW,则自动进入并保持此方式。此时中断优先级固定为IRQ0最高,IRQ7最低,且高级中 断源可中断低级中断源。,系统按此工作方式工作的条件:,主程序必须开中断。,每进入一个中断服务程序,系统都会自动关中断,故必须在中断服务程序中再次开中断,才有可能嵌套更高级的中断。,每次中断服务程序结束时,必须执行中断结束命令,清除ISR中对应的位,才能返回断点并响应再次到来的中断请求。,6.3
30、.3 8259A的应用编程,46,8259A中有两种中断嵌套方式:全嵌套方式和特殊全嵌,全嵌套中断方式流程,开中断,主程序,IRQ3中断服务程序,IRQ1中断请求,开中断,关中断,中断结束EOI,6.3.3 8259A的应用编程,47,全嵌套中断方式流程开中断主程序IRQ3中断服务程序IRQ1中,特殊全嵌套方式,适用于多片8259A级联且响应的中断优先级保存在各从片中的大系统。,与普通全嵌套方式相比,特殊全嵌套方式的特殊性表现在:,当从片的中断请求被响应后,主片并不封锁从片的INT输入端,以便从片中优先级更高的请求可得到响应。,在从片中断服务程序快结束时要检查其ISR内容,检测刚服务完的中断是
31、否为该从片唯一的中断请求源,如是,则连发两个非特殊EOI命令,使从片、主片相继结束中断;否则,只发一个EOI命令,使主片仍不结束中断。,6.3.3 8259A的应用编程,48,特殊全嵌套方式 适用于多片8259A级联且响应的中断,2.中断优先级循环方式,8259A提供了两种中断优先级循环方式:,自动循环优先级方式-适合于各中断源的优先级相 同的应用场合,一个中断源被服务后,其优先级自动排到最低。,此方式又分非自动结束方式下循环和自动结束方式下循环两种,具体通过写OCW2最高三位设置。,特殊循环优先级方式-适合于中断源的优先级需随意改变的应用场合,由OCW2的最高三位再辅之以最低三位设定,通过设
32、定最低三位编码指定最低优先级从而改变各中断源优先级。,6.3.3 8259A的应用编程,49,2.中断优先级循环方式8259A提供了两种中断优先级循环方式,3.中断屏蔽方式,具体屏蔽方式有两种:,普通屏蔽方式:用OCW1设置IMR中某一位或某几位 为1,即可将相应中断请求屏蔽掉。,特殊屏蔽方式:用OCW3设置该方式,OCW1建立普 通屏蔽信息,当响应一个中断请求 时,开放所有未被OCW1屏蔽的其它 优先级中断。,6.3.3 8259A的应用编程,50,3.中断屏蔽方式具体屏蔽方式有两种:普通屏蔽方式:用OCW,4.程序查询方式,这种方式下CPU可获得当前请求中断服务的优先级。,实现方法是将OC
33、W3的D2位设置为1,再紧跟一个读命令。,6.3.3 8259A的应用编程,51,4.程序查询方式 这种方式下CPU可获得当前请求中断服,5.中断结束方式,8259A提供了两种中断结束方式:,EOI命令又有两种形式:,6.3.3 8259A的应用编程,52,5.中断结束方式8259A提供了两种中断结束方式:自动中断结,6.中断请求触发方式,通过设置初始化命令字ICW1的D3位为0或为1,可使8259A工作于边沿(上升沿)触发方式或电平(高电平)触发方式。,在电平触发方式下,CPU在发出EOI命令前或再次开放中断前,必须确保已响应的中断请求IRi为低电平,以防出现第二次中断。,无论哪种触发方式,
34、必须确保在接收到第1个INTA脉冲负跳变之前,IRi输入保持高电平,若IRi输入提前变低,则CPU响应中断时就自动设定IR7。这样可防止由IRi输入端上严重的噪声干扰产生的中断。,注意:,6.3.3 8259A的应用编程,53,6.中断请求触发方式 通过设置初始化命令字ICW1的D,7.读状态方式,8259A内部的IRR、ISR和IMR三个寄存器状态,可通过适当的输入命令读至CPU中。,6.3.3 8259A的应用编程,54,7.读状态方式 8259A内部的IRR、ISR和IMR,8.数据缓冲方式,-常用于多片级联的大系统中,各片8259A的中断向量号均要在接收第二个INTA脉冲之后的数据总线
35、发送,故芯片需要通过总线缓冲器挂接在数据总线上。采用数据缓冲方式后,将在SP/EN端输出一个有效低电平,开启缓冲器工作。,设置方式:将ICW4的D5位(BUF位)置1。,6.3.3 8259A的应用编程,55,8.数据缓冲方式-常用于多片级联的大系统中 各片8,9.多片级联方式,一个系统中,可将多片8259A级联,级联后一片8259A为主片,若干片8259A为从片,最多可有8个从片,将中断源扩展到64个。,主片和每个从片都必须通过写入ICW3分别初始化和设置必要的工作状态。每片8259A都必须分配两个互不相同的端口地址:偶地址、奇地址各一个。,6.3.3 8259A的应用编程,56,9.多片级
36、联方式 一个系统中,可将多片8259A级联,,6.4 80486 CPU的中断机理,80386/80486在中断机理上与其前辈CPU8086 /8088/80186/80286大同小异,差别主要表现在中断向量号转换为向量地址的方法以及系统定义、保留的中断和异常不完全相同。,中断向量与中断描述符表,中断/异常向量分配,中断/异常的检测、响应、处理过程,57,6.4 80486 CPU的中断机理 80386/8,6.4.1 中断向量与中断描述符表,1.中断向量和中断向量表,中断向量即中断处理程序的入口地址。,为了对中断进行管理,一般CPU都是在内存中建立一个 中断向量表,然后为每个中断源分配一个中
37、断向量号(或叫中断类型号),作为指向其中断向量地址指针的索引。,例如8086中断系统是在内存的最低1K字节建立了一个可存放256个中断向量的中断向量表,每个中断向量号对应一个中断向量。中断向量号与中断向量地址指针的对应关系是:,中断向量地址指针=4中断向量号,58,6.4.1 中断向量与中断描述符表1.中断向量和中断向量表2,6.4.1 中断向量与中断描述符表,2.中断描述符表,在80386/80486中,采用中断描述符表IDT来管理各种中断。,当80386/80486工作于实地址方式时,系统的IDT实质上就是8086中断向量表,结构及其在内存的位置都没什么区别。,当80386/80486工作
38、于保护方式时,IDT可置于内存的任意区域,其起始地址可通过写CPU内部的IDT寄存器来设置或修改,里面包含有IDT基地址和边界范围。有了基地址,再根据中断类型号即可取到相应的描述符项。在386/486中,一般将IDT表中的描述符称作中断门/陷阱门:中断门对应于外部硬中断,陷阱门对应于内部软中断,即异常。,59,6.4.1 中断向量与中断描述符表2.中断描述符表 在,每个中断门/陷阱门描述符由8字节组成,其格式为:,15,8,7,0,偏 移 量 15 0 位,中断/异常处理程序的代码段描述符选择器,P,DPL,0,1,1,1,*,(未使用),偏 移 量 31 16 位,IDT表中最多可登记256
39、个中断门或陷阱门,故IDT表在内存中最多占8256=2048(字节)(即2KB)。,6.4.1 中断向量与中断描述符表,63,48,60,每个中断门/陷阱门描述符由8字节组成,其格式为:15870偏,保护方式下中断/异常处理程序的进入过程:,IDT,中断门/陷阱门描述符,选择器,属性,偏移量,GDT或LDT,段描述符,基地址,边界,属性,000,8,中断向量号,7,0,IDTR,31,0,15,0,线性基地址,边界,物理/线性地址空间,00000000H,中断程序入口地址,CS段,FFFFFFFFH,6.4.1 中断向量与中断描述符表,61,保护方式下中断/异常处理程序的进入过程:IDT中断门
40、/陷阱门,6.4.2 中断/异常向量分配,在256个可能产生的中断/异常中,Intel公司定义了32个向量号(031)作为不可屏蔽中断(NMI)和内部异常的向量号,其余224个向量号(32255)可由系统设计人员和系统用户任意选用和定义,作为外部可屏蔽中断(INTR)和内部自陷指令中断的向量号。,62,6.4.2 中断/异常向量分配 在256个可能产生的中,6.4.3 中断/异常的检测、响应、处理过程,N,N,N,N,N,Y,Y,Y,Y,Y,Y,N,当前指令结束?,内部异常?,NMI?,INTR?,TF=1?,执行下条指令,获得向量号,变换成中断向量,调中断处理程序,EFLAGS入栈,IF=1
41、?,清IF、TF,CS、EIP先后入栈,中断服务,EIP、CS先后出栈,EFLAGS出栈,中断返回(IRET),63,6.4.3 中断/异常的检测、响应、处理过程NNNNNYYY,6.4.3 中断/异常的检测、响应、处理过程,各类中断/异常的向量号是在中断响应阶段获取的,向量号获取方法因中断源不同而有所不同:,对处理器检测的各种内部异常,向量号是由 CPU根据异常类型在内部自动形成的。,对软中断指令INTn,向量号由指令本身给出, 亦属内部自动形成。,对NMI,向量号被指定为2,它不需外部提供, 故本质上也是内部自动形成。,对INTR,向量号通过两个中断响应周期8259A 读取。,64,6.4
42、.3 中断/异常的检测、响应、处理过程 各类中断,6.5 80X86微机的硬件中断控制逻辑,在以80X86为CPU的微机系统中,一般都是用8259A来将CPU的一根可屏蔽中断线INTR扩展为8根以上的硬件中断线,并进行管理。,PC/XT机的中断控制逻辑,PC/AT机的中断控制逻辑,80386/80486微机的中断控制逻辑,65,6.5 80X86微机的硬件中断控制逻辑 在以80X8,6.5.1 PC/XT机的中断控制逻辑,4.7k,+5V,66,6.5.1 PC/XT机的中断控制逻辑4.7k+5VNMI,6.5.1 PC/XT机的中断控制逻辑,用户在此基础上附加8259A芯片,扩充中断请求线的
43、方法和原理。,扩充方法:,67,6.5.1 PC/XT机的中断控制逻辑 用户在此基础上,中断原理(采用向量式和查询式相结合的中断源识别和判优机理):,当附加8259A的IRQi中有中断请求时:,IR2的中断向量号0AH,6.5.1 PC/XT机的中断控制逻辑,68,中断原理(采用向量式和查询式相结合的中断源识别和判优机理):,说明,PC/XT的I/O扩展槽上未引出级联线CAS2CAS0,故不可能采用主、从片级联方法。所以,用本法扩充后的中断系统工作机理与通过级联线扩充的两级8259A系统的工作原理有根本区别,这也就决定了它在硬件连接上和初始化编程上的不同点:,SP/EN、CAS2CAS0和IN
44、TA都不必使用。,对附加8259A的中断响应通过系统板上8259A的IRQ2中断服务程序中查询附加8259A的状态来进行,故附加8259A也就无需向CPU送中断向量号。,6.5.1 PC/XT机的中断控制逻辑,69,说明 PC/XT的I/O扩展槽上未引出级联线CAS2,对附加8259A初始化编程时,ICW2、ICW3不必写,为了对附加8259A的中断请求级进行开放/禁止控制,可写中断屏蔽字OCW1,如ICW4定义的是非自动EOI方式,则在附8259A中断处理程序的最后要通过写OCW2来发中断结束命令;否则,不必写OCW2,为对附加8259A编程(写命令字、读状态),需给它分配2个在系统中具有唯
45、一性的0、1端口地址。,6.5.1 PC/XT机的中断控制逻辑,70,对附加8259A初始化编程时,ICW2、ICW3不必写为,6.5.2 PC/AT机的中断控制逻辑,71,6.5.2 PC/AT机的中断控制逻辑NMI屏蔽寄存器屏蔽位,6.5.2 PC/AT机的中断控制逻辑,这种将两片8259A级联在一起的方法与前述扩充8259A的方法是不一样的,故中断执行机理也不一样:,从片管理的8级中断排队判优后,再参与到主片的前8级判优,此时主片工作在特殊全嵌套方式,从片工作在普通嵌套方式。,72,6.5.2 PC/AT机的中断控制逻辑 这种将两片82,6.5.3 80386/80486微机的中断控制逻辑,80386/80486微机的中断控制逻辑,在原理上也是由几个8259A电路组成的,不过它们不是一个个独立的8259A芯片,而是和其它功能电路一起集成在一个VLSI的外围接口芯片中。,73,6.5.3 80386/80486微机的中断控制逻辑,