« Wii U 架构 (index)

Wii U 架构

Chapter 4: 中央处理器 (CPU)


目录

  1. 起源与猜想
  2. 第8代架构
    1. 熟悉的面孔
  3. 对于 Espresso 的研究
    1. '多核心' 的 Broadway
    2. 灵活的总线
    3. 更多缓存
    4. 改进空间
  4. 可用内存
    1. GDDR3 或 DDR3 ?
  5. 成为一个Wii
  6. PowerPC的最后一次冒险

我希望你还有一些时间,因为我们仍然需要从_中央芯片_开始深入 Wii U 的内部结构.

起源与猜想

自从 Wii U 发布以来 (以 Project Cafe 被熟知), 关于新的中央处理器将由什么组成,有很多猜测. 在某个时候,大家都猜测任天堂将采用IBM的 POWER 系列 的现代版本. 我想玩家都期待着一款突破性的 CPU,就像六年前 Cell 和 Xenon 所展示的那样. 此外,随着 PowerPC 的衰落 (最明显的是苹果在2006年改用英特尔核心),认为IBM的任何新 CPU 都将作为 POWER 架构的升级版的想法并不太牵强.

诚然,之前的逻辑有一个错误,那就是任天堂不喜欢新兴技术. 相反,他们的方案侧重于抓住现有技术,寻找创新和巧妙的用途. 这不一定是一个坏特性,因为任天堂的工程师们非常聪明地展示了技术被认为"过时"的最先进的应用程序. 看看 Game Boy 的 Z80 hybrid,或者任天堂ds上的降频ARM9,甚至是名为 "Wii" 的部分升级的游戏机. 如果说所有这些都有共同点的话,那就是它们都打破了销售记录. 现在,Wii U 会加入这个队伍吗? 答案我想我们都应该知道了.

第8代架构

在上一个世代主机中,索尼和微软在降低成本的当代技术上下了很大的赌注 (有些比其他人风险更大). 对于 Wii U,任天堂的方向略有不同,专注于低成本、低功耗和向后兼容性 . 后者将对这款主机的最终设计产生重大影响. 因此,新的CPU没有提供任何激进的组件,而是试图赶上行业的最新进步 (多核处理、GHz级别速度等).

话虽如此,任天堂与 IBM 合作推出了他们的新 CPU. 它叫做 Espresso,运行频率为 1.24 GHz .

现在,让我们深入谈谈 Espresso:

Image
Espresso 的概览图

......和这个系列中的任何其他文章一样,我会解释它是如何工作的。

熟悉的面孔

在我们开始进行真正的分析之前,让我回过头来看一下上一个图表。 正如你在那里看到的,Espresso 是一个对称的多核系统,就像 Xenon 一样. 但这还不是全部,因为 Espresso 的每一个内核似乎都是 IBM 的 Broadway 的复制品,与 Wii 使用的内核完全相同 (或者换种说法,它是 GameCube 中的 Gekko 的调整版本).

对于 Espresso 的研究

我们现在来看看 Espresso 是如何构造的. 正如我已经解释过的 BroadwayGekko 如何工作 我将侧重于Espresso的新颖之处,即它的多核心布局、缓存系统和内存.

在这一点上,可以公平地说,任天堂和 IBM 都没有公开记录 Espresso 的内部工作原理 (与 Xenon 和 Cell 不同,这两者有许多 IBM 工程师在 IBM 现已关闭的 developerWorks 门户网站上发表了关于它们文章). 我想这两个公司都没有计划在 Wii U 之外将 Espresso 商业化. 即便如此,这一部分之所以成为可能,是因为 fail0verflow (又名 Team Twiizers) 等黑客组织花费了无数小时,他们不仅成功地对这个系统进行了逆向工程,还花时间发布了有关它的文档 (如果你喜欢这个话题,别忘了看引用的文档). 在这项研究中,我将第三方研究与 IBM (与 Broadway 有关) 和 Freescale 的公开信息相结合,结果如下.

'多核心' 的 Broadway

Image
四个 512 MB DDR3 芯片旁边的大型 SoC (包括了 Espresso 和其他的一些芯片)

