游戏康威生命游戏是如何搭建计算机的?( 五 )


注:OTCA metapixel之后 , 康威生命游戏世界又诞生了几种里程碑意义的单元细胞 , 包括规则表达能力比OTCA metapixel强悍许多的p1 megacell , 以及迄今为止尺寸最大的单元细胞0E0P metacell 。 一个0E0P metacell单元细胞就包含约1865万个存活细胞 。 0E0P metacell不仅在表达能力上和p1 megacell差不多 , 而且具有神奇的自我“克隆”能力 。 我们不需要铺满完整的矩阵 , 只需要部署存活状态的0E0P metacell单元细胞并将其他位置留白 。 运行时 , 0E0P metacell单元细胞有能力在全空的场地上“克隆”出新的自己 。 参见:https://conwaylife.com/wiki/Unit_cell
高层级抽象:多规则生命游戏
OTCA metapixel适用于基于邻接计数的生命游戏规则 , 无法直接转译导线世界游戏里的计算机 。 极客们需要一种既方便表达电流和电路 , 又容易被转译为OTCA metapixel的新游戏规则 。 这一工作的成果就是全新的多规则生命游戏(VarLife)了 。
多规则生命游戏的特点是每个细胞遵循的邻接计数规则可以不同 。 游戏中 , 我们用不同颜色来区分规则不同的细胞 。 具体规则如下:
背景规则B/S:无论何时背景中都不会诞生新的存活细胞 。
蓝/青规则B1/S:蓝色死亡细胞周围有1个任意颜色存活细胞时即诞生为青色存活细胞;任何青色存活细胞总会在下一次迭代时死亡 。
绿/黄规则B2/S:绿色死亡细胞周围有2个任意颜色存活细胞时即诞生为黄色存活细胞;任何黄色存活细胞总会在下一次迭代时死亡 。
红/橙规则B12/S1:红色死亡细胞周围有1个或2个任意颜色存活细胞时即诞生为橙色存活细胞;橙色存活细胞周围有1个任意颜色存活细胞时即保持存活 , 否则死亡 。
在这几条规则的基础上 , 蓝色细胞可扮演导线内芯的角色 , 绿色细胞扮演导线外皮或电流方向控制器的角色(阻止电流反向传播) , 青、黄两色细胞共同构成一个“V”字型的运动电子 。 红色和橙色细胞用于表示和存储状态信息 。
我们在下图中看一下多规则生命游戏建造的导线长什么样:
游戏康威生命游戏是如何搭建计算机的?
图片

多规则生命游戏建造的逻辑门如下图所示(左边是“与”门 , 中间是“异或”门 , 右边是“或”门):
游戏康威生命游戏是如何搭建计算机的?
图片

多规则生命游戏中的触发器从左上角标记“SET”的位置接收设置信号 , 从右上角 “RESET”位置接收重置信号 。 读取触发器的指令从左下“READ”位置输入 , 输出信号位于右下“OUT”位置 。 如下图所示:
游戏康威生命游戏是如何搭建计算机的?
图片

其他基础元件的搭建原理和我们之前在导线世界游戏中所做的事情大同小异 。 但极客们基于多规则生命游戏设计的“俄罗斯方块处理器”在软硬件架构上要更加完整、复杂 。
“俄罗斯方块处理器”的硬件细节相当丰富 , 包含约120万个细胞 , 拥有独立的算术逻辑单元(ALU)、随机存取存储器(RAM)、只读存储器(ROM)、计数器、同步器、指令分离器等:
游戏康威生命游戏是如何搭建计算机的?
图片

设计和实现这个复杂硬件系统的工程量还是相当巨大的 。 最麻烦的问题在于 , 这一类用生命游戏建造的电路元件 , 对信号同步的要求非常高 。 两条导线长度相差一格 , 往往就会引起时钟序列上的错误 。 为此 , “俄罗斯方块处理器”使用全异步设计 , 尽量排除导线长度差异的干扰 。 系统中有很多看上去复杂、精巧的设计 , 都是为了同步不同的信号 , 或者在串行信号和并行信号之间做转换 。 限于篇幅 , 这里不详细解释系统的每个细节设计 。
架构和软件层面 , “俄罗斯方块处理器”是一台真正的通用计算机 。 它可不是只能运行俄罗斯方块程序 。 事实上 , “俄罗斯方块处理器”拥有一个16位的RISC哈佛架构的指令集 , 可以运行各类程序 。 在哈佛架构中 , 程序指令存储和数据存储分开 , 指令寻址和数据寻址可相互独立 , 这与纯冯·诺依曼架构不同 。


推荐阅读