阅读导航

这一篇在干嘛?

这是 ACM 期刊《嵌入式计算系统汇刊》(TECS)2024 年 23 卷 6 期的特刊导言,主题是嵌入式系统中的存内计算与近存计算(In/Near Memory and Storage Computing)。导言本身只有 3 页,但它一口气介绍了 10 篇入选论文,覆盖了从 ReRAM 忆阻器阵列、自旋电子赛道存储器到计算型 SSD、近数据处理的完整技术版图。适合刚接触计算机体系结构、想搞明白”为什么大家都说内存墙”的同学,以及想快速了解这个领域研究全景的入门读者。

背景篇:冯诺依曼瓶颈与数据搬运之痛

要读懂这篇特刊导言,得先从一个七十多年前的设计说起。今天几乎所有计算机都遵循”冯诺依曼架构”:计算单元(CPU)和存储单元(内存)是分开的,程序和数据都放在内存里,CPU 需要算什么,就得先把数据从内存搬过来,算完再搬回去。这个架构在当年是天才设计,因为它让”存程序”和”做计算”解耦,计算机因此变得通用而灵活。

但问题也随之而来:数据和计算物理上是分离的,每一次计算都伴随着数据搬运。过去几十年里,CPU 的算力按照摩尔定律狂飙,而内存的带宽和延迟进步却慢得多,两者之间的差距越拉越大,形成了著名的”内存墙”(Memory Wall)。打个比方:CPU 是一个算得飞快的会计,内存是堆在另一个楼里的档案库,会计每算一笔账都要跑一趟档案库取资料——他绝大部分时间都花在路上,而不是算账上。

这个问题在嵌入式系统里尤其致命。导言开篇就点明了这一点:嵌入式系统通常受限于能量、算力和内存/存储空间三重约束——你的智能手表、传感器节点、边缘设备不可能装一个功耗几十瓦的散热风扇。而在 AI 时代,这个矛盾被进一步激化:一次神经网络推理动辄要搬运几百 MB 甚至几 GB 的权重和激活值,研究表明在典型深度学习加速器上,搬运数据消耗的能量比做乘加计算本身高出几十倍甚至上百倍。换句话说,我们花钱造了很强的”算力”,结果它都在等数据、搬数据。

导言的作者们给出的判断是:与其继续把数据搬到计算的地方,不如把计算搬到数据所在的地方——这就是”存内计算/近存计算”的核心思想。过去几十年,存储器技术本身取得了长足进步,新型非易失存储器(如 ReRAM、赛道存储器、持久内存)不仅容量大、能耗低,还逐渐具备了一定的计算能力。在存储器件内部或者近旁加入计算功能,让数据”就地计算”,就能从根源上消除大量数据搬运。这一方向如今已是学术界和工业界公认的热点。

技术路线篇:存内计算与近存计算的主要流派

“把计算搬到数据旁”听起来是一句话,实际上分成了好几条技术路线,特刊里的十篇论文几乎把它们各占了一个坑。初学者可以先建立这张地图:

第一条路线:存内计算(In-Memory Computing / PIM)。把计算直接做进存储阵列内部。代表器件是 ReRAM(阻变存储器,也叫忆阻器交叉阵列):它天然是一个”乘加器”——在交叉阵列的行线上施加电压(代表输入),每条列线上汇出的电流就是权重与输入乘积的叠加(代表乘加结果),利用基尔霍夫电流定律一步完成矩阵向量乘法,而这恰恰是神经网络最核心、占比最高的运算。另一类代表是自旋电子赛道存储器(Racetrack Memory),它把数据位像”列车车厢”一样串在一条纳米线上,通过移动磁畴来读写,密度极高,也被广泛研究用于存内处理。

第二条路线:近存计算(Near-Memory Computing)。不在存储器里直接算,而是在内存控制器旁边、CPU 缓存附近放置计算单元。它牺牲了一点”就地”程度,但保留了成熟的工艺和设计方法,工程上更容易落地。

第三条路线:存储内处理与计算型存储(In-Storage Processing / CSD)。把计算能力下沉到 SSD 这类存储设备里,让硬盘自己做搜索、过滤、聚合,主机只接收结果。数据库和大数据场景里”把查询推到数据旁”就是这一思路。

