CN103248369A - 基于fpga的压缩系统及其方法 - Google Patents
基于fpga的压缩系统及其方法 Download PDFInfo
- Publication number
- CN103248369A CN103248369A CN2013101970320A CN201310197032A CN103248369A CN 103248369 A CN103248369 A CN 103248369A CN 2013101970320 A CN2013101970320 A CN 2013101970320A CN 201310197032 A CN201310197032 A CN 201310197032A CN 103248369 A CN103248369 A CN 103248369A
- Authority
- CN
- China
- Prior art keywords
- data
- string
- byte
- module
- compression
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于FPGA的压缩系统及其方法,其包括将外部数据进行压缩的FPGA模块、向FPGA模块提供外部数据的数据模块、接收经FPGA模块压缩后的数据的外部存储模块。其中FPGA模块将GZIP压缩算法嵌入到FPGA硬件中,用于对FPGA中的目标文件先进行LZ77算法,再进行哈夫曼编码,从而实现高效压缩目的。
Description
技术领域
本发明涉及数据的压缩技术,尤其是一种基于FPGA的压缩系统及其方法。
背景技术
在嵌入式开发系统中,对数据进行压缩和解压缩是非常重要的手段之一,其可以大幅度的提高磁盘的有效容量,提高读写操作时输入输出的有效带宽,提高应用层程序的执行速度。当前,数据的压缩和解压缩一般采用GZIP算法,并通过软件的方式进行数据处理,然而GZIP算法里面有大量的串行的操作,使用软件算法进行处理的效率较低。而且GZIP解压缩的算法均采用软件来实现,它采用多级查表的方式完成哈夫曼解码,也就是说接触一个码可能需要查表多次,该方法的优点是内存的使用量较少,对应大部分查表只需要一次查表即可完成,效率较高,所以在软件里面广泛应用,但该算法的并行度较低,在大规模的数据处理中会占用大量的CPU资源,不合适硬件实现。因此在大规模的数据处理中,待压缩的数据流巨大;其使用CPU进行压缩解压缩时必然要占用大量的CPU资源,在进行数据解压时CPU资源占用的问题更为明显。
因此,如何提高压缩处理效率成为现有GZIP解压缩技术亟待解决的技术问题,尤其是能否针对现有GZIP解压算法提供相应的解决方案。
发明内容
本发明要解决的一个技术问题是提供一个压缩方法和硬件系统,来提高磁盘的有效容量,同时也有效的提高原有GZIP压缩算法的处理效率。
本发明的一个方面提供了一种基于FPGA的压缩系统,其包括:将外部数据进行压缩的FPGA模块、向FPGA模块提供外部数据的数据模块、接收经FPGA模块压缩后的数据的外部存储模块,其中FPGA模块包括与数据模块相连的输入接口单元、与接口单元相连的存储单元、压缩文件格式单元、对由存储单元而来的数据按照压缩文件格式单元的文件格式进行压缩的压缩算法单元、以及将压缩算法单元所压缩的数据输出至外部存储模块的输出接口单元。
优选地,所述存储单元为内存,而外部存储模块为硬盘。
优选地,所述文件格式具有头部、数据部、和用于校验的尾部,其中所述头部包括ID1、ID2、CM、FLG、MTIME、XFL、OS、以及额外的头字段,而所述数据部为DEFLATE数据格式。
优选地,所述压缩算法单元包括LZ77算法、哈夫曼编码。
优选地,所述ID1与ID2各占1字节,且为固定值,所述CM、FLG、XFL、OS均占1字节,而所述MTIME占4字节。
本发明的另一个方面提供了一种基于FPGA的压缩方法,其包括:由输入接口单元接收外部数据;存储所接收的外部数据;对所存储的外部数据按照文件格式进行压缩,其中压缩算法至少包括LZ77算法、哈夫曼编码;通过输出接口单元将压缩数据输出到外部存储模块。
优选地,所述文件格式具有头部、数据部、和用于校验的尾部三部分,其中所述头部包括ID1、ID2、CM、FLG、MTIME、XFL、OS、以及额外的头字段,而所述数据部为DEFLATE数据格式。
优选地,所述ID1与ID2各占1字节,且为固定值,所述CM、FLG、XFL、OS均占1字节,而所述MTIME占4字节。
优选地,所述的LZ77算法的变种是指如果文件中有两块内容相同的话,那么只要知道前一块的位置和大小,就可以确定后一块的内容,所以可以用(两者之间的距离,相同内容的长度)这样一对信息,来替换后一块内容,而由于(两者之间的距离,相同内容的长度)这一对信息的大小,小于被替换内容的大小,所以文件得到了压缩。
优选地,所述的LZ77算法,使用"滑动窗口"的方法,来寻找文件中的相同部分,也就是匹配串,先对这里的串做一个说明,它是指一个任意字节的序列,而不仅仅是可以在文本文件中显示出来的那些字节的序列。这里的串强调的是它在文件中的位置,它的长度随着匹配的情况而变化。LZ77从文件的开始处开始,一个字节一个字节的向后进行处理。一个固定大小的窗口(在当前处理字节之前,并且紧挨着当前处理字节),随着处理的字节不断的向后滑动,就象在阳光下,飞机的影子滑过大地一样。对于文件中的每个字节,用当前处理字节开始的串,和窗口中的每个串进行匹配,寻找最长的匹配串。窗口中的每个串指,窗口中每个字节开始的串。如果当前处理字节开始的串在窗口中有匹配串,就用(之间的距离,匹配长度)这样一对信息,来替换当前串,然后从刚才处理完的串之后的下一个字节,继续处理。如果当前处理字节开始的串在窗口中没有匹配串,就不做改动的输出当前处理字节。处理文件中第一个字节的时候,窗口在当前处理字节之前,也就是还没有滑到文件上,这时窗口中没有任何内容,被处理的字节就会不做改动的输出。随着处理的不断向后,窗口越来越多的滑入文件,最后整个窗口滑入文件,然后整个窗口在文件上向后滑动,直到整个文件结束。
优选地,所述的哈夫曼编码是对于出现次数非常多的,则用较少的位来表示,对于出现次数非常少的,则用较多的位来表示,这样一来,文件的一些部分位数变少了,一些部分位数变多了,由于变小的部分比变大的部分多,所以整个文件的大小还是会减小,所以文件得到了压缩。
优选地,所述的压缩算法,是指先对数据进行LZ77算法,再进行哈夫曼编码,从而实现高效压缩目的。
本发明通过四路数据并行接入,利用硬件系统,解决GZIP算法里面有大量的串行的操作且使用软件算法进行处理的效率低的问题,提高压缩处理效率。
附图说明
下面结合附图及实施例对本发明作进一步描述:
图1是本发明的结构框图。
图2是本发明中文件格式的结构框图。
图3是本发明中GZIP压缩算法的流程图。
图4是本发明中LZ77压缩算法的流程图。
图5是本发明中DEFLATE算法的流程图。
具体实施方式
实施例:下面参照附图用本发明的示例,对本发明进行更详细的描述和说明。如图1所示,本发明提供一种基于FPGA的压缩系统的具体实施例,其包括:将外部数据进行压缩的FPGA模块1、向FPGA模块1提供外部数据的数据模块2、接收经FPGA模块1压缩后的数据的外部存储模块3,其中FPGA模块1包括与数据模块2相连的输入接口单元10、与接口单元10相连的存储单元12、压缩文件格式单元14、对由存储单元12而来的数据按照压缩文件格式单元14的文件格式进行压缩的压缩算法单元16、以及将压缩算法单元16所压缩的数据输出至外部存储模块3的输出接口单元18。本实施例中输入接口单元10为并行接口,存储单元12优选为内存,而外部存储模块3优选为硬盘。
其中,如图2所示,压缩文件格式单元14的文件格式为GZIP压缩文件格式,其为标准化压缩文件格式并用于打包压缩数据,所述文件格式具有头部、数据部、和用于校验的尾部三部分,其中头部用于设置压缩方法、压缩格式、系统等;数据部用于承载获得的数据;尾部用于对数据进行CRC32校验,以判断解压缩的正确性,其包括CRC32:4字节,保存原始数据的32位校验和。ISIZE:4字节,用来保存原始数据长度的低32位,同时头部包括ID1、ID2、CM、FLG、MTIME、XFL、OS、以及额外的头字段,而所述数据部为DEFLATE数据格式。
其中,如图3所示,GZIP压缩算法包括两个部分:LZ77算法和哈夫曼编码。
其中如图4所示,其为LZ77算法压缩流程,并做以下具体描述:
如图4中所述寻找匹配可以做以下表述:GZIP算法对遇到的每一个串,首先会把它插入到一个“字典”中。这样当以后有和它可以匹配的串,都可以直接从“字典”中查出这个串。在插入的时候,使用这个插入串的前三个字节,计算出插入的“字典”位置,然后把插入串的开始位置保存在这个“字典”位置中。查出的时候,使用查出串的前三个字节,计算出“字典”位置,由于插入和查出使用的是同一种计算方法,所以如果两个串的前三个字节相同的话,计算出的“字典”位置肯定是相同的,所以就可以直接在该“字典”位置中,取出以前插入时,保存进去的那个串的开始位置。于是查出串,就找到了一个串,而这个串的前三个字节和自己的一样,所以就找到了一个匹配串。但是会有多个串,他们的前三个字节都相同,那么他们在“字典”里的位置相同,他们将由一条链相连,放在对应的“字典”计算的位置的链上。所以,查到了一个相应在“字典”位置,也就查到了对应的一个链。所有和它前三个字节相同的串,都在这个链上。所以要找最长的匹配,就要遍历这个链上的每一个串,比较看和哪个串的匹配长度能获得最大值。
上述技术方案中涉及到的插入head[ins_h]表述为:当前字节用strstart标记。利用第strstart,strstart+1,strstart+2,这三个字节的值,使用一个哈希函数算出ins_h(在head[]表中的插入位置)。然后将当前字节的位置,即strstart,填到在head[ins_h]中。
如图4所述的是否可以匹配是指:当使用哈希函数算出ins_h,查到head[ins_h]中的值不为空的话,那么head[ins_h]中的值,便是之前保存在这里的一个串的位置,(这个串的前三个字节算出的ins_h,和当前串的前三个字节算出的ins_h相同)也就是说有可能有匹配。如果head[ins_h]的值为空的话,那么,肯定不存在匹配。
关于GZIP所使用的哈希函数的说明:当GZIP发现head[ins_h]不空后,也就是说有可能有匹配串的话,会对链上的每一个串进行真正的串的比较。所以一个链上的串,只是前三个字节用哈希函数算出的值相同,而并不一定前三个字节都是相同的。但是这样已经很大的缩小了需要进行串比较的范围。不同的三个字节有可能得到同一个结果的原因是,三个字节,一共24位,有2^24种可能值。而三个字节的哈希函数的计算结果为15位,有2^15种可能值。也就是说2^24种值,与2^15种值进行对应,必然是多对一的,也就是说,必然是有多种三个字节的值,用这个哈希函数计算出的值都是相同的。可以这样使用哈希函数的理由是,只是在一个窗口大小的范围内寻找匹配串,这样能出现的三个字节的值组合情况也是很有限的,将远远小于2^24,所以使用一个比较合适的哈希函数是非常高效的。
如图4所述的建立prev[]链:在每次处理当前串的时候,首先计算出插入的位置,然后,把当前的串的位置,保存到head[ins_h]中,如果head[ins_h]中(不空的话)为前一个串的开始位置。那么进行以下的操作:prev[strstart]=head[ins_h];head[ins_h]=strstart;一次次的进行不断的插入操作,prev[]链就形成了。
其中prev[]链的作用:head[ins_h]中的值,它本身就是一个前三个字节计算结果为ins_h的串的位置。同时,它是一个在prev[]数组中的索引,利用这个索引在prev[]中,可以找到前一个前三个字节计算结果为ins_h的串的位置。即prev[head[ins_h]]的值(当不为空时)是前一个前三个字节计算结果为ins_h的串的位置。可以不断向上直到prev[]为空,表示链结束。在prev[]链中ins_h的所有的串被链在了一起,head[ins_h]为链头,prev[]数组中放着的更早的串的位置。
prev[]链的特点:顺着prev[]链不断向前,则它与当前处理strstart位置之间的距离越来越远。
如图4所述lazy match,其算法的使用:在当前串寻找到了最长匹配之后,GZIP并不立即就决定使用这个串进行替换。而是看下一个字节开始的串是否也有匹配串,如果比现在这个匹配串有更长的匹配串的话,将不使用现在的这个匹配。如果比现在这个短的话,将确定使用现在的这个匹配。GZIP在满足lazy match的前提条件下,一次lazy match发现了更长的匹配串之后,仍会再进行lazy match,如果这次lazy match,发现了比上次更长的匹配串,那么上一次的懒匹配找到的匹配串就不用了。lazy match可以增加压缩的效果,同时,也会付出不小的时间代价。所以有必要对其使用加以限制。只有当当前匹配串的匹配长度,GZIP也就是当前匹配长度小于max_lazy_match(max_lazy_match在固定的压缩级别下,有固定的值)时,才会进行lazy match。
本发明的LZ77算法对大于64KB的文件,用关于滑动窗口实现:当前串(当前处理字标记strstart开始的串)只是在它之前的一个滑动窗口中寻找匹配串的,也就是说只是在它之前的一定大小的范围内寻找匹配串的。GZIP的这个滑动窗口的大小为WSIZE,32KB。在内存中将建一个window[]的缓冲区,大小为2个窗口的大小,64KB。需要被压缩的文件的内容将被读到这个window[]中,再在window[]缓冲区上进行LZ77算法的处理,得到结果将放在其他缓冲区中。GZIP对window[]中的内容,从开始处开始,一个字节一个字节的向后处理。当当前处理字节开始的串没有合适的匹配时,不做任何改动的输出当前处理字节,strstart向后移动一个字节。当当前处理字节开始的串找到了合适的匹配时,输出(匹配长度,相隔距离)对,strstart向后移动匹配长度个字节。从strstart到window[]结束的这部分内容,叫做lookahead buffer(超前查看缓冲区)。变量lookahead,保存着超前查看缓冲区所剩的字节数。lookahead,最开始被初始化为整个读入内容的大小,随着处理的进行,strstart不断后移,超前查看缓冲区不断减小,相应的lookahead的值也不断的减小。如果匹配串出了一个窗口的限制,则不与匹配。当当前串计算ins_h,发现head[ins_h]值不为空时(head[ins_h]为一个串的开始位置),说明当前串有可能有匹配串,把这个值保存在hash_head中。这时就要做一个限制范围的判断,strstart-hash_head<=窗口大小,strstart-hash_head是当前串和最近的匹配串之间的距离,如果是在一个窗口的范围之内的话,还需要在链上寻找最长的匹配串,在和每个串进行比较的时候,也需要判断当前串和该串的距离是否超过一个窗口的范围,超过的话,就不能进行匹配。实际中,GZIP为了使代码简单点,距离限制要比一个窗口的大小还要小一点。
本发明中的LZ77算法对于小于64KB的文件处理过程:初始化的时候整个文件都被读入到window[]中。在window[]上进行LZ77算法的处理,从开始直到文件结束。
本发明对于大于64KB的文件处理过程:压缩开始之前的初始化,会从文件中读入64KB的内容到window[]中,窗口大小为32KB,也就是读入2窗的内容到window[]中。压缩不断进行,直到lookahead<MIN_LOOKAHEAD,也就是处理到了64KB内容的接近结束部分,也就是如果再处理,超前查看缓冲区中的内容就可能不够了。由于lookahead<MIN_LOOKAHEAD,将执行fill_window()。fill_window()判断是否压缩已经进行到了2窗内容快用完了,该把新的内容放进来了。如果是的话,fill_window()把第二窗的内容,复制到第一窗中,这样第一窗中的内容就被覆盖掉了。然后更新匹配链的链头数组,head[],更新prev[]数组,从头到尾过一遍,如果这个头中保存的串的位置,在窗口二中,就对这个串的位置做修正。如果这个头中保存的串的位置,在窗口一中,就不要了,否则就超过了32k的限制。,如果某项的内容,在窗口二中,就做修正。最后fill_window()从文件中再读出一窗内容,也就是读出32KB的内容,复制到第二个窗中,注意第二个窗口中原来的内容,已经被复制到了第一个窗口中。就这样,一窗窗的不断的处理,直到整个文件结束。
如图4中所述分块输出:LZ77压缩的结果放在l_buf[],d_buf[],flag_buf[]中。对于LZ77的压缩结果,可能使用一块输出或者分成多块输出(LZ77压缩一定的部分之后,就进行一次块输出,输出一块)。块的大小不是固定的。输出的时候,会对LZ77算法处理的压缩结果,进行Huffman编码,最终把Huffman编码的结果输出到outbuf[]缓冲区中。在flush_block()中进行Huffman编码,并输出的工作。在ct_tally()中进行判断,如果满足一些条件的话,当从ct_tally()中返回之后,就会对现有的LZ77的结果,进行Huffman编码,输出到一个块中。在整个文件处理结束,deflate()函数要结束的时候,会把LZ77的结果,进行Huffman编码,输出到一个块中。而当l_buf[]满了的时候,或者d_buf[]满了的时候,将肯定对现有的LZ77压缩的结果,进行Huffman编码,输出到一个块中。决定输出一块的话,建立Huffman树,会只针对这一块的内容。这一块内容将会被进行Huffman编码压缩,并被输出到outbuf[]中。如果是动态Huffman编码,树的信息也被输出到outbuf[]中。输出之后,会调用init_block(),初始化一个新块,重新初始化一些变量,包括动态树的结点被置0,也就是说,将为新块将来的Huffman树重新开始统计信息。每个块最开始的2位,用来指明本块使用的是哪种编码方式,00表示直接存储,01表示静态Huffman编码,10表示动态Huffman编码。接下来的1位,指明本块是否是最后一块,0表示不是,1表示是最后一块。
上述技术方案所述的Huffman编码与动态Huffman编码:静态Huffman编码就是使用GZIP自己预先定义好了一套编码进行压缩,解压缩的时候也使用这套编码,这样不需要传递用来生成树的信息。动态Huffman编码就是使用统计好的各个符号的出现次数,建立Huffman树,产生各个符号的Huffman编码,用这产生的Huffman编码进行压缩,这样需要传递生成树的信息。GZIP在为一块进行Huffman编码之前,会同时建立静态Huffman树,和动态Huffman树,计算使用静态Huffman树编码,生成的块的大小,以及计算使用动态Huffman树编码,生成块的大小。最后再进行比较,使用生成块较小的方法进行最终的Huffman编码。当文件比较小时,往往使用静态树能产生比较好的压缩效果,因为动态树需要传递生成树的那部分信息。
如图5所示,DEFLATE算法流程图的文字说明如下:
Strstart:当前串首字符的位置;
所说的“字典”,是用数组head[]表示的;
所说的“字典”位置,放在一个叫做ins_h的变量中,而该位置,用哈希函数根据串的前三个字节算出;
所说的链,是在一个叫做prev[]的数组中;
字符:文件具体内容;
串:多个字符组成串,在GZIP算法中;
对:(串长,与之前匹配串的距离);
字典:存放串,供寻找匹配串用;
插入位置:串在字典中的位置;
读串:系统得到要压缩的文件,读入字符串到缓冲区。Gzip算法对遇到的每一个串,首先会把它插入到一个“字典”中。这样当以后有和它可以匹配的串,都可以直接从“字典”中查出这个串。用变量strstart指向串的首字符。
Strstart->NULL?:判断ststart指向是否为空;
哈希表查找插入位置insh:哈希表查找,效率较高
链表是否存在该串:链表,是由,不同串组成,但是,每个链上,串的前三个字节相同,这样可以提高查找效率。
找链表prev【】中最长匹配:所谓最长匹配,是指匹配长度最长。
MAX_LAZY_MATCH:在当前串寻找到了最长匹配之后,gzip并不立即就决定使用这个串进行替换。而是看下一个字节开始的串是否也有匹配串,如果比现在这个匹配串有更长的匹配串的话,将不使用现在的这个匹配。如果比现在这个短的话,将确定使用现在的这个匹配。
GZIP在满足lazy match的前提条件下,一次lazy match发现了更长的匹配串之后,仍会再进行lazy match,如果这次lazy match,发现了比上次更长的匹配串,那么上一次的懒匹配找到的匹配串就不用了。
lazy match可以增加压缩的效果,同时,也会付出不小的时间代价。所以有必要对其使用加以限制。只有当当前匹配串的匹配长度,gzi也就是当前匹配长度小于max_lazy_match(max_lazy_match在固定的压缩级别下,有固定的值)时,才会进行lazy match。
分配缓冲区window【】:在内存中将建一个window[]的缓冲区,大小为2个窗口的大小,64KB。需要被压缩的文件的内容将被读到这个window[]中,在window[]缓冲区上进行LZ77算法的处理,得到结果将放在其他缓冲区中。
当然上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明主要技术方案的精神实质所做的等效变换或修饰,都应涵盖在本发明的保护范围之内。
Claims (8)
1.一种基于FPGA的压缩系统,其特征在于其包括:将外部数据进行压缩的FPGA模块(1)、向FPGA模块(1)提供外部数据的数据模块(2)、接收经FPGA模块(1)压缩后的数据的外部存储模块(3),其中FPGA模块(1)包括与数据模块(2)相连的输入接口单元(10)、与接口单元(10)相连的存储单元(12)、压缩文件格式单元(14)、对由存储单元(12)而来的数据按照压缩文件格式单元(14)的文件格式进行压缩的压缩算法单元(16)、以及将压缩算法单元(16)所压缩的数据输出至外部存储模块(3)的输出接口单元(18)。
2.根据权利要求1所述的压缩系统,其特征在于:所述存储单元(12)为内存,而外部存储模块(3)为硬盘。
3.根据权利要求1或2所述的压缩系统,其特征在于:所述文件格式具有头部、数据部、和用于校验的尾部,其中所述头部包括ID1、ID2、CM、FLG、MTIME、XFL、OS、以及额外的头字段,而所述数据部为DEFLATE数据格式。
4.根据权利要求3所述的压缩系统,其特征在于:所述压缩算法单元(16)包括LZ77算法、哈夫曼编码。
5.根据权利要求3所述的压缩系统,其特征在于:所述ID1与ID2各占1字节,且为固定值,所述CM、FLG、XFL、OS均占1字节,而所述MTIME占4字节。
6.一种基于FPGA的压缩方法,其特征在于其包括:
由输入接口单元(10)接收外部数据;
存储所接收的外部数据;
对所存储的外部数据按照文件格式进行压缩,其中压缩算法至少包括LZ77算法、哈夫曼编码;
通过输出接口单元(18)将压缩数据输出到外部存储模块(3)。
7.根据权利要求6所述的压缩方法,其特征在于:所述文件格式具有头部、数据部、和用于校验的尾部三部分,其中所述头部包括ID1、ID2、CM、FLG、MTIME、XFL、OS、以及额外的头字段,而所述数据部为DEFLATE数据格式。
8.根据权利要求7所述的压缩方法,其特征在于:所述ID1与ID2各占1字节,且为固定值,所述CM、FLG、XFL、OS均占1字节,而所述MTIME占4字节。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013101970320A CN103248369A (zh) | 2013-05-21 | 2013-05-21 | 基于fpga的压缩系统及其方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013101970320A CN103248369A (zh) | 2013-05-21 | 2013-05-21 | 基于fpga的压缩系统及其方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103248369A true CN103248369A (zh) | 2013-08-14 |
Family
ID=48927621
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2013101970320A Pending CN103248369A (zh) | 2013-05-21 | 2013-05-21 | 基于fpga的压缩系统及其方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103248369A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104811209A (zh) * | 2015-04-22 | 2015-07-29 | 北京理工大学 | 一种抗最长匹配检测的压缩文件数据嵌入方法及装置 |
CN104881339A (zh) * | 2015-05-18 | 2015-09-02 | 昆山龙腾光电有限公司 | 一种测试装置、测试方法及显示系统 |
CN105007083A (zh) * | 2015-08-13 | 2015-10-28 | 东南大学 | 一种lz77压缩算法输出结果的存储方法 |
CN106788447A (zh) * | 2016-11-29 | 2017-05-31 | 郑州云海信息技术有限公司 | 一种lz77压缩算法的匹配长度输出方法及装置 |
CN106850141A (zh) * | 2017-01-20 | 2017-06-13 | 济南浪潮高新科技投资发展有限公司 | 一种使用deflate算法的物理信息系统数据无损压缩传输方法 |
CN107688439A (zh) * | 2017-08-15 | 2018-02-13 | 深圳前海信息技术有限公司 | 基于Deflate的无关联压缩块的生成方法及装置 |
CN109672449A (zh) * | 2018-12-13 | 2019-04-23 | 武汉中元华电科技股份有限公司 | 一种基于fpga快速实现lz77压缩的装置及方法 |
CN110334066A (zh) * | 2019-05-09 | 2019-10-15 | 苏州浪潮智能科技有限公司 | 一种基于FPGA的Gzip解压缩方法、装置及系统 |
CN111884660A (zh) * | 2020-07-13 | 2020-11-03 | 山东云海国创云计算装备产业创新中心有限公司 | 一种哈夫曼编码设备 |
CN112287391A (zh) * | 2020-11-18 | 2021-01-29 | 广东新禾道信息科技有限公司 | 基于区块链的数据安全存储方法及系统 |
CN116578542A (zh) * | 2023-07-13 | 2023-08-11 | 鹏钛存储技术(南京)有限公司 | 基于可配置逻辑的自适应压缩算法的硬件实现方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7653248B1 (en) * | 2005-11-07 | 2010-01-26 | Science Applications International Corporation | Compression for holographic data and imagery |
CN102821275A (zh) * | 2011-06-08 | 2012-12-12 | 中兴通讯股份有限公司 | 数据压缩方法及装置、数据解压缩方法及装置 |
CN103039005A (zh) * | 2010-07-30 | 2013-04-10 | 雪佛龙美国公司 | 用于利用现场可编程门阵列进行数据压缩的系统和方法 |
-
2013
- 2013-05-21 CN CN2013101970320A patent/CN103248369A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7653248B1 (en) * | 2005-11-07 | 2010-01-26 | Science Applications International Corporation | Compression for holographic data and imagery |
CN103039005A (zh) * | 2010-07-30 | 2013-04-10 | 雪佛龙美国公司 | 用于利用现场可编程门阵列进行数据压缩的系统和方法 |
CN102821275A (zh) * | 2011-06-08 | 2012-12-12 | 中兴通讯股份有限公司 | 数据压缩方法及装置、数据解压缩方法及装置 |
Non-Patent Citations (1)
Title |
---|
基于FPGA的压缩算法研究与实现: "田园", 《中国优秀硕士学位论文全文数据库 信息科技辑》, no. 02, 15 February 2012 (2012-02-15) * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104811209B (zh) * | 2015-04-22 | 2017-10-17 | 北京理工大学 | 一种抗最长匹配检测的压缩文件数据嵌入方法及装置 |
CN104811209A (zh) * | 2015-04-22 | 2015-07-29 | 北京理工大学 | 一种抗最长匹配检测的压缩文件数据嵌入方法及装置 |
CN104881339A (zh) * | 2015-05-18 | 2015-09-02 | 昆山龙腾光电有限公司 | 一种测试装置、测试方法及显示系统 |
CN104881339B (zh) * | 2015-05-18 | 2018-09-18 | 昆山龙腾光电有限公司 | 一种测试装置、测试方法及显示系统 |
CN105007083A (zh) * | 2015-08-13 | 2015-10-28 | 东南大学 | 一种lz77压缩算法输出结果的存储方法 |
CN106788447B (zh) * | 2016-11-29 | 2020-07-28 | 苏州浪潮智能科技有限公司 | 一种lz77压缩算法的匹配长度输出方法及装置 |
CN106788447A (zh) * | 2016-11-29 | 2017-05-31 | 郑州云海信息技术有限公司 | 一种lz77压缩算法的匹配长度输出方法及装置 |
CN106850141A (zh) * | 2017-01-20 | 2017-06-13 | 济南浪潮高新科技投资发展有限公司 | 一种使用deflate算法的物理信息系统数据无损压缩传输方法 |
CN107688439A (zh) * | 2017-08-15 | 2018-02-13 | 深圳前海信息技术有限公司 | 基于Deflate的无关联压缩块的生成方法及装置 |
CN109672449A (zh) * | 2018-12-13 | 2019-04-23 | 武汉中元华电科技股份有限公司 | 一种基于fpga快速实现lz77压缩的装置及方法 |
CN109672449B (zh) * | 2018-12-13 | 2023-03-10 | 武汉中元华电科技股份有限公司 | 一种基于fpga快速实现lz77压缩的装置及方法 |
CN110334066A (zh) * | 2019-05-09 | 2019-10-15 | 苏州浪潮智能科技有限公司 | 一种基于FPGA的Gzip解压缩方法、装置及系统 |
CN111884660A (zh) * | 2020-07-13 | 2020-11-03 | 山东云海国创云计算装备产业创新中心有限公司 | 一种哈夫曼编码设备 |
CN112287391A (zh) * | 2020-11-18 | 2021-01-29 | 广东新禾道信息科技有限公司 | 基于区块链的数据安全存储方法及系统 |
CN116578542A (zh) * | 2023-07-13 | 2023-08-11 | 鹏钛存储技术(南京)有限公司 | 基于可配置逻辑的自适应压缩算法的硬件实现方法及系统 |
CN116578542B (zh) * | 2023-07-13 | 2023-09-29 | 鹏钛存储技术(南京)有限公司 | 基于可配置逻辑的自适应压缩算法的硬件实现方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103248369A (zh) | 基于fpga的压缩系统及其方法 | |
US11947494B2 (en) | Organizing prime data elements using a tree data structure | |
CN107210753B (zh) | 通过从驻留在内容关联滤筛中的基本数据单元导出数据的数据的无损简化 | |
US9477682B1 (en) | Parallel compression of data chunks of a shared data object using a log-structured file system | |
US8543555B2 (en) | Dictionary for data deduplication | |
US20050131939A1 (en) | Method and apparatus for data redundancy elimination at the block level | |
EP3120266B1 (en) | Ozip compression and decompression | |
CN107682016B (zh) | 一种数据压缩方法、数据解压方法及相关系统 | |
CN107046812A (zh) | 一种数据保存方法和装置 | |
CN101783788A (zh) | 文件压缩、解压缩方法、装置及压缩文件搜索方法、装置 | |
US10735025B2 (en) | Use of data prefixes to increase compression ratios | |
US11070230B2 (en) | Run-length base-delta encoding for high-speed compression | |
CN104579356A (zh) | 在存在重现的霍夫曼树的情况下加速解压缩的方法和系统 | |
EP3387647B1 (en) | Reduction of audio data and data stored on a block processing storage system | |
Abali et al. | Data compression accelerator on IBM POWER9 and z15 processors: Industrial product | |
CN1426629A (zh) | 使用多个编码器的优化无损压缩的方法和装置 | |
US8989507B2 (en) | Bitmap compression for fast searches and updates | |
US10380240B2 (en) | Apparatus and method for data compression extension | |
Abali et al. | Data compression accelerator on ibm power9 and z15 processors | |
US11748307B2 (en) | Selective data compression based on data similarity | |
US12001237B2 (en) | Pattern-based cache block compression | |
Kim et al. | Dual pattern compression using data-preprocessing for large-scale gpu architectures | |
US20210157485A1 (en) | Pattern-based cache block compression | |
Philip et al. | LiBek II: A novel compression architecture using adaptive dictionary | |
Takafuji et al. | GPU implementations of deflate encoding and decoding |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20130814 |
|
RJ01 | Rejection of invention patent application after publication |