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