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

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

行業(yè)新聞

CXL,最強科普(上)

  摘要  

Compute Express Link(CXL)是處理器與加速器、內存緩沖器、智能網(wǎng)絡接口、持久內存和固態(tài)硬盤等設備之間的開放式行業(yè)標準互連。CXL 提供一致性和內存語義,其帶寬可與 PCIe 帶寬相匹配,同時延遲大大低于 PCIe。所有主要 CPU 供應商、設備供應商和數(shù)據(jù)中心運營商都已將 CXL 作為通用標準。這樣就形成了一個可互操作的生態(tài)系統(tǒng),支持包括高效加速器、服務器內存帶寬和容量擴展、多服務器資源池和共享以及高效點對點通信在內的關鍵計算用例。本調查介紹了CXL,包括 CXL 1.0、CXL 2.0 和 CXL 3.0 標準。我們將進一步調查 CXL 的實現(xiàn)情況,討論 CXL 對數(shù)據(jù)中心環(huán)境的影響以及未來的發(fā)展方向。

  引言  

Compute Express Link(CXL)是一個開放的行業(yè)標準,定義了 CPU 和設備之間的一系列互連協(xié)議。雖然有 CXL 規(guī)范和新聞機構的簡短摘要,但本教程旨在提供技術細節(jié),同時讓廣大系統(tǒng)受眾易于理解。CXL 協(xié)議橫跨整個計算堆棧,涉及計算機科學的多個分支。為了處理這種廣泛性,我們將重點放在基礎工程方面,而較少關注安全特性、安全影響和更高級別的軟件功能。

作為一種通用設備互連,CXL 采用了廣泛的設備定義,包括圖形處理器 (GPU)、通用圖形處理器 (GP-GPU)、現(xiàn)場可編程門陣列 (FPGA),以及各種專用加速器和存儲設備。傳統(tǒng)上,這些設備使用外圍組件互連-Express?(PCI-Express? 或 PCIe?)串行接口。CXL 還針對傳統(tǒng)上通過雙倍數(shù)據(jù)速率(DDR)并行接口連接到 CPU 的存儲器。

雖然 PCIe 和 DDR 對于各種設備來說都是很好的接口,但它們也有一些固有的局限性。這些限制導致了以下挑戰(zhàn),促使我們開發(fā)和部署 CXL:

挑戰(zhàn) 1:連貫訪問系統(tǒng)和設備內存。系統(tǒng)內存通常通過 DDR 連接,并可由 CPU 高速緩存分級緩存。相比之下,PCIe 設備對系統(tǒng)內存的訪問是通過非一致性讀/寫實現(xiàn)的,如圖 1 所示。PCIe 設備無法緩存系統(tǒng)內存以利用時間或空間位置性或執(zhí)行原子操作序列。從設備到系統(tǒng)內存的每次讀/寫都要經過主機的根復用器 (RC),從而使 PCIe 與 CPU 的緩存語義保持一致。同樣,連接到 PCIe 設備的內存從主機進行非一致性訪問,每次訪問都由 PCIe 設備處理。因此,設備內存無法映射到可緩存的系統(tǒng)地址空間。

 111111.jpg

圖 1. CXL 支持一致性和內存語義,建立在 PCIe 物理子系統(tǒng)之上。

非一致性訪問對于流式 I/O 操作(如網(wǎng)絡訪問或存儲訪問)非常有效。對于加速器而言,整個數(shù)據(jù)結構在移回主存儲器之前,會從系統(tǒng)內存移至加速器以實現(xiàn)特定功能,并部署軟件機制以防止 CPU 和加速器之間的同時訪問。這對人工智能 (AI)、機器學習 (ML) 和智能網(wǎng)絡接口卡 (NIC) 等新的使用模式構成了障礙,在這些使用模式中,設備需要使用設備本地緩存與 CPU 同時訪問相同數(shù)據(jù)結構的部分內容,而無需來回移動整個數(shù)據(jù)結構。這一挑戰(zhàn)也出現(xiàn)在不斷發(fā)展的內存處理(PIM)領域,該領域試圖將計算遷移到數(shù)據(jù)附近。目前,PIM 設備還沒有標準化的方法來連貫訪問 CPU 緩存層中的數(shù)據(jù)。這導致了繁瑣的編程模型,阻礙了 PIM 的廣泛應用。

挑戰(zhàn) 2:內存可擴展性。對內存容量和帶寬的需求與計算量的指數(shù)增長成正比。遺憾的是,DDR 內存無法滿足這一需求。這限制了每個 CPU 的內存帶寬。造成這種擴展不匹配的一個關鍵原因是并行 DDR 接口的引腳效率低下。通過增加DDR通道進行擴展會大大增加平臺成本,并帶來信號完整性挑戰(zhàn)。原則上,PCIe 引腳將是一個很好的替代方案,因為其單位引腳內存帶寬更優(yōu)越,即使會增加串行化/反串行化的延遲(如后面所討論的)。例如,32GT/s 的 x16 Gen5 PCIe 端口可通過 64 個信號引腳提供 256 GB/s。DDR5-6400 的速度為 50 GB/秒,信號引腳為 200 個。PCIe 還支持使用重定時器1 實現(xiàn)更長的傳輸距離,這樣可以將內存移到離 CPU 更遠的地方,每個 DIMM 的功耗可超過 15 W,從而實現(xiàn)更出色的性能。遺憾的是,PCIe 不支持一致性,設備連接的內存無法映射到一致性內存空間。因此,PCIe 無法取代 DDR。

另一個擴展挑戰(zhàn)是 DRAM 存儲器的每比特成本最近一直保持不變。雖然有多種介質類型,包括托管 DRAM 、ReRam 、3DXP/Optane ,但 DDR 標準依賴于特定于 DRAM 的命令進行訪問和維護,這阻礙了新介質類型的采用。

挑戰(zhàn) 3:絞合導致內存和計算效率低下。當今的數(shù)據(jù)中心由于資源擱淺而效率低下。當內存等資源仍處于閑置狀態(tài),而計算等資源已被充分利用時,就會出現(xiàn)資源擱淺。根本原因是資源耦合過緊,計算、內存和 I/O 設備只屬于一臺服務器。因此,每臺服務器都需要超量配置內存和加速器,以處理峰值容量需求的工作負載。例如,一臺服務器上的應用程序需要比現(xiàn)有內存(或加速器)更多的內存(或加速器),但這臺服務器無法從同一機架上另一臺未充分利用的服務器借用內存(或加速器),因此必須承受頁面缺失帶來的性能后果。然而,在所有內核都被工作負載使用的服務器上,經常會出現(xiàn)內存閑置的情況。擱淺對功耗、成本和可持續(xù)性都有不利影響,也是阿里巴巴、AWS、谷歌、Meta和微軟資源利用率低的原因。

