5段のパイプラインで100命令を実行する。各段は1クロックで終わり、最初の命令は開始から5クロック目の終わりに完了する。その後は毎クロック1命令が完了し、停止、分岐によるやり直し、資源競合はない。1クロックが2 nsのとき、100命令すべてが完了するまでの時間は何nsか。
本サイトで独自に作成。IPAの試験問題からの転載ではありません。
公開日:
選択肢を選んで、答え合わせをしましょう。
回答せずに正解・解説を確認する
正解:ウ 208 ns
この表示だけでは、回答数や正答率は変わりません。
解説
最初の命令が完了するまで5クロックかかり、残り99命令は1クロックに1個ずつ完了します。必要なのは5 + 99 = 104クロックなので、104 × 2 = 208 nsです。100命令それぞれに5クロックを直列に掛ける計算ではありません。
100命令という個数をそのまま時間にしており、クロック時間と立ち上がりを考慮していません。
100 × 2 = 200 nsでは、最初の命令が完了するまでの追加4クロックが抜けています。
(5 + 100 − 1) × 2 = 208 nsで、最初の完了と残りの完了間隔を分けています。
100 × 5 × 2 = 1,000 nsは、命令を重ねずに一つずつ終わらせる場合の時間です。
関連知識
パイプラインは複数命令の処理段階を重ねて、単位時間に完了する命令数を増やします。一命令の開始から終了までの時間が、段数で割った値になるわけではありません。実機ではハザードや分岐などで停止が生じます。
間違えやすいポイント
一命令の遅延と、連続した命令の完了間隔を区別します。段数k、命令数nのこの理想条件ではk + n − 1クロックです。
覚え方
最初は段数分、残りは1命令1クロック。
実務での意味
大量処理のスループットを比較するとき、起動直後の待ち時間と定常状態の処理間隔を分けて評価します。
解説:本サイト編集部によるオリジナル文章