![]() |
+ 低压差线性稳压器 |
+ 白光LED驱动 |
+ MOSFET |
+ 32位ARM核Cortex系列 |
+ CMOS逻辑电路 |
的情况,为了充分挖掘 SMP 体系结构的并行性,能够把中断传递给系统中的每个 CPU 至关重要。基于此理由,引入了一种名为 I/O 高级可的新组件,来替代老式的 8259A 可编程中断。下面一起来学习一下A 最初的APIC属于外部设备,以外部的82489DX芯片形式存在。在P6家族和Pentium处理器后,以APIC on Chip形式存在,引入了处理器内部的local APIC架构,和82489DX 外部APIC相比较功能得到了扩展和增强。 每个logical processor(逻辑处理器)都有自己的local APIC,每个local APIC包括了一组local APIC寄存器,用来控制local和external中断的产生、发送和接收等,也产生和发送IPI(处理器间的中断消息)。local APIC寄存器组以内存映射形式映射到物理地址空间上,因此软件可以使用MOV指令进行访问。 标准PC上两片级联的8259提供了理论上15个中断输入源,但实际系统中这些中断源远远不够用。 APIC可以用于单CPU和多CPU系统中。引入APIC一方面是为了支持多处理器系统需要,使外部中断能被有选择地交给某一个CPU来处理。 CPU利用处理器间中断IPI (Inter-Processor Interrupt),可以将一个外部中断交给另一个CPU来处理,也可以在CPU之间发布消息,或者实现抢占式调度。 多处理器系统中,CPU通过彼此发送中断来完成它们之间的通信。另一方面,扩展了系统可用的中断数达到24个,分隔了PCI/ISA设备使用的中断,在APIC系统中只有PCI设备才能使用16~23号中断,而ISA设备仍然使用常规的0~15号中断,解决了使用8259中断所带来的中断共享、中断优先级不易控制等问题。 ISA总线: (Industry Standard Architecture:工业标准体系结构)是为PC/AT电脑而制定的总线位的I/O设备,数据传输率大约是16MB/S。也称为AT标准。ISA是IndustryStandardArchitecture的缩写ISA插槽是基于ISA总线(IndustrialStandardArchitecture,工业标准结构总线)的扩展插槽,其颜色一般为黑色,比PCI接口插槽要长些,位于主板的最下端。其工作频率为8MHz左右,为16位插槽,最大传输率16MB/sec,可插接显卡,声卡,网卡已及所谓的多功能接口卡等扩展插卡。其缺点是CPU资源占用太高,数据传输带宽太小,是已经被淘汰的插槽接口。 ISA是8/16bit的系统总线MB/s,但允许多个CPU共享系统资源。由于兼容性好,它在上个世纪80年代是最广泛采用的系统总线,不过它的弱点也是显而易见的,比如传输速率过低、CPU占用率高、占用硬件中断资源等。后来在PC‘98规范中,就开始放弃了ISA总线芯片组开始,也不再提供对ISA接口的支持。 PCI总线取代了早先的ISA总线。有许多优点,比如即插即用(Plug and Play)、中断共享等。所谓即插即用,是指当板卡插入系统时,系统会自动对板卡所需资源进行分配,如基地址、中断号等,并自动寻找相应的驱动程序。而不象旧的ISA板卡,需要进行复杂的手动配置。实际的实现远比说起来要复杂。 在PCI板卡中,有一组寄存器,叫配置空间(Configuration Space),用来存放基地址与内存地址,以及中断等信息。以内存地址为例。当上电时,板卡从ROM里读取固定的值放到寄存器中,对应内存的地方放置的是需要分配的内存字节数等信息。 操作系统要根据这个信息分配内存,并在分配成功后把相应的寄存器中填入内存的起始地址。这样就不必手工设置开关来分配内存或基地址了。对于中断的分配也与此类似。ISA卡的一个重要局限在于中断是独占的,而我们知道计算机的中断号只有16个,系统又用掉了一些,这样当有多块ISA卡要用中断时就会有问题了。PCI总线的中断共享由硬件与软件两部分组成。 硬件上,采用电平触发的办法:中断信号在系统一侧用电阻接高,而要产生中断的板卡上利用三极管的集电极将信号拉低。这样不管有几块板产生中断,中断信号都是低;而只有当所有板卡的中断都得到处理后,中断信号才会回复高电平。 软件上,采用中断链的方法:假设系统启动时,发现板卡A用了中断7,就会将中断7对应的内存区指向A卡对应的中断服务程序入口ISR_A;然后系统发现板卡B也用中断7,这时就会将中断7对应的内存区指向ISR_B,同时将ISR_B的结束指向ISR_A。 以此类推,就会形成一个中断链。而当有中断发生时,系统跳转到中断7对应的内存,也就是ISR_B。ISR_B就要检查是不是B卡的中断,如果是,要处理,并将板卡上的拉低电路放开;如果不是,则呼叫ISR_A。这样就完成了中断的共享。咱们继续 值得注意的是,只有Windows 2000以后的操作系统才支持APIC,Linux可以支持但需要定制,缺省安装并不支持。 BIOS运行于实模式,不支持APIC, APIC只有在保护模式下才能使用。(因此8259A) 单核或者多核情况下,每个处理器中都有自己的LAPIC,而IO APIC是作为系统芯片组中一部分,在PCI-to-ISA bridge的LPC内,系统最多有8个IO APIC。 LAPIC通过系统总线接收该处理器产生的本地中断(例如时钟中断等)及处理器间中断,并接收外部的中断消息,如来自IO APIC的消息等。 典型地,8259兼容类的legacy中断是在uni-processor(单处理器)系统上使用,已不能适应于多处理器环境,而I/O APIC能适用于multi-porcessor(多处理器)环境上。 在动态方式下,中断消息通过TPR (Task Priority Register)判断提交给最低优先权的CPU或焦点CPU(已接收或正在处理该中断)。 本地APIC寄存器长度为32位、64位或者256位,所有地址边界按照16字节即128位为边界来访问。APIC地址映射见表如下 本地APIC中的计时器相关寄存器包括当前计数寄存器CCR、计数初值寄存器CR和除数寄存器DCR。 给CR寄存器赋值时,初始值装入CCR, CCR的值按一定频率递减,递减的频率等于系统总线频率除以刻度系数。刻度系数由DCR确定。CCR的值递减到0时,向处理器提交计时器中断。 当计时器采用单次模式(循环位等于0)时,提交计时器中断后,CCR的值一直保持为0,直到向CR寄存器装入新的初值。采用循环模式时,提交计时器中断后,CR的值重新到CCR,继续递减。计数过程中若初始计数寄存器被重置了,则将使用新的初始计数值,重新开始计数。 通过写入ICR寄存器,CPU可以向自身或者其他CPU发布处理器间中断IPI。ICR寄存器为64位,低32位的地址为FEE00300H,高32位的地址为FEE00310H。 ICR的主要功能包括:发送一个中断给另外一个处理器;允许处理器转发它收到的一个中断,但不对另一个处理器的请求提供服务;把处理器定向到中断本身,即执行一次自我中断;传送特定的IPI,比如启动IPI(SIPI)消息,到其他处理器。 b. 001(最低优先权):除了把中断传送给目的域中指定的目标处理器组中的优先级最低的处理器之外,其他同于固定模式。处理器传送最低优先权IPI的能力是与模型相关的,BIOS和操作系统软件应该避免它。 c. 010(SMI):传送一个SMI中断给目标处理器或者处理器组。为了与未来兼容,该向量域应该设成00H。 d. 011(保留)。e. 100(NMI):传送一个NMI中断给目标处理器或者处理器组。忽略向量信息。 f. 101(INIT):传送一个INIT请求给目标处理器或者处理器组,使之执行一次初始化。作为这个IPI消息的结果之一,所有处理器都执行一次初始化。 g. 110(未激活INIT的电平):发送一个同步消息给系统中的所有本地APIC,把它们的仲裁ID设置成它们的APIC ID。对于这个传送模式,电平标志必须设为0,触发模式标志设为1,目标指示应为10(Pentium 4和Intel Xeon处理器中不支持)。 ③ D11用来指定接收目标的模式。D11=0时,使用物理目标模式;D11=1时,使用逻辑目标模式。 ⑤ D14有效电平位。0表示无效电平;1表示有效电平。注意,无效电平可能是高电平或者低电平,有效电平也可能是高电平或者低电平。 ⑦ D19~D18目标指示位。等于00时,表示根据目标ID确定发送目标;等于01时,发送给自己;等于10时,发送给所有CPU;等于11时,发送给所有CPU(自己除外)。 ⑧ D64~D56表示消息的目标地址(Message Destination Address, MDA)。 平面模式:本地APIC中的逻辑目标寄存器(Logic Destination Register, LDR)的高8位保存的是逻辑APIC标识,如图28所示。将逻辑APIC标识与MDA相与,如果得到的结果有任何一位等于1,那么这个APIC就接收IPI消息。在平面模式下,由于逻辑APIC标识有8个二进制位,支持最多8个CPU。 (6)处理中断 本地APIC接收到系统中断、处理器间中断、本地中断后,按照以下流程进行处理: ① 检查系统中断、处理器间中断消息中的目标地址与本地APIC是否匹配,如果不匹配,则忽略此消息。 ② 检查中断消息中的提交模。 江南官方体育app 上一篇:ARM推出一系列汽车SoC IP 下一篇:Armv9架构芯片组合公布:Co |