国产精品亚洲а∨无码播放不卡_亚洲日韩av乱码一区二区三区_羞羞视频在线观看色_花儿直播免费视频观看在线视频在线_国产成人综合亚洲欧美_欧美乱妇日本无乱码_自拍影视乱伦精品_免费网站看gv片在线_扒下老师的黑色丝袜把她啪啪_免费久久精品一区二区三区

歡迎光臨~漢軒微電子制造(江蘇)有限公司
語言選擇: 中文版 ∷  英文版

行業(yè)新聞

CXL,最強(qiáng)科普(下)

   5 CXL 3.0 協(xié)議   

為了應(yīng)對(duì)大型分布式系統(tǒng)中的數(shù)據(jù)共享挑戰(zhàn)(挑戰(zhàn) 4),CXL 3.0 將 CXL 2.0 中引入的資源池?cái)U(kuò)展到更大規(guī)模,利用更大的 Flit 大小、低延遲和足夠的帶寬,為多達(dá) 4,096 個(gè)終端設(shè)備提供多級(jí)交換和協(xié)議支持。終端設(shè)備可以是代表獨(dú)立服務(wù)器或節(jié)點(diǎn)的主機(jī) CPU、內(nèi)存、加速器或任何其他 I/O 設(shè)備(如網(wǎng)卡)。如圖 12 所示,總體目標(biāo)是根據(jù)工作負(fù)載動(dòng)態(tài)組合系統(tǒng),以較低的總體擁有成本提供高能效性能。為實(shí)現(xiàn)這些目標(biāo),CXL 3.0 引入了以下內(nèi)容:

1.將每引腳帶寬增加一倍,同時(shí)保持?jǐn)U展到更大拓?fù)渌璧难訒r(shí)不變。

2.支持 Fabric 拓?fù)洌?這是所有負(fù)載存儲(chǔ)互連標(biāo)準(zhǔn)中首次支持事務(wù)之間的排序限制。CXL 在任何源-端對(duì)之間都有多條路徑,擺脫了樹狀拓?fù)浣Y(jié)構(gòu)的限制,這對(duì)擴(kuò)展到數(shù)千臺(tái)設(shè)備至關(guān)重要。這使得延遲更低、分段帶寬更高、故障切換能力更強(qiáng)。

3.從 PCIe/CXL 設(shè)備直接點(diǎn)對(duì)點(diǎn)訪問由 2 類/3 類設(shè)備托管的相干 HDM 存儲(chǔ)器,如果不發(fā)生沖突,無需涉及主機(jī)處理器。因此,延遲低、擁塞少、帶寬效率高,這對(duì)大型系統(tǒng)至關(guān)重要。例如,在圖 12 中,使用直接 P2P,網(wǎng)卡到內(nèi)存的距離為 8 跳,而通過 CPU 的距離為往返 16 跳。

4.跨主機(jī)共享一致的內(nèi)存和信息傳遞: 這可以通過硬件或軟件實(shí)現(xiàn)。共享一致性內(nèi)存可使多個(gè)系統(tǒng)共享數(shù)據(jù)結(jié)構(gòu)、執(zhí)行同步或使用低延遲負(fù)載存儲(chǔ)語義傳遞消息。信息傳遞也可以通過使用負(fù)載存儲(chǔ) CXL.io 語義(相對(duì)于延遲較高的網(wǎng)絡(luò)語義)來完成。

5.近內(nèi)存處理,允許在內(nèi)存附近執(zhí)行計(jì)算,以提高性能和能效。

1111.jpg

圖 12. CXL 3.0 支持多路徑的 Fabric 拓?fù)?,可跨越一個(gè)或多個(gè)機(jī)架,從而實(shí)現(xiàn)可組合的橫向擴(kuò)展系統(tǒng),在對(duì)等機(jī)架之間共享內(nèi)存和負(fù)載存儲(chǔ)信息傳遞。

5.1 支持?jǐn)?shù)據(jù)速率翻番至 64.0 GT/s 的 Flit 格式化

CXL 3.0 基于 PCIe 6.0 規(guī)范,使用 PAM-4(脈沖幅度調(diào)制 4 級(jí))信令支持 64.0 GT/s。PAM-4 采用四級(jí)電壓對(duì)每個(gè)單位間隔 (UI) 的兩個(gè)比特進(jìn)行編碼,由于降低了眼高和眼寬(即電壓和時(shí)間),因此錯(cuò)誤率非常高。為了克服這一問題,PCIe 6.0 規(guī)范采用了 10-6 的首次突發(fā)錯(cuò)誤率,并引入了 256 字節(jié)的 Flit(圖 13(a)),其中包括 236 B TLP 和 6 B 數(shù)據(jù)鏈路包 (DLP) 的有效載荷由基于 GF(28) 上的里德-所羅門碼的 8 B CRC 保護(hù),而整個(gè) 250 B 則由每路 2 B 的 3 向交錯(cuò)單符號(hào)正確前向糾錯(cuò)碼 (FEC) 保護(hù)。64.0 GT/s 速率的 CXL 3 使用相同的電氣層和 256 B Flit,但做了一些修改。如圖 9(b)和圖 9(c)所示,對(duì)于 256 B 大小的 Flit 的兩種變體,它保留了與 PCIe 相同的 FEC 機(jī)制。

22.jpg

圖 13. 三種類型的 CXL 3.0 Flits。一個(gè) 256 B 的延遲優(yōu)化 Flit (C) 由兩個(gè) 128 B 的 Sub-Flits 組成,每個(gè) Sub-Flits 在 256 B 之間具有共同的 FEC,但具有單獨(dú)的 CRC。

圖 13(b)顯示了 CXL 3 中常規(guī) 256 B Flit 的布局。8 B CRC 與 PCIe 6.0 相同。唯一不同的是 2 B Hdr(Header)(DLP 前兩個(gè)字節(jié)的增強(qiáng)版,用于可靠的 Flit 傳輸管理,如確認(rèn)、重放請(qǐng)求、帶序列號(hào)的重放)得到了增強(qiáng),以指示 Flit 類型(CXL. DLP(用于可靠的 Flit 傳播管理,如確認(rèn)、重放請(qǐng)求、帶序列號(hào)的重放)被增強(qiáng),以指示 Flit 類型(CXL.io、CXL.cache+mem、ALMP、Idle)和可靠的 Flit 傳播管理控制,并被置于 Flit 的起始位置,以管道方式將 Flit 傳播到相應(yīng)的協(xié)議棧,而無需累積整個(gè) 256 B Flit 以減少延遲。可選的延遲優(yōu)化(LO)256 B Flit,如圖 13(c)所示。LO Flit 被細(xì)分為兩個(gè)子 Flit,每個(gè) 128 B,奇數(shù) Flit-半中有 FEC,偶數(shù) Flit-半中有 2 B Flit Hdr。每個(gè)半字節(jié)中都有一個(gè) 6 B CRC。如參考文獻(xiàn)所述,這 6 B CRC 源自 8 B CRC,以減少門數(shù)。第一個(gè) 6 B CRC 保護(hù)偶數(shù)位半中的 2 B Flit Hdr 和 120 B 數(shù)據(jù),第二個(gè) 6 B CRC 保護(hù)奇數(shù)位半中的 116 B 數(shù)據(jù)。如果偶數(shù)半比特的 CRC 通過,就可以按順序處理,而無需等待奇數(shù)半比特。如果奇數(shù) Flit-half 的 CRC 通過,則可以處理奇數(shù) Flit-half,前提是偶數(shù) Flit-half 已經(jīng)處理完畢(即沒有 CRC 錯(cuò)誤)。由于 CRC 大約需要 10 級(jí)邏輯門,而 FEC 需要 50 級(jí)邏輯門,因此在 x16 鏈路上,先應(yīng)用 CRC 有助于將延遲時(shí)間縮短 2 納秒。此外,128 B 以上的 CRC 使累積延遲略好于 32 GT/s 的 68-B Flit 累積延遲。如果檢測到錯(cuò)誤,則累積整個(gè) Flit,應(yīng)用 FEC,然后再次應(yīng)用 CRC。有關(guān) Flit 以及 FEC 和 CRC 機(jī)制的詳細(xì)信息,請(qǐng)參閱參考文獻(xiàn)。

使用的 Flit 類型(68 B、256 B、LO)在協(xié)商使用 8 b/10 b 編碼的 CXL 協(xié)議時(shí)預(yù)先協(xié)商。任何 CXL 設(shè)備都必須支持 68 B Flit。如果 CXL 設(shè)備支持 64.0 GT/s 數(shù)據(jù)傳輸速率,則還必須公布 256 B Flit 模式,而 LO Flit 模式支持的公布是可選的。如果鏈路的所有組件(兩個(gè)設(shè)備以及中間的任何重定時(shí)器)都支持 LO Flit 模式,則會(huì)選擇 LO;否則,如果所有組件都支持 256 B Flit,則會(huì)選擇 256 B Flit 模式;否則,將支持 68 B Flit 模式。一旦在早期協(xié)商過程中選擇了一種 Flit 模式,無論運(yùn)行的數(shù)據(jù)速率如何,都將使用該模式。假設(shè)我們選擇了 LO Flit 模式,因?yàn)殒溌分械乃薪M件都支持該模式和 64.0 GT/s,但如果鏈路以 32.0 GT/s 運(yùn)行(例如,在 64.0 GT/s 時(shí)出現(xiàn)節(jié)能速度下移或鏈路穩(wěn)定性問題),則仍將使用 LO Flit 模式。

