第6章-控制器-中断系统 Interrupt
Posted 可能自洽
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第6章-控制器-中断系统 Interrupt相关的知识,希望对你有一定的参考价值。
一、概述
• 中断概念是50年代中期提出的,在这以前,计算机虽然能自动运行程序,但有两个问题不能很好解决:
- 不能自动处理异常情况或特殊请求,如电源掉电等。
- CPU与外设串行工作,CPU得不到充分利用。CPU是电子设备,基本操作时间为ns级,而外设大多为机电设备基本操作时间为ms,s级,CPU等待外设工作,会造成时间上的很大浪费,使CPU的效率大大降低,为改变这种状况,充分利用机器资源,提出了中断。
提出原因
1.处理异常情况或特殊请求
2.提高CPU的效率
3.实时控制需要
二、基本概念
1. 定义
• 中断指计算机在运行过程中,遇到一些异常情况或特殊请求,CPU能暂停正在执行的程序,转去为外来请求服务,并在服务结束之后,自动返回原程序的过程或功能。
• 从中断定义看,中断过程很像“转子”过程,二者有无区别?有何区别?
2. 中断与“转子”的区别
①“转子”是事先安排的,而中断多是随机的。
•“转子”是程序员编程是事先安排好的,而中断大多是由一些特殊情况引起的,这些情况是随机的。
• 只有一种中断-自愿中断是人为设置的,故用“多”字。
② 主-子程序在功能上一般有联系,而被中断的程序和中断服务程序可以没有任何联系。
③中断过程较“转子”过程复杂
• 中断功能多由硬件实现,不可能由一条或几条指令简单的解决,其过程远比“转子”复杂。
三、中断类型(按照不同的方式,对中断做不同的分类)
中断原因
强迫中断和自愿中断都属于程序中断
处理方式
程序中断:执行中断服务程序
简单中断:DMA
中断源
可屏蔽中断:CPU可以屏蔽掉中断请求,不响应。
不可屏蔽中断:CPU必须响应(电源掉电)
服务程序入口地址形成方式
向量中断:外设在提出中断请求时,通过硬件主动向主机提供服务程序的入口地址
非向量中断:不能直接提供服务程序入口地址,需用软件查询措施最后找到入口地址
四、 中断过程
1. 中断请求
中断请求信号的提出
• CPU是在现行指令周期结束后,才查询有无中断请求。
• 每个中断源,设置一个中断请求触发器IQ。
• 为控制灵活,每个中断源设置一个中断屏蔽触发器IM
2. 排队判优
• 按中断源的重要性,给每个中断源确定一个优先级,按优先级大小,给每个中断源排队,CPU响应时,先响应优先级高的中断请求。故CPU 在响应中断前,须先对中断源进行排队判优。
• 对中断源排队判优,可由硬件实现,亦可由软件实现。
3. 中断响应
中断响应:指CPU 从发现中断请求,中止现行程序到调出中断处理程序这一过程,有的说是CPU从一种程序状态到另一种程序状态的转换过程。
⑴CPU响应中断需满足的条件:
① IQ为“1“态,IM为“0”态;
② 开中断(即中断允许触发器为“1”态)
③ 一条指令执行完后(指令周期结束后)
⑵中断响应过程
要完成中断响应,需做三件事:关中断、保护旧现场、建立新现场
由中断隐指令完成(非指令系统中的指令,由硬件实现)
① 关中断
• CPU内部有一个“中断允许触发器”此触发器置“1”表示开中断-CPU可以响应中断,置“0”表示关中断—CPU不能响应中断CPU响应中断后,一开始就“关中断”,为什么?
• CPU在运行一些重要程序时,或在保护现场、恢复现场时,一般不希望外界干扰,于是就关掉中断。CPU响应中断后,要保护旧现场,因此,在保护现场前需先关中断。
注意:能用“关中断”指令来屏蔽的,只是可屏蔽中断,还有一类中断叫非屏蔽中断,象电源掉电、机器故障等,就属于这类中断,这类中断一旦发生,CPU必须马上响应,因此,不能用“关中断”来屏蔽。
问:CPU响应中断后就“关中断”,外来更高级别的中断怎么办?中断处理时再响应
② 保护旧现场
(PC中)程序的断点地址
(PSW中)断点处有关状态信息
断点地址:程序间断处下一条指令的地址
③ 建立新现场
即把获得优先处理权的中断服务程序运行所需的环境建立起来
中断服务程序入口地址→PC
中断服务程序有关状态标志→状态字寄存器PSW
中断服务程序入口地址的寻找:
• 硬件向量法(向量中断)
中断向量:服务程序的入口地址,服务程序的处理机状态字
向量地址:存放中断向量的地址,中断服务程序入口地址的地址
向量中断:利用硬件线路形成中断源的向量地址的方法
• 软件查询法
软件编程按中断源的优先级查询
• 二者的比较:
扩展:
向量中断------由硬件提供中断服务程序入口地址
非向量中断------由软件提供中断服务程序入口地址
向量中断:CPU读取位于0x18处的IRQ中断指令时,系统自动读取对应于中断源确定地址上的指令取代0x18处的指令,通过跳转指令,系统直接跳转到对应地址函数中。
例如 ADC 中断的向量地址为0xC0,则在0xC0处放如下代码:
ldr PC,=HandlerADC ;
ADC中断产生时,系统会自动跳转到HandlerADC函数中处理中断
非向量中断:当系统产生中断时,系统将INTPND寄存器中对应标志位置位,然后跳转到位于0x18处的统一中断函数中;该函数通过读取INTPND寄存器中对应标志位来判断中断源,并根据优先级关系再跳到对应中断源的处理代码中处理中断。
4. 中断处理
• 运行中断服务程序,一般做以下几件事情:
① 开中断:在保护旧现场前,CPU关了中断,旧现场已保护完,新现场已建立完,现在要运行服务程序,就要开中断,以便在运行服务程序时,能响应更高级别的中断请求(多级中断)
② 运行中断服务程序
③ 关中断
④ 恢复现场:将被中断程序的断点,状态字恢复,以备返回时用。
5. 中断返回
• 中断服务程序的最后一条指令,一般是一条中断返回指令,以便返回到被中断的程序继续运行。
例题
外部中断包括不可屏蔽中断(NMI)和可屏蔽中断,下列关于外部中断的叙述中错误的是:
A、CPU处于关中断状态时也能响应NMI请求;
B、一旦可屏蔽中断请求信号有效,CPU将立即响应;
C、不可屏蔽中断的优先级比可屏蔽中断的优先级高;
D、可通过中断屏蔽字改变可屏蔽中断的处理优先级。
答案:B
五、多重中断(中断嵌套)
1.实现多重中断的条件
①CPU响应中断后,再“开中断”,以备响应更高级别的中断请求
②只有优先级高的中断源才能中断优先级低的
• 要保证这一点,须使优先级别低的中断请求传不给CPU,只有优先级别高的才能传过来——屏蔽技术。
2.屏蔽技术
• 前面讲过,每一个中断源都有一个屏蔽触发器,每个屏蔽触发器合在一起,可以组成一个屏蔽寄存器,屏蔽寄存器的内容,叫一个屏蔽字。通过屏蔽字,可以看出中断源的处理优先级。
如:4个中断源,要求其中断处理顺序为1→2→3→4,屏蔽字如何设置?若要求其处理顺序为1→3→4→2,屏蔽字又如何设置?
3. 中断优先级的动态分配
优先级:
响应优先级:优先响应哪个中断请求(硬件排队)
处理优先级:优先执行哪个服务程序
• 硬件线路固定,响应优先级固定,要改变,只有改变硬件线路,而处理优先级可以通过屏蔽技术来改变,处理顺序可与响应次序一致,也可不一致,故屏蔽字提供一种手段,它能动态调度中断处理优先级的次序,使中断系统具有灵活性。
如:响应优先级:1→2→3→4 处理优先级:3→1→2→4CPU为主程序服务时,同时来了2、3的请求
例1:中断响应顺序1→2→3→4,CPU在为1服务时,来了2的请求,为2服务时,来了3的请求,依此类推。处理优先次序为:1→3→4→2,如何处理?
例2:机器共有4级中断,中断响应次序为1→2→3→4,处理次序为1→3→4→2,CPU在为中断1服务时,同时来了2、4的请求,在处理4未完时,又来了3的请求,画出中断过程示意图。
例3:机器共有4级中断,中断响应次序为1→2→3→4,若处理顺序为1→4→2→3,CPU在为1服务时,同时来了2、3、4的请求,画出中断过程示意图。
以上是关于第6章-控制器-中断系统 Interrupt的主要内容,如果未能解决你的问题,请参考以下文章
第6章-控制器-时序系统(主要用来产生各种定时信号,以协调各部件工作)