CXL:拯救NVMe SSD缓存不足设计难题-2

LMB提出了基于CXL协议的内存扩展框架和内核模块。该方案利用CXL内存扩展器作为物理DRAM源,旨在提供一个统一的内存分配接口,使PCIe和CXL设备都能方便地访问扩展的内存资源。通过这个接口,NVMe驱动和CUDA的统一内存内核驱动可以直接高效地访问CXL内存扩展器,让SSD和GPU设备能够像使用板载内存一样轻松地利用LMB提供的内存资源。这一设计旨在消除内存短缺问题,同时保持高性能和灵活性,是解决现代高性能计算和数据中心内存需求增长的有效途径。

图片

CXL Linked Memory Buffer (LMB) 是一种创新的框架,旨在通过CXL(Compute Express Link)技术扩展设备内存,而非仅仅扩展主机内存。这项技术弥补了现有研究的空白,后者主要集中在通过CXL构建主机内存池上。

LMB的核心在于CXL内存扩展器(CXL Memory Expander)与CXL交换机的结合使用。扩展器通过CXL交换机与主机及CXL/PCIe设备相连,为它们提供一个集中管理的内存池。该内存池包含多个汇集的Host-Managed Device Memories (HDMs),并支持基本的地址映射、访问控制等功能。LMB框架基于CXL协议,将扩展器作为Global Fabric Device (GFD),不仅服务于CXL设备,还能服务主机上的其他PCIe设备。它在内核级别实现了一个统一框架,支持CXL和PCIe设备,并为设备驱动程序提供内存分配、释放和访问控制等API。

LMB组件与功能

  • CXL内存扩展器与Fabric Manager (FM):扩展器作为GFD,由FM直接管理,负责全局内存资源的分配与动态管理。FM可以实现在主机软件中或交换机/设备固件中,管理CXL架构中的设备与资源。宿主机可通过FM的API动态查询和配置扩展器状态,实现多宿主机间动态内存分配。扩展器内部管理HDMs,通过地址映射将宿主机请求中的Host Physical Addresses (HPAs) 转换为Device Physical Addresses (DPAs)。

  • LMB内核模块:考虑到PCIe设备与CXL设备访问内存协议的不同,以及现有CXL内存池设计难以兼容PCIe设备,LMB内核模块被设计成一座桥梁,提供统一的内存分配和共享接口。该模块首先向FM请求内存块,然后与设备驱动交互完成内存分配,并通过提升加载优先级避免PCIe设备初始化阶段的内存请求失败。

图片

内存管理

  • 内存分配器:内核模块通过FM API向扩展器请求内存,映射到主机物理地址空间后等待分配给本地设备。当内存不足时,模块会请求256MB的内存块。所有设备内存释放后,模块会将内存区域归还给FM。通过在主机上维护内存分配器元数据,可以优化大内存映射对齐,减少CXL内存访问次数。

  • 数据路径:PCIe设备不能直接使用CXL协议访问扩展器,但可以通过CPU将PCIe TLP转换为CXL.mem协议中的MemRd/MemWr命令,访问映射到物理地址的HDM。由于PCIe设备不支持CXL缓存一致性,所以内存被设置为非缓存类型。尽管PCIe设备和CXL设备共享内存时,PCIe设备收不到回写的监听信息,但这不会引起一致性问题。(浅析CXL P2P DMA加速数据传输的原理)

LMB API提供与设备驱动交互

LMB内核模块为支持分配、释放和共享操作的设备驱动程序提供了一系列API接口,使得驱动程序能够调用这些API来高效地管理外部扩展内存。这些API包括但不限于分配内存(lmb_PCIe_alloc, lmb_CXL_alloc)、释放内存(lmb_PCIe_free, lmb_CXL_free)以及内存共享(lmb_PCIe_share, lmb_CXL_share)。

图片

SSD应用LMB存储L2P表的流程

下图展示了SSD如何利用LMB申请内存来存储其逻辑到物理(L2P)映射表的过程。在这个过程中,PCIe设备通过LMB获取到设备可访问的总线地址和在本地主机上的唯一内存标识符。除了获取GFAM(Global Fabric-Attached Memory)的HPA(Host Physical Address)之外,CXL设备还会得到扩展器PID(Process ID),以便发起P2P请求。这样,共享内存可以充当IO缓冲区,减少设备间的数据复制操作,例如,通过共享内存直接从SSD发送数据到加速器进行计算,实现了零拷贝数据路径,极大地提升了数据传输效率。

图片

