4

私はパイプラインに不慣れで、その事実に関して助けが必要です

パイプライン処理の速度は、最も遅いステージの速度によって決まります

これだけでなく、それぞれ 5 ns、10 ns、8 ns、7 ns、7 ns の期間を持つ 5 ステージのパイプラインが与えられた場合、各命令には 10 ns の時間がかかると言われています。これについて明確な説明を得ることができますか?

(編集済み)また、私のプログラムに3つの命令I1、I2、I3があり、上記のステージがそれぞれ5、10、8、7、7クロックサイクルかかるように、1クロックサイクルの持続時間= 1nsを取ります。理論によれば、パイプラインのスナップショットは次のようになります-

シンプルなパイプラインのスナップショット

しかし、それは私に合計時間を与えます - クロックサイクルの数 * クロックサイクルの持続時間 = 62 * 1 = 62 ns しかし、理論によれば、合計時間は - (最も遅い段階) * いいえ。命令数 = 10 * 3 = 30 ns もっとも遅いステージが重要な理由はわかっていますが (各パイプライン ステージは待機する必要があるため、10 clk サイクルごとに 1 つの命令が生成されますが、clk サイクルを使用して計算すると結果に一貫性がなくなります。なぜこの不一致?何が欠けている?? (編集済み)

4

4 に答える 4

3

自動車の製造工程を想定します。2 段階のパイプ ライニングが使用されているとします。エンジンの製造に 1 日かかるとします。残りの製造に2日。両方の段階を並行して行うことができます。あなたの車の出力率は?2日に1台の車でお願いします。残りは 1 日で製造しますが、エンジンを入手するにはさらに 1 日待たなければなりません。

あなたの場合、他のステージはより短い時間で仕事を終えますが、プロセス全体を完了するには10ns待つ必要があります

于 2013-06-13T11:20:24.933 に答える
1

ステージングにより、同じ操作の「部分」を一度に実行できます。

ここで小さな例を作成し、例の最後の 2 段階を削除します: 5、10、8 ns

次の 2 つの操作を行います。

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
于 2013-06-13T10:59:41.557 に答える
0

あなたの混乱の原因についてはわかりません。パイプラインの 1 つのユニットに時間がかかっている場合、その背後にあるユニットは、そのユニット自体が作業を終了しても、そのユニットが終了するまでパイプラインをプッシュして先に進めることができません。DPGが言ったように、自動車製造ラインの例から見てみてください。これは、パイプラインを説明するために与えられる最も一般的なものの 1 つです。最も遅いユニットの前にあるユニットがより速く終了した場合でも、遅いユニットが作業を終了するまで待たなければならないため、問題ではありません。はい、パイプラインは合計実行時間 30ns で 3 つの命令を実行しています。

于 2013-06-17T14:35:00.683 に答える
0

回答ありがとうございました

ここまでではっきりしたと思います。これが私が考える答えです -

質問- 1 :- パイプラインの実行が最も遅いステップに依存する理由

図から明らかなように、各ステージは最も遅いステージが完了するまで待機する必要があります。したがって、各命令が完了するまでの合計時間は、待機時間によって制限されます。(私の例では、10 ns のギャップの後)

質問-2 :- プログラムの合計実行時間は?

私は、3 つの 命令を実行するのにかかる時間ではなく、 3 つの命令を含む特定のプログラムの実行にかかる時間を知りたかったのです。

I1 がパイプラインでフェッチされ、すでに 4 つの他の命令がパイプラインで実行されているとします。40 ns の時間で 4 つの命令が完了します。その後、I1、I2、I3 が 30 ns の順序で実行されます (パイプライン ストールがないことを前提としています)。

これにより、合計で 30+40=70ns になります。

実際には n 命令プログラムの場合、k ステージのパイプライン

(n + k-1 ) *C *Tだと思います

ここで、C=いいえ。最も遅い段階の clk サイクル数 T= クロック サイクル時間

私の理解を見直してください....私が何か間違ったことを考えているかどうかを知り、私自身の答えを受け入れることができます!!!

于 2013-06-17T15:48:45.720 に答える