Nintendo64のスペック

この記事はウェブリブログ「任天堂雑学」に投稿していた記事の転載です。

01/09/26 ver2.5
02/02/28 ver2.6
03/03/08ver3.0
03/04/05ver3.1
Last updated: 01/01/2021 11:56:00
NINTENDO64は今までのゲーム機にはみられない設計が随所にみられるゲーム機である。

N64ブロック図(*1)

高機能・低コストを両立

メインのプロセッサはCPU、メディアプロッセッサのRCP、メモリはRumbusDRAM18Mbitを2個とたった4つで構成されている。
おまけに基盤は両面2層基盤と徹底したシンプルさで材料費を押さえている。ちなみにPSはプロセッサ11個、サターンは20個で、4層基盤。
N64は発売当初からハードだけでも利益が出ているという。

CPU

R4300i(NEC製VR4300カスタマイズ)
122MIPS SPECInt92-60 SPECfp92-45
Master-Clock-Frquency 10MHz min/67MHz max
パイプラインクロック・93.75MHz システムクロック・62.5MHz
命令キャッシュ・16KB データキャッシュ・8KB
外部バス幅32bit(データ、アドレスマルチプレックスバス)

PSはR3000(34MHz)30MIPS SSはSH2(28.7MHz)25MIPS
PSやSSに比べて非常に高速。
マルチプレックスバスの採用で64bitでありながらピン数(*)はわずか121ピンと32ビットのSH2の144ピンよりも少ない。
32bitモードでも使用可能(*)。
ゲーム機初の浮動小数点演算ユニットを搭載。波紋や煙など物理計算がきちんと行える。 (*)データ、アドレスマルチプレックスバス
アドレスバスとデータバスを共用する事で、信号線の数を減らし、システム全体をコンパクトで安価に設計できるバス。但し、アクセスの祭にアドレス、データを同時にアクセスする事は出来ない。
(*)ピン
ICチップに付いた金属の端子。基盤のソケットに差し込む。

(*)実際は32bitモードで使用されることが多かったようだ。

RCP(Reality Co-Processor)

RCP構成(*1)
RCP完成チップ写真(*1)

N64の心臓部。画像処理と音声処理を行う。マイクロコードを入れ替えることができ、オリジナルのマイクロコードを作ることで、とことんチューニングした処理が行える。
パッケージは160ピンQFP(プラスチック)、消費電力2.8W、260万トランジスタ相当、チップ面積81mm^2。
SPとDPと呼ばれるブロックに分かれ、SPがジオメトリ演算を、DPがレンダリングを担当する。
ラムバスインターフェイス・メモリコントローラー内蔵。 (*1)竹田玄洋「ビデオゲーム機「N64」におけるシステムLSI」(電子情報通信学会誌98年11月号)より転載

SP(Signal Processor)
32bitCPUコア(MIPS4命令のスカラユニット)、16ビットの固定小数点を8列同時実行できる積和演算機(最大500MIPS)を搭載し、ポリゴンの頂点演算や光源、Z値の計算などを行う。さらに、より高精度な頂点座標の算出や色補間データの生成をするためのサブ・ピクセルポジショニングまで行う。
N64のソフトがポリゴンがちらつかず、キャラクターなどが滑らかに動くのはサブピクセル処理のおかげである。 *積和演算ユニットは固定小数点(ax+b)を一サイクルで8組同時に実行する。4×4の行列を使った座標変換を2サイクルで処理できる。4×4の行列演算は遠くの小さな物体を見せる時に透視投影と呼ぶ手法などで使う。

