« GameCube架构 (index)

GameCube架构

Chapter 3: 中央处理器 (CPU)


目录

  1. PowerPC的起源
    1. 商业里程碑
    2. 面向普通用户
    3. PowerPC的流行
  2. 当代产品
    1. 各自发展
    2. 再次合作
    3. 乐队解散
  3. PowerPC Gekko芯片
  4. IBM的改进
  5. 是进步还是退步?
  6. 巧妙的内存系统
  7. 充分利用ARAM

在SGI在图形市场失去主导地位之后,任天堂需要寻找新的合作伙伴。

一个很有希望的候选者是IBM:除了他们在大型机上的著名工作之外,他们最近还与摩托罗拉和苹果联手,创建了一个强大的CPU,足以与英特尔在PC市场的主导地位竞争。 这个合作的结果是一系列名为PowerPC的处理器,这些处理器被选中用于驱动99%的苹果Macintosh电脑、IBM的工作站和一些嵌入式系统。

Image
PowerPC架构的Gekko芯片。 这就是GameCube所采用的处理器

为了理解这对GameCube意味着什么,我们首先来看看最终导致了PowerPC CPU的诞生的一系列创新。

PowerPC的起源

IBM是推动新兴RISC CPU设计进入主流市场的三大早期力量之一。 在80年代,当伯克利大学忙于开发"RISC CPU",而斯坦福大学的学者们刚刚创立MIPS时,IBM已经生产了801和ROMP CPU。 这些是具有开创性但在商业上并不成功的芯片,它们实现了一系列后来被称为"RISC模型"的指导原则。

商业里程碑

进入90年代,IBM再次尝试,推出了一系列新的UNIX工作站,名为"IBM RS/6000",并在其中内置了一种新的内部RISC CPU:POWER1。 POWER1专注于指令级并行,具有吸引人的先进特性,如:

然而,POWER1 CPU是一个由多个芯片组成的大而昂贵的包。 因此,在接下来的尝试中,IBM将其设计缩小,以适应单个芯片。 虽然仍然遵循POWER指令集,但代价是采用了32位浮点单元、冯·诺伊曼缓存架构,并恢复到顺序执行。 这个新的芯片被称为RISC单芯片(RISC Single Chip,"RSC"),并与他们的RS/6000工作站的低端系列一起出货。

面向普通用户

Image
苹果使用的IBM POWER开发板(1992年)

在IBM开发这些技术的过程中,他们还同意与苹果和摩托罗拉联手,共同对抗英特尔-微软在桌面市场的垄断,形成了AIM联盟。 因此,一个新的项目应运而生,旨在低端市场中打造一个具有竞争力的CPU。 这个项目将融合三家公司提供的知识产权,包括:

摩托罗拉88110团队的一员,Keith Diefendorff,被招募为首席架构师,并在1993年,产生了下列的项目最终成果:

PowerPC的流行

为了确保新系列既在技术上具有竞争力,又在商业上可行,PowerPC 601试图将某些指令级并行的先进技术带给大众,其中值得一提的包括:

对于终端用户来说,这个新的CPU现在可以在IBM的低端RS/6000系列和苹果的新系列Macintosh电脑"Power Macintosh"中找到。

当代产品

PowerPC 601旨在为PowerPC系列积累势头,但在接下来的几年中,微架构经历了动荡的变化。

各自发展

601一上市,摩托罗拉和IBM就决定分别开发后续一代。 这意味着将是一个完全独立的PowerPC实现,不再包含任何POWER ISA的元素,并形成两个不同的产品系列:

尽管603应该因其电源效率而脱颖而出,但现有的商业应用程序最终掩盖了其能力。 例如,苹果的软件架构仍然依赖于模拟68000指令,这被603的小缓存大小限制住了。

