李詩革,李文耀,王 歡
(武漢郵電科學研究院,湖北武漢430074)
隨著網絡的不斷發展,傳統的純硬件專用交換芯片內缺乏拓展性,這使得它不具備各種數據業務表項的存儲功能,跟不上現代網絡發展的速度,基于網絡處理器的TCAM擴展就是在這種背景下產生的。TCAM全稱為三態內容尋址存儲器,在網絡高度發展的今天,它作為網絡處理器查找ACL路由表項的關鍵技術在于TCAM芯片的靈活匹配性能和硬件可拓展性,靈活的匹配性能可以任意匹配320位寬的表項字段,硬件的拓展性在于它能夠級聯多片TCAM芯片,擴展其內存空間,總之研究和實現網絡處理器外擴TCAM將會對各種表項的存儲具有指導意義。
網絡處理器是專門處理數據包業務而開發的網絡產品,它靈活的可編程能力和強大的接口擴展能力,在各種系統平臺設計當中都起了主導作用[1]。可編程能力方面體現在其流水線支持可編程的指令集,利用可編程的指令集可以編寫微碼實現各種業務的處理。而強大的接口擴展能力是實現表項外部存儲的關鍵技術,同時支持PCIe接口,實現網絡處理器與CPU的連接通信。網絡處理器很好地體現了上述思想,在高性能、靈活性和低成本等幾個目標之間進行了良好的折中。優異的性價比、高度的靈活性、軟件升級能力和較短的上市時間是網絡處理器在1P網絡設備開發方面的主要優勢。
外擴TCAM的內存分配由具體TCAM芯片的容量決定,對于不同型號的TCAM芯片,內存的分配采用的模式不一致[2]。TCAM芯片的內存分配由Super Bank號和Bank號共同作用,一個Super Bank號包含4個Bank號,它們將地址空間分成不同的片區,每個片區的內存空間都是一樣的,對于20 Mbit的TCAM芯片,總共16個Super Bank號0~15,那么對應的Bank號就是0~63。不同的片區可以存放不同位寬的表項,將各種表的表項區分開來,有利于微引擎更好地對各種表項進行查找。網絡處理器通過可編程流水線調用微音器查找TCAM表項時,通常會與SRAM表項配合使用。在下發表項的時候,表項的匹配字段存放在TCAM表中,而回應結果放在SRAM表當中。在TCAM表中,采用Lookup操作實現對表項索引號的獲得,然后通過索引號到SRAM中去尋找相應的條目,并回送結果。
內存分配管理的關鍵在于網絡處理器查找表項時的地址內存映射,在微引擎查找表項時,采用外擴TCAM的邏輯號對應于各種表的地址和位寬,然后到具體表中去匹配相關字段,獲取索引號。TCAM邏輯號是通過低層驅動代碼定義的,它分配了16個邏輯號,每個邏輯號查找的位寬都有規定,然后通過微碼中定義的TCAM表的地址和索引號計算出SRAM中查找表項的絕對地址獲得相應的查找結果。
網絡處理器通過可編程流水線的微碼控制實現對數據業務的處理,在數據業務中,從不同端口進入網絡處理器的數據包,會解析數據包頭部的相關字段,通過相關字段,在內部集成的TCAM和SRAM去匹配表項的字段,獲得相應的數據結果,再利用回送的結果繼續匹配其他表項。然而在這一過程中,一旦出現TCAM或SRAM的內存不夠和表項位寬大于每個地址單元的位寬情況時,網絡處理器可以通過外擴TCAM的方案解決上述問題。
如圖1所示,在外擴TCAM的設計中,網絡處理器模塊包含兩個組成部分,即微引擎單元和可編程流水線,微引擎單元對表項的各種操作抽象成一個集合,通過預編寫指令系統下發指令控制各種表項操作。在可編程流水線處理各種數據包時,會利用各個微引擎訪問點調用微引擎的相關操作進行對外擴TCAM表項的讀寫。可編程流水線通過請求通道和回應通道與微引擎單元進行通信,請求通道的位寬是160 bit,主要包含相應的請求字段;回應通道的位寬是128 bit,由TCAM的返回字段組成。微引擎單元經過復雜的數據處理通過TCAM PHY口將數據總線、地址總線、時鐘總線連接到外部TCAM的芯片引腳上去[3]。