*サブピクセルポジショニング
ピクセルを通って線が描けない場合、その線は最も近くのピクセルへ移動しなければならない。これがポジションエラーを引き起こし、画像がカクカクしたり、ちらつきが生じる。 最も近いサブピクセルに線が引かれるように、メモリ上では表示するピクセルよりも細かいサブピクセルに分割して、それを補間した上で表示用のピクセルに変換する。
DP(Display Processor)
いわゆるレンダリングと呼ばれる処理を行う部分。
トライリニア・ミップマップ・インターポレーション・テクスチャ
パースペクティブ・コレクション
環境マッピング(テクチャ座標の変換行列に工夫することによって周囲の風景が鏡面に映っているようなイメージが作れる・メタルマリオがそれ)
などなど強力なテクスチャ能力をもつ。
フラット/グーロー/フォン(ポリゴン分割による擬似的なもの)・シェーディング
Zバッファ
LODフィルタ(LODはLevel-of detailの略。物体の詳細度の段階で、視点から近い物体には高く、遠ければ低く設定する。各詳細度に応じたモデルデータを用意することで(詳細度が低いほどポリゴン数の少ないモデルになる)描画速度の向上を図ることができる。
独自方式のエッジ・アンチエイリアシング。
さらに、最大8bit階調の色混合機能を搭載している。これはPSやSSの半透明機能とはレベルが違う。
PSやSSの半透明機能は背景オブジェと半透明オブジェの2D合成でしかない。しかしN64は微妙な透明度を盛った3次元物体の表示ができる。実際、マリオ64などを見ても、炎、煙、水、霧、雲など微妙な透明度をもったオブジェクトが数多く出現する。 *ミップマップ
テクスチャーマッピングをする時は、ポリゴンの奥行きに合わせてテクスチャ画像を拡大または縮小する必要がある。だが、そのまま拡大・縮小を行なうと、ポリゴンの大きさによって画像が乱れてしまう。 ミップマッピングでは整数倍の異なる大きさのテクスチャ画像を用意しておき、画面上のポリゴンの奥行きに合ったテクスチャを使い、画素補間をする。画像データを単純に拡大・縮小を行なうより高品位の画像が得られる。 私の知る限り、この機能を使ったソフトはパイロットウィングス64。スーパーマリオ64を使っていないという。

*Zバッファ
 ポリゴンの陰面消去をするための方法。ポリゴンを構成するピクセルごとに一定のビット数を持たせる方式。演算コストは高いが、正確な表示が出来る。
 陰面消去の方法としてはPSなどが使っているZソートというものもある。これは、表示されているポリゴンごとに1段階づつのZ値を持たせ、一番奥にあるポリゴンからフレームバッファに描きこむ。演算コストは低いが、ポリゴン面が交わるような表示は出来ない。また、座標ズレでこの現象が起き、ポリゴンが欠けることもある。N64はマイクロコード自体が書き換えられるので、Zバッファをやめて、Zソートにする事も出来る。パイロットウイングス64の場合18bitのうち3bitの指数部を持つ(整数ではない)特殊なもの。

メモリ


4.5MB搭載。拡張可能。ゲーム機初のUMAを採用。メイン・グラフィック・サウンドのすべてのメモリを一つの主記憶で処理する。
メモリの無駄がなく、拡張するとすべてのメモリが同時に増えるなどのメリットがある。しかし、すべての処理が集中するため、今までの遅いRAMでは採用されなかった。
N64は超高速メモリシステム・Rambusを採用したことによりこれを実現した。
(*)UMA(Unified Memory Architecture.)

Rambus
Rambus社が開発した超高速メモリシステム。センスアンプ(*)の代わりに独自のキャッシュシステムを持ち、パケット式でデータを転送し、わずか9bit幅(*)でありながら超高速の転送能力をもつ。
クロックの両エッジを検出し、1クロックで2回のアクセスが出来る。N64は最大転送能力500MB/sec(クロック250Mz)を採用。
Rambusの欠点はランダムアクセスに弱いことだか、32byte単位でランダムアクセスした場合でも200MB以上の転送能力をもつ。
メモリを増設するとキャッシュも同時に増える (*)センスアンプ
DRAM上のデータは微小な電荷で示されているのでそのままではアクセスできない。センスアンプはその電荷を増幅してアクセスできるようにする装置。SRAMはこの作業が必要ないためDRAMに比べて速い。

(*)bit幅が少ないと信号線の数を減らせるため、基盤をコンパクトに設計でき、コストダウンにつながる。

カートリッジスロット


カートリッジスロットはRCPと16bitの専用バスでつながる(最大20MB/sec)。
N64に使用するマスクロムは5.3MB/secの転送能力をもつ。チップ数を減らしてASICのような手法によるもの


参考文献
竹田玄洋「ビデオゲーム機「N64」におけるシステムLSI」(電子情報通信学会誌98年11月号所収)
「NINTENDO64を作った竹田玄洋氏に聞く「リアリティ・エンジン」を子供たちの手に!」(月刊アスキー96年7月号)
ドクターK「NudeなHard」(セガサターンマガジン)
月刊アスキー94年7月号

この記事が気に入ったらサポートをしてみませんか?