挑戰(zhàn) 4:分布式系統(tǒng)中的細粒度數(shù)據(jù)共享。分布式系統(tǒng)經常依賴于細粒度同步。底層更新通常較小,對延遲敏感,因為更新時會出現(xiàn)工作塊。這方面的例子包括網(wǎng)絡搜索、社交網(wǎng)絡內容組合和廣告選擇等網(wǎng)絡規(guī)模應用中的分區(qū)/聚合設計模式。在這些系統(tǒng)中,查詢更新通常小于 2 kB(如搜索結果)。其他例子包括依賴 kB 級頁面的分布式數(shù)據(jù)庫和更新更小的分布式共識。以如此精細的粒度共享數(shù)據(jù)意味著,典型數(shù)據(jù)中心網(wǎng)絡中的通信延遲會影響更新的等待時間,并減慢這些重要用例的運行速度。例如,以 50 GB/秒(400 Gbit/秒)的速度傳輸 4 kB 的數(shù)據(jù)只需不到 2 秒,但在當前網(wǎng)絡中,通信延遲超過 10 秒。相干共享內存的實現(xiàn)有助于將通信延遲縮短到亞微秒級,稍后我們將看到這一點。

CXL 的作用。CXL的開發(fā)就是為了應對上述四項挑戰(zhàn)和其他挑戰(zhàn)。自 2019 年首次發(fā)布以來,CXL 已經發(fā)展了三代(見第 2 節(jié))。每一代都規(guī)定了互連和多種協(xié)議(見第 3 節(jié)),同時保持完全向后兼容。表 1 概述了當前 CXL 的三代版本和主要用例示例。如圖 1 所示,CXL 1.0 在 PCIe 物理層之上復用了一致性和內存語義。CXL 引入了定制鏈路層和事務層,以實現(xiàn)與遠程插槽內存訪問相當?shù)牡脱舆t。通過使 CXL 設備能夠緩存系統(tǒng)內存,從而解決了挑戰(zhàn) 1(一致性)和挑戰(zhàn) 2(內存擴展)。這也使一致性接口標準化,促進了 PIM 系統(tǒng)和編程模型的廣泛采用。CPU 還可以緩存設備內存,這也解決了異構計算的挑戰(zhàn) 4(細粒度分布式數(shù)據(jù)共享)。此外,連接到 CXL 設備的內存可映射到系統(tǒng)可緩存內存空間。這有利于異構處理,并有助于應對內存帶寬和容量擴展挑戰(zhàn)(挑戰(zhàn) 2)。CXL 1.0 還繼續(xù)支持 PCIe 的非一致性生產者-消費者語義。

33333.jpg

表 1. CXL 規(guī)范世代、速度和用例概覽

CXL 2.0 還通過在多臺主機間實現(xiàn)資源池來解決挑戰(zhàn) 3(資源擱淺)。我們使用主機來指單個操作系統(tǒng)或管理程序控制下的單插槽或多插槽系統(tǒng)。資源池通過將資源(如內存)重新分配給不同的主機,而無需重新啟動這些主機,從而克服了資源擱淺和碎片化問題。CXL 協(xié)議通過引入 CXL 交換機來構建一個由主機和內存設備組成的小型網(wǎng)絡,從而實現(xiàn)資源池。

CXL 3.0 通過多級 CXL 交換在更大范圍內解決了挑戰(zhàn) 3。這樣就能在機架甚至 pod 層構建動態(tài)可組合系統(tǒng)。此外,CXL 3.0 通過實現(xiàn)跨主機邊界的細粒度內存共享,解決了挑戰(zhàn) 4(分布式數(shù)據(jù)共享)。

CXL 需要 CPU 和設備支持。幾乎所有芯片供應商都在商業(yè)產品中廣泛采用 CXL,這證明該技術因其解決實際問題的能力而受到廣泛歡迎。這使得 CXL 在解決關鍵行業(yè)挑戰(zhàn)方面走上了一條可行之路,并得到了廣泛應用。CXL 3.0 也已經達到了一定的成熟度,有助于對其基本設計選擇進行審查。本教程第 2 節(jié)介紹了背景。第 3、4 和 5 節(jié)分別詳細介紹了 CXL 1.0、CXL 2.0 和 CXL 3.0 的增量版本。第 6 節(jié)討論 CXL 的實現(xiàn)和性能。第 7 節(jié)討論了更廣泛的影響和未來發(fā)展方向。

   2 用于未來光刻的EUV-FEL光源   

高速緩存一致性互連歷來是 "對稱 "的,因為它們側重于多插槽系統(tǒng)或多 GPU 系統(tǒng)。每個節(jié)點(CPU 或 GPU)都將實施相同的一致性算法,并跟蹤所需的狀態(tài)。常見的例子有英特爾的快速路徑互連(QPI)和超級路徑互連(UPI)、AMD 的 Infinity Fabric、IBM 的 Bluelink 和 Nvidia 的 NVLink。多年來,對稱互聯(lián)的多種擴展試圖解決第 1 節(jié)中的一些難題,如 CCIX 和 OpenCAPI。一些公司還授權使用 QPI 等協(xié)議。然而,行業(yè)經驗表明,對稱高速緩存一致性的復雜性和性能要求給部署帶來了巨大挑戰(zhàn),因為協(xié)調一致性的機制在不同的架構和設計選擇中存在很大差異,而且隨著時間的推移而變化。此外,并非所有用例都需要一致性支持,例如挑戰(zhàn) 2(內存擴展)和挑戰(zhàn) 3(擱淺)。廣泛采用還要求有一個即插即用的生態(tài)系統(tǒng),能夠與前幾代產品和不同的系統(tǒng)架構兼容。事實證明,向后兼容性是二十多年來 PCIe 成功成為無處不在的 I/O 互連的主要原因之一。它為設備和平臺制造商獨立進行技術過渡提供了便利。例如,平臺可能會遷移到 PCIe 第 5 代,而固態(tài)硬盤供應商可能會決定繼續(xù)使用第 4 代,并在以后根據(jù)固態(tài)硬盤的技術發(fā)展進行遷移。這還有助于保護客戶的投資,因為客戶可能會在新平臺中重復使用一些老一代設備,例如,為了減少碳排放。

在英特爾,在 PCIe 上添加簡化一致性機制的想法可以追溯到 2005 年,其動機是加速器需要緩存系統(tǒng)內存。這導致交易處理提示使用 CPU 的高速緩存層次結構來加快設備訪問速度,并在 PCIe 3.0 中添加原子語義,同時保持 PCIe 的非一致性。英特爾最初還打算在 PCIe 3.0 的基礎上添加內存語義,以便通過共享內存控制器 (SMC) 實現(xiàn)池化。然而,PCIe 3.0 的帶寬(8.0 GT/s)嚴重限制了使用一個 SMC 進行資源池的服務器數(shù)量。多 SMC 拓撲結構會因多次跳轉而導致更高的延遲。另一個挑戰(zhàn)是布線。2019 年,32.0 GT/s 的 PCIe 5.0(以及 64.0 GT/s 的 PCIe 6.0 的進展)和強大的電纜支持重振了英特爾的努力。英特爾由此推出了英特爾加速器鏈接(IAL):一種在 PCIe 5.0 上同時支持緩存和內存的專有協(xié)議。利用二十多年來開發(fā) PCI-Express 的經驗,英特爾捐贈了 IAL 1.0 規(guī)范,并于 2019 年 3 月與阿里巴巴、思科、戴爾、谷歌、華為、Meta、微軟和 HPE 共同發(fā)起了 CXL 聯(lián)盟。IAL 1.0 規(guī)范更名為 CXL 1.0 規(guī)范。

