精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

hash算法在FPGA中的實現(3)

CHANBAEK ? 來源:FPGA的現今未 ? 作者:FPGA的現今未 ? 2023-09-07 17:02 ? 次閱讀

在前面的文章中主要介紹了hash表及其鏈表的結構,同時說明了如何讀取表項。那表項是如何寫入的了?前期的文章中有少量的提及,這里單獨寫一篇,介紹兩種常見的方案。

CPU寫入表項

當表項由CPU寫入的時候,FPGA只進行讀取(查表)的時候,那么表項的插入就和FPGA沒有什么關系了。唯一要注意的就是表項要有一個CPU的寫接口。以hash表為例,如果hash表在內部ram中,那么該ram就是CPU寫,邏輯讀;如果hash表在DDR中,那只需要給DDR留一個CPU的讀寫接口即可。

FPGA寫入表項

FPGA寫入表項的情況相對就要復雜一些,總體來說,不管什么場景,它都是用key計算hash值,然后查表,命中就返回命中結果,不命中就把key寫入表中的過程,用一個流程圖表示,如下圖所示:

圖片

hash表的寫入

根據前面hash表的構建,我們討論一種情況,hash桶中存放多個key的場景,其他情況都是相似的處理方式。如下表所示:

圖片

當key6來查表時,如果計算出hash值為3,如果讀取addr3,發現里面已經有key6,所以查表得到的結果是key6命中的;

當key10來查表時,如果計算出的hash值也是3,讀取addr3,發現里面沒有key10,返回的結果是不命中,同時還需要把key10和已經存在的其他的key一起寫入addr3中,變成如下表:

圖片

hash鏈表的寫入

hash鏈表的寫入比hash表的寫入要復雜,因為除了key的寫入,還涉及到鏈表地址的回寫。以一個具體的例子說明插入鏈表的過程。

假定hash桶的內容如下圖所示,此時假定hash桶已經滿了,但是還沒有鏈表,hash桶中具體存放什么key,如何存放key不影響hash鏈表的寫入,所以不在這里說明。

圖片

現在來了一個keyA,其hash值對應到上述hash桶,且沒有命中,由于hash桶已經滿了,無法繼續寫入hash桶中,必須寫入鏈表了。因為將該keyA給到鏈表處理模塊,鏈表處理模塊會返回一個地址,addr1,表示當前的keyA,已經寫入鏈表,位置在addr1,這時需要把addr1這個地址寫回到hash桶中,這樣鏈表才能建立,如下圖所示,這樣在查表的時候,就可以根據hash桶中的addr1,得到keyA。

圖片

同理,如果繼續來一個keyB,hash值和keyA相同,在進行key比較的時候,發現hash桶中沒有命中,同時鏈表addr1中也沒有命中,即keyB沒有命中,需要寫入hash桶或者hash鏈表中。我們在查表的時候得知addr1是最后一鏈(NULL),因此將keyB送給鏈表處理模塊,鏈表處理模塊返回一個地址,假定為addr2,表示keyB已經寫入addr2中,這次也需要把地址addr2寫入地址addr1中,實現鏈表在尾部的插入。如下圖所示:

圖片

當有key需要繼續插入時,以此類推。

對于鏈表插入的位置,可以在尾部插入外,也可以在頭部插入。當鏈表處理模塊返回keyB寫入的地址addr2后,將該地址寫入hash桶中,同時將hash桶中的地址addr1和keyB寫入到addr2中。如下圖所示:

圖片

無論是從鏈表頭插入還是鏈表尾插入,都不影響最終結果,可以根據自己設計,選擇相對簡單的實現方案。

總結

hash鏈表的插入,一般就是CPU寫入和邏輯自己寫入。邏輯寫入的時候,無論hash桶或者鏈表每一鏈的結構如何,都可以采用上述的方式插入鏈表。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1626

    文章

    21667

    瀏覽量

    601840
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10825

    瀏覽量

    211148
  • Hash算法
    +關注

    關注

    0

    文章

    43

    瀏覽量

    7379
  • 鏈表
    +關注

    關注

    0

    文章

    80

    瀏覽量

    10547