對(duì)于 CXL.io,"數(shù)據(jù) "的最后 4 B 將用于 DLLP(相當(dāng)于 PCIe 6.0 中 6 B DLP 的最后 4 B)。這樣,在 256 B Flit(與 PCIe 6.0 Flit 相同)模式下,TLP 的容量為 236 B,而在 LO Flit 模式下,TLP 的容量為 232 B。對(duì)于 ALMP,大部分 "數(shù)據(jù) "字段是保留的。對(duì)于 CXL.cache-mem,插槽排列如圖 14 所示。H 插槽和 G 插槽的用途與 68-B 相同(即 H 插槽或標(biāo)頭插槽僅用于標(biāo)頭,而 G 插槽或通用插槽用于標(biāo)頭或數(shù)據(jù)),但 H 插槽中的額外 2 B 用于構(gòu)建更大的拓?fù)浣Y(jié)構(gòu)。HS 插槽只有 10 B,用于 2DRS 或 2NDR 等小型報(bào)頭。

 33.jpg

圖 14. 256 B 和 LO Flits 的 CXL.cache 和 CXL.mem 插槽[8]。

5.2 CXL 3.0 的協(xié)議擴(kuò)展: 支持 Fabric 的無序 I/O (UIO) 和反向無效 (BI)

第 3 節(jié)中描述的 PCIe 排序規(guī)則排除了任何非樹形拓?fù)洌@意味著 CXL 網(wǎng)絡(luò)中的任意兩個(gè)節(jié)點(diǎn)(主機(jī)或設(shè)備)之間只有一條路徑。我們需要在任何一對(duì)源-目的節(jié)點(diǎn)之間建立冗余的多條路徑,以創(chuàng)建性能良好的大型分布式系統(tǒng)。由于軟件依賴于 "生產(chǎn)者-消費(fèi)者 "排序模型,因此 CXL 協(xié)議需要在適應(yīng)非樹狀拓?fù)涞耐瑫r(shí)保留這種排序模型。CXL 3.0(以及 PCIe)通過在一個(gè)或多個(gè)不同的虛擬通道(VC,見第 3.1 節(jié))上引入 "無序 "讀/寫/完成事務(wù),并將排序執(zhí)行權(quán)僅轉(zhuǎn)移到源節(jié)點(diǎn),從而解決了這一難題。每個(gè)虛擬通道都獨(dú)立于其他虛擬通道,每個(gè)虛擬通道包括三個(gè)流控制(FC)類別: 已發(fā)布(P)用于內(nèi)存寫入等事務(wù),非發(fā)布(NP)用于內(nèi)存讀取等事務(wù),完成(C)用于每個(gè) NP 事務(wù)的完成,詳見第 3.3 節(jié)。其基本思想是,每個(gè) UIO 寫入都有一個(gè)完成(C FC 類中的 "UIO 寫入完成")。因此,UIO 寫入從根本上說是非發(fā)布的,即使它是在 P FC 類上,以便讓源執(zhí)行排序。因此,生產(chǎn)者(如圖 6(a) 中的設(shè)備 X)必須等待所有 "數(shù)據(jù) "完成后,才能向 "標(biāo)志 "寫入信號(hào),表示數(shù)據(jù)可用。UIO 讀取就像普通的內(nèi)存讀取一樣,它會(huì)獲得一個(gè)或多個(gè)完成(C FC 類中的 "UIO 讀取完成"),無論是否有數(shù)據(jù),都會(huì)同時(shí)獲得狀態(tài),包括錯(cuò)誤。因此,在 UIO VC 中,P 和 NP 各只有一種類型的事務(wù)(分別是 UIO 寫和 UIO 讀),而 C 有三種類型的事務(wù)(UIO 寫完成(無數(shù)據(jù))、UIO 讀完成(有數(shù)據(jù))和 UIO 讀完成(無數(shù)據(jù)))。此外,如圖 15 所示,跨 FC 和 FC 內(nèi)部的事務(wù)沒有排序要求。這樣,CXL.io(和 PCIe)事務(wù)就能在源-目的對(duì)之間具有多條路徑的拓?fù)渲械娜我饴窂缴习l(fā)送,并仍然執(zhí)行生產(chǎn)者-消費(fèi)者排序語義。VC0 將始終用于傳統(tǒng)的非 UIO 排序,以實(shí)現(xiàn)路由樹拓?fù)涞南蚝蠹嫒菪?,VC1-VC7 中的一個(gè)或多個(gè) VC 可用于 UIO 流量,UIO 流量可使用任何路徑進(jìn)行任何交易。

 444.jpg

圖 15. UIO 排序規(guī)則。Y/N "表示第二筆交易可以繞過或不繞過第一筆交易。

CXL 3.0 在 CXL.mem 中引入了帶有兩個(gè)通道的新流程: 如第 5.2 節(jié)詳細(xì)描述的那樣,在 S2M 方向上引入了反向無效 (BI),在 M2S 方向上引入了響應(yīng) BI-Rsp。這就產(chǎn)生了一種新型設(shè)備內(nèi)存: HDM-DB(Host-managed Device Memory - Device-coherent with Back-invalidate support),由 2 類和 3 類設(shè)備支持。

5.3 設(shè)備間的對(duì)等通信和大塊本地內(nèi)存的映射

CXL 3.0 中的 "反向驗(yàn)證 "流程支持三種使用方式:通過 CXL.io UIO 訪問 HDM-DB 內(nèi)存,實(shí)現(xiàn) CXL/PCIe 設(shè)備之間的直接點(diǎn)對(duì)點(diǎn)通信(如圖 16 所示);第 2 類設(shè)備能夠?qū)崿F(xiàn)窺探過濾器,并將大塊本地內(nèi)存映射到 HDM-DB 區(qū)域(如圖 17(a)所示);跨多個(gè)獨(dú)立主機(jī)的硬件強(qiáng)制一致性共享內(nèi)存(如圖 17(b)所示)。在 CXL.mem 中設(shè)置 BI 的理由是確保沒有其他避免死鎖所需的依賴關(guān)系。

rrttt.jpg 

圖 16. 利用 UIO 和 BI 優(yōu)化延遲和帶寬的 CXL 3.0 協(xié)議增強(qiáng)功能。

利用 UIO 和 BI,設(shè)備可以直接訪問 HDM-DB 內(nèi)存,而無需通過主機(jī) CPU。連接到交換機(jī)的加速器設(shè)備需要訪問直接連接到交換機(jī)的內(nèi)存(圖 16(a)),該內(nèi)存映射到 HDM-D 或 HDM-H 區(qū)域,使用 CXL 2.0 數(shù)據(jù)流時(shí)需要通過主機(jī) CPU(圖 16(b)),這涉及主機(jī)從內(nèi)存獲取數(shù)據(jù),并在完成設(shè)備訪問之前解決一致性流。但是,使用 CXL 3.0 流量時(shí),設(shè)備會(huì)在 UIO VC 中使用 CXL.io 發(fā)送相同的內(nèi)存讀寫事務(wù)。交換機(jī)不會(huì)將這些 UIO 事務(wù)路由到主機(jī)。如果高速緩存行的狀態(tài)為 I 或 S(UIO 讀取)或 I(UIO 寫入),則 UIO 事務(wù)直接由內(nèi)存提供服務(wù);否則,內(nèi)存控制器將使用 BI 流反向偵查主機(jī)處理器,如圖 16(c) 所示。稍后我們將看到,即使在需要 BI 的情況下,這種新機(jī)制也比將所有請(qǐng)求發(fā)送到主機(jī)的現(xiàn)有方法更節(jié)省帶寬,因?yàn)楹笳邥?huì)造成更多的流量和額外的延遲。

