一文读懂存内计算与近存计算的分类与应用

 

存内计算与近存计算-基础理论及分类

 eaf156b7d66d156d948542034911a98f.jpeg 

 技术基础知识和分类

"近存计算"与"存内计算"易混淆,本章明晰其分类,并比较各内存驱动方法的独特优势。可计算存储器设备可作分立加速器或替代现有存储模块。我们深入剖析每种方法的利弊,为您揭示近内存计算领域的无限可能。

1.1 存内VS近存

本节深入解析内存内与近内存计算方法的多元分类。尽管二者界限模糊,但均广泛适用于各类场景,如内存数据库。本书聚焦前期研究,这些研究革新了计算内存架构、计算方案、数据访问模式及数据处理与内存的接近度。我们的分类(见图2.1)借鉴了[13]的洞见,依据计算结果产生位置进行精准划分,为您呈现最前沿的技术视角。

98734b3879aa00d22a14c9ddec6214f6.jpeg

图2.1:内存内与近内存计算分类,计算核心位于黄色模块。包含SA(检测放大器)、DR(字线驱动器)、WL(字线)和BL(位线)组件。

1.1.1 存储器中的处理和近存储器计算 

打破内存墙,提升内存中心架构性能,是业界长期追求。自20世纪90年代起,PIM技术成为突破冯·诺依曼架构内存带宽限制的热门研究焦点。其核心理念在于将计算单元直接嵌入主存储器(DRAM)中,实现计算与存储的物理融合。这一经典PIM方法将在后文深入解读,展现其革新潜力。

传统PIM方法在DRAM芯片集成中遭遇重大挑战。但自2010年代起,商用3D堆叠存储器重燃PIM研究热情。美光HMC通过DRAM层下集成逻辑层,有望实现逻辑层内的自定义逻辑,引领PIM新纪元。第3.2节深入探讨3D堆栈存储器背景下的PIM革新。

PIM现称近内存计算,区别于内存计算——一种内存为中心的新计算范式。近内存架构与冯诺依曼架构的显著差异如下,为您详细解析。

计算逻辑靠近存储器布局,通过高带宽电路集成技术(如2.5D和3D集成),最大化利用内部存储器的高访问带宽,实现高效数据处理。

2.5D集成电路采用硅中介层或有机中介层来连接存储器芯片和逻辑芯片,与印刷电路板(PCB)上的传统引线键合相比,能够实现高布线密度和功率效率。3D 集成使用硅通孔 (TSV) 和微凸块等层间连接技术来堆叠 DRAM 层。两者都有助于提供大的内部存储器带宽和技术友好性,因为逻辑芯片可以使用针对逻辑优化的不同工艺技术,从而促进堆叠存储器中的 PIM。此外,访问存储单元的基本架构和协议没有改变。因此,它节省了构建全新存储设备的巨大设计成本。由于这些原因,一些近内存计算设备已经投入商业使用

可以为PIM 实现通用内核以提供灵活的处理。

但事实并非如此,原因如下。

众多命令式编程应用通过利用时空局部性从缓存结构中获益显著,但PIM鲜有此类结构。然而,PIM的宽内存带宽为那些能展现并行性或需求大带宽的应用提供了巨大优势。

• 对于通用内核来说,散热要求通常具有挑战性。

1.1.2 内存计算 

内存计算,秉承PIM与近内存计算精髓,革新计算范式。它深度融合存储器单元、阵列与外围电路,实现高效计算。为实现这一目标,常需对结构进行定制修改或附加专属电路,以支持计算的顺利进行。

内存计算曾被视为经济不可行的设计,因其修改存储器单元需高额再投资成本,且当前架构已深度优化。修改后单元设计会降低密度,使内存中心架构在性能与面积(或成本)权衡上难以自证合理。然而,随着技术进步,内存计算潜力日益显现,值得我们进一步探索与优化。

随着非易失性存储器(NVM)的出现,内存计算的概念被重新审视。某些NVM 具有在模拟域中执行计算所需的物理特性,只需对内存阵列进行最小的设计更改即可实现内存计算。此外,存储单元的非易失性特性解决了 DRAM 单元的破坏性读取访问问题,这迫使 DRAM 内计算在计算之前执行复制。另一方面,模拟领域的内存计算仍然是一种推测性技术。例如,由于工艺变化和扩展的电流路径而存在的非理想性可能会损害计算结果。此外,随着模拟信号转换处理更多位数,数模转换 (DAC) 和模数转换 (ADC) 成本将变得令人望而却步。

