isscc2024 short course4 In-memory Computing Architectures
新兴的ML加速器方法:内存计算架构
1. 概述
内存计算(In-memory Computing)架构是一种新兴的机器学习加速器方法,通过将计算能力集成到存储器中,以减少数据移动的延迟和能耗,从而提高计算效率和性能。这种方法特别适用于需要大量数据处理的深度学习任务。
出现存内计算的原因
IMC与数字电路的优势
2. 内存计算的优势
- 减少数据移动:在传统计算架构中,数据在处理器和存储器之间频繁移动,导致延迟和能耗增加。内存计算通过在存储器内进行计算,显著减少了数据移动,提高了能效。
- 提升计算效率:将计算单元直接集成到存储器中,可以在数据被读取的同时进行计算,减少了数据传输的时间开销。
- 适应性强:内存计算架构可以适应多种计算任务,包括矩阵乘法、卷积操作等常见的深度学习计算任务。
高效的矩阵-向量乘法 (MVM) 引擎:
IMC架构特别擅长执行矩阵-向量乘法操作,这是许多机器学习算法中的核心计算任务。
通过在存储器阵列内部进行计算,IMC可以大幅减少数据在处理器和存储器之间的移动,从而降低能耗和提高性能。
数字-数字-模拟混合计算:
某些IMC设计采用数字-数字-模拟(Digital-Digital-Analog, DDA)计算模型,其中模拟计算可以在数字域之间执行,以利用模拟电路的高并行性和低能耗特性。
带噪声的MVM计算:
IMC计算可能会引入噪声,这需要在设计时考虑。例如,模拟计算可能会受到电路噪声的影响。
设计者需要在计算精度和能耗效率之间做出权衡。
定点数表示(Fixed-point Data Representations):
无符号数(Unsigned): 用于表示非负数,可以转换为有符号数。
二进制补码(2’s Complement): 用于表示有符号整数,是计算机中最常用的表示法。
双极性编码(Bipolar Encoding): 使用+1和-1来表示数值,适用于某些特定的硬件实现。
浮点数表示(Floating-point Data Representations):
标准浮点数:在GPU和CPU中常用的表示法,具有动态范围和精度。
BFloat:一种新的浮点数格式,旨在提供比标准浮点数更高的性能和效率。
Posit:一种新的浮点数表示法,旨在减少复杂性并提供更好的精度。
输入调制格式(Input Modulation Formats):
脉宽调制(Pulse-width modulation, PWM): 调制脉冲的宽度来表示信息。
脉幅调制(Pulse-amplitude modulation, PAM): 调制脉冲的幅度来表示信息。
脉密度调制(Pulse-density modulation, PDM): 调制脉冲的密度来表示信息。
二进制(归零)调制(binary (RZ) modulation): 最常见的调制方式,使用二进制值来表示数据。
标准浮点数:GPU和CPU中的标准,具有较高的动态范围和复杂性,但也带来了更高的精度。
BFloat:最近在IMC中采用的一种浮点数表示,它在保持较高动态范围的同时,比标准浮点数具有更高的复杂性和精度。
Posit:一种新的浮点数表示法,旨在在减少复杂性的同时提供更好的精度。Posit通过共享指数或张量共享指数来缓解量化过程中的稳定性问题,提供了更多的浮点级别来适应感兴趣的“区域”。
具体来说,浮点数表示法包括以下几个关键部分:
唯一指数(unique exponent):每个浮点数有自己的指数部分。
共享指数(shared exponent):一组浮点数共享同一个指数部分。
张量共享指数(tensor shared exponent):在更广泛的数据集中共享指数部分。
Posit数据格式通过牺牲一些精度来减少浮点数表示的复杂性,这对于IMC的使用尤其重要,因为它可以提高能效和性能。这种格式特别适合于AI和机器学习应用,这些应用可以容忍一定程度的近似计算。
请注意,浮点数表示法的选择会影响计算的精度和硬件实现的复杂性。在设计IMC架构时,需要根据应用的具体需求和硬件的性能目标来选择合适的浮点数表示法。
算术分解的几种方法
BM 分解 (Binary-Multibit):
这种方法结合了二进制表示的权重和多比特表示的输入(或反之),通过利用二进制和多比特算术的优点,实现更灵活和高效的计算。
例如:BM 分解涉及位级操作和累加过程,处理不同的表示形式,优化特定硬件配置或计算效率 。
BB 分解 (Binary-Binary):
这种方法对权重和输入都使用二进制表示,通常涉及位级操作,如按位异或 (XOR) 和与 (AND) 运算。
例如:对于给定的输入和权重,BB 分解将使用 w ⨁ x(XNOR/AND 乘法)进行计算,结果在模拟方式下进行累加,然后通过模数转换器 (ADC) 数字化 。
MM 分解 (Multibit-Multibit):
在这种分解中,权重和输入都以多比特格式表示。通常用于需要更高精度的传统数字计算中。
例如:MM 分解方法涉及操作如 w * x,其中两个操作数都是多比特的,可能导致更高的精度和计算强度,但需要更复杂的硬件来有效处理多比特算术 。
每种分解方法在计算复杂度、硬件需求和效率方面都有不同的权衡,选择哪种方法取决于具体应用的需求和所使用的硬件架构 。
计算模型:
QS (Charge Summing): 电荷求和模型,采用标准6T位元存储器,通过行并行计算实现,但受制于电流和时间的变化、钳位、热噪声和读扰问题。
QR (Charge Redistribution): 电荷重分布模型,也称为“电荷域计算”,需要6T+位元存储器,准确性受到信号级别因子损失、电容不匹配、电荷注入和热噪声的限制。
IS (Current Summing): 电流求和模型,普遍应用于基于eNVM的IMC中,准确性和面积主要由电流感应读出决定,能耗相对较低。
DG (Digital Summing): 数字求和模型,用于数字IMC,通过数字累加器替代了模拟求和,避免了ADCs(模数转换器)的使用,提高了准确性和可扩展性。
位元架构:
SRAM (T): 6T、10T、12T、18T位元存储器,通常用于QS模型,提供最高的面积密度。
SRAM (TC): 8T1C、10T1C位元存储器,用于QR模型,解决了读扰问题,支持更高的并行度。
SRAM (D): 6T+D、8T+D位元存储器,用于DG模型,转向数字IMC。
eDRAM: 1T1C、3T位元存储器,用于QR模型。
eNVM: 1T1R位元存储器,用于IS模型,通常与eNVM存储器配合使用。
IMC目前有基于SRAM digital和eNVM这三种结构
基于SRAM的IMC
优点:
高速读写:SRAM提供快速的数据访问速度,适合需要高吞吐量的应用。
易失性:SRAM是易失性的,断电后数据会丢失,但这也使得写入操作可以频繁进行。
缺点:
面积和成本:相比eNVM,SRAM在相同的存储密度下占用更多芯片面积,成本也更高。
功耗:由于需要持续刷新,SRAM的功耗相对较高。
数字(Digital)IMC
优点:
可预测性:数字电路的行为可预测,便于设计和验证。
灵活性:数字设计可以轻松适应不同的计算需求,具有很好的可编程性和灵活性。
缺点:
能耗:数字电路可能在执行某些操作时能耗较高,特别是当涉及复杂的逻辑运算时。
延迟:数字电路可能存在较高的延迟,尤其是在数据需要在多个阶段或模块间传递时。
基于eNVM的IMC
优点:
非易失性:eNVM能够在断电后保留数据,适合作为长期存储解决方案。
低功耗:相比SRAM,eNVM通常具有更低的功耗,特别是在保持数据状态时。
缺点:
写入限制:eNVM的写入次数有限,可能不适合频繁写入的应用。
读取放大:eNVM的读取操作可能涉及放大过程,这可能影响性能和能效。
异同点
相同点:
内存计算能力:所有这些IMC架构都旨在减少数据移动,直接在存储器中进行计算,以提高能效和性能。
并行处理:它们都能够支持一定程度的并行处理,适合执行机器学习等并行计算密集型任务。
不同点:
存储器类型:SRAM、数字和eNVM是三种不同的存储技术,它们在存储密度、速度、功耗和成本方面具有不同的特点。
计算模型:SRAM通常用于QS(电荷求和)模型,数字IMC可能使用DG(数字求和)模型,而eNVM适用于IS(电流求和)模型。
适用场景:SRAM IMC适合高速缓存和短期数据处理,数字IMC适合灵活的计算任务,eNVM IMC适合需要数据持久性的应用。
设计挑战:每种技术都有其设计挑战,如SRAM的高功耗,数字电路的延迟问题,以及eNVM的写入耐用性和读取放大问题。
3. 关键技术
- 嵌入式存储计算(Processing In Memory, PIM):在存储器芯片中集成计算能力,使数据可以在存储器内部直接进行处理,减少了数据传输的需求。
- 电阻式RAM(ReRAM)和相变存储器(PCM):这些新型存储技术不仅具有存储数据的功能,还可以通过改变存储单元的电阻或相态来执行计算操作。
- 混合存储架构:结合传统的DRAM和新型的非易失性存储器(如ReRAM、PCM),实现高效的存储和计算功能。
4. 设计挑战
- 存储器的可靠性和持久性:内存计算架构依赖于新型存储技术的可靠性,需要确保这些存储器在频繁读写操作下的稳定性和耐用性。
- 计算精度:在内存中进行计算时,如何保证计算的精度和准确性是一个关键问题,特别是在处理浮点运算时。
- 热管理:内存计算架构在存储器中集成了计算单元,增加了芯片的功耗密度,如何有效管理热量是设计中的重要挑战。
5. 实际应用
- 深度学习推理:内存计算架构特别适用于深度学习模型的推理阶段,通过减少数据移动和提升计算效率,可以显著提高推理速度和能效。
- 边缘计算设备:在资源受限的边缘计算设备中,内存计算架构可以提供高效的计算能力,同时保持低功耗。
总结
内存计算架构作为新兴的ML加速器方法,通过在存储器中集成计算能力,显著减少了数据移动的延迟和能耗,提升了计算效率。尽管面临可靠性、计算精度和热管理等设计挑战,但在深度学习推理和边缘计算设备中的应用前景广阔。通过不断的发展和优化,内存计算架构有望成为未来ML加速器的重要组成部分。
未来机遇
算法特定架构(Algorithm-Specific Architectures):
设计专门针对特定算法或一类算法的IMC架构,可以优化性能和能效。
为不同的机器学习任务定制硬件,以实现更高的计算效率。
工作负载映射(Workload Mapping):
研究如何将不同的计算工作负载映射到IMC架构上,以实现最佳的性能和能效。
包括数据流和精度匹配、MVM(矩阵-向量乘法)维度匹配以及片上网络设计。
调度和资源分配(Scheduling and Resource Allocation):
开发高效的调度算法,合理分配计算资源,以提高IMC架构的利用率。
优化计算任务的执行顺序,减少等待时间和提高吞吐量。
实现非MVM计算(Realizing Non-MVM Computations):
探索IMC架构在执行非矩阵-向量乘法操作时的应用,如神经网络中的非线性激活函数。
设计硬件以支持这些操作,可能需要结合数字和模拟计算技术。
混合IMC-数字处理器(Hybrid IMC-Digital Processors):
结合IMC和数字处理器的优点,创建混合架构,以处理不同的计算任务。
数字处理器可以处理高精度计算,而IMC部分可以处理大规模并行计算。
可扩展性和编程性:
研究如何提高IMC架构的可扩展性,使其能够适应不断增长的计算需求。
开发易用的编程模型和工具,使开发者能够充分利用IMC架构的优势。
新型存储器技术:
利用新兴的存储器技术,如RRAM(可变电阻存储器)、PCM(相变存储器)等,这些技术可能提供更高的存储密度和更低的功耗。
信号处理和通信:
在雷达信号处理、传感器应用、安全、大规模MIMO等领域探索IMC的应用。
针对这些领域开发专门的信号处理算法和通信协议。
跨学科合作:
促进算法、编译器、微架构、电路和设备研究人员之间的合作,共同推动IMC技术的发展。
集成到AI加速器空间:
将IMC技术集成到AI加速器的设计中,结合AIMC(模拟IMC)、DIMC(数字IMC)、数字处理阵列、GPU和CPU的优势,实现最佳的性能和能效。
相关文章:

