【硬核科普】存算一体化系统(Processing-in-Memory, PIM)深入解析
文章目录
- 0. 前言
- 1. 提出背景
- 1.1 存储墙
- 1.2 功耗墙
- 2. 架构方案
- 2.1 核心特征
- 2.2 技术实现
- 2.2.1 电流模式
- 2.2.2 电压模式
- 2.2.3 模式选择
- 2.3 PIM方案优势
- 3. 应用场景
- 4. 典型产品
- 4.1 鸿图H30
- 4.2 三星HBM-PIM
- 5. 存算一体化缺点
- 6. 总结
0. 前言
按照国际惯例,首先声明:本文只是我自己学习的理解,虽然参考了他人的宝贵见解及成果,但是内容可能存在不准确的地方。如果发现文中错误,希望批评指正,共同进步。
存算一体化(Processing-in-Memory, PIM)系统是一种旨在克服传统冯·诺依曼架构局限性的新架构,这种架构通过将数据存储和数据处理紧密耦合,减少了数据在存储和处理器之间的传输,从而显著提高了性能和能效比。
达摩院也把存算一体选作2023年10大科技趋势之一。
1. 提出背景
Computational Storage(计算存储)的概念最早是在1969年由斯坦福研究所(Stanford Research Institute,SRI)的几位科学家提出的。他们预见到存算一体化可能是实现高算力和高能效计算的关键技术,类似于人脑的处理方式,其中计算和存储紧密集成在一起。
然而,由于当时的技术限制:包括芯片制造技术和算力性能的不足,存算一体化的概念在很长一段时间内停留在理论研究阶段,并没有得到实际的应用。随着技术的进步,尤其是对更高计算效率和更低能耗的需求增加,存算一体化技术开始受到更多的关注,并逐渐发展成为可能改变未来计算架构的重要方向。
传统的冯·诺依曼架构中,数据存储和计算是分离的,这意味着处理器必须从存储器中读取数据进行处理,然后再将结果写回到存储器中。随着数据集的增大和计算复杂度的增加,这种架构下的数据传输成为了瓶颈,形成了所谓的 “存储墙” 和 “功耗墙”。存储墙指的是存储速度无法跟上计算速度,而功耗墙则是指数据频繁在存储和计算单元间传输导致的功耗大幅上升。
1.1 存储墙
根据摩尔定律,处理器的晶体管数量每18个月~24个月翻一番,理论上处理器性能也会随之提升。然而,存储器的速度提升远远落后于处理器,大约每三年提升一倍。这种不对称的进展导致了处理器等待数据的时间占总时间的比例越来越大,降低了总体计算效率。
下表可以清楚地看出数据传输增长速度与处理器算力的增长速度的巨大差距:
计算速度vs存取速度 | 90年代初 | 20年代初 | 增长倍数 |
---|---|---|---|
处理器算力 | 约10~100MFLOPS | 约1~10TFLOPS | 约100000倍(约为 2 17 2^{17} 217倍) |
内存带宽 | 约10~100MB/s | 约10-100GB/s | 约1000倍(约为 2 10 2^{10} 210倍) |
可见,经过30年左右的发展处理器的算力提升远大于内存带宽的提升。更进一步,根据黄氏定律(预测GPU将推动AI性能实现逐年翻倍)处理器的速度和内存的速度将会拉开更大的差距!
1.2 功耗墙
随着计算系统对内存带宽需求的不断增加,以及对更高容量和更快访问速度的追求,传统动态随机存取存储器(DRAM)和其他类型内存的功耗急剧上升,最终会达到一个无法通过简单增加功率预算来解决的临界点。
这一方面是因为数据从DRAM搬运到CPU需要跨过多个层级的存储层次,包括L1、L2、L3缓存,有研究表明:在特定情况下,将1比特数据从DRAM搬运到CPU所消耗的能量比在CPU上处理这个比特所需的能量还要高几倍到几十倍。根据不同的估计,数据从内存搬运到处理器的能耗可以占到总计算能耗的50%以上。而在深度学习训练中,数据搬运的能耗甚至可以高达总能耗的80%
另一方面也是因为随着功耗的增加,系统的整体能效比(性能/功耗)开始下降,这意味着为了获得更高的性能,必须付出更更高的功耗及冷却代价。
2. 架构方案
2.1 核心特征
存算一体化的核心在于将数据处理能力与数据存储紧密结合,使得数据能够在存储位置被直接处理,避免了频繁的数据搬运,从而降低了延迟,减少了能耗,并提高了数据处理速度。
2.2 技术实现
存算一体的技术实现有多种方式,本文将以ReRAM(Resistive Random Access Memory,电阻式随机存取存储器)为基础的PIM(Processing-In-Memory)架构进行说明。该架构特别关注于矩阵乘法-累加操作(MAC,Multiply-Accumulate Operation),这是许多机器学习算法,尤其是神经网络中的核心运算之一。
ReRAM PIM架构根据输出感测模式可以分为电流模式(current-mode)和电压模式(voltage-mode)两种。这两种模式都利用了ReRAM设备的导电特性来存储权重,并利用输入信号来进行计算。
神经网络层中的权重被存储为ReRAM设备的导电值(Gij),其中i和j分别代表行和列。二进制输入(0或1)通过字线(Word Line, WL)施加。
参考文献: T. F. Wu et al., “Brain-inspired computing exploiting carbon nanotube FETs and resistive RAM: Hyperdimensional computing case study,” in IEEE ISSCC Dig. Tech. Papers, Feb. 2018, pp. 492–493.
2.2.1 电流模式
- 电流计算:在电流模式下,每一行的源线(Source Line, SL)被驱动至读电压Vread,而每一列的位线(Bit Line, BL)则被钳位到参考电压Vref。输入特征与权重的乘积可以通过流经单个ReRAM单元的电流来表示。
- 点积运算:输入向量与权重矩阵的点积运算在模拟域中通过积累来自同一列的ReRAM单元电流完成。
- 转换与输出:每列的总电流最终通过电流模数转换器(Analog-to-Digital Converter, ADC)转换为数字值。
2.2.2 电压模式
- 初始化:在电压模式下,所有源线接地,所有位线预充电至Vpre并保持浮动状态。
- 放电率:位线电容的放电速率与输入向量和权重矩阵的点积成正比。
- 转换与输出:产生的位线电压通过ADC转换为数字值。
2.2.3 模式选择
- 电流模式:具有更大的感测余量和更快的感测速度,但静态电流在整个感测期间存在,导致能量效率较低。
- 电压模式:只消耗动态功率,因此在能量效率方面优于电流模式,但在感测速度和余量方面可能不如电流模式。
2.3 PIM方案优势
-
带宽提升:某些存算一体芯片能够提供TB/s级别的内存带宽,远远超过传统DRAM的几十GB/s。
-
功耗降低:通过减少数据搬运,存算一体架构能够显著降低整个系统的总功耗,有助于解决散热和能效问题。
-
响应速度提升:减少数据搬运的延迟,使得实时数据分析和响应成为可能,这对于自动驾驶、实时视频分析等场景至关重要。
-
计算密集型任务的加速:在深度学习等领域,存算一体架构可以通过在存储器附近执行矩阵乘法、卷积等运算,显著加速训练和推理过程。
3. 应用场景
存算一体化系统适用于数据密集型和实时计算任务,包括但不限于:
- 人工智能与深度学习:在神经网络和深度学习模型的训练和推理中,存算一体化可以极大地提高计算效率和能效,减少训练时间和能源消耗。
- 边缘计算:在资源受限的边缘设备上,存算一体化能够实现低功耗、高处理能力的计算任务,适合物联网(IoT)、自动驾驶汽车、无人机等场景。
- 高性能计算(HPC):在科学计算、工程模拟等领域,存算一体化有助于加速数据密集型任务的处理。
- 数据库与数据分析:存算一体化可以显著提高数据库查询速度和数据分析效率,特别是在处理海量数据时。
- 生物信息学:在基因组学和蛋白质组学研究中,处理大量生物数据时,存算一体化可以提供更快的分析速度和更低的运行成本。
- 类脑计算:在模仿大脑结构和功能的计算系统中,存算一体化架构可以更有效地实现神经元的模拟和突触的动态调整。
4. 典型产品
4.1 鸿图H30
鸿图H30是一款由后摩智能设计的存算一体智驾芯片,这款芯片旨在推动自动驾驶技术的发展,特别是在智能驾驶和工业领域应用。
鸿图H30基于SRAM存储介质,采用了数字存算一体架构,具有256 TOPS(每秒万亿次操作)的物理算力,使其能够处理复杂的深度学习和机器视觉任务,这对于自动驾驶车辆的感知和决策至关重要。
典型功耗仅为35瓦,相比传统方案,鸿图H30的能效比提升了7倍,这在能源敏感的应用场景中非常重要。
值得注意的是,尽管鸿图H30在性能和能效方面表现突出,但其算力仍然低于英伟达(NVIDIA)的DRIVE SoC Thor芯片(非存算一体架构),后者在2023年的算力达到了2000 TOPS。不过,鸿图H30的发布标志着中国在存算一体芯片领域取得了重要进展,显示了国产芯片在自动驾驶技术方面的竞争力。
4.2 三星HBM-PIM
HBM-PIM(High Bandwidth Memory with Processing In Memory)是三星电子开发的一种存算一体技术,它结合了高带宽内存(HBM)和内存内计算(PIM)的概念。HBM-PIM的目标是通过在内存模块内部直接执行计算,显著提高数据密集型应用的性能,同时减少功耗。
HBM-PIM在每个内存库(Memory Bank)中放置了一个DRAM优化的AI引擎,允许数据处理在存储数据的同一位置进行,从而极大化减少了数据移动的操作。这种设计减少了CPU和内存之间的数据传输,提高了系统的整体性能,并且将能耗降低了70%以上。
HBM-PIM有着优秀的兼容性,客户不必完全重新设计他们的架构。三星在HBM-PIM技术的研发过程中,与AMD进行了合作,将HBM-PIM内存应用于AMD的商用GPU加速卡MI-100,用于生成式人工智能和混合专家系统(MOE)模型。
5. 存算一体化缺点
存算一体化架构与传统的冯·诺依曼架构相比,确实提供了显著的优势:比如降低数据搬运的功耗、减少延迟和提高并行处理能力。然而,存算一体化架构也存在一些缺点和挑战,主要包括:
-
兼容性问题:现有的软件和算法通常基于冯·诺依曼架构设计,要充分利用存算一体化架构的优势,可能需要对软件进行重大的修改和优化,这涉及到编程模型、编译器支持和算法重构,增加了迁移成本和复杂性。
-
存储单元的计算能力有限:存储单元中嵌入的计算能力通常比专用的计算单元(如CPU或GPU中的ALU)简单,这意味着复杂的计算操作可能需要更多的步骤或无法在存储器内部完成,从而限制了某些类型计算的效率。
-
灵活性受限:冯·诺依曼架构允许数据和指令的自由流动,而存算一体化架构可能需要预先确定数据和计算的布局,这可能限制了架构的灵活性,特别是在处理非结构化或动态变化的工作负载时。
-
数据一致性问题:当多个计算单元同时访问同一存储位置时,数据一致性和同步机制变得更为复杂,尤其是在分布式存算一体系统中。
-
成本和制造复杂性:存算一体芯片可能需要更复杂的制造工艺,以将计算电路与存储电路集成在同一芯片上,这可能导致生产成本增加和良率问题。
-
故障容忍性:如果存储和计算紧密耦合,一旦存储单元出现故障,可能会影响到计算能力,影响系统的整体健壮性。
6. 总结
存算一体化系统代表了计算架构发展的一个重要方向,特别是在大数据处理、机器学习、边缘计算等领域,它有望带来革命性的性能提升和能效改进。然而,要实现这一愿景,还需要克服一系列技术挑战,包括硬件设计、软件生态构建和系统集成等。
相关文章:

