第 6 环 · NPU.STORE 读回多列
同一个圆心:一台开机只有一个 AI 的手机。前几环把「权重、激活都 INT4 量化」走通了,但一直只读第 0 列结果。本环把接口契约里的最后一条指令 NPU.STORE 补上——完整输出,4 列都读回。
4×4 脉动阵列一次算出 4 列结果,只读 1 列等于浪费了 3/4 的算力。把 4 列都读回,推理结果才完整流出,这是「AI 调度一切」的数据出口。
给 min_bus.sv 的读译码扩展了 3 个地址:
0x00C → y_out[0](第 0 列,已有) 0x014 → y_out[1](第 1 列,新增) 0x018 → y_out[2](第 2 列,新增) 0x01C → y_out[3](第 3 列,新增)
boot.s 读回 4 列,求和验证。
之前只读第 0 列(=6),现在 4 列都读回、求和=24——证明 NPU 的完整输出能流出来了,不再是「算了 4 列只取 1 列」。
本环走完一整圈:目标 → 算力别浪费 → NPU.STORE 落地 → 4 列读回跑通 → 回到目标。至此,接口契约里的四条 NPU 指令(LOAD / MATMUL / QUANT / STORE)全部落地。
第 7 环:KV Cache 驻留——把大模型生成时反复读写的 KV 缓存尽量留在片上 SRAM,减少内存搬运,带宽优先再进一步。