网站客服:zx81024163 |

突破“内存墙”:基于CXL技术的SSD

2023-10-09 04:00:57发布    浏览874次    信息编号:77732

友情提醒:凡是以各种理由向你收取费用,均有骗子嫌疑,请提高警惕,不要轻易支付。

突破“内存墙”:基于CXL技术的SSD

:Shao-Peng Yang、Kim、Nam、Park、Jin-yong Choi、Eyee Hyun Nam、Eunji Lee、Lee、Bryan S. Kim,使用 CXL-SSD,2023 年 7 月 10 日

概括

本文探讨了在 CXL 等新型互连技术上使用廉价闪存(flash)来对抗“内存墙”的可行性。 我们探索了支持 CXL 的闪存设备的设计空间,并表明缓存和预取等技术可以帮助减轻对闪存性能和寿命的担忧。 我们使用真实世界的应用程序跟踪数据证明,这些技术使 CXL 设备的估计使用寿命至少为 3.1 年,并在微秒内满足 68-91% 的内存请求。 我们分析了现有技术的局限性,并提出了系统级更改,以使用闪存实现 DRAM 级性能。

1 简介

在计算系统中,计算能力和内存容量需求之间日益不平衡发展成为一个被称为“内存墙”的挑战[23,34,52]。 图1是基于等人的数据。 [34]并用更新的数据进行扩展[11,30,43],显示自然语言处理(NLP)模型的快速增长(每年14.1倍),远远超过内存容量增长(每年1.3倍)。 “内存墙”迫使现代数据密集型应用程序,例如数据库 [8, 10, 14, 20]、数据分析 [1, 35] 和机器学习 (ML) [45, 48, 66],要么内存感知其使用情况 [61],或实现用户级内存管理 [66] 以避免昂贵的页面交换 [37, 53]。 因此,突破“内存墙”,透明地处理应用程序是一个活跃的研究领域; 一些方法已经被积极探索,例如创建面向机器学习的系统[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] 和 [12],这些技术允许 CPU 通过加载/直接访问存储指令 PCIe( ) 设备。 此外,这些技术还保证了出色的可扩展性,因为可以通过交换机连接更多 PCIe 设备 [13],这与用于 DRAM 的 DIMM(双列直插式内存模块)不同。

然而,使用闪存作为CPU可访问的主存储器面临着三个主要挑战。

我们通过探索设计选项,特别是与缓存和预取相关的选项来解决上述闪存挑战,这些选项使支持 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 以进一步提高性能。 这项工作的贡献如下:

2 背景

在本节中,我们首先描述 CXL (Link) [3] 作为基于 PCIe 的内存相干互连技术(包括 Gen-Z [7]、CCIX [2] 和 [12])所带来的机遇。 然后我们讨论了在 CXL 中使用闪存的挑战。

2.1 CXL带来的机遇

CXL 是一种基于 PCIe 构建的新型互连协议,它将 CPU、加速器和内存设备集成到单个计算域中 [42]。 这种集成的主要好处是双重的。

在 CXL 支持的三种类型的设备中,具有扩展内存的 Type 3 设备是本工作感兴趣的对象。 3类设备暴露主机管理的设备内存(HDM,host-),CXL协议允许主机CPU通过加载/存储指令直接操作设备内存[3]。 虽然CXL目前只考虑DRAM和PMEM作为主要的内存扩展设备,但由于CXL一致的内存访问特性,使用SSD也是可能的[42]。

此外,基于闪存的SSD的高容量和更好的可扩展性,通过3D堆叠[59]和在一个单元中存储多个位[24],可以有效解决现代数据密集型应用面临的“内存墙”。 问题。 受到之前 CXL [36, 42] 工作的启发,本文研究了使用闪存作为 CXL 内存扩展设备的可行性。

2.2 闪存挑战

我们讨论闪存的以下三个特征,这些特征使得将其用作系统的主存储器具有挑战性。

粒度不匹配。 闪存不是随机访问的:其数据以页粒度写入和读取,每个页约为几千字节[33],导致流量大幅放大。 此外,页面不能被覆盖。 相反,必须首先擦除包含数百页的块,然后才能将数据写入已擦除的页[33]。 此受限接口会导致任何 64B 缓存行刷新通过读-修改-写操作产生显着的写放大。 作为块设备,SSD 的开销要少得多,而且访问粒度 (4KiB) 更大。

