Nvidia Smart NIC 不單是 Arm 與 GPU 送做堆,而是「掀起革命一角推翻 x86」的起點

作者 | 發布日期 2021 年 04 月 27 日 8:00 | 分類 GPU , IC 設計 , 晶片 Telegram share ! follow us in feedly


「建築詩人」王大閎提案國父紀念館設計時,因西方色彩過度濃厚,屢遭審查委員「打槍」,其中看似「小女孩揚起的裙角」掀起屋頂,連當時的蔣總統都直言「正面的屋頂不應掀起」,但王大閎卻堅定回應:孫中山既然推翻滿清,要紀念他,自然不宜沿用清朝的建築形式,且正面掀起的屋頂,隱喻的正是孫中山領導的辛亥革命「掀起革命的一角」,也成為我們現在看到的國父紀念館。

結論先寫在這裡:Nvidia 之所以願意耗資 70 億美元併購 Mellanox,就是想幹一樣的好事:從 Smart NIC「掀起推翻 x86 革命的一角」。

這次 Nvidia 自家 GTC 2021 主題演講,「皮衣教主」黃仁勳在自家廚房端出的大餐,分量似乎有點太多了,讓坊間科技媒體的報導普遍溢出滿滿「消化不良」的「深度分析」。

當眾人眼球似乎都聚焦 Nvidia「總算」推出針對高效能運算的 Grace 處理器 (拜託,Nvidia 自己做 CPU 又不是頭一次,有點歷史感的人還記得 Project Denver 嗎?)離打倒 x86 霸權的終極目標,似乎又更近了一步,然後對於從 Smart NIC「正名」而來的 Bluefield DPU,則是「啊,反正又是更新一代罷了」,沒有給予足夠重視──即使 Bluefield-3 是塞了 16 個 Arm A78 核心的怪物。

但相較於「終於將 Arm CPU 與 Nvidia GPU 送做堆」(相信很多人多年來一直會有這樣的疑惑「在 GPU 內塞個 Arm 處理器,有這麼困難嗎」),也不知道是否真的可解除過去 GPU 記憶體容量不足這個老毛病的 Grace,本質上為「大 x86 伺服器裡的小 Arm 伺服器」的 DPU,讓它越長越大,才是 Nvidia 有機會從看似邊緣的 Smart NIC「掀起推翻 x86 革命的一角」,更罔論 Grace 這東西能否適用一般雲端資料中心與符合雲端業者的泛用性標準,也是個超級大問號。

但了解什麼是 Smart NIC(Network Interface Controller)之前,還是得先複習兩個科技人應當耳孰能詳的名詞:軟體定義網路(SDN,Software-Defined Network)和網路功能虛擬化(NFV,Network Function Virtualization),和兩個關鍵性技術:OpenFlow 資料轉發面協定與 P4 封包處理器描述語言。假如你早就很熟悉這些東西,強烈建議快轉到最後一段。

近年來,因軟體定義網路、OpenFlow 協定、網路功能虛擬化和 P4 封包處理器描述語言的普及,資料中心需要高度可編程化的 Smart NIC,也因為 Nvidia 併購 Mellanox,被貼上 DPU 一詞。根據 Nvidia 皮衣教主說法:DPU 意義在於將資料中心的基礎架構,融入單一晶片(DOCA,Data-Center-Infrastructure-On-A-Chip Architecture),以「實現具有突破性的網路、儲存和安全性能」。

這段話就道盡 Nvidia 神祕的野心了:讓 x86 處理器「越來越不重要」。

不論叫 Smart NIC 還是 DPU,性能與功能早遠遠超過一般個人電腦玩家認知的「只要網路有通就可以的網路卡」。資料中心的乙太網路頻寬,動輒 100Gb/s 甚至邁向 400Gb/s 之際,只仰賴多核心 CPU,將難以支撐穩定的資料輸出量。最起碼「理論上」聽起來沒錯啦。

那麼為何 Nvidia 會相信目前的發展趨勢,會讓他們有機會推翻 x86 的政權?這就得先從 SDN 開始講起。

讓網路管理有如提線木偶的 SDN

隨著伺服器虛擬化、雲端計算和 Web 化應用的普及,越來越多的小型企業機房,合併到更大更複雜的巨型資料中心,導致水漲船高的網路設備管理負擔和成本。

