收藏 分享(赏)

5-中断技术-7.3.ppt

上传人:知足长乐 文档编号:1240959 上传时间:2018-06-20 格式:PPT 页数:58 大小:1.81MB
下载 相关 举报
5-中断技术-7.3.ppt_第1页
第1页 / 共58页
5-中断技术-7.3.ppt_第2页
第2页 / 共58页
5-中断技术-7.3.ppt_第3页
第3页 / 共58页
5-中断技术-7.3.ppt_第4页
第4页 / 共58页
5-中断技术-7.3.ppt_第5页
第5页 / 共58页
点击查看更多>>
资源描述

1、微机接口技术,模块五 中断技术,7.3 高级可编程中断控制器APIC,从Pentium开始,微机系统中引入了高级可编程中断控制器APIC(Advanced Programmable Interrupt Controllers)。在Pentium 4和Xeon之后,APIC串行总线放到了CPU系统总线中,不再采用单独的APIC总线。,APIC,APIC系统由本地APIC、IO APIC和APIC串行总线组成。,APIC的优点,APIC可以用于单CPU和多CPU系统中。支持多处理器,使外部中断能被有选择地交给某一个CPU来处理解决了使用8259中断控制器所带来的中断共享、中断优先级不易控制等问题。

2、,本地APIC与IO APIC,每个处理器中集成了一个本地APIC,而IO APIC是系统芯片组中一部分,APIC总线负责连接IO APIC和各个本地APIC。本地APIC接收该处理器产生的本地中断(例如时钟中断等),以及由该处理器产生的处理器间中断,并从APIC串行总线接收来自IO APIC的消息;IO APIC负责接收所有外部的硬件中断,并翻译成消息选择发给接收中断的处理器。,IPI(Inter-processor Interrupt),CPU利用处理器间中断IPI,可以将一个外部中断交给另一个CPU来处理,也可以在CPU之间发布消息,或者实现抢占式调度。CPU通过彼此发送中断来完成它们之

3、间的通信。,7.3.1 本地APIC,APIC功能也可以被关闭,此时,由8259来处理中断。CPU的本地APIC有2个输入管脚LINT0和LINT1。在关闭APIC功能时,LINT0连接到INTR,LINT1连接到NMI。,本地APIC,本地APIC包含了8259和8254的功能。它能响应以下几种中断:系统中断:I/O APIC送来的系统中断请求,由I/O APIC交给中断请求指定的目标处理器处理;处理器间中断:经APIC总线(或系统总线)送来的处理器间中断请求(IPI);本地中断:本地APIC产生的系统中断请求(计时器、LINT0/LINT1、性能监控、温度传感器、错误)。本地中断只能由该C

4、PU处理。,一、中断发布方式,本地APIC的中断发布方式分为静态和动态两种。在静态方式下,中断消息无条件地提交给某一个CPU;在动态方式下,中断消息提交给最低优先权的CPU或焦点CPU(已接受或正在处理该中断)。,二、IA32_APIC_BASE寄存器,在模式专用寄存器(Model Specific Register)中,有一个IA32_APIC_BASE寄存器,其索引为1BH。CPU通过它来配置和控制本地APIC,例如允许、禁止本地APIC、设置本地APIC寄存器的基地址。,IA32_APIC_BASE,IA32_APIC_BASE寄存器的格式如图 722所示。 E=1时,启用本地APIC。

5、BSP=1时,此CPU为引导处理器,=0时,为应用处理器。在多CPU系统中,只能有一个引导处理器。,IA32_APIC_BASE,本地APIC寄存器是多个寄存器的集合,其基地址由IA32_APIC_BASE指定,使用4KB存储器空间。一般为FEE00000H。本地APIC寄存器按照16字节的边界来访问。,三、局部向量表LVT(Local Vector Table),偏移为320H-370H的6个本地APIC寄存器构成局部向量表LVT,分别代表6种中断:计时器中断温度传感器中断性能监控中断LINT0中断、LINT1中断错误中断。LVT中各个寄存器的格式如图 723所示。,局部向量表LVT,D16

6、屏蔽位等于1时,对应的中断类型被屏蔽。D15触发位等于0时,边沿触发;等于1时,电平触发。D14远程位等于1时,本地APIC收到中断请求。收到中断结束命令时,置为0。D13极性位等于0时,LINT0/LINT1高电平有效;等于1时,低电平有效。D12状态位等于1时,已经向CPU提交了中断请求,但CPU还没有应答。,局部向量表LVT,一共有5种提交模式,如表 72所示。当提交模式等于000B时,CPU读取LVT中的低8位作为中断向量。,四、计时器中断,本地APIC中具有当前计数寄存器CCR、计数初值寄存器CR和除数寄存器DCR。给CR寄存器赋值时,初始值装入CCR,CCR的值按一定频率递减,递减

