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