存深之墙
你以为cache够大就没有延迟问题。但DRAM访问延迟~100ns是电容充放电的物理极限,prefetch和一致性也救不了所有场景。内存墙不是bug,是物质的决定。
墙影降临
存深域的入口是一道峡谷。峡谷尽头矗立着一面墙——不是石墙,是无数细密裂缝拼成的暗影,像被速度差撕裂的断面。
墙上有声音,像很多数据包在排队,又像一个声音在数数。
「1980年到现在,CPU的速度翻了三万倍。DRAM的延迟呢?降了不到十倍。」
「打个赌吧。你说——cache够大,这面墙就不存在了?」
内存墙预测挑战器
先下注,再拖时间游标看CPU/DRAM双曲线,最后点亮五级延迟
CPU频率 vs DRAM延迟 · 1980-2024
延迟沙漏 · 五级存储层次
镜像殿 · 副本之裂
石径尽头是一座镜像殿。殿中立着四面铜镜,每面镜子里映着同一行数据:A = 0。
「四个核心,各有一份cache副本。你让它们各读各的,看起来天下太平。」
「四份一样的副本,怎么可能不一致?你试试。」
缓存副本撕裂探索器
全读A → 各核写A=1 → 看其余镜面纹丝不动 → 触发stale read与lost update
时间轴 · 数据撕裂
窃听巷 · 监听之耳
镜像殿的后巷狭窄,头顶悬着一根铜线——总线。总线嗡嗡振动,像一条公共的神经。
「每次有核心读写内存,信号都会经过这根线。每个cache都能偷听——这叫监听。」
「偷听?你以为偷听就能一致?搭线吧。」
监听协议推导 · snoopy 基本原理
搭四根监听线 → 填两组监听规则 → 看撕裂愈合
四相阵 · MESI推演
巷子尽头是一座四相阵台。台上四个方位各亮着一盏空灯,灯下无字——等你来填。
「一致性的答案,不在书上,在你手上。你来推:一条cache行,到底有几种状态?」
MESI四相阵状态机推演器
推导M/E/S/I四状态 → 连八条转换线 → 看S→M广播代价
状态转换图 · 拖线连接
S→M 广播代价
扩展阁 · 五相之争与原子之锁
扩展阁里,你S3的四相阵被原样搬来。但阵台旁多了一张空台,上有一盏未点亮的第五灯。
「S→M要广播invalidate,等所有人确认。还有一个问题——两个核心同时执行A++,你觉得结果是什么?」
「A++不是一条指令。它是读A、加一、写A——三步。两核同时做,丢一次更新,不是理所当然吗?」
协议扩展与原子操作 · 叙事推演
点亮第五灯F/O → 看原子RMW丢失更新 → 选锁方案
原子 RMW · A++ 三步演示
广播狱 · 扩展性死壁
扩展阁的穹顶裂开,露出一排核心插槽——4、8、16、32、64。
「MESI?监听?加核啊。加到64。你觉得总线还撑得住?」
「推吧。自己看。」
广播目录扩展性曲线追踪器
推核心数4→64 → 看总线饱和崩塌 → 切目录协议看曲线恢复
时序殿 · 一致性的锚与隙
时序殿没有铜镜,只有一张巨大的时间轴横亘殿中。轴上排列着两个核心的读写操作,像两条并行的河。
「一致了——同一个地址,所有核心看到的值相同。但顺序呢?Core 0先写A=1再写B=1,Core 1先读B再读A——你保证B=1时A也一定=1吗?」
「一致性和一致性序,差一个字,差一道天堑。」
存储一致性模型 · SC与弱序
选一致性模型 → 看操作交错是否合法 → 看性能差异
交错阵 · 带宽之舞与优化之术
交错阵台上排列着八块内存bank,像八条平行的河道。
「一次访存只走一条bank,其余七条闲着。你把连续地址分散到不同bank——让它们并行流。这叫交错。」
「带宽翻倍?你试试。但——你能预取的,只有你能预测的。」
交错·预取·编译器优化 · 三把刀
切交错模式看带宽 → 切访问模式看预取污染 → 行/列优先看miss率
预取准确率
编译器优化 · 行/列优先
存域回廊 · NUMA与持久之层
回廊两侧是两面巨大的全景图。左图:四个NUMA节点,每个节点有自己的本地内存和四个核心。右图:存储层次金字塔——顶端CPU寄存器,向下L1/L2/L3 cache,再向下DRAM,最底层SSD。
「左边:你的核心访问本地内存~80ns,访问隔壁节点的内存~150-300ns——这叫NUMA。右边:DRAM和SSD之间,多了一层——非易失性内存。」
NUMA延迟地图 · PM新层
点NUMA节点看local/remote延迟 → 拖入PM层看新维度
Boss 战 · 内存墙之影
回廊灯火齐灭。暗影从四面八方压过来,凝成一面巨大的、布满裂缝的墙。
「我是内存墙之影。我不住在你的无知里——无知救不了我。我住在你'以为优化能消灭物理极限'的地方。你每以为加一层cache、开一个预取就能填平我,我就厚了一寸。三问。答错一题,墙就厚一分。」
渊账累计 0 笔 · 三问全对后清零
尾声 · 破墙之光
墙影凝固成DRAM单元结构后,峡谷透进一缕金光。你手里的延迟沙漏还在——CPU侧金沙飞落,DRAM侧沙粒迟滞。差距仍在,但你不害怕了。
「你入门了。不是因为你答对了三问——答对的会忘。是因为你摔过的每一道裂痕,都刻在你手上了。但——这些核心,到底怎么连在一起?总线?互连网络?片上网络?你说说,64个核心要怎么通信才不堵?」
知识图谱点亮 · 存储墙权衡
点亮全章15块碎片 → 看存储层次延迟谱全景