CN113572479B - 一种有限状态熵编码表的生成方法及*** - Google Patents
一种有限状态熵编码表的生成方法及*** Download PDFInfo
- Publication number
- CN113572479B CN113572479B CN202111107199.4A CN202111107199A CN113572479B CN 113572479 B CN113572479 B CN 113572479B CN 202111107199 A CN202111107199 A CN 202111107199A CN 113572479 B CN113572479 B CN 113572479B
- Authority
- CN
- China
- Prior art keywords
- value
- state
- character
- initial value
- entropy coding
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 230000004044 response Effects 0.000 claims description 27
- 230000001133 acceleration Effects 0.000 abstract description 6
- 238000007906 compression Methods 0.000 description 25
- 230000006835 compression Effects 0.000 description 25
- 238000010586 diagram Methods 0.000 description 20
- 238000004422 calculation algorithm Methods 0.000 description 19
- 238000012545 processing Methods 0.000 description 11
- 238000004590 computer program Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 238000013144 data compression Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明提供了一种有限状态熵编码表的生成方法及***,方法包括:得到待编码的数据块中的各字符的出现频率;基于预设最大状态值和各出现频率得到对应列的状态数量,进而形成有限状态熵编码表的空表;基于空表中每一空格的行数和对应字符出现频率得到各空格的初始值,进而得到初始表;遍历初始表,判断遍历到的第m行第n列的初始值是否大于第m‑1行第n列的初始值;若大于,将第m行第n列的初始值作为其暂时值,并判断其是否与排列在其之前的初始值重复;若未重复,将其暂时值作为其状态值;若遍历完成,得到所有状态值,并判断其中是否有最大状态值;若有,基于所有状态值生成有限状态熵编码表的状态表。本发明实现了有限状态熵编码的硬件加速。
Description
技术领域
本发明涉及数据压缩技术领域,尤其涉及一种有限状态熵编码表的生成方法及***。
背景技术
随着大数据时代的来临,在物联网、人工智能等特定应用领域,对海量数据处理的低时延性要求不断提高,无损数据压缩技术也越来越重要。无损数据压缩按压缩原理可分为基于数据统计的算法和基于字典的算法。其中,基于数据统计的算法包括香农-范诺编码、霍夫曼(Hufman)编码、算术编码、游程编码和有限状态熵编码(finite state entropy,FSE)等;基于字典的算法包括LZ77(Lempel-Ziv77)编码和LZ78(Lempel-Ziv 78)编码等。
为提高普适性,数据压缩方案中通常采用2种及以上的压缩算法进行混合压缩。快速无损压缩算法Zstd(Zstandard)就是一种由LZ77编码、Hufman编码和FSE组成的混合压缩算法。与其他压缩算法(如Deflate算法、Bzip2算法、Brotli算法)相比,Zstd具有更好的压缩性能。此外,Zstd属于开源算法,提供了22个压缩等级,用于权衡压缩速度与压缩率,在Linux内核、FreeBSD操作***和AWS Redshift数据仓库等领域得到了广泛应用。
基于软件实现方式的无损压缩技术具有较高的灵活性、普适性和低成本等优点,但软件执行方式只能顺序执行,导致中央处理器(CPU)在处理海量数据时资源长时间被占用,使得压缩速度大幅降低,难以满足特定应用领域对海量数据实时压缩处理的需求。采用硬件实现是解决上述问题的有效途径,受益于硬件固有并行处理特点,可以达到提高传输速度、资源使用率和安全性的目的。
对Zstd中3个主要组成部分:LZ77、FSE和Huffman进行统计分析,其压缩时间占比约为4:1:1,其中FSE占比虽然不大,但对Zstd的性能影响较大。由于采用了FSE,因此Zstd比其他混合压缩算法具有更好的压缩性能。此外,针对LZ77和Huffman编码的硬件加速方案较为成熟,但FSE作为一种新型的压缩算法,既具有类似算数编码的精度,还具有Huffman编码的压缩速度,而且对于符号的重新编码可以精确到小数位,计算中不需要使用乘法和除法更新状态。因此,研究FSE的硬件加速架构对实现Zstd算法整体加速具有重要意义,也是满足特定应用领域需求的有效方法。
发明内容
有鉴于此,本发明的目的在于提出一种有限状态熵编码表的生成方法及***,用以解决现有技术中缺乏有限状态熵编码的硬件加速方案的问题。
基于上述目的,本发明提供了一种有限状态熵编码表的生成方法,包括以下步骤:
基于待编码的数据块中的各字符在数据块中的数量占比得到各字符在数据块中的出现频率;
基于预设最大状态值和各字符的出现频率得到有限状态熵编码表中各字符对应列的状态数量,并基于各字符对应列的状态数量及各字符的出现频率形成有限状态熵编码表的空表;
基于空表中每一空格所在的行数和对应的字符的出现频率得到各空格的初始值,并基于各空格初始值的填充得到有限状态熵编码表的初始表;
遍历初始表,判断遍历到的第m行第n列的初始值是否大于第m-1行第n列的初始值;
响应于第m行第n列的初始值大于第m-1行第n列的初始值,将第m行第n列的初始值作为其暂时值,并判断第m行第n列的暂时值是否与排列在其之前的初始值重复;
响应于第m行第n列的暂时值与排列在其之前的初始值未重复,将第m行第n列的暂时值作为其状态值;
响应于遍历完成,得到有限状态熵编码表的所有状态值,并判断所有状态值中是否有最大状态值;
响应于有最大状态值,基于所有状态值生成有限状态熵编码表的状态表。
在一些实施例中,方法还包括:
响应于第m行第n列的初始值小于等于第m-1行第n列的初始值,将第m-1行第n列的初始值增加预设增量值后的数值作为第m行第n列的暂时值。
在一些实施例中,方法还包括:
响应于第m行第n列的暂时值与排列在其之前的初始值重复,将第m行第n列的暂时值增加预设增量值作为更新后的暂时值,直到更新后的暂时值与排列在其之前的初始值不重复,将更新后的暂时值作为第m行第n列的状态值。
在一些实施例中,方法还包括:
响应于没有最大状态值,将所有状态值中最大的数值替换为最大状态值,以生成有限状态熵编码表的状态表。
在一些实施例中,基于预设最大状态值和各字符的出现频率得到有限状态熵编码表中各字符对应列的状态数量包括:
将预设最大状态值与各字符的出现频率分别相乘,以分别得到有限状态熵编码表中各字符对应列的状态数量。
在一些实施例中,基于各字符对应列的状态数量及各字符的出现频率形成有限状态熵编码表的空表包括:
将各字符的状态数量分别作为有限状态熵编码表的对应列的空格的数量,并基于各字符的出现频率的大小对各列之间的顺序进行排列,以形成有限状态熵编码表的空表。
在一些实施例中,基于各字符的出现频率的大小对各列之间的顺序进行排列包括:
按照各字符出现频率的由大到小的顺序对对应列进行从左到右排列。
在一些实施例中,基于空表中每一空格所在的行数和对应的字符的出现频率得到各空格的初始值包括:
对空表中每一空格所在的行数与对应的字符的出现频率的比值进行向零取整,以得到各空格的初始值。
在一些实施例中,遍历初始表包括:
对初始表按照从左到右且从上到下的顺序进行遍历。
本发明的另一方面,还提供了一种有限状态熵编码表的生成***,包括:
出现频率获得模块,配置用于基于待编码的数据块中的各字符在数据块中的数量占比得到各字符在数据块中的出现频率;
空表获得模块,配置用于基于预设最大状态值和各字符的出现频率得到有限状态熵编码表中各字符对应列的状态数量,并基于各字符对应列的状态数量及各字符的出现频率形成有限状态熵编码表的空表;
初始表获得模块,配置用于基于空表中每一空格所在的行数和对应的字符的出现频率得到各空格的初始值,并基于各空格初始值的填充得到有限状态熵编码表的初始表;
第一判断模块,配置用于遍历初始表,判断遍历到的第m行第n列的初始值是否大于第m-1行第n列的初始值;
第二判断模块,配置用于响应于第m行第n列的初始值大于第m-1行第n列的初始值,将第m行第n列的初始值作为其暂时值,并判断第m行第n列的暂时值是否与排列在其之前的初始值重复;
状态值模块,配置用于响应于第m行第n列的暂时值与排列在其之前的初始值未重复,将第m行第n列的暂时值作为其状态值;
第三判断模块,配置用于响应于遍历完成,得到有限状态熵编码表的所有状态值,并判断所有状态值中是否有最大状态值;以及
状态表生成模块,配置用于响应于有最大状态值,基于所有状态值生成有限状态熵编码表的状态表。
本发明的又一方面,还提供了一种计算机可读存储介质,存储有计算机程序指令,该计算机程序指令被处理器执行时实现上述任意一项方法。
本发明的再一方面,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该计算机程序被处理器执行时执行上述任意一项方法。
本发明至少具有以下有益技术效果:
1. 本发明的有限状态熵编码表的生成方法,其数据的存储形式简单方便,只用使用一维数组的形式存储,无需使用类似霍夫曼树二叉树链表式存储,可以大大减少内存空间;
2. 本发明的有限状态熵编码表的生成方法在Zstd规范标准下适用于硬件实现的FSE压缩和解压,主要用到比较器和加法器,计算较简便,从而有效地减少硬件资源开销且提高硬件利用率;
3. 进一步提高了Zstd算法的压缩和解压的速度,满足了特定应用领域对压缩性能日益增长的需求。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为根据本发明实施例提供的有限状态熵编码表的生成方法的示意图;
图2为根据本发明实施例提供的待编码的数据块的示意图;
图3为根据本发明实施例提供的FSE Table初始表的示意图;
图4为根据本发明实施例提供的FSE Table计算遍历过程的示意图;
图5为根据本发明实施例提供的FSE Table迭代计算I的示意图;
图6为根据本发明实施例提供的FSE Table迭代计算II的示意图;
图7为根据本发明实施例提供的遍历完成的FSE Table的示意图;
图8为根据本发明实施例提供的FSE Table状态表的示意图;
图9为根据本发明实施例提供的有限状态熵编码表的生成***的示意图;
图10为根据本发明实施例提供的实现有限状态熵编码表的生成方法的计算机可读存储介质的示意图;
图11为根据本发明实施例提供的执行有限状态熵编码表的生成方法的计算机设备的硬件结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称的非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备固有的其他步骤或单元。
基于上述目的,本发明实施例的第一个方面,提出了一种有限状态熵编码表的生成方法的实施例。图1示出的是本发明提供的有限状态熵编码表的生成方法的实施例的示意图。如图1所示,本发明实施例包括如下步骤:
步骤S10、基于待编码的数据块中的各字符在数据块中的数量占比得到各字符在数据块中的出现频率;
步骤S20、基于预设最大状态值和各字符的出现频率得到有限状态熵编码表中各字符对应列的状态数量,并基于各字符对应列的状态数量及各字符的出现频率形成有限状态熵编码表的空表;
步骤S30、基于空表中每一空格所在的行数和对应的字符的出现频率得到各空格的初始值,并基于各空格初始值的填充得到有限状态熵编码表的初始表;
步骤S40、遍历初始表,判断遍历到的第m行第n列的初始值是否大于第m-1行第n列的初始值;
步骤S50、响应于第m行第n列的初始值大于第m-1行第n列的初始值,将第m行第n列的初始值作为其暂时值,并判断第m行第n列的暂时值是否与排列在其之前的初始值重复;
步骤S60、响应于第m行第n列的暂时值与排列在其之前的初始值未重复,将第m行第n列的暂时值作为其状态值;
步骤S70、响应于遍历完成,得到有限状态熵编码表的所有状态值,并判断所有状态值中是否有最大状态值;
步骤S80、响应于有最大状态值,基于所有状态值生成有限状态熵编码表的状态表。
本发明实施例中,m为大于等于2的整数,n为大于等于1的整数。
FSE属于非对称数字***(asymmetric numeral systems,ANS)中tANS(tableasymmetric numeral systems)的一种熵编码。现有研究主要针对tANS和ANS的重要组成部分uABS(uniform asymmetric binary systems),而鲜有对FSE硬件架构的研究。
本发明实施例的有限状态熵编码表的生成方法,其数据的存储形式简单方便,只用使用一维数组的形式存储,无需使用类似霍夫曼树二叉树链表式存储,可以大大减少内存空间;另外,本发明实施例的有限状态熵编码表的生成方法在Zstd(快速无损压缩算法)规范标准下适用于硬件实现的FSE(有限状态熵编码)压缩和解压,主要用到比较器和加法器,计算较简便,从而有效地减少硬件资源开销且提高硬件利用率;进一步提高了Zstd算法的压缩和解压的速度,满足了特定应用领域对压缩性能日益增长的需求。
本发明实施例的有限状态熵编码表的生成方法涉及到的所有的计算及存储方式不仅可以硬件化,也可以为软件计算提高效率,多种可实现形式使其应用更加灵活。如若通过硬件的方式实现,即可成为针对网络数据存储推出的一个硬件加速技术,能够加速基于有限熵编码数据的压缩,有效降低服务器CPU(中央处理器)的负载。其可专注数据压缩加速,助力数据中心的性能提升。
在一些实施例中,方法还包括:响应于第m行第n列的初始值小于等于第m-1行第n列的初始值,将第m-1行第n列的初始值增加预设增量值后的数值作为第m行第n列的暂时值。
在一优选实施例中,预设增量值为大于0的整数。
在一些实施例中,方法还包括:响应于第m行第n列的暂时值与排列在其之前的初始值重复,将第m行第n列的暂时值增加预设增量值作为更新后的暂时值,直到更新后的暂时值与排列在其之前的初始值不重复,将更新后的暂时值作为第m行第n列的状态值。
上述实施例中,对遍历到的每一个空格的数值都会进行同列上一行数值的比较以及排列在之前的重复数值的查询,然后基于比较结果进行相应的操作以满足相应的条件,并基于查询结果进行相应的操作以满足相应的条件,然后再遍历下一个空格。
在一些实施例中,方法还包括:响应于没有最大状态值,将所有状态值中最大的数值替换为最大状态值,以生成有限状态熵编码表的状态表。
在一些实施例中,基于预设最大状态值和各字符的出现频率得到有限状态熵编码表中各字符对应列的状态数量包括:将预设最大状态值与各字符的出现频率分别相乘,以分别得到有限状态熵编码表中各字符对应列的状态数量。
在一些实施例中,基于各字符对应列的状态数量及各字符的出现频率形成有限状态熵编码表的空表包括:将各字符的状态数量分别作为有限状态熵编码表的对应列的空格的数量,并基于各字符的出现频率的大小对各列之间的顺序进行排列,以形成有限状态熵编码表的空表。
在一些实施例中,基于各字符的出现频率的大小对各列之间的顺序进行排列包括:按照各字符出现频率的由大到小的顺序对对应列进行从左到右排列。
在一些实施例中,基于空表中每一空格所在的行数和对应的字符的出现频率得到各空格的初始值包括:对空表中每一空格所在的行数与对应的字符的出现频率的比值进行向零取整,以得到各空格的初始值。
在一些实施例中,遍历初始表包括:对初始表按照从左到右且从上到下的顺序进行遍历。
具体地,本发明一示例性实施例的有限状态熵编码表的生成方法如下:
第一步:对如图2所示的待编码的数据块Text中的Symbol(字符)出现的频率进行统计并排序,即可得到下表:
表1 待压缩编码数据字符频率统计表
字符 | a | b | c | d | e | f |
出现次数 | 5 | 9 | 12 | 13 | 16 | 45 |
出现频率 | 0.05 | 0.09 | 0.12 | 0.13 | 0.16 | 0.45 |
第二步:FSE(Finite State Entropy,有限状态熵编码)的编码、解码的过程需要利用核心表FSE Table,其生成方式的首要任务为初始计算有限状态熵编码表中每个symbol对应列的状态个数:
状态个数计算方法为最大状态数与每个symbol出现频率的乘积。这里取最大状态数为31(实际应用中状态数越大压缩效果越能接近极限压缩率)。
即Symbol x在FSE Table中状态个数为:
Numstat_x = (Sumstat·P(Sx)) round
那么Symbol a列的状态个数为:
Numstat_a = (Sumstat·P(Sa)) round = (31*0.05) round = (1.55) round=1
其他Symbol b、c、d、e和f列的状态表对应列的个数为:
Numstat_b = (Sumstat·P(Sb)) round = (31*0.09) round =2
Numstat_c = (Sumstat·P(Sc)) round = (31*0.12) round =3
Numstat_d = (Sumstat·P(Sd)) round = (31*0.13) round =4
Numstat_e = (Sumstat·P(Se)) round = (31*0.16) round =4
Numstat_f = (Sumstat·P(Sf)) round = (31*0.45) round =13
第三步:根据上步计算FSE Table所得的各个Symbol所在列的状态数,以及各个Symbol的出现频率的大小,可形成尺寸形状确定的空表。然后分别计算每一行空格里的数值,每一格的数值计算规则如下:
ValNum_row,x = (Num_row/P(Sf)) round
对于第一行,(1,f)位置上的元素 = 1/0.45 = 2.222…,向零取整为2;(1,e)位置上的值 = 1/0.16 = 6.25,向零取整为6,(1,d) = 1/0.13 = 7.692…,向零取整为7,……。第二行(2,f) = 2/0.45 = 4.4444,近似于4,……,这样就构建出了如图3所示的FSE Table初始表。
第四步:调整初始表中的元素的数值。熵编码的状态表需满足如下两个特性:(1)表中的每个值都是唯一的(即不存在重复);(2)每列都按照值从小到大排序。现基于遍历比较的方式对初始表进行调整,其遍历顺序为从左到右、从上到下,即如图4所示的FSE Table计算遍历过程示意图。
条件一判断及处理(假设预设增量值为1):
若∃ m,n 其中 m≥2
有am,n≤am-1,n
则am,n = am-1,n+1
条件二判断及处理(假设预设增量值为1):
此步骤应用在本示例性实施例中,如图5所示的FSE Table迭代计算I的示意图,当遍历到f列第三行的元素6,发现其比上一行的元素4大,即进行条件二的判断与处理。发现该f列第三行的元素6和e列第一行的元素6重复,将f列第三行的元素替换为7;之后,发现替换为7后与d列第一行的元素7重复,将 f列第三行的元素替换为8;之后,发现替换为8后与c列第一行的元素8重复,将 f列第三行的元素替换为9;发现替换为9后不再存在重复,则f列第三行的元素替换完毕。
如图6所示的FSE Table迭代计算II的示意图,在遍历到f列的第四行时,其值为8小于f列的第三行9,由于每一列必须呈递增的状态,则将第三行的值加1赋值给第四行,即第四行的值替换为9+1=10;替换为10后遍历之前的元素,未发生重合,则替换完毕。
用此方法遍历操作表格的所有元素即可得到如图7所示的遍历完成的FSE Table示意图,其中加粗的字体为经过调整的数值。
第五步:在FSE Table中安排最大状态值。此操作为将FSE Table中***本例子中的最大状态值31,这个最大数值必须存在于FSE Table表中。观察目前生成的FSE Table中没有出现31,有最大值30,此时将30替换为31,即得到了如图8所示的FSE Table状态表的示意图。
本发明实施例的第二个方面,还提供了一种有限状态熵编码表的生成***。图9示出的是本发明提供的有限状态熵编码表的生成***的实施例的示意图。如图9所示,一种有限状态熵编码表的生成***包括:出现频率获得模块10,配置用于基于待编码的数据块中的各字符在数据块中的数量占比得到各字符在数据块中的出现频率;空表获得模块20,配置用于基于预设最大状态值和各字符的出现频率得到有限状态熵编码表中各字符对应列的状态数量,并基于各字符对应列的状态数量及各字符的出现频率形成有限状态熵编码表的空表;初始表获得模块30,配置用于基于空表中每一空格所在的行数和对应的字符的出现频率得到各空格的初始值,并基于各空格初始值的填充得到有限状态熵编码表的初始表;第一判断模块40,配置用于遍历初始表,判断遍历到的第m行第n列的初始值是否大于第m-1行第n列的初始值;第二判断模块50,配置用于响应于第m行第n列的初始值大于第m-1行第n列的初始值,将第m行第n列的初始值作为其暂时值,并判断第m行第n列的暂时值是否与排列在其之前的初始值重复;状态值模块60,配置用于响应于第m行第n列的暂时值与排列在其之前的初始值未重复,将第m行第n列的暂时值作为其状态值;第三判断模块70,配置用于响应于遍历完成,得到有限状态熵编码表的所有状态值,并判断所有状态值中是否有最大状态值;以及状态表生成模块80,配置用于响应于有最大状态值,基于所有状态值生成有限状态熵编码表的状态表。
本发明实施例的第三个方面,还提供了一种计算机可读存储介质,图10示出了根据本发明实施例提供的实现有限状态熵编码表的生成方法的计算机可读存储介质的示意图。如图10所示,计算机可读存储介质3存储有计算机程序指令31。该计算机程序指令31被处理器执行时实现上述任意一项实施例的方法。
应当理解,在相互不冲突的情况下,以上针对根据本发明的有限状态熵编码表的生成方法阐述的所有实施方式、特征和优势同样地适用于根据本发明的有限状态熵编码表的生成***和存储介质。
本发明实施例的第四个方面,还提供了一种计算机设备,包括如图11所示的存储器402和处理器401,该存储器402中存储有计算机程序,该计算机程序被该处理器401执行时实现上述任意一项实施例的方法。
如图11所示,为本发明提供的执行有限状态熵编码表的生成方法的计算机设备的一个实施例的硬件结构示意图。以如图11所示的计算机设备为例,在该计算机设备中包括一个处理器401以及一个存储器402,并还可以包括:输入装置403和输出装置404。处理器401、存储器402、输入装置403和输出装置404可以通过总线或者其他方式连接,图11中以通过总线连接为例。输入装置403可接收输入的数字或字符信息,以及产生与有限状态熵编码表的生成***的用户设置以及功能控制有关的键信号输入。输出装置404可包括显示屏等显示设备。
存储器402作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的有限状态熵编码表的生成方法对应的程序指令/模块。存储器402可以包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需要的应用程序;存储数据区可存储有限状态熵编码表的生成方法的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器402可选包括相对于处理器401远程设置的存储器,这些远程存储器可以通过网络连接至本地模块。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
处理器401通过运行存储在存储器402中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例的有限状态熵编码表的生成方法。
最后需要说明的是,本文的计算机可读存储介质(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。作为例子而非限制性的,非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦写可编程ROM(EEPROM)或快闪存储器。易失性存储器可以包括随机存取存储器(RAM),该RAM可以充当外部高速缓存存储器。作为例子而非限制性的,RAM 可以以多种形式获得,比如同步RAM(DRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据速率SDRAM(DDRSDRAM)、增强SDRAM(ESDRAM)、同步链路DRAM(SLDRAM)、以及直接Rambus RAM(DRRAM)。所公开的方面的存储设备意在包括但不限于这些和其它合适类型的存储器。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个***的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
Claims (6)
1.一种有限状态熵编码表的生成方法,其特征在于,包括以下步骤:
基于待编码的数据块中的各字符在所述数据块中的数量占比得到各字符在所述数据块中的出现频率;
基于预设最大状态值和各字符的出现频率得到有限状态熵编码表中各字符对应列的状态数量,并基于各字符对应列的状态数量及各字符的出现频率形成所述有限状态熵编码表的空表,其进一步包括:
将预设最大状态值与各字符的出现频率分别相乘,以分别得到有限状态熵编码表中各字符对应列的状态数量;以及
将各字符的状态数量分别作为所述有限状态熵编码表的对应列的空格的数量,并基于各字符的出现频率的大小对各列之间的顺序进行排列,以形成所述有限状态熵编码表的空表,其中,基于各字符的出现频率的大小对各列之间的顺序进行排列包括:按照各字符出现频率的由大到小的顺序对对应列进行从左到右排列;
基于所述空表中每一空格所在的行数和对应的字符的出现频率得到各空格的初始值,其包括:对所述空表中每一空格所在的行数与对应的字符的出现频率的比值进行向零取整,以得到各空格的初始值,并基于各空格初始值的填充得到所述有限状态熵编码表的初始表;
遍历所述初始表,判断遍历到的第m行第n列的初始值是否大于第m-1行第n列的初始值,其中,m为大于等于2的整数,n为大于等于1的整数;
响应于所述第m行第n列的初始值大于第m-1行第n列的初始值,将所述第m行第n列的初始值作为其暂时值,并判断所述第m行第n列的暂时值是否与排列在其之前的初始值重复;
响应于所述第m行第n列的暂时值与排列在其之前的初始值未重复,将所述第m行第n列的暂时值作为其状态值;
响应于遍历完成,得到所述有限状态熵编码表的所有状态值,并判断所述所有状态值中是否有所述最大状态值;
响应于有所述最大状态值,基于所述所有状态值生成所述有限状态熵编码表的状态表。
2.根据权利要求1所述的方法,其特征在于,还包括:
响应于所述第m行第n列的初始值小于等于第m-1行第n列的初始值,将所述第m-1行第n列的初始值增加预设增量值后的数值作为所述第m行第n列的暂时值。
3.根据权利要求2所述的方法,其特征在于,还包括:
响应于所述第m行第n列的暂时值与排列在其之前的初始值重复,将所述第m行第n列的暂时值增加所述预设增量值作为更新后的暂时值,直到更新后的暂时值与排列在其之前的初始值不重复,将所述更新后的暂时值作为所述第m行第n列的状态值。
4.根据权利要求1所述的方法,其特征在于,还包括:
响应于没有所述最大状态值,将所述所有状态值中最大的数值替换为所述最大状态值,以生成所述有限状态熵编码表的状态表。
5.根据权利要求1所述的方法,其特征在于,遍历所述初始表包括:
对所述初始表按照从左到右且从上到下的顺序进行遍历。
6.一种有限状态熵编码表的生成***,其特征在于,包括:
出现频率获得模块,配置用于基于待编码的数据块中的各字符在所述数据块中的数量占比得到各字符在所述数据块中的出现频率;
空表获得模块,配置用于基于预设最大状态值和各字符的出现频率得到有限状态熵编码表中各字符对应列的状态数量,并基于各字符对应列的状态数量及各字符的出现频率形成所述有限状态熵编码表的空表,其进一步包括:
将预设最大状态值与各字符的出现频率分别相乘,以分别得到有限状态熵编码表中各字符对应列的状态数量;以及
将各字符的状态数量分别作为所述有限状态熵编码表的对应列的空格的数量,并基于各字符的出现频率的大小对各列之间的顺序进行排列,以形成所述有限状态熵编码表的空表,其中,基于各字符的出现频率的大小对各列之间的顺序进行排列包括:按照各字符出现频率的由大到小的顺序对对应列进行从左到右排列;
初始表获得模块,配置用于基于所述空表中每一空格所在的行数和对应的字符的出现频率得到各空格的初始值,其包括:对所述空表中每一空格所在的行数与对应的字符的出现频率的比值进行向零取整,以得到各空格的初始值,并基于各空格初始值的填充得到所述有限状态熵编码表的初始表;
第一判断模块,配置用于遍历所述初始表,判断遍历到的第m行第n列的初始值是否大于第m-1行第n列的初始值,其中,m为大于等于2的整数,n为大于等于1的整数;
第二判断模块,配置用于响应于所述第m行第n列的初始值大于第m-1行第n列的初始值,将所述第m行第n列的初始值作为其暂时值,并判断所述第m行第n列的暂时值是否与排列在其之前的初始值重复;
状态值模块,配置用于响应于所述第m行第n列的暂时值与排列在其之前的初始值未重复,将所述第m行第n列的暂时值作为其状态值;
第三判断模块,配置用于响应于遍历完成,得到所述有限状态熵编码表的所有状态值,并判断所述所有状态值中是否有所述最大状态值;以及
状态表生成模块,配置用于响应于有所述最大状态值,基于所述所有状态值生成所述有限状态熵编码表的状态表。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111107199.4A CN113572479B (zh) | 2021-09-22 | 2021-09-22 | 一种有限状态熵编码表的生成方法及*** |
PCT/CN2022/074614 WO2023045204A1 (zh) | 2021-09-22 | 2022-01-28 | 一种有限状态熵编码表的生成方法、***、介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111107199.4A CN113572479B (zh) | 2021-09-22 | 2021-09-22 | 一种有限状态熵编码表的生成方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113572479A CN113572479A (zh) | 2021-10-29 |
CN113572479B true CN113572479B (zh) | 2021-12-21 |
Family
ID=78173917
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111107199.4A Active CN113572479B (zh) | 2021-09-22 | 2021-09-22 | 一种有限状态熵编码表的生成方法及*** |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113572479B (zh) |
WO (1) | WO2023045204A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113572479B (zh) * | 2021-09-22 | 2021-12-21 | 苏州浪潮智能科技有限公司 | 一种有限状态熵编码表的生成方法及*** |
CN114513210B (zh) * | 2022-04-20 | 2022-08-02 | 苏州浪潮智能科技有限公司 | 有限状态熵编码的状态选择方法、***、存储介质及设备 |
CN115441878A (zh) * | 2022-08-05 | 2022-12-06 | 海飞科(南京)信息技术有限公司 | 针对文本压缩的fse码表快速建立方法 |
WO2024105793A1 (ja) * | 2022-11-15 | 2024-05-23 | 株式会社メガチップス | メモリシステム、復号回路、及び符号化データ生成方法 |
CN117155405A (zh) * | 2023-08-09 | 2023-12-01 | 海飞科(南京)信息技术有限公司 | 一种基于梯度下降的tANS编码、解码转换表快速建立方法 |
CN116933734B (zh) * | 2023-09-15 | 2023-12-19 | 山东济矿鲁能煤电股份有限公司阳城煤矿 | 盾构机刀具故障智能诊断方法 |
CN117171399B (zh) * | 2023-11-02 | 2024-02-20 | 云图数据科技(郑州)有限公司 | 基于云平台的新能源数据优化存储方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107565971A (zh) * | 2017-09-07 | 2018-01-09 | 华为技术有限公司 | 一种数据压缩方法及装置 |
CN110602498A (zh) * | 2019-09-20 | 2019-12-20 | 唐驰鹏 | 一种自适应有限状态熵编码的方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101725223B1 (ko) * | 2011-03-25 | 2017-04-11 | 삼성전자 주식회사 | 저장 장치에서의 데이터 압축 방법 |
US11483009B2 (en) * | 2019-05-08 | 2022-10-25 | Intel Corporation | Self-checking compression |
US11973519B2 (en) * | 2020-06-23 | 2024-04-30 | Intel Corporation | Normalized probability determination for character encoding |
CN111787325B (zh) * | 2020-07-03 | 2022-03-08 | 北京博雅慧视智能技术研究院有限公司 | 一种熵编码器及其编码方法 |
CN112953550B (zh) * | 2021-03-23 | 2023-01-31 | 上海复佳信息科技有限公司 | 数据压缩的方法、电子设备及存储介质 |
CN113572479B (zh) * | 2021-09-22 | 2021-12-21 | 苏州浪潮智能科技有限公司 | 一种有限状态熵编码表的生成方法及*** |
-
2021
- 2021-09-22 CN CN202111107199.4A patent/CN113572479B/zh active Active
-
2022
- 2022-01-28 WO PCT/CN2022/074614 patent/WO2023045204A1/zh unknown
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107565971A (zh) * | 2017-09-07 | 2018-01-09 | 华为技术有限公司 | 一种数据压缩方法及装置 |
CN110602498A (zh) * | 2019-09-20 | 2019-12-20 | 唐驰鹏 | 一种自适应有限状态熵编码的方法 |
Non-Patent Citations (1)
Title |
---|
有限状态熵编码的硬件加速设计与实现;邢琳;《中国优秀硕士学位论文全文数据库信息科技辑》;20210215(第2期);第23-27页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113572479A (zh) | 2021-10-29 |
WO2023045204A1 (zh) | 2023-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113572479B (zh) | 一种有限状态熵编码表的生成方法及*** | |
CN105893337B (zh) | 用于文本压缩和解压缩的方法和设备 | |
US9223765B1 (en) | Encoding and decoding data using context model grouping | |
US7688233B2 (en) | Compression for deflate algorithm | |
US9240237B2 (en) | Semiconductor device and method of writing/reading entry address into/from semiconductor device | |
CN108628898B (zh) | 数据入库的方法、装置和设备 | |
CN102694554A (zh) | 数据压缩设备、其操作方法以及包括该设备的数据处理装置 | |
CN111008230B (zh) | 数据存储方法、装置、计算机设备及存储介质 | |
CN106202213B (zh) | 一种fpga二进制文件压缩、解压方法及压缩、解压装置 | |
CN113300715B (zh) | 一种数据处理方法、装置、硬件压缩设备以及介质 | |
Ledwon et al. | High-throughput FPGA-based hardware accelerators for deflate compression and decompression using high-level synthesis | |
US20190379393A1 (en) | Dynamic dictionary-based data symbol encoding | |
CN113630125A (zh) | 数据压缩、编码解压缩方法、装置、电子设备及存储介质 | |
CN110825323A (zh) | 浮点数数据的存储、读取方法和计算机可读存储介质 | |
Choi et al. | Design of FPGA-based LZ77 compressor with runtime configurable compression ratio and throughput | |
US20230318621A1 (en) | Compression And Decompression In Hardware For Data Processing | |
Shcherbakov et al. | A parallel adaptive range coding compressor: algorithm, FPGA prototype, evaluation | |
CN117155405A (zh) | 一种基于梯度下降的tANS编码、解码转换表快速建立方法 | |
CN107623524B (zh) | 一种基于硬件的Huffman编码方法及*** | |
Wang et al. | A simplified variant of tabled asymmetric numeral systems with a smaller look-up table | |
CN107729577B (zh) | 一种基于多维哈希表的数据查找方法、终端设备及存储介质 | |
CN113381769B (zh) | 一种基于fpga的译码器 | |
CN115526131A (zh) | 多级编码近似计算Tanh函数的方法及装置 | |
CN115115044A (zh) | 基于通道融合的可配置稀疏卷积硬件加速方法和*** | |
CN113824449A (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 |