« 超级任天堂的架构 (index)

超级任天堂的架构

Chapter 3: 中央处理器 (CPU)


目录

  1. 6502的现代化
  2. 新的CPU
  3. 理光添加的硬件
    1. 高速内存访问
    2. 片段故障
  4. (大量的)更多内存

超级任天堂选择的处理器很特别。 与捆绑成熟的68000的竞争产品不同,SNES 的芯片与其前身相比并没有根本性的突破。 概括地说,NES 采用的是经过改进的6502 CPU,它是70年代末和80年代初计算机中备受推崇的部件。 现在,为了给新的十年(90年代)铺平道路,任天堂采用了更保守(也更便宜)的解决方案:WDC 65C816,这是6502的16 位扩展。

6502的现代化

65C816 CPU源自Western Design Center,特别是来自Bill Mensch,他曾是6502开发团队(在 MOS)和6800开发团队(在摩托罗拉)的成员。 1978年,在离开MOS一年后,Mensch创立了Western Design Center (WDC),这是一家半导体公司,专门生产MOS 6502的克隆产品,并对其进行了极具吸引力的改进(如CMOS设计、额外的操作码、电路修复、新的寻址模式等)

Image
苹果Apple IIGS上的WDC 65C816芯片

有一天,苹果公司找到 WDC,要求其设计一种向后兼容的6502变体,可以处理更大量的数据。 于是,WDC 65C816 CPU 于1983年面世。 奇怪的是,苹果在开发使用这种新CPU的计算机过程中经历了许多挫折,直到三年后才发布了Apple IIGS。

Image
最终,Apple IIGS和超级任天堂成为65C816 CPU的仅有的主要采用者

与此同时,任天堂与理光(Ricoh)及其为NES提供的芯片组保持着良好的合作关系。 我没有找到确切的文件来概述理光与WDC之间的关系,但我可以确定的是,在某个时间点,WDC同意将其65C816设计授权给理光。 因此,理光根据超级任天堂的新要求对其进行了定制,并将其命名为理光5A22,专门供应给任天堂。

新的CPU

如前所述,该控制台的主处理器是理光5A22,是65C816的超集。

Image
理光5A22芯片,任天堂称之为"S-CPU"

与具有Apple II软件的向后兼容能力的Apple IIGS不同,超级任天堂与NES游戏不兼容。 平心而论,从处理器的选择来看,SNES最初计划兼容NES游戏的可能性微乎其微,谁知道呢。

接下来,CPU采用了可变时钟速度,在进行寄存器操作时最高可达3.58 MHz,而在访问最慢的总线(即串行/手柄端口)时则低至1.79 MHz

现在,为了正确理解5A22的功能,我们必须首先了解65C816的功能:

看到这里,我不得不承认65C816感觉过于繁琐,而收益却很少。 与摩托罗拉68000等其他产品相比,我们不难得出结论,为什么Apple IIGS最终成为唯一采用65C816的个人电脑。 尽管如此,在这篇文章中,你将看到任天堂和理光如何将这种CPU的局限性转化为改造其游戏库的机会。

理光添加的硬件

65C816是一款通用CPU,于1983年推出,是其1975年祖先的后续产品,具有各种要求和限制。 然而,任天堂计划将其游戏机的寿命延长至整个90年代。 因此,理光必须加大力度去魔改(恕我直言)。

首先要解决的是算术上的限制,65C816没有包含任何乘法或除法的专用指令。 因此,理光增加了16位乘法除法单元,使CPU能够通过硬件(而不是软件)执行这些运算。

现在,您可能会问"这有什么关系",答案将在我们讨论超级任天堂图形芯片的某些新功能时揭晓(在"图形"部分)。

高速内存访问

第二个挑战是提高数据带宽。 因此,我们增加了两个独占的DMA(直接内存访问),以便在CPU不干预的情况下移动数据(从而提高速度)。 为使这一设计发挥作用,内存区域使用两条不同的地址总线进行引用:

当设置DMA时, 数据来源 必须与 传输目标 在不同的总线上。

此外,这两种DMA并不完全相同,其功能也截然不同:

最后,系统提供8个通道用于设置DMA传输,因此可以同时调度多达8个独立的传输。

片段故障

该游戏机还具有一种名为"开放总线"的特殊"异常":如果有指令试图从一个未映射/无效的地址读取数据,则会提供最后读取的值(CPU会将该值存储在一个名为内存数据寄存器MDR的寄存器中),并在不可预测的状态下继续执行。

相比之下,68000 使用向量表来处理异常,因此只要检测到故障,执行就会重定向。

(大量的)更多内存

NES 的内存只有2 KB,但却能显示大量内容,这实在令人惊叹。 超级任天堂现在拥有128 KB 的 SRAM(仍称为 "工作内存" 或WRAM)。 这比上一代产品多出6400%的通用内存。

那么,开发人员能用它做什么呢? 可以做任何他们想做的事。 WRAM用于存储游戏的变量信息。 空间越大,可存储和处理的信息就越多(从而节省了卡带上的硬件) 不过,请记住,本文下面的章节将向你展示超级任天堂是一台相当复杂的机器(尽管它的CPU很 "简单"),我倾向于将这台游戏机称为"小型计算机/子系统的集合"。 现在,每个子系统都可能需要中央处理器提供数据。 因此,程序员可能会分配部分WRAM来处理这些信息,从而证明128 KB的必要性。


Previous: 2. 快速介绍

Next: 4. 图形


Rodrigo Copetti © 2026 RSS Feed

切换至现代版

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