Skip to content

交互实验室 ​

每个演示只改变一个机制的关键变量。先预测结果,再操作,最后用课程中的不变量解释结果。它们是浏览器内的教学模型,运行在你的设备上。

01 · 把虚拟地址拆开

按普通 4 KiB 页拆分:三个索引各占 9 位,页内偏移占 12 位。输入采用 xv6 低地址范围 0 ≤ VA < 2^38,观察跨页时哪些字段变化。

VPN20
VPN1145
VPN0325
页内偏移1656

这是地址拆分演示。实际翻译还需读取 PTE 并检查权限;2 MiB 大页在更高层结束遍历,页内偏移为 21 位。TLB 可缓存翻译结果。

02 · 观察缓存命中与冲突

直接映射缓存:4 组,每组 1 行,每行 16 字节,总容量 64 字节。0 和 64 映射到同一组。

组 0空
组 1空
组 2空
组 3空
点击「下一次访问」,观察相同索引上的冲突。
已访问 0 次 · 命中 0 · 未命中 0

03 · 多数派决定能否选出 leader

节点 A 发起选举。点击其他节点,切换它与 A 是否连通;本轮所有连通节点都向日志足够新的 A 投票。

五节点集群需要至少 3 票。所有节点的日志同样新。

这是固定五成员、无并发候选者的选举模型。故障不会缩小多数派分母;真实 Raft 还检查任期、每任期一次投票与日志新旧,选举成功也不等于所有请求已经提交。

04 · 加更多核心,会快多少?

理想加速比 4.71×
相对单线程耗时 21.25%

Amdahl 模型假设工作量固定、可并行部分均匀分摊且没有通信与调度开销。实际加速比需要测量,甚至可能小于 1。

05 · 注意力能看见哪些 token?

我
12.2%
正在
33.1%
学习
54.7%
语言
0.0%
模型
0.0%

因果预测在位置 i 使用 0…i 的内容预测下一个 token。这里仅对固定分数做 mask 与 softmax,没有 Q/K/V 投影;温度用于展示权重变化,生成采样温度通常作用于词表 logits。

把观察带回源码 ​

演示建议做一次的观察回到哪门课
Sv39比较 0xfff、0x1000 与 0x200000操作系统的页表与大页
缓存对比 0,4,8,12 与 0,64,0,64CSAPP的局部性与组索引
Raft隔离 2 个节点,然后隔离 3 个节点分布式系统的多数派
Amdahl90% 可并行时把线程从 8 改成 64并行性能模型
注意力查询位置设为 0,然后关闭因果遮罩语言模型的因果预测

模型的具体边界 ​

Sv39 面板拆分普通 4KiB 页的地址字段,只接受 xv6 的低地址范围 0 ≤ VA < 2^38。完整 Sv39 还定义高位符号扩展地址;本面板不接受它们,也不读取页表。2MiB 大页的叶项出现在更高层,页内偏移会变成 21 位,因此面板显示的 VPN0 在该映射中属于页内偏移的一部分。

缓存面板以字节地址计算 offset = address % 16、set = floor(address/16) % 4、tag = floor(address/64)。它只有一个缓存层,不模拟写回、预取、共享一致性或访存耗时。第一次访问新块即使替换已有行,也仍可能属于强制未命中;反复访问映射到同一组的不同块,才清楚展示冲突导致的重复未命中。

选举面板把“与 A 连通”简化为“本轮给 A 一票”,包括 A 自己的一票。五个固定成员一直需要三票,失联不会改变分母。它不模拟其他候选者、日志落后或投票持久化;这些条件会在真实 Raft 中进一步限制谁能当选。

Amdahl 的百分比按单工作线程执行时间划分,假设问题规模固定、并行工作可完全均分且没有额外开销。可并行比例为 p<1 时,工作线程趋于无限的理想上限为 1/(1-p)。这不是实测性能预测,也不能用来解释随线程数一起扩大的问题规模。

因果注意力允许位置 i 看到 0…i,用于预测位置 i+1 的 token;看到当前位置本身不是泄漏。关闭遮罩在这种自回归训练任务中会暴露未来目标,而双向编码器可以有意使用无遮罩注意力。演示只计算固定分数的 softmax 权重,没有计算 Q/K/V 投影或加权后的输出向量。