CPU响应外部中断的周期里为何要连续产生两个INTA信号?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CPU响应外部中断的周期里为何要连续产生两个INTA信号?相关的知识,希望对你有一定的参考价值。

如题~~谢谢

CPU响应中断后,即进入中断周期.在中断周期内,CPU要自动完成一系列操作,如:
(1)保护程序断点.保护程序断点就是要将当前程序计数器PC的内容(程序断点)保存到存储器中.它可以存在存储器的特定单元(如0号地址)内,也可以存入堆栈.
(2)寻找中断服务程序的入口地址.由于中断周期结束后进入下条指令(即中断服务程序的第一条指令)的取指周期,因此在中断周期内必须设法找到中断服务程序的入口地址.由于入口地址有两种方法获得,因此在中断周期内也有两种方法寻找入口地址:
其一,在中断周期内,将向量地址送至PC(对应硬件向量法),使CPU下一条执行无条件转移指令,转至中断服务程序的入口地址.
其二,在中断周期内,将软件查询入口地址的程序(又叫中断识别程序)其首地址送至PC,使CPU执行中断识别程序,找到入口地址(对应软件查询法).
(3)关中断.CPU进入中断周期,意味着CPU响应了某个中断源的请求,为了确保CPU响应后所需作的一系列操作不至于又受到新的中断请求的干扰,在中断周期内必须自动关中断,以禁止CPU再次响应新的中断请求.允许中断触发器EINT和中断标记触发器INT可选用标准的R-S触发器.当进入中断周期时,则T为"1"状态,触发器原端输出有一个正跳变,经反相后产生一个负跳变,使EINT置0,即关中断.
上述保护断点,寻找入口地址和关中断这些操作都是在中断周期内由一条中断隐指令完成的.所谓中断隐指令即在机器指令系统中没有的指令,它是CPU在中断周期内由硬件自动完成的一条指令.
参考技术A 现在能用吗!如果可以那没有问题!

同步中断和异步中断区别

中断有两种,一种是CPU本身在执行程序的过程中产生的,一种是由CPU外部产生的。
外部中断,就是通常所讲的“中断”(interrupt)。对于执行程序来说,这种“中
断”的发生完全是异步的,因为不知道什么时候会发生。CPU对其的响应也完全是被动的,
可以通过“关中断”指令关闭对其的响应。
由软件产生的中断一般是由专设的指令,如X86中的“INT n”在程序中有意产生的,
是主动的,同步的。只要CPU执行一条INT指令,在开始执行下一条指令之前一定会进入中
断服务程序。这种主动的中断称为“陷阱”(trap)。 

 

 

       Linux 内核需要对连接到计算机上的所有硬件设备进行管理,毫无疑问这是它的份内事。如果要管理这些设备,首先得和它们互相通信才行,一般有两种方案可实现这种功能:
1.轮询(polling) 让内核定期对设备的状态进行查询,然后做出相应的处理;
2.中断(interrupt) 让硬件在需要的时候向内核发出信号(变内核主动为硬件主动)。
       第一种方案会让内核做不少的无用功,因为轮询总会周期性的重复执行,大量地耗用 CPU 时间,因此效率及其低下,所以一般都是采用第二种方案。

什么是中断?

        从物理学的角度看,中断是一种电信号,由硬件设备产生,并直接送入中断控制器(如 8259A)的输入引脚上,然后再由中断控制器向处理器发送相应的信号。处理器一经检测到该信号,便中断自己当前正在处理的工作,转而去处理中断。此后,处理器会通知 OS 已经产生中断。这样,OS 就可以对这个中断进行适当的处理。
        不同的设备对应的中断不同,而每个中断都通过一个唯一的数字标识,这些值通常被称为中断请求线(IRQ)。

中断可分为同步(synchronous)中断和异步(asynchronous)中断:
1. 同步中断是当指令执行时由 CPU 控制单元产生,之所以称为同步,是因为只有在一条指令执行完毕后 CPU 才会发出中断,而不是发生在代码指令执行期间,比如系统调用。
2. 异步中断是指由其他硬件设备依照 CPU 时钟信号随机产生,即意味着中断能够在指令之间发生,例如键盘中断。

什么是异常?

同步中断又称为异常(exception),异步中断则被称为中断(interrupt)。我们通常讲的中断指的都是异步中断。
1.中断可分为可屏蔽中断(Maskable interrupt)和非屏蔽中断(Nomaskable interrupt)。
2.异常可分为故障(fault)、陷阱(trap)、终止(abort)三类。

这些类别之间的异同点请参看 表 1。

表 1:中断类别及其行为

类别      原因                          异步/同步         返回行为
中断      来自I/O设备的信号 异步                 总是返回到下一条指令
陷阱      有意的异常               同步                 总是返回到下一条指令
故障      潜在可恢复的错误   同步                 返回到当前指令
终止      不可恢复的错误       同步                 不会返回

什么是中断处理程序?

在响应一个特定中断的时候,内核会执行一个函数,该函数叫做中断处理程序或中断服务例程。产生中断的每个设备都有一个相应的中断处理程序,如果一个设备可以产生多种不同的中断,那么该设备就可以对应多个中断处理程序。一个设备的中断处理程序是它设备驱动程序的一部分。

什么是中断上半部和下半部?

中断处理一般分为两个部分,中断处理程序是上半部:接收到一个中断就立即执行,但只做有严格时限的工作,这些工作都是在所有中断被禁止的情况下完成的。能够被允许稍后完成的工作被推迟到下半部去。通常情况下,下半部会在中断处理程序返回时立即执行。

以上是关于CPU响应外部中断的周期里为何要连续产生两个INTA信号?的主要内容,如果未能解决你的问题,请参考以下文章

8051的中断控制响应时间一般为多少个机器周期

JVM 对 interrupt 信号的响应

stm32程序执行完main函数然后去干嘛了?之后的中断为何不能响应???

汇编语言 外部中断

同步中断和异步中断区别

STM32的“外部中断”和“事件”怎么理解