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