硬件友好的数据解压缩制造技术

技术编号:29842498 阅读:11 留言:0更新日期:2021-08-27 14:33
提供了用于解压缩压缩数据的系统、装置和方法。一种方法可以包括:接收要解压缩的编码数据,获得所述编码数据中符号总数的大小"S

【技术实现步骤摘要】
硬件友好的数据解压缩
本公开涉及数据压缩,尤其涉及使用熵编码的无损压缩。
技术介绍
数据压缩已广泛用于数字信号系统,例如通信和计算机系统。在信息论中,克劳德·香农(ClaudeShannon)的信源编码定理(sourcecodingtheorem,或称为无噪声编码定理)确定了可能的数据压缩以及香农熵的运算含义的极限。根据香农的信源编码定理,符号的最佳代码长度为-logbP,其中b是用于制作输出代码的符号数,P是输入符号的概率。霍夫曼(Huffman)编码和算术(Arithmetic)编码是最常见的两种熵编码技术。自2014年以来,数据压缩器已开始使用熵编码技术的非对称数字系统(ANS)系列,该技术可结合算术编码的压缩率和类似于霍夫曼编码的运算成本。但是,这些现有的ANS实现是为通用计算系统开发的,该系统通常使用通用中央处理单元(CPU)来执行数据压缩或解压缩操作。因此,需要一种对硬件更友好的压缩技术,例如适用于现场可编程门阵列(FPGA)或专用集成电路(ASIC)的压缩技术。
技术实现思路
本公开提供了用于使用熵编码的无损压缩的系统和方法。在示例性实施例中,提供了一种方法,该方法可以包括:接收要解压缩的编码数据;获得所述编码数据中符号总数的大小"Stotal”,所述编码数据中不同符号的出现次数以及在编码过程中生成的最终状态作为解码的第一个状态;建立解码表,所述解码表包含对应于L个编码状态的不同符号行、对应于所述L个编码状态的要恢复位数的替代行和对应于所述L个编码状态的新状态的替代行;使用所述解码表对所述编码数据进行解码,包括:基于当前状态X从所述解码表中获取当前符号,根据对所述当前状态X的解码表中要恢复的位数的对应替代和对新状态的对应替代动态地确定要从所述编码数据中恢复的当前位数和新状态X;和输出从所述编码数据中恢复的符号。在另一个示例性实施例中,提供了一种解压缩器,其可以包括:解包器,被配置为接收要解压缩的编码数据并获得所述编码数据中符号总数的大小"Stotal”,所述编码数据中不同符号的出现次数以及在编码过程中生成的最终状态作为解码的第一个状态;解码表构建器,被配置为建立解码表,所述解码表包含对应于L个编码状态的不同符号行、对应于所述L个编码状态的要恢复位数的替代行和对应于所述L个编码状态的新状态的替代行;解码表存储器,用于存储所述解码表;和解码器引擎,被配置为使用所述解码表对所述编码数据进行解码,包括:基于当前状态X从所述解码表中获取当前符号,根据对所述当前状态X的解码表中要恢复的位数的对应替代和对新状态的对应替代动态地确定要从所述编码数据中恢复的当前位数和新状态X,并且输出从所述编码数据恢复的输出符号。附图简要说明图1示意性地示出了根据本公开一实施例的压缩过程。图2A示意性地示出了根据本公开一实施例的出现次数表。图2B示意性地示出了根据本公开一实施例的累计出现表。图2C示意性地示出了根据本公开一实施例的状态间隔和符号状态间隔。图3示意性地示出了根据本公开一实施例的压缩器。图4示意性地示出了根据本公开一实施例的解压缩过程。图5A示意性地示出了根据本公开一实施例的解码表。图5B示意性地示出了根据本公开另一实施例的解码表。图6示出了根据本公开一实施例的解压缩器。具体实施方式现在将参考附图详细描述根据本申请的具体实施例。为了一致性,各个图中的相同元件由相同的附图标记表示。图1示意性地示出了根据本公开一实施例的压缩过程100。在框102中,可以接收输入数据的块。在一个实施例中,存储系统控制器(例如,SSD控制器)可以接收要存储在存储系统中的数据流。在另一个实施例中,信号发送器可以接收要发送的数据流。可以使用熵编码来压缩数据流,以减少用于存储的空间或用于传输的带宽。因此,压缩过程100也可以称为编码过程。在一些实施例中,数据流可以被分成数据块,并且每个数据块可以被分别编码。块的示例性大小可以是1KB、2KB、4KB等。例如,压缩器的一个实施例可以被配置为对大小为4KB的块进行编码,并且具有大于4KB的大小的文件可以被划分为几个4KB块,并且其他剩余划分在小于4KB的剩余块中。并且数据块可以被分别编码。在框104中,可以建立用于编码的表。在各种实施例中,输入数据块中的数据可以以不同的数据单元(例如,4位、8位、16位等)表示或组织。在一些实施例中,数据单元可以是2的幂数位,但在某些其他实施例中可能不是2的幂数位。例如,在一个实施例中,输入数据块中的数据可以由7位的美国信息交换标准码(ASCII)码表示。一个数据单元可以被称为一个符号,因此输入数据块可以包括许多符号。输入数据块中所有符号的总数可以表示为Stotal,可以是1024、2048或4096或一个个位数、两位数、百位数,千位数或更大的另一个数字。对于不同的输入流,Stotal可能会有所不同。有时,Stotal可以是固定的特定数字,例如2的幂。在另一些时候,Stotal可能不是固定的特定数字,也不一定是2的幂。通常,数据块可以由一组不同的符号形成,每个符号出现一次或多次。在一些实施例中,可以针对输入数据块计算符号的概率分布,并且可以构建两个表来表示符号的概率分布,出现次数表和累计出现表。在一个实施例中,可以扫描输入数据以建立一组不同符号,并且还可以计算不同符号的数量以及每个不同符号在输入数据块中出现多少次。在各种实施例中,符号可以具有预定义的大小,例如,1个字节、2个字节、4个字节等。该大小可以不是2的幂。如本文中所使用的,不同符号的集也可以被称为字母表(A),每个符号也可以被称为元素并且使用小写字母“s”来表示。小写字母“n”可用于表示字母表中不同符号(或元素)的数量,其中n是大于1的整数。应当注意,在一些实施例中,不同符号的集可以是预定义的,例如,预先编程的或由规范给出的。在这样的实施例中,可以扫描输入数据以仅计算不同符号的数量以及每个不同符号在输入数据块中出现多少次。元素"s"的出现次数可以使用斜体小写字母"l”和下标s表示为"ls",并且块中所有符号的总出现次数可以表示为L一个元素出现的概率可以通过将该元素出现的次数除以该块中所有符号的总出现次数来计算。也就是说,符号块中元素"s"的概率为ls/L。表示元素的实际出现次数的元素的出现次数可以称为"ls-actual”,并且可以例如通过对元素在输入数据块中出现的次数进行计数来获得。通过将所有不同符号的实际出现次数相加而获得的块中所有符号的总出现次数,可以称为所有符号的实际总出现次数或"Lactual”。符号块中的元素"s"的概率ls-actual/Lactual可以称为实际概率。应当注意的是,数字Lactual等于Stotal。在各种实施例中,实际符号概率分布可以被处理为减量所有符号的总出现次数。该过程可以被称为L简化(reduction)过程。例如,在获得(例如,通过计数)元素的出现次数"ls-actual”之后,可以通过将"ls-actual”除以预定数D本文档来自技高网...

