两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種解決Hash沖突的方法及裝置的制作方法

文檔序號:7972433閱讀:262來源:國知局
專利名稱:一種解決Hash沖突的方法及裝置的制作方法
技術領域
本發(fā)明涉及網(wǎng)絡通信領域,特別涉及一種解決Hash沖突的方法及裝置。
背景技術
在以太網(wǎng)中,MAC地址往往需要自動學習老化技術,由于MAC地址有48bit,在實際使用過程中不可能為每個地址都分配一個表項,因此在具體應用中常通過Hash算法實現(xiàn),也就是按照一定的規(guī)則,將48bit的MAC地址轉化為十幾bit的低位地址,然后將實際要轉發(fā)的內容存放到低位地址對應的存儲器(memory)中。
Hash算法是一種高速查表算法,它通過Hash函數(shù)建立起從關鍵字集合到Hash索引之間的映射,在理想情況下,可以實現(xiàn)復雜度為0(1)的查找性能。Hash表查找方法的優(yōu)點是查找快速、存儲空間利用率高。缺點是查找的時間不固定,沖突越多查找的時間越長。
Hash函數(shù)所建立的從關鍵字集合到Hash索引之間的映射是多對一的映射,必然存在Hash沖突,即不同的關鍵字最后產生相同的索引。當發(fā)生沖突后,Hash查找的性能將嚴重降低。
Hash算法包括兩方面的內容一是Hash函數(shù);二是沖突解決方案。
如何處理沖突是構造Hash表的關鍵之一。采用不同的沖突處理方法就可以得到不同的Hash表。處理沖突的主要方法有開放定址法、再哈希法、鏈地址法、建立公共溢出區(qū)等。
處理哈希沖突常用的解決方法是再哈希法,即產生地址沖突時計算另一個哈希函數(shù)地址,直到沖突不再發(fā)生。這種方法不易產生聚集——即用第一個哈希函數(shù)求得的地址有沖突的值經過不同的哈希函數(shù)再哈希后再有沖突的幾率相對較小。
參加圖1,是再哈希法常見的表項結構圖,共有4個哈希表,按優(yōu)先次序分為1~4級,大小分別為32K、16K、8K、8K。每個表的操作完全相同,都是用4個不同哈希函數(shù)進行再哈希來處理沖突。依次用Hash_code_1、Hash_code_2、Hash_code_3、Hash_code_4對第1個表進行查找都有沖突時,再取哈希地址的低14位(訪問16K空間)對第2個表進行查找,如果同樣都有沖突時再取哈希地址的低13位(訪問8K空間)對第3個表進行查找,如此類推,如果4個表的4個哈希地址都沖突,表明該連接無法建立(相應于CPU建鏈操作)或不存在(相應于業(yè)務查找操作),查找模塊返回相應的響應以便查詢。
再哈希法的缺點是當找不到匹配表項時,查找次數(shù)就變成最惡劣的查找16次,尤其是增加和刪除連接的時候。
對于增加連接來說,有3種可能結果1、該連接已經存在于哈希表中,增加連接失敗;2、哈希表沖突,沒有沖突地址,增加連接失??;3、找到沖突地址,增加連接成功。因此增加連接時要依次比較全部4個表的16個哈希地址,看是否已經存在相同的KEY值,如果存在相同連接就返回,不再進行比較,如果找到第一個沖突地址,就把該地址保存起來,比較完16個哈希地址后,如果不存在相同的連接就向第一個沖突地址插入連接。比較完后,設置響應寄存器為相應的狀態(tài)以便CPU讀取命令的執(zhí)行狀況。
對于刪除連接來說,有2種可能結果1、找到匹配,將匹配地址的內容清零,刪除該連接,并設置響應寄存器為成功;2、找不到匹配,刪除連接失敗,設置響應寄存器為失敗。同樣當找不到匹配地址,刪除連接失敗時,此刻查找就變成了最惡劣的16次查找。
現(xiàn)有技術直接對ZBT SRAM(Zero-Bus Turnaround Static Random Access Memory,零總線延遲靜態(tài)隨機存儲器)進行調用查找地址。當需要一個地址時從ZBT SRAM讀一個地址出來,當釋放掉一個沖突地址時,再將此地址寫入ZBT SRAM中。當主程序沒有取到地址時,需要等待幾個時鐘周期,這時查找往往達不到線速。

