PCIe NIC SmartNIC CPU AI Kubernetes FPGA

打通伺服器任督二脈 PCIe 5開啟高性能運算新時代

2021-01-27
隨著邁入2020年,智慧網路介面卡(SmartNIC),也即資料處理單元(DPU)開始風靡。它們大量採用FPGA或多核Arm叢集或是兩者混搭,每種做法都能大幅提高求解性能。

 

從股票交易到基因組定序,運算正在以更快速度來求解答案,在主機殼內部,資料管道是PCIe(PCI Express),雖然幾經變革,但它仍然是無可爭議的選擇(圖1)。

圖1  CXL、CCIX和SmartNIC影響PCIe 5解決方案加速

PCIe演進發展

高速周邊元件連接於2003年首次亮相,恰逢網路正要開始從以十億位元乙太網(GbE)躍進更高速的時代。此時,Myrinet和無限頻寬(Infiniband)等高性能運算(HPC)網路剛剛超越GbE,資料速率分別達到2GB/s和8GB/s。不久,10GbE網路介面控制器(NIC)嶄露頭角,而且性能優異。它們在每個方向上的速率接近1.25GB/s,PCIe x8匯流排的誕生恰逢其時。

第一代PCIe x8匯流排在每個方向上的速率為2GB,當時16通道(x16)的插槽尚未問世,伺服器主機板一般只提供一些x8插槽和幾個x4插槽。為了節省成本,部分伺服器廠商甚至使用x8連接器,但卻僅將它們連接成x4。

大部分人都知道,PCIe每發展一代,速度就會提高一倍,近年第四代PCIe x8插槽的速率大約為16GB/s,因此,下一代速率將在32GB/s左右,如果第五代PCIe皆能達到此水準,表示正朝向相當好的發展。不僅如此,它也像阿拉丁神燈一樣神奇,能以CXL和CCIX兩種新協定形式,允諾在CPU與SmartNIC或輔助處理器等加速器之間實現高效的通訊。

CXL

CXL提供了定義清晰的主從模式,在這種模式下,CPU的根聯合體(Multiple Root Complexes)能藉由與加速器卡的高頻寬連結,來共用快取記憶體和主系統記憶體(圖2)。

圖2 通過CXL與處理器相連加速器概念圖
資料來源:Compute Express Link Specification July 2020,0.9版第2次修訂,第31頁

這有助於主機CPU高效地向加速器分派工作並接收處理結果,部分加速器使用DRAM或高頻寬記憶體(HBM),來配備大容量高性能本機電腦存放區。借助CXL性質,現在能把這些高性能記憶體與主機CPU共用,更便捷地在共用記憶體中處理資料集。

2018年,Linux核心最終加入支援PCIe點對點(P2P)模式的程式碼,更方便在PCIe匯流排上的不同設備之間共用資料。雖然P2P早在本次核心更新前就已經存在,但它需要精心除錯才能運行,往往要求使用者能利用程式設計鎖定對等設備進行控制。更新核心後,加速器與PCIe匯流排上的PCIe/NVMe記憶體或另一個加速器間的通訊方式相對簡化。

隨著解決方案日益複雜,簡單P2P已不敷使用,而且會成為解決方案性能的制約因素。使用者近年來運用DIMM插槽中的永久記憶體、NVMe記憶體和直接插在PCIe匯流排上的智慧儲存平台(SmartSSD),搭配各種加速器卡和SmartNIC或DPU。由於在這些設備之間必須實踐通訊功能,因此昂貴的伺服器處理器扮演著代價高昂的交通號誌,並且成為巨量資料流程的瓶頸。CCIX在此情形下就能大顯身手了,其環境適合在PCIe匯流排上的設備之間建立對等關係。

CCIX

有人認為CCIX標準與CXL大同小異,但事實並非如此,在實現匯流排上點對點連接方面,CCIX的方法與CXL截然不同(圖3)。此外,它還能利用不同設備上的記憶體,每個設備具有不同的性能特徵,對這些記憶體進行池化(Pooling),並映射到單一的非統一記憶體存取(NUMA)架構。隨後它建立Virtual Address空間,使池中的所有設備都能存取NUMA記憶體的完整範圍,這已經遠遠超出簡單的PCIe P2P記憶體間複製或是由CXL實現的主從模式。

圖3  三種樣本CCIX配置包括直接附加、交換拓撲和混合菊輪鍊
資料來源:An Introduction to CCIX White Paper,第5頁

作為一種概念,NUMA自上世紀90年代以來一直存在,所以業界對它的理解也十分深入,以此為基礎,當今的大多數伺服器都能輕鬆地擴展到TB或更大容量DRAM記憶體。不僅如此,能映射名為永久記憶體(PMEM)或儲存級記憶體(SCM)的新型記憶體的驅動程式也已存在,它能搭配真實記憶體(Real Memory)建立「巨量記憶體」。綜合運用PCIe 5和CCIX,將會進一步說明系統架構師利用SmartSSD擴展這一概念。

SmartSSD

SmartSSD也稱運算儲存,它將運算元件(通常為FPGA加速器)與固態硬碟中的儲存控制器緊密布局,或在控制器中嵌入運算功能,從而讓SmartSSD運算元件能夠在資料出入硬碟裝置的過程中處理資料,進一步重新定義資料的存取和儲存方式。

