アウトオブオーダー実行
提供: 自作パソコン入門
スポンサーリンク
CPUのアウトオブオーダー実行 (Out Of Order Execution, OoO, O-o-O)とは、命令の順番通りではなく、データの依存関係などを見て、処理可能な命令を実行する方式です。CPUでは、プログラムの効率的な実行のために、スーパースカラー、パイプライン、分岐予測などいくつもの技術を利用しています。アウトオブオーダー実行は、パイプラインの処理が詰まらないようにします。
読み方
- アウトオブオーダー実行
- あうとおぶおーだーじっこう
概要
CPUでは、以下のような命令の実行があります。
- インオーダー実行
- 命令の順番通りに実行します。
- アウトオブオーダー実行
- 命令の依存関係を見て、実行可能なものを実行します。必ずしも命令の順番通りには、実行されません。
アウトオブオーダー実行は、プログラムの意味を変更しない範囲で、命令実行や完了の順序を変更し、並列度を上げる処理です。
CPUの仕事
CPUの内部処理は、以下の通りです。
- フェッチ
- メモリから命令を取り出す
- デコード
- 命令を解釈
- エグゼキュート
- 命令の実行
- ライトバック
- 結果の書き出し
詳しくは、CPUのパイプラインやスーパースカラとはをご参照下さい。
インオーダー実行とは
インオーダー実行では、必要なデータがそろってないと、データを待たなければならず、無駄な時間が発生していました。インオーダー実行では、以下の流れで処理を行っていました。
- 命令を読み込む
- 命令を実行ユニットへ移動する
- 命令ユニットで命令を実行する
- 結果を返す
アウトオブオーダー実行のメリット
アウトオブオーダー実行メリットは、インオーダー実行の無駄な待ち時間が発生しないため、効率的に命令が実行でき、高速化ができます。しかし、効率的に実行するための処理が必要になるため、処理は複雑になります。
レジスタリネーミング
レジスタをつかけにおり、逆依存や出力依存を解消します。
レジスタリネーミングの実現方法は以下の通りです。
- ソフトウェア
- マッピングテーブル
- リオーダーバッファ
関連項目
ツイート
スポンサーリンク