アウトオブオーダとは?
最終更新日
2023年12月25日
CPUのアウトオブオーダーとは
基礎
CPUのアウトオブオーダーとは、スーパースカラーの効率を高めるために、コードの命令の順序に関係なく実行可能な命令を実行する技術です。英語表記ではOut Of Orderです。略してOOOと呼ぶ場合があります。スーパースカラーにより複数の命令を同時に実行できますが、同じ実行ユニットを使用する命令、同じオペランドを使用する命令、依存関係にある命令等は同時実行できません。このような同時実行できない命令が続くと、スーパースカラーによる効率が高まりません。
そこでアウトオブオーダーでは同時実行できるように命令を並べ替えます。例えば依存関係にある命令が続く場合、依存関係がない命令を先に実行することにして、複数の命令を同時に実行します。
スーパースカラー
スーパースカラーとは、CPUに複数のパイプラインを設け、複数の命令を並行処理する方式です。スーパースケーラーと呼ぶ場合もあります。パイプライン
パイプラインとは、命令の特定の処理を専門に行うユニットを複数並べ、流れ作業のように各ユニットが専門の処理を行い終わったら次の命令の専門の処理を行い、各ユニットの待機時間をなくして性能を向上させることです。アウトオブオーダーの例
パイプラインが1本でもアウトオブオーダー効果あり
パイプラインが1本でもアウトオブオーダーの効果があります。ここではパイプラインが1本あるとし、アウトオブオーダーの例を見てみます。パイプラインのユニットには、命令の読込を行うユニット、命令の解読を行うユニット、命令の実行を行うユニット、命令の実行結果の書込を行うユニットがあるとします。
インオーダー
下記の6つの命令をインオーダーで実行するとします。インオーダーでは、命令を並び替えません。(1)A=1,(2)B=2,(3)C=A+B,(4)D=3,(5)E=4,(6)F=D+E
サイクル数 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
---|---|---|---|---|---|---|---|---|---|---|---|
読込 | (1) | (2) | (3) | (4) | (5) | (6) | |||||
解読 | (1) | (2) | (3) | (4) | (5) | (6) | |||||
実行 | (1) | (2) | (3) | (4) | (5) | (6) | |||||
書込 | (1) | (2) | (3) | (4) | (5) | (6) |
(3)を実行するには、(1)と(2)の実行結果が必要なため、(1)と(2)の書込が完了している必要があります。そのため、(3)の実行が6サイクル目に遅れます。(6)の実行も似たような理由で遅れます。
アウトオブオーダー
6つの命令をアウトオブオーダーで実行するとします。下記の通り命令を並び替えます。これで遅れが生じる命令の実行がなくなります。(1)A=1,(2)B=2,(4)D=3,(5)E=4,(3)C=A+B,(6)F=D+E
サイクル数 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
---|---|---|---|---|---|---|---|---|---|---|---|
読込 | (1) | (2) | (4) | (5) | (3) | (6) | |||||
解読 | (1) | (2) | (4) | (5) | (3) | (6) | |||||
実行 | (1) | (2) | (4) | (5) | (3) | (6) | |||||
書込 | (1) | (2) | (4) | (5) | (3) | (6) |
アウトオブオーダーにより6つの命令の書込完了までのサイクル数が、11サイクルから9サイクルに短縮できました。
アウトオブオーダーとマイクロオプ
マイクロオプに変換し依存関係をなくす
アウトオブオーダーでは命令の依存関係を減らすことが重要です。パソコンのCPUではx86命令を扱います。x86命令のままでは依存関係をなくすのが難しいので、x86命令をマイクロオプと呼ぶ内部命令に変換します。大雑把に言えば複雑なx86命令を分解し、分解後の複数の単純な命令がマイクロオプです。マイクロオプに変換すると、依存関係をなくしやすいです。マイクロオプへの変換が実質必須
x86命令をマイクロオプに変換することは必須ではありません。実際に変換しないCPUを実現できますが、依存関係をなくすのが難しいため、アウトオブオーダーによるスーパースカラーの効率向上効果があまり出ません。そのため、アウトオブオーダーではマイクロオプへの変換が実質的に必須です。出典
・アウトオブオーダー実行 - 意味・説明・解説 : ASCII.jpデジタル用語辞典(2010/04/16更新記事)
・アウトオブオーダー(Out-Of-Order[OOO]) 鈴木直美の「PC Watch先週のキーワード」(1999/4/16公開記事)
・ASCII.jp:x86を高速化する切り札技術「命令変換」の仕組み (3/4)(2010/10/04更新記事)
・PentiumからCore iまで、基本設計の変遷をたどる(2ページ目) | 日経クロステック(xTECH)(2020/03/26公開記事)
・アウトオブオーダー(Out-Of-Order[OOO]) 鈴木直美の「PC Watch先週のキーワード」(1999/4/16公開記事)
・ASCII.jp:x86を高速化する切り札技術「命令変換」の仕組み (3/4)(2010/10/04更新記事)
・PentiumからCore iまで、基本設計の変遷をたどる(2ページ目) | 日経クロステック(xTECH)(2020/03/26公開記事)
キャンペーン情報(PR) |
---|
マウスコンピューター
・オータムセール 最大50,000円OFF (10月9日迄) DELL ・今週のおすすめ製品 対象製品が特別価格でお買い得 (キャンペーン実施中) パソコン工房 ・決算セール セール対象BTOパソコン最大55,000円OFF (10月1日迄) |