「アウトオブオーダー実行」の版間の差分

提供: 自作パソコン入門
移動: 案内検索
(ページの作成:「アウトオブオーダー実行 (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のパイプラインやスーパースカラとはをご参照下さい。

インオーダー実行とは

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

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

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

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

レジスタリネーミング

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

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

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

関連項目