UIO 與 BI 的結(jié)合實(shí)現(xiàn)了 I/O 一致性模型,可以擴(kuò)展到大量設(shè)備。那些需要緩存內(nèi)存的設(shè)備在需要時(shí)仍可使用 CXL.cache 語義,其他情況下則使用 UIO。這就減少了窺探開銷,也減少了一直進(jìn)入主機(jī)處理器的延遲。BI 的第二個(gè)方面是讓第 2 類設(shè)備擁有一個(gè)窺探過濾器,而不是擁有一個(gè)完整的目錄和調(diào)用現(xiàn)有的偏置流。圖 17(a)演示了這一點(diǎn),在該圖中,如果新請(qǐng)求遇到容量缺失,2 類設(shè)備會(huì)調(diào)用 BI 流程,從其窺探過濾器中驅(qū)逐緩存行。

 88.jpg

圖 17 (a) 現(xiàn)有的偏置-翻轉(zhuǎn)機(jī)制需要完全跟蹤 HDM,因?yàn)樵O(shè)備無法反向窺探主機(jī)。CXL 3.0 的 "反向無效 "可實(shí)現(xiàn)窺探過濾器,從而產(chǎn)生可映射到 HDM 的大容量內(nèi)存,(b)CXL 3.0 的 "反向無效 "流程可用于在多個(gè)主機(jī)之間實(shí)現(xiàn)基于硬件的一致性共享內(nèi)存,每個(gè)主機(jī)都有獨(dú)立的一致性域。

如圖 17(b)所示,BI 機(jī)制還能在多個(gè)主機(jī)間實(shí)現(xiàn)共享和硬件強(qiáng)制的一致性內(nèi)存。在這里,內(nèi)存設(shè)備(GFD/MLD)維護(hù)一個(gè)目錄(或窺探過濾器),以跟蹤一致性共享內(nèi)存中高速緩存行的所有權(quán)。因此,當(dāng)主機(jī) 1 獲得作為共享副本的高速緩存行 X 的所有權(quán)時(shí),它會(huì)將目錄從 "I "狀態(tài)更新為 "S "狀態(tài),主機(jī) 1 為共享者。當(dāng)主機(jī) 3 請(qǐng)求共享狀態(tài)下的同一高速緩存行 X 時(shí),它會(huì)提供數(shù)據(jù)并更新 X 的目錄,以表明主機(jī) 1 和主機(jī) 3 都共享該數(shù)據(jù)。當(dāng)主機(jī) 4 請(qǐng)求獨(dú)占副本時(shí),它會(huì)向主機(jī) H1 和主機(jī) H3 發(fā)出 Back Invalidate(回?zé)o效),等待兩者的響應(yīng),以確保主機(jī) 1 和主機(jī) 3 已將 X 的副本無效,并更新目錄,將 X 標(biāo)記為主機(jī) 4 的 "E",然后將數(shù)據(jù)和所有權(quán)發(fā)送給主機(jī) 4。每個(gè) GFD 可同時(shí)支持多達(dá) 4,096 個(gè)獨(dú)立節(jié)點(diǎn)(MLD 為 32 個(gè))的池式或共享內(nèi)存,因?yàn)槊總€(gè)節(jié)點(diǎn)都無法通過配置空間獨(dú)立發(fā)現(xiàn)。

為支持多個(gè)獨(dú)立主機(jī)共享一致性內(nèi)存,設(shè)備可在內(nèi)存中實(shí)施片上窺探過濾器和/或目錄結(jié)構(gòu)。設(shè)備可使用兩個(gè)位來表示一致性狀態(tài)(無效、共享、獨(dú)占),然后是主機(jī)共享列表。該列表的實(shí)現(xiàn)取決于設(shè)備。例如,對(duì)于無效狀態(tài),列表?xiàng)l目為"不關(guān)心"。對(duì)于獨(dú)占,列表包含獨(dú)占的主機(jī) ID。對(duì)于共享,可以采用位矢量(每個(gè)位代表一個(gè)或一組主機(jī))或列表的組合方式,其中列表可以識(shí)別每個(gè)主機(jī),但最多只能識(shí)別一定數(shù)量的主機(jī),超過這個(gè)數(shù)量的主機(jī)可以粗粒度地表示主機(jī)組。實(shí)施細(xì)節(jié)取決于可用的目錄位數(shù)和可訪問緩存行的主機(jī)數(shù)量。也可以選擇在多個(gè)高速緩存行(如頁面級(jí))中維護(hù)窺探過濾器/目錄。共享內(nèi)存的大小和可共享緩存行的主機(jī)數(shù)量取決于使用模式。例如,大型內(nèi)存應(yīng)用,如超大型數(shù)據(jù)庫、日志、機(jī)器學(xué)習(xí)、鍵值存儲(chǔ)、內(nèi)存分析等。硬件一致性可以擴(kuò)展這些應(yīng)用,因?yàn)樗鼈兇蠖嗍侵蛔x應(yīng)用。在某些情況下,可能需要軟件一致性。CXL3 架構(gòu)還支持域間中斷、使用共享內(nèi)存的 Semaphores、數(shù)據(jù)復(fù)制,以及通過共享內(nèi)存控制器使用特殊地址映射區(qū)域進(jìn)行的消息傳遞,詳情請(qǐng)參見參考文獻(xiàn)。

反向驗(yàn)證在協(xié)議層和鏈路層創(chuàng)建了兩個(gè)額外通道: BISnp 和 BIRsp。與圖 10(b) 中的 CXL 1.1/CXL 2.0 依賴關(guān)系圖相比,圖 18 所示的更新依賴關(guān)系圖中增加了 BISnp(S2M BISnp),這些通道是確保協(xié)議無死鎖所必需的。BIRsp 已預(yù)先分配,因此在依賴關(guān)系圖中,它被合并到圖中的 L3 RSP 中。

55.jpg 

圖 18. 更新后的 CXL 3.0 協(xié)議依賴性與反向驗(yàn)證。

5.4 CXL.cache 設(shè)備擴(kuò)展

在 CXL 3.0 之前,每個(gè)虛擬層次結(jié)構(gòu)只能支持一個(gè) CXL.cache 設(shè)備。為支持更多設(shè)備,報(bào)文中增加了一個(gè) 4 位 ID 空間 "CacheID",使每個(gè)根端口最多可支持 16 個(gè) CXL.cache 設(shè)備。主機(jī)要支持 CXL.cache,就必須擁有窺探過濾器結(jié)構(gòu),以跟蹤設(shè)備可能緩存的每個(gè)地址。主機(jī)中這種跟蹤的大小將限制設(shè)備緩存主機(jī)內(nèi)存的能力,因此主機(jī)中的大小將限制設(shè)備可以緩存多少主機(jī)數(shù)據(jù)。請(qǐng)注意,對(duì)于 2 類設(shè)備,主機(jī)不會(huì)限制設(shè)備緩存自身內(nèi)存的能力。增加 CacheID 后,主機(jī)必須單獨(dú)跟蹤根端口后面的每個(gè)設(shè)備,以避免退化為多播窺探行為。多播窺探功能是可行的,但不能滿足帶寬/性能要求,即設(shè)備應(yīng)很少看到不在設(shè)備緩存中的地址窺探。主機(jī)一致性跟蹤的限制可能會(huì)限制可支持的 CXL.cache 設(shè)備總數(shù)。主機(jī)將在主機(jī)網(wǎng)橋粒度上公布這一限制。軟件可發(fā)現(xiàn)這一功能,并在枚舉 CXL 層次結(jié)構(gòu)時(shí)強(qiáng)制執(zhí)行這一限制。

5.5 端口基礎(chǔ)路由(PBR)和 CXL Fabric 擴(kuò)展