發(fā)明內容
本發(fā)明為了解決現(xiàn)有技術中Hash沖突、查找時間過長及不對沖突地址進行維護的問題,提供了一種解決Hash沖突的方法及裝置。所述技術方案如下本發(fā)明提供了一種解決Hash沖突的方法,所述方法包括以下步驟步驟A將需要存儲的信息進行哈希運算,根據(jù)運算結果在哈希表中找到對應的表項,所述哈希表由鏈表頭、指針和鏈表尾組成;步驟B當所述運算結果對應的鏈表頭中存有內容時,判斷所述鏈表頭中的內容與所述運算結果是否相同,如果相同,則不做處理;否則,申請一個空閑地址,將所述運算結果存儲在該空閑地址對應的表項中,并在哈希表中設置指向該表項的指針;步驟C當所述運算結果對應的鏈表頭為空時,直接將所述運算結果存儲在該鏈表頭。
所述步驟B具體包括步驟B1當所述運算結果對應的鏈表頭中存有內容時,判斷所述鏈表頭中的內容與所述運算結果是否相同,如果相同,執(zhí)行步驟B2;否則,執(zhí)行步驟B3;步驟B2對所述運算結果不做處理;
步驟B3判斷所述鏈表頭中是否有指向下一個地址的指針,如果有,執(zhí)行步驟B4,否則,申請一個空閑地址,將所述運算結果填入所申請的空閑地址對應的表項中,并在所述鏈表頭設置指向該空閑地址的指針;步驟B4按照表項中的指針找到下一個地址對應的表項,并判斷該表項中存儲的內容與所述運算結果是否相同,如果相同,不做處理;否則申請一個空閑地址,將所述運算結果填入所申請的空閑地址對應的表項中,并在所述表項中設置指向該空閑地址的指針。
所述的空閑地址是利用讀先進先出隊列模塊和寫先進先出隊列模塊進行存儲和傳遞的。
所述方法還包括步驟D對讀先進先出隊列模塊和寫先進先出隊列模塊中的空閑地址進行維護。
所述步驟D具體包括步驟D1檢測讀先進先出隊列模塊和寫先進先出隊列模塊,如果當前檢測的是讀先進先出隊列模塊,執(zhí)行步驟D2;否則,執(zhí)行步驟D3;步驟D2判斷讀先進先出隊列模塊中沖突地址個數(shù)是否小于預設值,如果小于,從寫先進先出隊列模塊中讀取沖突地址放入讀先進先出隊列模塊中,或者從沖突空閑地址空間讀取沖突地址放入讀先進先出隊列模塊中;步驟D3判斷寫先進先出隊列模塊中是否能再放入預設值個沖突地址,如果不能,則將寫先進先出隊列模塊中的地址讀入讀先進先出隊列模塊中,或者將寫先進先出隊列模塊中的地址讀入沖突空閑地址空間。
所述預設值為4。
所述方法還包括步驟E有需要刪除的信息時,對該需要刪除的信息進行哈希運算,得到運算結果,然后根據(jù)該運算結果在哈希表中找到相應的表項,釋放該表項,并把釋放后的表項所在地址寫在沖突空閑地址空間中。
所述步驟E具體包括步驟E1當所述哈希表中有信息需要刪除時,對需要刪除的信息進行哈希運算,得到運算結果,根據(jù)所述運算結果在哈希表中找到相應的表項,釋放該表項;步驟E2判斷當前表項中是否有指向下一個表項的指針,如果有,修改當前表項的上一個表項的指針為當前表項的指針,或者如果所述當前表項為鏈表頭,則將指針指向的下一個表項的內容放到該鏈表頭;否則,將當前表項的上一個表項的指針刪除;步驟E3將當前表項所在地址寫入沖突空閑地址空間中。
本發(fā)明還提供了一種解決Hash沖突的裝置,所述裝置包括以下模塊哈希運算模塊,用于將需要存儲的信息進行哈希運算,得到運算結果;判斷模塊,用于用所述運算結果查哈希表,判斷查到的表項是否為空以及是否存有指向下一個地址的指針;地址申請模塊,用于當所述運算結果對應的鏈表頭中存有內容時,判斷所述鏈表頭中的內容與哈希運算模塊中的運算結果是否相同,如果相同,則不做處理;否則,申請一個空閑地址;信息存儲模塊,用于將所述運算結果存儲在哈希表對應的表項中或者新申請的空閑地址對應的表項中;指針設置模塊,用于當申請一個空閑地址時,在哈希表中設置指向該地址的指針。
所述裝置還包括刪除鏈表模塊,用于有需要刪除的信息時,對該需要刪除的信息進行哈希運算,得到運算結果,然后根據(jù)該運算結果在哈希表中找到相應的表項,釋放該表項,并把釋放后的表項所在地址寫在沖突空閑地址空間中。
所述裝置還包括讀先進先出隊列模塊,用于為添加鏈表出現(xiàn)沖突時,提供空閑地址;寫先進先出隊列模塊,用于存儲刪除鏈表時釋放的地址;先進先出隊列接口控制模塊,用于調節(jié)讀先進先出隊列模塊和寫先進先出隊列模塊中空閑地址的個數(shù)。
本發(fā)明的技術方案帶來的有益效果是1、通過鏈表法存儲沖突地址,有效地解決了Hash沖突問題;2、沖突地址池的維護采用標準FIFO(First In First Out,先進先出隊列)接口,節(jié)約了帶寬,可以實現(xiàn)查找表的線速轉發(fā)。
3、內部地址維護和外面的添加和刪除鏈表可以并行執(zhí)行,F(xiàn)IFO起到一個緩沖的作用,因此外部的操作可以簡單地完成。


