據(jù)報道,Gen-Z 互連背后的推動者正在認輸。資料顯示,制造商 AMD、架構設計公司ARM、兩家服務器供應商戴爾和 HPE、內存制造商美光和 FPGA 專家賽靈思自 2016 年以來一直在開發(fā) Gen-Z,以便通過協(xié)議處理器、PCI- Express 內存和加速器進行通信。
然而,Gen-Z 聯(lián)盟缺少兩個重要的名字:英特爾和英偉達。雖然英偉達最終在 2020 年 8 月加入該聯(lián)盟。但英特爾推出了相互競爭的互連 Compute Express Link (CXL),改聯(lián)盟的支持者有阿里巴巴、思科、戴爾 EMC、Facebook、谷歌、HPE、華為和微軟。
當 AMD、ARM、IBM、Nvidia 和 Xilinx 于 2019 年夏末加入Gen-Z聯(lián)盟時,我們能明顯察覺到它們將面臨困難時期。兩個財團隨后相互合作——但自 2020 年 5 月以來沒有發(fā)布任何新聞稿,Gen-Z也沉默了?,F(xiàn)在,Gen-Z 想要完全停止自己的開發(fā),將這個領域留給 CXL。
Gen-Z 并入 CXL
從CXL支持者提供的消息可以看到,GenZ的做法是希望將所有規(guī)格和資產(chǎn)轉移到CXL聯(lián)盟,但這仍需要各方的同意。值得一提的是,行業(yè)內仍有 CCIX 和 OpenCAPI與之競爭,但行業(yè)正在朝著 CXL 方向發(fā)展。
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。三星已經(jīng)宣布 CXL 內存擴展器為 PCIe DRAM。
前情提要:CXL與GEN-Z聯(lián)手
從某種角度看,再現(xiàn)上世紀80年代末和90年代初的總線大戰(zhàn)會很有趣。供應商之間為爭奪他們所控制的標準而進行的斗爭最終導致了PCI-X和PCI-Express總線的創(chuàng)建,這些總線以及分支InfiniBand interconnect在服務器領域占據(jù)了20年的主導地位,以及分支InfiniBand interconnect,它最初是作為一個通用的交換結構來連接高帶寬和低延遲的所有東西。這可能要比其他情況下花費更長的時間——改寫歷史是很困難的。
但我們可以告訴你的是,我們在過去幾個月里討論過,那些經(jīng)歷過總線戰(zhàn)爭的勇士們已經(jīng)從他們創(chuàng)造的歷史中吸取了教訓,他們不愿意在運輸和協(xié)議方面進行曠日持久的戰(zhàn)斗,這些協(xié)議為混合計算引擎提供了內存一致性。原因是我們沒有時間聽這些廢話,而且隨著全球經(jīng)濟很可能陷入衰退,我們更沒有時間聽這些鬼話和自我膨脹。
這就是為什么我們在同一周于去年9月在圣何塞舉辦了下一次I/O平臺活動,這是一個愉快的巧合,而不是計劃,所有關鍵一致性工作的成員——英特爾的Compute Express Link(CXL)、IBM的Concordent Accelerator Interface(CAPI)和OpenCAPI superset,Xilinx的Accelerators緩存一致性互連(CCIX)和AMD的Infinity Fabric、Nvidia的NVLink互連和Hewlett-Packard Enterprise的Gen-Z互連,以及戴爾早期大力支持的,所有這些都支持Intel的CXL協(xié)議互連,它本身就是PCI Express 5.0的超集,用于連接處理器和加速器并共享它們的內存。我們同時在這里做了一個非常深入的研究,這又是一個巧合。稱之為調和收斂。
CXL和它的連貫內存互連被設計成將處理器與它們的加速器和系統(tǒng)內的內存類存儲連接起來,Gen-Z最初被設計成一個內存結構,可以有許多不同的計算引擎掛在它上面,共享各種各樣的內存。沒有規(guī)定說CXL不能擴展到服務器的金屬外殼之外,以在一個、兩個或三個機架上的多個服務器節(jié)點上提供一致的內存訪問(例如,就像GigaIO正在進行的PCI-Express交換互連一樣)。同樣,也沒有規(guī)定Gen-Z不能用作服務器節(jié)點中的協(xié)議。嗯,根據(jù)經(jīng)濟學原理,CXL可能比Gen-Z更便宜,這主要是由于硅光子學涉及到長距離的相干性。(我們還深入研究了HPE在2019年9月編寫的Gen-Z交換芯片,并且還審查了Gen-Z聯(lián)盟正在原型化以創(chuàng)建池主內存的Gen-Z內存服務器。)
不過,根據(jù)Gen-Z聯(lián)盟主席、戴爾服務器架構和技術主管Kurtis Bowman與CXL聯(lián)盟主席、英特爾技術項目主管Jim Pappas簽署的一份諒解備忘錄,這兩個可能交戰(zhàn)的陣營已經(jīng)埋下了仇恨。他們已經(jīng)決定完全不使用任何hatchets,并努力使CXL和Gen-Z能夠在適當?shù)牡胤交ゲ僮骱突ミB。具體來說,他們已經(jīng)成立了一個聯(lián)合工作組來解決這些分歧,努力使這些技術保持一致。(仔細想想,這似乎是合理的。)
“你可能見過這樣的場景,兩條鐵軌從兩個不同的地方連接過來,但是他們錯過了,”Pappas表示:“這個工作小組的任務是確?;疖囓壍肋B接在一起?!?/p>
Bowman和Pappas在過去的幾個月里都和我們討論過使用CXL作為服務器內部Gen-Z織物的潛在安裝點,我們懷疑這就是他們如何分割Gen-Z硅的方法,直到Gen-Z硅大量生產(chǎn)出來。HPE Gen-Z芯片組的高帶寬硅光子學將是Cadillac版本的連接服務器到內存(要么是原始的、聚合的內存,要么是加速器或協(xié)處理器內部的內存),而CXL端口將是Chevy版本,具有更短的距離和更低的帶寬。
Pappas解釋說:“兩種方案的DNA中都有記憶?!笔褂肅XL,你觸及的范圍有限,因為它基本上是PCI-Express。但有了Gen-Z,您就有了更大的距離——機架、行甚至數(shù)據(jù)中心。但歸根結底,你有一個連貫的CPU接口,即CXL,然后Gen-Z讓你把所有的接口都帶到更遠的地方,讓它工作?!?/p>
目前還沒有嘗試合并傳輸或協(xié)議的說法,但從長遠來看,如果CXL最終成為運行在各種硅光子學傳輸(包括但不限于Gen-Z)上的協(xié)議,我們不會感到驚訝。在某種程度上,PCI Express將不是系統(tǒng)總線,因此CXL不能無限期地綁定到該總線。但是,這是很多很多年以后的事了。
在CXL和Gen-Z的工作方式上存在一些差異,需要協(xié)調,以便它們能夠正確地相互交談。
Bowman解釋說:”CXL是一個真正的硬件一致性設計,應用軟件根本不需要意識到這一點?!啊盙en-Z沒有內置的硬件一致性,因此它正在尋找一個軟件一致性模型,并使用原子等技術來實現(xiàn)這一點。如果您的應用程序想要跨越一個大的內存空間并共享特定的區(qū)域,則必須編寫軟件才能利用這一點。我們無法在硬件中實現(xiàn)Gen-Z一致性的原因是,連接到內存的機器之間的snoop循環(huán)將消耗大部分結構帶寬。你可以兩全其美。如果您需要硬件一致性互連,CXL是一種方法,如果您需要一種結構來共享機架內或跨行的資源,那么Gen-Z是一種方法。但這種一致性將在軟件中實現(xiàn)。“
我們面臨的問題是,誰將成為CXL和Gen-Z的開路先鋒。當然,答案之一是微軟及其龐大的Azure公共云。微軟公司Azure云的杰出工程師Leendert van Doorn是CXL和Gen-Z聯(lián)合體的董事會成員,他分享了一些他對這將如何工作的想法。
”我把CXL看作是一個本地的節(jié)點互連,“van Doorn說?!币坏┠汩_始考慮分解(disaggregation)——特別是在機架級別上——你就需要去做別的事情,因為PCI Express 5.0沒有擴展到那么遠。是的,您可以構建重定時器,而且有些人過去曾經(jīng)構建過基于PCI Express的結構,但他們遇到了一些挑戰(zhàn)。這些都是Gen-Z已經(jīng)解決和解決的挑戰(zhàn),我們現(xiàn)在討論的實際上是CXL和Gen-Z之間的接口。現(xiàn)在,我們是否會看到在一個具有CXL的節(jié)點內以較小的規(guī)模進行分解?是的,當然。我們期待看到。但是,當您可以將其擴展到機架上或希望跨整個機器行進行擴展時,真正的分解收益就會發(fā)揮作用。那就是您需要研究另一種結構(fabric)技術的時候了?!?/p>
那么,微軟如何在其基礎設施中利用CXL和Gen-Z呢?van Doorn給出了一些提示,這些提示與我們一直以來的想法是一致的。例如,我們有基于機架的flash模塊在NVM-Express上共享數(shù)據(jù)到一個服務器機架,我們可以有基于機架的主內存(持久的或動態(tài)的,我們不關心)在Gen-Z上共享數(shù)據(jù)。
”我的服務器大約50%的成本是內存,“van Doorn說。因此,如果我能更有效地使用這些內存,并在系統(tǒng)之間共享它們,就會有巨大的好處。所以你可以想象系統(tǒng)在節(jié)點上有一定量的內存,然后在服務器之間共享另一塊內存,根據(jù)需要從池中取出?!?/p>
一切都會歸結為延遲。van Doorn說,DRAM內存訪問在節(jié)點內部大約80納秒,而通過快速NUMA互連,對遠程存儲器的典型訪問大約為135納秒。雖然操作系統(tǒng)內核可以在一定程度上屏蔽這種影響,但它們是顯而易見的。這就是為什么機架外的主內存池(即使使用Gen-Z)將更具挑戰(zhàn)性,因為它們將增加額外的延遲-根據(jù)范圍的不同,從數(shù)百納秒到毫秒不等。但是,對于其他持久性介質(其固有速度比主存儲器慢),由于該介質增加了設備延遲,使用Gen-Z這樣的協(xié)議跨越許多機架、行甚至更遠,因為Gen-Z結構互連將比設備快得多。而且Gen-Z的延遲比以太網(wǎng)或InfiniBand要低得多,從長遠來看,這應該是row和數(shù)據(jù)中心級存儲互連的首選結構。不管怎樣,這就是理論。
最后,延遲和可替換性的相互作用將發(fā)揮出來,我們認為,一旦這些協(xié)議得到強化,設備出現(xiàn),人們將試圖在服務器節(jié)點中放置盡可能少的內存和存儲,以擺脫并創(chuàng)建可組合池來擴展它。這將是最好的經(jīng)濟和技術意義。
另一個問題是,CXL和Gen-Z何時會成為數(shù)據(jù)中心基礎設施的常規(guī)部分?Gen-Z開發(fā)工具現(xiàn)在已經(jīng)可供聯(lián)盟成員使用,Bowman說早期的采用者將在2022年上線,到2023年到2024年將成為主流。根據(jù)Pappas的說法,對于CXL,硅即將投入使用,它將在2020年進行調試,通常在那之后的一年才會投入系統(tǒng)。
Compute Express Link 標準介紹
Compute Express Link (CXL) 是一種開放式互連新標準,面向 CPU 和專用加速器的密集型工作負載,這些負載都需要在主機和設備之間實現(xiàn)高效穩(wěn)定的存儲器訪問。最近宣布成立了一個支持該新標準的聯(lián)盟,同時發(fā)布了 CXL 1.0 規(guī)范。本文介紹了片上系統(tǒng) (SoC) 設計人員需要了解的一些 CXL 關鍵特性,以確定這種新的互連技術在其 AI、機器學習和云計算應用程序設計中的最佳使用和實現(xiàn)方式。
PCI Express (PCIe) 已經(jīng)存在多年,最近完成的 PCIe 基礎規(guī)范 5.0 版本現(xiàn)在能夠以高達 32GT/s 的速度實現(xiàn) CPU 和外設的互連。然而,在具有大型共享內存池和許多需要高帶寬設備的環(huán)境中,PCIe 受到了一些限制。PCIe 沒有指定支持一致性的機制,并且不能高效地管理隔離的內存池,因為每個 PCIe 層級都要共享一個 64 位地址空間。此外,PCIe 鏈路的延遲可能過高,無法高效管理系統(tǒng)中多個設備的共享內存。
CXL 標準通過提供利用 PCIe 5.0 物理層和電氣元件的接口來消除其中一些限制,同時提供極低延遲路徑,用于主機處理器和需要共享內存資源的設備(如加速器和內存擴展器)之間進行內存訪問和一致緩存。支持的 CXL 標準模式主要圍繞采用 x16 通道配置并以 32GT/s 運行的 PCIe 5.0 PHY(表 1)。x8 和 x4 通道配置也支持 32GT/s,以支持分叉。任何比 x4 通道窄或比 32GT/s 慢的模式都被稱為降級模式,這類模式在目標應用中顯然不常見。雖然 CXL 可以為許多應用帶來立竿見影的性能優(yōu)勢,但是某些設備不需要與主機進行密切交互,而是主要需要在處理大型數(shù)據(jù)對象或連續(xù)流時發(fā)出工作提交和完成事件的信號。對于此類設備,在加速接口使用 PCIe 就很合適,而 CXL 沒有明顯優(yōu)勢。
CXL 標準定義了 3 個協(xié)議,這些協(xié)議在通過標準 PCIe 5.0 PHY 以 32 GT/s 傳輸之前一起動態(tài)復用:
CXL.io 協(xié)議本質上是經(jīng)過一定改進的 PCIe 5.0 協(xié)議,用于初始化、鏈接、設備發(fā)現(xiàn)和列舉以及寄存器訪問。它為 I/O 設備提供了非一致的加載/存儲接口。
CXL.cache 協(xié)議定義了主機和設備之間的交互,允許連接的 CXL 設備使用請求和響應方法以極低的延遲高效地緩存主機內存。
CXL.mem 協(xié)議提供了主機處理器,可以使用加載和存儲命令訪問設備連接的內存,此時主機 CPU 充當主設備,CXL 設備充當從屬設備,并且可以支持易失性和持久性存儲器架構。
三個協(xié)議產(chǎn)生的數(shù)據(jù)都通過仲裁和多路復用 (ARB/MUX) 模塊一起動態(tài)復用,然后被移交到 PCIe 5.0 PHY,進而以 32GT/s 的速度進行傳輸。ARB/MUX 在 CXL 鏈路層(CXL.io 和 CXL.cache/mem)發(fā)出的請求之間進行仲裁,并根據(jù)仲裁結果復用數(shù)據(jù),仲裁結果使用加權循環(huán)仲裁,權重由主機設置。ARB/MUX 還處理鏈路層發(fā)出的功耗狀態(tài)轉換請求,向物理層創(chuàng)建實現(xiàn)有序降耗操作的單個請求。
CXL 通過固定寬度的 528 位微片傳輸數(shù)據(jù),該微片由四個 16 字節(jié)時隙組成,并添加了兩個字節(jié) CRC:(4 x 16 + 2 = 66 字節(jié)= 528 位)。插槽采用多種格式定義,可專用于 CXL.cache 協(xié)議或 CXL.mem 協(xié)議。片頭定義了插槽格式,并攜帶允許事務層將數(shù)據(jù)正確路由到預期協(xié)議的信息。
由于 CXL 使用 PCIe 5.0 PHY 和電氣元件,它可以有效地插入到任何可以通過 Flex Bus 使用 PCIe 5.0 的系統(tǒng)中。Flex Bus 是一個靈活的高速端口,可以靜態(tài)配置為支持 PCIe 或 CXL。圖 2 舉例顯示了 Flex Bus 鏈路。這種方法使 CXL 系統(tǒng)能夠利用 PCIe 重定時器;但是,目前 CXL 僅定義為直連 CPU 鏈路,因此無法利用 PCIe 交換機。隨著標準的逐步完善,交換功能可能會被添加到標準中;如果是這樣,則需要創(chuàng)建新的 CXL 交換機。