« Neo Geo架构 (index)

Neo Geo架构

Chapter 3: 中央处理器 (CPU)


目录

  1. 多种支持芯片
  2. 复杂的 I/O 处理
  3. 进程间通信
  4. 防扫兴机制
  5. 可用内存

该系统采用双处理器配置,由一个 Motorola 68000 和一个 Zilog Z80 CPU 组成,这两个处理器都是 80 年代电子产品的标志性产品。 68000 负责执行主程序(也就是游戏),而 Z80 则被分配用于声音管理 。 你可能会回想起 MD 中类似的分工角色,但相似之处仅此而已,因为芯片的变体和布局有所不同。

Image
Neo Geo 内部使用的 Motorola 68HC000 芯片,这款芯片是由东芝作为第二来源提供的。

举个例子,Neo Geo 的 68000 运行频率为 12 MHz(比 MD 的快 4 MHz)。 此外,安装的具体芯片是 68HC000,这是一种通过 CMOS 门组成的变体(与之前效率较低的 NMOS 工艺相比)。

如果你想了解 68000 和 Z80 的内部构造,我在 MDSMS 的文章中已经进行了详细的分析。 因此,在对 Neo Geo 的研究中,我将专注于它们的新用途。

多种支持芯片

Neo Geo 与同时代的任何家用游戏机之间最显著的区别在于,在设计前者时,SNK 并不受普通家庭预算限制的束缚。 因此,主板上集成了大量的控制器,这些不仅消除了许多 CPU 的瓶颈问题,还扩展了它们的功能。

列出所有的芯片令人费解,而更让人困惑的是 SNK 在不同版本中重新设计了芯片组,要么是将多个芯片合并为一个,要么是将单个芯片拆分成多个。 所以,现在让我告诉你,主板上包含以下几类"加速器":

从现在起,我将在整篇文章中使用这些名称来指代各类芯片组。 在某些情况下,我还会提及特定的芯片名称以强调其重要性。

复杂的 I/O 处理

让我来介绍 68000 的一项之前未曾提及的高级功能:向量化中断表。 早期的 CPU 如 6502Z80 在处理 I/O 通信方面有着受限的设计。 每当外部设备需要 CPU 的关注时,它必须发送一个中断请求,而 CPU 则需要运行软件例程来处理这个请求。 在请求过程中传递的信息非常有限,这意味着 CPU 需要额外的周期来确定是谁触发了中断以及为什么中断 CPU。

公平地说,像 Z80 这样的 CPU 提供了额外的电路来允许外围设备告诉 CPU 下一步执行哪条指令。 然而,这种方法并未被广泛采用。

68000 改进了这项技术,将中断视为异常处理。 当外围设备中断 CPU 时,它们需要自我标识。 然后,CPU 使用这个标识符组成一个内存地址,该地址指向一个定制的软件例程。 总的来说,这使得程序员能够高效地处理 I/O 通信,因为他们现在可以在一个名为自动向量表的内存区域中编目他们专用的中断处理程序,而 CPU 将自动执行每个处理程序。

Neo Geo 利用了这种设计,并增加了一个名为 NEO-E0 的控制器芯片。 基本上,Neo Geo 的操作系统和游戏都会实现一个专用的异常表,这是因为操作系统的表侧重于硬件接口,而游戏的表则在正常执行期间使用。 然而,68000 只能意识到一个表。 因此,NEO-E0 提供了自动的存储器区段切换功能(bank switching),确保 68000 始终可以从正确的表中读取数据。

进程间通信

在具有双处理器架构的系统中,两个 CPU 必须有一种方式进行通信。 在这个游戏机中,SNK 通过使用I/O 仲裁器 芯片实现了进程间通信(IPC)。 该仲裁器暴露了一个单一的 8 位寄存器,68000 可以写入此寄存器 。

Image
68000和Z80之间的IPC通道表示。

一旦寄存器被更新,仲裁器会向 Z80 发送一个不可屏蔽中断。 之后,Z80 可以读取该值(映射到一个端口),并据此做出反应。 这包括将数据写回到该寄存器,以便 68000 能够接收到新的数据。 但是,出于某种原因,68000 不会被中断(因此它需要进行某种形式的轮询)。

具体的 I/O 仲裁器芯片在不同的主板版本中有所变化。 最初使用的是 'PRO-B0' 芯片,后来被 'NEO-C1' 所取代。

防扫兴机制

说到中断,街机机柜所不能承受的就是需要不断的维护。

对于因为软件错误而导致游戏突然冻结的情况我们并不陌生。 解决方法也并非秘密:只需重启电源,再次启动游戏即可。 现在想象一下,如果这种情况发生在街机机柜上。 除非机柜的所有者恰好就在附近,否则故障的机柜只会带来不断的金钱损失。

Neo Geo —— 继承了投币机的要求 —— 通过捆绑一个看门狗程序 提供了"自动修复"过程。 这个程序位于 I/O 仲裁器芯片中。

Image
街机机柜无法承受持续的服务需求。 它们已经忙于吸引玩家。

系统的工作原理如下:游戏必须定期向看门狗通知其存在(通过写入特定的寄存器)。 不幸的是,如果在一定时间内看门狗没有收到心跳信号,它就会假设程序已冻结,并进而重置系统。

多亏有了这个功能,MVS 的所有者不必时刻留意他们的机柜。 与此同时,那些能够负担得起 AES 系统的幸运孩子们即使游戏崩溃也不必离开他们的豪华沙发。

不仅如此,MVS 主板还配备了一个额外的微控制器 NEO-F0 。 这个微控制器驱动着投币锁定 机制,防止用户在故障的系统上浪费硬币,除此之外还有其他功能。

可用内存

内存分布在主板和游戏卡带中(顺便说一句,游戏卡带的尺寸相当大)。 请记住这是一个昂贵的系统,因此内存带宽和容量是首要考虑的因素。

对于通用内存来说,68000 可用的 RAM 为 64 KB 。 与此同时,Z80 获得了 2 KB 的内存。

MVS 版本还另外包含了 64 KB 的内存。 这部分内存连接到了电池上,用于存储游戏得分,因此对于一般用途来说并无用处。

有趣的是,这个系统并没有采用任何形式的直接内存访问(DMA)来加速内存传输。 我认为考虑到专用总线的数量,这可能并不是必需的。


Previous: 2. 简介

Next: 4. 图形


Rodrigo Copetti © 2026 RSS Feed

切换至现代版

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