為了將端點(diǎn)(主機(jī)或設(shè)備)和非樹(多路徑)網(wǎng)絡(luò)拓?fù)鋽U(kuò)展到 4,096 個(gè),CXL 3.0 增加了一種新的可選協(xié)議格式,稱為端口基礎(chǔ)路由(PBR)。與 CXL 2.0 的分層路由(第 4.1 節(jié))相比,PBR 的理念是只關(guān)注 PBR 交換機(jī)之間路由信息所需的信息,因此是一種更簡單、更可擴(kuò)展的協(xié)議。例如,分層路由要求交換機(jī)知道虛擬分層和每臺(tái)主機(jī)的地址映射。CXL 3.0 在大多數(shù)端點(diǎn)與第一個(gè)交換機(jī)之間的鏈路中繼續(xù)使用標(biāo)準(zhǔn) CXL 2.0 信息(如圖 12 中的葉子到端點(diǎn)鏈路)。連接設(shè)備或主機(jī)的第一個(gè)交換機(jī)端口被稱為 "邊緣端口",因?yàn)樗跇?biāo)準(zhǔn)報(bào)文(HBR)和 PBR 報(bào)文之間的轉(zhuǎn)換中起著特殊作用。PBR 路由本身用于交換機(jī)間鏈路,如圖 12 中的 Spline 到 Spline 和 Leaf 到 Spline 鏈路)。從軟件角度看,只有 Fabric 管理員需要配置交換機(jī)網(wǎng)絡(luò);在主機(jī)上運(yùn)行的軟件看到的只是一個(gè)以第一個(gè)交換機(jī)端口為終點(diǎn)的平面拓?fù)洹?/p>

PBR 使用 12 位 ID(稱為 PBR-ID (PID))對(duì)端點(diǎn)進(jìn)行尋址。邊緣端口將此標(biāo)識(shí)符添加到報(bào)文中,作為目的 PID(DPID),有時(shí)也作為源 PID(SPID)。PID 的生成是通過使用各種方法將 HBR 報(bào)文轉(zhuǎn)換/解碼為 PBR 報(bào)文完成的。這種轉(zhuǎn)換是無狀態(tài)的,即不需要跟蹤任何未處理的請(qǐng)求。這種轉(zhuǎn)換的例子包括地址到 PID、LD-ID 到 PID/從 PID、CacheID 到 PID/從 PID、總線編號(hào)到 PID/從 PID。對(duì)于從 LD-ID 到 PID 的轉(zhuǎn)換,PID 提供的位數(shù)較少,可通過一個(gè) 16 位的查找表來解決,該查找表以 4 位 LD-ID 為索引,用于確定主機(jī)的 PID。在 "地址轉(zhuǎn) PID "的情況下,這是通過解碼主機(jī)物理地址 (HPA) 和查找 Fabric 地址段表 (FAST) 來實(shí)現(xiàn)的。為了提高可擴(kuò)展性,F(xiàn)AST 為每個(gè) PID 提供了一個(gè) 2 次冪大小的單一內(nèi)存范圍,這樣就可以直接使用可選地址位來查找擁有 HPA 區(qū)域的 PID。由于 HBR 信息與 PBR 信息之間的轉(zhuǎn)換是由邊緣端口透明執(zhí)行的,因此主機(jī)和設(shè)備可以在不直接感知 PBR 的情況下使用 PBR。此外,由于地址解碼已在邊緣端口完成,內(nèi)部 PBR 交換機(jī)(如圖 12 中的 Spline 交換機(jī))可以純粹根據(jù) DPID 路由報(bào)文,而無需執(zhí)行地址解碼。如果不進(jìn)行這種簡化,多個(gè)虛擬層次結(jié)構(gòu)共享的中間鏈路就需要為共享鏈路的所有虛擬層次結(jié)構(gòu)(VH)提供完整的地址解碼功能,從而限制了 VH 的數(shù)量。因此,PBR 可以提高可擴(kuò)展性,減少內(nèi)部交換機(jī)的延遲和成本。

PBR 信息的路由由 Fabric Manager (FM) 集中控制(第 4.2 節(jié))。FM 為每個(gè) PBR 交換機(jī)配置一個(gè)以 12 位 DPID 為索引的查找表。這些表將 DPID 映射到交換機(jī)的出站物理端口。為實(shí)現(xiàn)多路徑路由,查找表可提供多個(gè)目標(biāo)物理端口,在這些端口上,無序流量可根據(jù)負(fù)載情況動(dòng)態(tài)路由到目標(biāo)端口。對(duì)于 CXL.io,UIO VC 是完全無序的,可以通過流量到達(dá)的 VC 輕松識(shí)別。CXL.cache-mem主要是無序的,但有一些有限的排序例外規(guī)則,用于解決沖突(例如:在CXL.Cache Snoops中,將GO推送到相同的地址);通過確保排序信息遵循相同的路徑,適當(dāng)?shù)亟诲e(cuò),即使有多條路徑,也能輕松執(zhí)行這些例外規(guī)則。例如,CXL.mem 非數(shù)據(jù)響應(yīng)通道中的標(biāo)簽位可用于交錯(cuò),因?yàn)橹挥芯哂邢嗤瑯?biāo)簽的報(bào)文才需要排序。傳統(tǒng) CXL.io 等有序流量的靈活性較低,因?yàn)楸仨毷冀K選擇相同的單一路徑,這符合所有鏈路的樹狀拓?fù)浣Y(jié)構(gòu)。當(dāng) FM 發(fā)現(xiàn)鏈路或交換機(jī)故障時(shí),它還可以重新配置路由表,并將新的查找表重新分配給 PBR 交換機(jī)。交換機(jī)間鏈路(ISL)攜帶 PBR 信息格式。這些鏈路在性質(zhì)上也是對(duì)稱的,因?yàn)樗鼈兛梢栽谕绘溌飞弦韵喾吹姆较虺休d來自不同主機(jī)的上行和下行流量。具體來說,非 PBR 端口支持 6 個(gè)上行 CXL 通道和 6 個(gè)下行 CXL 通道。PBR 端口必須能分別承載 12 個(gè)上行和下行 CXL 通道。支持 ISL 要求底層高速緩存和內(nèi)存鏈路層提供一組完全對(duì)稱的通道,每個(gè)通道都有自己的流量控制信用。這與設(shè)備和主機(jī)鏈路不同,它們要么是上游鏈路,要么是下游鏈路(主機(jī)到交換機(jī)是下游鏈路,設(shè)備到交換機(jī)是上游鏈路)、

內(nèi)存設(shè)備也可以直接參與 PBR,而不是依賴邊緣端口。這種端點(diǎn)被稱為全局 Fabric 附加內(nèi)存設(shè)備(GFD)。在 CXL 2.0 多邏輯設(shè)備(MLD)最多只能由 16 臺(tái)主機(jī)共享的情況下,GFD 允許在 CXL Fabric 中的所有 4095 個(gè)其他代理之間共享/池化高擴(kuò)展性內(nèi)存設(shè)備。

    6 CXL 實(shí)施情況調(diào)查    

CXL 生態(tài)系統(tǒng)需要 CPU 和設(shè)備的支持。雖然 CXL 3.0 產(chǎn)品預(yù)計(jì)將在幾年內(nèi)推出,但 CXL 1.1 和 CXL 2.0 已部署在多個(gè)商用產(chǎn)品中。英特爾從藍(lán)寶石激流(SPR)CPU 和 Agilex7 FPGA 開始支持 CXL,支持所有三種協(xié)議。AMD 在 Genoa 和 Bergamo CPU 中支持 CXL,并宣布支持 SmartNIC 設(shè)備;ARM 宣布在 V2、N2 和 E2 系列 CPU 中支持 CXL 2.0。

在設(shè)備方面,Synopsys、Cadence、PLDA/Rambus、Mobiveil 等 IP 供應(yīng)商已經(jīng)展示了與 SPR CPU 的互操作性。三星制造了一個(gè) CXL 1.1 內(nèi)存擴(kuò)展設(shè)備,并公開分享了其基準(zhǔn)測試結(jié)果。Montage、SK Hynix、Microchip、Micron和 Astera Labs發(fā)布了 CXL Type 3 存儲(chǔ)器設(shè)備。美光公司已經(jīng)推出了 CXL 1.1 近內(nèi)存計(jì)算設(shè)備的原型。學(xué)術(shù)研究也獨(dú)立復(fù)制了 SPR上的結(jié)果,并實(shí)現(xiàn)了定制的 CXL 硬件和軟件原型。

在接下來的章節(jié)中,我們將報(bào)告 CXL 實(shí)現(xiàn)的測量結(jié)果。我們?cè)诙鄠€(gè)設(shè)備供應(yīng)商的英特爾和 AMD CPU 上測試了 CXL.mem。不過,由于公開的性能數(shù)據(jù)主要針對(duì)英特爾 CPU,因此我們的調(diào)查主要側(cè)重于英特爾實(shí)現(xiàn)的性能,以此作為 CXL 實(shí)現(xiàn)的代表性性能指標(biāo)。