研究团队深入探讨了SRAM、DRAM和NAND闪存等主流内存基底的内存计算。他们不仅成功应对了挑战,还巧妙利用了这些存储器的成熟技术。针对提高可靠性,部分研究聚焦于NVM中的数字化计算。后续章节将逐一揭示DRAM、SRAM和NVM在内存计算中的前沿应用,敬请期待第3、4、5章的详细介绍。

内存计算方法可以进一步细分为两类:内存(数组)和内存(外围)。

• 内存中(阵列)或IM-A使用特殊的计算操作(例如,MAGIC [17] 和Imply [18],第5 章中解释)进行计算,在内存阵列内产生计算结果。 IM-A 架构可以提供最大的带宽和能源效率,因为操作发生在内存阵列内部。 IM-A还可以为简单的操作提供最大的吞吐量。另一方面,复杂的功能可能会导致高延迟。

此外,IM-A 通常需要为此类特殊计算操作重新设计存储单元,扩展正常的位线和字线结构。由于单元和阵列的设计和布局针对特定电压和电流进行了大量优化,因此单元和阵列访问方法的任何变化都会导致大量的重新设计和表征工作。此外,有时需要修改外围电路(即执行读取和写入操作所需的逻辑电路,例如字线驱动器和感测放大器)以支持IM-A计算。因此,IM-A包括(a)存储器阵列发生较大变化的IM-A,以及(b)存储器阵列发生较大变化且外围电路发生较小变化的IM-A。

• 内存中(外围)或IM-P在外围电路内产生计算结果。 IM-P 可以进一步分为数字 IM-P 方法(仅处理数字信号)和模拟 IM-P 或 IM-P(模拟)方法(在模拟域中执行计算)。修改后的外围电路可实现超出正常读/写范围的操作,例如与不同单元交互或加权读取电压。此类修改包括支持字线驱动器中的多行激活以及用于多级激活和感测的 DAC/ADC。

它们设计用于从逻辑运算到算术运算(例如向量矩阵乘法中的点积)的计算。虽然结果是在外围电路中产生的,但存储器阵列执行大量的计算。外围电路的改变可能需要与传统存储器中使用的阵列不同的电流/电压。因此,为了稳健性,IM-P 可能会使用稍微不同的单元设计。用于支持复杂功能的外围设备的附加电路可能会导致高成本。

表2.1:对比传统冯诺依曼架构与近内存计算(NM)、IM-A及IM-P(数字/模拟)架构,揭示性能差异。

4caa091cbac1e6181688dc7d88805df4.jpeg

1.1.3 内存计算和近内存计算的比较 

单元与外围电路优化:基线及NM架构沿用原存储系统,无需改动。IM-P特化计算操作,仅需调整外围电路;IM-A或需单元优化以满足特定需求。

•密度:由于存储器阵列经过深度优化,因此当按原样使用存储器阵列宏时,单元密度最高。重要的是,当使用逻辑友好的存储器基板(例如,SRAM、eDRAM)或先进的集成技术(例如3D堆叠)时,整体密度(阵列+外设)对片上逻辑不太敏感。一些经典的 NM 架构使用 DRAM 处理技术在同一 DRAM 芯片中实现逻辑。

这样的设计可以显着降低整体存储器密度。 IM-P 可能面临与 NM 相同的问题,但通常需要比 NM 更小的更改量。这是因为大部分计算发生在存储器阵列中,需要在外设中添加较少的内容来实现与 NM 相同的处理元件;因此,密度受到的影响较小。 IM-P(模拟)具有更高的单元存储密度,但如果需要 ADC,则通常会以更大的外设面积需求为代价。

内存与计算单元间距影响带宽:远离时带宽减少,计算单元需广泛并行性满足大带宽需求,计算带宽与存储器带宽紧密相关。

区域分为两类:一是执行算术运算(如加法)的逻辑区域,二是用于逻辑实现的管芯区域。Baseline和NM需标准逻辑面积,但提供大芯片面积和灵活逻辑实现。IM则通过内存阵列实现计算,减少逻辑面积需求,但芯片面积受限。精准设计,满足不同逻辑与面积需求。