第四条路线:近数据处理(NDP)。在数据节点(如存储服务器)旁边部署处理单元,专门加速那些数据密集型操作,比如键值存储的压实(compaction)、压缩、解析等。

新器件很美好,但坑也不少

ReRAM 这类新型存储器虽然天然适合做乘加阵列,但它们并非完美替代品:ReRAM 单元有写入次数寿命限制,重复编程权重会磨损器件;模拟计算依赖电流的精确叠加,容易受器件噪声和工艺偏差影响;赛道存储器还有数据访问需要先”移动磁畴”带来的额外延迟。正因如此,你会看到本特刊里好几篇论文都在解决这些”落地时才暴露”的问题——权重调度的开销、电路验证的困难、低压下出错怎么办。新范式不是银弹,而是一整套新的权衡。

十篇导读(上):数据侧的压缩与持久性

这一组论文处理的是”数据还没进计算管线之前”的问题:怎么存得下、怎么断电不丢。

1. AMP:基于近似中值预处理的无损压缩(Li 等)

它解决什么问题?随着下一代嵌入式系统的云计算应用规模越来越大,领域科学家面对的痛点是:海量输出数据如何高效存储与分析。压缩是最流行的办法,但现实中的科学大数据大多是浮点格式,浮点数的位模式和整数不同,直接压缩效果很差。AMP 的核心思路是先做”预处理”:用一个基于中位数(median)的 hyperplane(超平面)对数据做变换,从而降低数据的全变差(Total Variation)——直观理解就是把数据变得更”平滑、有规律”,让后续的通用无损压缩器更容易找到重复模式。一句话总结:不改压缩算法本身,而是把数据”捋顺”了再压缩,让它更小。

2. Hercules:为持久内存提供原子持久性(Ye 等)

它解决什么问题?先补背景:持久内存(Persistent Memory,如 Intel Optane PMem)是一种断电不丢数据的内存,介于 DRAM 和 SSD 之间。但”内存本身不丢数据”还不够——CPU 缓存里可能还缓存着没写下去的数据,断电时这部分就丢了。近年推出的 EADR(Asynchronous DRAM Refresh)特性解决了这一层:断电时硬件保证把 CPU 缓存中缓冲的数据刷入持久内存,使 CPU 缓存成为一个”瞬态持久性域”(transient persistence domain)。但即便如此,应用层数据的原子持久性(atomic durability,即一组相关数据的更新要么全部生效、要么全部不生效)依然没有硬件级支持,软件日志方案代价高。Hercules 提出了一种硬件日志设计,在事务层面实现原子持久性。一句话总结:让”断电不丢”从单条数据升级到整个事务,而且由硬件保证、几乎没有软件开销。为什么有意思?数据库和文件系统的崩溃一致性难题,可能因此被一块硬件日志机制大幅简化。

十篇导读(中):存内计算的硬件加速

这一组论文直面存内计算的核心矛盾:ReRAM 阵列资源有限、模拟电路不可靠、芯片验证困难

3. 模拟存内电路加速格密码多项式乘法(Du 等)

它解决什么问题?格密码(lattice-based cipher)是后量子密码的重要候选——量子计算机一旦成熟,今天的 RSA、椭圆曲线加密都可能被破解,而基于格的密码被认为能抵抗量子攻击。但格密码的核心运算(也是最大的计算瓶颈)是大规模多项式乘法,在资源受限的嵌入式硬件上跑得很慢。这篇论文的思路非常”存内计算”:多项式乘法本质上也是一系列乘加运算,于是作者设计了一套模拟存内电路,让交叉阵列的物理特性(电流叠加)直接完成多项式乘法,在资源约束下实现快速计算。为什么有意思?存内计算不只服务于 AI,密码学硬件是另一个重要应用面,而这篇展示了模拟计算范式如何迁移过去。

4. 资源受限 PIM 的权重编程静态调度(Gao 等)

它解决什么问题?现有的 ReRAM 存内 DNN 加速器研究通常假设:整个神经网络的所有权重可以一次性映射到交叉阵列上。但现实是,受工艺限制,ReRAM 交叉阵列的可用计算资源是有限的,网络规模却在不断膨胀,因此推理过程中必须多次重新编程(reprogram)权重——把一部分权重换进阵列、算完再换下一批。每次编程都有不小的时间成本。这篇论文提出一个静态调度框架:离线规划”哪一层网络的权重、在什么时刻、映射到哪些 ReRAM 单元”,目标是让运行时的权重编程开销最小。一句话总结:把”换载入权重”当成调度问题来优化,让有限阵列跑更大的网络。为什么有意思?它点破了一个常被论文忽略的现实约束——阵列装不下整个模型,并给出了系统化的解法。

