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