在英特尔内部指南中,几个内在函数的底部有"延迟和吞吐量信息",列出了几个CPUID的性能.
例如,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
Run Code Online (Sandbox Code Playgroud)
现在:我如何确定我的CPU有哪些ID?
我正在使用Kubuntu 12.04并尝试使用Ubuntu软件包中sudo dmidecode -t 4的小程序cpuid,但它们的输出并不是很有用.
我无法在上面命令的输出中的任何位置找到"内在指南"中列出的任何字符串.
小智 1
您可以使用 CPUID 指令获取该信息,其中
\n\n\n\n\n扩展系列位位置 20 到 27 与位位置 8 到 11 中指定的系列代码结合使用,以指示处理器是否属于 Intel386、Intel486、Pentium、Pentium Pro 或 Pentium 4 系列处理器。P6\n 系列处理器包括基于 Pentium Pro 处理器架构\n 的所有处理器,并具有等于 00h\n 的扩展系列和等于 06h 的系列代码。Pentium 4\n 系列处理器包括基于 Intel NetBurst\xc2\xae 微体系结构\n 的所有处理器,并具有等于 00h 的扩展系列和等于 0Fh 的系列代码。
\n\n位位置 16 到 19 中指定的扩展型号与位 4 到 7 中指定的型号一起用于识别处理器中的处理器型号\xe2\x80\x99s家庭。
\n
有关详细信息,请参阅第 22 页“英特尔处理器标识和 CPUID 指令” 。
\n\n实际的 CPUID 是“family_model”。\n以下代码应该完成这项工作:
\n\n#include "stdio.h"\n\nint main () {\n\n int ebx = 0, ecx = 0, edx = 0, eax = 1;\n __asm__ ("cpuid": "=b" (ebx), "=c" (ecx), "=d" (edx), "=a" (eax):"a" (eax));\n\n int model = (eax & 0x0FF) >> 4;\n int extended_model = (eax & 0xF0000) >> 12;\n int family_code = (eax & 0xF00) >> 8;\n int extended_family_code = (eax & 0xFF00000) >> 16;\n\n printf ("%x %x %x %x \\n", eax, ebx, ecx, edx);\n printf ("CPUID: %02x %x\\n", extended_family_code | family_code, extended_model | model);\n return 0;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n对于我的电脑,我得到:
\n\n\n\n\nCPUID:06_25
\n
希望能帮助到你。
\n| 归档时间: |
|
| 查看次数: |
1430 次 |
| 最近记录: |