isscc2024 short course4 In-memory Computing Architectures
新兴的ML加速器方法:内存计算架构 1. 概述 内存计算(In-memory Computing)架构是一种新兴的机器学习加速器方法,通过将计算能力集成到存储器中,以减少数据移动的延迟和能耗,从而提高计算效率和性能。这种方…...
ubuntu 安装 kvm 启动虚拟机
1. 基础环境设置 #更新环境 apt update apt upgrade#配置网卡 cat >/etc/netplan/br.yml<<EOF network:ethernets:eth2: {}bridges:br0:interfaces:- eth2addresses:- 192.192.1.213/24gateway4: 192.192.1.1nameservers:addresses:- 8.8.8.8- 8.8.4.4 EOF #安装组件…...

[OpenGL] opengl切线空间
目录 一 引入 二 TBN矩阵 三 代码实现 3.1手工计算切线和副切线 3.2 像素着色器 3.3 切线空间的两种使用方法 3.4 渲染效果 四 复杂的物体 本章节源码点击此处 继上篇法线贴图 来熟悉切线空间是再好不过的。对于法线贴图来说,我们知道它就是一个2D的颜色纹理,根据rgb…...

SpringCloud微服务03-微服务保护-分布式事务-MQ基础-MQ高级
一、微服务保护 1.雪崩问题 如何做好后备方案就是后续: 2.雪崩解决方案 某一个服务的线程是固定的,出现故障线程占满后,就不会让取调用这个服务,对其他服务就没有影响。 3.Sentinel ①初识Sentinel 配置过程:day05-服…...
住宅IP?
住宅IP是由主要运营商(如电信、移动、联通等)为用户开通的宽带业务所分配的IP地址。这些IP地址是真实的、具有实际位置的IP,与普通用户的设备IP和宽带网络IP一致。它们不是连续的,而是散点分布,这使得它们在使用时更加…...

