本文將詳細闡述 SmartNIC 如何對 PCIe 總線提出更高的要求,以及在 CXL 和 CCIX 等第五代 PCIe 和協議背景下,推動未來實現共享一致性存儲器、高速緩存并建立多主機點對點連接。
過去三十年間,基于服務器的計算歷經多次飛躍式發展。上世紀 90 年代,業界從單插槽獨立服務器發展到服務器集群。緊接著在千禧年,產業首次看到雙插槽服務器,再后來,多核處理器也問世了。進入下一個十年,GPU 的用途遠遠超出了處理圖形的范疇,我們見證了基于 FPGA 的加速器卡的興起。
隨著 2020 年的到來,智能網卡,也即數據處理單元(DPU)開始風靡。它們大量采用 FPGA 或多核 Arm 集群或是兩者混搭,每種做法都能大幅提高求解性能。從股票交易到基因組測序,計算正在以更快的速度求解答案。在機箱內部,數據通道是 PCI Express(高速外圍組件互連,即 PCIe)。雖然幾經變革,但它仍然是無可爭議的選擇。
PCIe 的演進發展
PCIe 于 2003 年首次亮相,恰逢網絡準備開始從以千兆位以太網(GbE)為主要互聯的時代向更高網速的時代躍進。此時,Myrinet 和 Infiniband 等高性能計算(HPC)網絡剛剛超越 GbE,數據速率分別達到 2Gb/s 和 8Gb/s。此后不久,10-GbE 網絡接口控制器(NIC)嶄露頭角,而且性能優異。它們在每個方向上的速率接近 1.25Gb/s,這種 8 通道(x8)PCIe 總線的誕生恰逢其時。
第一代 PCIe x8 總線在每個方向上的速率為 2GB。當時 16 通道( x16 )的插槽尚未問世,服務器主板一般只提供一些 x8 插槽和幾個 x4 插槽。為了節省成本,部分服務器廠商甚至使用了 x8 連接器,但卻僅將它們連接成 x4,這確實十分有趣。
大部分人(像我一樣的架構師)都知道,PCIe 每發展一代,速度就會提高一倍。今天的第四代 PCIe x8 插槽的速率大約為 16GB/s,因此,下一代速率將在 32GB/s 左右。如果第五代 PCIe 皆能達到這一水平,那確實也不錯。不過它還像阿拉丁神燈那樣神奇,能以 CXL 和 CCIX 兩種新協議的形式允諾在 CPU 與 SmartNIC 或協處理器等加速器之間實現高效的通信。
CXL
我們先談 CXL。它提供了定義清晰的主從模式。在這種模式下,CPU 的根聯合體能通過與加速器卡的高帶寬鏈接來共享高速緩存和主系統存儲器(圖 1)。
圖1:通過 CXL 與處理器相連的加速器的概念圖。(來源:Compute Express Link Specification July 2020,0.9 版第 2 次修訂,第 31 頁)
這有助于主機 CPU 高效地向加速器分派工作并接收處理結果。部分此類加速器使用 DRAM 或高帶寬存儲器( HBM )來配備大容量高性能本地存儲器。借助 CXL,現在可將這些高性能存儲器與主機 CPU 共享,從而更便捷地在共享存儲器中處理數據集。
此外,對于原子事務,CXL 能在主機 CPU 和加速器卡之間共享高速緩存存儲器。CXL 在改善主機與加速器間的通信方面有了長足的發展,但未能解決 PCIe 總線上的加速器之間的通信問題。
2018 年,Linux 內核最終加入了可支持 PCIe 點對點( P2P )模式的代碼。從而更方便在 PCIe 總線上的不同設備之間共享數據。雖然 P2P 早在本次內核更新前就已經存在,但它需要精心調試才能運行,往往要求用戶能夠通過編程就對等設備進行控制。更新內核后,加速器與 PCIe 總線上的 PCIe/NVMe 存儲器或另一個加速器間的通信方式相對簡化。
隨著解決方案變得日益復雜,簡單的 P2P 已不敷使用,而且會成為解決方案性能的制約因素。今天我們使用 DIMM 插槽中的永久存儲器、NVMe 存儲和直接插在 PCIe 總線上的智能存儲( SmartSSD ),配以各種加速器卡和 SmartNIC 或 DPU(其中一些本身就具有很大的存儲容量)。由于在這些設備之間必須實現通信,因此我們昂貴的服務器處理器將化身為成本高昂的流量燈,并且成為海量數據流的瓶頸。CCIX 在此情形下就能大顯身手了,其環境適合在 PCIe 總線上的設備之間建立對等關系。
加速器緩存一致性互聯
有人認為 CCIX 標準與 CXL 大同小異,但事實并非如此。在實現總線上點對點連接方面,CCIX 的方法與 CXL 截然不同(圖 2)。此外,它還能利用不同設備上的存儲器,每個設備具有不同的性能特征,對這些存儲器進行池化,并映射到單一的非統一存儲器訪問 (NUMA) 架構。隨后它建立 Virtual Address 空間,使池中的所有設備都能訪問 NUMA 存儲器的完整范圍。這已經遠遠超出簡單的 PCIe P2P 存儲器間復制或是由 CXL 實現的主從模式。
圖2:三種樣本 CCIX 配置包括直接附加、交換拓撲和混合菊花鏈。(來源:An Introduction to CCIX White Paper,第 5 頁)
作為一種概念,NUMA 自上世紀 90 年代以來一直存在,所以業界對它的理解也十分深入。以此為基礎,當今的大多數服務器都能輕松地擴展到太字節( TB )或更大容量的 DRAM 存儲器。不僅如此,能映射名為永久存儲器(PMEM)或存儲級存儲器( SCM )的新型存儲器的驅動程序業已存在,它能與真實存儲器搭配,創建“海量存儲器”。綜合運用 PCIe 5 和 CCIX,將會進一步幫助系統架構師利用 SmartSSD 擴展這一概念。
計算存儲
SmartSSD 也叫計算存儲,它將計算器件(通常為 FPGA 加速器)與固態驅動器中的存儲控制器緊密布局,或在控制器中嵌入計算功能。從而使 SmartSSD 中的計算器件能夠在數據出入驅動器的過程中處理數據,進而重新定義數據的訪問和存儲方式。
雖然 SmartSSD 最初被視為塊設備,但在 FPGA 中安裝適當的未來驅動程序后,可以當作可按字節尋址的存儲使用?,F今生產的 SmartSSD 有數太字節的容量,而且容量還會暴增。因此,只有通過 NUMA,SmartSSD 才能用于擴展大容量存儲器概念,這樣一來主機 CPU 和加速器應用就能跨大量設備訪問數太字節容量的存儲器,且無需使用該存儲器重新寫入應用。此外,通過實現內聯壓縮與加密,SmartSSD 還能提供更佳的 TCO 解決方案。
引入 SmartNIC
具體該如何使 SmartNIC 與該架構匹配呢?SmartNIC 是一種特殊類型的加速器,位于 PCIe 總線和外部網絡之間的連接處。SmartSSD 將計算放在緊挨數據的位置上,而 SmartNIC 則讓計算緊臨網絡。為什么這一點如此重要?簡單地說,我們很少關注服務器應用自身的網絡時延、擁塞、丟包、協議、加密、疊加網絡或安全政策等問題。
為了解決這些問題,創建了 QUIC 等低時延協議,用于改善時延問題、緩解擁塞,以及實現丟包恢復。我們已經開發出了 TLS 并采用內核 TLS(kTLS)加以擴展,以加密運行中的數據,保障數據安全。我們現在看到正在將 kTLS 當作 SmartNIC 的一項卸載功能添加進來。
為了支持虛擬機(VM)和容器的編排,我們創建了疊加網絡。隨后又開發出 Open vSwitch( OvS )等技術,用于對疊加網絡進行定義和管理。SmartNIC 正在開始卸載 OvS。
最終,我們按照政策進行管理以確保安全。這些政策有望反映在 Calico 和 Tigera 等形式的編排框架中。這些政策很快也將通過使用 P4 等編程匹配動作框架被卸載到 SmartNIC。所有這些任務都應該卸載到名為 SmartNIC 的這類專用加速器上。
借助 CCIX,架構師可以構建出一個解決方案,作為有單一虛擬地址空間的單個超量存儲器空間,使多個加速器直接訪問真實存儲器和 SmartSSD 中的存儲。例如,可使用四個不同的加速器來構建解決方案(圖 3)。
圖3:圖中所示的是樣本 CCIX 應用,它使用了修改的 CCIX 4c-混合菊花鏈模型。
SmartNIC 能加載視頻解碼器,視頻從攝像頭導入后,就能轉換回未經壓縮的幀,存儲在 NUMA 虛擬地址空間的共享幀緩存中。在這些幀可用后,運行在人工智能( AI )圖像識別應用上的第二個加速器能掃描這些幀,識別人臉或車牌。與此同時,第三個加速器可以對這些幀進行轉碼,用于顯示和長期存儲。最后,運行在 SmartSSD 上的第四個應用負責在 AI 和轉碼任務成功完成后從幀緩存中刪除這些幀。這里我們用四個高度專業的加速器協作運行,形成所謂的“Smartworld”應用。
行業開始添加了更多內核,以解決與摩爾定律相關的問題。如今,雖然內核的數量相當充裕,但 CPU 與 NIC、存儲和加速器等外部器件間的帶寬不足。PCIe Gen5 是我們的下一個關鍵發展點。它能大幅提高帶寬,開啟在 CPU 上進行高性能計算的時代。
例如,典型的 CPU 核心能處理 1Gb/s+,如果你采用雙 128 核 CPU,那么 PCIe Gen4x16 是不夠用的。對于需要在 CPU 核心和加速器之間進行密切交互的應用來說,CXL 和 CCIX 協議提供的高速緩存一致性具有諸多優勢。數據庫、安全性和多媒體等主要應用工作負載現在正開始利用這些優勢。
編排
這個問題的最后一個環節是編排。這項功能指 Kubernetes 等框架能自動發現并管理加速硬件,并在編排數據庫中將其標記為在線可用。它隨后還需要知道該硬件是否支持上述一個或多個協議。隨后,隨著新求解實例請求的進入以及動態啟動,能夠由這些高級協議感知并加速的容器實例就可以使用該硬件。
賽靈思已開發出賽靈思資源管理器(XRM),能夠與 Kubernetes 協同工作,管理池中的多個 FPGA 資源,從而提升加速器的整體利用率。這樣一來,就能自動分派新發布的應用實例,使其在基礎設施中最適當的高性能資源上執行,同時遵守既定的安全政策。
SmartNIC 和 DPU 使用了 PCIe 5 和 CXL 或 CCIX,將為我們提供高度互聯的加速器,有助于開發復雜、高性能的解決方案。這類 SmartNIC 將在我們的數據中心內乃至整個世界范圍內,向其他系統提供計算密集型連接。甚至可以構想這樣一個未來:命令一旦進入 Kubernetes 控制器,就在 SmartNIC 資源上以原生運行的方式啟動容器或 POD。這個新工作負載的大量計算隨后可能會在服務器中某處的加速器器件上進行,甚至完全不需要服務器主機 CPU 的直接參與。
要正確發揮這樣的功能,我們就需要進一步強化安全,使安全水平遠遠高于 Calico 和 Tigera。此外,我們也需要新的加速器感知安全框架來將安全環境(通常稱為安全飛地)擴展到多個計算平臺上。這樣就使得 Confidential Computing 有了用武之地。它應該同時提供所需架構和 API,從而為單個安全飛地內多個計算平臺上的在用數據提供保護。
所有敏感信息隔離設施(SCIF)都是如此。計算機中的安全飛地應能覆蓋多個計算平臺,而激動人心的時刻就在眼前。
責任編輯:xj
原文標題:基于第五代 PCIe 的 SmartNIC 如何改變方案加速規則
文章出處:【微信公眾號:FPGA開發圈】歡迎添加關注!文章轉載請注明出處。
-
總線
+關注
關注
10文章
2888瀏覽量
88131 -
PCIe
+關注
關注
15文章
1241瀏覽量
82718 -
SmartNIC
+關注
關注
0文章
19瀏覽量
3216
原文標題:基于第五代 PCIe 的 SmartNIC 如何改變方案加速規則
文章出處:【微信號:FPGA-EETrend,微信公眾號:FPGA開發圈】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論