BG/Qコアの構造は次の図のようになっている。

BG/QプロセサのブロックダイヤグラムとクワッドFPUの構成

POWERアーキテクチャではAXUという形で追加の演算ユニットを付加することができるようになっており、プロセサブロック図の青色の部分に4個の浮動小数点積和演算器(MAD0~3)が接続されている。それぞれの積和演算器は64ビット倍精度浮動小数点の積和演算を行うが、2個をペアとして使用して複素数の積を計算することも可能となっている。

今回の発表で驚いたのは、L2キャッシュにマルチバージョン化という機能を取り入れトランザクションメモリのサポート行うという点である。SunのRockプロセサがトランザクションメモリをサポートするハードウェアを持っていたが、RockはSunがOracleに買収される直前にキャンセルされており、BG/Qが実用化されると、トランザクションメモリのハードウェアサポートを持つ初めてのプロセサとなる。

BG/QチップのL2キャッシュはマルチバージョン機能を実装

投機実行を行うと、予測ミスなどで間違った実行をしてしまった場合、元の状態に戻す必要がでる。Rockでは投機実行の結果はL2キャッシュには書き込まず、コア内に留めて置き、予測ミスがあってもL2キャッシュの内容を書き換える必要が無いという制御を行っていたのであるが、このやり方では投機的に実行できる命令列の長さはあまり長くできない。これに対してBG/QではL2キャッシュに元の状態と投機的に書き込みを行った状態を別々のバージョンとして記憶することができる機構を作ったと考えられる。このようにすると、投機が間違っていなかった場合は、投機側のバージョンを正式として、元のバージョンの情報は捨て、投機が間違った場合は逆に元のバージョンに戻して、投機側のバージョンは捨てるというようにすれば良い。 トランザクションメモリも一種の投機実行であり、このような機構を設けると、かなり大きなトランザクションをハードウェアで処理できるようになり、並列プログラムが容易になると期待される。しかし、この機構でトランザクションの衝突を検出できるのは同一チップ内のコアの間だけであり、何千、何万ものチップを使うシステムでの有効性は筆者には良くわからない。

BG/Qシステム全体は次の図のようになる。

BG/Qシステムの実装階層

最初の部品はBG/Qチップで、それ1個がモジュールになっている。そして、1個のモジュールが36個~72個のDRAMチップとともに計算カードに搭載される。一般にメモリはDIMMが用いられるが、DIMMソケットの故障率が無視できないので、Blue Geneでは代々、DRAMチップを計算カードに直接はんだ付けしている。 この計算カードを32枚搭載するノードカード、それを16枚集めたミッドプレーンという単位とI/Oドロワーを組み合わせてラックとなる。ラックは2個のミッドプレーンと1~4 I/Oドロワーから構成される。そして、このラックを並べて、20PFlopsのSequoiaシステムとなるという訳である。

200GFlopsのチップで20PFlopsのシステムを作るのであるから、必要なチップ数は10万個である。このように大量のチップを使うので、個々のチップには高い信頼度が要求される。プロセサチップではもっとも頻度が高い誤動作の原因は宇宙線を起因とする中性子のヒットによる一過性のエラー(ソフトエラー)である。 BG/QチップではDRAMやL2キャッシュ、ネットワークやチップ内の大きなSRAMなどはECCを付けてエラーを訂正し、小規模なバスやレジスタファイルはパリティーチェックでエラーを検出し訂正を行う機構を設けている。そして、一部では中性子ヒットによる誤動作が起こりにくい(しかし、面積や消費電力は増える)フリップフロップを使うというような対策が採られている。 発表の後に、会場から平均故障間隔について質問があり、10万チップで約3週間に1回という答えであった。これはシステム全体ではなくBG/Qチップだけの信頼度と思われるが、個々のチップの誤動作は5700年に一回という非常に高い信頼度である。