SpringBoot实现邮箱验证码
自行创建一个SpringBoot项目 导入SpringBoot所需要的邮箱验证码的包 <!--邮件发送--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId><version>2.6.1</version>…...

GPT提示词技巧,使用教程,国内版官网直达,非套壳
GPT提示词技巧,使用教程,国内版官网直达,非套壳 主站点:https://chatgpt-plus.top(江苏福建地区打不开,需要魔法) 店铺地址:https://buy.chatgpt-plus.top/ 选择plus账号进入&…...

MySQL多表关联查询习题
一、素材 -- Active: 1714203732007127.0.0.13306db_stu -- 1.创建student和score表 CREATE TABLE student ( id INT(10) NOT NULL UNIQUE PRIMARY KEY , name VARCHAR(20) NOT NULL , sex VARCHAR(4) , birth YEAR, department VARCHAR(20) , address VARCHAR(50) ); -- 创建…...

Android正向开发实现客户端证书认证
前言 如果第三方模块被混淆,那hook方式均不能生效。这时就需要根据系统包去定位校验的函数,因此需要对安卓开发者是如何实现客户端证书校验的有一定了解,接下来就介绍这部分内容。 开发者实现客户端证书校验的本质是:证书/密钥 + 代码。 在形式上有:证书校验、公钥校验和…...
【Kubernetes】Pod无法访问Service域名问题排查
背景 部署过多套k8s集群,发现在其中一套k8s环境中,在Pod内无法访问Service Name,访问了很多次,偶尔又能通,使用Service的IP能正常访问,域名解析的问题基本确定与CoreDNS有关系,于是开始了一系列…...