CXL 在一致性、向后兼容性和開放性方面采用了非對稱方法,以實現(xiàn)多樣化和開放的生態(tài)系統(tǒng),促進廣泛部署。CXL 一致性與特定于主機的一致性協(xié)議細節(jié)脫鉤。主機處理器還負責協(xié)調緩存一致性,以簡化設備一致性的實施。設備的高速緩存代理通過一個小命令集執(zhí)行簡單的 MESI(修改、獨占、共享、無效)一致性協(xié)議。CXL 提供多種復雜程度不同的協(xié)議,支持多種用例,設備只能實施協(xié)議的一個子集(第 3 節(jié))。

CXL 利用 PCIe 物理層,設備插入 PCIe 插槽。CXL 的向后兼容演進(如 PCIe)及其與 PCIe 的互操作性,確保了公司對 CXL 的投資可以保證與上一代 CXL 設備以及任何 PCIe 設備的互操作性。在 PCIe 基礎架構上進行構建可實現(xiàn) IP 構建模塊、通道和軟件基礎架構的重復使用,從而降低了進入門檻。從 SoC 的角度來看,多協(xié)議功能 PCIe 物理層(如圖 2 所示)有助于減少硅面積、引腳數(shù)和功耗。

44444.jpg

圖 2. 利用 CXL 在 PCIe 物理層上動態(tài)復用三種協(xié)議 [8]。

CXL 于 2019 年推出時,行業(yè)內還存在 OpenCAPI、GenZ 和 CCIX 等相互競爭的互連標準。從那時起,CXL 成員已增加到約 250 家公司,所有 CPU、GPU、FPGA、網(wǎng)絡、IP 提供商都在聯(lián)盟內積極貢獻力量。在英特爾于 2019 年 3 月捐贈 CXL 1.0 之后,該聯(lián)盟于 2019 年 9 月發(fā)布了 CXL 1.1,增加了合規(guī)性測試機制。之后,聯(lián)盟分別于 2020 年 11 月和 2022 年 8 月發(fā)布了 CXL 2.0 和 CXL 3.0,其中包括更多的使用模式,同時保持了完全的向后兼容性。隨著時間的推移,行業(yè)已圍繞 CXL 形成合力。例如,競爭標準 GenZ 和 OpenCAPI 向 CXL 捐贈了知識產權和資金,以支持共同標準。

   3 CXL 1.1 協(xié)議   

CXL 的第一代協(xié)議為直接連接到主機的設備引入了一致性和內存語義。這使得 CPU 和加速器能對共享數(shù)據(jù)結構進行細粒度異構處理(第 1 節(jié)中的挑戰(zhàn) 1),并能以經濟高效的方式擴展內存帶寬和容量(第 1 節(jié)中的挑戰(zhàn) 2)。

CXL 是一種非對稱協(xié)議,與 PCIe 類似。主機處理器包含根復合體(RC),每個 CXL 鏈路一個,每個根復合體連接到作為 "端點 "的設備。主機處理器協(xié)調高速緩存一致性,如下所述。軟件通過在主機處理器中執(zhí)行的指令配置系統(tǒng),主機處理器生成配置事務以訪問每個設備。CXL 本機支持 x16、x8 和 x4 鏈路寬度,在降級模式下支持 x2 和 x1 寬度。降級模式是指 PCIe 鏈路自動進入更窄的寬度和/或更低的頻率,以克服特定通道上高于預期的錯誤率。CXL 本機支持 32.0 GT/s 和 64.0 GT/s 的數(shù)據(jù)速率,降級模式下支持 16.0 GT/s 和 8.0 GT/s 的數(shù)據(jù)速率。

圖 2 說明了 CXL 如何與 PCIe 實現(xiàn)完全互操作,因為它使用的是 PCIe 協(xié)議棧。CXL 設備以 2.5 GT/s 的 PCIe 第 1 代數(shù)據(jù)速率啟動鏈路訓練,如果其鏈路合作伙伴支持 CXL,則使用 PCIe 5.0 和 PCIe 6.0 規(guī)范中定義的備用協(xié)議協(xié)商機制協(xié)商 CXL 作為運行協(xié)議。

3.1CXL 協(xié)議和設備類型

CXL 使用三種協(xié)議實現(xiàn),即 CXL.io、CXL.cache 和 CXL.memory(又名 CXL.mem),這些協(xié)議在 PCIe 物理層上動態(tài)多路復用。圖 2 展示了 CXL 的多協(xié)議支持。CXL.io 協(xié)議基于 PCIe。它用于設備發(fā)現(xiàn)、狀態(tài)報告、虛擬到物理地址轉換和直接內存訪問(DMA)。CXL.io 使用 PCIe 的非相干負載存儲語義?,F(xiàn)有的 PCIe 軟件基礎架構將通過必要的增強重新使用,以利用 CXL.cache 和 CXL.mem 等新功能。CXL.cache 用于設備緩存系統(tǒng)內存。CXL.mem 使 CPU 和其他 CXL 設備能將設備內存作為可緩存內存訪問。CXL.mem 使連接到設備的內存成為可緩存內存(稱為主機管理設備內存 (HDM)),類似于主機內存,從而實現(xiàn)主機在 HDM 和主機內存之間的統(tǒng)一視圖(圖 2)。如圖 3 所示,CXL.io 對所有設備都是強制性的,而 CXL.cache 和 CXL.mem 則是可選的,并根據(jù)具體用途而定。

 55555.jpg

圖 3. 三大類 CXL 終端設備[8]。

