PlayStation 1 アーキテクチャ 深掘り
PlayStation 1 アーキテクチャ概要
オリジナルの PlayStation は、初期の 3D ハードウェアの複雑さを管理するために、シンプルさと実用性を哲学として設計されました。システムのコアアーキテクチャは MIPS ベースの RISC CPU と独自 GPU に依存しており、高精度浮動小数点演算よりもコスト効率と開発の容易さを優先しています。
CPU: Sony CXD8530BQ SoC
PlayStation は MIPS R3000A アーキテクチャをベースにしたカスタム System-on-Chip (SoC) を使用し、33.87 MHz で動作します。 この RISC(Reduced Instruction Set Computer)設計により、メモリアクセスとレジスタ操作が単一命令に混在することがなく、回路が簡素化され、5 段パイプラインによる並列処理が可能になります。
技術仕様
- ISA: MIPS I(32 ビットワード)。
- レジスタ: 32 個の汎用レジスタと 2 個の乗算/除算レジスタ。
- メモリ: 低レイテンシ向けに 2 MB の汎用 EDO RAM。
- キャッシュ: 4 KB の命令キャッシュ;データキャッシュは存在せず、代わりに 1 KB の「Scratchpad」が高速 SRAM として使用されます。
- バスアーキテクチャ: 32 ビットアドレスバス(最大 4 GB の物理メモリをサポート)と 32 ビットデータバス。データバスは Main Bus(MDEC と GPU を接続)と Sub Bus(I/O コンポーネントを接続)に分岐します。
パイプラインハザードとディレイスロット
MIPS I アーキテクチャはパイプライン処理を行うため、制御ハザードとデータハザードが発生しやすいです。計算エラーを防ぐために、アーキテクチャは 分岐ディレイスロット を採用しています:ジャンプや分岐命令の直後にある命令は無条件に実行されます。開発者(またはコンパイラ)はこれらのスロットに有意味な命令や「ノーオペレーション」(NOP)を埋めて、正しい実行を保証しなければなりません。
専用コプロセッサ
Sony は R3000 コアを以下の 3 つの重要なコプロセッサでカスタマイズしました:
- システム制御コプロセッサ(CP0): キャッシュ実装、割り込み、例外、ブレークポイントを管理。
- ジオメトリ変換エンジン(GTE/CP2): ベクトル・行列計算を高速化する専用数学プロセッサで、3D 投影、ライティング、クリッピングを処理。
- モーションデコーダ(MDEC): マクロブロック(JPEG ライク構造)を展開し、320×240 ピクセル・30 fps のフルモーションビデオ(FMV)ストリーミングを可能にします。
注: システムには浮動小数点ユニット(FPU/CP1)がありません。すべてのゲームロジックと物理演算は固定小数点演算で行われ、精度よりもパフォーマンスが優先されます。
グラフィックスパイプラインとレンダリング
PlayStation の GPU は単一チップソリューションで、整数座標モデルを用いてライン、矩形、三角形を描画します。 つまり座標はピクセルの中心点(サンプリングポイント)に対応し、小数座標は存在しません。
VRAM とフレームバッファ
システムは 1 MB のビデオ RAM(VRAM)を搭載しています。初期モデルはデュアルポート VRAM を使用し、CPU、DMA、GPU が同時にアクセスできましたが、後期リビジョンではシングルポート SGRAM に変更されました。スペースを最適化するため、GPU は可変フレームバッファをサポートし、解像度を下げてテクスチャやカラー参照テーブル用のメモリを確保できます。
ラスタライズとシェーディング
- 三角形: 3D モデルの主要プリミティブで、テクスチャリングとシェーディングをサポート。
- シェーディング: フラットシェーディング(一定光量)と Gouraud シェーディング(頂点間で明るさを補間)をサポート。
- テクスチャマッピング: システムは アフィンテクスチャマッピング を使用し、2D 座標上でテクスチャを補間し Z 軸(深度)を無視します。この透視補正の欠如が、カメラが表面に近いときに見られる特徴的な「テクスチャワーピング」の原因となります。
可視性とオーダリングテーブル
現代の GPU が Z バッファを使用するのとは対照的に、PS1 は オーダリングテーブル を使用します。CPU がポリゴンを深度順に手動でソートし、テーブルに参照を配置します。GPU はこのテーブルを基にジオメトリを正しい順序で描画します。ソフトウェア側のソートが失敗すると、ちらつきや隠れた表面が発生します。
オーディオと I/O サブシステム
サウンドプロセッシングユニット(SPU)
SPU は 24 チャンネル、16 ビット ADPCM サンプルを 44.1 kHz のサンプリングレートでサポートします。 ピッチ・周波数変調、ADSR エンベロープ、デジタルリバーブ機能を備え、512 KB のサウンド RAM が搭載されていますが、実際にサンプルに使用できるのは約 508 KB です。
CD-ROM サブシステム
CD ドライブは実質的に別個のコンピュータで構成されます:
- DSP: レーザーとモーターを制御。
- サブ CPU: Motorola 68HC05 マイクロコントローラで、コピー保護とリージョンロックを実施。
- CD コントローラ: メイン CPU と CD サブシステム間のインターフェースを管理。
盗作防止とリージョンロック
Sony は「Wobble Groove」― 正規ディスクの目次(TOC)に刻まれた特定周波数― を用いたコピー保護を実装しました。 サブ CPU は起動時にこの周波数を検証します。このチェックは主に起動時に行われるため、ユーザーは歴史的に「スワップトリック」や Wobble Groove 信号を偽装するモッドチップを使用して回避してきました。
技術的洞察の総合
開発者や歴史家の議論は、PS1 アーキテクチャの独自の制約を浮き彫りにします。ある開発者は MIPS パイプラインの複雑さについて、ジャンプ後の命令実行は最初は「頭が痛い」ほどだったが、慣れれば第二の天性になると述べました。別の貢献者は Metal Gear Solid における特定の最適化を指摘し、ポインタをメモリマッピングで操作し、アドレスに特定の十六進値を OR することで C4 爆弾が壁にあるか地面にあるかといった状態データを保存した例を挙げました。
"RISC に恋した理由となったアーキテクチャ… そして x86 に対する自分の過ちを悟った。"
これらのハードウェア制限―FPU の欠如、サブピクセル解像度の不在、アフィンテクスチャマッピングの使用―が「PS1 美学」を形作ります。ジッターする頂点と歪むテクスチャがその特徴です。