色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

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

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

在前面的文章中:hash算法FPGA中的實現(一)——hash表的組建,記錄了關于hash表的構建,這里記錄另外一個話題,就是hash鏈表。我們知道,只要有hash的地方,就一定有沖突,關鍵就看如何解決沖突了。這里介紹兩種常見的設計hash鏈表的方案。當然,解決hash沖突也不一定就要用鏈表的方法,還有其他方案。

hash鏈表說明

首先說下什么hash鏈表?還是借用上一篇文章中的圖片來說明這個問題,如下圖所示。hash鏈表是為了解決hash沖突而建立的一種數據結構。當某個key計算出hash值后,對應的hash桶中已經有了數據,出現了沖突,那這個時候就需要用一個鏈表來將具體相同hash值的key“鏈”起來,方便后續的查詢。

圖片

圖中關于hash鏈表的示意,只是一種簡單的表示,在FPGA的實際設計中,情況往往要復雜得多。

方案1——DDR

有的時候,我們并不知道鏈表到底會有多長,那么自然地會想到用DDR來存放鏈表。如何在DDR里組織數據結構呢?一般來講,hash鏈表的數據結構如下:

圖片

hash桶中除了上文所講的數據結構外,還有一個下一鏈的地址addr1,它指向鏈表的一個節點,該鏈表節點的數據結構和hash桶類似,也包括key值和地址,如圖中key A和addr2,對于由addr2指向的最后一鏈,只有key B和最后一鏈標記NULL。

這樣的數據結構,在DDR中存放的時候,顯然是不高效的。因為每處理一次hash,有多少個鏈表節點就要讀多少次DDR。我們知道DDR的性能有2個指標,一個是Gbps,一個是Mpps。處理一次hash時讀DDR的次數越多,處理的hash次數就會越少,性能就越低,所以我們優化鏈表的數據結構,降低對DDR的讀取次數。

優化的思路和hash桶的數據結構類似,如下圖所示:

圖片

在一個節點中,不再只存放一個key,上圖示例是存放了5個key。實際一次DDR的讀寫,可能最少是128byte或者256byte,以104bit的五元組為key來計算,可以存放9個key。一次可以讀取N個key,相比以前的鏈表方案,讀DDR的次數為原來的N分之一,性能提升N倍。

將這個話題繼續引申下,如果hash桶存放在DDR中,那又如何構建hash表呢?如果真的需要把hash桶存放在DDR中,hash表的構建和hash鏈表的構建就是完全一模一樣的了。

方案二——內部RAM

如果考慮所有的沖突次數在一定范圍之內,那么可以把所有的鏈表存放在一起,即存放在一個內部的RAM中,實現對所有hash桶的鏈表管理。如下圖所示:

圖片

以4個hash桶為例子說明鏈表的管理,key1的hash值為0,落入到hash桶0,因此時hash桶中的指針指向地址0,即addr0,addr0為空,即可以寫入key1在地址0中。同樣key2的hash值也為0,由于addr0中已經有數據,此時addr1為空,因此將key2寫入addr1中,同時把addr1寫入key1中的下一鏈,完成鏈表的構建。

其他的key值大家可以自行推敲演練。采用這樣的方案,所有的鏈表都存放在一個ram中,處理沖突的次數是有限的,相比DDR的方案,還是簡單一些。

總結

關于上述2種方案,這里做一個簡單的總結。

DDR鏈表內部RAM鏈表
應用場景萬能場景,使用無限制
沖突次數無限制,只要ddr有足夠空間對總體沖突次數(RAM的深度)有限制,超過后hash表無法寫入,或者需要定期老化
實現難易程度相對復雜,涉及到DDR的讀改寫操作相對簡單,但是也要實現對RAM的讀改寫操作,
性能低,需要串行讀DDR,鏈表越長,性能越低高,雖然相比DDR鏈表性能高,同樣也是鏈表越長,性能越低。

