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的落地還需要更長時間?,F階段,合作伙伴可以聯系這些廠商找一些工程樣品搭建環境進行開發測試。
以史為鑒,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的支持,集群規??梢赃M一步擴大,從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真正的落地到數據中心。