顺便提一下,IBM开发的PowerPC 4xx系列原本是作为微控制器解决方案,而非桌面CPU。 这些芯片配备了小型缓存,并且没有包括像MMU和FPU这样的复杂模块。 不过,这个系列提供了可定制封装,以便根据制造商的需求进行适配。 尽管如此,虽然4xx系列对本文主题而言并非重点,但值得注意的是,一个知名的竞争对手曾采用该系列来处理一些次要任务。

再次合作

然而,最终结果表明,第二代的桌面PowerPC芯片在成本上要么过高,要么在性能上无法与英特尔的处理器竞争。 因此,苹果让IBM和摩托罗拉再次合作,推出了一个新一代的统一设计,将两者的优点结合起来。 节能的603被选为新型设计的基础。 为了改进这个基础,采取了某些决策:

这成为了750系列,被苹果作为PowerPC G3推广。 从那时起,IBM和摩托罗拉继续致力于750系列的变体和增强。 这些改进主要集中在更高的时钟速度、更大的缓存和更小的制造工艺。

有趣的是,总是最节能的CPU能够经受住开发动荡的考验,这一点后来也被其他公司(MIPS英特尔ARM)所证实。

乐队解散

随着时间的推移,这三家公司之间的距离越来越远。 在PowerPC G3发布两年后,摩托罗拉独自推出了一个名为7400的新系列(苹果将其命名为G4)。 这个系列的特点包括:一个64位浮点单元;一个更快的总线架构,称为"MPX";一组称为"Altivec"的SIMD指令。 尽管它在桌面市场很受欢迎(这要归功于苹果),但IBM只专注于其专属的POWER CPU系列。

几年后的2003年,摩托罗拉最终放弃了CPU业务,并剥离了其半导体部门,导致飞思卡尔公司的成立。 后者对开发PowerPC芯片也不感兴趣,因此AIM联盟走到了尽头。 尽管如此,苹果仍然需要新的CPU,因此IBM通过缩小其POWER4设计,继续了继承线,推出了PowerPC 970 CPU(也称为"G5")。

这就是历史部分的结束。 现在,是时候来看看GameCube的独特CPU了(它位于750/G3和7400/G4之间)。 从现在开始,我将专注于GameCube硬件,但如果你对这个插曲感兴趣,你可能会想接下来阅读PlayStation 3Xbox 360Wii U的研究。

PowerPC Gekko芯片

回到2001年,任天堂需要一款既强大又便宜的处理器。 为了满足这些要求,IBM采用了其过去的一款设计,一个增强版的G3,称为PowerPC 750CXe(可以在2001年初夏发布的晚期iMac G3中找到),并对其进行了加强,增加了游戏开发者会喜欢的能力。 结果就是PowerPC Gekko处理器,主频为486 MHz

Image
Gekko的构成

让我们来看看是什么让Gekko如此特别,为了做到这一点,我们首先需要了解750CXe的特点。 现在,回顾了PowerPC的历史,你可能会发现很多信息与之前的设计重叠(这就是这些研究的目的!)。 话虽如此,750CXe提供了:

此外,该CPU还包括专用单元,可加快特定计算速度:

当然,还包括了一些高速缓存以加速内存带宽:

IBM的改进

虽然之前列出的特性受到很高评价(与之前的一代相比),但这款CPU在游戏性能方面仍然落后于其他处理器(不要忘记这仍然是一款通用用途的CPU,在处理电子表格方面表现出色,但在物理运算方面一般)。 为了弥补这一点,IBM添加了以下的调整来构建Gekko处理器 :

除了处理游戏逻辑(物理、碰撞等)外,这些增强功能将使CPU能够以可接受的性能实现图形流水线的某些部分(几何变换、光照等)。 这非常重要,因为GPU只能加速有限的一组操作,因此最终的结果不受GPU的限制所制约。

是进步还是退步?

在您的N64的文章中,您提到该系统有一颗64位的CPU,但GameCube的CPU是32位的。 Nintendo是否降级了他们的游戏机呢?

