CN108832935B - 一种rle算法实现方法、系统、设备及计算机存储介质 - Google Patents
一种rle算法实现方法、系统、设备及计算机存储介质 Download PDFInfo
- Publication number
- CN108832935B CN108832935B CN201810549623.2A CN201810549623A CN108832935B CN 108832935 B CN108832935 B CN 108832935B CN 201810549623 A CN201810549623 A CN 201810549623A CN 108832935 B CN108832935 B CN 108832935B
- Authority
- CN
- China
- Prior art keywords
- data
- encoded
- group
- coded
- target data
- 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
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/46—Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本申请公开了一种RLE算法实现方法、系统、设备及计算机存储介质,应用于FPGA中,其中该方法包括:获取FPGA的并行数;从目标数据集中获取一组待编码数据,一组待编码数据中待编码数据的数量小于等于FPGA的并行数;采用预先编写的RLE算法同时对每一个待编码数据进行编码长度匹配计算,得到每一个待编码数据的运算结果;根据每一个待编码数据的运算结果确定当前获取的一组待编码数据的编码结果;判断是否完成对目标数据集的编码运算,若是,则结束,若否,则返回执行从目标数据集中获取一组待编码数据的步骤。本申请公开的一种RLE算法实现方法、系统、设备及计算机存储介质一次可对多个待编码数据进行RLE运算,编码效率高。
Description
技术领域
本申请涉及数据编码技术领域,更具体地说,涉及一种RLE算法实现方法、系统、设备及计算机存储介质。
背景技术
RLE(run-length encoding,游程编码)算法是一个简单高效的无损数据压缩算法,其基本思路是把数据看成一个线性序列,对于连续的重复数据采用的压缩策略是用一个字节表示数据重复的次数,然后在这个数据重复属性字节后面存储对应的数据字节本身,对于连续不重复的数据序列,表示方法和连续的重复数据块序列的表示方法一样,只不过前面的数据重复属性字节的内容为1。现有的一种RLE算法实现方式是用CPU实现RLE算法。
然而,CPU只能串行实现RLE算法,当待编码数据量较大时,CPU的串行计算会影响RLE算法的编码效率。
综上所述,如何提高RLE算法的编码效率是目前本领域技术人员亟待解决的问题。
发明内容
本申请的目的是提供一种RLE算法实现方法,其能在一定程度上解决如何提高RLE算法的编码效率的技术问题。本申请还提供了一种RLE算法实现系统、设备及计算机可读存储介质。
为了实现上述目的,本申请提供如下技术方案:
一种RLE算法实现方法,应用于FPGA中,包括:
获取所述FPGA的并行数;
从目标数据集中获取一组待编码数据,一组所述待编码数据中所述待编码数据的数量小于等于所述FPGA的并行数;
采用预先编写的RLE算法同时对每一个所述待编码数据进行编码长度匹配计算,得到每一个所述待编码数据的运算结果;
根据每一个所述待编码数据的运算结果确定当前获取的一组所述待编码数据的编码结果;
判断是否完成对所述目标数据集的编码运算,若是,则结束,若否,则返回执行所述从目标数据集中获取一组待编码数据的步骤。
优选的,所述根据每一个所述待编码数据的运算结果确定当前获取的一组所述待编码数据的编码结果之后,还包括:
将每一组所述待编码数据的编码结果进行合并运算,得到所述目标数据集的编码结果。
优选的,所述将每一组所述待编码数据的编码结果进行合并运算之前,还包括:
获取匹配长度阈值;
所述得到所述目标数据集的编码结果之后,还包括:
判断所述目标数据集的编码结果中的每一个编码数据的匹配长度是否大于所述匹配长度阈值,若是,则将匹配长度大于所述匹配长度阈值的编码数据拆分为N个,拆分后的每个编码数据的匹配长度均不大于所述匹配长度阈值,N为正整数且大于1。
优选的,所述采用预先编写的RLE算法同时对每一个所述待编码数据进行编码长度匹配计算,包括:
采用预先基于OpenCL语言编写的RLE算法同时对每一个所述待编码数据进行编码长度匹配计算。
优选的,所述从目标数据集中获取一组待编码数据之前,还包括:
获取所述目标数据集中第一个待编码数据的数据位置;
将第一个所述待编码数据的数据位置作为当前数据位置;
所述从目标数据集中获取一组待编码数据,包括:
从当前数据位置开始,获取一组所述待编码数据;
所述得到每一个所述待编码数据的运算结果之后,所述判断是否完成对所述目标数据集的编码运算之前,还包括:
将当前数据位置与一组所述待编码数据的匹配长度的和作为下一组所述待编码数据的当前数据位置。
优选的,所述从目标数据集中获取一组待编码数据,包括:
利用移位寄存器从所述目标数据集中获取一组待编码数据。
优选的,所述从目标数据集中获取一组待编码数据,包括:
从所述FPGA的本地内存中存储的目标数据集中获取一组待编码数据。
一种RLE算法实现系统,应用于FPGA中,包括:
第一获取模块,用于获取所述FPGA的并行数;
第二获取模块,用于从目标数据集中获取一组待编码数据,一组所述待编码数据中所述待编码数据的数量小于等于所述FPGA的并行数;
计算模块,用于采用预先编写的RLE算法同时对每一个所述待编码数据进行编码长度匹配计算,得到每一个所述待编码数据的运算结果;
第一确定模块,用于根据每一个所述待编码数据的运算结果确定当前获取的一组所述待编码数据的编码结果;
第一判断模块,用于判断是否完成对所述目标数据集的编码运算,若是,则结束,若否,则提示所述第二获取模块执行所述从目标数据集中获取一组待编码数据的步骤。
一种RLE算法实现设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上任一所述的RLE算法实现方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如上任一所述的RLE算法实现方法的步骤。
本申请提供的一种RLE算法实现方法,在FPGA上实现了RLE算法,借助FPGA并行运算的性能同时对多个待编码数据进行RLE编码运算,与现有技术中CPU串行实现RLE算法,一次只对一个待编码数据相比,本申请提供的一种RLE算法实现方法一次可对多个待编码数据进行RLE运算,编码效率高。本申请提供的一种RLE算法实现系统、设备及计算机可读存储介质也解决了相应技术问题。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种RLE算法实现方法的第一实施流程图;
图2为本申请实施例提供的一种RLE算法实现方法的第二实施流程图;
图3为本申请实施例提供的一种RLE算法实现方法的第三实施流程图;
图4为本申请实施例提供的一种RLE算法实现方法的第四实施流程图;
图5为本申请实施例提供的一种RLE算法实现系统的结构示意图;
图6为本申请实施例提供的一种RLE算法实现设备的结构示意图;
图7为本申请实施例提供的一种RLE算法实现设备的另一结构示意图;
图8为基于OpenCL并行描述的RLE算法的实现流程图;
图9为RTL硬件描述语言实现的fvp更新部分的逻辑示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
现有技术中,在CPU上运行RLE算法来对待编码数据进行编码,然而CPU只能串行执行RLE算法,也即一次只能对一个待编码数据进行RLE算法,当待编码数据的数量较多时,CPU的串行计算会使得对待编码数据的编码速率较慢。而本申请提供的一种RLE算法实现方法在FPGA上实现RLE算法,借助FPGA的并行运算特性来同时对多个待编码数据进行RLE运算,在一定程度上提高了编码效率。
请参阅图1,图1为本申请实施例提供的一种RLE算法实现方法的第一实施流程图。
本申请实施例提供的一种RLE算法实现方法,应用于FPGA(Field-ProgrammableGate Array,现场可编程门阵列)中,可以包括以下步骤:
步骤S101:获取FPGA的并行数。
这里所说的FPGA的并行数指的是FPGA可同时处理的数据数量。实际应用中,可以获取外界预先设定的FPGA的并行数,也可以是获取外界实时输入的FPGA的并行数,此种情况下,外界设定的FPGA的并行数不得超过FPGA的最大并行数。具体应用场景中,外界可以根据待编码数据的总数量来确定FPGA的并行数,比如将待编码数据的总数量与运算次数的商作为FPGA的并行数;还可以直接将FPGA的最大并行数作为FPGA的并行数等。
步骤S102:从目标数据集中获取一组待编码数据,一组待编码数据中待编码数据的数量小于等于FPGA的并行数。
这里所说的目标数据集指的是由待编码数据组成的集合。在获取FPGA的并行数后,便可以从目标数据集中获取一组待编码数据,获取的一组待编码数据中编码数据的数量应小于等于获取的FPGA的并行数。实际应用中,可以利用移位寄存器从目标数据集中获取一组待编码数据,具体的,每次利用以为寄存器从目标数据集中读取与获取的FPGA的并行数相等数量的待编码数据。具体应用场景中,还可以预选将目标数据集存储在FPGA的本地内存中,这样可以直接从FPGA的本地内存中存储的目标数据集中获取一组待编码数据,当然,也可以预先将目标数据集存储在FPGA的全局内存中,每次直接从FPGA的全局内存中存储的目标数据集中获取一组待编码数据。此外,还可以按照先入先出的原则从目标数据集中获取一组待编码数据。
步骤S103:采用预先编写的RLE算法同时对每一个待编码数据进行编码长度匹配计算,得到每一个待编码数据的运算结果。
这里所说的RLE(run-length encoding,游程编码)算法是一个简单高效的无损数据压缩算法。以获取的一组待编码数据为ABCD为例,则采用预先编写的RLE算法对A进行编码长度匹配计算的结果为1A,对B进行编码长度匹配计算的结果为1B,相应的,对C进行编码长度匹配计算的结果是1C,对D进行编码长度匹配计算的结果是1D,由于是同时对每一个待编码数据进行编码长度匹配计算,则可同时得到1A、1B、1C、1D的运算结果。实际应用中,可以采用预先基于OpenCL语言编写的RLE算法同时对每一个待编码数据进行编码长度匹配计算。
步骤S104:根据每一个待编码数据的运算结果确定当前获取的一组待编码数据的编码结果。
仍以获取的一组待编码数据为ABCD为例,采用预先编写的RLE算法对该组待编码数据进行编码匹配长度计算后,得到的每一个待编码数据的运算结果为1A、1B、1C、1D,则根据每一个待编码数据的运算结果确定该组待编码数据的编码结果为1A1B1C1D。上述获取的一组待编码数据中不包含重复的待编码数据,下面以包含重复的待编码数据的一组待编码数据AAAACC为例,则采用预先编写的RLE算法同时对每一个待编码数据进行编码长度匹配计算的结果为4A、3A、2A、1A、2C、1C,根据每一个待编码数据的运算结果确定AAAACC的编码结果为4A2C。
步骤S105:判断是否完成对目标数据集的编码运算,若是,则执行步骤S106:结束,若否,则返回执行步骤S102:从目标数据集中获取一组待编码数据。
由于目标数据集中包含的待编码数据的个数一般大于FPGA的并行数,所以在对一组待编码数据进行RLE编码运算后,需要判断是否完成对目标数据集的编码运算,若是,则结束,若否,则返回从目标数据集中获取一组待编码数据的步骤。应当指出,在获取的一组待编码数据中待编码数据的数量等于FPGA的并行数时,如果最后一次从目标数据集中获取的一组待编码数据集中待编码数据的数量小于FPGA的并行数,则可以按照预先设定的填补原则将最后获取的一组待编码数据中待编码数据的数量填补为FPGA的并行数,不过填补的待编码数据应不影响目标数据集的编码结果,以FPGA的并行数为4,目标数据集中的待编码数据为AABBCC为例,最后一次获取的一组待编码数据为CC,其数量小于4,如果预先设定的填补原则为在一组待编码数据中填补0,则填补后的该组待编码数据为CC00,填补后的该组待编码数据中待编码数据的数量等于FPGA的并行数。具体应用场景中,还可以综合考虑FPGA的并行数及目标数据集中待编码数据的总个数来确定每次获取的一组待编码数据中待编码数据的数量,比如可以按照每次获取的一组待编码数据中待编码数据的数量均相等,且一组待编码数据中待编码数据的数量刚好等于FPGA的并行数。
本申请提供了一种RLE算法实现方法、系统、设备及计算机存储介质,应用于FPGA中,其中该方法包括:获取FPGA的并行数;从目标数据集中获取一组待编码数据,一组待编码数据中待编码数据的数量小于等于FPGA的并行数;采用预先编写的RLE算法同时对每一个待编码数据进行编码长度匹配计算,得到每一个待编码数据的运算结果;根据每一个待编码数据的运算结果确定当前获取的一组待编码数据的编码结果;判断是否完成对目标数据集的编码运算,若是,则结束,若否,则返回执行从目标数据集中获取一组待编码数据的步骤。本申请提供的一种RLE算法实现方法,在FPGA上实现了RLE算法,借助FPGA并行运算的性能同时对多个待编码数据进行RLE编码运算,与现有技术中CPU串行实现RLE算法,一次只对一个待编码数据相比,本申请提供的一种RLE算法实现方法一次可对多个待编码数据进行RLE运算,编码效率高。
请参阅图2,由于每次对一组待编码数据进行RLE运算,这样会得到多组待编码数据的编码结果,为了尽快得到目标数据集的编码结果,本申请实施例提供的一种RLE算法实现方法,具体可以为:
步骤S201:获取FPGA的并行数。
步骤S202:从目标数据集中获取一组待编码数据,一组待编码数据中待编码数据的数量小于等于FPGA的并行数。
步骤S203:采用预先编写的RLE算法同时对每一个待编码数据进行编码长度匹配计算,得到每一个待编码数据的运算结果。
步骤S204:根据每一个待编码数据的运算结果确定当前获取的一组待编码数据的编码结果。
关于步骤S201、步骤S202、步骤S203、步骤S204的相关描述请参阅上述内容,这里不再赘述。
步骤S205:将每一组待编码数据的编码结果进行合并运算,得到目标数据集的编码结果。
这里所说的合并运算不仅仅是将每一组待编码数据的编码结果组合在一起,还需要对相邻两组待编码数据的编码结果中相邻位置的同一种待编码数据的编码结果进行合并,以第一组待编码数据的编码结果为2A4C,第二组待编码数据的编码结果为2C4A为例,将这两组待编码数据的编码结果合并时,由于第一组待编码数据的编码结果的最后位为4C,而第二组待编码数据的编码结果的前置位为2C,两者是关于同一种待编码数据C的编码结果,满足合并原则,则合并后的这两组待编码数据的编码结果为2A6C4A,而不是单纯的2A4C2C4A。当然,实际应用中,FPGA还可以按照编码的时间顺序存储每一组待编码数据的编码结果,之后按照存储的每组待编码数据的编码结果的先后存储顺序,依次读取每组待编码数据的编码结果并将其合并成目标数据集的编码结果;此外,还可以由其他服务器等将FPGA得到的每组待编码数据的编码结果合并成目标数据集的编码结果等。
步骤S206:判断是否完成对目标数据集的编码运算,若是,则执行步骤S207:结束,若否,则返回执行步骤S202:从目标数据集中获取一组待编码数据。
关于步骤S206、步骤S207的相关描述请参阅上述相应内容。
请参阅图3,实际应用中,每个待编码数据的匹配长度不可无限大,则本申请实施例提供的一种RLE算法实现方法,具体可以包括如下步骤:
步骤S301:获取匹配长度阈值,获取FPGA的并行数。
这里所说的匹配长度阈值指的是每个待编码数据所能达到的最大匹配值,其可以根据实际需要确定,比如根据处理器对目标数据集的编码结果的处理能力确定等。
步骤S302:从目标数据集中获取一组待编码数据,一组待编码数据中待编码数据的数量小于等于FPGA的并行数。
步骤S303:采用预先编写的RLE算法同时对每一个待编码数据进行编码长度匹配计算,得到每一个待编码数据的运算结果。
步骤S304:根据每一个待编码数据的运算结果确定当前获取的一组待编码数据的编码结果。
步骤S305:将每一组待编码数据的编码结果进行合并运算,得到目标数据集的编码结果。
步骤S306:判断目标数据集的编码结果中的每一个编码数据的匹配长度是否大于匹配长度阈值,若是,则执行步骤S307:将匹配长度大于匹配长度阈值的编码数据拆分为N个,拆分后的每个编码数据的匹配长度均不大于匹配长度阈值,N为正整数且大于1。
这里所说的匹配长度指的是待编码数据的连续个数,以一个待编码数据的编码结果为8A为例,则该待编码数据的匹配长度为8.具体应用场景中,FPGA可以先得到待编码数据的匹配长度,然后再判断该待编码数据的匹配长度是否大于匹配长度阈值,若是,则将该待编码数据的匹配长度拆分为N个,N的数值可以根据实际需要确定,且拆分的每个待编码数据的匹配长度均不大于匹配长度阈值。以待编码数据的匹配长度阈值为5,N为2,一个待编码数据的编码结果为8A为例,该待编码数据的匹配长度大于匹配长度阈值,则将该待编码数据的匹配长度拆分为4和4,即将8A拆分为4A和4A。此外,FPGA在对一组待编码数据进行RLE编码运算时,还可以从1开始累积待编码数据的匹配长度,当该待编码数据的匹配长度大于匹配长度阈值时,不再继续累积匹配长度,而是重新从1开始累积待编码数据的匹配长度。
步骤S308:判断是否完成对目标数据集的编码运算,若是,则执行步骤S309:结束,若否,则返回执行步骤S302从目标数据集中获取一组待编码数据。
关于上述其他步骤的详细描述请参阅上述相应内容,这里不再赘述。
请参阅图4,实际应用中,为了准确判断每次需要对待编码数据集中的哪一组待编码数据进行RLE编码运算,本申请实施例提供的一种RLE算法实现方法,具体可以包括如下步骤:
步骤S401:获取FPGA的并行数。
步骤S402:获取目标数据集中第一个待编码数据的数据位置,将第一个待编码数据的数据位置作为当前数据位置。
步骤S403:从当前数据位置开始,获取一组待编码数据,一组待编码数据中待编码数据的数量小于等于FPGA的并行数。
步骤S404:采用预先编写的RLE算法同时对每一个待编码数据进行编码长度匹配计算,得到每一个待编码数据的运算结果。
步骤S405:将当前数据位置与一组待编码数据的匹配长度的和作为下一组待编码数据的当前数据位置。
此外,在对一组待编码数据的编码过程中,还可以根据当前数据位置与当前待编码数据的匹配长度的和确定下一个待编码数据的数据位置。
步骤S406:根据每一个待编码数据的运算结果确定当前获取的一组待编码数据的编码结果。
步骤S407:将每一组待编码数据的编码结果进行合并运算,得到目标数据集的编码结果。
步骤S408:判断是否完成对目标数据集的编码运算,若是,则执行步骤S409:结束,若否,则返回执行步骤S403:从当前数据位置开始,获取一组待编码数据。
实际应用中,在更新当前数据位置时,为了降低循环更新当前数据位置产生的数据依赖问题,可以采用RTL(Register Transfer Level,寄存器转换级电路)硬件描述语言实现当前数据位置的更新,其原理如下:对计算的一组待编码数据的匹配长度,依次判断当前数据位置是否等于当前待编码数据的数据位置,若是,则将当前数据位置与当前待编码数据的匹配长度的和作为当前数据位置,以获得下个有效匹配长度的位置;若否,则保持当前数据位置不变,对下个待编码数据进行RLE编码运算。
本申请还提供了一种RLE算法实现系统,其具有本申请实施例提供的一种RLE算法实现方法具有的对应效果。请参阅图5,图5为本申请实施例提供的一种RLE算法实现系统的结构示意图。
本申请实施例提供的一种RLE算法实现系统,应用于FPGA中,可以包括:
第一获取模块101,用于获取FPGA的并行数;
第二获取模块102,用于从目标数据集中获取一组待编码数据,一组待编码数据中待编码数据的数量小于等于FPGA的并行数;
计算模块103,用于采用预先编写的RLE算法同时对每一个待编码数据进行编码长度匹配计算,得到每一个待编码数据的运算结果;
第一确定模块104,用于根据每一个待编码数据的运算结果确定当前获取的一组待编码数据的编码结果;
第一判断模块105,用于判断是否完成对目标数据集的编码运算,若是,则结束,若否,则提示第二获取模块102执行从目标数据集中获取一组待编码数据的步骤。
本申请实施例提供的一种RLE算法实现系统中,还可以包括:
合并模块,用于在第一确定模块根据每一个待编码数据的运算结果确定当前获取的一组待编码数据的编码结果之后,将每一组待编码数据的编码结果进行合并运算,得到目标数据集的编码结果。
本申请实施例提供的一种RLE算法实现系统中,还可以包括:
第三获取模块,用于在合并模块将每一组待编码数据的编码结果进行合并运算之前,获取匹配长度阈值;
第二判断模块,用于在合并模块得到目标数据集的编码结果之后,判断目标数据集的编码结果中的每一个编码数据的匹配长度是否大于匹配长度阈值,若是,则将匹配长度大于匹配长度阈值的编码数据拆分为N个,拆分后的每个编码数据的匹配长度均不大于匹配长度阈值,N为正整数且大于1。
本申请实施例提供的一种RLE算法实现系统中,计算模块可以包括:
计算单元,用于采用预先基于OpenCL语言编写的RLE算法同时对每一个待编码数据进行编码长度匹配计算。
本申请实施例提供的一种RLE算法实现系统中,还可以包括:
第四获取模块,用于第二获取模块从目标数据集中获取一组待编码数据之前,获取目标数据集中第一个待编码数据的数据位置;
第二确定模块,用于将第一个待编码数据的数据位置作为当前数据位置;
相应的,第二获取模块包括:
第一获取单元,用于从当前数据位置开始,获取一组待编码数据;
第三确定模块,用于计算模块得到每一个待编码数据的运算结果之后,第一判断模块判断是否完成对目标数据集的编码运算之前,将当前数据位置与一组待编码数据的匹配长度的和作为下一组待编码数据的当前数据位置。
本申请实施例提供的一种RLE算法实现系统中,第二获取模块可以包括:
第二获取单元,用于利用移位寄存器从目标数据集中获取一组待编码数据。
本申请实施例提供的一种RLE算法实现系统中,第二获取模块可以包括:
第三获取单元,用于从FPGA的本地内存中存储的目标数据集中获取一组待编码数据。
本申请还提供了一种RLE算法实现设备及计算机可读存储介质,其均具有本申请实施例提供的一种RLE算法实现方法具有的对应效果。请参阅图6,图6为本申请实施例提供的一种RLE算法实现设备的结构示意图。
本申请实施例提供的一种RLE算法实现设备,可以包括存储器201、处理器202,处理器202执行存储器201中存储的计算机程序时实现如下步骤:
获取FPGA的并行数;
从目标数据集中获取一组待编码数据,一组待编码数据中待编码数据的数量小于等于FPGA的并行数;
采用预先编写的RLE算法同时对每一个待编码数据进行编码长度匹配计算,得到每一个待编码数据的运算结果;
根据每一个待编码数据的运算结果确定当前获取的一组待编码数据的编码结果;
判断是否完成对目标数据集的编码运算,若是,则结束,若否,则返回执行从目标数据集中获取一组待编码数据的步骤。
本申请实施例提供的一种RLE算法实现设备中,处理器执行存储器中存储的计算机子程序还具体实现:根据每一个待编码数据的运算结果确定当前获取的一组待编码数据的编码结果之后,将每一组待编码数据的编码结果进行合并运算,得到目标数据集的编码结果。
本申请实施例提供的一种RLE算法实现设备中,处理器执行存储器中存储的计算机子程序还具体实现:将每一组待编码数据的编码结果进行合并运算之前,获取匹配长度阈值;得到目标数据集的编码结果之后,判断目标数据集的编码结果中的每一个编码数据的匹配长度是否大于匹配长度阈值,若是,则将匹配长度大于匹配长度阈值的编码数据拆分为N个,拆分后的每个编码数据的匹配长度均不大于匹配长度阈值,N为正整数且大于1。
本申请实施例提供的一种RLE算法实现设备中,处理器执行存储器中存储的计算机子程序还具体实现:采用预先基于OpenCL语言编写的RLE算法同时对每一个待编码数据进行编码长度匹配计算。
本申请实施例提供的一种RLE算法实现设备中,处理器执行存储器中存储的计算机子程序还具体实现:从目标数据集中获取一组待编码数据之前,获取目标数据集中第一个待编码数据的数据位置;将第一个待编码数据的数据位置作为当前数据位置;从当前数据位置开始,获取一组待编码数据;得到每一个待编码数据的运算结果之后,判断是否完成对目标数据集的编码运算之前,将当前数据位置与一组待编码数据的匹配长度的和作为下一组待编码数据的当前数据位置。
本申请实施例提供的一种RLE算法实现设备中,处理器执行存储器中存储的计算机子程序还具体实现:利用移位寄存器从目标数据集中获取一组待编码数据。
本申请实施例提供的一种RLE算法实现设备中,处理器执行存储器中存储的计算机子程序还具体实现:从FPGA的本地内存中存储的目标数据集中获取一组待编码数据。
请参阅图7,本申请实施例提供的一种RLE算法实现设备中还可以包括:与处理器202连接的输入端口203,用于传输外界输入的命令至处理器202;与处理器202连接的显示单元204,用于显示处理器202的处理结果至外界;与处理器202连接的通信模块205,用于实现RLE算法实现设备与外界的通信。显示单元202可以为显示面板、激光扫描使显示器等;通信模块205所采用的通信方式包括但不局限于移动高清链接技术(HML)、通用串行总线(USB)、高清多媒体接口(HDMI)、无线连接:无线保真技术(WiFi)、蓝牙通信技术、低功耗蓝牙通信技术、基于IEEE802.11s的通信技术。
本申请实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现如下步骤:
获取FPGA的并行数;
从目标数据集中获取一组待编码数据,一组待编码数据中待编码数据的数量小于等于FPGA的并行数;
采用预先编写的RLE算法同时对每一个待编码数据进行编码长度匹配计算,得到每一个待编码数据的运算结果;
根据每一个待编码数据的运算结果确定当前获取的一组待编码数据的编码结果;
判断是否完成对目标数据集的编码运算,若是,则结束,若否,则返回执行从目标数据集中获取一组待编码数据的步骤。
本申请实施例提供的一种计算机可读存储介质中,计算机可读存储介质中存储有计算机子程序,计算机子程序被处理器执行时具体实现:根据每一个待编码数据的运算结果确定当前获取的一组待编码数据的编码结果之后,将每一组待编码数据的编码结果进行合并运算,得到目标数据集的编码结果。
本申请实施例提供的一种计算机可读存储介质中,计算机可读存储介质中存储有计算机子程序,计算机子程序被处理器执行时具体实现:将每一组待编码数据的编码结果进行合并运算之前,获取匹配长度阈值;得到目标数据集的编码结果之后,判断目标数据集的编码结果中的每一个编码数据的匹配长度是否大于匹配长度阈值,若是,则将匹配长度大于匹配长度阈值的编码数据拆分为N个,拆分后的每个编码数据的匹配长度均不大于匹配长度阈值,N为正整数且大于1。
本申请实施例提供的一种计算机可读存储介质中,计算机可读存储介质中存储有计算机子程序,计算机子程序被处理器执行时具体实现:采用预先基于OpenCL语言编写的RLE算法同时对每一个待编码数据进行编码长度匹配计算。
本申请实施例提供的一种计算机可读存储介质中,计算机可读存储介质中存储有计算机子程序,计算机子程序被处理器执行时具体实现:从目标数据集中获取一组待编码数据之前,获取目标数据集中第一个待编码数据的数据位置;将第一个待编码数据的数据位置作为当前数据位置;从当前数据位置开始,获取一组待编码数据;得到每一个待编码数据的运算结果之后,判断是否完成对目标数据集的编码运算之前,将当前数据位置与一组待编码数据的匹配长度的和作为下一组待编码数据的当前数据位置。
本申请实施例提供的一种计算机可读存储介质中,计算机可读存储介质中存储有计算机子程序,计算机子程序被处理器执行时具体实现:利用移位寄存器从目标数据集中获取一组待编码数据。
本申请实施例提供的一种计算机可读存储介质中,计算机可读存储介质中存储有计算机子程序,计算机子程序被处理器执行时具体实现:从FPGA的本地内存中存储的目标数据集中获取一组待编码数据。
这里所说的计算机可读存储介质包括随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质。
本申请提供的一种计算机可读存储介质中,基于FPGA异构的RLE编码算法的实现原理如下:
初始化参数,设置FPGA硬件资源可接受的最大并行数VEC、RLE编码中的最大匹配长度VEC1、当前数据位置fvp、FPGA本地内存中目标数据集data[VEC1];
加载VEC个数据存入data[VEC]~data[2*VEC-1]中;
设置输入数据的位置input_pos=data[VEC];
将data[VEC]~data[2*VEC-1]中的数据移位到data[0]~data[VEC-1]中;
从第input_pos位开始加载VEC个数据至data[0]~data[VEC-1]中;
对data[0]~data[VEC-1]的VEC个待编码数据并行计算查找其在本地内存数组中的匹配长度;
设置临时长度curr_fvp=fvp;
根据每个待编码数据的匹配长度计算更新fvp;
根据curr_fvp和匹配长度重新计算更新获得待编码数据有效的匹配长度,将无效的匹配长度值设为-1;
根据有效匹配长度存储RLE编码结果;
input_pos=input_pos+VEC;
是否遍历完全部数据,若是,则结束,若否,则返回执行将data[VEC]~data[2*VEC-1]中的数据移位到data[0]~data[VEC-1]中的步骤。
请参阅图8和图9,图8为基于OpenCL并行描述的RLE算法的实现流程图,图9为RTL硬件描述语言实现的fvp更新部分的逻辑示意图,其中i表示当前待编码数据的数据位置。
本申请实施例提供的一种RLE算法实现系统、设备及计算机可读存储介质中相关部分的说明请参见本申请实施例提供的一种RLE算法实现方法中对应部分的详细说明,在此不再赘述。另外,本申请实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (9)
1.一种RLE算法实现方法,其特征在于,应用于FPGA中,包括:
获取所述FPGA的并行数;
从目标数据集中获取一组待编码数据,一组所述待编码数据中所述待编码数据的数量小于等于所述FPGA的并行数;
采用预先编写的RLE算法同时对每一个所述待编码数据进行编码长度匹配计算,得到每一个所述待编码数据的运算结果;
根据每一个所述待编码数据的运算结果确定当前获取的一组所述待编码数据的编码结果;
判断是否完成对所述目标数据集的编码运算,若是,则结束,若否,则返回执行所述从目标数据集中获取一组待编码数据的步骤;
其中,所述根据每一个所述待编码数据的运算结果确定当前获取的一组所述待编码数据的编码结果之后,所述判断是否完成对所述目标数据集的编码运算之前,还包括:
获取匹配长度阈值;
判断所述目标数据集的编码结果中的每一个编码数据的匹配长度是否大于所述匹配长度阈值,若是,则将匹配长度大于所述匹配长度阈值的编码数据拆分为N个,拆分后的每个编码数据的匹配长度均不大于所述匹配长度阈值,N为正整数且大于1。
2.根据权利要求1所述的方法,其特征在于,所述根据每一个所述待编码数据的运算结果确定当前获取的一组所述待编码数据的编码结果之后,还包括:
将每一组所述待编码数据的编码结果进行合并运算,得到所述目标数据集的编码结果。
3.根据权利要求1所述的方法,其特征在于,所述采用预先编写的RLE算法同时对每一个所述待编码数据进行编码长度匹配计算,包括:
采用预先基于OpenCL语言编写的RLE算法同时对每一个所述待编码数据进行编码长度匹配计算。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述从目标数据集中获取一组待编码数据之前,还包括:
获取所述目标数据集中第一个待编码数据的数据位置;
将第一个所述待编码数据的数据位置作为当前数据位置;
所述从目标数据集中获取一组待编码数据,包括:
从当前数据位置开始,获取一组所述待编码数据;
所述得到每一个所述待编码数据的运算结果之后,所述判断是否完成对所述目标数据集的编码运算之前,还包括:
将当前数据位置与一组所述待编码数据的匹配长度的和作为下一组所述待编码数据的当前数据位置。
5.根据权利要求4所述的方法,其特征在于,所述从目标数据集中获取一组待编码数据,包括:
利用移位寄存器从所述目标数据集中获取一组待编码数据。
6.根据权利要求4所述的方法,其特征在于,所述从目标数据集中获取一组待编码数据,包括:
从所述FPGA的本地内存中存储的目标数据集中获取一组待编码数据。
7.一种RLE算法实现系统,其特征在于,应用于FPGA中,包括:
第一获取模块,用于获取所述FPGA的并行数;
第二获取模块,用于从目标数据集中获取一组待编码数据,一组所述待编码数据中所述待编码数据的数量小于等于所述FPGA的并行数;
计算模块,用于采用预先编写的RLE算法同时对每一个所述待编码数据进行编码长度匹配计算,得到每一个所述待编码数据的运算结果;
第一确定模块,用于根据每一个所述待编码数据的运算结果确定当前获取的一组所述待编码数据的编码结果;第一判断模块,用于判断是否完成对所述目标数据集的编码运算,若是,则结束,若否,则提示所述第二获取模块执行所述从目标数据集中获取一组待编码数据的步骤;
其中,还包括:
第三获取模块,用于所述第一确定模块根据每一个所述待编码数据的运算结果确定当前获取的一组所述待编码数据的编码结果之后,所述第一判断模块判断是否完成对所述目标数据集的编码运算之前,获取匹配长度阈值;
第二判断模块,用于判断所述目标数据集的编码结果中的每一个编码数据的匹配长度是否大于所述匹配长度阈值,若是,则将匹配长度大于所述匹配长度阈值的编码数据拆分为N个,拆分后的每个编码数据的匹配长度均不大于所述匹配长度阈值,N为正整数且大于1。
8.一种RLE算法实现设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至6任一项所述的RLE算法实现方法的步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的RLE算法实现方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810549623.2A CN108832935B (zh) | 2018-05-31 | 2018-05-31 | 一种rle算法实现方法、系统、设备及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810549623.2A CN108832935B (zh) | 2018-05-31 | 2018-05-31 | 一种rle算法实现方法、系统、设备及计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108832935A CN108832935A (zh) | 2018-11-16 |
CN108832935B true CN108832935B (zh) | 2022-05-10 |
Family
ID=64145706
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810549623.2A Active CN108832935B (zh) | 2018-05-31 | 2018-05-31 | 一种rle算法实现方法、系统、设备及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108832935B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116095184B (zh) * | 2023-03-07 | 2023-07-07 | 成都索贝视频云计算有限公司 | 一种结构化网络数据传输编码方法、设备及介质 |
CN118264256B (zh) * | 2024-05-29 | 2024-09-10 | 苏州元脑智能科技有限公司 | 一种数据编码方法、装置、硬件加速卡、程序产品及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1196642A (zh) * | 1997-04-11 | 1998-10-21 | 大宇电子株式会社 | 用于自适应编码一目标的轮廓的方法和装置 |
CN103124350A (zh) * | 2012-12-24 | 2013-05-29 | 东软集团股份有限公司 | 基于rle的图像压缩方法及装置 |
CN103247344A (zh) * | 2012-02-08 | 2013-08-14 | 晨星软件研发(深圳)有限公司 | 数据包装装置及数据包装方法 |
CN107565972A (zh) * | 2017-09-19 | 2018-01-09 | 郑州云海信息技术有限公司 | 一种lz编码的压缩方法、装置、设备及存储介质 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5583500A (en) * | 1993-02-10 | 1996-12-10 | Ricoh Corporation | Method and apparatus for parallel encoding and decoding of data |
US8233545B2 (en) * | 2006-08-21 | 2012-07-31 | Texas Instruments Incorporated | Run length encoding in VLIW architecture |
US8149147B2 (en) * | 2008-12-30 | 2012-04-03 | Microsoft Corporation | Detecting and reordering fixed-length records to facilitate compression |
US9098537B2 (en) * | 2012-12-20 | 2015-08-04 | Oracle International Corporation | Techniques for aligned run-length encoding |
US9748972B2 (en) * | 2015-09-14 | 2017-08-29 | Leco Corporation | Lossless data compression |
CN105306951B (zh) * | 2015-10-11 | 2019-04-09 | 华南理工大学 | 数据压缩编码的流水线并行加速方法及其系统架构 |
CN105828041A (zh) * | 2016-04-11 | 2016-08-03 | 上海大学 | 一种支持并行预处理的视频采集系统 |
CN106407285B (zh) * | 2016-08-26 | 2019-11-29 | 西安空间无线电技术研究所 | 一种基于rle和lzw的优化比特文件压缩与解压缩方法 |
CN106817584A (zh) * | 2016-12-23 | 2017-06-09 | 深圳市紫光同创电子有限公司 | 一种基于fpga的mjpeg压缩实现方法和fpga |
-
2018
- 2018-05-31 CN CN201810549623.2A patent/CN108832935B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1196642A (zh) * | 1997-04-11 | 1998-10-21 | 大宇电子株式会社 | 用于自适应编码一目标的轮廓的方法和装置 |
CN103247344A (zh) * | 2012-02-08 | 2013-08-14 | 晨星软件研发(深圳)有限公司 | 数据包装装置及数据包装方法 |
CN103124350A (zh) * | 2012-12-24 | 2013-05-29 | 东软集团股份有限公司 | 基于rle的图像压缩方法及装置 |
CN107565972A (zh) * | 2017-09-19 | 2018-01-09 | 郑州云海信息技术有限公司 | 一种lz编码的压缩方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108832935A (zh) | 2018-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6366249B2 (ja) | データ圧縮装置及び方法、データ圧縮装置を含むメモリシステム | |
WO2015200760A1 (en) | Parllel decompressing of executables for accelerating the launch and performance. | |
US10437827B2 (en) | Data access performance using decompression maps | |
WO2017071431A1 (zh) | 一种编码方法及装置 | |
CN108832935B (zh) | 一种rle算法实现方法、系统、设备及计算机存储介质 | |
CN106503165A (zh) | 压缩、解压方法、装置以及设备 | |
CN103795418B (zh) | 一种路网轨迹的无损压缩方法 | |
CN113626250B (zh) | 一种基于纠删码的条带合并方法及系统 | |
CN110089035A (zh) | 存储控制器、数据处理芯片及数据处理方法 | |
CN106294739A (zh) | 一种基于k2树和多值决策图的大规模图数据处理方法 | |
WO2016107377A1 (zh) | 一种基于准循环ldpc的数据处理方法及系统 | |
US9934234B2 (en) | Adaptive rate compression hash processor | |
KR102542239B1 (ko) | 데이터 출력 방법, 획득 방법, 장치 및 전자 기기 | |
CN115098018B (zh) | 一种数据写入方法、设备及存储介质 | |
CN103795417A (zh) | 一种最大误差可控的轨迹数据压缩方法 | |
US9455742B2 (en) | Compression ratio for a compression engine | |
US8976048B2 (en) | Efficient processing of Huffman encoded data | |
CN109872402A (zh) | 3d模型处理方法、装置、计算机设备和存储介质 | |
CN105389387A (zh) | 一种基于压缩的重复数据删除性能及重删率提升的方法和系统 | |
TW201534107A (zh) | 非順序性行程長度編碼系統及方法 | |
CN104967856A (zh) | 一种编码方法及相关设备 | |
US9722631B2 (en) | Method and apparatus for calculating estimated data compression ratio | |
US9160820B2 (en) | Large volume data transfer | |
CN105808429A (zh) | 一种面向线性约束代码的有界可达性验证方法 | |
CN106970852A (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 |