收藏 人收藏

    評論

    相關推薦

    FPGA實現PID算法

    本帖最后由 發燒友LV 于 2014-12-29 20:13 編輯 FPGA實現PID算法,面臨著小數的計算,請問大家一般是怎么處
    發表于 12-03 21:59

    怎么spartan 3AN fpga實現遺傳算法

    我正在做我的遺傳算法項目,有沒有辦法斯巴達3AN fpga實現遺傳
    發表于 04-03 13:16

    1HASH函數軟件自保護的應用

    本文介紹了HASH 函數的原理,并重點討論了其中的SHA-1 算法及其軟件自保護的應用和實現技術。關鍵詞:
    發表于 08-07 09:28 ?17次下載

    MACFPGA的高效實現

    乘累加器DSP算法中有著舉足輕重的地位。現在,很多前端DSP算法都通過FPGA實現。結合FPGA
    發表于 08-06 14:41 ?29次下載

    AESSubBytes算法FPGA實現

    介紹了AES,SubBytes算法FPGA的具體實現.構造SubBytes的S-Box轉換表可以直接查找ROM表來
    發表于 11-09 16:42 ?25次下載

    FPGA實現的FIR算法汽車動態稱重儀表的應用

    摘 要: 本文介紹了用FPGA實現的FIR算法,并對這種算法應用于汽車動態稱重儀表的結果做了分析。實踐證明此
    發表于 03-11 13:46 ?871次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>實現</b>的FIR<b class='flag-5'>算法</b><b class='flag-5'>在</b>汽車動態稱重儀表<b class='flag-5'>中</b>的應用

    3DES算法FPGA高速實現

    摘要:介紹3-DES算法的概要;以Xilinx公司SPARTANII結構的XC2S100為例,闡述用FPGA高速實現3-DES
    發表于 06-20 14:22 ?1448次閱讀
    <b class='flag-5'>3</b>DES<b class='flag-5'>算法</b>的<b class='flag-5'>FPGA</b>高速<b class='flag-5'>實現</b>

    基于FPGA的SM3算法優化設計與實現

    基于FPGA的SM3算法優化設計與實現的論文
    發表于 10-29 17:16 ?5次下載

    FPGA實現CRC算法的程序

    Xilinx FPGA工程例子源碼:FPGA實現CRC算法的程序
    發表于 06-07 15:07 ?28次下載

    基于SHA-1算法的硬件設計及實現FPGA實現

    算法進行深入研究,面向Xilinx K7 410T FPGA 芯片設計SHA-1算法實現結構,完成SHA-1算法編程,進行測試和后續應用。該
    發表于 10-30 16:25 ?4次下載
    基于SHA-1<b class='flag-5'>算法</b>的硬件設計及<b class='flag-5'>實現</b>(<b class='flag-5'>FPGA</b><b class='flag-5'>實現</b>)

    Hash算法簡介

    區塊Hash值時(即挖礦的過程),都使用了Hash算法,特別是SHA256算法。比特幣系統本身也就是加密算法的衍生物。
    的頭像 發表于 06-08 14:01 ?5014次閱讀

    hash算法的原理和實際應用等幾個角度,對hash算法進行一個講解

    由于hash的原理是將輸入空間的值映射成hash空間內,而hash值的空間遠小于輸入的空間。根據抽屜原理,一定會存在不同的輸入被映射成相同輸出的情況。那么作為一個好的hash
    的頭像 發表于 06-03 17:34 ?3237次閱讀
    從<b class='flag-5'>hash</b><b class='flag-5'>算法</b>的原理和實際應用等幾個角度,對<b class='flag-5'>hash</b><b class='flag-5'>算法</b>進行一個講解

    hash算法FPGA實現(1)

    FPGA的設計,尤其是通信領域,經常會遇到hash算法
    的頭像 發表于 09-07 17:01 ?1171次閱讀
    <b class='flag-5'>hash</b><b class='flag-5'>算法</b><b class='flag-5'>在</b><b class='flag-5'>FPGA</b><b class='flag-5'>中</b>的<b class='flag-5'>實現</b>(1)

    hash算法FPGA實現(2)

    在前面的文章hash算法FPGA實現(一)
    的頭像 發表于 09-07 17:02 ?755次閱讀
    <b class='flag-5'>hash</b><b class='flag-5'>算法</b><b class='flag-5'>在</b><b class='flag-5'>FPGA</b><b class='flag-5'>中</b>的<b class='flag-5'>實現</b>(2)

    hash算法FPGA實現(4)

    在前面的文章主要介紹了hash表及其鏈表的結構,以及key值的插入方法,既然有key值的插入,那就有key值的刪除,一種刪除是CPU通過重新刷新鏈表來刪除,另外一種就是FPGA刪除了,這里主要討論
    的頭像 發表于 09-07 17:03 ?689次閱讀
    <b class='flag-5'>hash</b><b class='flag-5'>算法</b><b class='flag-5'>在</b><b class='flag-5'>FPGA</b><b class='flag-5'>中</b>的<b class='flag-5'>實現</b>(4)