当前位置:首页 期刊杂志

中断屏蔽技术应用及实例解析

时间:2024-05-04

赵琳娜

摘要:中断屏蔽技术是计算机系统中解决多重中断的一项重要技术,通过该技术可以灵活处理在某中断源服务中,响应新的中断源请求的优先级次序问题,同时通过计算机系统中不同层级的屏蔽技术可以实现主机对外设更为有效的控制。该文通过实例对中断屏蔽技术的应用进行详细分析,为程序设计人员编写中断服务程序提供帮助。

关键词:多重中断;中断服务优先级;中断屏蔽;中断屏蔽字

中图分类号:TP312   文献识别码:A

文章编号:1009-3044(2022)02-0107-02

1 中断屏蔽技术

中断屏蔽技术主要用于处理多重中断[1-2]。所谓多重中断又称为中断嵌套,是指CPU在执行某个中断服务程序时,当另一中断源提出了新的中断请求时,CPU暂停正在运行的中断服务程序,响应新的中断请求,转去执行新的中断服务程序的过程[1-3],即在一个中断服务程序执行中嵌套执行了另一个中断服务程序。这种中断嵌套一般应满足两个条件,其一,CPU在执行被嵌套的中断服务程序时处于开中断的状态[4-5],即CPU响应外部可屏蔽中断请求的中断允许位在中断服务程序中通过开中断指令置为1,允许CPU响应外部可屏蔽中断,在此我们将其称之为一级屏蔽层;其二,欲中断原中断服务程序的新的中断源优先级别应高于正在执行的中断服务程序的中断源[5-6]。这一嵌套条件使得在已设置好优先级别的多级中断系统中,CPU对外部事件可以按照事件的轻重缓急有次序地进行处理,由于此条件所需设置的优先级别是在CPU之外的中断接口中实现的,在此我们将其称之为二级屏蔽层。

在二级屏蔽层中,为提升CPU对外设的响应速度,一般中断系统的优先级别采用硬件链式排队电路,外设一旦确定了在排队电路中的位置次序,优先权的响应级别不能够改变[4],这样就会造成优先级别高的中断源持续占据CPU服务权,其他低级别的中断源难以得到有效服务的极端情况,为此可以通过中断屏蔽技术对中断源的服务级别进行临时重置,从而实现低级别中断源得到优先中断服务的可能。对中断源服务优先级别的重置可以通过在中断服务程序中设置中断屏蔽字实现,例如某中断系统的外部可屏蔽中断源共8个,按照降序优先级别排序(中断源1>中断源2>...中断源8),若在中断源1的中断服务程序中设置中断屏蔽字10000000B,该屏蔽字的设置用于控制对外部中断源进行管理的中断控制器,令中断控制器的中断屏蔽寄存器对外部中断源实现对中断源1屏蔽新中断,其他中断源均允许中断的控制方式,即在CPU为中断源1执行中断服务期间对中断源1以外的任何中断源均处于允许嵌套的状态,相当于通过屏蔽字的设置,临时改变了服务优先级别,将中断源1的服务优先级别降为最低。在此屏蔽字设置后,若在中断源1服务时,比其响应优先级别低的中断源3提出中断请求,且CPU处于开中断状态,则CPU将暂停中断源1的服务程序,而转去执行中断源3的服务程序,从而实现低级别中断嵌套高级别中断的过程。

2 利用屏蔽技术管理外部中断源及实例分析

中断屏蔽技术除在多重中断中用以实现对嵌套的灵活处理外,利用该技术还可以实现对外部中断源(外部设备)的管理控制,使外设与CPU的数据交互更为有效。

在此以86系列微机系统为例,举实例分析说明。若86系列微机系统需要每隔3秒采样一次外部设备的输入信息并进行关键值判断,采样到该关键值信息时,停止采样,否则按上述周期循环采样,其中3秒的定时由外部定时器完成。在此应用实例中,涉及两个外设,一个为输入信息的设备,一个为实现定时的设备,这两个设备中,定时外设为可向CPU发出中断请求的中断源(每隔3秒定时时间到,向CPU发出请求,要求CPU做对输入外设采样数据的服务)。