圖 3 顯示了 CXL 1.0/1.1 規(guī)范中定義的三種設備類型,它們捕捉到了不同的使用模式。類型 1 設備是智能網(wǎng)卡等加速器,使用一致性語義和 PCIe 式 DMA 傳輸。因此,它們只實施 CXL.io 和 CXL.cache 協(xié)議。類型 2 設備是 GP GPU 和 FPGA 等加速器,其本地內存可部分映射到可緩存系統(tǒng)內存。這些設備也緩存系統(tǒng)內存以進行處理。因此,它們執(zhí)行 CXL.io、CXL.cache 和 CXL.mem 協(xié)議。第 3 類設備用于內存帶寬和容量擴展,可用于連接不同類型的內存,包括支持連接到設備的多個內存層。因此,3 類設備將僅實施 CXL.io 和 CXL.mem 協(xié)議。CXL 第 3 類設備為服務器 CPU 增加更多 DDR 通道提供了一種成本、功耗和引腳效率高的替代方案,同時因其更長的線程長度而為系統(tǒng)拓撲結構提供了靈活性,從而緩解了電力傳輸和冷卻方面的限制。CXL 采用分層協(xié)議方法。物理層負責物理信息交換、接口初始化和維護。數(shù)據(jù)鏈路層(或鏈路層)負責可靠的數(shù)據(jù)傳輸服務,并在設備之間建立邏輯連接。事務層負責處理與每個協(xié)議相關的事務以及任何架構排序語義、流量控制和信用。這些層中的每一層都有一組寄存器,軟件可訪問這些寄存器來配置、控制和獲取鏈路狀態(tài)。讀者可參閱相關規(guī)范了解詳情。

3.2CXL 68 字節(jié) Flit

CXL 在 PCIe 物理層復用了三個協(xié)議。每個協(xié)議的傳輸單位都是一個 Flit(流量控制單元)。CXL 1.0、1.1 和 2.0 規(guī)范定義了一個 68 字節(jié)的 Flit。CXL 3.0 規(guī)范引入了額外的 256 字節(jié) Flit,第 5 節(jié)將對此進行討論。每個 68 字節(jié)的 Flit 包括一個 2 字節(jié)的協(xié)議標識、一個 64 字節(jié)的有效載荷和一個保護有效載荷的 2 字節(jié) CRC(循環(huán)冗余校驗)(圖 4(a))。協(xié)議標識符可劃分不同類型的數(shù)據(jù)包,并具有內置冗余功能,可檢測和糾正這 2 個字節(jié)內的多個位翻轉。CRC 可保證在 64 字節(jié)有效載荷(加上 2 字節(jié)的 CRC)中檢測到多達 4 個隨機比特翻轉,從而實現(xiàn)極低(<< 10-3)的故障時間(FIT,即鏈路中十億小時內的故障次數(shù)),規(guī)范規(guī)定的誤碼率(BER)小于 10-12。圖 4(b) 顯示了 CXL.cache、CXL.mem 和 Arb/Mux 鏈路管理包 (ALMP) 使用的 16 字節(jié)插槽機制,其中 4 個 16 字節(jié)插槽構成了 Flit 的 64 字節(jié)有效載荷。Arb/Mux 向其鏈路伙伴的 Arb/Mux 設備發(fā)送 ALMP 數(shù)據(jù)包,以根據(jù)需要協(xié)調鏈路管理功能,如跨多個堆棧的電源管理。圖 4(c) 顯示了 CXL.cache 和 CXL.mem 協(xié)議使用的全數(shù)據(jù) Flit 的布局,簡稱為 CXL.cache+mem,因為兩者之間的區(qū)分發(fā)生在鏈路層,因為它們都是基于 Flit 的本地協(xié)議。CXL.io 使用 PCIe 事務/數(shù)據(jù)鏈路層數(shù)據(jù)包(TLP/ DLLP),這些數(shù)據(jù)包在 Flit 的有效載荷部分發(fā)送。由于 TLP 和 DLLP 有自己的 CRC(分別為 32 位和 16 位),CXL.io 數(shù)據(jù)包的接收器會忽略 16 位 Flit CRC。

 6666.jpg

圖 4. CXL 68 字節(jié) Flit 布局 [2, 8]。

CXL.cache和CXL.mem的訪問延遲很低,類似于本地CPU到CPU的對稱一致性鏈路。因此,CXL 設備的內存訪問延遲類似于遠程插座中 DDR 總線的內存訪問延遲。雖然這比本地插槽中 DDR 總線的內存訪問延遲要高,但在雙插槽對稱多處理系統(tǒng)中,由于 NUMA(非統(tǒng)一內存訪問)的優(yōu)化和更高的帶寬,非空閑系統(tǒng)中的延遲較低,這種延遲是可以接受的。CXL.cache和CXL.mem的鏈路層和事務層路徑具有較低的延遲,因為它們本身是基于Flit的,而且Flit的64字節(jié)有效載荷選擇與這些協(xié)議的高速緩存行大小的傳輸相同。在物理層(PHY)級(而不是堆棧的更高級別)進行多路復用有助于為 CXL.cache 和 CXL.mem 流量提供低延遲路徑。這消除了 PCIe/ CXL.io 路徑鏈路層和事務層的較高延遲,因為它們支持可變數(shù)據(jù)包大小、排序規(guī)則、訪問權限檢查等,符合 CXL 規(guī)范的基本指導原則。物理層可區(qū)分 CXL.io、CXL.cache-mem、ALMP 和 NULL Flits(不發(fā)送任何內容)。在發(fā)送有序集之前,這四類 Flits 中的每一類都有兩種情況來指示當前 Flit 是否是數(shù)據(jù)流的終點(EDS)。這些有序集由物理層注入,用于周期性時鐘補償或任何鏈路恢復事件等功能。這八種編碼使用 8 位,保證漢明距離為 4,重復兩次,以便進行校正和檢測。每個有序集長一個區(qū)塊(130 b),用于鏈路訓練和時鐘補償。每個車道獨立發(fā)送其有序集。

在以 32 GT/s 或更低的速度運行時,CXL 使用 PCIe 的 128 b/130 b 編碼方案,在該方案中,每條線路上的每 128 位數(shù)據(jù)都預置 2 位同步頭,以區(qū)分數(shù)據(jù)塊和有序集塊。如圖 4(d)中 x16 鏈路的兩個數(shù)據(jù)塊所示,每個巷道上的 128 位數(shù)據(jù)有效載荷用于傳輸 Flits。一個 Flit 可以跨越多個數(shù)據(jù)塊,一個數(shù)據(jù)塊可以包含多個 Flits。由于 CXL.io 數(shù)據(jù)包(TLP 和 DLLP)本身不是基于 Flit 的,因此一個 TLP 或 DLLP 可以跨越多個 Flit,而一個 Flit 可能包含兩個數(shù)據(jù)包。對這些開銷進行描述,就能得到第 6.3 節(jié)討論的有效載荷吞吐量。為了優(yōu)化延遲,在協(xié)商 CXL 協(xié)議時,如果鏈路的所有組件(包括 Retimers(如有))在初始 PCIe 鏈路培訓過程中宣布支持該優(yōu)化,則 CXL 可移除 2 位同步頭。

3.3CXL.io 協(xié)議