微秒级延迟。 闪存比 DRAM 慢几个数量级,读取速度仍在数十微秒范围内,而较慢的编程和擦除操作范围为数百到数千微秒 [5,24]。 此外,闪存的延迟还取决于其单元技术[24]。 例如,如表 1 所示,随着每个单元存储的位数增加,从 SLC(单级单元)到 TLC(三级单元),延迟也会增加。 超低延迟 (ULL) 闪存是 SLC 的一种变体,它以牺牲性能为代价来提高密度 [46,76]。 然而,即使 ULL 技术仍然比 DRAM 慢几个数量级。 作为块设备,由于存储堆栈中的软件开销,微秒级延迟是可以容忍的。 然而,对于使用加载/存储指令直接访问的存储设备,微秒延迟是一个挑战。

表 1:存储器技术特性概述

耐用性有限。 在编程和擦除操作期间施加到闪存的高电压会慢慢使单元失效,随着时间的推移,它们将变得无法使用[44,72]。 存储器制造商指定了耐久性极限作为指导,指示闪存块可以被擦除的次数。 该限制还取决于闪存技术,如表1所示。尽管这仍然是一个软限制,并且闪存在超过限制后可以继续使用[72],但磨损的块表现出不可靠的行为,并且不能保证存储数据正确[44]。 由于应用程序级和内核级缓存和缓冲,SSD 的块接口会受到写入减少的影响,因此当前的耐用性限制通常足以覆盖 SSD 的整个生命周期。 然而,作为存储设备,频繁的内存写入很快就会导致闪存无法使用。

我们注意到,虽然这些闪存挑战也存在于存储领域,但它们是由 SSD 的内部固件处理的。 然而,对于CXL-flash来说,由于时间尺度更精细,这些挑战应该通过硬件来解决,这使得难以实现灵活和优化的算法。 因此,随着我们将闪存从存储领域转移到内存领域,我们预计这些挑战将会加剧。

3 工具与方法

为了了解从 CPU 到 CXL 设备的物理内存访问行为,我们使用页面错误事件构建了一个物理内存跟踪工具(第 3.1 节)。 然后,我们通过与一组虚拟内存跟踪进行比较来证明该工具的必要性(第 3.2 节)。 这项工作中生成的工具和数据可供公众使用。

3.1 跟踪内存访问

主存储器和CXL闪存是通过物理存储器地址访问的。 不幸的是,据我们所知,没有公开可用的工具能够在不修改硬件的情况下跟踪末级缓存 (LLC) 和内存控制器之间的物理内存事务。 跟踪 CPU 中的加载/存储指令是不够的,因为 (1) 它仅收集虚拟地址访问,并且 (2) 最终对 CXL-flash 的访问被缓存层次结构过滤掉。

图 2:收集物理内存跟踪的工作流程。 我们使用 收集虚拟内存痕迹,并在缓存中模拟其行为。同时,我们捕获缺页事件来跟踪页表更新并使用它来生成物理内存痕迹

我们通过结合[19, 57]中的内存跟踪和页面错误事件信息来跟踪物理内存访问。 图 2 说明了此工作流程。 如图顶部路径所示,我们检测应用程序的加载/存储指令,并使用其缓存模拟器 () 来过滤对内存的访问。 更具体地说,我们进行了修改以收集由 LLC 删除或替换引起的内存访问。 然而,这些产生的内存访问仍然是虚拟地址,因此需要虚拟到物理(V2P)映射信息来生成物理内存轨迹。 为此,如图 2 底部路径所示,我们收集应用程序运行时由页面错误引起的页表更新。 我们修改安装页表条目并将目标应用程序 PID 的 V2P 转换存储在 /proc 文件系统中的内核函数(() 和 ())。 这以很少的开销捕获了应用程序执行期间页表更新的动态特性。 我们将虚拟访问和页表更新相结合,以生成物理内存跟踪。

3.2 虚拟内存和物理内存访问

我们使用先前工作 [25, 56] 中基于预取技术的五个合成应用程序来演示我们的物理内存跟踪工具。 表 2 显示了收集的跟踪特征的摘要。我们收集了前 2000 万次内存访问:请注意,这些不是加载/存储指令,而是 LLC 和内存之间的内存事务。

表 2:综合工作负载特征概述

