ScholarGate
助手

指令级并行

指令级并行(ILP)是指单个程序中多条指令同时执行的潜力,超标量处理器和超长指令字(VLIW)处理器通过每个周期发出并完成多条指令来利用这种潜力。

用 PaperMind 寻找选题即将推出Find papers & topics
Tools & resources
下载幻灯片
Learn & explore
视频即将推出

Definition

指令级并行是指单个程序的指令可以并行执行的程度;处理器通过在每个时钟周期发出、执行和完成多于一条指令来利用它,但受数据和控制依赖性的限制。

Scope

本主题涵盖单个指令流中可用的并行性以及硬件和编译器如何提取它:每个周期多条指令的超标量发射、超长指令字(VLIW)设计、依赖性分析、寄存器重命名和推测。它还涵盖了可用ILP的限制。它不包括跨核心和通道的线程级和数据级并行性(并行和多核架构)以及基本的单发射流水线(流水线和冒险)。

Core questions

  • 典型程序的指令之间固有地有多少并行性?
  • 超标量处理器如何决定哪些指令可以一起发射?
  • VLIW设计如何将寻找并行性的负担转移给编译器?
  • 哪些依赖性和冒险限制了可以实现的ILP?

Key concepts

  • 超标量发射
  • 超长指令字(VLIW)
  • 数据和名称依赖性
  • 寄存器重命名
  • 多功能单元
  • 推测
  • ILP限制
  • 每周期指令数(IPC)

Key theories

动态指令调度
硬件可以通过跟踪依赖性并将就绪指令调度到多个功能单元来在运行时发现和利用ILP;Tomasulo算法,通过保留站和寄存器重命名,是实现乱序并行发射的规范机制。

Mechanisms

超标量处理器每个周期获取和解码多条指令,检查它们的依赖性,重命名寄存器以消除虚假依赖性,并将独立的指令发射到多个功能单元。VLIW设计则依赖编译器将独立操作捆绑成宽指令字。真正的数据依赖性和控制流对可实现的并行性设定了上限,推测和更大的指令窗口试图扩展这个上限。

Clinical relevance

ILP技术推动了数十年的单线程性能增长,并且仍然是高性能CPU核心的核心。它们的收益递减——因为达到了可用并行性和复杂性的限制——是该行业转向多核和显式并行以进一步扩展的关键原因。

History

多功能单元和动态调度出现在20世纪60年代的CDC 6600和IBM System/360 Model 91中。超标量设计在20世纪90年代成为主流,而英特尔Itanium等VLIW架构则追求编译器驱动的并行性。20世纪90年代早期对ILP限制的研究阐明了为什么单个线程内的并行性是有限的。

Debates

硬件驱动与编译器驱动的ILP
超标量乱序硬件以复杂性和功耗为代价动态地寻找并行性,而VLIW依赖编译器静态地调度并行性;经验表明,动态方法在不同工作负载下更健壮,而静态方法对于可预测、低功耗的设计仍然具有吸引力。

Key figures

  • Robert Tomasulo
  • Yale Patt
  • John L. Hennessy
  • Joseph A. Fisher
  • James E. Smith

Related topics

Seminal works

  • hennessy2019
  • tomasulo1967

Frequently asked questions

超标量和VLIW有什么区别?
两者都每个周期执行多个操作。超标量处理器在运行时由硬件决定哪些指令可以一起发射;VLIW处理器则依赖编译器提前将独立操作分组为宽指令,这简化了硬件但对编译器要求更高。
为什么指令级并行性存在限制?
实际程序具有真正的数据依赖性和频繁的分支,这限制了可以并行运行的指令数量。超过一定窗口,可实现的并行性会饱和,因此提取更多ILP相对于增加的硬件复杂性和功耗而言收益递减。

Methods for this concept

Related concepts