中断专题

一.程序查询方式

中断专题_第1张图片

二.程序中断方式

中断处理过程

中断专题_第2张图片

中断处理过程:

----以下由中断隐指令完成---

  1. 关中断。在保护现场的过程中,CPU不应相应更高级中断源的中断请求。
  2. 保存断点。断点(PC)能使正确返回到原来的程序。
  3. 引出中断服务程序。即取出中断服务程序的入口地址送入PC,分为硬件/软件查询法。

【硬件方法】硬件产生中断类型号(能指出中断向量地址),CPU从数据总线上读取这个中断类型号,再由中断向量地址找到中断向量中断服务程序的入口地址(该坨向量在中断向量表中)

【类比C语言:中断向量地址 即 中断服务程序入口地址的地址】

---以下进入中断服务程序---

  1. 保存现场和屏蔽字。现场信息指程序状态字、中断屏蔽寄存器和CPU中某些寄存器内容
  2. 开中断。允许更高级中断请求得到相应,实现中断嵌套。
  3. 执行中断服务程序。这是中断请求的目的。(由CPU完成该程序,实现数据的传输)
  4. 关中断。保证在恢复现场和屏蔽字时不被中断。
  5. 恢复现场和屏蔽字
  6. 开中断、中断返回。返回到原程序端点处继续执行原程序。

三.DMA方式

错题集:

1.中断事件

能引起外部中断的事情是 (A) A.键盘输入 B 除数为0  C浮点运算下溢  D 访存缺页

【解析】外部中断是CPU执行指令以外的事件,主要来源外设请求,A符合。

B除数为0引起内中断(也叫异常),但是浮点运算下溢是指精度不够,无法表示一些非常接近0的数字,而大部分情况中我们把一个非常接近0的数字直接看做0是可以的,无逻辑错误;注意和上溢的区别(上溢是现有的已经不能表示出想要表示的数字了),有逻辑错误。

PS:一般叫缺页中断(习惯),其实是“缺页异常”【内中断为异常,外中断为中断】。

中断专题_第3张图片如这里的3(011)加1变成了100(-4)

中断专题_第4张图片

2.中断执行顺序

中断专题_第5张图片

审题:单级中断、中断服务程序

【解析】单级中断中断服务程序中没有关中断,BC错误,D错在保存端点是在中断隐指令中完成(硬件)。

注意单级中断比多级中断少了个中断服务程序中的开中断:

  单重中断 多重中断
中断隐指令 关中断 关中断
保存断点(PC) 保存断点(PC)
送中断向量 送中断向量
中断服务程序 保护现场 保护现场和屏蔽字(屏蔽字即优先级的信息)
- 开中断
执行中断服务程序 执行中断服务程序
恢复现场 关中断
开中断 恢复现场和屏蔽字(此处恢复前要关中断,因为恢复的过程中如果被中断,整体的数字逻辑就会被打乱)
- 开中断
中断返回 中断返回

3.屏蔽字

屏蔽自己和低优先级中断源

4.中断和DMA的区别

中断方式

CPU与外设并行工作,传送与主程序串行工作。

程序中断的【中断隐指令】三个步骤记住:关中断、保存断点、中断服务程序寻址。(关中断是通过将允许中断触发器置为0)

外部设备先准备好数据后,发送【中断请求】给CPU,然后CPU再停下手头工作(是在指令的执行周期后进行请求的响应。顺便复习下,指令的四个周期是:取指、间址、执行和中断周期),在中断服务程序中完成一次数据传输——字节单位的data(如CPU取出主存中的数据(取到CPU自己的寄存器中),直接交给I/O端口)。

中断处理次序:利用中断屏蔽字,进行中断的升级,改变多个中断服务程序执行完的次序;

中断响应次序是由硬件排队电路决定的。

内中断是不可被屏蔽的,注意该说法是正确的【CPU只有在处于中断允许状态时,才能响应外部设备的中断请求】

中断专题_第6张图片

DMA方式

CPU与外设并行工作,传送与主程序并行工作。

DMA的请求包括2个部分(I/O设备->DMA控制器->CPU)。而请求的相应可以在每个机器周期结束时(在取指、间址、执行周期后均可以)。注意DMA中途是不需程序的切换的,所以不需要像程序中断那样进行保护、恢复现场(注意即使是周期挪用也不会改变CPU的现场)。数据的传送后的处理中是要用中断服务程序的。

DMA虽然牛逼但是只能传输批量(块)数据,而中断能处理异常事件,如鼠标键盘等实时外设就要用中断I/O,毕竟DMA方式仅适合高速设备(其实指每秒提出中断申请的次数多的设备)。

DMA传送方式注意折中类型的【周期窃取】,其实质是“CPU不在访存时,I/O设备便占用”。

5.接口端口题

在采用中断I/O方式控制打印输出中,CPU和打印控制接口中之间交换的信息不可能是【主存地址】

A 打印字符  B 主存地址   C设备状态  D 控制命令

【解析】CPU取出主存中的数据(打印字符)直接传送到打印机I/O端口中,即不需要主存地址。

变式:如果改为DMA,CPU和该接口交换的信息则是“主存地址(CPU要告诉DMA去哪里取操作数)”和“数据个数”。

【拓展】控制线和地址线都是单向传输的(从CPU传送给I/O接口),而I/O接口中的命令字、状态字和中断类型号均是由I/O接口发送CPU的,故只能通过I/O总线传输。

6.CPU工作time rate

题目:磁盘传输数据以32位的字为单位,传输速率为1MB/s,CPU的时钟周期为50MHz,采用DMA方式,假定DMA的启动需要1000个时钟周期,DMA完成时后处理需要500个时钟周期,若平均传输的数据长度为4KB,问磁盘平均工作时处理器将用多少时间比率进行输入/输出操作?(忽略DMA申请总线的影响)

【解析】第一步:求出1s内需要DMA中断的次数:n=1MB/4KB=K/4 次DMA /s

注意上面这步不要除错了,虽然分子是一个“传输速率”

第二步:n×1500 /50M=0.75%(这里的分母是时钟周期,即1s内能“干”多少次)

【拓展】如果题目中说了“周期窃取”则要加上DMA抢占CPU导致CPU等待主存的时间。另外如果是中断方式注意,每传输一个字便进行一次中断处理。

注意:有时题目问的是外设I/O占整个CPU的时间比例。

7.屏蔽字大题

【题目】已知4个中断源的中断处理次序分别为3,1,4,2;而硬件排队优先次序按1->2->3->4降序排列,若4个中断源同时有中断请求,画出CPU执行程序的轨迹

中断专题_第7张图片

【注意】虽然排队优先次序中1是排在最前面的,但是由于1程序中的屏蔽字为1101,开中断后转向了3程序

总结:中断响应优先级是由硬件排队线路或中断查询程序的顺序决定的,不可以改变;而中断处理优先级可以由中断屏蔽字来改变,反应的是正在处理的中断是否比新发生的中断的处理优先级低(“屏蔽位”为0,对新中断开放),若是则中止正在处理的中断,转去新的中断,处理完后再回到刚才被中止的中断继续执行。

8.

你可能感兴趣的:(计算机组成原理)