本节摘要:存算一体不是普适真理。本节给出一个 roofline 式的对账公式,把"就地算"与"搬出去算"的能耗、延迟、精度三条账算清楚,并用三类任务演示判定过程——读完你会得到一个反直觉结论:多数通用任务仍应搬出去算。
设任务需要处理的数据量为 D(住在忆阻阵列里),计算量为 C(等效操作数)。两条路径的成本结构完全不同:
路径 A:就地算(存算一体) 成本 = 读出与后处理 × C 的深度 + 写回(若更新权重) 特点:与搬运无关,但计算深度受模拟链路精度与串行度约束 延迟 ≈ 深度 × 单次 MVM 时间(百纳秒级/层) 路径 B:搬出去算(读出 → CPU/GPU → 写回) 成本 = D × 读出单价(含 ADC、接口) + C × 数字算力单价 + D' × 写回单价 特点:计算便宜且精确,但 D 与 D' 每个比特都要过路费 延迟 ≈ 读出 + 传输 + 排队 + 计算 + 写回(微秒到毫秒级)
对账公式一句话:就地算买的是"免搬运",付的是"深度受限";搬出去买的是"算力与精度",付的是"过路费"。D 大 C 小(数据重、计算轻)偏向就地,C 大精度敏感(计算重)偏向搬出。
任务一:语音关键词唤醒。 D:一段 100 ms 特征帧(约 0.2 MB 权重固定的小网络);C:每秒数百次滑窗推理,等效约 50 M ops/s;精度:INT8 够用。判定:数据常驻、计算轻、精度宽容——三项全中,就地算完胜。实测这类场景存算芯片把功耗从毫瓦级做到百微瓦级,这正是第 5 章结论的应用主舞台。
任务二:数据库聚合查询。 D:GB 级驻存数据;C:每字节约 1~2 次简单比较/加法;精度:整数精确。判定:数据极重、计算极轻——纸面上最该就地算的任务。但注意计算模式是"扫描+谓词判决",用 MAJ/IMPLY 表达要几十级深度(6.2 节的深度预算爆表);现实解法是"近存粗过滤(就地做浅层比较)+ 精算搬出",混合判定。
任务三:大模型推理的自注意力。 D:模型权重 GB 级(可常驻);C:每 token 数 GFLOPs;精度:FP16/INT8、层间全精度传递。判定:权重虽常驻,但 KV 缓存(激活历史)频繁读写且规模动态,模拟链路的 4~6 bit 精度不够层间传递——搬出去,除非接受量化到 INT4 的专用变体。这也解释了为什么 2020 年代中期的存算芯片全部聚集在"小模型+边缘"生态位。
| 任务 | D vs C | 精度需求 | 深度需求 | 判定 |
|---|---|---|---|---|
| 关键词唤醒 | 数据重计算轻 | 宽容 | 浅(<10 层小网) | 就地 |
| 数据库谓词过滤 | 数据极重 | 精确但可粗过滤 | 中(就地浅层+远端精算) | 混合 |
| 大模型自注意力 | 权重重但激活动态 | 苛刻 | 深 | 搬出 |
对账不必二选一。近存计算(Near-Memory Computing)在忆阻阵列的控制器里放一个小型数字核(RISC-V 或固定功能加速器),浅层判决就地做、深度计算在片内数字域做、只有真正的重计算才出片——三段式把过路费压缩到最重的那段数据。3D 堆叠工艺(4.3 节)让"逻辑层在下、忆阻层在上"的异构集成成为可能,这条路径的产业势头正盛。它是冯诺依曼与存算一体的中间形态,也是当前绝大多数"存算芯片"的实际架构。
# 路径选择速算器:输入任务画像,输出建议路径(教学演示) def choose_path(D_bits, C_ops, depth_levels, precision_bits, adc_cost_pj=5): read_cost = D_bits * 0.05 # 读出过路费 pJ/bit(含 ADC 分摊) local_cost = C_ops * adc_cost_pj * (precision_bits / 8) # 就地算链路成本 remote_cost = read_cost + C_ops * 1.0 # 搬出 = 过路费 + 数字计算(1 pJ/op) if depth_levels > 5: return "混合/近存:深度超限,浅层就地 + 深层近存" return "就地存算" if local_cost < remote_cost else "搬出计算" # 例:choose_path(1e6, 1e5, 3, 8) -> 就地存算(唤醒类) # 例:choose_path(1e9, 1e9, 30, 16) -> 混合/近存(注意力类)
对账时最容易漏的是精度传递成本。模拟链路每层引入误差(器件噪声、ADC 量化、IR 压降),多层网络误差按深度累积,层间传递要求的精度随深度上升——一个 50 层网络在第 30 层附近就需要 12 bit 以上的中间精度,模拟链路给不起。工程现实是"前几层就近算、后面搬出去"或"每层后立即数字化"。这笔账让"存算一体跑深度网络"的承诺打了结构性折扣,也解释了第 5 章反复出现的"浅层小网才是甜区"。对账公式里把它折成 adc_cost × depth 一项,判断就不会过度乐观。
⚠️ 常见坑:用峰值能效做路径决策。存算链路在阵列满载时才达到峰值,实际任务的数据稀疏度、批次大小都拉低利用率;对账应按利用率 30%~50% 折算,否则会把本该搬出去的任务误判为就地。
💡 关键直觉:冯诺依曼架构活了一个世纪,因为它把"计算"做成了可复用的通用资源;存算一体赢的场景,本质是"数据不值得动"。每一次范式之争的判决书都由任务的 D/C 比值书写,而不是由信仰书写。
用对账公式做判断时,要意识到公式里的两个单价都是时间的函数。数字算力的单价沿摩尔与封装路线持续下降,读出链路(ADC、接口)的单价靠电路创新下降但斜率更缓——两者的剪刀差决定了"搬出去"的边界每年都在向外推。今天判"搬出"的任务,三年后可能落入"混合"区;今天判"就地"的任务则比较稳定(因为它靠的是免搬运的结构性优势,不靠单价对比)。因此对账结论的使用姿势是:就地结论可长持,搬出结论要设提醒按年复审。这是把工程判断做成可持续流程的小技巧,也是 roofline 思维在任何领域通用的原因——它不仅给答案,还告诉你答案的保质期。