CN113271107A - 一种Huffman硬件解码方法 - Google Patents
一种Huffman硬件解码方法 Download PDFInfo
- Publication number
- CN113271107A CN113271107A CN202011063334.5A CN202011063334A CN113271107A CN 113271107 A CN113271107 A CN 113271107A CN 202011063334 A CN202011063334 A CN 202011063334A CN 113271107 A CN113271107 A CN 113271107A
- Authority
- CN
- China
- Prior art keywords
- data
- bits
- group
- length
- code stream
- 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
- 238000000034 method Methods 0.000 title claims abstract description 12
- 239000000284 extract Substances 0.000 claims abstract description 8
- 230000001934 delay Effects 0.000 claims 1
- 230000003111 delayed effect Effects 0.000 description 10
- 239000000872 buffer Substances 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000013528 artificial neural network Methods 0.000 description 3
- 238000013144 data compression Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 101100063435 Caenorhabditis elegans din-1 gene Proteins 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
Abstract
本发明为一种Huffman硬件解码方法,包括:接受霍夫曼树的码流,接收未解码的数据码流,将同一个标记的64bit未解码的数据码流拼接为一个目标数据组,解码器Decoder_i在第一次解码时均向后延迟i个时钟周期。其中,i=0,1,2,3,4,5,6,7。单个解码器接收到目标数据组后,单个解码器在对应的第一个时钟周期提取目标数据组的前12bit数据。依次查找前12bit数据中每个比特数据。若命中前12bit数据中的一个数据data_0时,则停止查找,累加器获取目标数据data_0的编码长度a1,再将目标数据组中所有数据左移a1位。解码器在每个固定时钟周期交替读出第一存储器的高64位和低64位数据完成解码。每个Decoder均在64个时钟周期解码出64个8bit数据。实现8路并行流水解码,大幅度减少数据解码所需时间。
Description
技术领域
本发明涉及计算机数据压缩领域,尤指在数据安全性较高或者数据带宽较 小的应用场景下的一种高速的并行Huffman硬件解码方法。
背景技术
由于人们对算法精度的高要求,神经网络的层数越来越多,神经网络的权 重参数在数量和大小上达到了一个前所未有的高度。庞大神经网络权重规模导 致了严重的存储墙问题,这会严重影响整体系统的性能发挥。通过有效的数据 压缩从而解决存储墙问题一直是学术界和工业界的热点。
以Huffman编码为代表的熵编码是一种常用的数据压缩方式,由于Huffman 编码是一种不定长的编码方式,高速并行的Huffman解码效率低。
发明内容
本发明的目的是提供一种Huffman硬件解码方法,提高解码效率。
为了实现上述目的,采用的技术方案为:一种Huffman硬件解码方法,包 括下述步骤:
S100:接受霍夫曼树的码流,其数据格式为冗余码和掩码的拼接格式。
S101:接收未解码的数据码流,分割所述数据码流获取多个数据组;所述 数据组包括64个数据和固定比特长度的Head。
S102:每个时钟周期内向定位器输入64bit定长的未解码的数据码流。定位 器截取第一批64bit未解码的数据码流中高10位作为Head。则当前已累计的 Group长度为54bit。每到来一笔新的未解码的数据码流时,当前已累计的Group 长度自增64bit。
判断当前已累计的Group长度是否大于或等于Head的值。若是,则更新 Head,重新计算当前已累计Group的长度。若否,则等待新的未解码的数据码 流。
S103:根据Head的值与当前已累计的Group长度,对当前的64bit未解码 的数据码流进行拆分并标记。
判断当前已累计的Group长度是否小于Head的值。若是,则不对当前的64bit 未解码的数据码流进行拆分,且标记为0。若否,则拆分当前64bit未解码的数 据码流获取第一部分和第二部分。第一部分隶属于当前Group且标记为0,第二 部分隶属于下一个Group且标记为1。
S104:将同一个标记的64bit未解码的数据码流拼接为一个目标数据组。
S105:解码器Decoder_i在第一次解码时均向后延迟i个时钟周期。其中, i=0,1,2,3,4,5,6,7。
S106:单个解码器接收到目标数据组后,单个解码器在对应的第一个时钟 周期提取目标数据组的前12bit数据。依次查找前12bit数据中每个比特数据。 若命中前12bit数据中的一个数据data_0时,则停止查找,累加器获取目标数据 data_0的编码长度a1,再将目标数据组中所有数据左移a1位。
S107:在第二个时钟周期内,解码器提取左移a1位后的目标数据组的前 12bit数据。依次查找每个前12bit数据。若命中前12bit数据中的一个数据data_1 时,则停止查找。累加器获取数据data_1的编码长度a2,将左移a1位后的目标 数据组再次左移a2位。依次类推,在第一个时钟周期至第十六个时钟周期内, 获取编码长度a0至编码长度a15。
S108:在第二个时钟周期内,将a0写入第一存储器(ram_0)的[127:120] 位。在第三个时钟周期内,将a1写入ram_0的[119:112]位。依次类推,在第二 个时钟周期至第十七个时钟周期内,编码长度a0至a15均被依次写入第一存储 器。
S109:解码器在每个固定时钟周期交替读出第一存储器ram_0的高64位和 低64位数据完成解码。
与现有技术相比,本发明的技术效果为:
首先,设置八个解码器,即解码器Decoder_0至解码器Decoder_7,通过解 码器Decoder_i在第一次解码时均向后延迟i个时钟周期。这样再通过S106至 S109单个解码器的解码步骤,每个Decoder均在64个时钟周期解码出64个8bit 数据。实现全流水解码操作,也就是实现8路并行流水解码,达到了64bit/cycle 的解码效率。相比于串行解码,本发明可以大幅度减少数据解码所需时间。
其次,本发明使用霍夫曼解码,在稀疏数据的编码场景下,可以达到25倍 以上的压缩效率。在一些数据带宽受限的应用场景下,本发明有着非常好的应 用效果。
最后,本发明采用固定长度的数据作为Head,非常有利于并行设计。
附图说明
图1是本发明的整体架构示意图。
图2是本发明单个解码器的解码流程图。
图3是本发明实现并行解码全流水操作的时序说明示意图。
具体实施方式
下面结合附图对本发明的具体实施方式进行描述。
如图1至3所示,本发明一实施例为一种Huffman硬件解码方法,包括步 骤S100和S109,首先,本发明中准备解码的步骤为S100和S102。
S100:接受霍夫曼树的码流,其数据格式为冗余码和掩码的拼接格式。
解码器decoder_0至decoder_7接受霍夫曼树的码流,霍夫曼树的码流即为 为解码的码表,解码器能够根据霍夫曼树的码流对未解码的数据码流进行解码。
S101:接收未解码的数据码流,分割所述数据码流获取多个数据组;所述 数据组包括64个数据和固定比特长度的Head;
具体地,数据码流通过Huffman编码后将每64个数据分为一个数据组。每 一个数据未进行Huffman编码前为8bit定长数据,编码后为2bit至12bit的不定 长数据,形如{data0,data2,data3,..,data63}为一个数据组,即1个数据组内包括64 个已经过Huffman编码的二进制码流数据。
在每个数据组前添加一个固定比特长度为10的Head。数据组的长度包括 Head的比特长度。添加Head是为了将每个数据组分割开来。
也就是码字使用冗余码(12bit)及掩码(4bit)的方式写入霍夫曼共享树。举 例来说,若码字为11001,写入时应补零至12bit,其为110010000000。同时写入 其掩码,其掩码应为1001。
冗余码是一种所用符号数或信号码元数比表示信息所必需的数目多的代 码,应用了冗余加密技术,即利用了纠错码的编码原理,在加密的文件中加入 了大量的冗余信息,从而达到加密的目的。
掩码是一串二进制代码对目标字段进行位与运算,屏蔽当前的输入位,并用 二进制字符串表示有效位数的个数。
下述步骤S102为读取数据的过程。
S102:每个时钟周期内Huffman向定位器输入64bit定长的未解码的数据码 流。
定位器截取第一批64bit未解码的数据码流中高10位作为Head。则当前已 累计的Group长度为54bit。每到来一笔新的未解码的数据码流时,当前已累计 的Group长度自增至64bit。
判断当前已累计的Group长度是否大于或等于Head的值。若是,说明在此 笔未解码的数据码流中存在新的Head,则更新Head,并且重新计算当前已累计 Group的长度。若否,则等待新的未解码的数据码流。
S103:根据Head的值与当前已累计的Group长度,对当前的64bit未解码 的数据码流进行拆分并标记。
判断当前已累计的Group长度是否小于Head的值。若是,则不对当前的64bit 未解码的数据码流进行拆分,且标记为0。若否,则拆分当前64bit未解码的数 据码流获取第一部分和第二部分。第一部分隶属于当前Group且标记为0,第二 部分隶属于下一个Group且标记为1。
S104:将同一个标记的64bit未解码的数据码流拼接为一个目标数据组。
S104还包括:判断目标数据组是否低于768bit,若是,则目标数据组补零 至768bit。
S105:解码器Decoder_i在第一次解码时均向后延迟i个时钟周期。其中, i=0,1,2,3,4,5,6,7。
本发明设置八个解码器,即解码器Decoder_0至解码器Decoder_7,也就是 解码器Decoder_0在第一次解码时均向后延迟0个时钟周期,即解码器Decoder_0 无需延迟。
解码器Decoder_1在第一次解码时向后延迟1个时钟周期,解码器Decoder_2 在第一次解码时向后延迟2个时钟周期,以此类推,解码器Decoder_7在第一次 解码时向后延迟7个时钟周期。
将Decoder_i(i=0,1,2,3,4,5,6,7)在第一次解码时均向后延迟i个时钟周期,每个Decoder均在64个时钟周期解码出64个8bit数据。实现全流水解码操作, 也就是实现8路并行流水解码。
具体地,如图2所示,单个解码器的解码步骤为S106至S109。
S106:单个解码器接收到目标数据组后,单个解码器在对应的第一个时钟 周期提取目标数据组的前12bit数据。依次查找目标数据组中前12bit数据中每 个比特数据。
判断前12bit数据中的第i个数据是否命中,若是,则停止查找,累加器获 取目标数据data_0的编码长度a1,再将目标数据组中所有数据左移a1位。若否, 则i自增1,继续下一次是否命中的判断。
比如,解码器Decoder_0在第一个时钟周期内,先提取768bit数据的前12bit 数据,先依次查找1bit、2bit、3bit、....、11bit、12bit。若命中2bit时,不再继 续查找之后的3bit、....、11bit、12bit情况。命中一个数据data_0后,同时累加 器获得其编码长度a1,再将768bit数据左移a1位。
S107:在第二个时钟周期内,解码器提取左移a1位后的目标数据组的前 12bit数据。依次查找每个前12bit数据。若命中前12bit数据中的一个数据data_1 时,则停止查找。累加器获取数据data_1的编码长度a2,将左移a1位后的目标 数据组再次左移a2位。依次类推,在第一个时钟周期至第十六个时钟周期内, 获取编码长度a0至编码长度a15。
在第二个时钟周期内,以同样的方式命中data_1后,同时累加器获得data_1 的编码长度a2,768bit数据再次左移a2位。
在第一到第十六个时钟周期内,命中a0,a1,a2,...,a14,a15。
S108:在第二个时钟周期内,将a0写入第一存储器ram_0的[127:120]位。 在第三个时钟周期内,将a1写入第一存储器ram_0的[119:112]位。依次类推, 在第二个时钟周期至第十七个时钟周期内,编码长度a0至a15均被依次写入第 一存储器ram_0。
S109:解码器在每个固定时钟周期交替读出第一存储器ram_0的高64位和 低64位数据完成解码。
比如,在第十个时钟周期内,读出第一存储器ram_0的高64位。在第十八 个时钟周期内,读出第一存储器ram_0的低64位。
由以上步骤循环可以实现第一存储器ram_0的pingpong操作。
Ping-pong实质是一种数据缓冲的手段(是一种数据传输技术),能够同时利 用两个数据缓冲区达到数据连续传输的目的,从而提高数据传输速率。由于单 个缓冲区得到的数据在传输和处理中很容易被覆盖,而Ping-pong缓冲区的方式 能够总是保持一个缓冲区的数据被利用,另一个缓冲去用于存储数据。即两个 相同的对象作为缓冲区交替地被读和被写。
首先,本发明设置八个解码器,即解码器Decoder_0至解码器Decoder_7, 通过解码器Decoder_i在第一次解码时均向后延迟i个时钟周期。这样再通过 S106至S109单个解码器的解码步骤,每个Decoder均在64个时钟周期解码出 64个8bit数据。
实现全流水解码操作,也就是实现8路并行流水解码,达到了64bit/cycle 的解码效率。相比于串行解码,本发明可以大幅度减少数据解码所需时间。
其次,本发明使用霍夫曼解码,在稀疏数据的编码场景下,可以达到25倍 以上的压缩效率。在一些数据带宽受限的应用场景下,本发明有着非常好的应 用效果。
最后,本发明采用固定长度的数据作为Head,非常有利于并行设计。
图3是本发明实现并行解码全流水操作的时序说明示意图,图3中只示意 性地给出了解码器decoder_0和解码器decoder_1,数据输入是768bit的目标数 据组din_0、din_1和din_2,每一个解码器在每一个时钟周期,都会解码出一个 8bit的数据。
在解码器decoder_1解码出dout_0时,此时解码器decoder_0已经解码出了 dout_0至dout_8。
在下一拍,解码器decoder_0将dout_0至dout_7通过pingpongbuffer发送 出来,形成数据输出DO_00,DO_00即为64bit的数据输出。
表1示出了霍夫曼共享树的码流存储格式。
表1
Claims (3)
1.一种Huffman硬件解码方法,其特征在于,包括:
S100:接受霍夫曼共享树的码流,其数据格式为冗余码和掩码的拼接格式;
S101:接收未解码的数据码流,分割所述数据码流获取多个数据组;所述数据组包括64个数据和固定比特长度的Head;
S102:每个时钟周期内向定位器输入64bit定长的未解码的数据码流;所述定位器截取第一批64bit未解码的数据码流中高10位作为Head;则当前已累计的Group长度为54bit;每到来一笔新的未解码的数据码流时,当前已累计的Group长度自增64bit;
判断当前已累计的Group长度是否大于或等于Head的值;若是,则更新所述Head,重新计算当前已累计Group的长度;若否,则等待新的未解码的数据码流;
S103:根据Head的值与当前已累计的Group长度,对当前的64bit未解码的数据码流进行拆分并标记;
判断当前已累计的Group长度是否小于Head的值;若是,则不对当前的64bit未解码的数据码流进行拆分,且标记为0;若否,则拆分当前64bit未解码的数据码流获取第一部分和第二部分;所述第一部分隶属于当前Group且标记为0,所述第二部分隶属于下一个Group且标记为1;
S104:将同一个标记的64bit未解码的数据码流拼接为一个目标数据组;
S105:解码器Decoder_i在第一次解码时均向后延迟i个时钟周期;其中,i=0,1,2,3,4,5,6,7;
S106:单个解码器接收到目标数据组后,单个所述解码器在对应的第一个时钟周期提取所述目标数据组的前12bit数据;依次查找所述前12bit数据中每个数据;若命中前12bit数据中的一个数据data_0时,则停止查找,累加器获取所述目标数据data_0的编码长度a1,再将所述目标数据组中所有数据左移a1位;
S107:在第二个时钟周期内,解码器提取左移a1位后的目标数据组的前12bit数据;依次查找每个前12bit数据;若命中前12bit数据中的一个数据data_1时,则停止查找;累加器获取所述数据data_1的编码长度a2,将左移a1位后的目标数据组再次左移a2位;依次类推,在所述第一个时钟周期至第十六个时钟周期内,获取编码长度a0至编码长度a15;
S108:在第二个时钟周期内,将a0写入第一存储器ram_0的[127:120]位;在第三个时钟周期内,将a1写入第一存储器ram_0的[119:112]位;依次类推,在第二个时钟周期至第十七个时钟周期内,编码长度a0至a15均被依次写入第一存储器;
S109:所述解码器在每个固定时钟周期交替读出第一存储器ram_0的高64位和低64位数据完成解码。
2.根据权利要求1所述的Huffman硬件解码方法,其特征在于,所述S101中分割所述数据码流获取多个数据组,包括:
所述数据码流通过Huffman编码后将每64个数据分为一个数据组;
在每个所述数据组前添加一个10比特长度的Head;所述数据组的长度包括Head的比特长度。
3.根据权利要求1所述的Huffman硬件解码方法,其特征在于,所述S104中还包括:
判断所述目标数据组是否低于768bit,若是,则所述目标数据组补零至768bit。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011063334.5A CN113271107B (zh) | 2020-09-30 | 一种Huffman硬件解码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011063334.5A CN113271107B (zh) | 2020-09-30 | 一种Huffman硬件解码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113271107A true CN113271107A (zh) | 2021-08-17 |
CN113271107B CN113271107B (zh) | 2024-04-26 |
Family
ID=
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1613188A (zh) * | 2001-10-19 | 2005-05-04 | 诺基亚公司 | 霍夫曼编码 |
US20050232498A1 (en) * | 2001-03-19 | 2005-10-20 | Soundpix, Inc. | System and method of storing data in JPEG files |
CN102438150A (zh) * | 2011-09-29 | 2012-05-02 | 华中科技大学 | 一种抗信道误码的图像无损压缩检纠错编解码方法 |
CN106027066A (zh) * | 2015-03-28 | 2016-10-12 | 国际商业机器公司 | 用于解码的并行霍夫曼数据解码器、设计结构和方法 |
CN106341692A (zh) * | 2015-07-07 | 2017-01-18 | 杭州海康威视数字技术股份有限公司 | 图像数据的霍夫曼解码装置和方法 |
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050232498A1 (en) * | 2001-03-19 | 2005-10-20 | Soundpix, Inc. | System and method of storing data in JPEG files |
CN1613188A (zh) * | 2001-10-19 | 2005-05-04 | 诺基亚公司 | 霍夫曼编码 |
CN102438150A (zh) * | 2011-09-29 | 2012-05-02 | 华中科技大学 | 一种抗信道误码的图像无损压缩检纠错编解码方法 |
CN106027066A (zh) * | 2015-03-28 | 2016-10-12 | 国际商业机器公司 | 用于解码的并行霍夫曼数据解码器、设计结构和方法 |
CN106341692A (zh) * | 2015-07-07 | 2017-01-18 | 杭州海康威视数字技术股份有限公司 | 图像数据的霍夫曼解码装置和方法 |
Non-Patent Citations (1)
Title |
---|
周艳娥;葛海波;林界;: "Huffman并行解码算法的改进与实现", 微型机与应用, no. 11 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10033405B2 (en) | Data compression systems and method | |
CA2147816C (en) | Punctured convolutional encoder | |
KR100950607B1 (ko) | 허프만 코딩 | |
US5608396A (en) | Efficient Ziv-Lempel LZI data compression system using variable code fields | |
CN100517979C (zh) | 一种数据压缩及解压缩方法 | |
CN100525450C (zh) | 一种实现霍夫曼译码的方法和装置 | |
CN105306063A (zh) | 一种记录型数据存储空间的优化与恢复方法 | |
CN1426629A (zh) | 使用多个编码器的优化无损压缩的方法和装置 | |
CN113271107B (zh) | 一种Huffman硬件解码方法 | |
CN113271107A (zh) | 一种Huffman硬件解码方法 | |
KR101030726B1 (ko) | 확률적 테이블에 의해 생성된 심볼을 기반으로 호프만 테이블을 적용한 메모리 효율이 개선된 멀티미디어용 호프만 디코딩 방법 및 장치 | |
CN116471337A (zh) | 一种基于bwt和lzw的报文压缩与解压缩方法及设备 | |
CN110798224A (zh) | 一种压缩编码、检错及解码方法 | |
KR20050053996A (ko) | 허프만 코드를 효율적으로 복호화하는 방법 및 장치 | |
CN109257136A (zh) | 联合信源信道与安全的jpeg2000算术码的双向编译码方法 | |
CN1182657C (zh) | 用于降低乘积码译码所需存储量和复杂度的方法 | |
WO2020258188A1 (zh) | 解码方法、解码器和解码系统 | |
CN107896136B (zh) | 一种雷达航迹报文编码方法 | |
JPH05134847A (ja) | データ圧縮方法 | |
CN112865804B (zh) | 三值神经网络稀疏性权重的压缩计算单元 | |
Lee et al. | A generalized prediction method for modified memory-based high throughput VLC decoder design | |
Huang et al. | Lossless compression algorithm for multi-source sensor data research | |
Bassiouni et al. | Enhancing arithmetic and tree-based coding | |
CN110034847B (zh) | 级联编码方法及装置 | |
WO2020258189A1 (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 |