傳統網路設備如交換器和路由器,都形同某個「黑盒子」,並來自眾多供應商,結果就是很難有統一管理平台,或就算有,也是限定某幾間網通設備大廠。大多數 ISP 和資料中心業者,不可能不意識這個問題,或多或少也自行嘗試開發統一管理工具,但能做的其實非常有限。不僅如此,網路管理者也難以掌握整體網路架構,因封包轉發路徑,很可能都是透過動態協定自動計算產生,管理員很難即時知道到底哪裡發生壅塞(Congestion),是否還有更優良的路徑可供選擇。

偏偏一個巨大的網路架構,涉及大量琳瑯滿目的協定(像路由協定就有 RIP、IGRP、OSPF、EGP、BGP、IS-IS),並且有些還是專屬於某些廠商者(像 Cisco 的 E-IGRP),背後技術原理也截然不同(像路由協定就可約略分為 Distance Vector 和 Link State 兩種體系,還沒算到 BGP 的 Path Vector),這也激增資料中心部署新業務的時間。

所以 SDN 的精神,在於改變傳統網路控制資料流的方式,剝離出網路設備的「控制面」,統一集中到外部伺服器,為集中式控制器(SDN Controller),搭配使用「南向」(Southbound)資料控制協定,如最普及的 OpenFlow 是 SDN 控制器與交換器之間的互動協定,具體定義交換器在資料轉發面(Data Plane)的功能,並規範封包的種類和格式,集中管理封包轉發路徑的所有設備,提供網路管理者全局視野,讓網路管理形同「提線木偶」。

更白話一點,SDN 透過軟體改變網路架構與機能,分離網路設備的控制層與資料層,由取得全局視野的控制層,以便集中式控管整個網路,並對網路設備下達指令,不需要一台一台調整獨立的網路設備,資料層僅負責傳輸封包,有效運用網路頻寬,並提升網路使用率。不限於資料中心,SDN 同時也適用很多網路相關應用領域,像資訊安全、無線網路、企業網路和電信網路等。當然,物聯網邊緣運算亦同,經由 SDN 實現「隨選隨用」(On-Demand)以削減網路頻寬成本,也是 SDN 在邊緣運算訴求的重點之一。

此外,這個控制器並可透過開放的「北向」(Northbound)應用程式界面(API),讓上層應用程式藉由編程控制,更利於讓網路虛擬化,讓網路配置更靈活,提高業務部署效率。

簡而言之,SDN 讓整個網路彷彿變成「巨大的可編程軟體」,可隨時因應不同的業務需求動態調整。

至於說到世上最知名也最經典的商用 SDN 部署案例,莫過於 Google 同步全球 12 座資料中心的 G-Scale 廣域網路的 B4 廣域網路流量工程(TE,Traffic Engineering)。Google 在 2009 年祕密啟動 OpenFlow 專案,2010 年 1 月開始導入,2012 年則全面啟用於所有資料中心,那時還正是一堆人「清談」SDN 的高峰期,不難想見 Google 在 2012 年的 ONS2012(開放網路高峰會)公諸於世時,並努力分享 Google 經驗時,引起多巨大的震撼和迴響。

Google 將網路分成三個層次,由下往上,分別是物理交換設備層(OpenFlow Switch Hardware)、局部網路控制器(Site Controller)和全局流量工程伺服器(Central TE Server)。

經過 SDN 改造後,Google 全球各地資料中心之間的廣域網路,頻寬利用率從 30%~40% 激增到逼近 100%,大幅降低頻寬成本,管理更簡單,網路更穩定,交換器更不需配置高容量緩衝記憶體,況且還是 Google 自行設計 OpenFlow 交換機,再交由 ODM 廠商代工,價格更便宜。大多數人還在高談 SDN 當下,Google 早就汲取精神,並實用化。後來人工智慧 TPU(Tensorflow Processing Unit)也是遠遠走在「熱門議題」之前,隱藏在背後的深意,不言可喻,這就是雲端霸主的實力,真想要做,統統都可以自己來。

但也因為 Google 的驚人成功,讓世人產生了一些對 SDN 的誤解,特別是交換器和網路卡晶片的 OpenFlow 支援性「到底該做到什麼程度」。支援 OpenFlow 的晶片,邏輯上主要由 2 部分組成:端口(Port)和流表(Flow Table),所謂 Flow 意指「在同段時間內,經過同段網路,並有相同屬性(如相同 TCP port)的訊息」,每個流表項目(Flow Entry)對應網路傳輸的「一條流」,也是 OpenFlow 最核心的元素,就像原子組成所有物質的概念。

