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