数据流灵活性至关重要,尤其对于非统一内存访问的应用程序,如随机和间接访问。NM与IM虽能访问内存地址的特定区域,但远程访问会引发内存节点或阵列间的高成本全面通信。因此,计算单元需全局访问存储器内容,以支持不规则数据访问需求。

逻辑灵活性受限于面积预算。IM-A单元仅有几颗额外二极管,而IM-P位线则配置数十个门。IM通过基本操作组合或外部处理单元增强功能,展现卓越的逻辑适应性。

IM受限于逻辑复杂度,常采用迭代运算执行算术操作,造成显著计算延迟。然而,其出色的计算带宽有效弥补了这一延迟,确保性能稳定。

精度与灵活性:基线和NM架构支持全精度算术逻辑,涵盖浮点运算。数字IM方法融合多位运算实现任意精度逻辑,属于IM-P(模拟)范畴,其位精度卓越。尽管模拟计算受限于电路因素(如电容、ADC分辨率),但可通过结果组合实现任意整数精度。然而,向浮点精度扩展仍具挑战。

•可靠性和ECC 支持:存储器容易受到各种错误源的影响,例如硬错误(例如,单元故障)和软错误(例如,由于宇宙辐射导致的位翻转)。内存使用纠错码 (ECC) 来保护自己免受此类错误的影响,但我们在 ECC 方面的工作很少与内存计算兼容。此外,模拟域中的计算会导致模拟噪声的增加。

一些模拟 IM-P 架构使用每个单元少量的位数来增加噪声容限,或者使用激进(容易出错)的单元配置来实现容错工作负载,例如机器学习,可以训练模型来容忍这种情况。错误和噪音。

内存/近内存计算展现出独特权衡优势。后续章节将详述各类架构代表作,探讨其并行性应用、适配场景,以及编程与执行模型如何高效利用并行计算力,引领未来计算新趋势。

1.2 离散加速器对比集成的内存层次

以内存为核心的架构将内存与计算功能融合,NM或IM内存模块既可设计为独立加速器,也可集成于现有内存层次结构中,如图2.2,实现内存与计算的高效融合。

289484ffc4dd8cef36dbd2e54d708dc8.jpeg 

图2.2展示了三种系统配置:(a)基线系统,(b)配备离散加速器的系统,(c)内存层次结构中集成加速器的系统。

离散加速器可以不受限制地完全访问其存储空间,类似于暂存器存储器。离散内存空间将加速器与操作系统分页策略、一致性协议、数据加扰和地址加扰解耦。它还提供了灵活数据排列的控制。特别是,大多数IM 架构需要在特定数组的特定列内对齐操作数或转置输入以按位串行方式对其进行处理。离散加速器可以支持这些特定于架构的数据布局,而不需要太复杂。

用户界面可以作为与其驱动程序链接的库函数调用来提供,类似于 ASIC 加速器。分立加速器的重要缺点之一是它们仍然需要通过 PCIe 等外部链路从内存层次结构加载数据,这很可能成为瓶颈。这个问题在商用加速器中也同样存在:GPU 通过 PCIe 总线将数据复制到主机内存或从主机内存复制数据需要花费大量时间。该数据加载成本可以通过随着时间的推移重复使用数据来摊销。因此,能够实现高性能的应用程序通常仅限于那些每字节呈现高重用或高 GOP(千兆操作)的应用程序。

集成加速器非常适合绕过内存墙。然而,内存层次结构每一层中的许多现有方案和约束都是为了访问性能和安全性而实现的,这使得设计成熟的集成NM/IM 系统具有挑战性。例如,为了在计算之前对齐 SRAM 子阵列中的操作数,为它们分配足够的地址是不够的;它们需要以特定的方式关联起来。 DRAM使用各种加扰技术,并且获取操作数访问的虚拟地址也需要通过操作系统的页表。 NAND闪存使用闪存翻译层(FTL),它增加了另一层地址转换并封装在闪存设备中。许多 NVM 的写入耐久性有限,这些转换层有助于磨损均衡。对它们的干扰最终会缩短存储单元的寿命。一个集成的系统需要与这些现有的框架相处,包括操作系统和编程模型,但我们还没有一个完整的解决方案。

