微机原理与接口技术总结

中断的论述

中断是指计算机在执行程序的过程中,当出现异常情况或特殊请求时,计算机停止现行程序的运行,转向对这些异常情况或特殊请求的处理,处理结束后再返回现行程序的间断处,继续执行原程序。CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。即在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止程序的执行转而处理这个新的情况的过程就叫做中断。

1.什么要采用中断

为了说明这个问题,再举一例子。假设你有一个朋友来拜访你,但是由于不知道何时到达,你只能在大门等待,于是什么事情也干不了。如果在门口装一个门铃,你就不必在门口等待而去干其它的工作,朋友来了按门铃通知你,你这时才中断你的工作去开门,这样就避免等待和浪费时间。计算机也是一样,例如打印输出,CPU传送数据的速度高,而打印机打印的速度低,如果不采用中断技术,CPU将经常处于等待状态,效率极低。而采用了中断方式,CPU可以进行其它的工作,只在打印机缓冲区中的当前内容打印完毕发出中断请求之后,才予以响应,暂时中断当前工作转去执行向缓冲区传送数据,传送完成后又返回执行原来的程序。这样就大大地提高了计算机系统的效率。

2.中断的分类

(1)按中断处理方式,可分为简单中断和程序中断。简单中断采用周期窃用的方法来执行中断服务,有时也称数据通道或DMA;程序中断不是窃用中央处理机的周期来进行中断处理,而是中止现行程序的执行转去执行中断服务程序。

(2)按中断产生的方式,中断可分为自愿中断和强迫中断。自愿中断即通过自陷指令引起中断,或称软件中断,例如程序自愿中断;强迫中断是一种随机发生的实时中断,如外部设备请求中断、故障强迫中断、实时时钟请求中断和数据通道中断等。

(3)按引起中断事件所处的地点,中断可分为内部中断和外部中断。外部中断也称为外部硬件实时中断,他由来自CPU某一引脚上的信号引起;内部中断也称软件指令中断,他是为了处理程序运行过程中发生的一些意外情况或调试程序而提供的中断。

(4)根据微处理器内部受理中断请求的情况,中断可分为可屏蔽中断和不可屏蔽中断。凡是微处理器内部的中断触发器(或许中断允许触发器)能够拒绝响应的中断,称为可屏蔽中断;凡是微处理器内部的中断触发器(或许中断允许触发器)不能够拒绝响应的中断,称为不可屏蔽中断。

3.中断的优先级

我们仍然可以举例说明中断优先级的概念。在上面的例子中,如果在电话铃响的同时,门铃也响了,那么你将在“接电话”和“开门”这两个中断请求中选择,先响应哪一个请求。这就有一个谁优先的问题。如果“开门”比“接电话”重要(或者说

“开门”比“接电话”的优先级高),那么就应该先开门,然后再接电话,接完电话后再回头来继续写信。这就是说,当同时有多个中断请求时,应该先响应优先级较高的中断请求。

此外,如果在响应一个中断,执行中断处理的过程中,又有新的中断事件发生而

发出了中断请求,应该如何处理也取决于中断事件的优先级。当新发生的中断事件的优先级高于正在处理的中断事件时,又将中止当前的中断处理程序,转去处理新发生的中断事件,处理完毕才返回原来的中断处理。在上面的例子中,我们假设“开门”比“接电话”的优先级高。在你写信时,电话铃响了,你去接电话,在通话的过程中,门铃又响了。因为“开门”的优先级高,你只能让通话的对方稍等,放下电话去开门。开门之后再回头继续接电话,通话完毕再回去继续写信。而如果“开门”比“接电话”的优先级低,那么在通话的过程中门铃响了也可以不予理睬,通话结束再去开门。当然,在日常生活中,谁也不会为“开门”和“接电话”规定一个优先级别的高低。但是在计算机中,各种中断事件很多,其优先级都有规定,否则就会乱套。在计算机中,中断事件的优先级是根据事件的实时性、重要性和软件处理的方便性来安排的。

4.中断处理过程

当满足上述条件后,CPU就响应中断请求,并自动关中断,然后进入为之服务的中断处理程序。在中断处理程序中,应先后完成的工作一般如下图。

一般中断处理过程

(1)保护断点现场。为使中断处理程序不影响被中断程序运行,必须首先将断点处的有关各寄存器的内容和标志位的状态压入堆栈保护起来,以备中断处理完毕后能返回原程序,从断点开始正确执行。要保护的断点现场内容通常包括:

①CPU的标志寄存器(FR)内容。对于8086/80_86系列CPU,在将FR内容压入堆栈的同时,还要求清除其中的中断允许标志位IF和自陷标志位TF。

②代表断点地址的程序计数器PC内容(对于无分段分页存储管理的CPU)或者代码段寄存器CS和指令指针(E)IP内容(对于有分段分页存储管理的CPU)。