圖 19 是具有代表性的 CXL IP 微體系結(jié)構(gòu),其中包括 PIPE、LPIF、CPI和 SFI等用于 CXL 端點(diǎn)和 SPR 等主機(jī)處理器的行業(yè)標(biāo)準(zhǔn)接口。圖 10(a)中的內(nèi)存大小、高速緩存層次結(jié)構(gòu)和高速緩存大小只是提供了一個(gè)比例,而不是精確的大小。最后一級(jí)高速緩存(LLC)包括層次結(jié)構(gòu)中的低級(jí)高速緩存以及與 CPU 內(nèi)部 PCIe/ CXL.io 堆棧相關(guān)的寫高速緩存。LLC 還覆蓋所有 CXL 設(shè)備的緩存。窺探過濾器為主代理提供了何時(shí)窺探特定 CXL 設(shè)備的信息。無論是與 CPU 本地連接的內(nèi)存(如 DDR),還是屬于映射到系統(tǒng)地址空間的 CXL 設(shè)備的內(nèi)存,都屬于主代理的權(quán)限范圍(圖 10(a) 中用藍(lán)色和綠色表示)。

 77.jpg

圖 19. 具有代表性的微體系結(jié)構(gòu)與 CXL 微體系結(jié)構(gòu)的典型延遲[8]。

6.1 CXL 1.1 實(shí)現(xiàn)的實(shí)測延遲

從高層來看,CXL 延遲由協(xié)議部分和隊(duì)列部分組成,隊(duì)列部分取決于負(fù)載。我們首先關(guān)注空閑系統(tǒng)中的 CXL 協(xié)議延遲。圖 19 顯示了不同 CXL 塊在英特爾 SPR 上的延遲明細(xì)。PHY 模塊顯示了負(fù)責(zé)數(shù)據(jù)序列化/反序列化的模擬電路。它通過 PIPE 的并行接口連接到 PHY 邏輯塊(32 位,每列 1 GHz,32.0 GT/s 鏈路)。物理層邏輯模塊還執(zhí)行鏈路訓(xùn)練、均衡、(去)擾碼、預(yù)編碼、線路反轉(zhuǎn)、鏈路寬度衰減、極性反轉(zhuǎn)、時(shí)鐘域交叉、時(shí)鐘補(bǔ)償、去歪斜和物理層成幀。

LPIF 芯片到芯片接口將物理層邏輯連接到 Arb/Mux 模塊,再從 Arb/Mux 模塊連接到多個(gè)鏈路層。Arb/Mux 塊在兩個(gè)堆棧(CXL.io 和 CXL.cache+mem;見第 3.2 節(jié))之間執(zhí)行仲裁和多路復(fù)用,并將物理層虛擬化為獨(dú)立的鏈路層堆棧,以進(jìn)行電源管理。

鏈路層(LL)(如圖 19 所示)執(zhí)行 CRC 校驗(yàn)、管理積分和處理鏈路層重試,而事務(wù)層(TL)則執(zhí)行 Flit 打包/拆包、將事務(wù)存儲(chǔ)在適當(dāng)?shù)年?duì)列中并處理事務(wù)。在 CXL 3.0 實(shí)現(xiàn)中,當(dāng)協(xié)商 256 字節(jié)或 128 字節(jié)延遲優(yōu)化 Flit 時(shí),邏輯物理層將執(zhí)行所有堆棧通用的 CRC 和重放功能,而每個(gè)堆棧的鏈路層將繼續(xù)提供相同的功能,但僅限于該堆棧的 68 字節(jié) Flit 模式,以實(shí)現(xiàn)向后兼容性。CXL.io/PCIe 事務(wù)層對(duì)事務(wù)進(jìn)行排隊(duì)、處理并執(zhí)行生產(chǎn)者-消費(fèi)者排序。

圖 19 適用于 CXL.cache+mem 路徑,包括發(fā)送和接收路徑。與標(biāo)準(zhǔn) PCIe 物理層邏輯實(shí)現(xiàn)相比,多種優(yōu)化措施改善了延遲。這些優(yōu)化包括繞過 128 b/130 b 編碼(如果在鏈路培訓(xùn)期間協(xié)商好),繞過支持降級(jí)模式所需的邏輯和串行化觸發(fā)器(如果一個(gè)或多個(gè)車道出現(xiàn)問題,或者如果為電源管理而調(diào)用),如果車道到車道偏移小于內(nèi)部 PHY 邏輯時(shí)鐘周期的一半,則繞過糾偏緩沖器,采用預(yù)測策略處理彈性緩沖器中的條目(而不是等待每個(gè)條目的時(shí)鐘域同步握手),等等。PHY 和 PHY 邏輯延遲的不同取決于部署的是通用參考時(shí)鐘還是獨(dú)立參考時(shí)鐘。如果組件都在單個(gè)機(jī)箱內(nèi),那么我們期望使用一個(gè)延遲為 15 納秒的通用參考時(shí)鐘。但是,如果鏈路跨機(jī)箱連接,那么我們預(yù)計(jì)獨(dú)立參考時(shí)鐘會(huì)因時(shí)鐘交叉和同步 Hdr 開銷而造成 4 納秒的延遲損失。

在通用參考時(shí)鐘模式下,從 SERDES 引腳到內(nèi)部應(yīng)用層(CPI 或等效接口)再返回的總延遲為 21 納秒,在獨(dú)立參考時(shí)鐘模式下為 25 納秒。一家 IP 供應(yīng)商也報(bào)告了 25 ns 的往返延遲。由于各種區(qū)塊的位置、工藝技術(shù)和物理層設(shè)計(jì)類型造成的傳播延遲等因素,預(yù)計(jì)在不同的實(shí)現(xiàn)中會(huì)出現(xiàn)微小的延遲差異。例如,與基于 DFE/CTLE(決策反饋均衡器/連續(xù)時(shí)間線性均衡器)的接收器設(shè)計(jì)相比,現(xiàn)有的基于 ADC(模數(shù)轉(zhuǎn)換器)的 PHY 可能會(huì)增加約 5 ns 的延遲。

CXL 端口的 21-25 納秒往返延遲會(huì)在 CXL.cache+mem 設(shè)備訪問時(shí)發(fā)生兩次,一次在 CPU 上,一次在設(shè)備上。此外,我們估計(jì)使用重定時(shí)器的往返飛行時(shí)間為 15 納秒。這樣,通過 CXL 鏈路訪問內(nèi)存的端到端延遲加法為 57 納秒。因此,即使存在設(shè)計(jì)上的差異,CXL 規(guī)范中針對(duì) DRAM/ HBM 存儲(chǔ)器的 CXL.mem 存取的引腳到引腳延遲目標(biāo)為 80 納秒,窺探的響應(yīng)時(shí)間為 50 納秒。這種加法器與通過 CPU-CPU 緩存相干鏈路進(jìn)行的內(nèi)存訪問相當(dāng),而且完全符合 CPU 的延遲工作點(diǎn) 。對(duì)于 CXL.io,與 PCIe 中一樣,在 Xeon 中從引腳到引腳的往返延遲為 275 ns(LLC 未命中和 IOTLB 命中)。

我們進(jìn)行的端到端測量涵蓋了包括隊(duì)列在內(nèi)的所有 CXL 開銷。由于隊(duì)列延遲是負(fù)載和系統(tǒng)容量的函數(shù),圖 20 顯示了后臺(tái)內(nèi)存帶寬負(fù)載增加時(shí)的平均內(nèi)存訪問延遲。這項(xiàng)測量是在英特爾 EMR 系統(tǒng)上進(jìn)行的,該系統(tǒng)配備了兩個(gè)試生產(chǎn)的 Astera Labs Leo CXL 智能內(nèi)存控制器,每個(gè)控制器有 x16 個(gè) CXL 通道。所有通道都裝有單個(gè) 64 GB DDR5-5600 DIMM。這里顯示的工作負(fù)載組合包括每寫兩次讀?。?R1W)。我們首先比較了 CXL 與本地 DDR5 和跨插槽(UPI)DDR5 訪問的延遲,在這三種情況下,我們都配置了四個(gè)內(nèi)存通道(圖 20(a))。低負(fù)載時(shí),CXL.mem(藍(lán)線)的延遲約為本地 DDR5 訪問(橙線)的 200%-220%,與跨 UPI 訪問遠(yuǎn)程 DDR5 的延遲相當(dāng)(圖 20(a)中的綠線)。此外,值得注意的是,本地 DDR5 和 CXL 上連接的 DDR5 的延遲曲線斜率非常相似。來自利奧 CXL 智能內(nèi)存控制器的 x32 組合 CXL 通道的峰值內(nèi)存帶寬最大約為 137 GB/s,充分利用了 CXL 通道,并與四個(gè)本地 DDR5 通道相匹配。CXL 實(shí)現(xiàn)的帶寬約為通過 UPI 訪問遠(yuǎn)程 DDR5 的 1.5 倍。

 99.jpg

