一种FPGA异构加速平台的解压缩方法、装置及系统与流程

文档序号:11594820阅读:297来源:国知局

本发明实施例涉及数据处理技术领域,特别是涉及一种基于fpga异构加速平台的解压缩方法、装置及系统。



背景技术:

在云计算时代,所传输的数据量越来越大,海量数据的传输需要占用超大的宽带,严重影响了云计算数据中心的网络传输的性能。为了提高网络输出的性能,需要采用无损压缩算法对所传输的海量数据进行压缩,并且还需要对压缩后的文件进行解压缩处理。在海量数据传输过程中,提高对数据压缩的速度和/或提高对压缩后的数据进行解压缩的速度就可以提高网络传输的性能。

在对压缩后的数据进行解压缩处理时,现有技术中是采用cpu实现解压缩算法的,但是,由于采用cpu实现解压缩算法的过程中执行的是串行计算,从而导致现有技术在实现解压缩算法时存在解压缩速度较慢、所需功耗较高的缺点。

因此,如何提供一种解决上述技术问题的基于fpga异构加速平台的解压缩方法、装置及系统成为本领域的技术人员需要解决的问题。



技术实现要素:

本发明实施例的目的是提供一种基于fpga异构加速平台的解压缩方法、装置及系统,在使用过程中提高了解压缩的速度、降低了解压缩过程中所需的功耗。

为解决上述技术问题,本发明实施例提供了一种基于fpga异构加速平台的解压缩方法,包括:

接收主机端处理器发送的第一待解压缩数据,并将所述第一待解压缩数据进行存储;

依据所述主机端处理器发送的启动指令及参数信息调用fpga硬件电路实现的解压缩算法,并依据所述解压缩算法对所述第一待解压缩数据进行解压缩操作,得到解压缩数据;所述参数信息包括与所述第一待解压缩数据对应的数据信息和压缩关系表;

将所述解压缩数据进行存储,并返回完成信号至所述主机端处理器,以便所述主机端处理器接收所述完成信号后读取所述解压缩数据。

可选的,所述解压缩算法为gzip解压缩算法。

可选的,所述gzip解压缩算法为采用opencl高级语言进行描述的gzip解压缩算法。

可选的,所述gzip解压缩算法包括huffman解码和lz77解压缩;所述压缩关系表为huffman码表;

所述依据解压缩算法对所述第一待解压缩数据进行解压缩操作的过程具体为:

s201:逐个字节读取缓存中的所述第一待解压缩数据,并按照所述huffman码表对每个所述字节进行huffman解压缩,得到第二待解压缩数据,并将所述第二待解压缩数据进行存储;

s202:逐个字节读取所述第二待解压缩数据,所述第二待解压缩数据中的第一个字节为标记位,判断当前字节是否为标记位,如果是,进入s203,否则,进入s204;

s203:读取后续字节,并得到重复字节长度和偏移量,根据所述重复字节长度和所述偏移量进行解压缩,将解压缩后的数据进行存储;

s204:直接将读取的数据作为解压缩后的数据进行存储;

s205:重复s202-s204,直至所述第二待解压缩数据处理结束得到所述解压缩数据。

可选的,所述将所述第一待解压缩数据进行存储的过程具体为:将所述第一待解压缩数据存储至fpga异构加速板卡的ddr内存中。

为解决上述技术问题,本发明实施例提供了一种基于fpga异构加速平台的解压缩装置,包括:

存储模块,用于接收主机端处理器发送的第一待解压缩数据,并将所述第一待解压缩数据进行存储;还用于将解压缩数据进行存储;

解压缩模块,用于依据所述主机端处理器发送的启动指令及参数信息调用fpga硬件电路实现的解压缩算法,并依据所述解压缩算法对所述第一待解压缩数据进行解压缩操作,得到所述解压缩数据;所述参数信息包括与所述第一待解压缩数据对应的数据信息和压缩关系表;

返回模块,用于返回完成信号至所述主机端处理器,以便所述主机端处理器接收所述完成信号后读取所述解压缩数据。

可选的,所述存储模块为ddr存储器。

为解决上述技术问题,本发明实施例提供了一种基于fpga异构加速平台的解压缩系统,包括主机端处理器及如上述所述的基于fpga异构加速平台的解压缩装置。

可选的,所述主机端处理器通过pci-e接口与所述解压缩装置进行信息交互。

本发明实施例提供了一种基于fpga异构加速平台的解压缩方法、装置及系统,包括:接收主机端处理器发送的第一待解压缩数据,并将第一待解压缩数据进行存储;依据主机端处理器发送的启动指令及参数信息调用fpga硬件电路实现的解压缩算法,并依据解压缩算法对第一待解压缩数据进行解压缩操作,得到解压缩数据;参数信息包括与第一待解压缩数据对应的数据信息和压缩关系表;将解压缩数据进行存储,并返回完成信号至主机端处理器,以便主机端处理器接收完成信号后读取解压缩数据。