分立与集成加速器并非互斥。我们推荐采用混合策略,如在现有内存层次结构中创建暂存器内存,虽需从同级或下级存储器复制数据,但相较于PCIe共享总线,其带宽更高。此外,驱动程序能灵活释放暂存器内存,转为标准内存空间使用,显著提升效率。

 

-对此,您有什么看法见解?-

-欢迎在评论区留言探讨和分享。-

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ctfshow web 月饼杯II

web签到 <?php //Author:H3h3QAQ include "flag.php"; highlight_file(__FILE__); error_reporting(0); if (isset($_GET["YBB"])) {if (hash("md5", $_GET["YBB"]) $_GET["YBB"]) {echo "小伙子不错嘛&#xff…

App自动化测试_Python+Appium使用手册

一、Appium的介绍 Appium是一款开源的自动化测试工具&#xff0c;支持模拟器和真机上的原生应用、混合应用、Web应用&#xff1b;基于Selenium二次开发&#xff0c;Appium支持Selenium WebDriver支持的所有语言&#xff08;java、 Object-C 、 JavaScript 、p hp、 Python等&am…

thinkphp6 自定义的查询构造器类

前景需求&#xff1a;在查询的 时候我们经常会有一些通用的&#xff0c;查询条件&#xff0c;但是又不想每次都填写一遍条件&#xff0c;这个时候就需要重写查询类&#xff08;Query&#xff09; 我目前使用的thinkphp版本是6.1 首先自定义CustomQuery类继承于Query <?p…

让表单引擎插上AI的翅膀-记驰骋表单引擎加入AI升级

让表单引擎插上AI的翅膀 随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;已经逐渐渗透到我们工作和生活的每一个角落。在数字化办公领域&#xff0c;表单引擎作为数据处理和流程自动化的重要工具&#xff0c;也迎来了与AI技术深度融合的新机遇。让表单引擎…

Python零基础-下【详细】

接上篇继续&#xff1a; Python零基础-中【详细】-CSDN博客 目录 十七、网络编程 1、初识socket &#xff08;1&#xff09;socket理解 &#xff08;2&#xff09;图解socket &#xff08;3&#xff09;戏说socket &#xff08;4&#xff09;网络服务 &#xff08;5&a…

api网关kong对高频的慢接口进行熔断

一、背景 在生产环境&#xff0c;后端服务的接口响应非常慢&#xff0c;是因为数据库未创建索引导致。 如果QPS低的时候&#xff0c;因为后端服务有6个高配置的节点&#xff0c;虽然接口慢&#xff0c;还未影响到服务的正常运行。 但是&#xff0c;当QPS很高的时候&#xff0c…

整合Spring Boot 框架集成Knife4j

本次示例使用Spring Boot作为脚手架来快速集成Knife4j,Spring Boot版本2.3.5.RELEASE ,Knife4j版本2.0.7 POM.XML完整文件代码如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0…

基于开源项目ESP32 SVPWM驱动无刷电机开环速度测试

基于开源项目ESP32 SVPWM驱动无刷电机开环速度测试 ✨本篇硬件电路和代码来源于此开源项目&#xff1a;https://github.com/MengYang-x/STM3F401-FOC/tree/main&#x1f4cd;硬件电路和项目介绍&#xff0c;立创开源广场&#xff1a;https://oshwhub.com/shadow27/tai-yang-nen…

百度中心之星

目录 新材料 星际航行 新材料 直接模拟&#xff1a;因为要考虑上次出现的位置&#xff0c;所以使用map映射最好&#xff0c;如果没有出现过就建立新映射&#xff0c;如果出现过但是已经反应过就跳过&#xff0c;如果出现过但是不足以反应&#xff0c;就建立新映射&#xff0c;…

python实现——分类类型数据挖掘任务(图形识别分类任务)

分类类型数据挖掘任务 基于卷积神经网络&#xff08;CNN&#xff09;的岩石图像分类。有一岩石图片数据集&#xff0c;共300张岩石图片&#xff0c;图片尺寸224x224。岩石种类有砾岩&#xff08;Conglomerate&#xff09;、安山岩&#xff08;Andesite&#xff09;、花岗岩&am…