内核模块负责维护HPA和总线地址到物理地址的映射关系,通过地址翻译机制实现PCIe设备与CXL设备之间的内存共享,无需数据复制,从而优化了内存使用效率。

为了确保不同设备间内存访问的安全性,LMB整合了两种访问控制模式:

  • 对于PCIe设备,采用IOMMU来限制设备只能访问分配给它的内存范围,避免非法访问。

  • 对于CXL设备,通过SPID Access Table (SAT) 来管理对Global Fabric Device (GFD)的访问控制。GFD能够根据内存请求中的SPID字段识别请求发起方是CXL设备还是主机。内核模块在分配内存给PCIe设备时创建IOMMU页表,在CXL设备请求内存时将其SPID添加到SAT中。当内存释放或共享时,相关的表项会被相应更新,确保访问权限的实时性和准确性。

LMB方案通过统一的API接口、高效的内存共享机制以及严格的访问控制策略,有效解决了PCIe和CXL设备内存扩展和访问安全问题,提升了系统整体的性能和效率。

论文中展示了初步的模拟结果,以证明LMB(Linked Memory Buffer)在扩展SSD DRAM用于L2P索引方面的有效性。研究对比了LMB方案与理想情况(即所有映射表均存储于板载DRAM中)以及DFTL(一种动态闪存转换层技术)方案的性能。LMB方案进一步细分为LMB-CXL和LMB-PCIe,以评估不同设备通过CXL或PCIe接口访问外部内存的场景。

此外,还利用了PCIe Gen4和Gen5标准的SSD进行测试,以考察不同PCIe标准的影响。评估工作负载包括随机/顺序读写,使用FIO工具进行,配置了队列深度为64、IO大小为4KB的libaio IO引擎。

图片

由于真实CXL开发板的稀缺,LMB-CXL和LMB-PCIe的模拟是在修改了固件(特别是L2P索引模块)的PCIe Gen4和Gen5 SSD上进行的。通过比较这两种不同性能基线的SSD,观察CXL额外延迟对不同性能级别设备的潜在影响。

在理想情况方案中,为了模拟LMB和DFTL方案,特意在L2P索引操作中加入了延迟。模拟DFTL缓存未命中时,在理想方案中增加了25微秒的延迟;对于LMB-PCIe,分别在PCIe Gen4和Gen5 SSD上增加了880纳秒和1190纳秒的延迟;LMB-CXL则增加了190纳秒的延迟。

PCIe Gen4 SSD性能评估

在主流的PCIe Gen4 SSD上,LMB-CXL和LMB-PCIe在写工作负载下与理想方案的吞吐量相当,比DFTL方案高出7倍。在读工作负载下,LMB-CXL保持接近理想方案的表现,而LMB-PCIe在顺序和随机读取上分别下降了16.6%和13.3%,但仍优于DFTL方案14倍。这表明LMB机制对于解决高容量QLC SSD的板载内存短缺问题非常有效。

图片

PCIe Gen5 SSD性能评估

在更高速的PCIe Gen5 SSD上,LMB-CXL和LMB-PCIe在写工作负载下与理想方案表现一致,吞吐量比DFTL方案高出20倍。然而,在读工作负载下,两者性能都有所下降,LMB-CXL在顺序和随机读取上分别低了8%和56%,而LMB-PCIe的性能降级更为严重,分别低了62%和70%。即便如此,LMB-PCIe依然比DFTL方案高出20倍的吞吐量。

图片

模拟结果显示,尽管在索引操作中引入数百纳秒的CXL延迟显著影响了高性能SSD的性能,但这些结果是基于所有索引完全依赖于CXL扩展内存的假设。在实际工作负载中,如果大多数索引都能命中板载内存,利用数据访问的局部性,CXL二级索引对设备性能的影响将大大减少。因此,LMB方案特别是LMB-CXL,在解决高密度存储设备的DRAM短缺问题上展现出了潜力,特别是在能够有效利用混合存储方案和优化数据布局的情况下。

本文提出的LMB方案是针对PCIe设备DRAM短缺问题的一次重要探索,通过结合CXL技术,不仅为高性能计算领域带来了新的解决方案,也为未来的存储和计算架构设计提供了新思路。随着CXL技术的成熟与普及,LMB有望成为提升数据中心效率、支持大规模数据处理和复杂模型训练的关键技术之一。未来,继续优化LMB的设计与实施,降低延迟影响,提高内存扩展效率,将是持续的研究方向。


