目次
問題文
パイプラインの深さをD,パイプラインピッチをP秒とすると,I個の命令をパイプラインで実行するのに要する時間を表す式はどれか。ここで,パイプラインは1本だけとし,全ての命令は処理にDステージ分の時間がかかり,各ステージは1ピッチで処理されるものとする。また,パイプラインハザードについては,考慮しなくてよい。
ア (I+D)×P
イ (I+D-1)×P
ウ (I+D)+P
エ (I×D-1)+P
解説
解答
イ

まずは問題のポイントを押さえましょう。
パイプライン処理では、命令をいくつかのステージ(段階)に分け、同時並行で処理することで実行時間を短縮します。
ここではパイプラインの深さ D、パイプラインピッチ P(1ステージの処理時間)、命令数 Iが与えられたとき、処理全体にかかる時間を求めます。



考え方の手順を追って理解していきましょう。
1.「深さ D」とは?
D = ステージ数
例えば D=5 なら、命令は「ステージ1 → ステージ2 → … → ステージ5」の順に処理されます。
2.「パイプラインピッチ P」とは?
各ステージを処理するのにかかる時間(クロックサイクルの長さ)です。
すべてのステージが同じ長さ P で動くと仮定します。
3.命令1つだけの場合
最初の命令は、D ステージ分すべてを順に通るので、D × P秒かかります。
4.複数命令の場合
2つ目の命令は、最初の命令がステージ1を終えた時点でステージ1に入れます。
以降、1命令あたり 1 ピッチ分ずつ追加で処理できるため、重なりが生じます。
5.一般式の導出
1つ目の命令完了まで:D ピッチかかります。
残り I−1 個の命令:それぞれ 1 ピッチずつ追加されます。
合計ピッチ数は、
D + (I – 1) = I + D – 1
となりますが、実際の時間はこれに P 秒を掛けるので、
(I + D – 1) × P
となります。
まとめ
- パイプラインは最初の命令で D ピッチ必要
- 以降の命令は重なって流れるので 1命令あたり1ピッチ追加
- 式は (I + D – 1) × P