圖 20. 相同數(shù)量的四個(gè) DDR 通道(a)以及典型通道配置中的本地、CXL 和交錯(cuò)內(nèi)存(b)的內(nèi)存訪問延遲與帶寬負(fù)載的函數(shù)關(guān)系。圖中線條采用局部回歸法[82]進(jìn)行平滑處理。

圖 20(b)顯示了四通道的 CXL(藍(lán)線)、八通道的本地 DDR5(橙線)以及本地 DDR5 和 CXL 內(nèi)存交錯(cuò)訪問的配置(深灰色線)。與僅使用本地 DDR5 相比,交錯(cuò)使用本地和 CXL 可提供 1.5 倍的峰值內(nèi)存帶寬,有效地結(jié)合了 CXL 和本地 DDR5 帶寬。在帶寬負(fù)載超過 200 GB/s 時(shí),與僅使用本地 DDR5 相比,交錯(cuò)可顯著降低負(fù)載和隊(duì)列。這表明,交錯(cuò)使用本地內(nèi)存和 CXL 內(nèi)存對(duì)帶寬密集型應(yīng)用很有吸引力。對(duì)于延遲敏感型應(yīng)用,另一種方法是硬件分層,如英特爾扁平內(nèi)存模式。

6.2 采用 CXL 3.0 及更高版本的大型系統(tǒng)拓?fù)涞念A(yù)計(jì)延遲

采用 CXL 的大型拓?fù)浣Y(jié)構(gòu)可通過交換機(jī)以及共享內(nèi)存控制器(SMC)等設(shè)備實(shí)現(xiàn),共享內(nèi)存控制器是 CXL 交換機(jī)與多個(gè)內(nèi)存控制器的組合(圖 16(a)),具有多域功能和 PBR 路由功能,可用于擴(kuò)展。CXL 交換機(jī)與往返的延遲加法器預(yù)計(jì)為 2x21-25+10 ns 內(nèi)部 arb/look-up+10 ns 線上飛行時(shí)間 = 62-70 ns。表 2 總結(jié)了不同訪問/系統(tǒng)配置下 CXL.cache 和 CXL.mem 的各種延遲。

 000.jpg

表 2. 各種拓?fù)浣Y(jié)構(gòu)下 CXL.cache 和 CXL.mem 的估計(jì)延遲 

 

6.3 可實(shí)現(xiàn)的數(shù)據(jù)帶寬

x16 CXL 鏈路在 32.0 (64.0) GT/s 數(shù)據(jù)速率下,每個(gè)方向的原始帶寬為 64 (128) GB/s。但是,除了實(shí)際有效載荷(包括報(bào)頭、CRC 和協(xié)議 ID/Flit HDR)外,鏈路傳輸數(shù)據(jù)還會(huì)產(chǎn)生協(xié)議開銷(見第 3.2 節(jié))。此外,不同的工作負(fù)載會(huì)產(chǎn)生不同的請(qǐng)求和響應(yīng)模式,對(duì) Flit 插槽的占用也不盡相同。因此,可實(shí)現(xiàn)的數(shù)據(jù)帶寬是由工作負(fù)載、協(xié)議和底層 IP 之間的多層交互決定的。我們首先討論三種協(xié)議(CXL.io、CXL.cache 和 CXL.mem)的共同開銷,然后討論常見流量組合下的可實(shí)現(xiàn)數(shù)據(jù)帶寬。

對(duì)于 68 字節(jié) Flit 模式下的 CXL.io,假設(shè) DLLP 開銷為 2%,在同步 Hdr 開啟或關(guān)閉的情況下,鏈路效率分別為 0.906 和 0.92。請(qǐng)注意,本地 PCIe 的效率要高出 6%,因?yàn)?PCIe 不包含 Flit 開銷。對(duì)于使用 256 B 和 128 B LO Flits 的 CXL.io,F(xiàn)lit 開銷為 6 B(Hdr、DLLP)+ 6 B(FEC)+ 8 B(256 B)/12 B(128 B LO)(用于 CRC)。256 B Flit 的總開銷為 20 B,128 B LO Flit 的總開銷為 24 B,鏈路效率分別為 0.92 和 0.91。

68 字節(jié) Flit 模式(CXL 1.1-2.0)下的 CXL.cache+mem 有三個(gè)常見開銷: 128/130 表示同步 Hdr 開銷(除非支持同步 Hdr 旁路),374/375 表示公共時(shí)鐘 SKP 有序集造成的帶寬損耗(其他模式更高),64/68 表示 Flit 開銷(協(xié)議 ID 和 Flit CRC 各 2 字節(jié))。因此,同步 Hdr 開啟時(shí)的鏈路效率為 0.924,同步 Hdr 關(guān)閉時(shí)的鏈路效率為 0.939。這包括積分和鏈路可靠性機(jī)制,如 Ack/Nak(Ack:確認(rèn),Nak:負(fù)確認(rèn))。

對(duì)于 CXL.cache 和 CXL.mem 的 256 字節(jié)和 128 字節(jié) Latency-Optimized (128 B LO) Flits,整體鏈路效率為 15/16 (=0.938),因?yàn)橛?15 個(gè)時(shí)隙,一個(gè)等效時(shí)隙用于 FEC/ CRC/ Hdr 等。CXL.cache 和 CXL.mem 的插槽數(shù)量相差無幾,即使考慮到可擴(kuò)展性所需的額外位數(shù)。因此,正如下文所述,三種 Flit 類型的帶寬效率往往相似。

在 CXL.io 和 PCIe 中,有三種常見的流量組合可作為性能基準(zhǔn):100% 讀取、100% 寫入和 50-50 讀寫。表 3 根據(jù)參考文獻(xiàn)中描述的方法,總結(jié)了三種流量組合中每種流量大小、每種 Flit 類型的 CXL.io 帶寬。典型的工作負(fù)載包括小型有效載荷(4 B-32 B)和中大型有效載荷(64 B 及以上)的混合。盡管商用系統(tǒng)為客戶端 CPU 部署的最大有效載荷大小為 128 B(或 32 雙字,又稱 DW),為服務(wù)器 CPU 部署的最大有效載荷大小為 256 B/512 B(64/128 DW),但為了完整起見,我們還是提供了最大 4 KB(1,024 DW)有效載荷大小的預(yù)測值。

 qq.jpg

表 3. CXL.io 以 GB/s 為單位的可實(shí)現(xiàn)帶寬,適用于不同流量混合和有效載荷大小的 CXL 2.0 68 B Flits 和 CXL 3.0 256 B 和 128 B Flits x16 鏈路,速度為 32 GT/s

CXL.cache: 設(shè)備使用 D2H 中的 RdCurr 從內(nèi)存讀取高速緩存行時(shí),會(huì)產(chǎn)生一個(gè) H2D Data_Hdr 和 H2D Data。每個(gè) H2D Data_Hdr 為 24 位,一個(gè)插槽中可容納 4 個(gè),即一個(gè)插槽中可傳輸 4 個(gè)高速緩存行。每個(gè) H2D 數(shù)據(jù)為 64 字節(jié),因此需要 4 個(gè)插槽。因此,x16 CXL 設(shè)備從處理器讀取 68 字節(jié) Flit 格式的數(shù)據(jù)時(shí),可獲得 (16/17) *0.94*64 GB/s = 56.6 GB/s 的帶寬。對(duì)于 256 字節(jié)和 128 字節(jié)延遲優(yōu)化的 Flits,數(shù)據(jù)是瓶頸,因?yàn)槊總€(gè) H 插槽最多可以有 4 個(gè) H2D Data_Hdr。對(duì)于 256 字節(jié)的 Flit,我們只有 14 個(gè)插槽可用于數(shù)據(jù),可容納 3.5 個(gè)高速緩存行。因此,256 字節(jié) Flit 的可實(shí)現(xiàn)帶寬為:(14/16) *128=112 GB/s;128 字節(jié)延遲優(yōu)化 Flit 的可實(shí)現(xiàn)帶寬為:(13/16) *128=104 GB/s。

