読み方 : アウトオブオーダーじっこう
アウトオブオーダー実行【out-of-order execution】

CPUが命令を実行する際、本来はプログラムに記述された順序通りに処理を進める。この方式は「インオーダー実行」(in-order execution)と呼ばれ、長らく標準的な実行方式として採用されてきた。
この方式では、ある命令がメモリからのデータ読み込みなどで待機状態に陥った場合、後方の命令が実行可能であっても、先行する命令の完了まで処理が止まってしまう。この待機が処理効率低下の要因となっていた。
アウトオブオーダー実行では、他の命令との間にデータの依存関係がなく、必要なデータが揃っている命令を、記述順に関わりなく先に実行へ回す。パイプライン処理によって命令の各段階を並列に進めるCPUや、複数の演算器を同時に動かすスーパースカラ方式のCPUで標準的に採用されており、演算器の空き時間を減らして処理効率を高める仕組みとして用いられる。
命令の実行順序を入れ替えるにあたっては、処理結果に矛盾が生じないようにするための制御が欠かせない。実行を終えた演算結果は「リオーダバッファ」(reorder buffer)と呼ばれる一時的な記憶領域に保管され、実行を開始した順序が古いものから確定処理が行われ、レジスタやメインメモリへ反映される。これにより、内部的な実行順序が入れ替わっても、最終的な処理結果はプログラムが本来意図した順序通りに保たれる。
命令間の依存関係の解析や実行順序の制御は、プロセッサ内部の回路によって自動的に行われ、プログラムの作成者がこれを意識する必要はない。また、依存関係の解析にあたっては「レジスタリネーミング」(register renaming)という技術が併用される場合があり、見かけ上の依存関係を取り除くことで、より多くの命令を並列に実行できるようにしている。
(2026.6.29更新)