【JAVA基础之网络编程】UDP和TCP协议以及三次握手和四次挥手的过程
🔥作者主页:小林同学的学习笔录 🔥mysql专栏:小林同学的专栏 目录 1. 网络编程 1.1 概述 1.2 网络编程的三要素 1.2.1 IP地址 1.2.2 InetAddress 1.2.3 端口和协议 1.3 UDP协议 1.3.1 UDP发送数据 1.3.2 UDP接收数据 1.4…...
基于python+Django大数据的电影市场预测分析系统设计与实现
博主介绍: 大家好,本人精通Java、Python、C#、C、C编程语言,同时也熟练掌握微信小程序、Php和Android等技术,能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验,能够为学生提供各类…...
消息传递与集成:使用Springboot进行异步通信
消息传递与集成:使用Spring Boot进行异步通信 在现代的分布式系统中,异步通信已经成为了一种常见的设计模式。通过使用消息队列和事件驱动架构,我们可以实现系统之间的解耦,提高系统的可扩展性和可靠性。本文将介绍如何使用Sprin…...

【论文速读】Transformer:Attention Is All You Need
Transformer:Attention Is All You Need 摘要模型架构注意力模型Scaled Dot-ProductMulti-Head Attention Position-wise Feed-Forward NetworksEmbeddings and SoftmaxPositional Encoding 摘要 我们提出了一种新的简单的网络架构,Transformer…...

