応用情報技術者試験 令和5年秋 午前問9 解説付き過去問
問題
パイプラインの性能を向上させるための技法の一つで、分岐条件の結果が決定する前に、分岐先を予測して命令を実行するものはどれか。
正解
解説
この問題は、パイプライン処理における分岐命令による性能低下を防ぐための技法について問うものです。特に、分岐先が確定する前に命令を先行して実行する仕組みがどれかを判断します。
- パイプライン処理と分岐の問題
パイプライン処理では、命令の取得・デコード・実行・メモリアクセス・書き込みといったステージを並列化することで、命令を高速に処理します。しかし、分岐命令(if文など)が現れると、次に実行すべき命令がどこにあるか確定しないため、パイプラインが一時的に停止(ストール)する問題が発生します。
- 投機実行の仕組み
このストールを回避するための代表的な技法が投機実行です。投機実行では、分岐命令の条件判定が完了する前に、分岐先を予測し、予測された命令列をあらかじめ実行します。これにより、分岐命令の結果にかかわらずパイプラインを止めずに処理を継続でき、全体の性能向上につながります。
ただし、予測が外れた場合には、実行された命令の結果を破棄し、正しい経路の命令を再実行する必要があります。
- 他の選択肢との違い
・アウトオブオーダー実行:命令の依存関係を考慮して、実行可能な順に命令を順不同で実行する技法です。
・遅延分岐:分岐命令の直後の命令を無条件で実行させることで、分岐遅延を隠す技法です。
・レジスタリネーミング:レジスタの名前を仮想的に置き換えることで、命令間の依存関係(特に出力の依存)を解消し、パイプラインの効率を高める技法です。
したがって、分岐条件の結果が決まる前に、分岐先を予測して命令を実行する技法は、投機実行です。