【硬核科普】存算一体化系统(Processing-in-Memory, PIM)深入解析
文章目录 0. 前言1. 提出背景1.1 存储墙1.2 功耗墙 2. 架构方案2.1 核心特征2.2 技术实现2.2.1 电流模式2.2.2 电压模式2.2.3 模式选择 2.3 PIM方案优势 3. 应用场景4. 典型产品4.1 鸿图H304.2 三星HBM-PIM 5. 存算一体化缺点6. 总结 0. 前言 按照国际惯例,首先声明…...

基于Java的壁纸网站设计与实现
💗博主介绍💗:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示:文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…...

Zookeeper底层原理
ZooKeeper 是一个高可用的分布式协调服务,广泛应用于分布式系统中,用于解决分布式系统的一致性问题。下面将详细介绍 ZooKeeper 的底层原理,包括其架构、数据模型、核心机制和一致性协议等方面。 1. 架构 ZooKeeper 采用主从架构࿰…...

Spring Boot 事件监听机制实战【自定义 Spring Boot 事件监听】
前言: 上一篇我们分析了 Spring Boot 事件监听的原理,本篇我们来自定义实现自己的监听器。 Spring Boot 系列文章传送门 Spring Boot 启动流程源码分析(2) Spring Boot 启动流程源码分析(2) Spring Bo…...

