NVMe-oC:CXL SSD的全新理念

随着CXL及其将处理器与任何速度的内存连接的能力受到关注,人们自然会尝试将其应用于SSD。这个想法成为了内存语义SSD(MS-SSD,Memory-Semantic SSD)的基础。

然而,MS-SSD面临与SSD、硬盘驱动器和其它大容量存储相同的问题。其基本概念要求SSD尝试预测处理器即将提出的需求。如果猜测正确,那么SSD可以迅速执行处理器的下一个操作,但如果猜测错误,那么该操作将变得很慢。

在MS-SSD的情况下,设备必须预测处理器将要从中读取的下几个地址,并将它们从SSD加载到MS-SSD的DRAM中。

如果MS-SSD能够让处理器告诉它接下来几个内存周期需要什么,那么MS-SSD就可以精确地预取处理器即将要求的内容。这与许多新的非CXL SSD架构,如Open-Channel SSD一样。CXL控制器设计公司Wolley决定采用这种思路,并在十一月的超级计算大会SC23上展示了公司的新架构。

他们将其称为“NVMe over CXL”或NVMe-oC,并表示这是一种实现CXL以优化主机设备数据传输的方法,其中大多数主机仅使用从存储设备中检索的数据的一部分。

基本思路是,许多SSD读取的数据块比SSD提供的标准4KB小。如果处理器只需要其中的一个64字节缓存行,那么没有必要将所有数据通过CXL-io或NVMe over PCIe进行传输。预计NVMe-oC将减少I/O流量和主机用于移动数据的工作量。

该方法使用CXL.io访问SSD,使用CXL.mem访问内存。特殊命令告诉SSD将数据写入内存或从内存写入SSD,无需主机的任何交互,以减少主机设备的数据传输。

顶部是一个CPU,下方是一个CXL链接,再下方是一个虚线框。虚线框内包含两个并列的设备:NVMe NAND和Memory。通过CXL链接,从这两个设备到CPU有两个双向箭头传递。一个小红箭头显示数据直接从NAND进入内存,绕过了CXL。

在某种程度上,这种方法在CXL的早期讨论中建立了两个连接设备之间的中间点:准的CXL连接内存和CXL连接的计算内存模块。虽然CXL连接的计算内存模块将某些计算任务卸载到CXL模块中,但NVMe-oC设备将一个更基本的任务——简单的数据移动——从主机卸载到模块中。这种方法通过减少利用技术的应用软件重新工作的数量,简化了应用过程。实际上,Wolley声称NVMe-oC设备可以在Virtio上加速I/O虚拟化,而无需对应用软件进行任何更改。所需的仅仅是一个特殊的NVMe-oC驱动程序。

Wolley已经使用一块包含CXL控制器、NAND的NVMe控制器、内存的DDR控制器以及用于管理新的数据移动功能的NVMe-oC桥的FPGA构建了一个原型。

我对通过小幅变化解决重大问题的方法总是深感着迷,而这种新的架构正好做到了这一点。随着数据中心从传统计算向更多的AI转变,数据移动变得越来越成为一个更为重要的问题。这款SSD的数据移动能力应该显著减少不必要的数据以4KB块的形式传输到主机,而不是以64字节的内存传输,同时卸载主机处理器的低效数据移动任务。