1.本技术涉及数据压缩技术领域,尤其涉及一种数据压缩的一致性校验方法、系统及相关设备。
背景技术:2.由于多媒体信息数字化后的数据量特别庞大,难以在实际情况下使用,直接存储原始数据的成本开销也极高,所以需要通过某些方式来处理数据,使其更适于在现实情况下使用。数据压缩是降低数据存储成本的有效技术之一,然而,进行数据压缩会引入性能开销,目前压缩算法软件实现的性能已经到达瓶颈,进一步降低数据压缩性能开销的主要可行方案是实现硬件压缩。而硬件压缩复杂度高、易出错,且错误难以被及时修复,因此,硬件压缩面临的一个重要挑战是保障数据压缩的可靠性。
3.现有的数据压缩的一致性校验方法中,每次校验都需要进行完整的字典解码操作和熵解码操作,其中执行熵解码操作会引入较高的性能开销,导致硬件压缩的性能收益受损。
4.因此,如何在降低硬件压缩的性能开销的情况下,同时保障数据压缩的可靠性是目前亟待解决的问题。
技术实现要素:5.本技术提供了一种数据压缩的一致性校验方法、系统及相关设备,能够结合软件与硬件来完成数据压缩,并对压缩结果进行校验,降低了成本开销和性能开销,提高了数据压缩的可靠性。
6.第一方面,本技术提供一种数据压缩的一致性校验方法,所述方法包括:数据压缩设备接收硬件压缩单元传送的字典编码结果,所述字典编码结果为所述硬件压缩单元对原始数据进行字典编码后的压缩数据;数据压缩设备对所述字典编码结果进行熵编码,得到熵编码结果;数据压缩设备对所述字典编码结果进行字典解码,得到字典解码结果;数据压缩设备将所述字典解码结果和所述原始数据进行对比校验;若对比校验通过,数据压缩设备输出所述熵编码结果。
7.可选的,字典编码的算法可以根据具体压缩数据的需要来进行设置,例如,字典编码算法可以设置为lz77算法。
8.可选的,熵编码的编码方式可以根据具体压缩数据的需要进行设置,例如,熵编码的编码方式可以设置为算术编码。
9.在本技术提供的方案中,首先在硬件压缩单元中执行字典编码操作,然后将字典编码结果传送给数据压缩设备,由数据压缩设备实现熵编码、字典解码和校验,硬件实现的内容复杂度降低,减少了压缩算法中硬件实现的成本开销。此外,将熵编码放在数据压缩设备实现,既避免了熵编码在硬件中执行以及后续解码所带来的性能开销,又保障了压缩数据的可靠性。
10.结合第一方面,在第一方面的一种可能的实现方式中,数据压缩设备分析历史校验数据,得到对比校验的通过率;若所述对比校验的通过率大于或等于第一阈值,则在接收硬件压缩单元传送的字典编码结果之后,同时执行所述对所述字典编码结果进行熵编码和所述对所述字典编码结果进行字典解码的步骤;若所述对比校验的通过率小于第一阈值,则在将所述字典解码结果与原始数据进行对比校验之后,若对比校验通过,执行所述对所述字典编码结果进行熵编码的步骤。
11.在本技术提供的方案中,数据压缩设备通过分析历史校验数据,获取历史校验通过信息,来计算对比校验的通过率,根据该对比校验的通过率和设置的第一阈值来判断执行字典解码和熵编码的顺序,避免在字典编码错误的情况下继续进行熵编码带来的计算资源的占用,这种方式可以合理使用计算资源。可理解,第一阈值由研发人员根据实际情况进行设置。
12.结合第一方面,在第一方面的一种可能的实现方式中,数据压缩设备分析所述数据压缩设备可用计算资源;若所述可用计算资源大于或等于第二阈值,则在接收硬件压缩单元传送的字典编码结果之后,同时执行所述对所述字典编码结果进行熵编码和所述对所述字典编码结果进行字典解码的步骤;若所述可用计算资源小于第二阈值,则在将所述字典解码结果与原始数据进行对比校验之后,若对比校验通过,执行所述对所述字典编码结果进行熵编码的步骤。
13.在本技术提供的方案中,数据压缩设备通过分析其可用计算资源,得到可用计算资源的占比,根据可用计算资源的占比和设置的第二阈值来判断执行字典编码和熵编码的顺序,避免在字典编码错误的情况下继续进行熵编码带来的计算资源的占用,这种方式可以合理使用计算资源。可理解,第二阈值由研发人员根据实际情况进行设置。
14.结合第一方面,在第一方面的一种可能的实现方式中,数据压缩设备结合所述对比校验的通过率和所述可用计算资源,得到相对比例值;若所述相对比例值大于或等于第三阈值,则在接收硬件压缩单元传送的字典编码结果之后,同时执行所述对所述字典编码结果进行熵编码和所述对所述字典编码结果进行字典解码的步骤;若所述相对比例值小于第三阈值,则在将所述字典解码结果与原始数据进行对比校验之后,若对比校验通过,执行所述对所述字典编码结果进行熵编码的步骤。
15.在本技术提供的方案中,数据压缩设备通过分析历史校验数据和所述数据压缩设备的可用计算资源,得到历史校验通过的信息,以及可用计算资源的占比,将二者根据设置的比例进行计算,得到相对比例值,根据所述相对比例值和设置的第三阈值来判断执行字典编码和熵编码的顺序,避免在字典编码错误的情况下继续进行熵编码带来的计算资源的占用,这种方式结合了前述两种判断方式,相较于前述两种方式考虑的因素更多,并且可以灵活设置历史校验数据和可用计算资源在判断执行字典编码和熵编码的顺序时所占的权重,同时合理使用计算资源。可理解,第三阈值由研发人员根据实际情况进行设置。
16.第二方面,提供了一种数据压缩设备,包括:接收单元,用于接收硬件压缩单元传送的字典编码结果,所述字典编码结果为所述硬件压缩单元对原始数据进行字典编码后的压缩数据;编码单元,用于对所述字典编码结果进行熵编码,得到熵编码结果;解码单元,用于对所述字典编码结果进行字典解码,得到字典解码结果;校验单元,用于对所述字典解码结果和所述原始数据进行对比校验;输出单元,用于在所述对比校验通过时,输出所述熵编
码结果。
17.结合第二方面,在第二方面的一种可能的实现方式中,所述校验单元,还用于:分析历史校验数据,得到对比校验的通过率;若所述对比校验的通过率大于或等于第一阈值,则在所述接收单元接收硬件压缩单元传送的字典编码结果之后,所述编码单元和所述解码单元同时执行所述对所述字典编码结果进行熵编码和所述对所述字典编码结果进行字典解码;若所述对比校验的通过率小于第一阈值,则在将所述字典解码结果与原始数据进行对比校验之后,若对比校验通过,所述编码单元执行所述对所述字典编码结果进行熵编码。
18.结合第二方面,在第二方面的一种可能的实现方式中,所述校验单元,还用于:分析所述数据压缩设备的可用计算资源;若所述可用计算资源大于或等于第二阈值,则在所述接收单元接收硬件压缩单元传送的字典编码结果之后,所述编码单元和所述解码单元同时执行所述对所述字典编码结果进行熵编码和所述对所述字典编码结果进行字典解码;若所述可用计算资源小于第二阈值,则在将所述字典解码结果与原始数据进行对比校验之后,若对比校验通过,所述编码单元执行所述对所述字典编码结果进行熵编码。
19.结合第二方面,在第二方面的一种可能的实现方式中,所述校验单元,还用于:结合所述对比校验的通过率和所述可用计算资源,得到相对比例值;若所述相对比例值大于或等于第三阈值,则在所述接收单元接收硬件压缩单元传送的字典编码结果之后,所述编码单元和所述解码单元同时执行所述对所述字典编码结果进行熵编码和所述对所述字典编码结果进行字典解码;若所述相对比例值小于第三阈值,则在将所述字典解码结果与原始数据进行对比校验之后,若对比校验通过,所述编码单元执行所述对所述字典编码结果进行熵编码的步骤。
20.第三方面,提供了一种数据压缩系统,包括硬件压缩单元和数据压缩设备,其中,所述硬件压缩单元,用于对原始数据进行字典编码,得到字典编码结果;所述数据压缩设备,用于接收所述硬件压缩单元发送的所述字典编码结果,并对所述字典编码结果进行解码,得到字典解码结果;对所述字典编码结果进行熵编码,得到熵编码结果;对所述字典解码结果和所述原始数据进行对比校验;若对比校验通过,输出所述熵编码结果。
21.结合第三方面,在第三方面的一种可能的实现方式中,所述数据压缩设备,还用于:分析历史校验数据,得到对比校验的通过率;若所述对比校验的通过率大于或等于第一阈值,则在接收硬件压缩单元传送的字典编码结果之后,同时执行所述对所述字典编码结果进行熵编码和所述对所述字典编码结果进行字典解码的步骤;若所述对比校验的通过率小于第一阈值,则在将所述字典解码结果与原始数据进行对比校验之后,若对比校验通过,执行所述对所述字典编码结果进行熵编码的步骤。
22.结合第三方面,在第二方面的一种可能的实现方式中,所述数据压缩设备,还用于:分析所述数据压缩设备的可用计算资源;若所述可用计算资源大于或等于第二阈值,则在接收硬件压缩单元传送的字典编码结果之后,同时执行所述对所述字典编码结果进行熵编码和所述对所述字典编码结果进行字典解码的步骤;若所述可用计算资源小于第二阈值,则在将所述字典解码结果与原始数据进行对比校验之后,若对比校验通过,执行所述对所述字典编码结果进行熵编码的步骤。
23.结合第三方面,在第二方面的一种可能的实现方式中,所述数据压缩设备,还用于:结合所述对比校验的通过率和所述可用计算资源,得到相对比例值;若所述相对比例值
大于或等于第三阈值,则在接收硬件压缩单元传送的字典编码结果之后,同时执行所述对所述字典编码结果进行熵编码和所述对所述字典编码结果进行字典解码的步骤;若所述相对比例值小于第三阈值,则在将所述字典解码结果与原始数据进行对比校验之后,若对比校验通过,执行所述对所述字典编码结果进行熵编码的步骤。
24.第四方面,提供了一种计算设备,所述计算设备包括处理器和存储器,所述存储器用于存储程序代码,所述处理器用于所述存储器中的程序代码执行上述第一方面以及结合上述第一方面中的任意一种实现方式所提供的数据压缩的一致性校验方法。
25.第五方面,提供了计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,当该计算机程序被处理器执行时,可以实现上述第一方面以及结合上述第一方面中的任意一种实现方式所提供的数据压缩的一致性校验方法的功能。
26.第六方面,本技术提供了一种计算机程序产品,该计算机程序包括指令,当该计算机程序被计算机执行时,使得计算机可以执行上述第一方面以及结合上述第一方面中的任意一种实现方式所提供的数据压缩的一致性校验方法的流程。
附图说明
27.图1为本技术实施例提供的一种数据压缩系统的结构示意图;
28.图2为本技术实施例提供的一种系统架构的示意图;
29.图3为本技术实施例提供的又一种数据压缩系统的结构示意图;
30.图4为本技术实施例提供的一种硬件压缩器的结构示意图;
31.图5为本技术实施例提供的一种数据压缩的一致性校验方法的流程示意图;
32.图6为本技术实施例提供的一种数据压缩设备的结构示意图;
33.图7为本技术实施例提供的一种计算设备的结构示意图。
具体实施方式
34.下面结合附图对本技术实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本技术的一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
35.首先,结合附图对本技术中所涉及的部分用语和相关技术进行解释说明,以便于本领域技术人员理解。
36.数据压缩算法主要有两类:有损压缩算法和无损压缩算法。有损压缩算法通过移除在保真情形下需要大量的数据去存储的小细节,从而达到压缩数据的效果。无损压缩算法根据待压缩数据中的重复数据,确定字符出现概率,然后通过统计建模来进行压缩。本技术实施例中所涉及的字典编码和熵编码属于无损压缩算法。
37.字典编码使用索引值代替待压缩数据中重复出现的字符序列,避免重复的字符序列被多次保存,由此达到数据压缩的目的。
38.熵编码使用不同长度的编码表示待压缩数据中的各个符号。其核心原则是根据待压缩数据各个符号出现的概率为其分配不同长度的编码,通过为出现概率高的符号分配一个短编码,为出现概率低的符号分配长编码,从而达到数据压缩的目的。
39.目前的数据压缩的一致性校验方案都是由硬件压缩单元先进行字典编码和熵编码,然后由数据压缩设备进行熵解码、字典解码和对比校验。如图1所示,其示出了一种数据压缩系统的示意图。该数据压缩系统100包括数据压缩设备110和硬件压缩单元120。硬件压缩单元120中包括字典编码器1210和熵编码器1220,示例性的,当原始数据传送至硬件压缩单元120,首先由字典编码器1210对其进行字典编码,得到字典编码结果,然后由熵编码器1220对该字典编码结果进行熵编码,得到熵编码结果。数据压缩设备110中包括熵解码器1110、字典解码器1120和对比校验器1130,示例性的,数据压缩设备110接收硬件压缩单元120传送的所述熵编码结果后,由熵解码器1110首先对该熵编码结果进行熵解码,得到熵解码结果,再由字典解码器1120对该熵解码结果进行字典解码,得到字典解码结果,最后由对比校验器1130对原始数据和字典解码结果进行对比校验,若对比校验通过,则输出熵编码结果,否则,不输出熵编码结果。
40.由于字典编码和熵编码都在硬件压缩单元120中进行,硬件压缩单元120需要实现的功能多,会带来较大的成本开销。此外,软件对熵编码结果执行的熵解码操作会引入非常大的性能开销,导致数据压缩系统100的性能收益受损。
41.基于上述,本技术提供了一种数据压缩的校验方法、数据压缩系统以及相关设备,可以在硬件压缩单元实现字典编码,在数据压缩设备实现字典解码、对比校验和熵编码,降低了性能开销,同时也保障了数据压缩的可靠性。
42.本技术实施例的技术方案可以应用于各种需要进行数据压缩的场景,包括但不限于文件压缩、图像压缩、音频压缩和视频压缩。
43.在一个具体的实施例中,数据压缩系统可以部署在任意一个涉及数据压缩的计算设备中。例如,如图2所示,可以部署在云环境上的一个或多个计算设备(例如中心服务器),也可以部署在边缘环境中,具体为边缘环境中的一个或多个计算设备(边缘计算设备)上,边缘计算设备可以为服务器。其中,云环境是指云服务提供商拥有的,用于提供计算、存储、通信资源的中心计算设备集群;边缘环境是指在地理位置上距离终端设备较近的,用于提供计算、存储、通信资源的边缘计算设备集群。
44.图3示出了本技术实施例提供的一种数据压缩系统的结构示意图。如图3所示,该数据压缩系统300包括:数据压缩设备310和硬件压缩单元320。硬件压缩单元320包括字典编码器3210,原始数据传输至硬件压缩单元320后,字典编码器3210对原始数据进行字典编码,得到字典编码结果。数据压缩设备310包括:字典解码器3110,当数据压缩设备310接收硬件压缩单元320传送的字典编码结果后,字典解码器3110对该字典编码结果执行字典解码操作,得到字典解码结果;熵编码器3120,当数据压缩设备310接收硬件压缩单元320传送的字典编码结果后,熵编码器3120对该字典编码结果执行熵编码操作;对比校验器3130,对比校验器3130对原始数据和所述字典解码结果进行对比校验。
45.本技术中,数据压缩设备310可以为软件系统,其内部包括的各部分及功能单元部署在硬件设备上的形式比较灵活。
46.值得说明的是,上述数据压缩设备310可以与硬件压缩单元320集成在同一个物理设备上;或者是,如图4所示,硬件压缩单元320也可以是硬件压缩器400,硬件压缩器400可以是一个独立芯片,由其中的字典编码器410执行字典编码操作,此时,硬件压缩器400与数据压缩设备310通过接口连接,从而完成整个压缩及校验过程,该接口可以是pci express
(pcie,pci-e)接口,本技术对此不作限定。
47.可以看出,图3所示的数据压缩系统与图1所示的数据压缩系统相比,熵编码操作不再由硬件压缩单元执行,而是由数据压缩设备完成,由数据压缩设备执行的熵编码出现错误的概率极低,因此,无需执行校验也可以以极高的概率保障熵编码输出的数据具有高可靠性,同时,也避免了熵解码操作引入的较高性能开销,有效降低了数据压缩的时延。此外,硬件压缩单元无需进行熵编码操作,降低了成本开销。
48.示例性的,若使用现有的一致性校验方法压缩8kb的数据,压缩时延=硬件压缩单元字典编码时延+硬件压缩单元熵编码时延+数据压缩设备熵解码时延+数据压缩设备字典解码时延,其中,硬件压缩单元字典编码时延为5us,硬件压缩单元熵编码时延为20us,数据压缩设备熵解码时延17us,数据压缩设备字典解码时延4us,压缩时延共计46us。而使用图3所示的数据压缩系统处理数据压缩任务时,压缩时延=硬件压缩单元字典编码时延+数据压缩设备熵编码时延+数据压缩设备字典解码时延,其中,硬件压缩单元字典编码时延为5us,数据压缩设备熵编码时延为20us,数据压缩设备字典解码时延4us,压缩时延共计29us,若数据压缩设备同时执行字典解码操作和熵编码操作,压缩时延=硬件压缩单元字典编码时延+max{数据压缩设备熵编码时延,数据压缩设备字典解码时延},其中,max{
…
}表示取括号内元素中的最大值,硬件压缩单元字典编码时延为5us,数据压缩设备熵编码时延为20us,数据压缩设备字典解码时延4us,此时,压缩时延为25us。可得,相较于现有的数据压缩的一致性校验方法,使用图3所示的数据压缩系统,可将8kb数据的压缩时延减少约45.6%=(46-25)us/46us。
49.为了避免执行熵解码操作引入的性能开销,在保障数据压缩可靠性的同时,提高性能收益,本技术提供了一种数据压缩的一致性校验方法,该方法在硬件压缩单元完成字典编码,在数据压缩设备完成熵编码及校验,不执行熵解码操作,只对字典编码结果进行解码,该方法提高了性能收益,降低了硬件实现的成本开销。
50.结合图3所示的数据压缩系统的结构示意图,下面对本技术实施例提供的一种数据压缩的一致性校验方法进行详细描述。如图5所示,该方法包括但不限于以下步骤:
51.s510:数据压缩设备接收输入的原始数据。
52.具体地,原始数据可以从数据压缩设备310输入,并由数据压缩设备310传送给硬件压缩单元320,以便进行后续的编码操作,或者是,原始数据也可以从硬件压缩单元320输入,由硬件压缩单元320将原始数据传送给数据压缩设备310,或者是,原始数据也可以同时从硬件压缩单元320和数据压缩设备310输入。所述原始数据是待压缩的数据,包括但不限于文本、图片、音频和视频。
53.s520:数据压缩设备接收硬件压缩单元的字典编码结果。
54.具体地,硬件压缩单元320中的字典编码器3210执行字典编码操作,硬件压缩单元320将得到的字典编码结果传送给数据压缩设备310。可选的,若原始数据首先从硬件压缩单元320输入,硬件压缩单元320可以同时将字典编码结果和原始数据传送给数据压缩设备310。
55.可理解,通过相应的字典编码算法对原始数据进行字典编码,可以达到压缩的目的。目前可采取的字典编码算法有很多种,可以根据实际需要进行选择。例如,可以采用lz77算法、lz78算法、lzw算法等,本技术对此不作限定。
56.示例性的,将一串字符“aacbdacbdc”输入数据压缩设备310,数据压缩设备310将该字符串传送至硬件压缩单元320,硬件压缩单元320中的字典编码器3210对该字符串进行字典编码,此处以lz77字典编码算法为例,利用该算法进行编码,输出的结果是三元组,该三元组由匹配字符串的偏移、匹配字符的长度以及匹配后的下一个字符组成,具体过程如下:
57.设定一个编码窗口,包括两个部分,字典区域和待编码区域。初始状态下,字符串“aacbdacbdc”全部位于待编码区域,开始编码后,在字典区域寻找与待编码区域相匹配的最长字符串,然后将编码窗口向右移动“匹配字符长度+1”个字符,此时输出第一个三元组(0,0,a),继续进行上述编码过程,直至待编码区域没有待编码的字符,最后可以得到一个三元组序列:(0,0,a),(1,1,c),(1,0,d),(1,0,a),(4,4,c)。
58.该三元组序列即为字典编码结果,硬件压缩单元320将该三元组序列传送至数据压缩设备310。
59.s530:数据压缩设备对字典编码结果进行字典解码。
60.具体地,虽然硬件实现数据压缩可以使用大量并行操作代替串行操作,使得压缩过程时间更短、能耗更低,但是在硬件中完成的数据压缩更容易出错,因此为了保障数据压缩的可靠性,本技术实施例中会对压缩数据进行校验,而校验前需要对压缩数据进行解压。所以数据压缩设备310对硬件压缩单元320传送的字典编码结果进行字典解码,得到字典解码结果。
61.可理解,数据压缩设备在执行字典解码操作时可以根据字典编码算法调整字典解码方式。
62.s540:数据压缩设备将字典解码结果与原始数据进行对比校验。
63.具体地,数据压缩设备310将原始数据与字典解码结果进行对比校验,可以采取的对比校验方式包括但不限于:逐字节对比;对比两组数据的校验和。其中,第二种方式首先要分别计算出两组数据的校验和,可采取16位、32位等多种校验方式进行计算,然后将两个校验和进行比对。
64.下面以16位校验方式为例,对生成校验和的过程进行阐述说明。字符串“aacbdacbdc”的二进制表示为:“0110 0001 0110 0001 0110 0011 0110 0010 0110 0100 0110 0001 0110 0011 0110 0010 0110 0100 0110 0011”,采取16位校验方式,进行二进制反码求和,计算得到的校验和为:“0000 1111 0001 0101”,十六进制表示为:“0f15”,相同地,对字典解码结果也进行上述操作,得到字典解码结果的校验和,将两个校验和进行比对。
65.s550:数据压缩设备对字典编码结果进行熵编码。
66.具体地,数据压缩设备310对硬件压缩单元320传送过来的字典编码结果进行熵编码,该熵编码过程可以在熵编码器中执行,其中,熵编码方案包括但不限于:哈夫曼编码、非对称数字系统(asymmetric numeral systems,ans)编码、有限状态熵(finite state entropy,fse)编码、算术编码。由于字典编码结果是三元组序列,可以采取不同的形式来进行熵编码:将三元组按序列的元素类别分成三组数据来进行编码,即按照匹配字符串的偏移、匹配字符的长度、匹配后的下一个字符分成三组数据来进行编码;将三元组按顺序排列作为一组数据来进行编码。
67.示例性的,字符串“aacbdacbdc”的字典编码结果为:(0,0,a),(1,1,c),(1,0,d),(1,0,a),(4,4,c)。采取上述第一种熵编码方式,将其分为三组数据:[(01114),(01004),(acdac)],分别对该三组数据进行熵编码,而按照上述第二种上编码方式,直接排列成一组数据:(00a11c10d10a44c),然后对其进行熵编码。
[0068]
值得注意的是,分为三组数据进行熵编码,会得到三组熵编码结果,熵编码器会对其进行整合,再进行输出或存储。
[0069]
需要说明的是,本技术中,熵编码过程是软件实现的,相较于硬件实现的熵编码,软件实现的熵编码正确率极高,因此,无需对软件实现的熵编码结果进行校验也可以以极高的概率保障其具有高可靠性。可理解,数据压缩设备310只需对字典编码结果进行校验,而无需对熵编码结果进行校验,也就意味着无需执行熵解码操作,避免了熵解码过程引入的性能开销。
[0070]
s560:对比校验通过时,数据压缩设备输出熵编码结果。
[0071]
具体地,在数据压缩设备310完成校验后,得到校验结果,校验通过时,由数据压缩设备310输出熵编码结果,即输出进行字典编码和熵编码后的压缩数据,并分配存储空间来存储压缩数据。若采取逐个字节比对的校验方式,当两组数据的每个字节的每一位都相同时,校验通过,可以输出熵编码结果,否则,校验不通过,返回压缩失败信息;若采取计算校验和的校验方式,当两组数据计算得到的校验码完全相同时,校验通过,可以输出熵编码结果,否则,校验不通过,返回压缩失败信息。
[0072]
还需要说明的是,数据压缩设备310在接收硬件压缩单元320传送的字典编码结果后,可以同时进行字典解码操作和熵编码操作,即字典解码器和熵编码器可以同时运行。选择执行熵编码操作的时间的方式包括但不限于以下三种:
[0073]
1、可以根据历史校验数据来选择执行熵编码操作的时间。
[0074]
具体地,分析历史校验数据,得到对比校验的通过率,所述历史校验数据包括在进行此次校验前进行校验的次数以及相应的校验结果。若对比校验的通过率大于或等于第一阈值,则在接收硬件压缩单元传送的字典编码结果之后,同时执行对字典编码结果进行熵编码和对字典编码结果进行字典解码的步骤;若对比校验的通过率小于第一阈值,则在将字典解码结果与原始数据进行对比校验之后,若对比校验通过,执行对字典编码结果进行熵编码的步骤。
[0075]
可理解,第一阈值由研发人员根据实际情况进行设置,本技术中对此不作限定。
[0076]
示例性的,在分析历史校验数据后,得出对比校验通过率为90%,将其与设置的第一阈值进行比较,例如,研发人员设置的第一阈值为90%,比较对比校验通过率90%和第一阈值90%,二者相等,则数据压缩设备310同时进行字典解码操作和熵编码操作。
[0077]
2、可以根据数据压缩设备的可用计算资源来选择执行熵编码操作的时间。
[0078]
具体地,分析数据压缩设备的可用计算资源,得到可用计算资源的占比。若可用计算资源大于或等于第二阈值,则在接收硬件压缩单元传送的字典编码结果之后,同时执行对字典编码结果进行熵编码和对字典编码结果进行字典解码的步骤;若可用计算资源小于第二阈值,则在将字典解码结果与原始数据进行对比校验之后,若对比校验通过,执行对字典编码结果进行熵编码的步骤。
[0079]
可理解,第二阈值由研发人员根据实际情况进行设置,本技术中对此不作限定。
[0080]
示例性的,在分析数据压缩设备的可用计算资源后,得到可用计算资源的占比为80%,将其与设置的第二阈值进行比较,例如,研发人员设置的第二阈值为75%,比较可用计算资源的占比80%和第二阈值75%,可用计算资源大于第二阈值,则数据压缩设备310同时进行字典解码操作和熵编码操作。
[0081]
3、可以结合所述对比校验的通过率和所述可用计算资源,得到相对比例值,根据该相对比例值来选择执行熵编码操作的时间。
[0082]
具体地,结合对比校验的通过率和可用计算资源占比,得到相对比例值,该相对比例值是由对比校验的通过率和可用计算资源根据某个计算比例进行运算得到的。若相对比例值大于或等于第三阈值,则在接收硬件压缩单元传送的字典编码结果之后,同时执行对字典编码结果进行熵编码和对字典编码结果进行字典解码的步骤;若相对比例值小于第三阈值,则在将字典解码结果与原始数据进行对比校验之后,若对比校验通过,执行对字典编码结果进行熵编码的步骤。
[0083]
可理解,该计算比例和第三阈值由研发人员根据实际情况进行设置,本技术中对此不作限定。
[0084]
示例性的,选取计算比例为1:1,分析对比校验的通过率和可用计算资源后,得到对比校验通过率为80%,可用计算资源占比为80%,根据该计算比例进行运算,即80%*0.5+80%*0.5=80%,将该相对比例值与设置的第三阈值进行比较,例如,研发人员设置的第三阈值为70%,比较相对比例值80%和第三阈值70%,相对比例值大于第三阈值,则数据压缩设备310同时进行字典解码操作和熵编码操作。
[0085]
上述详细阐述了本技术实施例的方法,为了便于更好的实施本技术实施例的上述方案,相应地,下面还提供用于配合实施的相关设备。
[0086]
如图6所示,本技术还提供一种数据压缩设备,该数据压缩设备用于执行上述图5所述的数据压缩的一致性校验方法。本技术对该数据压缩设备的功能单元的划分不做限定,可以根据需要对该数据压缩设备中的各个单元进行增加、减少或合并。此外,数据压缩设备中的各个单元的操作和/或功能分别为了实现上述图5所描述的方法的相应流程,为了简洁,在此不再赘述。图6示例性的提供了一种功能单元的划分:
[0087]
数据压缩设备600包括接收单元610、编码单元620、解码单元630、校验单元640和输出单元650。
[0088]
接收单元610,用于接收硬件压缩单元传送的字典编码结果,该字典编码结果是硬件压缩单元对原始数据进行字典编码后得到的压缩数据。其中,原始数据可以从硬件压缩单元输入,接收单元610接收硬件压缩单元传送的字典编码结果和原始数据;原始数据也可以直接从数据压缩设备600输入,接收单元610直接进行接收。
[0089]
可理解,所述硬件压缩单元可以与数据压缩设备600集成在一个物理设备上;也可以作为硬件压缩器通过接口与数据压缩设备600连接,如图4所示,此时,该硬件压缩器400可以是一个独立芯片,该接口可以是pci express(pcie,pci-e)接口,本技术对此不作限定。
[0090]
编码单元620,用于对接收单元610接收的字典编码结果进行熵编码。编码单元620包括熵编码器6210,所述熵编码操作在熵编码器6210中完成。可选的,所述熵编码可以在接收到字典编码结果后立即执行,也可以在完成对比校验后再执行。
[0091]
解码单元630,用于对接收单元610接收的字典编码结果进行解码。应理解,解码方式可以根据字典编码算法进行调整。
[0092]
校验单元640,用于对解码单元630对字典编码结果执行解码操作后的字典解码结果和原始数据进行对比校验,并得出校验结果。
[0093]
可选的,对比校验可以采取逐字节对比的方式,若字典解码结果和原始数据每个字节完全一致,则校验通过,校验单元640将校验通过的信息传送给输出单元650,否则,校验不通过,校验单元640将校验失败的信息传送给输出单元650;对比校验也可以采取分别计算校验和的方式,若字典解码结果和原始数据的校验和完全一致,则校验通过,校验单元640将校验通过的信息传送给输出单元650,否则,校验不通过,校验单元640将校验失败的信息传送给输出单元650。
[0094]
输出单元650,用于在对比校验通过时,输出编码单元620执行熵编码操作得到的熵编码结果。应理解,输出单元650根据校验单元640传送的校验结果判断是否输出熵编码结果,若输出单元650接收的是校验成功的信息,输出单元650输出熵编码结果,若输出单元650接收的是校验失败的信息,不进行输出,并返回压缩失败。
[0095]
上述五个单元之间互相可通过通信通路进行数据传输,应理解,数据压缩设备600包括的各单元可以为软件单元、也可以部分为软件单元部分为硬件单元。
[0096]
参见图7,图7是本技术实施例提供的一种计算设备的结构示意图。如图7所示,该计算设备700包括:处理器710、通信接口720以及存储器730,所述处理器710、通信接口720以及存储器730通过内部总线740相互连接。
[0097]
所述计算设备700可以是图3中的数据压缩设备,图3中的数据压缩设备所执行的功能实际上是由所述数据压缩设备的处理器710来执行。
[0098]
所述处理器710可以由一个或者多个通用处理器构成,例如中央处理器(central processing unit,cpu),或者cpu和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,asic)、可编程逻辑器件(programmable logic device,pld)或其组合。上述pld可以是复杂可编程逻辑器件(complex programmable logic device,cpld)、现场可编程逻辑门阵列(field-programmable gate array,fpga)、通用阵列逻辑(generic array logic,gal)或其任意组合。
[0099]
总线740可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。所述总线740可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但不表示仅有一根总线或一种类型的总线。
[0100]
存储器730可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,ram);存储器730也可以包括非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,rom)、快闪存储器(flash memory)、硬盘(hard disk drive,hdd)或固态硬盘(solid-state drive,ssd);存储器730还可以包括上述种类的组合。程序代码可以是用来实现数据压缩设备600所示的功能单元,或者用于实现图5所示的方法实施例中以数据压缩设备为执行主体的方法步骤。
[0101]
本技术实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时,可以实现上述方法实施例中记载的任意一种的部分或全部步骤,以及实
现上述图6所描述的任意一个功能单元的功能。
[0102]
本技术实施例还提供了一种计算机程序产品,当其在计算机或处理器上运行时,使得计算机或处理器执行上述任一个方法中的一个或多个步骤。上述所涉及的设备的各组成模块如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在所述计算机可读取存储介质中。
[0103]
在上述实施例中,对各个实施例的描述各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
[0104]
应理解,本文中涉及的第一、第二、第三、第四以及各种数字编号仅为描述方便进行的区分,并不用来限制本技术的范围。
[0105]
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
[0106]
还应理解,在本技术的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
[0107]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0108]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0109]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0110]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0111]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0112]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。
而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0113]
本技术实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
[0114]
本技术实施例装置中的模块可以根据实际需要进行合并、划分和删减。
[0115]
以上所述,以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。