事实上,Gekko实现的是32位PowerPC规范,而MIPS R4300i可以在32位和64位模式之间切换。 要回答这是否是一种改进,您需要问自己一个问题:为什么需要'64位'?

正如您所看到的,GameCube已经享受到了64位系统的优势,尽管它并没有被称为'64位游戏机'。 这正是为什么您和我不能仅通过'位数'来总结两台复杂的机器。

巧妙的内存系统

在设计下一代架构时,任天堂的架构师们对他们之前的设计进行了事后分析,并发现在使用统一内存架构以及一些高延迟组件(如RDRAM)时,导致了最大的瓶颈之一(几乎50%的CPU周期被浪费在空闲状态)。 此外,多个独立单元的加入也导致了对内存总线的竞争。

因此,GameCube的设计者提出了一种新的内存系统,严格基于提供专用内存空间使用低延迟芯片。 采用新设计后,GPU和CPU将不再争夺相同的内存(导致填充率问题),因为GPU现在拥有自己的内部内存,而且速度惊人。 另一方面,GPU仍将负责对I/O的访问进行仲裁。

Image
此系统的内存布局。

这样系统就有了两条主要总线:

此外,这种设计还包含一条额外的(但并不常见的)总线,可以在其中找到更多内存:

总的来说,这意味着虽然ARAM提供了相当大的内存容量,但它将仅限于不那么关键的任务,如充当音频缓冲区或被某些配件使用(在I/O部分中解释)。

充分利用ARAM

到目前为止,我们已经看到,从纸面上看,该机的内存能力无疑优于前代产品,但仍有改进的余地。 例如,任天堂本可以安装更多硬件,将ARAM整合到 CPU 的内存映射中。

与此相关,我们再来看看Gekko中使用的MMU。 CPU采用32位地址总线,最多可访问4 GB内存,但系统中的内存却远远达不到这个数量。 因此,为了防止出现未填充(和不可预测)的内存地址,"虚拟内存"寻址被默认激活,用更安全、易缓存和连续的"虚拟"地址映射来掩盖物理地址。

为了实现这一功能,Gekko(以及其他PowerPC架构)通过以下过程将虚拟地址转换为物理地址:

  1. 执行块地址转换(Block Address Translation,BAT):有8对可编程寄存器(4对用于数据,4对用于指令),每对寄存器将一个虚拟地址范围映射到一个连续的物理地址范围。 如果在这些范围内找到物理地址,MMU就会尝试查找。
  2. 如果BAT不起作用,则读取页表: MMU还存储了一个表,用于编目页面(虚拟地址块)的物理地址。
    • MMU读取页表可能需要一些时间,因此需要一个转译后备缓冲区(TLB)来缓存最近的读取。
    • x86或MIPS等其他架构也提供分页功能,但并非所有架构都提供TLB。
  3. 最后,如果请求的虚拟地址仍然无法转换,那么MMU就会在CPU中触发"分页错误"异常,并让操作系统决定下一步该怎么做。

那么,这对开发人员有什么用呢? 原来,任天堂发布了一些库,可以在分页的帮助下使用ARAM扩展主RAM。 简而言之,ARAM是不可寻址的,但CPU可以调用DMA从ARAM中获取和存储数据。 因此,CPU可以将页面从主RAM中移出,为其他资源腾出空间,并将其暂时存储在ARAM中。 之后,每当发生页面故障时,操作系统包含的一些例程就会用于查找ARAM中丢失的页面,并将其恢复到主RAM中的原始位置。

总之,通过一些巧妙的技巧,这些通用功能使GameCube游戏能够享受比技术允许值更多的内存,从而达到更高的质量水平。 不过,需要注意的是,这些技巧可能会带来一些性能损失(尤其是在想当然的情况下)。


Previous: 2. 快速介绍

Next: 4. 图形


Rodrigo Copetti © 2026 RSS Feed

切换至现代版

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