WO2023082156A1 - 一种lz77解码电路及其工作方法 - Google Patents

一种lz77解码电路及其工作方法 Download PDF

Info

Publication number
WO2023082156A1
WO2023082156A1 PCT/CN2021/130162 CN2021130162W WO2023082156A1 WO 2023082156 A1 WO2023082156 A1 WO 2023082156A1 CN 2021130162 W CN2021130162 W CN 2021130162W WO 2023082156 A1 WO2023082156 A1 WO 2023082156A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
ram
output
address
cnt
Prior art date
Application number
PCT/CN2021/130162
Other languages
English (en)
French (fr)
Inventor
司浩
张洪柳
于秀龙
任勇强
梅绪明
隋荣全
罗去禧
Original Assignee
山东方寸微电子科技有限公司
青岛方寸微电子科技有限公司
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 山东方寸微电子科技有限公司, 青岛方寸微电子科技有限公司 filed Critical 山东方寸微电子科技有限公司
Publication of WO2023082156A1 publication Critical patent/WO2023082156A1/zh

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3086Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code

Definitions

  • the invention discloses an LZ77 decoding circuit and a working method thereof, belonging to the technical field of data decoding.
  • the LZ77 is a dictionary-based algorithm, that is, the encoded information is used as a dictionary. If the character to be encoded has appeared before, the character string is replaced by the occurrence position and length of the character string, so as to achieve the purpose of compression .
  • general-purpose compression tools we use daily, such as ARJ, PKZip, WinZip, LHArc, RAR, GZip, and many compression algorithms built into hardware, have the application of LZ77 algorithm.
  • literal is an uncompressed character
  • pair is a two-dimensional tuple containing two information of length and distance, representing an indeterminate length
  • search_window search window
  • the technology for high-performance single-stream data compression includes a computing device that updates an index data structure based on an input data stream.
  • the input data stream is divided into chunks.
  • Each block has a predetermined length, eg 136 bytes, and overlaps the previous block by a predetermined amount, eg 8 bytes.
  • the computing device processes multiple blocks in parallel using the index data to generate multiple token streams.
  • Tokens include literal tokens and reference tokens that refer to earlier matching data in the input data stream.
  • This document can effectively improve the decoding efficiency of the LZ77 algorithm, which is the core component of the existing Gzip decompression algorithm.
  • this document does not provide corresponding address mapping circuit function modules and output preprocessing circuit function modules. Therefore, it is difficult to intuitively control the processing speed of the circuit pair during data recovery.
  • the present invention discloses a LZ77 decoding circuit.
  • the invention also discloses the working method of the decoding circuit.
  • the invention preprocesses the input and output data through the improved search window structure, thereby effectively improving the decoding speed of the LZ77.
  • a LZ77 decoding circuit characterized in that the data to be decompressed is data that can be restored to include literals and pairs. Since LZ77 compression is usually used in conjunction with other compression algorithms, the data is multi-level compressed, but the LZ77 decoding When the data to be decompressed must be restored to literal or pair form, the decoding circuit of the present invention can be used to work. See Figures 10 and 11. Taking GZIP decompression as an example, the data to be decompressed is first decompressed by the Huffman decoding circuit , and then LZ77 decompression;
  • the LZ77 decoding circuit includes:
  • Input/output control circuit input cache, input preprocessing circuit, address mapping circuit, RAM input/output control circuit, RAM, output preprocessing circuit, output cache, the RAM and output cache together constitute a search window; wherein, by The RAM input/output control circuit searches the data required by the pair to the RAM of the search window;
  • the LZ77 decoding circuit includes:
  • Input cache input preprocessing circuit and output cache, the literal data in the data to be decompressed represents the part that is not compressed by LZ77, and the literal data is directly placed in the output cache by the input preprocessing circuit;
  • the data in the output cache updates the RAM. All the decompressed data and the literal data directly put into the output cache are first stored in the output cache. At the same time, the output cache counts the data. When the amount of data reaches a certain threshold, Write the corresponding data into the RAM of the search window through the RAM input/output control circuit for storage, and then realize the update of the RAM, as shown in Figure 1;
  • the input/output control circuit is used to control the input of the data to be decompressed and the output of the decompressed data
  • the input buffer is used to buffer the data input through the input/output control circuit.
  • the lower limit of the size of the input buffer needs to be limited, but it is not a fixed value, but related to max(literal_length, pair_length), that is The maximum value in the literal bit length or the pair bit(distance+length) bit length, further, the input cache should at least put down the longest one in the literal or pair;
  • the input preprocessing circuit is used to preprocess the data to be decompressed into literal data and/or pair data; in the technical field, in a specific compression algorithm, literal and pair will be distinguished by a certain "mark" , taking the application of LZ77 in the GZIP compression algorithm as an example, the literal is represented by 0-255, and the length (the first component of the pair) is represented by 257-285 plus extension bits.
  • the literal can be distinguished by the range of data and length, and length and distance appear in pairs, and the data after length is distance;
  • the address mapping circuit is used to parse the pair data, if all or part of the data required by the pair data is located in the RAM (when all required data exists in the output cache, copy length data directly from the output cache) : the distance in the pair data is mapped to a RAM-recognizable address (ram_rd_st_addr), and the number of times (ram_rd_cnt) that needs to be read in the RAM is calculated according to the length in the pair data, and according to the number of times of data in the output buffer Number (out_buf_cnt), according to the address (ram_cur_addr) currently pointed to by the RAM, to determine the location of the data to be searched, the number of read times and the length information;
  • the output preprocessing circuit reads the data back from the RAM, and cuts and splices the data to finally form the decompressed data;
  • the output cache is used to cache decompressed data
  • the RAM input/output control circuit is used to control data writing and reading in the RAM
  • the search window includes: a RAM and an output cache, and the output cache updates the RAM.
  • the search window includes a dual-port RAM and an output cache; the size of the dual-port RAM in the minimum structure of the search window is consistent with the size of the "dictionary" when using LZ77 compression, such as when performing LZ77 in the GZIP algorithm
  • LZ77 compression such as when performing LZ77 in the GZIP algorithm
  • the size of the output cache itself is greater than or equal to the data width corresponding to each address of the RAM.
  • the data width corresponding to each address of RAM is nByte.
  • 32KByte RAM uses the form of 4K*8Byte.
  • the size of the output cache should be greater than or equal to 8Byte.
  • the last data is counted, and whenever the count value is greater than or equal to 8Byte, the 8Byte data will be written into RAM through the RAM input/output control module, and this data will be output through the input/output control module at the same time.
  • the pen data will be discarded by the output buffer by shifting, and the count value will be reduced by 8 accordingly.
  • the decoding circuit reads a piece of data to be decompressed and puts it into the input buffer;
  • the working method also includes:
  • the output cache Sending the literal data and the decompressed data into the output cache, counting the data, and when the amount of data reaches a preset threshold, the output cache writes the corresponding data into RAM for preservation, and simultaneously updates the RAM;
  • the literal data and the decompressed data are sent to the output buffer, and when all the data to be decompressed are processed once, the data in the output buffer is output.
  • updating RAM is a rolling update, including:
  • each piece of data is sequentially written in the direction from the low address to the high address, or from the high address to the low address.
  • ram_cur_addr should point to the highest address 4095 , after writing a piece of 8Byte data, the address is decremented by 1.
  • ram_cur_addr is decremented to 0, due to the binary counting feature, ram_cur_addr decrements 1 again and returns to 4095, thus realizing the rolling update of RAM.
  • said step 5) output preprocessing includes:
  • the data is spliced, and the cropped data and subsequent data are re-stitched into an aligned format.
  • the length ranges from 3 to 258 Byte
  • the data read back from the search window through the RAM each time is all the data of the address, so it is necessary to Trim out redundant data.
  • the data matched by the pair data is only c, d, e, f, these 4 Bytes, but when the RAM is read, the a, b, c, d, e, f, g, and h are all read out, so the data other than valid data c, d, e, and f need to be cut out.
  • the cropped data is spliced at the high position of the output cache, and there are already 3 Bytes x, y, and z in the output cache, so the spliced output cache is x, y, z, c, d, e, f.
  • the decompression operation of the single pair data has been completed.
  • said step 2) the mapping rules of the address mapping circuit include:
  • rd_cnt [[length-[(distance-out_buf_cnt)/the number of bytes corresponding to each RAM address] take the remainder ]/ The number of bytes corresponding to each address of RAM] is rounded up ;
  • the reading process is to read the RAM from the start address, and every time it is read, ram_rd_st_addr is decremented by 1, and then the new ram_rd_st_addr is read until it reads enough rd_cnt times, the first read operation and the last time of the RAM
  • the data read by the read operation may be redundant;
  • the above is the address mapping rule.
  • the data read from the RAM needs to be cut and spliced by the output preprocessing circuit before finally entering the output cache.
  • the present invention can be widely applied to the LZ77 decoding part in various decompression algorithms.
  • the present invention only needs to design the corresponding input preprocessing circuit according to the "mark" form of literal and pair in different algorithms, and simultaneously according to When compressing, the size of the "dictionary" is used to select RAMs of different sizes, and other circuit parts can be used in common, which is convenient for transplantation and increases the reusability of the circuit.
  • the structure and update method of the search window of the present invention use RAM and output cache to form the search window together, and only perform a write operation to RAM when the data in the output cache reaches a certain threshold. This mode of operation avoids The waste of clock resources caused by frequent reading and writing of RAM, and when decompressing pair data, multiple Byte data can be read in one clock cycle, making full use of RAM and output buffer circuit, and improving the decoding speed.
  • the present invention can quickly obtain the decompressed data by proposing the mapping rules of the address mapping circuit and the output preprocessing circuit matching the search window structure.
  • Fig. 1 is LZ77 decoding circuit structure of the present invention
  • Fig. 2 is the flow chart of the present invention for data decompression
  • Fig. 3 is the input preprocessing circuit of the present invention.
  • Fig. 4 is a schematic diagram of RAM single writing in the present invention.
  • Fig. 5 is a schematic diagram of RAM rolling update in the present invention.
  • Fig. 6 is a schematic diagram of the search window of the present invention.
  • Figure 7-1 is a schematic diagram of when the data matched by the pair of the present invention only exists in RAM
  • Figure 7-2 is a schematic diagram of when the data matched by the pair of the present invention only exists in the output cache;
  • Fig. 7-3 is a schematic diagram when the data matched by the pair of the present invention exists in RAM and output cache at the same time;
  • Fig. 8 is a schematic diagram of an address mapping circuit of the present invention.
  • Fig. 9 is a schematic diagram of cutting and splicing readback data according to the present invention.
  • Fig. 10 is a schematic diagram of the application scene of the LZ77 decoding circuit in GZIP decoding in the present invention.
  • Fig. 11 is a flow chart of the application scenario of the LZ77 decoding circuit in GZIP decoding in the present invention.
  • a LZ77 decoding circuit wherein the data to be decompressed is data that can be restored to include literal and pair;
  • the LZ77 decoding circuit includes:
  • Input/output control circuit input cache, input preprocessing circuit, address mapping circuit, RAM input/output control circuit, RAM, output preprocessing circuit, output cache, the RAM and output cache together constitute a search window; wherein, by The RAM input/output control circuit searches the data required by the pair to the RAM of the search window;
  • the LZ77 decoding circuit includes:
  • the input/output control circuit is used to control the input of the data to be decompressed and the output of the decompressed data
  • the input buffer is used to buffer data input through the input/output control circuit
  • the input preprocessing circuit is used to preprocess the data to be decompressed into literal data and/or pair data;
  • the address mapping circuit is used to analyze the pair data, map the distance in the pair data to an address (ram_rd_st_addr) recognizable by the RAM, and calculate the need to read data in the RAM according to the length in the pair data
  • the number of times (ram_rd_cnt) according to the number of data in the output buffer (out_buf_cnt), according to the address (ram_cur_addr) currently pointed to by the RAM, to determine the location, number of reads and length information of the data to be searched;
  • the output preprocessing circuit reads the data back from the RAM, and cuts and splices the data to finally form the decompressed data;
  • the output cache is used to cache decompressed data
  • the RAM input/output control circuit is used to control data writing and reading in the RAM
  • the search window includes: a RAM and an output cache, and the output cache updates the RAM, as shown in FIG. 6 .
  • a kind of LZ77 decoding circuit as described in embodiment 1, described search window comprises dual-port RAM and output cache;
  • the size of dual-port RAM is consistent with the size of "dictionary" when using LZ77 compression, such as In the GZIP algorithm, a 32KByte "dictionary" is used for LZ77 compression, and the size of the RAM should be consistent with the size of the "dictionary”; the size of the output cache itself is greater than or equal to the data width corresponding to each address of the RAM.
  • the data width corresponding to each address of RAM is nByte.
  • 32KByte RAM uses the form of 4K*8Byte.
  • the size of the output cache should be greater than or equal to 8Byte.
  • the last data is counted, and whenever the count value is greater than or equal to 8Byte, the 8Byte data will be written into RAM through the search window input/output control module, and this data will be output through the input/output control module at the same time. A piece of data will be discarded by the output buffer by shifting, and the count value will be reduced by 8 accordingly.
  • the working method of the decoding circuit as described in embodiments 1 and 2 includes:
  • the decoding circuit reads a piece of data to be decompressed and puts it into the input buffer;
  • the working method of the decoding circuit as described in Embodiment 3 also includes:
  • the output cache Sending the literal data and the decompressed data into the output cache, counting the data, and when the amount of data reaches a preset threshold, the output cache writes the corresponding data into RAM for preservation, and simultaneously updates the RAM;
  • the literal data and the decompressed data are sent to the output buffer, and when all the data to be decompressed are processed once, the data in the output buffer is output.
  • Updating the RAM is a rolling update, as shown in Figures 4 and 5, including:
  • each piece of data is sequentially written in the direction from the low address to the high address, or from the high address to the low address.
  • ram_cur_addr should point to the highest address 4095 , after writing a piece of 8Byte data, the address is decremented by 1.
  • ram_cur_addr is decremented to 0, due to the binary counting feature, ram_cur_addr decrements 1 again and returns to 4095, thus realizing the rolling update of RAM.
  • output preprocessing comprises:
  • the data is spliced, and the cropped data and subsequent data are re-stitched into an aligned format.
  • the length ranges from 3 to 258 Byte, and the data read back from the search window through RAM each time is all the data of the address, so Redundant data needs to be trimmed.
  • the data matched by the pair data is only c, d, e, f, these 4 Bytes, but when the RAM is read, all the bytes a, b, c, d, e, f, g, and h are all read out, so the data other than valid data c, d, e, and f need to be cut out.
  • the cropped data is spliced at the high position of the output cache, and there are already 3 Bytes x, y, and z in the output cache, so the spliced output cache is x, y, z, c, d, e, f.
  • the decompression operation of the single pair data has been completed.
  • mapping rules of the address mapping circuit include:
  • rd_cnt [[length-[(distance-out_buf_cnt)/the number of bytes corresponding to each RAM address] take the remainder ]/ The number of bytes corresponding to each address of RAM] is rounded up ;
  • the reading process is to read the RAM from the start address, and every time it is read, ram_rd_st_addr is decremented by 1, and then the new ram_rd_st_addr is read until it reads enough rd_cnt times, the first read operation and the last time of the RAM
  • the data read by the read operation may be redundant;
  • the above is the address mapping rule.
  • the data read from the RAM needs to be cut and spliced by the output preprocessing circuit before finally entering the output cache.
  • the address mapping circuit and mapping rules proposed in the present invention enable the length and distance in the original pair data to adapt to the search window structure described in the present invention, and at the same time, the redundancy brought by the search window structure by the output preprocessing circuit The information is cut and spliced to quickly get the string matched by the pair.
  • the data width of the RAM is 1Byte
  • at least length clock cycles are required to process pair data of length length, because even a circuit with a pipeline structure consumes at least one clock cycle for each read operation, which limits The upper limit of decoding speed will be less than 1Byte/cycle.
  • the invention appropriately increases the data width corresponding to each address of the RAM to increase the upper limit of the decoding speed, and simultaneously proposes a corresponding method for checking and updating the RAM to increase the decoding speed. For example: If the size of RAM is 32KByte (4K*8Byte). Because the data bit width of each address of RAM is 8Byte, if the RAM is updated every time a Byte is decompressed, a read operation must be performed before writing the address.
  • the "dual-port RAM+output cache” structure proposed by the present invention if the decompressed data is first put into the output cache and counted (out_buf_cnt), the output cache size is 8Byte, and then the RAM is updated when the data cache is enough for 8Byte, see As shown in Figure 5, the output buffer state changes in the following order a ⁇ ab ⁇ abc ⁇ abcd ⁇ abcde ⁇ abcdef ⁇ abcdefg ⁇ abcdefgh ⁇ write abcdefgh, as shown in Figure 4, it only takes 9 clock cycles, which greatly improves the decoding efficiency.
  • the search window includes two parts, one part is the data that has been written into RAM, and the other part is the data that has not been written into RAM: the data in the output buffer is the data that has not been written into RAM. specified threshold.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

