CN111384961B - 数据压缩解压装置和数据压缩方法 - Google Patents
数据压缩解压装置和数据压缩方法 Download PDFInfo
- Publication number
- CN111384961B CN111384961B CN201811625524.4A CN201811625524A CN111384961B CN 111384961 B CN111384961 B CN 111384961B CN 201811625524 A CN201811625524 A CN 201811625524A CN 111384961 B CN111384961 B CN 111384961B
- Authority
- CN
- China
- Prior art keywords
- data
- compressed
- compression
- write
- read
- 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
- 230000006837 decompression Effects 0.000 title claims abstract description 73
- 238000013144 data compression Methods 0.000 title claims abstract description 48
- 238000000034 method Methods 0.000 title claims abstract description 37
- 238000007906 compression Methods 0.000 claims abstract description 95
- 230000006835 compression Effects 0.000 claims abstract description 95
- 230000015654 memory Effects 0.000 claims description 80
- 238000010586 diagram Methods 0.000 description 12
- 230000005540 biological transmission Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请涉及一种数据压缩解压装置和方法,通过控制电路根据输入数据中的待压缩数据的起始地址和数据长度得到压缩控制指令,之后在基于该压缩控制指令对待压缩数据进行压缩,该方法提供了一种选择完整数据中的部分数据进行压缩的方法,提高数据压缩的灵活性。
Description
技术领域
本申请涉及计算机技术技术领域,特别是涉及一种数据压缩解压装置和数据压缩方法。
背景技术
数据压缩是指在不丢失有用信息的前提下,缩减数据量以减少存储空间,提高其传输、存储和处理效率,或按照一定的算法对数据进行重新组织,减少数据冗余和存储空间的一种技术方法。
然而,传统的数据压缩方法,存在灵活性差的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够从输入数据中灵活选择待压缩数据的数据压缩解压装置和数据压缩方法。
一种数据压缩解压装置,所述装置包括,控制电路和压缩解压电路,所述控制电路与所述压缩解压电路连接,
所述控制电路用于根据数据单元中待压缩数据的起始地址和数据长度得到压缩控制指令,其中,输入数据包含至少一个数据单元,所述数据单元包含待压缩数据和非压缩数据;
所述压缩解压电路用于根据所述压缩控制指令获取所述待压缩数据,并对所述待压缩数据进行压缩得到压缩数据。
作为一种可选地实施方式,所述控制电路具体用于根据所述压缩解压电路的数量确定所述数据单元的大小,根据所述数据单元的大小确定数据读取窗口,根据数据读取窗口得到读写控制指令;
所述压缩解压电路还用于根据所述读写控制指令从所述输入数据中读取数据单元。
作为一种可选地实施方式,所述压缩解压电路包括第一读写电路、第一存储器以及压缩解压部件,所述第一读写电路与所述控制电路和所述第一存储器连接,所述压缩解压部件分别与所述控制电路和所述第一存储器连接,
所述第一读写电路用于根据所述读写控制指令从所述输入数据中读取数据单元,并将所述数据单元写入所述第一存储器;
所述控制电路还用于根据所述第一存储器存储的所述数据单元中的待压缩数据的起始地址和数据长度得到压缩控制指令;
所述压缩解压部件,用于根据所述压缩控制指令对所述数据单元中的待压缩数据进行压缩。
作为一种可选地实施方式,所述装置还包括非压缩数据通路以及第二读写电路,所述非压缩数据通路与所述第一存储器连接,所述第二读写电路与所述控制电路以及所述第一存储器连接,
所述控制电路还用于根据所述数据单元中的非压缩数据得到写出控制指令;
所述第二读写电路用于根据所述写出控制指令将所述非压缩数据从所述非压缩数据通路写出。
作为一种可选地实施方式,所述装置还包括第二存储器,所述第二存储器分别与所述控制电路和所述压缩解压电路连接,
所述第二存储器用于将所述输入数据分数据块存储。
作为一种可选地实施方式,所述控制电路具体用于根据第一边沿与第二边沿得到读写参数,根据所述读写参数得到读写控制指令,其中,所述第一边沿为所述数据读取窗口的边沿,所述第二边沿为所述读写窗口中非整数据块位于所述读写窗口之外的边沿;
所述第一读写电路具体用于根据所述读写控制指令读取所述数据读取窗口中的数据单元,并按照所述数据单元在第二存储器中存储格式将所述数据单元写入所述第一存储器,其中,所述数据单元中的完整数据块为待压缩数据,所述数据单元中的非整数据块为非压缩数据。
作为一种可选地实施方式,所述控制电路具体用于根据所述第一存储器中的数据单元中的完整数据块的起始地址和数据长度确定所述起始地址和所述数据长度。
作为一种可选地实施方式,所述控制电路具体用于根据所述第一存储器中的所述数据单元中非整数据块,得到所述写出控制指令。
作为一种可选地实施方式,各个所述压缩解压电路中的压缩部件,具体用于并行将对应的数据单元中的待压缩数据进行整块压缩,得到多个压缩数据,其中,每一所述压缩数据包括数据头和数据体,所述数据头包含对应的数据体的起始地址、数据长度,所述数据体包括对应的数据块的编码数据;
所述控制电路,还用于得到写入控制指令,其中,所述写入控制指令用于控制所述第二读写电路将各个数据头按照对应的数据块在所述输入数据中的位置写入第二存储器,以及将各个数据体以及非压缩数据按照预设格式写入第二存储器。
一种数据压缩方法,所述方法包括:
根据数据单元中待压缩数据的起始地址和数据长度得到压缩控制指令,其中,输入数据包含至少一个数据单元,所述数据单元包含待压缩数据和非压缩数据;
按照所述压缩控制指令将所述数据单元中的待压缩数据进行压缩,得到压缩数据。
作为一种可选地实施方式,所述方法还包括:
根据所述压缩解压电路的数量确定所述数据单元的大小,根据所述数据单元的大小确定数据读取窗口,根据数据读取窗口得到读写控制指令;
根据所述读写控制指令从所述输入数据中读取数据单元。
作为一种可选地实施方式,所述方法还包括:
根据所述数据单元中的非压缩数据得到写出控制指令;
根据所述写出控制指令将所述非压缩数据从所述非压缩数据通路写出。
作为一种可选地实施方式,所述方法还包括:将所述输入数据分数据块存储。
作为一种可选地实施方式,所述根据所述数据单元的大小确定数据读取窗口,根据数据读取窗口得到读写控制指令,包括:
根据第一边沿与第二边沿得到读写参数,根据所述读写参数得到读写控制指令,其中,所述第一边沿为所述数据读取窗口的边沿,所述第二边沿为所述读写窗口中非整数据块位于所述读写窗口之外的边沿。
作为一种可选地实施方式,在根据所述读写控制指令从所述输入数据中读取数据单元,之后还包括:
按照所述数据单元读取前的存储格式将所述数据单元写入第一预设存储位置,其中,所述数据单元中的完整数据块为待压缩数据,所述数据单元中的非整数据块为非压缩数据。
作为一种可选地实施方式,所述控制电路还用于根据所述数据单元中的非压缩数据得到写出控制指令,包括:
根据的所述数据单元中非整数据块,得到所述写出控制指令。
作为一种可选地实施方式,所述按照所述压缩控制指令将所述数据单元中的待压缩数据进行压缩,得到压缩数据,包括:
并行将对应的数据单元中的待压缩数据进行整块压缩,得到多个压缩数据,其中,每一所述压缩数据包括数据头和数据体,所述数据头包含对应的数据体的起始地址、数据长度,所述数据体包括对应的数据块压缩后的编码数据;
将各个数据头按照对应的数据块在所述输入数据中的位置写入第二预设存储位置,以及将各个数据体以及非压缩数据按照预设格式写入第二预设存储位置。
上述数据压缩解压装置和数据压缩方法,通过控制电路根据输入数据中的待压缩数据的起始地址和数据长度得到压缩控制指令,之后在基于该压缩控制指令对待压缩数据进行压缩,该方法提供了一种选择完整数据中的部分数据进行压缩的方法,提高数据压缩的灵活性。
附图说明
图1为一个实施例中数据压缩解压装置的结构框图;
图2为一个实施例中数据压缩解压装置的结构框图;
图3为一个实施例中数据压缩解压装置的结构框图;
图4为一个实施例中数据压缩解压装置的结构框图;
图5为一个实施例中数据压缩解压装置的结构框图;
图6为一个实施例中的一种数据压缩方法步骤的流程示意图;
图7为一个实施例中的一种数据压缩方法补充步骤的流程示意图;
图8为一个实施例中输入数据上的数据读取窗口的示意图;
图9为一个实施例中的一种数据压缩方法补充步骤的流程示意图;
图10为一个实施例中输入数据上的数据读取窗口的示意图;
图11为一个实施例中并行压缩待压缩数据的步骤的流程示意图;
图12为一个实施例中第二存储器上的压缩数据的示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
如图1-图5所示,为本申请在其中一个实施例中提出的数据压缩解压装置100的结构框图,该数据压缩解压装置100包括:控制电路110和压缩解压电路120。该控制电路100与压缩解压电路120连接。其中,
控制电路100用于根据数据单元中待压缩数据的起始地址和数据长度得到压缩控制指令,其中,输入数据包含至少一个数据单元,所述数据单元包含待压缩数据和非压缩数据。压缩解压电路120用于根据所述压缩控制指令获取所述待压缩数据,并对所述待压缩数据进行压缩得到压缩数据。
本实施例中的数据压缩解压装置,通过控制电路根据输入数据中的待压缩数据的起始地址和数据长度得到压缩控制指令,之后在基于该压缩控制指令对待压缩数据进行压缩,该方法提供了一种选择完整数据中的部分数据进行压缩的方法,提高数据压缩的灵活性。
作为一种可选地实施方式,数据压缩解压装置100中的压缩解压电路120可以为多个,每一压缩解压电路120均连接至控制电路110。其中,该控制电路110将得到压缩控制指令发送至各个压缩解压电路120,各个压缩解压电路120根据接收的压缩控制指令对接收的数据单元中的待压缩数据进行压缩。其中,各个压缩解压电路120接收的数据单元组成输入数据。进一步地,控制电路110可以用于根据压缩解压电路120的数量确定所述数据单元的大小,并根据所述数据单元的大小以及预设的方向参数确定数据读取窗口,根据数据读取窗口得到读写控制指令;压缩解压电路120还可以用于根据所述读写控制指令从所述输入数据中读取数据单元。
进一步地,如图2所示,该压缩解压电路120可以包括:第一读写电路121、第一存储器122以及压缩解压部件123。其中,第一读写电路121与控制电路110以及所述第一存储器122连接,所述压缩解压部件123分别与所述控制电路110和所述第一存储器123连接。
其中,第一读写电路121用于根据所述读写控制指令从所述输入数据中读取数据单元,并将所述数据单元写入所述第一存储器122;所述控制电路110还用于根据所述第一存储器122存储的所述数据单元中的待压缩数据的起始地址和数据长度得到压缩控制指令;所述压缩解压部件123,用于根据所述压缩控制指令对所述数据单元中的待压缩数据进行压缩。
在其中一个实施例中,如图3-图4所示,该数据压缩解压装置100还包括非压缩数据通路130以及第二读写电路140,该非压缩数据通路130与第一存储器123与连接。该第二读写电路140与所述控制电路以及所述第一存储器连接。
其中,非压缩数据通路130用于所述非压缩数据的传输。具体地,第二读写电路140根据所述写出控制指令将所述非压缩数据从所述非压缩数据通路写出。具体地,控制电路110还用于根据数据单元中的非压缩数据得到写出控制指令;第二读写电路140用于根据所述写出控制指令将所述非压缩数据从所述非压缩数据通路写出。可选地,该各个压缩解压电路120可以共用同一非压缩数据通路130(图3)。可选地,各个压缩解压电路120也可以独立设置一非压缩数据通路130(图4)。
进一步地,如图5所示,该数据压缩解压装置100还包括第二存储器150。该第二存储器150与第二读写电路140连接。该第二存储器150可以用于存储输入数据。可选地,该第二存储器150还可以与第二读写电路140以及压缩解压电路的压缩解压部件123连接。该第二存储器还可以用于存储第二读写电路140通过非压缩数据通路130写出的数据单元中的非压缩数据,以及压缩解压部件123输出的压缩数据。可选地,第二存储器150按照预设格式存储压缩数据以及非压缩数据。可选地,该预设格式可以根据输入数据进行设置。例如,可以预设按照各个数据单元在输入数据中的位置存储各个数据单元对应的压缩数据和非压缩数据。可选地,在按照各个数据单元在输入数据中的位置存储各个数据单元对应的压缩数据和非压缩数据的基础上,还可以按照各个数据单元中待压缩数据与非压缩数据的位置关系,对应存储各个压缩数据和非压缩数据。
在其中一个实施例中,可以将输入数据分块存储于第二存储器150中。其中,数据块可以根据数据压缩解压电路中的压缩解压部件123的单次压缩解压能力确定。可选地,可以根据压缩解压部件执行一次压缩解压可以压缩或解压的最大字节数衡量压缩解压部件单次压缩解压能力。可选地,可以将数据块按照预设格式摆放于第二存储器中。应当清楚的是数据块按照预设格式摆放是指将各个数据块按照预设格式存取于存取介质(例如第二存储器)的相应位置。该预设格式可以为一维紧密、二维紧密或者其他维度的紧密。
可选地,可以根据输入数据的特征将输入数据划分为多个数据块。可选地,该输入数据的特征可以包括数据总大小、数据分布特征以及数据的重要程度等等中的一个或多个。其中,数据的重要程度可以根据该数据出现的频率、数据大小等等特征来确定。可选地,在将输入数据划分为多个数据块时还可以考虑预设值,该预设值可以根据经验或者大数据分析获得。可选地,在将输入数据划分为多个数据块之前,可以筛除压缩数据中的“0”值。
可选地,在将输入数据划分为多个数据块,并按照预设格式摆放后,得到该输入数据中各个数据块的存储参数。输入数据中各个数据块的存储参数包括起始地址、块序列号、行号等等。该存储参数可以用于对输入数据进行读写操作。其中,数据块的块序列号可以用于区分不同的数据块。可选地,可以使用数字对数据块进行编号。
进一步地,数据压缩解压装置100可以对输入数据中的数据块进行整块压缩。具体地,控制电路110根据输入数据中待压缩的数据块的起始地址,以及数据块的数据长度,得到压缩控制指令。压缩解压电路120根据该压缩控制指令对应获取待压缩的数据块并对该数据块进行整块压缩,得到压缩数据。该压缩数据包括数据头和数据体。其中,数据头包括对应的数据体的起始地址、数据长度等信息。数据体包含数据块被压缩后的编码数据。可选地,得到的压缩数据被写入第二存储器。可选地,可以将得到的数据头按照对应的数据块在输入数据中的位置存储于第二存储器中。可选地,可以按照预设格式将数据体存储于第二存储器中。该预设格式可以为一维紧密、二维紧密或者其他维度的紧密。
可选地,该输入数据中不需要被压缩的数据块(非压缩数据),可以通过非压缩数据通路写出。具体地,控制电路110根据输入数据中不需要被压缩的数据块的起始地址以及数据长度,得到写出控制指令。第二读写电路140根据该写出控制指令将不需要被压缩的数据块从所述非压缩数据通路写出。可选地,第二读写电路140将不需要被压缩的数据块从所述非压缩数据通路写出至第二存储器。进一步地,将不需要被压缩的数据块与得到的数据体存储于第二存储器150上的同一预设存储区域。
本实施例中的数据压缩方法,通过对输入数据中需要压缩的数据块进行整块压缩,得到与各个需要压缩的数据块一一对应的数据头与数据体,即得到与每一数据块对应的压缩数据,将不需要压缩的数据块从非压缩数据通路写出,因此该方法实现了将输入数据中的部分数据进行分块压缩,提高了数据压缩效率。
但是在实际应用过程中,分数据块存储的输入数据中的数据块的大小,可能被划分的过大,或者划分的数据块的数量与压缩解压电路的数量不是整数倍,因此,无法很好的并行压缩各个需压缩的数据块。本申请提出的数据压缩解压装置可以很好的解决上述输入数据的数据块划分不合理的情形。下面以上述实施例中的数据压缩解压装置100如何实现划分的数据块的数量与压缩解压电路的数量不是整数倍的输入数据中的部分数据为例,具体说明上述数据压缩解压装置100在输入数据在分块存储的情形下如何实现并行压缩。
在其中一个实施例中,控制电路110可以用于根据第一边沿与第二边沿得到读写参数,根据所述读写参数得到读写控制指令,其中,所述第一边沿为所述数据读取窗口的边沿,所述第二边沿为所述读写窗口中非整数据块位于所述读写窗口之外的边沿。压缩解压电路120第一读写电路121具体用于根据所述读写控制指令读取所述数据读取窗口中的数据单元,并按照所述数据单元在第二存储器中存储格式将所述数据单元写入所述第一存储器,其中,所述数据单元中的完整数据块为待压缩数据,所述数据单元中的非整数据块为非压缩数据。
进一步地,由于数据单元中的完整数据块为待压缩数据,所述数据单元中的非整数据块为非压缩数据。因此,控制电路110可以用于根据所述第一存储器150中的数据单元中的完整数据块的起始地址和数据长度确定所述起始地址和所述数据长度。更进一步地,控制电路110具体用于根据所述第一存储器中的所述数据单元中非整数据块,得到所述写出控制指令。
具体地,数据压缩解压装置100的各个所述压缩解压电路120中的压缩部件可以用于并行将对应的数据单元中的待压缩数据进行整块压缩,得到多个压缩数据,其中,每一所述压缩数据包括数据头和数据体,所述数据头包含对应的数据体的起始地址、数据长度,所述数据体包括对应的数据块的编码数据。控制电路110,还可以用于得到写入控制指令,其中,所述写入控制指令用于控制所述第二读写电路将各个数据头按照对应的数据块在所述输入数据中的位置写入第二存储器,以及将各个数据体以及非压缩数据按照预设格式写入第二存储器。
本实施例中的数据压缩解压装置,通过压缩解压电路的数量确定所述数据单元的大小,根据所述数据单元的大小确定数据读取窗口,通过数据读取窗口获取各个压缩解压电路将处理的数据单元,即本实施向各个数据压缩解压电路分发哪些数据是通过设置数据读取窗口实现的,因此,在根据压缩解压电路的数量确定所述数据单元的大小的前提下,该方法可以将输入数据均分值各个压缩解压电路,进而实现输入数据的压缩并行。
基于同样的发明构思,如图6所示,本申请还提出了一种数据压缩方法,该种数据压缩方法被上述实施例中的数据压缩解压装置100执行,具体包括如下步骤:
步骤S610,根据数据单元中待压缩数据的起始地址和数据长度得到压缩控制指令,其中,输入数据包含至少一个数据单元,所述数据单元包含待压缩数据和非压缩数据。
具体地,控制电路110根据数据单元中待压缩数据的起始地址和数据长度得到压缩控制指令,其中,输入数据包含至少一个数据单元,所述数据单元包含待压缩数据和非压缩数据。
步骤S620,按照所述压缩控制指令将所述数据单元中的待压缩数据进行压缩,得到压缩数据。
具体地,压缩解压电路120按照所述压缩控制指令将所述数据单元中的待压缩数据进行压缩,得到压缩数据。可选地,压缩解压电路对待压缩数据进行压缩时,使用的数据压缩的算法可以是Huffman编码、游程编码、LZ77以及它们的任意组合等。
在其中一个实施例中,如图7所示,上述数据压缩方法还包括:
步骤S630,根据所述压缩解压电路的数量确定所述数据单元的大小,根据所述数据单元的大小以及预设的方向参数确定数据读取窗口,根据数据读取窗口得到读写控制指令。
具体地,控制电路110根据所述压缩解压电路的数量确定所述数据单元的大小,根据所述数据单元的大小确定数据读取窗口,根据数据读取窗口得到读写控制指令。具体地,数据读取窗口的大小等于输入数据的大小与压缩解压电路的数量的比值。可选地,可以通过设置窗口参数来设置数据读取窗口读取哪一位置的输入数据。可选地,该窗口参数可以包含四个方向参数,例如将各个方向的参数设定为:top(上)、bottom(下)、left(左)、right(右)。该四个方向参数可以根据数据读取窗口的边沿与预设的参照边沿之间的字节数来确定。例如,如图8所示,设定压缩解压电路的数量为4个,设定预设的参照边沿为到达输入数据占用的存取区域的边沿。输入数据包含5行,每行包含60个字节。此时,图8中的数据读取窗口(虚线框)的窗口参数可以为top=0、bottom=3、left=0、right=30。
步骤S640,根据所述读写控制指令从所述输入数据中读取数据单元。
具体地,压缩解压电路120的第一读写电路121根据所述读写控制指令从所述输入数据中读取数据单元。进一步地,第一读写电路121在读取数据单元后,将该数据单元写入该压缩解压电路的第一存储器122中。
在其中一个可选地实施例中,如图9所示,所述数据压缩方法还包括:
步骤S650,根据所述数据单元中的非压缩数据得到写出控制指令。
其中,非压缩数据为输入数据中无需压缩的数据。具体地,控制电路110根据所述数据单元中的非压缩数据得到写出控制指令。
步骤S660,根据所述写出控制指令将所述非压缩数据从所述非压缩数据通路写出。
具体地,第二读写电路根据所述写出控制指令将所述非压缩数据从所述非压缩数据通路写出。可选地,将非压缩数据写出至第二存储器150。
在其中一个实施例中,第二存储器中的存储的输入数据包含多个数据块。可选地,在将输入数据划分为多个数据块时,可以根据输入数据的特征将输入数据划分为多个数据块。可选地,该输入数据的特征可以包括数据总大小、数据分布特征以及数据的重要程度等等中的一个或多个。其中,数据的重要程度可以根据该数据出现的频率、数据大小等等特征来确定。可选地,在将输入数据划分为多个数据块时还可以考虑预设值,该预设值可以根据经验或者大数据分析获得。可选地,在将输入数据划分为多个数据块之前,可以筛除压缩数据中的“0”值。
可选地,在将输入数据划分为多个数据块,并按照预设格式摆放后,得到该输入数据中各个数据块的存储参数。输入数据中各个数据块的存储参数包括起始地址、块序列号、行号等等。该存储参数可以用于对输入数据进行读写操作。其中,数据块的块序列号可以用于区分不同的数据块。可选地,可以使用数字对数据块进行编号。
在其中一个实施例中,若第二存储器中的输入数据分数据块进行存储,则步骤S630包括:根据第一边沿与第二边沿得到读写参数,根据所述读写参数得到读写控制指令,其中,所述第一边沿为所述数据读取窗口的边沿,所述第二边沿为所述读写窗口中非整数据块位于所述读写窗口之外的边沿。
具体地,控制电路110根据第一边沿与第二边沿得到读写参数,根据所述读写参数得到读写控制指令,其中,所述第一边沿为所述数据读取窗口的边沿,所述第二边沿为所述读写窗口中非整数据块位于所述读写窗口之外的边沿。
例如,第二存储器中的输入数据如图10所示,该输入数据包含9个数据块,各个数据块的块序列号依次为0-8;图10中的虚线框数据读取窗口。该示例中,第一边沿为该虚线框的四个边沿,第二边沿为块序列号为1、3、4的数据块的边沿。
进一步地,控制电路110可以根据第一边沿与第二边沿之间的字节数得到窗口参数,之后再根据窗口参数,得到对应的读写参数。例如,承接上例,图10中每一数据块包含20个字节,每个数据块包含4行数据。该示例中,控制器110得到的数据读取窗口A的窗口参数可以为top=0、bottom=2、left=0、right=10。控制器根据窗口参数top=0、bottom=2、left=0、right=10,得到读写参数,该读写参数中起始地址可以为块序列号为0的数据块的起始地址,读取写参数中的数据长度可以为30个字节,读取写参数中的单次读取行数可以为6行,读取写参数中的读写次数可以为1次。应当清楚的是,读写参数也可以为其他数值,仅需保证基于该参数得到的读写控制指令可以准确的读取数据读取窗口中的数据。
在其中一个可选地实施例中,在步骤S630之后还包括:按照所述数据单元读取前的存储格式将所述数据单元写入第一预设存储位置,其中,所述数据单元中的完整数据块为待压缩数据,所述数据单元中的非整数据块为非压缩数据。
具体地,压缩解压电路120的第一读写电路121按照所述数据单元读取前的存储格式将所述数据单元写入第一预设存储位置,其中,所述数据单元中的完整数据块为待压缩数据,所述数据单元中的非整数据块为非压缩数据。
进一步地,在压缩解压电路120的第一读写电路121按照所述数据单元读取前的存储格式将所述数据单元写入第一预设存储位置后,控制电路110可以根据该数据单元中的完整数据块和非整数据块得到压缩控制指令和写出控制指令。具体地,控制电路110首先根据所述第一存储器122中的数据单元中的完整数据块的起始地址和数据长度确定压缩控制指令中的起始地址和数据长度。之后,根据该起始地址和数据长度得到第一读写电路的读写控制指令。具体地,控制电路110根据所述第一存储器中的所述数据单元中非整数据块,得到所述写出控制指令。
在其中一个实施例中,如图11所示,若第一存储器中的数据单元中完整数据块为待压缩数据,非完整数据块为非压缩数据,步骤S620包括:
步骤S621,并行将对应的数据单元中的待压缩数据进行整块压缩,得到多个压缩数据,其中,每一所述压缩数据包括数据头和数据体,所述数据头包含对应的数据体的起始地址、数据长度,所述数据体包括对应的数据块压缩后的编码数据。
具体地,各个所述压缩解压电路中的压缩部件123并行将对应的数据单元中的待压缩数据进行整块压缩,得到多个压缩数据,其中,每一所述压缩数据包括数据头和数据体,所述数据头包含对应的数据体的起始地址、数据长度,所述数据体包括对应的数据块压缩后的编码数据。
例如,假设数据压缩解压装置100包含4个压缩解压电路120。使用0-3标识不同的压缩解压电路。每一压缩解压电路的第一读写电路通过数据读取窗口确定读取如图10所示的输入数据的一个数据单元,应当清楚的是,4个压缩解压电路读取的为不同的数据单元。在各个第一读写电路读取数据单元后,将读取的数据单元写入对应的第一存储器。设定,编号为0的压缩解压电路获取的数据单元为A;编号为1的压缩解压电路获取的数据单元为B;编号为20的压缩解压电路获取的数据单元为C;编号为3的压缩解压电路获取的数据单元为D。
4个压缩解压电路的压缩解压部件分别从对应的第一存储器中获取数据单元中的待压缩数据并进行整块压缩,得到多个压缩数据。具体地,编号为0的压缩解压电路获取块序列号为0的数据块,并进行压缩,得到包含数据头和数据体的压缩数据,数据头为head 0,数据体为data 0;编号为1的压缩解压电路获取块序列号为2的数据块,并进行压缩,得到包含数据头和数据体的压缩数据,数据头为head 2,数据体为data2;编号为3的压缩解压电路获取块序列号为6的数据块,并进行压缩,得到包含数据头和数据体的压缩数据,数据头为head6,数据体为data6;编号为3的压缩解压电路获取块序列号为8的数据块,并进行压缩,得到包含数据头和数据体的压缩数据,数据头为head 8,数据体为data 8。
步骤S622,将各个数据头按照对应的数据块在所述输入数据中的位置写入第二预设存储位置,以及将各个数据体和非压缩数据按照预设格式写入第二预设存储位置。
具体地,控制电路110生成写入控制指令,控制第二读写电路将各个数据头按照对应的数据块在所述输入数据中的位置写入第二存储器,以及将各个数据体以及非压缩数据按照预设格式写入第二存储器。
承接上例,例如预设格式为二维紧密存储各个数据体以及非压缩数据,得到写入第二存储器中数据头、数据体以及非压缩数据如图12所示。应当清楚的是,二维紧密摆放的各行的data和非压缩数据需对齐。无法对齐时使用NA补齐,NA可以为0值。其中,head A中包含head 0和数据单元A中的非压缩数据的数据头;head B中包含head 2和数据单元B中的非压缩数据的数据头;head C中包含head 6和数据单元C中的非压缩数据的数据头;head D中包含head 8和数据单元D中的非压缩数据的数据头。
本实施例的数据压缩方法,各个压缩解压模块可以通过设置的数据读取窗口对应获取数据单元,并行对获取的数据单元中的待压缩数据进行压缩,并将非压缩数据通过非压缩数据通道写出,该方法可以有目的的选择输入数据进行并行压缩,数据压缩的可控性和效率高。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (14)
1.一种数据压缩解压装置,其特征在于,所述装置包括,控制电路和压缩解压电路,所述控制电路与所述压缩解压电路连接,所述控制电路用于根据所述压缩解压电路的数量确定数据单元的大小,根据所述数据单元的大小确定数据读取窗口,通过所述数据读取窗口的窗口参数得到读写参数,根据所述读写参数得到读写控制指令,其中,所述窗口参数是根据第一边沿和第二边沿之间的字节数得到的,所述第一边沿为所述数据读取窗口的边沿,所述第二边沿为所述数据读取窗口中非整数据块位于所述数据读取窗口之外的边沿;
所述压缩解压电路还用于根据所述读写控制指令从输入数据中读取所述数据单元;
所述控制电路用于根据所述数据单元中待压缩数据的起始地址和数据长度得到压缩控制指令,其中,所述输入数据包含至少一个数据单元,所述数据单元包含待压缩数据和非压缩数据;
所述压缩解压电路用于根据所述压缩控制指令获取所述待压缩数据,并对所述待压缩数据进行压缩得到压缩数据。
2.根据权利要求1所述的装置,其特征在于,所述压缩解压电路包括第一读写电路、第一存储器以及压缩解压部件,所述第一读写电路与所述控制电路和所述第一存储器连接,所述压缩解压部件分别与所述控制电路和所述第一存储器连接,
所述第一读写电路用于根据所述读写控制指令从所述输入数据中读取数据单元,并将所述数据单元写入所述第一存储器;
所述控制电路还用于根据所述第一存储器存储的所述数据单元中的待压缩数据的起始地址和数据长度得到压缩控制指令;
所述压缩解压部件,用于根据所述压缩控制指令对所述数据单元中的待压缩数据进行压缩。
3.根据权利要求2所述装置,其特征在于,所述装置还包括非压缩数据通路以及第二读写电路,所述非压缩数据通路与所述第一存储器连接,所述第二读写电路与所述控制电路以及所述第一存储器连接,
所述控制电路还用于根据所述数据单元中的非压缩数据得到写出控制指令;
所述第二读写电路用于根据所述写出控制指令将所述非压缩数据从所述非压缩数据通路写出。
4.根据权利要求3所述的装置,其特征在于,所述装置还包括第二存储器,所述第二存储器分别与所述控制电路和所述压缩解压电路连接,
所述第二存储器用于将所述输入数据分数据块存储。
5.根据权利要求4所述的装置,其特征在于,
所述第一读写电路具体用于根据所述读写控制指令读取所述数据读取窗口中的数据单元,并按照所述数据单元在第二存储器中存储格式将所述数据单元写入所述第一存储器,其中,所述数据单元中的完整数据块为待压缩数据,所述数据单元中的非整数据块为非压缩数据。
6.根据权利要求5所述的装置,其特征在于,所述控制电路具体用于根据所述第一存储器中的数据单元中的完整数据块的起始地址和数据长度确定所述起始地址和所述数据长度。
7.根据权利要求6所述的装置,其特征在于,所述控制电路具体用于根据所述第一存储器中的所述数据单元中非整数据块,得到所述写出控制指令。
8.根据权利要求7所述的装置,其特征在于,
各个所述压缩解压电路中的压缩部件,具体用于并行将对应的数据单元中的待压缩数据进行整块压缩,得到多个压缩数据,其中,每一所述压缩数据包括数据头和数据体,所述数据头包含对应的数据体的起始地址、数据长度,所述数据体包括对应的数据块的编码数据;
所述控制电路,还用于得到写入控制指令,其中,所述写入控制指令用于控制所述第二读写电路将各个数据头按照对应的数据块在所述输入数据中的位置写入所述第二存储器,以及将各个数据体和非压缩数据按照预设格式写入所述第二存储器。
9.一种数据压缩方法,其特征在于,所述方法包括:
根据压缩解压电路的数量确定数据单元的大小,根据所述数据单元的大小确定数据读取窗口,通过所述数据读取窗口的窗口参数得到读写参数,根据所述读写参数得到读写控制指令,其中,所述窗口参数是根据第一边沿和第二边沿之间的字节数得到的,所述第一边沿为所述数据读取窗口的边沿,所述第二边沿为所述数据读取窗口中非整数据块位于所述数据读取窗口之外的边沿;
根据所述读写控制指令从输入数据中读取所述数据单元;
根据数据单元中待压缩数据的起始地址和数据长度得到压缩控制指令,其中,所述输入数据包含至少一个数据单元,所述数据单元包含待压缩数据和非压缩数据;
按照所述压缩控制指令将所述数据单元中的待压缩数据进行压缩,得到压缩数据。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
根据所述数据单元中的非压缩数据得到写出控制指令;
根据所述写出控制指令将所述非压缩数据从所述非压缩数据通路写出。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:将所述输入数据分数据块存储。
12.根据权利要求9所述的方法,其特征在于,在根据所述读写控制指令从所述输入数据中读取数据单元,之后还包括:
按照所述数据单元读取前的存储格式将所述数据单元写入第一预设存储位置,其中,所述数据单元中的完整数据块为待压缩数据,所述数据单元中的非整数据块为非压缩数据。
13.根据权利要求12所述的方法,其特征在于,控制电路还用于根据所述数据单元中的非压缩数据得到写出控制指令,包括:
根据的所述数据单元中非整数据块,得到所述写出控制指令。
14.根据权利要求13所述的方法,其特征在于,所述按照所述压缩控制指令将所述数据单元中的待压缩数据进行压缩,得到压缩数据,包括:
并行将对应的数据单元中的待压缩数据进行整块压缩,得到多个压缩数据,其中,每一所述压缩数据包括数据头和数据体,所述数据头包含对应的数据体的起始地址、数据长度,所述数据体包括对应的数据块压缩后的编码数据;
将各个数据头按照对应的数据块在所述输入数据中的位置写入第二预设存储位置,以及将各个数据体和非压缩数据按照预设格式写入所述第二预设存储位置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811625524.4A CN111384961B (zh) | 2018-12-28 | 2018-12-28 | 数据压缩解压装置和数据压缩方法 |
PCT/CN2019/121056 WO2020114283A1 (zh) | 2018-12-07 | 2019-11-26 | 数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811625524.4A CN111384961B (zh) | 2018-12-28 | 2018-12-28 | 数据压缩解压装置和数据压缩方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111384961A CN111384961A (zh) | 2020-07-07 |
CN111384961B true CN111384961B (zh) | 2022-07-26 |
Family
ID=71216456
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811625524.4A Active CN111384961B (zh) | 2018-12-07 | 2018-12-28 | 数据压缩解压装置和数据压缩方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111384961B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114124103A (zh) * | 2020-08-31 | 2022-03-01 | 华为技术有限公司 | 一种数据压缩方法以及压缩装置 |
CN113742003B (zh) * | 2021-09-15 | 2023-08-22 | 深圳市朗强科技有限公司 | 一种基于fpga芯片的程序代码执行方法及设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5635932A (en) * | 1994-10-17 | 1997-06-03 | Fujitsu Limited | Lempel-ziv compression with expulsion of dictionary buffer matches |
US5694125A (en) * | 1995-08-02 | 1997-12-02 | Advance Hardware Architecture | Sliding window with big gap data compression system |
US7898442B1 (en) * | 1997-05-30 | 2011-03-01 | International Business Machines Corporation | On-line data compression analysis and regulation |
CN102236543A (zh) * | 2010-05-07 | 2011-11-09 | 百度在线网络技术(北京)有限公司 | 数据解压装置及方法 |
CN103136109A (zh) * | 2013-02-07 | 2013-06-05 | 中国科学院苏州纳米技术与纳米仿生研究所 | 一种具有压缩功能的固态存储***ftl写入及读取方法 |
CN103516369A (zh) * | 2013-06-20 | 2014-01-15 | 易乐天 | 一种自适应数据压缩和解压缩的方法和***及存储装置 |
CN107919872A (zh) * | 2016-10-07 | 2018-04-17 | 株式会社东芝 | 数据压缩装置、数据解压装置以及数据压缩解压装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6624761B2 (en) * | 1998-12-11 | 2003-09-23 | Realtime Data, Llc | Content independent data compression method and system |
US6819271B2 (en) * | 1999-01-29 | 2004-11-16 | Quickshift, Inc. | Parallel compression and decompression system and method having multiple parallel compression and decompression engines |
US9329991B2 (en) * | 2013-01-22 | 2016-05-03 | Seagate Technology Llc | Translation layer partitioned between host and controller |
US20150067436A1 (en) * | 2013-09-03 | 2015-03-05 | Sandisk Technologies Inc. | Nonvolatile Memory System Compression |
TWI537958B (zh) * | 2014-02-21 | 2016-06-11 | 群聯電子股份有限公司 | 資料寫入方法、記憶體儲存裝置及記憶體控制電路單元 |
US10642841B2 (en) * | 2016-11-17 | 2020-05-05 | Sap Se | Document store utilizing partial object compression |
-
2018
- 2018-12-28 CN CN201811625524.4A patent/CN111384961B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5635932A (en) * | 1994-10-17 | 1997-06-03 | Fujitsu Limited | Lempel-ziv compression with expulsion of dictionary buffer matches |
US5694125A (en) * | 1995-08-02 | 1997-12-02 | Advance Hardware Architecture | Sliding window with big gap data compression system |
US7898442B1 (en) * | 1997-05-30 | 2011-03-01 | International Business Machines Corporation | On-line data compression analysis and regulation |
CN102236543A (zh) * | 2010-05-07 | 2011-11-09 | 百度在线网络技术(北京)有限公司 | 数据解压装置及方法 |
CN103136109A (zh) * | 2013-02-07 | 2013-06-05 | 中国科学院苏州纳米技术与纳米仿生研究所 | 一种具有压缩功能的固态存储***ftl写入及读取方法 |
CN103516369A (zh) * | 2013-06-20 | 2014-01-15 | 易乐天 | 一种自适应数据压缩和解压缩的方法和***及存储装置 |
CN107919872A (zh) * | 2016-10-07 | 2018-04-17 | 株式会社东芝 | 数据压缩装置、数据解压装置以及数据压缩解压装置 |
Non-Patent Citations (2)
Title |
---|
《Multiscan-based test compression and hardware decompression using LZ77》;F. G. Wolff and C. Papachristou;《Proceedings. International Test Conference》;20021231;全文 * |
《基于共享存储和Gzip的并行压缩算法研究》;宋刚,蒋孟奇,张云泉,刘胜飞;《计算机工程与设计》;20091231;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111384961A (zh) | 2020-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111384961B (zh) | 数据压缩解压装置和数据压缩方法 | |
US5305295A (en) | Efficient method and apparatus for access and storage of compressed data | |
US5237460A (en) | Storage of compressed data on random access storage devices | |
CN107632776B (zh) | 用于压缩输入数据的数据存储装置 | |
KR960032912A (ko) | 색인된 칼라 이미지데이타를 위한 데이타압축장치 및 방법 | |
CN110799959A (zh) | 一种数据压缩方法与解压方法以及相关设备 | |
CN107947799B (zh) | 一种数据压缩方法及装置 | |
US10303402B2 (en) | Data compression using partial statistics | |
WO2021012278A1 (zh) | 一种数据的处理方法、***、编码器及解码器 | |
CN112585589A (zh) | 将压缩数据块和未压缩数据块压紧的设备及方法 | |
CN106293542B (zh) | 一种文件解压缩的方法及装置 | |
US8515189B2 (en) | Image compression method with fixed compression ratio, image decompression method, and electronic device thereof | |
WO2021237510A1 (zh) | 数据解压缩的方法、***、处理器及计算机存储介质 | |
CN111384965B (zh) | 数据压缩解压装置和数据解压方法 | |
CN109862366B (zh) | 图像压缩方法以及图像处理*** | |
US20220253220A1 (en) | Data transfers in neural processing | |
US7439887B2 (en) | Method and apparatus for GIF decompression using fixed-size codeword table | |
CN115185865A (zh) | 基于芯片的数据传输方法、设备及存储介质 | |
JP2010079535A (ja) | データアクセス装置 | |
CN115456861A (zh) | 用于将数据存储在图形处理***的存储器中的方法和装置 | |
US11275505B2 (en) | Storage system | |
EP0490239A2 (en) | Storage of compressed data on random access storage devices | |
DE102004057178A1 (de) | Siliziumspeichermedium, Steuer- und Zugangsmethode | |
KR101048542B1 (ko) | 이미지 데이터 압축 장치 및 방법 | |
US20230086658A1 (en) | Data decompression device, data compression device, and memory system |
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 |