本发明通过调用fpga异构加速平台上的fpga硬件电路实现的解压缩算法,以对主机端处理器发送的第一待解压缩数据进行解压缩处理,能够通过并行流水的方式提高算法的并行度,实现对解压缩过程的加速。本发明在使用过程中提高了解压缩的速度、降低了解压缩过程中所需的功耗。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种基于fpga异构加速平台的解压缩方法的流程示意图;

图2为本发明实施例提供的一种基于fpga异构加速平台的解压缩装置的结构示意图。

具体实施方式

本发明实施例提供了一种基于fpga异构加速平台的解压缩方法、装置及系统,在使用过程中提高了解压缩的速度、降低了解压缩过程中所需的功耗。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参照图1,图1为本发明实施例提供的一种基于fpga异构加速平台的解压缩方法的流程示意图。该方法包括:

s10:接收主机端处理器发送的第一待解压缩数据,并将第一待解压缩数据进行存储;

s20:依据主机端处理器发送的启动指令及参数信息调用fpga硬件电路实现的解压缩算法,并依据解压缩算法对第一待解压缩数据进行解压缩操作,得到解压缩数据;参数信息包括与第一待解压缩数据对应的数据信息和压缩关系表;

s30:将解压缩数据进行存储,并返回完成信号至主机端处理器,以便主机端处理器接收完成信号后读取解压缩数据。

需要说明的是,在通过fpga(field-programmablegatearray,现场可编程门阵列)异构加速平台对第一待解压缩数据进行解压缩处理之前,可以预先采用高级语言对解压缩算法进行描述,并生成在主机端处理器(cpu)上运行的主机端程序以及面向fpga异构加速平台的kernel(操作系统内核)程序。

具体的,可以预先通过主机端程序创建主机端与fpga异构加速平台进行数据通信的缓存,并可以将该缓存存放至fpga异构加速平台中的ddr内存中。fpga异构加速平台接收到主机端处理器发送的第一待解压缩数据后,将该第一待解压缩数据进行存储,具体可以存储至相应的缓存中;主机端处理器中的主机端程序可以通过将参数信息发送至fpga异构加速平台以进一步设置fpga异构加速平台在运行时所需要的参数信息;主机端处理器中的主机端程序发送启动指令以使fpga异构加速平台接收到该启动指令后依据该启动指令启动kernel程序,以调用fpga硬件电路实现的解压缩算法,并依据该解压缩算法对待解压缩数据进行解压缩操作,并将解压缩后的解压缩数据存储至相应的缓存中;当将待解压缩数据解压完毕后可以向主机端处理器发送完成信号,主机端处理器接收到完成信号后从fpga异构加速平台的缓存中读取解压缩数据,完成对待解压缩数据的解压缩过程。

另外,本发明实施例中所提供的参数信息不仅可以包括与第一待解压缩数据对应的数据信息和压缩关系表,还可以包括其他的参数信息,本发明实施例对此不做特殊的限定,能实现本发明实施例的目的即可。

可选的,解压缩算法为gzip解压缩算法。

需要说明的是,本发明实施例中的解压缩算法可以为gzip解压缩算法,gzip压缩算法是最经典的解压缩算法,相应的依据gzip压缩算法进行压缩的数据在解压缩时需要采用与gzip压缩算法对应的gzip解压缩算法。当然,本发明实施例中的解压缩算法不仅限于为gzip解压缩算法,还可以为其他的解压缩算法,具体采用哪种解压缩算法可以根据实际情况而定,本发明实施例对此不做特殊的限定,能实现本发明实施例的目的即可。

可选的,gzip解压缩算法为采用opencl高级语言进行描述的gzip解压缩算法。

具体的,用于描述gzip解压缩算法的高级语言为opencl(opencomputinglanguage,开放式计算语言)高级语言。对于生成的在主机端处理器(cpu)上运行的主机端程序以及面向fpga异构加速平台的kernel(操作系统内核)程序,可以采用gcc编译器对主机端程序进行编译,生成可以在cpu上执行的可执行文件;采用alterasdkforopencl高层次综合工具对kernel程序文件进行编译,生成可以在fpga上运行的aocx文件。通过alterasdkforopencl高层次综合工具完成经opencl高级语言描述的gzip解压缩算法到fpga异构加速平台中的硬件执行比特流的自动化映射,完成对gzip解压缩算法的异构加速系统的自动化部署过程,实现fpga异构加速平台对gzip解压缩算法的硬件加速。

需要说明的是,本发明实施例中采用opencl高级语言描述gzip解压缩算法,在一定程度上降低将解压缩算法部署到fpga异构加速平台的时间,降低了开发的难度、缩短了研发周期,同时还可以提高gzip解压缩算法的执行性能。

另外,本发明实施例中不仅限于采用opencl高级语言描述gzip解压缩算法,也可以采用opencl高级语言描述其他的解压缩算法,具体的本发明实施例对此不做特殊的限定,能实现本发明实施例的目的即可。

可选的,gzip解压缩算法可以包括huffman解码和lz77解压缩;压缩关系表为huffman码表;

