問題 No.1899
CPUのパイプライン処理に関する記述として不適切なものはどれか。
【正解の解説】
パイプラインのステージ数を増やすほど、分岐ハザードによるペナルティの遅延サイクル数は減少し、システム全体の効率が向上する。
工場で作業工程を細分化するほど、予想外の仕様変更(分岐)があったときのやり直しダメージが大きいのと同じです。パイプラインを深くしすぎると、条件分岐で予測が外れた際のロスがかえって膨らみ、効率が低下してしまうという試験で非常によく狙われるジレンマの罠です。
スポンサーリンク
【その他の選択肢の解説】
パイプラインの各ステージにかかる処理時間を均等に分割できない場合、最も処理時間が長いステージがボトルネックとなる。
これは飲食店のリレー形式の調理をイメージしてください。5人で作る工程で、1人だけ作業が異常に遅い人がいると、その人の前後に列が詰まって全体が停滞します。パイプライン処理でも最遅のステージに合わせる必要があり、記述内容は正しいため不適切ではありません。
先行する命令の実行結果に後続の命令が依存している場合、データハザードが発生してストールが生じることがある。
「まず計算結果Aを出して、その結果を使って次の計算をしろ」という指示がある場合、前の計算が終わらないと次へ進めないため、作業員が手持ち無沙汰で待機する状態になります。現実のプログラムでも頻発する現象であり、この記述は事実として完全に正しいものです。
複数の命令を同時に異なるステージで並行実行するため、個別の命令が完了するまでのレイテンシは単一ステージ方式よりも長くなる。
1つの荷物を組み立てるのに、全工程を直列で行う方が単体完了は早い場合があります。しかし、ベルトコンベア式に次々と別の荷物を流し込むことで、時間あたりの総生産数(スループット)を高めるのがパイプラインの本質です。単体レイテンシが増えるというこの指摘は正しいです。