【硬核科普】存算一体化系统(Processing-in-Memory, PIM)深入解析

news2024/12/23 15:03:36

文章目录

      • 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大科技趋势之一。

达摩院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方案优势
  1. 带宽提升:某些存算一体芯片能够提供TB/s级别的内存带宽,远远超过传统DRAM的几十GB/s。

  2. 功耗降低:通过减少数据搬运,存算一体架构能够显著降低整个系统的总功耗,有助于解决散热和能效问题。
    请添加图片描述

  3. 响应速度提升:减少数据搬运的延迟,使得实时数据分析和响应成为可能,这对于自动驾驶、实时视频分析等场景至关重要。
    在这里插入图片描述

  4. 计算密集型任务的加速:在深度学习等领域,存算一体架构可以通过在存储器附近执行矩阵乘法、卷积等运算,显著加速训练和推理过程。

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. 存算一体化缺点

存算一体化架构与传统的冯·诺依曼架构相比,确实提供了显著的优势:比如降低数据搬运的功耗、减少延迟和提高并行处理能力。然而,存算一体化架构也存在一些缺点和挑战,主要包括:

  1. 兼容性问题:现有的软件和算法通常基于冯·诺依曼架构设计,要充分利用存算一体化架构的优势,可能需要对软件进行重大的修改和优化,这涉及到编程模型、编译器支持和算法重构,增加了迁移成本和复杂性。

  2. 存储单元的计算能力有限:存储单元中嵌入的计算能力通常比专用的计算单元(如CPU或GPU中的ALU)简单,这意味着复杂的计算操作可能需要更多的步骤或无法在存储器内部完成,从而限制了某些类型计算的效率。

  3. 灵活性受限:冯·诺依曼架构允许数据和指令的自由流动,而存算一体化架构可能需要预先确定数据和计算的布局,这可能限制了架构的灵活性,特别是在处理非结构化或动态变化的工作负载时。

  4. 数据一致性问题:当多个计算单元同时访问同一存储位置时,数据一致性和同步机制变得更为复杂,尤其是在分布式存算一体系统中。

  5. 成本和制造复杂性:存算一体芯片可能需要更复杂的制造工艺,以将计算电路与存储电路集成在同一芯片上,这可能导致生产成本增加和良率问题。

  6. 故障容忍性:如果存储和计算紧密耦合,一旦存储单元出现故障,可能会影响到计算能力,影响系统的整体健壮性。

6. 总结

存算一体化系统代表了计算架构发展的一个重要方向,特别是在大数据处理、机器学习、边缘计算等领域,它有望带来革命性的性能提升和能效改进。然而,要实现这一愿景,还需要克服一系列技术挑战,包括硬件设计、软件生态构建和系统集成等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1894364.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C语言】auto 关键字

在C语言中,auto关键字用于声明局部变量,但它的使用已经变得很少见。事实上,从C99标准开始,auto关键字的默认行为就是隐含的,因此在大多数情况下无需显式使用它。 基本用法 在C语言中,auto关键字用于指定变…

视频监控平台web客户端的免密查看视频页:在PC浏览器上如何调试手机上的前端网页(PC上的手机浏览器的开发者工具)

目录 一、手机上做前端页面开发调试 1、背景 2、视频监控平台AS-V1000的视频分享页 3、调试手机前端页面代码的条件 二、手机端的准备工作 1、手机准备 2、手机的开发者模式 3、PC和手机的连接 (1)进入调试模式 (2)选择…

【大数据】—量化交易实战案例(海龟交易策略)

声明:股市有风险,投资需谨慎!本人没有系统学过金融知识,对股票有敬畏之心没有踏入其大门,今天用另外一种方法模拟炒股,后面的模拟的实战全部用同样的数据,最后比较哪种方法赚的钱多。 海龟交易…

初试成绩占比百分之70!计算机专硕均分340+!华中师范大学计算机考研考情分析!

华中师范大学(Central China Normal University)简称“华中师大”或“华大”,位于湖北省会武汉,是中华人民共和国教育部直属重点综合性师范大学,国家“211工程”、“985工程优势学科创新平台”重点建设院校&#xff0c…

智慧消防视频监控烟火识别方案,筑牢安全防线

一、方案背景 在现代化城市中,各类小型场所(简称“九小场所”)如小餐馆、小商店、小网吧等遍布大街小巷,为市民生活提供了极大的便利。然而,由于这些场所往往规模较小、人员流动性大、消防安全意识相对薄弱&#xff0…

分布式计算、异构计算与算力共享

目录 算力 算力共享的技术支撑 云计算技术 边缘计算技术 区块链技术 分布式计算、异构计算与算力共享 分布式计算:计算力的“集团军作战” 异构计算:计算力的“多兵种协同” 算力共享:计算力的“共享经济” 深入融合,共创计算新纪元 算力共享对科研领域的影响 …