CXL.io 協(xié)議基于 PCIe,用于設備發(fā)現(xiàn)、配置、初始化、I/O 虛擬化和使用非相干負載存儲語義的 DMA 等功能。與 PCIe 一樣,CXL.io 也是一種基于信用的分批交易協(xié)議。拆分事務是指與 CXL.io 請求事務相關的任何完成都會在稍后時間獨立異步到達。這與早期基于 PCI 總線的架構不同,在早期的架構中,事務會鎖定總線,直到其完成。之所以能做到這一點,是因為每個事務都是作為獨立的事務層數(shù)據(jù)包(TLP)發(fā)送的,其消耗的 "點數(shù) "與其在接收器上消耗的緩沖空間一致。有三種流量控制類別(FC):已發(fā)布((P),用于內存寫入和信息)、非發(fā)布((NP),那些需要完成的,如內存讀取和配置/I/O 讀/寫)和完成(C)。CXL.io 在這些 FC 上遵循 PCIe 排序規(guī)則,如圖 5 所示(CXL 3.0 引入了這些排序規(guī)則的例外情況,詳見第 5 節(jié))。這些規(guī)則可確保向前推進,同時執(zhí)行生產者-消費者訂購模式。CXL.io 規(guī)定了兩個虛擬通道,以確保服務質量(QoS)。具有不同要求和延遲特性的流量被放置在不同的虛擬通道(VC)中,以盡量減少系統(tǒng)中隊列頂部阻塞的影響。例如,帶寬大流量與對延遲敏感的等時流量可以放在不同的虛擬通道中,并且可以設置不同的仲裁策略。同樣,我們可以將 DRAM 訪問和持久內存訪問放在兩個不同的虛擬通道中,因為它們的延遲和帶寬特性截然不同,以確保其中一個通道的流量不會影響另一個通道。

 77777.jpg

圖 5. CXL 1.1 的 PCI-Express/ CXL.io 排序表,其中 "是 "表示事務(第 2 次傳輸)可以超越之前的事務(第 1 次傳輸),以確保向前推進。為確保生產者-消費者排序,"否 "表示不允許超越。為優(yōu)化性能,"Y/N "適用于排序規(guī)則放寬的情況。

圖 6(a) 描述了作為硬件和軟件之間契約的生產者-消費者排序模型。這種模式在整個系統(tǒng)中強制執(zhí)行,即使是跨越不同層次的事務,以及位于不同內存位置并可能具有不同屬性(如可緩存與不可緩存)的地址位置也不例外。設備可以是 CPU、CXL/PCIe 設備或交換機中的任何實體?;驹硎?,生產者產生(內存寫入)數(shù)據(jù),隨后寫入標記;數(shù)據(jù)和標記可以位于系統(tǒng)中的多個內存位置。如果消費者看到標記,就可以讀取數(shù)據(jù),并確保獲得生產者寫入的最新數(shù)據(jù)。標志可以是系統(tǒng)內存中的環(huán)形緩沖區(qū)、設備中的內存映射 I/O 位置或發(fā)送到處理器的中斷。圖 5 中描述的排序規(guī)則確保了生產者-消費者排序模式。排序規(guī)則的另一個作用是設備同步使用,如圖 6(b) 所示。在這里,兩個設備可能正在執(zhí)行兩個任務,并將 A 和 B 作為它們完成任務的指示器。如果讀取獲得的是舊數(shù)據(jù),那么該設備中的進程可以暫停,由稍后完成執(zhí)行的設備重新安排。如果(a,b)是可能的,那么兩個設備中的兩個進程都將永遠暫停,這是不希望看到的結果。

 7777.jpg

圖 6. CXL.io 和 PCIe 中的生產者-消費者訂購模型。

雖然 CXL.io/PCIe 排序模型可用于某些類型的同步,但圖 6(c) 所示的同步用法無法通過流水線訪問來執(zhí)行,因為寫入可以繞過之前的讀取。這種限制導致具有分區(qū)全局地址空間(PGAS)的智能網(wǎng)卡在排序重要時,在讀取后序列化寫入。CXL.cache 克服了這一限制: 設備可以不按順序預取所有數(shù)據(jù),并在符合程序順序的本地高速緩存中以低延遲完成事務。

CXL.cache+mem 大部分是無序的,但在每個高速緩存行上有一些排序限制,這將在后面討論。在支持源-目的對之間多路徑的拓撲結構中,這些限制可以通過路由機制來解決,該機制可確保任何給定高速緩存行的相關事務始終遵循相同的路徑。但是,傳統(tǒng) PCIe(和 CXL.io)的排序要求是在整個內存空間內進行的。因此,傳統(tǒng) PCIe(以及 CXL)必須遵循樹狀拓撲結構。在 CXL 3 中,我們放寬了 CXL.io 的排序要求,可以支持任何結構拓撲,詳見第 5 節(jié)。

CXL.io 使用標準 PCIe DLLPs 交換信息,如積分、可靠的 TLP 傳輸、電源管理等。CXL.io 使用 PCIe 的配置空間,并為 CXL 的使用對其進行了增強。這有助于使用現(xiàn)有的設備發(fā)現(xiàn)機制。我們預計,PCIe 設備驅動程序將進行必要的增強,以利用 CXL.cache 和 CXL.mem 等新功能,而系統(tǒng)軟件將對與新功能相關的新寄存器集進行編程。這建立在現(xiàn)有基礎設施的基礎上,使生態(tài)系統(tǒng)更容易采用 CXL。

3.4CXL.cache 協(xié)議

CXL.cache 協(xié)議使設備能夠使用 MESI 一致性協(xié)議[47]緩存主機內存,緩存行大小為 64 字節(jié)。為了保持協(xié)議在設備上的簡單性,主機管理所有對等緩存的一致性跟蹤,而設備從不與任何對等緩存直接交互。該協(xié)議建立在每個方向的 3 個通道上。通道的方向是主機到設備(H2D)和設備到主機(D2H)。每個方向都有一個請求、響應和數(shù)據(jù)通道。通道在每個方向上都是獨立流動的,但有一個例外:主機在 H2D 請求通道中發(fā)出的窺探(Snoop)信息必須在 H2D 響應中針對相同的高速緩存行地址推送之前的全局觀察(GO)信息。GO 信息向設備指出一致性狀態(tài)(MESI)和一致性承諾點。

CXL.cache 僅使用主機物理地址。緩存設備與中央處理器一樣,在執(zhí)行代碼時使用虛擬地址。同樣,高性能設備也應使用虛擬地址,以避免軟件層提供轉換。預計設備將實施與 CPU 的 TLB 類似的設備轉換旁路緩沖器(DTLB),以緩存頁表條目。它使用 PCIe(和 CXL.io)的地址轉換服務(ATS)來獲取虛擬到物理的轉換以及訪問控制,以確保多個虛擬機/容器之間的適當隔離。此外,CXL 還對 ATS 進行了擴展,以傳達對地址的訪問是允許使用 CXL.cache 還是僅限于 CXL.io。由于 DTLB 是非相干的,ATS 希望主機處理器跟蹤整個平臺上 DTLB 中的待處理條目,并對軟件已失效的 DTLB 條目(或條目)啟動失效。主機處理器使用其 ATS 硬件機制完成與 DTLB 的無效握手,然后再向正在使頁表條目無效的軟件指示完成。