图 3:散点图显示了五种综合应用程序的访问模式(哈希图、矩阵乘法、最小堆、随机访问和跨步访问)。 顶行(图 3a-3e)显示虚拟地址访问,第二行(图 3f-3j)显示物理访问。 最后一行(图3k-3o)显示了连续访问之间差异的累积分布函数。我们观察到,由于地址转换,物理内存访问与虚拟内存访问不同

图 3a-3e(图 3 的第一行)绘制了这 5 个合成跟踪的虚拟页号(VPN,页 )。 我们可以观察到虚拟地址访问模式与我们对应用程序的期望相匹配。 然而,如图3f-3j(图3的第二行)所示,相应的物理帧号(PFN)与VPN并不相似。 我们在图 3k-3o(图 3 的最后一行)中显示了连续访问之间的差异(Δ,delta)。 黑色虚线是虚拟地址的增量,而灰色实线是五次迭代的物理地址的增量,其中两次是在运行其他应用程序时运行的,以提高内存利用率。 我们提出两个观察结果。

首先,虚拟访问模式(黑色虚线)平均具有较小的增量值。 然而,由于虚拟地址到物理地址的转换,物理访问模式(灰色实线)可能具有非常大的增量值。

其次,灰色实线很少相互重叠,这突出表明物理内存模式是动态的,并且取决于影响内存分配的各种运行时因素。 因此,观察到的物理地址和虚拟地址之间的不匹配可能会受到动态因素的影响,例如系统的内存利用率。

为了证明捕获物理内存轨迹的必要性,我们使用虚拟地址和物理地址轨迹作为输入来测量 CXL-flash 的性能。 CXL-flash 配置有 8 个通道和每个通道 8 个通道的闪存后端以及 DRAM 缓存,并实现了 Next-N-line 预取器 [41](更多详细信息请参阅第 4 节)。 我们测量了五个延迟小于 1 微秒的合成应用程序的内存请求百分比,并在表 3 中报告了结果。使用虚拟内存跟踪产生了过于乐观的结果,与运行物理内存跟踪相比,在 1 微秒内完成的请求更多。 虚拟地址和物理地址之间的误差明显更高:所有矩阵乘法实验的误差都超过25%。 随机和跨步访问负载的错误率较低,使得虚拟或物理寻址的访问模式很难或太容易预测。

表 3:使用虚拟和物理地址跟踪的综合应用程序的 CXL 闪存中的亚微秒延迟百分比。 我们重复物理跟踪生成五次,第四次和第五次具有更高的系统内存利用率(因此,内存布局更加碎片化)。 我们计算虚拟跟踪性能相对于物理跟踪的误差,并将误差超过 10% 的标记为黄色(黄色),误差超过 25% 的标记为红色(红色)。

减轻地址转换期间信息变化的一种技术是利用大页面,这可以显着减少地址转换的数量 [54, 58] 以保留内存访问模式。 但这种方式只能部分减少对系统的影响,地址转换是不可避免的。 随着应用程序内存需求快速增长(平均年增长率为 14.1 倍,如图 1 所示),几年内大页面将面临与小页面相同的挑战。 因此,我们决定保持通用配置,以探索 CXL-flash 的设计选项。

4 CXL-flash的设计空间

我们探索了 CXL-flash 构建的设计空间,特别是其中的硬件模块; 我们稍后将在第 5 节中评估算法和策略。为了模拟硬件,我们构建了一个基于 MQSim [68] 及其扩展 MQSim-E [49] 的 CXL-flash 模拟器,并使用了五个综合应用程序的物理内存跟踪(表 2) )来评估设计选项的效果。 我们的CXL-flash的整体架构如图4所示,初始配置如表4所示。

在本节中,我们回答以下研究问题。

图 4:CXL 闪存架构。

表 4:§4 中 CXL 闪存的初始配置。

4.1 缓存对性能的影响

我们首先探讨在闪存前面添加DRAM缓存的效果。 缓存有两个主要功能。

图 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 (miss) [29, 47],如图 4 所示。MSHR 跟踪当前未完成的闪存请求,并为来自单个闪存的多个 64B 内存访问提供服务读。 我们注意到MSHR在SSD中很少见:在存储领域,软件堆栈合并了具有重叠地址的块I/O,因此底层设备不需要实现MSHR。 然而,对于 CXL-flash,没有软件层来执行此任务,因为它直接从 LLC 接收内存事务。 我们观察到图 7 中的 MSHR 显着减少了长尾延迟,特别是对于具有大量重复读取的三个工作负载。 我们还观察到,通过添加 MSHR,其他两种工作负载(随机和跨步)也略有改善。 然而,MSHR只能减少闪存流量,并不能在需要数据之前将数据带入缓存来主动提高缓存命中率。

