第2章:存算一体技术基础

大家好,我是你们的老朋友。今天咱们聊聊存算一体的技术基础。说实话,这个领域我摸爬滚打了好几年,踩过的坑比走过的路还多。但正是这些经历,让我对存算一体有了更深的理解。

2.1 冯·诺依曼瓶颈:那个绕不开的坎

先说说冯·诺依曼架构。这个架构从1945年提出到现在,统治了计算机世界将近80年。它的核心思想很简单:存储单元和计算单元分离。指令和数据存在存储器里,CPU从存储器取指令、取数据,算完再存回去。

听起来很合理对吧?但问题就出在这个「取」和「存」上。

我当年做AI加速器时,遇到过这样一个场景:一个卷积神经网络模型,计算量其实不大,但数据量特别大。每次计算都要从DDR里搬数据,搬来搬去,大部分时间都花在数据搬运上了。芯片跑起来,计算单元闲着,总线却忙得要死。这就是典型的冯·诺依曼瓶颈——也叫「存储墙」或「功耗墙」。

核心矛盾:处理器性能每年提升约60%,但内存带宽每年只提升约10%。差距越拉越大。

为什么会这样?说白了,就是计算和存储之间的数据通路太窄了。你想想看,一个AI模型可能有几亿个参数,每次计算都要把这些参数从内存搬到计算单元。搬一次,算一次,再搬一次...这中间的能量消耗和时间开销,远远超过计算本身。

我记得有个数据:在传统架构下,一次32位浮点乘法消耗约3.7pJ,但从DDR读取同样数据要消耗约640pJ。差了将近200倍!这还不算时间上的浪费。

避坑指南:我曾经在设计一款边缘AI芯片时,过于关注计算单元的利用率,忽略了数据搬运的开销。结果流片回来,实测性能只有理论峰值的30%。后来加了数据预取和缓存优化,才勉强提到60%。但始终无法突破存储墙的限制。

2.2 存算一体核心思想:让计算靠近数据

既然瓶颈出在数据搬运上,那解决方案就很直接了:让计算靠近数据,甚至让计算发生在数据所在的位置。这就是存算一体的核心思想。

用大白话说就是:别让数据跑远路,直接在它家门口把活干了。

这个思想其实不新鲜。人脑就是最好的例子——神经元既是存储单元也是计算单元。每个神经元存储着连接权重,同时完成加权求和和非线性激活。没有明显的「存储」和「计算」之分。

存算一体的优势很明显:

  • 消除数据搬运:计算直接在存储阵列内完成,省去了总线传输的时间和能耗
  • 高并行度:存储阵列天然是二维结构,可以同时处理大量数据
  • 低功耗:省去了大量数据搬移的能耗,特别适合边缘端和物联网场景

但这里有个坑:存算一体不是万能的。它特别适合数据密集型、计算模式固定的任务,比如矩阵乘法、卷积运算。但对于控制流复杂、数据依赖强的任务,传统架构反而更合适。

注意:存算一体芯片的设计复杂度远高于传统架构。存储单元和计算单元的工艺要求不同,如何在同一颗芯片上实现两者的高效融合,是个巨大的挑战。

2.3 存算一体分类:近存计算 vs 存内计算

存算一体并不是一个单一的技术,它包含多种实现方式。我个人习惯把它分为两大类:近存计算和存内计算。

下面这张图可以帮你快速理解两者的区别:

存算一体技术分类 传统冯·诺依曼 存储与计算分离 存算一体 计算靠近/融入存储 近存计算 (Near-Memory) 计算单元靠近存储阵列 存内计算 (In-Memory) 计算直接在存储单元内完成 HBM-PIM PIM架构 RRAM/ReRAM SRAM存内计算

2.3.1 近存计算(Near-Memory Computing)

近存计算,顾名思义,就是把计算单元搬到存储器的旁边。它没有完全打破冯·诺依曼架构,但大大缩短了数据通路。

典型的例子是HBM-PIM(高带宽存储器-处理单元集成)。我在三星做项目时接触过这个技术——在HBM的每个bank旁边放一个简单的处理单元,数据不用出HBM就能完成一部分计算。这样带宽利用率提升了,功耗也降下来了。

近存计算的特点:

  • 实现难度相对较低:计算单元和存储单元可以分开设计,用先进封装集成
  • 带宽提升明显:数据通路从芯片级缩短到封装级
  • 灵活性较好:计算单元可以设计成通用处理器或专用加速器

个人经验:我建议在做近存计算设计时,重点关注数据映射问题。数据怎么分配到不同的bank,直接决定了计算效率。我曾经因为数据分配不合理,导致某个bank的计算单元忙死,其他bank闲死,整体性能还不如传统架构。

2.3.2 存内计算(In-Memory Computing)

存内计算就更激进了——计算直接在存储单元内部完成。它彻底打破了存储和计算的界限。

最典型的实现是基于电阻式随机存取存储器(RRAM/ReRAM)的存内计算。每个存储单元不仅存数据,还能参与计算。比如,利用基尔霍夫电流定律,在存储阵列上直接完成矩阵向量乘法。

我参与过一个基于SRAM的存内计算项目。我们在6T SRAM单元上做了改动,让它能同时完成存储和乘法运算。说实话,那段时间天天和模拟电路打交道,头都大了。但最终效果确实惊艳——同样的任务,功耗只有传统架构的十分之一。

存内计算的特点:

  • 极致能效:消除了所有数据搬运,能效比传统架构高1-2个数量级
  • 高并行度:整个存储阵列可以同时参与计算
  • 实现难度大:存储单元要同时满足存储和计算的要求,工艺和设计都很复杂

注意:存内计算目前最大的问题是精度和可靠性。模拟计算容易受工艺偏差和噪声影响,导致计算结果有误差。我见过一个项目,因为存储单元的电阻值漂移,导致推理精度从98%掉到85%。后来加了校准电路才解决。

2.4 两种路线的对比

说了这么多,咱们用表格总结一下:

对比维度 近存计算 存内计算
数据通路 缩短,但仍有物理分离 完全消除
实现难度 中等(先进封装即可) 高(需要定制存储单元)
能效提升 2-5倍 10-100倍
灵活性 较高(可编程) 较低(固定计算模式)
成熟度 已有商用产品(如HBM-PIM) 实验室/小批量阶段
典型应用 数据中心、高性能计算 边缘AI、物联网

嗯,这里要注意:两种路线不是互斥的。在实际系统中,可以混合使用。比如,用近存计算处理控制流和数据预处理,用存内计算处理核心的矩阵运算。

我个人更看好存内计算的长期前景。虽然现在还有很多技术难题,但它的能效优势太诱人了。尤其是在边缘端和物联网场景,功耗是硬约束,存内计算几乎是唯一的选择。

好了,这一章的内容就到这里。存算一体的基础概念和分类,咱们算是讲清楚了。下一章我会深入具体的实现技术,包括基于SRAM和RRAM的存内计算电路设计。到时候见!


想要更多资料,联系可可