D2H 請求通道包括 15 條命令,分為四類: 讀取、讀取 0、讀取 0-寫入、寫入。如圖 7 所示,"讀 "類別允許設備請求高速緩存行的一致性狀態(tài)和數(shù)據(jù)。響應將是 H2D 響應通道中的一致性狀態(tài)(如果需要一致性)和 H2D 數(shù)據(jù)。讀 0 "類請求只針對一致性狀態(tài),數(shù)據(jù)為 "0"(表示不需要數(shù)據(jù))。它可用于升級高速緩存中的現(xiàn)有數(shù)據(jù)(S 到 E),或在預計寫入整個高速緩存行時引入 E 狀態(tài)。H2D 響應通道表示主機提供的一致性狀態(tài)。讀0-寫 "類別允許設備直接向主機寫入數(shù)據(jù),在發(fā)出之前不需要任何一致性狀態(tài)。當主機準備好接受 D2H 數(shù)據(jù)時,H2D 響應將顯示 "WritePull",主機將在顯示系統(tǒng)全球觀測 (GO) 數(shù)據(jù)之前解決一致性問題。寫 "類別用于設備從設備緩存中刪除數(shù)據(jù)。這些請求可以是臟數(shù)據(jù)(M 狀態(tài)),也可以是清潔數(shù)據(jù)(E 或 S 狀態(tài))。在設備需要提供數(shù)據(jù)的情況下,主機將指示 "WritePull",并指示 GO。

 8888.jpg

圖 7. CXL 1.1 高速緩存協(xié)議流程。

H2D 請求通道用于主機改變設備的一致性狀態(tài),即 "窺探"(縮寫為 Snp)。設備必須根據(jù)窺探類型的要求更新其緩存,如果緩存中存在臟數(shù)據(jù)(M-state),還必須將該數(shù)據(jù)返回給主機。圖 7 舉例說明,主機發(fā)送 SnpInv X,要求設備使地址 X 的高速緩存失效。設備將地址 X 的高速緩存狀態(tài)從 E 改為 I,然后在 D2H 響應通道上發(fā)送 RspIHitSE。RspI 表示其最終緩存狀態(tài)為 I 狀態(tài),HitSE 表示緩存在降級為最終 I 狀態(tài)之前為 S 或 E 狀態(tài)。

一致性協(xié)議的一個重要組成部分是如何處理對同一地址的沖突訪問。有兩種情況值得強調:(1) Req-to-Snoop 和 (2) Eviction-to-Snoop。要解決 Req-to-Snoop 情況,H2D 響應通道上的 GO 消息必須排在對同一高速緩存行地址的任何未來 Snoop 之前,以確保設備在處理 Snoop 之前觀察主機提供的高速緩存狀態(tài)(如有)。其原因如圖 7(a) 所示,主機發(fā)送的 GO 消息必須在后面的窺探之前被觀察到,這樣設備才能意識到它已獨占了該地址的所有權,并能正確處理窺探。圖 7(b) 是順序相反的情況,即主機首先處理窺探,并在窺探完成前停止處理未來的請求,因此設備在 GO 之前觀察到窺探會導致在緩存處于無效狀態(tài)時處理窺探。就 Evict-to-Snoop 而言,圖 7(c) 顯示了當 DirtyEvict 未處理時 snoop 到達的情況,設備必須用當前的 M 狀態(tài)數(shù)據(jù)回復 snoop。稍后的 GO_WritePull 仍必須返回數(shù)據(jù),但包括數(shù)據(jù)是假的(意味著可能是過期數(shù)據(jù))的提示,因此主機必須放棄數(shù)據(jù),因為更新的數(shù)據(jù)可能存在于其他代理中。

3.5CXL.mem 協(xié)議

內存協(xié)議使設備能夠公開主機管理的設備內存(HDM),允許主機管理和訪問該內存,類似于連接到主機的本地 DDR。該協(xié)議獨立于內存媒體,使用一組簡單的主機物理地址2 讀取和寫入,要求設備內部轉換為設備的媒體地址空間。該協(xié)議固有的 CXL 附加內存容量是有限的;實際上,限制來自于可附加 CXL 設備的數(shù)量和大小。對于希望同時緩存該內存的加速器設備,提供了高級語義,使設備能夠直接緩存內存,并依靠設備跟蹤主機對該內存的緩存。

該協(xié)議在每個方向上使用兩個通道,分別稱為主控對從屬(M2S)和從屬對主控(S2M)。M2S 方向提供一個請求通道和一個帶數(shù)據(jù)的請求(RwD)通道。S2M 方向提供非數(shù)據(jù)響應(NDR)通道和數(shù)據(jù)響應(DRS)通道。為了實現(xiàn)簡單/低延遲,通道之間沒有排序。

CXL.mem 的兩種使用情況是 (1) 作為 "主機內存擴展器",(2) 作為暴露給主機的加速器內存。兩者都使用 HDM 術語來描述 CXL.mem 協(xié)議訪問的內存區(qū)域,但協(xié)議要求有所不同。為了識別這些要求,后綴"-H "修飾符(HDM-H)表示主機內存擴展器是 "僅主機一致性 "的,"-D "修飾符(HDM-D)表示暴露給主機的加速器內存是 "設備管理一致性 "的3 HDM-H不包括任何一致性協(xié)議假設,而HDM-D包括每個報文中使用的高速緩存狀態(tài)和高速緩存窺探屬性。HDM-D 還需要一種方法,用于從設備向主機傳送所需的內存高速緩存狀態(tài),稱為 "偏置翻轉 "流(Bias Flip Flow)4。

HDM-H 可選為每個高速緩存行提供 2 位元值,供主機使用。可能的用途包括一致性目錄、安全屬性或數(shù)據(jù)壓縮屬性。圖 8(a) 顯示了一個示例流程,主機讀取更新設備中的元值,設備返回元值的先前狀態(tài)。在此示例中,設備需要更改存儲在設備中的當前元值,因為值已從 2(舊值)變?yōu)?0(新值)。請注意,內存介質存儲的元值和 ECC(糾錯碼)位是針對特定設備的。

 999.jpg

圖 8. CXL 1.1 內存協(xié)議流程。

HDM-D 使用元值字段的方式不同,它在該字段中向設備公開主機一致性狀態(tài),這樣設備就能知道主機為 HDM-D 區(qū)域中的每個地址緩存的狀態(tài)。本規(guī)范使用 "設備一致性 (DCOH) 代理 "一詞來描述設備中管理/跟蹤設備與主機之間一致性的代理。圖 8(b) 顯示了 HDM-D 的一種情況,即主機在 S 狀態(tài)下向高速緩存讀取數(shù)據(jù),并要求設備檢查其高速緩存(Dev ?)的當前副本,但在本例中,高速緩存中沒有數(shù)據(jù),因此數(shù)據(jù)是從主機內存中傳送的。

