ISSCC 2024 34.3论文解析:数模混合存内计算如何实现通用AI加速

发布时间:2026/9/22 10:50:22

ISSCC 2024 34.3论文解析:数模混合存内计算如何实现通用AI加速
1. 从“闪电”到“通用”ISSCC 2024 34.3论文的核心突破最近在ISSCC 2024上读到一篇编号为34.3的论文标题里“闪电”这个词一下就抓住了我的眼球。这可不是什么营销噱头而是实实在在地描述了一种数模混合存内计算CIM架构的运算速度。更关键的是它声称能同时适应Transformer和CNN这两种截然不同的神经网络架构。这让我这个在AI硬件领域摸爬滚打了十来年的老兵也忍不住想深入扒一扒它的门道。毕竟现在市面上大多数存内计算芯片要么是为CNN的规整卷积优化要么是为Transformer的密集矩阵乘加MAC设计能“通吃”的少之又少。这篇论文提出的方案看起来是想解决这个“专用”与“通用”之间的矛盾其背后的设计思路和工程取舍非常值得玩味。简单来说这篇论文的核心是提出了一种新型的数模混合存内计算宏单元CIM Macro。它通过一种巧妙的模拟域计算和数字域后处理的混合信号处理流程实现了极高的能效和吞吐率并且其计算模式具备足够的灵活性能够高效处理CNN所需的乘积累加MAC操作和Transformer中占主导地位的向量-矩阵乘法VMM。论文中“闪电”的比喻既指其超低的单次运算延迟也暗示了其数据处理如闪电般迅捷的流水线设计。接下来我就结合自己多年做AI加速器的经验拆解一下这个“闪电”架构到底是怎么工作的它解决了哪些痛点以及在实际落地中我们可能需要关注哪些细节。2. 架构总览数模混合如何为“通用性”铺路要理解这篇论文的贡献我们得先看看当前存内计算芯片面临的普遍困境。纯数字存内计算虽然精度高、抗干扰能力强但每个计算单元Cell面积大做大规模并行MAC时能效提升有限。而纯模拟存内计算利用欧姆定律和基尔霍夫定律在模拟域直接完成乘加能效极高但通常受限于工艺偏差、噪声以及计算功能的单一性——很多模拟CIM阵列是为特定位宽比如4-bit的CNN卷积固定设计的一旦遇到Transformer中更复杂的计算图或不同的数据流就显得力不从心。ISSCC 2024 34.3提出的数模混合架构其核心思想是**“模拟域执行核心计算数字域完成灵活后处理与调度”**。这听起来像是句正确的废话但里面的门道很深。它的整体架构可以粗略分为三层最底层是经过特殊设计的模拟存算单元阵列这是能耗的“主战场”中间层是高速、并行的模数转换器ADC和部分数字逻辑这是精度和速度的“把关人”最上层是灵活的数字处理单元和片上缓存这是适应不同算法的“大脑”。具体到这篇论文它的模拟阵列很可能采用了一种支持多位输入activation和多位权重weight的电路设计。与传统模拟CIM只将权重存储在非易失性存储器如RRAM, FeFET中不同它的创新点可能在于对输入数据的模拟域处理方式。我猜测它采用了一种时间域或电荷域编码技术使得输入向量能够被高效地转换为模拟信号如电流或电压并与存储的权重在阵列中并行进行模拟乘法。成千上万个这样的乘法结果以电流形式在列线Bitline上求和这就是模拟域的乘积累加。这里的一个关键设计取舍是模拟计算的位宽和线性度。为了兼顾CNN和Transformer论文中的模拟核心可能没有追求极高的计算精度例如8-bit以上而是通过优化电路设计在6-bit甚至4-bit的模拟计算范围内达到极好的线性度然后依靠后续的数字模块进行校准和更高精度的累加。这是一种非常务实的工程思维用模拟电路做它擅长的事低功耗、高并行乘法把精度提升和复杂控制交给数字电路。接下来每一列模拟求和的结果通过一个高速度、中等精度的ADC转换为数字信号。这里“闪电”速度的第一个体现点就在ADC上。传统高精度ADC速度慢、功耗大是模拟CIM的瓶颈。这篇论文大概率采用了并行度极高的SAR-ADC逐次逼近寄存器型或更先进的架构以数量换时间和能效即使用大量中低精度ADC并行工作快速将整列模拟结果数字化。这些初步的数字结果被送入数字处理单元。数字处理单元是灵活性的关键。它需要完成几项工作首先对来自不同列、不同ADC的结果进行数字域的累加和重组以支持不同尺寸的卷积核或Attention矩阵其次它可能集成了一些简单的非线性函数如ReLU的近似计算或缩放Scaling操作最后它负责管理数据的流向根据当前执行的是CNN层还是Transformer层来配置计算的数据流图。正是这一数字层的可编程性使得同一个硬件底层的模拟阵列能够为两种算法服务。3. 模拟计算核心实现“闪电”速度的电路级奥秘“闪电”之名首要来源于其模拟计算核心的超低延迟。论文中必定包含一组令人印象深刻的指标单次VMM/MAC操作在纳秒ns级别完成能效比达到数十甚至上百TOPS/W。这背后是精密的电路级创新。3.1 存算单元的设计与权重映射论文中的存算单元很可能不是简单的1T1R一个晶体管一个电阻结构。为了支持更灵活的多位计算和更好的线性度它可能采用了类似电容耦合的电荷域计算单元或者利用电流镜Current Mirror进行权重复制的电流域单元。其核心是将存储的权重值通常是数字形式通过一个高精度的数模转换器DAC或直接通过存储器件本身的电导值转换为一个精确的参考电流I_weight。当输入激活值也是数字信号到来时它被一个快速的DAC转换为一个时间脉冲宽度或一个电压幅度。这个模拟信号控制着一条路径让I_weight电流流入列线的时间或比例。这样单个单元的贡献就是I_weight * f(activation)其中f是某种模拟调制函数。成千上万个单元同时操作列线上的总电流就是所有单元贡献的求和完美实现了I_total Σ (Weight_i * Activation_i)。这里的一个关键挑战是“非理想性”。晶体管的阈值电压偏差、导线电阻、电容寄生效应都会导致计算误差。论文必须提出一套校准方案。我推测它在数字处理单元中集成了一套后台校准引擎。例如定期向阵列注入已知的测试向量测量输出电流并与理想值对比生成一组校准系数Calibration Coefficients。在正常计算时这些系数用于修正ADC输出的数字结果。这种“模拟计算数字校准”的思路是保证计算精度、应对工艺角Process Corner变化的核心。3.2 位线Bitline与字线Wordline的优化策略模拟CIM的吞吐率常常受限于位线的充放电时间常数RC Delay。当阵列规模很大时位线就像一条长长的、电容很大的导线信号建立缓慢。为了实现“闪电”速度论文必然在阵列划分和互联优化上下了功夫。一种常见策略是分层位线结构。将一个大阵列划分为多个子阵列Sub-array。每个子阵列有自己的局部位线长度短RC延迟小。局部位线的结果通过一个灵敏放大器Sense Amplifier或一个中间缓冲器快速读出然后再在更高层级进行数字汇总。这样虽然增加了部分数字电路的开销但换来了模拟路径速度的极大提升是典型的以面积换速度、换能效的设计。另一种策略是采用电压模Voltage-Mode而非电流模Current-Mode计算。虽然电流模求和更直接但电压模在驱动长线缆时可能更有速度优势尤其是结合了先进低电阻互联工艺的情况下。论文可能需要详细论证其选择某种信号模式的原因这通常与芯片所采用的工艺节点如22nm, 12nm FinFET密切相关。3.3 模数转换器ADC的并行化艺术如前所述ADC是瓶颈。论文中的ADC设计一定是亮点。我猜测它采用了时间交织Time-InterleavedSAR-ADC或异步SAR-ADC。时间交织SAR-ADC假设完成一次8-bit转换需要10个时钟周期。那么我可以部署8个SAR-ADC在同一列上让它们轮流工作。第一个ADC转换第1、9、17...个数据第二个ADC转换第2、10、18...个数据以此类推。这样从系统层面看数据输出速率就提升了8倍。但这需要精密的时钟同步和校准来抵消各ADC之间的失配误差。异步SAR-ADC传统SAR-ADC每一步比较都等待一个固定时钟异步SAR则在上一步比较完成后立即触发下一步消除了时钟周期的空闲等待时间从而在相同精度下达到更高的转换速度。论文很可能将阵列的列划分为多个组每个组共享一个高速ADC池。通过精细的调度确保ADC的利用率最大化避免空闲。同时ADC的精度可能动态可调。在执行对噪声不那么敏感的操作如某些Transformer层的前馈网络时可以降低ADC精度以换取更快的速度和更低的功耗。4. 数字处理与数据流适应Transformer与CNN的灵活性之源模拟阵列和高速ADC提供了强大的计算引擎但要让这个引擎既能跑CNN的固定赛道又能跑Transformer的复杂越野就需要一个聪明的“驾驶员”——即可编程的数字处理与数据流控制器。4.1 针对CNN的优化数据流对于卷积神经网络其计算特性是权重共享和局部连接。一个卷积核要在输入特征图Input Feature Map, IFMAP上滑动重复使用。在存内计算架构中一种高效映射方式是将一个卷积核的权重展开并映射到模拟阵列的一个或多个连续的行上。输入特征图的局部窗口数据则作为激活值输入。论文中的数字控制器需要高效地完成以下任务数据重排从片上缓存SRAM或片外内存中读取的IFMAP数据需要被切割、滑动并按照阵列输入端口要求的格式进行重组。结果累加对于多通道卷积模拟阵列一次计算可能只完成部分通道的求和。数字处理单元需要将多次计算的部分和Partial Sum进行累加得到最终输出通道的一个点。池化与激活完成卷积和偏置加法后数字单元需要执行ReLU等激活函数以及池化操作如MaxPooling。这些操作在数字域实现效率最高。“闪电”架构的优势在于其模拟核心的单次计算延迟极低使得即使需要进行多次部分和累加整体的计算吞吐率仍然很高。数字控制器的设计重点在于隐藏数据搬运的延迟通过预取Prefetching和双缓冲Double Buffering等技术确保模拟计算单元始终“有活干”。4.2 针对Transformer的优化数据流Transformer的计算核心是注意力机制涉及大量的矩阵乘法例如Q*K^T和Attention*V。这些矩阵通常很大无法一次性全部放入存内计算阵列。论文的架构需要解决两个关键问题大矩阵的分块计算将大的权重矩阵例如W_Q,W_K,W_V和输入向量分块轮流加载到模拟阵列中。数字控制器的调度算法至关重要它需要最小化权重加载因为模拟阵列的权重编程通常较慢和数据IO的开销。Softmax的近似处理注意力得分后的Softmax函数是非线性的无法在模拟域直接高效完成。论文可能采用了几种策略数字域精确计算将模拟阵列计算得到的Q*K^T结果经过ADC读回数字单元用数字电路或小型处理器核计算Softmax。这需要较高的数据带宽。模拟域近似利用模拟电路的特性如利用电流的指数关系实现近似的Softmax但这通常精度有限且设计复杂。论文更可能选择前者并依靠其高速ADC和数字接口来保障带宽。此外Transformer的前馈网络FFN层通常是两个大的线性变换夹着一个激活函数。这非常适合用此存内计算架构来处理将FFN的权重矩阵映射到阵列中输入向量流过即可完成计算。数字单元负责中间的GeLU或ReLU激活。4.3 可配置的数据流控制器为了实现通用性论文中必定描述了一个可配置的数据流控制器Dataflow Controller或一个精简的指令集。编译器或开发者可以针对CNN或Transformer模型描述其计算图和数据依赖关系。控制器将这些高级描述编译成一系列微指令控制着何时加载权重到哪个模拟子阵列、何时从内存读取输入数据、如何调度ADC转换、数字单元执行何种后处理操作累加、激活、缩放、结果写回到何处。这个控制器的复杂度直接决定了架构的易用性和性能上限。一个好的控制器能像高级语言的编译器一样将计算任务高效地映射到硬件资源上隐藏访问延迟实现计算与通信的重叠。5. 实测性能与能效分析数据背后的设计权衡任何芯片设计最终都要用实测数据说话。ISSCC论文尤其注重可测量的性能指标。对于这篇34.3的论文我们预期会看到在主流CNN模型如ResNet-50, MobileNet和Transformer模型如BERT-base, Vision Transformer上的测试结果。5.1 性能指标解读关键指标包括峰值算力Peak Throughput单位是TOPSTera Operations Per Second。这个数字通常是在最理想情况数据就绪、无冲突、精度最低模式下测得。我们需要关注的是其有效算力Sustained Throughput即在运行完整模型时平均能达到的算力。这反映了数据流调度和内存系统的效率。能效Energy Efficiency单位是TOPS/W。这是存内计算最大的卖点。论文会给出核心计算包括模拟阵列、ADC、数字逻辑的能效以及包含片外内存访问在内的系统级能效。后者往往比前者低一个数量级因为它暴露了“内存墙”问题——从DRAM中搬运模型权重和激活值的功耗巨大。精度Accuracy在目标数据集如ImageNet, GLUE上的分类或理解精度与浮点FP32基线模型的对比。精度损失需要控制在1%以内才算实用。延迟Latency处理单张图片或单个句子的端到端时间。这对于实时应用至关重要。我特别会去查看论文中关于不同位宽下的精度-能效权衡曲线。这能告诉我们为了适配Transformer和CNN他们选择的模拟计算核心的“甜点位宽”是多少。例如可能模拟核心在4-bit时能效最高但为了满足BERT某些层的精度要求需要在数字后处理中融合更高精度的累加最终系统以6-bit的等效精度运行。5.2 与纯数字ASIC和GPU的对比论文一定会将自家芯片与传统的数字AI加速器如NVIDIA GPU的Tensor Core或谷歌的TPU以及其他的存内计算方案进行对比。对比的维度包括能效、算力密度TOPS/mm²和灵活性。vs. 数字ASIC/GPU在能效和算力密度上“闪电”架构应该有数量级的优势尤其是在计算密集型算子MatMul上。但在灵活性支持新模型和开发易用性上GPU的通用编程模型仍然无敌。这篇论文的贡献在于在保持存内计算超高能效的同时通过数字可编程层显著提升了灵活性向通用性迈进了一大步。vs. 其他模拟/数模CIM对比的重点会放在“通用性”上。论文需要证明在运行CNN时其性能不输于专用的CNN CIM芯片在运行Transformer时其性能又显著优于那些为CNN优化的CIM芯片。同时其“闪电”延迟的特性可能使其在需要极低延迟的边端推理场景如自动驾驶的感知模块中独具优势。5.3 面积开销与成本考量数模混合设计必然会引入额外的数字逻辑和ADC这些都会增加芯片面积。论文需要展示其面积分解Area Breakdown模拟阵列占多少ADC占多少数字逻辑和缓存占多少。一个健康的设计应该是模拟计算部分占据主导面积因为那是能效的来源。如果数字控制部分面积过大那就失去了存内计算的意义更像一个带模拟加速器的数字处理器。成本方面这种设计通常依赖于先进的CMOS工艺如12nm, 7nm来实现高密度、低功耗的数字逻辑和模拟开关。如果使用了非易失性存储器如RRAM来存储权重还需要考虑后端集成BEOL Integration的额外工艺步骤和成本。论文可能会讨论其设计与标准CMOS工艺的兼容性这是决定其能否大规模商用的关键。6. 潜在挑战与工程化落地思考尽管论文描绘了美好的前景但从实验室原型到大规模量产应用还有很长的路要走。结合我的经验这个“闪电”架构在实际工程化中可能会遇到以下几个挑战6.1 工艺偏差与长期漂移的校准模拟电路对工艺偏差极其敏感。同一批芯片中不同核心、不同列之间的ADC增益、存算单元的电导都可能存在差异。论文中提到的后台校准算法其复杂度和有效性需要经过大规模芯片测试的验证。校准过程本身会消耗功耗和时间需要在系统空闲时进行。此外非易失性存储器件如果使用可能存在电阻值随时间和编程次数漂移的问题这需要周期性的、更复杂的重校准Re-calibration甚至在线训练On-device Training来补偿这将对系统设计提出更高要求。6.2 软件栈与编译器的缺失“硬件易得软件难求”。再强大的硬件如果没有好用的软件工具链也无法被广大算法工程师使用。这篇论文的架构需要一个全新的编译器。这个编译器需要将PyTorch/TensorFlow模型解析成计算图。进行图优化、算子融合。将计算图映射到硬件上包括权重的量化与映射、数据流的调度、指令的生成。管理校准和补偿的流程。开发这样一套成熟的软件栈其工作量不亚于设计芯片本身。论文中可能只提到了一个手写的、针对特定模型的驱动离通用易用的SDK还有很大距离。6.3 测试与验证的复杂性数模混合芯片的测试成本远高于纯数字芯片。模拟部分的测试需要昂贵的ATE自动测试设备和复杂的测试向量。如何定义测试覆盖率如何快速定位是模拟阵列、ADC还是数字逻辑的故障这需要设计大量的可测试性设计DFT电路如扫描链Scan Chain、内建自测试BIST等这些又会占用额外的芯片面积。6.4 应用场景的精准定位“既能适应Transformer又能适应CNN”听起来很全能但在商业上全能往往意味着在某个特定领域不如专用芯片极致。因此找到最适合的落地场景至关重要。我认为以下几个方向很有潜力边缘AI设备如高端智能手机、AR/VR眼镜、机器人。这些设备需要同时处理计算机视觉CNN和自然语言处理Transformer任务对能效和延迟要求苛刻。智能传感器集成在摄像头或麦克风内进行实时的、低功耗的感知与理解。云端推理加速卡作为GPU的补充专门用于处理对能效敏感的大规模Transformer模型推理负载。最终这篇ISSCC 2024 34.3的论文代表了一个清晰的技术趋势存内计算正在从追求极致的能效向兼顾灵活性和通用性演进。它通过精妙的数模混合架构和电路设计在“专用”与“通用”之间找到了一个颇具吸引力的平衡点。“闪电”般的速度是其性能的宣言而对Transformer和CNN的双重适配则是其野心的体现。当然从论文到产品中间充满了工程挑战。但毫无疑问它为下一代低功耗、高性能AI芯片的设计提供了一个极具参考价值的技术范本。对于我们这些从业者来说关注这类研究不仅是为了了解前沿更是为了思考如何将这些创新点融入到我们解决实际产品问题的工程实践中去。

