摘要:網(wǎng)絡(luò)處理器是一種可編程處理器,用于高效的處理網(wǎng)絡(luò)中的數(shù)據(jù)流。網(wǎng)絡(luò)處理器具有廣泛的用途,基于網(wǎng)絡(luò)處理器的路由器同使用通用處理器的路由器和使用專用集成電路的路由器相比,既具有快速的特點(diǎn)又具有靈活性的特點(diǎn)。
1 前言
網(wǎng)絡(luò)處理器是現(xiàn)代綜合業(yè)務(wù)數(shù)據(jù)網(wǎng)絡(luò)不斷發(fā)展更新的產(chǎn)物,是一種基于可編程 ASIC 結(jié) 構(gòu)的新一代SoC 芯片。它是為了適應(yīng)下一代高速網(wǎng)絡(luò)特點(diǎn),即為了能夠提供Qos,能夠不斷 適應(yīng)新的網(wǎng)絡(luò)應(yīng)用,能夠發(fā)展新的網(wǎng)絡(luò)管理模式以及能夠快速響應(yīng)市場(chǎng)對(duì)新的網(wǎng)絡(luò)功能的需 求而推出的一種新的芯片產(chǎn)品。網(wǎng)絡(luò)處理器同時(shí)具有GPP 和ASIC 兩方面的優(yōu)點(diǎn),即具有專用 集成芯片線速轉(zhuǎn)發(fā)報(bào)文的高速度特性同時(shí)又具有通用芯片的可編程性。近來(lái)對(duì)于網(wǎng)絡(luò)處理器 的研究非常活躍,國(guó)際各知名計(jì)算機(jī)芯片生產(chǎn)公司也紛紛推出自己的產(chǎn)品和標(biāo)準(zhǔn)。INTEL IXA(INTEL Internet Exchange Architecture,互聯(lián)網(wǎng)交換架構(gòu)) 作為一種網(wǎng)絡(luò)處理架構(gòu), 是INTEL 公司網(wǎng)絡(luò)處理器的技術(shù)基礎(chǔ)。
在互聯(lián)網(wǎng)中,路由器具有核心的地位;ヂ(lián)網(wǎng)一直在不斷向融合語(yǔ)音、數(shù)據(jù)等多種業(yè)務(wù) 的綜合開(kāi)放結(jié)構(gòu)發(fā)展。因此,路由器必須提供更高的吞吐量、服務(wù)質(zhì)量保證、可靠性和更多 的網(wǎng)絡(luò)管理功能。為了適應(yīng)互聯(lián)網(wǎng)的發(fā)展變化,路由器的結(jié)構(gòu)也一直在發(fā)展變化之中。 最初的路由器通常采用單一的通用CPU 來(lái)負(fù)責(zé)分組的處理和轉(zhuǎn)發(fā)。這種結(jié)構(gòu)是在單一 CPU 中通過(guò)軟件來(lái)實(shí)現(xiàn)分組處理和轉(zhuǎn)發(fā),它的特點(diǎn)是實(shí)現(xiàn)簡(jiǎn)單,可以通過(guò)修改軟件來(lái)提供新 的業(yè)務(wù),缺點(diǎn)是單一CPU 處理能力有限,全軟件實(shí)現(xiàn)也難于實(shí)現(xiàn)高速分組轉(zhuǎn)發(fā)。因此,在高速 路由器中普遍采用了專用集成電路來(lái)負(fù)責(zé)數(shù)據(jù)的處理和轉(zhuǎn)發(fā),采用通用CPU 來(lái)負(fù)責(zé)路由器 的管理。
高速的專用集成電路,可以滿足日益增長(zhǎng)的帶寬需求。但是由于專用集成電路的開(kāi) 發(fā)時(shí)間長(zhǎng),并且在靈活性方面受到極大的限制,而不斷出現(xiàn)的新的業(yè)務(wù)卻期望廠商能夠在最短 時(shí)間內(nèi)更新路由器的功能。網(wǎng)絡(luò)處理器集中了專用集成電路的高速處理能力,同時(shí)還具有可 編程,擴(kuò)展性強(qiáng)的特點(diǎn),能夠很快適應(yīng)業(yè)務(wù)的發(fā)展變化。因此基于網(wǎng)絡(luò)處理器的路由器得到了 許多網(wǎng)絡(luò)設(shè)備生產(chǎn)商和研究機(jī)構(gòu)的重視,目前已有一些基于網(wǎng)絡(luò)處理器的路由器產(chǎn)品問(wèn)世。
2 網(wǎng)絡(luò)處理器簡(jiǎn)介
網(wǎng)絡(luò)處理器是一個(gè)被集成在一個(gè)半導(dǎo)體設(shè)備上的可編程器件。它主要用于優(yōu)化網(wǎng)絡(luò)處 理任務(wù),這些任務(wù)是:接收包,處理包和轉(zhuǎn)發(fā)包。典型的網(wǎng)絡(luò)處理器由一個(gè)核心處理器和許 多包處理引擎組成。它利用并行分布式和流水線架構(gòu),并把高速度、靈活性的良好特性和可 擴(kuò)充性相結(jié)合來(lái)提供更好的性能。 網(wǎng)絡(luò)處理器由兩類硬件功能單元組成,即網(wǎng)絡(luò)處理器單元和專用的智能協(xié)處理器/加 速器。網(wǎng)絡(luò)處理器運(yùn)行的軟件是經(jīng)過(guò)優(yōu)化的,支持系統(tǒng)級(jí)應(yīng)用和網(wǎng)絡(luò)專有功能。網(wǎng)絡(luò)處理器 單元是網(wǎng)絡(luò)處理器核心,它提供高速、大容量智能處理數(shù)據(jù)包功能,包括數(shù)據(jù)解析、分類和轉(zhuǎn) 發(fā)等等,因此網(wǎng)絡(luò)處理器單元常常被稱為數(shù)據(jù)包處理引擎。不同的協(xié)處理器則實(shí)現(xiàn)包分段/ 重組、加速查表、隊(duì)列/緩沖區(qū)管理、順序管理、存儲(chǔ)器控制和多播支持等功能。
為了保證關(guān)鍵數(shù)據(jù)包的實(shí)時(shí)處理, 網(wǎng)絡(luò)處理器一般將網(wǎng)絡(luò)處理任務(wù)劃分為數(shù)據(jù)層和控 制層兩個(gè)層面, 控制層面專門負(fù)責(zé)非實(shí)時(shí)性的管理和策略控制等,數(shù)據(jù)層面承載高速易變的 數(shù)據(jù)實(shí)時(shí)處理。網(wǎng)絡(luò)處理器位于數(shù)據(jù)通路物理接口處理器和背板之間, 它的典型功能包括: 分段和重組、協(xié)議識(shí)別和分類、排隊(duì)和存取控制、流量整形和流量工程、服務(wù)質(zhì)量。網(wǎng)絡(luò)處 理器的主要特征是其可編程特性和ASIC 處理性能的結(jié)合。
這一特征引發(fā)了通信系統(tǒng)設(shè)計(jì)的 革新,它使系統(tǒng)設(shè)計(jì)者擺脫了原先復(fù)雜、零散的設(shè)計(jì),將注意力放在高層服務(wù)上,縮短產(chǎn)品推 向市場(chǎng)的時(shí)間,延長(zhǎng)產(chǎn)品的生命周期,這也是生產(chǎn)商在激烈競(jìng)爭(zhēng)中得以生存和發(fā)展的關(guān)鍵。表 1 中列出了網(wǎng)絡(luò)處理器七個(gè)關(guān)鍵的特性,它們來(lái)源于下一代網(wǎng)絡(luò)對(duì)網(wǎng)絡(luò)處理器編程能力、性 能和開(kāi)放性的需求。
表 1:網(wǎng)絡(luò)處理器的七大特性
總之,網(wǎng)絡(luò)處理器技術(shù)是網(wǎng)絡(luò)發(fā)展的趨向,它不僅可以減少開(kāi)發(fā)商的開(kāi)發(fā)成本,縮短開(kāi)發(fā) 時(shí)間,加快產(chǎn)品升級(jí)換代的能力,同時(shí)也保護(hù)用戶的利益,減少用戶在網(wǎng)絡(luò)新功能需要的投資 和升級(jí)換代的費(fèi)用,所以無(wú)論在技術(shù)上還是在經(jīng)濟(jì)上都具有重要意義。
3 IXP1200 網(wǎng)絡(luò)處理器架構(gòu) IXP1200 由六個(gè)可編程的微引擎和一個(gè)協(xié)調(diào)系統(tǒng)行為的工作在200MHz 的StrongARM 內(nèi) 核組成。每個(gè)微引擎有四個(gè)硬件線程,在IXP1200 芯片上一共有24 個(gè)線程。除了微引擎, IXP1200 還用一些別的特殊的硬件設(shè)備來(lái)輔助進(jìn)行包處理。 微引擎和StrongARM 還共享有 一個(gè)可編程的HASH 引擎和專門的隊(duì)列,IXP1200 網(wǎng)絡(luò)處理器的架構(gòu)圖如圖1 所示。
下面我們將對(duì) IXP1200 中的微引擎和StrongARM 做一個(gè)詳細(xì)的介紹。微引擎有一個(gè)特 別適用于處理網(wǎng)絡(luò)數(shù)據(jù)的指令集。微引擎除了可以在單個(gè)指令里執(zhí)行位、字節(jié)、和長(zhǎng)字操作外,還有帶有移位和循環(huán)移位的算術(shù)和邏輯操作。但是微引擎沒(méi)有整數(shù)乘或除、也沒(méi)有浮點(diǎn) 數(shù)操作。微引擎的乘法是通過(guò)反復(fù)進(jìn)行加運(yùn)算來(lái)完成的。在微引擎中每個(gè)指令占用一個(gè)長(zhǎng)字 (32 位)的存儲(chǔ)空間。每個(gè)微引擎有一個(gè)獨(dú)立的可容納1024 條指令的4KB 的指令存儲(chǔ)器。 在微引擎開(kāi)始運(yùn)行之前,StrongARM 內(nèi)核上的代碼負(fù)責(zé)給這個(gè)指令存儲(chǔ)器裝入代碼。一旦微 引擎運(yùn)行時(shí),指令以一個(gè)五階段的流水線來(lái)運(yùn)行,并且當(dāng)流水線充滿時(shí),平均只需用一個(gè)周 期去執(zhí)行一條指令。當(dāng)指令阻塞在存儲(chǔ)器或設(shè)備存取操作完成時(shí),或當(dāng)跳轉(zhuǎn)指令迫使在流水 線中的某些指令退出執(zhí)行,平均的指令執(zhí)行時(shí)間就會(huì)長(zhǎng)于一個(gè)周期。