CXL是行業支持的處理器、內存擴展和加速器的Cache-Coherent互連,該技術保持CPU內存空間和附加設備上內存的一致性,允許資源共享,從而獲得更高的性能,降低軟件棧的復雜性,降低整體系統成本,用戶也借此擺脫加速器中的冗余內存管理硬件帶來的困擾,將更多精力轉向目標工作負載。
? CXL被設計為高速通信的行業開放標準接口,因為加速器越來越多地用于補充CPU,以支持諸如人工智能和機器學習等新興應用。 ? CXL 2.0規范增加了對扇區數據交換的支持,以連接到更多的設備,內存容量按需提供,使用效率大大提高。CXL 2.0完全支持CXL 1.1和1.0,為行業用戶節省了投資。
什么是CXL?
CXL是行業支持的處理器、內存擴展和加速器的Cache-Coherent互連,該技術保持CPU內存空間和附加設備上內存的一致性,允許資源共享,從而獲得更高的性能,降低軟件棧的復雜性,降低整體系統成本,用戶也借此擺脫加速器中的冗余內存管理硬件帶來的困擾,將更多精力轉向目標工作負載。
CXL被設計為高速通信的行業開放標準接口,因為加速器越來越多地用于補充CPU,以支持諸如人工智能和機器學習等新興應用。
CXL 2.0規范增加了對扇區數據交換的支持,以連接到更多的設備,內存容量按需提供,使用效率大大提高。CXL 2.0完全支持CXL 1.1和1.0,為行業用戶節省了投資。
詳細的介紹我們可以看知乎大V?@老狼?這篇文章?zhuanlan.zhihu.com/p/65 由于自己做持久內存方面的研究,因此更關注 CXL 與持久內存的關系。 Meta(FaceBook) 公司采用基于 CXL 的內存層級系統 1. FaceBook 在內存池化方面做的努力 FaceBook 一直大力提倡將DRAM內存從使用它的CPU中分離出來,并創建由許多系統共享的池內存層(pooled memory)。FaceBook 多年來一直致力于分離(disaggregate)和池化(pool)內存,以使內存在其服務器中更好地工作,并試圖控制內存成本,同時提高其性能。
FaceBook 多年來一直在與密歇根大學助理教授Mosharaf Chowdhury合作研究內存池化技術,從Infiniswap Linux內核擴展開始,該擴展在InfiniBand或Ethernet之上通過RDMA協議池化內存,在2017年6月就對此進行了分析。Infiniswap是一種跨服務器的內存負載均衡器,它以幾種不同的傳輸和內存語義協議首次出現——IBM的OpenCAPI內存接口協議、Xilinx的CCIX協議、Nvidia的NVLink協議、惠普企業版的Gen-Z協議,由戴爾支持,在內存池化方面也有類似的想法。 在這一點上,至少在機架中的內存池化方面,Intel的CXL協議已成為分離(disaggregate)內存的主導標準,而不僅僅是用于將加速器中的 far memory 以及 flash memory 連接到CPU,該協議將在新的和未來的服務器中很常見。
FaceBook 的研究人員(Chowdhury)正在對分離 (disaggregate) 內存的想法進行另一次嘗試,通過稱為透明頁面放置(Transparent Page Placement,TPP)的Linux內核擴展,將Infiniswap的一些想法向前推進,它以與連接到CPU的DRAM略有不同的方式進行內存頁管理,并考慮了CXL主存的相對距離。研究人員在一篇論文中概述了這項最新的工作,arxiv.org/abs/2206.0287。 TPP協議是 FaceBook 平臺開源的,該協議正與該公司的變色龍內存跟蹤工具結合使用,變色龍內存跟蹤工具在Linux用戶空間中運行,因此人們可以跟蹤CXL內存在其應用程序中的工作情況。
2.CXL-Memory
隨著CPU的發展,系統架構師從主存向下移動,在內核和主存之間添加了一、二、三、有時四個級別的緩存,并通過系統總線輸出到磁帶,然后是磁盤和磁帶,然后是閃存、磁盤和磁帶。最近幾年,我們增加了諸如3D XPoint之類的持久內存。
正如 FaceBook 平臺、MemVerge 公司和許多其他系統制造商所相信的那樣,將把CXL主內存從CPU上卸下來,CXL內存看起來像一個普通的NUMA插槽,但里面沒有任何CPU。如果 FaceBoo k平臺創建的TPP協議是正確的,那么它將有一個不同的內存分頁系統,可以更好地解決由于在服務器主板之外有大量池化內存而帶來的稍高的延遲。
以下是臉書在幾代機器的內存容量、帶寬、功率和成本方面所面臨的挑戰:
從上圖可以看出,內存容量的增長速度快于內存帶寬,這對性能有重要影響。如果帶寬更高,那么在一定數量的CPU上完成一定量的工作,可能需要更少的內存容量。就像CPU的時鐘速度是10GHz一樣,這比2.5GHz要好得多。但是更快的CPU和內存時鐘會產生指數級熱量,因此系統架構會試圖做更多的工作,并保持在合理的功率范圍內。 但它不起作用。由于需要更高的性能,每代服務器上的系統功率和內存功率都在不斷增加,內存成本占系統總成本的比例也在不斷上升。在這一點上,系統的主要成本是內存,而不是CPU本身。(不僅是在FaceBook ,全世界都是如此)
用CXL擴展系統內存容量和帶寬,延遲與NUMA訪問基本相同
因此,基本上必須使用CXL協議覆蓋將主內存移動到PCI Express總線,以在不向CPU芯片添加更多內存控制器的情況下,擴展系統中的內存容量和內存帶寬。如下圖所示,該內存中有一點延遲,但其大小與共享內存系統中兩個CPU之間的NUMA鏈路相同:
試圖找出如何使用CXL內存的訣竅,就像Optane 3D XPoint DIMM和各種速度的閃存一樣,就是找出在內存中使用的數據有多少是?hot , warm , cold?的,然后找出一種機制,在最快的內存中獲取 hot 數據,在最冷的內存中獲取 cold 數據,在warm 內存中獲取 warm 數據。您還需要知道每個溫度層上有多少數據,以便獲得正確的容量。這就是 FaceBook Platform和Chowdhury創建的變色龍工具的全部內容。
CXL 把我們帶入大內存時代 --從MemVerge視角
MemVerge 公司CEO Charles Fan指出 :動態組合服務器并獲取10TB以上內存池容量的能力將推動更多應用在內存中運行,避免外部存儲IO流讀寫。存儲級內存將成為主要的熱數據存儲層,NAND和HDD分別用于溫數據,而 tape 用于冷數據。現在CXL市場經歷了一年的發展,這是業內近十年來一次重大的架構變革,可能會帶來一個跨多服務器共享內存結構的新市場。 MemVerge軟件將DRAM和Optane DIMM持久內存組合到一個集群存儲池中,供服務器應用使用,無需更改代碼。換句話說,這款軟件已經結合了快速和慢速內存。
CXL v2.0增加了對CXL交換的支持,通過該支持,多個連接CXL 2.0的主機處理器可以使用分布式共享內存和持久(存儲類)內存。CXL 2.0主機將擁有自己的直接連接DRAM,并能夠通過CXL 2.0鏈路訪問外部DRAM。這種外部DRAM訪問將比本地DRAM訪問慢幾納秒,需要系統軟件來彌合這一差距。(順便提一下,MemVerge提供的系統軟件。)范說,他認為CXL2.0交換機和外部內存盒最早可能出現在2024年。不過,我們將更早地看到原型。
MemVerge正在和組合系統供應商Liqid合作,讓MemVerge創建的DRAM和Optane內存池能通過當今的PCIe 3和4總線能全部或部分動態分配給服務器。CXL 2.0應該引入外部內存池及其對服務器的動態可用性。 范承工表示有了CXL,內存動態組合可以和云服務模型高度協同。因此,云服務提供商會成為這項技術的首批采用者之一。
Blocks & Files認為,包括公有云供應商在內的所有超大規模企業都會依賴CXL連接內存池。而且他們沒有可用于提供外部池化內存資源的現有技術,因此要么自己建,要么得尋找合適的供應商。 MemVerge將推動由CXL交換機、擴展器、存儲卡和設備供應商組成的CXL 2.0生態系統的興起。MemVerge的軟件能在公有云上運行。有一家生物技術研究公司SeekGene已經通過在阿里云i4p計算實例運行上使用MemVerge Memory Machine,從而顯著減少了處理時間和成本。
阿里云是第一家面向用戶提供Optane實例支持的云服務提供商,和MemVerge的聯合服務就是在此之上,允許封裝應用,并使用MemVerge的快照技術實現回卷恢復。 MemVerge會以開源形式提供基礎版大內存軟件來擴大應用范圍,并提供付費擴展功能,比如快照和檢查點服務。
外部內存池示例
想象一下,今天有一個20臺服務器的機架,每個服務器都有2TB的內存。這是20 x 2TB內存塊,40TB,任何應用程序的內存都限制在2TB。MemVerge的軟件可以用于將任何一臺服務器中的內存地址空間擴展到3TB左右,但每臺服務器的DRAM插槽數量有限,一旦用完就不再可用。CXL 2.0消除了這一限制。 現在,讓我們重新想象一下由20臺服務器組成的機架,其中每臺服務器都有512GB的內存,機架上有一個CXL 2.0連接的內存擴展器機箱,具有30TB的DRAM。
我們的DRAM總量仍然與以前相同,為40TB,但現在的分布有所不同,有20 x 512GB的塊,每臺服務器一個,以及30TB的可共享池。 內存中的應用程序可能會消耗高達30.5TB的DRAM,是以前的10倍,這從根本上增加了它可以處理的工作數據集,并減少了其存儲IO。我們可以有三個內存應用程序,每個應用程序占用30TB內存池中的10TB。
此類應用程序執行速度更快的能力將顯著提高。 范說:“它提高了應用程序的上限,即你可以使用多少內存,你可以根據需要動態地配置它。所以我認為這是革命性的?!?不僅僅是服務器可以使用它,GPU還可以使用更具可擴展性的內存層。
新創建的DRAM內容仍然必須是持久的,將30TB的數據寫入NAND將需要相當長的時間,但可以使用 Intel Optane 或類似的存儲類內存,如ReRAM,而IO速度要快得多。然后,最活躍的數據將存儲在SCM設備中,隨著時間的推移,活動性較差的數據將首先傳輸到NAND,然后傳輸到磁盤,最后傳輸到磁帶,其活動性配置文件越來越低。 這種連接 CXL 的SCM可以在同一個或單獨的機箱中,并且可以動態組合。我們可以設想使用這種分層外部DRAM和 Optane系統的超大規模供應商服務運行更快,能夠以更高的利用率支持更多用戶。
應用程序設計也可能發生變化。范補充道:“應用程序的一般邏輯是使用盡可能多的內存。只有在內存不足的情況下才使用存儲。對于其他數據密集型應用程序,它將以同樣的方式運行,包括數據庫。我認為內存數據庫是一個大趨勢。對于許多互聯網服務提供商來說,我認為基礎設施提供更無限的內存將影響他們的應用程序設計,因為它更以內存為中心。這反過來又減少了他們對存儲的依賴。”
參考:
1、CXL-led big memory taking over from age of SAN.(https://blocksandfiles.com/2022/06/20/cxl-led-big-memory/)
2、META PLATFORMS HACKS CXL MEMORY TIER INTO LINUX. (https://www.nextplatform.com/2022/06/16/meta-platforms-hacks-cxl-memory-tier-into-linux/)??
編輯:黃飛
評論
查看更多