中断判优
( b; d. f% v3 Z7 _ 中断判优是指在同时出现的若干个中断请求中找出级别最高的,以便进行相应的中断服务。这个问题在上面(中断源的识别)已涉及到,这里再集中讨论一下。中断判优可用软件方法,也可用硬件方法。
; q; j; v. \" G$ a0 q 1.软件判优
% u- F# t( B' B A1 S$ G 当采用查询法识别中断源时,已将判优机制纳入到其中。最先被查寻到的中断源是级别最高的,然后优先级依次降低。这在上面已经介绍。当中断源较多时,软件判优要占用CPU较多的时间。
% x/ G! b) B- @% C9 p6 ~ 2.硬件判优
, c+ ^" m) b6 f 硬件判优包括两种方法:串行判优和并行判优。
, Z: `3 T/ y/ y- C+ s (1)串行判优
+ s- n1 [. r. g) e: l9 R0 Q+ C 串行判优使用链式优先权排队电路,其典型结构如图5.5所示。图中的多个负与门组成一个传送
! K/ j7 O) s1 x( x8 A
6 z8 O) f, [; D1 ~信号的链条。每一个链节连接一个中断源。在中断响应时,来自CPU的中断响应信号
' E2 j- g$ B: l
$ e' l8 ~2 ^; Q1 M+ S$ J8 |- d' K
依次往下传。如果所经过的链节对应的中断源没有提请求,例如,中断源A没有提请求,它的中断请求触发器输出为低电平,门A2(负与门)是开放的,则INTA可以通过.如果有一级中断源提出中断请求,则
/ u( f" n" k! u7 `
5 W: J* |2 E+ a: S
就不能再继续传下去。例如,中断源B提出请求,它的中断请求触发器输出为高电平,一方面封锁了链节(门B2输出固定为高电平),不能再往下传,另一方面使门B1开放,
3 e3 ^4 ^3 B9 d2 d/ n4 a, k
" C; ?& z3 t% r% ?: y- z. W9 @# D的低电平通过B1,使得相应的三态门打开,将该中断源对应的中断识别码送上数据总线。
, m9 u1 @& g6 M& ^' Y9 I1 J4 A! M7 D- Z$ T% f
0 L# F/ p: ~7 ~, M; x
5 `6 o% O/ \$ k' |$ k" i& u* q- a8 }, h: {" ]; I
显然,处于链头的中断源具有最高的优先级。其他的中断源,按向链尾的方向优先级逐次降低。该电路的特点是:比较简单,但由于门电路存在延迟,链条的长度(中断源个数)将受限制。
0 j( C, K4 L0 d4 x+ c (2)并行判优
* i! y. ]- a# @9 j! {
并行判优采用图5.6所示的优先权中断控制器PIC(Priority Interrupt Controller)。
; G z4 ~* a7 |' N+ f
2 E L9 f& y& P# ~9 I
) J: m( [5 F3 d5 L2 p7 ]: PPIC能从当前的所有中断请求中找出级别最高的,产生它所对应的中断标识码。PIC的核心部分是中断判优电路,如图5.7所示是实现8级判优的PIC的判优电路。它由8线一3线优先权编码器、优先权寄存器、3位二进制数比较器和门电路组成。8个中断请求信号(序号小的级别高)接在编码器的输入端。当一个或多个请求信号有效时,该电路将选出优先权最高的中断源,产生相应的编码。例如,设中断请求l和中断请求2同时有效,因中断请求1级别高,所以编码器将输出中断请求l所对应的编码001。接下来进行的有两种可能:
% D# L$ ?* m$ H0 Q. P" f: r2 @; M; c7 U6 p3 X
9 R/ e* @9 @4 m/ o+ |
7 Z5 N8 E4 ]* g# r) {9 h
) m/ F" Y+ o! l' v5 O: a; n
如果当前没有正在服务的中断,则优先权寄存器的“比较失效”输出将有效(为高电平),它打开与门2,使中断请求信号可通过,从而向CPU提出中断请求。
8 w3 D9 M6 v7 w& A1 p 如果当前有正在服务的中断,则优先权寄存器的“比较失效”输出将无效(为低电平),与门2被封锁。此时比较器的输出将起作用。参加比较的一个数是编码器的输出,即当前提出请求且级别最高的中断编码;另一个数是优先权寄存器的输出,它是当前正在服务的中断的编码。二者比较有两种可能,仍接着上面的假设说明:
- E" h7 E: N9 @2 N. L2 L* P 如果当前正在服务是中断请求0,则优先权寄存器的输出为000,比较器的“A<B’,端输出低电乎无效信号(因为001>000),封锁与门1。这样,向CPU传送中断请求的通道全部被封死。
' M3 t% [, s2 ?5 C 如果当前正在服务是中断请求3,则优先权寄存器的输出为011,比较器的“A<B”端输出高电平有效信号(因为001<011),它打开与门1,使中断请求信号得以通过,从而向CPU提出中断请求。
: H9 b: e- H1 S/ A1 I4 ~* Y# l 下面,对该电路的功能做一个小结:
: R) O0 h) e! U9 k* x+ ~
·该电路能从多个中断请求中找出级别最高的,并产生相应的编码。
9 B8 p8 R$ K, P1 D& v: u: S
·如果当前没有正在服务的中断或者虽有正在服务的中断,但新的请求比它的级别高,则该电路向CPU提出中断请求。CPU在中断响应时,可获取该电路产生的中断编码,从而直接转入相应的中断服务程序。
' N: H7 h+ x" o. j6 f1 C0 A+ D ·如果新的中断请求比正在服务的中断级别低,则不向CPU提中断请求。
2 ^* `8 g& M: S; X) x* _* [: ] 为了增加对中断的管理功能,优先权中断控制器PIC中除了上述的并行判优电路外,一般还设有中断请求寄存器(寄存或表达外部的中断请求)、中断屏蔽寄存器和中断屏蔽逻辑。PIC早已集成化,典型的:PIC芯片是:Intel 8259A。<B”端输出高电平有效信号(因为001<011),它打开与门1,使中断请求信号得以通过,从而向CPU 提出中断请求。 下面,对该电路的功能做一个小结: ·该电路能从多个中断请求中找出级别最高的,并产生相应的编码。 ·如果当前没有正在服务的中断或者虽有正在服务的中断,但新的请求比它的级别高,则该电路向CPU提出中断请求。CPU在中断响应时,可获取该电路产生的中断编码,从而直接转入相应的中断服务程序。 ·如果新的中断请求比正在服务的中断级别低,则不向CPU提中断请求。 为了增加对中断的管理功能,优先权中断控制器PIC中除了上述的并行判优电路外,一般还设有中断请求寄存器(寄存或表达外部的中断请求)、中断屏蔽寄存器和中断屏蔽逻辑。 PIC早已集成化,典型的:PIC芯片是:Intel 8259A。