第 2 回:システム構成と「Flipper」「Gekko」のアーキテクチャ
ゲームキューブの基板は、徹底的に無駄を省いたシリコンコストの最小化が図られており、主に以下のスペックを持つカスタムチップ群で構成されています。バス遅延を最小化するため、チップ間のトポロジーは中央のシステム LSI 「Flipper」を中心に放射状に配置される形 (スター型配置) を採用しています。
| コンポーネント | カスタムチップ名 / 採用技術 | 動作周波数 / 容量 |
|---|---|---|
| CPU | IBM Gekko (PowerPC 750 / G3 ベース) | 485 MHz |
| GPU / システム LSI | ATI (ArtX) Flipper | 162 MHz |
| メインメモリ (1T-SRAM) | MoSys Splash (メインシステム RAM) | 24MB |
| A メモリ (補助 RAM) | マクロニクス製 SDRAM (A-RAM) | 16MB |
| グラフィック用内蔵メモリ | Flipper 内部混載 1T-SRAM (VRAM) | 3MB (テクスチャ 1MB / FB 2MB) |
当時の 3D ゲームグラフィック処理における最大の課題は、GPU の演算速度に対して、外部メインメモリへのアクセス速度 (メモリ帯域・遅延) が全く追いつかないという点でした。競合ハードが高速かつ高価な外部メモリの採用や、複雑なバス制御でこれに対処しようとしたのに対し、ArtX チームが導き出した答えは「必要なメモリを GPU 内部へ埋め込む」ことでした。
Flipper のダイ (シリコン上) には、わずか数クロックのレイテンシでアクセス可能な 3MB の「混載 1T-SRAM」が統合されています。1T-SRAM とは、通常の DRAM の構造 (1 トランジスタ・1 キャパシタ) を持ちながら、SRAM と同等の超高速・低遅延アクセスをロジック回路の工夫で実現した特殊なメモリ技術です。この 3MB は以下のように厳密に役割が固定されていました。
3D モデルに貼り付けるテクスチャデータを一時保持。GPU のテクスチャマッピングユニットに直結しており、処理の破綻 (テクスチャの読み込み遅延による描画バグ) を防ぎます。
カラーバッファおよび Z バッファ (深度計算) を保持。画面の描画処理はすべてこの超高速な内部領域で行われ、完成した 1 フレームの画像データのみが最終的に外部のメインメモリへと転送されます。これにより、ピクセル描画時の激しいメモリ読み書きが外部バスを圧迫しない設計となりました。
ゲームキューブのグラフィック処理を司る「Flipper」は、現代のプログラマブル・シェーダーとは異なり、あらかじめチップ内部に計算ロジックが焼き付けられた「固定機能パイプライン」の究極系として設計されています。N64 の反省から、グラフィック演算のボトルネックとなる要素はすべてハードウェア回路単体で完結するよう自動化されました。
3D 空間の座標変換、クリッピング、そして頂点ごとのライティング (光源計算) を処理する専用のハードウェアエンジンを内蔵。N64 のように複雑なマイクロコードの最適化を必要とせず、C 言語の API を叩くだけで、常に安定して毎秒 3,000 万ポリゴン以上の持続的な描画処理を実効レートで叩き出す能力を誇りました。
Flipper のグラフィック表現において最も特筆すべきが、ピクセルシェーダーの先祖とも言える「TEV (テクスチャ環境) ライン」です。これは、独立したカラー/アルファの合成回路 (カラーコンバイナ) が 16 個直列に並んだ構造をしています。
プログラマーは、テクスチャの色、頂点の色、フォグ (霧) の係数などをこの 16 個の「ステージ」に順番に通し、レジスタ設定による四則演算をパズルのように組み合わせることで、プログラム (コード) を実行することなく、バンプマッピング (凹凸表現) やマルチテクスチャブレンド、環境マッピングなどの高度な質感を「遅延ゼロ」かつ「ハードウェア最高速」で画面に描き出すことに成功しました。
Gekko CPU (PowerPC 750) の最大の特徴は、任天堂と IBM が独自に追加したカスタム SIMD (単一命令複数データ処理) 命令、通称「Paired Singles (ペアリング・シングル)」です。
通常、PowerPC 750 は 64 ビットの浮動小数点レジスタ (FPR) を 32 基持っていますが、ゲームプログラム (特に 3D の座標変換や行列計算) で多用されるのは 32 ビットの単精度浮動小数点数 (float) です。Gekko は、この 64 ビット幅のレジスタ 1 基の中に、32 ビットの単精度浮動小数点数を 2 個同時に詰め込む (ペアにする) 構造へとハードウェアを拡張しました。
これにより、1 つの命令で 2 つの幾何学演算を同時に実行できるようになり、3D グラフィックの頂点演算能力は理論上、ベースとなった標準の PowerPC 750 の「2 倍」に跳ね上がりました。SIMD のために新しいレジスタセットを追加するのではなく、既存のレジスタを効率的に 2 分割して使い回すという、非常にスマートでシリコン面積を浪費しない合理的な設計思想の現れです。
ゲームキューブには、24MB のメインメモリ (1T-SRAM) とは別に、バス速度のやや遅い 16MB の「A メモリ」 (一般的に A-RAM やオーディオ RAM と呼ばれる領域) が搭載されています。名称はオーディオ用途ですが、このメモリの真の価値は、メインメモリを圧迫しないための「超高速なハードウェア RAM ディスク (一時キャッシュ)」としてシステム全体で柔軟に使い回せる点にありました。
ゲームキューブのメディアである 8cm 光ディスク (約 1.5GB) からデータを読み出す際、すべてのデータを高速・高価なメインメモリ (24MB) へ直接ロードすると、メモリがすぐに枯渇してしまいます。そこで開発者たちは、ディスクから読み出したテクスチャやアニメーションデータ、そして音声素材をまずこの「A メモリ」へバックグラウンドで DMA 転送 (一括転送) しておき、ゲームの進行に応じて必要なデータだけを最速でメインメモリへ吸い上げるという「2 階層のメモリ管理」を行いました。
この仕様により、ゲームキューブは当時の光学メディア機器としては異例とも言える「ロード時間の短さ」をハードウェア構造レベルで実現することができたのです。