《微型计算机原理》课件第7章.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《微型计算机原理》课件第7章.ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微型计算机原理 微型计算机 原理 课件
- 资源描述:
-
1、第7章 中 断 和 异 常 第7章 中 断 和 异 常 7.1 概述概述 7.2 中断中断 7.3 异常异常 7.4 中断及异常的暂时屏蔽中断及异常的暂时屏蔽 7.5 中断及异常的优先级中断及异常的优先级 7.6 实方式下的中断实方式下的中断 7.7 保护方式下的中断和异常保护方式下的中断和异常 7.8 中断优先级管理器中断优先级管理器8259A PIC 第7章 中 断 和 异 常 7.1 概概 述述图 7.1 中断过程 原程序CPU响应中断中断返回中断请求中断处理程序第7章 中 断 和 异 常 图 7.2 微处理器3种中断技术示意图(a)单线中断;(b)多级中断;(c)矢量中断 INTRCP
2、U+1#2#3#外设中断请求(a)INTR1INTR2INTR3CPU1#2#3#外设中断请求(b)D0D1CPUD7 INTR外设提供设备标志码外设中断请求(c)第7章 中 断 和 异 常 在单线中断技术中,多个外设的中断请求必须用“或”逻辑连接在一起,共同接到微处理器的一条中断请求线上。由于共用一条中断请求线,以下几个问题须予以解决:(1)中断源的识别。所谓中断源是指引起中断的原因或发出中断申请的来源。当中断请求信号INTR有效时,CPU必须判断是哪一个中断源发出的中断请求,这就是中断源的识别问题。(2)中断请求的优先权排队问题。当有多个中断源同时请求中断时,需根据轻重缓急先后次序予以处理
3、,这就是优先权排队问题。(3)中断的多级嵌套。在优先权级别较低的中断源被服务时,允许比它优先级别高的中断源请求中断。第7章 中 断 和 异 常 在多级中断技术中,微处理器有几条优先级别不同的中断请求线,若每一个中断源都有其对应的一条中断请求线,则发生中断时,微处理器就能识别中断源及其优先级别。这种中断技术的中断响应速度快,结构简单,但受微处理器封装引脚数的限制,通常为23条,最多也不过56条。例如8085-CPU有5条中断请求线,而80X86系列CPU有2条中断请求线。在矢量(亦称向量)中断技术中,由每个中断源(经接口)向CPU提供中断源的设备标志码,将程序转向相应中断源设备的中断处理程序,或
4、中断源提供中断处理程序的入口地址。由于矢量中断不需要查询中断源,故中断处理速度较快。第7章 中 断 和 异 常 异常是在指令执行期间检测到的不正常的或非法的状态,使指令不能成功执行。它与所执行指令有直接的联系。例如指令执行期间检测到段异常或页异常时,指令便不能执行下去。异常的发生源于微处理器内部,且总是与微处理器操作同步。因而,通常将软中断指令INTn及INT0等也归类于异常。此外,排错机制也是异常的一个例子。处理器对中断和异常的处理通常在两条指令之间进行。当执行一条带重复前缀的串操作指令时,为保证处理器对中断的及时响应,80386等设计成每条串指令都允许在每次重复操作后响应中断,且重复的串指
5、令也允许报告一个异常,而不丢失已完成各步的结果。例如,一条带重复前缀的查找指令,需要在300个字节中查找一个字符,在查找到250个字节时,仍未找到给定字符,且产生异常。这时第250步是该指令成功执行的最后一个执行步。因而,产生异常时,处理器将保存第250执行步的指针及计数值。异常原因排除之后,便可恢复该指令的执行,完成最后50个字节的查找操作 第7章 中 断 和 异 常 80386、80486中,采用矢量中断技术,每种中断或异常都有它自己的中断矢量,用8位二进制数表示。矢量号(或称中断类型号)用来从中断描述符表(保护虚地址方式时)或中断矢量表(实地址方式时)中选择给定中断的处理程序首地址。80
6、386及80486已将矢量号031 分配给异常;中断及软中断指令的矢量号可在0255范围内选择,但为避免与异常矢量号冲突,最好在32255的范围内选择。第7章 中 断 和 异 常 7.2 中中 断断 7.2.1 可屏蔽中断可屏蔽中断 经由INTR信号(高电平有效)请求的中断称为可屏蔽中断。它受中断允许标志位IF的影响和控制。当IF被软件采用STI指令置1时,表明可屏蔽中断被允许,CPU响应可屏蔽中断。当IF被软件采用CLI指令置0时,表明可屏蔽中断被禁止,CPU不响应可屏蔽中断,并将该中断信号挂起,直到IF被置位或外部事件撤消中断请求为止。IF位可禁止可屏蔽中断的这一特性可用来在程序代码的某一
7、特定区域(常称为程序的临界区)设置成禁止中断,以保证该区域内程序段的可靠执行。第7章 中 断 和 异 常 80X86系统中,可屏蔽中断源产生的中断请求信号,通常通过8259A可编程中断控制器进行优选权控制后,由8259A向CPU送中断请求信号INTR和中断标识码(中断矢量)。采用9个8259A芯片,可支持64个中断源,给每个中断源分配不同的中断矢量,并可对每个中断源分配和判断它们的中断优先级。第7章 中 断 和 异 常 7.2.2 非屏蔽中断非屏蔽中断 经由NMI信号线(边沿触发)请求的中断称为非屏蔽中断。它是不被IF禁止的中断。非屏蔽中断被响应时,其中断矢量号不由外部中断源提供,而是由系统固
8、定分配。80X86系统中,非屏蔽中断的矢量号为2,它的优先级别高于可屏蔽中断,但当正执行加载SS寄存器指令时产生NMI信号,则中断要等其后的指令执行完才能识别和响应。非屏蔽中断通常用来处理应急事件,如总线奇偶错、电源故障或电网掉电等。第7章 中 断 和 异 常 7.3 异异 常常 7.3.1 异常分类异常分类 产生异常后,系统根据引起异常的程序是否可被恢复这一原则,进一步又把异常分为故障(Fault)、陷阱(Trap)和中止(Abort)3 类。故障是引起该故障的程序可被恢复执行的异常,它也是在引起故障的指令执行之前就报告给系统的一种异常。对故障的检测,既可在引起故障的指令之前进行,也可在微处
9、理器恢复成故障指令执行之前的状态时进行。一旦故障被检测出,便在保护断点地址(指向引起故障的指令)后,将程序转入故障处理程序。故障处理程序执行完,故障也排除了,这样由IRET指令将程序返回有故障的程序时,引起故障的指令便得以正确执行。第7章 中 断 和 异 常 陷阱是在指令执行期间被检测到的,并在引起异常的指令执行之后向系统报告的一种异常。陷阱产生后,程序转向异常处理程序,这时,保存的断点地址指向引起陷阱的指令的下一条应该执行的指令。这里,下一条应该执行的指令不一定就是下一条指令。例如,若一个陷阱在一条转移类指令执行期间检测到,则保存在栈中的断点地址将指向要转移到的地址,而不是转移类指令之后的下
10、一条指令的地址。第7章 中 断 和 异 常 特别需要指出,软件中断指令INTn属于陷阱指令。该指令执行后使程序转入陷阱处理程序,断点地址指向下一条指令。中止是微处理器面临严重错误时产生的异常。例如,系统出现硬件错误或系统表中出现非法值或不一致的值时,便产生中止异常。引起中止的指令无法确定,产生中止时,正执行的程序不能被恢复。因而,产生中止异常后,系统需重建各种系统表格,或需重新启动操作系统。第7章 中 断 和 异 常 7.3.2 异常错误码异常错误码 图 7.3 异常错误码格式 选择器索引保留3116153210选择器索引153210 80286 错误码格式80386/80486 错误码格式域
11、值描述中断的程序引起异常由TI位决定表选择器用于GDIEXT=0=1外部事件引起异常选择器用于门描述符选择器用于LDIIDT=0=1TI=0=1TIIDTEXTTIIDTEXT第7章 中 断 和 异 常 错误码的格式类似于选择器格式,区别仅在于选择器中的RPL域在此被两个1位域替代了。其中位0定义为EXT域,EXT=1,表示错误由程序的外部事件(如硬件中断)引起;EXT=0,表示异常由程序引起。位1定义为IDT域,IDT=1,表明错误码索引域引出的描述符属于中断描述符中的门描述符;IDT=0,表明索引域的意义取决于TI域。位2定义为表索引域TI,TI=1,表明索引域指向局部描述符表LDT;TI
12、=0,表明索引域指向全局描述符表GDT。位3位15为索引域。索引域与TI组合成一个14位指针,指向与异常相关的表项。80386、80486产生页交换异常时,采用不同格式的错误码。第7章 中 断 和 异 常 7.3.3 处理器定义的异常处理器定义的异常 所谓处理器定义的异常是80X86处理器中保留自用的异常,共有16个。1.异常异常0 异常0定义为除法出错异常,是一种故障型异常。当微处理器执行除法指令时,若商太大使目的寄存器容纳不下,或是以零作除数,便产生该故障异常。异常0产生时,将除法指令(包括任何前缀)第一字节地址压入栈中,除数和被除数为除法指令执行前的值,并允许除法操作在故障处理程序执行完
13、后重新启动。除法出错不提供出错码。第7章 中 断 和 异 常 2.异常异常1 异常1定义为排错异常或称调试异常。排错异常有故障类的也有陷阱类的,其中的单步异常为陷阱。若TF=1,则微处理器处于单步方式。当一个调试异常产生时,微处理器设置调试状态寄存器DR6的相应位,以便反映异常的类型或引起异常的断点。位于0特权级的排错处理程序可以访问DR6。在一条指令中,可以检测不止一个排错异常并使DR6中同时有几个位置1。排错异常不提供出错码。第7章 中 断 和 异 常 3.异常异常3 异常3为断点中断,是一个采用单字节指令INT3的软件中断,微处理器将作为一个陷阱异常来处理。排错程序用INT3来支持程序断
14、点,并在转入断点处理程序时,压入栈中的CS及EIP值指向紧跟在INT3指令的一条指令。INT3陷阱不提供出错码。第7章 中 断 和 异 常 4.异常异常4 异常4定义为溢出陷阱。溢出陷阱由INTO指令通过矢量4提供一个条件陷阱。若EFLAGS 中的OF=1,则INTO指令产生陷阱;若OF=0,则不产生陷阱,继续执行INT0后边的指令。当溢出陷阱产生,转入溢出处理程序时,压入栈中的CS及EIP值指向INT0的下一条指令。溢出陷阱不提供出错码。第7章 中 断 和 异 常 5.异常异常5 异常5定义为边界检查故障。若传送给BOUND指令的操作数表明给定的索引指针要落到可能的数组边界以外时,便发生边界
15、检查故障。在转入故障处理程序时,压入栈中的CS及EIP值指向发生故障的BOOND指令。边界检查故障不提供出错码。第7章 中 断 和 异 常 6.异常异常6 异常6定义为无效操作码故障。从当前CS及EIP所指定的位置开始,若连续一个字节或多个字节所包含的内容不是80386(或80486等)指令系统中的任何一条指令,便发生无效操作码故障。无效操作码故障发生在试图执行该操作码时,而不是预取时。引起该故障的原因有3种:操作码字段的内容不是一个合法的指令代码;指令要求使用存储器操作数时,却使用了寄存器操作数;不能加锁的指令使用了LOCK前缀。第7章 中 断 和 异 常 7.异常异常7 异常7定义为协处理
16、器无效故障。80386、80486微处理器中,如果在一条ESC指令执行期间,控制寄存器CR0中的模拟位EM(Emulate)被置位,便会发生该故障;如果WAIT或ESC指令执行时,CR0中的监控处理器扩展位MP或任务转换位TS置位,也会产生异常7。协处理无效故障也不提供错误码。第7章 中 断 和 异 常 8.异常异常8 异常8定义为双重故障。双重故障属中止异常。当转入双重故障处理程序时,压入栈中的CS及EIP值不可能指向引起双重故障的指令,而且指令的重新启动不支持双重故障。双重故障出现在系统出现严重问题时,如段描述符表、页表或中断描述符表出现问题等。如果正通知给系统一个段或页故障时,又检测到一
17、个段故障;或者正通知给系统一个页故障时又检测到一个段或页故障,两种情况都会引起双重故障。然而,若正通知给系统一个段故障时又检测到一个页故障,这时通知给系统的是页故障而不是双重故障。如果正通知系统一个双重故障,又检测到一个段或页故障,则处理机暂停指令的执行,进入关机方式。这时好像执行了一条HLT指令,使微处理器空转,直到一个非屏蔽中断发生或微处理器重新启动为止。关机方式下,微处理器不响应INTR中断,双重故障不提供错误码。第7章 中 断 和 异 常 9.异常异常9 异常9定义为协处理器段越界异常,属于中止类异常,发生在浮点指令数超出段界限时。当转入异常处理程序时,压入栈中的CS及EIP指向被中止
18、的指令。然而,由于引起协处理器段越界指令不能被重新启动,即每次执行该指令总得到同样结果,故该异常是一种中止类异常。但是这种中止仅指正执行的程序的中止,而非系统的中止。协处理器段越界异常不提供错误码。80486中该异常未用,而用异常13取而代之。第7章 中 断 和 异 常 10.异常异常10 异常10定义为无效TSS故障。任务切换期间,如果新任务的TSS是一个非法的任务状态段(即发生除不存在异常以外的段异常时),便会产生无效TSS故障。该异常提供一个出错码,以便指明引起异常的段的选择子。出错码中的EXT位用来表示异常是否由不受程序控制的外部事件引起。例如,一个外部中断通过任务门进行任务切换时,可
19、能产生非法TSS故障。当无效TSS故障发生,转入故障处理程序时,压入栈中的CS及EIP值指向引起这一故障的指令;而当该故障作为任务切换的一部分发生时,则指向任务切换的第一条指令。第7章 中 断 和 异 常 11.异常异常11 异常11定义为段不存在异常,属故障类型。微处理器访问除SS以外的其它有效的段描述符时,若发现描述符中存在位P=0,便产生段不存在异常。该异常提供一个出错码,以便指明引起异常的段的选择子。如果该异常由外部事件引起,错误码中的EXT位置1;如果错误码涉及中断描述符表项,则IDT位置1。当段不存在故障发生,转入故障处理程序时,压入栈中的CS及EIP值指向引起这一故障的指令,或当
20、该故障作为任务切换的一部分发生时,指向任务切换的第一条指令。第7章 中 断 和 异 常 12.异常异常12 异常12定义为栈段故障。栈段故障产生的主要原因是,栈上溢或下溢,或在任务间或级别间变换时访问一个存在位P=0的栈段。任何明显或不明显的访问栈的操作都可能引起该故障。例如,PUSH、POP、ENTER、LEAVE及MOV SI,BP+6等指令执行时,均有可能产生栈段故障。栈段故障提供一个错误码压入故障处理程序的栈中。若故障由栈段不存在或级间调用时新栈的溢出引起,出错码将指明引起故障的选择器,并由故障处理程序检查出错码提供的选择子所对应的描述符的存在位来区分二者。若存在位P=1,则表明是新栈
21、溢出引起的故障;若存在位P=0,则表明是栈段不存在引起的故障。对除此之外的其它栈段故障源均给出错误码0。第7章 中 断 和 异 常 13.异常异常13 异常13定义为通用保护故障。它是一种没有预先分类的段异常,包含除已定义异常之外的所有异常。保护方式下产生的这种故障的情况举例如下:使用CS、DS、ES、FS、GS段寄存器时或是访问描述符时超出段的界限。采用DS、ES、FS、GS段寄存器访问内存时,段寄存器中含有空选择子。用系统段或一个可执行但不可读的段的描述符来加载DS、ES、FS或GS段寄存器。第7章 中 断 和 异 常 用一个只读、可执行段或系统段的描述符加载SS(但若失效选择子来自任务切
22、换时的TSS,则将产生异常10)。试图对只读代码段或数据段进行写操作,或对只执行段进行读操作,或对不可执行段进行执行操作。采用DS、ES、FS、GS段寄存器访问内存时,被访问内存数据段的特权级高于当前特权级。切换到正忙的任务。PG=1(页交换允许)和PE=0(保护禁止)时,加载CR0(仅对80386和80486)。超出处理器指令长度限制。第7章 中 断 和 异 常 14.异常异常14 异常14定义为页故障。对80386/80486微处理器来说,若从线性地址到物理地址的转换过程中,检测到错误,便产生页故障。当CR0中PG=1,允许分页时,如果需要地址变换的页目录或页表项中的存在位P=0,或当前任
23、务的特权级别不足以存取指定的页,或用不适当的访问类型访问一内存页,都会产生页故障。第7章 中 断 和 异 常 图 7.4 页交换失效错误码 未定义313U/S2R/W1P0域PR/WU/S描述失效由不存在页引起失效由页级别保护冲突引起失效由读引起失效由写引起失效发生在管理方式失效发生在用户方式值010101第7章 中 断 和 异 常 15.异常异常16 异常16定义为协处理器出错故障。当CR0中EM位=0(协处理器未被模拟),且协处理器发生了未被屏蔽的数字错误(如上溢或下溢)时,便会产生协处理器出错故障。把协处理器出错故障通知给系统,是在引起故障的浮点指令之后的下一条ESC协处理器指令或WAI
24、T指令执行时进行。协处理器出错故障发生,转入故障处理程序时,压入栈中的CS和EIP值指向引起错误的ESC或WAIT指令的第一字节。该故障不提供出错码,引起故障的指令的地址由协处理器保存。第7章 中 断 和 异 常 表表 7.1 异常一览表异常一览表 第7章 中 断 和 异 常 7.4 中断及异常的暂时屏蔽中断及异常的暂时屏蔽 中断及排错异常在某些条件下可被忽略或屏蔽。这时,被屏蔽的各种中断保持悬挂,而排错异常则被废弃。引起中断和排错异常忽略及屏蔽的条件如下:EFLAGS中的IF=0,屏蔽外部可屏蔽中断。IF=0时,执行STI指令,则在STI指令及下面一条指令执行期间,屏蔽外部可屏蔽中断。这是因
25、为一个过程执行完返回主程序前执行一条STI指令,允许可屏蔽中断发生,但希望在IRET指令执行完返回主程序后再响应中断。否则,若在IRET指令执行前响应中断,就会使过程不能返回,且过多占用堆栈。第7章 中 断 和 异 常 EFLAGS中的RF=1,屏蔽排错故障。系统正处理一个非屏蔽外部中断,则屏蔽任何新的非屏蔽中断。执行以SS为目的寄存器的MOV及POP指令时,将在该指令及下面一条指令(常是以ESP为目的寄存器的MOV及POP指令)执行期间屏蔽各种中断及排错异常。这样便可安全完整地更新一个栈指针。在指令前缀LOCK及被锁定的指令之间不允许中断。第7章 中 断 和 异 常 7.5 中断及异常的优先
展开阅读全文