检查 x86 CPU 特性¶
语法¶
cpuid [--ext] [--ecx] <bit number>
示例¶
检查 CPU 是否支持 64 位运算("long mode")¶
cpuid --ext 29 && set arch x86_64 || set arch i386
检查 CPU 是否支持物理地址扩展("PAE")¶
cpuid 6 && set pae yes ||
检查 CPU 是否支持硬件虚拟化¶
cpuid --ecx 5 && set vmx yes ||
cpuid --ext --ecx 2 && set svm yes ||
isset ${vmx} || isset ${svm} && set hw_virt yes ||
描述¶
使用 CPUID 指令检查指定的 x86 CPU 特性是否存在。如果指定了 --ext 选项,则检查扩展特性集,否则检查标准特性集。如果指定了 --ecx 选项,则检查包含在 %ecx 寄存器中的特性集,否则检查包含在 %edx 寄存器中的特性集。
一些常用的可检查特性:
| 特性集 | 寄存器 | 位 | 特性 | 命令 |
|---|---|---|---|---|
| 扩展 | %edx |
29 | 长模式(64 位) | cpuid --ext 29 |
| 标准 | %edx |
28 | 超线程(HTT) | cpuid 28 |
| 标准 | %edx |
6 | 物理地址扩展(PAE) | cpuid 6 |
| 标准 | %ecx |
5 | Intel 虚拟机扩展(VMX) | cpuid --ecx 5 |
| 扩展 | %ecx |
2 | AMD 安全虚拟机(SVM) | cpuid --ext --ecx 2 |
| 标准 | %edx |
15 | 条件传送(CMOV) | cpuid 15 |
命令状态¶
| 成功 | 指定的 x86 CPU 特性存在 |
|---|---|
| 失败 | 指定的 x86 CPU 特性不存在 |
另请参阅¶
setCPUID_SETTINGS构建选项- iPXE 脚本指南
- 全部 iPXE 命令列表
备注¶
标准特性集表示以 %eax=0x00000001 调用 CPUID 时 %ecx 和 %edx 返回的值。
扩展特性集表示以 %eax=0x80000001 调用 CPUID 时 %ecx 和 %edx 返回的值。