第二章:主流存算一体架构对比分析

各位同学,今天我们来聊聊存算一体的几种主流架构。说实话,我刚入行那会儿,市面上还没这么多花哨的叫法。近存计算、存内计算、模拟存算一体、数字存算一体——这些名词听着挺唬人,但说白了,它们解决的都是同一个问题:数据搬运太费劲了。

我习惯把这个问题叫做「存储墙」。你想想看,传统架构里,处理器算得飞快,但数据要从内存里搬过来,路上就要花掉几十甚至上百个时钟周期。这就像你有个顶级大厨,但每次炒菜都要跑到隔壁菜市场去拿食材——再好的手艺也白搭。

2.1 近存计算:把厨房搬到菜市场旁边

近存计算,英文叫 Near-Memory Computing。它的思路很简单:把计算单元尽量靠近存储单元,缩短数据搬运的距离。

我在项目中遇到过一种典型的近存计算方案——HBM(高带宽内存)配合逻辑芯片。HBM 通过硅通孔(TSV)技术,把多个 DRAM 芯片堆叠在一起,底下再放一个逻辑层。这个逻辑层可以做一些简单的计算,比如数据过滤、聚合操作。

核心特点:

  • 计算单元和存储单元物理上靠近,但仍然是分离的
  • 数据路径缩短,带宽提升明显
  • 适合数据密集型但计算简单的任务

嗯,这里要注意:近存计算并没有真正打破「存储墙」,它只是把墙变薄了。数据还是要从存储单元搬到计算单元,只不过距离从几厘米缩短到了几毫米。

我的经验:如果你做的是推荐系统或者图计算这类应用,近存计算是个不错的起点。我曾经在一个电商推荐项目里,用近存计算方案把延迟从 5ms 降到了 1.2ms。代价是芯片面积大了 30%,但收益明显。

2.2 存内计算:直接在存储单元里算

存内计算(Processing-in-Memory, PIM)就更激进了。它把计算单元直接集成到存储阵列内部。数据不用搬出去,在存储单元里就能完成计算。

我记得三星和 SK 海力士都推出过 PIM 产品。比如三星的 HBM-PIM,在每个 DRAM bank 里都放了一个计算单元。这样矩阵乘法这类操作,数据根本不用出存储芯片。

避坑指南:我曾经在一个项目里尝试用 PIM 做稀疏矩阵运算,结果性能提升并不明显。为什么?因为 PIM 擅长的是规整的、密集的计算。稀疏矩阵里大量数据是零,计算单元经常空转。所以选型前一定要分析清楚你的数据特征。

存内计算的优势很明显:

  • 数据搬运几乎为零,能效比极高
  • 带宽不再是瓶颈
  • 适合大规模并行计算

但缺点也很突出:

  • 存储工艺和逻辑工艺不兼容,制造成本高
  • 计算能力有限,做不了太复杂的运算
  • 散热问题难解决——存储单元本来就不耐热

2.3 模拟存算一体:用物理规律做计算

模拟存算一体,这是我最感兴趣的方向。它利用的是物理定律本身来完成计算。比如用 Kirchhoff 电流定律做加法,用欧姆定律做乘法。

你想想看,在传统数字电路里,一个乘法器需要几十个晶体管。但在模拟域里,一个电阻和一个电流源就能完成乘法。这效率差距有多大?

典型的实现方式是 RRAM(阻变存储器)交叉阵列。每个交叉点就是一个存储单元,同时也是一个计算单元。输入电压经过电阻网络,输出电流就是乘加结果。

// 模拟存算一体的核心操作:向量矩阵乘法
// V_in: 输入电压向量(代表输入数据)
// G: 电导矩阵(代表权重)
// I_out: 输出电流向量(代表计算结果)

I_out[i] = Σ(V_in[j] * G[i][j])  // 物理上自动完成

这段代码其实不是真正执行的代码,它描述的是物理过程。你只要把电压加上去,电流自然就出来了——这就是模拟计算的魅力。

核心优势:

  • 计算能效比极高,可以达到 10 TOPS/W 以上
  • 天然支持矩阵运算,适合神经网络推理
  • 存储密度高,一个器件同时存和算

但说实话,模拟存算一体也有不少坑。我踩过最大的坑就是精度问题。模拟电路的噪声、温度漂移、器件非理想特性,都会影响计算精度。我曾经在一个项目里,8bit 精度的计算,实际跑出来只有 5-6bit 的有效精度。

我的建议:如果你的应用对精度要求不高(比如分类任务),模拟存算一体是绝佳选择。但如果你要做高精度科学计算,还是老老实实用数字方案吧。

2.4 数字存算一体:用数字电路实现存算融合

数字存算一体,说白了就是用数字逻辑来实现存算融合。它不像模拟方案那样依赖物理特性,而是用标准的数字电路设计方法。

常见的做法是在 SRAM 阵列里嵌入计算逻辑。比如每个 SRAM 单元旁边放一个加法器,这样读取数据的同时就能完成加法。或者用专用的数字处理单元(PE)紧挨着存储阵列摆放。

我记得在 Google 的 TPU 里,就用了类似的思想。它的 systolic array 本质上就是一种数字存算一体架构——数据在计算单元之间流动,同时完成存储和计算。

数字存算一体的特点:

  • 精度可控,支持从 1bit 到 32bit 的灵活配置
  • 设计流程成熟,可以用标准 EDA 工具
  • 兼容性好,容易集成到现有数字芯片中

但缺点也很明显:

  • 面积开销大——每个存储单元都要配计算逻辑
  • 能效比不如模拟方案
  • 存储密度会下降

2.5 四种架构对比总结

好了,四种架构都讲完了。我画了一张对比图,帮你快速理清思路:

存算一体架构对比分析 近存计算 Near-Memory Computing • 计算单元靠近存储单元 • 数据路径缩短,带宽提升 • 适合数据密集型简单任务 • 实现难度:★★☆☆☆ • 能效比:★★★☆☆ 存内计算 Processing-in-Memory • 计算单元集成在存储阵列内 • 数据搬运几乎为零 • 适合规整的并行计算 • 实现难度:★★★★☆ • 能效比:★★★★☆ 模拟存算一体 Analog Compute-in-Memory • 利用物理定律完成计算 • 能效比极高(10+ TOPS/W) • 精度受限(5-6bit有效) • 实现难度:★★★★★ • 能效比:★★★★★ 数字存算一体 Digital Compute-in-Memory • 数字逻辑实现存算融合 • 精度可控(1-32bit) • 设计流程成熟 • 实现难度:★★★☆☆ • 能效比:★★★★☆

从这张图你可以看到,四种架构各有千秋。我个人的选型经验是这样的:

架构类型 能效比 精度 实现难度 适合场景
近存计算 中等 高 低 数据密集型、简单计算
存内计算 较高 高 高 规整并行计算、矩阵运算
模拟存算一体 极高 低 极高 神经网络推理、低精度任务
数字存算一体 较高 可控 中等 通用场景、高精度需求

重要提醒:没有一种架构是万能的。我曾经见过一个团队,花了一年时间做模拟存算一体芯片,结果发现客户需要的是 16bit 精度。最后只能推倒重来。所以选架构之前,一定要先搞清楚你的应用需求——精度要求多少?能效比目标是多少?成本预算多少?

好了,四种主流架构就分析到这里。下一章我们会深入探讨存算一体在神经网络加速中的具体实现。记住我一句话:架构选型没有银弹,只有最适合你场景的方案。

可可精品资料库