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 级流水线。
- 内存: 2 MB 的扩展数据输出 (EDO) RAM 用于通用用途,配有 4 KB 的指令缓存和 1 KB 的 Scratchpad (快速 SRAM) 以替代数据缓存。
- 总线架构: 32 位主总线连接 MDEC 和 GPU,而子总线处理其他 I/O 组件。
协处理器与加速
为了扩展核心功能,Sony 集成了三个专门的协处理器:
- 系统控制协处理器 (CP0): 管理缓存、中断、异常和断点。
- 几何变换引擎 (GTE/CP2): 一个定点数学处理器,用于加速向量和矩阵计算,处理 3D 投影、光照和裁剪。
- 运动解码器 (MDEC): 解压缩类似 JPEG 的宏块,以实现 320x240 px @ 30 fps 的全动态视频 (FMV) 流传输。
值得注意的是,该系统缺乏浮点运算单元 (FPU/CP1),这迫使开发者必须依赖定点运算来进行游戏逻辑和物理计算,从而优先考虑性能而非绝对精度。
流水线冒险与延迟槽
由于 MIPS I 架构是采用流水线处理且没有互锁阶段的处理器,因此它容易受到控制冒险和数据冒险。为了防止计算错误,开发者必须使用分支延迟槽 (branch delay slots)——即在分支或跳转指令码后插入填充指令(或有意义的计算指令),以确保在执行下一个操作之前,流水线已正确填充。
图形处理与渲染
PlayStation GPU 是一个单芯片解决方案,使用整数坐标模型渲染由 GTE 发送的几何图形。 这种简化设计使其效率很高,但也引入了特定的视觉限制。
渲染流水线
- VRAM: 1 MB 的双端口视频 RAM (稍后在某些修订版本中被单端口 SGRAM 取代)。
- 图元: GPU 渲染线条、矩形和三角形。三角形是 3D 模型的主要构建块,并支持纹理贴图和着色。
- 可见性: 系统缺乏硬件 Z-buffer。相反,它使用一种排序表 (ordering table),由 CPU 手动对多边形按深度 (Z 值) 进行排序,然后再发送给 GPU。
着色与纹理贴图
- 着色: 支持平滑着色 (Flat shading) 和 Gouraud 着色 (顶点间插值光照水平)。
- 纹理贴图: 使用仿射纹理贴图 (Affine Texture Mapping),它在 2D 坐标上对纹理进行插值,并忽略深度 (Z)。这会导致在相机靠近表面时出现“纹理扭曲”现象。
- 过滤: GPU 使用最近邻 (nearest neighbor) 算法进行缩放,这导致了纹理的“块状”外观。
视觉伪影与技术解释
PlayStation 的标志性视觉“抖动”和“扭曲”是特定硬件约束的产物:
- 模型晃动 (Wobbling Models): 由于缺乏亚像素分辨率。光栅化器仅跟踪完整像素;如果一个三角形的 edge 仅部分覆盖一个像素,它要么被绘制,要么不被绘制,导致边缘在移动时突然跳动。
- 纹理扭曲 (Texture Warping): 由于仿射纹理贴图缺乏透视校正。
- 闪烁三角形 (Flickering Triangles): 由于使用基于软件的排序算法在排序表中进行处理,而非硬件 Z-buffering。
音频与 I/O 子系统
音频处理单元 (SPU)
SPU 支持 24 通道的 16-bit ADPCM 采样,采样率 44.1 kHz。 它拥有 512 KB 的 Sound RAM,并支持音高调制、频率调制、数字混响、以及 ADSR 包络。CD-ROM 允许将高质量音频采样直接流式传输到 SPU。
CD-ROM 子系统
CD 驱动器本质上是一个独立的计算机,由用于激光控制的 DSP 和一个子 CPU (Motorola 68HC05) 组成。该子 CPU 通过验证“Wobble Groove”(一种刻在光盘 TOC (Table of Contents) 中的特定频率,传统刻录机无法复制)来管理版权保护和区域锁定。
操作系统与启动过程
系统利用 512 KB BIOS ROM 来引导硬件并向主 RAM 暴露一个内核 (PlayStation OS)。
- 启动序列: CPU 执行 BIOS,加载 PlayStation OS (64 KB),并显示启动画面。
- 验证: CD-ROM 控制器通过 Wobble Groove 验证光盘是否为正版。
- 执行: 执行完毕后,CPU 读取
SYSTEM.CNF文件以定位游戏可执行文件并开始执行。
社区洞察
关于 PlayStation 1 内存映射的技术讨论揭示了开发者利用有限的硬件来优化性能的的先进技巧。例如,在 Metal Gear Solid 的移植版本中,程序员利用映射到同一物理内存的内存区域,通过操纵指向同一物理地址的不同虚拟映射的指针,来追踪游戏状态(例如,一个 C4 炸弹是否被安装在墙上或地面上)。