AIGC笔记--Stable Diffusion源码剖析之DDIM
1--前言 以论文《High-Resolution Image Synthesis with Latent Diffusion Models》 开源的项目为例,剖析Stable Diffusion经典组成部分,巩固学习加深印象。 2--DDIM 一个可以debug的小demo:SD_DDIM 以文生图为例,剖析SD中DDIM的…...

【BUUCTF-PWN】13-jarvisoj_level2_x64
参考:BUU pwn jarvisoj_level2_x64 64位函数调用栈 - Nemuzuki - 博客园 (cnblogs.com) 64位,开启了NX保护 执行效果如下: main函数: vulnerable_function函数 read函数存在栈溢出,溢出距离为0x808 查找后门…...

项目实战--Spring Boot 3整合Flink实现大数据文件处理
一、应用背景 公司大数据项目中,需要构建和开发高效、可靠的数据处理子系统,实现大数据文件处理、整库迁移、延迟与乱序处理、数据清洗与过滤、实时数据聚合、增量同步(CDC)、状态管理与恢复、反压问题处理、数据分库分表、跨数据…...

开发者工具攻略:前端测试的极简指南
前言 许多人存在一个常见的误区,认为测试只是测试工程师的工作。实际上,测试是整个开发团队的责任,每个人都应该参与到测试过程中。 在这篇博客我尽量通俗一点地讲讲我们前端开发过程中,该如何去测试 浏览器开发者工具简介 开…...

