快速入门存内计算—助力人工智能加速深度学习模型的训练和推理

news2024/11/18 19:45:32

 存内计算:提高计算性能和能效的新技术

传统的计算机架构是将数据存储在存储器中,然后将数据传输到计算单元进行处理。这种架构存在一个性能瓶颈,即数据传输延迟。存内计算通过将计算单元集成到存储器中,消除了数据传输延迟,从而提高了系统性能。

什么是存内计算

存内计算(Processing-In-Memory)是指在存储器内部直接进行数据处理的技术。存内计算的实现方式主要有两种:

  • 模拟存内计算:这种方法利用存储器单元的模拟特性进行计算。例如,利用存储器单元的阻值或电容进行矩阵乘法。模拟存内计算具有高能效的优势,但精度较低。
  • 数字存内计算:这种方法利用存储器单元的数字特性进行计算。例如,利用存储器单元进行加法、乘法等逻辑运算。数字存内计算具有高精度的优势,但能耗较高。 

存内计算的优点

存内计算具有以下优点:

  • 提高性能:存内计算消除了数据传输延迟,从而提高了系统性能。
  • 降低功耗:存内计算减少了数据传输量,从而降低了系统功耗。
  • 增加灵活性:存内计算将计算和存储融合在一起,增加了系统的灵活性。

存内计算核心


存内计算(Computing in Memory)是指将计算单元直接嵌入到存储器中,顾名思义就是把计算单元嵌入到内存当中,通常计算机运行的冯·诺依曼体系包括存储单元和计算单元两部分。在本质上消除不必要的数据搬移的延迟和功耗,从而消除了传统的冯·诺依曼架构的瓶颈,打破存储墙。据悉,存内计算特别适用于需要大数据处理的领域,比如云计算、人工智能等领域,最重要的一点是存内计算是基于存储介质的计算架构,而且存内计算是一种新型存储架构且轻松打破传统存储架构的瓶颈。

根据存储介质的不同,存内计算芯片可分为基于传统存储器和基于新型非易失性存储器两种。传统存储器包括SRAM, DRAM和Flash等;新型非易失性存储器包括ReRAM、PCM、FeFET、MRAM等。其中,距离产业化较近的是基于NOR Flash和基于SRAM的存内计算芯片。虽然基于各类存储介质的存算一体芯片研究百花齐放,但是各自在大规模产业化之前都仍然面临一些问题和挑战。存算一体技术在产业界的进展同样十分迅速,国内外多家企业在积极研发,例如我国台湾的台积电,韩国三星、日本东芝、美国Mythic,国内的知存科技等。

但是当前最接近产业化的主要是台积电、Mythic和知存科技。从2019年至今,台积电得益于其强大的工艺能力,已基于SRAM与ReRAM发表了一系列存算一体芯片研究成果,具备量产代工能力。Mythic已于2021年推出基于NOR Flash的存内计算量产芯片M1076,可支持80 MB神经网络权重,单个芯片算力达到25 TOPS,主要面向边缘侧智能场景。国内的知存科技于2021年发布基于NOR Flash的存内计算芯片WTM2101,是率先量产商用的全球首颗存内计算SoC芯片,已经应用于百万级智能终端设备。

 内存计算架构与技术

内存计算技术是一个宏观的概念, 是将计算能力集成到内存中的技术统称. 集成了内存计算技 术的计算机系统不仅能直接在内存中执行部分计算, 还能支持传统以 CPU 为核心的应用程序的执行. 区别于内存计算, 存算一体芯片将存储与计算相结合, 是一种 ASIC (application-specific integrated circuit) 芯片, 常用于嵌入式设备中, 针对一类特定的应用设计, 不能处理其他应用程序  . 内存计算包括两大类: 近数据计算和存内计算. 两者的关系如图所示, 它们在形式上不同, 但是在特 定场景下可以融合设计. 近数据计算和存内计算的最大区别就是: 近数据计算的计算单元和存储单元

存内计算的应用

存内计算具有广泛的应用前景,包括:

  • 人工智能:存内计算可以提高人工智能算法的性能和能效。
  • 大数据处理:存内计算可以提高大数据处理的速度和效率。
  • 物联网:存内计算可以降低物联网设备的功耗。

存内计算的挑战

存内计算仍处于发展阶段,面临着一些挑战,例如:

  • 器件成熟度:存内计算需要使用新型存储器器件,这些器件的成熟度还不够高。
  • 软件支持:存内计算需要相应的软件支持,目前还不够完善。

硬件寿命问题

