APIC

来源:互联网 发布:av淘宝怼妹子网站 编辑:程序博客网 时间:2024/04/28 08:42

       Advanced Programmable Interrupt Controller(APIC)在IA-32架构的Pentium 处理器.The local APIC 执行以下两个主要的功能:

   . 它接收来自处理器的interrupt pins产生的中断,以及内部的中断源和外部I/O APIC产生的中断,并送往处理器核心来处理。

   . 在多处理器系统中,它发送inter processor interrupt(IPI)信息到系统总线上其他logical processors,并接收来自系统总线上其它 logical processors 的IPI message。IPI messages 能够被用来在系统中的各个处理器间分配中断或用来执行系统各种各样的功能。(例如,bootingup processors 或在处理器间分配工作)。

    The External I/O APIC是系统芯片组的一部分。它的主要功能是接收来自系统和与它相关I/O设备产生的外部中断事件,然后传递它们到 local APIC作为中断信息。在MP系统中,I/O APIC 也提供了一种机制来分配外部中断到the local APICs of selected processors 或者groups of processors on the system bus.

     LOCAL AND I/O APIC OVERVIEW

     每一个 local APIC 由一系列的APIC寄存器组成,以及相关的硬件控制传递处理器核心的中断和IPI信息APIC registers 是内存映射的,可以通过使用MOV指令读和写

     local APICS 能够接收来自下面的中断源:

     . Locally connected I/O devices - 这些中断通过一个直连到processor's local interrupt pins(LINT0 和LINT1)的I/O 设备以边沿触发或电平触发有效产生。the I/O devices也可以连接到8259类型的中断控制器(那是通过其中的一个local interrupt pin依次连接到处理器的)。

     . 外部连接的I/O devices - 这些中断通过连接到一个 I/O APIC的中断输入PIN 的I/O device以下降沿和电平触发有效产生。中断被作为 I/O interrupt messages从 I/O APIC 传送到系统中的一个或多个处理器。

     . Inter-processor interrupts(IPIS) -IPI机制被一个Intel64或IA-32的处理器使用来中断另一个处理器或在系统总线上的一组处理器。IPIs被用来software self-interrupts, interruptforwarding ,or Preemptive scheduling。

     . ACPI timer generated interrupts -当被编程的数目计数(定时)到了,The local APIC timer 能够被编程来发送一个local interrupt 到它关联的处理器。

     . Performance monitoring counter interrupts - P6 family, Pentium4,和Intel Xeon 提供the abitily 来发送中断到它关联的处理器当performance-monitoring 计数器溢出。

     . Thermal Sensor interrupt - Pentium 4 和Intel Xeon processors提供the Ability来发送中断给他们自己当内部的热传感器被触发。

     . APIC internal error interrupts -  当一个错误的状态在the local APIC 中被识别(例如存取未被实现的处理器),the APIC 能够被编程用来发送一个中断到他关联的处理器。

     这些中断源: the processor's LINT0和LINT1pin,the APIC timer, the performance-monitoring counters, the thermal sensor, 以及内部的APIC error  detector 都被当作local interrupt sources. 一旦接收到一个来自local interrupt sources的信号,the local APIC 使用一个中断传递协议(被叫做local vector table或LVT的一组APIC寄存器设置好)将中断传递到处理器核心。在中断向量表中一个独立的入口被提供给每一个local interrupt 源,这样允许一个专门的中断传递协议能够被设置给每一个中断源。例如,如果the LINT1 pin 被用来当作一个NMI pin,中断向量表中LINT1入口能够被设置来传递一个中断with number 2(就是NMI中断)给处理器核心。

     The local APIC 通过自己的IPI 信息处理设施来处理其它两类中断源(外部连接的I/O设备和IPIS)的中断。

     一个处理器通过编程在它local APIC中的中断命令寄存器(ICR)来产生IPIS。写ICR的行为会引起系统总线或APIC 总线上产生IPI message。IPIS能被送到系统中其他的处理器或起始的处理器(self-interrupts).当目标处理器接收到了一IPI信息,它的localAPIC 会自动地处理这信息。

     The local APIC 也能够接收来自外部连接到I/O APIC设备的中断。The I/O APIC负责接收系统硬件和I/O 设备产生的中断,并传送给the local APIC 作为中断信息。

     The I/O APIC 上的个别 PINS 宣称有效时,能够被编程来产生一个专门的中断向量.The I/O APIC 也有 a “virtual wire  mode”,这允许它和一个标准的8259A类型的外部中断控制器通信。注意the local APIC 能够被关掉,这允许一个相关的处理器核心直接从一个8259A中断控制器接收中断。

     Local APIC和I/O APIC 都被设计在MP系统中操作。每一个local APIC 处理来自I/O APIC的中断,来自系统总线上处理器的IPIS,以及自我产生的中断。中断也能被传递给个别的处理器 通过local interrupt pins;然而这种机制一般不在MP系统中使用。


     The IPI机制被典型的用在MP系统中来发送固定的中断(指定专门向量号的中断)和系统总线上给处理器的特别用途的中断。例如,a local APIC 能够使用一个IPI来转发一个固定的中断给另一个处理器来服务。专门目的的IPIS(包括NMI,INIT,SMI和SIPI IPIS)允许系统总线上的一个或多个处理器来执行系统各种各样的boot-up和控制功能。

     SYSTEM BUS VS. APIC BUS

     对于P6 family 和 Pentium 处理器,the I/O APIC和 local APICs通过the 3-wire inter-APIC 总线来通信(see figure 10-3).Local APICs 也使用APIC 总线来发送和接收IPIs。The APIC 总线和它的信息对软件不可见,并且没被分类为架构。

     从Pentium 4和Intel Xeon处理器起,the I/O APICs和local APICs(使用xAPIC架构)通过系统总线通信。The I/O APIC发送中断请求给系统总线上的处理器通过INTEL芯片组的桥硬件部分。The bridge hardware 产生给local APICs的中断信息。Local APICs之间的IPIs被直接在系统总线上传输。