git保存分支工作状态
git stash...

系统架构设计师——计算机体系结构
分值占比3-4分 计算机硬件组成 计算机硬件组成主要包括主机、存储器和输入/输出设备。 主机:主机是计算机的核心部分,包括运算器、控制器、主存等组件。运算器负责执行算术和逻辑运算;控制器负责协调和控制计算机的各个部件;主存…...

3D鸡哥又上开源项目!单图即可生成,在线可玩
大家好,今天和大家分享几篇最新的工作 1、Unique3D Unique3D从单视图图像高效生成高质量3D网格,具有SOTA水平的保真度和强大的通用性。 如下图所示 Unique3D 在 30 秒内从单视图野生图像生成高保真且多样化的纹理网格。 例如属于一张鸡哥的打球写真照 等…...

设计模式实现思路介绍
设计模式是在软件工程中用于解决特定问题的典型解决方案。它们是在多年的软件开发实践中总结出来的,并且因其重用性、通用性和高效性而被广泛接受。设计模式通常被分为三种主要类型:创建型、结构型和行为型。 创建型设计模式 创建型设计模式专注于如何创…...

Node.js学习教程
Node.js学习教程可以从基础到高级,逐步深入理解和掌握这一强大的JavaScript运行环境。以下是一个详细的Node.js学习教程概述,帮助初学者和进阶者更好地学习Node.js。 一、Node.js基础入门 1. 了解Node.js 定义:Node.js是一个基于Chrome V8…...

项目页面优化,我们该怎么做呢?
避免页面卡顿 怎么衡量页面卡顿的情况呢? 失帧和帧率FPS 60Hz就是帧率fps,即一秒钟60帧,换句话说,一秒钟的动画是由60幅静态图片连在一起形成的。 卡了,失帧了,或者掉帧了,一秒钟没有60个画面&…...

【PCIe】P2P DMA
PCIe P2P (peer-to-peer communication)是PCIe的一种特性,它使两个PCIe设备之间可以直接传输数据,而不需要使用主机RAM作为临时存储。如下图3的走向 比如EP1要发送和数据给EP2,操作流程如下: 1. 打开EP1的dma控制器;--client侧 …...

Linux shell编程学习笔记62: top命令 linux下的任务管理器
0 前言 top命令是Unix 和 Linux下常用的性能分析工具,提供了一个动态的、交互式的实时视图,显示系统的整体性能信息,以及正在运行的进程的相关信息,包括各个进程的资源占用状况,类似于Windows的任务管理器。 1 top命令…...

如何在Java中实现高性能的网络通信
如何在Java中实现高性能的网络通信 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 1. 引言 在当今互联网时代,高性能的网络通信是构建大规模分布…...

