1

我看到可以使用 CPUID 提取 CPU 规格,但我还没有看到像 SLB8X 这样提取 CPU 步骤代码的方法,SLB8X 是马来西亚制造的 Intel Xeon X3360 2.83 Ghz 12M 缓存和 1333Mhz。我相信相同的 CPU ID 信息与多个 CPU Step 代码有关。

这里是 Comp Sci 的 BS,但不是程序员,只是为我的程序员获取一些信息,看看上述是否可行。或者,Intel.com 和/或 AMD 上是否有将 CPUID 映射到 Step 代码的表?

4

2 回答 2

1

CPU 没有报告。您可以sudo dmidecode --type processor在 Linux 上找到处理器信息。您将获得诸如Signature: Type 0, Family 6, Model 45, Stepping 7

于 2013-08-15T20:42:49.133 回答
1

我将链接到步进 id 的表,但也许您的程序员会对功能表感兴趣,以便他们知道特定处理器支持哪些指令,也就是说,如果他们在低级别工作。即使不是,这也很有趣。

这个网站有这两个表: https ://www.felixcloutier.com/x86/cpuid

对于您正在寻找的某些信息,该网站说:

品牌索引方法(在 Pentium® III Xeon® 处理器中引入)提供了一个进入品牌标识表的入口点,该表由系统软件在内存中维护,并且可以从系统级和用户级代码访问......然后软件可以使用它索引以在品牌标识表中定位处理器的品牌标识字符串。

然后参考表 3-14,除非您已经有可以解释它的软件。

使用 01H 加载 EAX 可能是您的程序员所需要的,因为作为回报,您将在 EAX 中获得型号、系列和处理器类型,如下所示: 在此处输入图像描述 然后 EBX 中的值将是缓存线大小(EBX 的第二个字节)品牌索引( EBX 的低字节)和 APIC ID(EBX 的高字节)。

您可以使用以下方式检查这些值:

unsigned eax, ebx, ecx, edx;
if (__get_cpuid(0x00, &eax, &ebx, &ecx, &edx) == 0) {
    // cpuid not supported
}
if (eax < 0x14) {
    // leaf 0x14 not supported
}
__cpuid_count(0x14, 0x00, eax, ebx, ecx, edx); 
if ((ebx & 0x10) == 0) {
    // PTWRITE not supported
}
于 2019-07-09T19:28:13.277 回答