• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:パイプライン方式での処理時間の求め方)

パイプライン方式での処理時間の求め方

このQ&Aのポイント
  • パイプライン方式での処理時間を求める式がわかりません。
  • パイプラインの深さをD、ピッチをP秒とすると、I個の命令をパイプラインで実行する時間を表す式はどれか。
  • 私の理解では、所要時間はI × (D × P)で求められると考えていますが、なぜ違うのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

命令の個数を7、パイプラインの深さを4、パイプラインのピッチを1秒とする。 この場合、1つの命令がパイプラインを通り抜けるには4秒かかる。 そして、それぞれの命令は、1秒づつズレながら順にパイプラインに入っていく。 図にすると、以下のようになる。  深さ4 ←──→ □□□□______ 1番目のパイプに入った命令は抜けるまで4秒かかる _□□□□_____ 2番目の命令が入るのは1ピッチ経過後。つまり1秒後 __□□□□____ 3番目の命令が入るのは2ピッチ経過後。つまり2秒後 ___□□□□___ 4番目の命令が入るのは3ピッチ経過後。つまり3秒後 ____□□□□__ 5番目の命令が入るのは4ピッチ経過後。つまり4秒後 _____□□□□_ 6番目の命令が入るのは5ピッチ経過後。つまり5秒後 ______□□□□ 7番目の命令が入るのは6ピッチ経過後。つまり6秒後 1 2 3 4 5 67 89 10 ←(7+4-1)×1=10 最後の命令がパイプラインに入るのは「命令の個数-1ピッチ後」であり、その命令がパイプラインを通過し終わるのは、パイプラインの深さだけかかる。 つまり、最後の命令がパイプラインを通り抜け終わるのは「命令の個数-1+パイプラインの深さ」に、1ピッチの秒数を掛けた秒数が経過した時である。 「最後の命令がパイプラインを通り抜け終わる秒数」と言うのは「全部の命令を実行するのに要する時間」そのものである。 「(命令の個数-1+パイプラインの深さ)×1ピッチの秒数」を意味する式は「イ  (I +D -1)×P」である。

monque
質問者

お礼

詳しいご解説ありがとうございます。 まだ理解できてません。。。 もう少しそしゃくのための時間が必要なのですが、取り急ぎお礼まで。 ありがとうございます!

その他の回答 (3)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

「パイプラインの各段が並列に動作しうる」ことを忘れてるだけなんだが.... パイプラインの深さと同じだけの本数を持つプロセッサが思い付かない>#3.

回答No.3

因みに。 パイプラインの個数は、パイプラインの深さと同じ個数がある、と言うのが前提。 パイプラインの深さが7であれば、通常、パイプラインは7つあって、パイプラインの個数と同じだけの個数の命令を並行して同時に処理できる。 先ほどの例では、パイプラインは4つあれば良い。 1~4番目の命令は、順に1~4番のパイプラインに入る。 5番目の命令は、1番目の命令を処理し終わって空になった、1番のパイプラインに入る。 6番目の命令は、2番目の命令を処理し終わって空になった、2番のパイプラインに入る。 7番目の命令は、3番目の命令を処理し終わって空になった、3番のパイプラインに入る。 なので、図を正確に書くと、以下のようになる。  深さ4 ←──→ □□□□■■■■__ 1と5番目の命令 _□□□□■■■■_ 2と6番目の命令 __□□□□■■■■ 3と7番目の命令 ___□□□□___ 4番目の命令 1 2 3 4 5 6 7 8 9 10 ←(7+4-1)×1=10 判りやすいように、1~4番目の命令は□で、5~7番目の命令は■で表記。 因みに、パイプラインの個数が足りないと、途中で「すべてのパイプラインが埋まってしまう」ので、無駄な空き時間が出来てしまう。 例えば、パイプラインの深さが4なのに、パイプラインが3個しか無いと、以下のようになる。  深さ4 ←──→ □□□□■■■■◇◇◇◇ 1と4と7番目の命令 _□□□□■■■■___ 2と5番目の命令 __□□□□■■■■__ 3と6番目の命令 1 2 3 4 5 6 7 8 9 101112 上記の場合「4ピッチ目」には、すべてのパイプが埋まっているので、パイプに空きが出来る「5ピッチ目」まで、何も出来ずに待たされてしまう。 同様に、8ピッチ目にも、すべてのパイプが埋まってしまうので、9ピッチ目まで待たされてしまう。 また逆に、パイプラインの深さよりも多い個数のパイプラインがあると、以下のように、パイプラインに無駄が出来てしまう。  深さ4 ←──→ □□□□_■■■■_ 1と6番目の命令 _□□□□_■■■■ 2と7番目の命令 __□□□□____ 3番目の命令 ___□□□□___ 4番目の命令 ____□□□□__ 5番目の命令 上記の場合、1番のパイプが空いても、次の命令がすぐには入って来ないので、1番目の命令と6番目の命令の間に隙間が出来て「何もしてない無駄なサイクル」が出来てしまう。 2番のパイプも、同様に、2番目の命令と7番目の命令の間に隙間が出来てしまう。

回答No.2

図が見づらくなったので、図だけ再投稿。  深さ4 ←──→ □□□□______ 1番目の命令 _□□□□_____ 2番目の命令 __□□□□____ 3番目の命令 ___□□□□___ 4番目の命令 ____□□□□__ 5番目の命令 _____□□□□_ 6番目の命令 ______□□□□ 7番目の命令 1 2 3 4 5 6 7 8 9 10 ←(7+4-1)×1=10

関連するQ&A