【问题标题】:Instruction Level Parallelism (ILP) Methods指令级并行 (ILP) 方法
【发布时间】:2016-04-14 11:53:31
【问题描述】:

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

1)乱序执行(Tomasulo算法)

2)流水线

3)超标量

4)VLIW

【问题讨论】:

    标签: parallel-processing pipeline cpu-architecture vliw


    【解决方案1】:

    我会说 OOO 将是第一个会大大增加 ILP 的东西。 OOO 架构是完全独立于编译器工作的硬件技术(这意味着 OOO 架构将在没有 OOO 的情况下执行与 CPU 相同的计算,并在更短的时间内产生相同的结果而完全不改变指令结构)

    Pipe-lining 是一种众所周知且古老的技术来增加 ILP,但它有其局限性,增加阶段会增加硬件复杂性,最终会产生递减的回报。

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

    【讨论】:

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

    流水线开始。这是通过重叠获取、解码、执行……多条指令来实现 ILP 的最古老和最好的方法。这是很常见的,任何具有 OOO、有序、超标量、VLIW 等实现 ILP 的真实 CPU 也将被流水线化。

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

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

    你没有提到 in-order 但它也可以实现 ILP。第一条和第二条指令可以并行执行,但第三条指令必须等待第一条指令完成,因为它在 r1 上也存在 RAW 危险。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-26
      • 2017-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-17
      相关资源
      最近更新 更多