PlayStation 1 架構深度解析
PlayStation 1 架構概覽
原始的 PlayStation 利用簡化且實用的硬體設計來處理早期 3D 開發的複雜性。其架構以單晶片系統 (SoC) 為中心,具備基於 MIPS 的 CPU、專有的圖形處理單元 (GPU) 以及專用的音效處理單元 (SPU),並由 CD-ROM 子系統支援以進行高容量數據串流。
CPU:基於 MIPS 的核心
PlayStation 使用 Sony CXD8530BQ SoC,其 CPU 核心與 MIPS R3000A 系列二進位相容,運行頻率為 33.87 MHz。 此設計選擇讓 Sony 能利用已證實的 RISC (Reduced Instruction Set Computer) 架構,同時保持具競爭力的成本。
技術規格
- ISA: MIPS I (32-bit words)。
- 暫存器: 32 個通用暫存器和 2 個乘除暫存器。
- 管線: 5 階管線 (5-stage pipeline)。
- 記憶體: 2 MB 的 Extended Data Out (EDO) RAM 用於一般用途,並配備 4 KB 的指令快取 (instruction cache) 和 1 KB 的 Scratchpad (快速 SRAM) 以取代數據快取。
- 匯流排架構: 一條 32-bit 主匯流排連接 MDEC 與 GPU,而子匯流排則處理其他 I/O 組件。
協處理器與加速
為了擴展核心功能,Sony 集成了三個專門的協處理器:
- System Control Coprocessor (CP0): 管理快取、中斷、異常和斷點。
- Geometry Transformation Engine (GTE/CP2): 一個定點數數學處理器,用於加速向量和矩陣運算,處理 3D 投影、光照和裁剪。
- Motion Decoder (MDEC): 將類 JPEG 的宏區塊 (macroblocks) 解壓縮,以實現 320x240 px 且 30 fps 的全動態影片 (FMV) 串流。
值得注意的是,該系統缺乏浮點運算單元 (FPU/CP1),迫使開發者必須依賴定點數算術來處理遊戲邏輯和物理效果,這在效能與絕對精度之間做了取捨。
管線冒險與延遲槽 (Delay Slots)
由於 MIPS I 架構是沒有鎖定階段 (interlocked stages) 的管線處理器,因此容易受到控制與數據冒險 (hazards)。為了防止計算錯誤,開發者必須使用分支延遲槽 (branch delay slots)——在分支或跳躍指令碼 (opcodes) 後插入填充指令(或有意義的運算),以確保在下一個操作執行之前,管線已被正確填充。
圖形處理與渲染
PlayStation GPU 是一個單晶片解決方案,使用整數座標模型來渲染由 GTE 發送的幾何圖形。 這種簡化設計使其效率極高,但也帶來了特定的視覺限制。
渲染管線
- VRAM: 1 MB 的雙埠圖形記憶體 (Video RAM)(在某些修訂版本中後來被單埠 SGRAM 取代)。
- 圖元 (Primitives): GPU 渲染線段、矩形和三角形。三角形是 3D 模型的主要構建單元,並支援文字貼圖與著色。
- 可視性: 系統缺乏硬體 Z-buffer。相反,它使用排序表 (ordering table),由 CPU 手動對多邊形按深度 (Z-value) 進行排序,然後再發送給 GPU。
著色與文字貼圖
- 著色 (Shading): 支援平面著色 (Flat shading) 和 Gouraud 著色 (Gouraud shading,即頂點間的插值光照水平)。
- 文字貼圖 (Texture Mapping): 使用仿射文字貼圖 (Affine Texture Mapping),它在 2D 座標上對文字貼圖進行插值,並忽略深度 (Z)。這會導致當攝影機靠近表面時出現「文字貼圖扭曲 (texture warping)」現象。
- 濾鏡 (Filtering): GPU 使用最近鄰 (nearest neighbor) 演算法進行縮放,這導致了文字貼圖呈現「塊狀 (blocky)」的外觀。
框架緩衝區優化
為了最大化利用有限的 1 MB VRAM,GPU 支援可調式框架緩衝區 (frame buffers)。開發者可以降低解析度(例如,使用兩個 320x480 緩衝區進行頁面翻轉),以釋出空間給文字貼圖與顏色查找表 (color lookup tables)。
視覺偽影 (Visual Artifacts) 與技術解釋
PlayStation 的標誌性視覺「抖動 (jitter)」與「扭曲 (warping)」是特定硬體限制的結果:
- 模型晃動 (Wobbling Models): 由於缺乏次像素解析度。光柵化器 (rasterizer) 僅追蹤整數像素;如果一個三角形的邊緣僅部分覆蓋一個像素,它要麼被繪製,要麼不被繪製,導致邊緣在移動時會突然跳動。
- 文字貼圖扭曲 (Texture Warping): 由於仿射文字貼圖缺乏透視校正。
- 三角形閃爍 (Flickering Triangles): 這是由於排序表中的軟體排序程序,而非硬體 Z-buffering。
音訊與 I/O 子系統
音效處理單元 (SPU)
SPU 支援 24 個聲道、16-bit ADPCM 採樣,頻率為 44.1 kHz。 它具備 512 KB 的 Sound RAM,並支援音高調製、頻率調製、數位回響 (digital reverb) 以及 ADSR 包絡線 (envelopes)。CD-ROM 允許將高品質音訊採樣直接串流到 SPU。
CD-ROM 子系統
CD 光碟機實質上是一個獨立的電腦,由用於控制雷射的 DSP 與一個子 CPU (Motorola 68HC05) 組成。此子 CPU 透過驗證「擺動溝槽 (Wobble Groove)」——一種刻在光碟目錄 (TOC) 中的特定頻率,傳統燒錄機無法複製——來管理版權保護與區域鎖定。
作業系統與啟動程序
系統使用 512 KB BIOS ROM 來引導硬體,並向主記憶體 (RAM) 暴露一個核心 (PlayStation OS)。
啟動程序: CPU 執行 BIOS,載入 PlayStation OS (64 KB),並顯示啟動畫面。
驗證: CD-ROM 控制器透過 Wobble Groove 驗證是否為正版光碟。
執行: 如果驗證通過,CPU 讀取
SYSTEM.CNF檔案以定位遊戲執行檔,並開始執行。
社群洞察
關於 PlayStation 的記憶體映射 (memory mapping) 的技術討論揭示了開發者使用的進階技巧來優化有限的硬體。例如,在 Metal Gear Solid 的移植版本中,程式設計師利用了映射到同一物理記憶體的記憶體區域,透過操縱指向同一物理地址的虛擬映射,來追蹤遊戲狀態(例如,一個 C4 炸彈是否被安裝在牆上或地面上)。