Intel 64/x86_64/IA-32/x86处理器指令集 - CPUID (2) - 起源

CPUID Origination 

随着Intel处理器架构的演进与更新换代(8086,8088,Intel286,Intel386™,Intel486™和Pentium™处理器),提供一套完善的方法供软件程序侦测处理器的标识和特性就变得越来越迫切。Intel提供的标识机制与Intel处理器架构一起协同演变:

  • 最初,Intel发布了代码序列,这个序列可以用来侦测处理器各代之间特性上的细微差别。
  • 之后,随着Intel386处理器的诞生,Intel实现了处理器签名标识机制,在重置时为软件提供了处理的家族,型号,和步进号
  • 伴随着Intel体系结构的演化,Intel将处理器的签名标识机制扩展进了CPUID指令,该指令不但提供了处理器签名信息,还提供了该处理器支持并实现的特性信息。

处理器标识机制的演变是必须的,因为随着Intel处理器体系结构的不断增殖,计算市场必须可以根据各代处理器的不同特性来调优功能。Intel预期到未来的处理器调优的特点和趋势,在Intel架构上实现CPUID指令时也将其设计为具有可扩展性。

第一篇讲述CPUID指令的专题文献是1993年5月发布的AP-485,Order#: 241618。目前找到的最早的版本是94年9月发布的第三版,Order#:241618-003;最新版是2012年5月发布的第39版,Order#:241618-039。

 

https://a4lg.com/tech/x86/database/x86-families-and-models.en.html#references

Intel宣称AP-485已经过时且其内容已经合并入SDM文档中,但是实际上还是有一些内容并未并入,所以依然具有历史和实用参考价值。

 

处理器的标志寄存器EFLAGS的bit21指示该处理器是否支持CPUID指令。不要直接测试这个比特位是否为1来判断处理器是否支持CPUID指令。正确是的方法是:如果软件可以设置并清除这个比特位,则说明该处理器支持CPUID指令。CPUID的指令的操作在64位模式和非64位模式上是相同的。

CPUID指令可以在任何特权级下调用,用来串行化指令执行。指令执行串行化保证了前条指令(即CPUID之前的指令)对内存,寄存器,标志位的修改都完成之后,才会读取并执行下一条指令(即CPUID之后的指令)。

对CPUID指令的详细解释和用法可以参看Intel SDM Vol2:ISR文档和最新版的AP-485文档。

你可能感兴趣的:(Intel指令集)