首页 > 其他分享 >CIM | RRAM SRAM Fusion CIM 论文阅读

CIM | RRAM SRAM Fusion CIM 论文阅读

时间:2024-04-25 16:57:30浏览次数:26  
标签:.- SRAM RRAM Fusion CIM 精度

CIM 发展这么多年,RRAM CIM 和 SRAM CIM 各自精彩。前几天 TSMC+新竹清华的张孟凡老师团队在 Science 上发表 RRAM + SRAM CIM 的 Fusion CIM 工作[1]

Review

Digital SRAM CIM 相较其他主流 AI 加速器范式区别不大,也是最 promising 接近商用的路线(今年 ISSCC 已有工业界 Axelera AI 和 MediaTek 的工作亮相)。

个人见解,SRAM CIM 是固定 weight 不断刷新输入 activation,计算策略上和 systolic array weight-stationary 策略异曲同工。而 SRAM CIM 准确来说都是 NMC(Near-Memory Computing) 而非像 RRAM 那样真正存储和计算在器件层面融合,计算单元和存储单元还是分离的,只是你中有我我中有你,计算架构上对比 GPU 同一个 SM(Streaming Multiprocessor)中的 share memory SRAM cache 也非常相似,只是 SRAM CIM 的容量往往比 GPU 的 shared memory 更大一些(SRAM Macro 的 size 一般 10 ~ 100 KB 量级不等,而 A100 的 shared memory 则是 5.125 KB[2])。

RRAM CIM 范式则更加特立独行。作为存储 RRAM 的好处是 non-volatile,即是 on-chip memory 也发挥 storge 的功能。然而即使 1T1R-RRAM 相比同为片上的 6T-SRAM 大概有 6x 的密度提升,相比 multi-layer 的 DRAM 或是 flash 单元还是远远不足。所以 RRAM CIM 的工作都会尽量避开和 DRAM 或是 SSD 的交互来突出应用价值,也因此所有在 RRAM 上跑的网络都是类似 ResNet-20 或是 MobileNet 这种轻量级卷积网络。

虽然说 RRAM+SRAM Fusion CIM,但 RRAM CIM 和 SRAM CIM 的地位并非对等,更贴切的是说,用 SRAM 辅助 RRAM CIM。

RRAM drawback

确定了 SRAM 辅助 RRAM 的立意,我们再来回顾 RRAM 的缺点:

  • 写入问题。写入上 RRAM 有 endurance 和 reset-latency 俩个问题。所以一般 RRAM 在 inference 时避免频繁地擦写。
  • 精度问题。精度主要来自模拟计算,这进一步又可以拆分为运行环境的噪声(热噪声等)、器件本身的噪声(RRAM 的非线性,由于制造工艺而引起的每个器件特有的噪声)。减少噪声一般降低 RRAM 的阻态数量和提供更大的电压进而提供动态范围,然而这又会降低 RRAM 存储量和能耗表现。

为了减少由制造工艺的误差引起的器件特有的精度损失,除了在虚拟平台先完成模拟的训练,还会在芯片实体上 on-chip training 微调,这又不可避免地引入 RRAM 的写入。

Fusion CIM

围绕 RRAM 的缺点,Fusion CIM 这篇俩个核心创新改进

  • precision-throughput 之间的 trade-off
  • Adaptive Local Training,减少 on-chip training RRAM 的写入次数

Precision Design Space

Fusion CIM 的核心是 fusion UNIT,每个 fusion UNIT 通过 fusin bridge 将 RRAM CIM 和 SRAM CIM 相连接。

Fusion UNIT 从部署 weight 位置来看,有三种工作模式 memristor-CIM mode、mixed-device CIM mode、SRAM-CIM mode。其中 memristor 又可以进一步挑 MLC,SLC-MLC,SLC 模式,一共是 MM-M、MM-2、MM-1、MM-S、MDM、SM 五种模式,精度依次上升。

