中断
出处:按学科分类—工业技术 企业管理出版社《工程师手册》第748页(2378字)
中断一般分为外部中断和内部中断。外部中断指由于外部的请求引起的中断,内部中断指在CPU确认必须进行异常处理时由CPU内部自动产生的中断。
1.中断过程
中断的一般过程是:中断请求——中断响应——中断处理——返回。
(1)中断请求 当外设需要主机为之服务时,通过中断请求线向CPU发出中断请求信号。因CPU之不同,中断请求线有单请求线和多请求线之分,如图1.4.3-1所示。
(a)单请求线
(b)多请求线
图1.4.3-1 外设的中断请求
对于图1.4.3-1(a)所示的单请求线的情况,由于多个外设的中断请求都连接在同一条请求线上,因此在CPU接到外设请求时需通过查询来确定中断源以便作出相应处理。
对于图1.4.3-1(b)所示的多请求线的情况,由于每一请求线与指定外设连接,CPU根据请求线的状态就能作出判断而进行相应的处理。
(2)中断响应 中断响应是指CPU对中断请求的响应,即暂停现行程序的执行,引出为产生中断请求的外设服务的中断服务程序。具体完成以下几项工作。
①关中断 防止新的中断打乱保护断点、保护现场等工作。
②保护断点 把现行程序计数器(PC)的内容进栈。
③引出中断服务程序 把中断服务程序的入口地址送入PC。
CPU只有在以下3个条件都满足的情况下,才对外部的中断请求予以响应。
①现行指令执行完毕 在现行指令执行期间CPU不能响应中断请求,因此只有在现行指令执行完毕,CPU才能响应中断请求。为此,CPU在每条指令末都要检测有无中断请求,用以确定继续执行正常程序还是响应中断。
②CPU处于中断允许状态 只有CPU处于中断允许状态(又称开中断状态)才可响应外部的中断请求。
③无总线请求信号 只有在无总线请求的情况下,CPU才对外部的中断请求予以响应。总线请求是DMA操作时产生请求。若同时存在总线请求和中断请求,CPU先响应总线请求,在处理完毕总线请求后才响应中断请求。
(3)中断处理 中断处理包括保护现场、执行中断服务程序、恢复现场等工作。
①保护现场 保存CPU内部寄存器的内容,凡是中断服务程序中要用到的寄存器,都要保存其内容。
②开中断 以便在执行中断服务程序中能响应更高级的中断请求。
③执行中断服务程序。
④关中断 防止新的中断打乱恢复现场工作。
⑤恢复现场 即恢复被保存的CPU寄存器内容。
⑥开中断 以便其后仍可响应新的中断。
(4)返回 返回被中断的程序,即断点出栈,程序又回到被中断的地址。
2.中断源的确定
确定中断源的方法有询问法和矢量中断法两种。
(1)询问法 通过询问查找中断源,有软件询问法和硬件询问法。
①软件询问法 利用程序依次询问连接于中断请求线上的每个外设,根据对每个外设的中断标志位的状态测试,来确定其是否发出过中断请求。
②硬件询问法 利用硬件逻辑电路来确定中断源。
(2)矢量中断法 矢量中断法是能较快且灵活确定中断源的方法。在采用矢量中断法的微型计算机系统中,每个外设都预先指定有一个不同的设备中断地址。在找出某外设请求中断时要求把其设备中断地址送入微处理器,并由之产生一个专为它设置的中断陷井地址(即所谓有中断向量),它所指出的存储单元中含有该外设中断服务程序的入口地址。该入口地址被一元条件转移指令输入到程序计数器中,于是程序的控制将自动地转移到该外设的中断服务程序。
3.中断优先权
当两个或多个中断源同时请求中断时,程序人员事先概括轻重缓急(软件编程)给每个中断源确定一个中断级别,称为中断优先权。CPU最先响应优先权高的中断请求。当优先权高的中断服务程序执行完毕后,再响应优先权较低的中断请求。在执行优先权较低的中断服务程序过程中,若有优先权更高的中断源发生中断请求,则CPU要中断正在进行的中断服务程序而响应优先权更高的中断请求,于是出现中断的嵌套。只有当优先权更高的中断服务程序执行完毕后才继续执行被中断的中断服务程序。