« PlayStation 硬件架构 (index)

PlayStation 硬件架构

Chapter 3: 中央处理器 (CPU)


目录

  1. 起源
    1. 一点历史
    2. MIPS和索尼
    3. LSI和委托
  2. 产品
  3. 接管 CPU
  4. 补充内核
    1. 系统控制协处理器
    2. 几何变换引擎
    3. 运动解码器
  5. 缺了个单元?
  6. 大量延迟

本节将对索尼CXD8530BQ进行剖析,它是这款游戏机的两大芯片之一。 在当今世界,我们称之为"片上系统"(System-on-Chip,SoC)。

起源

主处理器是一种"由y设计、基于z并从w处二次采购"的产品,这用几句话来概括有点过于冗长,所以我们何不从一些历史背景开始呢?

一点历史

Image
一台Macintosh Quadra 700旁边的PowerPC升级卡。 正如许多采用摩托罗拉68k处理器的用户一样,90年代决定了必须转向基于RISC的CPU(苹果公司采用的是PowerPC)。

九十年代初,许多流行 CPU 的命运发生了变化。 曾经领先的8位CPU(如Z806502)已不再受人关注,而摩托罗拉著名的68000以及其他在80年代末获得成功的16位设计已成为取代它们的候选产品。 即使在此时的个人电脑领域,塔能鲍姆(A.S.Tanenbaum)在与托瓦兹(L.Torvalds)辩论的著名辩论中,也只给了英特尔的x86架构五年的时间到它退出家用市场。

初看起来,技术发展似乎在此时遇到了障碍。 但实际上,新一轮相对陌生的CPU浪潮正在涌入主流设备。 其中许多设计都源于学术界,因此是为了证明特定的设计理念而存在的。 那个时代的新型CPU包括:

所有这些处理器都有一个共同点:它们都遵循精简指令集计算机(RISC)规则,这从根本上改变了这些芯片的设计和编程方式。 RISC CPU的一条规则规定,单条指令不能混合内存和寄存器操作,这样硬件设计人员就可以简化执行指令的电路......然后利用并行技术对其进行增强。

MIPS和索尼

Image
SGI Iris 4D/80是一款采用双塔式设计的强大图形工作站。 4D系列为SGI计算机中的MIPS CPU揭开了序幕,这款特殊的机型还捆绑了 R2000。 这张照片是我于2019年6月参观计算机历史博物馆(加利福尼亚州圣何塞)时拍摄的。

MIPS 计算机系统公司起源于其创始人(斯坦福大学教师)将其研究成果转化为物理处理器的迫切愿望,80年代硅谷的风投资本家也急于投资于此[2]。 他们首次推出的中央处理器"MIPS R2000"被认为是第一个采用RISC设计的商用中央处理器;它在许多UNIX工作站中都占有一席之地。

然而,直到 1987 年,MIPS的芯片才成为人们谈论的话题,原因是它被SGI公司采用(且后来被收购),为其设备提供动力。 SGI是计算机图形市场上极具影响力的创新者,尤其是在硬件加速顶点流水线的开发方面,而顶点流水线的任务最初是由软件(CPU内部)完成的。 收购之后,SGI 在CPU和图形领域都占据了领先地位。

在开发 PlayStation 之前,MIPS 转而采用基于IP许可的商业模式,即以许可的形式出售其CPU设计,然后由被许可方自由定制和生产设计。 他们提供的部分产品包括R3000A CPU,它出现在他们的低端产品目录中。 因此,R3000A并不属于旗舰产品系列(不像另一家后来采用的R4000),但就成本而言,它是一项极具吸引力的投资。

回到正题,索尼自行设计了音频和图形芯片,但他们仍然需要能够驱动这两种芯片的领先芯片。 所选的CPU必须足够强大,以展示索尼芯片令人印象深刻的性能,同时价格也要合理,以保持游戏机的价格竞争力。

LSI和委托

与此同时,LSI Logic(一家半导体制造商)是MIPS许可证持有者,为企业提供"自己动手"CPU计划。 这项服务被称为CoreWare,客户可以通过选择一系列构建模块来构建自己的CPU包。 CoreWare库的一部分包括"CW33300"模块,这是一个从LSI LR33300衍生出来的CPU内核,LSI也将这种现成的CPU芯片商业化。

现在,我要把这些说到哪里去呢? 原来,LSI的LR33300和CW33300是MIPS R3000A系列的二进制兼容版本。 它们的架构在某些方面略有不同,但编程接口(MIPS I ISA)保持不变。

最后,索尼公司委托LSI公司为其开发CPU包。 他们选择了CW33000,更改了一些位,并将其与其他模块组合在一起,形成了PlayStation主板上的芯片。

产品

Image
PlayStation主板上的SoC芯片,采用MIPS R3000A内核。

由此产生的CPU内核运行频率为33.87 MHz,具有以下特点:

为了做一些有意义的事情,索尼提供了2 MB的RAM供一般用途使用。 奇怪的是,他们在主板上安装了扩展数据输出(EDO)DRAM芯片。 这些芯片比典型的DRAM稍为高效,可获得更低的延迟。

接管 CPU

在某些情况下,任何子系统(图形、音频或CD)都需要快速处理大块数据。 然而,CPU并非总能满足需求。