HDM-D 一致性模型允許設備使用 CXL.cache 請求改變主機狀態(tài)。CXL.cache 是實現(xiàn)這一功能的自然方式,因為 HDM-D 僅針對類型 2 進行了定義。設備改變主機高速緩存狀態(tài)的流程被稱為 "偏置翻轉 "流程。圖 9 是該流程的一個示例。設備向主機發(fā)送 "RdOwnNoData X"。主機檢測到地址 X 是由發(fā)出設備擁有的 HDM-D 地址,其行為將與原來不同,因為它會直接改變主機的緩存狀態(tài),迫使所有主機緩存進入 I 狀態(tài)。偏置翻轉 "流的響應與傳統(tǒng)的 CXL.cache 響應不同,在本例中,主機將在 CXL.mem M2S Req 信道上發(fā)送響應 MemRdFwd 消息,以表明主機已完成緩存狀態(tài)更改。通過使用 CXL.mem M2S Req 通道,可以避免與主機之間的競爭條件,因為未來對同一地址的 CXL.mem 請求要求 M2S 請求通道排序才能訪問同一高速緩存行。排序要求僅適用于 HDM-D 地址。

 000.jpg

圖 9. HDM-D 偏置翻轉流程。

3.6協(xié)議層次

CXL 與 CPU 內部的一系列一致性實現(xiàn)兼容。圖 10(a)捕捉了一個可能的主機 CPU,其中 CXL.cache 位于與 CPU 內核共享的主機 L3 cache 下。在此示例中,CXL.io/PCIe 協(xié)議訪問主機內存時也會通過相同的高速緩存,并遵循主機內存路徑上使用的目標一致性語義。本圖顯示的是插座中的單個 L3。另外,主機架構也可以拆分 L3 或其他內部高速緩存,但不會對 CXL.cache 產生影響,因為 CXL.cache 不了解主機高速緩存的詳細信息。根據(jù)主機特定協(xié)議(專有 CPU-to-CPU)的定義,主機可擴展到多個 CPU 插座或高速緩存,該協(xié)議定義了一個內部主代理,以解決主機高速緩存(包含 CXL.cache 設備)之間的一致性問題。該主機主代理可包括用于解決一致性問題的主機特定優(yōu)化,如片上窺探過濾器或內存目錄狀態(tài)。CXL.mem 協(xié)議位于主機主代理邏輯之后,可支持僅主機一致性(HDM-H)或設備一致性(HDM-D)的簡單內存擴展。對于 HDM-D,在主機主代理之后還包括一個額外的一致性解決級別,允許設備成為設備所擁有地址一致性的最終仲裁者。

 qqq.jpg

圖 10. CXL 協(xié)議層次結構。

圖 10(b) 顯示了 CXL 中預期的協(xié)議依賴圖。協(xié)議依賴圖定義了哪些協(xié)議通道可能會被其他協(xié)議通道依賴(或阻塞)。如果沒有產生循環(huán)依賴關系,依賴關系圖是顯示通道間死鎖自由度的一種方法。依賴關系圖中的一個例子是,L1 Req 可能依賴于 L1-Snp 通道完成,然后才能處理新的 L1 Req。之所以存在這種依賴關系,是因為請求可能需要先發(fā)送并完成窺探,然后才能完成請求。L1 協(xié)議是 CXL.cache 中提供的通道的抽象,其中 L1-Req 映射到 D2H Req,L1-Snp 映射到 H2D-Req,L1 RSP 映射到 H2D/D2H RSP 和數(shù)據(jù)通道,這些通道已預先分配給主機或設備,從而將這兩個通道結合起來,形成依賴關系圖。L2 協(xié)議是針對主機的,以主機可能存在的通道為例,但也可以選擇其他通道。如果依賴關系圖不存在循環(huán),主機還可以包含其他級別的協(xié)議。L3 協(xié)議為 CXL.mem,其中 L3 Req 映射到 M2S-Req,L3-RwD 映射到 M2S-RwD,而 L3-Rsp 則覆蓋預分配的 S2M NDR 和 DRS 信道。依賴關系圖是一種用于顯示協(xié)議中和協(xié)議間的法律關系和依賴關系的方法,可快速確定 CXL 本身以及主機或設備內部協(xié)議選擇的高級死鎖自由度。

   4 CXL 2.0 協(xié)議   

CXL 第二代實現(xiàn)了資源池功能,可在一段時間內將相同的資源分配給不同的主機。在運行時重新分配資源的能力解決了資源擱淺問題(第 1 節(jié)中的挑戰(zhàn) 3),因為它克服了資源與單個主機之間的緊密耦合。如果一臺主機運行計算密集型工作負載,但沒有使用從池中分配的設備內存,那么操作員可以將該設備內存重新分配給另一臺主機,后者可能運行內存密集型工作負載。由于操作員在設計時通常不知道哪些工作負載在哪些主機上運行,因此資源池可以節(jié)省大量內存: 操作員無需根據(jù)任何類型的內存密集型工作負載所使用的最壞情況內存容量來確定兩臺主機的大小,而是根據(jù)平均情況提供內存。同樣的池結構也適用于加速器等其他資源。

4.1 CXL 2.0 協(xié)議增強功能

CXL 2.0 增加了熱插拔、單級交換、內存 QoS、內存池、設備池和全局持續(xù)刷新(GPF)。CXL 1.1 不允許熱插拔,這就排除了在平臺啟動后添加 CXL 資源的可能性。CXL 2.0 支持標準 PCIe 熱插拔機制,實現(xiàn)了傳統(tǒng)的物理熱插拔和動態(tài)資源池。

為支持單級切換,CXL 對 HDM 解碼器中 CXL.mem 地址區(qū)域的地址解碼進行了標準化。分層解碼遵循 PCIe 內存解碼模型,允許在每個交換機上進行解碼,避免主機或交換機對分層中的所有代理進行完全解碼。為支持多主機連接并啟用設備池,每臺主機都將 CXL 拓撲表示為一個虛擬層次結構(VH),其中包括交換機、主機端口的虛擬網(wǎng)橋以及具有設備資源的每個端口。如圖 11 所示,每臺主機都會看到一個單獨的 VCS(虛擬 CXL 交換機),其中包括分配給該主機的設備的網(wǎng)橋。流量會根據(jù) VH 中的活動虛擬網(wǎng)橋路由到設備。這就限制了 CXL 2.0 的有向樹拓撲結構,每個主機和設備之間最多只有一條路徑。此外,由于需要在交換機中跟蹤每個 VH 的地址映射,CXL 3.0 克服了這一限制(第 5.4 節(jié))。配置和更改 VH 將在第 4.2 節(jié)中介紹。

 www.jpg

圖 11. 具有兩個虛擬層次結構的 CXL 交換機示例。

