于是,英特爾提出了Move faster,Store more,Process everything的概念,可以處理任何類型的數(shù)據(jù)就叫Process everything,可以存得更多就叫Store more,在存和計(jì)算之間的網(wǎng)絡(luò)就是Move faster,以此來(lái)應(yīng)對(duì)數(shù)據(jù)爆炸性增長(zhǎng)的趨勢(shì)。
要做到這一點(diǎn)需要解決很多問(wèn)題,比如如何有效地把大量數(shù)據(jù)讀進(jìn)來(lái),如何盡可能地降低Latency,如何讓帶寬Bandwidth越來(lái)越高等等。
數(shù)據(jù)中心會(huì)有大量服務(wù)器,服務(wù)器里有內(nèi)存,有各種板卡,連接網(wǎng)絡(luò)的網(wǎng)卡,負(fù)責(zé)存數(shù)據(jù)的硬盤(pán)等等,服務(wù)器擺在機(jī)架上,機(jī)架通過(guò)網(wǎng)絡(luò)相連,每個(gè)機(jī)架都有TOR swtich交換機(jī),Switch跟Leaf swtich通過(guò)全連接的方式相連,Leaf和Spine之間通過(guò)胖瘦結(jié)構(gòu)或者其他的結(jié)構(gòu)相連,最上層,通過(guò)WAN廣域網(wǎng)的出口和外部進(jìn)行互聯(lián)。
整體架構(gòu)中涉及很多網(wǎng)絡(luò)相關(guān)組件,比如硅光就非常流行,英特爾在前幾年發(fā)布硅光的模塊,在市場(chǎng)上取得了領(lǐng)先地位,提供超100G的高帶寬,又比如,P4可編程交換機(jī)也很常見(jiàn),它可以使得網(wǎng)絡(luò)更加靈活。此外,網(wǎng)卡也是非常重要的。
網(wǎng)絡(luò)圖景里,數(shù)據(jù)中心級(jí)別、處理器級(jí)別和SoC級(jí)別,不同層級(jí)有各自的特征。
數(shù)據(jù)中心規(guī)模的網(wǎng)絡(luò),其單鏈路的傳輸速率會(huì)非常高,通常能達(dá)到56G甚至112GT/s,同時(shí),在有了PAM4這樣的糾錯(cuò)方式以后,速率還會(huì)提升到224GT/s甚至更高。
雖然單鏈路速率非常高,但是它的鏈路數(shù)一般比較低,常見(jiàn)的是4鏈路或8鏈路。主要原因在于,如果鏈路變多的話,交換機(jī)會(huì)承受不了,通常意味著需要很大體積和很大功耗,都會(huì)帶來(lái)非常大的額外成本負(fù)擔(dān)。
數(shù)據(jù)中心規(guī)模的網(wǎng)絡(luò),都有較低的鏈路數(shù),而且,它的PHY Latency通常都比較高,能達(dá)到20多納秒的級(jí)別。
在處理器級(jí)別,常用的就是PCIe、CXL等網(wǎng)絡(luò)。這些網(wǎng)絡(luò)的單鏈路速率雖然也比較高,但比不上數(shù)據(jù)中心級(jí)別,同時(shí),它的鏈路數(shù)是非常多,一顆CPU可以上百個(gè)PCIe通道,通常,它的PHY Latency在10納秒以下。
在SoC級(jí)別,主要看UCIe網(wǎng)絡(luò),UCIe(Universal Chiplet Interconnect Express)是Intel牽頭建立的一個(gè)新的標(biāo)準(zhǔn)組織,它是一套連接管理的標(biāo)準(zhǔn),它可以把不同廠商和不同規(guī)范的小芯片以標(biāo)準(zhǔn)化的方式集成在一個(gè)大的封裝里,使得芯片和芯片之間耦合也會(huì)變得更松。
UCIe所定義的鏈路的單鏈路速率不高,但是它的鏈路非常多,通??赡苡猩锨l,所以,它的數(shù)據(jù)通信帶寬非常高,而且延時(shí)非常低,一般它的PHY延時(shí)小于2ns,延遲非常低。
UCIe的價(jià)值在于,它能讓數(shù)據(jù)在Chiplet和Chiplet之間快速搬運(yùn)大量數(shù)據(jù),并且能降低搬運(yùn)大量數(shù)據(jù)所需的功耗。
目前,UCIe組織成員包括英特爾、臺(tái)積電、英偉達(dá)、AMD、ARM、高通、三星等業(yè)內(nèi)芯片巨頭,也有阿里巴巴、GCP、微軟、Meta等等互聯(lián)網(wǎng)公司,已形成了強(qiáng)大生態(tài)。
CXL帶來(lái)的技術(shù)變革
上圖左側(cè)展示的是只有PCIe的情況,此時(shí),無(wú)論是CPU還是加速器都只能通過(guò)PCIe的DMA方式去拷貝數(shù)據(jù)。
比如要做AI訓(xùn)練的話,CPU通過(guò)memory copy的方式把數(shù)據(jù)拷貝到GPU里,訓(xùn)練完后后再通過(guò)memory copy把數(shù)據(jù)拷回去,數(shù)據(jù)拷貝全都依靠PCIe DMA。PCIe DMA的效率非常高,但它只適合拷貝大塊數(shù)據(jù),不適合小塊數(shù)據(jù)。
上圖右側(cè)中是有了CXL的情況,在CPU和OS所管理的內(nèi)存可以通過(guò)Load-Store指令與加速器進(jìn)行通信。所以,它比PCIe DMA的方式更靈活,大塊數(shù)據(jù)用PCIe DMA,小塊數(shù)據(jù)通過(guò)Load-Store指令來(lái)執(zhí)行讀寫(xiě)。
有了CXL之后就意味著實(shí)現(xiàn)了真正意義上的異構(gòu)計(jì)算,這里所說(shuō)的異構(gòu)計(jì)算指的是CPU和其他加速器的協(xié)同工作,加速器分擔(dān)一部分工作,相互之間進(jìn)行數(shù)據(jù)交換,把各自產(chǎn)生的結(jié)果進(jìn)行交換,最終得到一個(gè)結(jié)果。
CXL讓計(jì)算方式發(fā)生了巨大的改變,既有硬件的改變,也需要軟件上的配合。以英特爾為例,在軟件方面開(kāi)發(fā)了oneAPI,oneAPI把異構(gòu)計(jì)算的工作都統(tǒng)一到了一個(gè)編程框架里來(lái)執(zhí)行。
當(dāng)前的系統(tǒng)架構(gòu)中,Memory子系統(tǒng)自身面臨很多挑戰(zhàn)。
如左邊圖所示,CPU技術(shù)的發(fā)展使得核心數(shù)量實(shí)現(xiàn)了比較快的增長(zhǎng),但內(nèi)存通道數(shù)增速則相對(duì)較慢。從發(fā)展趨勢(shì)來(lái)看,每個(gè)CPU核心所擁有的內(nèi)存通道反而是在下降,這會(huì)帶來(lái)很多問(wèn)題,很多CPU核心因?yàn)椴荒艹浞值玫綌?shù)據(jù)來(lái)處于滿負(fù)荷的運(yùn)行狀態(tài),會(huì)導(dǎo)致整體計(jì)算效率下降。
為什么不在增加核心的時(shí)候也增加內(nèi)存通道呢?
其實(shí),這牽涉到了CPU的設(shè)計(jì)問(wèn)題,內(nèi)存控制器是在CPU里的,如果增加內(nèi)存通道,則意味著會(huì)增加CPU的功耗,芯片面積也會(huì)變大,PCB走線距離增加,為了保證信號(hào)的完整性,對(duì)于PCB本身也提出更高要求,所以,CPU的成本和功耗都會(huì)增長(zhǎng)。
從服務(wù)器整機(jī)的層面來(lái)看,在主板上增加內(nèi)存DIMM槽,插上更多的內(nèi)存后,整機(jī)的成本也會(huì)不可避免地增長(zhǎng),即使內(nèi)存成本降低,也不會(huì)無(wú)限度的降低下去,最終會(huì)導(dǎo)致整體成本的上升。所以,不能隨意的無(wú)限度地通過(guò)增加內(nèi)存通道來(lái)解決問(wèn)題。
CXL的出現(xiàn)從新的維度來(lái)解決問(wèn)題。
CXL把內(nèi)存與CPU的關(guān)系從緊耦合變成一個(gè)松耦合,通過(guò)CXL網(wǎng)絡(luò)的方式,讓CPU訪問(wèn)遠(yuǎn)端的內(nèi)存資源,最重要的是,遠(yuǎn)端由由CXL技術(shù)支撐的內(nèi)存可以任意地?cái)U(kuò)展內(nèi)存容量,擺脫了CPU和服務(wù)器本身的限制。
從現(xiàn)實(shí)應(yīng)用的角度看,五年時(shí)間里,機(jī)器學(xué)習(xí)模型的規(guī)模增長(zhǎng)了50倍,對(duì)算力的需求也在急劇增長(zhǎng),然而,現(xiàn)有的內(nèi)存層級(jí)完全無(wú)法滿足算力增長(zhǎng)的需求,而CXL將是解決問(wèn)題的關(guān)鍵。
那么,CXL是什么?CXL要如何解決問(wèn)題呢?
CXL有http://CXL.io、CXL.memory和CXL.cache三個(gè)協(xié)議:
其中,http://CXL.io就是原來(lái)的PCIe,在CXL的建立連接、設(shè)備發(fā)現(xiàn)、配置等過(guò)程中發(fā)揮重要作用,連接建立后,CXL.cache協(xié)議負(fù)責(zé)做cache一致性的工作,CXL.cache和CXL.memory配合起來(lái)用來(lái)做內(nèi)存擴(kuò)展。
CXL.cache和CXL.memory對(duì)于latency的要求會(huì)比較高,尤其CXL.cache對(duì)延遲要求非常高,因?yàn)檫@關(guān)系到計(jì)算的效率。
在CXL1.0和1.1規(guī)范定義了三種Device:
Type1Device主要的應(yīng)用場(chǎng)景是高性能計(jì)算里的網(wǎng)卡(PGAS NIC),它支持一些網(wǎng)卡的原子操作,它主要利用的協(xié)議就是http://CXL.io和CXL.cache。
Type2Device主要指的是帶有內(nèi)存的加速器,包括GPU、FPGA等加速器,它使用的協(xié)議包括用來(lái)做鏈接的http://CXL.io,做cache一致性的CXL.cache,用來(lái)做內(nèi)存擴(kuò)展的CXL.memory。
Type3Device主要用作內(nèi)存的Buffer,做內(nèi)存的擴(kuò)展。它主要利用http://CXL.io和CXL.memory的協(xié)議。如圖所示,CPU除了可以用本地的DDR內(nèi)存,還可以通過(guò)CXL去擴(kuò)展遠(yuǎn)端內(nèi)存,遠(yuǎn)端內(nèi)存可以是一個(gè)大的內(nèi)存池,這里的內(nèi)存可以共享給不同的CPU來(lái)用。
CXL2.0規(guī)范實(shí)現(xiàn)了機(jī)架級(jí)別的資源池化。
云計(jì)算強(qiáng)調(diào)資源可以像水和電一樣按需獲取,云計(jì)算的技術(shù)潮流下,追求不同資源之間的松耦合,為的是提高使用效率,為了提高使用效率,要實(shí)現(xiàn)的是相同資源的池化。
隨著技術(shù)的發(fā)展,未來(lái)的服務(wù)器不再是傳統(tǒng)意義上的服務(wù)器,它不再具有現(xiàn)實(shí)的形態(tài),用戶從云服務(wù)商那里申請(qǐng)?jiān)浦鳈C(jī)的時(shí)候,主機(jī)的CPU是從CPU池里拿出來(lái)的,內(nèi)存是從內(nèi)存池里拿出來(lái)的,CPU池和內(nèi)存池通過(guò)CXL連起來(lái)的。
使用從資源池里拿出來(lái)資源組成邏輯上的服務(wù)器,這就是資源解耦和資源池化在未來(lái)能帶來(lái)的變化。
CXL2.0規(guī)范在資源池化方面有所強(qiáng)化,同時(shí),也還增加了CXL switch功能,它可以在一個(gè)機(jī)架內(nèi)通過(guò)一套CXL交換機(jī)構(gòu)建成一個(gè)網(wǎng)絡(luò)。
2022年,新發(fā)布的CXL 3.0規(guī)范又新增很多特性。
首先,CXL 3.0 PCIe 6.0規(guī)范,它的速率從32GT提升到了64GT,在相同的鏈路時(shí),帶寬翻倍。并且,Latency也沒(méi)有任何變化。
第二,CXL 3.0新增了對(duì)二層交換機(jī)的支持,也就是Leaf spine網(wǎng)絡(luò)架構(gòu),如此便可以更好地對(duì)資源進(jìn)行解耦和池化,做更多的資源池,比如CPU資源池、內(nèi)存資源池、網(wǎng)卡資源池和加速器資源池等,Leaf與Spine之間通過(guò)Fabric manager軟件構(gòu)建各種拓?fù)浜透鞣N路由方式。
CXL 3.0不但可以更好地在一個(gè)機(jī)柜內(nèi)實(shí)現(xiàn)計(jì)算資源和存儲(chǔ)資源的池化和解耦,而且,可以在多個(gè)機(jī)柜之間建立更大的資源池,如此一來(lái),對(duì)于云計(jì)算服務(wù)商的資源管理效率和成本優(yōu)化都會(huì)帶來(lái)很大幫助。
第一,用來(lái)擴(kuò)展內(nèi)存的容量和帶寬,這是非常重要的一個(gè)方面。在使用服務(wù)器本地內(nèi)存的同時(shí),還可以通過(guò)CXL利用遠(yuǎn)端內(nèi)存,遠(yuǎn)端內(nèi)存的成本和價(jià)格相對(duì)更低,而且,它能讓CPU和內(nèi)存之間的配比變得更靈活。
進(jìn)一步發(fā)展之后,未來(lái)完全可以取消近端本地內(nèi)存,全部都使用遠(yuǎn)端內(nèi)存,這有賴于摩爾定律的作用,讓計(jì)算芯片和存儲(chǔ)芯片都有更進(jìn)一步的發(fā)展。
與此同時(shí),CPU上會(huì)有比DRAM更高速的內(nèi)存,比如可能會(huì)把HBM與處理器封裝到一個(gè)die里,使得CPU有更多的高速內(nèi)存。
還有一個(gè)趨勢(shì)在于遠(yuǎn)端內(nèi)存的持久化,目前,英特爾就有傲騰持久內(nèi)存,但因?yàn)橐恍┰?,英特爾宣布不再繼續(xù)研發(fā)了,不過(guò),業(yè)界還有很多替代方案,比如NVDIMM,配合CXL將這些持久內(nèi)存作為遠(yuǎn)端內(nèi)存,還能夠提供多種實(shí)用功能。
除此之外,還能利用CXL技術(shù)實(shí)現(xiàn)Computational Storage,通過(guò)CXL利用內(nèi)存資源,在存儲(chǔ)上做一些壓縮或者解壓縮的操作,類似可以在遠(yuǎn)端實(shí)現(xiàn)的功能還有很多。
CXL帶來(lái)的改變從單節(jié)點(diǎn)開(kāi)始,擴(kuò)展到機(jī)架規(guī)模,而后是Tor級(jí)別,最終會(huì)影響到數(shù)據(jù)中心級(jí)別,CXL將要重構(gòu)未來(lái)的數(shù)據(jù)中心。
數(shù)據(jù)中心利用CXL做解耦和池化,CXL技術(shù)能夠讓不同的資源從緊耦合變成松耦合,讓相同的資源變成池化資源,會(huì)形成CPU資源池、GPU資源池以及內(nèi)存資源池,各個(gè)資源池通過(guò)CXL連接。
在未來(lái)發(fā)展中,隨著CXL技術(shù)的逐步落地,IPU承擔(dān)的任務(wù)也會(huì)越來(lái)越多,既作為CXL的端點(diǎn),又作為以太網(wǎng)的端點(diǎn),會(huì)有很多功能和負(fù)載卸載到IPU上,架構(gòu)上會(huì)有很多變化,將會(huì)有很多新的創(chuàng)新。
比如把存儲(chǔ)offload到IPU上,未來(lái)還有一些塊存儲(chǔ)或者其他內(nèi)存相關(guān)服務(wù)也都可以用IPU來(lái)承載,通過(guò)CXL連接到相應(yīng)的資源池上,總之,未來(lái)有非常多的想象空間。
作為總結(jié),不得不說(shuō)的是,未來(lái)的發(fā)展方向中,最終就要實(shí)現(xiàn)徹底的解耦和池化,過(guò)程是逐步從Rack級(jí)別,提升到資源池的級(jí)別,甚至是數(shù)據(jù)中心級(jí)別,而這些池化資源之間的共享就靠CXL和UCIe來(lái)實(shí)現(xiàn)。