合聚咖

合聚咖

中断控制器8259a的基本功能是什么

admin

中断控制器8259A是一个用于管理中断的芯片。它接收的中断来源包括硬件自身、软件指令以及外部硬件设备,这些中断都是可屏蔽的,并通过Programmable Interrupt Controller (PIC)进行控制并传递给中央处理器(CPU)。8259A芯片本身最多可连接8个中断源,但通过级联(cascade)最多可连接至9个芯片,总共支持64个中断源。现代PC通常使用两个8259A芯片,最多支持15个中断源。通过IMR(中断屏蔽寄存器)可以对单个中断源进行屏蔽。IRR(中断请求寄存器)暂存未处理的中断请求,ISR(中断服务寄存器)记录正在处理的中断请求。优先级解决单元(Priority Resolver)处理并发中断,根据优先级选择高优先级中断传递给CPU。8259A通过发送INTR信号通知CPU有中断请求,CPU接收后暂停当前指令,发送INTA信号给8259A。8259A更新ISR和IRR,然后发送中断向量给CPU,CPU在IDT中找到相应的中断服务程序并调用。EOI(结束中断)通知用于中断请求处理完成后的操作。

为了兼容早期IBM PC/XT的中断限制,8259A引入了IRQ2到IRQ9的重定向。早期系统只支持8种IRQ,随着需求增加,PC/AT通过级联一个额外的8259A芯片解决了问题,但IRQ2被占用。为保持兼容性,IRQ9被选作新IRQ2的重定向目标。软件设计者只需将IRQ2的中断服务程序修改为调用IRQ9的服务程序即可实现兼容。

8259A的编程涉及使用I/O端口进行操作。每个芯片有两个端口:Master 8259A端口地址为0x20和0x21,而Slave 8259A端口地址为0xA0和0xA1。编程包括使用两种命令字:初始化命令字(ICW)用于芯片初始化,操作命令字(OCW)用于控制8259A的命令。ICW1用于初始化命令,OCW2-OCW3用于执行操作命令。主8259A和从8259A的I/O端口地址和可操作的寄存器有所不同,具体操作见表格。对于X86和MCS-80/85,操作模式和某些寄存器的设置存在差异,这里仅讨论X86相关的内容。