不管采用哪種方案,高效地組建表項,減少對hash表和鏈表的訪問次數是hash處理性能的關鍵。

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

    關注

    1629

    文章

    21744

    瀏覽量

    603607
  • DDR
    DDR
    +關注

    關注

    11

    文章

    712

    瀏覽量

    65360
  • Hash算法
    +關注

    關注

    0

    文章

    43

    瀏覽量

    7383
  • 鏈表
    +關注

    關注

    0

    文章

    80

    瀏覽量

    10565
收藏 人收藏

    評論

    相關推薦

    FPGA實現PID算法

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

    實用AGC算法的工作原理及音頻FPGA的應用

    放大調整后,確保了通信系統信號輸出的幅度可基本維持恒定的狀態。文中將AGC算法應用于音頻信號處理,可實現FPGA,并可有效降低音頻信號輸
    發表于 10-21 16:42

    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 ?882次閱讀
    <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>的應用

    CVSD算法分析及其FPGA實現

    CVSD算法分析及其FPGA實現 概 述眾多的語音編譯碼調制
    發表于 04-01 16:26 ?2486次閱讀
    CVSD<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>

    FPGA實現CRC算法的程序

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

    hash表的實現原理

    軟件開發,一個hash表相當于把n個key隨機放入到b個bucket,以實現n個數據b個單位空間的存儲。 我們發現
    發表于 09-28 14:31 ?0次下載
    <b class='flag-5'>hash</b>表的<b class='flag-5'>實現</b>原理

    基于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 ?5047次閱讀

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

    由于hash的原理是將輸入空間的值映射成hash空間內,而hash值的空間遠小于輸入的空間。根據抽屜原理,一定會存在不同的輸入被映射成相同輸出的情況。那么作為一個好的hash
    的頭像 發表于 06-03 17:34 ?3279次閱讀
    從<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 ?1219次閱讀
    <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實現(3)

    在前面的文章主要介紹了hash表及其鏈表的結構,同時說明了如何讀取表項。那表項是如何寫入的了?前期的文章中有少量的提及,這里單獨寫一篇,介紹兩種常見的方案。
    的頭像 發表于 09-07 17:02 ?783次閱讀
    <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>(3)

    hash算法FPGA實現(4)

    在前面的文章主要介紹了hash表及其鏈表的結構,以及key值的插入方法,既然有key值的插入,那就有key值的刪除,一種刪除是CPU通過重新刷新鏈表來刪除,另外一種就是FPGA刪除了,這里主要討論
    的頭像 發表于 09-07 17:03 ?742次閱讀
    <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)
    主站蜘蛛池模板: 亚洲色欲色欲www474ee| fryee性欧美18 19| 国产精亚洲视频综合区| 亚洲成人一区| 久久不卡免费视频| 97精品国产亚洲AV超碰| 日本免费一本天堂在线| 国产人妻XXXX精品HD电影| 亚洲欧洲日韩国产一区二区三区| 久久久久嫩草影院精品| bl高h乱肉辣文| 十二月综合缴缴情| 久久精品电影| 边摸边吃奶玩乳尖视频| 亚洲免费三区| 欧美 亚洲 日韩 中文2019| 国产精品久久久久影院免费| 印度学生xxxxx性14一16| 青青青伊人| 狠狠色狠狠色综合日日92| 99久久999久久久综合精品涩| 天龙八部慕容属性加点| 久久有码中文字幕| 国产精品VIDEOS麻豆TUBE| 中文字幕在线观看国产| 污漫日本E同人| 蜜桃日本免费观看MV| 国产精品一区二区AV97| 99re6久久在热线视频| 香蕉 在线播放| 啪啪激情婷婷久久婷婷色五月| 国内精品日本久久久久影院| 把腿张开JI巴CAO死你H教室| 一级黄色香蕉视频| 日韩免费一级毛片| 伦理片97影视网| 国内久久久久影院精品| 波野结衣qvod| 2020国产成人精品免费视频| 亚洲.欧美.中文字幕在线观看| 欧美一级久久久久久久大|