小短片创作-组装场景(一)
1、项目基础设置 通过第三人称模板,创建1个项目 1.自动曝光:关闭,因为要做专业的小短片,曝光需要手动控制。 2.扩展自动曝光中的默认亮度范围:启用 3.全局光照系统:选择屏幕空间光照(SSGI&am…...

二元关系表示
一、二元关系的定义和表示 什么是二元关系?对集合A和B,A\timesB的任意子集R为A到B的一个二元关系。当AB时,A\timesA的任一子集R称为A上的一个二元关系。在不引起误解的情况下,二元关系可简称关系。 若|A|m,|B|n,则A到…...
Android Audio基础——AudioFlinger音频流管理(八)
从前面 AudioTrack、PlaybackThread、输出流设备三者的关系中,我们看到 AudioTrack 把音频流数据送入到对应的 PlaybackThread 中,那么应用进程是如何控制音频流的开始播放 start()、停止播放 stop()、暂停播放 pause()。这一章节我们就来继续分析。 一、音频流管理 应用进程…...

二进制部署k8s集群 部署高可用master节点
目录 本次部署的环境 一、master02 节点部署 二、负载均衡部署 安装nginx服务 部署keepalive服务 修改node节点上的配置文件 在master节点上创建pod 三、部署 Dashboard 二进制部署k8s集群部署的步骤总结 (1)k8s的数据存储中中心的搭建 etcd &…...
linux创建私有docker仓库以及推拉
创建私有仓库: 1.下载 registry镜像。 2.执行 registry 镜像(#为注释内容,\为换行): docker run -d \# --restartalways每次都是开机自动启动--restartalways \# --name registry 表示容器名--name registry \# 表示…...

如何将照片从 iPhone 传输到闪存驱动器【无质量损坏】
概括 人们喜欢用 iPhone 拍照,因为照片通常都很漂亮,这都要归功于 iPhone 令人惊叹的技术。但照片更新后会占用更多空间,并且您可能会开始收到没有存储空间的通知。因此,您可以将照片传输到 USB 驱动器,然后从 iPhone…...

据传苹果将在WWDC上发布iOS 26 而不是iOS 19
苹果可能会对其操作系统的编号方式做出重大改变,基于年份的新版系统会将iOS 19重新命名为 iOS 26,同时 macOS 也会以同样的方式命名。 苹果的编号系统相当简单,版本号每年都会像钟表一样定期更新。然而,今年秋天情况可能有所不同&…...
Dockerfile 构建优化的方法
1.选择合适的 Base Image 使用轻量级基础镜像:尽量选择体积较小的基础镜像,例如 alpine 或 distroless。例如: FROM python:3.9-slim FROM alpine:3.14避免使用大型基础镜像:大型镜像会增加构建时间和镜像体积。 2. 减少镜像层数…...

Qt/C++开发监控GB28181系统/sip协议/同时支持udp和tcp模式/底层协议解析
一、前言说明 在gb28181-2011协议中,只有udp要求,从2016版本开始要求支持tcp,估计也是在多年的实际运行过程中,发现有些网络环境差的场景下,一些udp交互指令丢失导致功能异常,所以后面修订的时候增加了tcp…...
LevelDB、BoltDB 和 RocksDB区块链应用比较
LevelDB、BoltDB 和 RocksDB 是三种常用的键值存储数据库,它们在区块链领域(如以太坊、比特币等)或其他高性能应用中有广泛应用。虽然它们都是嵌入式键值存储,但设计目标、性能特性、功能支持和适用场景有显著差异。以下是它们的详…...

Web前端常用面试题,九年程序人生 工作总结,Web开发必看
前端编程,JavaScript 从无知到觉醒 做 Web 开发,离不开 HTML,CSS,JavaScript,尽管日常工作以后台开发为主,但接触的多了,慢慢地理解深入,从只会使用 JS 写函数,发展到使用…...
GitHub 趋势日报 (2025年05月27日)
本日报由 TrendForge 系统生成 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日整体趋势 Top 10 排名项目名称项目描述今日获星总星数语言1Fosowl/agenticSeek完全本地的马努斯AI。没有API,没有200美元的每…...
主流Markdown编辑器的综合评测与推荐
根据2025年最新资料,结合功能特性、用户体验和技术适配性,以下是对主流Markdown编辑器的综合评测与推荐: 一、核心对比维度与评估方法 功能完整性:支持数学公式、流程图、代码高亮等复杂格式。跨平台兼容性:Windows/m…...
【请关注】关于VC++实现使用Redis不同方法,有效达到 Redis 性能优化、防击穿
麻烦先关注方便了解最新分享。 关于VC实现使用Redis不同方法,有效达到 Redis 性能优化、防击穿。 一、性能优化核心方法 1. 使用连接池复用连接 // 连接池结构体 struct RedisPool { hiredisContext** connections; int size; sem_t sem; // 信号量控制并发 }; //…...

day13 leetcode-hot100-22(链表1)
160. 相交链表 - 力扣(LeetCode) 1.哈希集合HashSet 思路 (1)将A链的所有数据存储到HashSet中。 (2)遍历B链,找到是否在A中存在。 具体代码 /*** Definition for singly-linked list.* pu…...

深度学习入门:从零搭建你的第一个神经网络
深度学习入门:从零搭建你的第一个神经网络 系统化学习人工智能网站(收藏):https://www.captainbed.cn/flu 文章目录 深度学习入门:从零搭建你的第一个神经网络摘要引言第一章:神经网络基础原理1.1 神经元…...