兼併OpenCAPI ,CXL 將一統CPU 互連標準
今日,OpenCAPI 和CXL 將發布聯合公告,表示這兩個集團將聯手,OpenCAPI 標準和財團的資產將轉移到CXL 財團。通過這種集成,CXL 將成為主導的CPU 到設備互連標準,因為幾乎所有主要製造商現在都支持該標準,而競爭標準已經退出競爭並被CXL 吸收。
比CXL 面世還早的OpenCAPI 是緩存一致CPU 互連的早期標準之一。該標準由AMD、Xilinx 和IBM 等公司提供支持,是IBM 現有的相干加速器處理器接口(Coherent Accelerator Processor Interface :CAPI) 技術的擴展,向業界其他公司開放,並將其控制在行業聯盟之下。在過去六年中,OpenCAPI 的使用量不大,最引人注目的是在IBM 的POWER9 處理器系列中實現。與類似的CPU 到設備互連標準一樣,OpenCAPI 本質上是現有高速I/O 標準之上的應用程序擴展,添加了緩存一致性和更快(更低延遲)訪問模式等內容,以便CPU 和加速器可以更多地協同工作儘管它們的物理分解很緊密。
但是,作為解決這個問題的幾個競爭標準之一,OpenCAPI 從未在業界引起轟動。作為一個誕生於IBM 的標準,在推進過程中,IBM 在服務器領域的份額一直在下降,但IBM 扔起是其最大的用戶。甚至像AMD 這樣的新興聯盟成員也最終跳過了這項技術,例如利用他們自己的Infinity Fabric 架構來實現AMD 服務器CPU/GPU 連接。這使得OpenCAPI 沒有強大的擁護者——也沒有龐大的用戶群來推動事情的發展。
最終,為了製造商和客戶的利益,更廣泛的行業希望在單一互連標準背後進行整合,這將互連戰爭推向了高潮。隨著Compute Express Link (CXL) 迅速成為明顯的贏家,OpenCAPI 聯盟退出並被CXL 吸收。
根據擬議交易的條款——等待必要方的批准——OpenCAPI 聯盟的資產和標準將轉移給CXL 聯盟。這將包括來自OpenCAPI 的所有相關技術,以及該組織鮮為人知的開放內存接口(OMI) 標準,該標准允許通過OpenCAPI 的物理總線將DRAM 連接到系統。本質上,CXL 聯盟將吸收OpenCAPI;雖然出於顯而易見的原因他們不會繼續開發,但轉移意味著OpenCAPI 的任何有用技術都可以集成到CXL 的未來版本中,從而加強整個生態系統。
隨著OpenCAPI 兼併到CXL,這使得英特爾支持的標準成為主導的互連標準——以及行業未來的事實標準。競爭的Gen-Z 標准在今年早些時候同樣被CXL 吸收,而CCIX 標準已被拋在後面,其主要支持者近年來加入了CXL 聯盟。因此,即使第一批支持CXL 的CPU 還沒有發貨,在這一點上,CXL 已經清除了障礙,可以說,成為從加速器I/O (CXL.io) 到內存擴展的所有方面的唯一剩餘服務器CPU 互連標准通過PCIe 總線。
在發布新聞稿中,雙方表示,計算行業正在經歷重大變革。特定於應用程序的硬件加速正變得司空見慣,新的內存技術正在影響計算的經濟性。為了滿足對開放架構的需求,以允許全行業參與,OpenCAPI 聯盟(OCC) 成立於2016 年。定義的架構允許任何微處理器連接到一致的用戶級加速器、高級存儲器,並且與處理器架構。2021 年,OCC 宣布了開放內存接口(OMI)。OMI 是基於OpenCAPI 的串行連接近存儲器接口,可為主存儲器提供低延遲和高帶寬連接。
2019 年,Compute Express Link™ (CXL™) 聯盟成立,旨在為處理器、內存擴展和加速器提供行業支持的高速緩存一致性互連。2020 年,CXL 和Gen-Z 聯盟宣布了在各自技術之間實施互操作性的計劃,並在2022 年初,Gen-Z 將其規範和資產轉讓給了CXL 聯盟。
秉承這一精神,OpenCAPI 宣布,OCC和CXL正在達成協議,如果各方批准並同意,將把OpenCAPI 和OMI 規範以及OpenCAPI 聯盟資產轉讓給CXL 聯盟。
“我們很高興看到業界圍繞一個推動開放式創新並利用OpenCAPI 和開放式內存接口提供一致互連和低延遲、接近內存接口的價值的組織聚集在一起。我們預計這將為行業帶來最佳的業務成果,因為一個整體和財團的成員。”OpenCAPI 聯盟主席Bob Szabo指出。
“我們很高興有機會將行業重點放在一個組織下的規範上。這是我們共同成員共同努力推進標準高速相干互連/結構以造福行業的正確時機. OCC 資產的分配將允許CXL 聯盟自由使用OCC 已經通過OpenCAPI/OMI 開發的內容。”CXL 聯盟主席Siamak Tavallaei補充說。
前情提要:CXL 吸收GEN-Z
在2021年11月,CXL 宣布,將吸收GEN-Z標準共同發展。
在IT 行業中,相互競爭的團體為了共同利益和各地系統的改進而共同努力,這是一個司空見慣的事情,CXL 聯盟吸收了Gen-Z 聯盟也是如此。
資料顯示,製造商AMD、架構設計公司ARM、兩家服務器供應商戴爾和HPE、內存製造商美光和FPGA 專家賽靈思自2016 年以來一直在開發Gen-Z,以便通過協議處理器、PCI- Express 內存和加速器進行通信。
然而,Gen-Z 聯盟缺少兩個重要的名字:英特爾和英偉達。雖然英偉達最終在2020 年8 月加入該聯盟。但英特爾推出了相互競爭的互連Compute Express Link (CXL),改聯盟的支持者有阿里巴巴、思科、戴爾EMC、Facebook、Google、HPE、華為和微軟。
當AMD、ARM、IBM、NVIDIA 和Xilinx 於2019 年夏末加入Gen-Z聯盟時,我們能明顯察覺到它們將面臨困難時期。兩個財團隨後相互合作——但自2020 年5 月以來沒有發布任何新聞稿,Gen-Z也沉默了。現在,Gen-Z 想要完全停止自己的開發,將這個領域留給CXL。
從CXL支持者提供的消息可以看到,GenZ的做法是希望將所有規格和資產轉移到CXL聯盟,但這仍需要各方的同意。值得一提的是,在CXL吸收Gen-Z的時候,行業內仍有CCIX 和OpenCAPI與之競爭,但行業正在朝著CXL 方向發展。現在吸收了OpenCAPI之後,只剩下CCIX最後一個在堅持。
AMD 的Infinity Fabric 專門用於將其自己的Eypc 處理器與Instinct 加速器耦合,就像NVIDIA 的NV-Link 與IBM 的Power CPU 及其自己的GPU 加速器(如A100)一樣。
英特爾即將推出的用於服務器的處理器系列Sapphire Rapids 是第一代能夠處理CXL,它在第一次迭代中基於PCI Express 5.0,但希望快速切換到PCIe 6.0 以獲得更高的傳輸速率。AMD 緊隨其後的是CPU 系列Epyc 7004,別名Genoa。三星已經宣布CXL 內存擴展器為PCIe DRAM。
從某種角度看,再現上世紀80年代末和90年代初的總線大戰會很有趣。供應商之間為爭奪他們所控制的標準而進行的鬥爭最終導致了PCI-X和PCI-Express總線的創建,這些總線以及分支InfiniBand interconnect在服務器領域佔據了20年的主導地位,以及分支InfiniBand interconnect,它最初是作為一個通用的交換結構來連接高帶寬和低延遲的所有東西。這可能要比其他情況下花費更長的時間——改寫歷史是很困難的。
CXL 將如何改變數據中心
據The Register報導,Compute Express Link (CXL) 有可能從根本上改變系統和數據中心的構建和運營方式。經過190 多家公司的多年聯合開發,開放標準幾乎已準備好迎接黃金時間。
對於那些不熟悉的人,CXL 定義了一個通用的、緩存一致的接口,用於連接CPU、內存、加速器和其他外圍設備。在接受The Register採訪的時候,CXL 董事長兼英特爾技術計劃總監Jim Pappas表示,該標準對數據中心的影響是廣泛的。
因此,第一批CXL 兼容系統預計將在今年晚些時候與英特爾的Sapphire Rapids Xeon Scalables 和AMD 的Genoa 第四代Epycs 一起推出,我們詢問了Pappas,問他預計CXL 將如何在短期內改變行業。
根據Pappas 的說法,CXL 的首批實現之一可能涉及系統內存。他解釋說,到目前為止,只有兩種方法可以將更多內存附加到加速器上。要么添加更多DDR 內存通道以支持更多模塊,要么必須將其直接集成到加速器或CPU 封裝中。
“你不能將內存放在PCIe 總線上,”但使用CXL,你可以,Pappas 說。“CXL 是為加速器設計的,但它也被設計為具有內存接口。我們從一開始就知道這可以用作內存的不同端口。”
無需使用更多或更大的內存模塊填充系統,而是可以通過使用PCIe 和CXL 通用接口的卡安裝額外的內存。並且由於CXL 2.0 規範中引入的簡單交換系統,包括內存在內的資源可以被多個系統同時池化和訪問。
重要的是要注意,在這種配置中,只有資源本身而不是內存的內容在主機之間共享,Pappas 強調。“每個內存區域最多屬於一個相干域。我們不是要共享內存;這變得更加複雜。”
另一個用例涉及分層內存架構,其中系統利用封裝上的高帶寬內存、直接連接到CPU 的相當大的快速DDR5 內存池,以及通過CXL 模塊連接的更大的慢速內存池。
根據Pappas 的說法,內存池和分層內存對數據中心和雲運營商有影響。“雲客戶面臨的最大問題是他們的第一大支出是內存。他們大約50%的設備支出用於內存,”他說。
通過池化這些內存,Pappas 認為運營商可以通過減少閒置的內存量來實現巨大的成本節約。Pappas 說,由於池化或分層內存的行為與連接到CPU 的系統內存沒有任何不同,因此無需修改應用程序即可利用這些技術。如果應用程序“要求更多內存,那麼現在基本上是無限供應”。
這項技術也不是理論上的。內存池和分層內存是CXL 初創公司Tanzanite Silicon Solutions 在今年五月被Marvell Technologies 收購之前正在研究的幾項技術之一。Marvell 認為,該技術將證明對實現真正可組合的基礎設施至關重要,而到目前為止,這些基礎設施在很大程度上僅限於計算和存儲。
Pappas 還希望CXL 通過在CPU、AI 加速器和/或GPU 之間建立比目前通過PCIe 實現的更密切的關係,從而使AI/ML 工作負載受益。
在基本層面上,CPU 與外圍設備(如GPU)交互的方式是通過PCIe 總線來回發送加載/存儲指令。CXL 消除了這個瓶頸,使指令能夠在加速器和主機之間進行流式傳輸。
“這與雙處理器系統中發生的情況非常相似,其中高速緩存在處理器之間保持一致。我們正在將其擴展到加速器,”Pappas說。
將這種緩存一致性擴展到CPU 以外的加速器絕非易事或新想法。
他告訴我們,英特爾和其他公司過去曾嘗試過為加速器開發標準化互連,但都失敗了。部分問題是與這些互連相關的複雜性在組件之間共享,這使得將它們擴展到第三方非常困難。“當我們在英特爾嘗試這樣做時,它非常複雜,幾乎沒有人,基本上沒有人能夠真正讓它發揮作用,”Pappas透露。他認為,對於CXL,基本上所有的複雜性都包含在主機CPU 中。
這種不對稱的複雜性並非沒有權衡,但Pappas 認為它們非常值得。這些以應用程序親和性的形式出現,特別是哪個加速器獲得對緩存或內存的優先訪問權,哪個必須扮演次要角色。
Pappas 聲稱,這在一定程度上得到了緩解,因為客戶通常會知道加速器將訪問哪些內存區域與主機訪問的內存區域。用戶將能夠通過在BIOS 中設置偏差來適應。
CXL 標準還沒有完成。CXL 聯盟預計將在今年晚些時候發布3.0 規範。
該更新包括從每秒32 千兆傳輸到64 的提升,符合計劃向PCIe 6.0 的遷移,以及對許多新的內存使用模型的支持,Pappas 表示。該規範還介紹了一種以非對稱方式實施CXL 互連技術的途徑。此功能將允許GPU 或NIC 等設備直接與其他CXL 設備交互,從而完全消除CPU 作為瓶頸。
“這將非常重要,因為您可以獲得多個需要持續運行的加速器,”他說。
最後,該規範暗示了引入多級交換的CXL 結構。
CXL 網絡結構將是將技術擴展到機架級別之外的關鍵。並且有理由相信這可能會出現在Gen-Z之後的3.0 版本中——他們在去年底將其相干記憶結構資產捐贈給CXL 聯盟。
儘管CXL 對於數據中心的未來可能令人興奮,但不要指望它會在一夜之間取得成功。該技術還處於起步階段,預計將在今年晚些時候推出第一代兼容系統。
Pappas 預計配備CXL 的系統將分階段推出,分層內存和內存池可能是第一個主流用例。
“明年,第一輪系統將主要用於概念驗證,”他說。“說實話,沒有人會採用從未嘗試過的新技術。”
在概念驗證之後,Pappas 預計在該技術最終開始在生產環境中出現之前,至少還要進行一年的實驗性部署。
關於CXL的一些基礎知識
作為一種開放式互連新標準,CXL面向CPU 和專用加速器的密集型工作負載,這些負載都需要在主機和設備之間實現高效穩定的存儲器訪問。
PCI Express (PCIe) 已經存在多年,最近完成的PCIe 基礎規範5.0 版本現在能夠以高達32GT/s 的速度實現CPU 和外設的互連。然而,在具有大型共享內存池和許多需要高帶寬設備的環境中,PCIe 受到了一些限制。PCIe 沒有指定支持一致性的機制,並且不能高效地管理隔離的內存池,因為每個PCIe 層級都要共享一個64 位地址空間。此外,PCIe 鏈路的延遲可能過高,無法高效管理系統中多個設備的共享內存。
CXL 標准通過提供利用PCIe 5.0 物理層和電氣元件的接口來消除其中一些限制,同時提供極低延遲路徑,用於主機處理器和需要共享內存資源的設備(如加速器和內存擴展器)之間進行內存訪問和一致緩存。支持的CXL 標準模式主要圍繞採用x16 通道配置並以32GT/s 運行的PCIe 5.0 PHY(表1)。x8 和x4 通道配置也支持32GT/s,以支持分叉。任何比x4 通道窄或比32GT/s 慢的模式都被稱為降級模式,這類模式在目標應用中顯然不常見。雖然CXL 可以為許多應用帶來立竿見影的性能優勢,但是某些設備不需要與主機進行密切交互,而是主要需要在處理大型數據對像或連續流時發出工作提交和完成事件的信號。對於此類設備,在加速接口使用PCIe 就很合適,而CXL 沒有明顯優勢。
CXL 標准定義了3 個協議,這些協議在通過標準PCIe 5.0 PHY 以32 GT/s 傳輸之前一起動態復用:
CXL.io 協議本質上是經過一定改進的PCIe 5.0 協議,用於初始化、鏈接、設備發現和列舉以及寄存器訪問。它為I/O 設備提供了非一致的加載/存儲接口。
CXL.cache 協議定義了主機和設備之間的交互,允許連接的CXL 設備使用請求和響應方法以極低的延遲高效地緩存主機內存。
CXL.mem 協議提供了主機處理器,可以使用加載和存儲命令訪問設備連接的內存,此時主機CPU 充當主設備,CXL 設備充當從屬設備,並且可以支持易失性和持久性存儲器架構。
三個協議產生的數據都通過仲裁和多路復用(ARB/MUX) 模塊一起動態復用,然後被移交到PCIe 5.0 PHY,進而以32GT/s 的速度進行傳輸。ARB/MUX 在CXL 鏈路層(CXL.io 和CXL.cache/mem)發出的請求之間進行仲裁,並根據仲裁結果復用數據,仲裁結果使用加權循環仲裁,權重由主機設置。ARB/MUX 還處理鏈路層發出的功耗狀態轉換請求,向物理層創建實現有序降耗操作的單個請求。
CXL 通過固定寬度的528 位微片傳輸數據,該微片由四個16 字節時隙組成,並添加了兩個字節CRC:(4 x 16 + 2 = 66 字節= 528 位)。插槽採用多種格式定義,可專用於CXL.cache 協議或CXL.mem 協議。片頭定義了插槽格式,並攜帶允許事務層將數據正確路由到預期協議的信息。
由於CXL 使用PCIe 5.0 PHY 和電氣元件,它可以有效地插入到任何可以通過Flex Bus 使用PCIe 5.0 的系統中。Flex Bus 是一個靈活的高速端口,可以靜態配置為支持PCIe 或CXL。圖2 舉例顯示了Flex Bus 鏈路。這種方法使CXL 系統能夠利用PCIe 重定時器;但是,目前CXL 僅定義為直連CPU 鏈路,因此無法利用PCIe 交換機。隨著標準的逐步完善,交換功能可能會被添加到標準中;如果是這樣,則需要創建新的CXL 交換機。