4.3 从闪存预取数据

() 是一种在较慢的技术中隐藏长延迟的有效技术。 通常,当需要未命中或预取命中时,预取器会获取附加数据。 为了了解该技术的有效性,我们在 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 探索闪存技术和并行性

在上一小节中,我们检查了使用 SLC 闪存技术和丰富的闪存并行性(每通道 32 个通道,每通道 32 路,32×32)的 CXL-flash 的性能。 在本节中,我们研究技术(ULL、SLC、MLC 和 TLC)和并行性(8×4、8×8、16×16 和 32×32)对整体 CXL 闪存性能的敏感性。

首先,我们使用跨步工作负载研究闪存技术和缓存大小的影响(如图 9 所示)。 我们选择此工作负载是因为它在默认配置中表现良好,因此我们希望它代表具有最小改进空间的工作负载。 图 9a 说明了不同内存技术的平均延迟。 我们观察到,尽管 ULL 和 SLC 闪存之间的延迟存在显着差异(3 微秒与 25 微秒),但在存在缓存的情况下,两者之间的性能差异可以忽略不计。 只有当没有 DRAM 缓存时,ULL 闪存的性能才会显着提高。 我们还观察到使用 MLC 和 TLC 技术时性能显着下降。 图 9b 显示了基于闪存写入流量估计的 CXL-闪存的估计寿命。 该估计考虑了耐久性限制、容量和数据写入; 它乐观地假设闪存后端的写入放大可以忽略不计。 我们观察到,通过使用ULL和SLC技术以及一些缓存,CXL-flash的寿命可以达到4年以上。 增加缓存大小可以进一步延长寿命,因为闪存写入流量会减少。 对于基于MLC和TLC的CXL-flash来说,只有使用足够大的缓存才可行:只有1GiB的缓存不会持续超过一年。

图 9:CXL 闪存性能和寿命的闪存技术和缓存大小敏感性测试。

图 10:不同闪存并行度和缓存大小的亚微秒请求百分比。 x 轴代表闪存并行度(通道数 × 路数)。 线条代表不同缓存大小的值。

接下来,我们通过使用随机(图 10a)和跨步(图 10b)工作负载来研究不同闪存并行性和缓存大小对整体性能的影响。 我们选择这两个工作负载是因为它们具有最大的内存占用(分别为 8GiB 和 4GiB)。 这里的闪存技术就是SLC。 我们观察到,对于足够大的缓存,将并行度降低到 (8×4) 不会对性能产生不利影响。 然而,对于较小的缓存,闪存并行性很重要。 有趣的是,这两个工作负载表现出略有不同的行为。 随机工作负载对缓存大小非常敏感。 另一方面,跨步工作负载对缓存大小不敏感,但对并行性更敏感。 这是由于预取器在跨步工作负载中的有效性。

4.5 结论总结

我们简要总结了以下发现:

5 策略评估

基于上一节 (§4) 中 CXL-flash 架构设计空间的探索,在本节中我们将评估高级缓存和预取策略。 我们选择了来自各个领域的五个内存密集型实际应用:自然语言处理 [18, 70]、图形处理 [6, 27]、高性能计算 [17, 62]、SPEC CPU [16, 21] 和 KV存储[22,31]。 我们使用我们的工具 (§3) 收集了物理内存访问跟踪,并总结了表 5 中的工作负载特征。

表 5:实际应用程序的工作负载特征。 空间和时间局部性值的范围从0到1,并使用堆栈和块亲和性度量来计算[32]:值越高表示局部性越高。

然而,实际应用程序的内存占用量比我们预期的要小,即使它们是在具有 64GiB 内存的机器上收集的。 因此,我们特意将缓存配置得较小(64MiB),以便实验结果可以扩展到更大的工作负载。 我们还将闪存并行度缩小到更实际的设置并使用 ULL 闪存。 表 6 总结了本节中 CXL-flash 的默认参数。

表 6:§5 中 CXL 闪存的默认参数。

5.1 缓存替换策略

