该游戏机的I/O子系统确实带来了颠覆性变化(请原谅我的双关语)。 现在,接口由一个模块控制,该模块还能确保安全。 我说的是Starlet。
隐藏的协处理器
Starlet就是一个ARM926EJ-S CPU,与游戏机的大部分内部组件相连。 它位于Hollywood内,运行频率为243 MHz(与Hollywood相同),还包含自己的ROM和RAM。 因此,您可以将Starlet视为与主CPU同时运行的独立计算机。

Wii的架构主图。 请注意,Starlet能够控制大部分的I/O,甚至还能隐藏Broadway的一些I/O。
其内核与任天堂DS上使用的内核相似,只是增加了两个"特殊"部件:
- 型号名称中的"J"表示包含Jazelle:一个执行8位Java字节码的专用单元。 Java程序仍将依赖虚拟机(称为"JVM"),但某些操作码可直接从CPU执行。 总的来说,这可以加快已编译Java代码的执行速度。
- 专用的内存管理单元(MMU),可启用虚拟内存。 这对通用操作系统非常有用。
这些增强功能有点"奇怪",因为它们在Wii上完全没有使用。 尽管如此,任天堂还是为Starlet选择了这一内核。 这让我想起了第一代iPhone(2G),它也包含一个带有Jazelle(也被浪费了)的ARM CPU。
如果你想知道,Jazelle从来没有走红。 经过几次迭代后,人们发现Java字节码在软件上运行得更好。 后来,ARM用"Thumb-2EE"取代了Jazelle,在撰写本文时(2021年6月),这两个单元都已被淘汰。
接下来,这个"I/O CPU"的任务是在许多I/O和Broadway之间仲裁访问权限,在此过程中,它还负责安全(决定是否允许访问)。 例如,在允许访问NAND时,这一点尤为重要,因为NAND是存储主操作系统和用户数据的地方。
该芯片还继承了ARM的一些技术,如高级微控制器总线架构(Advanced Microcontroller Bus Architecture,AMBA),这是一种通过一组专用总线促进设备间通信的协议。
尽管如此,任天堂还是利用两条AMBA总线对I/O进行了布线:
- AHB总线(AMBA High-performance Bus,AMBA高性能总线): 顾名思义,它专为高速通信而设计。 在这里我们可以找到:
- NAND接口: 访问存储操作系统和用户数据的512 MB NAND闪存。
- 两个安全数字输入输出(Secure Digital Input Output,SDIO)接口:SDIO是一种主要用于访问SD卡的协议,但在本例中,第二个接口也用于控制Wi-Fi模块(802.11 b/g)。
- USB 2.0控制器:连接两个外部USB插座和一个内部蓝牙2.0子卡。
- 一个SHA-1和AES模块:专用于安全任务(更多详情,请参阅"反盗版"部分)。
- APB总线(Advanced Peripheral Bus,高级外设总线):仅限于低性能组件使用,包括:
- 驱动器接口:连接光驱。
- 串行接口:连接GameCube控制器。
- 外部接口(External Interface,EXI):我们以前见过它。 它与其他GameCube硬件通信,用于向后兼容。
保持兼容性
尽管I/O系统发生了巨大变化,但Wii仍能与GameCube游戏保持完全向后兼容。 这是因为在执行GameCube游戏时,可以对Starlet进行重新编程,以重新映射I/O,就像在原版GameCube上期望能看到的那样。
此外,实时时钟芯片还包括一些备用ROM,用于存储GameCube游戏使用的位图字体(拉丁文和日文集);以及SRAM,用于保存与IPL相关的设置。

