处理器微架构
处理器微架构是实现指令集架构的内部硬件组织,包括流水线、执行单元、寄存器重命名和控制逻辑,这些组件将指令流尽可能快地转换为计算结果。
用 PaperMind 寻找选题即将推出Find papers & topics
Tools & resources
Learn & explore
视频即将推出
Definition
微架构是处理器的具体逻辑组织——其流水线阶段、功能单元、缓冲区和控制——它在追求高性能和效率的同时,实现了指令集架构所规定的行为。
Scope
本领域涵盖了处理器在ISA接口之下的构建方式:数据通路和控制、流水线及其限制因素(如冒险)、提取指令级并行性的技术、分支预测、推测执行和乱序执行,以及保持执行单元忙碌的调度结构。它不包括可见的指令集本身(指令集架构)和缓存第一级之外的内存子系统(内存层次结构和缓存),以及多核组织(并行和多核架构)。
Sub-topics
Core questions
- 流水线如何重叠指令执行?哪些结构冒险、数据冒险和控制冒险限制了它?
- 程序中存在多少指令级并行性?硬件如何提取它?
- 分支预测如何降低深度流水线中控制冒险的成本?
- 乱序执行和寄存器重命名如何在保持程序语义的同时暴露并行性?
- 在微架构设计中,性能、功耗和复杂性之间如何权衡?
Key concepts
- 数据通路和控制
- 指令流水线
- 结构冒险、数据冒险和控制冒险
- 转发和旁路
- 指令级并行性
- 分支预测
- 推测执行
- 乱序执行
- 寄存器重命名
- 超标量发射
Key theories
- 流水线
- 将多条指令的执行分阶段重叠可以提高指令吞吐量;可实现的加速受限于流水线深度以及由冒险和依赖关系引起的停顿。
- 动态调度和寄存器重命名
- Tomasulo算法通过保留站和公共数据总线将指令动态调度到执行单元并重命名寄存器,允许指令乱序执行同时遵守真正的数据依赖性——这是现代乱序处理器的基础。
Mechanisms
流水线处理器将指令处理分成多个阶段(取指、译码、执行、访存、写回),以便同时处理多条指令。冒险——所需的计算结果尚未就绪、资源冲突或未解决的分支——通过转发、停顿、预测和推测来处理。超标量乱序核心增加了保留站、重排序缓冲区和重命名机制,使得独立指令一旦其操作数就绪即可执行,并且结果按程序顺序提交。
Clinical relevance
微架构决定了处理器的实际速度和能效:流水线、超标量发射和乱序执行是几乎所有现代CPU性能的基础。微架构设计也具有安全隐患——推测执行侧信道(如Spectre和Meltdown)直接源于性能特性。
History
流水线和多功能单元在20世纪60年代的IBM System/360 Model 91和CDC 6600中出现,Tomasulo在此引入了动态调度。20世纪80年代的RISC微架构使深度流水线成为主流,而超标量乱序设计在20世纪90年代和21世纪初成为高性能CPU的主导。激进的推测后来暴露了2018年公开的微架构侧信道问题。
Debates
- 激进推测与安全性及效率的权衡
- 深度推测乱序执行提高了单线程性能,但增加了功耗,并导致了瞬态执行安全攻击,引发了关于相对于更简单、更高效或更可预测的设计,多少推测是值得的争论。
Key figures
- Robert Tomasulo
- John L. Hennessy
- David A. Patterson
- Yale Patt
- James E. Smith
Related topics
Seminal works
- hennessy2019
- tomasulo1967
- patterson2020
Frequently asked questions
- 顺序执行和乱序执行有什么区别?
- 顺序处理器严格按照程序顺序执行指令,当指令的操作数未就绪时会停顿。乱序处理器执行任何操作数已就绪的指令,使用缓冲区和重命名来重新排序执行,同时仍按程序顺序提交结果。
- 为什么分支预测很重要?
- 深度流水线在分支方向未知之前就开始取指和执行指令。准确的分支预测使处理器能够沿着可能的路径保持流水线满载;错误的预测会浪费推测性工作并导致多周期惩罚。