專利名稱:一種基于Hash查找CAM的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信、高速網(wǎng)絡(luò)下的數(shù)據(jù)查找匹配或芯片設(shè)計技術(shù)領(lǐng)域,具體地說是一種基于Hash查找CAM的方法。
背景技術(shù):
隨著通信技術(shù)的快速發(fā)展,一方面,在網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)帶寬越來越大。另一方面,網(wǎng)絡(luò)中各種各樣的應(yīng)用不斷變化和發(fā)展,現(xiàn)在的IP網(wǎng)絡(luò)需要為用戶提供更多服務(wù)類型和更好的服務(wù)質(zhì)量,要求路由器提供額外的處理機(jī)制來實現(xiàn)區(qū)分服務(wù),報文分類,安全入侵監(jiān)測, 防火墻訪問控制,虛擬專用網(wǎng),快速路由查找,網(wǎng)絡(luò)地址轉(zhuǎn)化,等一些網(wǎng)絡(luò)關(guān)鍵技術(shù)。為了適應(yīng)網(wǎng)絡(luò)的數(shù)據(jù)流量越來越大的發(fā)展趨勢,保證網(wǎng)絡(luò)鏈路的通暢性,對路由器性能提出了新的挑戰(zhàn)——如何快速路由。網(wǎng)絡(luò)技術(shù)的發(fā)展,這些關(guān)鍵網(wǎng)絡(luò)技術(shù)都涉及查找匹配問題,而基于軟件的查找匹配效率低下,傳統(tǒng)的軟件實現(xiàn)的方法對于高速網(wǎng)絡(luò)的發(fā)展顯的力不從心。CAM芯片的快速查找匹配特性,使得CAM在網(wǎng)絡(luò)中得到廣泛的應(yīng)用。CAM芯片的快速查找匹配的特點,為網(wǎng)絡(luò)中很多關(guān)鍵的應(yīng)用提供了新的解決方案??梢杂肅AM來實現(xiàn)快速路由查找,報文分類,區(qū)分服務(wù),入侵監(jiān)測等需要快速查找匹配的關(guān)鍵技術(shù)。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種基于Hash查找CAM的方法。本發(fā)明的目的是按以下方式實現(xiàn)的,本發(fā)明的通過Hash查找匹配原理,將其邏輯用硬件電路描述,待查數(shù)據(jù)寫入存儲體,兩結(jié)構(gòu)組合成為內(nèi)容可尋址存儲體(Content Addressable Memory)。設(shè)計分為以下幾個功能模塊
1)總線;2) Hash函數(shù)查找表;3) Hash入口表;4)數(shù)據(jù)存儲體;5)匹配電路;6) RAM控制電路,其中
總線1)是CAM與外部通信的通道。在CAM中總線分為請求總線和響應(yīng)總線。請求總線是一條雙向多路復(fù)用總線,請求總線由命令總線和請求數(shù)據(jù)總線組成。命令總線處理輸入命令,請求總線是主要數(shù)據(jù)通道。所有對CAM的操作命令信號,還有輸入到CAM中的數(shù)據(jù)信號都通過請求總線進(jìn)行傳輸。Hash函數(shù)查找表2)通過查找表的方式對Hash查找函數(shù)邏輯進(jìn)行實現(xiàn),哈希查找步驟為設(shè)哈希表為HST^Tm-I],哈希函數(shù)取H (key),解決沖突的方法為R (x);第一步對給定k值,計算哈希地址Di=H (k);若HST為空,則查找失??;若HST=k,則查找成功;否則, 執(zhí)行第二步(處理沖突)。第二步重復(fù)計算處理沖突的下一個存儲地址Dk=R (Dk-Ι),直到 HST[Dk]為空,或HST [Dk] =k為止。若HST[Dk]=K,則查找成功,否則查找失敗。根據(jù)選擇的沖突處理方法,計算關(guān)鍵字key的下一個存儲地址。若下一個存儲地址仍被占用,則繼續(xù)執(zhí)行第二步,直到找到能用的存儲地址為止。Hash入口表3)中存放Key值經(jīng)過Hash函數(shù)計算后的HashJfey以及與之對應(yīng)的數(shù)據(jù)表項入口值。數(shù)據(jù)存儲體4)作為待查找的數(shù)據(jù)存放區(qū),根據(jù)系統(tǒng)的數(shù)據(jù)格式確定該存儲體的數(shù)據(jù)寬度和數(shù)據(jù)深度,通過HashJfey查找到對應(yīng)于數(shù)據(jù)存儲體的地址后,系統(tǒng)通過RAM控制電路6)對該存儲體進(jìn)行訪存,讀取數(shù)據(jù)表項中的數(shù)據(jù)。讀取出表項中的數(shù)據(jù)后,通過匹配電路5)將待尋址的內(nèi)容與表項數(shù)據(jù)進(jìn)行比對, 若匹配,則輸出匹配地址,拉高數(shù)據(jù)匹配標(biāo)志。查找程序流程如下
1.根據(jù)輸入的查找數(shù)據(jù)進(jìn)行hash計算得到Hashkey,用Hash key去訪問Hash入口表。如果Hash入口表的內(nèi)容為0,則跳到3 ;如果Hash入口表的內(nèi)容不為0,則跳到2 ;
2.根據(jù)Hash入口表的內(nèi)容,去訪問CAM數(shù)據(jù)項鏈表,并把查找數(shù)據(jù)同CAM數(shù)據(jù)項鏈表的數(shù)據(jù)一個一個比較(從鏈表頭到鏈表尾)。從鏈表頭開始比較,查找不成功,接著查找鏈表的下一項,直到鏈表尾為止,跳到3 ;查找成功(查找數(shù)據(jù)的值同CAM數(shù)據(jù)項鏈表中一項的值相同)則記錄下此項CAM地址,接著查找鏈表的下一項,如果也成功則比較CAM地址與此前記錄的CAM地址的大小,最終取CAM地址最小者,這樣查找一直到鏈表尾為止,跳到3 ;
3.查找成功,返回CAM地址和CAM命中的信息,跳到4;查找不成功,返回查找結(jié)束,返回CAM沒有命中的信息,跳到4;
4.操作結(jié)束,返回。本發(fā)明的有益效果是基于Hash查找算法的高效性,可快速查找出匹配數(shù)據(jù),減小了數(shù)據(jù)查找時的比較次數(shù),只需要一次即能找出數(shù)據(jù),提高了查找效率,節(jié)約了系統(tǒng)時間,提高了數(shù)據(jù)通信的吞吐率。
附圖1是Hash查找CAM結(jié)構(gòu)圖。
具體實施例方式參照說明書附圖對本發(fā)明的基于Hash查找CAM的方法作以下詳細(xì)地說明。本發(fā)明的一種基于Hash查找CAM的方法,其結(jié)構(gòu)是由正如發(fā)明內(nèi)容中所描述的, 本發(fā)明體系結(jié)構(gòu)主要包括
1)總線;2)Hash函數(shù)查找表;3)Hash入口表;4)數(shù)據(jù)存儲體;5)匹配電路;6)RAM控制電路。CAM具有數(shù)據(jù)存儲功能和高速數(shù)據(jù)內(nèi)容查找功能,同時支持讀、寫、查找等多條指令,但CAM最主要的功能是高速內(nèi)容查找功能,而其它的功能都是為查找功能做基礎(chǔ)的,因此CAM功能模型的設(shè)計的核心是高速查找引擎的設(shè)計。查找引擎本身維護(hù)一張表,并能接收外部輸入數(shù)據(jù)。它內(nèi)部通過某種查找算法將輸入數(shù)據(jù)與表中各項進(jìn)行全部比較(準(zhǔn)確) 或部分(Don’ t care功能)比較,然后輸出比較結(jié)果。用hash函數(shù)的方法來進(jìn)行快速CAM內(nèi)容查找。當(dāng)進(jìn)行CAM查找請求時,先把查找的數(shù)據(jù)進(jìn)行hash計算得出一個hash key,接著根據(jù)此hash key (作為hash入口表地址) 去訪問hash入口表得到CAM表項數(shù)據(jù)鏈表首地址,然后去訪問CAM數(shù)據(jù)表項鏈表,最后把要查找的數(shù)據(jù)同CAM數(shù)據(jù)鏈表中的項逐個的比較,最后返回CAM查找結(jié)果。其中CAM查找引擎采用了 Hash查找算法來實現(xiàn)的?;贖ash查找引擎的CAM模型總體結(jié)構(gòu)即用Hash查找引擎作為CAM查找引擎,查找引擎接收到從邏輯控制模塊請求時,接收查找數(shù)據(jù)并把存儲到數(shù)據(jù)寄存器中,然后讀取數(shù)據(jù)存儲器中的CAM表項,通過數(shù)據(jù)比較器進(jìn)行比較,直到比較成功或數(shù)據(jù)存儲器中的CAM表項都比較了一遍時,返回比較成功的CAM表項在數(shù)據(jù)存儲器中地址。查找程序流程如下
1.根據(jù)輸入的查找數(shù)據(jù)進(jìn)行hash計算得到Hashkey,用Hash key去訪問Hash入口表。如果Hash入口表的內(nèi)容為0,則跳到3 ;如果Hash入口表的內(nèi)容不為0,則跳到2 ;
2.根據(jù)Hash入口表的內(nèi)容,去訪問CAM數(shù)據(jù)項鏈表,并把查找數(shù)據(jù)同CAM數(shù)據(jù)項鏈表的數(shù)據(jù)一個一個比較(從鏈表頭到鏈表尾)。從鏈表頭開始比較,查找不成功,接著查找鏈表的下一項,直到鏈表尾為止,跳到3 ;查找成功(查找數(shù)據(jù)的值同CAM數(shù)據(jù)項鏈表中一項的值相同)則記錄下此項CAM地址,接著查找鏈表的下一項,如果也成功則比較CAM地址與此前記錄的CAM地址的大小,最終取CAM地址最小者,這樣查找一直到鏈表尾為止,跳到3 ;
3.查找成功,返回CAM地址和CAM命中的信息,跳到4;查找不成功,返回查找結(jié)束,返回CAM沒有命中的信息,跳到4;
4.操作結(jié)束,返回。
實施例1)利用Hash查找函數(shù)存在的形式,包括直接法、減去法、余數(shù)法、數(shù)值抽出法、中間平均法、折迭法、旋轉(zhuǎn)法、偽隨機(jī)數(shù)法,設(shè)計建模采用自頂向下的分析設(shè)計方法,把整個系統(tǒng)分成多個模塊,每個模塊再繼續(xù)細(xì)化,直到最低一級拿來編碼的程度,進(jìn)行逐個底層模塊的開發(fā),調(diào)試,然后進(jìn)行模塊聯(lián)調(diào),最后整個系統(tǒng)聯(lián)調(diào);
2)對于Hash查找中的Hash碰撞問題,解決方法包括(1)線性開放尋址法;(2)差值解決法;(3)鏈表解決法;(4)分桶Hash法;
3)基于CAM的存儲體不僅具有數(shù)據(jù)存儲能力,還具有數(shù)據(jù)比較能力,存儲體接收比較數(shù)據(jù),并把它廣播到對應(yīng)的每一個相關(guān)聯(lián)存儲器中,相關(guān)聯(lián)存儲器把數(shù)據(jù)同自己存儲的數(shù)據(jù)進(jìn)行比較,最后相關(guān)聯(lián)存儲器把比較結(jié)果送給優(yōu)先編碼器;
4)對于CAM的各功能,詳細(xì)進(jìn)行描述和分析,對應(yīng)到具體設(shè)計方案及硬件實現(xiàn),具有對應(yīng)的時序關(guān)系;
5)基于Hash查找函數(shù)邏輯實現(xiàn)方法;
6)由Hash查找入口表地址訪問數(shù)據(jù)表,對比數(shù)據(jù)表項內(nèi)容和查找內(nèi)容,輸出匹配結(jié)
果;
7)對存儲體進(jìn)行選型,選擇最優(yōu)方案。除說明書所述的技術(shù)特征外,均為本專業(yè)技術(shù)人員的已知技術(shù)。
權(quán)利要求
1. 一種基于Hash查找CAM的方法,其特征在于CAM給用戶提供讀、寫、查找、移動、檢驗的功能,通過特定的Hash函數(shù)的運算與Hash表中的表項相匹配求得數(shù)據(jù)的位置,再進(jìn)行數(shù)據(jù)比較后即得到欲查找的地址,具體步驟如下通過Hash查找匹配原理,將其邏輯用硬件電路描述,待查數(shù)據(jù)寫入存儲體,兩結(jié)構(gòu)組合成為內(nèi)容可尋址存儲體,設(shè)計分為以下幾個功能模塊1)總線;2) Hash函數(shù)查找表;3) Hash入口表;4)數(shù)據(jù)存儲體;5)匹配電路;6) RAM控制電路;其中總線1)是CAM與外部通信的通道,在CAM中總線分為請求總線和響應(yīng)總線;請求總線是一條雙向多路復(fù)用總線,請求總線由命令總線和請求數(shù)據(jù)總線組成,命令總線處理輸入命令,請求總線是主要數(shù)據(jù)通道,所有對CAM的操作命令信號,還有輸入到CAM中的數(shù)據(jù)信號都通過請求總線進(jìn)行傳輸;Hash函數(shù)查找表2)通過查找表的方式對Hash查找函數(shù)邏輯進(jìn)行,哈希查找步驟為 設(shè)哈希表為HST^TM-I],哈希函數(shù)取H (key),解決沖突的方法為R (χ);第一步對給定k 值,計算哈希地址Di=H (k);若HST為空,則查找失?。蝗鬑ST=k,則查找成功;否則,執(zhí)行第二步處理沖突;第二步重復(fù)計算處理沖突的下一個存儲地址Dk=R(Dk-I),直到HST[Dk]為空,或HST[Dk] =k為止;若HST[Dk]=K,則查找成功,否則查找失?。桓鶕?jù)選擇的沖突處理方法,計算關(guān)鍵字key的下一個存儲地址,若下一個存儲地址仍被占用,則繼續(xù)執(zhí)行第二步, 直到找到能用的存儲地址為止;Hash入口表3)中存放Key值經(jīng)過Hash函數(shù)計算后的HashJfey以及與之對應(yīng)的數(shù)據(jù)表項入口值;數(shù)據(jù)存儲體4)作為待查找的數(shù)據(jù)存放區(qū),根據(jù)系統(tǒng)的數(shù)據(jù)格式確定該存儲體的數(shù)據(jù)寬度和數(shù)據(jù)深度,通過HashJfey查找到對應(yīng)于數(shù)據(jù)存儲體的地址后,系統(tǒng)通過RAM控制電路 6)對該存儲體進(jìn)行訪存,讀取數(shù)據(jù)表項中的數(shù)據(jù);讀取出表項中的數(shù)據(jù)后,通過匹配電路5)將待尋址的內(nèi)容與表項數(shù)據(jù)進(jìn)行比對,若匹配,則輸出匹配地址,拉高數(shù)據(jù)匹配標(biāo)志;查找程序流程如下1)根據(jù)輸入的查找數(shù)據(jù)進(jìn)行hash計算得到Hashkey,用Hash key去訪問Hash入口表,如果Hash入口表的內(nèi)容為0,則跳到3 ;如果Hash入口表的內(nèi)容不為0,則跳到2 ;2)根據(jù)Hash入口表的內(nèi)容,去訪問CAM數(shù)據(jù)項鏈表,并把查找數(shù)據(jù)同CAM數(shù)據(jù)項鏈表的數(shù)據(jù)一個一個比較,從鏈表頭到鏈表尾,從鏈表頭開始比較,查找不成功,接著查找鏈表的下一項,直到鏈表尾為止,跳到3 ;查找成功,查找數(shù)據(jù)的值同CAM數(shù)據(jù)項鏈表中一項的值相同,則記錄下此項CAM地址,接著查找鏈表的下一項,如果也成功則比較CAM地址與此前記錄的CAM地址的大小,最終取CAM地址最小者,這樣查找一直到鏈表尾為止,跳到3 ;3)查找成功,返回CAM地址和CAM命中的信息,跳到4;查找不成功,返回查找結(jié)束,返回CAM沒有命中的信息,跳到4;4)操作結(jié)束,返回。
全文摘要
本發(fā)明提供一種基于Hash查找CAM的方法,CAM具有數(shù)據(jù)存儲功能和高速數(shù)據(jù)內(nèi)容查找功能,同時支持讀、寫、查找等多條指令,但CAM最主要的功能是高速內(nèi)容查找功能,而其它的功能都是為查找功能做基礎(chǔ)的,因此CAM功能模型的設(shè)計的核心是高速查找引擎的設(shè)計。查找引擎本身維護(hù)一張表,并能接收外部輸入數(shù)據(jù)。它內(nèi)部通過某種查找算法將輸入數(shù)據(jù)與表中各項進(jìn)行全部比較(準(zhǔn)確)或部分(Don’tcare功能)比較,然后輸出比較結(jié)果。用hash函數(shù)的方法來進(jìn)行快速CAM內(nèi)容查找。當(dāng)進(jìn)行CAM查找請求時,先把查找的數(shù)據(jù)進(jìn)行hash計算得出一個hashkey,接著根據(jù)此hashkey(作為hash入口表地址)去訪問hash入口表得到CAM表項數(shù)據(jù)鏈表首地址,然后去訪問CAM數(shù)據(jù)表項鏈表,最后把要查找的數(shù)據(jù)同CAM數(shù)據(jù)鏈表中的項逐個的比較,最后返回CAM查找結(jié)果。
文檔編號G06F17/30GK102364463SQ20111027682
公開日2012年2月29日 申請日期2011年9月19日 優(yōu)先權(quán)日2011年9月19日
發(fā)明者周恒釗 申請人:浪潮電子信息產(chǎn)業(yè)股份有限公司