依据解压缩算法对第一待解压缩数据进行解压缩操作的过程具体为:

s201:逐个字节读取缓存中的第一待解压缩数据,并按照huffman码表对每个字节进行huffman解压缩,得到第二待解压缩数据,并将第二待解压缩数据进行存储;

s202:逐个字节读取第二待解压缩数据,第二待解压缩数据中的第一个字节为标记位,判断当前字节是否为标记位,如果是,进入s203,否则,进入s204;

s203:读取后续字节,并得到重复字节长度和偏移量,根据重复字节长度和偏移量进行解压缩,将解压缩后的数据进行存储;

s204:直接将读取的数据作为解压缩后的数据进行存储;

s205:重复s202-s204,直至第二待解压缩数据处理结束得到解压缩数据。

具体的,如果对数据进行压缩时采用的是huffman压缩,则gzip解压缩算法应该包括huffman解码和lz77解压缩两个过程,本发明实施例中的压缩关系表应为huffman码表,依据该huffman码表即可实现对待解压缩数据进行解压缩操作。

当然,本发明实施例中的压缩关系表不仅限于为huffman码表,也可以为其他的压缩关系表,具体可以根据实际情况而定,本发明实施例对此不做特殊的限定,能实现本发明实施例的目的即可。

另外,具体可以将所述第一待解压缩数据以及解压缩后的解压缩数据都存储至fpga异构加速板卡的ddr内存中,当然,不仅限于存储至ddr内存,也可以存储至其他的存储器中,本发明实施例对此不做特殊的限定,能实现本发明实施例的目的即可。

本发明实施例提供了一种基于fpga异构加速平台的解压缩方法,包括:接收主机端处理器发送的第一待解压缩数据,并将第一待解压缩数据进行存储;依据主机端处理器发送的启动指令及参数信息调用解压缩算法,并依据解压缩算法对第一待解压缩数据进行解压缩操作,得到解压缩数据;参数信息包括与第一待解压缩数据对应的数据信息和压缩关系表;将解压缩数据进行存储,并返回完成信号至主机端处理器,以便主机端处理器接收完成信号后读取解压缩数据。

本发明通过调用fpga异构加速平台上的fpga硬件电路实现解压缩算法,以对主机端处理器发送的第一待解压缩数据进行解压缩处理,能够通过并行流水的方式提高算法的并行度,实现对解压缩过程的加速。本发明在使用过程中提高了解压缩的速度、降低了解压缩过程中所需的功耗。

请参照图2,图2为本发明实施例提供的一种基于fpga异构加速平台的解压缩装置的结构示意图。在上述实施例的基础上:

该装置包括:

存储模块1,用于依据主机端处理器发送的启动指令及参数信息调用fpga硬件电路实现的解压缩算法,并依据接收主机端处理器发送的第一待解压缩数据,并将第一待解压缩数据进行存储;还用于将解压缩数据进行存储;参数信息包括与第一待解压缩数据对应的数据信息和压缩关系表;

解压缩模块2,用于采用解压缩算法对第一待解压缩数据进行解压缩操作,得到解压缩数据;

返回模块3,用于返回完成信号至主机端处理器,以便主机端处理器接收完成信号后读取解压缩数据。

可选的,存储模块为ddr存储器。

具体的,本发明实施例中的存储模块可以为ddr存储器,具体可以采用ddr3存储器,当然也可以采用其他型号的ddr存储器,本发明实施例对此不做特殊的限定。

需要说明的是,fpga异构加速平台包括fpga芯片和存储器,并且fpga芯片设置有用于实现解压缩算法的fpga硬件电路,在cpu上运行主机端程序可以启动fpga异构加速平台,调用实现解压缩算法的fpga硬件电路对待解压缩数据进行解压缩操作,以实现对该fpga硬件电路的硬件加速。

本发明实施例提供了一种基于fpga异构加速平台的解压缩装置,在使用过程中提高了解压缩的速度、降低了解压缩过程中所需的功耗。另外,对于本发明实施例中涉及到的基于fpga异构加速平台的解压缩方法的具体介绍请参照上述实施例,本申请在此不再赘述。

在上述实施例的基础上,本发明实施例提供了一种基于fpga异构加速平台的解压缩系统,包括主机端处理器及如上所述的解压缩装置。

可选的,主机端处理器通过pci-e接口与上述解压缩装置进行信息交互。

需要说明的是,本发明实施例中的cpu与基于fpga异构加速平台的解压缩装置之间采用pci-e接口连接,进行信息交互。当然,不仅限于通过pci-e接口进行信息交互,也可以通过其他的接口进行信息交互,具体采用哪种接口可以根据实际情况而定,本发明实施例对此不做特殊的限定,能实现本发明实施例的目的即可。

本发明实施例提供了一种基于fpga异构加速平台的解压缩系统,在使用过程中提高了解压缩的速度、降低了解压缩过程中所需的功耗。另外,对于本发明实施例中涉及到的基于fpga异构加速平台的解压缩方法的具体介绍请参照上述方法实施例,本申请在此不再赘述。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1