隨著第一代芯片的發(fā)布,圍繞CXL的早期炒作逐漸被現(xiàn)實(shí)的性能期望所取代。與此同時(shí),關(guān)于內(nèi)存分層的軟件支持正在不斷發(fā)展,借鑒了NUMA和持久內(nèi)存方面的先前工作。最后,運(yùn)營(yíng)商已經(jīng)部署了RDMA以實(shí)現(xiàn)存儲(chǔ)分離和高性能工作負(fù)載。由于這些進(jìn)步,主內(nèi)存分離現(xiàn)在已經(jīng)成為可能。
分層解決內(nèi)存危機(jī)
隨著近期AMD和Intel服務(wù)器處理器的推出,內(nèi)存分層技術(shù)正取得重大進(jìn)展。無論是AMD的新EPYC(代號(hào)Genoa)還是Intel的新Xeon Scalable(代號(hào)Sapphire Rapids),都引入了CXL,標(biāo)志著新的內(nèi)存互連架構(gòu)的開始。第一代支持CXL的處理器處理的是規(guī)范的1.1版本,然而CXL聯(lián)盟在2022年8月發(fā)布了3.0版本的規(guī)范。
當(dāng)CXL推出時(shí),關(guān)于主內(nèi)存分離的夸張言論出現(xiàn)了,忽略了訪問和傳輸延遲的現(xiàn)實(shí)情況。隨著第一代CXL芯片現(xiàn)已發(fā)貨,客戶需要處理軟件適應(yīng)分層要求的問題。運(yùn)營(yíng)商或供應(yīng)商還必須開發(fā)編排軟件來管理池化和共享內(nèi)存。與軟件同時(shí)進(jìn)行的是,CXL硬件生態(tài)系統(tǒng)將需要數(shù)年的時(shí)間來充分發(fā)展,特別是包括CPU、GPU、交換機(jī)和內(nèi)存擴(kuò)展器在內(nèi)的CXL 3.x組件。最終,CXL承諾將演變成一個(gè)真正的架構(gòu),可以將CPU和GPU連接到共享內(nèi)存,但網(wǎng)絡(luò)連接的內(nèi)存仍然具有一定的作用。
圖1. 內(nèi)存層次結(jié)構(gòu)
正如圖1所示,內(nèi)存層次正在變得更加精細(xì),以換取訪問延遲和容量以及靈活性之間的平衡。金字塔的頂部是性能層,需要將熱數(shù)據(jù)存儲(chǔ)以獲得最大性能。冷數(shù)據(jù)可以降級(jí)為容量層,傳統(tǒng)上由存儲(chǔ)設(shè)備提供服務(wù)。然而,在近年來,開發(fā)人員已經(jīng)優(yōu)化了軟件,以在多插槽服務(wù)器中不同NUMA域中以及在持久(非易失性)內(nèi)存(例如Intel的Optane)中存放頁面時(shí)提高性能。雖然Intel停止了Optane的開發(fā),但其大量的軟件投資仍然適用于CXL連接的內(nèi)存。
將內(nèi)存頁面交換到固態(tài)硬盤會(huì)引發(fā)嚴(yán)重的性能損失,從而為新的基于DRAM的容量層創(chuàng)造了機(jī)會(huì)。有時(shí)被稱為“遠(yuǎn)程內(nèi)存”,這種DRAM可以存在于另一臺(tái)服務(wù)器或內(nèi)存設(shè)備中。在過去的二十年中,軟件開發(fā)人員推進(jìn)了基于網(wǎng)絡(luò)的交換的概念,該概念使得服務(wù)器能夠訪問網(wǎng)絡(luò)上另一臺(tái)服務(wù)器中的遠(yuǎn)程內(nèi)存。通過使用支持遠(yuǎn)程DMA(RDMA)的網(wǎng)卡,系統(tǒng)架構(gòu)師可以將訪問網(wǎng)絡(luò)連接的內(nèi)存的延遲降低到不到4微秒,如圖1所示。因此,與傳統(tǒng)的將數(shù)據(jù)交換到存儲(chǔ)進(jìn)行交換相比,通過網(wǎng)絡(luò)交換可以顯著提高某些工作負(fù)載的性能。
內(nèi)存擴(kuò)展推動(dòng)了CXL的導(dǎo)入
雖然CXL只有三年多的歷史,但已經(jīng)取得了超過之前的相干互連標(biāo)準(zhǔn)(如CCIX、OpenCAPI和HyperTransport)的行業(yè)支持。關(guān)鍵是,盡管Intel是原始規(guī)范的開發(fā)者,但AMD仍然支持并實(shí)現(xiàn)了CXL。
不斷增長(zhǎng)的CXL生態(tài)系統(tǒng)包括將DDR4或DDR5 DRAM連接到支持CXL的服務(wù)器(或主機(jī))的內(nèi)存控制器(或擴(kuò)展器)。CXL早期導(dǎo)入的一個(gè)重要因素是它重新使用了PCIe物理層,實(shí)現(xiàn)了I/O的靈活性,同時(shí)不增加處理器引腳數(shù)。這種靈活性延伸到了插卡和模塊,這些插卡和模塊使用與PCIe設(shè)備相同的插槽。對(duì)于服務(wù)器設(shè)計(jì)者來說,添加CXL支持只需要最新的EPYC或Xeon處理器,并注意PCIe通道的分配情況。
CXL規(guī)范定義了三種不同用例所需的三種設(shè)備類型和三種協(xié)議。在這里,我們將重點(diǎn)放在用于內(nèi)存擴(kuò)展的Type 3設(shè)備上,以及用于緩存一致性內(nèi)存訪問的CXL.mem協(xié)議上。所有三種設(shè)備類型都需要CXL.io協(xié)議,但Type 3設(shè)備只在配置和控制方面使用它。與CXL.io和PCIe相比,CXL.mem協(xié)議棧使用不同的鏈路和事務(wù)層。關(guān)鍵區(qū)別在于,CXL.mem(和CXL.cache)采用固定長(zhǎng)度的消息,而CXL.io使用類似PCIe的可變長(zhǎng)度數(shù)據(jù)包。在1.1和2.0版本中,CXL.mem使用68字節(jié)的流控單元(flit),處理64字節(jié)的緩存行。CXL 3.0采用了PCIe 6.0中引入的256字節(jié)flit,以適應(yīng)前向糾錯(cuò)(FEC),但還添加了一個(gè)將錯(cuò)誤檢查(CRC)分成兩個(gè)128字節(jié)塊的延遲優(yōu)化flit。
圖2. CXL 1.1/2.0 應(yīng)用案例
從根本上講,CXL.mem為PCIe接口引入了加載/存儲(chǔ)語義,實(shí)現(xiàn)了內(nèi)存帶寬和容量的擴(kuò)展。如圖2所示,第一個(gè)CXL用例圍繞著內(nèi)存擴(kuò)展展開,從單主機(jī)配置開始。最簡(jiǎn)單的示例是CXL內(nèi)存模塊,例如Samsung的512GB DDR5內(nèi)存擴(kuò)展器,具有一個(gè)PCIe Gen5 x8接口,采用EDSFF外形尺寸。該模塊使用來自Montage Technology的CXL內(nèi)存控制器,供應(yīng)商聲稱支持CXL 2.0。同樣,Astera Labs提供了一個(gè)帶有CXL 2.0 x16接口的DDR5控制器芯片。該公司開發(fā)了一個(gè)PCIe插卡,將其Leo控制器芯片與四個(gè)RDIMM插槽相結(jié)合,處理高達(dá)合計(jì)2TB的DDR5 DRAM。
連接到CXL的DRAM的未加載訪問延遲應(yīng)該比連接到處理器集成內(nèi)存控制器的DRAM大約100納秒。內(nèi)存通道顯示為單一邏輯設(shè)備(SLD),可以分配給一個(gè)單一的主機(jī)。使用單個(gè)處理器和SLD進(jìn)行內(nèi)存擴(kuò)展代表了CXL內(nèi)存性能的最佳情況,假設(shè)直接連接,沒有中間設(shè)備或?qū)?,如?a href="http://ttokpm.com/tags/定時(shí)器/" target="_blank">定時(shí)器和交換機(jī)。
下一個(gè)用例是池化內(nèi)存,它可以將內(nèi)存區(qū)域靈活地分配給特定的主機(jī)。在池化中,內(nèi)存只分配給并且只能被單一主機(jī)訪問,即一個(gè)內(nèi)存區(qū)域不會(huì)被多個(gè)主機(jī)同時(shí)共享。當(dāng)將多個(gè)處理器或服務(wù)器連接到內(nèi)存池時(shí),CXL可以采用兩種方法。原始方法是在主機(jī)和一個(gè)或多個(gè)擴(kuò)展器(Type 3設(shè)備)之間添加CXL交換組件。這種方法的缺點(diǎn)是交換機(jī)會(huì)增加延遲,我們估計(jì)大約為80納秒。盡管客戶可以設(shè)計(jì)這樣的系統(tǒng),但我們不認(rèn)為這種用例會(huì)取得高量級(jí)的采用,因?yàn)樵黾拥难舆t會(huì)降低系統(tǒng)性能。
相反,另一種方法是使用多頭(MH)擴(kuò)展器將少量主機(jī)直接連接到內(nèi)存池,如圖2中央所示。例如,初創(chuàng)公司Tanzanite Silicon Solutions在被Marvell收購(gòu)之前展示了一個(gè)基于FPGA的原型,擁有四個(gè)頭部,后來披露將推出具有8個(gè)x8主機(jī)端口的芯片。這些多頭控制器可以成為一個(gè)內(nèi)存設(shè)備的核心,為少量服務(wù)器提供一池DRAM。然而,直到CXL 3.0之前,管理MH擴(kuò)展器的命令接口并沒有標(biāo)準(zhǔn)化,這意味著早期的演示使用了專有的結(jié)構(gòu)管理。
CXL 3.x實(shí)現(xiàn)了共享內(nèi)存結(jié)構(gòu)
盡管CXL 2.0可以實(shí)現(xiàn)小規(guī)模的內(nèi)存池,但它有許多限制。在拓?fù)浣Y(jié)構(gòu)方面,它僅限于16個(gè)主機(jī)和單層交換器層次結(jié)構(gòu)。對(duì)于連接GPU和其它加速器來說更重要的是,每個(gè)主機(jī)只支持一個(gè)Type 2設(shè)備,這意味著CXL 2.0不能用于構(gòu)建一個(gè)一致性GPU服務(wù)器。CXL 3.0允許每個(gè)主機(jī)支持多達(dá)16個(gè)加速器,使其成為用于GPU的標(biāo)準(zhǔn)一致性互連。它還增加了點(diǎn)對(duì)點(diǎn)(P2P)通信、多級(jí)交換和最多4,096個(gè)節(jié)點(diǎn)的結(jié)構(gòu)。
圖3. CXL 3.X 共享內(nèi)存
雖然內(nèi)存池化可以實(shí)現(xiàn)將DRAM靈活分配給服務(wù)器,但CXL 3.0可以實(shí)現(xiàn)真正的共享內(nèi)存。共享內(nèi)存擴(kuò)展器被稱為全局布局附加內(nèi)存(G-FAM)設(shè)備,它允許多個(gè)主機(jī)或加速器共同共享內(nèi)存區(qū)域。3.0規(guī)范還為更精細(xì)的內(nèi)存分配添加了最多8個(gè)動(dòng)態(tài)容量(DC)區(qū)域。圖3展示了一個(gè)簡(jiǎn)單的示例,使用單個(gè)交換機(jī)將任意數(shù)量的主機(jī)連接到共享內(nèi)存。在這種情況下,主機(jī)或設(shè)備可能會(huì)管理緩存一致性。
圖4. 以太網(wǎng)上的內(nèi)存交換
然而,為了使加速器可以直接訪問共享內(nèi)存,擴(kuò)展器必須實(shí)現(xiàn)帶有回收失效的一致性(HDM-DB),這是3.0規(guī)范中新增的。換句話說,要使CXL連接的GPU可以共享內(nèi)存,擴(kuò)展器必須實(shí)現(xiàn)包含性嗅探過濾器。這種方法引入了潛在的阻塞,因?yàn)橐?guī)范對(duì)某些CXL.mem事務(wù)強(qiáng)制執(zhí)行嚴(yán)格的順序。共享內(nèi)存結(jié)構(gòu)會(huì)出現(xiàn)擁塞,導(dǎo)致不太可預(yù)測(cè)的延遲和更大的尾延遲的可能性。盡管規(guī)范包括QoS遙測(cè)功能,基于主機(jī)的速率限制是可選的,而且這些能力在實(shí)踐中尚未得到驗(yàn)證。
RDMA實(shí)現(xiàn)遠(yuǎn)程內(nèi)存
隨著CXL結(jié)構(gòu)在規(guī)模和異構(gòu)性上的增長(zhǎng),性能問題也在擴(kuò)大。例如,在解耦式機(jī)架的每個(gè)架子上放置一個(gè)交換機(jī)是一種優(yōu)雅的方法,但它會(huì)在不同資源(計(jì)算、內(nèi)存、存儲(chǔ)和網(wǎng)絡(luò))之間的每次事務(wù)中增加一個(gè)交換機(jī)跳數(shù)。擴(kuò)展到集群和更大規(guī)模會(huì)增加鏈路延遲的挑戰(zhàn),甚至傳輸延遲也變得有意義。當(dāng)多個(gè)因素導(dǎo)致延遲超過600納秒時(shí),系統(tǒng)可能會(huì)出現(xiàn)錯(cuò)誤。最后,盡管對(duì)于小事務(wù)而言,加載/存儲(chǔ)語義很有吸引力,但對(duì)于頁面交換或虛擬機(jī)遷移等大規(guī)模數(shù)據(jù)傳輸來說,DMA通常更高效。
最終,一致性域的范圍只需要擴(kuò)展到一定程度。超出CXL的實(shí)際限制,以太網(wǎng)可以滿足對(duì)高容量分離內(nèi)存的需求。從數(shù)據(jù)中心的角度來看,以太網(wǎng)的覆蓋范圍是無限的,超大規(guī)模的超大規(guī)模企業(yè)已經(jīng)將RDMA-over-Ethernet(RoCE)網(wǎng)絡(luò)擴(kuò)展到數(shù)千個(gè)服務(wù)器節(jié)點(diǎn)。然而,運(yùn)營(yíng)商已經(jīng)部署了這些大型RoCE網(wǎng)絡(luò),用于使用SSD進(jìn)行存儲(chǔ)分離,而不是DRAM。
圖3展示了內(nèi)存RDMA交換的一個(gè)示例實(shí)現(xiàn),即密歇根大學(xué)的Infiniswap設(shè)計(jì)。研究人員的目標(biāo)是將閑置內(nèi)存在服務(wù)器之間進(jìn)行分離,解決內(nèi)存未充分利用的問題,也稱為閑置。他們的方法使用現(xiàn)成的RDMA硬件(RNIC),避免了應(yīng)用程序的修改。系統(tǒng)軟件使用Infiniswap塊設(shè)備,對(duì)虛擬內(nèi)存管理器(VMM)而言,它類似于傳統(tǒng)存儲(chǔ)。VMM將Infiniswap設(shè)備處理為交換分區(qū),就像使用本地SSD分區(qū)進(jìn)行頁面交換一樣。
目標(biāo)服務(wù)器在用戶空間運(yùn)行一個(gè)Infiniswap守護(hù)進(jìn)程,僅處理將本地內(nèi)存映射到遠(yuǎn)程塊設(shè)備。一旦內(nèi)存被映射,讀寫請(qǐng)求將繞過目標(biāo)服務(wù)器的CPU,使用RDMA進(jìn)行傳輸,從而實(shí)現(xiàn)零開銷的數(shù)據(jù)平面。在研究人員的系統(tǒng)中,每個(gè)服務(wù)器都加載了兩個(gè)軟件組件,以便它們可以同時(shí)充當(dāng)請(qǐng)求方和目標(biāo)方,但這個(gè)概念也可以擴(kuò)展到僅充當(dāng)目標(biāo)方的內(nèi)存設(shè)備。
密歇根大學(xué)團(tuán)隊(duì)使用56Gbps InfiniBand RNIC構(gòu)建了一個(gè)32節(jié)點(diǎn)集群,盡管以太網(wǎng)RNIC應(yīng)該可以完全運(yùn)行。他們測(cè)試了幾個(gè)內(nèi)存密集型應(yīng)用程序,包括運(yùn)行TPC-C基準(zhǔn)測(cè)試的VoltDB和運(yùn)行Facebook工作負(fù)載的Memcached。在只有50%的工作集存儲(chǔ)在本地DRAM中,其余由網(wǎng)絡(luò)交換提供支持的情況下,VoltDB和Memcached分別提供了66%和77%的性能,與完整工作集存儲(chǔ)在本地DRAM中的性能相比。
通往內(nèi)存網(wǎng)絡(luò)的漫長(zhǎng)道路
云數(shù)據(jù)中心成功地將存儲(chǔ)和網(wǎng)絡(luò)功能從CPU分離出來,但主內(nèi)存的分離仍然難以實(shí)現(xiàn)。十年前,Intel的機(jī)架規(guī)模架構(gòu)路線圖上有關(guān)于內(nèi)存池化的計(jì)劃,但從未實(shí)現(xiàn)。Gen-Z聯(lián)盟于2016年成立,追求內(nèi)存為中心的結(jié)構(gòu)架構(gòu),但系統(tǒng)設(shè)計(jì)僅達(dá)到了原型階段。歷史告訴我們,隨著行業(yè)標(biāo)準(zhǔn)增加復(fù)雜性和可選功能,它們被大規(guī)模采用的可能性降低。CXL提供了沿著架構(gòu)演進(jìn)路徑的增量步驟,允許技術(shù)迅速發(fā)展,同時(shí)提供未來迭代,承諾實(shí)現(xiàn)真正的可組合系統(tǒng)。
從內(nèi)存擴(kuò)展中受益的工作負(fù)載包括SAP HANA和Redis等內(nèi)存數(shù)據(jù)庫(kù)、Memcached等內(nèi)存緩存、大型虛擬機(jī),以及必須處理日益增長(zhǎng)的大型語言模型的AI訓(xùn)練和推斷。當(dāng)這些工作負(fù)載的工作集不能完全適應(yīng)本地DRAM時(shí),它們的性能會(huì)急劇下降。內(nèi)存池化可以緩解閑置內(nèi)存問題,這影響了超大規(guī)模數(shù)據(jù)中心運(yùn)營(yíng)商的資本支出。微軟在2022年3月的一篇論文中詳細(xì)介紹的研究發(fā)現(xiàn),在高度利用的Azure集群中,高達(dá)25%的服務(wù)器DRAM被閑置。該公司對(duì)不同數(shù)量的CPU插槽進(jìn)行了內(nèi)存池化建模,并估計(jì)它可以將整體DRAM需求減少約10%。
在目前的GPU市場(chǎng)動(dòng)態(tài)下,純粹采用CXL 3.x結(jié)構(gòu)的情況不太具有說服力,部分原因是GPU市場(chǎng)的動(dòng)態(tài)。目前來自Nvidia、AMD和Intel的數(shù)據(jù)中心GPU在GPU與GPU之間的通信中實(shí)現(xiàn)了專有的一致性互連,同時(shí)還使用PCIe與主機(jī)進(jìn)行連接。Nvidia的頂級(jí)Tesla GPU已經(jīng)支持通過專有的NVLink接口進(jìn)行內(nèi)存池化,解決了高帶寬內(nèi)存(HBM)的閑置內(nèi)存問題。市場(chǎng)領(lǐng)導(dǎo)者可能會(huì)更青睞NVLink,但它也可能通過共享(serdes)的方式支持CXL。類似地,AMD和Intel未來的GPU可能會(huì)在Infinity和Xe-Link之外采用CXL。然而,由于沒有公開的GPU支持,對(duì)于CXL 3.0先進(jìn)功能的采用存在不確定性,而對(duì)于現(xiàn)有用例轉(zhuǎn)向PCIe Gen6通道速率是無爭(zhēng)議的。無論如何,我們預(yù)計(jì)在2027年之前,CXL 3.x共享內(nèi)存擴(kuò)展器將實(shí)現(xiàn)大規(guī)模出貨。
與此同時(shí),多個(gè)超大規(guī)模數(shù)據(jù)中心運(yùn)營(yíng)商采用RDMA來處理存儲(chǔ)分離以及高性能計(jì)算。盡管在大規(guī)模部署RoCE方面存在挑戰(zhàn),但這些大客戶有能力解決性能和可靠性問題。他們可以將這種已部署和理解的技術(shù)擴(kuò)展到新的場(chǎng)景,如基于網(wǎng)絡(luò)的內(nèi)存解耦。研究已經(jīng)證明,連接到網(wǎng)絡(luò)的容量層在將其應(yīng)用于適當(dāng)?shù)墓ぷ髫?fù)載時(shí)可以提供強(qiáng)大的性能。
我們將CXL和RDMA視為互補(bǔ)的技術(shù),前者提供最大的帶寬和最低的延遲,而后者提供更大的規(guī)模。Enfabrica開發(fā)了一種稱為Accelerated Compute Fabric (ACF)的架構(gòu),將CXL/PCIe交換和RNIC功能合并為一個(gè)單一的設(shè)備。當(dāng)在多太位(multi-terabit)芯片中實(shí)例化時(shí),ACF可以連接一致性本地內(nèi)存,同時(shí)使用高達(dá)800G以太網(wǎng)端口跨機(jī)箱和機(jī)架進(jìn)行擴(kuò)展。關(guān)鍵是,這種方法消除了對(duì)將來需要多年才能進(jìn)入市場(chǎng)的高級(jí)CXL功能的依賴。
數(shù)據(jù)中心運(yùn)營(yíng)商將采用多種路徑來實(shí)現(xiàn)內(nèi)存分離,因?yàn)槊總€(gè)運(yùn)營(yíng)商有不同的優(yōu)先事項(xiàng)和獨(dú)特的工作負(fù)載。那些有明確定義內(nèi)部工作負(fù)載的運(yùn)營(yíng)商可能會(huì)領(lǐng)先,而那些優(yōu)先考慮公有云實(shí)例的運(yùn)營(yíng)商可能會(huì)更加保守。早期使用者為那些可以解決特定客戶最迫切需求的供應(yīng)商創(chuàng)造了機(jī)會(huì)。
-
芯片
+關(guān)注
關(guān)注
452文章
50206瀏覽量
420924 -
cpu
+關(guān)注
關(guān)注
68文章
10804瀏覽量
210839 -
服務(wù)器
+關(guān)注
關(guān)注
12文章
8958瀏覽量
85085 -
內(nèi)存
+關(guān)注
關(guān)注
8文章
2966瀏覽量
73814 -
RDMA
+關(guān)注
關(guān)注
0文章
75瀏覽量
8912
原文標(biāo)題:內(nèi)存架構(gòu)演進(jìn):CXL與RDMA的協(xié)同發(fā)展
文章出處:【微信號(hào):SDNLAB,微信公眾號(hào):SDNLAB】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論