分析上面实例可以发现,在此定时器为循环工作的中断源(每隔3秒提出一次服务请求),若想令其在采样到关键信息后提出的周期性采样请求不再被CPU响应,可以实现的方法大致有两种。其一,在一级屏蔽层进行对该中断源的屏蔽。在中断服务程序返回主程序前执行CLI指令实现(关闭CPU的中断允许标志位IF),即CPU屏蔽了所有的外部中断源,包括外部定时器的中断服务请求,但是在此这种方法不可能达到屏蔽中断源的操作要求,因为每个中断服务程序的最后一条结束指令均为IRET,该指令在恢复主程序断点地址的同时,也恢复原主程序中断时的各项标志位,而主程序中断时的中断允许标志位IF一定是1的设置值(否则不能响应定时器的中断请求),因此,即使在中断服务程序中编制CLI指令,暂时使得IF=0,屏蔽了各中断源的中断请求,但随着最后一条IRET指令的执行,返回到主程序后,对定时器中断的请求又被开放了响应权,因此一级中断层的屏蔽技术无法实现对定时器请求的屏蔽处理。其二,在二级屏蔽层进行对该中断源的屏蔽。当在某个3秒周期的采样中断服务程序中检测到关键信息时,采用向二级屏蔽层中断控制器设置屏蔽字的方式,在中断服务程序中通过向20H端口(中断屏蔽寄存器)写入屏蔽字,将定时器对应的中断屏蔽位由主程序中设置的0(允许中断,不屏蔽)改为1(屏蔽该中断源),使得定时器在中断管理的中间环节(中断控制器)受到屏蔽的控制,失去向CPU提出中断服务请求的可能。

为实现该实例编写的主程序相关程序段及中斷服务程序如下:

主程序部分代码

START   PROC NEAR

;将中断服务程序入口地址装入中断向量表(省略代码)

;对输入外设接口的初始化(省略代码)

MOV DX,CS8253

MOV AL,01110110B

OUT DX,AL

MOV DX,COUNT1

MOV AX,307

OUT DX,AL

MOV AL,AH

OUT DX,AL

MOV DX,CS8253

MOV AL,10110110B

OUT DX,AL

MOV DX,COUNT2

MOV AX,6000

OUT DX,AL

MOV AL,AH

OUT DX,AL    ;對外部定时设备8253循环定时3秒的初始化

MOV AL,01111111B

OUT 21H,AL      ; 在此进行二级屏蔽层中断允禁设置,假设定时器中断请求送入了中断控制器的第7个引脚,该位值设为0,允许定时器外设中断

STI             ;在此进行一级屏蔽层设置,CPU开中断

JMP $           ;等待外部中断源的中断

START   ENDP

中断服务程序主要代码:

IRQ7    PROC NEAR

STI       ;开中断,将CPU在中断响应过程中自动关闭的IF再次开放,为中断服务过程中的嵌套做屏蔽技术的准备

.      ;外部设备数据采集输入(省略代码)

.

.       ;判断输入数据是否为关键信息,不是跳转到rount地址标号处执行

MOV AL,11111111B

OUT 21H,AL        ;是关键信息,则进行二级中断屏蔽设置,将外设定时器的中断请求屏蔽

rount:    MOV AL,20H      ;写中断结束命令

OUT 20H,AL

IRET

IRQ7    ENDP

3 中断屏蔽技术的其他作用

屏蔽技术还能给程序控制带来更大的灵活性。例如,在浮点运算中,当程序员估计到执行某段程序时可能出现“阶上溢”,但又不希望因“阶上溢”而使机器停机,为此可设一屏蔽字,使对应“阶上溢”的屏蔽位为“1”,这样,即使出现“阶上溢”,机器也不停机。

另外除了上述在CPU和I/O中断控制器中设置的两个中断屏蔽级别外,在I/O设备与系统直接相连接的接口部件中,还可以进行二级屏蔽层之外的三级屏蔽层。三级屏蔽层设置可以改变外设和系统之间的数据传送方式,例如在与并行外设相连的并行接口8255 芯片中,其C端口的屏蔽位(如PC4/PC2位)设置为0时,则该并行I/O设备通过接口8255与CPU传送数据时不可以采用中断传送控制方式[4],只能采用无条件或查询传送方式。

4 总结

学习掌握中断屏蔽技术,理解不同层级的屏蔽技术对计算机中断系统及对外设控制的影响,应用中断屏蔽技术,实现对外设并行、快速、灵活的处理,对计算机专业人员有着重要意义。

参考文献:

[1] 罗克露,雷航,廖建明.计算机组成原理[M].北京:高等教育出版社,2010.

[2] 王诚,刘卫东,宋佳兴.计算机组成与设计[M].3版.北京:清华大学出版社,2008.

[3] 白中英.计算机组成原理[M].6版.北京:清华大学出版社,2021.

[4] 杨立,邓振杰,荆淑霞.微型计算机原理与接口技术[M].3版.北京:中国铁道出版社,2009.

[5] 严其艳,王华荣.单片机中断技术的应用[J].读写算(教育教学研究),2015(24):121-121,147.

[6] 王洪生.单片机的延时与中断问题及解决方法[J].科技创新导报,2019,16(34):54-55.

【通联编辑:梁书】

1464501705227

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!