第79期 | 翻译太慢,硬件偷偷抄了小抄

操作系统 · · 九羲科技

上一期讲完 4GB 的幻觉,这一期讲幻觉的成本。页表把地址翻译出来了,可翻译本身也要花时间——每访存一次,先翻一遍表,这笔账谁来付?

一、每访存一次,先翻四次表

386 时代是两级页表,今天的 64 位机器是四级。一次访存如果老老实实查表,要先读四次内存,才能读到真正想读的数据,等于买一本书先跑四趟图书馆¹。硬件受不了这个,才在内存管理单元里藏了一块小缓存:翻译后备缓冲器,TLB。它存的不是数据,是翻译结果——“虚页 P 对应实页 F”。下次再访同一页,先查这本小抄,命中了直接翻译,不用再翻表;没命中,才去走那四级表,顺手把新结果抄进小抄。

小抄有个毛病:地方小。条数只有几十到上千条,程序的工作集一超过它覆盖的范围,就开始反复抄了又擦、擦了又抄。更早的 x86 还有个笨办法:切换进程时写 CR3 寄存器,就把整本小抄清掉——反正新进程的翻译全不一样。后来硬件给每条表项贴上地址空间编号,x86 叫 PCID,切换进程不必全清,各家的抄各家的,互不串味。

多核又添了一层麻烦。一个核改了页表,别的核的小抄里还留着旧翻译,旧翻译指向的可能是已经回收、甚至已经分给别人的物理页。内核只好发核间中断,让别的核把那条作废,这叫 TLB shootdown。改一张映射,可能要全机广播一遍——这就是平时看不见的代价:翻译不是免费的,作废也不是。大页是另一条出路:一张 2MB 大页的表项,一次盖住 512 张 4KB 小页,小抄的覆盖范围一下子扩了 512 倍,颠簸自然就少了。

二、记忆不用翻译,按意思捞

如果 AI 的操作系统先出现,记忆大概不会先有“地址”这个概念。智能体找东西的方式,是算意思、算相似度,而不是算编号。可是缓存的逻辑没变:热点要常驻,冷的要换出,改了要作废。PagedAttention 把操作系统的分页思想借去管大模型的 KV cache²:逻辑上连续的序列,物理上落在不连续的块里,块还能共享、写时复制——和第 5 章 fork 的写时复制是同一个笔法,换了个结字。MemGPT 更进一步,借鉴 OS 的内存分级:上下文窗口是主存,外部存储是磁盘,摘要换入换出就是换页³。

再推一格:未来的“TLB”缓存的,也许不再是虚页到实页,而是问题到答案片段。问过一遍的东西,下次直接从缓存里捞,不用重新推理一遍。但小抄的规矩也跟着来:模型更新了、知识换了,旧缓存就成了旧翻译——知识一改,哪些缓存要作废、作废要广播给多少个智能体,就是 AI 时代的 TLB shootdown。范式之眼也在这里:线性地址的翻译是基址加偏移,向量空间的“找”是算距离、算相似,偏移那套算术在这里失效了,缓存的命中逻辑却还活着。

三、亲手数一数,翻译的代价

手边任何一台 Linux 机器,先看硬件给没给小抄贴编号:

grep -m1 pcid /proc/cpuinfo

有输出,说明这台机器的 TLB 表项带 PCID,切换进程不用全清小抄;没输出,就是老办法,切换一次清一次。

机器上装了 perf 的话,再数一次翻译的漏抄:

perf stat -e dTLB-load-misses,dTLB-store-misses -- sleep 5

空闲几秒的数字不大。再跑一个随机跳着访问大数组的程序,数字会往上窜——工作集一超过小抄的覆盖范围,漏抄就开始成堆出现。把同一份数据改成顺序访问,数字又掉下来:小抄怕的不是数据大,是跳着走。

落到普遍场景,同一本小抄都能套。本地大模型服务上,KV cache 的块大小就是小抄的页大小,块分得太碎,翻译开销先吃掉一批算力;边缘小设备上,物理内存本来就小,工作集超过 TLB 覆盖范围的程序,颠簸起来比算得慢更伤;视频 AI 平台里,一路视频的推理缓冲也可以当成“页”来管,告警触发时才换入,平常不必全占着;企业私有智能中心里,一个智能体的上下文预算先按工作集算清,再往下排任务,缓存换页就不是提示词技巧,而是内存管理。

觉 然 小 注

小抄的本事不在抄得快,在正本改了立刻知道。抄错一页不可怕,可怕的是正本改了,小抄还当它是真的。

引 用 与 出 处

  1. [1] MIT 6.823. Lecture 5: Translation Lookaside Buffers. 2021. https://csg.csail.mit.edu/6.823S21/Lectures/L05handout.pdf
  2. [2] Kwon, W. et al. Efficient Memory Management for Large Language Model Serving with PagedAttention. SOSP, 2023. https://arxiv.org/abs/2309.06180
  3. [3] Packer, C. et al. MemGPT: Towards LLMs as Operating Systems. arXiv:2310.08560, 2023. https://arxiv.org/abs/2310.08560

· · ·

← 返回资讯中心