本發(fā)明涉及報文查找,尤其涉及一種優(yōu)化hash查找配置的方法。
背景技術:
1、報文查找技術指的是提取報文的特征信息查找表項來獲得路由信息,目前使用比較廣泛的有兩種方式:tcam(ternary?content?addressable?memory,三態(tài)內(nèi)容尋址存儲器)和hash兩種方式,但是tcam查找成本大,功耗高,路由更新復雜,因此成本低,功耗小的hash查找應用更廣泛。
2、hash查找算法的實現(xiàn)機制是:將報文的特征信息提取組成key,通過hash算法獲得查找表的地址索引,根據(jù)索引獲得表項內(nèi)容,表項內(nèi)容中存儲了原始key,只有查找key和原始key相同的才是真正的命中,hash算法因為是將大位寬的key值通過hash算法獲得一個下位寬的索引來實現(xiàn),因此不可避免的會出現(xiàn)沖突,為了減少沖突可以通過hash算法得到多個值的方式來實現(xiàn),比如將表項拆分成4塊,每塊使用不同的hash算法或者同一種hash算法不同的取值方式,但是仍會出現(xiàn)有緩存空間,表項配置不進去的情況。
3、因此,有必要提供一種優(yōu)化hash查找配置的方法解決上述技術問題。
技術實現(xiàn)思路
1、本發(fā)明提供一種優(yōu)化hash查找配置的方法,解決了hash算法因為是將大位寬的key值通過hash算法獲得一個下位寬的索引來實現(xiàn),因此不可避免的會出現(xiàn)沖突,為了減少沖突可以通過hash算法得到多個值的方式來實現(xiàn),比如將表項拆分成4塊,每塊使用不同的hash算法或者同一種hash算法不同的取值方式,但是仍會出現(xiàn)有緩存空間,表項配置不進去的情況的問題。
2、為解決上述技術問題,本發(fā)明提供的一種優(yōu)化hash查找配置的方法,包括以下步驟:
3、s1:新的配置的key,經(jīng)過算法模塊獲得4個index,然后根據(jù)index讀取相應ram的表項,表項中存儲的內(nèi)容包括{use,key,other},根據(jù)4塊ram中use是否都為1,不都為1時,則直接將key_new按照順序原則寫入對應的ram中,都為1時,則執(zhí)行下一步;
4、s2:將步驟s1中讀出的4個key使用寄存器存儲,進行流程操作,以key_ram0為例進行說明,首先將key_ram0進行hash算法,然后根據(jù)獲得的index分別去讀ram1-3,讀到的表項如圖中虛線所示,然后查詢表項中的use的值,不都為1時,則將key_ram0按順序原則存儲到use不為1的一塊ram中,同時將key_new存儲到ram0的位置中,查詢表項中的use的值都為1,則開始進行key_ram1的操作流程,執(zhí)行步驟s2;
5、s3:執(zhí)行到key_ram3時,仍然沒有找到存儲的位置,只能上報中斷,告知此表項因為沖突未配置進去。
6、優(yōu)選的,所述根據(jù)index讀取相應ram的表項在ram中的實現(xiàn)處體現(xiàn)。
7、優(yōu)選的,所述use代表該地址使用情況,1代表使用;key為該地址對應的原始key,other為其他內(nèi)容。
8、優(yōu)選的,所述key查找送入hash算法得到4種不同的hash值,根據(jù)hash值獲得表項中的內(nèi)容,確定4個表項是否都被占用。
9、優(yōu)選的,所述hash值如果至少一個沒被占用,則按照規(guī)則寫入空閑表項即可,如果發(fā)現(xiàn)4個表項全被占用,則需要確認是否4個占用的key是否有可用空間進行搬移。
10、優(yōu)選的,所述確認是否4個占用的key是否有可用空間進行搬移實現(xiàn)的方式是,使用4個寄存器緩存4個key,然后按照4個key對應的ram編號執(zhí)行。
11、優(yōu)選的,所述按照4個key對應的ram編號執(zhí)行時,第一個key執(zhí)行hash算法,根據(jù)索引讀取其他三個表項。
12、優(yōu)選的,所述第一個key執(zhí)行hash算法,根據(jù)索引讀取其他三個表項,如果有空余的,則將第一個key寫入空余位置,新的配置就寫入原來第一個key的位置。
13、優(yōu)選的,所述第一個key執(zhí)行hash算法,根據(jù)索引讀取其他三個表項,如果沒有空余,則再次執(zhí)行第二個key,依次類推。
14、優(yōu)選的,所述4個key對應的其他位置都被占用的情況下,新的配置才是真正的沖突。
15、與相關技術相比較,本發(fā)明提供的一種優(yōu)化hash查找配置的方法具有如下有益效果:
16、本發(fā)明提供一種優(yōu)化hash查找配置的方法,通過搬移占用中的表項到可用表項的方式,改善在某一個key根據(jù)hash算法配置值發(fā)現(xiàn)4塊ram對應的地址都已被占用的情況,本方法在未增加ram拆分的情況下,加大了沖突場景下避免沖突的概率,增加某些場景下ram資源的使用,并且配置流程簡單。
1.一種優(yōu)化hash查找配置的方法,其特征在于,包括以下步驟:
2.根據(jù)權利要求1所述的一種優(yōu)化hash查找配置的方法,其特征在于,所述根據(jù)index讀取相應ram的表項在ram中的實現(xiàn)處體現(xiàn)。
3.根據(jù)權利要求1所述的一種優(yōu)化hash查找配置的方法,其特征在于,所述use代表該地址使用情況,1代表使用;key為該地址對應的原始key,other為其他內(nèi)容。
4.根據(jù)權利要求1所述的一種優(yōu)化hash查找配置的方法,其特征在于,所述key查找送入hash算法得到4種不同的hash值,根據(jù)hash值獲得表項中的內(nèi)容,確定4個表項是否都被占用。
5.根據(jù)權利要求4所述的一種優(yōu)化hash查找配置的方法,其特征在于,所述hash值如果至少一個沒被占用,則按照規(guī)則寫入空閑表項即可,如果發(fā)現(xiàn)4個表項全被占用,則需要確認是否4個占用的key是否有可用空間進行搬移。
6.根據(jù)權利要求5所述的一種優(yōu)化hash查找配置的方法,其特征在于,所述確認是否4個占用的key是否有可用空間進行搬移實現(xiàn)的方式是,使用4個寄存器緩存4個key,然后按照4個key對應的ram編號執(zhí)行。
7.根據(jù)權利要求6所述的一種優(yōu)化hash查找配置的方法,其特征在于,所述按照4個key對應的ram編號執(zhí)行時,第一個key執(zhí)行hash算法,根據(jù)索引讀取其他三個表項。
8.根據(jù)權利要求7所述的一種優(yōu)化hash查找配置的方法,其特征在于,所述第一個key執(zhí)行hash算法,根據(jù)索引讀取其他三個表項,如果有空余的,則將第一個key寫入空余位置,新的配置就寫入原來第一個key的位置。
9.根據(jù)權利要求7所述的一種優(yōu)化hash查找配置的方法,其特征在于,所述第一個key執(zhí)行hash算法,根據(jù)索引讀取其他三個表項,如果沒有空余,則再次執(zhí)行第二個key,依次類推。
10.根據(jù)權利要求6所述的一種優(yōu)化hash查找配置的方法,其特征在于,所述4個key對應的其他位置都被占用的情況下,新的配置才是真正的沖突。