「京」は、大規模並列環境でプログラムを高速に実行するために、様々な新しい技術を取り入れている。「京」のハードウエアの中で最も重要な構成要素であるCPUとネットワークについて解説しよう。

 「京」のCPUは富士通が設計・製造した「SPARC64 VIIIfx」。このCPUは、45n(ナノ)mの半導体プロセス技術で製造した、8コアのスーパースカラー・マルチコアプロセッサで、チップ当たり128GFLOPSの性能を持つ。

 高速化のため、このCPUは様々な新機能を取り入れている。SIMD*6と呼ばれる演算機構や、コア当たり256本の浮動小数点レジスタ、6Mバイト(12way)の共有2次キャッシュ、キャッシュを効率良く利用するための「セクターキャッシュ機構」、コア間の同期を高速に実行するための「バリア同期機構」などだ(図5)。

*6 SIMD(Single Instruction Multiple Data)とは1回の命令で、複数のデータに対して同時に同じ処理を実行できる機構のこと。SPARC64 VIIIfxでは、コア当たり2つのSIMD機構を持ち、チップ全体で積和演算を32個同時に実行できる。
図5 SPARC64 VIIIfxの仕様と構成
図5 SPARC64 VIIIfxの仕様と構成
[画像のクリックで拡大表示]

 セクターキャッシュ機構とは、ユーザーがアプリケーションからキャッシュメモリーを制御できる機構である。一般的なCPUではハードウエアがキャッシュメモリーを制御し、ユーザーは直接コントロールできない。そのため、ユーザーが意図しないデータアクセスによって、繰り返し使われるデータがキャッシュメモリー上から追い出されるという問題が起こる場合がある。

 これを解決するための1つの手段として、SPARC64 VIIIfxでは、キャッシュメモリーを2つの領域(セクター)に分割し、データごとにキャッシュする領域をユーザーが選択できる機構を設けた(図6)。

図6 セクターキャッシュの利用イメージ
図6 セクターキャッシュの利用イメージ
[画像のクリックで拡大表示]

 例えば、セクター0には1度しか使わないデータを、セクター1には繰り返し使うデータをキャッシュするように指定する。繰り返し使うデータは、キャッシュから追い出されにくくなる。このセクターキャッシュ機構は、コンパイラが自動的に活用するほか、ユーザーがソースコード中に指示行を記述して利用することもできる。

 バリア同期機構は、複数のコアで並列実行する処理の終了を待ち合わせるためのものだ。SPARC64 VIIIfxでは、バリア同期をハードウエアのレジスタを使うことで高速化している。ソフトウエアでメモリー上のデータをチェックして同期するよりも数倍性能が高く、コア数が増えても処理時間が増えない。