CN113300715A - 一种数据处理方法、装置、硬件压缩设备以及介质 - Google Patents
一种数据处理方法、装置、硬件压缩设备以及介质 Download PDFInfo
- Publication number
- CN113300715A CN113300715A CN202110551327.8A CN202110551327A CN113300715A CN 113300715 A CN113300715 A CN 113300715A CN 202110551327 A CN202110551327 A CN 202110551327A CN 113300715 A CN113300715 A CN 113300715A
- Authority
- CN
- China
- Prior art keywords
- data
- compressed
- compression
- character data
- target character
- 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.)
- Granted
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/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3088—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请提供一种数据处理方法、装置、硬件压缩设备以及介质,方法包括:获取待压缩数据;对待压缩数据的多个字符数据进行压缩处理,得到压缩数据,并将压缩数据写入压缩内存中,字符数据的压缩处理单位大于1bit;获取数据解压缩请求,并根据数据解压缩请求从压缩内存中获取待读取压缩数据;解压缩待读取压缩数据得到解压数据。本申请通过硬件压缩设备将待压缩数据压缩处理,得到压缩数据,且利用硬件压缩设备解压待读取压缩数据得到解压数据,避免了利用软件实现压缩或者解压缩造成的消耗CPU的情况的发生,实现了压缩算法的硬件化,极大提升压缩以及解压缩速度,提升系统性能,并且字符数据的压缩处理单位大于1bit,提高了压缩的效率。
Description
技术领域
本申请涉及压缩和解压缩技术领域,特别涉及一种数据处理方法、装置、硬件压缩设备以及介质。
背景技术
内存压缩技术是将数据按照一定的算法压缩后存入压缩内存中,系统从压缩内存中找到压缩过的数据,将其解压后即可以供操作系统使用。这样既可以增加实际可用的内存空间,又可以减少页面置换所带来的开销,从而以较小的成本提高系统的整体性能。
但是上述压缩方式是用CPU(central processing unit,中央处理器)运行压缩软件,将数据压缩之后,写进内存,再使用数据的时候,再对数据进行解压缩操作。压缩软件本身也是软件程序,运行压缩软件也是运行在CPU上的,且压缩软件本身运算比较复杂,这将极大降低系统本身的性能,同时软件的运算速度较慢。
因此,如何提供一种解决上述技术问题的方案是本领域技术人员目前需要解决的问题。
发明内容
本申请的目的是提供一种数据处理方法、装置、硬件压缩设备以及介质,能够提高压缩以及解压缩效率。其具体方案如下:
本申请提供了一种数据处理方法,应用于硬件压缩设备,包括:
获取待压缩数据;
对所述待压缩数据的多个字符数据进行压缩处理,得到压缩数据,并将所述压缩数据写入压缩内存中,所述字符数据的压缩处理单位大于1bit;
获取数据解压缩请求,并根据所述数据解压缩请求从所述压缩内存中获取待读取压缩数据;
解压缩所述待读取压缩数据得到解压数据。
优选地,所述对所述待压缩数据进行压缩处理,得到压缩数据,包括:
判断多个子RAM中是否存在所述待压缩数据的目标字符数据;
若不存在所述目标字符数据,则新建与所述目标字符数据对应的索引号,将所述索引号以及所述目标字符数据写入对应的子RAM中,编码所述目标字符数据;
若存在所述目标字符数据,则将所述目标字符数据与下一个目标字符数据结合的字符数据作为新的目标字符数据,判断多个所述子RAM中是否存在新的目标字符数据,直至完成所有的字符数据的编码;
根据所述索引号以及对应的目标字符数据得到索引表,以完成所述待压缩数据的压缩处理。
优选地,所述判断多个子RAM中是否存在所述待压缩数据的目标字符数据,包括:
并行的遍历所有所述子RAM,判断所述子RAM是否存在所述待压缩数据的所述目标字符数据。
优选地,所述根据所述索引号以及对应的目标字符数据得到索引表,以完成所述待压缩数据的压缩处理,包括:
根据所述索引号以及对应的所述目标字符数据创建初始索引表;
根据所述目标字符数据的长度以及对应的出现次数对所述初始索引表的索引号进行重新排序,得到所述索引表;
根据所述索引表更新所述编码得到的所述压缩数据。
优选地,所述字符数据的压缩处理单位为2bit。
优选地,所述将所述压缩数据写入压缩内存中,包括:
执行中断操作,发送写入请求至CPU;
获取所述CPU根据所述写入请求生成的第一使能指令,并根据所述第一使能指令配置DMA组件;
利用所述DMA组件将所述压缩数据写入所述压缩内存中;
优选地,所述获取待压缩数据,包括:
获取CPU的第二使能指令,并根据所述第二使能指令配置DMA组件;
利用DMA组件访问所述待压缩数据。
本申请提供了一种数据处理装置,包括:
待压缩数据获取模块,用于获取待压缩数据;
压缩模块,用于对所述待压缩数据的多个字符数据进行压缩处理,得到压缩数据,并将所述压缩数据写入压缩内存中,所述字符数据的压缩处理单位大于1bit;
读取模块,用于获取数据解压缩请求,并根据所述数据解压缩请求从所述压缩内存中获取待读取压缩数据;
解压缩模块,用于解压缩所述待读取压缩数据得到解压数据。
本申请提供了一种硬件压缩设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上所述数据处理方法的步骤。
本申请提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述数据处理方法的步骤。
本申请提供一种数据处理方法,应用于硬件压缩设备,包括:获取待压缩数据;对待压缩数据的多个字符数据进行压缩处理,得到压缩数据,并将压缩数据写入压缩内存中,字符数据的压缩处理单位大于1bit;获取数据解压缩请求,并根据数据解压缩请求从压缩内存中获取待读取压缩数据;解压缩待读取压缩数据得到解压数据。
可见,本申请提供了一种数据的压缩以及解压的方式,通过硬件压缩设备将待压缩数据压缩处理,得到压缩数据,且利用硬件压缩设备解压待读取压缩数据得到解压数据,避免了利用软件实现压缩或者解压缩造成的消耗CPU的情况的发生,实现了压缩算法的硬件化,极大提升压缩以及解压缩速度,提升系统性能,并且字符数据的压缩处理单位大于1bit,提高了压缩的效率。
本申请同时还提供了一种数据处理装置、硬件压缩设备以及介质,均具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为相关技术的内存压缩流程示意图;
图2为本申请实施例提供的一种数据处理方法的流程图;
图3为本申请实施例提供的一种数据处理的逻辑示意图;
图4为本申请实施例提供的一种整体结构图;
图5为本申请实施例提供的一种数据处理装置的结构示意图;
图6为本申请实施例提供的一种硬件压缩设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
常用的压缩方式是用CPU运行压缩软件,将数据压缩之后,写进内存,再使用数据的时候,再对数据进行解压缩操作。请参考图1,图1为相关技术的内存压缩流程示意图,其中,内存压缩机制是在系统的存储层次中逻辑地加入一层压缩内存层。系统在压缩内存层中以压缩的格式保存物理页面,即通过CPU运行压缩程序实现步骤1,当页面再次被系统引用时,解压该压缩页后,即可使用,即通过CPU运行解压缩程序实现的步骤3。当压缩内存中以被写满之后,通过步骤2运行解压缩程序,将完整的数据写进外部硬盘进行存储。可以理解的是,不论是内存压缩系统运行压缩程序将数据压缩后写入压缩内存,还是从压缩内存中读出压缩数据进行数据解压缩返回至主内存,这两个至关重要的步骤都是CPU在运行,而压缩算法负责,尤其是遍历词典的过程极大占用CPU,这将极大的降低系统的整体性能,同时软件的运算速度较慢,降低了系统性能。
基于上述技术问题,本实施例提供一种数据处理方法,应用于硬件压缩设备,包括:获取待压缩数据;对待压缩数据的多个字符数据进行压缩处理,得到压缩数据,并将压缩数据写入压缩内存中,字符数据的压缩处理单位大于1bit;获取数据解压缩请求,并根据数据解压缩请求从压缩内存中获取待读取压缩数据;解压缩待读取压缩数据得到解压数据。通过硬件压缩设备将待压缩数据压缩处理,得到压缩数据,且利用硬件压缩设备解压待读取压缩数据得到解压数据,避免了利用软件实现压缩或者解压缩造成的消耗CPU的情况的发生,实现了压缩算法的硬件化,极大提升压缩以及解压缩速度,提升系统性能。
具体请参考图2以及图3,图2为本申请实施例提供的一种数据处理方法的流程图,图3为本申请实施例提供的一种数据处理的逻辑示意图,具体包括:
S101、获取待压缩数据;
S102、对待压缩数据的多个字符数据进行压缩处理,得到压缩数据,并将压缩数据写入压缩内存中;
字符数据的压缩处理单位大于1bit;
其中,内存压缩系统将待压缩数据传输至硬件压缩设备,以使硬件压缩设备进行压缩处理。其中,待压缩数据存储在主内存中,压缩数据存储在压缩内存中,主内存以及压缩内存通过系统总线访问硬件压缩设备。
当完成硬件压缩后,将压缩数据写入压缩内存中,其中,压缩处理的算法可以是LZ78压缩算法,当然还可以是RLE(Run-length Encoding,游程编码)、MTF(Move-to-fronttransform,数据转换)等,用户可自定义设置。
本申请是利用硬件的方式,不再采用CPU的软件方式进行数据的压缩,极大地提高了压缩的速度,提高了系统的性能。
本实施例中不对目标字符数据的基本单位进行限定,可以是2bit,还可以是3bit以及4bit,用户可自定义设置。可以理解的是,低bit单位的校验过程速率较低,但是设计简单,高bit单位的校验过程速率高,但是设计复杂,用户可根据实际需求进行设置。
S103、获取数据解压缩请求,并根据数据解压缩请求从压缩内存中获取待读取压缩数据;
其中,在一种可实现的实施方式中,数据解压缩请求可以为从压缩内存中读取数据至主内存的请求,根据用户的读取需求,写入主内存;在另一种可实现的实施方式中,数据解压缩请求可以是当压缩内存被写满后,将数据读取至硬盘中的请求,其中该数据解压缩请求的生成可以是用户手动设置,还可以是系统内自动判断主内存的存储空间达到预设空间阈值后,自动申城数据解压缩请求,本实施例不再进行限定,只要是能够实现本实施例的目的即可。
S104、解压缩待读取压缩数据得到解压数据。
可以理解的是,当得到解压数据后,可以写入主内存空间对应的图3中的步骤S104-1,还可以写入硬盘对应的图3中的步骤S104-2,用户可根据实际需求进行设置,本实施例不再进行限定。
基于上述技术方案,本实施例提供了一种数据的压缩以及解压的方式,通过硬件压缩设备将待压缩数据压缩处理,得到压缩数据,且利用硬件压缩设备解压待读取压缩数据得到解压数据,避免了利用软件实现压缩或者解压缩造成的消耗CPU的情况的发生,实现了压缩算法的硬件化,极大提升压缩以及解压缩速度,提升系统性能。
基于上述实施例,步骤S102,包括:
S1021、判断多个子RAM中是否存在待压缩数据的目标字符数据;
本实施例不对子RAM(Random Access Memory,随机存取存储器)的数量进行限定,用户可自定义设置,可以理解的是,如果数量越多,当为并行执行判断的话,则遍历的速度越快,硬件资源的开销越大;当为依次执行判断的话,则遍历的速度可能会降低。
本实施例以LZ78算法应用在硬件压缩设备中,利用校验模块进行待压缩数据的读操作,实现压缩,具体是遍历所有的子RAM确定是否存在当前输入的待压缩数据的目标字符数据,该目标字符数据还包括存在子RAM中的第一目标字符数据以及第一目标字符数据后的不存在于子RAM中的第二目标字符数据。
进一步的,为了提高判断速度,本实施例采用并行遍历所有子RAM的方式,提高遍历的速度,具体的,判断多个子RAM中是否存在待压缩数据的目标字符数据,包括:并行的遍历所有子RAM,判断子RAM是否存在待压缩数据的目标字符数据。可以理解的是,当查找到目标字符数据时,则停止其他子RAM的遍历。可见,本实施例采用并行遍历所有子RAM的方式,提高遍历的速度。
S1022、若不存在目标字符数据,则新建与目标字符数据对应的索引号,将索引号以及目标字符数据写入对应的子RAM中,编码目标字符数据;
如果不存在目标字符数据,则新建索引号,且将目标字符数据写入子RAM中。
S1023、若存在目标字符数据,则将目标字符数据与下一个目标字符数据结合的字符数据作为新的目标字符数据,判断多个子RAM中是否存在新的目标字符数据,直至完成所有的字符数据的编码;
以待压缩数据的所有目标字符数据string=011010110101110101010111为例:
当以2bit为单位时,输入目标字符数据01时,遍历RAM0~RAM(N-1),且,当已查找到01时,则停止其他RAM的遍历;若不存在01时,则创建内容01,索引号1,将索引号1以及目标字符数据01写入RAM0中,可以为(1,01);并编码01,得到子编码数据(0,01);
输入下一个目标字符数据10,遍历RAM0~RAM(N-1),若不存在10时,则创建内容10,索引号2,将索引号2以及目标字符数据10写入RAM1中,可以为(2,10);并编码10,得到子编码数据(0,10);
输入下一个目标字符数据10,遍历RAM0~RAM(N-1),存在10时,且读出10的索引为2,则暂存10;输入下一个目标字符数据11,与暂存的10组成1011,遍历RAM0~RAM(N-1),不存在1011,则创建内容1011,索引号3,将索引号3以及目标字符数据1011写入RAM2中,可以为(3,1011);并编码1011,得到子编码数据(2,11)。其他的目标字符数据编码的过程本实施例不再进行赘述。
S1024、根据索引号以及对应的目标字符数据得到索引表,以完成待压缩数据的压缩处理。
在一种可实现的实施方式中,根据常规方式得到的索引表,以string=011010110101110101010111为例,得到的索引表为表1。
表1
索引号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
字符数据 | 01 | 10 | 1011 | 0101 | 11 | 010101 | 0111 |
在另一种可实现的实施方式中,对常规的索引好进行重新排序,减少最终的压缩数据量,具体的,根据索引号以及对应的目标字符数据得到索引表,以完成待压缩数据的压缩处理,包括:根据索引号以及对应的目标字符数据创建初始索引表;根据目标字符数据的长度以及对应的出现次数对初始索引表的索引号进行重新排序,得到索引表;根据索引表更新编码得到的压缩数据。
其中,根据目标字符数据的长度以及对应的出现次数对初始索引表的索引号进行重新排序,以实现将目标字符数据的长度较长的索引号和出现概率较大的数据内容的索引号,用较短的索引号的目标字符数据编码实现;将较短的索引号和出现概率较小的数据内容的索引号,用较长的编码实现,然后目的是使最终的压缩后的数据量(包含修改后的索引号)降到最低。
例如,若目标字符数据010101的出现次数为100次,而01出现了1次,索引号=1,用二进制1’b1就能表示,而索引号=6,则需用二进制3’b110。因此传统方案下,编码索引号=1(10次01)和索引号=6(100次010101),编码需要的bit数目是1*2*10+3*100*6=1820个bits。而如果将010101用索引号=1来表示,将01用索引号=6来表示,则编码所需的bit是3*2*10+1*100*6=660个bits。只是将原先的索引号和对应的目标字符数进行重排序,并不重新产生新的索引号。
通过重新排序产生新的对应关系,因此,需要根据索引表更新编码得到的压缩数据。
可见,本实施例对原始的索引号的长度和出现的频率进行统计,然后对索引号与数据对象进行重排序,使原始较长的索引号和出现频率高的数据内容的索引号,使用较短的编码实现,减少最终的压缩数据量。
基于上述任一实施例,为了提高校验过程速率,字符数据的压缩处理单位为2bit,当然也可以是3bit。
以2bit为例,string=011010110101110101010111时,输入目标字符数据01时,遍历RAM0~RAM(N-1),且,当已查找到01时,则停止其他子RAM的遍历;若不存在01时,则创建内容01,索引号1,将索引号1以及目标字符数据01写入RAM0中,可以为(1,01);并编码01,得到子编码数据(0,01);按照上述方式依次校验。
以3bit为例,string=011010110101110101010111时,输入目标字符数据011时,遍历RAM0~RAM(N-1);若不存在011时,则创建内容011,索引号1,将索引号1以及目标字符数据011写入RAM0中,可以为(1,011);并编码01,得到子编码数据(0,011);
输入下一个目标字符数据010,遍历RAM0~RAM(N-1),若不存在010时,则创建内容010,索引号2,将索引号2以及目标字符数据010写入RAM1中,可以为(2,010);并编码010,得到子编码数据(0,010);
输入下一个目标字符数据110,遍历RAM0~RAM(N-1),若不存在110时,则创建内容110,索引号3,将索引号3以及目标字符数据110写入RAM2中,可以为(3,110);并编码110,得到子编码数据(0,110);
输入下一个目标字符数据101,遍历RAM0~RAM(N-1),若不存在101时,则创建内容101,索引号4,将索引号4以及目标字符数据101写入RAM3中,可以为(4,101);并编码101,得到子编码数据(0,101);
输入下一个目标字符数据110,遍历RAM0~RAM(N-1),存在110时,且读出110的索引为3,则暂存110;输入下一个目标字符数据101,与暂存的110组成110101,遍历RAM0~RAM(N-1),不存在110101,则创建内容110101,索引号5,将索引号5以及目标字符数据110101写入RAM4中,可以为(4,110101);并编码110101,得到子编码数据(3,101)。
进一步的,将压缩数据写入压缩内存中,包括:执行中断操作,发送写入请求至CPU;获取CPU根据写入请求生成的第一使能指令,并根据第一使能指令配置DMA组件;利用DMA组件将压缩数据写入压缩内存中。
完成重排序之后得到索引表,或者基于原始的索引表后,硬件压缩设备产生中断,上报CPU,CPU使能DMA(Direct Memory Access,直接存储器访问)组件,并配置DMA组件,将压缩后的数据,写入压缩内存,完成数据压缩。
进一步的,获取待压缩数据,包括:获取CPU的第二使能指令,并根据第二使能指令配置DMA组件;利用DMA组件访问待压缩数据。
当内存压缩系统需要对数据进行压缩时候,通过CPU使能并配置硬件压缩设备内部的DMA组件,发起DMA读操作。DMA组件通过系统总线访问存储在主内存中需要压缩的内存数据;需要进行压缩的待压缩数据通过系统总线传递至DMA组件;DMA控制器将读返回的待压缩数据暂存进RAM_source,以便校验组件,发起对待压缩数据的读操作完成编码。
基于上述任一实施例,可以理解的是,解压缩的流程与压缩的流程相反,具体解压缩过程包括:
内存压缩系统接收到操作系统的解压缩请求之后,使能并配置DMA组件,将压缩数据读出;并使用索引表进行数据恢复;恢复完成后,产生中断,上报CPU;CPU再次使能并配置DMA组件,将数据回复后的数据写进主内存供操作系统使用。
基于上述任一实施例,本实施例提供一种具体的数据压缩以及解压缩过程,请参考图4,图4为本申请实施例提供的一种整体结构图。
以String=0110101101010101010111为例:
输入目标字符数据01时,遍历RAM0~RAM(N-1),且,当已查找到01时,则停止其他RAM的遍历;若不存在01时,则创建内容01,索引号1,将索引号1以及目标字符数据01写入RAM0中,可以为(1,01);并编码01,得到子编码数据(0,01);输出(0,01)至编码组件RAM_CMP;
输入下一个目标字符数据10,遍历RAM0~RAM(N-1),若不存在10时,则创建内容10,索引号2,将索引号2以及目标字符数据10写入RAM1中,可以为(2,10);并编码10,得到子编码数据(0,10);输出(0,10)至RAM_CMP;
输入下一个目标字符数据10,遍历RAM0~RAM(N-1),存在10时,且读出10的索引为2,则暂存10;输入下一个目标字符数据11,与暂存的10组成1011,遍历RAM0~RAM(N-1),不存在1011,则创建内容1011,索引号3,将索引号3以及目标字符数据1011写入RAM2中,可以为(3,1011);并编码1011,得到子编码数据(2,11),输出(2,11)至RAM_CMP;
输入下一个目标字符数据01,遍历RAM0~RAM(N-1),存在01时,且读出01的索引为1,则暂存01;输入下一个目标字符数据01,与暂存的01组成0101,遍历RAM0~RAM(N-1),不存在0101,则创建内容0101,索引号4,将索引号4以及目标字符数据0101写入RAM3中,可以为(4,0101);并编码0101,得到子编码数据(1,01);输出(1,01)至RAM_CMP;
输入下一个目标字符数据01,遍历RAM0~RAM(N-1),存在01时,且读出01的索引为1,则暂存01;输入下一个目标字符数据01,与暂存的01组成0101,遍历RAM0~RAM(N-1),存在0101,且读出0101的索引为4,则暂存0101;输入下一个目标字符数据01,与暂存的0101组成010101,遍历RAM0~RAM(N-1),不存在010101,则创建内容010101,索引号5,将索引号5以及目标字符数据010101写入RAM4中,可以为(5,010101);并编码010101,得到子编码数据(4,01);输出(4,01)至RAM_CMP;
输入下一个目标字符数据01,遍历RAM0~RAM(N-1),存在01时,且读出01的索引为1,则暂存01;输入下一个目标字符数据11,与暂存的01组成0111,遍历RAM0~RAM(N-1),不存在0111,则创建内容0111,索引号6,将索引号6以及目标字符数据0111写入RAM5中,可以为(5,0111);并编码0111,得到子编码数据(1,11);输出(1,11)至RAM_CMP;
上述过程为校验模块遍历RAM0~RAM(N-1)和将新建的内容及索引号写进RAM0~RAM(N-1)的过程;
对于上述过程创建索引表主要是在索引创建组件CREATE_INDEX中,上述得到的索引表为表2:
表2
索引号 | 1 | 2 | 3 | 4 | 5 | 6 |
字符数据 | 01 | 10 | 1011 | 0101 | 010101 | 0111 |
最终输出至RAM_CMP的为:(0,01)、(0,10)、(2,11)、(1,01)、(4,01)(1,11);
进一步的,可以利用索引号重排序组件INDEX_MDY对统算法流程的索引号的产生进行重新排序,目的是减少最终的压缩数据量。对原始的索引号对应的字符数据的长度和出现的频率进行统计,然后对索引号与数据对象进行重排序,使原始字符数据较长的索引号和出现频率高的字符数据的索引号,使用较短的字符数据编码实现。而将较原始较短的字符数据的索引号和出现频率较低的字符数据的索引号,用较长字符数据的编码实现。值得注意的是,该子模块只是将原先的索引号和对应的字符数据进行重排序,并不重新产生新的索引号。
用INDEX_MDY产生的新索引表,对原始的RAM_CMP进行的修改。
完成索引号的重排序之后,硬件压缩设备产生中断,上报CPU,CPU使能DMA,并配置DMA,将压缩后的数据,写入压缩内存。完成数据压缩。
解压缩过程包括:
内存压缩系统接收到操作系统的解压缩指令之后,使能并配置DMA,将压缩数据读出;并使用索引表组件RAM_INDEX中的索引表进行数据恢复;恢复完成后,产生中断,上报CPU;CPU再次使能并配置DMA,将数据回复后的数据写进主内存供操作系统使用。
基于上述技术方案,利用硬件的方式,实现内存数据的压缩,并设计了一整套数据压缩流程,实现了压缩算法的硬件化,极大提升压缩以及解压缩速度,提升系统性能。对原始压缩算法进行优化,提出用双bits查询和多RAM并行查找的硬件设计方法,极大加快了遍历的过程,提升压缩速度。提出并设计索引号重排序功能,使原始字典中出现概率高的字段和索引号比较长的字段用较短的索引号实现,修改原始字典。进一步降低了压缩数据量,提高压缩效率,提升了系统性能。
下面对本申请实施例提供的一种数据处理装置进行介绍,下文描述的装置与上文描述的方法可相互对应参照,相关模块均设置于硬件压缩设备中,参考图5,图5为本申请实施例提供的一种数据处理装置的结构示意图,包括:
待压缩数据获取模块510,用于获取待压缩数据;
压缩模块520,用于对待压缩数据的多个字符数据进行压缩处理,得到压缩数据,并将压缩数据写入压缩内存中,字符数据的压缩处理单位大于1bit;
读取模块530,用于获取数据解压缩请求,并根据数据解压缩请求从压缩内存中获取待读取压缩数据;
解压缩模块540,用于解压缩待读取压缩数据得到解压数据。
优选地,压缩模块520,包括:
判断单元,用于判断多个子RAM中是否存在待压缩数据的目标字符数据;
第一编码单元,用于若不存在目标字符数据,则新建与目标字符数据对应的索引号,将索引号以及目标字符数据写入对应的子RAM中,编码目标字符数据;
第二编码单元,用于若存在目标字符数据,则将目标字符数据与下一个目标字符数据结合的字符数据作为新的目标字符数据,判断多个子RAM中是否存在新的目标字符数据,直至完成所有的字符数据的编码;
索引表获得单元,用于根据索引号以及对应的目标字符数据得到索引表,以完成待压缩数据的压缩处理。
优选地,判断单元用于:
并行的遍历所有子RAM,判断子RAM是否存在待压缩数据的目标字符数据。
优选地,索引表获得单元用于:
根据索引号以及对应的目标字符数据创建初始索引表;
根据目标字符数据的长度以及对应的出现次数对初始索引表的索引号进行重新排序,得到索引表;
根据索引表更新编码得到的压缩数据。
优选地,字符数据的压缩处理单位为2bit。
优选地,压缩模块520,用于:
执行中断操作,发送写入请求至CPU;
获取CPU根据写入请求生成的第一使能指令,并根据第一使能指令配置DMA组件;
利用DMA组件将压缩数据写入压缩内存中;
优选地,待压缩数据获取模块210,用于:
获取CPU的第二使能指令,并根据第二使能指令配置DMA组件;
利用DMA组件访问待压缩数据。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
下面对本申请实施例提供的一种硬件压缩设备进行介绍,下文描述的硬件压缩设备与上文描述的方法可相互对应参照。
本申请还提供了一种硬件压缩设备,参见图6所示,图6为本申请实施例提供的一种硬件压缩设备的结构示意图,包括:
存储器601,用于存储计算机程序;
处理器602,用于执行计算机程序时实现如上述方法的步骤。
存储器601包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机可读指令,该内存储器为非易失性存储介质中的操作系统和计算机可读指令的运行提供环境。处理器602为硬件压缩设备提供计算和控制能力,执行存储器601中保存的计算机程序时,可以实现以下步骤:获取待压缩数据;对待压缩数据的多个字符数据进行压缩处理,得到压缩数据,并将压缩数据写入压缩内存中,字符数据的压缩处理单位大于1bit;获取数据解压缩请求,并根据数据解压缩请求从压缩内存中获取待读取压缩数据;解压缩待读取压缩数据得到解压数据。
由于硬件压缩设备部分的实施例与方法部分的实施例相互对应,因此硬件压缩设备部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
下面对本申请实施例提供的一种计算机可读存储介质进行介绍,下文描述的计算机可读存储介质与上文描述的方法可相互对应参。
本申请提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上数据处理方法的步骤。
由于计算机可读存储介质部分的实施例与方法部分的实施例相互对应,因此计算机可读存储介质部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的一种数据处理方法、装置、硬件压缩设备以及介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
Claims (10)
1.一种数据处理方法,其特征在于,应用于硬件压缩设备,包括:
获取待压缩数据;
对所述待压缩数据的多个字符数据进行压缩处理,得到压缩数据,并将所述压缩数据写入压缩内存中,所述字符数据的压缩处理单位大于1bit;
获取数据解压缩请求,并根据所述数据解压缩请求从所述压缩内存中获取待读取压缩数据;
解压缩所述待读取压缩数据得到解压数据。
2.根据权利要求1所述的数据处理方法,其特征在于,所述对所述待压缩数据进行压缩处理,得到压缩数据,包括:
判断多个子RAM中是否存在所述待压缩数据的目标字符数据;
若不存在所述目标字符数据,则新建与所述目标字符数据对应的索引号,将所述索引号以及所述目标字符数据写入对应的子RAM中,编码所述目标字符数据;
若存在所述目标字符数据,则将所述目标字符数据与下一个目标字符数据结合的字符数据作为新的目标字符数据,判断多个所述子RAM中是否存在新的目标字符数据,直至完成所有的字符数据的编码;
根据所述索引号以及对应的目标字符数据得到索引表,以完成所述待压缩数据的压缩处理。
3.根据权利要求2所述的数据处理方法,其特征在于,所述判断多个子RAM中是否存在所述待压缩数据的目标字符数据,包括:
并行的遍历所有所述子RAM,判断所述子RAM是否存在所述待压缩数据的所述目标字符数据。
4.根据权利要求2所述的数据处理方法,其特征在于,所述根据所述索引号以及对应的目标字符数据得到索引表,以完成所述待压缩数据的压缩处理,包括:
根据所述索引号以及对应的所述目标字符数据创建初始索引表;
根据所述目标字符数据的长度以及对应的出现次数对所述初始索引表的索引号进行重新排序,得到所述索引表;
根据所述索引表更新所述编码得到的所述压缩数据。
5.根据权利要求1所述的数据处理方法,其特征在于,所述字符数据的压缩处理单位为2bit。
6.根据权利要求1所述的数据处理方法,其特征在于,所述将所述压缩数据写入压缩内存中,包括:
执行中断操作,发送写入请求至CPU;
获取所述CPU根据所述写入请求生成的第一使能指令,并根据所述第一使能指令配置DMA组件;
利用所述DMA组件将所述压缩数据写入所述压缩内存中。
7.根据权利要求1所述的数据处理方法,其特征在于,所述获取待压缩数据,包括:
获取CPU的第二使能指令,并根据所述第二使能指令配置DMA组件;
利用DMA组件访问所述待压缩数据。
8.一种数据处理装置,其特征在于,包括:
待压缩数据获取模块,用于获取待压缩数据;
压缩模块,用于对所述待压缩数据的多个字符数据进行压缩处理,得到压缩数据,并将所述压缩数据写入压缩内存中,所述字符数据的压缩处理单位大于1bit;
读取模块,用于获取数据解压缩请求,并根据所述数据解压缩请求从所述压缩内存中获取待读取压缩数据;
解压缩模块,用于解压缩所述待读取压缩数据得到解压数据。
9.一种硬件压缩设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述数据处理方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述数据处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110551327.8A CN113300715B (zh) | 2021-05-20 | 2021-05-20 | 一种数据处理方法、装置、硬件压缩设备以及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110551327.8A CN113300715B (zh) | 2021-05-20 | 2021-05-20 | 一种数据处理方法、装置、硬件压缩设备以及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113300715A true CN113300715A (zh) | 2021-08-24 |
CN113300715B CN113300715B (zh) | 2022-08-19 |
Family
ID=77323047
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110551327.8A Active CN113300715B (zh) | 2021-05-20 | 2021-05-20 | 一种数据处理方法、装置、硬件压缩设备以及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113300715B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114040027A (zh) * | 2021-10-29 | 2022-02-11 | 深圳智慧林网络科技有限公司 | 一种基于双模式的数据压缩方法、装置和数据解压方法 |
CN114040028A (zh) * | 2021-10-29 | 2022-02-11 | 深圳智慧林网络科技有限公司 | 一种基于三种模式的数据压缩方法和数据解压方法 |
WO2023193528A1 (zh) * | 2022-04-08 | 2023-10-12 | 深圳Tcl新技术有限公司 | 文件解压方法、装置、电子设备及计算机可读存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6879266B1 (en) * | 1997-08-08 | 2005-04-12 | Quickshift, Inc. | Memory module including scalable embedded parallel data compression and decompression engines |
CN104202054A (zh) * | 2014-09-16 | 2014-12-10 | 东南大学 | 一种硬件lzma压缩实现系统及方法 |
CN104281528A (zh) * | 2013-07-09 | 2015-01-14 | 浙江大华技术股份有限公司 | 一种数据存储方法及装置 |
US20170235497A1 (en) * | 2016-02-12 | 2017-08-17 | Oracle International Corporation | Decompression history buffer read/write pipelines |
CN107250991A (zh) * | 2015-02-13 | 2017-10-13 | 谷歌公司 | 透明硬件辅助存储器解压缩 |
CN108599774A (zh) * | 2018-04-26 | 2018-09-28 | 郑州云海信息技术有限公司 | 一种压缩方法、系统、装置及计算机可读存储介质 |
CN111625191A (zh) * | 2020-05-21 | 2020-09-04 | 苏州浪潮智能科技有限公司 | 一种数据读写方法、装置及电子设备和存储介质 |
-
2021
- 2021-05-20 CN CN202110551327.8A patent/CN113300715B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6879266B1 (en) * | 1997-08-08 | 2005-04-12 | Quickshift, Inc. | Memory module including scalable embedded parallel data compression and decompression engines |
CN104281528A (zh) * | 2013-07-09 | 2015-01-14 | 浙江大华技术股份有限公司 | 一种数据存储方法及装置 |
CN104202054A (zh) * | 2014-09-16 | 2014-12-10 | 东南大学 | 一种硬件lzma压缩实现系统及方法 |
CN107250991A (zh) * | 2015-02-13 | 2017-10-13 | 谷歌公司 | 透明硬件辅助存储器解压缩 |
US20170235497A1 (en) * | 2016-02-12 | 2017-08-17 | Oracle International Corporation | Decompression history buffer read/write pipelines |
CN108599774A (zh) * | 2018-04-26 | 2018-09-28 | 郑州云海信息技术有限公司 | 一种压缩方法、系统、装置及计算机可读存储介质 |
CN111625191A (zh) * | 2020-05-21 | 2020-09-04 | 苏州浪潮智能科技有限公司 | 一种数据读写方法、装置及电子设备和存储介质 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114040027A (zh) * | 2021-10-29 | 2022-02-11 | 深圳智慧林网络科技有限公司 | 一种基于双模式的数据压缩方法、装置和数据解压方法 |
CN114040028A (zh) * | 2021-10-29 | 2022-02-11 | 深圳智慧林网络科技有限公司 | 一种基于三种模式的数据压缩方法和数据解压方法 |
WO2023071893A1 (zh) * | 2021-10-29 | 2023-05-04 | 深圳智慧林网络科技有限公司 | 一种基于三种模式的数据压缩方法和数据解压方法 |
CN114040027B (zh) * | 2021-10-29 | 2023-11-24 | 深圳智慧林网络科技有限公司 | 一种基于双模式的数据压缩方法、装置和数据解压方法 |
CN114040028B (zh) * | 2021-10-29 | 2023-11-24 | 深圳智慧林网络科技有限公司 | 一种基于三种模式的数据压缩方法和数据解压方法 |
WO2023193528A1 (zh) * | 2022-04-08 | 2023-10-12 | 深圳Tcl新技术有限公司 | 文件解压方法、装置、电子设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113300715B (zh) | 2022-08-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113300715B (zh) | 一种数据处理方法、装置、硬件压缩设备以及介质 | |
CN107565971B (zh) | 一种数据压缩方法及装置 | |
US7924183B2 (en) | Method and system for reducing required storage during decompression of a compressed file | |
US6597812B1 (en) | System and method for lossless data compression and decompression | |
US10268380B2 (en) | Methods, devices and systems for semantic-value data compression and decompression | |
WO2020025006A1 (zh) | 数据压缩、解压方法及相关装置、电子设备、系统 | |
DE112016006059T5 (de) | Hardwareeinrichtungen und Verfahren für Datendekomprimierung | |
WO2023045204A1 (zh) | 一种有限状态熵编码表的生成方法、系统、介质及设备 | |
CN110518917B (zh) | 基于Huffman编码的LZW数据压缩方法及系统 | |
CN103236847A (zh) | 基于多层哈希结构与游程编码的数据无损压缩方法 | |
US9479194B2 (en) | Data compression apparatus and data decompression apparatus | |
CN108886367A (zh) | 用于压缩和解压缩数据的方法、设备和系统 | |
US9137336B1 (en) | Data compression techniques | |
CN110958022A (zh) | 连续性曲线的数据压缩方法、装置及其相关设备 | |
CN110419036B (zh) | 数据压缩方法、设备与计算设备 | |
CN108880559B (zh) | 数据压缩方法、数据解压缩方法、压缩设备及解压缩设备 | |
CN113630125A (zh) | 数据压缩、编码解压缩方法、装置、电子设备及存储介质 | |
CN113824449B (zh) | 一种静态霍夫曼并行编码方法、系统、存储介质及设备 | |
US9979415B2 (en) | Data compression apparatus, data decompression apparatus, data compression method, data compression method, and computer readable medium | |
CN115189696A (zh) | 一种基于Huffman解码表的硬件压缩解压方法 | |
Andrzejewski et al. | GPU-PLWAH: GPU-based implementation of the PLWAH algorithm for compressing bitmaps | |
Nandi et al. | Windowed Huffman Coding with limited distinct symbols | |
CN108932315A (zh) | 一种数据解压的方法以及相关装置 | |
US10491241B1 (en) | Data compression scheme utilizing a repetitive value within the data stream | |
Howard et al. | Parallel lossless image compression using Huffman and arithmetic coding |
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 |