政务单位网站SSL证书选择策略
在数字化快速发展的今天,政务单位网站作为政府与公众沟通的重要桥梁,其安全性和可信度显得尤为重要。SSL证书作为保障网站安全的重要手段,其选择对于政务单位网站来说至关重要。本文将探讨政务单位网站在选择SSL证书时应该考虑的因素…...

零基础入门 Ai 数据挖掘竞赛-速通 Baseline-1
#AI夏令营 #Datawhale #夏令营 本项目为Datawhale 2024 年 AI 夏令营赛事,零基础入门 AI 数据挖掘竞赛-速通学习手册配套的代码项目。 项目链接:https://aistudio.baidu.com/bd-cpu-02/user/2961857/8113198/home#codelab 任务目标 根据给的test&…...

第二十六章 生成器(generator)(Python)
文章目录 前言一、生成器函数 前言 在 Python 中,使用了 yield 的函数被称为生成器(generator) yield 是一个关键字,用于定义生成器函数,生成器函数是一种特殊的函数,可以在迭代过程中逐步产生值ÿ…...

Vue通过Key管理状态
Vue通过Key管理状态 Vue 默认按照“就地更新”的策略来更新,通过 v-for 渲染的元素列表。当数据项的顺序改变时,Vue 不会随之移动 DOM 元素的顺序,而是就地更新每个元素,确保它们在原本指定的索引位置上渲染。为了给 Vue 一个提示…...

鸿蒙 HarmonyOs 网络请求 快速入门
官方文档: ArkUI简介-ArkUI(方舟UI框架)-应用框架 | 华为开发者联盟 (huawei.com) 一、通过原有的http组件进行网络请求(方式一) 1.1 HttpRequestOptions的操作 名称类型描述methodRequestMethod请求方式ÿ…...

Kubernetes云原生存储解决方案openebs部署实践-4.0.1版本(helm部署)
Kubernetes云原生存储解决方案openebs部署实践-4.0.1版本(helm部署) 简介 OpenEBS 是一种开源云原生存储解决方案。OpenEBS 可以将 Kubernetes 工作节点可用的任何存储转化为本地或复制的 Kubernetes 持久卷。OpenEBS 帮助应用和平台团队轻松地部署需要…...

如何使用Pip生成requirements.txt文件:全面指南与实践示例
如何使用Pip生成requirements.txt文件:全面指南与实践示例 Python的包管理工具Pip是Python开发中不可或缺的一部分。它不仅可以帮助我们安装和管理Python包,还可以通过生成requirements.txt文件来记录项目所需的所有依赖。本文将详细介绍如何使用Pip生成…...

微信小程序消息通知(一次订阅)
在微信公众平台配置通知模版 通过wx.login获取code发送给后端 let that this // 登陆codewx.login({success: function (res) {if (res.code) {// 发送code到后端换取openid和session_keythat.setData({openCode: res.code})console.log(that.data.openCode, openCode);// 调…...

电传动无杆飞机牵引车交付用户
自2019年起,我们计划做电传动控制,先后做了电传动水泥搅拌罐车罐体控制(国内首创),初步理解了电机控制的特点。 20-21年接着做了10t飞机牵引车控制,还是电液控制联合的,把越野叉车的行驶控制方…...

react框架,使用vite和nextjs构建react项目
react框架 React 是一个用于构建用户界面(UI)的 JavaScript 库,它的本质作用是使用js动态的构建html页面,react的设计初衷就是为了更方便快捷的构建页面,官方并没有规定如何进行路由和数据获取,要构建一个完整的react项目,我们需要…...

Games101学习笔记 Lecture16 Ray Tracing 4 (Monte Carlo Path Tracing)
Lecture16 Ray Tracing 4 (Monte Carlo Path Tracing 一、蒙特卡洛积分 Monte Carlo Integration二、路径追踪 Path tracing1.Whitted-Style Ray Tracings Problems2.只考虑直接光照时3.考虑全局光照①考虑物体的反射光②俄罗斯轮盘赌 RR (得到正确shade函数&#x…...

数据结构概念
文章目录 1. 概念 2. 数据结构和算法的关系 3. 内存 4. 数据的逻辑结构 5. 数据的存储结构 1. 顺序存储结构 2. 链式存储结构 3. 索引存储结构 4. 散列存储结构 6. 数据的运算 1. 概念 定义1(宏观): 数据结构是为了高效访问数据而…...

Windows 下载安装ffmpeg
下载地址 https://ffmpeg.org/download.html 测试 管理员方式打开控制台,输入ffmpeg测试 配置环境变量...