下一代數據包處理技術架構選擇
每種架構都有其長處。通常情況是,每個系統供應商的設計決策歸根到底都是平臺的預期任務。從本質上講,決策過程就是根據應用選擇架構的過程。
數據包處理背景
數據包處理是數據密集型操作,需要優化的硬件。在寬帶互聯網出現之前,通用處理器既被用于控制會話處理又肩負用戶流量的數據包處理。
但是,由數據和控制平面共享中央處理單元(CPU)資源的作法已被證明難以滿足隨帶寬需求增長帶來的更高要求。對于交換機和路由器來說,數據平面的數據包處理任務已轉交給定制的固定功能ASIC或可編程網絡處理器單元(NPU)。從而把通用CPU解放出來以專門應對控制平面任務。
有幾家NPU供應商一直在試圖針對2-4層包處理任務優化通用處理器,并提供集成了網絡硬件(即物理層、媒體存取控制器和表存儲器)以及用于特定任務(即散列)的硬件引擎的多核架構。在20世紀末20世紀初,MMC、C-Port和英特爾的IXP部門等機構開發了這類器件。
雖然這些產品各有不同,但它們的基本架構是相同的。通過降低復雜性,處理器核能夠得到簡化,從而使得器件內可以集成數十個處理器核以滿足更高的并行要求。
除了極少數例外,這些NPU供應商在商業上都不成功。根本原因是這些NPU不能有效地滿足超過10Gbps的網絡應用對處理能力和存儲器訪問方面的要求。
現在,當我們邁進2010年,我們看到了旨在應對網絡處理市場的新一代多核供應商的出現。雖然CMOS技術、存儲器帶寬和時鐘周期性能得到了提升,但它們仍基于同樣的基本架構。因此,這些新興公司能期待獲得更大的成功嗎?
這將取決于它們針對的是哪類應用。現在的網絡節點不僅處理2-4層的數據包,也需在更高層進行處理以支持服務和增加安全性。我們將研究其中的差異,以及對任何給定應用來說,為什么某些架構比其它架構效果更好。
線速包處理
2-4層數據包處理不同于其它網絡應用(表1)。首先,能對所有大小的數據包進行線速處理是一個關鍵目標。現代路由器和交換機被設計為擁有廣泛的網絡功能,服務提供商期望能同時獲得這些功能且不降低性能。

第二,數據平面將數據包視為獨立個體,允許高度并行的處理。對一個100Gbps應用來說,網絡處理器需要每秒處理1.5億個數據包以確保線速性能。處理器10μs的延時相當于1,500個數據包的并行處理時間。
第三,數據平面程序需要高I/O存儲器訪問帶寬以完成表查詢轉發、狀態更新及其它處理。在高速平臺上,數據包到達間隔時間非常短,因而對存儲器延時提出了苛刻要求。對于小型數據包來說,執行這些任務的存儲器帶寬是鏈路帶寬的數倍。
最后,當今網絡的功耗很高。出于運營成本和環保兩方面的考慮,服務提供商在煞費苦心地追求最佳的每瓦性能。考慮到包處理的特點,應以線速性能條件下、每瓦功率可實現的最高性能來衡量最有效的架構。
服務和安全處理特征
與數據包處理相近的市場是服務和安全處理。這些應用具有與2-4層數據包處理不同的特點。因此,可實施其它的硬件設計優化。
在客戶機-服務器方式中,這些應用終止和處理主機至主機協議,或在中間網絡節點(即防火墻、負載均衡器、入侵和防御系統)上處理重組的凈載數據包數據。這些產品必須能夠跨數據包邊界工作,因為它們通常需要在更大的數據量上進行更大規模的操作,這將導致數據并行性較低。另一方面,相對所處理的數據而言,這類所需的I/O存儲器帶寬較低。
架構比較
NPU承諾可提供定制ASIC的性能,且具有通用處理器的可編程能力。但是,比較處理器的性能較困難,因為理論上的最大值通常與真實世界關聯不大。此外,有效利用可用處理性能的能力,以及與處理容量相關的I/O存儲器的利用情況也是影響處理器性能的因素。
因此,這種比較必須從設計層面開始。我們首先從一個通用多核NPU架構開始。多核NPU架構衍生于通用處理器架構,該架構希望通過增加處理器核來實現更高的并行處理能力。降低復雜性并移除當今通用處理器架構內不必要的功能(即浮點指令)可實現這一目標。
多核NPU架構對處理器核進行了專門分組。這些內核或被分組到各個并行池或以串行方式進行流水線排列(圖1)。NPU供應商在設計時,允許架構對這種分組實施嚴格控制以優化性能。

