父节点与总线:控制 vs 数据
「父节点不是一个实体。父节点是一个角色。只是一个开启总线的输入图块。」
在 Decima 中,有两个层级永远不会混合:
- 访问控制 — 二元的(开启/关闭)
- 数据 — 分级的(Level16,0..15)
「父节点」不是形而上学。 它只是一个方便的名称,用于控制对共享总线访问的输入图块。
本质
| 组件 | 实际是什么 | 功能 |
|---|---|---|
| 父节点 | 带有 BUS_R 标志的输入图块 | 开启/关闭对总线的访问 (0/1) |
| 子节点 | 8 个相邻图块(Moore 邻域) | 向总线贡献激活值 (0..15) |
| 总线 | 共享信号累加器 | 累加活动图块的贡献 |
父节点并不「更聪明」或「更高级」。 他只是链中的第一个。接收外部刺激并决定「该工作了」的那个。
拓扑:8 个邻居,一条总线
[N]
[NW] [NE]
[W] [父节点] [E] ← 总线:共享信号
[SW] [SE]
[S]
工作原理:
- 外部刺激到达「父节点」图块。
- 父节点检查条件:
if (stimulus > threshold)。 - 如果是 → 开启总线(
bus_enabled = true)。 - 8 个邻居将它们的激活值 (0..15) 贡献到共享总线。
- 总信号由下一个级联处理。
这不是路由。这是一个管弦乐队。 指挥(父节点)不为音乐家演奏。他设定节拍。
代码中
// 任何图块都可以是"父节点" — 只是一个角色标志
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 个邻居贡献激活值 | 共享信号 |
「父节点」不为他人代言,而是让他人能够发言。