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 64/x86_64/IA-32/x86处理器指令集 - CPUID (2) - 起源相关推荐

  1. Intel 64/x86_64/IA-32/x86处理器指令集 - CPUID (1) - 概述

    CPUID指令 Introduction of CPUID instruction 根据Wikipedia,CPUID指令是x86处理器体系结构的补充指令,使得软件可以枚举当前运行的处理器的详细特性, ...

  2. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(1) - 概述/历史/新数据类型/XMM寄存器组

    SSE Instructions SSE Overview & History Intel SSE技术的全称是Streaming SIMD Extension,中文译作流式单指令多数据指令扩展 ...

  3. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - MMX技术(1) - 概述 传输指令

    MMX™ Instructions IA-32架构引入了4个指令集扩展,使得IA-32处理器可以执行单指令多数据SIMD操作.这些扩展包括MMX技术,SSE扩展,SSE2扩展,SSE3扩展. MMX指 ...

  4. Intel 64/x86_64/IA-32/x86处理器段寄存器 - 32位段寄存器/64位段寄存器

    Segment Registers 本节主要讲述Intel处理器中的段寄存器,用于支持处理器的段式存储器管理机制.16位的8086/Intel286处理器有4个段寄存器CS/DS/SS/ES.32位的 ...

  5. Intel 64/x86_64/IA-32/x86处理器基本执行环境 (1) - 32位执行环境概述

    Basic Execution Environment Overview IA-32处理器提供了一套完整的资源,在处理器上运行的程序/任务可以执行指令,存储代码,数据以及状态信息.这些资源(如下简要的 ...

  6. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(7) - 混洗指令 解组合指令

    SSE Shuffle and Unpack Instructions SSE的混洗指令与解组合指令混洗shuffle或交错interleave单精度浮点操作数,并将结果保存到目标操作数. 指令 描述 ...

  7. Intel 64/x86_64/IA-32/x86处理器 - 锁原子操作(2) - 总线封锁/缓存封锁

    Bus Locking Intel 64和IA-32处理器提供了LOCK#信号,在某些关键的访存操作时会自动地激活assert这个信号,用于封锁系统总线或类似的链接.当这个输出信号被激活时,就会阻塞来 ...

  8. Intel 64/x86_64/IA-32/x86处理器 - 锁原子操作(1) - 处理器保证的原子操作

    Locked Atomic Operations 32位的IA-32处理器支持对系统内存中的位置执行"加锁的原子操作".这些操作通常用于管理共享的数据结构(例如信号量,段描述符,系 ...

  9. Intel 64/x86_64/x86/IA-32处理器串行化指令(1) - 概述

    Serializing Instructions 注:串行化指令的概念非常容易理解,但是要用好(在哪里用,何时用)则需要深厚的处理器架构和流水线乱序执行的功底.好在大部分应用程序不会用到这类指令. I ...

最新文章

  1. 计算机科学NIP,NIP自然语言处理主要应用在哪些领域呢?
  2. mysql count() 写法,MySQL COUNT()用法及代碼示例
  3. android银行卡匹配、详情展开动画、仿爱奇艺视频拖拽、扫码识别手机号等源码...
  4. gui显示文本动态框
  5. 用python画雪花飘落_简单说 JavaScript实现雪花飘落效果
  6. 米斯特白帽培训讲义 漏洞篇 代码执行
  7. 软件测试都需要哪些工具呢?一文带你看清
  8. 纵向取模需要自己倒叙吗_我能自己完成混音工作吗?需要掌握哪些知识?
  9. 项目介绍star原理_TiDB-Wasm 原理与实现 | Hackathon 优秀项目介绍
  10. AI公开课:03月26日未来十年 AI如何进化—圆桌探讨(乌镇智库理事长、CSDN 创始人董事长、智源人工智能研究院副院长)之《AI:昨天 · 今天 · 明天》
  11. Openbravo ERP介绍
  12. android 获取快捷开关_6款快捷开关式实用安卓小插件推荐 简化Android设备操作
  13. 【论文翻译-3】Attention U-Net: Learning Where to Look for the Pancreas
  14. mktime 的选择
  15. B树、B+树、B-树特点整合
  16. 基于LCL滤波器的单相光伏逆变器控制设计 的MATLAB-Simulink仿真
  17. Hbase 热点问题3种解决方案
  18. 致毕业生:那些年我们错过的“BAT” 1
  19. Go 开源项目推荐:一个简单的 Go 练手项目
  20. mongodb多数据源配置

热门文章

  1. linux默认权限二进制与,Linux系统文件的默认权限和特殊权限
  2. react native多语言_前端福音:为什么使用 React 和 SVG 开发图形 UI 是天作之合?
  3. note_maven中的常用命令
  4. matlab求根的原程序,MATLAB求根程序求帮助
  5. python写列表和字典_python基础之列表跟字典
  6. python return返回值_Python return语句 函数返回值
  7. 且用计算机语言怎么表示,用计算机语言表示算法.doc
  8. linux proc io,在/proc/[pid]/io 中,理解计数器_linux-kernel_开发99编程知识库
  9. python exe enter退出,Python程序退出处理程序(atexit)
  10. 稳定性测试怎么测_心理测试:选择你喜爱的一种食物,测你2020年的运势怎么样...