与之前的缓存大小性能检查(§4.1)不同,这里我们固定缓存大小并评估不同集合关联性下不同缓存替换策略的影响。 具体来说,我们实施以下四个策略。

我们选择随机作为基准,FIFO和LRU是两种可以在硬件中实现的标准CPU缓存策略。 为了进一步减少流量并延长设备寿命,我们实施了 CFLRU 来探索优先驱逐干净缓存行以减少闪存写入活动的好处。

图 11 测量了延迟小于 1 微秒的 CXL 闪存请求的百分比,图 12 显示了闪存写入的数量。 从这些图表中,我们得出五个观察结果。

首先,增加关联性可以提高性能,因为它可以提高缓存命中率。 对于缓存系统来说,失效开销非常高,提高命中率比降低命中时间对性能的影响更大。

其次,CFLRU 优于其他替换策略,特别是在 BERT、XZ 和 YCSB 中(图 11a、图 11d 和图 11e)。 图 12a、图 12d 和图 12e 中所示的写入流量的显着减少支持了这一点。

第三,具有高局部性的工作负载对缓存替换策略不敏感(图 11c 和图 12c):无论采用何种策略,至少 83% 的请求延迟时间小于一微秒。

第四,读主导的工作负载通常比写主导的工作负载表现更好,因为闪存编程延迟相对于读延迟更大。 BERT和BERT仅产生0.7M和1.0M的闪存写入时间(图12a和图12c),因此它们的延迟小于1微秒的比例分别达到84%和85%(图11a和图11c)。

最后,局部性较低的工作负载不仅性能较差,而且对缓存策略的敏感度也较低。 特别是,如图 11b 所示,由于其低局部性和大内存占用,在页面排名工作负载中最多只有 65% 的请求实现了不到 1 微秒的延迟。 图 11d 中的 XZ 跟踪也表现出较低的局部性,但对 CFLRU 比 Page Rank 工作负载更敏感,因为该工作负载的写入比例较高。

图 11:基于缓存替换策略和关联性的 CXL 闪存亚微秒延迟百分比。 通常,增加相关性会减少延迟,并且 CFLRU 的性能优于其他策略。

图 12:基于缓存替换策略和关联性的闪存写入请求数量。 随着关联性的增加,CFLRU 显着减少写入次数。

在存储领域,可以通过各种软件级别的技术,包括操作系统级别的页面缓存,来减少写入SSD的数据量。 然而,CXL-flash 的缓存管理行为类似于 CPU 缓存,并且其接近最佳状态可能存在限制。

5.2 预取策略

在第 4.3 节中,我们测量了具有 8GiB 大缓存的简单 Next-N-line 预取器的有效性。 在本节中,我们将缓存缩小到 64MiB 并将其关联性设置为 16,使用 CFLRU 算法对其进行管理,并测量以下五个预取器设置的性能。

我们选择这些算法是因为它们已被证明是高效的,可以在硬件中实现,并且适合CXL-flash的设计空间。 特别是,NL、FD 和 BO 是 CPU 缓存的预取器,其中 BO 是 NL 的改进版本,而 FD 利用我们稍后讨论的性能指标。 LP主要用于从远程内存中预取数据,其中缓存命中和缓存未命中之间的延迟差异与我们的设计空间类似。

观察 1:虽然 68-91% 的请求延迟小于一微秒,但使用预取器可能会对实际应用程序性能产生不利影响。 如图 13a 所示,最先进的预取器会对 BERT、XZ 和 YCSB 工作负载的性能产生负面影响,同时对其他两个工作负载有帮助。 特别是,使用最佳偏移预取器时,延迟会增加 36% 亚微秒。 To why, we cache hit rate, cache hit-miss (HUM) rate, and miss rate ( 13b). A cache hit-miss to a hit in the MSHR where data was being due to a miss. We that BO 25% of cache hit- into hits, that is for with high (see Table 5). Our that the of on the of the and that they can the .

13: CXL flash and with . 13a shows the of with a delay of less than one . 13b shows the hit, hit-under-miss, and miss ratio of the 64MiB cache in CXL flash . 13c plots the .

2: Even under heavy , CXL-flash has a of at least 3.1 years. We the of CXL-flash under real based on the of data to the flash , limit, and 1TiB , as shown in 13c. We that in the worst case, the for 3.1 years under Page Rank but up to 403 years under other . on three : , read-write ratio, and ; Page Rank has the , high write ratio, and low . Even under such , CXL-flash ; , CXL-flash's can meet the of .

