專利名稱:實現atm鏈接查找的裝置和方法
技術領域:
本發明涉及通信系統中的ATM(Asynchronous TransferMode異步傳輸模式)技術領域,尤指一種實現ATM鏈接查找的裝置和方法。
背景技術:
在通信領域中,很多實現ATM技術的單板邏輯設計或芯片技術都用到ATM鏈接查找方法。但一般的查找方法要么較復雜,難于用邏輯實現,要么邏輯資源耗費較多,難于實現較大鏈接數目查找。
在ATM技術中,線路上傳送的是ATM信元。ATM信元頭中的虛擬通道標識(VPI)、虛擬通路標識(VCI)用于標識ATM鏈接。另外,在物理層與ATM層的接口(UTOPIA接口)處,一個ATM層可能同時與幾個物理層端口鏈接,所以此時送往ATM層的信元,其所屬的鏈接標識除了VPI和VCI外,還有物理端口號。所以ATM層邏輯設計查找輸入的信元屬于哪條鏈接時,需要根據端口號(PORT)、VPI、VCI來查找,端口號(PORT)、VPI、VCI屬于邏輯查找的關鍵字。
目前查找ATM鏈接的技術中,主要有兩種方法直接地址和內容地址存儲器表查找。
直接地址查找方法,顧名思義,就是利用FPGA(FieldProgrammable Gate Array現場可編程門陣列)芯片內部(或外部)RAM存放鏈接信息表,讀寫訪問時,直接用PORT、VPI、VCI的值作為RAM的地址進行讀寫訪問。
例如,假如ATM層有4個物理端口,則實現方案是用PORT[3..0]、VPI[11..0]、VCI[15..0]組合起來直接作為訪問RAM的地址。這樣的話,如果支持所有鏈接的查找,則需要32位地址線寬度的RAM(因為每一項ATM鏈接信息至少占一個存儲單元),即需要RAM的大小為4096M的空間。當然,由于很難實現這么大的RAM,所以實際用時并不支持所有鏈接的查找。一般用時,可以在一定大小范圍內限制VPI[11..0]和VCI[15..0]的值,這樣VPI和VCI的某些位就不用作為查找時的輸入,如限制VCI在1到255之間,則只需要把PORT[3..0]、VPI[11..0]、VCI[7..0]作為查找輸入,這時要求的RAM大小為16M。
CAM表查找方法,就是利用FPGA內部的CAM(或外部CAM)存放鏈接信息表。實現方案是用PORT[3..0]、VPI[11..0]、VCI[15..0]組合起來的值直接作為CAM存儲器的查找索引輸入,在若干周期后CAM存儲器輸出查找結果。這樣的話,如果支持所有鏈接的查找,則需要32位地址線寬度的CAM(因為每一項ATM鏈接信息至少占一個存儲單元),即需要CAM的大小為4096M的空間。顯然,難于構造如此大的CAM。實際使用時并不支持所有鏈接的查找,一般情況下,可以在一定大小范圍內限制VPI[11..0]和VCI[15..0]的值,這樣某些位就不用作為查找時的輸入,減低CAM的容量要求。
上述目前實現ATM鏈接查找的現有技術的主要缺點有1、采用直接地址查找方法需要較大的RAM存儲空間,在FPGA芯片內實現支持較大數目的鏈接比較困難;如果用FPGA片外RAM構造實現,則成本較高,且電路設計過于復雜,單板上不一定有足夠的空間來放外部RAM。
2、采用CAM表查找,由于鏈接數目較大時對CAM容量要求較大,在FPGA芯片內部難于實現(因為FPGA片內CAM都較小);如果用片外CAM實現則單板設計過于復雜,成本過高,且單板上不一定有足夠的空間來放外部RAM。CAM表查找速度較慢,難于用并行流水線的方法進行查找。另外受目前的芯片工藝水平限制,單獨的CAM芯片容量不可能做的較大。
發明內容
本發明提供一種實現ATM鏈接查找的裝置及方法,以解決現有技術中存在的FPGA內部實現困難且設計復雜的問題。
為解決上述問題,本發明的技術方案如下一種實現ATM鏈接查找的裝置,該裝置包括邏輯處理器,用于構造哈希表,構造哈希函數,將關鍵字分為至少兩個部分進行按位異或,得出按位異或值,處理哈希沖突,將不沖突的按位異或值作為哈希地址訪問該哈希表,存取相應的連接信息或記錄;以及存儲器,用于儲存哈希表,該存儲器優選是現場可編程門陣列(FPGA)芯片的隨機存儲器(RAM)。
上述邏輯處理器包括哈希表構造裝置,用于確定關鍵字,并構造至少一個哈希表;哈希函數構造裝置,用于構造至少一個哈希函數;異或處理裝置,用于將該關鍵字分為至少兩個部分進行按位異或,得出按位異或值;
哈希沖突處理裝置,用于接收該異或處理裝置輸出的按位異或值,以該按位異或值作為地址訪問哈希表,判斷是否存在哈希沖突,處理出現的哈希沖突;以及存取裝置,以不再沖突的按位異或值作為哈希地址訪問所述哈希表,存取相應的連接信息或記錄。
該哈希表優選建立在FPGA內部的RAM內,如果要支持的鏈接數較大,哈希表容量較大,并且FPGA內部的RAM容量無法滿足要求,才考慮使用外部RAM構造;該哈希表包括第一哈希表、第二哈希表、第三哈希表、以及第四哈希表;按查找優先次序由高到低分為1至4級,第一哈希表的優先級為1、第二哈希表的優先級為2、第三哈希表的優先級為3、第四哈希表的優先級為4;第一哈希表的容量為4K、第二哈希表的容量為2K、第三哈希表的容量為1K、第四哈希表的容量為1K;將隨機存儲器(RAM)的地址由低到高依次分配給第一哈希表、第二哈希表、第三哈希表、和第四哈希表;,該關鍵字包括端口號(PORT)、虛擬通道標識(VPI)、以及虛擬通路標識(VCI);解決哈希沖突的哈希沖突處理裝置是再哈希裝置。
一種實現ATM鏈接查找的方法,該方法包括以下步驟1)確定關鍵字,構造至少一個哈希表,該哈希表表示出關鍵字集合和鏈接信息表項或記錄集合的存儲位置之間的對應關系;2)構造至少一個哈希函數,該哈希函數是關于關鍵字的函數,使該關鍵字集合映像到該鏈接信息表項或記錄集合;3)將關鍵字分為至少兩部分使用該哈希函數進行按位異或得到異或值;4)按位異或值作為地址訪問哈希表,判斷是否存在哈希沖突;
5)若出現哈希沖突,則使用哈希沖突處理方法解決哈希沖突;以及6)將不再沖突的按位異或值作為哈希地址訪問哈希表,存取相應的鏈接信息或記錄。
上述步驟1)和2)的順序可互換,對于本領域技術人員可而言是顯而易見的。
上述關鍵字包括端口號(PORT)、虛擬通道標識(VPI)、以及虛擬通路標識(VCI);并且,進行邏輯設計時,需要保證該查找在一個信元周期內查找完畢,從而滿足帶寬要求;哈希表優選建立在FPGA內部的RAM內,如果要支持的鏈接數較大,哈希表容量較大,并且FPGA內部的RAM容量無法滿足要求,才考慮使用外部RAM構造;該哈希表包括第一哈希表、第二哈希表、第三哈希表、以及第四哈希表;按查找優先次序由高到低分為1至4級,第一哈希表的優先級為1、第二哈希表的優先級為2、第三哈希表的優先級為3、第四哈希表的優先級為4;第一哈希表的容量為4K、第二哈希表的容量為2K、第三哈希表的容量為1K、第四哈希表的容量為1K;將隨機存儲器(RAM)的地址由低到高依次分配給第一哈希表、第二哈希表、第三哈希表、和第四哈希表;解決哈希沖突的哈希沖突處理方法優選采用再哈希法。
由于采用邏輯電路哈希法實現ATM鏈接查找,并使用再哈希法解決哈希沖突,本發明提供的裝置和方法有如下優點(1)對RAM容量要求較低,可以在FPGA內部實現;(2)很容易支持較多數目的鏈接查找,且端口值、VPI、VCI值范圍不受限制;(3)實現起來方法簡單,鏈接數目增加時,按照本發明的方法則很容易擴充實現。
附圖簡要說明
圖1是本發明的使用邏輯電路實現異步傳輸模式鏈接查找的裝置的結構圖;圖2是圖1中的邏輯處理器的模塊圖;圖3是本發明的哈希查找裝置電路邏輯框圖;圖4本發明的使用邏輯電路實現異步傳輸模式鏈接查找的方法的流程圖;圖5a和圖5b是根據本發明一個實施例的建鏈查找操作流程圖;以及圖6是根據本發明一個實施例的HASH查找模塊外部接口信號圖。
具體實施例方式
本發明的ATM鏈接查找技術的核心是用哈希法實現查找。
由前面的描述可以知道,ATM鏈接查找就是在ATM層中用輸入的信元的所屬端口號、信元頭的VPI、以及信元頭的VCI作為ATM鏈接表的輸入進行鏈接表的查找。該哈希法查找實現的基本原理是在關鍵字集合(PORT、VPI、VCI)和鏈接信息表項或記錄集合(INDEX)的存儲位置之間建立一個對應關系,鏈接信息表項或記錄集合都放在FPGA片內RAM存儲器中,稱之為HASH表。對關鍵字PORT/VPI/VCI構造一個函數f,使得實際的查找輸入地址為f(PORT/VPI/VCI),即把關鍵字集合映象到鏈接信息表項(或記錄)集合。
圖1示出了本發明的使用邏輯電路實現異步傳輸模式鏈接查找的裝置的結構圖。該異步傳輸模式鏈接查找裝置10包括邏輯處理器20和存儲器30,該邏輯處理器20用于確定查找索引關鍵字并構造哈希表,構造哈希函數,將關鍵字分為至少兩個部分進行按位異或,得出按位異或值,處理哈希沖突,該關鍵字包括端口號(PORT)、虛擬通道標識(VPI)、以及虛擬通路標識(VCI);該存儲器30用于儲存邏輯處理器生成的哈希表。該存儲器30優選是現場可編程門陣列(FPGA)芯片的隨機存儲器(RAM)。
圖2是圖1中的邏輯處理器20的結構圖。該邏輯處理器20包括哈希函數構造裝置202、異或處理裝置204、哈希沖突處理裝置206、存取裝置208、以及哈希表構造裝置210。使用哈希表構造裝置210構造哈希表,并存入存儲器30;使用哈希函數構造裝置202構造哈希函數;使用異或處理裝置204將哈希表的關鍵字分為至少兩個部分進行按位異或,得出按位異或值,該異或處理裝置204優選是邏輯門電路,該關鍵字包括端口號(PORT)、虛擬通道標識(VPI)、以及虛擬通路標識(VCI);該存儲器30用于儲存哈希表;使用哈希沖突處理裝置206接收所述異或處理裝置輸出的按位異或值,以該按位異或值為地址訪問哈希表,判斷是否出現哈希沖突,處理出現的哈希沖突;使用存取裝置208以不再沖突的按位異或值作為哈希地址訪問存儲器30中的哈希表,存取相應的連接信息或記錄,解決哈希沖突的哈希沖突處理裝置206是再哈希裝置。哈希表優選建立在FPGA內部的RAM內,如果要支持的鏈接數較大,哈希表容量較大,并且FPGA內部的RAM容量無法滿足要求,才考慮使用外部RAM構造;該哈希表優選包括第一哈希表、第二哈希表、第三哈希表、以及第四哈希表;按查找優先次序由高到低分為1至4級,第一哈希表的優先級為1、第二哈希表的優先級為2、第三哈希表的優先級為3、第四哈希表的優先級為4;第一哈希表的容量為4K、第二哈希表的容量為2K、第三哈希表的容量為1K、第四哈希表的容量為1K;將隨機存儲器(RAM)的地址由低到高依次分配給第一哈希表、第二哈希表、第三哈希表、和第四哈希表。雖然本發明中的裝置構造了四個哈希表,本領域技術人員顯然可以理解,可以構造多個哈希表,構造的哈希表越多,連接查找的精度就越高。
圖3是本發明的哈希查找裝置電路的邏輯框圖。
輪詢狀態機302用于輪詢查找操作接口和命令操作接口的請求,判斷是否有查找操作或命令操作,如果有命令操作就進入命令操作狀態,命令操作狀態機304響應來自輪詢狀態機302的命令操作請求,產生RAM讀寫地址312,通過地址總線訪問RAM 308,進行建鏈、拆鏈、查詢鏈連接操作。如果有查找操作就進入查找操作狀態,查找操作狀態機314響應來自輪詢狀態機302的查找操作請求,產生RAM讀寫地址312,通過地址總線訪問存放HASH表的RAM 308,進行查找鏈接操作。
輪詢狀態機302產生的RAM讀寫控制信號和寫數據模塊用于控制信號和數據總線,配合命令操作狀態機304、查找操作狀態機314產生寫RAM信號、讀RAM信號、以及寫數據信號。
在復位后的初始化期間內,控制總線為寫操作,將哈希表項初始化。在查找和命令操作期間,控制總線為讀操作。如果響應軟件操作接口添加或刪除鏈接的命令,則進行寫操作。RAM讀寫地址模塊用于仲裁輸出給RAM的地址信號。數據鎖存模塊310將RAM的輸出數據用寄存器鎖存一拍。
圖4是本發明的異步傳輸模式鏈接查找方法的流程圖。
該查找方法包括以下步驟1)確定關鍵字,構造哈希表,所構造的哈希表表示出關鍵字集合和鏈接信息表項或記錄集合的存儲位置之間的對應關系;哈希表優選建立在FPGA內部的RAM內,如果要支持的鏈接數較大,哈希表容量較大,并且FPGA內部的RAM容量無法滿足要求,才考慮使用外部RAM構造;該哈希表優選包括第一哈希表、第二哈希表、第三哈希表、以及第四哈希表;按查找優先次序由高到低分為1至4級,第一哈希表的優先級為1、第二哈希表的優先級為2、第三哈希表的優先級為3、第四哈希表的優先級為4;第一哈希表的容量為4K、第二哈希表的容量為2K、第三哈希表的容量為1K、第四哈希表的容量為1K;將隨機存儲器(RAM)的地址由低到高依次分配給第一哈希表、第二哈希表、第三哈希表、和第四哈希表;2)構造哈希函數,所構造的哈希函數是關于關鍵字的函數,使該關鍵字集合映像到該鏈接信息表項或記錄集合;3)將關鍵字分為至少兩部分使用所構造的哈希函數進行按位異或得到異或值;該關鍵字包括端口號(PORT)、虛擬通道標識(VPI)、以及虛擬通路標識(VCI);4)以按位異或值作為地址訪問哈希表,判斷是否存在哈希沖突;5)若出現哈希沖突,則使用哈希沖突處理方法解決哈希沖突,解決哈希沖突的哈希沖突處理方法優選采用再哈希法;以及6)將不再沖突的按位異或值作為哈希地址訪問哈希表,存取相應的鏈接信息或記錄。
上述步驟1)和2)的順序可互換,對于本領域技術人員而言是顯而易見的。盡管本發明的實施例構造了四個哈希表,本領域技術人員應當理解,可以構造多個哈希表,構造的哈希表越多,連接查找的精度就越高。
并且,進行邏輯設計時需要保證該查找在一個信元周期內查找完畢,從而滿足帶寬要求。
該查找方法采用哈希法實現地址查找,簡單講就是將PORT、VPI、VCI分為若干部分進行按位異或,得到若干位異或結果作為地址(哈希地址)訪問哈希表,存取相應的鏈接信息或INDEX。
把PORT、VPI、VCI分為若干部分進行按位異或得到的哈希地址,不可避免會產生沖突,即可能出現不同的PORT/VPI/VCI,但哈希地址相同的情況,這樣訪問HASH表就可能出現沖突。
如何處理沖突是構造哈希表的關鍵之一。采用不同的沖突處理方法就可以得到不同的哈希表,并且對整個查找法的查找效率影響較大。處理哈希沖突的主要方法有開放定址法、鏈地址法、和建立公共溢出區等。
本發明查找方法優選采用再哈希法處理哈希沖突,即不同的PORT/VPI/VCI產生地址沖突時計算另一個哈希函數地址,直到沖突不再發生。這種方法不易產生聚集,即用第一個哈希函數求得的地址有沖突的VPI/VCI經過不同的哈希函數再哈希后再有沖突的幾率相對較小。
下面以輸入端口號為4位(PORT[3..0]),需要支持的ATM鏈接查找數目為4K(4096)作為例子,來具體說明本發明設計方法。
(1)構造哈希函數對32位的源地址信息(PORT[3:0]、VPI[11:0]、VCI[15:0])分為四部分進行按位異或求得12位(因為212=4096)的哈希地址,采用4種不同的分段方式可以得到4個不同哈希函數實現再哈希法。使用圖2所示的哈希函數構造裝置構造哈希函數,具體分段方式為第一哈希函數Hash_code_1={VPI[11:0]}^{VCI[11:0]}^{PORT[3:0],VCI[15:12],0000};
第二哈希函數Hash_code_2={VPI
}^{VCI[11:0]}^{PORT[3:0],VCI[15:12],0000};第三哈希函數Hash_code_3={VPI[11:0]}^{VCI[11:0]}^{VCI[15:12],PORT[3:0],0000};第四哈希函數Hash_code_4={VPI[10,8,6,4,2,0],VCI[10,8,6,4,2,0]}^{VCI[1,3,5,7,9,11],VPI[1,3,5,7,9,11]}^{0000,PORT
,VCI[12:15]}。
注“^”表示按位異或運算。
上述哈希函數構造是用邏輯電路實現的,對于哈希函數的構造并沒有嚴格的要求,只需要保證各個哈希函數不同,并且盡量把各位的各種異或情況都包括上去,如果某組合后不夠位數,則用0補充;一般要求構造4個函數,這樣,在圖1所示存儲器RAM中儲存哈希表時能充分利用RAM空間,不易造成浪費。
(2)構造哈希表按照本發明的設計,需要構造4個哈希表。使用圖2所示的哈希表構造模塊構造哈希表,4個哈希表一般要求都建立在圖1中的存儲器內,優選使用FPGA內部的RAM內,如果要支持的鏈接數較大,哈希表容量較大,并且FPGA內部的RAM容量無法滿足要求,才考慮采用外部RAM構造。
4個哈希表大小分別為4K、2K、1K、和1K,分別命名為第一哈希表、第二哈希表、第三哈希表、和第四哈希表。RAM空間至少需要8K,按RAM地址從低到高依次分配給第一哈希表、第二哈希表、第三哈希表、和第四哈希表,即第一哈希表占0x0000-0x0fff;第二哈希表占0x1000-0x17ff;第三哈希表占0x1800-0x1bff;第四哈希表占0x1c00-0x1fff。
另外,要求哈希表項中的鏈接信息占一個RAM存儲單元。每個表項一般至少包括VAVLID、PORT[3:0]、VPI[11:0]、VCI[15:0]、INDEX[11:0]格式。如下表1所標示。
表1 哈希表項格式
其中VALID表示當前表項有效指示;1表示當前表項有效;而0表示當前表項為空。
INDEX[11..0]表示查找鏈接表信息結果,一般用作查找其他更詳細具體的ATM鏈接表信息的索引。位寬要求為log2(連接數目)。
由上面描述可知,最小要求RAM的大小為8K×45位。當然可以選8K×64位等,只是讀寫時不對高位數據線[61:45]的數據進行處理。
(3)查找操作流程圖5a和圖5b是根據本發明一個實施例的建鏈查找操作流程圖。
首先,按查找優先次序分為1~4級(1最高,4最低)。第一哈希表優先級為1,第二哈希表優先級為2,第三哈希表優先級為3,第四哈希表優先級4。
對每個哈希表的操作完全相同,都是用上述4個不同哈希函數得出的異或值作為訪問RAM的地址進行查找表。下面描述建鏈查找操作流程。
(a)依次用Hash_code_1、Hash_code_2、Hash_code_3、Hash_code_4得出的異或值對第一哈希表進行查找(作為讀寫RAM地址的A[11:0])。判斷讀出表項的VALID是否為0,如果為0,則該表項為空,可以在上面建立鏈接索引。如果讀出表項的VALID為1,且表項中的PORT[3:0]、VPI[11:0]、VCI[15:0]與要查找的值不相同,則說明出現沖突,進行步驟(b);如果讀出表項的VALID為1,且表項中的PORT[3:0]、VPI[11:0]、VCI[15:0]與要查找的值相同,則說明該鏈接已建立好,不需要再建鏈。
(b)依次用Hash_code_1、Hash_code_2、Hash_code_3、Hash_code_4異或得出的值的低11位(訪問2K空間)對第二哈希表進行查找(作為讀寫RAM地址的A[10:0])。判斷讀出表項的VALID是否為0,如果為0,則該表項為空,可以在上面建立鏈接索引。如果讀出表項的VALID為1,且表項中的PORT[3:0]、VPI[11:0]、VCI[15:0]與要查找的值不相同,則說明出現沖突,進行步驟(c);如果讀出表項的VALID為1,且表項中的PORT[3:0]、VPI[11:0]、VCI[15:0]與要查找的值相同,則說明該鏈接已建立好,不需要再建鏈。
(c)依次用Hash_code_1、Hash_code_2、Hash_code_3、Hash_code_4異或得出的值的低10位(訪問1K空間)對哈希表3進行查找(作為讀寫RAM地址的A[9:0])。判斷讀出表項的VALID是否為0,如果為0,則該表項為空,可以在上面建立鏈接索引。如果讀出表項的VALID為1,且表項中的PORT[3:0]、VPI[11:0]、VCI[15:0]與要查找的值不相同,則說明出現沖突,進行步驟(d);如果讀出表項的VALID為1,且表項中的PORT[3:0]、VPI[11:0]、VCI[15:0]與要查找的值相同,則說明該鏈接已建立好,不需要再建鏈。
(d)依次用Hash_code_1、Hash_code_2、Hash_code_3、Hash_code_4異或得出的值的低10位(訪問1K空間)對第四哈希表進行查找(作為讀寫RAM地址的A[9:0])。判斷讀出表項的VALID是否為0,如果為0,則該表項為空,可以在上面建立鏈接索引。如果讀出表項的VALID為1,且表項中的PORT[3:0]、VPI[11:0]、VCI[15:0]與要查找的值不相同,則說明出現沖突,表明該鏈接無法建立,已達系統容量極限;如果讀出表項的VALID為1,且表項中的PORT[3:0]、VPI[11:0]、VCI[15:0]與要查找的值相同,則說明該鏈接表已建立好,不需要再建鏈。
至于查找和刪除鏈接,其操作方法與上面描述的操作順序類似,都是依次用4個哈希函數查找4個哈希表,進行比較判斷操作。
(4)查找處理時的帶寬保證邏輯設計時,需要保證該查找在一個信元周期內查找完畢,才能滿足帶寬要求。
從上面描述可以知道,查找時每個RAM地址都要經過“讀—比較”的過程,由于邏輯時延很大,因此不能在一個時鐘周期內完成“讀—比較”的操作,所以可以用并行流水線的方式預先輸出16個哈希地址(4個哈希表,每個表都需要4個哈希函數結果查找),然后依次連續讀RAM,并依次連續鎖存讀出表項的PORT/VPI/VCI和INDEX,再依次連續用鎖存的PORT/VPI/VCI與輸入的PORT/VPI/VCI作比較,如果找到匹配,則停止輸出哈希地址和停止訪問RAM,并結束查找操作。
按照上面的方法,在正常工作情況下,完成一次查找最多需要24個時鐘周期(查找完全部16個哈希地址),能處理53×8/(24×20ns)=883M的速率。
(5)本發明的部分參考計算公式按照本發明設計方法,得出所要求的RAM大小需求計算公式如下。
RAM大小(深度)計算公式RAM容量=鏈接數目×2RAM數據位寬計算公式RAM位寬=端口數目+VPI位寬+VCI位寬+1+log2(鏈接數目)下邊結合圖6說明哈希查找方法的概括實施過程圖6是HASH查找模塊外部接口信號圖。
執行CPU下發的增加鏈接命令,有3種可能結果1、該鏈接已經存在于哈希表中,增加鏈接失敗;2、哈希表沖突,沒有空閑地址,增加鏈接失敗;3、找到空閑地址,增加鏈接成功。因此增加鏈接時要依次比較全部4個表的16個哈希地址,看是否已經存在相同的VCC鏈,如果存在相同鏈接就返回,不再進行比較,如果找到第一個空閑地址,就把該地址保存起來,比較完16個哈希地址后如果不存在相同的鏈接就向第一個空閑地址插入鏈接。比較完成后設置響應寄存器為相應的狀態以便CPU讀取命令的執行狀況。
執行刪除鏈接命令,有2種可能結果1、找到匹配,將匹配地址的內容清零,刪除該鏈接,并設置響應寄存器為成功;2、找不到匹配,刪除鏈接失敗,設置響應寄存器為失敗。
執行查詢鏈接命令,有2種可能結果1、找到匹配,返回vcc_index,并設置響應寄存器為成功;2、找不到匹配,設置響應寄存器為失敗。
查找模塊檢測到命令操作接口寫入命令時,將Cmd_finish輸出為低,表示查找模塊正在執行命令;查找模塊完成命令操作后,將Cmd_finish輸出置為高,表示命令操作完成。
上行業務哈希表查找當查找模塊輸出Syc為高時,重組模塊(RSM)寫入VPI/VCI,查找模塊檢測到該寫入操作時,便啟動狀態機開始查找操作,同時將Ma_finish輸出為低。
查找過程查找過程類似插入過程,首先用哈希地址Hash_code_1在第1個哈希表查找,如果找到匹配就返回vcc_index,并將Ma_finish輸出置為高(表示查找完成)和Ma_flag輸出置為高(表示找到匹配,Data_rsm_out輸出有效);如果不匹配則用Hash_code_2再在第1個哈希表查找,過程同樣。如果4個哈希地址在第1個表都找不到匹配,則用Hash_code_1[6:0]在第2個哈希表查找,查找過程和第1個表完成相同。如此類推,如果4個表都沒找到與28位VPI/VCI信息相匹配的記錄,則表示不存在該鏈接,并且輸出Ma_finish為高、Ma_flag為低。
查找模塊操作流程模塊復位后,首先初始化哈希表,將存儲鏈接的RAM清零。初始化完成后,輸出高電平有效的初始化完成信號Init_done。查找模塊采用論詢方式來判斷是否需要執行查找操作和命令操作。每次論詢開始前,Syc先輸出1個時鐘周期的高電平。下行重組模塊檢測到高電平的Syc信號后,如果有信元等待地址查找,在下一時鐘周期就寫入端口號、VPI/VCI。查找模塊如果在下一時鐘周期檢測到重組模塊的寫入操作(Wr_rsm_==0)后就進入查找狀態(否則就判斷是否有命令操作),查找結束后,判斷如果有命令操作就進入命令操作狀態(否則返回開始下一次論詢),命令執行完畢就完成一次論詢。在正常工作情況下(只有查找操作,沒有命令操作),完成一次查找最多需要24個時鐘周期(查找完全部16個哈希地址),能處理53×8/(24×20ns)=883M的速率。最壞情況下(同時有查找操作和命令操作),完成1次論詢需要46個時鐘周期,即查找操作、命令操作需分別讀取全部16個哈希地址,能處理53×8/(46×20ns)=460M速率。由于相對查找操作來說,命令操作頻率非常低,因此可以滿足155M業務速率的要求。
與查找ATM鏈接的現有查找技術(直接地址和CAM表查找法)相比,本發明提供的裝置和方法如下優點(1)對RAM容量要求較低,可以在FPGA內部實現;(2)很容易支持較多數目的鏈接查找,且端口值、VPI、VCI值范圍不受限制;(3)實現起來方法簡單,鏈接數目增加時,按照本發明的方法則很容易擴充實現。
以上所述僅為本發明的優選實施例而已,并不用于限制本發明,對于本領域的技術人員來說,本發明可以有各種更改和變化。凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的權利要求范圍之內。
權利要求
1.實現ATM鏈接查找的裝置,其特征在于包括邏輯處理器,用于根據能夠確定鏈接位置的關鍵字構造哈希表,構造哈希函數,將所述關鍵字分為至少兩個部分進行按位異或,得出按位異或值,處理哈希沖突,將不沖突的按位異或值作為哈希地址訪問所述哈希表,存取相應的連接信息或記錄;以及存儲器,用于儲存哈希表。
2.根據權利要求1所述的實現ATM鏈接查找的裝置,其特征在于所述邏輯處理器包括哈希表構造裝置,用于確定關鍵字,并構造至少兩個哈希表;哈希函數構造裝置,用于構造哈希函數;異或處理裝置,用于將所述關鍵字分為至少兩個部分進行按位異或,得出按位異或值;哈希沖突處理裝置,用于接收所述異或處理裝置輸出的按位異或值,以所述按位異或值作為地址訪問哈希表,判斷是否存在哈希沖突,處理出現的哈希沖突;以及存取裝置,以不再沖突的按位異或值作為哈希地址訪問所述哈希表,存取相應的連接信息或記錄。
3.根據權利要求2所述的實現ATM鏈接查找的裝置,其特征在于所述哈希沖突處理裝置是再哈希裝置。
4.根據權利要求2所述的實現ATM鏈接查找的裝置,其特征在于所述異或處理裝置是異或門電路。
5.根據權利要求2所述的實現ATM鏈接查找的裝置,其特征在于所述關鍵字包括端口號(PORT)、虛擬通道標識(VPI)、以及虛擬通路標識(VCI)。
6.根據權利要求1所述的實現ATM鏈接查找的裝置,其特征在于所述存儲器將其地址由低至高依次分配給所述哈希表。
7.根據權利要求1所述的實現ATM鏈接查找的裝置,其特征在于所述邏輯處理器按查找優先次序將哈希表分級。
8.根據權利要求1所述的實現ATM鏈接查找的裝置,其特征在于所述存儲器是現場可編程門陣列(FPGA)芯片的隨機存儲器(RAM)。
9.實現ATM鏈接查找的方法,其特征在于所述方法包括以下步驟1)確定關鍵字,構造哈希表,所述哈希表至少為兩個,表示出關鍵字集合和鏈接信息表項或記錄集合的存儲位置之間的對應關系;2)構造哈希函數,所述哈希函數是關于關鍵字的函數,使所述關鍵字集合映像到所述鏈接信息表項或記錄集合;3)將關鍵字分為至少兩部分使用所述哈希函數進行按位異或得到按位異或值;4)以所述按位異或值作為地址查找哈希表,判斷是否存在哈希沖突;5)若出現哈希沖突,則使用哈希沖突處理方法解決哈希沖突;以及6)將不再沖突的所述按位異或值作為地址訪問哈希表,存取相應的鏈接信息或記錄。
10.根據權利要求9所述的實現ATM鏈接查找的方法,其特征在于步驟5)中所述哈希沖突處理方法是再哈希法。
11.根據權利要求10所述的實現ATM鏈接查找的方法,其特征在于所述再哈希法包括以按位異或值為地址訪問所述哈希表;以及若出現哈希沖突,則以所述按位異或值的更低位訪問其它哈希表。
12.根據權利要求9所述的實現ATM鏈接查找的方法,其特征在于所述哈希表被按查找優先次序分級。
13.根據權利要求9所述的實現ATM鏈接查找的方法,其特征在于所述關鍵字包括端口號(PORT)、虛擬通道標識(VPI)、以及虛擬通路標識(VCI)。
14.根據權利要求9所述的實現ATM鏈接查找的方法,其特征在于需要在一個信元周期內查找完畢。
全文摘要
本發明提供了實現ATM鏈接查找的裝置和方法,使用該裝置和方法可以實現較大異步傳輸模式鏈接數目的查找,并能滿足帶寬的處理。本發明的查找裝置和方法采用再哈希法處理哈希沖突。與目前查找異步傳輸模式鏈接的現有查找技術(直接地址、CAM表查找法)相比,本發明提供的裝置和方法有如下優點(1)對RAM容量要求較低,可以在FPGA內部實現;(2)很容易支持較多數目的鏈接查找,且端口值、VPI值、VCI值范圍不受限制;(3)實現起來方法簡單,鏈接數目增加時,按照本發明提供的裝置和方法很容易擴充實現。
文檔編號H04L12/40GK1516405SQ0310134
公開日2004年7月28日 申請日期2003年1月3日 優先權日2003年1月3日
發明者夏偉成 申請人:華為技術有限公司