# Overview of the Blue Gene/L system architecture > [!abstract] 概要 > Blue Gene/L コンピュータは、IBM のシステムオンチップ(SoC)技術に基づく超並列スーパーコンピュータである。65,536 個のデュアルプロセッサノードへ拡張できるよう設計されており、ピーク性能は 360 テラフロップスである。本論文はプロジェクトの目的を述べ、その結果として得られたシステムアーキテクチャの概観を与える。アプリケーションに基づく設計方針と、低消費電力で高度に集積した設計の根拠を議論する。本論文では Blue Gene/L の主要なアーキテクチャ上の特徴を紹介する。すなわち、リンクチップの構成要素と 5 つの Blue Gene/L ネットワーク、PowerPC 440 コアと浮動小数点の拡張、オンチップおよびオフチップの分散メモリシステム、高信頼性のためのノードレベルおよびシステムレベルの設計、そして故障分離への包括的な取り組みである。 ## 論文情報 - 著者: [[Alan Gara]] ほか 14 名(IBM Research Division、[[IBM T. J. Watson Research Center]]) - 掲載: IBM Journal of Research and Development 49(2/3), pp. 195-212, 2005 年 3/5 月号(Blue Gene/L 特集号の概観論文) - DOI: 10.1147/rd.492.0195 - 対象: [[IBM Blue Gene/L]]。開発は [[Lawrence Livermore National Laboratory]] の資金援助を一部受けた(Acknowledgment)。 ## 概要 Blue Gene/L(BG/L)は、既存スーパーコンピュータと特定用途専用機のコスト性能比の隔たりを埋めるために設計された。QCDSP など先行の専用機に倣い、中程度の周波数の組込み PowerPC コアを SoC として高度に集積し、性能/電力と性能/体積も同時に高める。ノード 1 個は ASIC 1 個と DDR SDRAM 9 個(または 18 個)からなり、5 つのネットワークで結ばれる。低電力化により 1 ラック 1,024 ノードを 27.5 kW で実装できる。アプリケーションの拡張性限界と RAS(信頼性・可用性・保守性)を設計の中心に据えている。 ## 問題設定 - 目標は、専用機並みの優れたコスト性能を保ちながら、アーキテクチャを一般化して比較的広い範囲のアプリケーションを扱えるようにすることである。全アプリケーションに向く機械を目指さず、並列性でスケールするアプリケーション群に対する優れた費用対効果を狙う。 - 360 Tflops を従来型の高性能プロセッサで組むと総電力は 10 MW を超え、20 MW に迫り得る(米国の約 11,000 世帯分に相当する)。電気設備の改善は遅くコストも高いため、性能向上は技術よりアーキテクチャの改善で得る必要がある、と論じる。 ## 提案手法 **設計原理。** ラック性能は「性能/ワット」×「ワット/ラック」で書ける。空冷ラックではワット/ラックが約 20 kW で定数とみなせるため、ラック性能は性能/ワットで決まる。BG/L の設計者は、低周波・低電力の組込み PowerPC コアが高周波・高電力のマイクロプロセッサを性能/ワットで 2〜10 倍上回ると述べる。電力を複雑さの根本要因とみなし、低電力化によって設計・検証・立ち上げ・実装を簡素にした。Figure 1 は近年のスーパーコンピュータの電力効率(ピーク Gflops/W)を比較する。 ![[_attachments/Overview-of-the-Blue-Gene-L-system-architecture/fig01-power-efficiency.png]] **アプリケーションに基づく方針。** 拡張性を高めつつコスト増の小さい革新に絞る。想定するアプリケーションの分類は、物理現象のシミュレーション、実時間データ処理、オフラインデータ解析の 3 種で、米国国立研究所(特に Lawrence Livermore)とサンディエゴ・スーパーコンピュータセンターとの協業で評価した。拡張性の限界は Table 1 のように整理される。国立研究所のアプリケーションは[[強スケーリングと弱スケーリング]]のうち弱スケーリングに寄り、商用の HPC は強スケーリングに寄る。 ![[_attachments/Overview-of-the-Blue-Gene-L-system-architecture/table1-scaling-limits.png]] Table 1(転記。○は該当を示す。原表では色付きの印が、調査したアプリケーション空間で最も多い限界を表す。色付きは表面対体積比の通信支配、負荷不均衡、小メッセージ、大域通信支配の列) | 限界 | 強スケーリング | 弱スケーリング | |---|---|---| | アムダール | ○ | ○ | | 問題分割の限界 | - | ○ | | 表面対体積比の通信支配 | ○ | - | | 負荷不均衡 | ○ | ○ | | 小メッセージ | ○ | - | | 大域通信支配 | ○ | ○ | | メモリフットプリント | ○ | ○ | | ファイル I/O | ○ | ○ | **ノードとシステム構成。** - ノード: 130 nm の IBM Cu-11 CMOS で作る ASIC 1 個(BLC チップ)、PowerPC 440(PPC440)コア 2 基、各コアに二重 FPU(Double-hummer FPU)、組込み DRAM 4 MB(L3)、DDR メモリ制御、Gigabit Ethernet、トーラス網・集合網の論理を集積する。2 基は設計・性能・チップ資源へのアクセスが完全に対称である。計算ノードと I/O ノードは同一の ASIC を使い、Gigabit Ethernet を配線するのは I/O ノードだけである。 - 実装: 512 ノード(各ピーク 5.6 Gflops)を約 20 × 25 インチの両面ボード(ミッドプレーン)に載せる。1 ラック 1,024 ノードで 0.9 m 幅、0.9 m 奥行き、1.9 m 高さ、総電力 27.5 kW である。ノード間接続の 85% 超がラック内で完結する。 - 全体: 完成時は 2^16 = 65,536 ノードで、各ノードは 512 MB(アーキテクチャ上は 2 GB まで拡張可能)のメモリと全ネットワーク資源を持つ。構造的な上限は 65,536 よりはるかに大きい。 - 実行モード: 通信コプロセッサモード(1 コアを通信専用、1 コアを計算)と仮想ノードモード(ノードを論理的に 2 ノードへ分け、各コアがメモリの半分を使う)の 2 つ。 - ホスト: ファイルシステム、コンパイル、診断、解析、保守には外部ホスト計算機を要する。I/O ノードが計算ノードとホストの通信を中継する。計算ノードは小さな OS で基本 I/O と高性能コードに必要な機能を扱う。 **リンクチップとパーティション。** ミッドプレーン境界ですべてのネットワークがリンクチップを通る。リンクチップは BLC と同じ Cu-11 の ASIC で、信号を再駆動して長い基板・ケーブル・基板の経路の劣化を補い、任意のポートを任意のポートへ静的に接続し直す。Figure 2 は 6 ポートのうち 4 つを使う 4 つのモードを示す。 ![[_attachments/Overview-of-the-Blue-Gene-L-system-architecture/fig02-link-chip-modes.png]] 1 つのミッドプレーン(8 × 8 × 8 ノード)の 6 つの面はそれぞれ 8 × 8 = 64 ノードで、リンクチップ 24 個(リンクカード 4 枚、各 6 個)が受け持つ。ホストがパーティション作成時に経路を設定し、以後は静的である。64 ラック(128 ミッドプレーン)を独立なトーラスをもつ複数ユーザー用に分割できる(Figure 3)。 ![[_attachments/Overview-of-the-Blue-Gene-L-system-architecture/fig03-partitioning.png]] **5 つのネットワーク。** Gigabit Ethernet(ファイルシステム接続)、Fast Ethernet(100 Mb/s)と JTAG(診断・デバッグ・初期化)、および相互プロセッサ通信用の 3 網(トーラス、集合網、バリア網)が構成する。3 網はユーザー空間からメモリマップ経由で使え、ソフトウェアのオーバーヘッドが小さい(Figure 4)。 ![[_attachments/Overview-of-the-Blue-Gene-L-system-architecture/fig04-networks.png]] - **3 次元トーラス(点対点)**: 各ノードは 6 本の双方向の隣接リンクを持ち、リンクあたり各方向 1.4 Gb/s、合計 2.1 GB/s である。ノード通過のハードウェア遅延は約 100 ns で、64 × 32 × 32 構成の最大ホップ数は 32 + 16 + 16 = 64、最悪ハードウェア遅延は 6.4 μs である。カットスルー、適応ルーティング、4 本の仮想チャネル、任意次元へのマルチキャストを備える。ミッドプレーンは 8 × 8 × 8 のメッシュで、全面のケーブル接続によりメッシュをミッドプレーン間で延ばしてトーラスを作る。 - **集合網([[集合通信]])**: マシン全体へのブロードキャストや部分集合への通信をハードウェア遅延 5 μs 未満で行う。リンクあたり目標帯域は 2.8 Gb/s(プロセッササイクルあたり 4 ビット)で、各ノードが 3 本のリンクを持つ。整数の min・max・和・ビット論理演算を回路で実行する。遅延は典型的なスーパーコンピュータのネットワークの 1/10〜1/100 以下と述べる。全域の浮動小数点和は、整数演算しか対応しないため網を 2 回使い(最大指数の取得、続いてシフト済み仮数の加算)約 10 μs で行える。静的経路表とパケット内の小さなヘッダでクラスを決め、単一の物理網に複数の独立な集合網を仮想化する。ファイルシステムのトラフィックを I/O ノードへ転送する用途も担う。大きなメッセージではトーラス帯域が集合網を超え、交差点が生じる。 - **バリア網**: 4 本の独立チャネルを持つ全ノードの大域 OR で、論理反転で AND も実現する。AND を大域バリア、OR を診断のための全域割込みに使う。64Ki ノードでの往復遅延は 1.5 μs 未満である。 - **制御網**: 25 万を超える終端(ASIC、温度センサ、電源、クロック木、ファン、LED など)を、外部の汎用サービスノードが Ethernet 経由で初期化・制御・監視する。ボード上の FPGA(control-FPGA)が 100 Mb Ethernet を I2C など各種制御網と JTAG へ変換し、全ノードのプログラムロードとデバッグを担う。 - **Gigabit Ethernet 網**: I/O ノードだけが持ち、外部スイッチ経由で並列ファイルシステムとホストへ接続する。I/O 対計算ノード比は最大 1:8 で、64 ラックで 1:64 なら I/O ノード 1,024 個、集約 I/O 帯域は 1 Tb/s を超える。 **BLC ASIC の構成(Figure 5)。** ![[_attachments/Overview-of-the-Blue-Gene-L-system-architecture/fig05-blc-asic.png]] Figure 5 の緑の箱は IBM の標準 ASIC ライブラリにある既製コアである。「Double-hummer FPU」の箱は、前世代に関連デバイスがある新規のコアである。茶色の箱は標準の設計手法で開発した新規追加物である。 **PPC440 コア(Figure 6)。** 公称 700 MHz、32 ビット Book-E 準拠のスーパースカラ、7 段パイプライン、動的分岐予測、ロード/ストア・単純整数・複合の 3 パイプライン、32 KB の L1 命令・データキャッシュ(32 バイトライン、64 ウェイ、ラウンドロビン)、64 エントリ TLB を持つ。電力目標は 1 W である。キャッシュコヒーレンスの機能は持たない。 ![[_attachments/Overview-of-the-Blue-Gene-L-system-architecture/fig06-ppc440-core.png]] **浮動小数点の拡張。** 二重 FPU は 2 基の FPU(主・副)を結合し、128 ビットのデータパスで 1 サイクルに 2 つの浮動小数点積和演算を実行する。PowerPC Book-E に対する命令セット拡張で、コンパイラの拡張が必要である。ピークは 700 MHz で 2.8 Gflops(倍精度)で、より広い並列性はメモリシステムの制約と、対象アプリケーションの細粒度並列性の低さのため意義が小さいと判断した。 **メモリシステム(Figure 7、Table 2)。** 全体のメモリは分散型(マルチコンピュータ方式)で、ノード間のハードウェア共有はない。64Ki ノードで合計 32 TB(1 ノード 512 MB)。各ノード内は L1(コア内)、L2(プリフェッチ用の小さなバッファ、2 KB)、L3(組込み DRAM 4 MB、共有)、主記憶(オフチップ DDR SDRAM)の階層をなす([[メモリ階層とキャッシュ]])。L3 の一部はメモリマップ領域として使える。プロセッサ間のパケット記述子の交換用に 16 KB の共有 SRAM とハードウェアロックを持つ。 ![[_attachments/Overview-of-the-Blue-Gene-L-system-architecture/fig07-memory-system.png]] ![[_attachments/Overview-of-the-Blue-Gene-L-system-architecture/table2-memory-latency.png]] Table 2(転記。遅延の単位は pclk、帯域は B/pclk。行中の「-」は原表の空欄) | 属性 | L1 | L2 | L3 組込み DRAM | スクラッチ SRAM | 主記憶 | |---|---|---|---|---|---| | 容量 | 32 KiB(命令)、32 KiB(データ)/プロセッサ | 2 KiB/プロセッサ | 2 MiB × 2 バンク = 計 4 MiB(2 プロセッサ共有) | 16 KiB(2 プロセッサ共有) | 512 MiB(2 プロセッサ共有) | | 遅延(pclk) | 3 | 11 | 28/36/40(ヒット/事前充電済みミス/ミス・ビジー) | 15 | 86(L3 有効時) | | 持続帯域: ランダム quad ロード(B/pclk) | NA | NA | 1.8/1.2(ヒット/ミス) | 2.0 | 0.8/0.5(単/双プロセッサ) | | 持続帯域: 逐次アクセス(B/pclk) | 16.0 | 5.3 | 5.3/5.3(ヒット/ミス) | 5.3 | 5.1/3.4(単/双プロセッサ) | | ライン幅(B) | 32 | 128 | 128 | - | - | | ライン数 | 1,024 | 16 | 32,768 | - | - | | コヒーレント | いいえ | 弱く | はい | 弱く | はい | | 連想度 | 64 ウェイ | 完全連想 | 8 ウェイ/バンク × 2 バンク | NA | NA | **コヒーレンス。** PPC440 は L1 のコヒーレンスを持たないため、ソフトウェアが L1 を管理する。L2・L3・主記憶はハードウェアで逐次一貫である([[キャッシュコヒーレンスプロトコル]])。通信コプロセッサモードと仮想ノードモードは、いずれもユーザーが L1 コヒーレンスを管理しなくてよいように設計されている。対称型マルチプロセッサとしての利用は排除されないが、L1 の非コヒーレンスが難点になる。 **信頼性(RAS)。** - システムレベル: 部品種の削減による簡素さ、電源(N+1 冗長)とファンの冗長化、DIMM コネクタを避けた DRAM のはんだ付け、ラック間ケーブルの予備信号、単一の低ジッタ 700 MHz クロック源(冗長経路はない)。ミッドプレーンごとに独立の電源境界を持ち、故障ノードのミッドプレーンを切り離して交換できる。集合網は接続の冗長性で不良リンクを避けられる。トーラスは非最小経路ルーティングで最大 3 つの同時故障を(共線でなければ)ソフトウェアで回避できるが、性能とソフトウェアへの影響があり一般用ではない。 - 可用性: リンクチップにより 8 ノード単位で任意の次元に分割でき、各パーティションでトーラスを保つ。メッシュのパーティションでは経路が制限されるため、ジョブスケジューラはメッシュだけになる断片化を避ける必要がある。トーラスの実効性能は一部の通信パターンでメッシュの 2 倍を超える。アプリケーションは定期的にチェックポイントをディスクへ書く([[チェックポイント]])。 - 保守性: 計算・I/O カード交換はケーブルを動かさず約 10 分で済む。 - ノード信頼性: SRAM は ECC かリトライ付きプロトコル、ネットワークパケットは多層の誤り検出とハードウェア再送、L3 の組込み DRAM は ECC、外部 DRAM は 4 ビットシンボル訂正・2 シンボル検出の ECC とスクラブ、予備シンボル、訂正可能誤りの計数と監視(予測的な誤り解析)を持つ。 - 故障分離: 全ネットワークリンクの両端の実行 CRC、リンクチップのパリティ、トーラス・集合網の全トラフィックに対するハードウェアのチェックサム(失敗ジョブの再実行で故障ノードを特定)、制御網経由の全状態のダンプ、BLC ASIC と DDR のサイクル再現可能な同期起動、64Ki ノード全域を 1.5 μs 未満で停止する全域割込みを備える。 ## 新規性 - 高性能サーバー並みの RAS 機能を、ASIC レベルで専用に開発することで統合した点を、コモディティなクラスタとの差別化点に挙げる。 - 専用網(集合網、バリア網)をハードウェアで持ち、大域通信と 32 バイト級の小メッセージへの対処をアーキテクチャに組み込んだ点。 - 低周波・低電力の SoC を大量に並べる設計を、性能/ワットと拡張性の議論で正当化した点。論文自身は、将来の技術のスケーリングの限界により、BG/L のようなシステムが従来型の電力効率の悪い高性能ノード方式に取って代わると予想する。 ## 実験設定 - 本論文は性能の評価実験を含まない概観論文である。性能の測定は同じ特集号の別論文(MPI、分子動力学、3D FFT、タスク配置など)に委ねている。 - Figure 1 の電力効率は、システム全体のピーク Flops を総電力で割った値で、その値が得られない場合は Gflops/チップ電力で近似したと注記している。 ## 実験結果 - 定量的な主張は設計値と仕様値である。1 ラック 1,024 ノードが 27.5 kW、トーラスの最悪ハードウェア遅延 6.4 μs、集合網の遅延 5 μs 未満、バリア網の往復 1.5 μs 未満、全域の浮動小数点和は約 10 μs、L1 3 pclk・L3 28〜40 pclk・主記憶 86 pclk、といった値を提示する。 - Figure 1 で、BG/L は QCDSP 系の専用機と並んで電力効率の上位にあり、ASCI 系・Earth Simulator・汎用のクラスタなど他の機種より高い位置に描かれる(値は図からの近似の読み取りにとどまる)。 ## 考察 - アムダールの法則(逐次部分による速度向上の制限)は、現状のアプリケーションの限界としては小さな役割にとどまる、と述べる。すでにより大規模な機械で拡張性を達成したアルゴリズムは、逐次計算の割合を 1/1,000 未満に抑えており、その水準では排除する方が簡単である([[アムダールの法則]])。 - 弱スケーリングでは負荷不均衡と大域通信が支配的で、負荷不均衡はアルゴリズムに内在するためアーキテクチャで解消できる余地が小さい。強スケーリングでは小メッセージと表面対体積比の効果が加わる。全対全パターンでノード数を 2 倍にすると、各ノードは 2 倍の数のメッセージを送り、各メッセージは 1/4 の大きさになり、総量はほぼ変わらない。この議論が 32 バイトの小メッセージのハードウェア支援と、集合通信のマルチキャストの根拠である。 - 十分に強力なネットワークを提供できれば、ユーザーはノードの絶対性能よりコスト性能を重視するようになり、拡張性のあるアプリケーションにはより多くのノードを持つスーパーコンピュータが対応する、と結論する([[ムーアの法則とデナードスケーリングの終焉]]の文脈)。 ## 強み / 弱点・課題 - 強み: アプリケーションの拡張性限界から専用網と RAS を導く設計の筋が明快であり、ハードウェアの数値仕様(遅延・帯域・容量・キャッシュ階層)が表に整理されている。ノードから 64Ki ノード全体までの故障分離を多層に整理している。 - 弱点・課題(論文自身の記述と読み取れる範囲): 対象は拡張性のよいアプリケーション群に限られ、汎用性は主張しない。クロック網には冗長性がない。L1 非コヒーレンスのため、対称型マルチプロセッサとしての利用は難しい。トーラスの障害回避は性能・ソフトウェアへの影響を伴い、一般用ではない。メッシュのパーティションが増えると断片化するため、ジョブスケジューラは洗練が必要である。 - 出典検査の留意: Figure 1 の各機種の年次・値は図から近似で読むしかなく、本文に数値の記載はない。