我看到使用CPUID提取CPU规格是可能的,但是我还没有看到像SLB8X那样提取CPU步长代码的方法,它是在马来西亚制造的英特尔至强X3360 2.83 Ghz 12M高速缓存和1333 Ghz。我相信相同的CPU ID信息与多个CPU步骤代码相关。
这里是Comp Sci的BS,但不是程序员,只是为我的程序员获取一些信息,看看上面的情况是否可行。或者,在Intel.com和/或AMD上是否有一个表将CPUID映射到Step代码?
发布于 2013-08-16 04:42:49
CPU不报告这一点。您可以在Linux上使用sudo dmidecode --type processor查找处理器信息。您将获得诸如Signature: Type 0, Family 6, Model 45, Stepping 7之类的信息
发布于 2019-07-10 03:28:13
我将链接到步进if的表,但您的程序员可能会对功能表感兴趣,这样他们就可以知道特定处理器支持哪些指令,也就是说,如果他们在这么低的级别上工作。即使不是,知道这一点也很有趣。
此站点包含这两个表:https://www.felixcloutier.com/x86/cpuid
对于你正在寻找的一些特别的信息,这个网站说:
品牌索引方法(在奔腾®III Xeon®处理器中引入)提供了一个进入品牌标识表的入口点,该表由系统软件在内存中维护,可从系统级和用户级代码访问...然后,软件可以使用该索引在品牌标识表中定位处理器的品牌标识字符串。
然后参考表3-14,除非你已经有可以解释它的软件。
使用01H加载EAX可能是您的程序员所需要的全部,因为作为回报,您将获得EAX中的型号、系列和处理器类型,如下所示:

然后,EBX中的值将是缓存线大小(EBX的第二个字节)、品牌索引(EBX的低字节)和APIC (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
}https://stackoverflow.com/questions/18261345
复制相似问题