【技术保护点】
1.一种方法,其特征在于,包括:/n接收要解压缩的编码数据;/n获得所述编码数据中符号总数的大小"S

【技术特征摘要】
20200824 US 17/000,6391.一种方法,其特征在于,包括:
接收要解压缩的编码数据;
获得所述编码数据中符号总数的大小"Stotal”,所述编码数据中不同符号的出现次数以及在编码过程中生成的最终状态作为解码的第一个状态;
构建解码表,所述解码表包含对应于L个编码状态的不同符号行、对应于所述L个编码状态的要恢复位数的替代行和对应于所述L个编码状态的新状态的替代行,其中,L等于所述不同符号的出现次数之和;
使用所述解码表对所述编码数据进行解码,包括:
基于当前状态X从所述解码表中获取当前符号;
根据对所述当前状态X的解码表中要恢复的位数的对应替代和对新状态的对应替代,动态地确定要从所述编码数据中恢复的当前位数和新状态X;和
输出从所述编码数据中恢复的符号。


2.根据权利要求1所述的方法,其特征在于,所述L个编码状态是M至M+L-1范围的L个不同值,其中,M是该范围的基值并且是等于或大于零的整数。


3.根据权利要求2所述的方法,其特征在于,L不是2的幂,并且M是零,构建所述解码表包括:
将初始值X设置为零,R设置为ceiling(lg(L)),其中ceiling()是向上取整函数,lg()是二进制对数函数;
在具有对应于一组不同符号中的每个元素的位置的循环索引的外循环中:
将Ls的初始值设置为当前符号的出现次数;
在内循环中遍历所述当前符号的所有出现次数:
将所述不同符号行的当前条目设置为所述当前符号;
对于从0到R的索引“j”:
以(Ls<<j)+(2^j-1)的形式获得临时Ls_tmp,直到Ls_tmp落入间隔{L,…,2L-1),其中<<是左移位运算符,^是幂运算符,和
将要恢复的位数的当前对应替代设置为“j”;
从以“j”为索引的循环中中断出来;
将新状态的当前对应替代设置为Ls;
将X增加1;
将Ls增加1;
结束所述内循环;和
结束所述外循环。