乍看之下,OpenFlow 晶片看似無所不能,可謂「以簡馭繁」,反正所有的網路傳輸都變成一條一條的流,轉發行為如此簡單,沒有任何狀態機(State Machine),一切都是 Match(匹配)→Action(行動),想怎麼動就怎麼動,統統和網路協定沒有任何相依性,足以應對未來的網路技術發展。

但天底下沒有白吃的午餐。依據 OpenFlow 標準,允許可以使用任意的字段組合,做搜尋任何一張流表。這代表這張流表需要使用「內容定址記憶體」(CAM,Content-Addressable Memory),事情就麻煩了。

有別於我們熟知的隨機存取記憶體(RAM,Randon Access Memory),CAM 為了判斷某筆資料是否儲存其中,會搜索全部的記憶體內容。如果找到這個資料位元組,CAM 將回覆由一個或者多個位址所組成、存儲這筆資料的列表。也只有三個輸入的 T-CAM(Ternary CAM)才能隨意的掩蓋掉任何想掩蓋的查找字段。T-CAM 電路複雜度和發熱量,相當於傳統 DRAM「5~6 倍」,讓所有有志於 OpenFlow 晶片的廠商都如臨大敵。

更何況,OpenFlow 還有「多級流表」的概念,每層級的流表內容還會彼此互動,晶片廠商真的硬幹出「從頭到尾和任何網路協定統統無關的 OpenFlow 交換晶片」,固然得到無所不能的可編程能力,卻創造貴到不行的巨無霸。處理器的世界,一直有條不變的真理:超大+超貴+超熱=超生,網路晶片亦不可免俗。

網路晶片廠商就乾脆博觀而約取,厚積而薄發,基於實際的應用需求,定義不同的應用框架與轉發模型(如 NDM,Negotiabable Data-plane Model),避免更動現有的晶片架構。因大多數應用場景,像前面提到的 Google B4 資料中心廣域網路,追求的是 SDN 架構的管理便利性,並不是終極的可編程靈活性。

也因此,各家網路晶片廠商在此都各顯神通,採用 SRAM 或更便宜的 DRAM,或 NPU 或 FPGA 之類的手段,實作高容量但功能受限的 OpenFlow 流表,並在兼顧傳統功能的基礎上,「先講求不傷身體再講求效果」的補強功能,以因應 SDN 應用的實際要求。

像 Google 自行研發的 OpenFlow 交換機,就不是標準的 OpenFlow 流表規格,但界面仍遵循 OpenFlow 規範,這充分證明要引進 SDN 和 OpenFlow,並不需要「100% 量身訂做」的晶片。SDN 的重點是「應用」,不是完整支援 OpenFlow與其他的南向協定。這背後的意義,值得各位深思,從開發產品到人生歷程面對的一切問題,都是一樣道理。

接著就是這票 Smart NIC 和 DPU 的重頭戲:P4(Programming Protocol-independent Packet Processors)封包處理器描述語言。2017 年 HotChips 29,就如 P4 生態系統的誓師大會,象徵 SDN 應用進一步深化。

OpenFlow 僅限「控制與轉發分離」,並未定義對資料和封包的處理方式。與 OpenFlow 高度互補的 P4 語言,可用來程式化路由器、交換器和網路卡的行為,以軟體方式,引進新功能與協定,無須等待全新的硬體。P4 語言的執行引擎,也成為高度可編程化的 Smart NIC,比純 NIC 更「聰明」的地方。

讓網路設備變成虛擬機器的 NFV

但行文至此,還漏掉了一個關鍵名詞:「網路功能虛擬化」(NFV,Network Function Virtualization),相對 SDN 象徵著「傳統網路碰到的瓶頸」,NFV 則意味著「電信業者那淡淡的哀傷」。NFV 是一個 SDN 有點交集、但又有很大差異的概念,當 5G 時代來臨,頻繁的規格升級與激增基地台數量的毫米波頻段(mmWave),讓電信商更積極追求更低成本的硬體平台。

NFV 之前,各大電信商普遍面對大量各式各樣的網路設備,如交換器、路由器、防火牆、伺服器、儲存、計費裝置等,隨著推展網路服務和業務擴展而不停的導入新產品,讓持續疊床架屋的硬體設備,不可避免激增電信業者營運成本,更不幸的是,消費者還越來越不願意乖乖買單。

