首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确定Intel Intrinsics Guide中列出的CPUID

确定Intel Intrinsics Guide中列出的CPUID
EN

Stack Overflow用户
提问于 2013-03-13 01:46:54
回答 1查看 1.7K关注 0票数 5

在Intel Intrinsics Guide中,在几个Intrinsics的底部有'Latency and Throughput Information‘,列出了几个CPUID的性能。

例如,对于固有_mm_hadd_pd,《内部指南》中的表如下所示

代码语言:javascript
复制
CPUID(s)               Parameters   Latency   Throughput
0F_03                                    13            4
06_2A                  xmm1, xmm2         5            2
06_25/2C/1A/1E/1F/2E   xmm1, xmm2         5            2
06_17/1D               xmm1, xmm2         6            1
06_0F                  xmm1, xmm2         5            2

现在:我如何确定我的CPU拥有什么ID?

我正在使用Kubuntu12.04,并尝试使用sudo dmidecode -t 4和Ubuntu包中的小程序cpuid,但它们的输出并不是很有用。

在上述命令的输出中,我找不到Intrinsics Guide中列出的任何字符串。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-08 00:16:41

您可以使用CPUID指令获取该信息,其中

在扩展系列中,位位置20至27与在位位置8至11中指定的系列代码一起使用,以指示处理器是否属于Intel386、Intel486、奔腾、奔腾Pro或奔腾4系列处理器。P6系列处理器包括基于Pentium Pro处理器体系结构的所有处理器,并且具有等于00h的扩展系列和等于06h的系列代码。奔腾4家族处理器包括所有基于英特尔NetBurst®微体系结构的处理器,其扩展家族等于00h,家族代码等于0Fh。

位位置16到19中指定的扩展型号与位4到7中指定的型号一起用于标识处理器系列中处理器的型号。

有关更多详细信息,请参阅第22页的Intel Processor Identification and the CPUID Instruction

那么实际的CPUID就是"family_model“。下面的代码应该可以完成这项工作:

代码语言:javascript
复制
#include "stdio.h"

int main () {

  int ebx = 0, ecx = 0, edx = 0, eax = 1;
  __asm__ ("cpuid": "=b" (ebx), "=c" (ecx), "=d" (edx), "=a" (eax):"a" (eax));

  int model = (eax & 0x0FF) >> 4;
  int extended_model = (eax & 0xF0000) >> 12;
  int family_code = (eax & 0xF00) >> 8;
  int extended_family_code = (eax & 0xFF00000) >> 16;

  printf ("%x %x %x %x \n", eax, ebx, ecx, edx);
  printf ("CPUID: %02x %x\n", extended_family_code | family_code, extended_model | model);
  return 0;
}

对于我的计算机,我得到:

CPUID: 06_25

希望能有所帮助。

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

https://stackoverflow.com/questions/15368394

复制
相关文章

相似问题

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