4.根据权利要求3所述的方法,其特征在于,通过Ls向左移位“j”位并将“j”位1插入最低有效位(LSB)来执行(Ls<<j)+(2^j-1)的运算。


5.根据权利要求2所述的方法,其特征在于,L不是2的幂且M是零,并且根据对所述当前状态X的解码表中要恢复的位数的对应替代和对新状态的对应替代,动态地确定要从所述编码数据中恢复的当前位数和新状态X包括,将所述要恢复位数的对应替代命名为n_Bits,将所述新状态的对应替代命名为New_state;
从所述编码数据中提取n_Bits位和n_Bits+1位,分别追加到new_state和从new_state中减去L;和
将从所述编码数据恢复的当前位数确定为n_Bits位或n_Bits+1位,通过他们中的一个使其它们各自附加的new_state落入L个不同值的范围内。


6.根据权利要求5所述的方法,其特征在于,获得要从所述编码数据中恢复的当前位数和新状态X的操作包括:
将X1设置为[(new_state)<<n_Bits]-L+(所述编码数据的n_Bits);
将X1设置为[(new_state)<<n_Bits+1]-L+(所述编码数据的n_Bits+1);
确定X1和X2中的哪一个落在{0,…,L-1}的范围内;
如果X1落在{0,…,L-1}的范围内,则将要从所述编码数据中恢复的所述当前位数设置为n_Bits,并将所述新状态X设置为X1;和
如果X2落入{0,…,L-1}的范围内,则将要从所述编码数据中恢复的所述当前位数设置为n_Bits+1,并将所述新状态X设置为X2。


7.根据权利要求1所述的方法,其特征在于,还包括:从与所述编码数据相关联的元数据获得位顺序和级联顺序,所述位顺序指定生成所述编码数据时的位顺序,并且所述级联顺序指定生成所述编码数据时将连续符号生成的位集连接在一起的顺序。


8.根据权利要求1所述的方法,其特征在于,还包括:从与所述编码数据相关联的元数据获得所述L的数值。


9.根据权利要求1所述的方法,其特征在于,还包括:在从所述编码数据中解码最后一个符号之后,跳过动态地确定要从所述编码数据中恢复的所述当前位数和所述新状态X。


10.根据权利要求1所述的方法,其特征在于,所述不同符号的出现次数是减量的出现次数,而不是实际出现的次数。


11.一种解压缩器,其特征在于,包括:
解包器,被配置...

【专利技术属性】
技术研发人员:不公告发明人
申请(专利权)人:英韧科技南京有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1