从 CPUID 获取 CPU Step Code

Posted

技术标签:

【中文标题】从 CPUID 获取 CPU Step Code【英文标题】:Obtaining CPU Step Code from CPUID 【发布时间】:2013-08-15 20:36:05 【问题描述】:

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

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

【问题讨论】:

我认为您想要“规格代码”(而不是“步骤代码”)。如果这是正确的,请参阅superuser.com/questions/324584/…(已接受答案中的脚注)。大多数情况下(来自软件)它最终会变成一个巨大的表格驱动的混乱(从 CPUID 的 CPU 的“系列、型号、步进”开始)。 【参考方案1】:

CPU 没有报告。您可以在 Linux 上使用sudo dmidecode --type processor 查找处理器信息。你会得到Signature: Type 0, Family 6, Model 45, Stepping 7等信息

【讨论】:

【参考方案2】:

我将链接到步进 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

【讨论】:

以上是关于从 CPUID 获取 CPU Step Code的主要内容,如果未能解决你的问题,请参考以下文章

在 Raspberry Pi 4B 上获取 CPU 供应商 ID,例如 x86 CPUID?

汇编实现获取CPU信息

如何使用 CPUID 查找主板信息?

如何获取多核,多cpu系统中指定cpu的序列号

C语言怎么取CPU的各项信息?

CPUID — CPU Identification