CPU响应中断的条件
7 N8 K1 ?1 b, ?! q4 X 1.中断源如何向CPU表达中断请求
+ a" P" a- t& t
一般是设置中断请求触发器,在需要CPU服务时,将中断请求触发器置位,其1端或0端输出的跳变作为中断请求信号。显然中断源可以随时提出中断请求。
8 @) x8 ~ }+ i+ Y; X 2.中断请求何种情况下才可能得到CPU响应
; D5 \% M. |1 g1 v
一个中断请求在同时具备下列两个条件时,才有可能得到CPU响应:
- H% X# _9 v) { ①该中断源未被屏蔽;
. Z3 x$ _; A x/ g
②该中断请求在当前所有中断请求中级别最高。
$ [, a5 N3 O1 ^& _/ V0 g+ \* A* q
3.CPU何时响应中断
. i7 K! A8 D1 M" d2 f0 h: W3 }6 w
CPU在同时满足下列两个条件时,响应中断:
2 b2 u& a3 |( t& E7 H0 J
①IF=1(对非屏蔽中断,没有此项要求);
/ m3 n+ g) O2 ^0 h
②现行指令执行完。
: G) V, ?0 _8 C8 P1 H# V# i CPU在每一个指令周期的最后一个总线周期的最后一个时钟周期的开始采样中断请求输入线,若有中断请求,则下一步不进入取指令周期,而进入中断响应周期,如图5.1所示。对于8086系列CPU,中断响应周期为两个。
/ O3 e8 O- n2 u: {
% N( o" L& d( A; M" g
, i5 {! h8 J3 u9 y9 p G) v( y
u% Y( ]+ G2 C/ B4 Y+ i3 A& p5 u
' u* A2 D7 \$ w. e, U# A 0 \! g# c1 S0 H- H; W3 k
之所以把一条指令执行完作为响应中断的条件,是因为中断响应周期以及中断服务程序要占用CPU资源。如果在执行一条指令的中间响应中断,则指令的当前状态既不能保存也无法加以恢复。与此相对比,DMA操作是在DMA控制器的作用下进行的,不占用CPU资源,所以在一条指令执行中间、当前总线周期结束即可进入DMA周期。