论文导读:引言:假如我们现在需要从磁盘上读入十个字节需要10秒钟,利用传统的顺序执行时,在这10秒钟之内CPU就无所事事,不得不等待磁盘慢慢读入这十个字节,但如果在这10秒钟之内,CPU转去运行其它的程序,不就可以防止浪费CPU的时间吗?于是我们想到了引入了中断控制器以提高CPU利用率。计算机上挂接着许多外部设备,比如键盘、磁盘驱动器、鼠标、声卡……等等,而这些设备都可能在同一时刻向CPU发出中断信号,那么CPU到底应当响应哪一个设备的中断信号呢?这都通过另外一个芯片来控制,在PC机中,这个芯片常常被称作:可编程中断控制器(PIC)8259A。
关键词:中断,可编程芯片,8259A
引言:假如我们现在需要从磁盘上读入十个字节需要10秒钟,利用传统的顺序执行时,在这10秒钟之内CPU就无所事事,不得不等待磁盘慢慢读入这十个字节,但如果在这10秒钟之内,CPU转去运行其它的程序,不就可以防止浪费CPU的时间吗?于是我们想到了引入了中断控制器以提高CPU利用率。
一、中断概述
中断就是外部设备或程序同CPU通信的一种方式。CPU在接收到中断信号时,会中断正在运行的程序,转到对中断的处理上,而这个对中断的处理程序常常称为中断服务程序,当中断服务程序处理完后,CPU再返回到原先被中断的程序上继续执行。
中断可以分为两大类:硬件中断和软件中断。硬件中断是同多外部的硬件产生的,所以也常常不把硬件中断称为外部中断。硬件中断又分为两类:非屏蔽中断和可屏蔽中断。分别通过CPU的NMI引脚和INTR引脚引入。软件中断是CPU根据某条指令或者软件对标志寄存器中某个标志的设置而产生的,完全和硬件电路无关。
二、认识中断号及8259A芯片
计算机上挂接着许多外部设备,比如键盘、磁盘驱动器、鼠标、声卡……等等,而这些设备都可能在同一时刻向CPU发出中断信号,那么CPU到底应当响应哪一个设备的中断信号呢?这都通过另外一个芯片来控制,在PC机中,这个芯片常常被称作:可编程中断控制器(PIC)8259A。
一个8259A芯片有8根中断请求(IRQ)信号线:IRQ0~IRQ7。免费论文。每个外部设备使用一根或多个外部设备共用一根中断信号线,它们通过IRQ发送中断请求,8259A芯片接到中断请求后对中断进行优先级选定,然后对多个中断中具有最高优先级的中断进行处理,将其所对应的中断向量送上通往CPU的数据线,并通知CPU有中断到来。免费论文。
对于CPU来说中断就是中断,只有一种,无论是由外部硬件触发的还是由运行的软件本身触发的,中断处理的过程都是一样的:中断现行程序,转到中断服务程序处执行,回到被中断的程序继续执行。CPU对于其它的模块只提供了一种接口,即是 256个中断处理向量,也称为中断号。由这些中断控制器自行去使用这256个中断号中的一个与CPU进行交互。中断号是由中断服务程序一一对应的。免费论文。一个中断号就是一个中断服务程序,8259A将中断号通知CPU后,它的任务就完成了,使用此中断号去调用什么程序由CPU支配。
三、8259A的内部中断处理流程
下面从一个系统程序员(System Programmer)的角度来看8259A的内部结构。
首先,一个外部中断请求信号通过中断请求线IRQ,传输到IMR(中断屏蔽寄存器),IMR根据所设定的中断屏蔽字,决定是将其丢弃还是接受。如果可以接受,则8259A将IRR中代表此IRQ的位置位,以表示此IRQ有中断请求信号,并同时向CPU的INTR(中断请求)引脚发送一个信号,但CPU这时可能正在执行一条指令,因此CPU不会立即响应,而在CPU正忙着执行某条指令时,还有可能有其余的IRQ线送来中断请求,这些请求都会接受IMR的挑选,如果没有被屏蔽,那么这些请求也会被放到IRR中,也即IRR中代表它们的IRQ的相应位会被置1。
当CPU执行完一条指令时后,会检查一下INTR引脚是否有中断请求信号,如果发现有中断请求信号,就会转到中断服务,此时,CPU会立即向8259A芯片的INTA(中断应答)引脚发送一个信号。当芯片收到此信号后,判优部件开始工作,它在IRR中,挑选优选级最高的中断,将中断请求送到ISR,并将IRR中相应位置零,表明此中断正在接受CPU的处理。
内容看起来仿佛十分复杂,但我们可以用一个很简单的比喻来解释。CPU就相当于一个学校的校长,而8259A芯片就相当于这个校长的秘书,现在有很多人想见校长,但校长正在打电话,于是交由秘书先行接待。每个想见校长的人都需要把自己的名片高端控制器,交给秘书,秘书首先看看名片,有没有校长明确表示不愿见到的人,如果没有就把它放到一个盒子里面,这时校长的电话还没打完,但不停的有人递上名片求见校长,秘书就把符合要求的名片全放在盒子里了。这时,校长打完电话了,探出头来问秘书:有人想见我吗?这时,秘书就从盒子里挑选一个级别最高的(8259A芯片中存在优先权判定),并把它的名片交给校长。
当芯片把中断号送上通往CPU的数据线后,就会检测,ICW4中的EOI是否被置位。如果EOI被置位表示自动结束,则芯片会自动将ISR中的相应位清零。如果EOI没有被置位,则需要中断处理程序向芯片发送EOI消息,芯片收到EOI消息后才会将ISR中的相应位清零。
四、结语
使用中断控制器在同步操作时不仅可以实现CPU和外设之问的并行工作,而且CPU可命令多个外设同时工作,这大大提高CPU的利用率,加快了输出的速度。同时,实时处理时可以及时处理随机输入到微型计算机的各种参数和信息,使微型计算机具备实时处理与控制的能力。最重要的是在做故障处理时CPU可以就根据故障源发出的中断请求,立即去执行相应的故障处理程序,自行处理故障而不必停机,提高了微型计算机工作的可靠性。
参考文献:
[1]李大友.微型计算机接口技术[M] .北京:清华大学出版社,2000年.
[2]周明德.微型计算机系统原理及应用[M].北京:清华大学出版社,1996年.
[3]戴梅萼 史嘉权.微型计算机技术及其应用[M].北京:清华大学出版社,2008年.
|