CN108319454A - 一种基于硬件fpga快速实现最优二叉树的方法 - Google Patents
一种基于硬件fpga快速实现最优二叉树的方法 Download PDFInfo
- Publication number
- CN108319454A CN108319454A CN201810079382.XA CN201810079382A CN108319454A CN 108319454 A CN108319454 A CN 108319454A CN 201810079382 A CN201810079382 A CN 201810079382A CN 108319454 A CN108319454 A CN 108319454A
- Authority
- CN
- China
- Prior art keywords
- binary tree
- node
- depth
- data
- leafy
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/22—Procedural
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明涉及一种基于硬件FPGA快速实现最优二叉树的方法,此方法包括二叉树构造模块、结点关联信息统计模块、深度生成模块、二叉树产生模块,其特征在于按以下步骤进行:二叉树构造模块不停的从缓存中取出数据构造分支结点与叶子结点,同时结点关联信息统计模块统计各个分支结点与叶子结点之间的关系,统计完成之后深度生成模块会根据结点关联信息统计模块提供的分支结点与叶子结点的关系生成叶子结点的深度信息,最后二叉树产生模块就能够根据叶子结点的深度信息恢复出最优二叉树。本发明方法简单、高效,达到快速生成最优二叉树的目的。
Description
技术领域
本发明涉及一种基于硬件FPGA快速实现最优二叉树的方法,此方法可以应用于所有对已经统计排序完成的数据生成最优二叉树的领域。
背景技术
早期的二叉树主要用软件实现,速度太慢,而用硬件实现只采用单级缓存严重影响二叉树的生成速度,同时对于二叉树结点深度的统计过多依赖于分支结点和叶子结点的生成,这样显得算法笨拙、复杂。
发明内容
本发明为了克服上述现有技术存在的问题,提供一种基于硬件FPGA快速实现最优二叉树的方法,将原二叉树方法分成二叉树构造模块、结点关联信息统计模块、深度生成模块、二叉树产生模块等多级模块进行处理,采用多级缓存与并行处理,对已经统计排序完成的数据进行二叉树构造及生成,并且二叉树深度的统计采用“流水线”处理思想,并采用硬件实现,本发明方法简单、高效,达到快速生成最优二叉树的目的。
本发明的技术方案为:
一种基于硬件FPGA快速实现最优二叉树的方法,此方法包括二叉树构造模块、结点关联信息统计模块、深度生成模块、二叉树产生模块,上述所有模块均采用硬件FPGA实现,其特征在于按以下步骤进行:第1步,二叉树构造模块对已经统计排序完成的数据进行二叉树的构造,分两级FIFO(First Input First Output)进行缓存,第一级存储叶子结点,第二级存储分支结点,每次从两级FIFO中分别取出前两个数据,四个数据中最小的两个数据构造成分支结点存于二级FIFO,如此循环,直到所有的叶子结点和分支结点构造完成;第2步,结点关联信息统计模块统计各个分支结点与叶子结点之间的关系,采用“合并存储、分位标记”的方式,简单快捷;第3步,深度生成模块不停的监测结点关联信息统计模块,融合“流水线”处理思想,独立工作;如果对应的叶子结点标志位有效,则将对应的深度加1,以此来得到所有叶子结点在二叉树中的深度;第4步,二叉树产生模块通过深度生成模块统计的叶子结点深度信息产生最终的最优二叉树,达到快速实现最优二叉树目的。因上述所有模块均采用硬件FPGA实现,故速度更加快捷。
所述整个最优二叉树构造时的数据处理步骤为:
(1)外部输入的数据经过统计排序之后进入二叉树构造模块,直接存于缓存FIFO0;
(2)从缓存FIFO0与FIFO1中分别取出两个数据,最开始的时候FIFO1是没有数据的,所以只需要在FIFO0中取出2个数据结合成一个新的分支结点存于FIFO1中;
(3)结点关联信息统计模块会记录下这个新的分支结点的权重信息与组成这个分支结点的所有叶子结点,在对应的位置将标志位置1并发出标志位有效信号给深度生成模块,深度生成模块收到有效信号之后就会将对应的叶子结点深度加1;
(4)再次从缓存FIFO0与FIFO1中分别取出两个数据,如果缓存FIFO中不够2个数据就只取剩下的,在取出的2个、3个或4个数据中找到权重值最小的两个数据结合成一个新的分支结点存于FIFO1中;
(5)重复步骤(3)和(4),直到只剩下唯一的一个分支结点,则认为整个最优二叉树构造完成,开始下一个二叉树的构造;
(6)当整个二叉树构造完成之后,深度生成模块也统计完成所有叶子结点在该二叉树中的深度,最后二叉树产生模块根据深度生成模块提供的叶子结点在该二叉树中的深度信息来产生最优二叉树。
实施本发明的优势:
1.对于分支结点与叶子结点的生成采用两级FIFO(First Input First Output)的缓存结构,提高二叉树的生成速度;
2.对于结点之间的关联信息采用“合并存储、分位标记”的方式,简单、快捷、易于实现;
3.对于叶子结点的深度生成采用“流水线”处理思想,并行处理,任务完全独立于分支结点与叶子结点的生成,宏观上无间隙;
4.各级模块采用并行处理模式,任务完全独立;
5.采用硬件实现,能够充分发挥硬件在速度方面的优势。
附图说明
图1为本发明的二叉树构造的整体设计框图。
图2为本发明的两级FIFO构造二叉树的结构图。
图3为本发明的关联信息统计存储格式示意图。
具体实施方式
结合附图对本发明作进一步描述。
如图1中所示,本发明一种基于硬件FPGA快速实现最优二叉树的方法,此方法包括二叉树构造模块、结点关联信息统计模块、深度生成模块、二叉树产生模块,上述所有模块均采用硬件FPGA实现,其特征在于按以下步骤进行:第1步,二叉树构造模块对已经统计排序完成的数据进行二叉树的构造,分两级FIFO(First Input First Output)进行缓存,第一级存储叶子结点,第二级存储分支结点,每次从两级FIFO中分别取出前两个数据,四个数据中最小的两个数据构造成分支结点存于二级FIFO,如此循环,直到所有的叶子结点和分支结点构造完成;第2步,结点关联信息统计模块统计各个分支结点与叶子结点之间的关系,采用“合并存储、分位标记”的方式,其中二叉树构造模块与结点关联信息统计模块可以捆绑成一个数据流A;第3步,深度生成模块不停的监测结点关联信息统计模块,融合“流水线”处理思想,如果对应的叶子结点标志位有效,则将对应的深度加1,以此来得到所有叶子结点在二叉树中的深度;第4步,二叉树产生模块通过深度生成模块统计的叶子结点深度信息产生最终的最优二叉树,达到快速实现最优二叉树目的,其中深度生成模块与二叉树产生模块可以捆绑成一个数据流B。数据流A与数据流B之间引入“流水线”处理思想,数据流B的输入是数据流A的输出,两条数据流处理完全独立,互不干涉,充分显示了该方案的优势。
如图1所示,二叉树构造模块负责对输入的数据进行二叉树的构造,两级FIFO构造二叉树的结构图如图2所示,采用两级FIFO实现,并输出叶子结点与分支结点之间的关联信息给结点关联信息统计模块;结点关联信息统计模块需要统计每一个分支结点与叶子结点之间的关系,然后将它们之间的信息采用“合并存储、分位标记”的方式按表1所示的数据格式(286个叶子结点,分支结点值用30bit表示)存于缓存中,只要结点对应的位置为1并且有效,则会发送一个脉冲信号给深度生成模块;深度生成模块需要及时的统计各个叶子结点的深度,然后将整个二叉树结点的深度信息发送给二叉树产生模块;二叉树产生模块以最快的速度恢复出最优二叉树。
表1为分支节点与叶子结点存储缓存中的数据格式
例如对于具体的二叉树,当对应分支节点有5个时存储信息的数据格式如表2所示,对应得到如图3所示的最优二叉树。
表2为分支节点有5个时存储的信息
BIT | 315~286 | 285 | 284 | … | 16 | 15 | 14 | 13 | … | 9 | … | 4 | 3 | … | 0 |
值 | 910 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 |
整个最优二叉树构造时的数据处理流程为:
1.外部输入的数据经过统计排序之后进入二叉树构造模块,对于一颗树来说外部统计排序完成的数据就是这颗树的所有叶子结点,直接存于缓存FIFO0;
2.从缓存FIFO0与FIFO1中分别取出两个数据,最开始的时候FIFO1是没有数据的所以只需要在FIFO0中取出2个数据结合成一个新的分支结点存于FIFO1中;
3.结点关联信息统计模块会记录下这个新的分支结点的权重信息(所有叶子结点的权重信息之和)与组成这个分支结点的所有叶子结点,在对应的位置将标志位置1并发出标志位有效信号给深度生成模块,深度生成模块收到有效信号之后就会将对应的叶子结点深度加1;
4.再次从缓存FIFO0与FIFO1中分别取出两个数据,如果缓存FIFO中不够2个数据就只取剩下的,在取出的4个数据(可能只有3个、2个)中找到权重值最小的两个数据结合成一个新的分支结点存于FIFO1中,因为FIFO0中是按照权重值经过排序的,所有按照上述规则构造分支结点之后,存于FIFO1中的数据也是按照权重值排过序的;
5.重复步骤3和步骤4,直到只剩下唯一的一个分支结点,则认为整个最优二叉树构造完成,开始下一个二叉树的构造;
6.当整个二叉树构造完成之后,深度生成模块也统计完成了所有叶子结点在该二叉树中的深度,最后二叉树产生模块就可以根据深度生成模块提供的叶子结点在该二叉树中的深度信息来产生最优二叉树。
1.本发明主要针对的是已经统计排序完成的数据,通过两级FIFO的缓存结构构造最优二叉树,因为已经排序完成,所以二级FIFO中的数据也是按照顺序存储的,不需要考虑排序问题并且采用两级FIFO结构,速度更快;
2.本发明的结点信息采用的是“合并存储、分位标记”的方式,易于实现,并且方便扩展;
3.本发明引入“流水线”处理思想,数据流A与数据流B之间控制完全独立,互不干涉,不会因为任一一方遇到瓶颈而影响另外一方的情况;
4.本发明由于采用硬件方式实现,并行处理,宏观上无间隙。
Claims (2)
1.一种基于硬件FPGA快速实现最优二叉树的方法,此方法包括二叉树构造模块、结点关联信息统计模块、深度生成模块、二叉树产生模块,上述所有模块均采用硬件FPGA实现,其特征在于按以下步骤进行:第1步,二叉树构造模块对已经统计排序完成的数据进行二叉树的构造,分两级FIFO(First Input First Output)进行缓存,第一级存储叶子结点,第二级存储分支结点,每次从两级FIFO中分别取出前两个数据,四个数据中最小的两个数据构造成分支结点存于二级FIFO,如此循环,直到所有的叶子结点和分支结点构造完成;第2步,结点关联信息统计模块统计各个分支结点与叶子结点之间的关系;第3步,深度生成模块不停的监测结点关联信息统计模块,融合“流水线”处理思想;如果对应的叶子结点标志位有效,则将对应的深度加1,以此来得到所有叶子结点在二叉树中的深度;第4步,二叉树产生模块通过深度生成模块统计的叶子结点深度信息产生最终的最优二叉树。
2.根据权利要求1所述基于硬件FPGA快速实现最优二叉树的方法,其特征在于:所述整个最优二叉树构造时的数据处理步骤为:
(1)外部输入的数据经过统计排序之后进入二叉树构造模块,直接存于缓存FIFO0;
(2)从缓存FIFO0与FIFO1中分别取出两个数据,最开始的时候FIFO1是没有数据的,所以只需要在FIFO0中取出2个数据结合成一个新的分支结点存于FIFO1中;
(3)结点关联信息统计模块会记录下这个新的分支结点的权重信息与组成这个分支结点的所有叶子结点,在对应的位置将标志位置1并发出标志位有效信号给深度生成模块,深度生成模块收到有效信号之后就会将对应的叶子结点深度加1;
(4)再次从缓存FIFO0与FIFO1中分别取出两个数据,如果缓存FIFO中不够2个数据就只取剩下的,在取出的2个、3个或4个数据中找到权重值最小的两个数据结合成一个新的分支结点存于FIFO1中;
(5)重复步骤(3)和(4),直到只剩下唯一的一个分支结点,则认为整个最优二叉树构造完成,开始下一个二叉树的构造;
(6)当整个二叉树构造完成之后,深度生成模块也统计完成所有叶子结点在该二叉树中的深度,最后二叉树产生模块根据深度生成模块提供的叶子结点在该二叉树中的深度信息来产生最优二叉树。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810079382.XA CN108319454B (zh) | 2018-03-27 | 2018-03-27 | 一种基于硬件fpga快速实现最优二叉树的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810079382.XA CN108319454B (zh) | 2018-03-27 | 2018-03-27 | 一种基于硬件fpga快速实现最优二叉树的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108319454A true CN108319454A (zh) | 2018-07-24 |
CN108319454B CN108319454B (zh) | 2021-02-09 |
Family
ID=62887923
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810079382.XA Active CN108319454B (zh) | 2018-03-27 | 2018-03-27 | 一种基于硬件fpga快速实现最优二叉树的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108319454B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110968291A (zh) * | 2018-09-29 | 2020-04-07 | 中国移动通信集团浙江有限公司 | 一种基于最优树调整应用程序功能菜单的方法及装置 |
WO2021196745A1 (zh) * | 2020-03-31 | 2021-10-07 | 上海商汤智能科技有限公司 | 数据处理装置、集成电路和ai加速器 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102983866A (zh) * | 2012-11-14 | 2013-03-20 | 无锡芯响电子科技有限公司 | 一种动态Huffman编码硬件实现系统及其实现方法 |
US20160233881A1 (en) * | 2014-06-09 | 2016-08-11 | Tidal Systems, Inc. | Vlsi efficient huffman encoding apparatus and method |
CN106611284A (zh) * | 2016-06-20 | 2017-05-03 | 四川用联信息技术有限公司 | 一种哈夫曼物料采购决策算法 |
-
2018
- 2018-03-27 CN CN201810079382.XA patent/CN108319454B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102983866A (zh) * | 2012-11-14 | 2013-03-20 | 无锡芯响电子科技有限公司 | 一种动态Huffman编码硬件实现系统及其实现方法 |
US20160233881A1 (en) * | 2014-06-09 | 2016-08-11 | Tidal Systems, Inc. | Vlsi efficient huffman encoding apparatus and method |
CN106611284A (zh) * | 2016-06-20 | 2017-05-03 | 四川用联信息技术有限公司 | 一种哈夫曼物料采购决策算法 |
Non-Patent Citations (2)
Title |
---|
李宜珂等: ""基于不同排序方法的快速霍夫曼编码硬件实现"", 《计算机科学》 * |
杨浪花等: ""MP3/AAC解码器中Huffman硬件加速器设计与实现"", 《电声技术》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110968291A (zh) * | 2018-09-29 | 2020-04-07 | 中国移动通信集团浙江有限公司 | 一种基于最优树调整应用程序功能菜单的方法及装置 |
CN110968291B (zh) * | 2018-09-29 | 2023-08-15 | 中国移动通信集团浙江有限公司 | 一种基于最优树调整应用程序功能菜单的方法及装置 |
WO2021196745A1 (zh) * | 2020-03-31 | 2021-10-07 | 上海商汤智能科技有限公司 | 数据处理装置、集成电路和ai加速器 |
TWI773051B (zh) * | 2020-03-31 | 2022-08-01 | 大陸商上海商湯智能科技有限公司 | 資料處理裝置、積體電路及人工智能加速器 |
Also Published As
Publication number | Publication date |
---|---|
CN108319454B (zh) | 2021-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2895968B1 (en) | Optimal data representation and auxiliary structures for in-memory database query processing | |
US6321241B1 (en) | Cross tab analysis and reporting method | |
CN107565973B (zh) | 一种结点可扩展的哈夫曼编码的实现方法及电路结构 | |
CN108319454A (zh) | 一种基于硬件fpga快速实现最优二叉树的方法 | |
CN110189011B (zh) | 自然灾害下密集输电通道故障评估方法及系统 | |
CN105119834B (zh) | 一种基于复合trie树结构的源地址目的地址联合查找方法 | |
CN104809161B (zh) | 一种对稀疏矩阵进行压缩和查询的方法及系统 | |
CN104731925A (zh) | 基于MapReduce的FP-Growth的负载均衡并行计算方法 | |
DE69820230T2 (de) | N-weg verarbeitung von bitketten in einer datenflussarchitektur | |
CN105045806A (zh) | 一种面向分位数查询的概要数据动态分裂与维护方法 | |
CN104616104A (zh) | 船用柴油机零件快速编码管理系统及管理方法 | |
CN105515997A (zh) | 基于bf_tcam实现零范围扩张的高效范围匹配方法 | |
CN109525249A (zh) | 编码解码方法、系统、可读存储介质及计算机设备 | |
CN107800700A (zh) | 一种路由器和片上网络传输系统及方法 | |
CN101930458A (zh) | 一种基于特征值的短信匹配方法 | |
Escudero-Sahuquillo et al. | An effective and feasible congestion management technique for high-performance MINs with tag-based distributed routing | |
CN105515588B (zh) | 一种ldpc‑cc高速译码器 | |
CN101272212A (zh) | 虚级联组成员的排序方法 | |
CN106611213A (zh) | 一种求解作业车间调度问题的混合粒子群算法 | |
CN106708532B (zh) | 基于tcam的多层次正则表达式匹配方法 | |
CN113835712B (zh) | 一种按照给定字段值进行判断的快速数据包分组路由方法 | |
CN111224892A (zh) | 一种基于fpga随机森林模型的流量分类方法及系统 | |
CN104683806B (zh) | 基于深度流水的mq算术编码器高速fpga实现方法 | |
Symvonis | Routing on trees | |
CN114998090A (zh) | 一种光束法平差算法数字图像处理的加速方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |