第 7 环 · KV Cache 驻留
同一个圆心:一台开机只有一个 AI 的手机。AI 跟人对话,是一句一句往外吐字的。每吐一个新字,都要回头把前面所有字重新看一遍(注意力)。要是每次都重算,算力和内存带宽会被重复劳动吃光。本环给 AI 造一块「记忆」——KV Cache,驻留片上。
第 3 环已经确认「内存带宽优先于峰值算力」。KV Cache 驻留就是这条结论的进一步落地:把历史 K/V 留在片内,新 token 只追加一条、解码时直接读回,不必回内存重算。硬件要提供「追加式」接口——核只喊一声「追加这条 K/V」,写指针由硬件自己推进,核不必维护序列位置。
新增 rtl/kv_cache.sv:append 端口写入一条 K/V,kv_len 自增;同步读端口按槽位读回;满(full)时丢弃。挂进 min_bus.sv,映射 5 个寄存器:
0x020 → KVC_APPEND 写 1 追加一条,写指针自增(kv_len++) 0x024 → KVC_DATA 待追加的 K/V 载荷 0x028 → KVC_RD_ADDR 写槽位号 → 触发同步读回 0x02C → KVC_RD_DATA 读回最后读取的 K/V 载荷 0x030 → KVC_LEN 读当前上下文长度 kv_len(暴露给软件)
circle07/boot.s:预填充 4 个 token(载荷 1/2/3/4)依次追加,再逐个槽位读回校验。
如果历史没有驻留,读回就取不到值;现在读回 4 条载荷 1/2/3/4、求和=10,且 kv_len=4,屏幕 = (4<<8)|10 = 0x40A = 1034——证明 AI 的「记忆」真的在片上,随时可回看。
本环走完一整圈:目标 → AI 对话要「记得前面说过啥」 → 追加式 KV Cache 落地 → 追加/读回/校验跑通 → 回到目标。AI 的记忆从「每次重算」变成「片上驻留、按需回读」,这是让一台手机本地跑大模型的关键一步。
第 8 环:注意力 Q·KT——把驻留的 KV Cache 真正用起来,拿当前 token 的 Q 去和历史 K 算分(打分),让「记忆」变成实际的注意力计算。