在《 Intel Intrinsics Guide》中,一些Intrinsics的底部都有“延迟和吞吐量信息”,列出了多个CPUID的性能。

例如,Intrinsics Guide中的表对于Intrinsic _mm_hadd_pd如下所示:

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?

我正在使用Kubuntu 12.04,并尝试使用sudo dmidecode -t 4和Ubuntu软件包中的小程序cpuid,但它们的输出并不是真正有用。

在以上命令的输出中的任何地方,都找不到《 Intrinsics Guide》中列出的任何字符串。

最佳答案

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



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

实际的CPUID为“family_model”。
以下代码可以完成这项工作:

#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;
}

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



希望能帮助到你。

关于intrinsics - 确定英特尔ID指南中列出的CPUID,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15368394/

10-10 15:35