650 likes | 837 Views
第 7 章 中断系统. 当 CPU 与外设用查询方式传送数据时, CPU 将大量时间花在等待上,降低了工作效率。因此在计算机技术中引入了中断的概念。中断是现代计算机必须具备的重要功能,也是计算机发展史上的一个重要里程碑,它的出现给计算机结构与应用带来了新的突破。 本章介绍微机中断系统的功能、中断过程、中断管理, 8086 的中断系统,可编程中断控制器 8259A 的工作原理及应用. 7.1 中断概述. 7.1.1 中断的基本概念. 1 .中断
E N D
第7章 中断系统 当CPU与外设用查询方式传送数据时,CPU将大量时间花在等待上,降低了工作效率。因此在计算机技术中引入了中断的概念。中断是现代计算机必须具备的重要功能,也是计算机发展史上的一个重要里程碑,它的出现给计算机结构与应用带来了新的突破。 本章介绍微机中断系统的功能、中断过程、中断管理,8086的中断系统,可编程中断控制器8259A的工作原理及应用
7.1 中断概述 7.1.1 中断的基本概念 1.中断 在CPU执行程序的过程中,出现了某种紧急或异常的事件(中断请求),CPU需暂停正在执行的程序,转去处理该事件(执行中断服务程序),并在处理完毕后返回断点处继续执行被暂停的程序,这一过程称为中断。中断过程如图所示。为实现中断功能而设置的硬件电路和与之相应的软件,称为中断系统。
7.1.1 中断的基本概念 中断过程
7.1.1 中断的基本概念 中断最初的目的是为了解决高速CPU与低速外设之间的速度矛盾。实际上,中断的功能远远超出预期的设计,被广泛地应用于多方面,大大提高了CPU的工作效率。中断的优点有下面三点。 ( 1) 分时操作 中断技术实现了CPU和外部的并行工作,从而消除CPU的等待时间,提高了CPU的利用率。另外,CPU可同时管理多个外部设备的工作,提高了输入/输出数据的吞吐量。
7.1.1 中断的基本概念 (2) 实时处理 在实时控制系统中,现场定时或随机地产生各种参数、信息,要求CPU立即响应。利用中断机制,计算机就能实时地进行处理,特别是对紧急事件的处理。 (3)故障处理 计算机运行过程中,如果出现某些故障,如电源掉电、运算溢出等,计算机可以利用中断系统自行处理。
7.1.1 中断的基本概念 2.中断源 所谓中断源,就是引起中断的原因或者发出中断请求的设备。中断源一般分为两类:内部中断源和外部中断源。 内部中断源即中断源在微处理器内部。如计算溢出、中断指令的执行、程序调试中指令的单步运行等都是内部中断源。 外部中断源即引起中断的原因是处理机的外部设备。如外设的I/O请求、定时时间到、设备故障、电源掉电等都是外部中断源。
7.1.1 中断的基本概念 (1)外部设备请求中断 (2)故障强迫中断 (3)实时时钟请求中断。 (4)数据通道中断。 (5)程序中断。
7.1.1 中断的基本概念 3. 中断控制的功能 (1) 能实现中断并返回 当某一中断源发出中断请求时,CPU能决定响应或是屏蔽它。当响应中断请求时,CPU在执行完当前指令后,把现场信息压入堆栈,然后自动转到中断源的服务程序。当中断处理完成后,能自动返回,并恢复中断前的状态继续原程序的执行。 (2) 能实现中断判优功能 中断判优,即根据中断源的优先级进行排队。当系统中出现多个中断源同时提出中断请求的情况时,中断控制电路能根据各中断源的优先级进行响应,优先级最高的中断请求先响应。
7.1.1 中断的基本概念 (3) 能实现中断的嵌套 中断的嵌套是指高级别的中断能中断较低级别的中断处理,它类似于子程序嵌套。
7.1.2 中断处理过程 1.中断请求 中断请求是中断源向CPU发出的请求中断的要求。软件中断源是在CPU内部由中断指令或程序出错直接引发中断;而硬件中断源必须通过专门的电路将中断请求信号传送给CPU。 CPU在执行完每条指令后,都要检测中断请求输入引脚,看是否有外设的中断请求信号。 NMI引脚上的中断请求称为不可屏蔽中断请求(或非屏蔽中断请求) INTR引脚上的中断请求称为可屏蔽中断请求,IF=1为允许中断,
7.1.2 中断处理过程 2.中断响应 若CPU接收到了中断请求信号,且中断允许触发器的状态为1,则CPU在现行指令执行完后,发出INTA信号响应中断。一旦进入中断处理,立即清除中断请求信号。这样可以避免一个中断请求被CPU多次响应。 3.保护断点 CPU一旦响应中断,需要对其正在执行程序的断点信息进行保护,以便在中断处理结束后仍能回到该断点处继续执行。对于8086/8088 CPU,保护断点的过程由硬件自动完成,主要工作是关中断、将标志寄存器内容入栈保存以及将CS和IP内容入栈保存。
7.1.2 中断处理过程 4.中断处理 中断处理的过程实际就是CPU执行中断服务程序的过程。如在中断服务程序中用到了寄存器,还需要在中断服务程序的开头对这些寄存器内容进行保护(即保护现场),在中断服务程序的末尾恢复这些寄存器的内容(即恢复现场)。 5.中断返回 执行完中断服务程序,返回到原先被中断的程序,称为中断返回。在中断服务程序的最后应专门放置一条中断返回指令(如8086/8088的IRET指令)。中断返回指令的作用实际上是恢复断点。
7.1.3 多级中断管理 1.中断优先级 中断请求是随机发生的,当系统具有多个中断源时,有时会同时出现多个中断请求,CPU只能按一定的次序予以响应和处理,这个响应的次序称为中断优先级。
7.1.3 多级中断管理 对于不同级别的中断请求,一般的处理原则是: ①多个中断源同时请求,按优先级由高到低依次处理 ②中断处理时,出现高优先级请求,应转去处理高级请求,服务结束后再返回原中断服务程序继续 ③高优先中断正处理,不响应低级请求 ④同级别请求,应在当前中断处理结束以后再处理
7.1.3 多级中断管理 2.中断优先级的确定 (1) 软件查询法 当CPU响应中断后,利用软件查询有哪些外设申请中断,判断哪个中断源的级别更高,并首先为它进行中断服务。 一般将8个外设的中断请求触发器组合起来,作为一个端口,并赋以端口号。把外设的中断请求信号相“或”后,作为INTR信号,这样只要有一个外设有中断请求,就可向CPU发出INTR信号。 当CPU响应中断后,把中断寄存器组成的这个端口的状态读入CPU,逐位检测,若有中断请求就转到相应的服务程序的入口。
7.1.3 多级中断管理 实现软件查询的接口电路
7.1.3 多级中断管理 如果设定该接口的端口号为20H,查询程序如下: IN AL,20H;读取中断请求触发器的状态 TEST AL,80H;检查“设备7”是否有请求 JNE SUB7 ;是,则转至“设备7”的处理程序7 TEST AL,40H;否,检查“设备6”是否有请求 JNE SUB6 ;是,则转至“设备6”的处理程序6 TEST AL,20H;否,检查“设备5”是否有请求 JNE SUB5 ;是,转至“设备5”的处理程序5 ……
7.1.3 多级中断管理 软件查询法的优缺点: (1) 优点:利用软件完成中断优先权的检测,不需要硬件判优电路。另外,优先权由查询的次序来决定,首先查询的即为优先级最高的。 (2) 缺点:不管外设是否有中断请求都需要按次序逐一询问,因而效率较低。特别是在中断源较多的情况下,转至中断服务程序的时间较长。
7.1.3 多级中断管理 (2) 硬件优先权排队电路 1.中断优先权编码电路 中断优先权编码电路是用硬件编码器和比较器组成的优先权排队电路,如图当8个中断源中某一个有中断请求时,便在其中断请求线上产生“1”,并在“或”门的输出端形成一个中断请求信号,但它能否送至CPU的中断请求线INTR,还受到比较器的控制。8条中断输入线的任一条,经过编码器可以产生三位二进制优先权编码A2A1A0,多个中断源只输出优先权最高的编码。
7.1.3 多级中断管理 中断优先权编码电路
7.1.3 多级中断管理 优先权寄存器中存放的是CPU正在服务的中断编码, A2A1A0 与 B2B1B0在比较器中进行比较,如果A2A1A0级别较低或与B2B1B0相同,则比较器输出为“0”,与门1被封锁;如果A2A1A0级别较高,比较器输出为“1”,则与门1打开,中断请求就被送至CPU的INTR输入端。CPU将中断正在进行的中断服务程序,转去响应更高级别的中断。 如果CPU正在进行中断服务,则“优先权无效”
7.1.3 多级中断管理 2. 链式优先权排队电路 当响应信号沿链式电路进行传递时,最靠近CPU并发出中断请求的接口将首先拦截住响应信号,CPU进入相应外设的中断处理程序,在服务完成后,该外设撤消其中断请求,解除对下一级外设的封锁。 若1号外设有中断请求,则发出应答信号,同时封锁2号、3号的中断请求,转去对1号服务;若1号没有中断请求,而2号有中断请求时,响应信号便传递给2号外设,向2号发出应答信号,封锁3号的中断请求
7.1.3 多级中断管理 若CPU在为2号外设进行中断服务时1号外设发出了中断请求,CPU会挂起对2号的服务转去对1号服务,1号处理结束后,再继续为2号外设服务。 链式优先级排队电路不仅能够确定各中断源的优先级,而且在相应软件的配合下,可实现高级别的请求中断低级别的服务(即中断的嵌套)。
7.1.3 多级中断管理 链式中断优先级电路
7.2 8086中断系统 8086/8088 CPU可以处理256种不同类型的中断,每一种中断都给定一个编号(0255),称为中断类型号,CPU根据中断类型号来识别不同的中断源。中断源可分为两大类:一类来自CPU的外部,由外设的请求引起,称为硬件中断(又称外部中断);另一类来自CPU的内部,由执行指令时引起,称为软件中断(又称内部中断)。
7.2.1 外部中断 1. 非屏蔽中断NMI(中断类型号为2) 整个系统只有一个非屏蔽中断,它不受IF标志位的屏蔽。出现在NMI上的请求信号是上升沿触发的,一旦出现,CPU将予以响应。非屏蔽中断一般用于紧急故障处理。
7.2.1 外部中断 2.可屏蔽中断INTR 可屏蔽中断请求信号从INTR引脚送往CPU,高电平有效,受IF标志位屏蔽,IF=0时,对于所有从INTR引脚进入的中断请求,CPU均不予响应;另外,也可以在CPU外部的中断控制器(8259A)中以及各个I/O接口电路中对某一级中断或某个中断源单独进行屏蔽。
7.2.2 内部中断 1.内部中断(软件中断) CPU内部请求信号引起的中断均为内部中断,内部中断根据引起中断的原因不同可分为以下几种: (1)除法错中断(类型号为00H) 当CPU执行除法指令(DIV/IDIV)时,若除数为0或所得的商超过了寄存器所能表示的最大值,则立即产生一个除法错中断。CPU响应中断后转去执行除法错中断处理程序。
7.2.2 内部中断 (2)单步执行中断(类型号为01H) 当TF=1时,每执行一条指令,CPU会自动产生一个单步中断。单步中断处理子程序显示各个寄存器及使用的存储单元内容,以便分析单条指令执行的结果。单步中断又称为陷阱中断,主要用于程序调试。 (3)断点中断(类型号为03H) 提供给用户一个调试手段,通常在DEBUG调试程序时,可通过命令在程序中任意指定断点地址,当CPU执行到断点时便产生中断,同时显示当前各寄存器的内容和标志位的值以及下一条要执行的指令,供用户检查在断点以前的程序运行是否正常。
7.2.2 内部中断 (4)溢出中断INTO(类型号为04H) CPU进行带符号数的算术运算时,若发生了溢出,则标志位OF=1,如果此时执行INTO指令,会产生溢出中断。若OF=0,则INTO不产生中断,CPU继续执行下一条指令。INTO指令通常安排在算术指令之后,以便在溢出时能及时处理。 (5)指令中断 CPU执行INT n指令后,会立即产生一个类型码为n的中断,中断指令的操作数n就是中断类型码,转入相应的中断处理程序。
7.2.2 内部中断 2. 内部中断的特点 (1)除单步中断外,所有内部中断的优先权都比外部中断的优先权高。8086的中断优先级由高到低的顺序排列如下: ① 除法出错中断、INTO、INT n ② 非屏蔽中断NMI ③ 可屏蔽中断INTR ④ 单步中断 (2)除单步中断外其它内部中断均无法禁止。 (3)由于中断类型码已确定,所以不用执行中断响应周期取中断类型码。 (4)由于内部中断均处于程序的固定位置处,所以无随机性。
7.2.2 内部中断 8086/8088中断源
7.2.3 中断向量表 8086/8088最多可以处理256个中断,将这些中断处理子程序的入口地址统一存放在内存的一个固定区域。每个中断处理子程序的入口地址占用4字节存储单元:低地址的两字节存放中断处理子程序入口地址的偏移量(IP);高地址的两字节存放段地址(CS)。这些中断处理子程序的入口地址,称为中断向量。256个中断向量要使用1024个字节的内存区域,称中断向量表。8086/8088系统的中断向量表位于内存的前1024字节,地址范围为00000H~003FFH。每个中断源分配一个中断类型码。
7.2.3 中断向量表 8086/8088的中断向量表
7.2.3 中断向量表 中断服务程序入口地址在中断向量表中是按中断类型码顺序存放的,位置可由“中断类型码×4”计算出来。CPU响应中断时,把中断类型码n乘以4,得到对应地址4n(该中断服务程序入口地址所占4个字节的第一个字节的地址),然后把由此地址开始的两个低字节单元的内容装入IP寄存器,再把两个高字节单元的内容装入CS寄存器,CPU即转向中断类型码为n的中断服务程序。
7.2.3 中断向量表 中断向量表中有5个专用中断(中断类型码为0~4),它们的用途已经确定;27个系统保留的中断(中断类型码为5~31)供系统使用,不允许用户自行定义;224个用户自定义中断(中断类型码为32~255),这些中断类型码可供软中断INT n 或可屏蔽中断INTR使用 (中断类型码21H的中断已用作DOS的系统功能调用) 。由用户确定了中断类型码后,还应先将相应的中断处理子程序入口地址填入中断向量表,以便CPU根据提供的中断类型码找到相应的中断向量。
7.3 可编程中断控制器 8259A 8259A具有如下功能: ① 以接收多个外部中断源的中断请求,并进行优先级别判断,选中当前优先级别最高的中断请求,再将此请求送到微处理器的中断输入端。 ② 具有提供中断向量、 屏蔽中断输入等功能。 ③ 可用于管理8级优先权中断,最多构成64级优先权中断管理系统。中断服务程序入口地址构成的中断向量表存放在内存固定区域。 ④ 有多种工作方式,自动提供中断服务程序入口地址
7.3.1 8259A的内部结构及外部引脚 1.8259A的内部结构
7.3.1 8259A的内部结构及外部引脚 (1)数据总线缓冲器 8位双向三态缓冲器,是8259A与系统数据总线的接口。8259A通过数据总线缓冲器接收微处理器发来的各种命令控制字、有关寄存器状态的读取,8259A也通过数据总线缓冲器向微处理器送出中断类型码等。 (2)读/写控制逻辑 该部件接收来自CPU的读/写命令,配合片选信号、读信号、写信号和地址线A0共同实现控制,完成规定的操作。
(3)级联缓冲器/比较器 8259A既可工作于单片方式,也可工作于多片级联方式。这个部件在级联方式下用于标识主从设备,在缓冲方式下控制收发器的数据传送方向。 (4)中断请求寄存器IRR 8位寄存器,用来锁存外部设备送来的IR7~IR0中断请求信号。每位对应着8259A的8个外部中断请求输入端中的一位,当某引脚上有中断请求信号时,IRR对应位置1,当该中断请求被响应时,该位复位。 7.3.1 8259A的内部结构及外部引脚
7.3.1 8259A的内部结构及外部引脚 (5)中断屏蔽寄存器IMR 8位寄存器,用于设置中断请求的屏蔽信号。每位对应着输入端IR7~IR0中的一位。如用软件将IMR的某位置“1”,则其对应引脚上的中断请求将被8259A屏蔽,即使对应IRi引脚上有中断请求信号也不会产生中断请求输出 (6)中断服务状态寄存器ISR 8位寄存器,记录当前正在被服务的所有中断级,包括尚未服务完而中途被更高优先级打断的中断级。每位对应输入端IR7~IR0中的一位。若某个引脚上的中断请求被响应,则ISR中对应位被置1。ISR的置位也允许嵌套。
7.3.1 8259A的内部结构及外部引脚 (7)优先权分析器PR 用于识别和管理各中断请求信号的优先级别。当在IR输入端中断请求信号通过IRR送到PR。PR检查ISR的状态,判别有无优先级更高的中断正在被服务,若无,则将IRR中优先级最高的中断请求送入ISR,并通过控制逻辑向CPU发出中断请求信号INT,并且将ISR 中的相应位置“1” (8)控制逻辑 8259A全部功能的控制核心。它包括一组初始化命令字寄存器ICW1~ICW4和一组操作命令字寄存器OCW1~OCW3,以及有关的控制电路。
7.3.1 8259A的内部结构及外部引脚 2.8259A的外部引脚
7.3.2 8259A的工作方式 1.中断优先级管理方式 (1) 全嵌套方式 全嵌套方式也称固定优先级方式。在这种方式下,由IR端引入的中断请求具有固定的优先级,IR0最高,IR7最低。在对8259A初始化后若没有设置其他优先级方式,则默认为全嵌套方式。
7.3.2 8259A的工作方式 (2) 特殊全嵌套方式 在主从结构的8259A系统中,将主片设置为特殊全嵌套方式,可以在处理某一级中断时,不但允许优先级更高的中断请求进入,也允许同级的中断请求进入。
7.3.2 8259A的工作方式 (3) 优先级自动循环方式 各中断源优先级是循环变化的,主要用在系统中各中断源优先级相同的情况下。一个设备的中断服务完成后,其优先级自动降为最低,而将最高优先级赋给原来比它低一级的中断请求。
7.3.2 8259A的工作方式 (4) 优先级特殊循环方式 该方式与优先级自动循环方式相比,只有一点不同,即可以设置开始的最低优先级。例如,最初设定IR4为最低优先级,那么IR5就是最高优先级,而优先级自动循环方式中,最初的最高优先级一定是IR0。
7.3.2 8259A的工作方式 2.中断屏蔽方式 (1) 普通屏蔽方式 通过对中断屏蔽寄存器(IMR)的设定,实现对中断请求的屏蔽。中断屏蔽寄存器的每一位对应了一个级别的中断请求,当某一位为1时,与之相应的某一级别的中断请求被屏蔽。 (2) 特殊屏蔽方式 当一个优先级较高的中断请求正在被处理时,若设置了特殊屏蔽方式,则允许优先级较低的中断进入正在处理的高级别中断。
7.3.2 8259A的工作方式 3.中断触发方式 (1) 电平触发方式 该方式以IR端上出现的高电平作为中断请求信号。请求一旦被响应,该高电平信号应及时撤除。 (2) 边沿触发方式 该方式以IR端上出现由低电平向高电平的跳变作为中断请求信号,跳变后高电平一直保持,直到被响应。
7.3.2 8259A的工作方式 4.中断结束方式 (1)自动结束方式(AEOI) 自动结束方式在第二个负脉冲的后沿将对应的ISR位清0。该方式是在中断响应后,而不是在中断处理结束时将ISR位清0。在中断处理过程中,就没有“正在处理”的标识。此时若有中断请求出现,没有屏蔽且IF=1,则无论其优先级如何,都将得到响应。所以,中断自动结束方式是一种最简单的结束方式,只适合于中断请求信号的持续时间有一定限制、系统中只有1片8259A且不会出现中断嵌套的场合。