为什么可变长度管道的速度由最慢的阶段决定+什么是程序的总执行时间?

时间:2013-06-13 10:49:18

标签: cpu-architecture computer-architecture

我是流水线的新手,我需要一些关于

这一事实的帮助
  

流水线的速度取决于最慢阶段的速度

不仅如此,如果给予5级流水线,其持续时间分别为5 ns,10 ns,8 ns,7 ns,7 ns,则说每条指令需要10 ns的时间。 我可以为此得到明确的解释吗?

(适用编辑) 还让我的程序有3条指令I1,I2,I3和I占用1 clk循环持续时间= 1ns 使得上述阶段分别采用-5,10,8,7,7个时钟周期。 现在根据理论,管道的快照将是 -

Simple Pipeline snapshot

但这给了我一个总时间 - 没有clk周期* clk周期持续时间= 62 * 1 = 62 ns 但根据理论,总时间应该是 - (最慢的阶段)*没有。指令= 10 * 3 = 30 ns 虽然我知道为什么最慢的阶段很重要(每个流水线阶段需要等待,因此每10个clk循环后产生1条指令 - 但是当我使用clk循环计算它时结果是不一致的。为什么这种不一致?我错过了什么? ? 的(编辑)的

4 个答案:

答案 0 :(得分:3)

假设汽车制造过程。假设它使用两级管道衬里。假设制造发动机需要1天。其余2天制造。您可以并行执行这两个阶段。你的汽车产量是多少?它应该是每2天一辆车。虽然你在1天内完成剩下的工作,但你必须再等一天才能获得发动机。

在你的情况下,虽然其他阶段在较短的时间内完成工作,但你必须等待10ns才能完成整个过程

答案 1 :(得分:1)

Staging允许您在onces上执行相同操作的“部分”。

我将在这里创建一个较小的示例,删除示例的最后两个阶段:5,10,8 ns

让我们进行两项操作:

5  10  8
   5   10  8 

| The first operation starts here
   | At stage 2 the second operation can start it's fist stage
   | However, since the stages take different amount of times,
   | the longest ones determines the runtime
       | the thirds stage can only start after the 2nd has completed: after 15ns
       | this is also true for the 2nd stage of the 2nd operation

答案 2 :(得分:0)

我不确定你混淆的根源。如果您的管道中的一个单元需要更长的时间,那么它背后的单元不能推动管道向前移动直到该单元完成,即使它们自己完成了他们的工作。就像DPG所说,试着从汽车生产线的例子中看一下。它是解释管道最常用的一种。如果完成后最慢单位的单位AHEAD,它仍然无关紧要,因为它们必须等到较慢的单位完成其工作。所以,是的,您的管道正在执行3条指令,总执行时间为30ns。

答案 3 :(得分:0)

谢谢大家的回答

我想我现在已经清楚了。 这就是我认为答案是 -

问题1: - 为什么管道执行取决于最慢的步骤

从图中可以清楚地看出,每个阶段都必须等待最慢的阶段才能完成。 因此,每个指令完成后的总时间受到等待时间的限制。 (在我的例子中,在10 ns的差距之后)

问题2: - 程序的总执行时间是什么

我想知道包含3条指令的特定程序需要多长时间才能执行 不需要执行3条指令需要多长时间 - 显然这与事实有关 每个指令每10 ns完成一次。

现在假设在管道中提取了I1,那么其中已经有4个其他指令正在执行。 4个指令在40 ns时间内完成。 之后I1,I2,I3按顺序执行30 ns。(假设没有管道停止)

总共30 + 40 = 70ns。

实际上对于n指令程序,k-阶段管道

我认为它是(n + k-1)* C * T

其中C =否。 clk周期在最慢的阶段  T =时钟周期时间

请回顾一下我的理解......知道我是否在想错什么  我可以接受我自己的答案!!!