罗德里戈·科佩蒂Rodrigo Copetti的实用分析如果您使用辅助工具可切换到“经典”版本若使用旧版浏览器尝试“blink”版本。文章有英语、西班牙语、葡萄牙语巴西、简体中文、俄语版本也欢迎添加翻译。书籍版本本文也在许多书店出版方便离线读者阅读。电子书无DRM限制印刷版汇编了多篇文章并配有高分辨率的原创照片。您可在这里找到印刷版合集在 Amazon Kindle、Apple Books、Kobo 和其他书店找到单本电子书所得收益将用于改进现有文章和开发新文章。更多信息查看这里。目录辅助图片快速介绍CPU起源一点历史MIPS与索尼LSI与委托产品特性接管CPU核心补充系统控制协处理器几何变换引擎运动解码器缺失的单元大量延迟核心理念图形处理内容组织绘制场景指令可见性处理方式光栅化着色器纹理剩余步骤设计示例利用VRAM秘密与限制扭曲的模型/纹理相互矛盾的说法预渲染图形视频输出音频处理流媒体时代输入/输出CD子系统前置端口操作系统BIOS/内核启动过程游戏开发生态系统防盗版/区域锁定破解方法反制措施总结版权与许可参考资料/延伸阅读贡献方式更新日志辅助图片主机模型有原版和轻薄版两种。原版PlayStation于1994年12月3日在日本发布1995年9月9日在北美发布1995年9月29日在欧洲发布PS One轻薄版于2000年7月7日在日本发布2000年9月19日在北美发布2000年9月29日在欧洲发布它是将众多定制集成电路整合到一个芯片后的成果。主板有原版和标注版。展示的主板型号为 SCPH - 1000其余芯片安装在背面后期型号使用SG - RAM代替了VRAM并移除了大部分外部输入/输出和视频输出接口。还有标注了重要部件的主板。架构图主要架构图中总线接口单元还连接到GPU和SPU的特殊端口。快速介绍索尼深知3D硬件开发可能复杂所以推出的这款游戏机设计上“简单”又“实用”不过可能有代价CPU本节剖析索尼CXD8530BQ它是游戏机中的两大芯片之一即“片上系统”System - on - Chip。起源主处理器采用“由Y设计、基于Z架构、由W提供第二货源的X”模式较难概括。先从历史背景说起。一点历史20世纪90年代初许多流行CPU命运转折。8位处理器如Z80和6502风光不再摩托罗拉68000及其他16位设计面临被取代当时PC领域安德鲁·S·塔嫩鲍姆Andrew S. Tanenbaum预测英特尔x86架构在家庭市场寿命只剩“五年”。此时一波源于学术界的CPU进入主流设备市场如MIPS、PowerPC、SPARC、ARM等它们都遵循精简指令集计算机Reduced Instruction Set ComputerRISC架构该架构规定单条指令不能同时进行内存访问和寄存器操作使硬件设计师能简化执行指令电路并优化。MIPS与索尼MIPS计算机系统源于创始人将研究成果转化为实际处理器的热情契合20世纪80年代硅谷风险投资家对创新的投资热情。其首款CPU “MIPS R2000”是首款采用RISC设计的商用CPU用于许多UNIX工作站。1987年硅图公司SGI采用并收购MIPS芯片用于其设备SGI在计算机图形市场有重要影响力。PlayStation开发前MIPS转向基于IP授权的商业模式其R3000A CPU属低端产品从成本看是有吸引力的选择。索尼自行设计音频和图形芯片需一款强大且价格合理的CPU驱动以展示芯片能力并使游戏机有竞争力。LSI与委托LSI Logic是MIPS授权方提供“自定义CPU”计划CoreWare服务客户可从构建模块中组装定制CPU包。CoreWare库中“CW33300”模块源自LSI LR33300LR33300和CW33300与MIPS R3000A系列二进制兼容编程接口MIPS I ISA不变。最终索尼委托LSI构建CPU包选CW33300并修改与其他模块集成到PlayStation主板芯片。产品特性最终CPU核心运行频率为33.87 MHz有以下特性MIPS I ISAMIPS指令集架构首个版本用32位字含乘法和除法指令。32个通用寄存器和2个乘/除寄存器均为32位一个通用寄存器 (R0) 硬连线为零。32位数据总线PS1中分为主总线32位连接MDEC和GPU和副总线16/8位连接其余组件和输入/输出设备由总线接口单元桥接可访问GPU和SPU特殊端口。32位地址总线可访问高达4 GB物理内存。5级流水线可同时处理多达五条指令。4 KB指令缓存可“隔离”允许程序直接操作。无数据缓存1 KB内存映射到固定地址称暂存器作“快速SRAM”。索尼提供2 MB RAM供通用使用主板安装扩展数据输出Extended Data OutEDO芯片比典型DRAM效率略高、延迟更低。接管CPU图形、音频或CD驱动器等子系统需快速获取大量数据时CPU可能无法满足。CD - ROM控制器、MDEC、GPU、SPU和并行端口可访问专用DMA控制器直接内存访问Direct Memory AccessDMA接管主总线独立传输数据吞吐量比通过CPU高但CPU需设置DMA操作。DMA启动后CPU无法访问主总线除非暂存器有任务。核心补充CW33300支持最多配置四个协处理器索尼定制了三个系统控制协处理器“CP0”系统控制协处理器是MIPS CPU常见模块在基于R3000的系统中负责管理缓存实现可直接访问数据缓存暂存器形式和指令缓存缓存隔离还处理中断、异常和断点。R3000核心依赖它使用许多组件协处理器可控制CPU周边设备是系统组成部分。后来基于R4000的系统将内存管理单元Memory Management UnitMMU和转换后备缓冲器Translation Lookaside BufferTLB集成到该模块。几何变换引擎“CP2”几何变换引擎Geometry Transformation EngineGTE是专门数学处理器加速向量和矩阵计算。虽只处理定点类型但为3D图形提供有用操作如矩阵或向量运算、透视变换、外积、插值函数、深度提示和颜色值计算、Z/深度平均等负责图形流水线初始阶段为GPU渲染生成数据。运动解码器运动解码器MDEC或宏块解码器与CPU相邻将“宏块”解压缩为GPU能理解的格式宏块类似JPEG编码图像。MDEC可解压缩8x8像素、每像素24位的位图每秒处理9000个宏块能以每秒30帧的速度流式传输320x240像素的全动态视频Full - Motion VideoFMV。DMA用于传输压缩数据数据也可反向传输到VRAM。它不是MIPS协处理器CPU和DMA通过内存映射访问。更多信息可参考萨宾Sabin和切坎斯基Czekański的资料。缺失的单元“CP1”为浮点运算单元Floating - Point UnitFPU保留但索尼未提供。CPU可用软件例程或定点运算进行小数运算游戏逻辑可用定点运算在精度和性能间权衡合理。想回顾“定点”“浮点”等概念可阅读加布里埃尔·伊万切斯库Gabriel Ivancescu的文章。大量延迟CW33300是流水线处理器会排队并并行执行多条指令提高吞吐量但可能导致流水线冒险。MIPS I架构易受控制冒险指令可能在不该执行时执行和数据冒险指令可能用过时数据操作影响。MIPS I CPU表现为任何跟随“分支”或“跳转”操作码的指令无条件执行开发者需用简单指令填充流水线称分支延迟槽。现代CPU可利用分支预测条件不满足时丢弃推测性计算满足时节省时间。“加载”指令获取数据时不使流水线停顿当下一条指令依赖前一条“加载”指令数据时需插入填充指令确保获取正确操作数。部分延迟槽填充有意义指令并非浪费周期。核心理念RISC哲学将CPU编程负担转移到编译器MIPS优先开发高质量编译器配合新CPU设想开发者用高级语言工具链自动处理冒险。向开发者暴露CPU流水线是MIPS核心设计策略虽有缺点但应对巧妙不过暴露流水线使向后兼容性变棘手。图形处理图形流水线很大部分由GTE完成处理后数据送索尼专有图形处理器单元Graphics Processor UnitGPU渲染。内容组织系统有1 MB视频随机存取存储器Video Random Access MemoryVRAM存帧缓冲区、纹理等资源CPU可用DMA填充。VRAM是双端口的用两条16位总线允许多方同时访问。后期版本改用同步图形随机存取存储器Synchronous Graphics Random Access MemorySGRAM芯片单端口用单个32位数据总线各有优缺点。后期游戏在基于VRAM的系统上运行可能有图形故障马丁·科思Martin Korth的《Nocash PSX规格》文档记录了相关时序信息。绘制场景以失眠症工作室Insomniac的《小龙斯派罗龙年》Spyro: Year of the Dragon为例说明。指令……此处原文未完整保持原文状态