1. 存算一体与算子融合概述

1.1 从冯·诺依曼瓶颈说起

做芯片的人,没人不知道冯·诺依曼架构。说实话,这个架构统治了计算机行业七十多年。但到了AI时代,它开始力不从心了。

为什么会这样?我简单解释一下。冯·诺依曼架构的核心特点是「存储」和「计算」分离。数据要反复在存储器和计算单元之间搬运。这在传统计算场景下问题不大,但到了深度学习时代,模型参数动辄上亿,数据搬运成了最大的瓶颈。

我在2018年做过一个边缘AI芯片项目。当时用传统架构跑一个轻量级CNN模型,算力利用率不到15%。什么意思?就是芯片85%的时间都在等数据,真正干活的时间只有一小部分。这就是典型的「冯·诺依曼瓶颈」——内存墙。

核心问题:数据搬运的能耗远高于计算本身。一次32位浮点乘法消耗约3.7pJ,但从DRAM读取同样数据需要640pJ——差了将近200倍。

你想想看,AI模型越来越大,数据搬运量呈指数增长。这条路,走不通了。

1.2 存算一体架构的演进

存算一体,说白了就是把存储和计算放在一起。让数据在存储单元内部完成计算,不需要搬来搬去。

这个思路其实不新。我记得早在上世纪90年代,就有学者提出过类似概念。但当时工艺不成熟,应用场景也不迫切。直到深度学习爆发,存算一体才真正走上舞台中央。

目前主流的存算一体技术路线有两条:

技术路线 原理 代表器件 成熟度
模拟存算一体 利用物理定律(如基尔霍夫定律)在存储阵列中直接完成矩阵运算 RRAM、PCM、MRAM 中等,已有原型芯片
数字存算一体 在存储单元附近集成数字计算逻辑,减少数据搬运距离 SRAM、eDRAM 较高,已有商用产品

我个人更看好模拟存算一体的长期潜力。为什么?因为它能真正实现「计算就在存储中」,延迟和能耗优势是数量级的。但挑战也大——精度、可靠性、工艺兼容性,都是硬骨头。

我的建议:如果你是刚入门,可以先从数字存算一体入手。它更容易理解,工具链也更成熟。等有了基础,再深入模拟路线。

1.3 算子融合的定义与核心价值

算子融合,就是把多个连续的计算操作合并成一个。听起来简单,但做起来门道很多。

举个例子。在神经网络中,经常出现这样的序列:卷积 → 批归一化 → 激活函数。传统做法是三步走:先算卷积,把结果写回内存;再读出来算批归一化,再写回去;最后读出来算激活函数。每一步都有数据搬运。

算子融合怎么做?把这三个操作合并成一个「融合算子」。数据从寄存器读出来,一口气算完三步,最后写回内存。数据搬运从三次变成一次。

我在一个实际项目中做过测试:对一个ResNet-50模型做算子融合优化,推理延迟降低了37%,内存带宽占用减少了52%。效果非常显著。

算子融合的核心价值:

  • 减少数据搬运次数,降低内存带宽压力
  • 减少中间结果的存储开销
  • 提高计算单元的利用率
  • 降低整体功耗

在存算一体架构下,算子融合的意义更大。因为存算一体本身就在解决数据搬运问题,算子融合进一步减少了「计算单元内部」的数据流动。两者结合,效果是1+1>2。

1.4 课程目标与学习路径

这门课的目标很明确:让你掌握在存算一体架构下做算子融合的实战能力。

不是讲理论,不是讲概念。是真正能上手干活的那种。

课程覆盖以下内容:

  1. 基础篇(第1-5章):存算一体架构基础、算子融合原理、主流框架介绍
  2. 方法篇(第6-15章):常见算子的融合策略、内存优化、调度算法
  3. 实战篇(第16-25章):基于实际芯片的算子融合实现、性能调优
  4. 进阶篇(第26-30章):自动融合工具开发、前沿技术展望

学习路径上,我建议你按顺序来。尤其是基础部分,不要跳。我曾经见过有人直接跳到实战篇,结果连存算一体和算子融合的基本概念都没搞清楚,代码跑不通也不知道问题出在哪。

避坑提醒:我曾经带过一个团队,他们跳过基础直接做融合优化。结果花了三周时间,发现性能反而下降了。后来一查,是因为不理解存算一体架构的访存特性,融合策略选错了。嗯,基础真的很重要。

好了,第一章就到这里。接下来我们进入第二章,开始真正动手。

存算一体与算子融合知识体系 冯·诺依曼瓶颈 存储与计算分离 数据搬运能耗高 催生 存算一体架构 计算融入存储 减少数据搬运 结合 算子融合技术 合并连续操作 减少中间访存 核心价值:1+1 > 2 更低延迟 · 更少带宽 · 更低功耗 模拟存算一体 RRAM / PCM / MRAM 极致能效,挑战精度 数字存算一体 SRAM / eDRAM 成熟度高,易上手 算子融合策略 Conv+BN+ReLU MatMul+Add+Act 课程目标:掌握存算一体架构下的算子融合实战能力