2022年中国数据与存储峰会期间,CXL大内存论坛在线上召开,来自三星新事业企划团队CXL产品企划小队的金俊,介绍了三星在CXL内存方面的思考和实践。
从演讲内容中了解到,三星看好CXL在重塑和构建内存系统方面的前景,认为,CXL对于IT行业克服技术挑战有至关重要的作用。同时,他通过对三星在CXL方面的积累和实践,向我们展示了CXL解决方案相较于传统方案的明显优势。
内存面临的挑战
数据驱动技术的兴起,引发了对更强大算力的需求,为了能处理数据密集型应用,CPU的核数越来越多,然而,内存带宽和内存密度已经落后于CPU核数的增速,导致了CPU和内存性能之间的差距。
对内存密度和内存带宽不断提高的需求,推动着内存技术的发展。传统DIMM接口限制了内存性能和密度的提升,从而无法满足多核CPU的需求,人们开始转向研发CXL技术。
同时,随着人工智能和大数据的兴起,使得异构计算和多处理器并行工作的需求增多,而CXL作为下一代互连技术对于异构计算和组合基础设施,对于实现资源的有效利用至关重要。
上图显示的是过去十年里,CPU核数和内存通道带宽的变化趋势。
自2012年以来,CPU的核数增加了近3倍,但每核通道带宽增速明显落后,传统增加内存带宽的方法是:增加CPU内存通道数和提高数据传输速率,以此来解决每核带宽下降的挑战,但这一做法已经到达了极限。
有鉴于此,三星将CXL视为解决内存扩展挑战的最有前景的技术。
在计算架构中,无论是融合还是超融合架构,都具有预定义的资源配置,它限制了内存和计算的独立扩展,而CXL通过缓存一致性的特性,可以连接所有主机和设备,将内存与计算进行解耦,而新的CXL3.0更是使得海量内存资源池成为可能。
CXL的简要介绍
CXL是由CXL联盟开发的,建立在PCIe之上的一种高速低延迟的、连接CPU和设备的互连技术。CXL提供了主机CPU和连接设备之间的高效连接,CXL传输层由单个链路上的三个动态、多路复用子协议组成。
这些协议称为CXL.io,CXL.cache和CXL.mem,当CXL设备连接到CXL主机时,通过CXL.io协议,对其进行发现、配置和管理,通过CXL.cache,CXL的设备能够直接访问处理器的内存,而通过CXL.mem,CPU能够访问CXL设备的内存。
CXL联盟定义了三种不同类型的CXL设备:
类型1,CXL设备是缓存设备,通过CXL.cache存取主机内存,并负责维护与主机内存一致的本地缓存。
类型2的设备可以像类型1设备一样直接存取主机连接的内存,此外,类型2设备具有本地地址空间,主机CPU可以通过CXL.mem存取该地址空间。
类型3的设备是内存扩展设备,允许主机CPU通过CXL.mem访问一致性存取CXL的内存缓存。
接下来重点看类型3的CXL设备,它包括内存和内存控制器,与类型1和类型2设备不同,类型3设备不可以修改内存内容。
类型3使不同类型的内存颗粒能够通过CXL连接到主机,并且,能让CXL设备上的内存映射到系统地址空间,使得CPU和设备看到相同的内存数据,也使得CXL内存看起来就像主机的内存。内存一致性的优势在于,CXL主机和CXL设备可以共同处理数据。
类型3的内存扩展设备可以帮助系统增加内存容量和带宽。上图左侧是一个系统有一个具有8个DDR通道的处理器,系统的总内存容量是8TB,右边的系统也有8个DDR通道,同时它还有4个CXL内存链接,于是,系统总内存容量到了12TB。
CXL可以不依赖DDR内存通道数的增加和内存速率的提升,来不断增加内存容量,扩展内存带宽,这是一种非常了不起的变化。
CXL的使用场景和价值
如上图所示,当用户通过CXL添加内存容量,可以使得每台服务器上配置较少的内存,也能减少了所需的服务器的数量,最终,在系统层面节省成本。这对于需要高内存容量的内存数据库和内存计算应用程序特别有吸引力。
如上图所示,当用户通过CXL来扩展内存带宽,意味着可以提高内存密集型应用程序的性能,如人工智能和流分析。CXL的带宽扩展作用解决了带宽和容量增长不平衡的问题,更好地满足了CPU对内存的需求。
上图显示的是分层和池化两大应用场景。
在内存分层方面,CXL可以使用多种内存颗粒来提升内存容量,然而,实际使用中,活跃的数据存放在DRAM里,CXL内存负责存放这些不太活跃的数据,最终,在不影响性能的前提下,实现更高的内存使用效率。
在内存池化方面,内存资源池通过交换机连接服务器,通过提高内存利用率来降低总体成本。内存是数据中心里最后被分解的资源,将内存与CPU分离,并且将内存扩展到PB水平,可以更好地支持新兴的数据密集型工作负载。
CXL1.0规范解决了节点级互连的问题以及处理器与其连接设备之间的互连。CXL2.0带来了CXL交换机和内存池化的功能,通过支持跨多个节点的内存等资源池,将CXL提高到了机架级别。
CXL2.0还支持交换机功能,用于内存扩展和池化,如上图所示,可以通过CXL交换机进行内存扩展,提升单台服务器的内存容量。右侧则是有CXL交换机连接到内存池,多个主机能存取数据,通过动态分配和释放内存资源来提高整体系统效率。
CXL2.0规范中只能使用一个交换机,而CXL3.0更进一步,多个主机可以通过多个交换机来配置更复杂的架构。
左图展示的是内存池化和共享的概念,右图则是使用大量的交换机组成新的架构,多个主机加速器和内存池组成的系统级互连,通过几百个交换机实现整体的内存异构计算。
三星的CXL内存扩展器解决方案
上图是三星的CXL内存开发生态系统,三星于2021年5月发布了全球第一个类型3的CXL内存扩展原型,它使用FPGA作为内存控制器,128GB的DDR4内存,×16的CXL链路宽度,外形规格是EDSFF(E3.S)2T的。
从2021年开始,三星与合作伙伴和客户进行了多次测试。三星正在努力支持基于CXL内存生态系统,并认为2022年和2023年将是CXL带来技术变革的关键年份。同时,三星会帮助客户尽快适应CXL带来的变化。
上图展示的是三星内存扩展器的产品图,是业界首款基于AISC的CXL内存模组,内部有主控芯片,PCB板的一面贴了20个DDR5内存模块,另一侧也是20个模块,另外一部分是PMIC等。
三星的CXL内存扩展器支持CXL2.0规范,EDSFF(E3.S)2T的外形规格,颗粒是DDR5,容量高达512GB,CXL链路宽度是X8的,支持PCIe5.0,带宽是32GB/s,它还支持RAS等功能。
该产品从11月开始对外提供测试开发,能使合作伙伴验证CXL协议,进行一些测试,更好地了解性能情况。
配套开发软件-SMDK
三星不但提供了硬件,同时也提供软件,Scalable Memory Dvvelopment Kit——SMDK就是一款重要的开源软件,它包含一组软件工具和API来对接硬件和应用。它能让本地DRAM内存和CXL内存融为一体,同时也可以对接各种CXL的异构计算生态。
从图中软件堆栈可见,CXL Memory Zone支持优化管理,从而可以使用具有不同特性的内存。Intelligent tiering可根据应用对容量、带宽和延迟需求不同,分配适当的内存。
通过ComptibleAPI部分,系统开发者能够轻松地将CXL内存整合到高级系统中,而无需修改现有的应用环境。SMDK还提供了通过修改软件应用程序来执行高级优化的选项,以充分利用底层内存技术特性。
在三星看来,SMDK是推动CXL内存行业向前发展的重要组成部分,三星很自豪能够将其作为开源软件发布,供行业使用。
实测:CXL方案的性能优势
从测试数据来看,在Redis内存数据库的测试中,一种方案是使用基于CXL内存扩展器和SMDK,使用DDR5 32GB内存作为主内存,同时,使用CXL提供的64GB内存,以此构成一个Redis单节点,这个64GB的CXL内存使用的就是三星的内存模组。
作为对比的是传统的三节点的Redis集群,每个节点都有32GB的DDR5内存,节点间通过以太网进行连接。
测试结果中,使用128B、4KB和1MB的块大小来测试,除了128B小文件以外,其它场景中,其实际带宽表现前者都远高于后者,其中,4KB数据块的性能比后者大约提高了大概2.7倍。
结束语
每个CPU内核所享有的内存容量和内存带宽滞后于行业需求,传统技术无法解决这一问题,CXL则可以很好地解决这一问题。
如今,三星正在引领基于CXL的内存解决方案的发展潮流,既有硬件也提供了软件,一些产品已经交到了用户,下一阶段,三星希望更更多业内合作伙伴一起合作,感谢大家的聆听。