圖1:處理器核采用流水線或者并行池架構,混合模式也很常見。
如果定義得較松散,這種分組就允許程序員更自由地在內核間劃分任務,最終結果是以性能控制為代價提供更大的靈活性。在許多情況下,多核網絡處理器最終會以流水線和并行池的混合架構形態出現。
處理器核的分組對編程模式有重要影響。并行池帶有相關的多線程編程模式,其中每個處理器核可運行一個或多個線程。從本質上講就是程序獲取一個數據包并對其執行一系列操作。
一旦處理完一個數據包,程序就準備好按順序取用下一個數據包。程序員通過把數據包分配給不同的并行池來有效利用處理資源。線程之間的同步是程序員的另一個關鍵系統任務。
流水線模式處理數據平面應用,并將其劃分為不同的處理任務(即:分類、修改、隧道處理以及狀態更新)。然后,每個任務被映射到不同的處理器核,任務的執行或由架構強制完成,或交由程序員處理。由于吞吐量受限于速度最慢的部分,因此如何在各內核間有效地劃分任務通常是個挑戰。
通用多核架構內的數據包通常存儲在共享存儲器區域(圖2)。在這種情況下,程序員必須將分類和數據包修改任務分別分配給處理資源的并行池和流水線。

圖2:多核架構共享資源,以及用于處理器核和資源互連的高速總線或crossbar總線。
共享數據的復雜性
在并行數據包處理過程中,多個線程可能需要訪問和更新諸如狀態和ARP條目等共享數據。不同的線程需要進行同步以強制互斥并實現通用共享模式。但眾所周知,同步并非易事而且會對性能造成影響。
為提高性能,許多多核處理器采用硬件緩存。雖然這可以極大縮短平均存儲器訪問延遲,但架構會變得更難以預測。
緩存一致性協議保證了采用緩存層次結構的多核系統中數據的完整性。雖然這對于程序員是透明的,但為了調節性能,程序員需要了解緩存和一致性協議是如何運作的。另一方面,存儲器一致性模型也對程序員開放。因此,程序員需要了解存儲器一致性模型以編寫正確的程序。
保持數據包順序
并行數據包處理的另一個挑戰是保持數據包的順序。所有節點都應針對相關的數據包保持數據包順序,因為上層傳輸協議的正常工作依賴這種順序。了解哪些類數據包需要保持包順序以及如何最有效地滿足這一需求通常是程序員的職責。
為降低復雜度,NPU供應商通常會提供硬件支持和軟件庫。添加更多的數據包緩沖器可有助于確保數據包順序,但這總是以增加延遲為代價。
降低復雜性需求
駕馭基于多核的NPU并非易事。英特爾公司的Larry Huston在第10屆高性能計算機體系結構國際研討會上發表的論文中總結道:
“理想的情況應是,程序員將應用寫成一段軟件,而工具會自動劃分應用并將應用映射到并行資源集。這也許是個難以實現的目標,但在該方向上的任一進步都將升華開發者的開發生命。”
數據流架構正好滿足這一需求。雖然Larry Huston的上述見解發表在2004年,但它在今天的效用和意義與6年前一樣。
確定性數據流架構
數據流架構(圖3)采用了獨特的方法,且具有處理器內核組成的單個流水線。該架構已被設計成完全確定性和超高效的。除執行語境外,它還包括一個數據包指令集計算機(PISC)和一個引擎接入點(EA
超級電容器相關文章:超級電容器原理









評論