Espresso 拥有三个基于 PowerPC 750CXe 架构的CPU 核心. 这些设计的日期可追溯到2001年, 意味着数据路径和指令组的状态与10年前大致相同. 为了做出区别, PowerPC 处理单元 (Xenon和Cell的主要核心) 选择了 POWER4 的设计,并为了相应主机的要求重新设计了它.

让我们继续,Espresso实现了 对称多核心布局... 但如何使用这些旧核心? 好吧,IBM在一个常见问题的门户网站 (现已关闭) 中解释说,750已经支持多核运算, 它只需要额外的程序来维护缓存的完整性 (在不同的L1、L2和TLB之间)。 然而,通过软件来做到这一点会抵消多核处理器设计的优势,所以这种想法从未被采纳...... 也就是说,任天堂需要再次与IBM合作.

最后,IBM使用了三个Broadway CPU,将时钟提升至1.24 GHz 并包装了额外的 L2 缓存和必要电路,用来处理总线竞争与缓存一致性问题(因此不必用软件来完成). 这就是Espresso.

灵活的总线

Image
Espresso 内部核心的结构

连接CPU核心和外部组件的外部总线有一个有趣的历史。 可以追溯至1993年 摩托罗拉88110的发布. 在 AIM 联盟形成后,IBM 和摩托罗拉各自基于他们的最强技术创造了一款联合CPU. IBM贡献了他们的POWER架构,摩托罗拉贡献了88110 CPU的总线设计. 在1993年,PowerPC 601问世.

PowerPC 601采用了名为 60x bus 的总线协议。 这在当时是相当先进和灵活的,支持64位操作、更快的时钟速度、以及缓存一致性和多处理器配置(因此IBM表示750 CPU可以进行多核运算) 。 所有的一切都让我想起了日立的SUPER H技术(Super H处理器核心家族由日立在90年代早期开发,Super H指以32位元存取的精简指令集架构,SH4曾被用在世嘉DC)

回到Wii U, IBM再次使用60x bus连接Espresso的三个核心。 此外,他们还实现了一种总线的变体,将Espresso(作为芯片) 与主板的其他部分连接起来.

如果你想知道目前60x bus的采用情况,恐怕它早已被摩托罗拉为PowerPC 74xx系列(也称为"G4") 实现的一种名为"MPX"的改进协议所取代. MPX总线通过使用"数据流"来减少等待状态,解决了60x bus的不足,如数据吞吐量慢 . 另一方面,IBM展示了他们的"弹性接口"总线,包括PowerPC 970系列(G5) 和POWER4 .

更多缓存

对于Wii(和GameCube),Broadway/Gekko只处理了256 KB的二级缓存和64 KB的一级缓存. 在Wii U上,Espresso的每个核心的L1缓存保持不变,但其中两个现在拥有512 KB的L2缓存,第三个核心则拥有惊人的2MB的L2. 实际上,这并不意味着有2.5MB的 "可用"缓存,因为不同的内核可能需要从RAM中缓存相同的部分,如果缓存是共享的,这种情况就不会发生 (但那样的话,会出现其他问题!).

Espresso 中的所有L2缓存都是 4路关联。 与Xenon和Cell中的8路关联(8-way associations)相比,在Xenon中,这是为了减少3个核心对1MB的共享L2缓存竞争. 在Espresso中,遍历关联缓存将花费更少的时间,但缓存未命中的频率会更高.

为了处理三个独立的 L2 缓存之间的缓存一致性,Espresso 的内部总线接口遵守 MERSI 协议 (与 Cell/Xenon 相同). 作为参考,Broadway (单核系统) 使用了 MEI 协议.

附带说明一下,Espresso 中的 L2 属于 eDRAM 类型,而不是 SRAM. 此外,L1的的block(关键词:cache的结构)仍然提供locked(译注:锁内存总线,CPU或DMA访问内存的动作是原子化的,即完成一个动作后解除锁定其他设备才能访问)和RAM-to-L1(内存到L1)直接存储器存储的指引。

改进空间

正如 fail0verflow 强调的那样,Wii U 作为一个系统实际上缓存是不一致的. 外部I/O可以在Espresso不知道的情况下改变内存,因此缓存在这些情况下不会被自动刷新。 相比之下,Xbox 360的南桥在外围设备DMA到主RAM之后会通知缓存。

