本文由甄建勇翻譯。甄建勇,高級架構師(某國際大廠),十年以上半導體從業經驗。主要研究領域:CPU/GPU/NPU架構與微架構設計。感興趣領域:經濟學、心理學、哲學。
2022 年服務器行業的最大亮點之一將是 Compute Express Link ( CXL)。我們在 2019 年首次宣布 CXL時就有媒體開始報道它。該項目已經從英特爾內部項目發展成了一個廣泛的行業聯盟,并且是我們進入 2022 PCIe Gen5 時代時行業的發展方向。盡管如此,仍有許多人不太了解 CXL,因此我們將嘗試先使用一個簡單的視頻來解釋 CXL:酸橙(Limes)。
視頻版由于我們將在未來幾年內討論 CXL,因此我們提供了此作品的視頻版本,您可以在此處找到。
什么是CXL?
Compute Express Link 是一種緩存一致性互聯,旨在幫助系統(尤其是具有加速器的系統)更高效地運行。CXL位于 PCIe Gen5鏈路基礎架構之上。可以有 PCIe Gen5 設備,但許多PCIe Gen5(或 PCIe 5.0)設備也支持在PCIe或 CXL兩種模式下運行。類似于 AMD EPYC(霄龍)CPU可以將其 I/O通道作為 PCIe或 Infinity Fabric 運行。這不是特定于某個供應商的實現,而是一個廣泛的行業標準。CXL的主要優勢是它允許不同終端上的內存直接支持Load/Store,這就是我們接下來要介紹的內容。
我們將在這里重點關注內存。內存是實現這一目標的關鍵驅動因素,因為超大規模生產商意識到,幾乎每個設備都有板載內存,而內存成本很高,但利用率經常很低。在更高的層次上,CXL 是系統在多個設備之間有效共享和利用內存的工具。我們今天討論的主要是服務器,但CXL也可以應用于服務器之外的領域。
為什么PCIe Gen3/Gen4 不使用CXL?
首先是時間。 CXL 從推出到 2019 年采用, 2021 年末和 2022 年初確實是我們希望看到的支持CXL的第一代芯片。不過,另外一個關鍵的因素是 PCIe Gen5 的迅速普及。整個行業從PCIe Gen3過渡到 Gen4花了大約七年的時間。PCIe Gen5 普及發生在Gen4 之后大約 3 年。Gen5把 PCIe Gen4帶寬翻倍了。由于 CXL位于 PCIe Gen5 之上,所以我們通常會看到 32GT/s x16的控制器,但CXL 也可以支持x8 和 x4。在所謂的“降級”模式下,有一些模式可以進入 x2和 x1。重要的是,PCIe Gen5 x4 鏈路有足夠的帶寬來處理 100GbE 鏈路,因此可見低配下仍然有很大的帶寬,類似于英特爾在2021 年第一季度用PCIe Gen3 x16作為高端互聯的解決方案。
還有,額外的帶寬意味著PCIe將有足夠的能力來處理一類新的應用,特別是那些涉及遠程內存加載/存儲的場景,而前幾代PCIe的處理速度不夠快。
所以,總結來看,為什么CXL沒有早點出來的原因有三。
首先,我們需要 配合PCIe Gen5 的發展時間。
其次,我們需要創建 CXL。
第三,行業采用需要時間。
現在萬事俱備,CXL 就是未來。
Compute Express Link 協議三部曲
CXL 使用三個主要協議:
CXL.io 是用于初始化、鏈接、偵測設備和枚舉以及注冊訪問的協議。它為I/O 設備提供了一個非連貫的加載/存儲接口,類似于 PCIe Gen5。CXL 設備也必須支持 CXL.io。
CXL.cache 是定義主機(通常是 CPU)和設備(例如CXL內存模塊或加速器)之間交互的協議。這允許 CXL 設備以低延遲訪問緩存在主機內存的數據。可以將其理解為為 GPU直接緩存數據在 CPU的內存中。
CXL.memory / CXL.mem 是為主機處理器(通常是 CPU)提供使用加載/存儲命令直接訪問設備內存的協議。將其理解 CPU可以直接使用 GPU或加速器上的內存。
CXL.io 是 CXL中必需的,可以和 CXL.cache或CXL.mem 任意組合。比如 Type 1 (CXL.io + CXL.cache)、Type 2(所有三個)和 Type 3 (CXL.io + CXL.mem)。
CXL 1.0 和 1.1 用法
Type 1 可以將其視為直接訪問主機CPU內存的加速器,比如NIC。Type 2 是我們有一個加速器的情況,比如有內存的 GPU,GPU 可以訪問主機內存,而主機 CPU 可以訪問 GPU 內存。可以將類型 3 視為一種內存模塊,其主要目的是將 CXL 內存設備的內容暴露給主機 CPU。 CXL 1.1 與 2.0
我們將在2022 年初看到大多數的設備將使用CXL 1.1。這些仍然主要是主機 CPU管理的, CXL只用于現有的系統中。CXL 2.0 是真正有意思的東西。使用 CXL2.0,我們可以進行 CXL 切換。CXL的 交換和池等機制,允許將多個主機和多個設備連接到一個交換機,然后設備既可以作為完整設備,又可以作為邏輯設備分配給不同的主機。從CXL 2.0開始我們將看到游戲規則的改變。
CXL 2.0交換池
除了 CXL 2.0 交換和池化機制之外,我們還為協議添加了額外的安全層。
CXL 2.0安全性雖然 CXL 1.0/ 1.1 將是啟動該計劃的重要版本,但 CXL 2.0 是我們真正想要的。這主要是因為我們開始改變服務器架構和部署的方式。CXL 1.1 是必要的,并且有一些應用場景,尤其是加速器和 GPU。不過,CXL 2.0 ,我們希望擁有足夠成熟的軟件以永遠改變服務器的設計方式。 接下來,我們將討論一些示例,并使用我們的Tacos和Limes來幫助那些在幻燈片上難以想象出 CXL 用處的人。 三個 Compute Express Link (CXL) 示例……使用Tacos和Limes那么讓我們來看看Tacos和Limes用例,以及為什么這些用例很重要。這層次太高,也并不完美,但希望這有助于人們對一些高級概念有形象化的理解。
CXL 1.0 和 1.1 用法在我們的示例中,Limes將代表Memory。主機部分將由Rubio的Blackened Mahi Mahi Tacos代表,加速器將由beverage(飲料)代表。
CXL Taco 和 Lime 示例:兩個 Tacos盤的石灰蘇打水
在我們的第一個示例中,也許我們在兩個 Rubio 熏黑的Mahi Mahi Tacos上收到了一個Limes。
CXL Taco 和 Lime 示例:兩個 Tacos 一個 Lime 一個 Soda
這并不少見。大多數體驗過盧比奧炸玉米餅的人都經歷過一次“不足”的事件。事實上,即使是貼在商店櫥窗上的廣告也表明,一個酸橙配三個炸玉米餅可能會發生這種情況。
Rubios 商店櫥窗廣告 3 Tacos 1 Lime
這顯示了配置內存(石灰)的資源效率低下。我們的第一個示例雖然討論了一個可能的操作。也許今天不是酸橙炸玉米餅日,而是酸橙飲料日。在這里,我們可以從主機處理器(玉米餅)訪問酸橙汁(內存)并將其用于我們的飲料。這就是 CXL.cache 和 Type 1 設備示例背后的想法。
通過 CXL.cache Beverage 訪問 CXL Lime
在我們的第二個示例中,我們的處理器(炸玉米餅)來自 Rubios,兩個炸玉米餅只有一個酸橙。這是主機處理器內存不足的示例。我們可以利用中心的酸橙盤中的酸橙汁(CXL內存擴展模塊)。這是 CXL.mem和 Type 3 設備的一個示例。
CXL Taco 和石灰示例板的石灰
理論上,尤其是當我們有交換和池化的 CXL 2.0 后,我們訪問的內存不必是 DDR5。我們可以(理論上)使用英特爾傲騰、GDDR6X 或其他技術等SCM的 CXL設備。不同配置成本不同,應用也不同,但這就是CXL如此重要的原因。
CXL 玉米卷和酸橙玉米卷與柑橘品種 2
在這個用例中,我們可以擁有多種類型的內存,將它們附加到單個系統,然后訪問整個內存設備,或者將設備的一部分用于不同的目的。CXL 2.0 具有熱插拔功能。我們已經知道用于此用例的設備已經出現,所以我們認為熱拔插將非常重要。它還允許比傳統DIMM 外形尺寸更大容量更大的系統內存。 在我們的第三個示例中,讓我們更瘋狂一點,假設我們想在炸玉米餅(處理器)上使用我們飲料中的酸橙(加速器,如 GPU),并在我們的飲料中使用炸玉米餅中的一些酸橙汁。這是 Type-2 設備的示例。
CXL Taco 和Lime 示例 許多炸玉米餅 許多蘇打水 柑橘品種
同樣,事情開始變得真正有趣的地方是,比如說,我們想要 3D XPoint/英特爾傲騰持久內存或存儲類內存 (SCM),而不是我們的標準 DDR5 內存。我們可以將 SCM媒體(檸檬)打包到看起來像我們用于酸橙的東西,現在可以使用檸檬而不是酸橙或檸檬和酸橙的混合物的 Type-3 設備。在 CXL 2.0世界中,GPU和 CPU不再需要各自的 SCM,而是都可以訪問 SCM 甚至是其它連接的大型內存池。 雖然這不是一個完美的例子,但希望上面的照片有助于說明CXL的發展方向。就像在虛擬化中一樣,GPU 訪問主機系統或 Type-3連接設備內存的能力,意味著我們可以更有效地利用資源和系統設計。我們不需要具有與主機 CPU 分開的 Optane 內存的 GPU/AI 加速器。那將是成本高昂且不靈活的。CXL 為系統增加了這種靈活性。CXL 有助于控制成本,同時還增加了架構的靈活性,這類似于幾年前虛擬化帶來的好處。 加強版示例 供應很重要,有效的資源利用也很重要,但讓我們更進一步,想象一下這將如何改變架構。盡管它們在當今的大規模部署中不太常見,但許多企業仍在使用硬件 RAID 控制器。
Broadcom 9500 RAID 控制器
這些通常使用一些關鍵組件和功能進行操作: · 有一個 SoC 控制數據移動、奇偶校驗計算、緩存和存儲/檢索。· 板載 DRAM 用作寫入緩存,通常用作小型讀取緩存。· 電池/電容器 FRU 允許寫入緩存發生在板載 DRAM中,即使斷電也能安全刷新。· 用于板載 DRAM 的閃存存儲,以在斷電時刷新。· 用于管理磁盤的存儲控制器。· SSD 用于主存儲或作為連接到 RAID控制器的緩存設備進行管理。· 通常,這些 SSD 在每個設備上都有自己的斷電保護寫入緩存。現在,想象一下未來會怎樣。DRAM-less NAND SSD 和硬盤驅動器在更高級別進行管理。這可以為每個 SSD移除幾 GB的 NAND。我們可以使用基于 CXL的 SCM(例如 Optane Persistent Memory)并直接寫入該設備,而不是 NAND SSD和 RAID控制器上的斷電保護以及閃存寫入斷電刷新事件數據作為系統的寫緩存。然后,諸如 DPU 之類的協處理器可以管理將緩存從 SCM 寫入本地或網絡存儲的刷新。RAID 卡上的緩存不是幾 GB 可能是 1TB 的主機內存(盡管這基本上不需要,因為我們有 CXL)或CXL DDR5,可以由主機處理器直接訪問,而不是通過 RAID控制器。 這種應用場景給我們的啟發是,如何用服務器中更高性能的本地資源替換傳統存儲陣列并使用橫向擴展存儲?這對行業來說絕對是變革性的,這只是我們聽到的幾家公司正在努力的一個例子。通常,這些應用場景包含更大、更多樣化的內存池和 GPU/AI 等加速器,所以我給了一些不同的示例來說明為什么CXL 可以輕松應付這些個不同的場景。
最后的話
CXL 的關鍵在于,隨著 CXL的普遍采用,服務器架構的嚴格限制將開始消失。這非常重要,因為隨著服務器不斷擴大,這意味著資源得到了更有效的利用。幾年后,我們回顧今天的服務器,就會認為它們是一種傳統的運營模式,就像我們為虛擬化之后的許多應用程序(以及后來的容器)所做的專用服務器一樣。多年以來,這些東西已經被討論過很多次,但我們實際上是在Astera Labs Aries CXL Retimers之外的產品中實施不到一年。
CXL Taco 和Lime示例 許多炸玉米餅 許多蘇打水 柑橘品種
希望本指南可以幫助您了解 CXL 是什么以及它通常要完成的工作。CXL在技術深度方面還有很多,但我們想確保我們的讀者先有一個基本的理解。Tacos和 Lime并不完美,但多年來我們一直在研究相同的圖表,但仍有人不知道 CXL 的影響。我們談論的是PCIe Gen5時代早期的CXL,但我們也有有一個到PCIe Gen6 及以后的路線圖。我們已經討論了一些關于此模型如何擴展到諸如 Gen-Z 之類的結構,以使用某種類似的解決方案實現更大規模部署。 當然,我們將來會有更多關于 CXL 的內容,但我們想先給大家說一下CXL 是啥以及其他一些關于CXL的初級內容。
原文標題:CXL:為緩存一致性而生的新一代總線
文章出處:【微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。
審核編輯:湯梓紅
-
控制器
+關注
關注
112文章
16465瀏覽量
179615 -
cpu
+關注
關注
68文章
10911瀏覽量
213141 -
總線
+關注
關注
10文章
2904瀏覽量
88443
原文標題:CXL:為緩存一致性而生的新一代總線
文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
用于 PCIe Gen-3 卡的高速前端參考設計
PCIe GEN3 ECRC僅在離線模式下出錯
為什么在我的PCIe Gen3插槽上使用VC709不起作用?
請問XC7K325T-2FFG900支持PCIE PHY GEN3嗎?
符合PCIe Gen1,Gen2和Gen3標準的9端口PCIe時鐘發生器
PCIe Gen-3高速前端卡參考設計
Altera率先實現Stratix V GX FPGA與PCIe Gen3交換機互操作
邁威科技PCIe Gen4 NVMe SSD控制器面世!推進下一代技術發展
西部數據推出高性能、輕薄低功耗的PCIe Gen4 NVMe SSD
為什么USB4 Gen4采用 PAM3?
天璣9400性能將超越驍龍8 Gen4?
Xilinx 7系列FPGA PCIe Gen3的應用接口及特性
![Xilinx 7系列FPGA <b class='flag-5'>PCIe</b> <b class='flag-5'>Gen3</b>的應用接口及特性](https://file1.elecfans.com/web2/M00/0A/DF/wKgZomcpzTWANrn1AAPMC10XdL8157.png)
評論