所以也不可免俗的,跟思想起源「學術味頗重」(又是那兩間名校)的 SDN 不同,NFV 是由一群「急著賺錢」的電信商提出來的。2010 年,一票世界級網路商、電信設備供應商、IT 設備供應商,成立隸屬歐洲電信標準協會(ETSI,European Telecommunications Standards Institute)的 NFV 標準化組織,也歷經數版。

  • 2013~2014:開天闢地的草案。
  • 2015~2016:第二版,規範服務和設備的互通性。
  • 2017~2018:第三版,支援更新的技術,如同樣出自 ETSI 的多接取邊緣計算(MEC,Multi-access Edge Computing)伺服器。
  • 2019~2020:第四版,項目不勝枚舉,但說穿了都是為了 5G 網路。

NFV 標準化組織的目標,希望利用目前虛擬化技術,將這些硬體設備「軟體化」,在標準的硬體平台(如常見 x86 伺服器)運行各種網路功能。如此一來,日後要擴增網路規模時,就無須購買特定功能的硬體產品,並帶來更具彈性的部署方式,縮短新服務上市的時間。

講更深入點,NFV 標準化組織希望將移動核心網路、深度封包檢測、資訊安全(防火牆、IDS / IPS、SSL VPN)、會談邊界控制器(SBC,Session Border Controller)、伺服器覆載平衡器和廣域網路加速器等「計算密集」的網路服務,進行廣泛虛擬化。

但請注意,像急需低延遲、高吞吐量的資料傳輸,現階段的 NFV 則力有未逮,如高性能交換器和路由器等,無不靠特製 ASIC 和專職網路處理器(NP,Network Processor)為運算心臟──雖然 2008 年,Cisco 與 VMware 聯合開發劃時代虛擬交換機 Nexus 1000V,後面這兩間為了 VMware 併購 SDN 先驅者 Nicira 而撕破臉的往事在此不論了。網路虛擬化並非本文主題,再扯下去會沒完沒了。

更進一步說,NFV 並不一定要建立在 SDN 基礎上,但如前面說過,兩者其實高度互補,SDN 可分離控制和轉發,網路管理者可透過集中式 SDN 控制器,用統一界面控制所有運行在這些標準伺服器平台的虛擬網路裝置。從 OSI 七層網路架構檢視 NFV 和 SDN 就更直覺了:前者是「上面四層」,後者是「第二和第三層」,非常簡單明瞭。

筆者用比較表統整 NFV 和 SDN 兩個 5G 重大關鍵技術的差異,接著我們就要準備踏入 Smart NIC 的神祕新世界了。

Smart NIC:「大」x86 Server 裡的「小」ARM Server

各位了解軟體定義網路(SDN)和網路功能虛擬化(NFV)後,接著就可進入 Smart NIC(智慧型網路介面卡)和 Nvidia 宣稱「比 Smart NIC 更強大」的 DPU。

首先,我們必須先明確定義什麼是 Smart NIC,和一般 NIC 又有什麼不同。以一度佔 10G 以上網路卡 70% 市占率的 Mellanox 為例(英特爾在高階網路卡市場的領導地位,就這樣莫名其妙翻盤了),對 Smart NIC 的定義是可卸載(Off Load)通常由 CPU 處理工作的網路卡,利用獨立 CPU 的額外運算能力與板載記憶體,完成更高等級的網路處理任務,減輕 CPU 負擔並釋放執行效能。

更白話一點,各位可將 Smart NIC 定義為「像智慧型手機,允許附加軟體功能」的 NIC。要讓 NIC 升級成 Smart NIC,不外乎外掛大量 ARM CPU 核心、支援 P4 語言的網路處理器、採用 FPGA 或三者兼備。

目前知名的 Smart NIC 廠商,包含傳統大廠,像身為乙太網路規格制定者之一的英特爾、傳統網通晶片大廠博通、因「晶片比較聰明」翻掉英特爾基本盤而被 Nvidia 以 70 億美元併購的 Mellanox、被 AMD 吃下的 FPGA 王者賽靈思,以及部分新創業者,如 Cisco 色彩濃厚的 Pensando 和軟銀投資 2 億美元的 Fungible。這些廠商都各擅勝場,例如很會將產品單晶片化,以取得壓倒性成本優勢的博通(有了解過博通機上盒產品線的歷史,就會清楚知道這方面有多厲害)。

像雲端服務業者,也多少會自己研發自用的 Smart NIC,像微軟用 FPGA 實做的 Azure AccelNet 和「邏輯上是個 Smart NIC」的 AWS Nitro。雲端服務之王 Google,十之八九也勢必有自家 Smart NIC,只是叫什麼名稱,是否願意公諸於世,對他們也不重要就是了。

那回到原點,為何在理解 Smart NIC 前,非得要先對 SDN 和 NFV 有點基本的認識呢?因為近年來 Smart NIC 崛起,主要有三個因素:SDN、25G+乙太網路、網路虛擬化。

