超长指令字

编辑
本词条由“匿名用户” 建档。

超长指令字(VLIW)是指旨在利用指令级并行性(ILP)的指令集架构。传统的中央处理器(CPU、处理器)大多允许程序指定指令仅按顺序执行,而VLIW处理器允许程序明确指定指令并行执行。这种设计旨在允许更高的性能,而没有一些其他设计固有的复杂性。 提高处理器性能的传统方法包括将指令分成子步骤,以便可以同时执行部分指令(称为流水线),分派单个指令在处理器的不同部分独立执行(超标量架构),甚至以不同于程...

超长指令字

编辑

超长指令字 (VLIW) 是指旨在利用指令级并行性 (ILP) 的指令集架构。 传统的中央处理器(CPU、处理器)大多允许程序指定指令仅按顺序执行,而 VLIW 处理器允许程序明确指定指令并行执行。 这种设计旨在允许更高的性能,而没有一些其他设计固有的复杂性。

概览

编辑

提高处理器性能的传统方法包括将指令分成子步骤,以便可以同时执行部分指令(称为流水线),分派单个指令在处理器的不同部分独立执行(超标量架构),甚至 以不同于程序的顺序执行指令(乱序执行)。 这些方法都使硬件变得复杂(更大的电路、更高的成本和能源使用),因为处理器必须在内部做出所有决定才能使这些方法起作用。 相比之下,VLIW 方法依赖于提供有关同时执行哪些指令以及如何解决冲突的所有决策的程序。 实际上,这意味着编译器(用于创建最终程序的软件)变得更加复杂,但硬件比许多其他并行方式要简单。

动机

编辑

一个接一个地执行每条指令的处理器(即非流水线标量架构)可能会低效地使用处理器资源,从而产生潜在的不良性能。 通过同时执行顺序指令的不同子步骤(称为流水线),或者甚至像在超标量架构中一样完全同时执行多条指令,可以提高性能。 通过以不同于它们在程序中出现的顺序执行指令,称为乱序执行,可以实现进一步的改进。

这三种方法都增加了硬件复杂度。 在并行执行任何操作之前,处理器必须验证指令没有相互依赖性。 例如,如果xxx条指令的结果用作第二条指令的输入,则它们不能同时执行,第二条指令不能在xxx条指令之前执行。 现代乱序处理器增加了用于调度指令和确定相互依赖性的硬件资源。

相比之下,VLIW 根据固定的时间表并行执行操作,该时间表在编译程序时确定。 由于确定操作的执行顺序(包括哪些操作可以同时执行)是由编译器处理的,因此处理器不需要上述三种方法所需的调度硬件。 因此,与大多数超标量 CPU 相比,VLIW CPU 以更低的硬件复杂性(但更高的编译器复杂性)提供更多的计算。 这也是对在程序执行之前、在编译时应该完成尽可能多的计算的想法的补充。

设计

编辑

在超标量设计中,执行单元的数量对指令集是不可见的。 每条指令只编码一个操作。 对于大多数超标量设计,指令宽度为 32 位或更少。

相比之下,一个 VLIW 指令编码多个操作,至少一个操作用于设备的每个执行单元。 例如,如果一个 VLIW 设备有五个执行单元,则该设备的 VLIW 指令有五个操作字段,每个字段指定应该在相应的执行单元上执行什么操作。 为了适应这些操作字段,VLIW 指令通常至少有 64 位宽,在某些体系结构上甚至更宽。

例如,下面是超级哈佛架构单片机(SHARC)的指令。 在一个周期内,它执行一次浮点乘法、一次浮点加法和两次自动递增加载。 所有这些都适合一条 48 位指令:

f12 = f0 * f4, f8 = f8 + f12, f0 = dm(i0, m3), f4 = pm(i8, m9);

从最早的计算机体系结构开始,一些 CPU 就添加了几个算术逻辑单元 (ALU) 以并行运行。

超长指令字

超标量 CPU 使用硬件来决定哪些操作可以在运行时并行运行,而 VLIW CPU 使用软件(编译器)来决定哪些操作可以提前并行运行。 由于将指令调度的复杂性转移到编译器中,可以xxx降低硬件的复杂性。

当可并行化指令的结果用作分支的输入时,会出现类似的问题。 大多数现代 CPU 甚至在计算完成之前就猜测将采用哪个分支,以便它们可以加载该分支的指令,或者(在某些体系结构中)甚至开始推测性地计算它们。

内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/196093/

(1)
词条目录
  1. 超长指令字
  2. 概览
  3. 动机
  4. 设计

轻触这里

关闭目录

目录