2016-04-14 227 views
0

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

1)乱序执行(tomasulo算法)

2)流水线

3)超标量

4)VLIW

回答

0

我会说OOO将成为第一个将会大幅提升ILP的事物。 OOO体系结构是完全独立于编译器工作的硬件技术(这意味着OOO体系结构将执行与没有OOO的CPU相同的计算并且以更少的时间产生相同的结果而根本不改变指令结构)

管衬是一种众所周知的老技术来增加ILP,但它有其局限性,增加阶段会增加硬件的复杂性,并最终会带来收益递减。它们是不同的并行风格,它们需要特殊的硬件和特殊的编译器,所以它们与传统的控制流体系结构不兼容。 该技术实质上依赖于编译器将多于指令的指令放在一个可以并行执行的超长指令字(VLIW)中。

+0

感谢您的回答。你所讲的关于OOO,流水线和VLIW几乎证实了我的答案。与我对你的答案唯一的区别是超标量。看来超标量体系结构的基本思想是不依赖于任何特殊的编译器,并且只允许硬件检测哪些指令可以并行运行。这就是为什么我认为超标量能够以更快和更有效的方式运行相同的程序二进制文件,因为它只依赖于硬件而不依赖于编译器。 –

+0

如果你的意思是超标量CPU是任何提供IPC> 1(指令每周期)的CPU,那么是的。根据硬件的不同,执行方式可以独立于编译器工作。 –