在《 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/