体验Photoshop:无需下载,直接在浏览器编辑图片

搜索Photoshop时&#xff0c;映入眼帘的是PS软件下载&#xff0c;自学PS软件需要多长时间&#xff0c;学PS软件有必要报班吗...PS软件的设计功能很多&#xff0c;除了常见的图像处理功能外&#xff0c;还涉及图形、文本、视频、出版等。不管你是平面设计师&#xff0c;UI/UX设计…

visual studio code 全局搜索

VScode写代码的时候&#xff0c;会经常性的需要进行查找代码&#xff0c;那么怎么在Visual Studio Code中进行查找呢&#xff0c;下面就来大家vscode全局搜索的方法。 想要在vscode全局搜索进行全局搜索&#xff0c;使用快捷键CTRLSHIFTF即可进行搜索&#xff0c;也可以在左边…

免费分享一套微信小程序图书借阅(图书管理)系统(SpringBoot后端)

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序图书借阅(图书管理)系统(&#xff0c;分享下哈。 项目介绍 该项目是一套图书馆信息管理系统&#xff0c;包括用户小程序以及后台管理系统&#xff0c;基于SpringBootMyBatis实现。前台商城系统包…

Linux主机安全可视化运维(免费方案)

本文介绍如何使用免费的主机安全软件,在自有机房或企业网络实现对Linux系统进行可视化“主机安全”管理。 一、适用对象 本文适用于个人或企业内的Linux服务器运维场景,实现免费、高效、可视化的主机安全管理。提前发现主机存在的安全风险,全方位实时监控主机运行时入侵事…

Windows 11 Beta 22635.3646 预览版发布:中国大陆地区新增“微软电脑管家”应用

微软今天面向 Beta 频道的 Windows Insider 项目成员&#xff0c;发布了适用于 Windows 11 的 KB5037858 更新&#xff0c;用户安装后版本号升至 Build 22635.3646&#xff0c;该版本主要为中国大陆设备新增“微软电脑管家”应用。 IT之家 5 月 24 日消息&#xff0c;微软今天…

LabVIEW中PID控制器系统的噪声与扰动抑制策略

在LabVIEW中处理PID控制器系统中的噪声和外部扰动&#xff0c;需要从信号处理、控制算法优化、硬件滤波和系统设计四个角度入手。采用滤波技术、调节PID参数、增加前馈控制和实施硬件滤波器等方法&#xff0c;可以有效减少噪声和扰动对系统性能的影响&#xff0c;提高控制系统的…

PBR系列-物理材质(上)

作者&#xff1a;游梦 对PBR系列文章感兴趣还可以看前文&#xff1a; PBR系列 - 物理光源 PBR系列-光之简史 前面两篇文章分别介绍了物理光源与光学研究简史&#xff0c;在对光有了简单认识之后&#xff0c;再认识物理材质会发现其实本质上还是对光的研究&#xff0c;再深入…

阿里云 通过EIP实现VPC下的SNAT以及DNAT

192.168.0.85 有公网地址192.1680.95无公网地址 在192.168.0.85&#xff08;有公网地址服务器上操作&#xff09; #开启端口转发 echo "net.ipv4.ip_forward 1" >> /etc/sysctl.conf sysctl -p#仅允许192.168.0.95 iptables -t nat -I POSTROUTING -s 192.16…

SqliSniper:针对HTTP Header的基于时间SQL盲注模糊测试工具

关于SqliSniper SqliSniper是一款基于Python开发的强大工具&#xff0c;该工具旨在检测HTTP请求Header中潜在的基于时间的SQL盲注问题。 该工具支持通过多线程形式快速扫描和识别目标应用程序中的潜在漏洞&#xff0c;可以大幅增强安全评估过程&#xff0c;同时确保了速度和效…

Pycharm使用时的红色波浪线报错——形如‘break‘ outside loop

背景&#xff1a; 我在一个方法中&#xff0c;写了一个if判断&#xff0c;写了一个break&#xff0c;期望终止这个函数&#xff0c;编辑器出现报错 形如下图 视频版问题教程&#xff1a; Pycharm下出现波浪线报错&#xff0c;形如break outside loop 过程&#xff1a; 很奇…