第二章:主流存算一体架构对比分析
各位同学,今天我们来聊聊存算一体的几种主流架构。说实话,我刚入行那会儿,市面上还没这么多花哨的叫法。近存计算、存内计算、模拟存算一体、数字存算一体——这些名词听着挺唬人,但说白了,它们解决的都是同一个问题:数据搬运太费劲了。
我习惯把这个问题叫做「存储墙」。你想想看,传统架构里,处理器算得飞快,但数据要从内存里搬过来,路上就要花掉几十甚至上百个时钟周期。这就像你有个顶级大厨,但每次炒菜都要跑到隔壁菜市场去拿食材——再好的手艺也白搭。
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 四种架构对比总结
好了,四种架构都讲完了。我画了一张对比图,帮你快速理清思路:
从这张图你可以看到,四种架构各有千秋。我个人的选型经验是这样的:
| 架构类型 | 能效比 | 精度 | 实现难度 | 适合场景 |
|---|---|---|---|---|
| 近存计算 | 中等 | 高 | 低 | 数据密集型、简单计算 |
| 存内计算 | 较高 | 高 | 高 | 规整并行计算、矩阵运算 |
| 模拟存算一体 | 极高 | 低 | 极高 | 神经网络推理、低精度任务 |
| 数字存算一体 | 较高 | 可控 | 中等 | 通用场景、高精度需求 |
重要提醒:没有一种架构是万能的。我曾经见过一个团队,花了一年时间做模拟存算一体芯片,结果发现客户需要的是 16bit 精度。最后只能推倒重来。所以选架构之前,一定要先搞清楚你的应用需求——精度要求多少?能效比目标是多少?成本预算多少?
好了,四种主流架构就分析到这里。下一章我们会深入探讨存算一体在神经网络加速中的具体实现。记住我一句话:架构选型没有银弹,只有最适合你场景的方案。