7、的频率等于系统总线频率除以刻度系数。刻度系数由DCR确定。CCR的值递减到0时,向处理器提交计时器中断。,计时器中断,当计时器采用单次模式(循环位等于0)时,提交计时器中断后,CCR的值一直保持为0,直到向CR寄存器装入新的初值。采用循环模式时,提交计时器中断后,CR的值重新到CCR,继续递减。,五、发布中断,通过写入ICR寄存器,CPU可以向自身或者其他CPU发布处理器间中断IPI。ICR寄存器为64位,低32位的地址为FEE00300H,高32位的地址为FEE00310H。,ICR寄存器,ICR寄存器中包括中断向量、提交模式、目标地址等。提交模式可分为固定(000B)、最低优先级(001B

8、)、SMI(010B)、NMI(100B)、INIT(101B)、SIPI(110B)几种。,ICR寄存器,目标指示为00B,根据目标ID确定发送目标;等于01B时,发送给自己;等于10B时,发送给所有CPU;等于11B时,发送给所有CPU(自己除外)。提交状态是只读位,等于1时表示上一次发送的IPI消息还没有被目标CPU接收。,ICR寄存器,本地APIC将在APIC总线或系统总线上发布IPI消息,这个中断消息的接收目标可以是某一个CPU、某一组CPU或者所有的CPU。ICR寄存器的第11位用来指定接收目标的模式,等于0时使用物理目标模式,等于1时使用逻辑目标模式。ICR寄存器的最高8位(第3

9、1-24位)表示消息的目标地址,简写为MDA。,ICR寄存器,1. 物理目标模式每一个本地APIC都有一个唯一的APIC ID。在ICR寄存器的第63-56位中指定一个APIC ID,消息将发送给与它相同的另一个APIC。当第63-56位为FFH时,消息广播给所有的APIC。,ICR寄存器,2. 逻辑目标模式使用逻辑目标模式发送IPI时,目标APIC可以采用平面模式和集群模式。本地APIC中有一个DFR寄存器,它的高4位(第31-28位)等于1111B时表示平面模式;等于0000B时表示集群模式。,ICR寄存器, 平面模式。本地APIC中的LDR寄存器的高8位保存的是逻辑APIC标识。将逻辑A

10、PIC标识与MDA相与,如果得到的结果有任何一位等于1,那么这个APIC就接收IPI消息。在平面模式下,由于逻辑APIC标识有8个二制位,支持最多8个CPU。 集群模式。Pentium CPU支持平面集群模式和层次集群模式,而Pentium 4只支持层次集群模式。在层次集群模式下,在CPU的外部还必须设置专门的集群管理设备,支持最多15个集群,每个集群上最多连接4个APIC,每个集群使用单独的APIC或系统总线。,举列,假设三个CPU 的logical 模式配置为: CPU1 的LDR 值为0000 0001b,CPU2 的LDR 值为0001 0010b,CPU3 的LDR值为0000 01

11、00b, 此时DFR 的model 值为0000b。IOAPIC 发出一条中断消息,其Destination Mode 为1,destination field 值为0000 00001b。最终CPU1 接收该中断消息,CPU2、CPU3丢弃。,Destination field小结,六、 APIC中断处理过程,本地APIC接收到系统中断、处理器间中断、本地中断后,按照以下流程进行处理: 检查系统中断、处理器间中断消息中的目标地址与本地APIC是否匹配,如果不匹配则忽略此消息;,APIC中断处理过程, 检查中断消息中的提交模式,如果是NMI、SMI、INIT、ExtInt或者SIPI,那么由这

12、个CPU直接处理;否则设置IRR寄存器(一共256位)中的相应位。 当有IRR和ISR寄存器中记录了中断请求时,按照中断请求的中断向量、任务优先权寄存器TPR、处理器优先权寄存器PPR进行优先级判断,交给某一个CPU处理。,APIC中断处理过程, 中断结束:提交模式为固定时,中断服务程序写入本地APIC的EOI寄存器,将中断从ISR寄存器中清除,如果是电平触发,本地APIC向系统总线发送一条消息,表示中断处理结束。提交模式为NMI、SMI、INIT、ExtInt或者SIPI时,中断服务程序不需要写入EOI寄存器。,七、中断请求寄存器IRR和中断服务寄存器ISR,中断请求寄存器IRR一共256位

13、,地址为FEE00200H-FEE00270H。中断服务寄存器ISR也是256位,地址为FEE00100H-FEE00170H。,中断请求寄存器IRR,如果中断的提交模式为固定方式,中断请求寄存器IRR记录了本地APIC已经接收到的、但还没有指派给某一个CPU的中断。当CPU可以处理中断时,IRR中具有最高优先级的中断(即中断向量最大)对应的位被置为0,再将ISR中的对应位设置为1。ISR中具有最高优先级的中断被发送给CPU进行处理。,中断优先级,在处理高优先级的中断时,如果发生了低优先级的中断,该中断的IRR位设置为1。在高优先级的中断处理完成后,中断服务程序写入EOI寄存器,清除高优先级中