如果您看完有所受益,欢迎点击文章底部左下角“关注”并点击“分享”、“在看”,非常感谢!

精彩推荐:

  • 数据中心:AI范式下的内存挑战与机遇

  • WDC西部数据闪存业务救赎之路,会成功吗?

  • 属于PCIe 7.0的那道光来了~

  • 深度剖析:AI存储架构的挑战与解决方案

  • 浅析英伟达GPU NCCL P2P与共享内存

  • 3D NAND原厂:哪家芯片存储效率更高?

  • 大厂阿里、字节、腾讯都在关注这个事情!

  • 磁带存储:“不老的传说”依然在继续

  • 浅析3D NAND多层架构的可靠性问题

  • SSD LDPC软错误探测方案解读

  • 关于SSD LDPC纠错能力的基础探究

  • 存储系统如何规避数据静默错误?

  • PCIe P2P DMA全景解读

  • 深度解读NVMe计算存储协议

  • 浅析不同NAND架构的差异与影响

  • SSD基础架构与NAND IO并发问题探讨

  • 字节跳动ZNS SSD应用案例解析

  • CXL崛起:2024启航,2025年开启新时代

  • NVMe SSD:ZNS与FDP对决,你选谁?

  • 浅析PCI配置空间

  • 浅析PCIe系统性能

  • 存储随笔《NVMe专题》大合集及PDF版正式发布!

图片

如果您也想针对存储行业分享自己的想法和经验,诚挚欢迎您的大作。
投稿邮箱:Memory_logger@163.com (投稿就有惊喜哦~)

《存储随笔》自媒体矩阵

图片

更多存储随笔科普视频讲解,请移步B站账号

图片

如您有任何的建议与指正,敬请在文章底部留言,感谢您不吝指教!如有相关合作意向,请后台私信,小编会尽快给您取得联系,谢谢!

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

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

相关文章

携程二面测开—中核

4.12 35min面试经验 自我介绍 在面试的开始,我简洁明了地进行了自我介绍,突出了我的教育背景、技能特长以及实习经历,为后续的面试内容打下了良好的基础。 实习的具体工作内容 在谈及实习经历时,我详细阐述了在实习期间所承担…

架构设计之RBAC基于角色的访问控制设计

概念 RBAC(Role-Based Access Control,基于角色的访问控制)是一种常见的权限管理模型,它通过定义角色来分配权限,然后将角色分配给用户。在Java中实现RBAC权限管理,你可以遵循以下步骤: 定义权…

盘点全球Top10大云计算平台最热门技能证书

小李哥花了一年半时间终于考下全球10大云的77张认证,今天盘点下各个云的热门证书,希望能帮到非CS专业转IT和刚刚入行云计算的小伙伴。 排名取自23年Yahoo云计算市场份额排名报告,我会从云平台、证书价格、证书热门程度做推荐。 1️⃣亚马逊云…

第二届Godot游戏开发大赛来啦!

第二届Godot游戏开发大赛来啦! 我们的开发大赛正式定名为Godot Hub Festival 2024,以后将按照年份命名。 另外,本次比赛将和openKylin开源社区的SIG组们合作举办(因此也可以叫Godot openKylin开发大赛)。比赛定于2024年7月1日正式开始&#x…

ElementUI框架搭建及组件使用

前言: 当开始使用ElementUI框架来搭建网站或Web应用程序时,了解框架的基本结构和组件的使用是至关重要的。ElementUI是一个基于Vue.js的框架,提供了丰富的UI组件和工具,可以帮助开发人员快速构建现代化的用户界面。 在本文中,我…

FinalShell:功能强大的 SSH 工具软件,Mac 和 Win 系统的得力助手

在当今数字化的时代,SSH 工具软件成为了许多开发者、运维人员以及技术爱好者不可或缺的工具。而 FinalShell 作为一款出色的中文 SSH 工具软件,无论是在 Mac 系统还是 Windows 系统上,都展现出了卓越的性能和便捷的使用体验。 FinalShell 拥…

Jmeter,badboy学习

1、注意Jmeter与jdk之间的版本对应 2、Jmeter的作用: jmeter可以做接口测试和压力测试。其中接口测试的简单操作包括做http脚本(发get/post请求、加cookie、加header、加权限认证、上传文件)、做webservice脚本、参数化、断言、关联&#x…

岗位实习最终篇(汇总)——人力资源管理系统(包含DDL,DML,视图,简单/复杂查询,触发器语句和存储过程语句)