fusion unit

神经网络不同计算对精度需求是不一样的,核心部分对精度的需求更大,而其余部分对精度要求相对较低。这也是各种复杂量化策略层出不穷的原因。

基于这个先验,我们可以牺牲一部分网络精度,换取其他指标的提升。这个核心立意继承之前的工作[3],只是加上 SRAM 后又添加了几种新模式。

这分为俩个层次,layer wise 和 in-layer。不同的 layer 可以部署在不同的模式。在同一层,更高位 bit(数值更大的数据)对结果的贡献比低位 bit 贡献更大,因此对同一个数据不同精度的混合模式,都是把高精度放在高位。

除了权重部署,每次执行求和操作数数量也会影响精度,更多的数据相加,带来更大的 throughput 和更低的精度(Voltage supply 不变,更多数据相加需要减小单位 bit-line current 从而受到噪声影响更大)。这篇工作使用 dynamic accumulation 在 throughput 和 precision 之间 trade-off。

Dynamic Accumulation

Adaptive Local Training

之前的 RRAM on-chip learning 要大量擦写 RRAM,而本篇工作 forward 时部分权重部署在 SRAM 上,那么我们固定 RRAM 上的权重,而只修改 SRAM 那部分,用 SRAM 那部分权重修正其余部分 RRAM 噪声带来的影响,从而减少 on-chip training 的写入开销。

写入无法彻底避免,毕竟不涉及 DRAM / SSD,SRAM forward 的权重也是通过 weight transfer 从 RRAM 中读出来的,最终训练完了还是要写回去。

Conclusion

本篇工作选择的工艺节点是 22 nm 流片,如果要在更高节点下模拟精度问题进一步扩大,模拟计算相比纯数字范式吸引力大大降低。虽然 RRAM SRAM Fusion CIM 名称很好听,但正如前文所说,本篇工作还是在 RRAM 赛道上驰骋。


  1. Wen, T.-H., Hung, J.-M., Huang, W.-H., Jhang, C.-J., Lo, Y.-C., Hsu, H.-H., Ke, Z.-E., Chen, Y.-C., Chin, Y.-H., Su, C.-I., Khwa, W.-S., Lo, C.-C., Liu, R.-S., Hsieh, C.-C., Tang, K.-T., Ho, M.-S., Chou, C.-C., Chih, Y.-D., Chang, T.-Y. J., & Chang, M.-F. (2024). Fusion of memristor and digital compute-in-memory processing for energy-efficient edge computing. Science, 384(6693), 325–332. https://doi.org/10.1126/science.adf5538 ↩︎

  2. A100 数据来源见 Song, X., Wen, Y., Hu, X., Liu, T., Zhou, H., Han, H., Zhi, T., Du, Z., Li, W., Zhang, R., Zhang, C., Gao, L., Guo, Q., & Chen, T. (2023). Cambricon-R: A Fully Fused Accelerator for Real-Time Learning of Neural Scene Representation. 56th Annual IEEE/ACM International Symposium on Microarchitecture, 1305–1318. https://doi.org/10.1145/3613424.3614250 ↩︎

  3. Hsu, H.-H., Wen, T.-H., Huang, W.-H., Khwa, W.-S., Lo, Y.-C., Jhang, C.-J., Chin, Y.-H., Chen, Y.-C., Lo, C.-C., Liu, R.-S., Tang, K.-T., Hsieh, C.-C., Chih, Y.-D., Chang, T.-Y. J., & Chang, M.-F. (2024). A Nonvolatile AI-Edge Processor With SLC–MLC Hybrid ReRAM Compute-in-Memory Macro Using Current–Voltage-Hybrid Readout Scheme. IEEE Journal of Solid-State Circuits, 59(1), 116–127. https://doi.org/10.1109/JSSC.2023.3314433 ↩︎

