说明
博客作为笔记备份,不定时更新 参考内容为《计算机组成原理(第3版)》唐朔飞 高等教育出版社;王道考研《计算机组成原理考研复习指导2023》 文中的例题摘自王道考研《计算机组成原理考研复习指导2023》,大多是我个人认为较为典型的题目以及错题的部分整理
中断系统
资料书P243 课本8.4节以及I/O中断的内容
1. 概述
1.1 引起中断的因素
人为设置的中断:例如“转管指令” 程序性事故:如定点溢出、浮点溢出、操作码无法识别、除法中出现“非法”等 硬件故障:电源掉电、插件接触不良、磁表面损坏等 I/O设备([[输入输出系统]]):I/O设备被启动后,一旦准备就绪,就向CPU发出中断请求 外部事件:例如用户通过键盘来中断现行程序
1.2 中断的分类
可屏蔽中断
通过可屏蔽中断请求线
I
N
T
R
INTR
I NTR 向CPU发出的中断请求 CPU可通过在中断控制器中设置相应的屏蔽字 来决定是否屏蔽 CPU根据该中断源是否被屏蔽来确定是否给予响应 不可屏蔽中断
通过不可屏蔽中断请求线
N
M
I
NMI
NM I 向CPU发出的中断请求 这类中断CPU不能禁止响应,CPU快速处理这类紧急事件 一般是非常紧急的硬件故障,如电源掉电
2. 中断请求标记和中断判优逻辑
2.1 中断请求标记
中断请求触发器
I
N
T
R
INTR
I NTR
作用:判断是哪个中断源提出请求(一个中断源一个INTR) 触发器可集中设置在CPU内,组成中断请求标记寄存器(每一位对应一个中断源);也可以分散到各个中断源中
2.2 中断判优逻辑
硬件排队
链式排队器
在接口电路内分别设置各个设备的排队器(课本图5.38) 每个接口电路中都设有一个非门和一个与非门 当有一个或多个中断源提出中断请求时,排队器输出端
I
N
T
P
i
INTP_i
I NT P i 只有一个高电平 集中设置在CPU内的排队器 软件排队
通过编写查询程序实现 程序按中断源的优先级从高到低依次查询各个中断源是否有中断请求
3. 中断服务程序入口地址的寻找
3.1 硬件向量法
利用硬件产生向量地址 ,根据向量地址找到中断服务程序的入口地址 由向量地址找中断服务程序入口地址的方法(2种)
在向量地址内存放一条无条件转移指令,CPU响应中断时,将向量地址送至PC 设置向量地址表,该表在存储器内,存储单元的地址是向量地址,存储单元中的内容是入口地址 硬件向量法寻找入口地址速度快,现代计算机普遍采用这种方法
3.2 软件查询法
用软件寻找中断服务程序的入口地址 当查找到某一中断源有中断请求时,安排转移指令直接指向此中断源的中断服务程序的入口地址
4. 中断响应
4.1 中断响应的条件
在中断系统设有允许中断触发器EINT ,它可被开中断指令置1,被关中断指令置0 EINT = 1时,CPU允许响应中断源的请求;反之CPU禁止响应中断
4.2 响应中断的时间
CPU总是在指令执行周期结束后 响应任何中断源的中断请求 之所以在指令执行周期后进入中断周期,是因为CPU在执行周期结束时统一向所有中断源发送中断查询信号 ,只有此时CPU才知道哪个中断源有请求 为了防止因某些指令执行时间很长,导致CPU在执行周期结束时查询中断请求过迟而出错,可在指令执行过程中设置若干个查询断点,CPU在每个查询断点均发出查中断询信号,以便发现有中断请求便可及时响应
4.3 中断隐指令
其操作由硬件 直接实现,不是指令系统中的一条真正的指令,实质上是硬件的一列自动操作 具体完成的操作
保护程序断点
将当前PC的内容(程序断点)保存到堆栈或存储器的指定单元中 寻找中断服务程序的入口地址
硬件向量法:在中断周期内,将向量地址送至PC,使CPU执行下一条无条件转移指令,转至中断服务程序的入口地址 软件查询法:将软件查询入口地址的程序首地址送至PC,CPU执行中断识别程序,找到入口地址 关中断
CPU进入中断周期说明CPU响应了某一中断源的请求,此时要关中断以禁止CPU再次响应新的中断请求 中断标记触发器INT为1时,置EINT为0,即关中断
5. 保护现场和恢复现场
保护现场
保护程序断点:由中断隐指令完成 保护CPU内部各个寄存器内容:可在中断服务程序 中由用户(或系统)用机器指令编程实现 恢复现场
在中断返回前将寄存器内容恢复到之前的状态,由中断服务程序完成 恢复现场前要关中断
6. 中断屏蔽技术
6.1 多重中断
多重中断(中断嵌套):CPU正在执行一个中断服务程序时,又有另一个中断源提出新的中断请求,CPU响应了这个新的中断请求,暂时停止正在运行的服务程序 单重中断:CPU对新的请求不予响应,等到执行完当前的中断服务程序后再响应 实现多重中断的条件
提前设置开中断 指令,即提前将EINT置1,使CPU允许响应中断请求 优先级高的中断源有权中断优先级低的中断源
6.2 屏蔽技术
屏蔽触发器与屏蔽字
每个中断请求触发器就有一个屏蔽触发器,将所有屏蔽触发器组合在一起,就组成了一个屏蔽寄存器 屏蔽寄存器中的内容称为屏蔽字,屏蔽字与中断源的优先级是一一对应的
屏蔽技术可以改变优先等级
响应优先级:CPU响应各中断请求源的优先次序,通常是硬件线路已经设置好的,不便于改动 处理优先级:CPU实际对各中断源请求的处理优先次序。若不采用屏蔽技术,响应的优先次序就是处理的优先次序 采用屏蔽技术后,可以改变CPU处理各中断源的优先等级,从而改变CPU执行程序的轨迹。在不改变CPU响应中断的次序下,通过改变屏蔽字可以改变CPU处理中断的次序 采用屏蔽技术后,在中断服务程序中需设置新的屏蔽字。在原先中断服务程序的基础上增加了置屏蔽字和恢复屏蔽字
6.3 多重中断的断点保护
中断系统对断点的保存都是在中断周期内,由中断隐指令实现的,对用户透明 断点可以保存在堆栈或指定的存储单元中
7. 中断和异常
7.1 异常的基本概念
由CPU内部 产生的意外事件被称为异常,也叫内中断 异常 是CPU执行一条指令时,由CPU在其内部 检测到的、与正在执行的指令相关 的同步事件 ;中断是一种典型的由外部设备触发的、与当前正在执行的指令无关的异步事件
7.2 异常的分类
异常是由CPU内部产生的意外事件,分为硬故障中断 和程序性异常 硬故障中断:是由硬连线出现异常引起的,例如存储器校验出错、总线错误等 程序性异常:也称为软件中断,是指在CPU内部因执行指令而引起的异常事件,例如整除0、溢出、断点、地址越界、缺页等 按异常发生的原因和返回方式分为:
故障
指在引起故障的指令启动后、执行结束前被检测到的异常事件 比如指令译码时,出现“非法操作码”;除数为0;发生缺页或缺段等 故障恢复后回到断点继续执行;无法恢复故障必须终止进程的执行 自陷
是预先安排好的一种“异常”事件,就像预先设定的“陷阱”一样 事先在程序中用一条特殊指令或通过某种方式设定特殊控制标志来人为设置一个陷阱,当执行到被设置了陷阱的指令时,CPU在执行完自陷指令后,自动根据不同陷阱类型进行相应的处理,然后返回到自陷指令的下一条指令执行 (若自陷指令为转移指令,则返回到转移目标指令执行) 例如:在x86机器中,用于程序调试“断点设置”和单步跟踪的功能就是通过陷阱机制实现的 终止
若在执行指令的过程中发生了使计算机无法继续执行的硬件故障,那么程序无法继续执行只能终止,此时调出中断服务程序来重启系统 这种异常不是由特定指令产生的,而是随机发生的 例如:控制器出错、存储器校验出错等 故障异常和自陷异常属于程序性异常(软件中断);终止异常和外中断属于硬件中断
7.3 异常 VS 中断
异常和中断本质上是一样的,但又有不同点:
区别项 异常 中断 与指令的关系 由特定指令在执行过程中产生 不和任何指令相关联,也不阻止任何指令的完成 与CPU的关系 异常的检测由CPU自身完成,不必通过外部的某个信号通知CPU CPU必须通过中断请求线获取中断源的信息,才能知道哪个设备发生了何种中断 断点 异常指令通常没有执行成功,异常处理后要重新执行,其断点是当前指令地址 中断的断点是下一条指令的地址
7.4 异常的响应
异常的响应过程和中断基本一样,但异常和中断源的识别方式不同,异常大多采用软件识别方式 ,而中断可以采用软件识别方式或硬件识别方式
8. 例题
(
2015
2015
2015 )内部异常(内中断)可分为故障(fault)、陷阱(trap)和终止(abort)三类,下列有关内部异常的叙述中,错误的是() A. 内部异常的产生与当前执行的指令相关 B. 内部异常的检测由CPU内部逻辑实现 C. 内部异常的响应发生在指令执行过程中 D. 内部异常处理后返回到发生异常的指令继续执行 解答 :内部异常的检测由CPU内部逻辑实现,且其响应发生在指令执行过程中。但是内部异常中的终止,在其处理结束后,不会返回,程序直接终止。选D 错误原因 :错选B
(
2016
2016
2016 )异常是指令执行过程中在处理器内部发生的特殊事件,中断是来自处理器外部的请求事件,下列关于中断或异常情况的叙述中,错误的是() A. “访存时缺页”属于中断 B. “整数除以0”属于异常 C. “DMA传送结束”属于中断 D. “存储保护错”属于异常 解答 :
首先需明确,内中断即异常的信号来源是CPU内部;外部中断的信号来源是CPU外部 需要特别强调的是CPU指令流相关一定是内中断,也即所谓的异常 。而非CPU指令流导致的才是外中断 ,比如时钟中断,DMA中断等才是真正的外中断。访存时缺页,我们听过太多的缺页中断,缺页异常,后来根本分不清谁是谁了,只需要抓住:缺页是CPU访存指令时才有的。是CPU相关。于是A项错误。 整数除0,当然是CPU干的。存储保护错,也是内存访问相关,属于异常,也叫内中断。来自:(转载)中断和异常的再总结 - 蔡军帅 - 博客园 (cnblogs.com) 错误原因 :错选D
(
2021
2021
2021 )异常事件在当前指令执行过程中进行检测,中断请求则在当前指令执行后进行检测,下列事件中,相应处理程序执行后,必须回到当前指令重新执行的是() A. 系统调用 B. 页缺失 C. DMA传送结束 D. 打印机缺纸 解答 :外部中断都是在一条指令执行完成后才被检测并处理的。DMA请求只请求总线的使用权,不影响当前指令的执行,不会导致被中断指令的重新执行。缺页中断发生在取指或间址等指令执行过程中,并会阻塞整个指令,当缺页中断发生后,必须回到这条指令重新执行,以便重新访存。选B 错误原因 :错选A
更新文档