摘要
简要介绍Intel架构处理器的CPUID指令的规范,在程序中的一般作用,以及微软Visual C++中对应的__cpuid / __cpuidex函数,和我对这两个函数做的简单的类封装。
下载 Intel® Processor Identification and the CPUID Instruction
CPUID 指令
具体描述参考上面的Intel官方文本,这里只做很简单的描述。加上一些Intel 241618文档里没有的内容。
CPUID汇编指令接受输入的寄存器是EAX,存放需要的子功能号,从0x00开始;存放输出的寄存器是EAX,EBX,ECX,EDX。CPUID的子功能集有两大类,基本和扩展。
基本功能:
EAX = 00H 获得最大可用的基本功能号,以及CPU Vendor ID
EAX = 01H 获得CPU各项基本属性,包括Family, Model, Stepping ID, 和其他特性支持描述符
EAX = 02H CPU缓存和TLB的基本描述
EAX = 03H CPU序列号 (由于隐私考虑,在Pentium III以后处理器中该功能被禁止)
扩展功能:<