第八章 中断和中断

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
断排序判优,传送中断类型码,实现中断嵌套,完成中断结 束等。 ●CPU中断控制逻辑在CPU功能中是隐含的。它的主要功能是: 允许/禁止中断请求,执行中断响应周期,保护中断断点, 关中断,转向中断服务程序执行等。
(2)软件系统
软件系统主要包含中断服务程序和中断 向量表这两个部分。
●中断服务程序是程序员事先写好的一个子 程序,它为某个特定的中断源服务,其核心 如右图中的中断处理部分,这一部分可以是 对I/O进行数据传送和处理,也可以是对某些 紧急事件进行应急处理,功能十分的丰富多 变。(要对右边流程图中的各个细分框图进 行说明。)
(3) 优先级自动循环方式 上面的两种方式的优先级是固定不变的,即IR0最高,IR7
最低,有的时候,我们认为这不太公平,比如在一个智能 抢答系统中,这个时候我们可以采用优先级自动循环方式。 在这个方式中,初始的优先级设置与完全嵌套方式一样, 即IR0最高,IR7最低,但在使用过程中这个优先级是会变 化的,如某一个中断源的中断请求被响应,那么下一次排 队时,这个中断源的级别就是最低的。而原先排在它后面 一个的中断源的优先级就是最高的。每一次都是这样操作 的。
●CPU从发出第一个中断应答信号INTA开始直到从数据总线 上获得中断类型码为止的这一段时间称做中断响应周期。
● 从CPU得到中断类型码开始,到CPU执行中断服务程序第 一条指令前的这一时刻称中断响应过程。(P181)
●后面给出的中断响应周期图说明一次中断响应要经历二 个总线周期,图中的ALE信号在任何一个总线周期的第一 个时钟状态一定是有效的高电平,但这里并不存在要锁存 的地址信息,ALE时序线在这里的作用是标示总线周期的 起止位置。
8.1 中断基础 (1)中断
中断是指CPU在运行程序时,由于一个事件的出现,致使CPU暂时中断正在执
行的程序,而去为事件服务(即执行中断服务程序),服务完毕,再返回被中断 的程序继续执行。
(2)中断源
这个事件可能是外部或内部的随机事件,也可能是由程序预先安排的事件。因
为这个事件会引起中断,所以又称为中断源。
CPU总是在当前正在被执行指令的功能执行完毕时采样 INTR引脚,若INTR引脚为高电平,则说明有可屏蔽中断 请求发生,(相对于80X86计算机来说)这时若CPU的标 志寄存器的IF位被置1,则CPU必须响应该中断请求,CPU 执行一个中断响应周期。在这里,我们已经得出了CPU响 应可屏蔽中断的条件。
● 指令中断
● 不可屏蔽中断
● 可屏蔽中断
● 调试中断(断点中断和单步中断)
指令中断优先级最高。对32位机而言,优先级最高的是异常中断,其 余和16位机相同。
第二层优先是中断类型层的优先级,即中断源的优先级。以可屏蔽中断
为例,默认的情况下,它将IR0~IR7定为8级,优先级次序依次为IR0, IR1、…、IR6 , IR7 IR0最高,IR7最低。
中断类型号0, 1, 3, 4为内部中断。 中断类型号2为非屏蔽中断。 中断类型号08一OFH为可屏蔽中断,分为8级,中断类型 号08H优先级最高,0FH最低。 中断类型号10H一IFH为指令中断,大致为BIOS调用。 中断类型号20H一FFH为指令中断,大致为DOS调用。
8.2 中断管理
8.2. 1 中断优先级管理
在中断响应周期中,CPU和中断控制器互动过程如下:
1)CPU发出第一个INTA信号在第一个INTA到达8259A相应引 脚时,8259A对提出申请的若干个中断源进行判优排序,确定 优先级最高的那一个,将符合条件的中断源的中断类型号置 入中断类型码寄存器。
2)过一个总线周期之后,CPU发出第二个INTA信号,这个信 号到达8259A的相应引脚之后,8259A将其内部的中断类型号 寄存器中保存的中断号通过数据总线缓冲器送到系统数据总 线由CPU接收。
注:INTA、INTR 全部高电平有效,而中断响应输出为低电平有效进行分析。
(2)软件查询法 软件查询法通常是用于系统层的优先级排队,也可用于
可屏蔽中断。软件查询法也需要简单电路支持,但主要是 一个查询程序。这个查询线路由8级分支程序段组成,每 一个分支程序段相当于一级链路。每一级链路对应一级中
断请求。任一个分支程序段都要查询是否有本级中断请求,
如果有则转移至相关中断服务程序去处理;如果没有则进 人下一级查询。8分支程序是按优先级顺序连接的,CPU 查询的次序就是优先级的次序,最先查询的一定是优先级 最高的中断。如图8-4所示。
3. 优先级的几个不同的管理方式
(注意:这一部分的Leabharlann Baidu容是将教材P180的
2.内部中断 由CPU内部事件引起的中断就叫做内部中断,因为这是软件产 生的中断,因此又称为软件中断。内部中断又可分为三类,即 指令中断、调试中断和异常中断。在32位微型计算机系统中, 为了支持多任务和虚拟存储功能又增加了异常中断。
内部中断又可分成如下三类: (1)指令中断
指令中断有三种形式: ①除数为零中断,这是做除法的过程中出现除数为零,因而产 生中断,这是一种出错中断; ②溢出中断,指令INTO,若在指令执行过程中出现溢出,结果 OF被置1,此时只要执行INTO指令,就会产生溢出中断; ③中断指令INT n 。
型计算机系统对它的所有不同类型的中断进行的统一编码。 16位微型计算机和32位微型计算机都支持256种中断类型 (虽然有所不同,)其中断类型号为00H一0FFH。当中断 发生时,CPU依中断类型号来识别中断,并由此转到相应 的中断服务程序入口
1. 16位微处理器的中断类型号 16位微处理器的中断类型号见表8-1 。其大致分为:
优先级最高,IR1次之,……IR7最低,同时若有多个中断源提 出中断请求,级别高的先响应,若已有一个中断服务子程序正
在执行中,这时若有其它的中断源提出中断请求,只有级别高
的可以打断级别低的从而实现中断嵌套,级别低的不能打断级 别高的,同级的也不能相互打断。
优先级一经设定,就不能更改。(除非你重新对8259A初始化)
(2)调试中断 这是调试程序时所用的两种方法,以帮助用户查找、判断程序 的逻辑错误。一种是断点中断,一种是单步中断。
(3)异常中断 异常中断是80286以后才有的中断类型。这是程序执行中发
生异常情况(错误)而引起的,所谓异常情况,通常是指在指
令执行期间,由特权级检查时检测到的不正常操作或者非法操 作等违规情况。异常中断分为故障( Fault)、陷阱(Trap)和中 止(Abort)三种。对异常中断有相应的处理程序,即故障处理 程序、陷阱处理程序和中止处理程序等等。
(3)中断源的分类
中断源分成内部 (软件)中断和外部(硬件)中断两类, 内部中断分成指令中断(如INT 21H等)和故障中断两个子类 外部中断分成不可屏蔽中断(NMI )和可屏蔽中断(INTR )两个子类。 注:
指令中断(INT N)是程序员安排的,它发生在程序中位置是可知的,而硬 件中断和内部故障中断是随机的,不可以预知的。
中断响应过程中CPU完成如下工作: 1)将中断类型码乘以4,得到中断向量在中断向量表的位置。 2)将FLAGS寄存器内容入栈保护。 3)将FLAGS中的IF和TF清0,禁止单步中断和任何可屏蔽中 断得到响应。
(4)特殊优先级自动循环方式
在上面的优先级自动循环方式中,初始的优先级与完全 嵌套方式完全一样,即IR0最高,IR7最低。而在特殊优先级 自动循环方式中,初始的优先级可以由程序员在对中断系统 初始化时指定。
8.2.2 CPU对可屏蔽中断的响应
这一部分的讨论仅限于通过INTR引脚向CPU提出中断请 求的硬件可屏蔽中断。
.外部中断
由CPU外部事件引起的中断就叫做外部中断,因为这是硬
件电路产生的中断,因此又称为硬件中断。硬件中断又分为 可屏蔽中断(INTR )与非屏蔽中断(NMI) 。
(1)可屏蔽中断 这是经由中断控制器(82C59A)转发的中断。I/O设备的 中断请求信号经82C59A用INTR线向CPU请求中断。CPU可 以用IF(=0)来屏蔽(禁止)它的中断请求,因此这种中断 叫做可屏蔽中断,用CLI指令可使IF= 0 。STI指令可使IF=1, CPU在执行中断响应周期时发出两次中断应答(INTA)信号 予以响应,从而读取从82C59A送来的中断源的中断类型码。
1. CPU响应可屏蔽中断的条件
1) 得有一个中断请求信号到达INTR引脚;
2) CPU的标志寄存器中的IF位被置1(允许中断);
3) 当前指令执行完毕。
2. 中断响应时间和中断响应周期
从CPU发出第一个中断应答信号INTA ,到CPU开始执行 中断服务程序的第一条指令前的这一段时间称做中断响应时 间。
在2片以上的8259A组成级联的情况下,完全嵌套方式显然不适 用的,在这种情况下应当使用特殊完全嵌套方式。
(2)特殊完全嵌套方式 在完全嵌套方式的基础上作了一点点的修改,这个修
改同学们可能已经猜到了,即:允许同级中断相互打断。 例如在图8-20的情况下,我们应当将主8259A的优先
级方式设置成特殊完全嵌套方式,而将从8259A的优先级 设置成完全嵌套方式。
第八章 中断和中断控制器
【内容提要]本章主要内容有三个:①中断基拙,这是为理解中断控制器和 中断系统的知识准备;②中断控制器的硬件和控制字,这是编程应用的基础, 既是难点,也是重点;③ CPU中断的管理。
【学习指导】本章的学习主要要抓住几个问题:①中断的全过程,着重理清 CPU-8259A一中断源(I/0设备)之间的联系;着重理清中断向量表、堆栈、存 储器之间的联系;着重理清主程序、中断服务程序、中断处理程序之间的联系; 也就是将I/O设备、中断控制器、CPU、中断响应周期、中断向量表、中断服 务程序等联系起来综合考虑。② 82C59A级联,32位机的82C59A是在级联方式 下工作的。③实验和应用
例如,要执行一条访存指令,若被访问的存储段不在内存中, 则发生“段不存在”的异常情况,于是将由INT13中断转去执 行相应的异常处理程序,以解决“段不存在”的问题。因此, 异常中断可用在系统保护和虚拟存储中。
在32位机中,将除数为零中断也归为异常中断。
8.1.3中断类型号 简称中断号,又称中断类型码。中断类型号是一个微
(2)非屏蔽中断(不可屏蔽中断) 这是由非屏蔽中断控制线路产生的中断。当协处理器工作
异常或存储器奇偶校验出错时会产生NMI中断请求,此中断请 求通过非屏蔽中断控制线路用NMI向CPU请求中断。这种中断 不会被CPU的IF位所屏蔽(禁止),因此这种中断叫做非屏蔽 中断。非屏蔽中断一旦出现,CPU就会立即响应。
●中断向量表位于内存最低端1024个字节处, 其中可存储256个中断服务子程序的入口地址, CPU响应中断时,从数据总线上得到中断向量 号,根据中断向量号,CPU可以很容易的从中 断向量表中得到中断服务子程序的入口地址。
8.1.2 中断类型
前面已经讲过,根据中断源在计算机系统中的位置不同,我们把中断分成外部 中断和内部中断两类。
INTR中断是可以被CPU完全屏蔽的,这一类的中断也可以被8259中断控制 器部分屏蔽的。
2 . 中断系统
一个完整的计算机中断系统必须要有下面的几个模块。
(1)硬件系统
这一部分由外加的一片中断控制器芯片和CPU中的中断 控制逻辑所组成,它们的主要功能如下所述。
●中断控制器完成的功能主要是: 实现中断屏蔽,接受中断请求,进行中断联络,进行中
“3.优先级(权)分类”和P181 的”8.2.3 中断嵌套”综合 起来讲解的)
80X86系列微机通过8259A管理中断,它对优先级的管理
有几种不同的管理方式,下面对它们进行展开。 (1) 完全嵌套方式(固定优先级) (2) 特殊的完全嵌套方式 (3) 自动循环方式 (4) 特殊循环方式
(1) 完全嵌套方式(固定优先级) 这是单片8259A中断系统中最常见的优先级管理方式,IR0的
1.中断优先级 当多个不同类型的中断源同时请求中断时,CPU优先响应哪个中断源的 请求,这就是中断优先问题。常用的方法是,按照系统的要求预先将不同 类型的中断源划分成不同的优先级别,CPU在中断响应时按照中断优先级 别进行响应,优先级高者先响应,优先级低者后响应。
在一个微型计算机系统中,优先级常采用分层优先的方法。以16位机 为例,第一层优先是系统层的优先级,中断系统的优先次序依次为:
相关文档
最新文档