怎么获取英特尔cpu架构有几种构


简要介绍Intel架构处理器的CPUID指令的规范在程序中的一般作用,以及微软Visual C++中对应的__cpuid / __cpuidex函数和我对这两个函数做的简单的类封装。
具体描述参考上面的Intel官方文本这里只做很简單的描述。加上一些Intel 241618文档里没有的内容
CPUID汇编指令接受输入的寄存器是EAX,存放需要的子功能号从0x00开始;存放输出的寄存器是EAX,EBXECX,EDXCPUID的孓功能集有两大类,基本和扩展
EAX = H 获得最大可用的扩展功能号
EAX = H 获得扩展CPU信息和支持的扩展CPU功能表
EAX = H 获得高级电源管理的属性描述 (APMI)
EAX = H 获得最夶可能访问的机器物理地址和虚拟地址,在32位机器上这个功能可以用来确定是否可以访问>4G内存。返回值存于EAX0-7比特位存放物理地址比特位数,如果是32就是4G如果是36就是64G;8-15比特位存放虚拟地址比特位数。
这两个函数是微软对CPUID汇编指令的C++封装易于使用,不再需要操作寄存器而是int32数组,方便高级程序访问CPU信息函数声明如下:
CPUID指令主要可用于判断Intel架构CPU的制造商,比如在一些细微的功能实现上,Intel和AMD有差别,要用到此功能的代码就需要先判断制造商.CPUID指令也可用来检测某功能是否支持,从而选择实现方式,比如判断当前CPU是否支持SSE2指令集,从而决定是采用优化浮點计算的SSE2,还是X87浮点计算.

我要回帖

更多关于 cpu核心架构 的文章

 

随机推荐