一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种多字符的有限熵编码方法、装置、设备及可读介质与流程

2022-02-22 22:28:04 来源:中国专利 TAG:
本发明涉及编码
技术领域
:,尤其涉及一种多字符的有限熵编码方法、装置、设备及可读介质。
背景技术
:随着大数据时代的来临,在物联网、人工智能等特定应用领域,对海量数据处理的低时延性要求不断提高,无损数据压缩技术也越来越重要。无损数据压缩按照压缩原理可分为基于数据统计的算法和基于字典的算法。其中,基于数据统计的算法包括香农-范诺编码(Shannon-Fanocoding)、霍夫曼编码(HuffmanCoding)、算术编码(arithmeticcoding,AC)、游程编码(runlengthcode,RLE)和有限状态熵编码(finitestateentropy,FSE)等;基于字典的算法包括LZ77编码(Lempel-Ziv77)和LZ78编码(Lempel-Ziv78)等。为了提高普适性,数据压缩方案中通常采用两种及以上的压缩算法进行混合压缩。Zstandard(zstd)是Facebook开源的一种快速无损压缩算法,是由LZ77编码、霍夫曼编码和有限状态熵编码组成的混合压缩算法。与其他压缩算法相比,zstd具有更好的压缩性能,此外,zstd提供了22个压缩等级用于权衡压缩速度与压缩率,在Linux内核、FreeBSD操作系统和AWSRedshift数据仓库等应用领域得到了广泛的应用。基于软件实现方式的无损压缩技术具有较高的灵活性、普适性和低成本等优点,但软件执行方式只能顺序执行,导致中央处理器(centralprocessingunit,CPU)在处理海量数据时资源长时间被占用,使得压缩速度大幅降低,难以满足特定应用领域对海量数据实时压缩处理的需求。采用硬件实现实解决上述问题的有效途径,受益于硬件固有并行处理的特点,可以达到提高传输速度、资源使用率和安全性的目的。对zstd算法中三个组成部分LZ77编码、霍夫曼编码和有限状态熵编码进行统计分析,压缩时间占比约为4:1:1。其中有限状态熵编码占比虽然不大,但对zstd的性能影响较大,由于采用了有限状态熵编码,zstd比其他混合压缩算法具有更好的压缩性能。此外,针对LZ77编码和霍夫曼编码的硬件加速方案较为成熟,而有限状态熵编码作为一种新型的压缩算法,既具有类似算数编码的精度,还具有霍夫曼编码的压缩速度,而且对于字符的重新编码可以精确到小数位,计算中不需要使用乘法和除法更新状态。因此,有限状态熵编码的硬件加速架构对实现zstd算法整体加速具有重要意义,也是满足特定应用领域需求的有效方法。技术实现要素:有鉴于此,本发明实施例的目的在于提出一种多字符的有限熵编码方法、装置、设备及可读介质,为满足特定应用领域对压缩性能日益增长的需求,针对Zstd中的FSE展开研究,采用软硬件协同实现的方式,全面提高Zstd算法的压缩和解压的速度。按照Zstd规范标准,提出了适于硬件实现的FSE压缩和解压架构设计方案,从而有效地减少硬件开销和提高硬件利用率,对Zstd硬件加速设计与实现的解决方案具有理论研究的前瞻性、可行性,以及现实的应用价值。基于上述目的,本发明实施例的一方面提供了一种多字符的有限熵编码方法,包括以下步骤:对待压缩编码的数据块中所有字符的出现频率进行统计,并根据从大到小进行排序;基于所述出现频率分别计算所述所有字符的归一化状态数,并对预设范围内的归一状态数设置预设标记;基于所述所有字符的归一化状态数和排序结果创建有限状态熵码表,所述有限状态熵码表每一行的列数设置为所述每一行对应字符的归一化状态数的绝对值;将设置有所述预设标记的字符在所述有限状态熵码表对应的位置倒序填写状态数,并通过质数扩展计算其他字符在所述有限状态熵码表对应的位置的状态数;以及基于所述有限状态熵码表进行有限熵编码。在一些实施方式中,基于所述出现频率分别计算所述所有字符的归一化状态数包括:基于所述所有字符的个数计算总状态个数,将每个字符出现频率与所述所有字符出现频率的比值分别与所述总状态个数相乘,以得到所述每个字符对应的归一化状态数。在一些实施方式中,基于所述所有字符的个数计算总状态个数包括:通过如下公式计算总状态个数:其中,Nstate为总状态个数,Nsymbol为所述所有字符的个数。在一些实施方式中,对预设范围内的归一状态数设置预设标记包括:将归一化状态数小于1的数值标记为-1。在一些实施方式中,将设置有所述预设标记的字符在所述有限状态熵码表对应的位置倒序填写状态数包括:基于所述所有字符的个数计算总状态个数,并基于所述总状态个数将设置有所述预设标记的字符在所述有限状态熵码表对应的位置倒序填写状态数。在一些实施方式中,通过质数扩展计算其他字符在所述有限状态熵码表对应的位置的状态数包括:基于所述所有字符的个数计算总状态个数,并基于所述总状态个数通过如下公式计算扩散间隔:其中,step为扩散间隔,ts为所述总状态个数,n为预设质数;基于所述扩散间隔对状态序列进行扩散,以得到每个数值都小于所述总状态个数的第一序列;将所述第一序列中已经倒序填写的状态数删除,以生成第二序列;基于所述有限状态熵码表每行的列数从所述第二序列中取出状态数并填入对应的位置。在一些实施方式中,基于所述有限状态熵码表每行的列数从所述第二序列中取出状态数并填入对应的位置包括:根据行数从小到大的顺序从所述第二序列中取出状态数,并将取出的状态数从所述第二序列中删除;基于每一行的列数决定取出状态数的个数,并将取出的状态数从小到大排序,依次填入每一行的位置。本发明实施例的另一方面,还提供了一种多字符的有限熵编码装置,包括:第一模块,配置用于对待压缩编码的数据块中所有字符的出现频率进行统计,并根据从大到小进行排序;第二模块,配置用于基于所述出现频率分别计算所述所有字符的归一化状态数,并对预设范围内的归一状态数设置预设标记;第三模块,配置用于基于所述所有字符的归一化状态数和排序结果创建有限状态熵码表,所述有限状态熵码表每一行的列数设置为所述每一行对应字符的归一化状态数的绝对值;第四模块,配置用于将设置有所述预设标记的字符在所述有限状态熵码表对应的位置倒序填写状态数,并通过质数扩展计算其他字符在所述有限状态熵码表对应的位置的状态数;以及第五模块,配置用于基于所述有限状态熵码表进行有限熵编码。本发明实施例的再一方面,还提供了一种计算机设备,包括:至少一个处理器;以及存储器,存储器存储有可在处理器上运行的计算机指令,指令由处理器执行时实现上述方法的步骤。本发明实施例的再一方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时实现如上方法步骤的计算机程序。本发明至少具有以下有益技术效果:对基于有限状态熵编码处理压缩算法较新并且研究较少的目前现状,从如何快捷实现及方便硬件化着手,可有效生成有限状态熵码表(FSETable)。首先,数据的存储形式简单方便,无需使用类似霍夫曼树二叉树链表式存储,可以大大减少了内存空间;其次,本方案设计的有限熵编码处理算法计算步骤简单,仅用比较,加及移位计算操作,不涉及其他复杂计算操作;最后,本方案中涉及到的所有的计算及存储方式不仅为软件计算提高效率,也是可以硬件化的,多种可实现形式使其应用更加灵活。如其若通过硬件的方式实现,即可成为针对网络数据存储推出的一个硬件加速技术,能够加速基于有限熵编码数据的压缩,有效降低服务器CPU的负载。本方案方便的解决了有限状态熵码表生成的问题,只使用有限的计算时间及较少了加法器和比较器使用个数,大大缩减了有限状态熵编码码表生成所占用的硬件资源消耗。其可专注数据压缩加速,助力数据中心的性能提升。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。图1为本发明提供的多字符的有限熵编码方法的实施例的示意图;图2为本发明提供的待压缩编码数据字符概率统计表;图3为本发明提供的有限状态熵码表的表格形状示意图;图4为本发明提供的有限状态熵码表的表格部分示意图;图5为本发明提供的有限状态熵码表的表格最终结果示意图;图6为本发明提供的多字符的有限熵编码装置的实施例的示意图;图7为本发明提供的计算机设备的实施例的示意图;图8为本发明提供的计算机可读存储介质的实施例的示意图。具体实施方式为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。有限状态熵编码属于非对称数字系统(asymmetricnumeralsystems,ANS)中tANS(tableasymmetricnumeralsystems)的一种熵编码。现有研究主要针对tANS和ANS的重要组成部分uABS(uniformasymmetricbinarysystems),而鲜有对FSE硬件架构的研究。基于上述目的,本发明实施例的第一个方面,提出了多字符的有限熵编码方法的实施例。图1示出的是本发明提供的多字符的有限熵编码方法的实施例的示意图。如图1所示,本发明实施例的多字符的有限熵编码方法包括如下步骤:001、对待压缩编码的数据块中所有字符的出现频率进行统计,并根据从大到小进行排序;002、基于出现频率分别计算所有字符的归一化状态数,并对预设范围内的归一状态数设置预设标记;003、基于所有字符的归一化状态数和排序结果创建有限状态熵码表,有限状态熵码表每一行的列数设置为每一行对应字符的归一化状态数的绝对值;004、将设置有预设标记的字符在有限状态熵码表对应的位置倒序填写状态数,并通过质数扩展计算其他字符在有限状态熵码表对应的位置的状态数;以及005、基于有限状态熵码表进行有限熵编码。在本发明的一些实施例中,基于出现频率分别计算所有字符的归一化状态数包括:基于所有字符的个数计算总状态个数,将每个字符出现频率与所有字符出现频率的比值分别与总状态个数相乘,以得到每个字符对应的归一化状态数。在本发明的一些实施例中,基于所有字符的个数计算总状态个数包括:通过如下公式计算总状态个数:其中,Nstate为总状态个数,Nsymbol为所有字符的个数。在本发明的一些实施例中,对预设范围内的归一状态数设置预设标记包括:将归一化状态数小于1的数值标记为-1。在本发明的一些实施例中,将设置有预设标记的字符在有限状态熵码表对应的位置倒序填写状态数包括:基于所有字符的个数计算总状态个数,并基于总状态个数将设置有预设标记的字符在有限状态熵码表对应的位置倒序填写状态数。在本发明的一些实施例中,通过质数扩展计算其他字符在有限状态熵码表对应的位置的状态数包括:基于所有字符的个数计算总状态个数,并基于总状态个数通过如下公式计算扩散间隔:其中,step为扩散间隔,ts为总状态个数,n为预设质数;基于扩散间隔对状态序列进行扩散,以得到每个数值都小于总状态个数的第一序列;将第一序列中已经倒序填写的状态数删除,以生成第二序列;基于有限状态熵码表每行的列数从第二序列中取出状态数并填入对应的位置。在本发明的一些实施例中,基于有限状态熵码表每行的列数从第二序列中取出状态数并填入对应的位置包括:根据行数从小到大的顺序从第二序列中取出状态数,并将取出的状态数从第二序列中删除;基于每一行的列数决定取出状态数的个数,并将取出的状态数从小到大排序,依次填入每一行的位置。下面根据具体实施例进一步阐述本发明的具体实施方式。以如下示出待压缩编码的数据块为例:Theyhadhardlybeguntodoso,andthetremblingpeoplewhohadhiddenthemselveswerescarcelyathomeagain,whenEdward,theelderofthetwoexiledPrinces,cameoverfromNormandywithafewfollowers,toclaimtheEnglishCrown.HismotherEmma,however,whoonlycaredforherlastsonHardicanute,insteadofassistinghim,asheexpected,opposedhimsostronglywithallherinfluencethathewasverysoongladtogetsafelyback.HisbrotherAlfredwasnotsofortunate.Believinginanaffectionateletter,writtensometimeafterwardstohimandhisbrother,inhismother'sname(butwhetherreallywithorwithouthismother'sknowledgeisnowuncertain),heallowedhimselftobetemptedovertoEngland,withagoodforceofsoldiers,andlandingontheKentishcoast,andbeingmetandwelcomedbyEarlGodwin,proceededintoSurrey,asfarasthetownofGuildford.Here,heandhismenhaltedintheeveningtorest,havingstilltheEarlintheircompany;whohadorderedlodgingsandgoodcheerforthem.But,inthedeadofthenight,whentheywereofftheirguard,beingdividedintosmallpartiessleepingsoundlyafteralongmarchandaplentifulsupperindifferenthouses,theyweresetuponbytheKing'stroops,andtakenprisoners.Nextmorningtheyweredrawnoutinaline,tothenumberofsixhundredmen,andwerebarbarouslytorturedandkilled;withtheexceptionofeverytenthman,whowassoldintoslavery.AstothewretchedPrinceAlfred,hewasstrippednaked,tiedtoahorseandsentawayintotheIsleofEly,wherehiseyesweretornoutofhishead,andwhereinafewdayshemiserablydied.IamnotsurethattheEarlhadwilfullyentrappedhim,butIsuspectitstrongly.首先对数据块中的字符出现的频率进行统计,可以得到下表:表1待压缩编码数据字符频率统计表对所有字符统计在文本的出现概率后进行排序,然后计算归一化的状态个数。在本实施例中,共使用44个字符,总状态个数计算公式如下:每个符号的归一化算法如下:本实施例中为1765,将Nstate=128带入上述公式得到如下公式:将字符的概率进行归一化后得到表格的状态个数,此时将归一化后状态数值小于1的数值标记为-1。得到的待压缩编码数据字符概率统计表如图2所示,可确定有限状态熵码表的表格形状示意图如图3所示。其中每一行代表不同字符的状态,第一行将填写第一个字符的20个状态,第一行将填写第二个字符的11个状态,依此类推。另说明其中状态数用-1标记的在表格中状态个数为1,但是计算规则与状态个数为1的字符不同。将填写状态个数为-1的字符,它们的填写方案为从最大状态数开始倒序填写。在本实施例中,第25个字符到第44个字符状态个数均标记成-1,按此规律填写可得图4所示的有限状态熵码表的表格部分示意图。继续计算有限状态熵码表中的状态数值,为了将状态数值散开并具有非线性,不易重叠的特征,通过质数扩散的方法,通过如下公式计算扩散间隔:其中,step为扩散间隔,ts为总状态个数,n为预设质数;在本实施例中ts为128,以n为5为例,step=16 32 64 5=117。利用step=117将序列扩散,即117*[1,2,……,128],得到的数据去掉超出128的部分即得到序列如下:[117,106,95,84,73,62,51,40,29,18,7,124,113,102,91,80,69,58,47,36,25,14,3,120,109,98,87,76,65,54,43,32,21,10,127,116,105,94,83,72,61,50,39,28,17,6,123,112,101,90,79,68,57,46,35,24,13,2,119,108,97,86,75,64,53,42,31,20,9,126,115,104,93,82,71,60,49,38,27,16,5,122,111,100,89,78,67,56,45,34,23,12,1,118,107,96,85,74,63,52,41,30,19,8,125,114,103,92,81,70,59,48,37,26,15,4,121,110,99,88,77,66,55,44,33,22,11,0]从其中去掉状态个数为-1,即第25个字符到第44个字符占用的状态数值,则得到下列数组:[106,95,84,73,62,51,40,29,18,7,102,91,80,69,58,47,36,25,14,3,98,87,76,65,54,43,32,21,10,105,94,83,72,61,50,39,28,17,6,101,90,79,68,57,46,35,24,13,2,97,86,75,64,53,42,31,20,9,104,93,82,71,60,49,38,27,16,5,100,89,78,67,56,45,34,23,12,1,107,96,85,74,63,52,41,30,19,8,103,92,81,70,59,48,37,26,15,4,99,88,77,66,55,44,33,22,11,0]将以上序列按照行数从小到大的顺序依次取出状态数,基于每一行的列数决定取出状态数的个数,并将取出的状态数从小到大排序,依次填入每一行的位置。有限状态熵码表的表格最终结果示意图如图5所示。需要特别指出的是,上述多字符的有限熵编码方法的各个实施例中的各个步骤均可以相互交叉、替换、增加、删减,因此,这些合理的排列组合变换之于多字符的有限熵编码方法也应当属于本发明的保护范围,并且不应将本发明的保护范围局限在实施例之上。基于上述目的,本发明实施例的第二个方面,提出了一种多字符的有限熵编码装置。图2示出的是本发明提供的多字符的有限熵编码装置的实施例的示意图。如图2所示,本发明实施例的多字符的有限熵编码装置包括如下模块:第一模块011,配置用于对待压缩编码的数据块中所有字符的出现频率进行统计,并根据从大到小进行排序;第二模块012,配置用于基于出现频率分别计算所有字符的归一化状态数,并对预设范围内的归一状态数设置预设标记;第三模块013,配置用于基于所有字符的归一化状态数和排序结果创建有限状态熵码表,有限状态熵码表每一行的列数设置为每一行对应字符的归一化状态数的绝对值;第四模块014,配置用于将设置有预设标记的字符在有限状态熵码表对应的位置倒序填写状态数,并通过质数扩展计算其他字符在有限状态熵码表对应的位置的状态数;以及第五模块015,配置用于基于有限状态熵码表进行有限熵编码。基于上述目的,本发明实施例的第三个方面,提出了一种计算机设备。图3示出的是本发明提供的计算机设备的实施例的示意图。如图3所示,本发明实施例的计算机设备包括如下装置:至少一个处理器021;以及存储器022,存储器022存储有可在处理器上运行的计算机指令023,指令由处理器执行时实现以上方法的步骤。本发明还提供了一种计算机可读存储介质。图4示出的是本发明提供的计算机可读存储介质的实施例的示意图。如图4所示,计算机可读存储介质031存储有被处理器执行时执行如上方法的计算机程序032。最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,多字符的有限熵编码方法的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,程序的存储介质可为磁碟、光盘、只读存储记忆体(ROM)或随机存储记忆体(RAM)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。此外,根据本发明实施例公开的方法还可以被实现为由处理器执行的计算机程序,该计算机程序可以存储在计算机可读存储介质中。在该计算机程序被处理器执行时,执行本发明实施例公开的方法中限定的上述功能。此外,上述方法步骤以及系统单元也可以利用控制器以及用于存储使得控制器实现上述步骤或单元功能的计算机程序的计算机可读存储介质实现。本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。在一个或多个示例性设计中,功能可以在硬件、软件、固件或其任意组合中实现。如果在软件中实现,则可以将功能作为一个或多个指令或代码存储在计算机可读介质上或通过计算机可读介质来传送。计算机可读介质包括计算机存储介质和通信介质,该通信介质包括有助于将计算机程序从一个位置传送到另一个位置的任何介质。存储介质可以是能够被通用或专用计算机访问的任何可用介质。作为例子而非限制性的,该计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储设备、磁盘存储设备或其它磁性存储设备,或者是可以用于携带或存储形式为指令或数据结构的所需程序代码并且能够被通用或专用计算机或者通用或专用处理器访问的任何其它介质。此外,任何连接都可以适当地称为计算机可读介质。例如,如果使用同轴线缆、光纤线缆、双绞线、数字用户线路(D0L)或诸如红外线、无线电和微波的无线技术来从网站、服务器或其它远程源发送软件,则上述同轴线缆、光纤线缆、双绞线、D0L或诸如红外线、无线电和微波的无线技术均包括在介质的定义。如这里所使用的,磁盘和光盘包括压缩盘(CD)、激光盘、光盘、数字多功能盘(DVD)、软盘、蓝光盘,其中磁盘通常磁性地再现数据,而光盘利用激光光学地再现数据。上述内容的组合也应当包括在计算机可读介质的范围内。以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献