相关新闻

XGBoost核心原理、调参与工程实践全解析

XGBoost核心原理、调参与工程实践全解析

2026/8/21 18:03:56

1. 项目概述:为什么XGBoost是机器学习竞赛的“大杀器”? 如果你在Kaggle、天池这类数据科学竞赛平台上逛过,或者和做机器学习的朋友聊过天,大概率会听到一个名字:XGBoost。它几乎成了表格数据(Tabular Data…

电赛24小时实战:从真题到最小可行系统的工程方法论

电赛24小时实战:从真题到最小可行系统的工程方法论

2026/9/22 10:47:37

去年带学生做电赛,有个场景印象很深:一个小组在赛前把往届真题刷了好几遍,每个模块单独测试都跑得挺顺,结果到了正式比赛,面对一个看起来差不多的题目,从下午三点卡到晚上十点,连最基本的信号采…

基于鸿蒙OS开发静脉输液智能监控系统(22)-部署发布与未来迭代规划

基于鸿蒙OS开发静脉输液智能监控系统(22)-部署发布与未来迭代规划

2026/8/23 5:54:26

基于鸿蒙OS开发静脉输液智能监控系统(22)-部署发布与未来迭代规划 目录 1. 应用签名与发布 1.1 signingConfigs配置1.2 HAP/APP打包1.3 华为应用市场发布流程 2. 当前MVP状态总结 2.1 已实现功能清单2.2 Mock/Stub服务清单2.3 已知限制 3. 降级功能映射…

CANN/GE ACL数据集缓冲区添加函数

CANN/GE ACL数据集缓冲区添加函数

2026/9/21 18:38:46

aclmdlAddDatasetBuffer 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、Te…

用ffmpeg高效批量调整图片尺寸的实战指南

用ffmpeg高效批量调整图片尺寸的实战指南

2026/9/21 18:41:09

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

2026/9/21 18:36:40

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱 【免费下载链接】transformers 🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and mu…

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

2026/9/21 18:37:26

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system sup…

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

2026/9/21 18:40:29

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

2026/9/21 18:36:17

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system supporting mi…

远程协作的工作台整理

远程协作的工作台整理

2026/9/22 0:19:28

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/21 23:38:13

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/22 0:48:53

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…