吴忠躺衫网络科技有限公司

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

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

3天內不再提示

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

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

在前面的文章中主要介紹了hash表及其鏈表的結構,以及key值的插入方法,既然有key值的插入,那就有key值的刪除,一種刪除是CPU通過重新刷新鏈表來刪除,另外一種就是FPGA刪除了,這里主要討論FPGA如何刪除鏈表。

應用場景

什么場景需要刪除hash表項呢?其實很多時候是不需要刪除表現的,比如最常見的類似bitmap的場景,還有字符串匹配場景等。但是如果hash表項需要老化的時候,就需要刪除hash鏈表了。

比如MAC地址學習建立的MAC地址表,需要在一定的間隔時間內對所有的MAC地址進行一次老化。如果采用hash算法來實現MAC地址表,那就是要刪除長期沒有匹配的鏈表節點。我們知道,在鏈表插入的時候,需要對鏈表地址進行有效的管理,同理,當鏈表地址刪除后,也需要對鏈表地址重新管理,這里不討論具體業務,只討論在刪除鏈表的時候如何管理鏈表。

鏈表的刪除

我們先看一個例子,如下圖所示,hash桶后面跟了3個鏈表(鏈表的刪除,和鏈表實現的方案沒有關系)。那如何刪除鏈表呢?

圖片

假如我們要刪除addr1,刪除后的形式如下圖所示,只需要修改hash桶中下一鏈的地址,即把要刪除的鏈表節點addr1中下一鏈的地址addr2,寫回到hansh桶中即可。

圖片

但是這里有一個問題,我們鏈表可以從頭鏈到尾,即可以從上家找到下家,但是沒有辦法從下家找到上家。要刪除的鏈表節點addr1,知道下一鏈是addr2,但是它不知道它的上一鏈在哪里?這里就引出一個新的問題,雙向鏈表。

雙向鏈表

關于什么是雙向鏈表,這里不做解釋,網上有很多資料,這里先用一個圖來表示,我們把上面有3個鏈表的圖做一個改造,就可以得到雙向鏈表,如下圖所示:

圖片

每個鏈表節點包含有2個地址,左邊的地址指向上一鏈,右邊的地址指向下一鏈。比如keyB所在的鏈表節點,它的下一鏈地址為addr3,上一鏈地址為addr1。

再回到開始的問題,假如addr1要被刪除掉。我們知道addr1的上一鏈是NULL,即沒有鏈表,是hash桶,下一鏈是addr2,所以,我們只需要把addr1的下一鏈的地址addr2,寫入到addr1的上一鏈hash桶中,同時把add2的上一鏈指向addr1的上一鏈即可。

同理,如果要刪除addr2的時候,我們只需要把addr2的下一鏈的地址addr3,寫入addr2的上一鏈addr1中即可,同時把addr3的上一鏈指向addr2的上一鏈,即addr1即可,如下圖所示:

圖片

總結

當需要刪除鏈表的時候,需要做的就是2讀2寫。

1、分別讀出要刪除鏈表addr2的上一鏈和下一鏈(讀出addr1和addr3的內容);

2、將要刪除鏈表addr2的上一鏈地址addr1,寫入下一鏈的上一鏈地址中;

3、將要刪除鏈表addr2的下一鏈地址addr3,寫入上一鏈的下一鏈地址中;

hash在FPGA中的設計已經完全介紹完畢,這些都是一些基礎的典型方法,當然肯定還有其他一些更加優秀的方案,歡迎討論交流。

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

    關注

    1630

    文章

    21798

    瀏覽量

    606049
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10905

    瀏覽量

    213031
  • 字符串
    +關注

    關注

    1

    文章

    585

    瀏覽量

    20604
  • Hash算法
    +關注

    關注

    0

    文章

    43

    瀏覽量

    7417
收藏 人收藏

    評論

    相關推薦

    RC4加密算法FPGA設計與實現

    ,它的局限性也逐漸暴露出來.很多計算機信息安全系統,硬件加密手段被應用到設備來提高密碼運算速度和系統的安全性. 給出了一種RC4加密算法
    發表于 08-11 11:48

    FPGA實現PID算法

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

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

    RC4加密算法FPGA設計與實現

    RC4加密算法FPGA設計與實現,下來看看。
    發表于 05-10 11:24 ?27次下載

    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 ?5088次閱讀

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

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

    在前面的文章主要介紹了hash表及其鏈表的結構,同時說明了如何讀取表項。那表項是如何寫入的了?前期的文章中有少量的提及,這里單獨寫一篇,介紹兩種常見的方案。
    的頭像 發表于 09-07 17:02 ?843次閱讀
    <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)
    足球下注| 威尼斯人娱乐城怎样赢| 大发888官方下载168| 蒙山县| 百家乐官网扑克筹码| 做生意门口禁忌| 现金棋牌评测网| 澳门百家乐官网庄闲和| 大家赢百家乐投注| 明升娱乐| 百家乐在发牌技巧| 太阳城娱乐城| 网上百家乐官网骗人的吗| 澳门赌百家乐官网打法| 赌博百家乐作弊法| 威尼斯人娱乐城网络百家乐| 百家乐官网官方网址| 百家乐倍投工具| 百家乐靠什么赢| 百家乐官网赌博破解| 百家乐信息| 利高百家乐官网现金网| 百家乐娱乐平台官网网| 介绍百家乐官网赌博技巧| 网上百家乐试玩网址| 百家乐官网牌机的破解法| 天津太阳城橙翠园| 游戏机百家乐官网的玩法技巧和规则 | 最新百家乐官网电脑游戏机| 大发888游戏平台dafa888gw| 百家乐官网筹码皇冠| 百家乐赌场| 摩纳哥百家乐的玩法技巧和规则| 百家乐官网最佳注码法| 哪个棋牌游戏平台好| 百家乐官网赌博怎么玩| 百家乐视频游戏平台| 金寨县| 英皇百家乐的玩法技巧和规则| 百家乐官网视频双扣游戏| 百家乐赌场怎么玩|