【硬核科普】存算一体化系统(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 是一个关键字,用于定义生成器函数,生成器函数是一种特殊的函数,可以在迭代过程中逐步产生值ÿ…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...

visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...

家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...

论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
Python网页自动化Selenium中文文档
1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API,让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API,你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...