




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第第页探索闪存内存如何应对“内存墙”的可行性Source:Shao-PengYang,MinjaeKim,SanghyunNam,JuhyungPark,Jin-yongChoi,EyeeHyunNam,EunjiLee,SungjinLee,BryanS.Kim,OvercomingtheMem(or)yWallwithCXL-EnabledS(SD)s,July10,2023
本文探讨了使用廉价闪存内存(flashmemory)在新型互连技术(如CXL)上以应对“内存墙”的可行性。我们探索了CXL启用的闪存设备的设计空间,并展示了缓存和预取等技术可以帮助缓解有关闪存性能和寿命的担忧。我们通过使用真实世界的应用程序跟踪数据展示,这些技术使得CXL设备的估计寿命至少为3.1年,并能在微秒级内满足68-91%的内存请求。我们分析了现有技术的局限性,并提出了系统层面的变更来实现使用闪存的(DRAM)级性能。
01.
引言
在计算系统中,计算能力和内存容量需求之间的日益不平衡发展成为一个称为“内存墙”的挑战[23,34,52]。图1基于Gholami等人的数据[34],并扩展了更多的(最新)数据[11,30,43],展示了自然语言处理(NLP)模型的快速增长(每年14.1倍),远远超过了内存容量的增长(每年1.3倍)。“内存墙”迫使现代数据密集型应用,如数据库[8,10,14,20]、数据分析[1,35]和(机器学习)(ML)[45,48,66],要么意识到它们的内存使用情况[61],要么实现用户级内存管理[66]以避免昂贵的页面交换[37,53]。因此,在透明处理应用程序的情况下突破“内存墙”是一个活跃的研究领域;已经积极探索了一些方法,如创建面向ML系统[45,48,61],构建内存解(耦合)框架[36,37,52,69]和设计新的内存架构[23,42]。
图1:NLP应用程序内存需求的趋势[11,30,34,43]。每年(参数)数量增加了14.1倍,而(GPU)的内存容量每年只增长了1.3倍
我们探讨了是否可以使用闪存内存来突破“内存墙”——这是一种通常用于存储的内存技术,因为其具有高密度和容量扩展性[59]。虽然DRAM只能扩展到几GB的容量,但基于闪存的固态硬盘(SSD)可达到TB级的容量[23],足够大以应对“内存墙”的挑战。闪存内存作为主内存的使用得益于最近出现的诸如CXL[3]、Gen-Z[7]、CCIX[2]和OpenCA(PI)[12]的互连技术,它们允许通过lo(ad)/store指令直接由(CPU)访问PCIe(PeripheralComponentInterconnectExpress)设备。此外,这些技术承诺具有出色的可扩展性,因为可以通过(交换机)连接更多的PCIe设备[13],而不像用于DRAM的DIMM(双列直插式内存模块)。
然而,将闪存内存作为CPU可访问的主内存面临着三个主要挑战。
首先,内存请求与闪存内存之间存在颗粒度不匹配。这导致了在闪存上需要存在明显的流量放大,除了已有的闪存间接性需求[23,33]之外:例如,将64B的缓存行刷新到CXL启用的闪存,将导致16KiB的闪存内存页面读取、64B更新和16KiB的闪存程序写入到另一个位置(假设16KiB的页面级映射)。
其次,闪存内存的速度仍然比DRAM慢几个数量级(几微秒对比几纳秒)[5,24]。因此,虽然两种技术之间的峰值数据传输速率相似[4,15],但长时间的闪存内存延迟阻碍了持续性性能,因为数据密集型应用最多只能容忍微秒级的延迟[53]。
最后,闪存内存具有有限的耐久性,在经过多次写入后会磨损[24,44]。这限制了内存技术的可用性,因为超过耐久性限制的闪存内存块会表现出不可靠的行为和高错误率[44]。
我们通过探索设计选择来解决上述闪存内存的挑战,特别是与缓存和预取相关的选项,从而使得CXL启用的闪存设备(或称为CXL-flash)能够克服“内存墙”。尽管之前的研究已经探讨了多个CXL设备的可扩展性方面[36,42],并且已经证明了CXL-flash的可行性[9,42],但据我们所知,我们是第一个对CXL-flash设备的设计选择以及现有优化技术的有效性进行深入开源研究的工作。由于设计空间很大,我们首先在第4节中探索了CXL-flash(硬件)设计,然后在第5节中对详细策略和(算法)进行评估和分析。我们发现可以使用真实应用程序的内存跟踪数据设计CXL-flash,使得68-91%的请求可以在微秒级内实现延迟,并具有至少3.1年的估计寿命。在探索各种设计和策略的同时,我们进行了七项观察,这些观察共同表明现代预取算法不适合预测CXL-flash的内存访问模式。更具体地说,虚拟地址到物理地址的转换使得现有的预取器无法足够有效地执行。为了解决这个问题,我们探索了从内核向CXL-flash传递内存访问提示来进一步提高性能。本工作的贡献如下:
我们开发了一种新型工具,用于收集应用程序的物理内存访问轨迹,并用这些轨迹(模拟)了CXL-flash的行为。内存跟踪工具和CXL-flash模拟器的代码都可以在(/spypaul/MQ(Sim)_CXL.git)上获取。
通过使用合成工作负载,我们展示了将各种系统设计技术(如缓存和预取)集成到CXL-flash中,有潜力显著减少延迟,同时突显了优化的机会。(第4节)
使用真实世界的工作负载,我们分析了当前预取器的局限性,并提出了用于未来CXL-flash的系统级变更,以实现接近DRAM的性能,特别是设备的子微秒级延迟。(第5节)
02.
背景
在本节中,我们首先描述了CXL(Compu(te)ExpressLink)[3]作为基于PCIe的内存一致性互连技术(包括Gen-Z[7]、CCIX[2]和OpenCAPI[12])所带来的机遇。然后,我们讨论了在CXL中使用闪存内存的挑战。2.1CXL带来的机遇CXL是一种建立在PCIe之上的新型互连协议,将CPU、加速器和内存设备集成到单一计算域中[42]。这种集成的主要好处有两个。
首先,它允许CPU和PCIe设备之间进行一致的内存访问。这减少了通常需要在CPU和设备之间进行数据传输时所需的同步开销。
其次,CXL设备的数量可以很容易地进行扩展:通过CXL交换机,可以连接另一组CXL设备到CPU。
在CXL支持的三种类型的设备中,对于内存扩展的Type3设备对本工作是感兴趣的。Type3设备公开了主机管理的设备内存(HDM,host-manageddevicememory),CXL协议允许主机CPU通过load/store指令直接操作设备内存[3]。虽然CXL目前只考虑DRAM和PMEM作为主要的内存扩展设备,但由于CXL的一致性内存访问特性[42],使用SSD也是可能的。此外,基于闪存的SSD的高容量和更好的扩展性,通过3D堆叠[59]和在一个单元中存储多位[24],可以有效地解决现代数据密集型应用所面临的“内存墙”问题。受之前关于CXL的工作的启发[36,42],本文研究了使用闪存内存作为CXL内存扩展设备的可行性。2.2闪存的挑战我们讨论以下三个闪存的特点,这使得将其用作系统的主内存具有挑战性。粒度不匹配。闪存不是随机访问的:其数据以页粒度写入和读取,每个页的大小约为几千字节[33],导致大量的流量放大。此外,页不能被覆盖写入。相反,必须首先擦除一个包含数百个页的块,然后才能写入数据到已擦除的页[33]。这种受限的(接口)导致任何64B缓存行刷新通过读取-修改-写入操作产生大量的写放大。作为一个块设备,其访问粒度要大得多(4KiB)的SSD拥有更少的开销。微秒级延迟。闪存的速度比DRAM慢几个数量级,其读取速度仍在几十微秒范围内,而较慢的(编程)和擦除操作则在几百微秒到几千微秒之间[5,24]。此外,闪存的延迟还取决于其单元技术[24]。例如,表1中所示,随着每个单元存储的位数增加,从SLC(单级单元)到TLC(三级单元),延迟也会增加。超低延迟(ULL)闪存是SLC的一种变体,以性能为代价提高了密度[46,76]。然而,即使是ULL技术,其速度仍比DRAM慢几个数量级。作为一个块设备,微秒级的延迟是可以容忍的,因为存储栈中存在软件开销。然而,对于直接使用load/store指令访问的内存设备来说,微秒级延迟是一个挑战。
表1:内存技术特性概述
有限的耐久性。编程和擦除操作期间施加在闪存上的高电压会慢慢使单元失效,使它们随着时间的推移无法使用[44,72]。存储器制造商规定了耐久性极限作为一个指导,表示闪存块可以被擦除的次数。这个限制也取决于闪存技术,如表1所示。虽然这仍然是一个软限制,闪存超过限制后仍然可以继续使用[72],但是磨损的块表现出不可靠的行为,并且不能保证正确存储数据[44]。由于应用程序级和内核级的缓存和缓冲,SSD的块接口的写入量减少,因此当前的耐久性限制在SSD的寿命内通常是足够的。然而,作为内存设备,频繁的内存写入会使闪存内存快速变得无法使用。我们注意到,虽然这些闪存的挑战在存储领域中也存在,但是它们由SSD的内部固件处理。然而,对于CXL-flash,由于时间尺度更细,这些挑战应该由硬件来解决,这使得实现灵活和优化的算法变得困难。因此,我们预期将闪存内存从存储领域移动到内存领域时,这些挑战会加剧。
03.
工具和方法
为了理解CPU到CXL设备的物理内存访问行为,我们使用页面错误事件构建了一个物理内存跟踪工具(第3.1节)。然后,我们通过与一组虚拟内存跟踪(第3.2节)进行比较,展示了这个工具的必要性。本工作中生成的工具和数据可供公众使用。3.1跟踪内存访问主内存和CXL-flash通过物理内存地址进行访问。不幸的是,据我们所知,没有公开可用的工具能够在没有硬件修改的情况下跟踪最后一级缓存(LLC)和内存(控制器)之间的物理内存事务。跟踪CPU中的load/store指令是不够的,因为(1)它只收集虚拟地址访问,(2)最终对CXL-flash的访问被缓存层次结构过滤掉。
图2:收集物理内存跟踪的工作流程。我们使用Valgrind收集虚拟内存跟踪,并在缓存中模拟其行为。同时,我们捕获页面故障事件以跟踪页面表的更新,并用此生成物理内存跟踪我们通过结合来自Valgrind[19,57]的内存跟踪和页面错误事件(信息)来跟踪物理内存访问。图2说明了这个工作流程。如图顶部路径所示,我们使用Valgrind对应用程序进行load/store指令的工具化,并使用其缓存模拟器(Cachegrind)来过滤对内存的访问。更具体地说,我们修改了Cachegrind以收集由LLC缺失或替换引起的内存访问。然而,Cachegrind产生的这些内存访问仍然是虚拟地址,因此需要虚拟到物理(V2P)映射信息来生成物理内存跟踪。为此,如图2底部路径所示,我们收集应用程序运行时由页面错误引起的页表更新。我们修改安装页面表项的内核函数(do_anonymous_page()和do_set_pte()),并将目标应用程序的PID的V2P转换存储在/proc文件系统中。这捕获了应用程序执行过程中页面表更新的动态特性,并且开销很小。我们将来自Valgrind的虚拟访问和页面表更新结合起来生成物理内存跟踪。3.2虚拟内存与物理内存访问我们使用基于预取技术的前期工作[25,56]中的五个合成应用程序来展示我们的物理内存跟踪工具。所收集的跟踪特性总结如表2所示。我们收集了前2000万次内存访问:请注意这些不是load/store指令,而是LLC和内存之间的内存事务。
表2:合成工作负载特性概述
图3:显示五个合成应用程序(哈希映射、矩阵乘法、最小堆、随机访问和步幅访问)的访问模式的散点图。顶行(图3a–3e)显示虚拟地址访问,第二行(图3f–3j)显示物理访问。最后一行(图3k–3o)显示连续访问之间差异的累积分布函数。我们观察到由于地址转换,物理内存访问与虚拟内存访问不同图3a-3e(图3的第一行)绘制了这五个合成跟踪的虚拟页号(VPN,virtualpagenumber)。我们可以观察到虚拟地址访问模式与我们对应用程序的期望相匹配。然而,如图3f-3j(图3的第二行)所示,相应的物理帧号(PFN)并不类似于VPN。我们在图3k-3o(图3的最后一行)中显示了连续访问之间的差异(∆,delta)。黑色虚线是虚拟地址的delta,而灰色实线是五次迭代的物理地址的delta,其中两次迭代是在运行其他应用程序时运行的,以增加内存利用率。我们做出两个观察。首先,虚拟访问模式(黑色虚线)平均具有较小的delta值。然而,物理访问模式(灰色实线)可能具有非常大的delta值,这是由于虚拟到物理地址转换所致。其次,灰色实线很少彼此重叠,突显物理内存模式是动态的,并取决于影响内存分配的各种运行时因素。因此,物理和虚拟地址之间的观察到的不匹配可能受到动态因素的影响,如系统的内存利用率。为了证明捕获物理内存跟踪的必要性,我们通过使用虚拟地址和物理地址跟踪作为输入来测量CXL-flash的性能。CXL-flash的配置是具有8个通道和每个通道8个路的闪存后端以及512MiBDRAM缓存,并实现Next-N-line预取器[41](更多详细信息见第4节)。我们测量了五个合成应用程序的内存请求在小于1微秒的延迟下的百分比,并在表3中报告了结果。使用虚拟内存跟踪生成了一个过于乐观的结果,相较于运行物理内存跟踪的结果,更多的请求在1微秒以下完成。虚拟地址和物理地址之间的误差显著较高:所有的矩阵乘法实验的误差都超过了25%。随机和步幅访问负载的误差率较低,使得无论是虚拟还是物理寻址,都很难或者太容易预测访问模式。
表3:使用虚拟和物理地址跟踪的合成应用程序在CXL闪存中的亚微秒延迟百分比。我们重复五次物理跟踪生成,其中第4和第5次具有更高的系统内存利用率(因此,内存布局更加碎片化)。我们计算虚拟跟踪性能相对于物理跟踪的误差,并用黄色(黄色)标记超过10%的错误,用红色(红色)标记超过25%的错误。减轻地址转换过程中信息的变化的一种技术是利用大页面,这可以显著减少地址转换的数量[54,58]以保留内存访问模式。然而,这种方法只能部分减少对系统的影响,并且地址转换是不可避免的。随着应用程序内存需求的快速增长(如图1所示,年均增长率为14.1倍),在几年内,大页面将面临与较小页面相同的挑战。因此,我们决定保持配置的通用性,以探索CXL-flash的设计选项。
04.
CXL-flash的设计空间
我们探索构建CXL-flash的设计空间,特别是其中的硬件模块;我们稍后在第5节中评估算法和策略。为了模拟硬件,我们基于MQSim[68]及其扩展MQSim-E[49]构建了一个CXL-flash模拟器,并使用五个合成应用程序的物理内存跟踪(表2)来评估设计选项的效果。我们的CXL-flash的整体架构如图4所示,并在表4中展示了初始配置。本节中,我们回答以下研究问题。
缓存在提高性能方面的效果如何?(第4.1节)
如何有效地减少闪存内存流量?(第4.2节)
预取在隐藏长闪存内存延迟方面的效果如何?(第4.3节)
CXL-flash的合适闪存技术和并行性是什么?(第4.4节)
图4:CXL闪存的体系结构。
表4:§4中CXL闪存的初始配置。
4.1缓存对性能的影响
我们首先探索在闪存前添加DRAM缓存的效果。缓存主要有两个作用。
首先,它通过从更快的DRAM中提供频繁访问的数据来提高CXL-flash的性能。
其次,它在缓存命中时减少对闪存的整体流量。
图5:随着DRAM缓存大小变化的64B读写请求的平均访问延迟(图5a)和闪存内存流量(图5b)。通常情况下,缓存可以提高性能并减少对闪存的流量。然而,即使有足够大的缓存,平均延迟仍然远高于DRAM,这是由于内存访问的高强度造成的。图5定量展示了使用缓存的好处。我们将缓存大小从0变化到8GiB,并测量物理内存访问的平均延迟(图5a)和发送给后端的闪存内存请求的间隔时间(图5b)。当没有缓存时,由于排队延迟,平均延迟远高于闪存的读取和编程延迟。即使闪存后端的配置是每个通道32个通道和每个通道32个路的丰富并行性,但它仍不足以处理具有短间隔时间的内存请求。添加缓存显著减少了对闪存后端的流量,并改善了整体性能。然而,我们观察到图5a中,矩阵乘法和最小堆的平均延迟仍远高于DRAM的延迟,尽管这些工作负载的内存占用小于缓存。这是由于短间隔时间的请求导致了超负荷的闪存后端获取数据(图5b)。这个实验表明,仅仅使用缓存是不足以降低CXL-flash的延迟的,我们需要额外的辅助结构来减少对闪存的流量。
4.2减少闪存内存流量
内存访问以64B的粒度进行,而闪存后端以4KiB为单位进行寻址。因此,在缓存未命中时,将从闪存中获取4KiB的数据,并且属于同一4KiB的后续64B缓存未命中将在闪存读取正在进行时产生额外的闪存内存读取请求。这种情况在具有高空间局部性的内存访问中非常常见,并且由于更长的闪存延迟而加剧。我们将其称为重复读取,图6说明了哈希图,矩阵乘法和堆工作负载中重复读取的严重性:超过90%的闪存读取是重复读取!
图6:物理内存帧的闪存读取次数。实心条表示总的读取次数,而阴影条表示重复读取次数。重复读取是对尚未完成的读取请求的读取请求。
图7:使用(实线)和不使用(虚线)MSHR的延迟分布。受到CPU缓存的启发,我们向CXL-flash中添加了一组MSHR(missstatusholdingregiste(rs))[29,47],如图4所示。MSHR跟踪当前未完成的闪存内存请求,并从单个闪存内存读取服务多个64B内存访问。我们注意到,在SSD中MSHR很少见:在存储领域中,软件栈合并具有重叠地址的块I/O,因此不需要底层设备实现MSHR。然而,对于CXL-flash,没有软件层来执行此任务,因为它直接从LLC接收内存事务。我们观察到,图7中的MSHR显著降低了长尾延迟,特别是对于具有大量重复读取的三个工作负载。我们还观察到,通过添加MSHR,对于其他两个工作负载(随机和步幅),也会有轻微的改进。然而,MSHR只能减少闪存内存流量,并不能通过在需要数据之前将数据带入缓存来主动提高缓存命中率。
4.3从闪存预取数据
预取(Prefetching)是一种隐藏较慢技术长延迟的有效技术。通常,预取器在需要未命中或预取命中时获取额外的数据。为了了解这种技术的有效性,我们在CXL-flash中实现了一个简单的Next-N-line预取器[41],如图4所示。该预取器有两个可配置的参数:度和偏移量。度控制获取的额外数据量,而偏移量决定了触发地址的预取地址。换句话说,度参数表示预取器的侵略性,偏移量控制预取器提前获取数据的距离。
图8:具有不同预取器配置的CXL闪存的性能。
(X,Y)表示Next-N-line预取器的度和偏移。图8显示了不同度和偏移量对预取器的影响。在一个以4KiB页数为单位的(X,Y)符号中,X表示度,Y表示偏移量。如图8a所示,增加度或者预取器的侵略性通常会提高性能。即使是小的度数1,也会将矩阵乘法工作负载中的小于一微秒请求的比例从64%提高到76%,凸显了CXL-flash的预取的必要性。然而,改进效果会达到平台,进一步增加度数可能只会污染缓存。另一方面,增加偏移量会导致两种不同的行为,这取决于工作负载。对于哈希图,矩阵乘法和最小堆工作负载,增加偏移量从4增加到16时性能首先会有所改善。然而,偏移量为64时性能下降,因为它预取了太远的数据。随机工作负载对偏移量不敏感,除非它足够大,而步幅工作负载则随着偏移量的增加逐渐改善。
4.4探索闪存技术和并行性
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年中国数控卷簧机数据监测研究报告
- 买红木家具合同范例
- 2025至2030年中国折边带数据监测研究报告
- 2025至2030年中国商品泥凝土数据监测研究报告
- 2025至2030年中国三通焊接式铰管接头数据监测研究报告
- 棕尾别麻蝇卵巢发育规律探究及其法医学应用
- 饲料投喂量和微生物菌剂对稻虾养殖水体浮游植物群落及水质的影响
- 直接反馈和元语言反馈对高中生英语写作准确性的影响研究
- 快递设备项目实施方案
- 2025年中国青贮切碎机市场调查研究报告
- 变电站安全知识培训课件
- 第13课《 卖油翁 》课件统编版2024-2025七年级语文下册
- 2025年江苏省职业院校技能大赛中职组(新型电力系统运行与维护)参考试题库资料及答案
- 2025年黑龙江商业职业学院单招职业技能测试题库带答案
- 下肢外骨骼康复机器人
- 新建铁路专用线工程可行性研究报告
- 【地理】自然环境课件-2024-2025学年七年级地理下学期(人教版2024)
- GE 1.5MW系列风电机组技术规范和数据
- 北京大兴区公开招考社区服务站专职工作者高频重点提升(共500题)附带答案详解
- 2024年中国作家协会所属单位招聘考试真题
- 2025年房地产年度工作计划
评论
0/150
提交评论