****
存内计算与近存计算-基础理论及分类
** **
技术基础知识和分类
"近存计算"与"存内计算"易混淆,本章明晰其分类,并比较各内存驱动方法的独特优势。可计算存储器设备可作分立加速器或替代现有存储模块。我们深入剖析每种方法的利弊,为您揭示近内存计算领域的无限可能。
1.1 存内VS近存
本节深入解析内存内与近内存计算方法的多元分类。尽管二者界限模糊,但均广泛适用于各类场景,如内存数据库。本书聚焦前期研究,这些研究革新了计算内存架构、计算方案、数据访问模式及数据处理与内存的接近度。我们的分类(见图2.1)借鉴了[13]的洞见,依据计算结果产生位置进行精准划分,为您呈现最前沿的技术视角。
图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(数字/模拟)架构,揭示性能差异。
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,实现内存与计算的高效融合。
图2.2展示了三种系统配置:(a)基线系统,(b)配备离散加速器的系统,(c)内存层次结构中集成加速器的系统。
离散加速器可以不受限制地完全访问其存储空间,类似于暂存器存储器。离散内存空间将加速器与操作系统分页策略、一致性协议、数据加扰和地址加扰解耦。它还提供了灵活数据排列的控制。特别是,大多数IM 架构需要在特定数组的特定列内对齐操作数或转置输入以按位串行方式对其进行处理。离散加速器可以支持这些特定于架构的数据布局,而不需要太复杂。
用户界面可以作为与其驱动程序链接的库函数调用来提供,类似于 ASIC 加速器。分立加速器的重要缺点之一是它们仍然需要通过 PCIe 等外部链路从内存层次结构加载数据,这很可能成为瓶颈。这个问题在商用加速器中也同样存在:GPU 通过 PCIe 总线将数据复制到主机内存或从主机内存复制数据需要花费大量时间。该数据加载成本可以通过随着时间的推移重复使用数据来摊销。因此,能够实现高性能的应用程序通常仅限于那些每字节呈现高重用或高 GOP(千兆操作)的应用程序。
集成加速器非常适合绕过内存墙。然而,内存层次结构每一层中的许多现有方案和约束都是为了访问性能和安全性而实现的,这使得设计成熟的集成NM/IM 系统具有挑战性。例如,为了在计算之前对齐 SRAM 子阵列中的操作数,为它们分配足够的地址是不够的;它们需要以特定的方式关联起来。 DRAM使用各种加扰技术,并且获取操作数访问的虚拟地址也需要通过操作系统的页表。 NAND闪存使用闪存翻译层(FTL),它增加了另一层地址转换并封装在闪存设备中。许多 NVM 的写入耐久性有限,这些转换层有助于磨损均衡。对它们的干扰最终会缩短存储单元的寿命。一个集成的系统需要与这些现有的框架相处,包括操作系统和编程模型,但我们还没有一个完整的解决方案。
分立与集成加速器并非互斥。我们推荐采用混合策略,如在现有内存层次结构中创建暂存器内存,虽需从同级或下级存储器复制数据,但相较于PCIe共享总线,其带宽更高。此外,驱动程序能灵活释放暂存器内存,转为标准内存空间使用,显著提升效率。
-对此,您有什么看法见解?-
-欢迎在评论区留言探讨和分享。-