Parallel processing 指令级并行(ILP)方法

Parallel processing 指令级并行(ILP)方法,parallel-processing,pipeline,cpu-architecture,vliw,Parallel Processing,Pipeline,Cpu Architecture,Vliw,我试图了解指令级并行中使用的方法以及它们之间的差异。我这里的问题是,如果一个指令集最初是在没有指令级并行的处理器上运行的,那么为了在新处理器上实现指令级并行,可以使用哪种方法,以及为什么/如何实现。新处理器将执行相同的指令集,并运行与原始处理器相同的程序二进制文件,但性能会更好。这些选择包括: 1) 无序执行(Tomasulo算法) 2) 流水线 3) 超标量 4) VLIW我想说OOO将是第一件能够大大提高ILP的事情。OOO体系结构是完全独立于编译器工作的硬件技术(这意味着OOO体系结构将在

我试图了解指令级并行中使用的方法以及它们之间的差异。我这里的问题是,如果一个指令集最初是在没有指令级并行的处理器上运行的,那么为了在新处理器上实现指令级并行,可以使用哪种方法,以及为什么/如何实现。新处理器将执行相同的指令集,并运行与原始处理器相同的程序二进制文件,但性能会更好。这些选择包括:

1) 无序执行(Tomasulo算法)

2) 流水线

3) 超标量


4) VLIW

我想说OOO将是第一件能够大大提高ILP的事情。OOO体系结构是完全独立于编译器工作的硬件技术(这意味着OOO体系结构将在没有OOO的情况下执行CPU的相同计算,并在不改变指令结构的情况下以更少的时间产生相同的结果)

管道衬砌是一种众所周知的提高ILP的古老技术,但它有其局限性,增加阶段会增加硬件复杂性,最终会带来递减的回报

VLIW和superscalar本质上是相同的,但它们是不同的并行方式,它们需要特殊的硬件和特殊的编译器,因此它们与传统的控制流体系结构不兼容。 这种技术基本上依赖于编译器将多条指令打包到一个可以并行执行的超长指令字(VLIW)中。

从流水线开始。这是通过重叠提取、解码、执行等实现ILP的最古老和最好的方法。。。多个指令的集合。这是如此普遍,任何真正的CPU有OOO,顺序,超标量,VLIW。。。为实现ILP,还将采用管道

是的,OOO将实现ILP。下面的第一条和第三条指令可以并行执行OOO,而第二条指令必须等待第一条指令完成(在r1上)。CPU调度程序必须动态查找第三条指令OOO

ld  r1, 0(r2)
add r2, r1, r3
add r4, r3, r5
您没有按顺序提到,但它也可以实现ILP。第一条和第二条指令可以并行执行,但第三条指令必须等待第一条指令完成,因为它在r1上也有原始危险

ld  r1, 0(r2)
add r4, r3, r5
add r2, r1, r3

超标量和VLIW仅适用于ILP。VLIW使用静态编译时调度来实现ILP。超级标量使用CPU的执行时间调度和编译器的编译时间调度来实现ILP。

谢谢您的回答。你所说的OOO、流水线和VLIW基本上证实了我的答案。我的答案和你的答案唯一不同的是超标量。似乎超标量体系结构的基本思想是不依赖任何特殊的编译器,只允许硬件检测哪些指令可以并行运行。这就是为什么我认为超级标量能够以更快、更高效的方式运行相同的程序二进制文件,因为它只依赖于硬件,而不依赖于编译器。如果你说的超级标量CPU是指任何提供IPC>1(每个周期的指令数)的CPU,那么是的。根据硬件的不同,执行方式可能独立于编译器工作。