JavaScript懒加载图像

懒加载图像是一种优化网页性能的技术,它将页面中的图像延迟加载,即在用户需要查看它们之前不会立即加载。这种技术通常用于处理大量或大尺寸图像的网页,特别是那些包含长页面或大量媒体内容的网站。 好处 **1. 加快页面加载速度&#xff1a…

《昇思25天学习打卡营第9天|保存与加载》

文章目录 今日所学:一、构建与准备二、保存和加载模型权重三、保存和加载MindIR总结 今日所学: 在上一章节主要学习了如何调整超参数以进行网络模型训练。在这一过程中,我们通常会想要保存一些中间或最终的结果,以便进行后续的模…

在Windows 11上更新应用程序的几种方法,总有一种适合你

序言 让你安装的应用程序保持最新是很重要的,而Windows 11使更新Microsoft应用商店和非Microsoft应用商店的应用程序变得非常容易。我们将向你展示如何使用图形方法以及命令行方法来更新你的应用程序。 如何更新Microsoft Store应用程序 如果你的一个或多个应用程序是从Mic…

底层软件 | 十分详细,为了学习设备树,我写了5w字笔记!

0、设备树是什么?1、DTS 1.1 dts简介1.2 dts例子 2、DTC(Device Tree Compiler)3、DTB(Device Tree Blob)4、绑定(Binding)5、Bootloader compatible属性 7、 #address-cells和#size-cells属性8…

64.函数参数和指针变量

目录 一.函数参数 二.函数参数和指针变量 三.视频教程 一.函数参数 函数定义格式: 类型名 函数名(函数参数1,函数参数2...) {代码段 } 如: int sum(int x,int y) {return xy; } 函数参数的类型可以是普通类型,也可以是指针类…

基于 Windows Server 2019 部署域控服务器

文章目录 前言1. 域控服务器设计规划2. 安装部署域控服务器2.1. 添加 Active Directory 域服务2.2. 将服务器提升为域控制器2.3. 检查域控服务器配置信息 3. 管理域账号3.1. 新建域管理员账号3.2. 新建普通域账号 4. 服务器加域和退域4.1. 服务器加域操作4.2. 服务器退域操作 总…

实战教程:如何用JavaScript构建一个功能强大的音乐播放器,兼容本地与在线资源

项目地址:Music Player App 作者:Reza Mehdikhanlou 视频地址:youtube 我将向您展示如何使用 javascript 编写音乐播放器。我们创建一个项目,您可以使用 javascript 从本地文件夹或任何 url 播放音频文件。 项目目录 assets 1…

安卓请求服务器[根据服务器的内容来更新spinner]

根据服务器的内容来更新spinner 本文内容请结合如下两篇文章一起看: 腾讯云函数node.js返回自动带反斜杠 腾讯云函数部署环境[使用函数URL] 现在有这样一个需求,APP有一个下拉选择框作为版本选择,因为改个管脚就变成一个版本,客户需求也很零散,所以后期会大量增加版本,这时候每…

数据结构——树的基础概念

目录 1.树的概念 2.树的相关概念 3.树的表示 (1)直接表示法 (2)双亲表示法 (3)左孩子右兄弟表示法 4.树在实际中的运用(表示文件系统的目录树结构) 1.树的概念 树是一种非线性的数据结构&#xff0…

找不到msvcp120.dll无法继续执行的原因分析及解决方法

在计算机使用中,经常会遇到msvcp120.dll文件丢失的情况,很多人对这个文件不是很熟悉,今天就来给大家讲解一下msvcp120.dll文件的丢失以及这个文件的重要性,让大家更好地了解计算机,同时也可以帮助我们更好地掌握这个文…

EVM-MLIR:以MLIR编写的EVM

1. 引言 EVM_MLIR: 以MLIR编写的EVM。 开源代码实现见: https://github.com/lambdaclass/evm_mlir(Rust) 为使用MLIR和LLVM,将EVM-bytecode,转换为,machine-bytecode。LambdaClass团队在2周…

leetcode216.组合总和III、40.组合总和II、39.组合总和

216.组合总和III 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9 每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。 示例 1: 输入: k 3, n 7 输出…

【Spring Boot 源码学习】初识 ConfigurableEnvironment

《Spring Boot 源码学习系列》 初识 ConfigurableEnvironment 一、引言二、主要内容2.1 Environment2.1.1 配置文件(profiles)2.1.2 属性(properties) 2.2 ConfigurablePropertyResolver2.2.1 属性类型转换配置2.2.2 占位符配置2.…

单调栈(左小大,右小大)

①寻找每个数左边第一个比它小的数 给定一个长度为 N 的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出 −1。 输入样例: 3 4 2 7 5 输出样例: -1 3 -1 2 2 从左到右遍历,用单调递增(栈底到栈顶…