CN112988673B - 一种处理解压缩过程中数据溢出的方法和设备 - Google Patents
一种处理解压缩过程中数据溢出的方法和设备 Download PDFInfo
- Publication number
- CN112988673B CN112988673B CN202110197520.6A CN202110197520A CN112988673B CN 112988673 B CN112988673 B CN 112988673B CN 202110197520 A CN202110197520 A CN 202110197520A CN 112988673 B CN112988673 B CN 112988673B
- Authority
- CN
- China
- Prior art keywords
- data
- decompressed
- decompression
- original text
- decoding engine
- 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 86
- 238000000034 method Methods 0.000 title claims abstract description 53
- 230000008569 process Effects 0.000 title claims abstract description 20
- 238000012545 processing Methods 0.000 title abstract description 8
- 230000004044 response Effects 0.000 claims abstract description 23
- 238000001514 detection method Methods 0.000 claims abstract description 10
- 238000004364 calculation method Methods 0.000 claims description 3
- 238000004590 computer program Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000007906 compression Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/126—Character encoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/113—Details of archiving
-
- 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/3086—Compression; 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
-
- 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/60—General implementation details not specific to a particular type of compression
- H03M7/6005—Decoder aspects
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供了一种处理解压缩过程中数据溢出的方法和设备,该方法包括:将原文进行解压缩操作并检测解压缩过程中是否发生数据溢出事件;响应于检测到数据溢出事件,将主机缓存中解压缩得到的第一数据存储到目标存储器中并将解码引擎的数据读入端口关闭;将解码引擎中正在进行解压缩的数据进行解压缩以得到第二数据并将第二数据存储到解码引擎的缓存中;计算已经进行解压缩的数据在原文中的位置;基于位置获得原文中未进行解压缩的数据并将未进行解压缩的数据重新进行解压缩得到第三数据并将第二数据存储到目标存储器中;将第一、第二和第三数据拼接得到完整解压缩数据。通过使用本发明的方案,能够避免重复解压,提高了效率,保证了任务的收敛性。
Description
技术领域
本领域涉及计算机领域,并且更具体地涉及一种处理解压缩过程中数据溢出的方法和设备。
背景技术
随着大数据等新兴产业的迅速发展,产生的海量数据将呈指数级增长,这些海量数据将对现有的存储设备带来巨大的压力。而随着云计算对传统计算架构的替代,数据存储的结构也在发生变化,计算资源和存储资源将进一步向数据中心集中,进一步给服务器的存储带来压力。面对这些持续增加的海量数据,数据压缩成为减轻服务器存储负担和降低存储成本的有效方法之一。
对于解压缩任务而言,由于压缩率是未知的,因此无法为解压缩后的文件准确的开辟缓存区。当文件实际的压缩率比预期的值高时,将会出现解压缩后的文件大于缓存区的情况,这种情况称为溢出。当溢出发生时,传统的做法是中止当前任务,保证电路不会再继续输出多余的数据,以免发生内存泄漏。同时电路告知主机该解压缩任务发生溢出,主机抛弃已经解压缩出来的数据,然后主机将开辟更大的数据缓存区,并将该任务重新提交至解压缩电路。
发明内容
有鉴于此,本发明实施例的目的在于提出一种处理解压缩过程中数据溢出的方法和设备,通过使用本发明的技术方案,能够避免重复解压,提高了效率,保证了任务的收敛性,每次重新提交任务,一定可在之前的基础上多解压缩一定量的数据。
基于上述目的,本发明的实施例的一个方面提供了一种处理解压缩过程中数据溢出的方法,包括以下步骤:
将原文进行解压缩操作并检测解压缩过程中是否发生数据溢出事件;
响应于检测到数据溢出事件,将主机缓存中解压缩得到的第一数据存储到目标存储器中并将解码引擎的数据读入端口关闭;
将解码引擎中正在进行解压缩的数据进行解压缩以得到第二数据并将第二数据存储到解码引擎的缓存中;
计算已经进行解压缩的数据在原文中的位置;
基于位置获得原文中未进行解压缩的数据并将未进行解压缩的数据重新进行解压缩得到第三数据并将第二数据存储到目标存储器中;
将第一数据、第二数据和第三数据拼接得到完整的解压缩后的数据。
根据本发明的一个实施例,还包括:
获取当前解压缩电路的流水线深度。
根据本发明的一个实施例,还包括:
响应于原文中的数据依次输入到解压缩电路进行解压缩,将每一个输入到解压缩电路中的数据同时存储到先入先出存储器中;
判断先入先出存储器中存储的数据个数是否与流水线深度相同;
响应于先入先出存储器中存储的数据个数与流水线深度相同,每向先入先出存储器存储一个数据,则从先入先出存储器中读取一个数据并将读取的数据删除。
根据本发明的一个实施例,还包括:
响应于先入先出存储器中存储的数据个数小于流水线深度,关闭先入先出存储器的读端口直到先入先出存储器中存储的数据个数与流水线深度相同;
响应于先入先出存储器中存储的数据个数与流水线深度相同,打开先入先出存储器的读端口,并且每向先入先出存储器存储一个数据,则从先入先出存储器中读取一个数据并将读取的数据删除。
根据本发明的一个实施例,还包括:
响应于原文中的数据依次输入到解压缩电路进行解压缩,使用第一计数器记录输入到解压缩电路中的数据个数。
根据本发明的一个实施例,计算已经进行解压缩的数据在原文中的位置包括:
读取第一计数器当前的读数并获取先入先出存储器中的数据个数;
使用读数减去数据个数得到已经进行解压缩的数据个数;
基于原文的数据个数和已经进行解压缩的数据个数得到已经进行解压缩的数据在原文中的位置。
根据本发明的一个实施例,将原文进行解压缩操作并检测解压缩过程中是否发生数据溢出事件包括:
响应于解码引擎向主机缓存输出的数据量与主机缓存的容量相同,判断是否存在未解压完成的数据;
响应于存在未解压完成的数据,判定发生了数据溢出事件。
根据本发明的一个实施例,还包括:
使用第二计数器记录向解码引擎的缓存中输入的第二数据的个数;
基于第二计数器的读数获得第二数据的大小并将第二数据进行标记。
根据本发明的一个实施例,将第二数据存储到目标存储器中包括:
获取解码引擎的缓存中存储的带有标记的数据;
将带有标记的数据存储到目标存储器中。
本发明的实施例的另一个方面,还提供了一种处理解压缩过程中数据溢出的设备,设备包括:
检测模块,检测模块配置为将原文进行解压缩操作并检测解压缩过程中是否发生数据溢出事件;
关闭模块,关闭模块配置为响应于检测到数据溢出事件,将主机缓存中解压缩得到的第一数据存储到目标存储器中并将解码引擎的数据读入端口关闭;
存储模块,存储模块配置为将解码引擎中正在进行解压缩的数据进行解压缩以得到第二数据并将第二数据存储到解码引擎的缓存中;
计算模块,计算模块配置为计算已经进行解压缩的数据在原文中的位置;
解压缩模块,解压缩模块配置为基于位置获得原文中未进行解压缩的数据并将未进行解压缩的数据重新进行解压缩得到第三数据并将第二数据存储到目标存储器中;
拼接模块,拼接模块配置为将第一数据、第二数据和第三数据拼接得到完整的解压缩后的数据。
本发明具有以下有益技术效果:本发明实施例提供的处理解压缩过程中数据溢出的方法,通过将原文进行解压缩操作并检测解压缩过程中是否发生数据溢出事件;
响应于检测到数据溢出事件,将主机缓存中解压缩得到的第一数据存储到目标存储器中并将解码引擎的数据读入端口关闭;将解码引擎中正在进行解压缩的数据进行解压缩以得到第二数据并将第二数据存储到解码引擎的缓存中;计算已经进行解压缩的数据在原文中的位置;基于位置获得原文中未进行解压缩的数据并将未进行解压缩的数据重新进行解压缩得到第三数据并将第二数据存储到目标存储器中;将第一数据、第二数据和第三数据拼接得到完整的解压缩后的数据的技术方案,能够避免重复解压,提高了效率,保证了任务的收敛性,每次重新提交任务时,一定可在之前的基础上多解压缩一定量的数据。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为根据本发明一个实施例的处理解压缩过程中数据溢出的方法的示意性流程图;
图2为根据本发明一个实施例的处理解压缩过程中数据溢出的设备的示意图;
图3为根据本发明一个实施例的解压缩电路的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
基于上述目的,本发明的实施例的第一个方面,提出了一种处理解压缩过程中数据溢出的方法的一个实施例。图1示出的是该方法的示意性流程图。
如图1中所示,该方法可以包括以下步骤:
S1将原文进行解压缩操作并检测解压缩过程中是否发生数据溢出事件,解压缩操作按照现有技术中的过程进行即可,但是在解压缩过程中如果解压缩后得到的数据大于主机的缓存,主机无多余缓存接收新的数据就会发生数据溢出事件;
S2响应于检测到数据溢出事件,将主机缓存中解压缩得到的第一数据存储到目标存储器中并将解码引擎的数据读入端口关闭,在检测到数据溢出事件发生时,主机缓存中存储有本次解压缩操作得到的数据,将这部分数据先存储到主机中的目标存储中,同时将LZ77解码引擎的数据读入端口进行关闭,避免LZ77解码引擎读取新的数据;
S3将解码引擎中正在进行解压缩的数据进行解压缩以得到第二数据并将第二数据存储到解码引擎的缓存中,数据溢出事件发生时,LZ77解码引擎中还有一定数量的数据正在进行解压缩,这些数据解压缩后得到的数据无法存储到主机的缓存中,需要将这些数据暂时存储到LZ77解码引擎的缓存中;
S4计算已经进行解压缩的数据在原文中的位置,可以根据已经进行解压缩的数据个数或数据量计算出原文中已经有多少数据进行了解压缩并存储到了目标存储器中;
S5基于位置获得原文中未进行解压缩的数据并将未进行解压缩的数据重新进行解压缩得到第三数据并将第二数据存储到目标存储器中,基于上面计算得到的位置可以容易地计算出没有进行解压缩的数据,将解压缩电路中的所有数据清空后重新启动解压缩操作,将这部分数据重新进行解压缩,同时将LZ77解码引擎缓存中存储的第二数据也输出到主机缓存中,经由主机缓存存储到目标存储器中;
S6将第一数据、第二数据和第三数据拼接得到完整的解压缩后的数据,将几部分数据进行拼接后就可以得到完整的解压缩后的数据文件了。还有一些情况是,在将未解压缩的数据重新解压缩时,又一次或多次发生了数据溢出事件,出现这种情况时使用上面的方法再进行一次或多次解压缩,直到所有的数据解压缩完成,在将所有的数据进行拼接即可。
通过本发明的技术方案,能够避免重复解压,提高了效率,保证了任务的收敛性,每次重新提交任务时,一定可在之前的基础上多解压缩一定量的数据。
在本发明的一个优选实施例中,还包括:
获取当前解压缩电路的流水线深度。该流水线深度由解压缩电路而定,使用不同的解压缩电路会得到不同的深度。
在本发明的一个优选实施例中,还包括:
响应于原文中的数据依次输入到解压缩电路进行解压缩,将每一个输入到解压缩电路中的数据同时存储到先入先出存储器(FIFO)中;
判断先入先出存储器中存储的数据个数是否与流水线深度相同;
响应于先入先出存储器中存储的数据个数与流水线深度相同,每向先入先出存储器存储一个数据,则从先入先出存储器中读取一个数据并将读取的数据删除。
在本发明的一个优选实施例中,还包括:
响应于先入先出存储器中存储的数据个数小于流水线深度,关闭先入先出存储器的读端口直到先入先出存储器中存储的数据个数与流水线深度相同;
响应于先入先出存储器中存储的数据个数与流水线深度相同,打开先入先出存储器的读端口,并且每向先入先出存储器存储一个数据,则从先入先出存储器中读取一个数据并将读取的数据删除。如图3所示,在解压缩电路的数据输入端口添加一个FIFO,每当解压缩引擎需要新读入一个数据时,该数据会同时被送入FIFO。并且控制该FIFO中的数据个数与解压缩电路(不包括LZ77解码引擎)的流水线深度相同,即在FIFO中的数据个数小于流水线深度时,关闭FIFO的读端口,只向FIFO中写入数据。当FIFO数据等于流水线深度后,打开读端口,并保证每向FIFO写入一个数据的同时,从读端口读取一个数据并将读取的数据删除。
在本发明的一个优选实施例中,还包括:
响应于原文中的数据依次输入到解压缩电路进行解压缩,使用第一计数器记录输入到解压缩电路中的数据个数。在解压缩电路中的数据输入端增加一个计数器,该计数器用来记录当前已消耗的待解压数据的位置,即每当电路从输入端口获取一个数据,该计数器自增1。
在本发明的一个优选实施例中,计算已经进行解压缩的数据在原文中的位置包括:
读取第一计数器当前的读数并获取先入先出存储器中的数据个数;
使用读数减去数据个数得到已经进行解压缩的数据个数;
基于原文的数据个数和已经进行解压缩的数据个数得到已经进行解压缩的数据在原文中的位置。当发生数据溢出事件时,解压缩电路停止获取新的数据,同时停止计数器,从该计数器读取当前计数值,再从FIFO中读取剩余元素的个数,用这两个值相减得到原文位置,将该位置作为已消耗的待解压缩原文位置,报告给主机。
在本发明的一个优选实施例中,将原文进行解压缩操作并检测解压缩过程中是否发生数据溢出事件包括:
响应于解码引擎向主机缓存输出的数据量与主机缓存的容量相同,判断是否存在未解压完成的数据;
响应于存在未解压完成的数据,判定发生了数据溢出事件。在解压缩过程中,如果LZ77解码引擎检测到当前输出的总数据量与主机缓存大小相等,且此时LZ77解码引擎并未完成对所有数据的解压缩,则引擎报告数据溢出事件。
在本发明的一个优选实施例中,还包括:
使用第二计数器记录向解码引擎的缓存中输入的第二数据的个数;
基于第二计数器的读数获得第二数据的大小并将第二数据进行标记。
在本发明的一个优选实施例中,将第二数据存储到目标存储器中包括:
获取解码引擎的缓存中存储的带有标记的数据;
将带有标记的数据存储到目标存储器中。当数据溢出事件发生时,关闭LZ77解码引擎的输入端口,即LZ77解码引擎不再接收新的输入数据。同时关闭LZ77解码引擎向主机缓存的输出端口,因为此时主机缓存中已经没有多余空间可以接收新的数据。LZ77解码引擎内部流水线的剩余数据继续进行解压缩过程,解压缩出来的数据写入LZ77解码引擎的缓存中。在LZ77解码引擎的输出端增加一个计数器电路,正常工作过程中,该计数器清零,当发生数据溢出事件时,每向LZ77解码引擎的缓存写入一个新数据,该计数器自增1。增加一个状态字段,称为未输出数据大小,当LZ77解码引擎中的流水线中的所有数据处理完成后,该计数器的值将被写入该状态字段,在任务结束时,该字段将与其他状态字段一同被保存到主机端。
当主机检测到解压缩电路报告的数据溢出事件后,主机首先从当前数据缓存内将所有已解压数据拷贝至目标存储器,然后主机从任务应答中获取当前任务已消耗的原文位置,并将该位置以前的数据标记为已解压数据。当主机已经完成当前任务的收尾工作后,将当前任务未解压缩部分数据单独或者同下一个任务的未解压数据一同作为一个新的解压缩任务下发给解压缩电路,电路收到新任务后,首先从电路状态缓存中获取数据并恢复电路状态(恢复过程和方法属于有状态解压缩电路的实现方式,不在本发明讨论范围),电路需要从状态数据中获取未输出数据大小,在恢复LZ77解码引擎的缓存的过程的同时,需要将与该值相等的量的数据输出至主机缓存,输出至主机的数据位于数据缓存的末尾,例如,未输出的数据大小为100字节,LZ77解码引擎的缓存大小为2000字节,则在恢复LZ77解码引擎的缓存时,前1900个字节仅写入LZ77解码引擎的缓存中,不输出至主机,最后100个字节既写入LZ77解码引擎的缓存中,同时输出至主机。
在本发明的一个优选实施例中,在解压缩电路的输入端增加一个数据选择器电路,该电路从输入端口和FIFO的输出中选择一条路径的数据送入解压缩电路。正常情况下,输入数据被送入数据解码引擎,当数据解码引擎检测到一个end-of-block符号时,引擎将关闭输入端口,清空当前解压缩电路流水线中未解压数据,然后控制数据选择器从FIFO的输出端口读出数据并重建流水线。
通过本发明的技术方案,能够避免重复解压,提高了效率,保证了任务的收敛性,每次重新提交任务时,一定可在之前的基础上多解压缩一定量的数据。
需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,上述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中存储介质可为磁碟、光盘、只读存储器(Read-Only Memory,ROM)或随机存取存储器(Random AccessMemory,RAM)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
此外,根据本发明实施例公开的方法还可以被实现为由CPU执行的计算机程序,该计算机程序可以存储在计算机可读存储介质中。在该计算机程序被CPU执行时,执行本发明实施例公开的方法中限定的上述功能。
基于上述目的,本发明的实施例的第二个方面,提出了一种处理解压缩过程中数据溢出的设备,如图2所示,设备200包括:
检测模块,检测模块配置为将原文进行解压缩操作并检测解压缩过程中是否发生数据溢出事件;
关闭模块,关闭模块配置为响应于检测到数据溢出事件,将主机缓存中解压缩得到的第一数据存储到目标存储器中并将解码引擎的数据读入端口关闭;
存储模块,存储模块配置为将解码引擎中正在进行解压缩的数据进行解压缩以得到第二数据并将第二数据存储到解码引擎的缓存中;
计算模块,计算模块配置为计算已经进行解压缩的数据在原文中的位置;
解压缩模块,解压缩模块配置为基于位置获得原文中未进行解压缩的数据并将未进行解压缩的数据重新进行解压缩得到第三数据并将第二数据存储到目标存储器中;
拼接模块,拼接模块配置为将第一数据、第二数据和第三数据拼接得到完整的解压缩后的数据。
上述实施例,特别是任何“优选”实施例是实现的可能示例,并且仅为了清楚地理解本发明的原理而提出。可以在不脱离本文所描述的技术的精神和原理的情况下对上述实施例进行许多变化和修改。所有修改旨在被包括在本公开的范围内并且由所附权利要求保护。
Claims (10)
1.一种处理解压缩过程中数据溢出的方法,其特征在于,包括以下步骤:
将原文进行解压缩操作并检测解压缩过程中是否发生数据溢出事件;
响应于检测到数据溢出事件,将主机缓存中解压缩得到的第一数据存储到目标存储器中并将解码引擎的数据读入端口关闭;
将所述解码引擎中正在进行解压缩的数据进行解压缩以得到第二数据并将所述第二数据存储到所述解码引擎的缓存中;
计算已经进行解压缩的数据在所述原文中的位置;
基于所述位置获得所述原文中未进行解压缩的数据并将所述未进行解压缩的数据重新进行解压缩得到第三数据,并将所述第二数据和所述第三数据存储到所述目标存储器中;
将所述第一数据、第二数据和第三数据拼接得到完整的解压缩后的数据。
2.根据权利要求1所述的方法,其特征在于,还包括:
获取当前解压缩电路的流水线深度。
3.根据权利要求2所述的方法,其特征在于,还包括:
响应于所述原文中的数据依次输入到所述解压缩电路进行解压缩,将每一个输入到所述解压缩电路中的数据同时存储到先入先出存储器中;
判断所述先入先出存储器中存储的数据个数是否与所述流水线深度相同;
响应于所述先入先出存储器中存储的数据个数与所述流水线深度相同,每向所述先入先出存储器存储一个数据,则从所述先入先出存储器中读取一个数据并将读取的数据删除。
4.根据权利要求3所述的方法,其特征在于,还包括:
响应于所述先入先出存储器中存储的数据个数小于所述流水线深度,关闭所述先入先出存储器的读端口直到所述先入先出存储器中存储的数据个数与所述流水线深度相同;
响应于所述先入先出存储器中存储的数据个数与所述流水线深度相同,打开所述先入先出存储器的读端口,并且每向所述先入先出存储器存储一个数据,则从所述先入先出存储器中读取一个数据并将读取的数据删除。
5.根据权利要求4所述的方法,其特征在于,还包括:
响应于所述原文中的数据依次输入到所述解压缩电路进行解压缩,使用第一计数器记录输入到所述解压缩电路中的数据个数。
6.根据权利要求5所述的方法,其特征在于,计算已经进行解压缩的数据在所述原文中的位置包括:
读取所述第一计数器当前的读数并获取所述先入先出存储器中的数据个数;
使用所述读数减去所述数据个数得到已经进行解压缩的数据个数;
基于所述原文的数据个数和已经进行解压缩的数据个数得到已经进行解压缩的数据在所述原文中的位置。
7.根据权利要求1所述的方法,其特征在于,将原文进行解压缩操作并检测解压缩过程中是否发生数据溢出事件包括:
响应于所述解码引擎向所述主机缓存输出的数据量与所述主机缓存的容量相同,判断是否存在未解压完成的数据;
响应于存在未解压完成的数据,判定发生了数据溢出事件。
8.根据权利要求1所述的方法,其特征在于,还包括:
使用第二计数器记录向所述解码引擎的缓存中输入的第二数据的个数;
基于所述第二计数器的读数获得所述第二数据的大小并将所述第二数据进行标记。
9.根据权利要求8所述的方法,其特征在于,将所述第二数据和所述第三数据存储到所述目标存储器中包括:
获取所述解码引擎的缓存中存储的带有标记的数据;
将所述带有标记的数据存储到所述目标存储器中。
10.一种处理解压缩过程中数据溢出的设备,其特征在于,所述设备包括:
检测模块,所述检测模块配置为将原文进行解压缩操作并检测解压缩过程中是否发生数据溢出事件;
关闭模块,所述关闭模块配置为响应于检测到数据溢出事件,将主机缓存中解压缩得到的第一数据存储到目标存储器中并将解码引擎的数据读入端口关闭;
存储模块,所述存储模块配置为将所述解码引擎中正在进行解压缩的数据进行解压缩以得到第二数据并将所述第二数据存储到所述解码引擎的缓存中;
计算模块,所述计算模块配置为计算已经进行解压缩的数据在所述原文中的位置;
解压缩模块,所述解压缩模块配置为基于所述位置获得所述原文中未进行解压缩的数据并将所述未进行解压缩的数据重新进行解压缩得到第三数据,并将所述第二数据和所述第三数据存储到所述目标存储器中;
拼接模块,所述拼接模块配置为将所述第一数据、第二数据和第三数据拼接得到完整的解压缩后的数据。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110197520.6A CN112988673B (zh) | 2021-02-22 | 2021-02-22 | 一种处理解压缩过程中数据溢出的方法和设备 |
US18/039,478 US11809807B1 (en) | 2021-02-22 | 2022-01-26 | Method and device for processing data overflow in decompression process |
PCT/CN2022/074067 WO2022174731A1 (zh) | 2021-02-22 | 2022-01-26 | 一种处理解压缩过程中数据溢出的方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110197520.6A CN112988673B (zh) | 2021-02-22 | 2021-02-22 | 一种处理解压缩过程中数据溢出的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112988673A CN112988673A (zh) | 2021-06-18 |
CN112988673B true CN112988673B (zh) | 2023-02-28 |
Family
ID=76349376
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110197520.6A Active CN112988673B (zh) | 2021-02-22 | 2021-02-22 | 一种处理解压缩过程中数据溢出的方法和设备 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11809807B1 (zh) |
CN (1) | CN112988673B (zh) |
WO (1) | WO2022174731A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112988673B (zh) * | 2021-02-22 | 2023-02-28 | 山东英信计算机技术有限公司 | 一种处理解压缩过程中数据溢出的方法和设备 |
US20240094907A1 (en) * | 2022-07-27 | 2024-03-21 | Meta Platforms Technologies, Llc | Lossless compression of large data sets for systems on a chip |
CN117097346B (zh) * | 2023-10-19 | 2024-03-19 | 深圳大普微电子股份有限公司 | 一种解压器及数据解压方法、系统、设备、计算机介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102841907A (zh) * | 2011-06-24 | 2012-12-26 | 环达电脑(上海)有限公司 | 数据压缩和解压缩的处理方法 |
CN103891150A (zh) * | 2011-10-01 | 2014-06-25 | 英特尔公司 | 用于高带宽字典压缩的压缩格式 |
CN104378615A (zh) * | 2013-08-13 | 2015-02-25 | 联发科技股份有限公司 | 数据处理装置以及相关数据处理方法 |
CN110019184A (zh) * | 2017-09-04 | 2019-07-16 | 北京字节跳动网络技术有限公司 | 一种压缩和解压缩有序整数数组的方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8824569B2 (en) * | 2011-12-07 | 2014-09-02 | International Business Machines Corporation | High bandwidth decompression of variable length encoded data streams |
GB2530312B (en) * | 2014-09-19 | 2016-09-14 | Imagination Tech Ltd | Data compression |
US10366026B1 (en) * | 2016-12-23 | 2019-07-30 | Amazon Technologies, Inc. | Random access to decompressed blocks |
US10824506B1 (en) * | 2018-12-10 | 2020-11-03 | Amazon Technologies, Inc. | Memory controller with parallel error checking and decompression |
US10680643B2 (en) * | 2018-12-14 | 2020-06-09 | Intel Corporation | Compression scheme with control of search agent activity |
US10673460B1 (en) * | 2019-02-27 | 2020-06-02 | International Business Machines Corporation | Spilling temporary results for accommodation of memory boundaries |
CN110943744B (zh) * | 2019-12-03 | 2022-12-02 | 嘉楠明芯(北京)科技有限公司 | 数据压缩、解压缩以及基于数据压缩和解压缩的处理方法及装置 |
CN112988673B (zh) * | 2021-02-22 | 2023-02-28 | 山东英信计算机技术有限公司 | 一种处理解压缩过程中数据溢出的方法和设备 |
-
2021
- 2021-02-22 CN CN202110197520.6A patent/CN112988673B/zh active Active
-
2022
- 2022-01-26 WO PCT/CN2022/074067 patent/WO2022174731A1/zh active Application Filing
- 2022-01-26 US US18/039,478 patent/US11809807B1/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102841907A (zh) * | 2011-06-24 | 2012-12-26 | 环达电脑(上海)有限公司 | 数据压缩和解压缩的处理方法 |
CN103891150A (zh) * | 2011-10-01 | 2014-06-25 | 英特尔公司 | 用于高带宽字典压缩的压缩格式 |
CN104378615A (zh) * | 2013-08-13 | 2015-02-25 | 联发科技股份有限公司 | 数据处理装置以及相关数据处理方法 |
CN110019184A (zh) * | 2017-09-04 | 2019-07-16 | 北京字节跳动网络技术有限公司 | 一种压缩和解压缩有序整数数组的方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2022174731A1 (zh) | 2022-08-25 |
US11809807B1 (en) | 2023-11-07 |
CN112988673A (zh) | 2021-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112988673B (zh) | 一种处理解压缩过程中数据溢出的方法和设备 | |
US8055633B2 (en) | Method, system and computer program product for duplicate detection | |
CN107577717B (zh) | 一种保障数据一致性的处理方法、装置及服务器 | |
CN108460045B (zh) | 一种快照的处理方法及分布式块存储系统 | |
CN107391269B (zh) | 一种用于通过持久化队列处理消息的方法与设备 | |
WO2021238252A1 (zh) | 一种分布式文件系统文件局部随机预读的方法和设备 | |
US20240264915A1 (en) | Data storage method and apparatus, and electronic device and readable storage medium | |
CN110888791A (zh) | 一种日志处理方法、装置、设备和存储介质 | |
US20210208945A1 (en) | Information processing apparatus, information processing method, and computer readable medium | |
US5367674A (en) | Data stream optimizer utilizing difference coding between a current state buffer and a next state buffer | |
US10268543B2 (en) | Online volume repair | |
CN108959527B (zh) | 基于Windows文件映射技术读取显示联锁日志的方法 | |
US20150249708A1 (en) | System and method for asynchronous replication of a storage in a computing environment | |
CN109918231B (zh) | 数据重整的异常修复方法、装置、设备和存储介质 | |
CN115454958A (zh) | 基于人工智能的数据处理方法、装置、设备、系统及介质 | |
CN112860376B (zh) | 一种快照链的制作方法、装置、电子设备及存储介质 | |
CN111651188B (zh) | 差分包的数据结果确定方法、装置、设备及存储介质 | |
CN115840663A (zh) | 刷写元数据的方法、电子设备和计算机程序产品 | |
CN108710563B (zh) | 一种应用程序日志记录方法及装置 | |
CN111061734A (zh) | 一种数据存储方法、装置、设备及存储介质 | |
CN113162781B (zh) | 业务恢复方法、装置、系统及存储介质 | |
US20240211839A1 (en) | Business data processing system and method for automatically capturing data | |
CN117194343A (zh) | 一种Zip文件的修改方法、装置、设备及存储介质 | |
US10963186B2 (en) | Latent multiplicity detection | |
KR101221992B1 (ko) | 데이터 로깅 장치 |
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 |