DDL CREATE TABLE users (user_id INT AUTO_INCREMENT PRIMARY KEY COMMENT 员工ID,username VARCHAR(50) NOT NULL UNIQUE COMMENT 用户名,password VARCHAR(255) NOT NULL COMMENT 密码,first_name VARCHAR(50) NOT NULL COMMENT 名,last_name VARCHAR(50) NOT NULL COMMENT…

LLM探索:环境搭建与模型本地部署

前言 最近一直在炼丹(搞AIGC这块),突然发现业务代码都索然无味了… 上次发了篇AI画图的文章,ChatGPT虽然没法自己部署,但现在开源的LLM还是不少的,只要有一块差不多的显卡,要搞个LLM本地部署还…

音视频开发32 FFmpeg 编码- 视频编码 h264 参数相关

1. ffmpeg -h 这个命令总不会忘记,用这个先将ffmpeg所有的help信息都list出来 C:\Users\Administrator>ffmpeg -h ffmpeg version 6.0-full_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developersbuilt with gcc 12.2.0 (Rev10, Built by MSYS2 pro…

单点登录(cookie+Redis)

1、什么是单点登录? Single Sign On简称SSo,只需要登录一次就可以在整个系统实现访问。 因为session的特性,是没有办法在多个服务系统之间实现数据的共享。 解决一个分布式session的问题。目前我们使用redis来实现分布式session。 1.1、新问题…

2000-2021年县域金融机构存贷款数据

2000-2021年县域金融机构存贷款数据 1、时间:2000-2021年 2、指标:统计年度、地区编码ID、县域代码、县域名称、所属地级市、所属省份、年末金融机构贷款余额/亿元、年末金融机构存款余额/亿元、年末城乡居民储蓄存款余额/亿元 3、来源:县…

[OtterCTF 2018]Graphic‘s For The Weak

恶意软件的图形中有些可疑之处。 软件图形 ???这里的恶意文件都是 vmware-tray.ex使用procdump转存进程的可执行文件 (可执行的)导出了 ,看文件里面是否存在 图片 volatility.exe -f .\OtterCTF.vmem --pro…

3.3V到5V的负电源产生电路(电荷泵电压反相器)SGM3204输出电流0.2A封装SOT23-6

前言 SGM3204 非稳压 200mA 电荷泵负电源产生电路,LCEDA原理图请访问资源 SGM3204电荷泵负电源产生电路 SGM3204电荷泵负电源产生电路 一般描述 SGM3204从 1.4V 至 5.5V 的输入电压范围产生非稳压负输出电压。 该器件通常由 5V 或 3.3V 的预稳压电源轨供电。由于…

网盘挂载系统-知识资源系统-私域内容展示系统

系统介绍: 存储:一共支持约30款云盘存储,其中包括主流的(百度网盘、阿里云盘、夸克云盘、迅雷云盘、蓝奏云、天翼云盘),部分展示 以及特别的(一刻相册、对象存储、又拍云存储、SFTP、MEGA 网盘…

【Linux】解锁并发:多线程同步技术详解与应用实践

文章目录 前言:1. 同步概念2. 条件变量:实现线程间同步的!2.1. 条件变量是什么?2.2. 认识条件变量接口 3. 写一个测试代码——验证线程的同步机制4. 生产消费模型5. 生产消费模型 条件变量6. 线程池7. 可重入 VS 线程安全7.1. 概…

leetcode-20-回溯-切割、子集

一、[131]分割回文串 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。 返回 s 所有可能的分割方案。 示例: 输入: "aab" 输出: [ ["aa","b"], ["a","a","b"] ] 分析&…

运维锅总详解Nginx

本文尝试从Nginx特性及优缺点、为什么具有文中所述的优缺点、Nginx工作流程、Nginx最佳实践及历史演进等角度对其进行详细分析。希望对您有所帮助。 Nginx特性及优缺点 Nginx简介 Nginx(发音为 “engine-x”)是一款高性能的开源Web服务器及反向代理服…

前后端分离的后台管理系统开发模板(带你从零开发一套自己的若依框架)上

前言: 目前,前后端分离开发已经成为当前web开发的主流。目前最流行的技术选型是前端vue3后端的spring boot3,本次。就基于这两个市面上主流的框架来开发出一套基本的后台管理系统的模板,以便于我们今后的开发。 前端使用vue3ele…

狼人杀系列

目录 杀人游戏(天黑请闭眼) (1)入门版 (2)标准版 (3)延伸版——百度百科 (3.1)引入医生和秘密警察 (3.2)引入狙击手、森林老人和…