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