可编程中断控制器8259芯片

可编程中断控制器8259芯片

Content #

可屏蔽中断是通过INTR 引脚进入处理器内部的,不可能为每一个中断源都提供一个引脚。而且,处理器每次只能处理一个中断。在这种情况下,需要一个代理,来接受外部设备发出的中断信号。还有,多个设备同时发出中断请求的几率也是很高的,所以该代理的任务还包括对它们进行仲裁,以决定让它们中的哪一个优先向处理器提出服务请求。

在个人计算机中,用得最多的中断代理就是8259 芯片,它就是通常所说的中断控制器,从8086 处理器开始,它就一直提供着这种服务。即使是现在,在绝大多数单处理器的计算机中,也依然有它的存在。

Intel 处理器允许256 个中断,中断号的范围是0~255,8259 负责提供其中的 15 个,但中断号并不固定。之所以不固定,是因为当初设计的时候,允许软件根据自己的需要灵活设置中断号,以防止发生冲突。该中断控制器芯片有自己的端口号,可以像访问其他外部设备一样用in 和out 指令来改变它的状态,包括各引脚的中断号。正是因为这样,它又叫可编程中断控制器(Programmable Interrupt Controller,PIC)。

单处理器系统的中断机制

每片8259 只有8 个中断输入引脚,而在个人计算机上使用它,需要两块。如图所示,第一块8259 芯片的代理输出INT 直接送到处理器的INTR 引脚,这是主片(Master);第二块8259 芯片的INT 输出送到第一块的引脚2 上,是从片(Slave),两块芯片之间形成级联(Cascade)关系。如此一来,两块8259 芯片可以向处理器提供15 个中断信号。当时,接在8259 上的15 个设备都是相当重要的,如PS/2 键盘和鼠标、串行口、并行口、软磁盘驱动器、IDE 硬盘等。现在,这些设备很多都已淘汰或者正在淘汰中,根据需要,这些中断引脚可以被其他设备使用。

From #