網路虛擬化的價值不外乎將邊緣交換器「推入」伺服器,不同實體伺服器的虛擬機可相互通訊,簡化伺服器和虛擬機部署,但往往網路會消耗多達 30% 的 CPU 運算效能,處理網路虛擬化的事務,如 Open vSwitch(OvS)之類的虛擬交換機,更罔論隨處可見的加密、解密、深度封包檢測和動態路由協定等。博通曾公開描述 Smart NIC:「大」x86 伺服器裡的「小」ARM 伺服器,可謂一針見血。

總之,對 Smart NIC 用戶來說,關鍵在於「軟體」,出色的硬體規格,往往不代表優秀的實際表現,市場主要 Smart NIC 廠商也多半靠併購,設法補強軟硬體的弱點,如 Nvidia 另外買下開源碼乙太網路交換機作業系統業者 Cumulus Networks,而 Mellanox 的 Bluefield-2 也是從 2015 年收購 EZchip 取得 Tilera 而誕生。

FPGA 霸主賽靈思更是在 2019 年收購累積十年經驗的 Solarflare Communications,使其成為賽靈思 Alveo U25 Smart NIC 的研發團隊主力,試圖滿足需要 OvS 卸載功能的潛在客戶,現在也隨著賽靈思收購案,成為 AMD 的一部分,讓曾在 NIC 有一席之地的 AMD,重新回到這塊市場。想當年,1980 年代後期,AMD 的 Lance 系列在乙太網路晶片市場可是響噹噹的高檔貨色呢。筆者個人非常期待 AMD 後繼布局。

講了這麼多,SmartNIC 到底有多重要?筆者之前聽到某種說法,非常傳神,值得與各位分享:

「實際上大型的資料中心和電信商,都早陸續把 SDN 和 NFV 做到 Smart NIC,這也是 Cisco 被白牌交換器打到不要不要的主因。」極寓意深遠的一句話。

那下一個被 Smart NIC 或 Nvidia DPU 打到鼻青臉腫的,會變成英特爾和 AMD 嗎?

Nvidia「革命成功」的成功率有多大?

Nvidia 以看似邊緣的 Smart NIC 為起點,企圖顛覆 x86 處理器在時下資料中心的主導地位,但事情會如 Nvidia 預期的順利嗎?筆者個人的看法是,也許 Nvidia 的策略是正確的 (要不然還剩下多少個切入點?),x86 地位也可能受到巨大動搖,但儘管審判日假以時日真的降臨,Nvidia 可能也不會是笑到最後的贏家。

  • 對一般企業的 MIS,別說搞不好聽都沒聽過什麼是 SDN 和 NFV,可能也想不出 Smart NIC 和 DPU 能帶來什麼好處,免費送給他們大概也不見得知道該怎麼使用。
  • 對大型雲端服務業者,尤其像 Google、亞馬遜這種「什麼都可以自己來」的,就算 Smart NIC 徹底改變資料中心的基礎架構,但他們寧可自己做晶片,就像一票 TPU、OpenFlow 交換器和 Graviton 家族。AI 領域有點合作關係倒是無可厚非(連 IBM 都想辦法把 Power 塞到 Google 裡),但要「玩大的」就是另一回事了。

  • 無論「讓搞不清楚狀況的眾人興奮到模糊」的 Grace 處理器與持續推陳出新的 Bluefield DPU,最終依舊會碰到推動 GPGPU 的漫長道路同樣的大哉問:Nvidia「解決方案」的泛用性和通用性,會不會一導入就「動搖國本」。今天英特爾 AMD 的 x86 處理器依然支配著資料中心的原因也很簡單:無人能及的多用途性,以及在伺服器應用傲視業界的單執行緒效能(縮短服務反應時間)。這些都是產品規格之外「看不見的強項」。
  • 這些產品也是明後年才會上市的東西,難道英特爾、AMD 都是塑膠準備躺著等死嗎?畢竟「辣個男人」已經回英特爾了,Lisa Su 也不是省油的燈,天知道他們家的廚房會不會也跑出個什麼妖怪等級的黑科技?

寫到最後,筆者對 Nvidia 挑戰 x86 處理器地位這件事,得提醒各位最重要的大前提:

請問「微軟」自己是怎麼看待 Nvidia 的戰略?又將作何打算?這才是決定 x86 生死存亡的真正關鍵。到頭來,x86 指令集的價值,超過 80% 還是建立在 Windows 相容性之上。

(首圖來源:Nvidia)

延伸閱讀: