CPU高性能化の基盤技術の基本ワード

 

今回説明する内容は現代的な高性能CPUには必要不可欠な技術で、発見されたときにはものすごくエポックメイキングな技術として注目を集めたものばかりのはずです。

ですが、今ではこれらの技術は最新CPUではごく当たり前の内容として注目すらされなくなりつつあります。

ただ、今、高性能CPUを作るならば絶対に必要な技術でもありますので、さらっとではありますが3つのキーワード、「スーパースカラー(スーパースケーラー)」、「アウトオブオーダー実行」、「SMT(Simultaneous Multi-Threading:同時マルチスレッディング)」をまとめておきます。

スーパースカラー

スーパースカラーを一言でまとめると、1つのCPU内部で複数のCPU命令を同時に並行して実行できる仕組みのことです。

CPUに関する表現の中で「命令」という言葉を使う場合には、命令はCPUが実行できる機能の一番小さな単位、あたりに相当します。

ほとんどの「命令」を今のCPUは1クロック(=4GHzで動くCPUならば約1/40億秒)で処理することが出来ます。

これだけでもものすごく高速に思えますが、でも今のCPUはもっと効率よく高速で処理を行うことが出来るようになっています。

その一つの仕組みがここで説明するスーパースカラーで、CPUの命令を同時に複数個並列で実行できる仕組みです。

この仕組みを実現するために、CPUの中身に命令を実行するためのユニットが複数備わっていて、それらが完全に並列で動けるよう今のCPUは作られているのです。

スーパースカラーをはじめ、色々な高性能化のための工夫の積み重ねで、今のCPUは1クロックで平均3つ以上の命令を実行できるようになっています。

ただし、並列して動かせる命令には制限もあります。

例えば、「1+3を計算してXに代入。次にX×4を計算」といった処理を行う場合、1つめの計算と2つめの計算を一緒に行うことはできません。1つめの結果が出てからでないと、2つめの計算の結果がおかしくなってしまいますよね。

こういった処理の内容の「依存関係」をCPUが自動的にチェックしながらでないと、並列して動作したときの結果の正しさが保証できません。

このチェックの部分の処理が大変難しく、現代的なCPUの回路の規模が膨らむ原因の一つになっています。

アウトオブオーダー実行

こちらの機能は名前の通り、命令の並び順を無視(アウト・オブ・オーダー)する形で実行するものです。

前の説明で使った内容をちょっと拡張します。プログラムに書かれた処理が以下のようになっていたとしましょう。

1. 1+3をXに代入
2. X×4をYに代入
3. 10-5をZに代入

1と2は順番を入れ替えてしまうと正しい答えが出ませんが、1,2の計算と3番目の計算には全く関係がありません。3を計算してから1,2を計算しても、正しい結果になります。

こういった処理を並び順を無視して動かしてしまうのがアウトオブオーダー実行です。

この場合であれば、1の計算を実行しつつ平行して3の計算を行ってやれば、3つの計算を2つ計算をやる時間のうちに終わらせることが出来ます

ですので、アウトオブオーダー実行とスーパースカラーの仕組みは、かなり緊密に関わり合うものとなっています。CPUを高速化する上では両方を一緒に使うととても効果的な仕組みになります。

SMT

SMTこと同時マルチスレッディングの仕組みは、インテルCPUであれば「ハイパースレッディング」という名前でPentium4から導入されています。

1つのCPU(といよりはコア)の中で、同時に2つのプログラム(または「スレッド」)を実行できるようにする仕組みです。

スーパースカラーの考え方を取り入れて、今の最新の高性能CPUは1つのCPUの中に10個とかそれを超えるような命令の処理ユニットが搭載されています。そしてCPU全体としては、同時に5個とか6個の命令を並列で実行できるような作りになっています。

ここまで書いたところでおわかりと思いますが、最大限CPUが並列に命令を実行したとしても、実際の処理用のユニットはいくつか余ります

これが無駄だと考えて、遊んでいる実行ユニットを出来るだけ動かそう、という発想で作られたのがSMTの仕組みです。違うプログラムを同時に動かすことで、遊んでいる実行ユニットも出来るだけ動かそうとしています。

ただ、実際には色々なところで二つのプログラムの間の競合が起きますので、CPU 2個分の性能を発揮することはなく、トータルで5%~25%程度性能が上がれば上々といわれています。

最初にSMTの仕組みが搭載されたPentium4あたりだと、CPU内部の実行ユニットの使い方が下手で、ハイパースレッディングの搭載でトータル性能がかなり大きく上がったのですが。

こちらも、スーパースカラーの実装に合わせて作り込まれたような技術で、やはり他の高性能化の仕組みと切っても切り離せない内容になっています。