标签:.-,SRAM,RRAM,Fusion,CIM,精度
From: https://www.cnblogs.com/devil-sx/p/18158056

相关文章

  • list all possible combination of group separator and decimal separator by iterat
    一共有7种子组合01[,2C][.2E]en-US02[C2A0][,2C]fr-FR03[.2E][,2C]da-DK04[’E28099][.2E]de-CH05[C2A0][.2E]tn-BW06[,2C][/2F]fa-IR07[’E28099][,2C]wae-CHvarlist=CultureInfo.GetCultures(CultureTypes.AllCultures);Dictionary<string,List<str......
  • Java BigDecimal出现科学计数法
    JavaBigDecimal出现科学计数法查看BigDecimal的toString()源码,可以发现出现toString()出现科学计数法的原因 privateStringlayoutChars(booleansci){...intcoeffLen=coeff.length-offset;longadjusted=-(long)scale+(coeffLen-1);......
  • 争论不休的一个话题:金额到底是用Long还是BigDecimal?
    在网上一直流传着一个争论不休的话题:金额到底是用Long还是用BigDecimal?这个话题一出在哪都会引起异常无比激烈的讨论。。。。比如说这个观点:算钱用BigDecimal是常识有支持用Long的,将金额的单位设计为分,然后乘以100,使用Long进行存储以及计算,这样不用担心小数点问题。并且一些......
  • 痞子衡嵌入式:使能i.MXRT1050,1060 Hab签名或加密启动时App链接在片内SRAM的限制
    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是使能i.MXRT1050,1060Hab签名或加密启动时App链接在片内SRAM的限制。最近有客户反馈,在RT1060上测试Non-XIP程序启动,如果程序体部分链接进0x20280000地址之后的片内OCRAM区域(这部分是由FlexRAM......
  • 蓝桥杯备考随手记: BigInteger 和 BigDecimal
    在Java中,BigInteger和BigDecimal是用来处理大整数和高精度浮点数的类,分别属于java.math包。下面分别介绍这两个类的特点、用途和常用方法:BigInteger:特点:BigInteger类表示任意精度的整数,可以处理比long型和int型更大范围的整数。BigInteger是不可变的(immutable)类,一......
  • 国产工业软件,就用CIMPro孪大师
    国产工业软件的主要分类包括研发设计类、生产控制类、经营管理类、嵌入式软件类以及新兴的工业互联网平台类。这些分类涵盖了工业制造的全过程,从产品的研发设计到生产控制,再到经营管理,都有相应的软件工具提供支持。在国产三维工业数字孪生仿真平台中,CIMPro孪大师凭借2个快,火爆......
  • 常用API(一):BigDecimal
     解决小数运算失真的问题 packagecom.itheima.Math;importjava.math.BigDecimal;publicclassbigdecimal{publicstaticvoidmain(String[]args){System.out.println((0.1+0.2));//把小数转换成字符串BigDecimala1=newBigD......
  • BigDecimal相加一直为零的坑,解决BigDecimal相加为0的方法
    BigDecimal相加一直为零的坑,解决BigDecimal相加为0的方法使用BigDecimal时,相加一直为零,感觉有点坑。错误写法:BigDecimalafe=newBigDecimal("0");for(inti=0;i<10;i++){BigDecimaldecimal=newBigDecimal("1000");......
  • DecimalFormat
    概述<code>DecimalFormat</code>isaconcretesubclassof<code>NumberFormat</code>thatformatsdecimalnumbers. Ithasavarietyoffeaturesdesignedtomakeitpossibletoparseandformatnumbersinanylocale,includingsupport......
  • BigDecimal
    概述Immutable,arbitrary-precisionsigneddecimalnumbers.不可变的、任意精度的有符号的十进制数;A{@codeBigDecimal}consistsofanarbitraryprecisioninteger<i>unscaledvalue</i>anda32-bitinteger<i>scale</i>.  Ifzeroorpositive,thescal......