システムアーキテクト 2021年 午前2 問21
問題文
パイプラインの深さをD、パイプラインピッチをP秒とすると、I個の命令をパイプラインで実行するのに要する時間を表す式はどれか。ここで、パイプラインは1本だけとし、全ての命令は処理にDステージ分の時間がかかり、各ステージは1ピッチで処理されるものとする。また、パイプラインハザードについては、考慮しなくてよい。
選択肢
ア:(I + D) × P
イ:(I + D - 1) × P(正解)
ウ:(I × D) + P
エ:(I × D - 1) + P
🔒 解説は解答すると表示されます
命令実行時間の算出【午前2解説】
正解の理由
パイプライン深さを D、ピッチを P とすると、最初の命令が完了するまでに ピッチかかり、その後は1ピッチ毎に1命令が完了します。よって I 個の命令の完了までに要する時間は
(最初の命令)+ (残りの命令)= となります。以上より正しい選択肢は イ です。
解法ステップ
- 各命令は D ステージを経るため、単一命令の完了までの時間は であることを確認する。
- パイプラインは各ピッチで次の命令を受け付けられるため、最初の完了の後は「1ピッチに1命令」のペースで命令が出力される。したがって残りの 個は 。
- 合計を足し合わせると総時間は 。これが求める式である。
補足(別表現での同値性): 上の結果は と書けますし、並べ替えて と表すことも可能です。どの数え方を使っても最終的な総ピッチ数は同じです(説明の仕方を一貫させることが重要です)。
選択肢別の誤答解説
- ア:
最初の命令完了までの に加え、残りを と誤って数えた形になっており、余分に を加えている(オフバイワンの誤り)。 - イ:
正答。上記の通り、最初に ピッチ、その後に ピッチが必要で合計 ピッチとなる。 - ウ:
命令数とステージ数を単純に掛け合わせているが、パイプライン並列化を無視した表現。命令を直列に D ピッチずつ実行する場合は ピッチだが、そこに余分な があり次元的にも不自然。 - エ:
単位や式の整合性が取れておらず、意味的に誤り。正しい並列化の効果が反映されていない。
よくある誤解
- 「最初の遅延は D-1 ピッチだ」とだけ書いてしまう混乱:最初の命令が完了する瞬間は ピッチ目であるため、時間の分解をする際は「最初の完了に 、以降に 」の方が誤解が少ないです(ただし表現の仕方によっては と書いて同値にすることもできます)。
- 「各命令に常に D ピッチかかるから総時間は 」という誤り:パイプライン化によりステージが重複して動作するため、逐次実行より高速になる(並列性を考慮すること)。
- ハザード無視の前提を忘れること:問題でハザードは考慮しないと明示されている場合、スロットやバブルの追加は不要だが、実際の設計ではハザードがあると追加遅延が発生する。
補足コラム
- レイテンシ(latency)とスループット(throughput)は別概念です。本問では「I 個を完了するまでの総時間(レイテンシ合計)」を求めていますが、長期的なスループットは 1 命令当たり (=1ピッチ)になります。
- D が大きくなるほど最初の立ち上げコストは増えますが、十分多数の命令を実行する場合はオーバーヘッドが相対的に小さくなり、有効性が高まります。逆に I が小さいバッチ処理では立ち上げコストが支配的になる点に注意してください。
FAQ
Q: ハザードがあると式はどう変わりますか?
A: データハザードや制御ハザードでパイプラインが停止(バブル)する回数 があると、総ピッチ数は になります。問題文で「考慮しなくてよい」とある場合は とする。
A: データハザードや制御ハザードでパイプラインが停止(バブル)する回数 があると、総ピッチ数は になります。問題文で「考慮しなくてよい」とある場合は とする。
Q: 各ステージの時間が異なる場合は?
A: ピッチ を最長ステージ時間に合わせる(同期化する)と考えるのが一般的です。ステージごとに非均一ならスループットや最適な分割を再検討する必要があります。
A: ピッチ を最長ステージ時間に合わせる(同期化する)と考えるのが一般的です。ステージごとに非均一ならスループットや最適な分割を再検討する必要があります。
Q: パイプラインを複数本並列に実装したら?
A: 本問は「パイプラインは1本だけ」の前提なので当てはまりません。複数本ある場合は同時発行によりさらに速くなり、総時間の式は状況に応じて変わります。
A: 本問は「パイプラインは1本だけ」の前提なので当てはまりません。複数本ある場合は同時発行によりさらに速くなり、総時間の式は状況に応じて変わります。
関連キーワード: パイプライン深さ、スループット、レイテンシ、パイプラインピッチ、オフバイワンエラー

\ せっかくなら /
システムアーキテクトを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