3: CXL-flash has a -to-cost ratio than pure DRAM . CXL-flash is to DRAM in terms of sub- , our shows that it has the to for - . Since CXL-flash can serve 68-91% of with less than one and DRAM price are 17-100 times than NAND flash [39, 64, 77], we CXL- flash is 11-91 times more cost- than pure DRAM , as shown in 14. While in some cases, when is , pure DRAM may still be , on the , CXL-flash may be a cost- .

, we that while the is for Page Rank, its is the worst, with only at most 68% of a . To the of the , we the four .

14: -cost of CXL flash using BO DRAM-only . The is based on the in 13a, the price point for DRAM at 5 $/GB [77], and the price range for NAND flash from 0.05 to 0.30 $/GB [39, 64].

4: To the that , their is to high . We plot the four of the in 15. and are (lower is ), so we their bars so that is for all . We that the of for which are (Page Rank and) is high . For , the Leap (LP) 85% under BERT, but only 27% under BERT. , the best (BO) 48% under data to .

We Page Rank to why the is able to high even with with the ( using stack and block [32]). As shown in 16, Page Rank in its . In the first stage, Page Rank loads graph and high (Fig. 16a). The is also able to high and (Fig. 16b). , in the stage, Page Rank the graph, and the here has very low . , the less (low ) as its . In the final stage, Page Rank the score of each . its is not high, the well and most are hits in the cache. Note that the is , the cache miss rate is very low, so the on is . This shows that while the first and last , the low of the stage .

图15: 预取器的准确率、覆盖率、延迟和污染度指标。

图16: Page Rank随时间的行为。

观察5:当准确性低时,缓存污染是性能下降的主要原因。如图15所示,BERT和YCSB具有较低的准确性,而它们的污染率很高,导致预取器的启用会降低性能(图13a)。对于XZ,尽管最佳偏移(BO)预取器的准确性较低,但它与没有预取器一样,因为它几乎没有污染。我们将这归因于BO根据其准确性的能力禁用预取。对于Page Rank和,预取器污染率较低,尽管它们的延迟很高。缓存污染降低了CXL-flash的性能,预取器应该注意这种影响,以避免对设备产生不利影响。

图17: BO预取器虚拟与物理指标比较。

观察6:虚拟到物理地址转换使CXL-flash难以预取数据。为了了解虚拟内存地址转换的影响,我们使用最佳偏移预取器模拟CXL-flash,使用5个应用程序工作负载的虚拟内存跟踪数据,图17比较了虚拟和物理跟踪之间的四个预取器指标。我们得出两个观察结果。首先,除了之外,我们观察到从虚拟跟踪到物理跟踪的准确性显著下降。最佳偏移预取器在Page Rank的虚拟内存跟踪下的准确性为99%,但在物理跟踪下,准确性下降到42%。其次,覆盖率也降低,表明预取器在物理内存访问下变得不太活跃:例如,在BERT下,覆盖率从76%降至26%。对于物理跟踪,准确性和覆盖率的下降显示CXL-flash在虚拟寻址下的性能将更好。

图18: 使用内存访问模式提示提高BERT性能。图18a是对提供提示的地址数量敏感性测试。图18b显示随着添加更多提示的性能改进。在两个图中,线表示使用提示前的命中下未命中转换为使用提示后的命中次数。

观察7:如果内核能够为设备提供内存访问模式提示,则CXL-flash的性能将通过将命中-未命中转换为缓存命中而得到改善。我们考虑了一个假设的具有洞察力的内核,它知道物理内存访问模式。这不是太牵强,因为数据密集型应用程序通常进行多次迭代,它们的行为可以进行分析。更具体地说,我们假设内核具有有关顶部密集访问的物理帧的信息,并可以在实际访问之前向设备传递提示。为了限制内核参与的开销,我们模拟了对访问提示的概率性生成。图18a显示了在前N%的密集访问地址的10%处生成提示时,BERT的性能改进情况。我们观察到,通过将命中-未命中(HUM)转换为缓存命中,随着对更多地址生成访问提示,子微秒延迟的百分比从86%增加到91%。图18b考虑了变量的提示生成概率,从前10%的密集访问地址的0%到10%。同样,我们看到整体性能有所改善,但在91%处平稳。我们的实验表明,利用主机的知识来生成访问模式提示,可能会提高CXL-flash的性能。