此外,PowerPC针对多核心环境下的两条指令。 lwarx (Load Word和Reserve Indexed) 和stwcx (tore Word Condition Indexed), 不再能够正常工作. 正如fail0verflow所指出的,这些现在需要手动刷新缓存才能按预期工作。 至少它不是第一个带有损坏指令的 PowerPC 变体(参见 Xbox 360 的 xdcbt).

幸运的是,这并不全是坏消息. 至少Espresso继承了Gekko的乱序执行,而这一点不得不从 Xenon 和 Cell 中删除。

可用内存

本节既简单又复杂. 综上所述,有三个地方可以存储易失性数据:

造成这种差异的原因是,你可能记得Wii 和 GameCube时代的MEM1和MEM0. 它们在Wii U上得到了延续,尽管MEM1略有增加.

Image
通用内存的内存布局(在"Wii U"模式下).

不管怎样,从开发者的角度来看,只有MEM2和MEM1(两个较大的内存) 可以访问。 2GB的DDR3内存可以保存任何类型的数据(同时包括CPU和GPU),而其他两个的功能则更为有限. MEM1 用于图形数据("图形"部分有更多详细信息), 操作系统使用 MEM0("操作系统"部分有更多详细信息).

在某些方面,该系统遵循统一内存架构(UMA)。 尽管MEM1和MEM2处于中间层,但我不能说这个系统完全符合UMA模式(不同于某些竞争者)。

GDDR3 或 DDR3 ?

旧Wii 使用 GDDR3 内存,用于图形操作的速度特别快。 Wii U的选择不仅更大,而且还具有一个新类型,叫做 DDR3 (命名开头没有"G"). 这是否意味着Wii U已被降级? 令人困惑的是,没有。

GDDR3 内存是 DDR2 的改进版本,用于图形相关功能. 几年后,DDR3到来,它同时继承了DDR2和GDDR3. 你是否感到了困惑? 好吧,让人更加困惑的是,后续的GDDR4和GDDR5是在DDR3基础上的增强,而不是其他。

这种命名方式具有不必要的欺骗性. 但我们不要失去重点,Wii U采用了DDR3,这意味着与Wii的GDDR3相比,带宽更高。

成为一个Wii

我很想说,虽然新硬件在某些方面看起来不尽如人意,但对Wii的向后兼容性达到了与Nintendo DS或Game Boy Advance一样的水准.

使用的方法也与这两种机型相同. Wii U不再采用软件模拟临时硬件而是作为Wii的超集. 因此,可以通过隐藏其现代功能轻松复制 Wii 的硬件。

所以,每当Wii U决定 "变成Wii"时,Espresso就会停用两个核心 (保留一个Broadway 核心) ,MEM2会隐藏1984MB的内存 (保留64MB的内存). 一旦进入"虚拟 Wii"(vWii) 模式,旧的 Wii 游戏就可以安全地认为它在真实的 Wii 上运行。

这种兼容模式背后还有更多细节,包括_模糊_I/O(在适当的时候解释),所以如果你对这个过程感到好奇,请继续阅读!

PowerPC的最后一次冒险

当我们即将结束CPU部分时,这似乎是我最后一次分析基于PowerPC的系统 (至少按时间顺序排列,我还没有谈到苹果Pippin).

PowerPC有一段有趣的发展历程,起起落落. 虽然它没有成功地推翻x86,但它确实征服了三代游戏机。

无论如何, 我们热爱的 Espresso 实质上是对一个完全过时的平台进行的现代化改进。 IBM和摩托罗拉都已经放弃了 750CL 系列,分别转而支持 7400 和 970 系列. 然而,IBM如何挖掘他们的旧设计来生产一款能够在2010年进行竞争的游戏主机,这很令人好奇。 但我猜测,Espresso没有消费者版本的现象,证明了IBM对进一步推广Espresso并不感兴趣.

但是,就像Xenon或Cell一样,这都是进化的一部分。 我不相信这类技术会被遗忘或放弃,它们的设计和专业知识最终会融合到其他项目中。


Previous: 3. 新一代的手柄

Next: 5. 图形


Rodrigo Copetti © 2026 RSS Feed

切换至现代版

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