設備池建立在多主機交換機支持的基礎上,允許設備一次動態(tài)分配給一臺主機。標準設備一次分配給一臺主機,稱為單邏輯設備(SLD)。CXL 還定義了多邏輯設備(MLD),允許將單個 CXL.mem 設備的資源劃分為邏輯設備(最多 16 個),同時分配給不同的主機。MLD 中的每個邏輯設備都可分配給不同的主機。CXL 3.0 引入了名為 "動態(tài)容量設備 "的擴展,靈活性更高。MLD 中的每個邏輯設備 (LD) 都由一個標識符 (LD-ID) 標識。這種擴展只在交換機和設備之間的鏈路上可見,主機看不到。主機將 LD-ID 字段留空。CXL 交換機根據(jù)主機端口將 LD-ID 標簽應用于主機的 CXL.io 和 CXL.mem 事務。

由于交換、MLD 和潛在的不同類型內存(可能不是基于 DRAM),單個交換機中的資源可能會被過度占用,從而導致 QoS 問題。例如,一臺設備的低性能可能會導致使用交換機的所有代理出現(xiàn)擁塞。為緩解這一問題,CXL 2.0 在 CXL.mem 響應信息中引入了 DevLoad 字段,以告知主機在其訪問的設備中觀察到的負載。主機應使用此負載信息來降低向該設備發(fā)送 CXL 請求的速率。CXL 規(guī)范定義了一個參考模型,即在高負載或臨界負載時降低注入速率,直到達到額定負載;在輕負載時,主機可提高注入速率,直到達到額定負載。

如果有多個 CXL 請求注入點(例如,在 CXL 2.0 池方案中),則通過源節(jié)流提供 QoS,控制每個源可消耗多少 MLD 資源。對于非共享資源,可通過確保不同 VH(或 PBR 目的地)的事務能夠在不相互依賴的情況下進行,來隔離每個 VH。CXL 協(xié)議還定義了一個遏制模型,確保如果端點設備沒有響應,受影響的 VH 將通過對主機內未完成的訪問生成錯誤響應來遏制錯誤,以避免主機超時,否則可能導致 VH 故障。

CXL 還定義了內存設備的錯誤報告,包括毒藥數(shù)據(jù)支持。雖然確切的糾錯碼取決于內存介質的類型以及使用模式和平臺,但對已糾正的錯誤和已檢測到但未糾正的錯誤都進行了報告定義。報告已標準化,以便軟件采取必要的措施。

4.2 設備庫管理

池管理是指在運行時將 CXL 設備分配給主機。該標準使用術語 CXL Fabric Manager (FM) 來表示做出分配決策的應用邏輯和策略。實際上,F(xiàn)M 可以是主機上運行的軟件、嵌入在底板管理控制器 (BMC) 或 CXL 交換機內的固件或專用設備。FM 通過使用組件命令接口 (CCI) 將(邏輯)設備分配給主機。這既可以在帶內進行,例如通過內存映射輸入/輸出(MMIO),也可以通過管理組件傳輸協(xié)議(MCTP)在帶外進行。MCTP 支持多種帶外通信,包括 SMBus/I2C、PCIe、USB 和串行鏈路。

FM 通過綁定命令將設備分配到主機,該命令需要四個參數(shù):CXL 交換機 ID、虛擬網(wǎng)橋 ID、物理端口 ID 和邏輯設備 ID(SLD 為空)。FM 將此命令發(fā)送到指定的交換機,交換機會檢查該物理端口當前是否未綁定。如果未綁定,交換機將更新其內部狀態(tài)以執(zhí)行綁定。然后,它會向主機發(fā)送熱添加指示,最后通知 FM 綁定成功。虛擬網(wǎng)橋和相關設備現(xiàn)在出現(xiàn)在主機的虛擬層次結構中。圖 11(a) 和圖 11(b) 之間顯示了這種過渡。

對于 MLD,F(xiàn)M 可能需要首先通過 Set-LD 命令配置邏輯設備。該命令根據(jù)內存粒度(如 256 MB)和多個內存范圍創(chuàng)建 LD。當 FM 沒有與 MLD 的帶外連接時,可通過 CXL 交換機傳輸該命令。創(chuàng)建 LD 后,F(xiàn)M 可以使用綁定命令將其分配給一臺主機,并使用相應的 LD-ID 進行綁定。

要撤銷設備分配,F(xiàn)M 可使用 unbind 命令,該命令需要三個參數(shù):CXL 交換機 ID、虛擬網(wǎng)橋 ID 和 unbind 選項。解除綁定選項表示如何執(zhí)行解除綁定,包括等待主機停用端口、熱移除并等待主機或強制熱移除。利用最后一個選項,F(xiàn)M 可以處理不合作的主機,例如由于故障或分配給裸機云中的第三方客戶的主機。

除了這里介紹的三種命令外,F(xiàn)M 還支持 19 種其他命令。它們包括 QoS 控制,如在 MLD 內的邏輯設備之間分配帶寬。這些命令還包括識別交換機端口和設備以及查詢和配置其狀態(tài)的方法(參見參考文獻中的表)。

4.3 主機軟件支持

盡管大部分 CXL 都是在主機外部的硬件和軟件(如調頻)中實現(xiàn)的,但主機軟件在支持 CXL 方面仍發(fā)揮著重要作用。在高層次上,系統(tǒng)固件會枚舉和配置啟動時存在的 CXL 資源。操作系統(tǒng)(OS)枚舉和配置運行時連接和分離的 CXL 資源,例如熱添加和熱刪除的內存地址范圍。因此,操作系統(tǒng)在支持 CXL 2.0 方面發(fā)揮著重要作用。

傳統(tǒng)上,資源拓撲和親和性通過靜態(tài) ACPI(高級配置和電源接口)表進行通信。例如,NUMA(非統(tǒng)一內存訪問)域在 SRAT(靜態(tài)資源親和表)表中定義,內存帶寬和延遲在 HMAT(異構內存屬性表)表中定義。通常情況下,這些表由固件配置,固件在啟動時了解所有資源5。在 PCIe 中,這個問題比較簡單,因為插入設備不會影響系統(tǒng)映射的內存。而在 CXL 中,需要為運行時連接的內存?zhèn)鬟f特定于內存的資源特性。在 CXL 供應商和設備的生態(tài)系統(tǒng)中,事先定義配置是不可行的。CXL 2.0 引入了相干設備屬性表(CDAT),該表描述了內部 NUMA 域、內存范圍、帶寬、延遲和內存使用建議。當內存(邏輯)設備在運行時被熱添加時,主機會讀取相關的 CDAT 寄存器,操作系統(tǒng)會分配一個空閑的 HPA(主機物理地址)范圍,并對 HDM 解碼器進行編程。

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

導航欄目

聯(lián)系我們

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

手機:051683539599

電話:051683539599

郵箱:[email protected]

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

用手機掃描二維碼關閉
二維碼