一种LZ77解码电路,按照pair数据流方向包括:输入/输出控制电路、输入缓存、输入预处理电路、地址映射电路、RAM输入/输出控制电路、RAM、输出预处理电路、输出缓存,所述RAM和输出缓存共同构成了查找窗;其中,通过所述RAM输入/输出控制电路向查找窗的RAM查找pair需要的数据;按照literal数据流方向,所述LZ77解码电路包括:输入缓存、输入预处理电路和输出缓存,输出缓存中的数据更新所述RAM。本发明通过改进的查找窗结构、对输入、输出数据分别进行预处理,进而有效提高LZ77解码速度。

Description

一种LZ77解码电路及其工作方法 技术领域
本发明公开一种LZ77解码电路及其工作方法,属于数据解码的技术领域。
背景技术
所述LZ77是一种基于字典的算法,就是将已经编码的信息作为字典,如果要编码的字符曾经出现过,就用该字符串的出现位置以及长度来替代这个字符串,从而达到压缩的目的。几乎我们日常使用的所有通用压缩工具,如ARJ,PKZip,WinZip,LHArc,RAR,GZip,和许多硬件中内置的压缩算法,都有LZ77算法的应用。
经过LZ77压缩后的数据有两种形式,literal、pair(length,distance),literal是未经压缩处理的字符,pair是一个二维元组,包含length和distance两个信息,代表的是不定长的字符串序列,在进行数据解压时literal不需要进行特殊处理,而pair则需要通过查找窗(search_window)进行数据恢复,所以电路对pair的处理速度决定了整个电路的解码速度。
中国专利文献:CN109716659A高性能单流LZ77压缩技术用于高性能单流数据压缩的技术包括基于输入数据流更新索引数据结构的计算设备。输入数据流被划分为多个块。每个块具有预定的长度,例如136个字节,并且与先前的块重叠预定的量,例如8个字节。计算设备使用索引数据并行处理多个块以生成多个令牌流。令牌包括文字令牌和引用令牌,所述引用令牌指的是输入数据流中较早的匹配数据。该文献能够有效的提高现有Gzip解压缩算法核心组成部分LZ77算法的解码效率。但是,该文献并没有给出相应的地址映射电路功能模块及输出预处理电路功能模块。因此对数据恢复时电路对pair的处理速度难以得到直观的控制。
发明内容
为了解决上述技术问题,本发明公开一种LZ77解码电路。
本发明还公开上述解码电路的工作方法。
本发明通过改进的查找窗结构、对输入、输出数据分别进行预处理,进而有效提高LZ77解码速度。
本发明详细的技术方案如下:
一种LZ77解码电路,其特征在于,其中待解压数据为可被恢复为包含literal和pair的数据,由于LZ77压缩通常会和其它压缩算法配合使用,对数据进行多级压缩,但是在进行LZ77解码时待解压数据必须可以被恢复成literal或者pair的形式才能利用本发明所述的解码电路进行工作,见图10、11,以GZIP解压为例,待解压数据先经Huffman解码电路进行解压缩后,再进行LZ77解压缩;
按照pair数据流方向,所述LZ77解码电路包括:
输入/输出控制电路、输入缓存、输入预处理电路、地址映射电路、RAM输入/输出控制电路、RAM、输出预处理电路、输出缓存,所述RAM和输出缓存共同构成了查找窗;其中,通过所述RAM输入/输出控制电路向查找窗的RAM查找pair需要的数据;
按照literal数据流方向,所述LZ77解码电路包括:
输入缓存、输入预处理电路和输出缓存,待解压数据中的literal数据代表未被LZ77压缩的部分,通过所述输入预处理电路将所述literal数据直接放到输出缓存中;
输出缓存中的数据更新所述RAM,所有解压出的数据和直接被放到输出缓存的literal数据,被先储存在输出缓存中,同时输出缓存对数据进行计数,当数据量到达一定阈值后,将对应数据通过RAM输入/输出控制电路写入查找窗的RAM进行保存,进而实现对RAM的更新,如图1所示;
其中,所述输入/输出控制电路用于控制待解压数据的输入和解压后的数据输出;
所述输入缓存,用于缓存通过输入/输出控制电路输入的数据,在输入缓存中需要限制输入缓存大小的下限,但并不是一个固定的值,而是跟max(literal_length,pair_length)有关,即literal bit长度或者pair bit(distance+length)bit长度中的最大值,进一步说,所述输入缓存应至少放下literal或者pair中最长的一个;
所述输入预处理电路,用于将待解压数据预处理为literal数据和/或pair数据;在本技术领域中,在具体的压缩算法中,会将literal和pair用某种”标记”加以区分,以GZIP压缩算法中LZ77的应用为例,literal用0-255进行表示,而length(pair的第一个分量)用257~285外加扩展位进行表示,解压时通过数据的范围就可以区分literal和length,而length和distance成对出现,length后面的数据就是distance;
所述地址映射电路,用于对pair数据进行解析,如果pair数据所需的数据全部或部分位于RAM中(当所需数据全部存在于输出缓存中时,直接从输出缓存中copy length个数据):将所述pair数据中的distance映射为RAM可识别的地址(ram_rd_st_addr),根据所述pair数据中的length计算出需要去RAM中读取数据的次数(ram_rd_cnt),根据输出缓存中数据的个数(out_buf_cnt),根据RAM当前指向的地址(ram_cur_addr),以确定待查找数据的位置、读取次数和长度信息;
所述输出预处理电路,根据数据的位置、读取次数和长度信息从RAM读回的数据,并对数据进行裁剪、拼接,最终形成解压后的数据;
所述输出缓存,用于缓存解压后的数据;
所述RAM输入/输出控制电路,用于控制RAM内的数据写入和读出;
所述查找窗,包括:RAM和输出缓存,所述输出缓存对RAM进行更新。
根据本发明优选的,所述查找窗包括双口RAM和输出缓存;所述查找窗的最小架构中双口RAM的与使用LZ77压缩时的“字典”的大小一致,比如GZIP算法中在进行LZ77压缩时使用的是32KByte大小的“字典”,RAM的大小应该跟“字典”大小一致;所述输出缓存本身的大小大于等于RAM每个地址对应的数据宽度。其中,RAM每个地址对应的数据宽度为nByte,比如32KByte的RAM使用的是4K*8Byte的形式,此时n=8,则输出缓存的大小应大于等于8Byte,解压过程中,输出缓存对解压后的数据进行计数,每当计数值大于等于8Byte后就将这8Byte的数据通过RAM输入/输出控制模块写入RAM,同时将这一笔数据通过输入/输出控制模块输出,在这之后这一笔数据会被输出缓存以移位的方式丢弃,计数值相应减8。此技术特征避免了频繁读写RAM造成的时钟资源的浪费,并且在解压pair时可以在一个时钟周期内读出多Byte数据,充分利用了RAM和输出缓存电路,进而提高了解码速度。
上述解码电路的工作方法,其特征在于,包括:
1)解码电路读入一笔待解压数据放至输入缓存;
2)将待解压数据预处理为literal数据和/或pair数据,并将literal数据送入输出缓存、将pair数据送入地址映射电路;
3)将pair数据中的distance映射为查找窗可识别的地址(ram_rd_st_addr),根据pair数据中的length计算出需要去查找窗中读取数据的次数(ram_rd_cnt),根据输出缓存中数据的个数(out_buf_cnt),根据RAM当前指向的地址(ram_cur_addr),以确定待查找数据的位置、读取次数和长度信息;
4)按照待查找数据的位置、读取次数和长度信息从查找窗中读回数据;
5)对读回的数据进行输出预处理:进行裁剪、拼接,最终得到解压后的数据;
6)重复步骤1)-5),直至所有待解压数据解压完成。
根据本发明优选的,所述工作方法还包括:
将所述literal数据和所述解压后的数据送入所述输出缓存,对数据进行计数,当数据量到达预设阈值后,输出缓存将对应数据写入RAM进行保存,同时对RAM进行更新;
进行解压时单个所匹配的字符串位置存在以下三种情形:
仅存在于RAM中;
或仅存在于输出缓存中;
或同时存在于RAM和输出缓存中。
根据本发明优选的,将所述literal数据和所述解压后的数据送入所述输出缓存,当一次待解压数据全部处理完成时,将输出缓存中的数据输出。
根据本发明优选的,对RAM进行更新是滚动更新,包括:
将输出缓存中的数据写入RAM时,按照由低地址向高地址,或者由高地址向低地址的方向将每一笔数据依次写入。以4K*8Byte的RAM,按照由高地址向低地址的方向写入时举例说明,用位宽为12bit的ram_cur_addr代表下一笔数据要写入的地址,解压开始时,ram_cur_addr应该指向最高地址4095,每写入一笔8Byte的数据后,地址减1,当ram_cur_addr减到0时,由于二进制的计数特性,ram_cur_addr再减1回到4095,这样就实现了对RAM的滚动更新。同理,也可以由低地址0开始写,不过每次写入一次数据后,ram_cur_addr应该加1,也可以实现对RAM滚动更新的效果。
根据本发明优选的,所述步骤5)输出预处理包括:
对数据进行裁剪,裁剪掉冗余数据;
对数据进行拼接,将裁剪后的数据和后续数据重新拼接成对齐的格式。
由于pair数据所代表的字符串是不定长的,比如在GZIP算法中,length的范围为3到258Byte,而每次通过RAM从查找窗中读回的数据都是该地址全部的数据,所以需要裁剪掉冗余数据。如图9,如果pair数据所匹配到的数据只有c、d、e、f,这4个Byte,但是对RAM进行读操作的时候是把这个地址所有的Byte的a、b、c、d、e、f、g、h都读出来的,所以需要把除有效数据c、d、e、f外的数据裁剪掉。裁剪后的数据拼接在输出缓存的高位,输出缓存中已经有x、y、z 3个Byte,所以拼接后的输出缓存为x、y、z、c、d、e、f。以进行RAM的更新和数据的输出,这时对单个pair数据的解压操作就已经完成。
根据本发明优选的,所述步骤2)地址映射电路的映射规则包括:
1)地址映射电路对pair数据中的distance的大小进行判断:
1-1)若distance小于等于out_buf_cnt时,则直接从输出缓存中拷贝length个数据;
1-2)若distance大于out_buf_cnt时,则从RAM中拷贝数据,并对length的大小进行判断:
1-2-1)若length<=distance–out_buf_cnt,则待查找的数据只存在于RAM中,起始地址(ram_rd_st_addr)=ram_cur_addr-[(distance-out_buf_cnt)/RAM每个地址对应的字节数] 向上取整,读取次数(rd_cnt):
若length<=[(distance-out_buf_cnt)/RAM每个地址对应的字节数] 取余,只进行1次读RAM操作,rd_cnt=1;
若length>[(distance-out_buf_cnt)/RAM每个地址对应的字节数] 取余,rd_cnt=[[length-[(distance-out_buf_cnt)/RAM每个地址对应的字节数] ]/RAM每个地址对应的字节数] 向上取整
读取过程为,从起始地址开始对RAM进行读操作,每读一次,ram_rd_st_addr减1,再对新的ram_rd_st_addr进行读操作,直至读够rd_cnt次,对RAM的第一次读操作和最后一次读操作所读出的数据可能有冗余;
1-2-2)若length>distance–out_buf_cnt时,则从RAM中查找distace–out_buf_cnt个数据,剩下的length-distance-out_buf_cnt个数据从输出缓存中获得。
以上为地址映射规则,此外从RAM中读出的数据还需要经过输出预处理电路的裁剪、拼接才能最终进入到输出缓存中。
本发明的技术优势在于:
1、本发明可广泛的的应用于各种解压缩算法中的LZ77解码部分,本发明仅需根据不同的算法中的literal和pair的“标记”形式来设计对应的输入预处理电路,同时根据压缩时使用“字典”的大小,来选择不同大小的RAM,其它电路部分可以实现通用,方便移植,增加了电路的可重用性。
2、本发明所述查找窗的组成结构及更新方式:使用RAM和输出缓存共同构成查找窗,当输出缓存中的数据达到一定的阈值时才对RAM进行一次写操作,这种操作方式避免了频繁读写RAM造成的时钟资源的浪费,并且在解压pair数据时可以在一个时钟周期内读出多Byte数据,充分利用了RAM和输出缓存电路,提高了解码速度。
3、本发明通过提出与查找窗结构相匹配的地址映射电路的映射规则和输出预处理电路,可以快速得到解压后的数据。
附图说明
图1是本发明所述LZ77解码电路结构;
图2是本发明针对数据解压流程图;
图3是本发明输入预处理电路;
图4是本发明RAM单次写入示意图;
图5是本发明RAM滚动更新示意图;
图6是本发明所述查找窗示意图;
图7-1是本发明pair所匹配数据仅存在于RAM时的示意图;
图7-2是本发明pair所匹配数据仅存在于输出缓存时的示意图;
图7-3是本发明pair所匹配数据同时存在于RAM和输出缓存时的示意图;
图8是本发明的地址映射电路示意图;
图9是本发明对读回数据进行裁剪、拼接的示意图;
图10是本发明中GZIP解码中的LZ77解码电路的应用场景示意图;
图11是本发明中GZIP解码中的LZ77解码电路的应用场景流程图。
具体实施方式
下面结合实施例和说明书附图对本发明做详细的说明,但不限于此。
实施例1、
如图1、2、3所示,
一种LZ77解码电路,其中待解压数据为可被恢复为包含literal和pair的数据;
按照pair数据流方向,所述LZ77解码电路包括:
输入/输出控制电路、输入缓存、输入预处理电路、地址映射电路、RAM输入/输出控制电路、RAM、输出预处理电路、输出缓存,所述RAM和输出缓存共同构成了查找窗;其中,通过所述RAM输入/输出控制电路向查找窗的RAM查找pair需要的数据;
按照literal数据流方向,所述LZ77解码电路包括:
输入缓存、输入预处理电路和输出缓存,输出缓存中的数据更新所述RAM;
其中,所述输入/输出控制电路用于控制待解压数据的输入和解压后的数据输出;
所述输入缓存,用于缓存通过输入/输出控制电路输入的数据;
所述输入预处理电路,用于将待解压数据预处理为literal数据和/或pair数据;
所述地址映射电路,用于对pair数据进行解析,将所述pair数据中的distance映射为RAM可识别的地址(ram_rd_st_addr),根据所述pair数据中的length计算出需要去RAM中读取数据的次数(ram_rd_cnt),根据输出缓存中数据的个数(out_buf_cnt),根据RAM当前指向的地址(ram_cur_addr),以确定待查找数据的位置、读取次数和长度信息;
所述输出预处理电路,根据数据的位置、读取次数和长度信息从RAM读回的数据,并对数据进行裁剪、拼接,最终形成解压后的数据;
所述输出缓存,用于缓存解压后的数据;
所述RAM输入/输出控制电路,用于控制RAM内的数据写入和读出;
所述查找窗,包括:RAM和输出缓存,所述输出缓存对RAM进行更新,如图6所示。
实施例2、
如图5所示。如实施例1所述一种LZ77解码电路,所述查找窗包括双口RAM和输出缓存;所述查找窗的最小架构中双口RAM的与使用LZ77压缩时的“字典”的大小一致,比如GZIP算法中在进行LZ77压缩时使用的是32KByte大小的“字典”,RAM的大小应该跟“字典”大小一致;所述输出缓存本身的大小大于等于RAM每个地址对应的数据宽度。其中,RAM每个地址对应的数据宽度为nByte,比如32KByte的RAM使用的是4K*8Byte的形式,此时n=8,则输出缓存的大小应大于等于8Byte,解压过程中,输出缓存对解压后的数据进行计数,每当计数值大于等于8Byte后就将这8Byte的数据通过查找窗输入/输出控制模块写入RAM,同时将这一笔数据通过输入/输出控制模块输出,在这之后这一笔数据会被输出缓存以移位的方式丢弃,计数值相应减8。此技术特征避免了频繁读写RAM造成的时钟资源的浪费,并且在解压pair时可以在一个时钟周期内读出多Byte数据,充分利用了RAM和输出缓存电路,进而提高了解码速度。
实施例3、
如实施例1、2所述解码电路的工作方法,包括:
1)解码电路读入一笔待解压数据放至输入缓存;
2)将待解压数据预处理为literal数据和/或pair数据,并将literal数据送入输出缓存、将pair数据送入地址映射电路;
3)将pair数据中的distance映射为查找窗可识别的地址(ram_rd_st_addr),根据pair数据中的length计算出需要去查找窗中读取数据的次数(ram_rd_cnt),根据输出缓存中数据的个数(out_buf_cnt),根据RAM当前指向的地址(ram_cur_addr),以确定待查找数据的位置、读取次数和长度信息;如图8所示;
4)按照待查找数据的位置、读取次数和长度信息从查找窗中读回数据;
5)对读回的数据进行输出预处理:进行裁剪、拼接,最终得到解压后的数据;
6)重复步骤1)-5),直至所有待解压数据解压完成。
实施例4、
如实施例3所述解码电路的工作方法还包括:
将所述literal数据和所述解压后的数据送入所述输出缓存,对数据进行计数,当数据量到达预设阈值后,输出缓存将对应数据写入RAM进行保存,同时对RAM进行更新;
进行解压时单个所匹配的字符串位置存在以下三种情形:
仅存在于RAM中;
或仅存在于输出缓存中;
或同时存在于RAM和输出缓存中。如图7-1、7-2、7-3所示。
将所述literal数据和所述解压后的数据送入所述输出缓存,当一次待解压数据全部处理完成时,将输出缓存中的数据输出。
对RAM进行更新是滚动更新,如图4、5所示,包括:
将输出缓存中的数据写入RAM时,按照由低地址向高地址,或者由高地址向低地址的方向将每一笔数据依次写入。以4K*8Byte的RAM,按照由高地址向低地址的方向写入时举例说明,用位宽为12bit的ram_cur_addr代表下一笔数据要写入的地址,解压开始时,ram_cur_addr应该指向最高地址4095,每写入一笔8Byte的数据后,地址减1,当ram_cur_addr减到0时,由于二进制的计数特性,ram_cur_addr再减1回到4095,这样就实现了对RAM的滚动更新。同理,也可以由低地址0开始写,不过每次写入一次数据后,ram_cur_addr应该加1,也可以实现对RAM滚动更新的效果。
所述步骤5)输出预处理包括:
对数据进行裁剪,裁剪掉冗余数据;
对数据进行拼接,将裁剪后的数据和后续数据重新拼接成对齐的格式。
由于pair数据所代表的字符串是不定长的,,比如在GZIP算法中,length的范围为3到258Byte,而每次通过RAM从查找窗中读回的数据都是该地址全部的数据,所以需要裁剪掉冗余数据。如图9,如果pair数据所匹配到的数据只有c、d、e、f,这4个Byte,但是对RAM进行读操作的时候是把这个地址所有的Byte的a、b、c、d、e、f、g、h都读出来的,所以需要把除有效数据c、d、e、f外的数据裁剪掉。裁剪后的数据拼接在输出缓存的高位,输出缓存中已经有x、y、z 3个Byte,所以拼接后的输出缓存为x、y、z、c、d、e、f。以进行RAM的更新和数据的输出,这时对单个pair数据的解压操作就已经完成。
实施例5、
根据实施例3所述的步骤2)地址映射电路的映射规则包括:
1)地址映射电路对pair数据中的distance的大小进行判断:
1-1)若distance小于等于out_buf_cnt时,则直接从输出缓存中拷贝length个数据;
1-2)若distance大于out_buf_cnt时,则从RAM中拷贝数据,并对length的大小进行判断:
1-2-1)若length<=distance–out_buf_cnt,则待查找的数据只存在于RAM中,起始地址(ram_rd_st_addr)=ram_cur_addr-[(distance-out_buf_cnt)/RAM每个地址对应的字节数] 向上取整,读取次数(rd_cnt):
若length<=[(distance-out_buf_cnt)/RAM每个地址对应的字节数] 取余,只进行1次读RAM操作,rd_cnt=1;
若length>[(distance-out_buf_cnt)/RAM每个地址对应的字节数] 取余,rd_cnt=[[length-[(distance-out_buf_cnt)/RAM每个地址对应的字节数] ]/RAM每个地址对应的字节数] 向上取整
读取过程为,从起始地址开始对RAM进行读操作,每读一次,ram_rd_st_addr减1,再对新的ram_rd_st_addr进行读操作,直至读够rd_cnt次,对RAM的第一次读操作和最后一次读操作所读出的数据可能有冗余;
1-2-2)若length>distance–out_buf_cnt时,则从RAM中查找distace–out_buf_cnt个数据,剩下的length-distance-out_buf_cnt个数据从输出缓存中获得。
以上为地址映射规则,此外从RAM中读出的数据还需要经过输出预处理电路的裁剪、拼接才能最终进入到输出缓存中。
本发明中提出的地址映射电路及映射规则,使原本pair数据中的length和distance可以适配本发明所述的查找窗结构,同时通过输出预处理电路对这种查找窗结构带来的冗余信息进行裁剪和拼接,从而快速得到pair所匹配的字符串。
如果RAM的数据宽度为1Byte,那么如果处理length长度的pair数据则至少需要length个时钟周期,因为即使是采用了流水线结构的电路,每次读操作也至少要消耗一个时钟周期,这样就限制了解码的速度上限会小于1Byte/cycle。本发明适当增大了RAM每个地址对应的数据宽度,以提高解码速度上限,同时提出了相应的查RAM更新方法来提高解码速度。例如:如果RAM的大小为32KByte(4K*8Byte)。由于RAM每个地址的数据位宽为8Byte,如果每解压出1个Byte就对RAM更新一次,则必须在写该地址之前进行一次读操作。例如连续解压出8个literal,如“abcdefgh”这个序列,更新RAM的过程会按照以下顺序进行写入a→读出a→写入ab→读出ab→写入abc→读出abc→写入abcd→读出abcd→写入abcde……→读出abcdefg→写入abcdefgh,完成这样的操作共需要15个时钟周期,时间成本较高。
本发明提出的“双口RAM+输出缓存”结构,如果解压后的数据先放入输出缓存并进行计数(out_buf_cnt),输出缓存大小为8Byte,当数据缓存够8Byte后再进行RAM的更新操作,见图5,输出缓存状态即按照以下顺序变化a→ab→abc→abcd→abcde→abcdef→abcdefg→abcdefgh→写入abcdefgh,如图4,仅花费9个时钟周期,极大的提高了解码效率。
同时将这一笔解压后的数据进行输出,清空输出缓存。通过上述说明,可以知道查找窗包含了两个部分,一部分是已经写入RAM的数据,另一部分是未写入RAM的数据:输出缓存中的数据就是未写入RAM的数据,这是由于设定的阈值规定的。