對(duì)于寫入,設(shè)備會(huì)發(fā)出 D2H 請(qǐng)求 (RdOwn)。這將產(chǎn)生一個(gè)帶數(shù)據(jù)的 H2D 響應(yīng)。然后,設(shè)備發(fā)出 D2H Dirty Evict,獲得 H2D Resp (Wr Pull),從而執(zhí)行 D2H Mem Wr。這樣,D2H 方向上每一行緩存數(shù)據(jù)就會(huì)產(chǎn)生 3 個(gè) Hdr(D2H Req RdOwn、D2H Dirty Evict + Data Hdr)。對(duì)于 68 字節(jié)的 Flit,3 個(gè) Hdrs 占用兩個(gè)插槽(如 D2H Req RdOwn+ Data Hdr、D2H Dirty Evict),因此每個(gè)方向的速度為 (4/6) *0.94*64 GB/s = 40 GB/s。對(duì)于 256 字節(jié)和 128 字節(jié)延遲優(yōu)化的 Flit 格式,D2H 方向有 4 個(gè) G 插槽和 2.25 個(gè)任意插槽(Req 和 Evict Dirty 插槽各一個(gè),Data_Hdr 插槽為 ?,因?yàn)槿我獠宀壑锌梢杂?4 個(gè)),因此可實(shí)現(xiàn)的數(shù)據(jù)帶寬為(4 個(gè)數(shù)據(jù)插槽/6.5 個(gè)總插槽)*(15/16)*128 = 73.8 GB/s。

CXL.mem: 在 M2S(第 3.5 節(jié))中,CPU 的內(nèi)存讀取作為 MemRd 發(fā)送。對(duì)于 3 型設(shè)備,其響應(yīng)包括 S2M DRS Hdr (MemData) 和 4 個(gè)數(shù)據(jù)插槽 (64B)。如果設(shè)備是 2 類設(shè)備,則需要額外的 S2M NDR 以完成 (Cmp)。對(duì)于寫入,CPU 發(fā)送 M2S Req (MemWrite) 和 4 個(gè)數(shù)據(jù)插槽,生成 S2M NDR 作為 Cmp。

實(shí)施過程中,CPU 會(huì)嘗試在一個(gè)插槽中打包多個(gè)標(biāo)頭,以最大限度地提高效率。CXL 規(guī)范允許在一個(gè)插槽中對(duì)各種標(biāo)頭進(jìn)行不同的打包排列,這些排列使用所謂的 H* 符號(hào)表示。

有幾種具有代表性的工作負(fù)載可用于評(píng)估內(nèi)存帶寬性能。100% 讀取,表示為 1R0W;100% 寫入,表示為 1R1W,因?yàn)槊總€(gè)高速緩存行的寫入都會(huì)在更新前讀取內(nèi)存內(nèi)容;等量讀寫,表示每寫入一個(gè)高速緩存行就會(huì)讀取兩個(gè)高速緩存行。表 4 總結(jié)了不同流量組合下 CXL.mem 的可實(shí)現(xiàn)帶寬。詳細(xì)推導(dǎo)見參考文獻(xiàn)。當(dāng)只有讀取而沒有寫入時(shí),M2S 方向上沒有真正的數(shù)據(jù)傳輸(只有讀取請(qǐng)求)。因此,該方向的數(shù)據(jù)帶寬為 0,而 S2M 方向則主要是數(shù)據(jù)(2DRS 有 1 個(gè)數(shù)據(jù)頭插槽,2 個(gè)高速緩存行有 8 個(gè)數(shù)據(jù)插槽)。因此,數(shù)據(jù)效率為:鏈路效率 0.939 x 插槽效率 8/9 x 64 GB/s 原始帶寬 = 53.5 GB/s。其他條目也采用類似方法,詳見參考文獻(xiàn)。SPR Flit 包裝邏輯中的調(diào)度程序遵循 CXL.mem 的貪婪算法,優(yōu)先處理 Flit 中第一個(gè) 16 B 插槽的 H3,然后是 H5,如果計(jì)劃發(fā)送的數(shù)據(jù)少于 64 字節(jié),則在其余 Flit 中填充數(shù)據(jù)。如果計(jì)劃發(fā)送 64 字節(jié)或更多數(shù)據(jù),則會(huì)調(diào)度一個(gè)全數(shù)據(jù) Flit。采用這種方法后,68-B Flit 模式的測量帶寬與表 4 中的數(shù)字非常接近。

 ww.jpg

表 4. 對(duì)于速度為 32 GT/s 的 x16 鏈路,CXL.mem 在 CXL 2.0 68 B Flits 和 CXL 3.0 256 B 和 128 B Flits 不同流量混合情況下的可實(shí)現(xiàn)帶寬(GB/s)。

對(duì)于 256 字節(jié)標(biāo)準(zhǔn)或 128 字節(jié)延遲優(yōu)化 Flit,設(shè)計(jì)人員需要考慮額外的限制。例如,H/HS 插槽可能只用于數(shù)據(jù)頭。調(diào)度將確保在有數(shù)據(jù)(或報(bào)頭)要發(fā)送時(shí),G 槽不會(huì)空著。因此,先于數(shù)據(jù)發(fā)送的報(bào)頭將被優(yōu)先考慮,并擇機(jī)放置在 H/HS 插槽中,同時(shí)確保調(diào)度的數(shù)據(jù)不超過 5 個(gè)高速緩存行。我們還確保其他報(bào)頭向前推進(jìn)。

利用 CXL 3.0中引入的 UIO/BI 流量,可以繞過主機(jī)處理器,使用 CXL.io UIO 流量在設(shè)備間直接進(jìn)行訪問,既可用于 HDM 訪問,也可用于不需要緩存的域間消息。由于 I/O 設(shè)備和內(nèi)核通常不會(huì)同時(shí)訪問相同的數(shù)據(jù),因此絕大多數(shù)情況下都不會(huì)調(diào)用 BI-Snp 機(jī)制來執(zhí)行一致性。這有助于提高鏈路效率,緩解主機(jī)-處理器鏈路的擁塞問題。在表 5 的分析中,即使在 100% 的訪問都會(huì)導(dǎo)致 BI-Snp 的病理情況下(表 1b 中的 x =1.0 情況),該機(jī)制的效率提升也非常顯著。這種從主機(jī)和設(shè)備同時(shí)進(jìn)行的訪問可能發(fā)生在用于同步的控制數(shù)據(jù)結(jié)構(gòu)上。通常情況下,我們會(huì)將此類數(shù)據(jù)結(jié)構(gòu)置于主機(jī)內(nèi)存中。不過,即使 100% 的訪問都會(huì)導(dǎo)致 BI-Snp,UIO/BI 也比跨鏈路的多緩存行傳輸要好。

 ee.jpg

表 5. 反向驗(yàn)證(BI)和無序 IO(UIO)流的鏈接效率

    7 討論    

我們將討論 CXL 對(duì)計(jì)算領(lǐng)域的四種影響,然后概述一系列初步的未來發(fā)展方向。

7.1 對(duì)計(jì)算領(lǐng)域的影響

影響 1:CXL 對(duì)設(shè)備的網(wǎng)絡(luò)效應(yīng)。與 PCIe 相比,CXL 顯著擴(kuò)展了使用模式和功能,例如,延遲更低、池化和硬件一致性。這些優(yōu)勢促使 I/O 設(shè)備采用 CXL。最初,這可能最適用于加速器和內(nèi)存/存儲(chǔ)設(shè)備,因?yàn)镃XL.cache和CXL.mem可帶來巨大的性能提升,而CXL池可節(jié)省總體擁有成本。最終,CXL 的采用可能會(huì)產(chǎn)生網(wǎng)絡(luò)效應(yīng),網(wǎng)絡(luò)接口等其他 IO 設(shè)備必須提供 CXL,因?yàn)?CXL 將成為通用訪問機(jī)制。同樣,近內(nèi)存或內(nèi)存處理系統(tǒng)也可能采用 CXL,因?yàn)?CXL 對(duì)高速緩存一致性的強(qiáng)大支持大大簡化了編程模型。

