數(shù)據(jù)快速查找裝置、查找方法、添加方法及刪除方法
【專利摘要】本發(fā)明公開了數(shù)據(jù)快速查找裝置、查找方法、添加方法及刪除方法。通過采用3次HASH算法加小容量CAM的實現(xiàn)方式,解決大容量快速查找實現(xiàn)方案單一的問題,解決了通過FPGA實現(xiàn)快速查找容量小的問題,解決當(dāng)數(shù)據(jù)字位寬很大時,占用大量存儲空間的問題,實現(xiàn)數(shù)據(jù)查找實現(xiàn)簡單、容量大、查找速度快的有益效果;另一方面采用存儲數(shù)據(jù)字的Hash值替代存儲數(shù)據(jù)字的方式,在數(shù)據(jù)字位寬很大的情況下可極大的節(jié)省數(shù)據(jù)字所占用的存儲空間。本發(fā)明可廣泛應(yīng)用于各種數(shù)據(jù)查找系統(tǒng)。
【專利說明】
數(shù)據(jù)快速查找裝置、查找方法、添加方法及刪除方法
技術(shù)領(lǐng)域
[0001 ]本發(fā)明涉及數(shù)據(jù)存儲和管理領(lǐng)域。
【背景技術(shù)】
[0002] 隨著internet迅猛的發(fā)展,大量使用了各種網(wǎng)絡(luò)交換設(shè)備。由于網(wǎng)絡(luò)應(yīng)用的多元 化,對網(wǎng)絡(luò)交換設(shè)備關(guān)鍵字查找的需求千差萬別,針對不同的需求往往需要針對特定的需 求選用相應(yīng)的設(shè)計方案,缺少實現(xiàn)規(guī)模靈活可控,適應(yīng)不同接口,實現(xiàn)簡單,成本低廉,能很 好適應(yīng)網(wǎng)絡(luò)應(yīng)用的多元化的實現(xiàn)方案,而FPGA優(yōu)越的在線可編程能力,具有無可比擬的優(yōu) 勢。
[0003] 傳統(tǒng)的逐一比對查找方法:對于給定值M,從查找表首地址開始比對,若相等,則查 找成功,結(jié)束查找。若不相等,則繼續(xù)與下一個數(shù)據(jù)進(jìn)行比對,直到匹配成功或完成整個表 項的查找為止。這種方法實現(xiàn)簡單,耗用資源少,但平均查找時間與數(shù)據(jù)深度成正比,當(dāng)數(shù) 據(jù)容量大時,查找速度非常慢,只適合數(shù)據(jù)容量小,對查找時間要求不高的場合。
[0004] 傳統(tǒng)的二分查找法:二分查找法的前提是數(shù)據(jù)表必須有序,假設(shè)數(shù)據(jù)是按降序排 序的,對于給定值M,從序列的中間位置開始比對,如果Μ等于當(dāng)前位置值,則查找成功;若Μ 小于當(dāng)前位置值,則在數(shù)據(jù)表的后半段中查找;若Μ大于當(dāng)前位置值則在數(shù)據(jù)表的前半段中 查找,以此類推,直到匹配成功或查找區(qū)別不能再細(xì)分為止。平均查找時間與數(shù)據(jù)表深度Ν 的1呢必的成正比,相比與傳統(tǒng)逐一比對查找方法快了很多,但對于數(shù)據(jù)容量大的場合,還 是需要多個時鐘周期才能完成一次查找,不適合高速查找應(yīng)用。
[0005] 基于CAM(內(nèi)容可尋址的存儲器,Content Addressable Memory)的查找方法,查找 速度快,能在一個時鐘周期內(nèi)完成數(shù)據(jù)查找。但基于CAM的查找方法主要依靠 CAM芯片,實現(xiàn) 大容量需層疊多片CAM芯片,有價格貴、功耗高、應(yīng)用不靈活等缺點。
[0006] 哈希函數(shù)法是使用哈希函數(shù)對關(guān)鍵字進(jìn)行計算,并用得到的哈希值索引表項,通 過對比關(guān)鍵字找到匹配項。
【發(fā)明內(nèi)容】
[0007] 為了解決上述技術(shù)問題,本發(fā)明的目的是提供一種可實現(xiàn)查找速度快、實現(xiàn)簡單 的數(shù)據(jù)查找裝置。
[0008] 為了解決上述技術(shù)問題,本發(fā)明的第二個目的是提供一種查找速度快、實現(xiàn)簡單 的數(shù)據(jù)查找方法。
[0009] 為了解決上述技術(shù)問題,本發(fā)明的第三個目的是提供一種基于上述數(shù)據(jù)查找方法 的數(shù)據(jù)添加方法。
[0010] 為了解決上述技術(shù)問題,本發(fā)明的第四個目的是提供一種基于上述數(shù)據(jù)查找方法 的數(shù)據(jù)刪除方法。
[0011] 本發(fā)明所采用的技術(shù)方案是:
[0012] -種數(shù)據(jù)快速查找裝置,包括主控模塊、哈希模塊、查找模塊、數(shù)據(jù)表模塊以及命 中檢測模塊;所述主控模塊的輸出端分別與哈希模塊和查找模塊的輸入端相連,所述數(shù)據(jù) 表模塊的輸出端與命中檢測模塊的輸入端相連,所述數(shù)據(jù)表模塊包括四個子模塊,分別為 表一模塊、表二模塊、表三模塊以及CAM模塊;所述主控模塊用于產(chǎn)生查找的數(shù)據(jù)字并輸出 給哈希模塊,產(chǎn)生控制信號控制查找模塊完成查找動作,協(xié)調(diào)各模塊間的工作;所述哈希模 塊用于根據(jù)主控模塊給出的數(shù)據(jù)字并行完成三次哈希運算,三次哈希運算的結(jié)果的hash值 可分別表示為hash 1、hash2、hash3;所述查找模塊受主控模塊的控制,用于根據(jù)哈希模塊生 成的哈希運算結(jié)果索引數(shù)據(jù)表,查找是否已經(jīng)存在相同項;所述命中檢測模塊根據(jù)數(shù)據(jù)表 模塊輸出的信息,判斷是否與查找內(nèi)容存在匹配項,并將結(jié)果返回給主控模塊。
[0013]優(yōu)選的,還包括添加模塊,所述添加模塊的輸入端分別與主控模塊和哈希模塊的 輸出端連接,所述添加模塊的輸出端與數(shù)據(jù)表模塊的輸入端連接。
[0014]優(yōu)選的,還包括刪除模塊,所述刪除模塊的輸入端分別與主控模塊和哈希模塊的 輸出端連接,所述刪除模塊的輸出端與數(shù)據(jù)表模塊的輸入端連接。
[0015]優(yōu)選的,所述表一模塊、表二模塊、表三模塊均為表模塊,所述表模塊包括以下內(nèi) 容字段:第一 Hash值字段、第二Hash值字段和狀態(tài)標(biāo)識;所述第一 Hash值字段和第二Hash值 字段分別用于存儲哈希模塊三次運算結(jié)果除作為表項索引外的兩個hash值;所述CAM模塊 包括以下內(nèi)容字段:第一 Hash值字段、第二Hash值字段、第三Hash值字段和狀態(tài)標(biāo)識,所述 第一 Hash值字段、第二Hash值字段、第三Hash值字段用于存儲哈希模塊生成的三個hash值。 [00?6]優(yōu)選的,所述hash 1、hash2、hash3的位寬與數(shù)據(jù)表模塊中的表一模塊、表二模塊、 表三模塊的索引值位寬一致。
[0017] 一種數(shù)據(jù)快速查找方法,包括步驟:Sl,Hash值計算步驟:根據(jù)主控模塊給出的數(shù) 據(jù)字并行完成三次HASH運算,三次HASH運算的結(jié)果可分別表示為hashl、hash2、hash3; S2, 數(shù)據(jù)表索引步驟:根據(jù)hashl、hash2、hash3索引表一模塊、表二模塊、表三模塊和CAM模塊, 輸出被索引表項內(nèi)容及CAM模塊的命中結(jié)果;S3,命中檢測步驟:根據(jù)hashl、hash2、hash3和 輸出被索引表項內(nèi)容的比對結(jié)果及CAM模塊的命中結(jié)果,判斷是否命中檢測。
[0018] -種數(shù)據(jù)快速添加方法,其包括一種數(shù)據(jù)快速查找方法,還包括步驟:S4,空項查 找步驟:按照表一模塊、表二模塊、表三模塊及CAM模塊優(yōu)先級由高地低的順序,查找空項, 通過表模塊的狀態(tài)標(biāo)識判斷該項是否為空項,如果從三個表模塊中未找到空項,則選則CAM 模塊的任一個空項,如果CAM模塊滿,則空項查找失敗;S5,數(shù)據(jù)寫入步驟:如步驟S4空項查 找成功,則將hashl、hash2、hash3及狀態(tài)寫入空項的相關(guān)字段。
[0019]優(yōu)選的,還包括步驟:S6,當(dāng)命中檢測步驟S3輸出命中檢測結(jié)果時,產(chǎn)生重復(fù)添加 出敏 口呂〇
[0020] -種數(shù)據(jù)快速刪除方法,其包括一種數(shù)據(jù)快速查找方法,還包括步驟:S7,刪除步 驟:當(dāng)命中檢測步驟S3輸出命中刪除數(shù)據(jù)字檢測結(jié)果時,刪除命中項并清除狀態(tài)標(biāo)識字段 的有效標(biāo)識。
[0021] 優(yōu)選的,還包括步驟:S8,當(dāng)命中檢測步驟S3輸出未命中刪除數(shù)據(jù)字檢測結(jié)果時, 產(chǎn)生刪除項不存在告警。
[0022]本發(fā)明的有益效果是:
[0023]本發(fā)明通過采用3次HASH算法加小容量CAM的實現(xiàn)方式,解決大容量快速查找實現(xiàn) 方案單一的問題,解決多哈希函數(shù)法存儲帶寬需求高,實現(xiàn)困難的問題,解決了通過FPGA實 現(xiàn)快速查找容量小的問題,解決當(dāng)數(shù)據(jù)字位寬很大時,直接存儲數(shù)據(jù)字占用大量存儲空間 的問題,實現(xiàn)數(shù)據(jù)查找實現(xiàn)簡單、容量大、查找速度快的有益效果;另一方面采用存儲數(shù)據(jù) 字的Hash值替代存儲數(shù)據(jù)字的方式,在數(shù)據(jù)字位寬很大的情況下可極大的節(jié)省數(shù)據(jù)字所占 用的存儲空間。
[0024]本發(fā)明可廣泛應(yīng)用于各種數(shù)據(jù)查找系統(tǒng)。
【附圖說明】
[0025]下面結(jié)合附圖對本發(fā)明的【具體實施方式】作進(jìn)一步說明:
[0026] 圖1是本發(fā)明裝置一種實施例的結(jié)構(gòu)示意圖;
[0027] 圖2是本發(fā)明查找方法一種實施例的流程示意圖;
[0028] 圖3是本發(fā)明添加方法一種實施例的流程示意圖;
[0029] 圖4是本發(fā)明刪除方法一種實施例的流程示意圖。
【具體實施方式】
[0030] 需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相 互組合。
[0031 ]如圖1所示,一種數(shù)據(jù)快速查找裝置,包括主控模塊、哈希模塊、查找模塊、數(shù)據(jù)表 模塊以及命中檢測模塊;所述主控模塊的輸出端分別與哈希模塊和查找模塊的輸入端相 連,所述數(shù)據(jù)表模塊的輸出端與命中檢測模塊的輸入端相連,所述數(shù)據(jù)表模塊包括四個子 模塊,分別為表一模塊、表二模塊、表三模塊以及CAM模塊;所述主控模塊用于產(chǎn)生查找的數(shù) 據(jù)字并輸出給哈希模塊,產(chǎn)生控制信號控制查找模塊完成查找動作,協(xié)調(diào)各模塊間的工作; 所述哈希模塊用于根據(jù)主控模塊給出的數(shù)據(jù)字并行完成三次哈希運算,三次哈希運算的結(jié) 果的hash值可分別表示為hashl、hash2、hash3;所述查找模塊受主控模塊的控制,用于根據(jù) 哈希模塊生成的哈希運算結(jié)果索引數(shù)據(jù)表,查找是否已經(jīng)存在相同項;所述命中檢測模塊 根據(jù)數(shù)據(jù)表模塊輸出的信息,判斷是否與查找內(nèi)容存在匹配項,并將結(jié)果返回給主控模塊。
[0032]優(yōu)選的,還包括添加模塊,所述添加模塊的輸入端分別與主控模塊和哈希模塊的 輸出端連接,所述添加模塊的輸出端與數(shù)據(jù)表模塊的輸入端連接。
[0033]優(yōu)選的,還包括刪除模塊,所述刪除模塊的輸入端分別與主控模塊和哈希模塊的 輸出端連接,所述刪除模塊的輸出端與數(shù)據(jù)表模塊的輸入端連接。
[0034]優(yōu)選的,所述表一模塊、表二模塊、表三模塊均為表模塊,所述表模塊包括以下內(nèi) 容字段:第一 Hash值字段、第二Hash值字段和狀態(tài)標(biāo)識;所述第一 Hash值字段和第二Hash值 字段分別用于存儲哈希模塊三次運算結(jié)果除作為表項索引外的兩個hash值;所述CAM模塊 包括以下內(nèi)容字段:第一 Hash值字段、第二Hash值字段、第三Hash值字段和狀態(tài)標(biāo)識,所述 第一 Hash值字段、第二Hash值字段、第三Hash值字段用于存儲哈希模塊生成的三個hash值。 [0035]優(yōu)選的,所述hashl、hash2、hash3的位寬與數(shù)據(jù)表模塊中的表一模塊、表二模塊、 表三模塊的索引值位寬一致。
[0036]該實施例中,裝置包括主控模塊、哈希模塊、添加模塊、刪除模塊、查找模塊、數(shù)據(jù) 表模塊以及命中檢測模塊。主控模塊與哈希模塊、添加刪除模塊以及查找模塊相連,數(shù)據(jù)表 模塊包括四個子模塊并與添加刪除模塊和命中檢測模塊相連,數(shù)據(jù)表模塊的四個子模塊分 別為表一模塊、表二模塊、表三模塊以及CAM模塊。除此四個子模塊可根據(jù)實際需求選擇 FPGA實現(xiàn)或者外接專用芯片實現(xiàn)外,其余模塊均由FPGA實現(xiàn)。哈希模塊的輸出端分別與添 加模塊、刪除模塊和查找模塊的輸入端連接。命中檢測模塊的輸出端分別與添加模塊、刪除 模塊和主控模塊的輸入端連接。
[0037] D主控模塊
[0038] 主控模塊根據(jù)實際應(yīng)用需要產(chǎn)生需要添加、刪除或查找的數(shù)據(jù)字并輸出給哈希模 塊;產(chǎn)生控制信號控制添加、刪除模塊完成添加、刪除動作;產(chǎn)生控制信號控制查找模塊完 成查找動作;協(xié)調(diào)上述模塊間的協(xié)作,提高處理效率;根據(jù)命中檢測模塊的結(jié)果完成實際應(yīng) 用中需要的動作。
[0039] 2)哈希模塊
[0040]哈希模塊根據(jù)主控模塊給出的數(shù)據(jù)字并行完成三次HASH運算,三次HASH運算的結(jié) 果可分別表不為hashl Ahast^AhashSahashl、hash2、hash3的位寬應(yīng)與數(shù)據(jù)表中的表一、表 二、表三的索引值位寬一致。三次HASH運算的算法必須滿足以下要求:三次HASH運算的算 法互不相關(guān);相同數(shù)據(jù)字得到相同HASH值的概率盡可能低;數(shù)據(jù)字能盡可能平均分布到每 個HASH值上;算法盡可能簡單,能在兩到三個時鐘周期內(nèi)完成運算。
[0041] 3)添加、刪除模塊
[0042] 添加、刪除模塊受主控模塊的控制,完成數(shù)據(jù)字的添加、刪除操作。
[0043]添加操作:用哈希模塊生成的HASH值索引數(shù)據(jù)表,查找是否已經(jīng)存在相同項,如果 存在相同項則停止添加并設(shè)置重復(fù)添加標(biāo)識,如果不在相同項則以表一、表二、表三、CAM優(yōu) 先級由高到低的順序檢查對應(yīng)的HASH索引項是否有效,如果無效,則將HASH值存入表項,否 則檢查低優(yōu)先級的表,直到檢測完為止,如果不存在無效項則設(shè)置添加失敗標(biāo)識。
[0044]刪除操作:用哈希模塊生成的HASH值索引數(shù)據(jù)表,查找是否已經(jīng)存在相同項,如果 存在則刪除對應(yīng)表項,如果不存在則設(shè)置刪除失敗標(biāo)識。
[0045] 4)查找模塊
[0046]查找模塊受主控模塊的控制,完成數(shù)據(jù)字的查找操作。用哈希模塊生成的HASH值 索引數(shù)據(jù)表,查找是否已經(jīng)存在相同項。
[0047] 5)數(shù)據(jù)表模塊
[0048]數(shù)據(jù)表模塊包括表一模塊、表二模塊、表三模塊以及CAM模塊共四個子模塊,實現(xiàn) 與四個子模塊的接口與控制操作,為添加、刪除模塊和查找模塊提供統(tǒng)一的接口形式及操 作方式。
[0049]表一模塊、表二模塊、表三模塊功能相同,可不同配置,以下統(tǒng)稱表模塊。表模塊為 一塊數(shù)據(jù)存儲空間,用于表項數(shù)據(jù)的存儲,可根據(jù)不同的應(yīng)用需求選用不同實現(xiàn)方式。對表 項數(shù)需求大于兆級的應(yīng)用可選用專用存儲器芯片,對于表項數(shù)需求為K級或更小的應(yīng)用,可 選用FPGA內(nèi)部的BLOCK RAM實現(xiàn)。表模塊的表項包括四部分內(nèi)容即:第一Hash值、第二Hash 值、狀態(tài)標(biāo)識、動作索引,其中動作索引為可選項,如下表所示:
[00511其中,第一Hash值字段、第二Hash值字段存儲的是哈希模塊生成的三個hash值中 除作為表項索引外的兩個hash值。用hash值替代原始數(shù)據(jù)字在數(shù)據(jù)字寬度很大的情況能節(jié) 省存儲空間,而對于不同的數(shù)據(jù)字得到三個相同hash值的概率是極低的,例如每個HASH值 的位寬均為16位,則不同的數(shù)據(jù)字得到三個相同hash值的概率P= 1/248 = 3.55*10_15,顯然 這是可以接受的。狀態(tài)標(biāo)識至少包括該表項的有效狀態(tài)標(biāo)識,可根據(jù)實際應(yīng)用擴(kuò)展其它狀 態(tài)標(biāo)識。動作索引用于存儲后繼操作的索引值,當(dāng)該表項匹配時,則根據(jù)動作索引獲取需要 進(jìn)行的后續(xù)操作。
[0052] CAM模塊,即內(nèi)容尋址存儲器,用于小量表項的數(shù)據(jù)存儲與快速查找,對于小于 1024項的應(yīng)用可用FPGA內(nèi)部的查找表實現(xiàn),否則選用專用的CAM芯片實現(xiàn)。CAM模塊的表項 包五部分內(nèi)容即:第一Hash值、第二Hash值、第三Hash值、狀態(tài)標(biāo)識、動作索引,其中動作索 引為可選項,如下表所示:
[0054] 第一 Hash值、第二Hash值、第三Hash值是哈希模塊生成的三個hash值,狀態(tài)標(biāo)識、 動作索引與表模塊的作用相同。
[0055] 6)命中檢測模塊
[0056]命中檢測模塊根據(jù)數(shù)據(jù)表模塊輸出的信息,判斷是否與查找內(nèi)容存在匹配項,并 將結(jié)果返回給主控模塊。
[0057] 一種數(shù)據(jù)快速查找方法,包括步驟:SI,Hash值計算步驟:根據(jù)主控模塊給出的數(shù) 據(jù)字并行完成三次HASH運算,三次HASH運算的結(jié)果可分別表示為hashl、hash2、hash3; S2, 數(shù)據(jù)表索引步驟:根據(jù)hashl、hash2、hash3索引表一模塊、表二模塊、表三模塊和CAM模塊, 輸出被索引表項內(nèi)容及CAM模塊的命中結(jié)果;S3,命中檢測步驟:根據(jù)hashl、hash2、hash3和 輸出被索引表項內(nèi)容的比對結(jié)果及CAM模塊的命中結(jié)果,判斷是否命中檢測。
[0058]如圖2所示,該實施例中,數(shù)據(jù)查找方法包括步驟:
[0059] HASH值計算:根據(jù)主控模塊給出的數(shù)據(jù)字并行完成三次HASH運算,三次HASH運算 的結(jié)果可分別表不為hashl、hash2、hash3。
[0060]數(shù)據(jù)表索引:用hashl索引表一模塊,輸出被索引表項內(nèi)容依次為Tl-hashl(第一 Hash值)、Tl_hash2(第二Hash值)、Tl_flag(狀態(tài)標(biāo)識);hash2索引表二模塊,輸出被索引表 項內(nèi)容依次為T2_hashl、T2_hash2、T2_f lag; hash3索引表三模塊,輸出被索引表項內(nèi)容依 次為T3_hashl、T3_hash2、T3-f lag;用{hashl,hash2,hash3}為關(guān)鍵字查找CAM,得到匹配狀 態(tài)及匹配項的索引依次為cam-match、cam-index,在匹配成功的狀態(tài)下用cam-index作為索 引,輸出cam-flag。
[0061 ] 命中檢測:如果表一模塊索引表項中的Tl-hashl與hash2相等且Tl_hash2與hash3 相等且Tl-flag有效標(biāo)識有效或者表二模塊索引表項中的T2_hashl與hashl相等且T2-hash2與hash3相等且T2_flag有效標(biāo)識有效或者表三模塊索引表項中的T3_hashl與hashl 相等且T3_hash2與hash2相等且T3_f lag有效標(biāo)識有效或者cam-flag有效標(biāo)識有效且匹配 成功則表示查找成功,否則查找失敗。
[0062] -種數(shù)據(jù)快速添加方法,其包括一種數(shù)據(jù)快速查找方法,還包括步驟:S4,空項查 找步驟:按照表一模塊、表二模塊、表三模塊及CAM模塊優(yōu)先級由高地低的順序,查找空項, 通過表模塊的狀態(tài)標(biāo)識判斷該項是否為空項,如果從三個表模塊中未找到空項,則選則CAM 模塊的任一個空項,如果CAM模塊滿,則空項查找失敗;S5,數(shù)據(jù)寫入步驟:如步驟S4空項查 找成功,則將hashl、hash2、hash3及狀態(tài)寫入空項的相關(guān)字段。
[0063] 優(yōu)選的,還包括步驟:S6,當(dāng)命中檢測步驟S3輸出命中檢測結(jié)果時,產(chǎn)生重復(fù)添加 出敏 口呂〇
[0064] 如圖3所示,該實施例中,數(shù)據(jù)添加方法包括步驟:
[0065] HASH值計算、數(shù)據(jù)表索引、命中檢測與數(shù)據(jù)查找過程相同。
[0066] 空項查找:首先判斷T1 -f 1 ag有效標(biāo)識,如果無效則確定該項為空項,否則判斷 T2-f lag有效標(biāo)識,如果無效則確定該項為空項,否則判斷T3-flag有效標(biāo)識,如果無效則確 定該項為空項,否則判斷CAM表項是否已滿,如果未滿則選擇任一空項,否則空項查找失敗, 并設(shè)置相應(yīng)標(biāo)識。由于空項查找失敗會影響系統(tǒng)性能,因此需要盡可能降低空項查找失敗 的概率。對于特定的系統(tǒng),空項查找失敗概率與表一模塊的裝填因子a相關(guān),通常情況下可 取a〈0.5,a越小空項查找失敗的概率越低。
[0067] 數(shù)據(jù)寫入:如果存在空項,則按照相應(yīng)表項要求,將相關(guān)字段寫入空項,否則不進(jìn) 行任何操作。如空項在表一模塊上,則將hash2、hash3、有效標(biāo)識寫入相應(yīng)的第一 Hash值、第 二Hash值、狀態(tài)標(biāo)識字段;如空項在表二模塊上,則將hashl、hash3、有效標(biāo)識寫入相應(yīng)的第 一 Hash值、第二Hash值、狀態(tài)標(biāo)識字段;如空項在表三模塊上,則將hashl、hash2、有效標(biāo)識 寫入相應(yīng)的第一Hash值、第二Hash值、狀態(tài)標(biāo)識字段;如空項在CAM上,則將hashl、hash2、 hash3、有效標(biāo)識寫入相應(yīng)的第一 Hash值、第二Hash值、第三Hash值、狀態(tài)標(biāo)識字段。
[0068] 產(chǎn)生重復(fù)添加告警:設(shè)置重復(fù)添加告警標(biāo)識。
[0069] -種數(shù)據(jù)快速刪除方法,其包括一種數(shù)據(jù)快速查找方法,還包括步驟:S7,刪除步 驟:當(dāng)命中檢測步驟S3輸出命中刪除數(shù)據(jù)字檢測結(jié)果時,刪除命中項并清除狀態(tài)標(biāo)識字段 的有效標(biāo)識。
[0070] 優(yōu)選的,還包括步驟:S8,當(dāng)命中檢測步驟S3輸出未命中刪除數(shù)據(jù)字檢測結(jié)果時, 產(chǎn)生刪除項不存在告警。
[0071 ]如圖4所示,該實施例中,數(shù)據(jù)刪除方法包括步驟:
[0072] HASH值計算、數(shù)據(jù)表索引、命中檢測與數(shù)據(jù)查找過程相同。
[0073] 產(chǎn)生刪除項不存在告警:設(shè)置刪除項不存在告警標(biāo)識。
[0074] 刪除命中項:清除狀態(tài)標(biāo)識字段的有效標(biāo)識。
[0075]綜上所述,本發(fā)明:
[0076] 1、基于FPGA的實現(xiàn)方式,方便根據(jù)應(yīng)用需求靈活控制實現(xiàn)規(guī)模,接口靈活可配置, 可輕易與其它功能模塊實現(xiàn)無縫連接,無需外圍芯片,硬件實現(xiàn)簡單,成本低;
[0077] 2、結(jié)合多哈希函數(shù)法和CAM彌補(bǔ)法,取其優(yōu)點,避免其缺點,采用3次哈希算法加極 小容量CAM的實現(xiàn)方式。
[0078] 3、由于采用了3次哈希算法,可采用存儲數(shù)據(jù)字的HASH值替代存儲數(shù)據(jù)字的方式, 在數(shù)據(jù)字位寬很大的情況下可極大的節(jié)省數(shù)據(jù)字所占用的存儲空間。
[0079]本發(fā)明通過采用3次HASH算法加小容量CAM的實現(xiàn)方式,克服了現(xiàn)有技術(shù)中數(shù)據(jù)速 度慢或容量小或?qū)崿F(xiàn)復(fù)雜的問題,實現(xiàn)數(shù)據(jù)查找實現(xiàn)簡單、容量大、查找速度快的有益效 果;另一方面采用存儲數(shù)據(jù)字的Hash值替代存儲數(shù)據(jù)字的方式,在數(shù)據(jù)字位寬很大的情況 下可極大的節(jié)省數(shù)據(jù)字所占用的存儲空間。
[0080]以上是對本發(fā)明的較佳實施進(jìn)行了具體說明,但本發(fā)明創(chuàng)造并不限于所述實施 例,熟悉本領(lǐng)域的技術(shù)人員在不違背本發(fā)明精神的前提下還可做作出種種的等同變形或替 換,這些等同的變形或替換均包含在本申請權(quán)利要求所限定的范圍內(nèi)。
【主權(quán)項】
1. 一種數(shù)據(jù)快速查找裝置,其特征在于,包括主控模塊、哈希模塊、查找模塊、數(shù)據(jù)表模 塊以及命中檢測模塊; 所述主控模塊的輸出端分別與哈希模塊和查找模塊的輸入端相連,所述數(shù)據(jù)表模塊的 輸出端與命中檢測模塊的輸入端相連,所述數(shù)據(jù)表模塊包括四個子模塊,分別為表一模塊、 表二模塊、表三模塊以及CAM模塊; 所述主控模塊用于產(chǎn)生查找的數(shù)據(jù)字并輸出給哈希模塊,產(chǎn)生控制信號控制查找模塊 完成查找動作,協(xié)調(diào)各模塊間的工作; 所述哈希模塊用于根據(jù)主控模塊給出的數(shù)據(jù)字并行完成三次哈希運算,三次哈希運算 的結(jié)果的hash值可分別表不為hashl、hash2、hash3; 所述查找模塊受主控模塊的控制,用于根據(jù)哈希模塊生成的哈希運算結(jié)果索引數(shù)據(jù) 表,查找是否已經(jīng)存在相同項; 所述命中檢測模塊根據(jù)數(shù)據(jù)表模塊輸出的信息,判斷是否與查找內(nèi)容存在匹配項,并 將結(jié)果返回給主控模塊。2. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)快速查找裝置,其特征在于,還包括添加模塊,所述添加 模塊的輸入端分別與主控模塊和哈希模塊的輸出端連接,所述添加模塊的輸出端與數(shù)據(jù)表 模塊的輸入端連接。3. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)快速查找裝置,其特征在于,還包括刪除模塊,所述刪除 模塊的輸入端分別與主控模塊和哈希模塊的輸出端連接,所述刪除模塊的輸出端與數(shù)據(jù)表 模塊的輸入端連接。4. 根據(jù)權(quán)利要求1至3任一項所述的數(shù)據(jù)快速查找裝置,其特征在于,所述表一模塊、表 二模塊、表三模塊均為表模塊,所述表模塊包括以下內(nèi)容字段:第一 Hash值字段、第二Hash 值字段和狀態(tài)標(biāo)識;所述第一 Hash值字段和第二Hash值字段分別用于存儲哈希模塊三次運 算結(jié)果除作為表項索引外的兩個hash值;所述CAM模塊包括以下內(nèi)容字段:第一 Hash值字 段、第二Hash值字段、第三Hash值字段和狀態(tài)標(biāo)識,所述第一 Hash值字段、第二Hash值字段、 第三Hash值字段用于存儲哈希模塊生成的三個hash值。5. 根據(jù)權(quán)利要求4任一項所述的數(shù)據(jù)快速查找裝置,其特征在于,所述hashl、hash2、 hash3的位寬與數(shù)據(jù)表模塊中的表一模塊、表二模塊、表三模塊的索引值位寬一致。6. -種數(shù)據(jù)快速查找方法,其特征在于,包括步驟: Sl,Hash值計算步驟:根據(jù)主控模塊給出的數(shù)據(jù)字并行完成三次HASH運算,三次HASH運 算的結(jié)果可分別表示為hashl、hash2、hash3; S2,數(shù)據(jù)表索引步驟:根據(jù)hashl、hash2、hash3索引表一模塊、表二模塊、表三模塊和 CAM模塊,輸出被索引表項內(nèi)容及CAM模塊的命中結(jié)果; S3,命中檢測步驟:根據(jù)hashl、hash2、hash3和輸出被索引表項內(nèi)容的比對結(jié)果及CAM 模塊的命中結(jié)果,判斷是否命中檢測。7. -種數(shù)據(jù)快速添加方法,其特征在于,其包括如權(quán)利要求6所述的一種數(shù)據(jù)快速查找 方法,還包括步驟: S4,空項查找步驟:按照表一模塊、表二模塊、表三模塊及CAM模塊優(yōu)先級由高地低的順 序,查找空項,通過表模塊的狀態(tài)標(biāo)識判斷該項是否為空項,如果從三個表模塊中未找到空 項,則選則CAM模塊的任一個空項,如果CAM模塊滿,則空項查找失敗; 55, 數(shù)據(jù)寫入步驟:如步驟S4空項查找成功,則將hashl、hash2、hash3及狀態(tài)寫入空項 的相關(guān)字段。8. 根據(jù)權(quán)利要求7所述的一種數(shù)據(jù)快速添加方法,其特征在于,還包括步驟: 56, 當(dāng)命中檢測步驟S3輸出命中檢測結(jié)果時,產(chǎn)生重復(fù)添加告警。9. 一種數(shù)據(jù)快速刪除方法,其特征在于,其包括如權(quán)利要求6所述的一種數(shù)據(jù)快速查找 方法,還包括步驟: 57, 刪除步驟:當(dāng)命中檢測步驟S3輸出命中刪除數(shù)據(jù)字檢測結(jié)果時,刪除命中項并清除 狀態(tài)標(biāo)識字段的有效標(biāo)識。10. 根據(jù)權(quán)利要求9所述的一種數(shù)據(jù)快速刪除方法,其特征在于,還包括步驟: 58, 當(dāng)命中檢測步驟S3輸出未命中刪除數(shù)據(jù)字檢測結(jié)果時,產(chǎn)生刪除項不存在告警。
【文檔編號】G06F17/30GK106095770SQ201610296490
【公開日】2016年11月9日
【申請日】2016年5月5日
【發(fā)明人】劉兆先
【申請人】邦彥技術(shù)股份有限公司