14、断的ISR位。这时,低优先级中断就会被处理。在处理某个优先级的中断时,如果发生了相同优先级的中断,该中断的IRR位设置为1。前一个中断处理完成后,后面的中断才会被处理。在处理某个优先级的中断时,如果发生了更高优先级的中断,本地APIC可以向CPU发送中断,前一个中断被暂停,进入新的中断服务程序。这就是中断嵌套。,中断请求寄存器IRR,触发模式寄存器TMR也是256位。当中断的IRR位设置为1时,边沿触发中断的TMR位设置为0,电平触发中断的TMR位设置为1。,八、优先权,中断优先权由它的中断向量号决定,中断优先权等于中断向量号除以16,即中断向量号的高4位,范围是2-15。中断向量号0-31由

15、CPU保留。,优先权寄存器,任务优先权寄存器TPR的地址为FEE00080H,格式如图725所示。处理器优先权寄存器PPR的地址为FEE000A0H,格式如图726所示。,优先权,中断优先权大于任务优先权时,中断才会被处理。CPU通过设置任务优先权寄存器TPR,禁止低级别的中断。例如,把TPR中的第7-4位(任务优先权)设为15时,那么所有的外部中断(除NMI、SMI、INIT、ExtInt等)都会被屏蔽。而任务优先权设为0时,这些外部中断不被屏蔽。,优先权,处理器优先权寄存器不能被程序所修改,是一个只读寄存器。它反映了当前CPU正在执行的程序的优先级。PPR的值是当前正在服务的中断优先权和T

16、PR二者之间较高的值。设ISRV是ISR中被设置为1的最高优先权的中断向量,ISR中所有位等于0时ISRV等于0。PPR按照以下公式来确定:IF TPR7:4 ISRV7:4 THEN PPR7:0 = TPR7:0ELSE PPR7:4 = ISRV7:4;PPR3:0 = 0,九、消息信号中断MSI,PCI 2.2规范中引入了消息信号中断(Message Signaled Interrupts)。PCI设备可以用两种方法向CPU发出中断请求:(1) 用设备的一个引脚发送中断请求信号;(2) 用MSI向处理器传送中断请求。,MSI,采用MSI向CPU发送中断请求时,PCI设备发起一个PCI写

17、操作,向一个特殊的地址写入一个特定数据。,MSI,在地址中,目标ID指定了MSI消息发送给哪一个(组)CPU,RH说明是否要把消息发送给一组中具有最低优先权的CPU,DM则指示采用物理目标模式或者逻辑目标模式。,MSI,在数据部分,触发模式有边沿触发和电平触发两种,后者又分高电平有效和低电平有效。提交模式分为固定、最低优先级、SMI、NMI、INIT、ExtINT等几种。,7.3.2 IO APIC,IO APIC用来替代传统的8259中断控制器,一般集成在ICH芯片组中。和8259相比,它能支持24个中断源,不需要中断应答周期,可以将中断请求发送给某一个指定的CPU。和CPU中的本地APIC

18、相配合,中断优先权由中断向量来确定,与中断源(IRQ)无关。系统中还可以设置多个IO APIC,支持更多的中断源。,C,Q,Steering: 转向装置,7.3.2 IO APIC,图 729是在Windows 2000下某系统的中断源设置,其每个中断源对应的中断向量在表73中列出。,IO APIC,在Pentium 4系统中,IO APIC通过前端总线向CPU提交中断消息,具体地说,是向一个特定地址写入一个特定数据来表示产生了一个中断。,一、IRQ连接,以Intel 875芯片组为例,PCI设备通过PIRQA:H#向IO APIC提交中断请求,IO APIC也接收来自串行引线SERIRQ的中

19、断请求,如表 73所示。,二、IO APIC寄存器地址,IO APIC一共有4个寄存器地址,如表 74所示。,内部寄存器,一共有64个32位内部寄存器,其索引为0-63。内部寄存器如表 75所示。,三、重定向表,重定向表的格式,重定向表,目标ID确定哪一个(组)CPU处理这个中断。目标模式等于0时,即物理目标模式,目标ID的第59-56位表示某一个CPU的APIC ID;等于1时,即逻辑目标模式,目标ID的第53-56位与CPU中的逻辑APIC标识匹配,确定目标。向CPU发送中断时,扩展目标ID(8位)被放置在地址的第11-4位。地址格式如图 727所示。,重定向表,屏蔽位等于1时,这个中断不

20、会向CPU发送。触发模式有边沿触发(第15位=0)和电平触发(第15位=1)两种,后者又分高电平有效(第13位=0)和低电平有效(第13位=1)。,重定向表,在电平触发时,远程IRR位有效。等于1时表示CPU的本地APIC已接受此中断,收到本地APIC发送的EOI后将此位清0。相对于本地APIC和CPU核心而言,IO APIC和本地APIC之间的传递是远程的。提交状态等于1时,表示中断消息已产生,但还没有发送给本地APIC。,重定向表,提交模式分为固定(000B)、最低优先级(001B)、SMI(010B)、NMI(100B)、INIT(101B)、ExtINT(111B)等几种。最低优先级表示把这个中断按照目标ID提交给PPR最低的CPU。重定向表的第7-0位表示该中断对应的中断向量号,在表 73中列出了某系统中各个IRQ对应的中断向量号。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 研究生课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报