为了逾越“存—算”之间的巨大鸿沟,内存计算的概念应运而生。 内存计算有两种技术类型,一种是横向扩展(scale.out),主要是分布式内存计算,典型代表有 Spark 架构,是一种软件的方案;另一种是纵向扩展 (scale.up),又分为两种,一种是近数据端处理(Near data processing,NDP),包括近存储计算和近内存计算,另一种是存内计算,依赖经典存储器件或新型的存算器件,如图 1 所示。 分布式内存计算是较早前诞生的基于软件的内存 计算方案。 2003年谷歌公司提出的 Map Reduce计算 框架,能够处理 TB 级数据量,是一种“分而治之再规约”的计算模型,用多个计算节点来计算。 但缺点是在反复迭代计算过程中,数据要落盘,从而影响数据计算 速度。 2010 年,美国加州大学伯克利分校 AMP 实验 室提出的分布式计算框架 spark,能够充分利用内存高速的数据传输速率,同时某些数据集已经能全部放在内存中进行计算,数据尽量留存在内存中,从而避免落 盘,随着内存容量持续增长,spark 依然活跃在工业界。
近存储计算 (in storage computing,ISC),即在非易失存储模块中 (固态硬盘等) 加 入 现 场 可 编 程 逻 辑 门 阵 列 ( Field Programmable Gate Array,FPGA)、ARM处理器核等计 算 单 元。 三 星 在 2019 年 展 示 产 品 Smart SSD(PM1725), 集 成 了 数 字 数 据 处 理 器 (Numeric Data Processor,NDP),可以通过一些编程模型、库和编译器进行程序编译后在硬盘内计算。近数据端计算的另一种方式是近内存计算(In Memory Computing,IMC), 数据直接在内存中计算后返回,通过将存储层和逻辑层堆叠实现大通道计算,目前业界有三星、英伟达,Upmem等企业跟进。
图1 内存计算体系
以上基于软件的分布式内存计算和拉近存储与计算距离的近数据端处理,依然保留了经典冯·诺依曼架构的数据处理特点,而基于器件层面实现的存内计算是真正打破了存算分离架构壁垒的非冯·诺依曼架构。
直接使用内存单元做计算, 主要利用电阻和电流电压的物理关系表达运算过程. 存内计算依赖于新型的非易失性存储器, 如 ReRAM 和 PCM 等.
在所有存内计算操作中, 最普遍的是利用基尔霍夫定律 (Kirchoff’s Law) 进行向量乘矩阵操作[40] . 原因在于: (1) 它能够高效地将计算和存储紧密结合; (2) 它的计算效率高 (即, 在一个读操作延迟内能 完成一次向量乘矩阵); (3) 目前流行的数据密集型应用中, 如机器学习应用和图计算应用, 向量乘矩阵的计算占了总计算量的 90% 以上 [41] .
除了向量乘矩阵操作, 存内计算还能利用电阻、电流及电压的物理关系实现查询, 按比特与/或/非等操作. 本小节首先综述基于向量乘矩阵的存内计算研究, 然后综述其他存内计算技术。
基于向量乘矩阵的存内计算
图 2 [40] 是存内计算支持向量乘矩阵的最基本单元, 展示了存内计算使用基尔霍夫定律, 在将近一个读操作延迟内完成一次向量乘矩阵操作的过程. 左图中计算的是一个 2×1 的向量 (V 1, V 2) 乘以一个 1×2 的向量 (G1, G2)T, 其中, (G1, G2)T 用 ReRAM 阻值表示, 事先存在 ReRAM 中, (V 1, V 2) 用电压表示, 加到对应的字节线上. 根据基尔霍夫定律, 比特线上最后输出的电流值就代表了 (V 1, V 2) × (G1, G2)T 的计算值. 同理, 扩展到右图的向量乘矩阵操作, ReRAM 阵列中存储着要做计算的矩阵, 将向量转化成电压加在字节线上, 通过比特线得到的输出就是相应的结果向量. 由于向量乘矩阵操作是神经网络和图计算中的主要操作, 这种内存计算结构得到了高效利用. 基于向量乘矩阵的存内计算代表性工作有: Hewlett Packard Laboratories 的 DPE[42], University of Utah 的 ISAAC[40], University of Santa Barbara 的 PRIME[12], University of Pittsburgh 的 PipeLayer[6] , Tsinghua University 的 TIME [43], Tsinghua University 的 LerGAN [44], IBM Research 的 PCM+CMOS 存内计算 [45], University of Rochester 的 SC [46], Duke University 的 GraphR [47] . 下文将综述这些工作如何支持神经网络应用或图计算应用, 以及其他包含向量乘矩阵的应用.
图2 基于基尔霍夫定律的矩阵向量乘加矩阵实现
DPE [42] 是一个专门针对向量乘矩阵操作设计的存内计算加速器. 它提供了一个转化算法, 可将实际的全精度矩阵存储到精度有限的 ReRAM 存内计算阵列中, 减少器件问题以及外围电路问题对计算结果的影响. 图3是 DPE 的工作流程, 分为 3 个部分: 转换、写入、计算. 首先将矩阵映射到合适的 ReRAM 阵列中. 这个过程利用了对输入的预先了解以及 ReRAM 阵列参数共同优化来决定最后写入 ReRAM 阵列的数据. 而后通过写入阶段, 再进入计算阶段. 计算阶段将预先准备好的输入数据转成信号, 再传入 ReRAM 阵列中并读取输出数据. 如果还有其他计算操作, 则将临时输出传送到下一个 ReRAM 阵列中; 如果没有, 则结束计算. DPE 测试结果显示, 只用 4 bit 的 DAC/ADC (电信号转模拟信号单元/模拟信号转电信号单元) 就能保证计算结果没有精度损失, 相比于数字的 ASIC 向量乘矩阵加速器, 能取得 1000 到 10000 倍的性能提升.
图3 DPE的工作流程
ISAAC [40] 是一个针对神经网络推理设计的存内计算架构, 图 4 是其整体架构. 一个芯片上包含多个存内计算阵列 (tile), 它们通过 C-mesh 的片上网络连接, 可以互相通信. 存内计算阵列里有用于池化层计算的最大池化单元 (Max Pool, MP), 用于激活层计算的 Sigmoid 单元, 用于数据缓存的 eDRAM buffer, 用于中间数据移位加操作的 S+A 单元、用于存放临时输出的输出数据寄存器, 以及支持原地向量乘矩阵操作的基础单元 (in-situ multiply accumulate, IMA). 每个 IMA 中包含 4 个基于 ReRAM 阵列的向量乘矩阵单元、电模互转单元 (DAC, ADC)、输入寄存器、移位加操作单元, 以及输出寄存器. ReRAM 阵列的个数和其他电路单元的设计考虑了向量乘矩阵的计算延迟以及片上网络的带宽, 充分利用了片上资源. 该结构在做推理时, 采用了 pipeline 的方式将硬件时分复用, 以加快整个推理的过程. 然而, 推理过程中会有很多由归一化操作产生的气泡, 当推理任务松散时, ISAAC 的 pipeline 效果并不理想. 相比于针对神经网络的加速器 DaDianNao, ISAAC 有 14.8 倍的性能提升和 5.5 倍的能耗节约.
图4 ISAAC系统结构
PRIME [12] 也是一个针对神经网络推理设计的存内计算架构, 图 5 是其系统结构. 在一般的加速器结构中, 计算加速单元作为 CPU 的协处理器放在 CPU 旁边, 通过总线与主存相连 (如图 5(a) 所示). 在基于 3D 堆叠的近数据计算架构中, 加速单元靠近主存堆叠, 并通过总线与 CPU 相连 (如图 5(b) 所示). 在 PRIME 中, 直接使用 ReRAM 单元做计算. 其中, 一个 ReRAM bank 分为 3 部分: 用作存储的 Mem subarrays、用作计算的 FF subarrays, 以及用作缓存的 Buffer subarray. 计算阵列和缓存阵列进行数据交互, 缓存阵列和存储阵列进行数据交互. 与 ISAAC 不同的是, PRIME 不用片上 eDRAM 作为缓存, 也不使用输入输出寄存器, 而是直接使用 ReRAM 阵列作为缓存和存储. 与基于 CPU 的神经网络处理器相比, PRIME 能够取得 2360 倍的性能提升和 895 倍的能耗节约.
图5 PRIME的系统结构
PipeLayer[6] 是一个针对神经网络训练设计的存内计算系统架构, 图 28 展示了其训练一个三层神经网络的数据流情况. 其中, 圆形圈出的数据存在普通 ReRAM 中, 方块中的数据存在基于 ReRAM 的存内计算阵列中. PipeLayer 通过合理地复制多份权重数据 (图中的 A1, A2, A3, A11, A21, A31, A22, A32) 实现少气泡的 pipeline 结构, 同时使得反向传播阶段的误差传递和权值计算并行, 从而提高使用存内计算训练神经网络的计算效率. 实验显示, 与 GPU 系统训练神经网络相比, PipeLayer 有 42 倍的性能提升和 7 倍的能耗节约.
图6 Pipelayer 系统架构图
TIME [43] 也是一个针对神经网络训练的存内计算系统架构, 与 PipeLayer 不同的是, 为了减少训练时权重矩阵更新带来的高延迟和高能耗的问题, 它采取权重矩阵复用的方法, 而不是将权重矩阵复制多份来保证训练过程的高度并行. 同时, TIME 还支持增强学习的训练. 图 7是增强学习网络的推理和训练过程. 它拥有两个网络, 训练过程会产生一个将 A 网络的权值拷贝到 B 网络, 而后更新 B 网络的操作 (A 网络的 Wm 替换 B 网络的 W0). TIME 通过重用 ReRAM 阵列网络的方式, 提出了一个特殊的数据映射操作来消除拷贝操作带来的写操作开销. 实验结果显示, 与 ASIC 加速器相比, 针对有监督的神经网络, TIME 能取得 5.3 倍的能耗节约; 针对强化学习网络, TIME 能取得 126 倍的能耗节约.
图7 深度强化学习和推理的训练过程
LerGAN [44] 是一个针对训练对抗生成网络 (GAN) 设计的存内计算系统架构. 与传统CNN/DNN不同, 对抗生成网络有两个网络, 并且使用跨步卷积代替原来的池化层. 上述存内计算系统架构直接用于对抗生成网络加速难度很大, 很多零相关的操作占据了大量的存内计算空间, 并且复杂的数据流使得存内计算的片上互联成为瓶颈. 基于此, LerGAN 首先提出了去除零相关的操作, 通过重构卷积核以及相应的数据映射, 能够去除因跨步卷积和外圈补零带来的零相关操作. 另外, 基于 GAN 训练时的数据流结构, LerGAN 还提出了一种三层堆叠的存内计算阵列结构, 分别映射前向传播层、误差传播层, 以及权值计算层, 使得 GAN 训练的数据传输路径变短, 且路由变少. 为了融合这两项技术, LerGAN 使用内存控制器控制数据的映射以及相应的片上互联重配, 以使得数据传输尽可能少且各部分计算速度尽可能一致. 实验显示, 和针对 CNN 的存内计算系统相比, LerGAN 能取得 7.46 倍的性能提升和 7.68 倍的能耗节约.
IBM 的研究人员提出了一种用 PCM+CMOS 的存储单元来做存内计算的方法 [45] , 能在同一个阵列中实现全连接神经网络的前向传播、反向传播和权值计算. 图8 是 PCM+CMOS 的存内计算结构. 图8(a) 部分是一个存内计算阵列, 包含了多个行. 图8(b) 是其中一个行的结构, 包含多个存储单元 (图8(c)) 和一个共享电容单元. 该结构的特殊之处在于图8(c) 中的存储单元, 该单元由两个 PCM cell (G+ 和 G−) 和一个电容器 (g) 组成. 其中, PCM 单元用来存储权值的高位, 正值存在 G+ 中, 负值存绝对值在 G− 中; 电容器单元用来存储权值的低位. 在训练时, 权值的高位改变少, 所以使用寿命短且非易失的 PCM 单元来存; 相反, 频繁变化的低位就用电容器单元来存. 图9 展示了使用该结构训练一个全连接神经网络的过程. M 层作为输入首先进入存内计算的阵列中 (图9b) 左侧两个阵列), 输出进入下一层权值所存放的阵列中, 依此类推 (所有实线箭头表示前向的数据流). 前向传播完成后, 在原地进行反向传播 (图中虚线部分标出), 不需要转置权值矩阵. 该结构能支持原地的前向反向传播, 但不适用于卷积神经网络的训练, 而现在大多数流行的神经网络都有卷积层的计算, 这是此工作的一个局限. 实验结果显示, 相比较于 GPU, 该结构对全连接的网络能有两个数量级的性能提升, 仅伴随不到 1% 的精度损失.
图8 PCM+CMOS阵列
图9 全连接网络放到 PCM+CMOS 存内计算阵列中执行的示例
SC [46] 是一个针对科学计算提出的存内计算系统架构. 线性代数在科学计算和工程中普遍存在,
用专门的硬件加速线性代数计算, 有助于提高相关应用的运行速度, 减少能耗. 向量乘矩阵就是线性代数中的一个重要算子. 前述存内计算用于加速向量乘矩阵的系统结构有很大的局限性: 只支持定点的低精度计算, 而科学计算需要全精度的浮点运算支持. SC 通过探索指数分布的局部性, 提供基于定点计算的浮点计算支持, 提出了支持快速低功耗的全精度浮点数向量乘矩阵的存内计算硬件架构. 图10是 SC 的硬件系统结构, 由多个 ReRAM 阵列组成. 每个阵列包含多个集群和一个通用处理器, 可处理 ReRAM 阵列不支持的计算. 每个集群中有大小不同的计算阵列来支持高效的稀疏矩阵计算. SC 结合了现有的 GPU 系统来处理数据, 可广泛应用, 相比于纯 GPU, 能够取得 10.3 倍的性能提升和 10.9 倍的能耗节约.
图10 SC的系统结构
GraphR[47] 是一个针对图计算提出的存内计算系统架构. GraphR 把一个图分成多个子图, 探索子 图之间的并行性, 以提高性能, 并减少因矩阵稀疏性带来的资源浪费. 图11 展示了一个子图在 ReRAM 阵列中做计算的实例. 该例中, 有一个通过 4 个点和 V4 点连接的程序, 这 4 个点的值用于更新 V4 的值 (图11(a)). GraphR 先把这个计算转化成图11(b) 所示的向量乘矩阵操作, 其中矩阵是 V4 的邻接矩阵, 向量是其他点的值, 最终计算得到 V4 的更新值. 最简单的方法就是把此图直接转化为矩阵, 映射到 ReRAM 阵列中做计算, 但是会造成很大的资源浪费. 因此, GraphR 用小 ReRAM 阵列, 例 如 4×4 或 8×8 (之前的工作中通常用 64×64 或 128×128), 来组成图处理引擎 (graph-processing engine, GE), 处理和扫描每一个子图. 实验表明, 相比于 CPU, GraphR 能取得 16 倍的性能提升和 34 倍的能耗节约; 相比于 GPU, 有 1.69 到 2.19 倍的性能提升和 4.11 到 8.91 倍的能耗节约; 相比于近数据计算,有 1.16 到 4.12 倍的性能提升和 3.67 到 10.96 倍的能耗节约.
图11 图计算在Graph R上的一个示例
基于逻辑操作的存内计算
基于逻辑操作的存内计算代表工作有: University of California, Santa Barbara 的 Pinatubo [48] , Delft University of Technology 的 Scouting Logic [49] 和 XOR/XNOR 存内计算系统 [50], University of California, San Diego 的 MPIM [51] 和 MAPIM [52] , 具体如下.
Pinatubo [48] 是一个针对大量比特位操作的存内计算系统架构. 图 12 对比了传统冯 · 诺依曼系统结构和 Pinatubo 的系统结构在执行批量比特位操作的过程. 图 12(a) 中, CPU 先通过有限的总线资源把内存数据读取到 cache 中, 再用 CPU 中的 ALU 单元对数据做计算, 得到结果后将数据通过总线存入到内存中. 图 12(b) 展示的是 Pinatubo 的存内计算操作, CPU 只发送指令和行地址给内存, 内存直接通过读操作将两个参与计算的行读取到修改了的读放大器中, 读放大器可以直接计算出两行操作数的与、或, 以及异或的值, 然后存放到新的行中. 在这个计算操作中, 只有命令和行地址从总线上传输, 避免了传统结构中的大量操作数的传输. 图 13 展示了修改后的能支持数据读取、与、或, 以及异或计算的读放大器. NVM 中数据读取的本质是让给定的电流值经过要读取的电阻后, 和读放大器中的已知的阻值作比较来确定是 0 还是 1. 基于此原理, Pinatubo 同时读取两行或者多行操作数, 在读放大器端加上异或、或、与的参照电路, 通过简单的读操作完成比特位逻辑运算. 每个参照电路都有一个开关, 当指定操作类型后, 相应的参照电路将接入放大器中, 获得最终的结果. 实验结果显示, 对于大量的比特位逻辑运算, Pinatubo 能取得 500 倍的性能提升和 28000 倍的能耗节约; 在普通应用中, 能取得 1.12 倍的性能提升和 1.11 倍的能耗节约.
图12 Pinatuto架构与冯诺伊曼系统架构比较
图13 Pinatuto的读出放大器
Scouting Logic [49] 指出存内计算受限于 NVM 有限的寿命; 所有的计算更新都在 NVM 中, 缺乏传统计算机中寿命很长的片上缓存来辅助减少对 NVM 的写操作. 因此, Scouting Logic 提出只通过读操作执行这些逻辑单元, 而不改动 NVM 存储的数据值. 其核心思想与 Pinatubo 一致, 主要是改动了读出放大器的设计, 从而占用面积更小, 性能更高. MPIM [51] 为同时支持逻辑运算和搜索操作运算 (在 3.2.3 小节中介绍) 的存内计算架构, 其中的逻辑运算操作原理与 Pinatubo 相同. 实验显示, 相比于 GPU, MPIM 能取得 19 倍的性能提升和 5.5 倍的能耗节约. Lebdeh 等[50] 提出了一个针对 XOR和 XNOR 操作设计的存内计算系统, 该系统基于两个输入的混合 ReRAM 阵列和 XNOR 门设计, 不需要额外的 ReRAM 阵列和计算, 能够取得 54% 的时间节约和 56% 的能耗节约. MAPIM [52] 指出 之前针对批量位逻辑运算的存内计算架构没有考虑并行, 使得存内计算未取得潜在的高性能. 因此, MAPIM 提出基于阵列并行的高性能存内计算系统架构, 能够支持多个比特线的请求, 并且共享支持位逻辑运算的读放大器, 使得占面积大的读放大器利用率高, 从而提升整体系统结构的性能. 与之前的存内计算系统相比, MAPIM 能够取得 16 倍的性能提升和 1.8 倍的能耗节约.
基于搜索操作的存内计算
基于搜索操作的存内计算代表工作有:UniversityofCalifornia,SanDiego的NVALT[53]和
NVQuery[54],UniversityofCalifornia,Irvine的MAP[55],TsinghuaUniversity的SQL-PIM[56],具体如下.
NVALT[53]是一个基于存内计算设计的近似查找表,专门用于加速GPU.GPU的应用展现出了非常高的数据相似性和局部性,如FFT(fastfouriertransform)和图像处理,由重复的包含很多乘加操作的块构成.NVALT通过探寻这些应用的数据局部性,对这些基础应用建立高效的近似功能单元,来加速GPU的计算.图14 是集成有NVALT的GPU架构.NVALT块放置在每一个单指令多数据流(singleinstructionmultipledata,SIMD)处理通道的旁边.当应用在GPU上执行时,首先经过精度核查,精度允许的条件下,调度器会把指令放到NVALT块上执行.NVALT块使用线下预处理的方式,识别并存储每个程序常用的数据输入模式和对应的数据输出模式.运行时,NVATL搜索存储在CAM 里的输入数据,然后返回和输入模式最相似的条目所对应的输出结果.系统可根据用户的不同精度需求调度近似的NVALT核和精确的GPU核.实验显示,在精度损失控制在10%之内的情况下,NVALT 平均能取得4.5倍的能耗节约和5.7倍的性能提升。
图14 带有NVALT块的GPU体系结构
MAP[55]是一个基于存内计算的近似计算协处理器.图15是MAP的系统结构,配备有基于忆阻
器的内容寻址存储(resistivecontentaddressablememory,RCAM)、控制器、指令缓存器和一些专用寄存器(例如键值寄存器、掩码寄存器、标志寄存器).指令所需要的数据全部存储在RCAM中.RCAM 用两个忆阻器cell来存储一比特位的正负部分.系统运行时,指令寄存器先把指令发送到控制器,控制器生成相应的掩码和键放到寄存器中.键寄存器用来存放被写或者被比较的键值,而掩码寄存器用来显示哪些比特位在被写或被比较时激活.当执行比较操作时,比较电路找出和给出的键以及掩码相吻合的行,然后做标记并存储到内存中.由于高度并行,查找一个512行的表只需大约2ns.实验显示,和传统的冯·诺依曼架构相比,MAP能取得80倍的能耗节约和20倍的性能提升.
图15 MAP的体系结构
Sun等[56]提出了一个针对关系型数据库的存内计算系统结构(简称SQL-PIM).在数据库应用
里,该结构的存储部分既支持从表中直接读行的操作,又可以支持直接读取列的操作,减少了传统计算机中片上缓存不命中带来的时间和能耗的开销.SQL-PIM实现了限制查询语句,规划查询语句和聚合查询语句.限制查询语句是找出表中符合给出规定的一系列数据,这些规定可以是数值逻辑或者是非逻辑的条件语句,通常用WHERE语法来操作;规划查询语句是找出表里含有特定参数的条目或者特定的列,通常用SELECT语法进行操作;聚合查询语句是对一些给定条件的条目做加操作,通常用类似SUM语法来求一系列值的和.
图16展示了一个SQL-PIM实现的限制查询语句的实例:select*fromTablewhere(a+3×b)−(c+
2×d)>10.其中,{a,b,c,d}是表中四列数,存储在ReRAM阵列中.{a,b,c,d}前面的系数{1,3,−1,4}
以电流方式加到比特线上.最后,结果电流通过包含存有10的比较电路,输出0/1.结果为1的,就是符合限制查询语句的条目.
图16 一个限制查询语句在SQL-PIM中实现的例子
图17是SQL-PIM的结构,分为用于存放表格条目的PIM部分和用于支持比较等操作的外围电
路部分.指令通过控制器后,将相应的参数发送到这两个模块上,然后两个模块通过共享的缓存进行中间结果的传输.最后,结果写回到ReRAM中.除此之外,SQL-PIM还能在不改变结构化存储的前提下支持增、删、改、查操作.针对大的数据库表,SQL-PIM提出了一个特殊关联分割的方法,将大表存储在多个存内计算阵列中,同时减少每个计算阵列之间的相互通信.实验显示,与传统的内存数据库相比,SQL-PIM能节约4∼6个数量级的能耗。
图17 基于ReRAM的SQL存内查询结构
NVQuery[54]也是利用RCAM支持多种查询语句的存内计算加速器,其系统结构和MAP[55]相
像.NVQuery能够支持聚合、预测、按位操作,以及精确的最近距离查找.为了支持最近距离查找,
NVQuery提出了比特线驱动的策略,将权重加到相应的比特位上.实验显示,与传统的冯·诺依曼系统结构相比,NVQuery带来49.3倍的性能提升和32.9倍的能耗节约.
存内技术的应用领域
AI训练和推理:图像识别、大模型训练推理
2017 年,清华大学团队制备了128✖8的多值忆阻 器阵列,对包含320(20✖16)个像素点的人脸图像进行 训练和识别。 单幅图像识别耗能可低达 61.16nJ,识 别速度可高达34.8ms,识别率超过85%。
2023 年 3 月,南京大学王欣然教授团队与清华大学吴华强教授团队合作,提出基于二维半导体铁电晶体管的新型存内计算器件架构,通过调节铁电势阱,实现了同时满足AI训练和推理需求的底层器件,并展现 了高达103Tops/W 级别的能效潜力。 该成果突破了边缘端人工智能硬件的关键瓶颈之一.
由于 GPT 等大模型训练中占比 80% ~ 85%的线性计算 (Linear)、 前 馈 计 算 (Feed Forward)、 归一化 (layer Norm)以及参数变量乘积等计算流程在进行分解后都可以通过存算一体技术完成,因此存内计算技术在大模型训练方面有望取得应用突破。
与此同时,存内计算精度会受到模拟计算低信噪比的影响,通常精度上限在 8 bit 左右,难以实现 精准的浮点数计算。 现阶段 GPT 大模型训练也主要 依赖 H100 / A100 等英伟达 GPU 的绝对算力,短期内 对能效 比 等 因 素 不 敏 感。 产 业 界 目 前 使 用 的Nor Flash、SRAM 为主导的存内计算芯片仅在能效比方面拥有优势。
AIOT 智能终端应用
AIOT是存内计算技术目前布局的重点领域。知存科技是目前唯一实现市场规模化应用的存内计算企业,2021年发布的WTM2101芯片主要布局在语言唤醒语音活动检测(Voice Activity Detection,VAD)、语音识别、通话降噪、声纹识别等,已落地应用在嵌入式领域中,包括智能手表健康监测以及较低功耗(毫安级)的智能眼镜语音识别,此外知存科技核心重点布局在AI视觉领域,首个存内计算AI视觉芯片支持>24Tops AI算力,将落地应用于图像视觉领域;九天睿芯产品主要用于语音唤醒,或者时间序列传感器信号计算处理;定位推广可穿戴及超低功耗IOT设备;后摩智能相关芯片应用于无人车边缘端以及云端推理和培训等场景,2022年5月,后摩智能自主研发的存算一体技术大算力AI芯片跑通智能驾驶算法模型。
矩阵与搜索:图计算和基因工程
图计算中大量操作都可以转换成矩阵乘的形式, 因此可以用存算一体技术来处理,在预处理、稀疏矩阵的分隔和映射、硬件控制和数据流设计等环节能够实现超过传统计算的能效比。 生物数据的暴增给诸如基因序列查找/ 匹配的应用带来了很大的挑战。 基于存内计算技术的搜索计算能级能够提供高硬件并行度, 适用于大规模生物数据处理。
总结
存内计算用于支持特定算子(目前主要是向量乘矩阵算子)的性能很高且能耗低.存内计算的核心思路是利用新型存储的物理结构和特性来支持应用程序中频繁出现的算子.目前学术产业界对存内计算的落地化应用优先选择高算力低功耗场景。
同时,存内计算相关研究还关注:存内计算模块互联和数据流的设计;数据映射策略;外围电路的优化和复用;与现有存储系统的融合,降低技术移植成本与人员学习成本。存算一体技术应作为我国先进计算产业发展的重 点之一,需保持长期关注,要做好中长期路线制定,在支持现有Nor Flash的基础上加强对ReRAM等新型非易失存储的研究,并对存算一体相关基础材料、设计工具等加强研发,此外,要加快推进存算一体应用融合,在未来3-5年内通过自主创新开发专门的存算一体芯片设计工具等基础性产品,提升综合性能,加强“器件—芯片—算法—应用” 跨层协同,构建存算一体芯片的产业化应用与生态.
参考文献
- 黄璜,张乾 . 存算一体技术产业发展研究[J]. 信息通信技术与政策, 2023,49 (6):
- Song L, Zhuo Y, Qian X, et al. GraphR: accelerating graph processing using ReRAM. In: Proceedings of 2018 IEEE
- International Symposium on High Performance Computer Architecture (HPCA). Vienna: IEEE, 2018. 531–543
- Lebdeh M A, Abunahla H, Mohammad B, et al. An efficient heterogeneous memristive XNOR for in-memory computing. IEEE Trans Circ Syst I, 2017, 64: 2427–2437
- Imani M, Kim Y, Rosing T. MPIM: multi-purpose in-memory processing using configurable resistive memory. In: Proceedings of 2017 22nd Asia and South Pacific Design Automation Conference (ASP-DAC). Makuhari Messe: IEEE, 2017. 757–763
- Kim H, Kim H, Yalamanchili S, et al. Understanding energy aspects of processing-near-memory for HPC workloads. In: Proceedings of the 2015 International Symposium on Memory Systems. Washington: ACM, 2015. 276–282
- 毛海宇, 舒继武* , 李飞, 刘喆内存计算研究进展.中国科学,2021,51(2)