5. ReSG:面向 ReRAM 交叉阵列多数逻辑验证的数据结构(Bhunia 等)

它解决什么问题?ReRAM 器件制造工艺的进步催生出了大规模交叉阵列,基于交叉阵列的存内计算架构旨在缓解当前 CMOS 工艺下的处理器-内存瓶颈。但这里有个容易被忽视的工程难题:你怎么知道你在交叉阵列上”布”下去的电路是对的? 现有的验证手段要么靠人工检查,要么靠仿真——面对大规模交叉阵列上的复杂设计,两者都力不从心。ReSG 提出了一种数据结构加自动化的等价性检查(equivalence checking)流程:自动判断”交叉阵列的微操作序列”和”原始功能规约”是否等价,就像传统数字电路的 form verification 那样。为什么有意思?硬件设计流程里验证往往比设计本身还费时,存内计算要走向工业化,缺的就是这类自动化验证基础设施。

6. 低压容错的鲁棒超维计算系统(Liang 等)

它解决什么问题?电压缩放(voltage scaling)是最有前景的能效提升手段之一——把供电电压降下来,功耗显著下降。但代价是电路变得不稳定,存储器可能出现位级错误,这对现代 VLSI 系统的稳定运行构成挑战。传统做法要么不敢降压,要么加昂贵的纠错。这篇论文的巧妙之处在于选对了搭档:超维计算(Hyper-Dimensional Computing, HDC)——一种用超高维随机向量做分类的神经计算范式,其模型表示天然冗余,天生对噪声鲁棒。作者提出的系统(DependableHD 的第二版)包含三项技术:边际增强(margin enhancement)用于模型重训练、噪声注入以提升鲁棒性、以及维度交换(dimension-swapping)技术,让系统在低压 region 下容忍位级存储故障仍然高鲁棒地工作。一句话总结:降电压省电 + 用抗错算法兜底,鱼与熊掌兼得。为什么有意思?它展示了一个通用设计哲学:与其让硬件完美,不如让算法适应不完美的硬件。

一个值得记住的共性思路

仔细看这四篇论文会发现一个共同模式:不要孤立地优化一层,而是让上下两层互相配合。调度框架(第 4 篇)把”硬件装不下”交给离线编译期解决;HDC(第 6 篇)让算法层吸收硬件层的低压错误;Hercules(第 2 篇)把软件层的事务一致性下沉到硬件层。跨层协同设计(cross-layer design)正是体系结构研究最强的思想武器之一,初学者可以把它当作一把”读论文的钥匙”——很多看似不同的工作,内核都是同一句话:把问题搬到成本最低的那一层去解决。

十篇导读(下):存储侧与系统级创新

这一组论文把视角从芯片拉到存储系统和仿真工具层面。

7. 基于解析模型的 CSD 存储容量规划(Byun 等)

它解决什么问题?在大规模计算设施中,从计算节点到数据节点的数据搬运被列为高成本、高能耗的主要元凶之一。对策是在存储设备(如计算型存储驱动器 CSD)内部做存储内处理(ISP)。但搭建 CSD 存储系统有个关键挑战:商业化 CSD 产品的硬件资源和性能特征各不相同——不同厂商的盘内置算力、内存、带宽都不一样,系统架构师怎么知道该买多少块、怎么配比?这篇论文提出了一个基于**解析模型(analytical model)**的存储容量规划器(capacity planner),帮助架构师搭建性能有效的基于 CSD 的计算节点。一句话总结:给”用几块计算型硬盘”这个采购/架构决策一个可算的工具。为什么有意思?它提醒我们:一个新技术方向要落地,除了器件和算法,还需要容量规划这类”枯燥但必需”的系统工程。

8. 面向 NDP 使能 LSM-Tree 键值存储的异步压实加速(Sun 等)

