首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >英特尔威斯特米尔2芯片组的CPU核心排序/编号

英特尔威斯特米尔2芯片组的CPU核心排序/编号
EN

Stack Overflow用户
提问于 2011-06-20 19:04:33
回答 2查看 275关注 0票数 0

我用的是英特尔威斯特米尔处理器。韦斯特米尔的体系结构由12个CPU核心组成,配置在两片芯片上.这意味着每个芯片包含6个核心。

我不知道CPU核心是如何排序或编号的。我的猜测是,它可以有以下任何一种:

  1. 核0,1,2,3,4和5在一个芯片上,核6,7,8,9,10和11在第二芯片上
  2. 核0,2,4,6,8和10在一个芯片上,核1,3,5,7,9和11在第二芯片

上。

有人知道CPU核心的排序/编号吗?

EN

回答 2

Stack Overflow用户

发布于 2013-09-06 00:16:09

有关更多信息,您可以尝试使用以下工具:http://software.intel.com/en-us/articles/intel-64-architecture-processor-topology-enumeration

这是确定这一点的官方工具。

下面是一个运行在两个物理英特尔X5560 (6core+6HT)运行CentOS 5.3的机器上的示例(可能有点旧)。

代码语言:javascript
运行
复制
Package 0 Cache and Thread details

Box Description:
Cache  is cache level designator
Size   is cache size
OScpu# is cpu # as seen by OS
Core   is core#[_thread# if > 1 thread/core] inside socket
AffMsk is AffinityMask(extended hex) for core and thread
CmbMsk is Combined AffinityMask(extended hex) for hw threads sharing cache
       CmbMsk will differ from AffMsk if > 1 hw_thread/cache
Extended Hex replaces trailing zeroes with 'z#'
       where # is number of zeroes (so '8z5' is '0x800000')
L1D is Level 1 Data cache, size(KBytes)= 32,  Cores/cache= 2, Caches/package= 4
L1I is Level 1 Instruction cache, size(KBytes)= 32,  Cores/cache= 2, Caches/package= 4
L2 is Level 2 Unified cache, size(KBytes)= 256,  Cores/cache= 2, Caches/package= 4
L3 is Level 3 Unified cache, size(KBytes)= 8192,  Cores/cache= 8, Caches/package= 1
      +-----------+-----------+-----------+-----------+
Cache |  L1D      |  L1D      |  L1D      |  L1D      |
Size  |  32K      |  32K      |  32K      |  32K      |
OScpu#|    0     8|    1     9|    2    10|    3    11|
Core  |c0_t0 c0_t1|c1_t0 c1_t1|c2_t0 c2_t1|c3_t0 c3_t1|
AffMsk|    1   100|    2   200|    4   400|    8   800|
CmbMsk|  101      |  202      |  404      |  808      |
      +-----------+-----------+-----------+-----------+

Cache |  L1I      |  L1I      |  L1I      |  L1I      |
Size  |  32K      |  32K      |  32K      |  32K      |
      +-----------+-----------+-----------+-----------+

Cache |   L2      |   L2      |   L2      |   L2      |
Size  | 256K      | 256K      | 256K      | 256K      |
      +-----------+-----------+-----------+-----------+

Cache |   L3                                          |
Size  |   8M                                          |
CmbMsk|  f0f                                          |
      +-----------------------------------------------+

Combined socket AffinityMask= 0xf0f

Package 1 Cache and Thread details

Box Description:
Cache  is cache level designator
Size   is cache size
OScpu# is cpu # as seen by OS
Core   is core#[_thread# if > 1 thread/core] inside socket
AffMsk is AffinityMask(extended hex) for core and thread
CmbMsk is Combined AffinityMask(extended hex) for hw threads sharing cache
       CmbMsk will differ from AffMsk if > 1 hw_thread/cache
Extended Hex replaces trailing zeroes with 'z#'
       where # is number of zeroes (so '8z5' is '0x800000')
      +-----------+-----------+-----------+-----------+
Cache |  L1D      |  L1D      |  L1D      |  L1D      |
Size  |  32K      |  32K      |  32K      |  32K      |
OScpu#|    4    12|    5    13|    6    14|    7    15|
Core  |c0_t0 c0_t1|c1_t0 c1_t1|c2_t0 c2_t1|c3_t0 c3_t1|
AffMsk|   10   1z3|   20   2z3|   40   4z3|   80   8z3|
CmbMsk| 1010      | 2020      | 4040      | 8080      |
      +-----------+-----------+-----------+-----------+

Cache |  L1I      |  L1I      |  L1I      |  L1I      |
Size  |  32K      |  32K      |  32K      |  32K      |
      +-----------+-----------+-----------+-----------+

Cache |   L2      |   L2      |   L2      |   L2      |
Size  | 256K      | 256K      | 256K      | 256K      |
      +-----------+-----------+-----------+-----------+

Cache |   L3                                          |
Size  |   8M                                          |
CmbMsk| f0f0                                          |
      +-----------------------------------------------+
票数 1
EN

Stack Overflow用户

发布于 2011-09-17 12:45:06

他们应该是交错的,以便采取连续的核心尽可能地分散负荷。如果0和1在同一个芯片上,那么只使用两个核的简单代码就会浪费掉一半的缓存。

因此,有编号的核心应该首先替换物理CPU。如果可能的话,他们应该下一次交替死亡。然后,他们应该在一个单一的模具上通过核心。如果可能的话,它们应该包括虚拟核。

因此,如果您有两个物理CPU (P1,P2),每个双核(C1,C2)和每个超线程(V1,V2),那么核心应该是: P1C1V1、P2C1V1、P1C2V1、P2C2V1、P1C1V2、P2C1V2、P1C2V2、P2C2V2。

其基本原理是允许不了解CPU拓扑的代码只获取尽可能多的核心,因为它知道如何使用并获得最佳性能。如果您只能支持两个核心,那么您需要的是P1C1V1和P2C1V1,而不是P1C1V1和P1C1V2,否则就会浪费大量的缓存和执行单元。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6416099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档