今回からスーパーコンピューターの系譜は、少しだけ横道に逸れる。何の話かと言えばコプロセッサー/アクセラレーターである。
アクセラレーター、という概念はHPCに限らず昔から広く利用されてきていた。例えばIntel 8086にはIntel 8087なるコプロセッサーが利用できるようになっていたし、似たようなものとしてはMotorolaの68881やNational SemiconductorのNS32081など、もう並べ立てると山のように出てくる。
この連載でもコプロセッサーの歴史を連載212回でまとめている。要するに浮動小数点演算を行なわせるためのものだ。なぜこれがコプロセッサーの形になったかというと、回路規模の問題である。浮動小数点演算をある程度の有効桁数で実行させようとすると、そこで必要とされる回路はかなり大きくなる。
昔の半導体製造技術では、この回路規模がメインとなるプロセッサーより大きかった。例えば8086はトランジスタが2万9000個で構成されるが、8087は4万5000個だった。
これを1つにしてしまうと、CPUを構成するダイのサイズが倍以上に膨らんでしまいかねない。これは歩留まりに深刻な影響を与えるサイズで、製造上の理由により分割したかったというのが1つ。
もう1つは、CPUの原価は結局ダイサイズで決まるので、FPUを統合すると原価が倍以上になる。ところが当時、そうした浮動小数点演算を高速に行ないたいというユーザーはそれほど多くなく、大多数のユーザーはFPUを統合して価格が上がることを好まなかった。
とはいえ、HPCの市場では浮動小数点演算が遅いとまるで意味がない。したがって、汎用プロセッサーを使うマシンの場合は必ずFPUをペアで使うことが普通だった。インテルのiPSC/1やiPSC/2などは、この典型例であろう。
また、FPUを持たないプロセッサーの場合、外付けの形でFPUを追加した。たとえばThinking MachinesのCM-2はWeitek WTL3132 FPUをシステム全体で2048個も搭載しているが、これなど典型的な例であろう。
これがコプロセッサーとアクセラレーターの違いでもある。上記の例で言えば、iPSC/1やiPSC2はコプロセッサーで、CM-2はアクセラレーターとなる。では両者はなにが違うかというと、プロセッサー側が当初からそれを使うことを想定したものがコプロセッサー、外部に汎用の形で接続されるのがアクセラレーターというのが一般的な認識である。
8087/80287/80387といったFPUの場合、8086/80286/80386と組み合わせて使うことが前提となっており、ハードウェア的にも専用のI/Fが用意されている。またソフトウェア的にも命令セットの中に当初からFPUを使うための命令が含まれており、これを使うことでFPUを駆動できた。「コプロセッサー」と称する場合は、こうした形で当初から利用することを前提としたものを指すのが普通である。
アクセラレーターとは、当初から組み合わせることを想定しない汎用的なものを指す。CM-5の場合がまさしくそうで、搭載されたWeitekのWTL3132は(名前はともかく)使い方は34bitの命令ポートと32bitのデータポートでつなげるだけの構成であり、速度を無視してよければ汎用I/Oポートをそれぞれのポートにつなぐだけで使えた。
命令セットにはWTL3132の命令は含まれていないので、汎用I/Oポート経由で以下のようにして使う。
- (1) X Portに演算対象となるデータを格納する
- (2) Code Portに演算命令を格納する
- (3)演算処理が終わった頃を見計らい、X Portより演算結果を取り込む
結構オーバーヘッドは多いのだが、それでもソフトウェア的に浮動小数点演算を行なう場合に比べると何倍も高速ということで愛用された。
ちなみにさらに高速化するには、例えば演算元データの格納や演算結果の取り込みは、ポートI/OではなくDMAを使ったほうが良いし、毎回(1)~(3)を繰り返すのではなく、(1)で8回分の演算元データを格納、(2)を8回繰り返し、最後に(3)でまとめて8回分のデータを取り込むといったやり方がオーバーヘッド削減になる。
ついでに言えば、「終わった頃を見計らう」のではなく、演算が終わったら割り込みでも飛ばしてくれるほうがよりスマートだろう。もちろんWTL3132にはDMAや割り込みの機能はないが、複数回の演算をまとめて実行くらいはアプリケーション側でなんとかなるので、その程度のチューニングは行なわれたであろう。
(→次ページヘ続く 「プロセッサーの高性能化で廃れたアクセラレーター」)
この連載の記事
-
第801回
PC
光インターコネクトで信号伝送の高速化を狙うインテル Hot Chips 2024で注目を浴びたオモシロCPU -
第800回
PC
プロセッサーから直接イーサネット信号を出せるBroadcomのCPO Hot Chips 2024で注目を浴びたオモシロCPU -
第799回
PC
世界最速に躍り出たスパコンEl Capitanはどうやって性能を改善したのか? 周波数は変えずにあるものを落とす -
第798回
PC
日本が開発したAIプロセッサーMN-Core 2 Hot Chips 2024で注目を浴びたオモシロCPU -
第797回
PC
わずか2年で完成させた韓国FuriosaAIのAIアクセラレーターRNGD Hot Chips 2024で注目を浴びたオモシロCPU -
第796回
PC
Metaが自社開発したAI推論用アクセラレーターMTIA v2 Hot Chips 2024で注目を浴びたオモシロCPU -
第795回
デジタル
AI性能を引き上げるInstinct MI325XとPensando Salina 400/Pollara 400がサーバーにインパクトをもたらす AMD CPUロードマップ -
第794回
デジタル
第5世代EPYCはMRDIMMをサポートしている? AMD CPUロードマップ -
第793回
PC
5nmの限界に早くもたどり着いてしまったWSE-3 Hot Chips 2024で注目を浴びたオモシロCPU -
第792回
PC
大型言語モデルに全振りしたSambaNovaのAIプロセッサーSC40L Hot Chips 2024で注目を浴びたオモシロCPU -
第791回
PC
妙に性能のバランスが悪いマイクロソフトのAI特化型チップMaia 100 Hot Chips 2024で注目を浴びたオモシロCPU - この連載の一覧へ