它解决什么问题?先补背景:LSM-Tree 是 LevelDB、RocksDB 等键值存储的底层数据结构,它把随机写转化为顺序写来提速,代价是需要后台压实(compaction)——不断把多层的数据归并、重写,这个过程会带来严重的写放大。近数据处理(NDP)被广泛研究用来解决压实导致的问题:把压实任务下推到存储侧并行执行。但现有 NDP 框架采用同步并行方案,整个流程的速度被”压实性能最弱的那个子系统”卡住(木桶效应)。这篇论文提出异步并行方案:设计多任务队列,配合三种基于优先级的调度方法,让快的子系统不必等慢的。一句话总结:把压实流水线从”齐步走”改成”各跑各的”,消除短板效应。为什么有意思?异步化是系统设计中最常用也最有效的招数之一,这里它被精准地用在了存储栈的一个具体痛点上。

9. SPIMulator:赛道存储器 PIM 模拟器(Bera 等)

它解决什么问题?存内处理正成为缓解冯诺依曼模型内存瓶颈的流行方法,而自旋电子赛道存储器(RM)是为满足存内处理延迟和能耗需求而被广泛研究的非易失存储技术之一。但赛道存储器是新兴器件,没有真实的商用芯片可供实验,研究者怎么评估自己的 PIM 架构设计?答案是模拟器。SPIMulator 是一个自旋电子 PIM 模拟器,能够模拟在赛道存储器中执行 PIM 命令时的存储行为与 PIM 架构行为。一句话总结:给赛道存储器研究者一个可以跑实验的”虚拟芯片”。为什么有意思?体系结构领域有个规律——一款好的开源模拟器往往能带火整个子领域(gem5 之于通用架构、GPGPU-Sim 之于 GPU)。赛道存储器研究能否加速,工具链是关键一环。

10. REC:能量收集场景下的 ReRAM CNN 加速器重定时策略(Zhou 等)

它解决什么问题?基于能量收集(energy harvesting)技术的物联网设备备受关注——利用太阳能、振动等环境能量供电,优点是绿色低碳、维护方便、理论上寿命无限。但环境能量有个致命特征:不稳定,时有时无、忽大忽小。另一方面,基于 ReRAM 的 CNN 加速器被广泛研究来应对这种不稳定能量的场景。剩下的矛盾是:CNN 不同层对功耗的需求各不相同,而收集到的功率又在波动,两者经常错配。REC 提出了一种新颖策略:对 CNN 推理的卷积层进行重定时(retiming)——动态调整各层的执行时机和粒度,去充分匹配和利用收集到的能量,从而提升能量收集型 ReRAM 加速器的性能与能效。一句话总结:让计算的节奏跟着能量的节奏跳舞。为什么有意思?它是”嵌入式 + 新器件 + 绿色计算”三重背景的交汇点,恰好呼应了特刊主题中”嵌入式系统”这四个字——不是所有计算都发生在有稳定电网的机房里。

总结:给初学者的三点启发

把这 3 页导言读”厚”之后,值得带走三点认识:

第一,瓶颈的位置决定了研究的位置。 本特刊的十篇论文,本质上都在回答同一个问题:数据从存储到计算单元的搬运成本太高了。压缩(第 1 篇)是减少要搬的数据量,持久性(第 2 篇)是保证搬运和落盘的可靠性,存内计算(第 3、4、5、9、10 篇)是让搬运距离归零,近存/近数据处理(第 6、7、8 篇)是让搬运距离变短。初学者读任何一篇论文,先问”它把哪一段搬运消掉了”,脉络立刻清晰。

第二,新器件与旧生态的摩擦面就是论文的富矿。 ReRAM 阵列装不下整个模型、交叉阵列设计难以验证、模拟计算对噪声敏感、CSD 产品规格参差不齐——这些都不是”发明新器件”时能想到的问题,而是落地时必然冒出来的。特刊里一半以上的论文做的正是这种”摩擦面的修补工作”,而对初学者来说,这些工作往往比宏大叙事更容易上手复现。

第三,嵌入式是这个领域的独特战场。 通用服务器场景里,内存墙主要是性能问题;而在嵌入式场景里,能耗、可靠性、资源约束被同时放大:能量收集设备要看天吃饭,格密码硬件要省资源,降电压要容忍出错。这也是这篇特刊值得精读的原因——它展示的不仅是”更快的计算”,而是”约束下的计算”。

此文件夹下有0条笔记。