与任天堂类似,索尼也构建了一个极其紧凑的片上系统 (SoC),其中包含了我们将会讨论的大部分组件。 其中包括负责执行游戏和其他程序的主CPU(之后我们会讨论它与其他CPU的不同)。 该 SoC 被索尼称为Tachyon(在看了星际迷航之后?)
主 CPU 同样由索尼自主设计,保持了 MIPS 的传统。 话虽如此,PlayStation 2发布至今已有四年, MIPS的现状如何?
世纪之交的MIPS
MIPS 的黄金岁月停留在 90 年代,一去不回。 其母公司 SGI 在廉价 x86 工作站面前失去了主导地位,而且资金短缺。 因此,它在 1999 年出售了 MIPS 的大部分股份。 自此之后,MIPS 再次成为一家独立的公司,但竞争却比以往更加激烈。
该公司的第一项决定是承认 MIPS CPU 不再适用于高性能计算领域。 因此,他们将重点转向低功耗计算,与空前流行的ARM正面交锋。
MIPS 重新审视了其臃肿的 CPU 系列,并将其整合为 三个指令集 :
- MIPS32: MIPS II(最后一个仅有 32 位的 ISA)的升级版,在保留 32 位的同时,引入了后续架构的功能。
- MIPS64:MIPS V 的延续,64 位 ISA,也是整合前最后的 ISA。 MIPS V 是之前所有 ISA 的超集,就像它的前身一样。
- microMIPS: 有"microMIPS32"和"microMIPS64"两种,分别是 MIPS32 和 MIPS64 的超集,增加了一组 16 位指令(如Thumb)。 不过,microMIPS 与其他 ISA 的二进制不兼容。 因此,要在 microMIPS 上运行,需要重新编译历史代码。
最大的不同是这些 MIPS 架构现在将同步推进,而不是在下一个架构推出后立即放弃上一个架构。 新版本将以"Release x"为后缀,如"MIPS32 Release 6"或"MIPS32R6"(巧合的是,这也是迄今为止的最后一个版本)。
除 ISA 外,MIPS 还开始销售一系列新的 IP 核。 例如,MIPS32 4k 实现了MIPS32 R2 ISA,它有不同的变体,并提供大量定制功能。
言归正传,索尼可能获得了 MIPS32 4k 的授权,并通过扩展 ISA 和捆绑特定协处理器对其进行了定制 。 它被称为Allegrex,运行速度在33 MHz 到 333 MHz的范围内可变。
新型可携带CPU
Allegrex 是一款完整的 32 位核心,提供了 :
- 自定义 MIPS ISA:MIPS32R2 指令中混入用于算术运算(乘法、减法、最小值/最大值、移位)和中断控制的专用指令。 这些指令被称为"Allegrex 扩展指令"。
- 32 位地址总线:这意味着该 CPU 最多可使用 4 GB 内存。
- 32个通用寄存器:所有寄存器都存储32位值;保留零寄存器和链接寄存器作特殊用途。 现在,这应该不足为奇了。
- 7 级流水线(比其 家用机表亲多一级)。 如果您想了解更多有关 CPU 流水线的信息,请参阅这里。
- 32 KB L1 Cache:其中 16 KB 用于指令,16 KB 用于数据。
- 缓存回写缓冲区:CPU 可以在缓存中写入内容,并认为物理内存同时已经更新。 而缓存会在缓冲区满时负责更新内存。
- 这种设计可加快内存存储速度,但无法立即与 PSP 等多处理器系统配合使用。 因此,当其他组件需要内存中的这些新值时,开发人员必须注意清空缓冲区。
这看起来比基于ARM9的替代方案更具竞争力,但尚未结束,因为我们仍需检查核心旁边_协同_工作的协处理器。
协处理器
和其他 MIPS CPU 一样,Allegrex 有三个协处理器插槽。 索尼使用了其中所有三个:
- CP0,系统控制处理器(System Control Coprocessor): 任何MIPS CPU 中的一个 必要的基础块 此特定组件是通过核心自身提供内存保护、缓存一致性和中断控制 。
- CP1,浮点运算单元(FPU,Floating Point Unit):加速 32 位十进制数的算术运算(遵循 IEEE 754 标准)。 它有 32 个 32 位寄存器和独立的 8 级流水线,从而提升了主 CPU 的并行度。
- CP2,矢量浮点运算单元(VFPU,Vector Floating Point Unit):专为矢量运算设计的协处理器,类似于传统的 SIMD 处理器。 与FPU相比,它提供了 128 个 32 位寄存器,依靠专有指令集并实现了一个可变长度的流水线。 VFPU支持最高32位的浮点值,可以组合成一个4组件的向量或甚至是4x4矩阵(对于不同类型的几何运算非常有用,无需重新排列数据)。
- 其与系统其他部分通过 128 位数据总线相连,可为主 CPU 负担中转任务。
- 与 FPU 不同的是,VFPU 的某些行为偏离 IEEE-754 标准。
总之: Allegrex 快得令人难以置信。 但我们仍然不知道用它能做什么。 毕竟,你可以把CPU想象成交响乐团的指挥,而我们......还不了解演奏者。
集中式内存管理
现在我们来看内存系统。 除其他事项外,系统控制协处理器还提供内存保护单元或"MPU"的功能(不要与"MMU"混淆),该功能将物理硬件映射到 CPU 的内存空间,中间带有一些特殊的特性。 即使它的工作方式起初看起来有些原始,但却是满足本主机需求的最佳方式。
传统的内存管理单元(MMU)负责 CPU 对周围组件的访问。 这意味着 CPU 的所有地址线都与 MMU 相连,只有后者与系统的其他部分相连。
这有助于实现"虚拟内存"和"内存保护"等功能。 而要实现虚拟内存,MMU 必须包含一个名为"地址转换后援缓冲器"(TLB,Translation Look-aside Buffer)的组件,以保证性能。 但是Allegrex 的 MMU 并没有 TLB,因此它侧重于内存保护功能。 所以 Allegrex 的 MMU 被称为 MPU(内存保护单元)。 MPU 是阉割了虚拟内存的 MMU。 而内存保护赋予系统决定程序可以访问哪些内存位置的权力。
有了这一点,Allegrex 就不必处理用户态程序(如游戏)访问受限位置(如加密密钥)的问题。 为了实现访问限制,内存地址被分为五个具有不同权限级别的段。 此外,Allegrex 的 MPU 包含三种操作模式:用户模式、监管模式和内核模式。
如果一个在用户模式下运行普通进程想要访问特权位置中的内存地址,MPU 将通过"异常"询问操作系统是否授予该进程权限。
总而言之,这使得操作系统的开发商索尼公司可以通过硬件执行安全系统。
可用内存
到目前为止,我们已经分析了 PSP 的主 CPU 及其加速器。 现在,让我们来看看该系统中可用的物理内存。
PSP 使用了两个可从 CPU 访问的内存:
- 16 KB 的SRAM:也就是我们在之前的文章中提到的便笺存储器(Scratchpad)。 也就是一块小而快的内存。 尽管非官方文件称其"毫无用处",但开发人员仍有责任正确使用它。
- 32MB的DDR SDRAM:它的容量很大,同时被许多组件使用,但由于与CPU的距离较远,因此访问速度较慢。 在本文中,我们将把它称为 "主存"。
- "DDR"意为"双倍数据速率",是传统"SDRAM"的升级,拥有更快的传输协议。 初版 Xbox 使用了相同的内存。
总线设计
您很快就会发现,PSP 可容纳许多功能独特的组件。 为了不重复以前的错误,工程师们使用专用总线将它们相互连接起来。 因此,只有功能类似的部分组件才会共享同一条总线。 这些总线通过专用仲裁器以"内存控制器"或直接内存访问(DMA)的形式相互通信。
Tachyon 中的所有总线都采用了高级高性能总线 (AHB,Advanced High-performance Bus) ,这是 Arm 为解决其芯片和 SoC 的拥塞问题而开发的一种解决方案。 例如Wii中也使用了 AHB。
根据上述原则,PSP 使用了以下几种总线:
- 系统总线(System Bus):连接 CPU、Scratchpad 和 GPU。 128位宽。
- 媒体引擎总线(Media Engine bus):连接另一组组件(将在下一节中解释)。 它的属性与系统总线相同。
- 外设总线(Peripheral Bus):连接 I/O和存储相关组件。 32位宽。
所有三条总线都连接到主存所在的 DDR 控制器。
应对拥塞
每条总线内部都有多个独立工作的组件。 它们将在共享空间(如主 RAM)中存储处理过的数据。 我们不希望 CPU 需要在模块从内存中读取或写入数据时进行干预。 总线一般使用 DMA 单元来提供这种功能,但单个 DMA 功能有限。 PSP 内的大量组件会导致读写瓶颈。
解决方案非常简单:总线主控。 简而言之,每个组件都有自己的 DMA 控制器。 它们能作为"总线主控",控制总线访问它们想要访问的任何位置。 为避免多个"总线主控"同时运行时的竞争情况,相邻组件将确认事件,并等待操作完成。
总结
80-90 年代的 RISC 革命催生了无数 CPU,仅有少数 CPU 得以存活到新世纪。 就像我在Dreamcast 文章中结束了对 SuperH 的分析, PlayStation Portable 将是我在这个系列中最后一篇载有MIPS CPU 的文章。
历经辗转之后,MIPS 现在只是一家设计 RISC-V CPU 的公司。 平心而论,这项战略为该公司提升了竞争力,使其能够与 ARM 竞争。
然而,回顾我的分析,很难理解这样一家才华横溢的公司会失去市场份额。 诚然,在工作站市场上,英特尔的 x86 不管受到多少批评,都因其设备价格低廉(得益于其奔腾系列以及那些 "克隆"产品)和兼容软件(仅限 Windows)而胜出。 而P6 架构为英特尔提供了最初只有 RISC 才能实现的可扩展性。

2011年,计算机历史博物馆(加利福尼亚州,圣何塞)与MIPS共同创始人和前执行官进行了一次有趣的访谈, 他们谈到了 MIPS 的创始、它对该行业的影响以及最终的重组。
在低功耗计算领域,由于和 ARM 有着相似的商业模式(IP 授权),MIPS的退步就更难理解了。 幸运的是,2011 年计算机历史博物馆的一次采访也提出了同样的问题,并得到了这样的回答:
我们犯了错误,我们没有意识到手机市场的重要性。 早期无利可图(......),但 ARM 的投资得到了收益。 这是非常明智的举动,其成果令人难以置信。 我们只看到了毛利率,然后说"这件事收益不足! 我们最好把注意力放在别处",但当然,手机变成了智能手机,[然后] 发展出庞大的市场。
-John Hennessy,MIPS计算机系统公司创始人之一
尽管如此,我相信虽然我们不会再看到新的 MIPS CPU,但我们会看到它的前工程师将其独特技术应用到新项目中的成果。
话虽如此,还是让我们看看PSP的其他部件。



