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
    +关注

    关注

    1603

    文章

    21328

    浏览量

    593286
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10451

    浏览量

    206583
  • 字符串
    +关注

    关注

    1

    文章

    552

    浏览量

    20147
  • Hash算法
    +关注

    关注

    0

    文章

    43

    浏览量

    7362
收藏 人收藏

    评论

    相关推荐

    FFT算法FPGA实现

    信号处理,FFT占有很重要的位置,其运算时间影响整个系统的性能。传统的实现方法速度很慢,难以满足信号处理的实时性要求。针对这个问题,本文研究了基于FPGA芯片的FFT
    发表于 05-28 13:38

    RC4加密算法FPGA设计与实现

    RC4加密算法FPGA设计与实现.pdf
    发表于 03-21 17:26

    RC4加密算法FPGA设计与实现

    ,它的局限性也逐渐暴露出来.很多计算机信息安全系统,硬件加密手段被应用到设备来提高密码运算速度和系统的安全性. 给出了一种RC4加密算法
    发表于 08-11 11:48

    求助-FPGA实现retinex算法

    求助大神,FPGA实现retinex算法 。。。
    发表于 05-08 23:29

    FPGA实现PID算法

    本帖最后由 发烧友LV 于 2014-12-29 20:13 编辑 FPGA实现PID算法,面临着小数的计算,请问大家一般是怎么处
    发表于 12-03 21:59

    怎么spartan 3AN fpga实现遗传算法

    我正在做我的遗传算法项目,有没有办法斯巴达3AN fpga实现遗传算法,如果没有建议我一些方
    发表于 04-03 13:16

    实用AGC算法的工作原理及音频FPGA的应用

    在-3~30 dB。通过以上4个步骤,可将实用AGC算法音频信号处理的应用流程,设计如图1所示。实用AGC算法的工作原理及
    发表于 10-21 16:42

    基于Hash和二叉树的路由表查找算法

    基于Hash和二叉树的路由表查找算法 :提出了一种基于Hash和二又树的路由表查找算法,这一算法可以满足()C-768的转发要求,支持超过
    发表于 02-22 17:06 35次下载

    hash表的实现原理

    软件开发中,一个hash表相当于把n个key随机放入到b个bucket中,以实现n个数据在b个单位空间的存储。 我们发现hash表中存在一些有趣现象: hash表中key的分布规律 当
    发表于 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 4786次阅读

    hash算法的原理和实际应用等几个角度,对hash算法进行一个讲解

    由于hash的原理是将输入空间的值映射成hash空间内,而hash值的空间远小于输入的空间。根据抽屉原理,一定会存在不同的输入被映射成相同输出的情况。那么作为一个好的hash
    的头像 发表于 06-03 17:34 2979次阅读
    从<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算法实现hash算法
    的头像 发表于 09-07 17:01 607次阅读
    <b class='flag-5'>hash</b><b class='flag-5'>算法</b>在<b class='flag-5'>FPGA</b>中的<b class='flag-5'>实现</b>(1)

    hash算法FPGA中的实现(2)

    在前面的文章中:hash算法FPGA中的实现(一)——hash表的组建,记录了关于hash表的
    的头像 发表于 09-07 17:02 414次阅读
    <b class='flag-5'>hash</b><b class='flag-5'>算法</b>在<b class='flag-5'>FPGA</b>中的<b class='flag-5'>实现</b>(2)

    hash算法FPGA中的实现(3)

    在前面的文章中主要介绍了hash表及其链表的结构,同时说明了如何读取表项。那表项是如何写入的了?前期的文章中有少量的提及,这里单独写一篇,介绍两种常见的方案。
    的头像 发表于 09-07 17:02 402次阅读
    <b class='flag-5'>hash</b><b class='flag-5'>算法</b>在<b class='flag-5'>FPGA</b>中的<b class='flag-5'>实现</b>(3)