アウトオブオーダー実行

提供: 自作パソコン入門
2015年5月10日 (日) 12:08時点におけるDaemon (トーク | 投稿記録)による版

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索
スポンサーリンク

CPUアウトオブオーダー実行 (Out Of Order Execution, OoO, O-o-O)とは、命令の順番通りではなく、データの依存関係などを見て、処理可能な命令を実行する方式です。CPUでは、プログラムの効率的な実行のために、スーパースカラー、パイプライン、分岐予測などいくつもの技術を利用しています。アウトオブオーダー実行は、パイプラインの処理が詰まらないようにします。

読み方

アウトオブオーダー実行
あうとおぶおーだーじっこう

概要

CPUでは、以下のような命令の実行があります。

インオーダー実行
命令の順番通りに実行します。
アウトオブオーダー実行
命令の依存関係を見て、実行可能なものを実行します。必ずしも命令の順番通りには、実行されません。

アウトオブオーダー実行は、プログラムの意味を変更しない範囲で、命令実行や完了の順序を変更し、並列度を上げる処理です。

CPUの仕事

CPUの内部処理は、以下の通りです。

フェッチ
メモリから命令を取り出す
デコード
命令を解釈
エグゼキュート
命令の実行
ライトバック
結果の書き出し

詳しくは、CPUのパイプラインやスーパースカラとはをご参照下さい。

インオーダー実行とは

インオーダー実行では、必要なデータがそろってないと、データを待たなければならず、無駄な時間が発生していました。インオーダー実行では、以下の流れで処理を行っていました。

  • 命令を読み込む
  • 命令を実行ユニットへ移動する
  • 命令ユニットで命令を実行する
  • 結果を返す

アウトオブオーダー実行のメリット

アウトオブオーダー実行メリットは、インオーダー実行の無駄な待ち時間が発生しないため、効率的に命令が実行でき、高速化ができます。しかし、効率的に実行するための処理が必要になるため、処理は複雑になります。

レジスタリネーミング

レジスタをつかけにおり、逆依存や出力依存を解消します。

レジスタリネーミングの実現方法は以下の通りです。

  • ソフトウェア
  • マッピングテーブル
  • リオーダーバッファ

関連項目




スポンサーリンク