李詩革,李文耀,王 歡
(武漢郵電科學(xué)研究院,湖北武漢430074)
隨著網(wǎng)絡(luò)的不斷發(fā)展,傳統(tǒng)的純硬件專用交換芯片內(nèi)缺乏拓展性,這使得它不具備各種數(shù)據(jù)業(yè)務(wù)表項的存儲功能,跟不上現(xiàn)代網(wǎng)絡(luò)發(fā)展的速度,基于網(wǎng)絡(luò)處理器的TCAM擴(kuò)展就是在這種背景下產(chǎn)生的。TCAM全稱為三態(tài)內(nèi)容尋址存儲器,在網(wǎng)絡(luò)高度發(fā)展的今天,它作為網(wǎng)絡(luò)處理器查找ACL路由表項的關(guān)鍵技術(shù)在于TCAM芯片的靈活匹配性能和硬件可拓展性,靈活的匹配性能可以任意匹配320位寬的表項字段,硬件的拓展性在于它能夠級聯(lián)多片TCAM芯片,擴(kuò)展其內(nèi)存空間,總之研究和實現(xiàn)網(wǎng)絡(luò)處理器外擴(kuò)TCAM將會對各種表項的存儲具有指導(dǎo)意義。
網(wǎng)絡(luò)處理器是專門處理數(shù)據(jù)包業(yè)務(wù)而開發(fā)的網(wǎng)絡(luò)產(chǎn)品,它靈活的可編程能力和強(qiáng)大的接口擴(kuò)展能力,在各種系統(tǒng)平臺設(shè)計當(dāng)中都起了主導(dǎo)作用[1]??删幊棠芰Ψ矫骟w現(xiàn)在其流水線支持可編程的指令集,利用可編程的指令集可以編寫微碼實現(xiàn)各種業(yè)務(wù)的處理。而強(qiáng)大的接口擴(kuò)展能力是實現(xiàn)表項外部存儲的關(guān)鍵技術(shù),同時支持PCIe接口,實現(xiàn)網(wǎng)絡(luò)處理器與CPU的連接通信。網(wǎng)絡(luò)處理器很好地體現(xiàn)了上述思想,在高性能、靈活性和低成本等幾個目標(biāo)之間進(jìn)行了良好的折中。優(yōu)異的性價比、高度的靈活性、軟件升級能力和較短的上市時間是網(wǎng)絡(luò)處理器在1P網(wǎng)絡(luò)設(shè)備開發(fā)方面的主要優(yōu)勢。
外擴(kuò)TCAM的內(nèi)存分配由具體TCAM芯片的容量決定,對于不同型號的TCAM芯片,內(nèi)存的分配采用的模式不一致[2]。TCAM芯片的內(nèi)存分配由Super Bank號和Bank號共同作用,一個Super Bank號包含4個Bank號,它們將地址空間分成不同的片區(qū),每個片區(qū)的內(nèi)存空間都是一樣的,對于20 Mbit的TCAM芯片,總共16個Super Bank號0~15,那么對應(yīng)的Bank號就是0~63。不同的片區(qū)可以存放不同位寬的表項,將各種表的表項區(qū)分開來,有利于微引擎更好地對各種表項進(jìn)行查找。網(wǎng)絡(luò)處理器通過可編程流水線調(diào)用微音器查找TCAM表項時,通常會與SRAM表項配合使用。在下發(fā)表項的時候,表項的匹配字段存放在TCAM表中,而回應(yīng)結(jié)果放在SRAM表當(dāng)中。在TCAM表中,采用Lookup操作實現(xiàn)對表項索引號的獲得,然后通過索引號到SRAM中去尋找相應(yīng)的條目,并回送結(jié)果。
內(nèi)存分配管理的關(guān)鍵在于網(wǎng)絡(luò)處理器查找表項時的地址內(nèi)存映射,在微引擎查找表項時,采用外擴(kuò)TCAM的邏輯號對應(yīng)于各種表的地址和位寬,然后到具體表中去匹配相關(guān)字段,獲取索引號。TCAM邏輯號是通過低層驅(qū)動代碼定義的,它分配了16個邏輯號,每個邏輯號查找的位寬都有規(guī)定,然后通過微碼中定義的TCAM表的地址和索引號計算出SRAM中查找表項的絕對地址獲得相應(yīng)的查找結(jié)果。
網(wǎng)絡(luò)處理器通過可編程流水線的微碼控制實現(xiàn)對數(shù)據(jù)業(yè)務(wù)的處理,在數(shù)據(jù)業(yè)務(wù)中,從不同端口進(jìn)入網(wǎng)絡(luò)處理器的數(shù)據(jù)包,會解析數(shù)據(jù)包頭部的相關(guān)字段,通過相關(guān)字段,在內(nèi)部集成的TCAM和SRAM去匹配表項的字段,獲得相應(yīng)的數(shù)據(jù)結(jié)果,再利用回送的結(jié)果繼續(xù)匹配其他表項。然而在這一過程中,一旦出現(xiàn)TCAM或SRAM的內(nèi)存不夠和表項位寬大于每個地址單元的位寬情況時,網(wǎng)絡(luò)處理器可以通過外擴(kuò)TCAM的方案解決上述問題。
如圖1所示,在外擴(kuò)TCAM的設(shè)計中,網(wǎng)絡(luò)處理器模塊包含兩個組成部分,即微引擎單元和可編程流水線,微引擎單元對表項的各種操作抽象成一個集合,通過預(yù)編寫指令系統(tǒng)下發(fā)指令控制各種表項操作。在可編程流水線處理各種數(shù)據(jù)包時,會利用各個微引擎訪問點(diǎn)調(diào)用微引擎的相關(guān)操作進(jìn)行對外擴(kuò)TCAM表項的讀寫??删幊塘魉€通過請求通道和回應(yīng)通道與微引擎單元進(jìn)行通信,請求通道的位寬是160 bit,主要包含相應(yīng)的請求字段;回應(yīng)通道的位寬是128 bit,由TCAM的返回字段組成。微引擎單元經(jīng)過復(fù)雜的數(shù)據(jù)處理通過TCAM PHY口將數(shù)據(jù)總線、地址總線、時鐘總線連接到外部TCAM的芯片引腳上去[3]。
圖1 網(wǎng)絡(luò)處理器外擴(kuò)SDRAM設(shè)計
由于各PHY對于工作時序有著嚴(yán)格的要求,所以單在初始化時對幾個DLL模塊進(jìn)行簡單的默認(rèn)值配置是無法滿足具體使用需求的。所以應(yīng)該在其初始化以后,開始使用微碼引擎以前,執(zhí)行PHY的讀寫校準(zhǔn)流程。
外擴(kuò)TCAM的具體實現(xiàn)體現(xiàn)在硬件初始化方面和軟件表項的存儲和查找,硬件初始化主要是通過驅(qū)動代碼實現(xiàn),集成于控制平面代碼當(dāng)中。而軟件表項的存儲和查找實現(xiàn)對外擴(kuò)TCAM的訪問代碼,集成于流水線處理業(yè)務(wù)的微碼當(dāng)中。微碼負(fù)責(zé)調(diào)用微引擎,微引擎負(fù)責(zé)執(zhí)行查表操作[4]。
硬件初始化是針對TCAM芯片設(shè)備的就緒問題,在這一過程中TCAM芯片要經(jīng)歷以下4步:
1)根據(jù)實際PCB的布局走線,獲取實際初始化參數(shù)。
2)獲得了初始化參數(shù)后,進(jìn)行基本的初始化設(shè)置,配置相關(guān)寄存器狀態(tài)。
3)配置好寄存器的初始化狀態(tài)后,進(jìn)行讀寫校驗。
4)讀寫校驗完畢后,最后進(jìn)行TCAM芯片自檢。
這4個步驟缺一不可,而且相互聯(lián)系,在進(jìn)行初始化過程中,如果某一個步驟不合格,將會造成初始化不成功,因此在調(diào)試時要對每個步驟進(jìn)行定位,查找打印相關(guān)參數(shù)信息。
在軟件表項的存儲和查找的實現(xiàn)當(dāng)中,主要是對外擴(kuò)TCAM的訪問,具體要針對不同的數(shù)據(jù)業(yè)務(wù)使用外擴(kuò)TCAM實現(xiàn)對表項查找,這里不作過多闡述。具體的外擴(kuò)TCAM硬件初始化的第2個步驟的實現(xiàn)如圖2所示[5]。
圖2 硬件初始化寄存器設(shè)置
圖2中,DLL是針對PHY中所提到的數(shù)據(jù)鎖,主要是配置相位,它分為主數(shù)據(jù)鎖和從數(shù)據(jù)鎖,這個是根據(jù)具體走線、線寬來計算出主數(shù)據(jù)鎖的相位和從數(shù)據(jù)鎖,在配置主從數(shù)據(jù)鎖時,先將主從數(shù)據(jù)鎖寄存器設(shè)置為0,然后將實際數(shù)據(jù)寫入寄存器。配置時鐘和請求控制寄存器時,同樣是調(diào)節(jié)相位,調(diào)節(jié)它與地址總線、時鐘總線的相位關(guān)系。配置I/O控制寄存器是對時鐘、地址、數(shù)據(jù)的同步關(guān)系的確定[6]。
外擴(kuò)TCAM是實現(xiàn)內(nèi)存容量提升的新興技術(shù),也是為解決內(nèi)存瓶頸而提供更多高位寬表項的策略[7]。通過在網(wǎng)絡(luò)處理器的可編程流水線上調(diào)用微引擎實現(xiàn)與外擴(kuò)TCAM的通信,能夠靈活地處理各種表項查找[8]。隨著網(wǎng)絡(luò)數(shù)據(jù)業(yè)務(wù)的迅速發(fā)展,基于網(wǎng)絡(luò)處理器外擴(kuò)TCAM的研究與實現(xiàn)提供了一個良好的研究平臺,具有很高的使用價值和市場價值。
[1]王峻鵬,周華東,王衛(wèi)城,等.全分布式存儲非編網(wǎng)絡(luò)的設(shè)計與實現(xiàn)[J].電視技術(shù),2007,31(8):82-83.
[2]彭來獻(xiàn),田暢,鄭少仁.網(wǎng)絡(luò)處理器設(shè)計分析及其應(yīng)用前景[J].電信科學(xué),2001(1):63-66.
[3]Intel.IXP2400 hardware reference manual[M].[S.l.]:Intel Press,2003.
[4]李誠,李華偉.網(wǎng)絡(luò)處理單元的設(shè)計與實現(xiàn)[J].計算機(jī)工程,2007,33(2):253-254.
[5]科默.網(wǎng)絡(luò)處理器與網(wǎng)絡(luò)系統(tǒng)設(shè)計[M].北京:機(jī)械工業(yè)出版社,2004.
[6]范榮真,沈鳳池,楊東勇,等.網(wǎng)絡(luò)處理器下一代網(wǎng)絡(luò)發(fā)展的核心技術(shù)[J].中國有線電視,2003(16):16-18.
[7]蔡一兵.下一代網(wǎng)絡(luò)設(shè)備核心單元——網(wǎng)絡(luò)處理器應(yīng)用研究[J].電子技術(shù)應(yīng)用,2004(1):1-4.
[8]周文舉.PC串口與多個單片機(jī)紅外無線通信的實現(xiàn)[J].工業(yè)控制計算機(jī),2004,17(7):29-31.