NVM 的寿命有限, 例如 PCM 的 SLC (single level cell, 一个 cell 只能存 0 或 1, 即一个比特位) 的 寿命只有 107 ∼ 108 , ReRAM 的 SLC 的寿命只有 107 ∼ 109  . MLC (multi-level cell, 一个 cell 能存多个比特位) 的寿命问题更加严重, 通常只有 104 ∼ 105 次写, 甚至更低. 对于传统 NVM 存储, 磨 损均衡是延长寿命的有效方法. 磨损均衡算法通过每隔一段时间改变逻辑地址到物理地址的映射, 使 得写操作在整个 NVM 中均衡. 然而这种方法在基于 NVM 的存内计算中并不适用, 因为存储于 NVM 中的数据还直接用作计算. 如果直接使用传统的磨损均衡算法交换数据所存储的位置, 计算结果将是 错误的. 该问题由器件相关问题引起, 除了选择和配置合适的器件外, 还可以通过上层设计来缓解, 例 如应用中算法的设计和内存控制器的设计等. ISAAC [40] 通过在片上加 eDRAM 减少对 NVM 的写. IBM 的研究人员 [45] 通过用 CMOS+PCM 做一个 cell 的方式, 使寿命的 CMOS 单元承受频繁的更新操作. Long-live-time [60] 提出了一种针对神 经网络训练的 CIM 硬件寿命延长方法, 通过改变神经网络权值更新方法 (每次选误差最大的行更新 而不是全部更新), 再结合行粒度的磨损均衡算法, 延长基于 NVM 的存内计算硬件的寿命. 我们正在 进行的工作将神经网络和 NVM 的特点综合考虑, 从而延长基于 NVM 的存内计算硬件寿命. 针对其 余应用的 NVM 存内计算硬件寿命的延长方法仍待探究。

可靠性问题

NVM 写出错问题以及外围电路对输出模拟域电流转成电信号产生误差的问题使基于 NVM 的存 内计算可靠性不佳. NVM 的 cell 会因为写电流过高或寿命已到而产生 stuck-at fault (阻值停留在某 个固定值不可改变). 传统存储中, 可以将发生错误的 cell 值存到别的物理位置, 然后改变原逻辑地址 到物理地址的映射来容这种错误. 而这种方式在基于 NVM 的存内计算中并不适用, 存储在存内计算 的 NVM 中的数据还要直接用作计算, 数据之间的相对物理位置不能被改变, 否则计算结果会出错. 与寿命问题相似, 可靠性问题也是由器件相关问题引起的, 除了选择合适的器件外, 还可以通过上层设 计来缓解. Xia 等[61] 利用神经网络中权值的稀疏性 (一些位置的权值为 0) 来容存内计算 NVM 上 stuck-at-0 的硬件错误. Xia 等 [62] 还通过利用存正负值的一对存内计算 NVM 阵列来互相容错. Liu 等 [63] 提出 分析识别出神经网络中重要的部分, 把此部分放到可靠性高的存内计算硬件上去做. 我们正在进行的 工作将采取更加灵活的方式, 综合利用神经网络和 NVM 本身的特点来容更多类型的 stuck-at 错误. 由于外围电路的误差而造成的可靠性降低问题仍待解决

结语

存内计算是一种具有广阔应用前景的新技术。随着技术的进步,存内计算将在未来得到更广泛的应用。

存内计算的未来

随着存储器器件技术的不断发展,存内计算将变得更加成熟。在未来,存内计算将成为计算机架构的重要发展方向,它将为提高计算性能和能效提供新的途径。

以下是一些存内计算在未来可能的应用:

  • 人工智能:存内计算可以提高人工智能算法的性能和能效,从而推动人工智能的普及和应用。
  • 大数据处理:存内计算可以提高大数据处理的速度和效率,从而加速大数据分析和挖掘。
  • 物联网:存内计算可以降低物联网设备的功耗,从而延长物联网设备的续航时间。

我们期待着存内计算在未来的应用,它将为我们的生活带来更多便利和改变。

参考文献;

《中国科学》杂志社:内存计算研究进展

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

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

相关文章

HiveSQL题——窗口函数(lag/lead)

目录 一、窗口函数的知识点 1.1 窗户函数的定义 1.2 窗户函数的语法 1.3 窗口函数分类 1.4 前后函数:lag/lead 二、实际案例 2.1 股票的波峰波谷 0 问题描述 1 数据准备 2 数据分析 3 小结 2.2 前后列转换(面试题) 0 问题描述 1 数据准备 …

kubernetes-快速部署一套k8s集群

1、前置知识点 1.1 生产环境可部署Kubernetes集群的两种方式 目前生产部署Kubernetes集群主要有两种方式: kubeadm Kubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。 二进制包 从github下载发行…

04.对象树

