系統(tǒng)廠商在為滿足未來的擴(kuò)展性和集成挑戰(zhàn)而研究下一代數(shù)據(jù)包處理技術(shù)時,面臨著多種架構(gòu)選擇。目前有兩種常用架構(gòu):通用多核架構(gòu)和專用數(shù)據(jù)流架構(gòu)。
每種架構(gòu)都有其長處。通常情況是,每個系統(tǒng)供應(yīng)商的設(shè)計決策歸根到底都是平臺的預(yù)期任務(wù)。從本質(zhì)上講,決策過程就是根據(jù)應(yīng)用選擇架構(gòu)的過程。
數(shù)據(jù)包處理背景
數(shù)據(jù)包處理是數(shù)據(jù)密集型操作,需要優(yōu)化的硬件。在寬帶互聯(lián)網(wǎng)出現(xiàn)之前,通用處理器既被用于控制會話處理又肩負(fù)用戶流量的數(shù)據(jù)包處理。
但是,由數(shù)據(jù)和控制平面共享中央處理單元(CPU)資源的作法已被證明難以滿足隨帶寬需求增長帶來的更高要求。對于交換機(jī)和路由器來說,數(shù)據(jù)平面的數(shù)據(jù)包處理任務(wù)已轉(zhuǎn)交給定制的固定功能ASIC或可編程網(wǎng)絡(luò)處理器單元(NPU)。從而把通用CPU解放出來以專門應(yīng)對控制平面任務(wù)。
有幾家NPU供應(yīng)商一直在試圖針對2-4層包處理任務(wù)優(yōu)化通用處理器,并提供集成了網(wǎng)絡(luò)硬件(即物理層、媒體存取控制器和表存儲器)以及用于特定任務(wù)(即散列)的硬件引擎的多核架構(gòu)。在20世紀(jì)末20世紀(jì)初,MMC、C-Port和英特爾的IXP部門等機(jī)構(gòu)開發(fā)了這類器件。
雖然這些產(chǎn)品各有不同,但它們的基本架構(gòu)是相同的。通過降低復(fù)雜性,處理器核能夠得到簡化,從而使得器件內(nèi)可以集成數(shù)十個處理器核以滿足更高的并行要求。
除了極少數(shù)例外,這些NPU供應(yīng)商在商業(yè)上都不成功。根本原因是這些NPU不能有效地滿足超過10Gbps的網(wǎng)絡(luò)應(yīng)用對處理能力和存儲器訪問方面的要求。
現(xiàn)在,當(dāng)我們邁進(jìn)2010年,我們看到了旨在應(yīng)對網(wǎng)絡(luò)處理市場的新一代多核供應(yīng)商的出現(xiàn)。雖然CMOS技術(shù)、存儲器帶寬和時鐘周期性能得到了提升,但它們?nèi)曰谕瑯拥幕炯軜?gòu)。因此,這些新興公司能期待獲得更大的成功嗎?
這將取決于它們針對的是哪類應(yīng)用。現(xiàn)在的網(wǎng)絡(luò)節(jié)點(diǎn)不僅處理2-4層的數(shù)據(jù)包,也需在更高層進(jìn)行處理以支持服務(wù)和增加安全性。我們將研究其中的差異,以及對任何給定應(yīng)用來說,為什么某些架構(gòu)比其它架構(gòu)效果更好。
線速包處理
2-4層數(shù)據(jù)包處理不同于其它網(wǎng)絡(luò)應(yīng)用(表1)。首先,能對所有大小的數(shù)據(jù)包進(jìn)行線速處理是一個關(guān)鍵目標(biāo)。現(xiàn)代路由器和交換機(jī)被設(shè)計為擁有廣泛的網(wǎng)絡(luò)功能,服務(wù)提供商期望能同時獲得這些功能且不降低性能。
第二,數(shù)據(jù)平面將數(shù)據(jù)包視為獨(dú)立個體,允許高度并行的處理。對一個100Gbps應(yīng)用來說,網(wǎng)絡(luò)處理器需要每秒處理1.5億個數(shù)據(jù)包以確保線速性能。處理器10μs的延時相當(dāng)于1,500個數(shù)據(jù)包的并行處理時間。
第三,數(shù)據(jù)平面程序需要高I/O存儲器訪問帶寬以完成表查詢轉(zhuǎn)發(fā)、狀態(tài)更新及其它處理。在高速平臺上,數(shù)據(jù)包到達(dá)間隔時間非常短,因而對存儲器延時提出了苛刻要求。對于小型數(shù)據(jù)包來說,執(zhí)行這些任務(wù)的存儲器帶寬是鏈路帶寬的數(shù)倍。
最后,當(dāng)今網(wǎng)絡(luò)的功耗很高。出于運(yùn)營成本和環(huán)保兩方面的考慮,服務(wù)提供商在煞費(fèi)苦心地追求最佳的每瓦性能。考慮到包處理的特點(diǎn),應(yīng)以線速性能條件下、每瓦功率可實(shí)現(xiàn)的最高性能來衡量最有效的架構(gòu)。
服務(wù)和安全處理特征
與數(shù)據(jù)包處理相近的市場是服務(wù)和安全處理。這些應(yīng)用具有與2-4層數(shù)據(jù)包處理不同的特點(diǎn)。因此,可實(shí)施其它的硬件設(shè)計優(yōu)化。
在客戶機(jī)-服務(wù)器方式中,這些應(yīng)用終止和處理主機(jī)至主機(jī)協(xié)議,或在中間網(wǎng)絡(luò)節(jié)點(diǎn)(即防火墻、負(fù)載均衡器、入侵和防御系統(tǒng))上處理重組的凈載數(shù)據(jù)包數(shù)據(jù)。這些產(chǎn)品必須能夠跨數(shù)據(jù)包邊界工作,因為它們通常需要在更大的數(shù)據(jù)量上進(jìn)行更大規(guī)模的操作,這將導(dǎo)致數(shù)據(jù)并行性較低。另一方面,相對所處理的數(shù)據(jù)而言,這類所需的I/O存儲器帶寬較低。
架構(gòu)比較
NPU承諾可提供定制ASIC的性能,且具有通用處理器的可編程能力。但是,比較處理器的性能較困難,因為理論上的最大值通常與真實(shí)世界關(guān)聯(lián)不大。此外,有效利用可用處理性能的能力,以及與處理容量相關(guān)的I/O存儲器的利用情況也是影響處理器性能的因素。
因此,這種比較必須從設(shè)計層面開始。我們首先從一個通用多核NPU架構(gòu)開始。多核NPU架構(gòu)衍生于通用處理器架構(gòu),該架構(gòu)希望通過增加處理器核來實(shí)現(xiàn)更高的并行處理能力。降低復(fù)雜性并移除當(dāng)今通用處理器架構(gòu)內(nèi)不必要的功能(即浮點(diǎn)指令)可實(shí)現(xiàn)這一目標(biāo)。
多核NPU架構(gòu)對處理器核進(jìn)行了專門分組。這些內(nèi)核或被分組到各個并行池或以串行方式進(jìn)行流水線排列(圖1)。NPU供應(yīng)商在設(shè)計時,允許架構(gòu)對這種分組實(shí)施嚴(yán)格控制以優(yōu)化性能。
圖1:處理器核采用流水線或者并行池架構(gòu),混合模式也很常見。
如果定義得較松散,這種分組就允許程序員更自由地在內(nèi)核間劃分任務(wù),最終結(jié)果是以性能控制為代價提供更大的靈活性。在許多情況下,多核網(wǎng)絡(luò)處理器最終會以流水線和并行池的混合架構(gòu)形態(tài)出現(xiàn)。
處理器核的分組對編程模式有重要影響。并行池帶有相關(guān)的多線程編程模式,其中每個處理器核可運(yùn)行一個或多個線程。從本質(zhì)上講就是程序獲取一個數(shù)據(jù)包并對其執(zhí)行一系列操作。
一旦處理完一個數(shù)據(jù)包,程序就準(zhǔn)備好按順序取用下一個數(shù)據(jù)包。程序員通過把數(shù)據(jù)包分配給不同的并行池來有效利用處理資源。線程之間的同步是程序員的另一個關(guān)鍵系統(tǒng)任務(wù)。
流水線模式處理數(shù)據(jù)平面應(yīng)用,并將其劃分為不同的處理任務(wù)(即:分類、修改、隧道處理以及狀態(tài)更新)。然后,每個任務(wù)被映射到不同的處理器核,任務(wù)的執(zhí)行或由架構(gòu)強(qiáng)制完成,或交由程序員處理。由于吞吐量受限于速度最慢的部分,因此如何在各內(nèi)核間有效地劃分任務(wù)通常是個挑戰(zhàn)。
通用多核架構(gòu)內(nèi)的數(shù)據(jù)包通常存儲在共享存儲器區(qū)域(圖2)。在這種情況下,程序員必須將分類和數(shù)據(jù)包修改任務(wù)分別分配給處理資源的并行池和流水線。
圖2:多核架構(gòu)共享資源,以及用于處理器核和資源互連的高速總線或crossbar總線。
共享數(shù)據(jù)的復(fù)雜性
在并行數(shù)據(jù)包處理過程中,多個線程可能需要訪問和更新諸如狀態(tài)和ARP條目等共享數(shù)據(jù)。不同的線程需要進(jìn)行同步以強(qiáng)制互斥并實(shí)現(xiàn)通用共享模式。但眾所周知,同步并非易事而且會對性能造成影響。
為提高性能,許多多核處理器采用硬件緩存。雖然這可以極大縮短平均存儲器訪問延遲,但架構(gòu)會變得更難以預(yù)測。
緩存一致性協(xié)議保證了采用緩存層次結(jié)構(gòu)的多核系統(tǒng)中數(shù)據(jù)的完整性。雖然這對于程序員是透明的,但為了調(diào)節(jié)性能,程序員需要了解緩存和一致性協(xié)議是如何運(yùn)作的。另一方面,存儲器一致性模型也對程序員開放。因此,程序員需要了解存儲器一致性模型以編寫正確的程序。
保持?jǐn)?shù)據(jù)包順序
并行數(shù)據(jù)包處理的另一個挑戰(zhàn)是保持?jǐn)?shù)據(jù)包的順序。所有節(jié)點(diǎn)都應(yīng)針對相關(guān)的數(shù)據(jù)包保持?jǐn)?shù)據(jù)包順序,因為上層傳輸協(xié)議的正常工作依賴這種順序。了解哪些類數(shù)據(jù)包需要保持包順序以及如何最有效地滿足這一需求通常是程序員的職責(zé)。
為降低復(fù)雜度,NPU供應(yīng)商通常會提供硬件支持和軟件庫。添加更多的數(shù)據(jù)包緩沖器可有助于確保數(shù)據(jù)包順序,但這總是以增加延遲為代價。
降低復(fù)雜性需求
駕馭基于多核的NPU并非易事。英特爾公司的Larry Huston在第10屆高性能計算機(jī)體系結(jié)構(gòu)國際研討會上發(fā)表的論文中總結(jié)道:
“理想的情況應(yīng)是,程序員將應(yīng)用寫成一段軟件,而工具會自動劃分應(yīng)用并將應(yīng)用映射到并行資源集。這也許是個難以實(shí)現(xiàn)的目標(biāo),但在該方向上的任一進(jìn)步都將升華開發(fā)者的開發(fā)生命。”
數(shù)據(jù)流架構(gòu)正好滿足這一需求。雖然Larry Huston的上述見解發(fā)表在2004年,但它在今天的效用和意義與6年前一樣。
確定性數(shù)據(jù)流架構(gòu)
數(shù)據(jù)流架構(gòu)(圖3)采用了獨(dú)特的方法,且具有處理器內(nèi)核組成的單個流水線。該架構(gòu)已被設(shè)計成完全確定性和超高效的。除執(zhí)行語境外,它還包括一個數(shù)據(jù)包指令集計算機(jī)(PISC)和一個引擎接入點(diǎn)(EAP)。
圖3:數(shù)據(jù)流架構(gòu)(圖3)擁有包含數(shù)百個PISC處理器內(nèi)核的單個流水線,以及嵌入式引擎接入點(diǎn)。
PISC是專為數(shù)據(jù)包處理設(shè)計的處理器核。流水線可以包含數(shù)百個(超過400)PISC。EAP是用于分類任務(wù)的專用I/O單元。EAP統(tǒng)一訪問存儲在嵌入式或外部存儲器(TCAM、SRAM、DRAM)中的存儲表,并包含用于計量、計數(shù)、散列、格式化、流量管理以及表搜索的資源引擎。
執(zhí)行語境是程序員可用的數(shù)據(jù)包內(nèi)的具體數(shù)據(jù)。它包括數(shù)據(jù)包最初的256個字節(jié)、通用寄存器、設(shè)備寄存器和狀態(tài)標(biāo)志。一個執(zhí)行語境唯一地對應(yīng)一個數(shù)據(jù)包并使該數(shù)據(jù)包在流水線內(nèi)傳送。
數(shù)據(jù)包在流水線中傳送就像在一個固定長度的先入先出(FIFO)設(shè)備中行進(jìn)一樣。在每個時鐘周期,流水線內(nèi)的所有數(shù)據(jù)包都前移一級以便在下一個處理器或EAP內(nèi)執(zhí)行。
指令總是在一個時鐘周期內(nèi)執(zhí)行完。每條指令都能以超長指令字(VLIW)方式并行執(zhí)行多達(dá)5個操作。然后,數(shù)據(jù)包繼續(xù)前進(jìn)到下一個PISC或EAP。
數(shù)據(jù)平面程序經(jīng)編譯后存儲在位于處理器核內(nèi)的指令存儲器,從而無需在程序執(zhí)行期間從共享存儲器內(nèi)將指令發(fā)送到處理器內(nèi)核。另外,此舉還顯著提升了性能,降低了功耗。
編程模式反映出眾所周知的順序單處理器模式,其中,程序員可以編寫順序執(zhí)行的模塊以避免多個并行編程(即存儲器連貫性、一致性和同步)的麻煩。當(dāng)軟件被編譯后,程序代碼會自動映射到由處理器內(nèi)核構(gòu)成的單一流水線。一個VLIW指令占用流水線中的一個處理器核。
這種架構(gòu)和編程模式的一個顯著好處是,它強(qiáng)制執(zhí)行線速運(yùn)作。每種數(shù)據(jù)包都有經(jīng)確保數(shù)量的操作和分類資源。
降低復(fù)雜度,提高性能
多核架構(gòu)無法保證某一水平的性能,而數(shù)據(jù)流架構(gòu)是完全確定性的(表2)。通過降低復(fù)雜度并面向2-4層包處理充分優(yōu)化架構(gòu),數(shù)據(jù)流架構(gòu)的設(shè)計可擴(kuò)展到數(shù)百個處理器核,從而能以強(qiáng)大的線速保證支持100Gbps的速率和每秒1.5億個數(shù)據(jù)包的操作。
雖然原始處理器的性能非常重要,但在數(shù)據(jù)流架構(gòu)中,程序員將處理器性能發(fā)揮到極致的能力是衡量架構(gòu)實(shí)際效用的另一關(guān)鍵因素。從原子操作到表存儲的一系列公共存儲器操作允許高效編碼和代碼復(fù)用,這些操作獨(dú)立于存儲器類型(片上或外部存儲器)和貫穿整個流水線的通用處理器核。
在多核架構(gòu)中,每一級都需要處理能力的冗余配置,在實(shí)踐中,這對于總是感到處理資源短缺的程序員來說是個重大挑戰(zhàn)。因此,為恢復(fù)丟失的時鐘周期,數(shù)據(jù)平面程序員會陷入“測試-性能優(yōu)化-再測試-再性能優(yōu)化”這樣一個無盡的循環(huán)中。
針對數(shù)據(jù)包處理比較數(shù)據(jù)流與多核架構(gòu),兩款架構(gòu)在效率上的差異顯而易見。下面讓我們借助兩款當(dāng)今最先進(jìn)的處理器來比較2-4層包處理的各項指標(biāo)。
第一款處理器是Xelerated基于數(shù)據(jù)流架構(gòu)的HX 330 NPU。它工作在300MHz,擁有448個處理器核,每個內(nèi)核可同時進(jìn)行5項操作。每兩個時鐘周期就有一個新數(shù)據(jù)包可以進(jìn)入流水線。
這相當(dāng)于每秒可處理1.5億個數(shù)據(jù)包,也就是說即使是最小的64字節(jié)以太網(wǎng)數(shù)據(jù)包,也需要確保能提供100Gbps的線速操作支持。每個數(shù)據(jù)包可確保5×448 =2240個操作。
當(dāng)然,2240個操作是理論上的數(shù)值。真實(shí)的數(shù)據(jù)平面應(yīng)用并不會用到全部的潛能。經(jīng)優(yōu)化的數(shù)據(jù)平面代碼大約用到50%的資源,這允許很高的服務(wù)密度。
第二款處理器是市場上性能最高的多核處理器之一。它擁有64個處理器核、工作在700 MHz。將該處理器用于100Gbps的數(shù)據(jù)包處理應(yīng)用時,需要每四個時鐘周期調(diào)度一個新的數(shù)據(jù)包。平均而言,每個數(shù)據(jù)包理論上將獲得256個時鐘周期的處理能力。
同步挑戰(zhàn)以及管理共享數(shù)據(jù)所耗費(fèi)的性能會將整體性能降低到利用率最多為50%。這相當(dāng)于每個數(shù)據(jù)包128個操作,或者HX NPU的13%處理資源。此外,這些操作的性能得不到保證。
如果再考慮功耗因素,則兩者的差異更為顯著。基于數(shù)據(jù)流架構(gòu)的NPU,其每瓦性能(在線速下)是多核處理器架構(gòu)NPU的15至20倍。
不同需求,不同架構(gòu)
對于2-4層數(shù)據(jù)包處理來說,數(shù)據(jù)流架構(gòu)具有明顯優(yōu)勢。但其它比較卻會產(chǎn)生不同結(jié)果。因此,起初看起來具有競爭力的方法實(shí)際上也許要大打折扣。
對面向服務(wù)的應(yīng)用來說,由于多核架構(gòu)能很好地協(xié)調(diào)共同工作,因此它們能夠有效地擴(kuò)展。在一個分離的架構(gòu)中,系統(tǒng)供應(yīng)商可以利用基于數(shù)據(jù)流的處理器執(zhí)行2-4層處理并通過運(yùn)行多核處理器完成內(nèi)容識別、加密和完成服務(wù)等操作。
本文小結(jié)
有關(guān)架構(gòu)的爭論在不斷循環(huán)往復(fù)。十年前,在10Gbps以上領(lǐng)域業(yè)內(nèi)有30多家NPU供應(yīng)商。這些公司的研發(fā)大多基于多核架構(gòu)。
而今天,我們知道這種架構(gòu)在進(jìn)行2-4層數(shù)據(jù)包處理時,無法與專用數(shù)據(jù)流架構(gòu)媲美。數(shù)據(jù)流架構(gòu)的能效要比多核架構(gòu)高出15至20倍,且嚴(yán)格保證線速。
當(dāng)就網(wǎng)絡(luò)處理對架構(gòu)進(jìn)行比較時,不要被其所支持的接口帶寬所誤導(dǎo),因為如果不考慮服務(wù)密度,則這一指標(biāo)沒有意義。當(dāng)服務(wù)提供商評估網(wǎng)絡(luò)平臺時,真正有價值的是在線速操作下同時支持的服務(wù)數(shù)量。系統(tǒng)供應(yīng)商需要在研發(fā)階段的早期就密切關(guān)注服務(wù)密度。
雖然在2-4層處理的服務(wù)密度上達(dá)不到要求,但新一代多核處理器仍可滿足巨大且不斷增長的網(wǎng)絡(luò)市場的需求。這是對基于網(wǎng)絡(luò)的服務(wù)和安全處理應(yīng)用的大力推動,它為現(xiàn)代多核處理器和數(shù)據(jù)流架構(gòu)的結(jié)合創(chuàng)造了新的機(jī)會(表3)。
評論
查看更多