论文:深度可分离神经网络存内计算处理芯片
引言:SRAM - CIM芯片在处理深度可分离神经网络时面临的挑战
深度可分离卷积(Depthwise separable convolution, DSC)由逐深度卷积(DW)和逐点卷积(PW)组成,逐深度卷积用于提取空间特征,逐点卷积用于提取通道特征,如图1所示。简而言之,逐深度卷积的深度维度不变而改变H/W,即输入特征图通道数=卷积核个数=输出特征图个数;逐点卷积的H/W不变而改变深度维度,即用1x1的卷积核进行升维[2]。相较于传统的卷积神经网络,深度可分离卷积具有如下四个优势:
- 更少的参数:可减少输入通道数量,从而有效地减少卷积层所需的参数;
- 更快的速度:运行速度比传统卷积快;
- 更加易于移植:计算量更小,更易于实现和部署在不同的平台上;
- 更加精简:能够精简计算模型,从而在较小的设备上实现高精度的运算。
图1 深度可分离卷积[1]
因此参数量更少的深度可分离卷积神经网络更容易部署在边缘AI设备上。但是目前基于SRAM的存算一体芯片大多只针对DW和PW中的一种优化了乘累加操作(MAC),所以SRAM-CIM芯片在能量效率、吞吐量和内存利用率方面仍然面临着限制,如图2(左)所示:( 1 )内存能量利用率低,主要由于从CIM宏块外的缓存中重复访问,占总能耗的30 %以上;( 2 )短长度MAC和卷积滑动激活导致数组时间利用率差,增加推理执行周期;( 3 )由于DW卷积对输入和输出激活的重复存储,导致内存空间利用率不足,造成双重内存开销。
图2 SRAM-CIM在处理深度可分离神经网络方面面临的挑战
针对上述挑战,来自北京大学集成电路学院王源教授-唐希源研究员团队首次提出了近存计算与存内计算混合的新型计算架构,针对深度可分离卷积计算,实现了国际领先的能量效率和面积效率,且该项工作以MixCIM: A Hybrid-Cell-Based Computing-in-Memory Macro with Less-Data-Movement and Activation-Memory Reuse for Depthwise Separable Neural Networks为题,发表于2024 CICC。如图2(右)所示,文章提出了三个创新点:
- 可滑动eDRAM阵列增强DW卷积并行性以减少推理执行周期;
- 混合内存计算,通过CNM原理将激活输入到权重的CIM数组中,以提高能量效率;
- 输入和输出激活之间的内存共享方案,以提高有效内存利用率。
课题组在28nm CMOS工艺下流片进行性能测试,该芯片能够达到17.2 TOPS/W的能量效率和1.14 TOPS/mm2的面积效率,实现92.47%的推理精度。该芯片突出的能量效率和面积效率在边缘端智能设备中极具应用前景。
论文地址:https://ieeexplore.ieee.org/document/10529086
- 深度可分离神经网络存内计算处理芯片
创新点一:可滑动eDRAM阵列提升 DW 卷积并行性
如图3所示,MixCIM 包含 144×128 的 7T2C eDRAM CIM 阵列和 8T1C SRAM 阵列,二者通过融合模块相连。eDRAM - CIM 阵列有 16 个 深度卷积通道(DCCs),可存 DW 卷积中 16 通道的激活值与权重,每个 通道的激活值(DCC - A) 含 3 个 卷积滑动窗口电路(CSWCs),能同时计算 3 组子特征卷积。eDRAM 存储单元由 2T1C 存储、3T 读出和 2T1C 计算部分组成,实现读写分离并支持符号数值计算,为卷积计算提供便利架构与功能支持。
图3 电路的总架构以及可滑动eDRAM阵列
融合电路的映射模块含两组 3 - to - 1 开关,由 SLD_HOZ [2:0] 和 SLD_VER [2:0] 信号控制水平和垂直滑动,确保卷积窗口准确滑动。CSWC 中的局部滑动电路通过 tri - state inverter 连接 LRBL 和 LBL,可选择目标 WWL 和源 RWL 进行刷新,在 eDRAM 刷新和卷积窗口滑动中,能准确传输数据并存储计算结果,保障卷积计算的连续性与数据完整性。
流水线操作分两阶段,第一阶段第 i 个通道激活数据卷积滑动时,第 (i + 1) 个通道可同时进行 MAC 操作;第二阶段任务切换,形成连续作业流程。与传统非流水线方式相比,该方式显著提高计算资源利用率,减少计算单元空闲等待时间,大幅提升数据处理速度。经实际测试,在相同条件下,其处理速度可能是传统方式的 1.5 倍甚至更高,有效提升 MixCIM 在 DW 卷积中的吞吐量,且提升倍数因模型和场景而异。
创新点二:混合内存计算减少数据移动
在 MixCIM 中,近内存计算(CNM)与存内计算(CIM)融合是实现高效计算的关键,依据 CNM 原理,激活值被输入到权重的 CIM 阵列中。由图3所示,在计算时,激活值从 DCC-A 出发,经过融合模块与从 DCC-W 中检索出的权重进行匹配,完成乘积累加(MAC)操作。这种路径优化避免了激活值和权重在不同存储区域和计算单元间的长距离传输。结合图3,由于 eDRAM 具有较低的访问能耗,且在 MixCIM 结构中数据移动距离短,减少了数据传输过程中的能量消耗,从而提升了系统能效。
符号位调制(SBM)电路在符号数值计算中也发挥了重要作用。在图 4 中,可以看到在 eDRAM 阵列中,一个多位权重单元(MbWU-D)由 8 个 7T2C bitcells 和一个 SBM 电路组成。首先,SBM 电路负责确定乘积的符号位,并根据符号位将输入(IN)连接到 Q 或 QB 计算路径进行位反转。然后,符号位作为权重配置电路中按位模拟累加的最低有效位(LSB)值,完成从补码格式到符号数值编码的转换。
图 4 用于在高斯分布下提高符号数值计算能效的 eDRAM 和 SRAM 的多位权重单元(MbWU)
这种符号数值计算方式具有节能优势。在模型参数服从高斯分布的情况下,符号数值计算的电压切换活动更少。因为传统的补码计算在
处理负数时,需要进行复杂的位运算来表示负数,而符号数值计算直接分离符号位和数值位,简化了计算过程中的电压变化。图5实验结果也验证了这一点,符号数值计算单元相较于 2 的补码计算,功率降低了 21.5%,有效减少了计算过程中的能量消耗,进一步提升了 MixCIM 在深度可分离卷积计算中的能效,这一优势从图 4 展示的位单元和 SBM 电路的协作关系中可得到更清晰的理解。
图 5不同阵列尺寸下 SRAM 读写与 eDRAM 读写的访问能耗对比及输入访问能耗降低情况
创新点三:内存共享提高内存利用率
在 MixCIM 架构中,DW 卷积完成后,输出激活数据可存储于空闲 eDRAM 位单元或覆盖输入激活通道中不再需用的部分。如图 6的 eDRAM CIM 阵列,DCC - A 存储输入激活值,卷积结束后,部分输入值使命完成,输出激活值便可复用其空间,就像房间物品腾挪复用空间。此策略避免为输出激活值另辟内存,显著减少内存开销。在边缘 AI 设备等内存受限场景,可让设备在不增内存成本下,加载更大模型或处理更高分辨率图像,提升性能与适用范围。
图 6基于 eDRAM 的存内计算(CIM)
此外,内存共享策略与可滑动 eDRAM 阵列紧密配合。从图 7 能看出,可滑动 eDRAM 阵列在执行卷积计算时,产生的中间及最终结果都依据内存共享策略存储复用。在进行 DW 卷积时,输入特征被划分为多个 3×3 子特征,每次计算完一个子特征的卷积结果,可直接存储到按策略分配的 eDRAM 区域,同时不影响阵列继续滑动计算下一个子特征。而且,该策略与混合内存计算协同良好。在图 3 展示的架构中,激活值按近内存计算(CNM)原理输入权重的 CIM 阵列计算后,产生的输出激活值存储复用同样遵循内存共享策略,保证数据在存储和计算单元间高效流转。
图 7深度卷积激活滑动机制:特征划分、滑动操作及权重激活映射详解
在计算效率方面,内存共享策略减少了内存分配和释放带来的时间开销,优化数据存储位置。从图 8 的计算流程可以看出,数据能快速被计算单元访问,加速卷积计算,让计算过程连贯高效。在能效层面,减少内存读写次数和空间分配,降低系统功耗,这对依靠电池供电的移动设备等功耗敏感设备极为有利。在系统可扩展性上,提升的内存利用率使系统能处理更大规模数据和复杂模型。随着神经网络模型不断发展,MixCIM 能更好适应新模型需求,延长系统的使用寿命和应用场景,为深度可分离卷积的高效实现提供有力支持。
图 8 深度卷积与卷积滑动流水线:结构、流程及性能增益解析
- 实验评估
为了验证MixCIM架构的性能,研究团队选用了MobileNet-V2作为测试模型。MobileNet-V2具有轻量级的特点,是常见的移动和嵌入式应用场景下的基准测试模型。该模型在ImageNet数据集的输入分辨率一般设定为224×224,深度乘子和宽度乘子均为1.0,整个模型的参数量约为350万,计算量约为3亿次MAC操作。在性能指标方面,论文重点关注了能量效率、计算精度和内存利用率。能量效率以TOPS/W为单位,体现了芯片在单位功耗下执行MAC操作的效率;计算精度则通过在 ImageNet 数据集上的 Top-1 和 Top-5 准确率来评估模型的推理性能;内存利用率指的是存储单元阵列中实际用于存储模型权重的比例,反映了存储资源的有效利用程度。
实验结果表明,MixCIM能够实现每秒约 1000 帧的处理速度,满足了大部分实时应用场景对算力和延时的要求。得益于 MixCIM 架构的几个关键创新点,混合信号计算单元综合了模拟电路和数字电路在MAC与数据处理方面的灵活性,显著提升了能量效率并达到了 5 TOPS/W。为了更全面地评估 MixCIM 架构的其他性能,论文将其与其他同类型的工作进行了比较。在计算精度方面,MixCIM在ImageNet数据集上使用CIFAR10实现了最高92.47 %的准确率,与一般的数字电路实现方式相近。权重存储策略减少了数据在芯片内部的搬运开销,使得MixCIM的内存利用率最高可提高32.4%,实现了较同类设计2.19倍的计算加速效果。
图9 MixCIM在计算加速方面领先于同类产品
图10 MixCIM的功耗分布
综上所述,MixCIM 架构在移动设备、嵌入式系统以及边缘计算等领域具有广阔的应用前景,有望显著降低功耗、延长电池续航时间,并提升实时性能。
参考资料
- 四、CNNs网络架构-深度可分离卷积(MobileNet v1、MobileNet v2、MobileNet v3、Xception、ShuffleNet v1、ShuffleNet v2)_retinaface 瓶颈结构-CSDN博客
- 深入浅出理解深度可分离卷积(Depthwise Separable Convolution)_dwconv-CSDN博客
- MixCIM: A Hybrid-Cell-Based Computing-in-Memory Macro with Less-Data-Movement and Activation-Memory-Reuse for Depthwise Separable Neural Networks | IEEE Conference Publication | IEEE Xplore
相关文章:

论文:深度可分离神经网络存内计算处理芯片
引言:SRAM - CIM芯片在处理深度可分离神经网络时面临的挑战 深度可分离卷积(Depthwise separable convolution, DSC)由逐深度卷积(DW)和逐点卷积(PW)组成,逐深度卷积用于提取空间特征ÿ…...

hdrnet,Deep Bilateral Learning for Real-Time Image Enhancement解读
论文、代码和ppt地址:Deep Bilateral Learning for Real-Time Image Enhancement 论文使用的数据集: HDR: 这是一个复杂的摄影管道,包括色彩校正、自动曝光、去雾和色调映射等操作。 MIT “FiveK” 数据集: 这个数据集由 Bychkovsky 等人 提…...

Android系统开发(十五):从 60Hz 到 120Hz,多刷新率进化简史
引言 欢迎来到“帧率探索实验室”!今天,我们要聊聊 Android 11 中对多种刷新率设备的支持。你可能会问:“这和我写代码有什么关系?”别急,高刷新率不仅仅让屏幕更顺滑,还会直接影响用户体验。想象一下&…...

js判断一个数组对象中是否有相同的值
let userTitleLevelList[{title:医生,code:20},{title:老师,code:21}]; 如果一个数组对象格式如上面。如果有一样的对象就提示。即:title和code都是一样的内容、 const hasDuplicate userTitleLevelList.some((item, index, array) > { return array.filter(…...

基于深度学习的视觉检测小项目(十五) 用户的登录界面
用户管理离不开的是消息框(QMessageBox)和对话框(QDialog),比如对话框用于用户名和密码输入,消息框用于提示登录成功、密码错误。 • 基础知识:PySide6(PyQT5)的常用对话…...

redis-排查命中率降低问题
1.命中率降低带来的问题 高并发系统,当命中率低于平常的的运行情况,或者低于70%时,会产生2个影响。 有大量的请求需要查DB,加大DB的压力;影响redis自身的性能 不同的业务场景,阈值不一样,一般…...

ui文件转py程序的工具
源博客连接: PyCharm中利用外部工具uic转成的py文件,里面全是C代码,并非python类型的代码,导致大量报错。。。_pyside6-uic为什么把ui转为了c-CSDN博客 如果想把ui文件转为py文件,首先设置pycharm的外部工具…...

Alluxio 联手 Solidigm 推出针对 AI 工作负载的高级缓存解决方案
作者:Wayne Gao, Yi Wang, Jie Chen, Sarika Mehta Alluxio 作为全球领先的 AI 缓存解决方案供应商, 提供针对 GPU 驱动 AI 负载的高速缓存。其可扩展架构支持数万个节点,能显著降低存储带宽的消耗。Alluxio 在解决 AI 存储挑战方面的前沿技…...

Oracle 数据库常见字段类型大全及详细解析
在工作期间会遇到数据库建表的业务,经常会使用复制粘帖等操作,而不清楚数据库的字段类型。本文记录了 Oracle 数据库常见字段类型,根据不同的数据需求,可以选择不同的字段类型来存储数据。 文章目录 一、字符类型(Char…...

U3D的.Net学习
Mono:这是 Unity 最初采用的方式,它将 C# 代码编译为中间语言 (IL),然后在目标平台上使用虚拟机 (VM) 将其转换为本地机器码执行。 IL2CPP:这是一种较新的方法,它会将 C# 代码先编译为 C 代码,再由 C 编译器…...

Tomcat下载配置
目录 Win下载安装 Mac下载安装配置 Win 下载 直接从官网下载https://tomcat.apache.org/download-10.cgi 在圈住的位置点击下载自己想要的版本 根据自己电脑下载64位或32位zip版本 安装 Tomcat是绿色版,直接解压到自己想放的位置即可 Mac 下载 官网 https://tomcat.ap…...

adb常用指令(完整版)
1、adb devices 查看是否连接到设备 2、adb install [-r] [-s] 安装app,-r强制,-s安装sd卡上 3、adb uninstall [-k] 卸载app,-k保留配置和参数 4、adb push 把本地文件上传设备 5、adb pull 下载文件到本地 6、cd D:\sdk\platform-tool…...

大数据学习(36)- Hive和YARN
&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博主哦ᾑ…...

C# ASP.NET MVC项目内使用ApiController
1.在App_Start文件夹新建WebApiConfig.cs文件,建立webApi路由的注册方法。 using System.Web.Http;namespace PrivilegeManager {public class WebApiConfig{public static void Register(HttpConfiguration config){config.MapHttpAttributeRoutes();config.Route…...

Kafka 入门与应用实战:吞吐量优化与与 RabbitMQ、RocketMQ 的对比
前言 在现代微服务架构和分布式系统中,消息队列作为解耦组件,承担着重要的职责。它不仅提供了异步处理的能力,还能确保系统的高可用性、容错性和扩展性。常见的消息队列包括 Kafka、RabbitMQ 和 RocketMQ,其中 Kafka 因其高吞吐量…...

“推理”(Inference)在深度学习和机器学习的语境
“推理”(Inference)在深度学习和机器学习的语境中,是指使用经过训练的模型对新数据进行预测的过程。将其简单地理解为“模型的应用阶段”。在这一阶段,我们不再进行模型训练,而是利用已训练好且保存下来的模型来获取对…...

字节腾讯阿里大厂面经汇总:Java集合(容器)大厂面试题及参考答案
ArrayList 的扩容机制以及删除操作的时间复杂度 ArrayList 是 Java 中非常常用的一个集合类,它是基于数组实现的动态数组。当我们创建一个 ArrayList 时,如果不指定初始容量,它会有一个默认的初始容量(通常是 10)。当我们向 ArrayList 中添加元素时,如果元素的数量达到了…...

数据结构(初阶)(一)----算法复杂度
算法复杂度 算法复杂度数据结构算法算法效率复杂度的概念 数据结构 数据结构(Data Structure)是计算机存储、组织数据的⽅式,指相互之间存在⼀种或多种特定关系的数据元素的集合。没有⼀种单⼀的数据结构对所有⽤途都有⽤,所以我们要学各式各样的数据结…...

构建高效稳定的网络环境
概述 网络技术是当今IT行业的重要组成部分,构建高效稳定的网络环境对于企业、个人和互联网发展至关重要。本文将探讨网络技术中的关键要素,包括网络协议、网络架构、网络安全和网络优化,并提供实用的技巧和最佳实践,以帮助您构建…...

使用Edge打开visio文件
使用Edge打开visio文件 打开Edge浏览器搜索‘vsdx edge’ 打开第一个搜索结果 Microsoft Support 根据上述打开的页面进行操作 第一步:安装Visio Viewer 第二步:添加注册表 桌面新增文本文件,将下面的内容放入新建文本中,修…...

ChatGPT Prompt 编写指南
一、第一原则:明确的意图 你需要明确地表达你的意图和要求,尽可能具体、描述性、详细地描述所需的上下文、你期望的结果等。你的要求越明确,越有希望获得你想要的答案。 糟糕的案例 ❌ 写一首关于 OpenAI 的诗。 更好的案…...

蚁群算法 (Ant Colony Optimization) 算法详解及案例分析
蚁群算法 (Ant Colony Optimization) 算法详解及案例分析 目录 蚁群算法 (Ant Colony Optimization) 算法详解及案例分析1. 引言2. 蚁群算法 (ACO) 算法原理2.1 蚂蚁觅食行为2.2 算法步骤2.3 数学公式3. 蚁群算法的优势与局限性3.1 优势3.2 局限性4. 案例分析4.1 案例1: 旅行商…...

安卓动态设置Unity图形API
命令行方式 Unity图像api设置为自动,安卓动态设置Vulkan、OpenGLES Unity设置 安卓设置 创建自定义活动并将其设置为应用程序入口点。 在自定义活动中,覆盖字符串UnityPlayerActivity。updateunitycommandlineararguments (String cmdLine)方法。 在该方法中,将cmdLine…...

通信协议—WebSocket
一、WebSocket编程概念 1.1 什么是WebSocket WebSocket 是一种全双工通信协议,允许在客户端(通常是浏览器)和服务器之间建立持久连接,以实现实时的双向通信。它是 HTML5 标准的一部分,相比传统的 HTTP 请求ÿ…...

helm推送到harbor私有库--http: server gave HTTP response to HTTPS client
harbor私有库访问的是http模式 harbor 2.8版本以上可以存储helm镜像 docker镜像推送的时候需要docker端配置insecure-registries 发现helm推送只能在harbor部署的本机使用localhost才能推送成功,即 helm push xxx.tgz oci://localhost:80/library 使用helm pus…...

数据结构——实验一·线性表
海~~欢迎来到Tubishu的博客🌸如果你也是一名在校大学生,正在寻找各种变成资源,那么你就来对地方啦🌟 Tubishu是一名计算机本科生,会不定期整理和分享学习中的优质资源,希望能为你的编程之路添砖加瓦⭐&…...

快速搭建深度学习环境(Linux:miniconda+pytorch+jupyter notebook)
本文基于服务器端环境展开,使用的虚拟终端为Xshell。 miniconda miniconda是Anaconda的轻量版,仅包含Conda和Python,如果只做深度学习,可使用miniconda。 [注]:Anaconda、Conda与Miniconda Conda:创建和管…...

OpenCV相机标定与3D重建(66)对立体匹配生成的视差图(disparity map)进行验证的函数validateDisparity()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 使用左右检查来验证视差。矩阵 “cost” 应该由立体对应算法计算。 cv::validateDisparity 函数是 OpenCV 库中用于对立体匹配生成的视差图&…...

2025年新开局!谁在引领汽车AI风潮?
汽车AI革命已来。 在2025年伊始开幕的CES展上,AI汽车、AI座舱无疑成为了今年汽车行业的最大热点。其中不少车企在2025年CES上展示了其新一代AI座舱,为下一代智能汽车的人机交互、场景创新率先打样。 其中,东软集团也携带AI驱动、大数据支撑…...

Spring自定义BeanPostProcessor实现bean的代理Java动态代理知识
上文:https://blog.csdn.net/qq_26437925/article/details/145241149 中大致了解了spring aop的代理的实现,其实就是有个BeanPostProcessor代理了bean对象。顺便复习下java代理相关知识 目录 自定义BeanPostProcessor实现aopJava动态代理知识动态代理的几…...