Claims (8)

  1. 一种LZ77解码电路,其特征在于,其中待解压数据为可被恢复为包含literal和pair的数据;
    按照pair数据流方向,所述LZ77解码电路包括:
    输入/输出控制电路、输入缓存、输入预处理电路、地址映射电路、RAM输入/输出控制电路、RAM、输出预处理电路、输出缓存,所述RAM和输出缓存共同构成了查找窗;其中,通过所述RAM输入/输出控制电路向查找窗的RAM查找pair需要的数据;
    按照literal数据流方向,所述LZ77解码电路包括:
    输入缓存、输入预处理电路和输出缓存;
    输出缓存中的数据更新所述RAM;
    其中,所述输入/输出控制电路用于控制待解压数据的输入和解压后的数据输出;
    所述输入缓存,用于缓存通过输入/输出控制电路输入的数据;
    所述输入预处理电路,用于将待解压数据预处理为literal数据和/或pair数据;
    所述地址映射电路,用于对pair数据进行解析:将所述pair数据中的distance映射为RAM可识别的地址(ram_rd_st_addr),根据所述pair数据中的length计算出需要去RAM中读取数据的次数(ram_rd_cnt),根据输出缓存中数据的个数(out_buf_cnt),根据RAM当前指向的地址(ram_cur_addr),以确定待查找数据的位置、读取次数和长度信息;
    所述输出预处理电路,根据数据的位置、读取次数和长度信息从RAM读回的数据,并对数据进行裁剪、拼接,最终形成解压后的数据;
    所述输出缓存,用于缓存解压后的数据;
    所述RAM输入/输出控制电路,用于控制RAM内的数据写入和读出;
    所述查找窗,包括:RAM和输出缓存,所述输出缓存对RAM进行更新。
  2. 根据权利要求1所述的一种LZ77解码电路,其特征在于,所述查找窗包括双口RAM和输出缓存;所述查找窗的最小架构中双口RAM的与使用LZ77压缩时的“字典”的大小一致;所述输出缓存本身的大小大于等于RAM每个地址对应的数据宽度。
  3. 如权利要求1或2所述解码电路的工作方法,其特征在于,包括:
    1)解码电路读入一笔待解压数据放至输入缓存;
    2)将待解压数据预处理为literal数据和/或pair数据,并将literal数据送入输出缓存、将pair数据送入地址映射电路;
    3)将pair数据中的distance映射为查找窗可识别的地址(ram_rd_st_addr),根据pair数据中的length计算出需要去查找窗中读取数据的次数(ram_rd_cnt),根据输出缓存中数据的个数(out_buf_cnt),根据RAM当前指向的地址(ram_cur_addr),以确定待查找数据的位置、读取次数和长度信息;
    4)按照待查找数据的位置、读取次数和长度信息从查找窗中读回数据;
    5)对读回的数据进行输出预处理:进行裁剪、拼接,最终得到解压后的数据;
    6)重复步骤1)-5),直至所有待解压数据解压完成。
  4. 如权利要求3所述解码电路的工作方法,其特征在于,所述工作方法还包括:
    将所述literal数据和所述解压后的数据送入所述输出缓存,对数据进行计数,当数据量到达预设阈值后,输出缓存将对应数据写入RAM进行保存,同时对RAM进行更新;
    进行解压时单个所匹配的字符串位置存在以下三种情形:
    仅存在于RAM中;
    或仅存在于输出缓存中;
    或同时存在于RAM和输出缓存中。
  5. 如权利要求3所述解码电路的工作方法,其特征在于,
    将所述literal数据和所述解压后的数据送入所述输出缓存,当一次待解压数据全部处理完成时,将输出缓存中的数据输出。
  6. 如权利要求4或5所述解码电路的工作方法,其特征在于,对RAM进行更新是滚动更新,包括:
    将输出缓存中的数据写入RAM时,按照由低地址向高地址,或者由高地址向低地址的方向将每一笔数据依次写入。
  7. 如权利要求3所述解码电路的工作方法,其特征在于,所述步骤5)输出预处理包括:
    对数据进行裁剪,裁剪掉冗余数据;
    对数据进行拼接,将裁剪后的数据和后续数据重新拼接成对齐的格式。
  8. 如权利要求3所述解码电路的工作方法,其特征在于,所述步骤2)地址映射电路的映射规则包括:
    1)地址映射电路对pair数据中的distance的大小进行判断:
    1-1)若distance小于等于out_buf_cnt时,则直接从输出缓存中拷贝length个数据;
    1-2)若distance大于out_buf_cnt时,则从RAM中拷贝数据,并对length的大小进行判断:
    1-2-1)若length<=distance–out_buf_cnt,则待查找的数据只存在于RAM中,
    起始地址(ram_rd_st_addr)=ram_cur_addr-[(distance-out_buf_cnt)/RAM每个地址对应的字节数] 向上取整,读取次数(rd_cnt):
    若length<=[(distance-out_buf_cnt)/RAM每个地址对应的字节数] 取余,只进行1次读RAM操作,rd_cnt=1;
    若length>[(distance-out_buf_cnt)/RAM每个地址对应的字节数] 取余,rd_cnt=[[length-[(distance-out_buf_cnt)/RAM每个地址对应的字节数] ]/RAM每个地址对应的字节数] 向上取整
    读取过程为,从起始地址开始对RAM进行读操作,每读一次,ram_rd_st_addr减1,再对新的ram_rd_st_addr进行读操作,直至读够rd_cnt次;
    1-2-2)若length>distance–out_buf_cnt时,则从RAM中查找distace–out_buf_cnt个数据,剩下的length-distance-out_buf_cnt个数据从输出缓存中获得。
