アウト・オブ・オーダー実行(-じっこう、)とは、コンピュータ科学でのパラダイムの一つであり、命令実
行効率を上げるために、多くのプロセッサで採用している
実装手法の1つである。アクロニムの'OoO'あるいは'O-o-O'とも書かれる。「順序を守らない実
行」の意。
プロセッサの設計と
実装において、命令レベルの並
列性(Instruction-level parallelism; ILP)を高めることは1つの目標でありスーパースケーラにより1サイクルあたり2命令を越えることが可能になったが、フォンノイマン
アーキテクチャの前提である逐次実
行が、並
列化を施す上での障壁となっていた。
アウト・オブ・オーダー実行(以下、OoO)は、順番を変えて実
行することにより、複数命令の同時実
行の可能性を広げる最適化手法の1つである。OoOと同時マルチスレッディング(Simultaneous Multithreading;
SMT)を併用することで、さらに実
行ユニットの稼働率を上げ、ILPを向上することが可能となる。また、OoOプロセッサであることは
SMTを
実装しやすくする。ただし、OoOであることは
SMTプロセッサの必要要件ではない(例:
Intel Atom)。
アウト・オブ・オーダー実行に対して、プログラムに書かれた通りに逐次実
行することを、イン・オーダー実
行と言う。