因此,CD-ROM控制器、MDEC、GPU、SPU 和并行端口在需要时都可以访问专用DMA控制器。 DMA控制主总线并执行数据传输。 虽然仍需要CPU来设置DMA传输,但其传输速率要比依赖CPU快得多。

此外,请记住,一旦 DMA 启动,CPU 就无法访问主总线。 这意味着CPU将处于空闲状态,除非Scratchpad中的内容能让它保持忙碌!

补充内核

与其他基于MIPS R3000的CPU一样,CW33000支持多达四个协处理器的配置,索尼定制了三个:

系统控制协处理器

系统控制协处理器标识为"CP0",是MIPS CPU上的一个常见模块。 在基于R3000的系统(如本系统)中,CP0控制高速缓存的实现方式。 因此,可以直接访问数据高速缓存(以"Scratchpad"的形式)和指令高速缓存(使用"高速缓存隔离")。 控制协处理器还负责处理中断、异常和断点,后者在调试时非常有用。

等等,协处理器不是只能_扩展CPU_的功能吗? 为什么CP0与CPU紧密耦合?

事实上,R3000内核依赖系统控制协处理器才能使用许多组件,但这是否"合法"取决于对"协处理器"一词的解释。 根据MIPS的规定,协处理器并不是CPU的严格意义上的可选部件,它还可以指挥CPU的周围环境(高速缓存、中断等)。 因此,协处理器可以是系统不可分割的一部分。 在讨论与MIPS有关的系统时,这一点值得注意。

后来,基于R4000的系统将内存管理单元(MMU)和转译后备缓冲区(TLB)整合到了这个模块中,从而增强了它的功能并承担了新的角色

几何变换引擎

"CP2"或几何变换引擎(GTE)是一种特殊的数学处理器,可加速矢量和矩阵计算。

虽然只能运行定点类型,但它仍能为 3D 图形提供有用的运算,例如:

您不必记住所有这些信息就能理解文章的其余部分! 请记住,GTE将负责图形流水线的第一阶段,如3D投影、照明和剪切。 这将有助于生成所需的数据,并发送到GPU进行渲染。

运动解码器

运动解码器(Motion Decoder),也称为"MDEC"或"宏单元解码器",是 CPU 旁的另一个处理器。 这里,它将"宏单元"解压缩为GPU可以理解的格式。 宏单元是一种数据结构,其中包含与JPEG类似编码的图片。

MDEC一次解压8x8 24bpp像素的位图。 Walker的编程指南指出,MDEC每秒可计算9000个宏单元。 这样就能以30FPS的速度流式传输320x240像素的全动态视频 (FMV)

DMA用于通过CD-ROM->RAM->MDEC发送压缩数据。 同样的路径在相反的方向上进行,不过在这种情况下,目的地是VRAM。

虽然该组件位于SoC内部并共享相同的数据总线,但它不是MIPS协处理器,因此CPU/DMA要通过内存映射访问它(而不是拦截指令)。

有关MDEC单元的更多信息,我建议查看Sabin和 Czekański的资源。

缺了个单元?

到目前为止,我们已经有了"CP0"和"CP2",但"CP1"在哪里?这是为浮点运算单元(FPU)预留的,恐怕索尼没有提供。 这并不意味着CPU不能进行十进制运算,只是速度不够快(软件模拟的FPU)或过于精确(定点运算)而已。

游戏逻辑(涉及物理、碰撞检测等)仍可使用定点运算。 定点编码以固定的小数位数存储十进制数。 这意味着在某些运算后会损失精度,但请记住,这是视频游戏机,而不是专业的飞行模拟器。 因此,在精度和性能之间进行权衡是可行的。

顺便说一句,如果你想重温一下"定点"、"浮点"、"十进制"和"整数"等概念,我建议你看看Gabriel Ivancescu的文章。

大量延迟

正如我们之前所见,CW33300是一款流水线处理器,这意味着它可以将多条指令排成队列,在不同阶段并行执行。 这极大地提高了指令吞吐量,但如果控制不当,就会导致流水线冒险,造成计算错误。

MIPS I架构就容易出现这种情况:

Image
在NO$PSX调试器上可视化的游戏《小龙斯派罗》(Spyro The Dragon)的指令。 请注意LW(从内存中加载字)、JAL(跳转和链接)和BNE(不相等时分支)后面都有一个延迟槽,以防止出现冒险。 红色标记的是填充指令(无用指令)。 蓝色标记的指令执行有意义的操作。

因此,MIPS I CPU表现出以下行为:

从示例中我们可以看到,一些延迟槽被有意义的指令填满,这些指令执行的计算不受冒险的影响。 因此,延迟槽并不总是意味着周期的浪费。

在解释了这些之后,你可能会问,为什么存在这些缺陷的处理器会被商业化。 关于RISC的一个理念是,CPU编程的负担从开发人员转移到了编译器。 特别是 MIPS,他们优先考虑制造高质量的编译器(包括汇编器)来配合他们的新CPU。 因此,开发人员可以使用更高级别的语言(例如C语言),而工具链则负责处理冒险(通过重新编排指令来填补空白;或添加无用的填充指令作为最后措施)。 因此,总而言之,虽然我不喜欢看到CPU充满气泡,但我认为MIPS以非常巧妙的方式解决了这个问题。


Previous: 2. 快速介绍

Next: 4. 图形


Rodrigo Copetti © 2026 RSS Feed

切换至现代版

主页 · 文章 · 支持 · 关于作者 · 关于此网站