忍者ブログ
情報処理技術者試験の合格を目指す全受験者のための、1問1問「徹底解説」ブログです。単なる過去問の暗記ではなく、なぜその答えになるのかを本質的に理解できるよう解説します。書籍などでは学べない最新用語やトレンドを踏まえてご紹介します。

【コンピュータシステム】空き時間を許さない!「アウトオブオーダ実行」|情報処理問題1000本ノック

プログラムに書かれた順番を律儀に守るのではなく、データの準備ができたものから「追い越し」を許可して実行する、現代CPUの驚異的なスピードの裏側を攻略しましょう。

1. 問題:命令実行の順序制御

【 問題 】 CPUの高速化技術において、プログラムに記述された命令の順序に縛られず、データの依存関係がない命令を見つけ出し、実行に必要なリソースやデータが整ったものから順に実行する方式を何と呼ぶでしょうか?

ア、インオーダ実行   イ、投機実行   ウ、アウトオブオーダ実行   エ、スーパースカラ

2. 正解:プロセッサアーキテクチャに関する正解

正解: ウ、アウトオブオーダ実行(Out-of-Order Execution)

3. 解説:渋滞を回避して「追い越し」で進む

「Out-of-Order」とは「順序を外れた」という意味です。前の命令が時間のかかる処理(メモリ待ちなど)をしていても、後ろの命令が先に終わらせてしまう仕組みです。

【図解:アウトオブオーダの仕組み】

■ 仕組み
1. 命令の取り出し:順番通りに取り出します。
2. 実行待ち(スケジューリング):命令の依存関係をチェックし、準備完了したものを演算器へ投入します(ここで順序が入れ替わります)。
3. 結果の確定(コミット):計算が終わってもすぐには反映せず、最後に元の順番通りに整列させて完了します。

■ メリット
・特定の命令で発生した待ち時間(ストール)を、後続の命令を実行することで埋めることができ、CPUの稼働率が上がります。
[ セットで覚えたい:レジスタリネーミング ]
★ 命令の順序を入れ替える際、同じ名前のレジスタ(変数のようなもの)を使い回していると衝突が起きます。これを避けるために、CPU内部で一時的に別のレジスタ名を割り当てる技術が併用されます。

1. 理解のコツ: 料理の注文(プログラム)をイメージしてください。「1番:時間のかかる煮込み料理」「2番:すぐできるサラダ」と注文が入ったとき、1番が完成するのを待たずに2番のサラダを先に作り始めるのがアウトオブオーダです。
2. 試験対策の視点: 「データの依存関係がない」「順序を変更して」「準備ができたものから実行」という表現がキーワードです。ちなみに、順番通りにしか実行しない方式を「インオーダ」と呼びます。


4. まとめ

「依存関係のない命令を、準備ができた順に実行する」。これがアウトオブオーダです。内部で複雑なパズルを解くように順序を入れ替えることで、CPUは一分一秒の無駄もなく計算を続けています。


PR