ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

内存墙如何逼出存算一体?AI芯片架构演进全解析

内存墙如何逼出存算一体?AI芯片架构演进全解析 算力堆得再高模型跑不起来这在AI芯片设计里几乎是家常便饭。你兴冲冲地把算力翻了一倍实测性能却只涨了百分之二三十甚至更低。很多人第一反应是优化不到位但深入排查后往往会发现真正的瓶颈根本不在计算单元而在数据搬运——也就是业内常说的“内存墙”。这几年存算一体架构被反复提及本质就是在尝试拆掉这堵墙。这篇文章想跟你聊清楚三件事内存墙到底是怎么形成的为什么AI计算让这个问题雪上加霜以及当前存算一体的主要技术路线有什么不同、各自适合什么场景。不管你是做芯片设计、算法优化还是单纯想搞明白AI硬件的发展逻辑这篇内容都能给你一个相对完整的参考框架。1. 搞懂内存墙为什么算得快反而成了负担1.1 一个很容易被忽略的数字游戏内存墙这个概念用一句话概括就是处理器的计算速度远远超过了存储器能供给数据的速度导致计算单元大量时间在“等数据”。这个速度差不是一星半点而是数量级上的鸿沟。我们拿实际数据说话。当前主流AI芯片的算力动辄几百TOPS也就是每秒可以执行数百亿亿次操作。但外部存储器的带宽呢即便是最新的HBM3E单颗芯片的带宽也就1TB/s左右换算成每秒传输的数据量跟算力需求之间存在明显的缺口。以一个大模型推理场景为例。假设一个7B参数的模型以INT8精度运行权重数据量大约是7GB。模型每生成一个token理论上要把这7GB的权重都读一遍。如果存储带宽是1TB/s那读取时间至少是7ms。但你看看当前LLM推理的目标延迟——通常要求几十毫秒内返回结果这就意味着单纯搬运权重就已经把时间预算吃掉了一大块留给实际计算的时间少得可怜。这就是内存墙最直观的体现。计算本身可能只需要几微秒但把数据从存储搬到计算单元却要花几毫秒。你用再先进的工艺、再高的主频都弥补不了这个搬运成本。1.2 内存墙不是AI时代才有的问题为什么AI把它放大了说实话内存墙在传统CPU时代就存在甚至可以说是一个老生常谈的问题。但AI计算让这个问题变得异常尖锐原因有三点。第一AI模型的数据量巨大。传统计算处理的数据通常在KB到MB级别而AI模型动辄几十GB甚至上百GB。数据规模越大搬运开销占比就越高。第二AI计算的“数据重用率”极低。CPU在运行循环、排序等任务时同一个数据会被反复使用多次可以通过缓存来摊薄搬运成本。但神经网络推理时权重数据基本上是一次性读取——每个权重被读取一次后就不再需要了。这种“流式访问”模式让缓存几乎起不到数据重用的作用。第三AI模型的参数量还在持续膨胀。从几年前的1B、7B到今天的70B、数百B模型规模的增长速度远超DRAM带宽的提升速度。计算密度在摩尔定律驱动下不断翻倍但内存带宽的增速却明显滞后于是每次架构迭代后内存墙反而越来越厚。这也是为什么近些年大家都在喊“内存墙是AI计算的头号瓶颈”而不是像以前那样把注意力都放在算力堆叠上。2. 冯·诺依曼这堵墙是怎么砌起来的2.1 “存储和计算分离”这个设计决策的代价要理解存算一体的意义得先回到计算机体系结构的原点。现代计算机几乎都是冯·诺依曼架构——程序和数据存储在同一个存储器里计算单元通过总线从这个存储器里取指令、取数据算完后再通过总线写回结果。这个架构的核心特征是“存储和计算分离”处理器只负责算存储器只负责存。两者之间靠总线通信。这个设计在半个多世纪前是革命性的因为它让程序可以像数据一样被存储和修改通用性极大增强。但代价也很明确所有数据交换都要经过那条有限带宽的总线。你可以把冯·诺依曼架构想象成一个中央厨房。厨师计算单元手艺再好每分钟能切十斤菜但传菜员总线一次只能端一盘从仓库存储器到案板的路上还要花时间。厨房的产出上限不是由厨师决定的而是由传菜员决定的。这就是“冯·诺依曼瓶颈”的由来。2.2 数据搬运才是真正的能耗大头内存墙不只是性能问题更是能耗问题。很多做芯片的朋友可能都有体会在先进工艺节点下一次32位浮点乘加的能耗大约是几个pJ但从DRAM里读取同等位数的数据能耗要高好几个数量级。业内经常引用的一组数据是一次FP32乘加运算约消耗4.6pJ而访问DRAM需要640pJ左右。打一个直观的比方做一次计算耗的电跟从内存里取一次数耗的电相比差了接近两个数量级。换句话说你用大量时间等待的数据搬运消耗的能量甚至比计算本身还要多。对AI芯片来说这意味着即便不考虑延迟单纯从能效角度出发减少数据搬运的收益也非常可观。这也是为什么数据中心在部署大规模AI集群时功耗预算往往成为比硬件成本更硬的约束。2.3 工艺层面的错位逻辑与存储的跷跷板还有一个常被忽略的因素是工艺错位。逻辑电路需要的是高频、高开关速度的晶体管而存储单元追求的是高密度、低漏电。这两种需求在工艺上是矛盾的。因此业界发展出了非常不同的工艺路线逻辑芯片用先进逻辑工艺比如5nm、3nm存储芯片用专门的DRAM工艺或NAND工艺。两者分开优化固然各有优势但也导致了一个结果计算单元和存储单元无法集成在同一颗芯片上只能通过封装或板级互联来通信。而互联带宽的提升速度永远追不上逻辑工艺的迭代速度。你可以理解为算力在沿着一个陡峭的斜坡向上爬而存储带宽只是在平原上慢跑两者的差距自然越拉越大。3. 存算一体的几种主流架构路线3.1 理解“存算一体”前先明确概念边界存算一体字面意思就是把“存储”和“计算”合二为一让数据在存储器内部完成计算从而避免数据搬移。这个概念其实在几十年前就有学术雏形包括早期提出的计算型内存处理器等但真正成为产业热点还是因为这波AI浪潮把内存墙问题推到了台前。需要明确的是存算一体并不是单指某一种具体技术而是一个方向性的架构理念。当前的主流实现路线大致可以分为三类数字近存计算、模拟存内计算、数字存内计算。三条路线在技术成熟度、性能表现和通用性上有明显差异。3.2 数字近存计算最务实的过渡方案数字近存计算的核心思路是不把计算单元塞进存储阵列内部而是把计算单元物理上挪到距离存储非常近的位置最大化数据搬运的效率。它是目前产业化进展最快、最务实的方案。典型的实现方式是采用3D堆叠和先进封装技术。比如把逻辑芯片包含计算单元和DRAM存储芯片垂直堆叠在一起层间用密集的硅通孔或混合键合进行连接。由于芯片间的连接密度远高于传统PCB走线存储带宽可以获得数量级上的提升。这不是一个“颠覆性”方案但它能在现有技术和产业链基础上快速获得收益。在实际产品中近存计算的实践其实已经不少。Grace Hopper超级芯片就是把GPU和HBM通过高带宽接口紧耦合让数据访问延迟和功耗都比传统方案有明显改善。对大多数团队来说近存计算是一个值得优先考虑的方向因为它不需要改变计算范式也不涉及模拟电路的复杂设计。3.3 模拟存内计算真正的“算在存储器里”模拟存内计算是把计算单元直接嵌入存储阵列。以最常见的SRAM或RRAM阻变存储器为例通过在存储单元上增加额外的计算路径让每次读操作都不只是“取数据”而是在读取过程中顺便完成一次乘累加运算。具体来说在模拟存内计算中权重被编程为存储单元的物理导通电导输入数据以模拟电压的形式加到字线上。根据基尔霍夫定律位线上的电流就是所有单元导通电导乘以电压的累加和——这恰好对应神经网络里的乘累加运算。换句话说一次读操作就能完成一整行的并行计算而且所有存储单元同时工作大规模并行度相当高。这个方案的诱惑在于功耗和时延优势非常明显数据不用搬出去计算在存储阵列内部就完成了单位运算的能耗可以比冯·诺依曼架构低一两个数量级。这也是为什么很多AI芯片初创公司对这个方向趋之若鹜。但模拟存内计算的问题也很突出。首先模拟计算的精度受限于存储单元的物理特性无法像数字电路那样精确、可重复地执行计算。其次ADC/DAC转换器把模拟信号转换成数字信号或反之的面积和功耗开销不容忽视它会侵蚀一部分能效优势。最后它对算法有特殊要求现有的神经网络需要经过量化重训练才能适配工程落地周期较长。3.4 数字存内计算兼顾精度与效率的折中数字存内计算走的是另一条路。它在存储阵列附近集成高精度的数字乘累加单元但尽量把计算粒度做小融入存储的外围电路逻辑中。每一项计算仍然是精确的数字运算不会因为存储单元物理特性而变化。可以把它理解为“把一个小型计算单元塞进内存条旁边让数据刚被读出就立刻被处理”。相比模拟存内计算数字方案保留了精度和可靠性对不同算法结构的适配性也更好相比近存计算它又把计算单元推到了更靠近存储的位置数据搬运路径更短。当然数字存内计算也有自身的局限。由于数字乘法器的面积远大于模拟脉冲计算单元难以做到像模拟方案那样高密度的阵列集成。它在单元密度和能效极限上都不如模拟方案的理论值所以更多被看成一种工程上的折中选择。4. 架构对比核心指标与选型参考4.1 一张表看懂三种路线的差异我把三种主流路线的关键差异整理成一个对比表方便你根据自己的应用场景来判断该关注哪个方向。维度数字近存计算模拟存内计算数字存内计算计算位置靠近存储器Die堆叠/3D封装存储阵列内部模拟域存储阵列外围数字域典型存储介质DRAM/HBMSRAM/RRAM等SRAM/MRAM等精度高全数字无损失低至中受ADC/单元噪声影响高全数字精确计算能效理论值中高极高理论最优高低于模拟方案灵活性/通用性高支持各类算子低需定制算子映射中对算子适配性较好成熟度高已有量产产品中以专用硬件/原型为主中部分产品落地主要挑战封装成本、热管理精度、量产良率面积开销、密度上限适用场景云端训练/推理、通用AI加速边缘低功耗推理、特定算法高精度边缘推理、端侧设备4.2 为什么说“通用性”是存算一体最大的命门从对比表可以看出来模拟存内计算在能效上的理论优势非常诱人但“通用性”这个问题其实是它落地最大的拦路虎。神经网络模型千差万别。卷积、全连接、Transformer的注意力机制、动态分支结构……每一种算子对数据访问模式的要求都不一样。存算一体芯片要做到对各种算子都有良好支持需要在映射、调度、编译器层面做大量工作。尤其是模拟存内计算权重一旦以物理导电形式存储计算精度就受限于单元一致性模型稍微动态一点或者精度要求高一点就很容易出现量化误差累积。我在和一些做芯片的朋友交流时大家有个共识目前看模拟存内计算更适配那些计算模式固定的场景比如固定结构的CNN推理、端侧语音唤醒。一旦面对大模型这种结构复杂、动态性强的工作负载模拟方案的灵活性短板就会被放大。4.3 精度问题的硬约束从算法侧找办法既然精度是模拟存内计算的硬伤算法层面的配合就特别重要。如果你决定走模拟存内计算路线那大概率需要配合以下算法优化手段。一是量化感知训练。让模型在训练时就去模拟存算硬件上的量化误差包括权重导通的非线性、ADC量化噪声等。这样模型可以在精度下降可控的前提下适应硬件的非理想特性。二是误差补偿。在关键层上保留少量高精度数字计算路径比如Softmax、LayerNorm这类非线性和归一化操作不放进存内计算阵列里而是交给外部的精确逻辑单元处理。三是算法架构协同设计。比如设计对精度不敏感的网络结构避免极端权值分布或者在网络头部和尾部各保留一层数字浮点计算作为“缓冲层”吸收输入端和输出端的误差。这些措施能在一定程度上缓解精度问题但也会引入额外开销所以在项目规划时需要评估清楚性价比。5. 工程落地从论文到芯片需要跨过的坎5.1 外围电路设计往往决定成败很多人看存算一体的论文都被存储阵列的巧妙设计吸引但真正到了流片环节外围电路的设计工作量和风险远高于阵列本身。以模拟存内计算为例每个存储阵列的输出都需要经过采样保持电路、模数转换器才能把模拟计算结果变成数字量供后续处理。而ADC的设计难度、面积和功耗都相当可观。阵列密度越高需要的ADC通道就越多外围电路的开销就越大。很多团队做完仿真时能效数据很好看真正流片后实测数据大打折扣关键原因就是把ADC、数字控制逻辑、片上网络这些“周边配套”给低估了。我在评估技术方案时有个习惯不只盯着核心计算单元的能效指标还要要求团队把完整芯片的功耗估算出来包括接口、时钟、控制逻辑、片上存储等所有模块。否则很容易被单点的“纸面优势”误导。5.2 编译器与算子库的适配成本存算一体芯片的硬件设计只是第一步真正决定能不能用起来的是软件工具链。一个残酷的现实是如果编译器不成熟这颗芯片在用户手里就是一块昂贵的砖头。你需要完成的适配工作至少包括把现有的深度学习算子映射到存算阵列的计算模式上设计合适的数据布局和调度策略避免存储体冲突针对精度损失自动插入量化感知算子或误差补偿逻辑以及在多核场景下做负载均衡。很多时候这些工作的启动成本远远超过预期。我见过不止一个团队硬件研发周期十八个月软件工具链却折腾了两年还没完全稳定。所以如果要做存算一体一定要在项目启动时就把软件团队和硬件团队绑在一起规划而不是等芯片流片后再开始写编译器。5.3 可靠性、量产与测试的现实问题最后聊聊量产环节。存算一体芯片比常规芯片多了一层“计算依赖存储物理特性”的耦合这让测试和筛选变得复杂得多。传统存储芯片只需要做良率检测——通过读写校验确认存储单元好坏即可。但存算一体芯片还要进一步验证“计算结果的精度是否在可接受范围内”。如果某个存储单元的实际电导值偏了它在传统存储中可能只是“慢一点”或“弱一点”但在计算场景中这个偏差会直接变成计算结果的误差。这意味着你需要重新设计测试算法和失效标准而不是沿用传统的bit-error-rate误码率指标。同时由于模拟存内计算对温度、电压波动敏感量产阶段还要额外考虑不同条件下的性能漂移问题。这些都会直接推高成本。6. 内存墙的其他突破口不只有存算一体6.1 更宽的带宽与更近的存储HBM、LPDDR与片上SRAM在考虑存算一体之前其实还有一批相对成熟的手段值得先做。最典型的就是高带宽存储HBM和低功耗内存LPDDR方案的持续升级。HBM通过多层DRAM堆叠和硅通孔技术把存储带宽从几十GB/s提升到了TB/s级别。虽然相比存算一体的理论目标仍有差距但胜在技术成熟、兼容现有计算架构不需要对软件栈做大手术。这也是当前各大AI加速芯片的主流选择。另外把大容量SRAM直接放到芯片内部也是一个非常有效的手段。SRAM的速度远高于DRAM虽然容量有限但如果能把常用权重切片放到片上缓存中实际命中率可以显著降低对外部DRAM带宽的需求。很多AI推理芯片用“大容量SRAM高带宽DRAM”的分层存储策略正是这个思路。6.2 稀疏化与低精度算法对内存压力的反向抑制内存墙的根源是数据量大但如果能把数据量本身降下来问题也能缓解。这就是稀疏化和低精度技术的价值。模型剪枝可以把大量接近零的权重删掉量化则把权重从FP16降到INT8甚至INT4。两者的共同效果是“算得更少、搬得更少”。尤其是在推理场景剪枝量化的组合已经能在精度损失很小的情况下把模型体积压缩数倍相当于在不改变硬件的前提下变相增加了有效带宽。这类算法手段和存算一体架构并不冲突反而可以叠加使用。存算一体解决了“搬不动”的问题稀疏化则解决了“不愿搬”的问题。两条腿走路效果远好于押注单一方案。6.3 硅光互连与先进封装更远期的路径再往远看硅光互连和先进封装技术也值得关注。光互连用光信号替代电信号理论上可以大幅提升带宽密度、降低功耗同时还能减小长距离传输的损耗。目前这个方向在学术圈讨论比较多部分产业化尝鲜已经在数据中心场景出现但要应用到AI芯片内部还有很长一段路要走。先进封装则在另一个维度提供帮助。混合键合技术和无凸点互联可以把多个芯片的互连密度提升一个数量级从而实现更近距离、更宽通道的数据交换。可以说先进封装是近存计算的技术底牌未来也有望和存算一体深度结合。7. 常见误区与工程实践心得7.1 三个容易踩的概念坑聊了这么多最后想聊聊几个常见的理解误区帮助你在技术选型和交流中少走弯路。第一个误区是把“存算一体”和“近存计算”混为一谈。虽然两者目标一致都是为了减少数据搬运但技术路线和实施难度差异很大。近存计算还保留着冯·诺依曼的基本模型只是把物理距离拉近真正的存算一体则在计算范式上做了改变。对外交流时把两者区分清楚可以让方案讨论更聚焦。第二个误区是过度迷信模拟存内计算的能效数字。真要评估一个方案能不能落地不要只看线搜索论文中“全球最低功耗”之类的标题而是要看完整系统的实测数据包括接口功耗、测试损耗和量产良率。第三个误区是低估软件适配的工作量。算力再强的芯片如果编译器不好用、生态不完善用户根本不会买单。很多存算一体项目最后折戟沉沙不是死在硬件而是死在软件生态上。7.2 我给团队的建议别为了“存算一体”而存算一体最后一条经验是我在参与多个芯片相关项目后最想说的技术路线只是手段不是目的。存算一体也好近存计算也好核心目标都是解决数据搬运的瓶颈问题。如果你的应用场景访存压力没那么大或者通过稀疏化、低精度就能获得可观收益那完全没必要为了“蹭热点”而上存算一体。做架构选型时我建议先量化分析目标负载的访存特征。算一算模型的权重总量、单次推理的访存总量、当前平台的带宽瓶颈究竟在哪个层级。如果数据确实是在DRAM带宽就被卡死了优先考虑近存计算。如果进一步追求极限能效再评估存算一体各条路线的可行性和成本。这就像装修房子先搞清楚水电管线怎么走再决定要不要敲墙重砌而不是看着别人的效果图直接动工。架构没有绝对的优劣只有适合与不适合。我个人在实际项目中的体会是真正难的不是选择哪条技术路线而是在选定方向后扎扎实实把工程问题逐个吃掉。存算一体概念火热但能真正把量产良率、软件工具链、可靠性都打磨成熟的团队少之又少。如果你准备入局请一定做好长期攻坚的心理准备也留出足够的工程冗余周期。技术方向正确很重要但能跑通最后一公里更重要。
返回列表