6 相关工作

评估的缓存策略和预取算法在之前的研究中得到了深入探讨。然而,大多数研究都是针对管理和优化CPU缓存的,其中缓存命中和缓存未命中之间的延迟差异要小得多,而在CXL-flash中则要大得多。CFLRU [60] 和Leap [53] 与我们的设备共享类似的设计空间,但它们所面临的内存访问强度并不像CXL-flash需要处理的那样极端。因此,必须在CXL-flash的设计空间下评估这些策略和算法的有效性。

先前的研究探索了缓解地址转换和闪存限制导致性能下降的技术。利用大页面可以减少地址转换次数[54,58]。 [40] 和[23] 将SSD的地址转换与页表结合以减少开销。eNVY [73] 采用写入缓冲、页面重映射和清理策略,实现直接内存寻址并保持性能。CXL主机系统的未来研究应进一步探索利用主机生成提示的潜在好处,并结合先前的工作来减少开销。

内存解聚将内存资源组织在服务器之间作为网络附加的内存池,满足数据密集型应用的高内存需求[37,38,52,69]。虽然我们的工作不直接研究内存解聚系统,但使用CXL-flash作为解聚内存有助于克服内存墙的问题。

先前的研究探索了利用非DRAM扩展内存的方法[28,40,63,74]。HAMS [75] 通过以OS透明的方式管理主机和内存硬件之间的数据路径,将持久性内存和ULL闪存聚合成内存扩展。等人[67] 提出了一种基于轻量级DMA的接口,绕过NVMe协议,实现与DRAM类似性能的闪存读取访问。 [26] 是一个内存管理器和运行时库,允许应用程序通过操作系统分页机制将闪存用作内存设备,但访问SSD中的数据可能导致开销。 [23] 则通过整合操作系统分页机制和SSD的内部映射表,将DRAM和闪存内存暴露为一个平坦的内存空间。虽然这些先前的工作主要关注操作系统级管理和主机设备交互,但我们的工作在此基础上,研究了内存扩展设备内部的设计决策。

使用CXL Type 3设备进行内存扩展是一个活跃的研究领域[36, 42, 50, 71]。Pond [50] 利用CXL来改进云环境中的DRAM内存池,并提出了机器学习模型来管理本地和池化内存。虽然该工作研究了如何在云环境中使用CXL Type 3设备,但我们的工作研究了如何使用闪存内存实现CXL Type 3设备。 [36] 成功地在实际硬件中通过CXL将主机处理器与外部DRAM连接,并开发了软件运行时库来直接访问资源。最后,CXL-SSD [42] 倡导将CXL和SSD结合起来扩展主机内存。虽然我们与该工作有着相同的目标,但它主要讨论了CXL互联和CXL-SSD的可扩展性潜力。

专为机器学习设计的系统致力于解决内存墙挑战[45,48,51]。MC-DLA [48] 提出了一种架构,聚合内存模块以扩展加速器的训练ML模型的内存容量。 [45] 发现许多NLP模型需要大量内存,但不需要大量带宽,并提出了一个以闪存为中心的训练框架,管理内存和SSD之间的数据移动,以克服内存墙。

7 结论

本文探索了CXL-flash设备的设计空间,并评估了现有的优化技术。通过使用物理内存跟踪,我们发现68-91%的内存访问可以在CXL-flash设备上实现亚微秒的延迟,而且该设备的寿命至少可以达到3.1年。我们发现,对于虚拟内存的地址转换使得CXL-flash的预取器特别难以发挥作用,建议通过传递内核级别的访问模式提示来进一步提高性能。

虽然我们试图通过测试多种工作负载和设计参数来概括结果,但还需要承认一些限制。本文所探索的CXL-flash的当前设计并未考虑闪存的内部任务,如垃圾收集和磨损均衡。此外,所考虑的主机系统可能并未完全反映CXL引入的新系统特性。因此,我们认为在CXL-flash研究领域还需要做更多的工作,而我们的工作可以为未来的研究提供一个平台。

---【本文完】---

近期受欢迎的文章:

我们正处于数十年未见之大机遇中

新技术爆发式发展,催生新产品

然而,颠覆式创新并非简单的技术堆叠

而是异常复杂的系统工程

需要深度洞察

提醒:请联系我时一定说明是从星空网上看到的!