我有一个 Intel Core i5-2450m(2 个物理处理器和 4 个逻辑处理器),我想找到一种方法来计算 AMD 和 Intel CPU 上的逻辑和物理核心。
但是,经过一番搜索,我发现了一些奇怪的事情。我的代码没有返回 4 个逻辑单元,而是返回 16 个。
static int8_t LogicalProcCount(void)
{
if ( !Hyperthreading )
return 1;
uint32_t unused, ebx;
CPUID(1, unused, ebx, unused, unused);
return (int8_t) ( (ebx >> 16 ) & 0xFF );
}
CPUID.1:EBX[23:16]
代表最大数量可分配给物理封装中的逻辑处理器的可寻址 ID(初始 APIC ID)。
Source.
所以 16 与逻辑 CPU 的实际数量无关。在我的机器上CPUID.1:EBX[23:16]
也返回 16,尽管它有 8 个逻辑 CPU。
还可以在链接的白皮书中找到计算实际逻辑 CPU 数量的示例代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)