Skip to content

父节点与总线:控制 vs 数据

「父节点不是一个实体。父节点是一个角色。只是一个开启总线的输入图块。」

在 Decima 中,有两个层级永远不会混合:

  • 访问控制 — 二元的(开启/关闭)
  • 数据 — 分级的(Level16,0..15)

「父节点」不是形而上学。 它只是一个方便的名称,用于控制对共享总线访问的输入图块。

本质

组件 实际是什么 功能
父节点 带有 BUS_R 标志的输入图块 开启/关闭对总线的访问 (0/1)
子节点 8 个相邻图块(Moore 邻域) 向总线贡献激活值 (0..15)
总线 共享信号累加器 累加活动图块的贡献

父节点并不「更聪明」或「更高级」。 他只是链中的第一个。接收外部刺激并决定「该工作了」的那个。

拓扑:8 个邻居,一条总线

        [N]
    [NW]   [NE]
[W]   [父节点]   [E]   ← 总线:共享信号
    [SW]   [SE]
        [S]

工作原理:

  1. 外部刺激到达「父节点」图块。
  2. 父节点检查条件:if (stimulus > threshold)
  3. 如果是 → 开启总线(bus_enabled = true)。
  4. 8 个邻居将它们的激活值 (0..15) 贡献到共享总线。
  5. 总信号由下一个级联处理。

这不是路由。这是一个管弦乐队。 指挥(父节点)不为音乐家演奏。他设定节拍。

代码中

// 任何图块都可以是"父节点" — 只是一个角色标志
typedef struct {
    uint8_t activation;      // 0..15 (Level16)
    uint8_t neighbors[8];    // 邻居索引:N,NE,E,SE,S,SW,W,NW
    bool is_gate;            // 角色:此图块控制总线?
} Tile;

// 总线 — 共享资源
typedef struct {
    uint16_t signal;         // 来自邻居的总信号

关键点:

  • 「父节点」不是一个独立的类型。它是一个任何图块都可以执行的角色。
  • 总线是共享资源,不是点对点的。
  • 控制(二元)与数据(分级)是分离的。

哲学上(没有神秘主义)

「权力不是成为特别的。权力是成为链中的第一个。」

原则 架构上 哲学上
角色 > 实体 任何图块都可以是「父节点」 领导力是一种功能,不是天性
访问 > 内容 父节点决定「何时」,邻居决定「什么」 言论自由 ≠ 总是说话的自由
局部性 > 全局性 8 个邻居,不是整个网络 影响力以波浪方式传播,不是跳跃

「父节点」不是神,而是链中的第一块多米诺骨牌。

为什么控制和数据的分离很重要

问题 如果混合 如果分离
追踪 「谁决定的?」— 不清楚 日志:「父节点在 15:32:01.020 开启总线」
调试 控制影响数据 控制和数据 — 独立的日志
验证 需要一起检查所有内容 可以单独检查访问和内容
安全性 数据故障 = 控制故障 数据故障 ≠ 访问控制故障
扩展 每个图块 = 自己的控制器 每个图块集群一个「父节点」

责任分离 = 系统弹性。

实际上

优势 如何在 B2B 中帮助
能源 总线在不需要时关闭 → 节省
安全性 「父节点」可以阻止「故障邻居」
追踪 访问日志 + 数据日志 = 完整画面
调试 可以测试控制而不涉及数据,反之亦然
ASIC 每个芯片一条总线 → 更少的金属层

现实世界类比

系统 「父节点」 「子节点」 总线
家庭 父母开始对话 孩子们说出他们的想法 家庭会议
管弦乐队 指挥设定节拍 音乐家演奏音符 大厅中的声音
网络 路由器开启通道 设备传输数据包 共享电缆
Decima-8 「父节点」图块开启总线 8 个邻居贡献激活值 共享信号

「父节点」不为他人代言,而是让他人能够发言。

进一步阅读