世嘉决定采用全功能的Zilog Z80CPU,运行频率约为3.58 MHz。 一个受计算机厂商欢迎的选择,如Spectrum、Amstrad或Tandy。

2019年6月我到访加州山景城的计算机历史博物馆时,见到的美国Tandy TRS-80电脑(1977年款)。

英国 Sinclair ZX80(1980)。 比它看起来要小得多! 克里斯托弗·里维特(Christopher Rivett)的收藏品的一部分 。
Z80中央处理器有一个有趣的背景,因为它是由英特尔8080的创造者(费德里科·法金和岛正敏)创作的,他们由于对英特尔的方向不再抱有幻想,并决定在1974年创办自己的硅公司——齐洛格(Zilog)。 他们首次推出的产品可以被认为是英特尔8080的非官方继任者,其具有以下特性:
- Z80 ISA:与Intel 8080兼容但扩展了更多指令的指令集。 它处理8位套接字。
- 8位数据总线,非常适合移动8位数据。 较大的数值将消耗额外的CPU周期。
- 十四个8位通用寄存器:这个数量相当可观,考虑到Intel 8080只有其一半数量,而MOS 6502只有三个(
X、Y和A)。 然而,Z80的寄存器文件显示具有一些限制(或者说是优势,取决于你的看法):- 每次只能访问七个寄存器,另外七个被称为"备用寄存器",必须与第一组寄存器进行交换才能访问它们。 这与 存储切换的原则相吻合。 此外,Z80提供了专门的指令如
EX和EXX来在各组之间传输内容。 - 在每组寄存器中,六个8位寄存器也可以配对以提供最多三个16位寄存器,从而允许操纵更大的数值。
- 每次只能访问七个寄存器,另外七个被称为"备用寄存器",必须与第一组寄存器进行交换才能访问它们。 这与 存储切换的原则相吻合。 此外,Z80提供了专门的指令如
- 16位地址总线,其导致的后果将在下一节中解释。
- 4位算术逻辑单元(ALU):这可能有点令人惊讶,但它意味着对8位值的操作需要两倍的周期来计算。
文章开头的主板图片显示了一颗 NEC D780C-1 CPU,这只是世嘉将芯片交由不同厂商代工的结果,其他版本甚至包含了由 Zilog 制造的芯片。 但对于本文而言,不论 CPU 是哪家制造的都不重要,因为其内部特性保持不变。
相对比较
请注意,NES 中搭载的 6502 CPU 运行频率仅为约 2 MHz。 这大约只有SMS芯片运行速度的一半。 再加上 Z80 拥有更大的寄存器文件,人们可能会认为SMS的性能毫无疑问地超越 NES。
相反,如果我们深入探究,会发现 6502 拥有一个更大的(8 位)ALU。 因此,在 6502 上只需两个周期完成的算术操作,在 Z80 上则需要消耗四个周期。 归根结底,这说明像 CPU 时钟频率或寄存器文件大小这样的相对特性,如果孤立地分析,可能会产生误导。 Z80 和 6502 在不同的任务上各有优势和劣势,最终取决于程序员的本事。
可用内存
正如前面所述,Z80 拥有 16 位地址总线,这意味着 CPU 可以寻址高达 64 KB 的内存。 在SMS的内存映射中,你会发现有 8 KB 的 RAM 供通用用途使用,这部分内存还被镜像到另外一块 8 KB 区域。 最后,最多可映射 48 KB 的游戏 ROM。
访问其它组件
从上一段我们可以了解到,主 RAM 和部分卡带 ROM 是唯一出现在地址空间中的组件,那么程序如何访问其他硬件呢? 与任天堂的 Famicom/NES 不同,SMS并非所有的硬件都是通过内存地址映射的。 相反,一些外设位于 I/O 空间中。
这是因为 Z80 家族包含了一个有趣的功能称为 I/O 端口,它使得 CPU 可以与其它硬件通信而不占用内存地址。 为此,存在一个专门用于"I/O 设备"的地址空间,称为端口,并且这些端口与内存共享相同的数据和地址总线。 不同之处在于,端口是通过 IN和 OUT 指令来读取和写入的——而传统的载入/存储指令 (LD) 则不适用于此。
当执行 IN或 OUT指令时,Z80 设置地址线指向特定的外设(例如键盘),并标记其 IORQ 引脚表示已发起 I/O 请求,最后根据是 IN 还是 OUT 指令分别标记 RD 或 WR 引脚。 被寻址的外设必须手动检查地址总线和 I/O 引脚,并执行所需的操作。 在执行 IN 指令的情况下,CPU 将接收到的值存储在一个预定义的寄存器中。
世嘉这种 CPU 与其余组件互联的方式不仅使得可以访问其数值,还可以选择性地显示或隐藏某些组件,使其不出现在内存映射中。
有趣的是,GB(Game Boy) 使用了一种省略了 I/O 端口的 Z80"变体"。 因此,它不得不将所有东西都放在内存映射中。
向后兼容性
这台游戏机的架构与其前身 Sega SG-1000非常相似,因此SMS实现了与 SG-1000 的向后兼容性。 不过,这一点仅适用于日版机型,因为其他版本使用了不同的卡带插槽。
