CXL背景介紹
CXL (Compute Express Link) 是由電腦科技的行業巨頭組成的聯盟 — Compute Express Link Consortium(CXL Consortium)所開發和定義的,主要成員包括英特爾 (Intel)、超微半導體 (AMD)、三星(Samsung)、SK海力士 (SKHynix)、美光 (Micron)、戴爾 (Dell)、惠普企業 (Hewlett Packard Enterprise)、Microchip Technology…等。CXL 協定發展經歷過1.0、1.1、2.0、以及最新的3.0版本,如今市場上已經陸續出現支援 CXL 1.1 和 2.0 的產品,3.0 協定還在開發中;協定本身更是吸引了一群大型科技公司積極參與其中。今天來了解一下什麼是CXL協定。
CXL協定是一種用於加速 CPU 和 Device(設備)之間資料傳輸的協定,主要應用於人工智能和機器學習等領域,以解決在這些應用中需要高效率的資料交互的需求。隨著PCIe協定的發展,到了5.0版本後,像需要大量 IO 資料交互的人工智能應用,開始遇到性能瓶頸的問題。為了突破這個瓶頸,引入了CXL協定的概念。
CXL協定能解決哪些問題?
首先,CXL 協定解決了共享隨機存取記憶體 (RAM) 的問題,在支援 PCIe 協定的設備中,每個設備都擁有自己的 RAM,但這些 RAM無法被 CPU 統一編址,因此無法直接進行調用,這導致了延遲的問題;CXL協定引入了共享 RAM 的概念,允許 CPU 對所有設備上的 RAM 進行統一編址,從而實現了彼此之間的互相調用。
其次,CXL 協定解決了高延遲的問題,例如:CPU 和 GPU (Graphics Processing Unit)之間的資料交互,需要經過多個節點,包括CPU 緩衝記憶體(Cache)、CPU RAM、PCIe 鏈路、GPU RAM和 GPU Cache 等,這些節點和 IO 頻寬限制導致了延遲的增加;為了降低延遲,我們希望 CPU 能夠直接存取 GPU 的RAM,從而避免了繁複的資料傳輸過程。CXL的功能特性中,CXL 2.0 版本引入了 FLIT(可變長度介面傳輸,Flexible-Length Interface Transport) based transfers 功能,使用 544 位元的 FLIT 模式進行資料傳輸,這種模式可以降低資料傳輸的延遲,類似於 NVMe 協定中的隊列概念。
CXL2.0增加的新功能
CXL2.0版本引入了一些新功能,包括以下方面:
Switching(交換功能):
增加了交換功能,大大擴展了 CXL 和設備的應用情境,這表示不再限制只能連接到 CPU 的根埠,而是可以透過交換設備進行更靈活的連接。
Resource Pooling(資源池):
引入了全新的RAM資源池模式,改變了整個資料中心的硬體架構,這種模式允許多個設備共享RAM資源,提供更高效的資源管理和利用。
Fabric Management 以及 CXL EP enumeration過程(傳輸管理和列舉過程):
Fabric Management(傳輸管理)
是指對 CXL 連接的資料傳輸進行管理和控制的功能。它包括路由、流量控制、拓撲配置等方面,確保資料的有效傳輸和設備之間的通訊順暢。
CXL EP enumeration(CXL設備列舉過程)
是指在 CXL 協定中,CXL EP enumeration 過程是指系統對 CXL 設備進行識別和配置的過程,它確定了 CXL 設備的存在並分配唯一的設備ID;透過這個過程,主機系統可以確定與哪些CXL設備進行通訊,並確保它們能夠正確地工作在CXL架構下運作。
CXL 協定的設計考慮到了 PCIe 的列舉過程,使得 CXL 設備能夠按照類似的方式進行列舉和通訊;這種設計的好處是讓開發人員可以借鑒,並應用已經熟悉的 PCIe 列舉概念和方法來開發 CXL 設備。
PCIe是一種常用的計算機匯流排標準,擁有成熟的列舉機制和驅動程式的支援,透過將 CXL 設備列舉為 PCIe 設備,開發人員可以在開發過程中更容易理解和應用現有的 PCIe 相關知識和工具;這也有助於提高開發效率,減少學習成本,並確保 CXL 設備與現有的 PCIe 生態系統相容。
安全性: 引入了 IDE(鏈接完整性與資料加密)功能,提供資料加密和鏈接完整性保護的能力,增強了系統的安全性。
引入 PCIe 協定的功能:
包括熱插拔(Hot Plug)、QoS(Quality of Service)以及錯誤上報等功能。這些功能可以提高系統的可靠性和管理能力。
相容性:
保持向後相容 CXL1.1 協定,確保現有的 CXL 設備可以在新版本中繼續使用。
接下來具體看CXL的三個子協定及其對應的三種設備。
首先它有三個子協定 — CXL.io、CXL.cache、CXL.memory
CXL.io 和 CXL.cache 是 CXL 協定中的兩個子協定,它們的功能和用途有所不同,主要是為了引入非對稱的概念;CXL.io 類似於 PCIe 的事件(event),主要用於初始化、鏈接、設備發現、列舉以及寄存器 (register) 的存取,從某種程度上說,它可以看作是PCIe事件的一個變種。
CXL.cache 則是用於設備(device)去使用主機(host)的主要 RAM,這表示設備可以直接存取主機的RAM,並且需要與 CPU 的 Cache 保持資料一致性;如果沒有有效的通訊和同步,可能會出現 RAM 使用衝突或不存在的問題。
另一方面,CXL.memory則是 CPU 使用設備上的 RAM;在這種情況下,CPU可以直接存取設備上的RAM,而不需要與設備的 Cache 進行交互;這是因為 CPU 的 Cache 直接使用設備上的 RAM,因此可以直接進行通訊,而無需額外的同步操作。
總結來說,CXL.io 和 CXL.cache 的使用方向和目的不同,因此被拆分為兩個子協定;CXL.io 類似於 PCIe 事件,用於設備和主機之間的通訊和初始化過程;而 CXL.cache 則用於設備存取主機的 RAM 並保持資料一致性;另一方面,CXL.memory 則是 CPU 直接使用設備上的 RAM,無需與設備的 Cache 進行交互,這樣的設計使得 CXL 協定在不同的使用情境中更具靈活性和效能。
基於這三個子協定,衍生出三種不同的設備類型;其中,CXL.io 是所有設備都需要的協定,因為它包含了設備的列舉過程,使其能夠被識別和通訊;另外兩個協定則是進行組合以產生更具特定功能的設備。
第一種設備類型是智慧網卡,它擁有快取(Cache)但沒有獨立的隨機存取記憶體(RAM);相反,它直接使用 CPU 的記憶體,這使得在 CPU 處理資料時非常迅速;由於記憶體就在設備內部,它可以直接讀取和處理資料,這是它的優勢。
第三種設備類型則只擁有隨機存取記憶體(RAM)而沒有快取(Cache);換句話說,它實際上是 CPU 的一種無限擴展的記憶體;傳統 CPU 主機板上的記憶體插槽有限,且主機板的空間有限,即使提高單條記憶體的容量也有限制。
當能夠無限擴展 CPU 的 RAM 時,理論上可以擁有無限的 RAM 容量。目前許多廠商都在嘗試開發擴展記憶體容量的產品;回顧第二類設備,它們適用於智慧加速卡,整合了前兩類設備的功能,同時支援三個子協定。
在圖中可以看到,有一條虛線表示快取(Cache),實際上,這個快取可以進行動態調整,主要原因是這些設備並不運行 CXL 協定,而是使用 PCIe 協定;設備在使用自己的 RAM 時效率很高,但如果將設備的 RAM 交由 CPU 管理,設備在使用自己的 RAM 時,就需要與 CPU 進行交互並獲得許可,這會降低效率。
在這種情況下,設備就具有了主從(Master and Subordinate)的概念,這代表設備上的快取可以作為主要快取,當設備使用自己的RAM時速度很快。當 CPU 需要使用設備上的 RAM 時,則使用 CPU 的快取和設備上的 RAM 進行資料交互,然後使用設備的 RAM;這種方式優化了設備上使用自己 RAM 的效率。
總結而言,這種設計能夠提高設備的性能,同時兼顧了 RAM 擴展和快取的使用,以便在加速卡等應用中獲得更好的效果。
CXL的配置
CXL 的配置速率為 32G,支援X16、X8、X4、X2通道,同時它還支援 Bifurcation 功能,它允許將一個 PCIe 或 CXL 通道,拆分成多個獨立的通道,例如將一個1x16通道拆分成2x8、4x4等配置,這樣就可以同時連接多個通道的設備。Bifurcation功能的存在使得系統設計更靈活,可以更有效地利用通道的頻寬,並支援多個設備同時進行高速資料傳輸;這對於需要連接多個高性能設備的應用情境非常有用,例如高速網卡、儲存加速器等。
此外,CXL還支援降速功能,可從Gen4降至Gen3速率。需要注意的是,雖然速率下降,但硬體仍需支援 PCIE 5.0。
圖片來源:cadence
接下來,我們具體來看協定層的關係圖,從物理層開始,自下而上。物理層分為電極層和邏輯層,與 PCIe 的物理層相似。然而,CXL引入了 Flex Bus port(柔性匯流排端口)的概念,它是位於 CXL 協定的物理層的一個模組,負責選擇上層是使用 PCIe 的鏈路層、還是 CXL 的鏈路層;在物理層的設計中,Flex Bus port 可以根據需要,靈活地選擇使用不同的匯流排(bus),即 PCIe 或CXL,這個選擇取決於連接的設備和應用的要求。
如果選擇使用 PCIe 的鏈路層,Flex Bus port 將直接將資料傳遞給 PCIe 匯流排,並不做任何額外的處理。 而如果選擇使用 CXL 的鏈路層,Flex Bus port 則會對資料進行仲裁和轉發的操作,它將根據指定的規則判斷資料應該被轉發到哪個 CXL 鏈路層,並維護整個鏈路的狀態,這樣可以確保資料能夠正確地流向目標設備。
這是 CXL 資料交互的過程,分為五部分:
VIAVI Xgig CXL協定分析
在 CXL 協定中,FLIT(Flit-level Interface Transport)數據包具有特定的結構,用於在 CXL.cache 和 CXL.memory 之間進行資料交互。CXL.cache 定義了幾個重要的概念,首先是 D2H(Device to Host),指的是從設備到主機的資料傳輸方向;H2D(Host to Device)則表示從主機到設備的資料傳輸方向。這兩個方向各自定義了三個通道:Request、Response 和 Data。
在實際的資料交互過程中,FLIT 數據包包含一個 Snpdata 字段,用於保持緩衝記憶體(Cache)的一致性,還有一個 UQID(Unique ID)字段,用於追踪整個資料傳輸的進程。此外,FLIT 數據包還使用一個隊列概念,使用5E(5-bit Encoding)來追踪相關資料傳輸的連接狀態,並為每個任務分配一個唯一的ID。
簡單的資料交互過程可以描述為主機從設備讀取一個 RAM,然後設備回應一個比較結果,當CPU讀取設備上的RAM時,它的 Cache 位於自己的那一側,不需要維護設備的Cache,直接使用設備的 RAM 即可。需要注意的是,CXL.cache 和 CXL.memory 的應用情境是分開定義的,因此兩者的資料結構完全不同。
CXL 協定使用固定寬度的數據包(Flit格式)來傳輸資料,你可以將其想象為一輛列車車廂,其中有四個位置,每個位置都有一個固定的格式來放置“物品”(攜帶資料),這種結構確保了資料的有序傳輸和準確解析。
VIAVI 針對 CXL 提出來的測試解決方案 :Xgig TraceView (上圖) 它是一種用於 CXL 協定分析的工具,可以將數據包的內容以事件的形式列出,方便查看資料,並顯示該傳輸是否正常完成,以及所花費的時間等參數。
此外,資料交互傳輸類似於一個讀取操作,跨越多個流量控制單元(FLIT)封包,第一個 FLIT 封包發送一個命令,然後總共回傳了8筆資料,但第一個 FLIT 封包只有 3 筆資料,第二個 FLIT 封包有 8 個請求,而後面的 PldSlots 中有 3 筆資料,還缺少5個,第二個 FLIT 封包提供了 4 筆資料,還缺少1個;最後一行的 PldSlots 補充了缺少的資料。因此,在CXL中,一個TLP(Transaction Layer Packet)可能跨越多個 FLIT 封包,需要將這些資料拼湊在一起,才能完整查看整個資料交互過程。
對於 CXL 協定來說,它攜帶的附加信息非常多,優勢在於在高速資料傳輸時,攜帶資料的能力越強,速率越高,資料量越大,特別是在 Flit 模式下,低延遲和高速率的優勢就越明顯。因此,CXL 主要應用於這種高速傳輸的情境。
VIAVI理解在開發CXL時會碰到的問題,因此所提出的Xgig 協定分析儀提供了豐富且完整的觸發條件,用因應各種問題時,需要進行觸發的需求,當出現要觸發的 CXL 資料或現象時,可以及時觸發,並設置在該事件出現時所需的前後現象,以方便問題的定位和分析。
此外,Xgig CXL 分析儀還可以對大量所抓取的資料進行全觀性能分析,例如分析 CXL 的延遲最大值、最小值,速率的最大值和最小值,以及 FLIT 封包的一些極限值、和時間上的最大最小值,從而進行性能統計和計算。 由於Xgig提供全觀分析,也代表可以快速比較不同平台之間,在同樣CXL行為下的差異。
VIAVI Xgig PCIe 5.0/CXL 2.0 分析儀介紹
自2020推出了PCIe Gen5×16 的硬體產品系列,速率最高支援到 Gen5×16 PCIe 鏈路,並可進行向下相容;它有業界最大的存儲空間,最高可達256GB;同時,針對256GB大容量切分功能可進行彈性運用,用戶可一次或分段使用儲存空間,進行不同觸發條件的行為錄製。
且VIAVI Xgig for PCIe solution提供業界獨有連線看錄製結果(Trace)的功能,不需等待長時間將錄製結果下載至電腦,即可進行檢視。此功能可搭配256GB大容量切分功能,可同時抓取不同情境的錄製結果,並可逐一檢視後,僅存取重點資料到電腦端,大量節省傳輸時間與電腦容量需求。
VIAVI Xgig PCIe 5.0/CXL 2.0 分析儀 支援了PCIe 5.0解析並向下相容4.0~1.0規範,同時也支援NVM Express(NVMe)解碼,以及CXL 1.1和2.0分析,另外該主機還支援 Exerciser 的模擬協定一致性以及支援協會Compliance測試,另外VIAVI 支援獨有的 Jammer,可以在維持待測物系統原始訊號的情況下提供Inline錯誤注入,來重現客戶問題,或是驗證產品除錯能力。
為何選擇翔宇科技:
VIAVI Solutions 已經通過 PCI SIG 協會 4.0/5.0 的認證評估,可以從協會的官網看到我們的 MOI 文件。
VIAVI Solutions 在上海擁有一個研發中心和實驗室,在資料支援方面非常便利,特別是對於亞洲客戶的功能需求,台灣與新加坡也有FAE據點提供客戶技術支援;相較於許多傳統外資公司將需求轉交給美國,再由美國的研發團隊分析問題的方式,VIAVI Solutions 在亞洲區的實驗室可以處理各種問題,對於在不同環境下的重現和模擬非常有利。
翔宇科技具有豐富客戶服務經驗,可提供客戶設備安裝及時問題排除、Trigger設置建議、基本協定說明、檢視可能問題等,再搭配VIAVI PCIe protocol 分析設備,可提供客戶快速找到問題與對應方案。
延伸閱讀
Podcast-AI發展的關鍵角色: CXL技術與產業資訊 >
匯流排協定測試解決方案總覽 > 翔宇科技代理了各種匯流排協定測試解決方案,包括:PCIe、NVMe、CXL、Serial Attached SCSI、Serial ATA、Fibre Channel、Ethernet、MIPI M-PHY、 UniPro、UFS、A-PHY、I3C、USB、CAN、I2C、SPI、eSPI 等測試工具。