③中断处理程序中将用到的各CPU内部寄存器内容。

绝大多数CPU都是通过用PUSH指令将上述断点信息压入堆栈来实现现场保护的。

(2)开中断。以便执行中断服务程序时,能响应更高级别的中断源请求。

(3)完成I/O操作或异常事件处理,这是整个中断处理程序的核心。

(4)关中断。目的是保证在恢复现场时不被新的中断所打扰。

(5)恢复现场。中断服务程序结束后,必须进行现场恢复的操作。多数CPU是用POP指令把保存的断点信息从堆栈中弹出,达到恢复现场的目的。

(6)开中断。以便中断返回后可响应新的中断请求。

(7)中断返回。最后必须通过一条中断返回指令(自动或程序安排),使断点地址送回程序计数器或CS:(E)IP,继续执行被中断的程序。

上述一般中断处理流程中是否每步工作都要做,取决于具体的CPU种类。比如80_86系列处理器,IRET指令执行时,一方面会从堆栈自动弹出断点地址CS:(E)IP和(E)FLAGS内容,另一方面还会自动开中断,所以对它来说,上述第(6)步的开中断就没必要了,而且在第(5)步恢复现场的工作中也只需恢复保存的内部寄存器内容。

5.中断的屏蔽

中断屏蔽也是一个十分重要的功能,所谓中断屏幕蔽是指通过设置相应的中断屏蔽位,禁止响应某个中断。这样作的目的,是保证在执行一些重要的程序中不响应中断,以免造成迟缓而引起错误。例如,在系统启动执行初始化程序时,就屏蔽键盘中断,使初始化程序能够顺利进行。这时,敲任何键,都不会响应。当然对于一些重要的中断是不能屏蔽的,例如重新启动、电源故障、内存出错、总线出错等影响整个系统工作的中断是不能屏蔽的。因此,从中断是否可以被屏蔽来看,可分为可屏蔽中断和不可屏蔽中断两类。

6.常见中断源凡是能够引起中断原因或提出中断请求的设备和异常故障均称被称为“中断源”。

通常中断源有以下几种:

(1)外部设备请求中断。一般的外部设备(如键盘、打印机和A/D转换器等)在完成自身的操作后,向CPU发出中断请求,要求CPU为他服务。由计算机硬件异常或故障引起的中断,也称为内部异常中断。

(2)故障强迫中断。计算机在一些关键部位都设有故障自动检测装置。如运算溢出、存储器读出出错、外部设备故障、电源掉电以及其他报警信号等,这些装置的报警信号都能使CPU中断,进行相应的中断处理。

(3)实时时钟请求中断。在控制中遇到定时检测和控制,为此常采用一个外部时钟电路(可编程)控制其时间间隔。需要定时时,CPU发出命令使时钟电路开始工作,一旦到达规定时间,时钟电路发出中断请求,由CPU转去完成检测和控制工作。

(4)数据通道中断。数据通道中断也称直接存储器存取(DMA)操作中断,如磁盘、磁带机或CRT等直接与存储器交换数据所要求的中断。

(5)程序自愿中断。CPU执行了特殊指令(自陷指令)或由硬件电路引起的中断是程序自愿中断,是指当用户调试程序时,程序自愿中断检查中间结果或寻找错

误所在而采用的检查手段,如断点中断和单步中断等。7.中断指令的格式

中断指令"INTn"调用n号中断处理程序,在中断处理程序中,用中断返回指令IRET指令使CPU返回主程序断点继续执行。中断指令(INTn)和调用程序指令(CALL)很相似,它们均转入内存中其它程序段执行,执行完后再转回。

主程序用"CALL目标地址"调用子程序,如图3-25所示。主程序用"INTn"调用中断处理程序,如图3-26所示。数值n是中断处理程序的编号,它代表了中断处理程序的地址。中断处理程序的地址称为"中断矢量"或"中断向量",它是一个4字节值,2字节段地址,2字节偏移量。在8086处理器中,用"中断矢量表"或称"中断向量表"来管理256个中断处理程序的地址。

中断向量表存放在内存地址最低区域上(0段0000H~03FFH),共1024字节(256_4),其内存放256个中断处理程序的地址。

8.中断系统的功能

中断系统应具有的功能可归结为中断处理和中断控制。

(1)中断处理。中断处理包括发现中断请求、响应中断请求、中断处理和中断返回。

(2)中断控制。中断控制主要是实现中断优先级的排队和中断嵌套。

综上所述,中断传送方式是最常用、最有效、比较及时和快速的输入输出控制方式。因此其被广泛的应用到现代计算机中。具有中断功能的CPU具有更多的功能,能更加效率的执行多重任务。

预览已结束,下载原文档直接使用
查看全文
若对以上有内容有疑问请反馈或举报举报
声明:
您购买的是此内容的word文档,付费前可通过免费阅读辨别合同。非质量问题不退款,如需帮助可咨询客服【客服微信】