圖1是現(xiàn)有技術中再哈希法的表項結構示意圖;圖2是本發(fā)明提供的鏈表法的Hash結構框圖;圖3是本發(fā)明提供的沖突地址維護的示意圖;
圖4是本發(fā)明實施例1提供的添加鏈表方法流程圖;圖5是本發(fā)明實施例2提供的刪除鏈表方法流程圖;圖6是本發(fā)明實施例3提供的沖突地址維護的方法流程圖;圖7是本發(fā)明實施例4提供的解決Hash沖突的裝置示意圖。
具體實施例方式
下面結合附圖和具體實施例對本發(fā)明作進一步說明,但不作為對本發(fā)明的限定。
本發(fā)明提供了一種解決Hash沖突的方法及裝置,通過采用鏈表法解決Hash沖突,然后對鏈表法產生的沖突地址進行維護,達到更好地進行地址傳遞的目的。
本發(fā)明采用鏈表法解決路由查找轉發(fā)時的Hash沖突,即采用16k鏈表頭空間加上8k沖突地址空間來存儲鏈表,鏈表放在外接的ZBT SRAM中。
該鏈表的結構參見圖2,其中hash(key1)=hash(key2)=hash(key3)=hash(key4)指關鍵字key1、key2、key3、key4經Hash運算后的結果相同,hash(key5)=hash(key6)=hash(key7)指關鍵字key5、key6、key7經Hash運算后的結果相同,還有一個關鍵字key8,將上述關鍵字進行鏈表添加后的結果參見圖2所示的哈希表。
參見圖3,沖突地址的維護示意圖,沖突空閑地址空間以沖突地址池為例,其中SRAM轉為FIFO接口控制模塊負責將SRAM接口轉為FIFO接口,生成兩個16×13bit的基于LUT(LookUp Table,查找表)同步FIFO模塊,兩個FIFO模塊分別為讀FIFO模塊和寫FIFO模塊,讀FIFO模塊與添加鏈表模塊相連,寫FIFO模塊與刪除鏈表模塊相連。
實施例1參加圖4,一種添加鏈表的方法,該方法包括以下步驟步驟101將需要存儲的信息進行哈希運算,按運算后的結果查哈希表,找到該運算結果對應的鏈表頭。這里的哈希表是由鏈表頭、指針和鏈表尾組成。
步驟102判斷該鏈表頭是否為空,如果為空,執(zhí)行步驟103;否則,執(zhí)行步驟104;步驟103將需要存儲的信息的運算結果填入該鏈表頭。
步驟104判斷鏈表頭中存儲的內容是否和需要存儲的信息的運算結果相同,如果相同,執(zhí)行步驟105;否則,執(zhí)行步驟106。
步驟105對需要存儲的信息的運算結果不做處理。
步驟106判斷該鏈表頭中是否有指向下一個地址的指針,如果有,執(zhí)行步驟107,否則,執(zhí)行步驟111。
步驟107按照鏈表頭中的指針找到下一個地址對應的表項,判斷該表項中的內容與需要存儲的信息的運算結果是否相同,如果相同,執(zhí)行步驟105,否則,執(zhí)行步驟108。
步驟108判斷該表項中是否有指向下一個地址的指針。如果有,執(zhí)行步驟109,否則,執(zhí)行步驟110。
步驟109繼續(xù)向下查找,直到查到的表項中沒有與要存儲的信息的運算結果相同的內容和指向下一個地址的指針,然后向沖突空閑地址空間的讀FIFO模塊申請一個空閑地址,將需要存儲的信息的運算結果填入所申請的空閑地址對應的表項中,并在該表項中設置指向該空閑地址的指針;其中,空閑地址存儲于沖突地址空間,并通過讀FIFO模塊和寫FIFO模塊進行傳遞。
步驟110直接向沖突空閑地址空間的讀FIFO模塊申請一個空閑地址,將需要存儲的信息的運算結果填入所申請的空閑地址對應的表項中,并在這個表項中設置指向該空閑地址的指針。
步驟111向沖突空閑地址空間的讀FIFO模塊申請一個空閑地址,將需要存儲的信息的運算結果填入所申請的空閑地址對應的表項中,并在鏈表頭設置指向該空閑地址的指針。
上述添加鏈表的過程以圖2中的關鍵字key1、key2、key3、key4為例進行說明如下將關鍵字key1、key2、key3、key4作為需要存儲的信息,先存儲key1,經Hash運算后的結果hash(key1)對應哈希表的第二個表項的鏈表頭,此時發(fā)現(xiàn)該鏈表頭為空,則將hash(key1)填入該鏈表頭。
當要存儲key2時,對key2進行哈希運算,因為hash(key1)=hash(key2),所以發(fā)現(xiàn)哈希運算后的結果對應的鏈表頭已經存有hash(key1),且該表項中沒有指向下一個地址的指針,則向沖突空閑地址空間的讀FIFO模塊申請一個空閑地址,將這個空閑地址以指針形式存儲在hash(key1)的鏈表頭。同時將hash(key2)存儲在該空閑地址對應的表項中。
當要存儲key3時,對key3進行哈希運算,同理發(fā)現(xiàn)對應的鏈表頭中有hash(key1),且該鏈表頭中有指向下一個地址的指針,則按該指針找到下一個表項,發(fā)現(xiàn)表項中有hash(key2),且該表項沒有指向下一個地址的指針,則向沖突空閑地址空間的讀FIFO模塊申請一個空閑地址用來存儲key3的運算結果hash(key3),且把該空閑地址以指針的形式存儲在hash(key2)所在的表項。
Key4的存儲過程與key3相同,不再詳述。
需要增加鏈表時,從讀FIFO模塊中取一個沖突地址。根據(jù)哈希運算后的結果查找哈希表,有3種可能結果
1)該連接已經存在于哈希表中,增加連接失??;2)哈希表沖突,沖突地址池中沒有空閑地址,增加連接失??;3)沖突地址池中存在空閑地址,增加連接成功。但是由于鏈表結構有首節(jié)點和尾節(jié)點指示,當查詢到鏈表尾還沒有找到匹配地址時,則可以直接判斷查找失敗,不再增加連接。
實施例2參見圖5,一種刪除鏈表中表項的方法,該方法具體包括步驟201當有信息需要刪除時,對該信息進行哈希運算,得到運算結果,根據(jù)該運算結果在哈希表中找到對應的表項,將該表項釋放,即將該表項中的內容刪除;步驟202判斷當前表項中是否有指向下一個表項的指針,如果有,執(zhí)行步驟203,否則,執(zhí)行步驟204。
步驟203修改當前表項的上一個表項的指針為當前表項存放的指針,如果當前表項為鏈表頭,則將指針指向的下一個表項的內容放到該鏈表頭;步驟204將當前表項的上一個表項的指針刪除;步驟205將當前表項所在地址寫入沖突空閑地址空間的寫FIFO模塊中。
當刪除鏈表時,將刪除的地址寫入寫FIFO模塊中。有2種可能結果1)找到匹配,將匹配地址的內容清零,刪除該連接,同時將刪除掉的鏈表前后節(jié)點通過修改父子節(jié)點再重新連接起來,然后將被刪除掉的鏈表地址再釋放回沖突地址池中去;2)找不到匹配,刪除連接失敗。同樣當找不到匹配時,鏈表法的查找是只查找到鏈表尾。
實施例3參見圖6,對Hash表結構中的沖突(空閑)地址的維護方法,該方法應用圖3提供的示意圖中的模塊進行,具體步驟如下步驟301初始化空閑地址池,將沖突地址寫入對應的偏移地址中。
本實施例先將兩個16×13bit的FIFO復位信號拉高,F(xiàn)IFO進行復位,且持續(xù)8個時間周期,然后再將其拉低,這主要是由于FIFO對于復位信號的長度有一定要求。
為讀FIFO模塊和寫FIFO模塊中的沖突地址個數(shù)設置預設值,該預設值可以根據(jù)經驗設定,本實施例都取4個。
接著向下行ZBT(Zero-Bus Turnaround,零總線延遲)發(fā)出申請,按順序依次將8k沖突地址寫入到對應的偏移地址中去。當全部寫完以后,跳到正常工作狀態(tài),即檢測讀FIFO模塊和寫FIFO模塊。
步驟302判斷當前檢測的是讀FIFO模塊還是寫FIFO模塊,即檢測讀FIFO模塊中有沒有4個,寫FIFO模塊中還能不能再放4個。如果當前檢測的是讀FIFO模塊,執(zhí)行步驟303,如果當前檢測的是寫FIFO模塊,執(zhí)行步驟307。
步驟303判斷讀FIFO模塊中的沖突地址個數(shù)是否小于4個,如果是,執(zhí)行步驟304,否則返回步驟302。
步驟304判斷寫FIFO模塊中的沖突地址是否滿足4個,如果有4個,執(zhí)行步驟305;否則,執(zhí)行步驟306。該預設值取為4。
步驟305從寫FIFO模塊中讀取4個沖突地址。
步驟306向ZBT SRAM中發(fā)請求,讀取4個沖突地址。
步驟307判斷寫FIFO模塊中能存放的沖突地址數(shù)是否小于4個,即沖突地址是否快要滿,如果小于預設值,執(zhí)行步驟308;否則返回步驟302。
步驟308判斷讀FIFO模塊中是否能再放入4個地址,如果是,執(zhí)行步驟309;否則執(zhí)行步驟310。
步驟309從寫FIFO模塊中取4個地址送入讀FIFO模塊中。
步驟310從寫FIFO模塊中取4個地址寫入到外面的ZBT SRAM中去。
采用這樣方法,就可以盡量減少對外接ZBT SRAM的讀寫操作,從而節(jié)約時間和節(jié)省帶寬。
實施例4參見圖7,本發(fā)明還提供了一種解決Hash沖突及沖突地址維護的裝置,包括以下模塊哈希運算模塊,用于將需要存儲的信息進行哈希運算,得到運算結果;判斷模塊,用于用哈希運算模塊中的運算結果查哈希表,判斷查到的表項是否為空以及是否存有指向下一個地址的指針;地址申請模塊,用于當哈希運算模塊中的運算結果對應的鏈表頭中存有內容時,判斷對應的鏈表頭中的內容與哈希運算模塊中的運算結果是否相同,如果相同,則不做處理;否則,申請一個空閑地址;信息存儲模塊,用于將需要存儲信息的運算結果存儲在哈希表對應的表項中或者新申請的空閑地址對應的表項中;指針設置模塊,用于當申請一個空閑地址時,在哈希表中設置指向該地址的指針。
該裝置還包括刪除鏈表模塊,用于有需要刪除的信息時,對該需要刪除的信息進行哈希運算,得到運算結果,然后根據(jù)該運算結果在哈希表中找到相應的表項,釋放該表項,并把釋放后的表項所在地址寫在沖突空閑地址空間中。
讀先進先出隊列模塊,用于為添加鏈表出現(xiàn)沖突時,提供空閑地址;寫先進先出隊列模塊,用于存儲刪除鏈表時釋放的地址;先進先出隊列接口控制模塊,用于調節(jié)讀先進先出隊列模塊和寫先進先出隊列模塊中空閑地址的個數(shù)。
以上所述的實施例,只是本發(fā)明較優(yōu)選的具體實施方式
的一種,本領域的技術人員在本發(fā)明技術方案范圍內進行的通常變化和替換都應包含在本發(fā)明的保護范圍內。
權利要求
1.一種解決Hash沖突的方法,其特征在于,所述方法包括以下步驟步驟A將需要存儲的信息進行哈希運算,根據(jù)運算結果在哈希表中找到對應的表項,所述哈希表由鏈表頭、指針和鏈表尾組成;步驟B當所述運算結果對應的鏈表頭中存有內容時,判斷所述鏈表頭中的內容與所述運算結果是否相同,如果相同,則不做處理;否則,申請一個空閑地址,將所述運算結果存儲在該空閑地址對應的表項中,并在哈希表中設置指向該表項的指針;步驟C當所述運算結果對應的鏈表頭為空時,直接將所述運算結果存儲在該鏈表頭。
2.如權利要求1所述的解決Hash沖突的方法,其特征在于,所述步驟B具體包括步驟B1當所述運算結果對應的鏈表頭中存有內容時,判斷所述鏈表頭中的內容與所述運算結果是否相同,如果相同,執(zhí)行步驟B2;否則,執(zhí)行步驟B3;步驟B2對所述運算結果不做處理;步驟B3判斷所述鏈表頭中是否有指向下一個地址的指針,如果有,執(zhí)行步驟B4,否則,申請一個空閑地址,將所述運算結果填入所申請的空閑地址對應的表項中,并在所述鏈表頭設置指向該空閑地址的指針;步驟B4按照表項中的指針找到下一個地址對應的表項,并判斷該表項中存儲的內容與所述運算結果是否相同,如果相同,不做處理;否則申請一個空閑地址,將所述運算結果填入所申請的空閑地址對應的表項中,并在所述表項中設置指向該空閑地址的指針。
3.如權利要求1或2所述的解決Hash沖突的方法,其特征在于,所述的空閑地址是利用讀先進先出隊列模塊和寫先進先出隊列模塊進行存儲和傳遞的。
4.如權利要求3所述的解決Hash沖突的方法,其特征在于,所述方法還包括步驟D對讀先進先出隊列模塊和寫先進先出隊列模塊中的空閑地址進行維護。
5.如權利要求4所述的解決Hash沖突的方法,其特征在于,所述步驟D具體包括步驟D1檢測讀先進先出隊列模塊和寫先進先出隊列模塊,如果當前檢測的是讀先進先出隊列模塊,執(zhí)行步驟D2;否則,執(zhí)行步驟D3;步驟D2判斷讀先進先出隊列模塊中沖突地址個數(shù)是否小于預設值,如果小于,從寫先進先出隊列模塊中讀取沖突地址放入讀先進先出隊列模塊中,或者從沖突空閑地址空間讀取沖突地址放入讀先進先出隊列模塊中;步驟D3判斷寫先進先出隊列模塊中是否能再放入預設值個沖突地址,如果不能,則將寫先進先出隊列模塊中的地址讀入讀先進先出隊列模塊中,或者將寫先進先出隊列模塊中的地址讀入沖突空閑地址空間。
6.如權利要求5所述的解決Hash沖突的方法,其特征在于,所述預設值為4。
7.如權利要求1所述的解決Hash沖突的方法,其特征在于,所述方法還包括步驟E有需要刪除的信息時,對該需要刪除的信息進行哈希運算,得到運算結果,然后根據(jù)該運算結果在哈希表中找到相應的表項,釋放該表項,并把釋放后的表項所在地址寫在沖突空閑地址空間中。
8.如權利要求7所述的解決Hash沖突的方法,其特征在于,所述步驟E具體包括步驟E1當所述哈希表中有信息需要刪除時,對需要刪除的信息進行哈希運算,得到運算結果,根據(jù)所述運算結果在哈希表中找到相應的表項,釋放該表項;步驟E2判斷當前表項中是否有指向下一個表項的指針,如果有,修改當前表項的上一個表項的指針為當前表項的指針,或者如果所述當前表項為鏈表頭,則將指針指向的下一個表項的內容放到該鏈表頭;否則,將當前表項的上一個表項的指針刪除;步驟E3將當前表項所在地址寫入沖突空閑地址空間中。
9.一種解決Hash沖突的裝置,其特征在于,所述裝置包括以下模塊哈希運算模塊,用于將需要存儲的信息進行哈希運算,得到運算結果;判斷模塊,用于用所述運算結果查哈希表,判斷查到的表項是否為空以及是否存有指向下一個地址的指針;地址申請模塊,用于當所述運算結果對應的鏈表頭中存有內容時,判斷所述鏈表頭中的內容與哈希運算模塊中的運算結果是否相同,如果相同,則不做處理;否則,申請一個空閑地址;信息存儲模塊,用于將所述運算結果存儲在哈希表對應的表項中或者新申請的空閑地址對應的表項中;指針設置模塊,用于當申請一個空閑地址時,在哈希表中設置指向該地址的指針。
10.如權利要求9所述的解決Hash沖突的裝置,其特征在于,所述裝置還包括刪除鏈表模塊,用于有需要刪除的信息時,對該需要刪除的信息進行哈希運算,得到運算結果,然后根據(jù)該運算結果在哈希表中找到相應的表項,釋放該表項,并把釋放后的表項所在地址寫在沖突空閑地址空間中。
11.如權利要求9所述的解決Hash沖突的裝置,其特征在于,所述裝置還包括讀先進先出隊列模塊,用于為添加鏈表出現(xiàn)沖突時,提供空閑地址;寫先進先出隊列模塊,用于存儲刪除鏈表時釋放的地址;先進先出隊列接口控制模塊,用于調節(jié)讀先進先出隊列模塊和寫先進先出隊列模塊中空閑地址的個數(shù)。
全文摘要
本發(fā)明提供了一種解決Hash沖突的方法及裝置,屬于網(wǎng)絡通信領域。為了解決現(xiàn)有技術中hash沖突、查找時間過長及不對沖突地址進行維護的問題,本發(fā)明提供了一種解決Hash沖突的方法,所述方法包括將需要存儲的信息進行哈希運算,根據(jù)運算結果在哈希表中找到對應的表項,然后將所述信息的運算結果存儲在該表項中,并在哈希表中設置指向該表項指針的步驟。本發(fā)明還提供了一種解決Hash沖突的裝置,包括哈希運算模塊、判斷模塊、地址申請模塊、信息存儲模塊和指針設置模塊。采用本發(fā)明提供的技術方案有效地解決了Hash沖突問題,采用標準的FIFO接口,節(jié)約了帶寬,可以實現(xiàn)查找表的線速轉發(fā)。
文檔編號H04L29/06GK1929451SQ200610152578
公開日2007年3月14日 申請日期2006年9月29日 優(yōu)先權日2006年9月29日
發(fā)明者葉錦華, 孫浩, 張磊 申請人:華為數(shù)字技術有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
凭祥市| 襄垣县| 马龙县| 航空| 根河市| 水富县| 南宁市| 买车| 丁青县| 奎屯市| 永善县| 探索| 乌拉特中旗| 鄢陵县| 巴中市| 西安市| 修水县| 沂南县| 三门峡市| 丹阳市| 喀喇| 会泽县| 清徐县| 陕西省| 天全县| 石泉县| 富民县| 安宁市| 北宁市| 乳山市| 永康市| 吴江市| 湘阴县| 融水| 济南市| 额济纳旗| 临夏市| 原平市| 鄂托克旗| 商水县| 桃园市|