[发明专利]一种基于动态内存分配存储HASH链表的FPGA实现装置及方法有效
申请号: | 201811525145.8 | 申请日: | 2018-12-13 |
公开(公告)号: | CN109670083B | 公开(公告)日: | 2023-03-24 |
发明(设计)人: | 陈伯芳;王晓斌;詹万鹏;危必波;郑蓉 | 申请(专利权)人: | 武汉中元华电科技股份有限公司 |
主分类号: | G06F16/901 | 分类号: | G06F16/901;G06F16/9032 |
代理公司: | 武汉开元知识产权代理有限公司 42104 | 代理人: | 唐正玉 |
地址: | 430223 湖北省*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 动态 内存 分配 存储 hash fpga 实现 装置 方法 | ||
1.一种基于动态内存分配存储HASH链表的FPGA实现装置,包括缓存模块、哈希控制模块、哈希计算结果调度模块、哈希链表处理模块、查找结果调度模块,其特征在于:缓存模块与哈希控制模块相连,哈希计算结果调度模块分别与哈希控制模块、哈希链表处理模块、查找结果调度模块相连,哈希链表处理模块与查找结果调度模块相连,
缓存模块为32KB大小的双端口RAM,循环存储滑动窗口内的数据,为哈希控制模块提供HASH插入链表、移出链表、待编码字符串的数值;
哈希控制模块控制原始数据的读取,将原始数据转成3个连续字符串一组的数据流并计算HASH值;将已插入到哈希表的数据指针发送给缓存模块;完成输入原始数据的比较,统计输入数据的重复次数,后续一起插入HASH表;
哈希计算结果调度模块实现HASH计算结果的分发调度,将计算结果下发到8个通道分别进行HASH表的建立和维护,通过并行处理的方式加快HASH链表的维护及指针的更新;
哈希链表处理模块建立并维护冲突表存储信息,以HASH值为寻址指针将HASH值相同的字符串存储在一起,同时将滑动窗口外的数据移出链表,通过动态分配缓存的方式灵活的构建一部变化的HASH链表;在进行匹配字符串查找时,通过HASH值寻址查找的方式提供相同匹配字符串的地址信息,由于HASH值相同的字符串是链接在一起的,所以可以快速的得到相同匹配字符串的地址信息;
查找结果调度模块实现相同字符串匹配值查找的控制,对HASH链表给出的查找结果进行判断,剔除掉不在滑动窗口内的匹配值,按距离滑动窗口右侧的距离由近及远输出匹配结果。
2.一种根据权利要求1所述的基于动态内存分配存储HASH链表的FPGA实现装置的方法,其特征在于:
步骤一:将原始数据按顺序将已经插入HASH链表的数据存入缓存模块,并且为哈希控制模块提供插入链表的数值,缓存模块为32K字节大小的双端口RAM,是一个循环写入的缓存,通过指针的方式指示当前滑动窗口的位置;
步骤二:哈希控制模块控制原始数据的读取,将原始数据转成3个连续字符串一组的数据流并计算其HASH值,将已插入到哈希表的数据指针发送给缓存模块控制滑动窗口的移动;在计算HASH值的同时对3个连续字符串的数据流进行比较,统计输入数据的重复次数,在后续进行插入链表及移出链表的操作时可以同时操作这些重复的字符串加快维护链表的速度;
步骤三:哈希计算结果调度模块将哈希控制模块产生的HASH计算结果进行分发调度,产生8个通道的HASH维护请求,通过并行处理的方式加快HASH链表的维护及指针的更新;
步骤四:哈希链表处理模块建立并维护冲突表存储信息,根据哈希计算结果调度模块下发的请求命令,以HASH值为寻址指针将HASH值相同的字符串存储在一起,同时将滑动窗口外的数据移出链表,通过动态分配缓存的方式灵活的构建一部变化的HASH链表;对于查找操作请求,通过HASH值寻址的方式快速的给出相同匹配字符串的位置信息;
步骤五:对于8个并行的哈希链表处理模块提供的相同匹配字符串查找结果,查找结果调度模块将其合并在一起,同时检查其字符串信息是否和要求查找的字符串相等,剔除掉HASH结算结果相等但实际字符串不相等的查找结果。
3.根据权利要求2所述的基于动态内存分配存储HASH链表的FPGA实现装置的方法,其特征在于:所述步骤四哈希链表处理模块采用两片RAM来存储HASH链表,一片RAM为数据空间,即存储HASH链表地址,另一片RAM为控制空间,存储每一个HASH地址链表的长度及首尾指针、已经分配的存储空间的数量和每一个分配的存储空间的首地址,在查找匹配结果时根据控制RAM的值读取匹配结果。
4.根据权利要求3所述的基于动态内存分配存储HASH链表的FPGA实现装置的方法,其特征在于:所述步骤四具体实现方法为:(1)链表地址空间采用动态分配的方式,为每个存储在冲突的HASH地址在表中分配一段固定大小的连续空间,用于冲突表项的存储,没有冲突的HASH地址则不分配该地址空间;当链表长度超过已分配的固定大小的连续空间时,继续分配一片固定大小的连续空间,每次分配的存储空间为连续空间,空间大小根据配置的参数选取;(2)将链表存储的首尾地址存储在控制RAM中,插入链表、移出链表操作以及查找表时快速的定位、读取该位置的存储结果,提高速率;(3)将冲突链表分配的存储空间数量及首地址存储在控制链表中,这样可以在查找匹配字符串时快速的读出所有相同HASH地址;(4)采取并行的运行模式,将冲突链表分成8个部分,8个部分能同时操作,这样就能同时进行8个HASH值的操作,极大的提高HASH存储及查找的速度。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉中元华电科技股份有限公司,未经武汉中元华电科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811525145.8/1.html,转载请声明来源钻瓜专利网。