このページの本文へ

前へ 1 2 3 4 次へ

ロードマップでわかる!当世プロセッサー事情第70回

命令の実行順を変えて高速化するアウトオブオーダー

2010年09月27日 12時00分更新

文● 大原雄介(http://www.yusuke-ohara.com/)

  • この記事をはてなブックマークに追加
  • 本文印刷

スーパースカラーとアウトオブオーダーはセットの技術

 スーパースカラーの次に紹介する技術が、アウトオブオーダーである。アウトオブオーダーはスーパースカラーを前提とした技術である。アウトオブオーダーなしのスーパースカラーはあるが、スーパースカラーなしのアウトオブオーダーはありえない(というか意味がない)ので、現実問題としてスーパースカラーが前提の技術、と考えてよいだろう。

 アウトオブオーダーの言葉の意味は「乱れる、狂う、故障する」で、米国では故障した自動販売機とかに「Out of order」とか張り紙がしてあったりする。もちろんここで扱うのは別の意味。「乱れる、狂う」に近いが、ようするに「命令の実行順序を変えてしまう」ものだ。こう書くと、「では前回の命令の並び替えと何が違うのか?」と聞かれそうだが、実は「半分は」同じものである。

 アウトオブオーダーは上に書いたとおり、「与えられた命令を一度展開し、依存関係がない順に順次実行する」方式である。前回「命令の並び替え」として説明した以下の並び替え例が、すでにアウトオブオーダーなのである。

並び替え前 並び替え後
命令1 R1=Data1 R1=Data1
命令2 R2=Data2 R2=Data2
命令3 R3=R1+R2 R4=Data3
命令4 R4=Data3 R5=Data4
命令5 R5=Data4 R3=R1+R2
命令6 R6=R4+R5 R6=R4+R5

 つまり本来の命令の並び順を、CPU内部で入れ替えているからだ。これによる効果は、前回述べたとおり非常に大きい。

 さて、前回はアウトオブオーダーにはあまり積極的に触れなかったこともあり、従来のパイプラインの延長的な構図を示したが、本来のアウトオブオーダーのパイプラインは図1のようになる。前回と異なり、「Re-Order Buffer」と呼ばれるものが新たに出現しているわけだが、これがアウトオブオーダーの肝の部分である。

図1
図1 アウトオブオーダーを実装したCPUパイプライン

 まず、命令キャッシュからFetchを経て取り込まれた命令は、Decodeで解釈される。ここまでは「インオーダー」、つまりあくまで読み込んだ順に処理されてゆく。解釈が終わった命令は、いったんスケジューラに入る。ここで命令の並び替えが行なわれる。この例で言えば、左の4命令は先に処理され、右の2命令は後回しにされる。

先に処理 後回し
R1=Data1 R3=R1+R2
R2=Data2 R6=R4+R5
R4=Data3
R5=Data4

前へ 1 2 3 4 次へ

この連載の記事

注目ニュース

ASCII倶楽部

最新記事

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン