第二章 CXL系統(tǒng)架構(gòu)
CXL支持三種設(shè)備類型,如下圖。Type1支持CXL.cache和CXL.io;Type 2支持CXL.cache,CXL.mem和CXL.io;Type 3支持CXL.mem和CXL.io。無(wú)論哪種類型,CXL.io都是不可缺少的,因?yàn)樵O(shè)備的發(fā)現(xiàn),枚舉,配置等都是由CXL.io來(lái)負(fù)責(zé)。
傳統(tǒng)的非一致I/O設(shè)備主要依賴于標(biāo)準(zhǔn)的生產(chǎn)者-消費(fèi)者訂單模型(Producer-Consumer Ordering Model),并針對(duì)主機(jī)連接的內(nèi)存執(zhí)行。此類設(shè)備除了工作提交和工作完成邊界上的信號(hào)外,很少與主機(jī)進(jìn)行交互。此類加速器還傾向于處理數(shù)據(jù)流或大型連續(xù)數(shù)據(jù)對(duì)象。這些設(shè)備通常不需要CXL提供的高級(jí)功能,而傳統(tǒng)PCIe足以作為加速器連接介質(zhì)。
插播一句,生產(chǎn)者-消費(fèi)者模型是一種為了加快系統(tǒng)響應(yīng)數(shù)據(jù)的異步模型,系統(tǒng)中一些慢速操作(例如網(wǎng)絡(luò)I/O,數(shù)據(jù)統(tǒng)計(jì)等)會(huì)阻塞主進(jìn)程的運(yùn)行,從而使得系統(tǒng)的吞吐量大大降低。如果我們不需要即時(shí)得到這些慢速操作的返回結(jié)果,那么我們可以使用異步的方式來(lái)解決這個(gè)問(wèn)題。生產(chǎn)者-消費(fèi)者模型通常是多對(duì)多的關(guān)系,即多個(gè)生產(chǎn)者對(duì)應(yīng)多個(gè)消費(fèi)者,他們之間通過(guò)共享一個(gè)隊(duì)列來(lái)實(shí)現(xiàn)通信和同步。生產(chǎn)者負(fù)責(zé)把請(qǐng)求放到隊(duì)列中,消費(fèi)者負(fù)責(zé)從隊(duì)列中出去請(qǐng)求并作響應(yīng)的處理。生產(chǎn)者-消費(fèi)者模型的核心思想,把數(shù)據(jù)的生產(chǎn)者和消費(fèi)者進(jìn)行解耦,使二者不直接交互,從而使二者的處理速率相對(duì)來(lái)說(shuō)互不影響。
2.1 Type 1 CXL設(shè)備
Type 1設(shè)備的典型應(yīng)用是網(wǎng)卡這類高速緩存設(shè)備。
Type 1 CXL設(shè)備,應(yīng)用于擁有完全一致性緩存的設(shè)備。對(duì)于這種設(shè)備,標(biāo)準(zhǔn)的生產(chǎn)者-消費(fèi)者模型效果一般,比如,設(shè)備需要執(zhí)行復(fù)雜的原子操作,而這些原子操作又不屬于PCIe的標(biāo)準(zhǔn)原子操作?;揪彺嬉恢滦栽试S加速器實(shí)現(xiàn)它選擇的任何排序模型,并允許它實(shí)現(xiàn)無(wú)限數(shù)量的原子操作。它們往往只需要少量的緩存,可以很容易地通過(guò)標(biāo)準(zhǔn)的處理器監(jiān)聽(tīng)過(guò)濾(Snoop Filter)機(jī)制輕松跟蹤。
Type 1設(shè)備支持的緩存大小取決于主機(jī)的監(jiān)聽(tīng)過(guò)濾能力。CXL使用CXL.cache鏈接支持此類設(shè)備,加速器可以通過(guò)該鏈接使用CXL.cache協(xié)議進(jìn)行緩存一致性事務(wù)。
2.2 Type 2 CXL設(shè)備
Type 2設(shè)備的典型應(yīng)用是GPU,FPGA,AI這類的加速器。
Type 2設(shè)備除了一致性高速緩存外,還具有連接到設(shè)備的內(nèi)存,例如DDR、高帶寬內(nèi)存(High Bandwidth Memory,HBM)等。這些設(shè)備的性能依賴于加速器和設(shè)備掛載內(nèi)存(Device-attached Memory)之間的巨大帶寬。CXL的關(guān)鍵目標(biāo)是為主機(jī)提供一種將操作數(shù)推入設(shè)備掛載內(nèi)存的方法,并為主機(jī)提供從設(shè)備掛載內(nèi)存中提取結(jié)果的方法,這樣就不會(huì)增加抵消加速器好處的軟件和硬件成本。CXL將一致的系統(tǒng)地址映射設(shè)備連接內(nèi)存稱為“主機(jī)管理的設(shè)備內(nèi)存“(Host-managedDevice Memory,HDM)。
HDM和傳統(tǒng)IO/PCIe專用設(shè)備內(nèi)存(Private Device Memory,PDM)之間有一個(gè)重要區(qū)別。用帶有GDDR的GPGPU來(lái)舉例,GPGPU往往將其GDDR視為私有。這意味著主機(jī)無(wú)法訪問(wèn)GDDR,并且與系統(tǒng)的其余部分不一致。它完全由設(shè)備硬件和驅(qū)動(dòng)程序管理,主要用作具有大型數(shù)據(jù)集的設(shè)備的中間存儲(chǔ)。這種模型的明顯缺點(diǎn)是,在引入操作數(shù)并將結(jié)果寫(xiě)回時(shí),它涉及大量從主機(jī)內(nèi)存到設(shè)備連接內(nèi)存的來(lái)回拷貝。HDM雖然也是掛載在設(shè)備端,但可以被主機(jī)直接訪問(wèn)。
2.2.1 偏向性一致性協(xié)議
再次強(qiáng)調(diào),HDM是附屬于設(shè)備的內(nèi)存,也就是說(shuō)HDM在設(shè)備端,而不是主機(jī)端。
偏向性一致性模型(Bias Based coherency model)定義了設(shè)備掛載內(nèi)存(Device-attached Memory)的兩種狀態(tài):偏向主機(jī)(Host Bias)還是偏向設(shè)備(Device Bias)。當(dāng)設(shè)備掛載內(nèi)存偏向主機(jī)時(shí),該內(nèi)存就像常規(guī)的主機(jī)連接內(nèi)存一樣。也就是說(shuō),如果設(shè)備需要訪問(wèn)該內(nèi)存,設(shè)備需要向主機(jī)發(fā)送一個(gè)請(qǐng)求,主機(jī)將解析請(qǐng)求的一致性。當(dāng)設(shè)備掛載內(nèi)存處于偏向設(shè)備時(shí),要保證主機(jī)中沒(méi)有對(duì)應(yīng)的緩存行副本。這樣設(shè)備可以隨意的訪問(wèn)設(shè)備掛載的存儲(chǔ),而不需要向主機(jī)發(fā)送任何的請(qǐng)求事務(wù)。
需要注意的是,主機(jī)本身可以看到與設(shè)備連接的內(nèi)存的統(tǒng)一視圖,而不考慮偏向狀態(tài)。在這兩種模式中,設(shè)備連接的內(nèi)存都可以保持一致性。
帶有偏向性的一致性模型的優(yōu)點(diǎn):
有助于維護(hù)映射到系統(tǒng)一致性地址范圍內(nèi)的設(shè)備掛載內(nèi)存的數(shù)據(jù)一致性。
幫助設(shè)備以高帶寬訪問(wèn)其本地連接的內(nèi)存,同時(shí)不會(huì)產(chǎn)生顯著的一致性開(kāi)銷(xiāo)(例如,對(duì)主機(jī)的監(jiān)聽(tīng))。
幫助主機(jī)以一致的統(tǒng)一的方式訪問(wèn)設(shè)備掛載的存儲(chǔ),就像掛載在主機(jī)自己下面一樣。
為了維護(hù)偏向性一致性模型,Type 2的設(shè)備需要:
實(shí)現(xiàn)偏向表,該表跟蹤頁(yè)面粒度上的偏向性(例如1b/4KB頁(yè)面),該表可被緩存在設(shè)備中。
使用轉(zhuǎn)換代理(Transition Agent,TA)支持偏向性轉(zhuǎn)換。這本質(zhì)上看起來(lái)像是一個(gè)用于“清理”頁(yè)面的DMA引擎,會(huì)清空該頁(yè)中對(duì)應(yīng)主機(jī)里所有的緩存行。
構(gòu)建對(duì)加速器本地內(nèi)存的基本load/store訪問(wèn)。
2.2.1.1 主機(jī)偏向性
主機(jī)偏向模式通常是指在工作提交期間主機(jī)將操作數(shù)據(jù)寫(xiě)入內(nèi)存,或在工作完成后從內(nèi)存讀取數(shù)據(jù)。如下圖所示,內(nèi)存掛在設(shè)備端。在主機(jī)偏向模式下,一致性數(shù)據(jù)流從主機(jī)到設(shè)備掛載內(nèi)存,如圖中的藍(lán)色箭頭所示。但是,設(shè)備對(duì)此內(nèi)存的訪問(wèn)效率不是最佳的,因?yàn)樾枰ㄟ^(guò)主機(jī),如圖中的綠色箭頭所示,設(shè)備先向主機(jī)發(fā)起請(qǐng)求,然后通過(guò)主機(jī)來(lái)訪問(wèn)HDM。
2.2.1.2 設(shè)備偏向性
在設(shè)備偏向模式下,設(shè)備負(fù)責(zé)工作提交和完成。在此模式下,設(shè)備需要對(duì)設(shè)備掛載內(nèi)存完成高帶寬和低延遲訪問(wèn)。設(shè)備無(wú)需詢問(wèn)主機(jī)的一致性引擎,而直接發(fā)起訪問(wèn),如圖中的紅色箭頭所示。主機(jī)仍然可以訪問(wèn)設(shè)備掛載的內(nèi)存,但可能會(huì)被加速器強(qiáng)制放棄所有權(quán),如圖中的綠色箭頭所示。設(shè)備訪問(wèn)HDM內(nèi)存實(shí)現(xiàn)了延遲低,帶寬高,但是主機(jī)訪問(wèn)HDM會(huì)卻相反。
2.2.1.3 模式管理
有兩種HDM偏向性模式管理方案:軟件輔助和硬件自主。
2.2.1.4 軟件輔助偏向模式管理
在軟件輔助管理模式下,依靠軟件來(lái)管理某頁(yè)面的狀態(tài)。通過(guò)選擇適當(dāng)?shù)闹鳈C(jī)或設(shè)備偏向模式,軟件可以在頁(yè)面粒度上優(yōu)化一致性性能。
軟件輔助偏向性管理的特點(diǎn)如下:
這種方式適用于,在執(zhí)行計(jì)算操作前,加速器內(nèi)的數(shù)據(jù)已經(jīng)準(zhǔn)備好。
如果未提前將數(shù)據(jù)移動(dòng)到加速器內(nèi)存中,加速器通常會(huì)根據(jù)對(duì)數(shù)據(jù)的一些嘗試引用來(lái)控制移動(dòng)數(shù)據(jù)。
在“需要的”數(shù)據(jù)提取場(chǎng)景中,加速器必須能夠找到要執(zhí)行的工作,對(duì)于這些工作,數(shù)據(jù)已經(jīng)正確放置,否則它必須暫停。
加速器停頓的每個(gè)周期會(huì)影響軟件運(yùn)行性能。
簡(jiǎn)單的加速器通常無(wú)法隱藏?cái)?shù)據(jù)預(yù)取的延遲。
2.2.1.5 硬件自主偏向模式管理
軟件輔助方式通常適用于簡(jiǎn)單的加速器。對(duì)于復(fù)雜的加速器,比如GPU,用軟件去管理偏向性將會(huì)很復(fù)雜,并不適用。硬件自主偏向性管理模式,不依賴軟件來(lái)管理頁(yè)面級(jí)的一致性偏向。相反,是硬件根據(jù)給定頁(yè)面的請(qǐng)求者對(duì)偏向模式進(jìn)行預(yù)測(cè),并相應(yīng)地進(jìn)行調(diào)整。這種模式的主要好處是:
提供與軟件輔助模型中相同的頁(yè)面粒度一致性偏向功能。
無(wú)需軟件在卸載執(zhí)行之前識(shí)別和安排頁(yè)面偏向轉(zhuǎn)換。
為卸載執(zhí)行期間的動(dòng)態(tài)偏向轉(zhuǎn)換提供硬件支持。
此模型的硬件支持可以是軟件輔助模型的簡(jiǎn)單擴(kuò)展。
鏈路流和主機(jī)支持不受影響。
影響主要限于當(dāng)主機(jī)接觸到設(shè)備偏向頁(yè)面時(shí)在加速器上采取的操作,反之亦然。
注意,盡管這是一個(gè)表面上看來(lái)是硬件驅(qū)動(dòng)的解決方案,但硬件不需要自動(dòng)執(zhí)行所有轉(zhuǎn)換(盡管如果需要,也可以這樣做)。
2.3 Type 3 CXL設(shè)備
Type 3的典型應(yīng)用是內(nèi)存緩沖器,常用作內(nèi)存帶寬或者是容量的擴(kuò)展。
Type 3 CXL設(shè)備支持CXL.io和CXL.mem協(xié)議。由于這些設(shè)備不是加速器,所以它們不會(huì)通過(guò)CXL.cache發(fā)出任何請(qǐng)求。該設(shè)備主要通過(guò)CXL.mem運(yùn)行,為主機(jī)發(fā)送的請(qǐng)求提供服務(wù)。CXL.io協(xié)議主要用于設(shè)備發(fā)現(xiàn)、枚舉、錯(cuò)誤報(bào)告和管理。CXL.io協(xié)議允許設(shè)備用于其它特定于I/O的應(yīng)用用途。
2.4 多邏輯設(shè)備(MultiLogical Device,MLD)
CXL 2.0僅支持Type 3的多邏輯組件。MLD組件最多可以將其資源劃分為16個(gè)獨(dú)立的邏輯設(shè)備(Logical Device,LD)。在CXL.io和CXL.mem協(xié)議中,每個(gè)邏輯設(shè)備都由邏輯設(shè)備標(biāo)識(shí)符(LD-ID)標(biāo)識(shí)。每個(gè)邏輯設(shè)備都作為T(mén)ype 3設(shè)備運(yùn)行,對(duì)虛擬層次結(jié)構(gòu)(Virtual Hierarchy,VH)可見(jiàn)。LD-ID對(duì)訪問(wèn)VH的軟件是透明的。MLD組件對(duì)于所有邏輯設(shè)備中的每個(gè)協(xié)議都有公共事務(wù)層和鏈路層。
MLD組件有一個(gè)為FM(Fabric Manager)保留的LD和最多16個(gè)可用于主機(jī)綁定的LD。FM擁有的LD(FMLD)允許FM跨LD配置資源分配,并管理與多個(gè)VCS(VirtualCXL Switch)共享的物理鏈路。
插播一句,VH是PCIe MR-IOV(Multiple Root I/O Virtualization)里面的一個(gè)概念。MR-IOV擴(kuò)展了SR-IOV規(guī)范,允許PCIe設(shè)備在多個(gè)有獨(dú)立PCI根的系統(tǒng)之間共享,這些系統(tǒng)通過(guò)基于PCIe轉(zhuǎn)換器的拓?fù)浣Y(jié)構(gòu)與PCIe設(shè)備或者PCIe-PCI橋相接。每個(gè)VH(一個(gè)VH就是一個(gè)虛擬獨(dú)立的SR-IOV設(shè)備)擁有獨(dú)立的PCI Memory,IO,配置空間。
2.4.1 LD-ID for CXL.io and CXL.mem
LD-ID是一個(gè)16位邏輯設(shè)備標(biāo)識(shí)符,適用于CXL.io和CXL.mem請(qǐng)求和響應(yīng)。MLD設(shè)備返回的所有目標(biāo)請(qǐng)求和響應(yīng)必須包括LD-ID。
2.4.1.1 LD-ID for CXL.mem
CXL.mem僅支持LD-ID的低4位,因此可以通過(guò)鏈路支持多達(dá)16個(gè)唯一的LD-ID值。通過(guò)MLD端口轉(zhuǎn)發(fā)的請(qǐng)求和響應(yīng)用LD-ID標(biāo)記。
2.4.1.2 LD-ID for CXL.io
CXL.io支持為通過(guò)MLD端口轉(zhuǎn)發(fā)的所有請(qǐng)求和響應(yīng)攜帶16位LD-ID。LD-ID0xFFFF是保留的,始終由FM使用。CXL.io利用供應(yīng)商定義的本地TLP前綴來(lái)攜帶16位LD-ID值。供應(yīng)商定義的本地TLP前綴格式如下所示。
2.4.2 內(nèi)存池設(shè)備配置寄存器
每個(gè)LD作為一個(gè)或多個(gè)PCIe EP(End Point) Function對(duì)軟件可見(jiàn)。雖然LD Function支持所有配置寄存器,但影響常見(jiàn)鏈路行為的幾個(gè)控制寄存器被虛擬化,對(duì)鏈路沒(méi)有直接影響。LD的每個(gè)Function都必須實(shí)現(xiàn)PCIe規(guī)范中所述的配置寄存器。
下表列出了一組寄存器字段,與PCIe基本規(guī)范相比,這些字段的行為發(fā)生了修改。
2.5 CXL設(shè)備擴(kuò)展
CXL設(shè)備擴(kuò)展限制只允許每個(gè)VH(Virtual Hierarchy)啟用一個(gè)Type 1或Type 2設(shè)備。
本章總結(jié):這一章主要定義了3類CXL設(shè)備,Type 1支持CXL.cache和CXL.io;Type 2支持CXL.cache,CXL.mem和CXL.io;Type 3支持CXL.mem和CXL.io。這三類設(shè)備都需要支持CXL.io協(xié)議,不同的是對(duì)CXL.cache和CXL.mem支持。 【待續(xù)】
審核編輯:劉清
-
處理器
+關(guān)注
關(guān)注
68文章
19038瀏覽量
228481 -
加速器
+關(guān)注
關(guān)注
2文章
788瀏覽量
37574 -
PCIe
+關(guān)注
關(guān)注
15文章
1175瀏覽量
82256 -
Type
+關(guān)注
關(guān)注
1文章
134瀏覽量
22620
原文標(biāo)題:技術(shù)分享 | CXL學(xué)習(xí)(二)
文章出處:【微信號(hào):Ithingedu,微信公眾號(hào):安芯教育科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論