Intel系统编程指南第八章——8.8 多核架构

来源:互联网 发布:单元网络分线盒 编辑:程序博客网 时间:2024/05/16 09:39

本小节描述了支持双核和四核技术的Intel 64和IA-32处理器的架构。本讨论可应用于Intel奔腾处理器至尊版、奔腾D处理器、Intel酷睿Duo、双核Intel至强处理器、Intel酷睿2Quad处理器,以及四核Intel至强处理器。

 

通常而言,每个处理器核心具有专用的架构资源,与底层的不带硬件多线程性能微架构的一单个处理器实现相同。一个双核处理器中的每个逻辑处理器(不管是否支持Intel超线程技术)尤其自己的APIC功能、PAT、机器检查架构、调试寄存器和扩展。每个逻辑处理器处理串行化指令或作用在它自身上的自修改代码。存储器次序与Intel超线程技术相同的方式被处理。

 

Cache层级拓扑(关于一个所给的Cache层是被一个或多个处理器核心共享还是被物理包中的所有逻辑处理器共享)依赖于处理器实现。软件必须使用确定性的CPUID指令的Cache参数分枝来发现在一多线程环境中逻辑处理器之间的Cache共享拓扑。

 

8.8.1 逻辑处理器支持

 

处理器核心以及在一个多核处理器中的逻辑处理器的拓扑组成可以使用CPUID来发现。在每个处理器核心内,一个或多个逻辑处理器可能是可用的。在运行时,软件可以枚举那些由系统软件所允许的逻辑处理器,以标识在这些逻辑处理器之间的拓扑关系。(见8.9.5小节)

 

8.8.2 存储器类型范围寄存器(MTRR)

 

MTRR在共享一个处理器核心的两个逻辑处理器之间被共享,如果物理处理器支持Intel超线程技术。MTRR并不在位于不同处理器核心或不同物理包中的逻辑处理器之间被共享。

Intel 64和IA-32架构要求一个MP系统中的所有逻辑处理器使用一个相同的MTRR存储器映射。这给了软件一个存储器的一致性视野。

见11.11小节。

 

8.8.3 性能监视计数器

 

性能计数器以及它们的伴随控制MSR在共享一个处理器核心的两个逻辑处理器之间共享,如果处理器核心支持Intel超线程技术,并基于Intel NetBurst微架构(译者注:奔腾4处理器采用此微架构)。它们不在不同处理器核心中的逻辑处理器以及不同物理包中的逻辑处理器之间共享。这样,软件必须基于性能监视资源的拓扑,管理这些资源的使用。性能计数中断、事件、以及精确的事件监视支持可以基于每一线程(每个逻辑处理器)被建立和分配。

 

8.8.4 IA32_MISC_ENABLE MSR

 

IA32_MISC_ENABLE MSR(MSR地址1A0H)可以在共享一个处理器核心的两个逻辑处理器之间,或在一个物理处理器中的不同核心之间共享。见附录B。

 

8.8.5 微代码更新资源

 

微代码更新工具在共享一个处理器核心的两个逻辑处理器之间共享,如果物理包支持Intel超线程计技术。它们不在不同核心中的逻辑处理器之间,或不同物理包中的逻辑处理器之间共享。其中一个对微代码更新工具进行访问的逻辑处理器可以初始化一次更新。

每个逻辑处理器有其自己的BIOS签名MSR(IA32_BIOS_SIGN_ID在MSR地址8BH)。当一个逻辑处理器为物理处理器执行一次更新时,本地逻辑处理器的IA32_BIOS_SIGN_ID MSR(译者注:复数)用相同的信息更新。

 

注:某些处理器(在Intel 64架构被引入之前的,并基于NetBurst微架构的)不支持同时加载微代码更新到同一核心中的兄弟逻辑处理器。所有其它处理器支持逻辑处理器(译者注:复数)同时启动一次更新。Intel推荐一个公共的方法,微代码加载器使用在9.11.6.3小节所描述的串行技术。

原创粉丝点击