|
●たった5チップで構成されたゲームキューブ
ゲームキューブの基板には、5つのチップしかない。中央にあるのがグラフィックス機能などを含むシステムLSI「Flipper(フリッパ)」。その下にあるのがCPU「Gekko(ゲッコ)」、上の3つのチップは右の2つが「Splash(スプラッシュ)」と呼ばれる1T-SRAMでメインメモリ、左のチップが補助メモリのSDRAMだ。メモリは1T-SRAMがそれぞれ96Mbitでx32構成。2チップで64ビット幅インターフェイスの24MBとなる。SDRAMはX8の128Mbit品なので16MBとなる。チップは、これで全てだ。
ゲームキューブのチップ数が少ないのは、Flipperにほとんどの機能を集約してしまっているからだ。PC的な表現をするなら、グラフィックスチップ、ノースブリッジ、サウスブリッジ、オーディオDSP、さらにビデオメモリまでがワンチップに納められている。では、具体的にゲームキューブの構造がどうなっているのか見てみよう。
Flipperは、ArtXという小さなビデオチップベンチャーが開発を担当した。現在、ArtXはATI Technologiesに買収され、その開発チームはそっくりATIに組み込まれているが、ArtX自身は、以前から任天堂と関係があった。
ArtX時代からFlipperの開発を担当するATI Research Silicon Valley(ATIの子会社)のGreg Buchner氏(Vice President, Engineering)は「我々のチームは任天堂と8年以上の長い関係を持っている。SGIで、ニンテンドー64のチップセット(コードネーム:Reality Co-Processor)の開発を担当していたチームの人間が中心となっているからだ」と説明する(ATIへのインタビューの詳細は、9/29発売の「DOS/V PowerReport」11月号に掲載)。そして、このRealityチームが継続して開発を担当していることが、Flipperの大きなカギとなっている。
●見た目はオーソドックスなグラフィックスエンジン
下がATI Research Silicon Valleyの説明などをもとに構成したFlipperの推定構造図だ。大きいのはもちろんグラフィックスで、3Dパイプのうちジオメトリプロセッシングを担当するユニット群と、レンダリングを担当するユニット群に分かれる。この他、オーディオを担当するDSPコアとメインメモリのインターフェイス、それに各種I/OやCPU GekkoへのFSB(フロントサイドバス)がある。内部コアは162MHzで駆動されているが、DSPコアだけは81MHzとなっている。
グラフィックスパイプ部分は、パっと見るとほとんどの部分がトラディショナルなアーキテクチャに見える。例えば、PlayStation 2は、フルプログラマブルなVLIWベクター演算ユニットでジオメトリエンジンを構成し、レンダリングパイプも16並列と奇抜な構成になっている。Flipperは、それと比べると、見かけはずいぶんおとなしい。ジオメトリは、基本的には固定ファンクションのユニットで構成されているし、レンダリングは4パイプだ。これだけ見ると、ごく普通のグラフィックスコアに見える。
ATIのBuchner氏によると、これは開発者にとってのわかりやすさを優先したためだという。前回のコラムでも触れたが、ニンテンドー64のReality Co-Processorは、これとまったく逆のPlayStation 2と似たアプローチのチップだった。例えば、ジオメトリ&セットアップコアには、8並列のベクター演算ユニット(16bit積和算ユニットで、ペアで32bit演算が可能)+MIPSコアのRISCエンジンを搭載していた。つまり、ジオメトリ演算専用に固定されたユニットではなく、自由度が非常に高いメディアプロセッサ(DSPライクな演算器群)を用意したのだ。
しかし、これは開発者にとっては悪夢だった。これまで会ったことがないアーキテクチャの上で、ゲームのグラフィックスエンジンを構築/チューンするだけで膨大な労力が必要になってしまったからだ。また、エンジン以外の部分にボトルネックがあった。そのため、スペック上のピーク性能がいくら高くても、それを活かすことができなかったという。それが、ニンテンドー64が日本で敗退した原因のひとつだった。
Flipperは、それに対する任天堂&ArtX(現ATI)の回答だ。つまり、開発者にとって使いやすく、実効性能が高いアーキテクチャにすることが重要だと判断したのだ。
例えば、ジオメトリに関しては、Buchner氏は、開発者が予測できる振る舞い(predictable behavior)が重要だとしきりに強調していた。ハードロジックで組まれて、予測できるエンジンの方が使いやすいというわけだ。また、Flipperはグラフィックスパイプの作りが、ピーク性能を追求するのではなく、デッドタイムやダウンタイムを極力なくすことで、実効性能を高めることに注力しているという。そのため、Flipperでは、現在の3Dグラフィックスでボトルネックになりやすいメモリ回りとレンダリングパイプの部分に、かなりのトランジスタを割いている。
●テクスチャのハンドリングにフォーカス
Flipperのダイ(半導体本体)レイアウトを見ると、これがよくわかる。下の図が、ATIの資料をベースに機能ごとに色分けしたFlipperのダイのレイアウト図だ。
黄色の部分 | グラフィックス以外 |
水色の部分 | ジオメトリパイプ |
緑色の部分 | レンダリングパイプ |
薄緑色の部分 | テクスチャ関連ユニット |
桃色の部分 | メモリ |
Flipperのレイアウトでまず目立つのは、オンダイに搭載した約3MB分のメモリだ。約2MBがフレームバッファ&Zバッファ、約1MBがテクスチャキャッシュとなっている。両メモリは、ダイ(半導体本体)の上で完全に分かれており、共有メモリになっていない。また、メモリには、1T-SRAMと呼ばれる疑似SRAM(メモリセル自体はDRAMだが、インターフェイスはSRAM)の一種を使っている。1T-SRAMについては、また、あとで説明したい。
次に目立つのは、レンダリングとテクスチャ関連ユニットが、ダイの大半を占めていることだ。グラフィックスパイプの図を見てもらうとわかるが、Flipperでは「テクスチャエンバイロメント」と呼ばれるユニットがテクスチャを管理/貼り込む。Buchner氏によると「多くの知的所有権(IP)が集中するのがこのユニット」だという。
テクスチャに関してFlipperが優れているのは、第1にキャッシングだ。テクスチャメモリは、エンベデッドテクスチャキャッシュと、外付けのメインメモリ(Splash)上のテクスチャエリアの2段階構成でキャッシングを行なう。PlayStation 2などでは、こうしたキャッシングはソフト側がケアしなければならないが、Flipperではキャッシングをハードウェアが管理する。「キャッシュのアルゴリズム自体は、IntelのCPUよりはるかに複雑で高度。テクスチャに合ったアルゴリズムで、プレイスメントやエイジングを行なっている」(Buchner氏)という。
この仕組みがあるため、ソフト側は1MBの狭いテクスチャキャッシュだけでなく、メインメモリもシームレスにテクスチャメモリとして使うことができる。もちろん、そのためにはメモリが低レイテンシでランダムアクセス性能が高くなければならないが、1T-SRAMがそれを解決している。また、テクスチャはメインメモリやキャッシュにある時はS3TCフォーマットで圧縮されており、テクスチャエンバイロメントに取り込む段階で、伸張される。
Flipperのテクスチャエンバイロメントはマルチテクスチャで1パイプで複数のテクスチャの同時貼り込みができる。それ自体はもう珍しくないのだが、テクスチャエンバイロメントはそれだけでなく、マルチテクスチャリングの制御で、複雑なことをやっているらしい。らしいと書いたのは、まだ詳細がわかっていないからで「テクスチャを結合させたり、ひとつのテクスチャを他のテクスチャにアフェクトさせたり、テクスチャをモーフさせるといった部分で、他社が持っていない特殊なIPを持っている」とBuchner氏は概要を語るだけだ。
ただ、Realityチップ内のレンダリングエンジン「Reality Display Processor」が、テクスチャに関しては特殊なフィーチャをいくつも備えていたことから、そのアーキテクチャを発展させたと推測される。このあたりは、そのうち判明したらレポートしたい。また、レンダリングしたデータをテクスチャとして使うMulti-Passレンダリングも可能で、同時発売タイトルでエンバイロメントマッピング(周囲を3Dオブジェクトに映り込ませるマッピング)を使っている。
□関連記事
【9月20日】【海外】ゲームキューブ登場。PS2/Xboxとアーキテクチャを比較
http://pc.watch.impress.co.jp/docs/article/20010920/kaigai01.htm
□バックナンバー
(2001年9月25日)
[Reported by 後藤 弘茂]