2022中国数据与存储峰会第二天的“CXL大内存论坛”上,CXL大内存论坛出品人、MemVerge联合创始人兼CEO范承工发表了题为《CXL: 大内存的曙光》的主旨演讲,在CXL成为热点话题的背景下,对CXL的发展前景做出非常乐观的预期。
以下内容根据现场速记整理:
CXL是一个新兴的内存接口,它对于整个数据中心架构会产生非常深远的影响。
今天有幸请到了几位业内的专家,,既有硬件也有软件方面,他们分别来自英特尔、三星、澜起和MemVerge,给大家全方位解读CXL技术以及它的应用场景。
接下来,我简单介绍一下CXL,为什么会有CXL,它主要想解决哪些问题,它的基本定义是什么,基本的技术构成是什么,它潜在的应用场景是什么。
随后,英特尔和三星的专家会做更详细的介绍,澜起是做CXL控制器的厂商,MemVerge是做大内存软件的厂商,也会做更详细的介绍。
首先来看,CXL要解决的挑战是内存墙和IO墙问题,内存墙和IO墙又是什么?
随着需要访问的数据越来越多,内存墙和IO墙成为两个不可逾越的瓶颈,阻碍应用的性能表现。
上图是去年Meta在OCP全球峰会上发表的,图中指出一个有趣的现象:过去10年,CPU的内核数有着非常快速的上升,10年里内核数提升了大概三倍,但CPU内核到内存的带宽反而下降了。
也就是说,每颗CPU核心能够享用的内存带宽是在下降的,每颗核心之间能交换的数据量是减少的。不幸的是,应用要访问的数据是越来越多,所以说,内存和计算之间的接口就成为一个主要的瓶颈,这就是内存墙。
值得单独说一句的是:内存墙的其实就是常说的“冯诺·依曼”架构的瓶颈。
IO墙是什么呢?
上图来自英特尔,图中以AI为例,AI模型的大小基本上每两年上升一个数量级,数据如果放在内存里可以很快访问到,但如果内存里放不下的话,就需要放在外部存储里,用网络IO来访问数据。
IO方式的访问会使得访问速度下降几个数量级,当内存容量不够大时,IO也不可避免地会成为应用的瓶颈,这既是IO墙。内存墙和IO墙是影响新一代的应用性能的两个障碍,如何打破这些障碍呢?这就要依靠CXL了。
广受关注的CXL到底是什么?
CXL联盟由业界200多家公司合作建立,CXL定义了一个标准,既支持各种各样的存储器,也支持各种异构的计算、芯片,包括CPU、GPU、DPU、各种AI加速器,甚至各种FPGA加速器。
CXL也支持各种各样的内存,包括DRAM、新兴的内存,甚至NAND闪存。CXL可以提高从计算到内存的访问的一致性,所以使得不同的XPU可以同时访问同一块芯片。
在过去几年里,CXL逐渐成熟,到现在已经发表了1.1、2.0、3.0三个不同的版本。CXL的定义之下,它有三种不同的设备。
第一种设备是加速器,指的是计算设备,可以是CPU,也可以是各种AI加速器;
CPU里自带 Cache,CXL可以保持CPU Cache的一致性;
第三种设备是内存,CXL可以连接各种各样的内存;
中间的第二种设备实际上是第一种和第三种的结合体,它可以既有计算,也有内存,两种可以同时挂载到CXL。
CXL发展简史:1.1、2.0、3.0
在2019年,CXL的第一个版本CXL 1.1问世了。它主要定义的标准是如何直接连接计算器件和内存器件,主要指的是在一台服务器里面能够直接把他们连在一起。它主要的场景是对内存的容量和带宽进行扩展,叫Memory Expansion。
传统服务器的内存插在DDR4 DIMM接口,该接口有一定的带宽的限制,内存带宽对CPU的利用率不是太高,不如PCIe总线对CPU的利用率高。
而CXL正是建立在PCIe的基础之上的,在PCIe 5.0及以上标准来跑CXL的标准。这个带宽就在DDR带宽的基础上再加上PCIe的带宽,PCIe 5.0每一个通道的带宽就有4个GB/s,16个通道就能达到64个GB/s,如果有128个通道,就可以增加500 GB/s多的带宽。
所以,它可以很有效的对内存的带宽进行扩展,也可以对内存的容量进行扩展。既能扩大带宽,也能扩大容量,从某种意义上说,就是在解决内存墙和IO墙的瓶颈。
CXL 1.1解决的还是单机设备的问题,在一台服务器里对内存进行扩展,而CXL 2.0就超出了单机的范畴。
上面的H1到H4到Hn指的是不同Host,它可以通过CXL Switch连接多个设备,底下的D1、D2、D3、D4指的是不同的内存,也是通CXL Switch连到上层的主机里。
在这套框架之下,它就使得Memory Polling成为可能,你可以跨系统设备实现共享内存池,这就增加了很多的灵活性。
比如,如果有机器内存不够的时,就可以灵活的从这个池子里来找内存,如果这台机器不需要这些内存了还可以随时还回来。
这无疑将大大提高内存的使用率,或者降低内存的使用成本。考虑到效率提高,自然也会降低对于环境的影响,有助于减少碳排放。
CXL 3.0是2022年8月份发布的新标准,在CXL 2.0基础上增加了一些重要功能,它可以使得多个Switch互相连接,可以使得上百个服务器互联并共享内存。
除了多层交互以外,CXL 3.0还多了一些功能,比如Memory sharing的能力,这种能力突破了某一个物理内存只能属于某一台服务器的限制,在硬件上实现了多机共同访问同样内存地址的能力。
Memory sharing需要实现很强的内存一致性,而此前的CXL 2.0只能通过软件实现,CXL 3.0开始,它可以在硬件层面来实现。
上图是CXL功能的演进变化,不少公司都宣布将支持CXL,包括AMD、英特尔下一代的服务器的芯片。内存厂商部分,三星、海力士、美光也都宣布了支持CXL的内存产品,真正的产品可能就要到明年了。
2024年上半年,CXL 1.1和CXL 2.0的产品可能会有落地产品,CXL 3.0的落地还需要更长时间。现阶段,合作伙伴可以联系这些厂商找一些工程样品搭建环境进行开发测试。
以史为鉴,CXL将引起一场技术与商业变革
CXL在业界造成了非常大的影响,堪称是一场变革。上世纪90年代,存储也经历了一场类似的变革。
上世纪90年代之前,存储指的就是硬盘,在一台服务器里用硬盘来做存储,但是在90年代初,一个叫Fiber Channel的网络出现了,它使存储从服务器里走了出来,变成一个独立的、与计算分离的、可以独立扩展、独立管理的系统。
这种系统就是人们熟知的SAN系统,随后又逐渐出现了各种各样的网络共享存储,这场技术革命,使得存储从一个简单的器件行业变成了一个软件和系统行业。
1990年的存储只是服务器的一部分,当时并没有存储软件的概念。而1995年,集合了软件和硬件的SAN系统开始出现,2000年左右,第一代NAS开始落地。从2010年以来,经过多年发展后,存储软件和存储设备成为了一个500亿美元以上的市场。
过程中也涌现了一大批成功的领导者公司,包括EMC、NetApp、Veritas、PureStorage等等。也有很多依靠通用硬件,在软件上做创新的存储公司获得了不错的市场成绩。存储软件其实很重要,500亿美元的存储市场中,主要价值都是在软件上。
现在的内存和30年前的硬盘存储极为相似。
内存是一个重要的硬件器件,但是现在并没有内存软件或者内存系统这一市场。这是因为,现在的内存只是服务器里的一个设备,而并不是在一个网络上可以独立扩展,独立管理的系统。
随着CXL的出现,内存可以和计算进行分离,就像90年代存储和计算分离一样,这意味着,内存可以变成独立的,可以扩展,可以管理,可以增加新功能的系统。
我相信,未来10年,20年里,同样也会有新的百亿美元大内存市场,一个包含软件和系统的大内存市场,在此期间,会涌现出一批新的技术公司。
这是一个对比,CXL某种程度上就像是30年前的存储网络,使得内存从服务器里解放出来。
CXL落地:既需要硬件,也需要软件,还需要生态
典型的CXL方案中,需要一批内存硬件来构成内存池,主机内部有内存,主机之外也有内存,相互间通过CXL交换机连接,中间还需要一个软件系统来进行管理。
系统软件算是一个Fabric manager,它负责管理内存资源的分配,可以动态的把内存分配给任何一个Host或者也可以从任何一个Host拿回内存,另外,系统软件还会提供一些数据服务。
随着CXL 3.0标准对于多个Switch的支持,集群规模可以进一步扩大,从10台20台服务器扩展到百台甚至千台的服务器规模的共享内存资源池。
大内存时代,将会把软件对于内存的重要性提高到了非常高的阶段。
这是因为,当大内存的系统架构有一定的复杂性、共享性需求后,简单的操作系统已经无法满足应用对于内存的需求,都需要软件来实现更复杂的功能。
比如,在服务器里,系统软件需要考虑如何合理使用内存,而不需要去修改应用程序,比如,通过自动分层技术来完成操作。此外,当内存容量越来越大,就需要进行一些保护手段,就像如今的存储系统需要数据保护一样,比如说快照这种功能。
使用过程中,还需要对内存的使用状况进行监视,对于内存上的应用进行Profiling,查看内存访问的模式。
大内存时代下,可在服务器上通过软件实现一定的Sharing(共享)和缓存一致性功能,使多机来共享同一个内存地址,使得共享内存成为高带宽、低延迟的沟通手段。在此基础上,将可以开发出新一代的应用程序。
这只是Host(服务器)上的功能,而内存池里还有更多功能需要实现。
内存池方面,需要管理软件来管理不同物理内存的内存地址,哪一块内存映射到哪一个Host;还可以对内存进行容量优化,比如压缩和重复数据删除功能,提升内存的可使用空间;此外,还有数据保护、安全、全局洞察等功能。
由此可见,软件上可以做的工作非常多。
如今,在存储还是网络领域都非常流行软件定义的概念,当内存网络出现后,软件定义内存的概念就会出现,通过软件来实现内存的动态分配,以及内存之上的各种数据服务。
整个硬件加软件的生态环境里,已经涌现了一大批公司。
包括英特尔、AMD、NVIDIA、ARM等计算芯片公司,同时还有一大批内存公司,比如三星、海力士、美光,也有一些相关芯片公司,比如澜起科技。
此外,市场上会出现新一代的服务器和操作系统,也会出现软硬一体的解决方案,这些企业都将成为生态中的重要组成部分。
云服务商也非常关注CXL,如今也成了CXL领域的先行者,在CXL上进行了一些研发,在应用上,内存池化可以对他们的技术架构带来非常多的好处,某用户在使用CXL技术方案后每年可以节省数亿美元的费用。
此外,我们还看到一些新兴的软件公司在CXL架构上优化他们的应用,很多业内公司在推动CXL的落地和使用。
CXL的典型使用场景
最后,来看一下CXL可能的一些应用场景。
第一个领域是金融行业(FSI)。
金融行业里可能是CXL最早落地的行业之一。因为金融行业对于数据的性能要求很高,越来越多的应用成了在内存中的应用。金融行业对于新技术也一直非常敏感,非常具有前瞻性,会比较早的尝试落地新兴技术。
在金融行业里,共享内存可以实现低延迟、高带宽的系统,可以使一个节点能快速稳定地向多个节点传发信息。比如,股市交易信息就可以很快的从一点转发到各地。在信息处理的过程中,因为有大内存的存在,它还可以防止内存的溢出。
金融行业的内存数据库越来越多,数据分析的需求也越来越多,而大内存可以使得更多数据放在内存里。传统的关系型数据库场景中,可共享的大内存可以使得关系数据库的缓存更加高效,这意味着将出现新一代的关系型数据库。
第二个是在AI和 机器学习领域。
CXL有更好的扩展性和更高带宽的内存,它可以将更多模型放到内存里,更高的带宽可以缩减训练的时间,提高AI应用的速度。
第三个,在云服务商领域,它可以通过可组合的基础架构(Composable infrastucture)把更多的内存放在池子里,如此一来,闲置的内存就会减少,整体的内存利用率得以提升。
第四个,在高性能计算领域。
高性能计算领域,通过内存池中的Snapshot功能实现断点续算,提升整体的运算速度,也可以在多个节点中通过API的形式来共享内存。
以上是CXL可能最先落地的一些训练场景。
今年3月份的一篇文章里提到了一个对云厂商做的内部调查,调查发现,在微软Azure,有高达25%的内存都是闲置的,有50%的虚拟机使用的内存占比仅为50%,大约有一半的内存没有被用上。
在采用了CXL共享内存后,整体的利用率提升了10%,这意味着每年能减少数亿美金的成本,对于整个成本节省非常重要。
另外一份白皮书中,谷歌也在做类似的事情,谷歌服务器集群中DRAM内存平均利用率约为40%,可见,其内存的利用率有很大可提升空间,池化之后可以明显提高内存的利用率。
刚才说的是CXL技术和它最初的应用场景。
CXL支持以内存为中心的数据中心
接下来总结一下CXL最主要的优点:
第一,它提高了内存带宽,打破了内存墙,它可以提高3倍的内存带宽;
第二,它可以动态提高内存的容量,可以有效的避免存储和网络里的IO墙;
第三,它能够降低总成本。通过灵活的调配,可以提高整个内存的使用率,降低整个内存的使用成本;
第四,通过更灵活的CXL架构,它可以使得整个异构计算的架构更上一层楼,使得任何一个服务器可以访问任何一种内存;
在以上种种条件的作用下,它可以使得数据中心变成以内存为中心的新架构,使得各种各样的运算能够更快的进行,能够为终端客户带来更高的价值。
这就是CXL获得大家关注的原因,希望能和各位朋友一起把CXL真正的落地到数据中心。