1996年
NINTENDO64
1996年
NINTENDO64
NINTENDO64の開発責任者 竹田玄洋氏へのインタビューより
CPUにR4300iを選んだ理由
五十嵐(以下、I)CPUにMIPSを使われた理由は、一番早い時期に出た64bitのチップということですか。
竹田(以下、T)今回Silicon Graphics社と共同で開発という流れの中で自然と出てきたものです。処理速度が速ければ32bitでもよかったんですが。R4300は内部クロック90MHz以上で動いてますが、R3000ではなかなかそうはいかないですから。
I)レジスタは64bitで使われてるんですか。
T)使ってる人もいます。それぞれモードを使い分けてます。この4300iは、4200と比べてフローティングが速いですから。
I)ゲーム機でFPU搭載というのは初めてですね。
T)そうです。物理計算をきちんとやったり、こだわりたい人はこだわわれますね。坂道を走るシーンなどがちゃんと計算できる。
I)そういえば、マリオ64でも波紋や煙などが出てきたりしますね。
T)そういう意味では、グラフィック云々というより、従来経験したことのない経験ができるとでも言いましょうか。
I)TLBを持ってるゲーム機というのも、これも初めてだと思います。
T)いろいろ議論はありますが、はっきり言ってあまり使えてないというのが現状ですね。今64DDを開発していますが、こちらで使えるだろうと思います。
I)ROMはメモリマップされてるんですか。
T)通常のメモリマップがされてます。従来のファミコンやスーパーファミコンの場合は、ROM上のプログラムを実行していたわけです。そういうのは今回はありえない。
I)ROMは速度が遅いですからね。
T)そういう意味で、N64のROMカートリッジはシーケンシャル型の超高速CD-ROMドライブみたいなイメージです。半導体のシーケンシャルで読み込む特殊なROMということですね。チップ数を減らしてASICのような手法によるマスクROMです。
メモリはRAMBUS DRAM
I)RDRAMですが、これを選ばれた理由は?
T)SGIの中にもRAMBUSを支持する人もいれば、どうもねという人もいるわけです。これを使う決定には任天堂がイニシアティブを取りました。RAMは最初からユニファイドのRAMということは決めてました。RAMを1カ所に集めるということですね。SDRAMという選択肢もありますが、拡張ができるということになるとRDRAMしかなかった。性能をシミュレーションしてみると、パケット型なので実際にはカタログ性能ほどバンド幅が取れないわけですが、民生品としてはいいソリューションだと思ってます。
I)SRAMは使えないという前提のもとに考えると、ということですか?
T)64bit幅のパターンは民生品としてはありえないというわけです。
I)普通のDRAMと比べてどれくらいパフォーマンスが向上していますか。
T)グラフィックス、テクスチャ、CPUなどすべてがここへ集まっています。だから当然ながら、ピーク値とはほど遠いです。SPの内部にテクスチャキャッシュを持ってますが、そこのチューンナップはけっこうたいへんですね。
9bit幅のRAMがもたらす大変革
I)RAMが9bit幅になっている理由は?
T)ビデオゲームの場合、普通はRGB各5、5、5で取り扱って15bitですね。αbitとか、サブピクセルカバレッジに使うbitが欲しくて、3bit分そちらに使っています(計18bit)。従来のゲームというのはピクセル単位でカクカク動いてたわけですが、N64ではカバレッジをきちんと取り扱います。
I)ゆっくりと滑らかに動かせる。
T)9bitというのはそこから来てるんです。
I)CPUの命令/データは32bit幅ですね。4bit余ることになりますが、CPUからは9bit目は見えるわけですか。
T)見えないです。立ってるかどうかも分からない。SPを通せばチェックできます。
I)CPUからみてRAMのレーテンシはどれくらいですか。プライマリーキャッシュミスしてから最初のデータが読み込めるまで。普通のDRAM+αぐらいですか。
T)そうです。ミスヒットした場合、レーテンシはけっこう大きいですね。
I)そうすると多くの時間がプライマリのキャッシュミスにとられますね。かなり意識してコードを書かないと速くならないですよ。
T)しかし、普通に使ってもかなり速いですから、とことんチューンナップしないで使ってる人もいますよ。
I)CPU処理能力に余裕がある?
T)N64のグラフィックはディスプレイリストさえ書けば、ほとんどSPが描きますから。そういう意味で、CPUの役割というのは、さっき言った物理現象をシミュレートするとかいうことになります。
絵と音の神「SP」はマイクロコード書き換え可
I)SPですが、OpenGLでいうディスプレイリストのようなものを受けとるわけですか?
T)まぁOpenGLほど頭でっかちじゃないです。リアルタイムですから。
I)座標変換行列の操作と頂点座標の列?
T)そういう意味ではOpenGLに相当しますね。ただ、よく誤解されるんですが、GLのような演算の重い形にはなってないです。
I)中間結果はキャッシュしているんですか。
T)今のバージョンはやってないです。ただしマイクロコード自体が書き換えられますから、いろんな版があります。マリオ64とかパイロットウイングス64はフルフィーチャー版を使ってます。ターボといって、ある程度クオリティを落としたものもあります。ZバッファをやめてZソートにした版もありうるでしょう。
I)SPの命令セットはどうなってるんですか。
T)スカラーユニットはMIPSのアーキテクチャに近い。これにベクターのハードウェアが付いてるような感じと理解してもらっていいです。
I)じゃ32bit命令を同時実行するわけですか。
T)それがベクターユニットで、16bitの演算器を8個持ってます。
I)パイロットウイングスだとかなりパースが深いですよね。16bit固定小数点では座標が収まらないと思うんですが。
T)16bitの演算を2回行なって32bitの精度を得ています。
I)座標変換するときに、オブジェクトの座標をいったんワールド座標に変換し、照光処理してスクリーン座標に変換してという手順で処理をやっていくわけですが、このプログラムは全部命令メモリに入るんですか。
T)それは一部メインメモリと出し入れしたりしてますね。
I)効率よくやろうとすると、座標変換用のマイクロコードをロードして中間結果を書き出し、命令メモリに照光用のマイクロコードをロードして照光計算をやって、その結果をデータメモリに吐き出してというようなことをグルグル繰り返すと。
T)フルフィーチャーの場合はそうなります。
I)オーディオのほうは?
T)同じSPを使ってます。グラフィックだとダブルバッファのクリアから始まりますよね。ということはDPは忙しいがSPは何もすることがない。そこで、ADPCMの展開などオーディオ用のタスクをSPに振る。
I)いわゆるFM音源的なものはもちろん付いてないわけですが、RCPが必要とあればやるということですね。
T)CPUが関与するというやり方もありますね。標準的にはSPでわれわれが用意しているサウンド用の命令メモリにロードしてやります。
ピクセル描画プロセッサ「DP」の役割
I)画像処理はサブピクセルでやっているわけですが、Zバッファはピクセルレベル?
T)ピクセルレベルです。
I)そうすると覆い隠しの継ぎ目の処理が少し怪しくなる。
T)エッジだけのアンチエイリアスはカバレッジで行なってます。
I)カバレッジを考慮に入れてエッジのアンチエイリアスを行なっていると。
T)カバレッジはフォアグラウンドとバックグラウンドの2つ欲しいわけです。そこが今回のわれわれのパテントです。
I)フォアグラウンド側は例の3bitを使うとして、バックグラウンドのカバレッジというのはどっかに持ってるわけですか。
T)持っていなくて回りとかをみて計算で出します。
I)演算能力がもったいないような気がしますが。ほんとにメモリを置くより得なんでしょうか。
T)それは専用のハードがありますから。どうせ最終段階でインターポーレーションしないといけませんし。
「ミップマップ」機能の実力
I)ミップマップですが、4Kbytesのテクスチャメモリにミップマップが全部入るわけないと思うんですが。
T)普通は切り替えながらやってるんだと思います。
I)インターポーレーションするためには少なくとも上と下の2つのミップマップをそこに入れないといけないわけですよね。32×32が1個で2Kですから、そこまでしか入らない。64×64と32×32のインターポーレーションはテクスチャメモリ上ではできない。
T)ですから、ミップマップを使うと、処理的には辛くなります。
パイロットウイングス64で生かされる「Zバッファ」
I)Zバッファのデブスは何bitですか?
T)18bitのうち3bitの指数部を持つ特殊なエンコーディングです。SPの32bit固定小数点の演算結果は、Zに限ってこの形式に変換されます。
I)整数じゃないZバッファというのは初めて見ました。
T)まぁ、要はフルフィーチャーのマイクロコードでZバッファがこういう形式をサポートしているという話で、マイクロコードを変えれば、もっとチープなZバッファもありうるということです。
I)格闘ゲームのように狭いエリアで完結してるようなものならいいですが、パイロットウイングスみたいに広いエリアを動くものは、これぐらいないとプログラムを組むのがたいへんです。
T)マイクロコードがフレキシブルに変えられるというのがN64のコンセプトですから。
「64DD」でできること
I)64DDですが、これとメモリ拡張を同時に行なうということですね。
T)同時にするかどうか、まだ結論出すのは早いと思います。
I)RDRAMを増設するとすれば、18Mbit?
T)もしくは16でもいいですね。そこにグラフィックのフレームバッファを置かなければ。値段だけの問題です。16かな(笑)。
I)64DD対応ソフトは要メモリ増設ということですか。
T)そうでしょうね。ただ、64DDを使ったからといって必ずしもメモリ増設が必要ないというゲームもあるでしょう。
I)ROMより読み出しのレーテンシははるかに大きいわけですが、どうですか。
T)ROMでも、ゲーム動作中に読んでくるのはWAVEテーブルだけですけどね。楽器が変わったときぐらいでしょう。
I)使い方としては、ハードディスクのように中間結果をバリバリ書き出すような使い方はできなくて…。
T)やはりマリオペイントのデータをセーブしたりとか、データベースを構築したりとかでしょうね。任天堂はハードウェアの性能を追いかける会社じゃないですから、ゲーム性とのトレードオフ関係で考えます。おカネかければいいものができるのはあたりまえという、そういう文化の会社です。
3Dスティックへの道
I)コントローラに3Dスティックというアナログジョイスティックを採用されたんですが、これは当然の選択ということですか。
T)十字キーというものを初めて世に出したのはわれわれだし、LRキーを初めて出したのもわれわれです。いろんなゲームに使えるコントローラというものを考えたときに、出てきた結論が3Dスティックなんです。結果は落ち着くところに落ち着いたなという感じですが、けっこうこれに決めるまでには遠回りしてますよ。それと、十字キーもちゃんと残してるんです。これを3Dスティックに置き換える勇気はないですね。
I)通信モデムなどに関してはどうですか。
T)カートリッジを使うこともできるし、コントローラポートも双方向で150kbpsですから使えます。
子供たちにReality Engineをあげたい!
I)全体的な開発意図は?
T)1つのハードで5年ほどやっていかないといけない。最初から5年先のスペックを全部積むというのは無理ですから。だったら極力プログラマブルでやれということです。
I)ソニーコンピュータエンタテインメントの久多良木さんが、PlayStationはプレーヤではなくてシンセサイザだとおっしゃったんですが、N64はよもやプレーヤーではない。かといってシンセサイザでもなくて、まさにコンピュータという感じがしますが、そういう意味での位置づけについてはどうですか。
T)子供たちにあげられるいちばんいいおもちゃは何だろうと考えたときに、SGIの「Reality Engine」あれを自由自在に使えたら、いちばんいいプレゼントだろうなという発想がありました。われわれハードウェアサイドから見てそういう発想が根底にありました。
任天堂は伝統的に、ゲームを作る人たちにどれだけイマジネーションを与えることができるかということがポイントですから。そういうクリエイターと話をするなかで作っていくのが基本ですね。
I)すると、"Open Inventor for N64"みたいなものもありうるんですか?
T)(笑)可能性としてはありえますね。
I)3Dのモデリング、リアルタイムでのムービー出力とか、今PCでは若干出てきてますが。
T)というより、われわれの場合、ヴァーチャルなトイをN64でカカカっと作る、そしてそれを飛ばしてみるとか・・・。
I)“マリオカート・コンストラクション”みたいな。
T)そう。
I)シリンダを長くするとエンジンの出力特性が変わるとか、計算でできますよね。エンジニアがコンピュータというものに対して持ってるイメージに近い。そういう意味ではプログラミング・キットも出してほしいですね。
T)考えないといけないのは、プレイしたい人と、作ってプレイさせたい人といるわけですね。3Dを簡単に触れるという意味では、そんなに敷居は高くないと思います。将来のことも少し考えながら、マリオ64にマリオの顔の福笑いを付けたりしました。
I)おもしろいですよね。これで立体視できたらすごいですね。
T)すでにそういうモデラーを作っているグループもありますよ。ぐるっと回したりね。簡単にできますからね。ただ、30フレームでは辛いでしょうね。シリコンヴァレーあたりからいろいろ売り込みはありますが・・・。
N64はパソコンと競合するか?
I)今パソコンでN64のようなことをやろうとしても無理ですが、今年の暮れぐらいにはたぶんハイエンドのグラフィックカードを使えば、いけると思います。来年の暮れには少し高いカードを使えばこれぐらいいけるという状況になると思うんですが、ゲーム機としてのパソコンとの競合という点についてはどうお考えですか。
T)ハードウェアのスペックを見てると、私は完全に競合だと思いますよ。ただ、違うのはパソコンって、1つの商品じゃないでしょ。CPUがそれぞれ違うし、ビデオシステムもみんな違う。われわれゲームの作り手が、料理人だとしますと、シェフの作ったいちばんいい味を誰も食べてないというのがPCですよね。ゲーム機の良さというのは、うちの宮本とか、ゲームの作り手がこういうふうに食べてほしいなというものをそのままプレイヤーに食べてもらえるわけです。職人の人たちはそういう仕事をしたがりますね。グラフィックにしてもサウンドにしても、どんな形で食べてもらえるのか想像できない状態ではゲームは作れないと。そこがいちばんの違いではないでしょうか。
ASCII 1996.7
NINTENDO64の基盤。2層で主要チップはたったの4個。