SPARC64 VIIIfxプロセサの概要

SPARC64 VIIIfxプロセサは富士通の45nm半導体プロセスで製造される8コアプロセサである。消費電力を58W(Type)と小さく抑えるため、2GHzと低めのクロックを使っているが、チップ全体としては128GFlopsという演算性能を実現している。Intelの同じ8コアで2.13GHzクロックのXeon E7-8830 は68.2GFlopsで105W(TDP最大値)である。電力は、最大値と平均値で同じ土俵の比較ではないが、それでもSPARC64 VIIIfが低電力、高性能であることが分かる。

SPARC64 VIIIfxは、その名のとおりSPARC命令仕様に準拠するプロセサであるが、スパコン向けに、HPC-ACEと総称する次のような命令セットの拡張を行っている。

  1. ハードバリア命令
  2. レジスタ数の増加
  3. SIMD命令
  4. セクタキャッシュ
  5. 科学技術計算を加速する割り算などの近似初期値を与える命令

SPARC64 VIIIfxは8コアを持っているので、科学技術計算では処理を8個のコアに分散して実行させる。この場合、次のステップの計算に進むには8コア全部の処理が終わったことを確認する必要がある。しかし、この確認をソフトウェアで行うと時間が掛る。これを専用のハードウェアを付加し、他のコアの処理が終わったかどうかを高速に確認できるようにするのがハードバリア命令である。この機構と命令の追加により、確認に必要な時間は1/10になったという。

京スパコンは8万コア以上からなる大規模システムであり、処理を8万コアに割り当てるのは容易ではない。そこで、富士通は1万チップへの処理の割り当てはプログラマが記述する必要があるが、1チップの中の8コア並列化は、このハードバリア機能を使ってコンパイラが自動的に行う技術を開発し、これを「VISIMPACT(Virtual Single Processor by Integrated Multi-core Parallel Architecture)」と呼んでいる。

SIMD命令は、IntelのSSE命令のように1つの命令で複数のデータ演算を行う命令である。SPARC64 VIIIfxでは、1つの命令で2つの64ビット倍精度浮動小数点演算を実行するように命令を拡張している。また、一般のSPARCでは浮動小数点レジスタの数は32個であるが、これを256個に拡張している。

レジスタが32個の場合は、複雑な計算になると中間結果などを覚えておくレジスタが不足し、一時的にメモリに書き出し、必要になった時点で再度メモリからレジスタに読み出すという操作が必要になる。レジスタが十分にあれば、このような操作が不要になり、性能が向上する。

拡張レジスタとSIMD命令の性能効果

この図は富士通が性能評価に使っている89本の実アプリケーションプログラムでの、レジスタ拡張とSIMD演算の効果を示すものである。どちらも使わない場合の性能を1として、両方とも使うようにプログラムを再コンパイルして実行した場合の性能が緑の線である。ここでは性能改善効果の順にアプリケーションを並べているので、右上がりのグラフになる。

これでみると、1割程度性能が下がっているものが2本あるが、最大では4.5倍の性能向上が得られたアプリケーションもあり、単純平均では1.84倍の性能になっている。そして、オレンジの線は拡張レジスタだけを使い、SIMDを使わないという条件で再コンパイルを行った場合の性能を示している。拡張レジスタの使用だけではほとんど性能が改善されないアプリケーションも多いが、全般的には右側のアプリケーションでは拡張レジスタの寄与も大きい傾向にある。

しかし、右から1/3くらいのところにあるアプリケーションのように、拡張レジスタだけで2.7倍程度の改善があるのに、両方を使うと2倍弱の改善に下がってしまうケースがあり、両方使用すると4.5倍と最大の改善が得られるアプリケーションが、拡張レジスタの使用だけだと僅かではあるが性能が下がってしまうという良くわからないケースも存在する。

通常のプロセサでは、ソフトが意識する必要のないキャッシュが使われるが、容量に限りがあるので、どんどんと新しいデータを入れて行くと古いデータが追い出されてしまう。このとき、次に使いたいデータが追い出されてしまうと、再度メモリから読んでくることが必要となり性能が大きく下がってしまう。セクタキャッシュはキャッシュを2つに分け、どちら側のキャッシュを使うかを指定するロード命令を作っている。キャッシュの一方には長く使うデータ、他方にはすぐに追い出されても問題ないデータを入れるというような使い分けをすることにより、後で必要なデータが1回の使用で不要になるデータのロードで追い出されてしまうという問題を低減することができる。