我是流水线的新手,我需要一些关于
这一事实的帮助流水线的速度取决于最慢阶段的速度
不仅如此,如果给予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个时钟周期。 现在根据理论,管道的快照将是 -
但这给了我一个总时间 - 没有clk周期* clk周期持续时间= 62 * 1 = 62 ns 但根据理论,总时间应该是 - (最慢的阶段)*没有。指令= 10 * 3 = 30 ns 虽然我知道为什么最慢的阶段很重要(每个流水线阶段需要等待,因此每10个clk循环后产生1条指令 - 但是当我使用clk循环计算它时结果是不一致的。为什么这种不一致?我错过了什么? ? 的(编辑)的
答案 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 =时钟周期时间
请回顾一下我的理解......知道我是否在想错什么 我可以接受我自己的答案!!!