圖1 網絡處理器外擴SDRAM設計
由于各PHY對于工作時序有著嚴格的要求,所以單在初始化時對幾個DLL模塊進行簡單的默認值配置是無法滿足具體使用需求的。所以應該在其初始化以后,開始使用微碼引擎以前,執行PHY的讀寫校準流程。
外擴TCAM的具體實現體現在硬件初始化方面和軟件表項的存儲和查找,硬件初始化主要是通過驅動代碼實現,集成于控制平面代碼當中。而軟件表項的存儲和查找實現對外擴TCAM的訪問代碼,集成于流水線處理業務的微碼當中。微碼負責調用微引擎,微引擎負責執行查表操作[4]。
硬件初始化是針對TCAM芯片設備的就緒問題,在這一過程中TCAM芯片要經歷以下4步:
1)根據實際PCB的布局走線,獲取實際初始化參數。
2)獲得了初始化參數后,進行基本的初始化設置,配置相關寄存器狀態。
3)配置好寄存器的初始化狀態后,進行讀寫校驗。
4)讀寫校驗完畢后,最后進行TCAM芯片自檢。
這4個步驟缺一不可,而且相互聯系,在進行初始化過程中,如果某一個步驟不合格,將會造成初始化不成功,因此在調試時要對每個步驟進行定位,查找打印相關參數信息。
在軟件表項的存儲和查找的實現當中,主要是對外擴TCAM的訪問,具體要針對不同的數據業務使用外擴TCAM實現對表項查找,這里不作過多闡述。具體的外擴TCAM硬件初始化的第2個步驟的實現如圖2所示[5]。

圖2 硬件初始化寄存器設置
圖2中,DLL是針對PHY中所提到的數據鎖,主要是配置相位,它分為主數據鎖和從數據鎖,這個是根據具體走線、線寬來計算出主數據鎖的相位和從數據鎖,在配置主從數據鎖時,先將主從數據鎖寄存器設置為0,然后將實際數據寫入寄存器。配置時鐘和請求控制寄存器時,同樣是調節相位,調節它與地址總線、時鐘總線的相位關系。配置I/O控制寄存器是對時鐘、地址、數據的同步關系的確定[6]。
外擴TCAM是實現內存容量提升的新興技術,也是為解決內存瓶頸而提供更多高位寬表項的策略[7]。通過在網絡處理器的可編程流水線上調用微引擎實現與外擴TCAM的通信,能夠靈活地處理各種表項查找[8]。隨著網絡數據業務的迅速發展,基于網絡處理器外擴TCAM的研究與實現提供了一個良好的研究平臺,具有很高的使用價值和市場價值。
[1]王峻鵬,周華東,王衛城,等.全分布式存儲非編網絡的設計與實現[J].電視技術,2007,31(8):82-83.
[2]彭來獻,田暢,鄭少仁.網絡處理器設計分析及其應用前景[J].電信科學,2001(1):63-66.
[3]Intel.IXP2400 hardware reference manual[M].[S.l.]:Intel Press,2003.
[4]李誠,李華偉.網絡處理單元的設計與實現[J].計算機工程,2007,33(2):253-254.
[5]科默.網絡處理器與網絡系統設計[M].北京:機械工業出版社,2004.
[6]范榮真,沈鳳池,楊東勇,等.網絡處理器下一代網絡發展的核心技術[J].中國有線電視,2003(16):16-18.
[7]蔡一兵.下一代網絡設備核心單元——網絡處理器應用研究[J].電子技術應用,2004(1):1-4.
[8]周文舉.PC串口與多個單片機紅外無線通信的實現[J].工業控制計算機,2004,17(7):29-31.