影響 2:內(nèi)存向封裝內(nèi)并行總線和封裝外 CXL 遷移。與本地連接內(nèi)存(DDR)相比,CXL 具有基本的擴(kuò)展和效率優(yōu)勢。CXL 的每引腳帶寬高出 8 倍,容量也更大,因此具有顯著的可擴(kuò)展性優(yōu)勢。內(nèi)存池和異構(gòu)內(nèi)存介質(zhì)使 CXL 具有成本優(yōu)勢。CXL 還有助于散熱,因?yàn)榕c DDR 相比,它能實(shí)現(xiàn)更長、更靈活的主板布線。這些優(yōu)勢是以高于 DDR 的空閑延遲(通常是 DDR 延遲的兩倍)為代價(jià)的。在考慮加載延遲時(shí),CXL 因其帶寬優(yōu)勢可能比 DDR 性能更好,而封裝內(nèi)內(nèi)存的性能將明顯優(yōu)于兩者。一個(gè)自然的預(yù)期是,將有更多內(nèi)存遷移到 CXL 和封裝內(nèi)存。最終,CXL 將成為 CPU 和加速器的唯一外部內(nèi)存連接點(diǎn)。

影響 3:CXL 將發(fā)展成為機(jī)架或集群級(jí)互連。與當(dāng)今基于以太網(wǎng)和 InfiniBand 的數(shù)據(jù)中心網(wǎng)絡(luò)相比,CXL 可將延遲降低一個(gè)數(shù)量級(jí)。此外,CXL 的連貫內(nèi)存共享和細(xì)粒度同步可顯著提高分布式系統(tǒng)的性能,適用于大型機(jī)器學(xué)習(xí)模型和數(shù)據(jù)庫等關(guān)鍵工作負(fù)載。不過,CXL 需要專用布線,對(duì)電纜長度、適配器和重定時(shí)器的使用等有嚴(yán)格要求。這導(dǎo)致成本大大增加,靈活性也比現(xiàn)在的數(shù)據(jù)中心網(wǎng)絡(luò)低。因此,CXL 有可能部署在較小的范圍內(nèi),如機(jī)架內(nèi)或跨幾個(gè)機(jī)架(集群或 pod)。例如,當(dāng)前的財(cái)務(wù)模型指出,子機(jī)架 CXL 部署是總體擁有成本的甜蜜點(diǎn)。隨著標(biāo)準(zhǔn)化帶來的成本改善,CXL 的應(yīng)用范圍可能會(huì)擴(kuò)大,但 CXL 不太可能取代以太網(wǎng)成為整個(gè)數(shù)據(jù)中心的網(wǎng)絡(luò)標(biāo)準(zhǔn)。

影響 4:CXL 將實(shí)現(xiàn)高度可組合系統(tǒng)。可組合性意味著可在運(yùn)行時(shí)動(dòng)態(tài)組裝組件和資源,并將其分配給工作負(fù)載或虛擬機(jī)。我們預(yù)計(jì),內(nèi)存設(shè)備和 IO 設(shè)備(如網(wǎng)卡、加速器和存儲(chǔ)設(shè)備)都將發(fā)展出多主機(jī)功能,允許通過 CXL 將其容量的一部分動(dòng)態(tài)分配給各個(gè)主機(jī)。由于多路復(fù)用機(jī)會(huì)增加,聚合和池化設(shè)備可顯著提高資源利用率,從而降低成本。這種設(shè)計(jì)還有利于通過共享內(nèi)存、消息傳遞和 CXL 點(diǎn)對(duì)點(diǎn)通信加速分布式系統(tǒng)。不過,可組合系統(tǒng)仍有別于將通過 CXL 連接的所有資源視為一個(gè)單一的大系統(tǒng)。工作負(fù)載仍然傾向于本地化,并盡可能少地跨越 CXL 鏈接,以最大限度地減少一致性流量和任何故障的爆炸半徑。

7.2 未來方向

CXL 開啟了計(jì)算機(jī)科學(xué)與工程領(lǐng)域的研究方向。在計(jì)算機(jī)體系結(jié)構(gòu)中,CXL 為新內(nèi)存控制器功能的原型設(shè)計(jì)和部署開辟了道路,例如自適應(yīng) DRAM 刷新以節(jié)省功耗和提高性能,低成本提高可靠性,以及減少內(nèi)存浪費(fèi)。外部存儲(chǔ)器控制器的發(fā)展可以獨(dú)立于主 CPU,而且成本較低,有利于加快迭代和定制。研究還可探討對(duì) CPU 架構(gòu)的影響。例如,隨著更高的內(nèi)存延遲和更多的飛行高速緩存線,人們可能會(huì)期待不同的預(yù)取和緩沖區(qū)大小策略,以及對(duì)減少內(nèi)存訪問延遲的更大興趣。另一個(gè)挑戰(zhàn)可能是延遲命中的影響,這需要更嚴(yán)格的模擬和建模以及不同的高速緩存管理策略。

在計(jì)算機(jī)系統(tǒng)中,CXL 內(nèi)存池將引發(fā)本地和分布式內(nèi)存管理的變革。例如,面對(duì)來自遠(yuǎn)程主機(jī)的內(nèi)存壓力,我們需要能確定工作負(fù)載優(yōu)先級(jí)并保證性能的機(jī)制。我們可能還需要系統(tǒng)級(jí)方法來緩解分布式內(nèi)存結(jié)構(gòu)中的擁塞和故障。例如,CXL 標(biāo)準(zhǔn)中的 QoS 目前僅限于 CXL.mem,無法解決結(jié)構(gòu)擁塞問題。工作負(fù)載調(diào)度也需要發(fā)展,以支持可組合性,與現(xiàn)有的數(shù)據(jù)中心設(shè)計(jì)相比,設(shè)計(jì)空間大幅擴(kuò)大,位置定義也有所不同。CXL 規(guī)范需要不斷發(fā)展,以提供跨其他協(xié)議的 QoS,同時(shí)處理 Fabric 擁塞,并在事務(wù)級(jí)支持動(dòng)態(tài)多路徑,以實(shí)現(xiàn) QoS 和故障轉(zhuǎn)移。

在計(jì)算機(jī)工程領(lǐng)域,研發(fā)工作需要繼續(xù)降低 CXL 內(nèi)存、加速器和交換機(jī)的延遲,以擴(kuò)大 CXL 的適用性?,F(xiàn)在有很多機(jī)會(huì),包括迭代工程 CXL 構(gòu)建模塊、利用工藝進(jìn)步(第 6.1 節(jié))和更好的打包算法(第 6.3 節(jié))。生態(tài)系統(tǒng)還需要制定嚴(yán)格的方法來控制誤差和管理 CXL 增加的爆炸半徑。使用負(fù)載存儲(chǔ)語義處理故障和擁塞熱點(diǎn)與網(wǎng)絡(luò)應(yīng)用有著不同的限制,后者可以處理丟失的數(shù)據(jù)包以及完全失序的數(shù)據(jù)包交付。最后,CXL 可以進(jìn)一步增強(qiáng)和部署,以擴(kuò)展到多個(gè)機(jī)架,并通過動(dòng)態(tài)故障切換和更細(xì)粒度的 QoS 增強(qiáng)功能為多個(gè)應(yīng)用提供高可靠性和低延遲的負(fù)載存儲(chǔ)訪問,這些功能將納入未來的規(guī)范修訂中。通過通用片式互連快車(UCIe)重定時(shí)器實(shí)現(xiàn)的協(xié)同封裝光學(xué)技術(shù),我們有望實(shí)現(xiàn)在數(shù)據(jù)中心構(gòu)建從機(jī)架到 pod 的可組合和可擴(kuò)展系統(tǒng)的愿景,從而實(shí)現(xiàn)具有顯著總體擁有成本優(yōu)勢的高能效性能。

    8 結(jié)論    

CXL 解決了行業(yè)面臨的重大挑戰(zhàn),同時(shí)遵循基于開放性、簡易性和向后兼容性的設(shè)計(jì)理念。這使得 CXL 成為整個(gè)行業(yè)的通用標(biāo)準(zhǔn)。所有這些因素使得 CXL 在學(xué)術(shù)界也成為一個(gè)熱門研究領(lǐng)域。我們希望本教程既能作為標(biāo)準(zhǔn)的介紹和起點(diǎn),也能作為研究思路的基礎(chǔ)。

文章來源:半導(dǎo)體行業(yè)觀察

導(dǎo)航欄目

聯(lián)系我們

聯(lián)系人:袁經(jīng)理

手機(jī):051683539599

電話:051683539599

郵箱:[email protected]

地址: 徐高新康寧路1號(hào)高科金匯大廈A座14樓

用手機(jī)掃描二維碼關(guān)閉
二維碼