そして、BG/Qプロセサで採用された目玉の技術が2次キャッシュに複数バージョンの結果を格納することができるMulti-Versioned Cacheという技術である。例えば256回まわるループを16コアで並列処理する場合、コア0は最初の16回分、コア2はループの17回から32回、コア3はループの33回から48回を分担するというような分割が行われる。後のループの計算は以前のループの処理結果に影響されないことが分かっていれば、このように分割して並列処理を行っても問題はない。しかし、次のループの計算が前の結果を使うような場合では、このような並列化はできない。

また、ループの中で使われる入力変数がポインタで指されているような場合は、コンパイラでは、前のループの結果と依存関係があるかどうかを判定することができず、安全サイドで依存関係があっても正しい結果が得られるシリアル処理を行うバイナリが作られてしまう。

プログラマとしては、前の結果に依存するケースは稀であることが分かっているが、依存するケースも無いとは言えないというような場合が、このMulti-Versioned Cacheの出番である。

Multi-Versioned Cacheでは、分担した各処理を実行するスレッドのメモリへの書き込みは、アドレスが同じであっても異なるバージョンとして2次キャッシュに記憶される。そして、各スレッドの計算の入力や出力となる変数のアドレスに対して、他のスレッドが書き込みを行ったことが検出されるとそのバージョンの2次キャッシュの記録を消して、実行をやり直す。

このようにすると、各スレッドの実行がループの前の部分を分担するスレッドの結果に依存していなければ計算が正常終了し、依存している場合には前の部分を担当するスレッドの書き込みで後の部分を担当するスレッドの実行はキャンセルされ、はじめから再実行される。つまり、本当に依存性が無い場合は並列実行ができ、依存性がある場合にも結果が誤ることはないというメリットがある。また、この機構はトランザクションメモリにも使え、並列プログラムを書きやすくすることにも貢献する。

BG/Qのプロセサコアは4スレッドを並列に実行できるマルチスレッドプロセサであり、1チップで最大64スレッドを並列実行できる。64スレッドの排他制御を通常のアトミック処理命令で行うと14,000サイクル掛るのに対して、Multi-Versioned Cacheを使うと1,000サイクル程度で排他制御ができるというデータが示された。

20PFlopsのSequoiaシステムは98,304個のBG/Qチップを使う巨大システムであるので、エラー対策には最大限の考慮が払われており、メモリインタフェースは16バイトデータの中の2ビットエラーの訂正と3ビットエラーの検出ができるようになっている。これはSPARC64 VIIIfxの8バイトデータの中の1ビットエラーの訂正と2ビットエラーの検出と比べると、2ビットのエラーが同じ8バイトに含まれていても訂正できるという点で、若干、強力であると言える。また、主要なレジスタにはパリティチェックが付けられており、エラーが検出された場合には、以前の状態から再実行を行うという機能が設けられている。そして、このような対策が取れない部分では、中性子ヒットなどによってエラーが起こりにくい回路形式であるDiceラッチを用いるなどの防御策が取られている。

BG/Qのシステムはコンピュートチップから始まって、次の図のような階層で構成されている。

BG/Qシステムの階層(出典:Cool Chips XVでのChiu氏の講演スライド)

まず、コンピュートチップはパッケージに入れられ、それがDRAMと一緒にプリント基板に搭載されコンピュートカードとなる。コンピュートカードにはアルミ製のヒートシンクが付けられおり、これを水冷のレールに押し付けるという方法で冷却が行われる。

そして、ノードカードと呼ぶシャシーには、32枚のコンピュートカードが搭載されている。その次の階層はミッドプレーンである。ミッドプレーンはその名の通り、前後からノードカードを挿入できるようになっており、前から8枚、後ろから8枚のノードカードが挿入される。

システムの構成部品としては、ミッドプレーンに加えてIOを接続するI/Oドロアーがある。I/Oドロアーには8枚のI/Oカードが入っている。このI/Oカードはコンピュートカードとほぼ同じものであるが、BG/Qチップには大きな放熱フィンが付き、空冷である点が異なる。

そして、2つのミッドプレーンと最大4台のI/Oドロアーが筐体に搭載される。ノードカードにBG/Qコンピュートチップが32個搭載されており、16枚のノードカードを挿入するミッドプレーンには512チップ、筐体1台で1024チップと非常に高密度な実装である。この高密度はBG/Qコンピュートチップが京スパコンのICC相当の機能も1チップに集積しており、かつ、消費電力も低いことで可能になっている。

BG/Qのコンピュートカード(出典:Cool Chips XVでのChiu氏の発表スライド)

BG/Qのノードカード。コンピュートカードが16枚×2列に搭載されている(出典:Cool Chips XVでのChiu氏の発表スライド)

BG/Qの筐体。斜めの模様が描かれている(出典:Cool Chips XVでのChiu氏の発表スライド)