PCT/CN2021/130162 2021-11-10 2021-11-11 一种lz77解码电路及其工作方法 WO2023082156A1 (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202111328583.7A CN113972916A (zh) 2021-11-10 2021-11-10 一种lz77解码电路及其工作方法
CN202111328583.7 2021-11-10

Publications (1)

Publication Number Publication Date
WO2023082156A1 true WO2023082156A1 (zh) 2023-05-19

Family

ID=79589635

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2021/130162 WO2023082156A1 (zh) 2021-11-10 2021-11-11 一种lz77解码电路及其工作方法

Country Status (2)

Country Link
CN (1) CN113972916A (zh)
WO (1) WO2023082156A1 (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100302077A1 (en) * 2009-06-02 2010-12-02 International Business Machines Corporation Wear reduction methods by using compression/decompression techniques with fast random access
CN103078647A (zh) * 2013-01-15 2013-05-01 中国科学院计算技术研究所 一种lz77压缩算法的硬件解码实现系统及方法
CN106850504A (zh) * 2015-12-04 2017-06-13 北京航空航天大学 基于http静态压缩数据流的有害代码检测方法和装置
CN110334066A (zh) * 2019-05-09 2019-10-15 苏州浪潮智能科技有限公司 一种基于FPGA的Gzip解压缩方法、装置及系统
US20210135685A1 (en) * 2020-12-11 2021-05-06 Intel Corporation Compression engine with configurable search depths and window sizes

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100302077A1 (en) * 2009-06-02 2010-12-02 International Business Machines Corporation Wear reduction methods by using compression/decompression techniques with fast random access
CN103078647A (zh) * 2013-01-15 2013-05-01 中国科学院计算技术研究所 一种lz77压缩算法的硬件解码实现系统及方法
CN106850504A (zh) * 2015-12-04 2017-06-13 北京航空航天大学 基于http静态压缩数据流的有害代码检测方法和装置
CN110334066A (zh) * 2019-05-09 2019-10-15 苏州浪潮智能科技有限公司 一种基于FPGA的Gzip解压缩方法、装置及系统
US20210135685A1 (en) * 2020-12-11 2021-05-06 Intel Corporation Compression engine with configurable search depths and window sizes

Also Published As

Publication number Publication date
CN113972916A (zh) 2022-01-25

Similar Documents

Publication Publication Date Title
US7403136B2 (en) Block data compression system, comprising a compression device and a decompression device and method for rapid block data compression with multi-byte search
US5870036A (en) Adaptive multiple dictionary data compression
US5151697A (en) Data structure management tagging system
CN114244373B (zh) Lz系列压缩算法编解码速度优化方法
US7099884B2 (en) System and method for data compression and decompression
CN112953550B (zh) 数据压缩的方法、电子设备及存储介质
US11431351B2 (en) Selection of data compression technique based on input characteristics
US10938410B2 (en) Hardware friendly data compression
CN102143039B (zh) 数据压缩中数据分段方法及设备
CN103236847A (zh) 基于多层哈希结构与游程编码的数据无损压缩方法
JPH03204232A (ja) 圧縮データの符号化方法
US9479194B2 (en) Data compression apparatus and data decompression apparatus
US20200294629A1 (en) Gene sequencing data compression method and decompression method, system and computer-readable medium
WO2022198483A1 (zh) 数据压缩方法、装置、可移动平台及存储介质
JPH03204233A (ja) データ圧縮方法
CN114442954B (zh) 一种lz4编码压缩装置
CN109672449B (zh) 一种基于fpga快速实现lz77压缩的装置及方法
WO2023082156A1 (zh) 一种lz77解码电路及其工作方法
CN113078908A (zh) 一种适用于时间序列数据库的简易编解码方法
Lin A hardware architecture for the LZW compression and decompression algorithms based on parallel dictionaries
CN106385260A (zh) 一种基于低延时的lz无损压缩算法的fpga实现系统
CN109802686B (zh) 加速压缩方法以及加速压缩装置
JP3241787B2 (ja) データ圧縮方式
JP3242795B2 (ja) データ処理装置及びデータ処理方法
CN114598329B (zh) 一种面向快速解压应用的轻量级无损压缩方法

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 21963609

Country of ref document: EP

Kind code of ref document: A1