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