雖然SmartSSD最初被視為區塊設備(Block Device),但在FPGA安裝適當的未來驅動程式後,可以當作可按位元組定址的儲存使用,現今生產的SmartSSD 有TB級容量,且容量還會暴增,因此,SmartSSD唯有利用NUMA,才能用於擴展大量存放區概念。如此一來,主機CPU和加速器應用就能跨大量設備存取TB級的記憶體,且無需使用該記憶體重新寫入應用。此外,SmartSSD利用內聯壓縮與加密,同時能提供更佳的TCO解決方案。

引入SmartNIC

具體該如何把SmartNIC與該架構匹配呢?SmartNIC是一種特殊類型的加速器,位於PCIe匯流排和外部網路之間的連接處。SmartSSD將運算放在緊鄰資料的位置上,而SmartNIC則讓運算緊鄰網路。為什麼這一點如此重要?簡單地說,多數人很少關注伺服器應用自身的網路延遲、擁塞、丟包、協定、加密、疊加網路或安全政策等問題。

為了解決這些問題,創建了QUIC等低延遲協議,用於改善延遲問題、緩解擁塞,以及實現丟包檢測與恢復(LPR)技術。目前市場上已開發了TLS並採用核心TLS(kTLS)加以擴展,從加密運行中的資料,保障資料安全,現在看到正在將kTLS當作SmartNIC的一項解除安裝功能添加進來。

為了支援虛擬機器(VM)和容器(Container)的編排,現今創建了疊加網路,隨後又開發了OvS(Open vSwitch)等技術,用於對疊加網路進行定義和管理,SmartNIC正在開始移除OvS。

最終,使用者按照政策進行管理來確保安全。這些政策有望反映在Calico和Tigera等形式的程式設計框架。這些政策很快也將透過使用P4等程式設計,匹配動作框架被移除到SmartNIC,所有這些任務都應該移轉至名為SmartNIC這類專用加速器上。

借助CCIX,架構師可以構建出一個解決方案,作為有單一虛擬位址空間的單項巨量記憶體空間,使多個加速器直接存取真實記憶體和SmartSSD的儲存系統。例如,可使用四個不同的加速器來構建解決方案(圖4)。

圖4  樣本CCIX應用,它使用了修改CCIX 4c-混合菊輪鍊模型

SmartNIC能載入影片解碼器,影片從攝影機導入後,就能轉換回未經壓縮的影格,儲存在NUMA虛擬位址空間的共用影格緩衝區。在這些影格可用後,運行在人工智慧(AI)圖像識別應用上的第二個加速器能掃描這些影格,識別人臉或車牌。與此同時,第三個加速器可以對這些影格進行轉碼,用於顯示和長期儲存。最後,運行在SmartSSD第四個應用,負責在AI和轉碼任務成功完成後,從影格緩衝區刪除掉這些影格。這裡我們用四個高度專業的加速器協作運行,形成所謂的「Smartworld」應用。

現今產業開始添加了更多核心,來解決與摩爾定律相關的問題。如今,雖然核心的數量相當充裕,但CPU與NIC、儲存和加速器等外部元件間的頻寬不足,PCIe Gen5成為下一個關鍵發展點,它能大幅提高頻寬,開啟在CPU上進行高性能運算的時代。

例如,典型CPU核心能處理1GB/s,如果採用雙128核CPU,那麼PCIe Gen4 x16則無法滿足。對於需要在CPU核心和加速器之間進行密切交互的應用來說,CXL和CCIX協定提供的快取記憶體一致性具有諸多優勢,資料庫、安全性和多媒體等主要應用工作負載,現在正開始利用這些優勢。

編排

這項功能指Kubernetes等框架能自動發現並管理加速硬體,並在編排資料庫中將其標記為線上可用,它還需要知道該硬體是否支援上述一個或多個協定。隨著新求解實例請求的進入以及動態啟動,能夠由這些高級協定感知並加速的容器實例就可以使用該硬體。

目前賽靈思開發了一款資源管理器(XRM),能夠與Kubernetes協同工作,管理池中的多個FPGA資源,從而提升加速器的整體利用率。這樣一來,就能自動分派新發布的應用實例,使其在基礎設施中最適當的高性能資源上執行,同時遵守既定的安全政策。

SmartNIC和DPU使用了PCIe 5和CXL或CCIX,提供了高度互聯的加速器,有助於開發複雜、高性能的解決方案。這類SmartNIC能夠把資料中心到全球範圍,向其他系統提供運算密集型連接,甚至能構想這樣一個未來:命令一旦進入Kubernetes控制器,就在SmartNIC資源上以原生運行的方式啟動容器或POD。這個新工作負載的大量運算隨後可能會在伺服器中某處的加速器元件上進行,甚至完全不需要伺服器主機CPU直接參與。

要正確發揮這樣的功能,需要進一步強化安全,使安全水準遠遠高於Calico和Tigera,此外,也需要新的加速器感知安全框架來將安全環境(通常稱為安全飛地)擴展到多個運算平台上。這樣就使得 Confidential Computing有用武之地。它應該同時提供所需架構和API,從而為單個安全飛地內多個運算平台上的使用中資料提供保護。所有敏感資訊隔離設施(SCIF)都是如此。

(本文作者任職於賽靈思)

 

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!