Intel x86架构之多处理器

全文来自Intel手册:MultiProcessor Specification(http://download.intel.com/design/pentium/datashts/24201606.pdf
Version 1.4
May 1997
注意:下文中已经指出手册中的对应页面和章节,请对照手册原文看,任何个人理解错误,请包涵。
一,以下内容来自(P25):3.6 Multiprocessor Interrupt Control
在多处理器系统上,中断通过APIC进行控制。下面将描述APIC架构和多处理器系统上的三种不同中断模型。

APIC基于分布式架构,中断控制功能有两个基本的功能组件,分别为本地单元(lapic)和I/O单元(io apic)。本地单元和I/O单元之间通过ICC总线进行通信。I/O单元类似于中断输入器,它通过ICC总线把中断分发到本地单元,而对应的本地单元就接收并处理对应的中断消息。

在多处理器系统上,每一个CPU都需要有一个对应的lapic吗,而根据总共的中断线数,需要一个或多个io apic。
Intel 82489DX APIC是一款离散式APIC的实现,与此相对,还有集中式APIC的实现。不管是老旧的离散式APIC,还是新近的集中式APIC,它们都包含有一个版本寄存器(version register),分别存储以数值0x和1x(其中x表示十六进制数据)。

为了更好的扩展,Intel APIC架构仅规定了APIC单元的编程接口,而ICC总线协议以及电气规格特性却是与具体实现相关联的。这意味着不同版本的APIC实现可以运行相同的二进制软件,但各个不同版本的APIC部件可能具有不同总线协议或电气规格特性的实现。在使用不同版本的APIC时需格外注意。

APIC架构被设计为可伸缩扩展。82489DX APIC有8bit的ID寄存器,可以表示最多255个APIC设备,此外,它的逻辑目标寄存器(Logical Destination register)可支持32bit,可以表示最多32个设备。对于小型系统实现,APIC ID寄存器可以缩减到最少4bit,而逻辑目标寄存器可以缩减到最少8bit。

为了保证所有APIC实现版本的软件兼容性,软件开发者最好遵循如下编程准则:
1,分配8bit的APIC ID号时需从零开始。
2,分配逻辑目标时从32bit寄存器的MSB开始。(MSB,最高有效位,一般是位于二进制数的最左侧,请参考http://en.wikipedia.org/wiki/Most_significant_bit)
3,将APIC的估算虚假向量(spurious vector)设置为xF,其中x为4bit的十六进制数据。

如下特性仅在集中式APIC上可用:
1,io apic中断输入信号极性(input signal polarity)可编程。
2,名为STARTUP IPI的新IPI中断被定义。

一般而言,在集中式APIC的系统上,操作系统必须使用STARTUP IPI来唤醒其它应用处理器(application processors),而在82489DX APIC的系统上,需使用INIT IPI来唤醒其它应用处理器。

二,以下内容来自(P26):3.6.2 Interrupt Modes
多处理器系统的三种不同中断模式:
1,PIC模式(PIC Mode):绕开所有APIC组件,强制系统使用单核模式。
2,虚线模式(Virtual Wire Mode):使用一个APIC作为虚拟线,其它同PIC模式。
3,对称I/O模式(Symmetric I/O Mode):系统启用多个处理器。

前两种模式提供PC/AT兼容,而第三种模式需实现在前面两种模式中任何一种的基础之上。一个多处理器系统以前面两种模式中任何一种启动,然后再切换到第三种模式,从而实现进入到多处理器模式下。

其它:
1,大多数较新的机器支持高级配置和电源接口(ACPI),而ACPI包含有MPS的功能,所以MPS逐步将被ACPI所取代。
2,不管是MPS还是ACPI,都是由BIOS程序根据当前机器硬件写好对应的条目,然后OS启动后读取这些条目进行初始化。

参考:
1,http://en.wikipedia.org/wiki/MultiProcessor_Specification
2,http://en.wikipedia.org/wiki/Advanced_Configuration_and_Power_Interface
3,http://en.wikipedia.org/wiki/Intel_APIC_Architecture
4,http://www.acpi.info/

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值