一、处理流程
多重中断就是中断的时候还能响应中断
因为本质上中断服务程序也是一个程序而已
多增加了两个步骤,也即保护现场后的开中断和修改屏蔽字,以及执行中断服务后的关中断
屏蔽字是为了解决中断是否被中断中断的优先级问题
单重中断 | 多重中断 | ||
---|---|---|---|
中断隐指令 | 关中断 | 关中断 | |
保存断点(PC) | 保存断点(PC) | ||
送中断向量 | 送中断向量 | ||
中断服务程序 | 保护现场 | 保护现场和屏蔽字 | |
- | 开中断 | 为了让中断可以被中断 | |
执行中断服务程序 | 执行中断服务程序 | ||
- | 关中断 | 为了保证上一个中断的现场被恢复(通用寄存器就那一份) | |
恢复现场 | 恢复现场和屏蔽字 | ||
开中断 | 开中断 | ||
中断返回 | 中断返回 |
二、 中断屏蔽字技术
中断屏蔽技术主要用于多重中断,CPU要具备多重中断的功能,须满足下列条件。
(1).多重中断条件
①在中断服务程序中提前设置开中断指令。
②优先级别高的中断源有权中断优先级别低的中断源。每个中断源都有一个屏蔽触发器,1表示屏蔽该中断源的请求,0表示可以正常申请,所有屏蔽触发器组合在一起,便构成一个屏蔽字寄存器,屏蔽字寄存器的内容称为屏蔽字。
(2).屏蔽字设置的规律
1.一般用'1'表示屏蔽,’0'表示正常申请。
2.每个中断源对应一个屏蔽字(在处理该中断源的中断服务程序时,屏蔽寄存器中的内容为该中断源对应的屏蔽字)。
3.屏蔽字中'1'越多,优先级越高。每个屏蔽字中至少有一个'1'(至少要能屏蔽自身的中断)
三、屏蔽字的编写和中断轨迹
设某机有4个中断源A、B、C、D,其硬件排队优先次序为A>B>C>D,现要求将中断处理次序改为D>A>C>B。
1)写出每个中断源对应的屏蔽字。
中断源 | 屏蔽字 | |||
A | B | C | D | |
A | 1 | 1 | 1 | 0 |
B | 0 | 1 | 0 | 0 |
C | 0 | 1 | 1 | 0 |
D | 1 | 1 | 1 | 1 |
2)按下图所示的时间轴给出的4个中断源的请求时刻,画出CPU执行程序的轨迹。设每个中断源的中断服务程序时间均为20us。