なぜ、GPUのパフォーマンスは向上しているのか

なぜ、このようなことになったかと言えば、「それはアーキテクトによるチップ構成の考え方の違い」であると指摘する。GPUは、パフォーマンスを向上させるために、FPU(Floating Point number processing Unit)やMAC(Multiply and ACcumulation)といった演算ユニットを並列に配置してきた。「これら個々のユニットを高速化することは難しい。しかし、チップ上に複数配置することはできる。また、これらの演算における消費電力は以外に低く50mW/GFLOPS程度であり、ダイに占める電力の割合は小さい」ということとなる。しかし、「データの移動は思っている以上に電力を消費する。64ビットのFPUの演算データをチップ上1mm移動させるだけでも25pJのエネルギーを費やすこととなり、20mm動かそうとすればその40倍、チップ外にデータを転送しようとすれば、実に80倍のエネルギーが必要となる」わけで、データを移動させることがエネルギーを多く消費する問題点になっていると指摘する。

例えば、20mm×20mmのチップがあった場合、そこに64ビットのFPUを配置すると、そのチップ面積は0.1mm2となる。単純計算をするならば、チップ面積が400mm2であることから、FPUは最大4,000個載せることができることとなり、その消費電力は300W程度で12TFLOPSの演算処理能力を実現することとなる。ただし、これはチップのすべてをFPUに置き換えた場合で、実用的な話ではない。一方、16ビットのMAC(Multiply and ACcumulation)で考えた場合は、より多くの数を配置できるが、いずれにしてもデータを移動させるのには相応のエネルギーが必要となることには変わりはない

そのため、データをなるべく移動させないで効率よく処理する「局所性」が重要になるという。また、これは電力のスケーリング則にも関わってくる。これまでの半導体は層間絶縁膜などの薄膜化によりリーク電力が増大してきたのは周知の事実であり、その結果として消費電力全体が増大することとなっていた。「パフォーマンスの向上は並列処理数を増やすしかないが、それにともない電力は増大することとなる。その第一のポイントはデータの移動によって消費される電力であるから、なるべくデータを移動させないで処理をすることが求められるようになる」とのことであるが、CPUはこうした事実を無視した考え方で構築されたものであり、並列処理に最適化されていないほか、メモリが実際には階層的であるという事実を無視した作り(データがどこに格納されているのかをユーザー側は気にしないアーキテクチャ)となっており、キャッシュにアプリケーションが入らない場合に対し、非効率的性が発生するという局所性とは正反対なことが行われるわけで、「並列性と局所性を無視しているが故に、CPUは終焉に向かっている」と指摘する。