読み方 : アウトオブオーダーじっこう

アウトオブオーダー実行【out-of-order execution】

概要

アウトオブオーダー実行とはCPUの高速化手法の一つであり、命令をプログラム上の記述順序に縛られず、実行の準備が整ったものから順に処理していく方式。
アウトオブオーダー実行のイメージ画像

CPUが命令を実行する際、本来はプログラムに記述された順序通りに処理を進める。この方式は「インオーダー実行」(in-order execution)と呼ばれ、長らく標準的な実行方式として採用されてきた。

この方式では、ある命令がメモリからのデータ読み込みなどで待機状態に陥った場合、後方の命令が実行可能であっても、先行する命令の完了まで処理が止まってしまう。この待機が処理効率低下の要因となっていた。

アウトオブオーダー実行では、他の命令との間にデータ依存関係がなく、必要なデータが揃っている命令を、記述順に関わりなく先に実行へ回す。パイプライン処理によって命令の各段階を並列に進めるCPUや、複数の演算器を同時に動かすスーパースカラ方式CPUで標準的に採用されており、演算器の空き時間を減らして処理効率を高める仕組みとして用いられる。

命令の実行順序を入れ替えるにあたっては、処理結果に矛盾が生じないようにするための制御が欠かせない。実行を終えた演算結果は「リオーダバッファ」(reorder buffer)と呼ばれる一時的な記憶領域に保管され、実行を開始した順序が古いものから確定処理が行われ、レジスタメインメモリへ反映される。これにより、内部的な実行順序が入れ替わっても、最終的な処理結果はプログラムが本来意図した順序通りに保たれる。

命令間の依存関係の解析や実行順序の制御は、プロセッサ内部の回路によって自動的に行われ、プログラムの作成者がこれを意識する必要はない。また、依存関係の解析にあたっては「レジスタリネーミング」(register renaming)という技術が併用される場合があり、見かけ上の依存関係を取り除くことで、より多くの命令を並列に実行できるようにしている。

(2026.6.29更新)
 

他の辞典等による「アウトオブオーダー実行」の解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。