一、引入 1.QT实现输出"hello world" 使用QT编写"hello world"程序,有两种实现方式: (1)直接在生成的ui文件中,拖入一个label控件,双击控件编辑内容即可实现 (2&#xff0…

【C++历练之路】探秘C++三大利器之一——多态

W...Y的主页 😊 代码仓库分享💕 前言🍔: 在计算机科学的广袤领域中,C多态性是一门令人着迷的技术艺术,它赋予我们的代码更强大的灵活性和可维护性。想象一下,你正在构建一个程序,需要适应不断…

【技术分享】远程透传网关-单网口快速实现威纶通触摸屏程序远程上下载

准备工作 一台可联网操作的电脑一台单网口的远程透传网关及博达远程透传配置工具网线一条,用于实现网络连接和连接触摸屏一台威纶通触摸屏及其编程软件一张4G卡或WIFI天线实现通讯(使用4G联网则插入4G SIM卡,WIFI联网则将WIFI天线插入USB口)…

Redis 面试题 | 19.精选Redis高频面试题

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Mac安装及配置MySql及图形化工具MySQLworkbench安装

Mac下载配置MySql mysql下载及安装 下载地址:https://dev.mysql.com/downloads/mysql/ 根据自己电脑确定下载x86还是ARM版本的 如果不确定,可以查看自己电脑版本,终端输入命令 uname -a 点击Download下载,可跳过登录注册&…

沙龙回顾|“强标”发布在即,汽车数据安全的挑战与应对

随着智能汽车产业驶入发展快车道,“数据安全”的重要性也日益突出。2020年以来发现的针对整车企业、车联网信息服务提供商等相关企业的恶意攻击达到280余万次。2023年初至今,就发生超过20起与车企相关数据泄露事件,汽车数据安全的现状不容乐观…

基于Matlab无刷直流电机系统仿真建模的新方法

摘 要:在分析无刷直流电机(BLDC)数学模型的基础上,提出了无刷直流电机系统仿真建模的 新方法。在Matlab/Simulink 中,建立独立的功能模块,如BLDC 本体模块、电流滞环控制模块、 速度控制模块等,…

防御保护--智能选路

目录 就近选路 策略选路--PBR DSCP优先级 智能选路--全局路由策略 1.基于链路带宽的负载分担 2.基于链路质量进行负载分担 3.基于链路权重进行负载分担 4.基于链路优先级的主备备份 ​编辑 DNS透明代理 就近选路 我们希望在访问不同运营商服务器时,通过对…

IDEA安装MyBatisX插件

IDEA工具在开发人员中经常使用,从dao层到xml文件对应的查看很费劲,这时候就有相应的插件工具出现了MyBatisX。他的好处如下: mapper and xml can jump back and forth mybatis.xml,mapper.xml prompt mapper and xml support auto prompt lik…

多场景建模:腾讯3MN

3MN: Three Meta Networks for Multi-Scenario and Multi-Task Learning in Online Advertising Recommender Systems 背景 推荐领域的多场景多任务学习:维护单模型即可节省资源也可节省人力;各个场景的数据共享,理论上面学习是更加充分的 …

RK3568 Android Launcher3定制修改

1.去掉Google搜索栏 目录packages/apps/Launcher3/src_build_config/com/android/launcher3/BuildConfig.java 修改如下: 2.Launcher首页去掉抽屉菜单,所有应用都放到桌面 第一步:禁止上滑显示抽屉 在目录packages/apps/Launcher3/quickste…

大模型学习与实践笔记(十四)

使用 OpenCompass 评测 InternLM2-Chat-7B 模型使用 LMDeploy 0.2.0 部署后在 C-Eval 数据集上的性能 步骤1:下载internLM2-Chat-7B 模型,并进行挂载 以下命令将internlm2-7b模型挂载到当前目录下: ln -s /share/model_repos/internlm2-7b/ ./ 步骤2&…

非阿里云注册域名如何在云解析DNS设置解析?

概述 非阿里云注册域名使用云解析DNS,按照如下步骤: 添加域名。 添加解析记录。 修改DNS服务器。 DNS服务器变更全球同步,等待48小时。 添加解析记录 登录云解析DNS产品控制台。 在 域名解析 页面中,单击 添加域名 。 在 …

虚拟创业团队如何建设

虚拟创业团队如何建设 一、目标设定 在组建虚拟创业团队之前,明确团队目标是至关重要的。目标应具体、可衡量、可实现,并与团队成员共享。通过设定共同的目标,团队成员能够更好地理解团队愿景,明确个人职责,并朝着同…

CRG设计之复位

1. 前言 CRG(Clock and Reset Generation,时钟复位生成模块) 模块扮演着关键角色。这个模块负责为整个系统提供稳定可靠的时钟信号,同时在系统上电或出现故障时生成复位信号,确保各个模块按预期运行。简而言之,CRG模块就像是SoC系…

第九节HarmonyOS 常用基础组件16-Blank

1、描述 空白填充组件,在容器主轴方向上,空白填充组件具有自动填充容器空余部分的能力。仅当父组件为Row/Column/Flex时生效。 2、接口 Blank(min?: number | string) 3、参数 参数名 参数类型 必填 描述 min number|string 否 空白填充组件…

SeaTunnel集群安装

环境准备 服务器节点 节点名称 IP bigdata1 192.168.1.250 bigdata4 192.168.1.251 bigdata5 192.168.1.252 Java环境(三个节点都需要) java1.8 注意:在安装SeaTunnel集群时,最好是现在一个节点上将所有配置都修改完&a…

【Prometheus】Prometheus的二进制部署+Grafana

目录 一、Prometheus概述 1、概念 2、核心组件prometheus server: 3、Prometheus的特点: 4、prometheus的存储引擎:TSDB 5、Prometheus组件: 6、Prometheus的工作流程: 7、Prometheus的局限性,以及和…