CN111382849B - 数据压缩方法、处理器、数据压缩装置及存储介质 - Google Patents

数据压缩方法、处理器、数据压缩装置及存储介质 Download PDF

Info

Publication number
CN111382849B
CN111382849B CN201811620302.3A CN201811620302A CN111382849B CN 111382849 B CN111382849 B CN 111382849B CN 201811620302 A CN201811620302 A CN 201811620302A CN 111382849 B CN111382849 B CN 111382849B
Authority
CN
China
Prior art keywords
data
preset character
module
character
code stream
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
Application number
CN201811620302.3A
Other languages
English (en)
Other versions
CN111382849A (zh
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information Technology Co Ltd
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 Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to CN201811620302.3A priority Critical patent/CN111382849B/zh
Priority to PCT/CN2019/121056 priority patent/WO2020114283A1/zh
Publication of CN111382849A publication Critical patent/CN111382849A/zh
Application granted granted Critical
Publication of CN111382849B publication Critical patent/CN111382849B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本申请涉及一种数据压缩方法、处理器、数据压缩装置及存储介质。所述方法包括:在压缩速度较快的流水线插入空泡,从而缩小多条流水线之间的压缩速度差距。采用本方法能够避免发生死锁。

Description

数据压缩方法、处理器、数据压缩装置及存储介质
技术领域
本申请涉及数据处理技术领域,特别是涉及一种数据压缩方法、处理器、数据压缩装置及存储介质。
背景技术
随着信息技术的不断发展,配置有先入先出双口存储器(First Input FirstOutput,FIFO)的芯片以其灵活、方便、高效的特性,逐渐在高效数据采集、高效数据处理、高效数据传输以及多级并行处理系统中得到越来越广泛的应用。
神经网络处理器中,由于数据压缩过程中产生的定长输入,变长输出的情况,也就是说,同样长度的输入数据可能产生不同长度的输出数据,那么,由于FIFO输入输出端口的一致性,多条码流并行压缩过程中压缩速度的差异性,可能会导致死锁。
发明内容
基于此,有必要针对上述技术问题,提供一种能够在输出码长较短的流水线插入预设字符,从而缩小多条流水线之间的压缩速度差距,进而避免发生死锁的数据压缩方法、处理器、数据压缩装置及存储介质。
一种数据压缩方法,所述方法包括:
获取当前码流的流水线级数以及当前码流已经处理的字符数量;
获取多个码流中已经处理的最小字符数量;
若所述当前码流已经处理的字符数量与所述多个码流中已经处理的最小字符数量之间的差值大于或等于所述当前码流的流水线级数,判断流水线会发生死锁,则向所述当前码流中插入第一预设字符。
在其中一个实施例中,所述向所述当前码流中插入第一预设字符,包括:
在配置单元中对所述第一预设字符进行编码,得到第一预设字符编码;
当流水线发生死锁时,在所述当前码流的输出模块中插入所述第一预设字符编码。
在其中一个实施例中,所述方法还包括:
获取多个码流中输出模块的存储容量,其中,所述多个码流中每一码流的输出模块的存储容量一致;
当所述每一码流的输出模块中的输出数据均占满所述存储容量时,将多个所述输出模块中的数据统一进行输出。
在其中一个实施例中,所述方法还包括:
为与所述第一预设字符数值相同的真实数据设置附加字符位。
一种处理器,所述处理器包括运算单元、与所述运算单元邻近设置的存储单元以及控制器单元,所述控制器单元连接于所述运算单元与所述存储单元之间;
其中,所述运算单元包括数据压缩模块,所述数据压缩模块用于若当前码流已经处理的字符数量与多个码流中已经处理的最小字符数量之间的差值大于或等于当前码流的流水线级数时,判断流水线会发生死锁,则向所述当前码流中插入第一预设字符;
所述存储单元用于存储原始数据以及编码后的数据,并与所述控制器单元以及所述运算单元之间进行数据传输;
所述控制器单元用于获取输入数据以及计算指令,并将解析该计算指令得到的多个运算指令以及所述输入数据发送至所述运算单元。
在其中一个实施例中,所述数据压缩模块包括控制信号接口、缓存、多个寄存器、累加模块、配置模块以及输出模块;
其中,所述控制信号接口用于实现所述数据压缩模块与所述控制器单元之间的连接以及数据传输;
所述缓存分别与所述缓存邻近设置的寄存器、所述配置模块以及所述输出模块连接,用于存储输入数据、中间数据、所述第一预设字符、所述第二预设字符以及第一预设字符编码;
所述多个寄存器,用于存储多级流水线的执行结果;
所述累加模块与所述累加模块邻近设置的寄存器连接,用于存储所述当前码流已经处理的字符数量;
所述配置模块用于对所述第一预设字符进行编码,得到所述第一预设字符编码,并将所述第一预设字符编码存储至所述缓存中;
所述输出模块用于存储并输出所述当前码流的输出数据。
在其中一个实施例中,所述运算单元包括主处理电路和至少一个从处理电路,至少一个所述从处理电路均连接至所述主处理电路;
所述数据压缩模块设置于所述主处理电路以及每一所述从处理电路中。
一种数据压缩装置,所述装置包括:
第一获取模块,用于获取当前码流的流水线级数以及当前码流已经处理的字符数量;
第二获取模块,用于获取多个码流中已经处理的最小字符数量;
预设字符插入模块,用于若所述当前码流已经处理的字符数量与所述多个码流中已经处理的最小字符数量之间的差值大于或等于所述当前码流的流水线级数,判断流水线会发生死锁,则向所述当前码流中插入第一预设字符。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述数据压缩方法的步骤。
上述数据压缩方法、处理器、数据压缩装置及存储介质,根据当前码流的流水线级数、当前码流已经处理的字符数量以及多个码流中已经处理的最小字符数量,判断流水线是否会发生死锁,若流水线会发生死锁,则向当前码流的输出模块中插入第一预设字符,从而保证多个码流的输出数据码长相同,避免了多个码流压缩速度差异过大而导致的死锁现象。
附图说明
图1为一个实施例中处理器1000的结构示意图;
图2为一个实施例中处理器2000的结构示意图;
图3为一个实施例中数据压缩模块中缓存的结构示意图;
图4为一个实施例中处理器2000的工作流程示意图;
图5为一个实施例中处理器3000的结构示意图;
图6为另一个实施例中处理器的结构示意图;
图7为另一个实施例中处理器的结构示意图;
图8为另一个实施例中处理器的结构示意图;
图9为另一个实施例中主处理电路的结构示意图;
图10为一个实施例中数据压缩方法的流程示意图;
图11为一个实施例中数据压缩装置的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请提供的数据压缩方法,可以应用于如图1所示的处理器1000中。该处理器1000包括运算单元12、与运算单元12邻近设置的存储单元10以及控制器单元11,控制器单元11连接于运算单元12与存储单元10之间。其中,运算单元12包括数据压缩模块1001,该数据压缩模块1001用于根据当前码流的流水线级数、当前码流已经处理的字符数量以及多个码流中已经处理的最小字符数量,判断是否会发生死锁。
具体地,数据压缩模块1001先获取当前码流的流水线级数,当前码流可以为2级流水线,也可以为3级流水线或多级流水线,此处不做具体限定。数据压缩模块1001通过每完成一次字符处理后进行字符数量累加,从而获取当前码流已经处理的字符数量。在多个码流并行进行数据压缩的过程中,数据压缩模块1001获取每个码流已经处理的字符数量,并从中获取多个码流中已经处理的最小字符数量。
进一步,数据压缩模块1001通过公式(1)判断数据压缩进程是否会发生死锁:
Pcurrent-Pmin≥stage num (1)
其中,Pcurrent表示当前码流已经处理的字符数量;Pmin表示多个码流中已经处理的最小字符数量;stage num表示当前码流的流水线级数。
也就是说,若当前码流已经处理的字符数量与多个码流中已经处理的最小字符数量之间的差值大于或等于当前码流的流水线级数时,则判断数据压缩进程会发生死锁。
其中,该数据压缩模块1001用于当发生死锁时,向当前码流中插入第一预设字符。
具体地,选取出现频率较少的数据作为第一预设字符。当数据压缩模块1001判断数据压缩进程发生死锁时,则将选取的第一预设字符插入当前码流的输出模块中。由于第一预设字符的码长很大,插入第一预设字符的输出模块中的数据量肯定能占满该输出模块的存储容量。
作为一种可选的实施方式,数据压缩模块1001可以将选取的第一预设字符提前进行编码,得到第一预设字符编码,当数据压缩进程发生死锁时,直接将第一预设字符编码写入输出模块中。
具体地,可以选取出现频率较少的数据65作为第一预设字符(fake literal),数据压缩模块1001将第一预设字符65提前进行编码,得到第一预设字符编码(fake code)01000001,将第一预设字符编码01000001写入当前码流的输出模块中。
其中,存储单元10用于存储原始数据以及编码后的数据,并与控制器单元11以及运算单元12之间进行数据传输。
具体地,该存储单元10可以是设置在处理器1000内部的缓存器和/或寄存器。该存储单元10可以是非易失性存储器或易失性存储器,此处不做具体限定。存储单元10与控制器单元11以及运算单元12之间传输的数据形式可以为原始数据,也可以为编码后的数据。
其中,控制器单元11用于获取输入数据以及计算指令,并将解析该计算指令得到的多个运算指令以及输入数据发送至运算单元12。
具体的,获取输入数据以及计算指令方式可以通过数据输入输出单元得到,该数据输入输出单元具体可以为一个或多个数据I/O接口或I/O引脚。
上述计算指令包括但不限于:正向运算指令或反向训练指令,或其他神经网络运算指令等等,例如卷积运算指令,本申请具体实施方式并不限制上述计算指令的具体表现形式。
具体地,控制器单元11对获取到的计算指令进行解析,得到多个运算指令。进一步,控制器单元11将解析得到的多个运算指令以及获取到的输入数据发送至运算单元12。
上述处理器中,实现了多个码流并行进行数据压缩;通过数据压缩模块根据当前码流的流水线级数、当前码流已经处理的字符数量以及多个码流中已经处理的最小字符数量,判断数据压缩进程是否会发生死锁,当发生死锁时,向输出数据长度较短的码流插入第一预设字符,从而避免多个码流并行压缩过程中压缩速度差异过大,进而彻底解决了死锁现象;同时,通过将预设字符提前编码为预设字符编码,省去了重复编码的过程,从而减小了进程死锁造成的损失。
在其中一个实施例中,数据压缩模块1001还用于为与第一预设字符数值相同的真实数据设置附加字符位。
具体地,数据压缩模块1001可以为与该第一预设字符数值相同的真实数据增加一个附加字符位,也可以增加多个附加字符位,此处不做具体限定。基于节约带宽的考虑,优选为增加一个附加字符位,并将该附加字符位设置在字符串的最末位。例如:选取出现频率较少的数据65作为第一预设字符(fake literal),数据压缩模块1001将预设字符65提前进行编码,得到第一预设字符编码(fake code)01000001。若出现数值为65的真实数据,为了将该真实数据与第一预设字符进行区分,数据压缩模块1001为与该真实数据01000001增加一个附加字符位,即增加1bit,并将增加的附加字符位设置为0,则输出的数据为010000010,输出的数据长度为9bit。
上述处理器中,通过为与第一预设字符数值相同的真实数据设置附加字符位,能够将第一预设字符和与第一预设字符数值相同的真实数据进行区分,从而解决了第一预设字符的定义冲突问题。
在其中一个实施例中,数据压缩模块1001还用于用第二预设字符对第一预设字符进行替换,并为与第二预设字符数值相同的真实数据设置附加字符位。
具体地,选取出现频率更少的数据作为第二预设字符,数据压缩模块1001用该第二预设字符对第一预设字符进行替换。可以为与该第二预设字符数值相同的真实数据增加一个附加字符位,也可以增加多个附加字符位,此处不做具体限定。基于节约带宽的考虑,优选为增加一个附加字符位,并将该附加字符位设置在字符串的最末位。例如:若出现数值为65的真实数据,为了将该真实数据与第一预设字符进行区分,选取出现频率更少的数据129作为第二预设字符(fake extra),数据压缩模块1001用第二预设字符129将数值为65的真实数据进行替换。进一步,若出现数值为129的真实数据,为了将该真实数据与第二预设字符进行区分,数据压缩模块1001为数值为129的真实数据10000001增加一个附加字符位,即增加1bit,并将增加的附加字符位设置为1,则输出的数据为10000001 1,输出的数据长度为9bit。
上述处理器中,通过第二预设字符对第一预设字符进行替换,并为与第二预设字符数值相同的真实数据设置附加字符位,能够将第二预设字符和与第二预设字符数值相同的真实数据进行区分,从而解决了第二预设字符的定义冲突问题;同时,通过选取出现频率更少的第二预设字符进行区分,能够进一步减少处理器的额外负担。
在其中一个实施例中,如图2所示,提供了一种处理器2000,该处理器2000包括运算单元12、与运算单元12邻近设置的存储单元10以及控制器单元11,控制器单元11连接于运算单元12与存储单元10之间。其中,运算单元12包括数据压缩模块2001,该数据压缩模块2001包括控制信号接口2002、缓存2003、多个寄存器2004、累加模块2005、配置模块2006以及输出模块2007。
其中,控制信号接口2002作为外部输入的硬件接口,用于实现数据压缩模块2001与控制器单元11之间的连接以及数据传输。
其中,缓存2003分别与缓存2003邻近设置的寄存器2004、配置模块2006以及输出模块2007连接,用于存储输入数据、中间数据、第一预设字符、第二预设字符以及第一预设字符编码。
作为一种可选的实施方式,如图3所示,缓存2003包括输入数据缓存20031、中间数据缓存20032以及预设字符缓存20033,预设字符缓存20033包括第一预设字符缓存20034、第二预设字符缓存20035以及第一预设字符编码缓存20036;
其中,输入数据缓存20031用于存储输入该数据压缩模块2001中的待编码数据;中间数据缓存20032用于存储各级流水线执行编码过程中得到的中间结果;第一预设字符缓存20034用于存储第一预设字符;第二预设字符缓存20035用于存储第二预设字符;第一预设字符编码缓存20036用于存储将第一预设字符进行编码得到的第一预设字符编码。
其中,多个寄存器2004,用于存储多级流水线的执行结果。
具体地,每一级流水线对应一个寄存器2004,寄存器2004用于存储与其对应的那一级流水线执行数据编码后得到的中间编码结果。当前码流对输入数据完成数据编码后,在累加模块2005中进行一次数量累加,即将累加模块2005中的计数器加1,代表当前码流已经完成了一个数据的编码过程。
其中,累加模块2005与其邻近设置的寄存器2004连接,用于存储当前码流已经处理的字符数量。
具体地,获取累加模块2005中计数器的数目,可以得到当前码流已经完成编码的数据数目。进一步,多个码流并行进行数据压缩的过程中,通过获取每一码流的累加模块2005中的计数器数目,可以得到每一码流已经完成编码的数据数目,通过将多个码流已经完成编码的数据数目进行比较,得到多个码流中已经完成编码的最小数据数目。
其中,配置模块2006用于对第一预设字符进行编码,得到第一预设字符编码,并将第一预设字符编码存储至缓存2003中。
具体地,可以选取出现频率较少的数据65作为第一预设字符(fake literal),,配置模块2006将第一预设字符65提前进行编码,得到第一预设字符编码(fake code)01000001,将第一预设字符编码01000001存储至缓存2003中。
其中,输出模块2007用于存储并输出当前码流的输出数据。
具体地,输出模块2007可以存储当前码流已经编码完成的数据。当输出模块2007中存储的输出数据未占满输出模块2007的存储容量时,输出模块2007也可以存储第一预设字符或第一预设字符编码。
作为一种可选的实施方式,当多个码流中每一码流的输出模块2007中的输出数据均占满输出模块2007的存储容量时,将多个输出模块2007中的数据统一进行输出。
上述处理器中,通过对数据压缩模块进行改进,通过为每一级流水线设置段间寄存器,能够存储各级流水线执行过程中的中间编码结果;通过设置累加模块对多个码流已经完成编码的字符数量进行记录,从而判断压缩进程是否会产生死锁,是否需要向输出模块中插入第一预设字符;通过在配置模块中对第一预设字符提前进行编码并存储在缓存中,当发生死锁时,直接将缓存中存储的第一预设字符编码写入输出模块中,从而省去了重复编码的过程,实现了减少进程死锁造成的损失的效果。
在其中一个实施例中,请参阅图4,将本申请提供的数据压缩方法应用于如图2所示的处理器2000中。多个码流(stream 1至stream n)并行进行数据压缩,输出模块2007的存储容量为8bit,其中,每一个stream均为三级流水线。
需要说明的是,多个码流(stream)并行进行数据压缩时,为了保证数据存储格式的一致性,所有stream的输入和输出都是同步进行的,也就是说,同时向多个stream输入数据,通过各级流水线进行数据编码,将编码后的输出数据存储在输出模块中,所有stream的输出模块统一进行数据输出。
其中,输出模块2007优选为先入先出双口存储器(First Input First Output,FIFO)。FIFO的规则是检测到第一级流水线全空才进行输入,检测到最后一级流水线全非空才进行输出,也就是说,当每个stream的输出模块中的输出数据均占满该输出模块的存储容量时,将多个输出模块中的数据统一进行输出。中间各级流水线可以独立进行,只有在前一级空或后一级满的情况下,进程会产生死锁,从而导致阻塞等待。
向当前码流stream 1中输入8bit的数据,该输入数据通过stream 1的第一级流水线stage1、第二级流水线stage2以及第三级流水线stage3逐级进行编码。需要说明的是,在数据压缩进程无堵塞的情况下,每个时钟周期(即每拍)数据向下一级流水线前进一步。最终通过编码得到1bit输出数据,并在第四拍将该1bit输出数据存储在stream 1的输出模块FIFO中。同时,另一码流stream n与stream 1并行执行数据压缩,stream n中也输入8bit的数据,该输入数据通过stream n的第一级流水线stage1、第二级流水线stage2以及第三级流水线stage3逐级进行编码,最终通过编码得到16bit输出数据,并在第四拍将该16bit输出数据存储在stream n的输出模块FIFO中。此时,第五拍之后stream n的输出模块FIFO已经被占满,stream n完成了两个数据的压缩。但是,第五拍之后stream 1只完成了两个数据的压缩,因此,stream1的输出模块FIFO中只有2bit的数据存储,并未占满stream 1的输出模块,并不足以输出8bit的数据。因此,stream n开始阻塞,需等待其他stream的输出模块FIFO中均占满8bit的输出数据时才能进行数据输出,此时,所有stream都无法进行数据输入,也无法进行数据输出。由于输入数据填满stream 1的所有流水级共用了三拍,在第三拍之后的五拍,每拍输出一个编码得到的1bit数据至输出模块FIFO中,因此,在第八拍之后,stream 1中输入的所有数据都处理完毕,但输出模块FIFO中只存储有5bit的输出数据,仍未占满8bit的输出模块FIFO,而由于stream n处于阻塞等待,无法获取输入数据,因此,整个数据压缩进程进入死锁状态。
用上述公式对该实施例中的死锁状态进行判定,若当前码流为stream 1,当前码流已经处理的字符数量Pcurrent为5,所有stream中stream n只完成了两个数据的数据编码,故多个码流中已经处理的最小字符数量Pmin为2,当前码流的流水线级数stage num为3,根据上述公式进行判断,得到当前码流stream 1已经处理的字符数量与多个码流中已经处理的最小字符数量之间的差值大于或等于当前码流stream 1的流水线级数,则判断数据压缩进程会发生死锁。
进一步,由于所有stream的输出模块需要统一进行数据输出,而stream 1的输出模块FIFO中的数据长度并未占满该输出模块FIFO的存储容量,因此,向stream 1的输出模块FIFO中插入第一预设字符。
选取出现频率较少的数据65作为第一预设字符(fake literal),将第一预设字符65提前进行编码,得到第一预设字符编码(fake code)01000001,将第一预设字符编码01000001写入stream 1的输出模块FIFO中。此时,stream 1的输出模块FIFO中的数据长度为13bit,已经占满该输出模块FIFO的存储容量8bit。同理,若stream 2的输出模块FIFO中的数据长度也未占满8bit,则继续将第一预设字符编码01000001写入stream 2的输出模块FIFO中。以此类推,直到所有stream的输出模块FIFO中的输出数据均占满8bit时,将多个输出模块FIFO中的数据统一进行输出。
在其中一个实施例中,如图5所示,提供了一种处理器3000,该处理器3000包括运算单元12、与运算单元12邻近设置的存储单元10以及控制器单元11,控制器单元11连接于运算单元12与存储单元10之间。其中,运算单元12包括数据压缩模块1001以及数据解压模块1002,其中,数据压缩模块1001的具体功能与处理器1000中数据压缩模块1001的功能一致,此处不再赘述;数据解压模块1002用于对编码数据进行解码,若解码后的数据中包括第一预设字符或第一预设字符编码,则将第一预设字符或第一预设字符编码删除。
具体地,数据解压模块1002进行数据解压的过程中,若得到出现频率较少的第一预设字符或第一预设字符编码,则将解压出来的第一预设字符或第一预设字符编码直接删除,不作为有效数据使用。
上述处理器中,数据解压模块将解压出来的第一预设字符或第一预设字符编码直接删除,不作为有效数据使用,从而在数据压缩的前提下保证运算的正确性。
在其中一个实施例中,请参阅图6至图9,运算单元12包括主处理电路101和至少一个从处理电路102,至少一个从处理电路102均连接至主处理电路101,主处理电路101与分支处理电路103(一个或多个)连接,分支处理电路103与一个或多个从处理电路102连接。
其中,分支处理电路103用于执行转发主处理电路101与从处理电路102之间的数据或指令。主处理电路101用于与存储单元10之间进行原始数据及编码数据的数据传输。主处理电路101包括数据压缩模块1001,该数据压缩模块1001用于实现多个码流的并行数据压缩,并将压缩后的数据通过数据I/O单元203广播发送至从一个或多个从处理电路102进行矩阵乘法运算。从处理电路1002包括数据压缩模块1001,该编码装置1001用于对乘法运算的运算结果进行多个码流的并行数据压缩,并将压缩后的数据发送至主处理电路101进行累加和激活运算。
在其中一个实施例中,请继续参阅图6至图9,从处理电路1002还包括数据解压模块1002,该数据解压模块1002用于实现多个码流的并行数据解压,并将解压后的数据发送至从处理电路102中参与矩阵乘法运算。主处理电路101还包括数据解压模块1002,该数据解压模块1002用于利用多级流水线,对主处理电路101接收到的压缩后的运算结果进行并行数据解压,并将解压后的数据发送至主处理电路101中参与累加和激活运算。
在其中一个实施例中,处理器还可以包括控制器电路11,该控制器电路11包括:指令存储单元110、指令处理单元111和存储队列单元113。
其中,指令存储单元110,用于存储人工神经网络运算关联的计算指令。
指令处理单元111,用于对计算指令解析得到多个运算指令。
存储队列单元113,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令和/或计算指令。
作为一种可选的实施方式,主处理电路101还可以包括:转换处理电路1110、激活处理电路1111、加法处理电路1112中的一种或任意组合;
转换处理电路1110,用于将主处理电路接收的数据块或中间结果执行第一数据结构与第二数据结构之间的互换(例如连续数据与离散数据的转换);或将主处理电路接收的数据块或中间结果执行第一数据类型与第二数据类型之间的互换(例如定点类型与浮点类型的转换);
激活处理电路1111,用于执行主处理电路内数据的激活运算;
加法处理电路1112,用于执行加法运算或累加运算。
所述主处理电路,用于确定所述输入神经元为广播数据,权值为分发数据,将分发数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述从处理电路;
所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述主处理电路;
所述主处理电路,用于将多个从处理电路发送的中间结果进行处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
所述从处理电路包括:乘法处理电路;
所述乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果;
转发处理电路(可选的),用于将接收到的数据块或乘积结果转发。
累加处理电路,所述累加处理电路,用于对该乘积结果执行累加运算得到该中间结果。
另一个实施例里,该运算指令为矩阵乘以矩阵的指令、累加指令、激活指令等等计算指令。
在一个实施例中,当接收到数据压缩指令后,处理器1000、处理器2000或处理器3000可执行如图10所示的编码方法,包括以下步骤:
步骤202,获取当前码流的流水线级数以及当前码流已经处理的字符数量。
其中,当前码流的流水线级数用于表示当前码流经过多级流水线执行数据压缩。当前码流已经处理的字符数量指的是当前码流已经完成数据压缩的字符数量。具体地,处理器中的数据压缩模块可以获取当前码流的流水线级数以及当前码流已经处理的字符数量。
步骤204,获取多个码流中已经处理的最小字符数量。
其中,多个码流中已经处理的最小字符数量指的是多个码流已经完成数据压缩的字符数量中的最小字符数量。具体地,处理器中的数据压缩模块可以获取每个码流已经处理的字符数量,并从中获取多个码流中已经处理的最小字符数量。
步骤206,若所述当前码流已经处理的字符数量与所述多个码流中已经处理的最小字符数量之间的差值大于或等于所述当前码流的流水线级数,判断流水线会发生死锁,则向所述当前码流中插入第一预设字符。
其中,多个码流并行执行数据压缩的过程中,所有码流的输入和输出都是同步进行的,但压缩进程中无法输出且无法输入时,多个码流的压缩进程会发生死锁。第一预设字符指的是出现频率较少的数据,例如:可以选取出现频率较少的数据65作为第一预设字符。
具体地,数据压缩模块通过公式(1)判断数据压缩进程是否会发生死锁:
Pcurrent-Pmin≥stage num (1)
其中,Pcurrent表示当前码流已经处理的字符数量;Pmin表示多个码流中已经处理的最小字符数量;stage num表示当前码流的流水线级数。
进一步,若流水线会发生死锁,意味着当前码流的输出码长不够,不足以进行输出,则数据压缩模块将第一预设字符插入当前码流的输出模块中,从而保证当前码流的输出码长能够满足输出要求。
上述数据压缩方法中,根据当前码流的流水线级数、当前码流已经处理的字符数量以及多个码流中已经处理的最小字符数量,判断流水线是否会发生死锁,若流水线会发生死锁,则向当前码流的输出模块中插入第一预设字符,从而保证多个码流的输出数据码长相同,避免了多个码流压缩速度差异过大而导致的死锁现象。
在其中一个实施例中,该数据压缩方法还包括:所述当前码流每完成一次字符处理后,在累加模块中进行字符数量累加。
作为一种可选的实施方式,具体包括以下步骤:
步骤302,对输入数据进行编码,得到第一中间编码结果。
其中,编码包括哈夫曼编码以及游程编码中的至少一种。具体地,请参阅图4,以stream1为例,将缓存中的输入数据输入至第一级流水线stage1,在stage1中对该输入数据进行编码,得到第一中间编码结果。
步骤304,将所述第一中间编码结果输入下一级流水线,对所述第一中间编码结果进行再次编码,得到第二中间编码结果。
具体地,将步骤302中得到的第一中间编码结果输入至第二级流水线stage2,在stage2中对该第一中间编码结果进行再次编码,得到第二中间编码结果。
步骤306,在最后一级流水线完成所述输入数据在所述当前码流中的数据编码,并在所述累加模块中进行一次字符数量累加。
其中,累加模块用于存储当前码流已经处理的字符数量。具体地,将步骤304中得到的第二中间编码结果输入至第三级流水线stage3,由于stream 1为三级流水线的码流,stage3为stream 1的最后一级流水线,因此,在stage3中对该第二中间编码结果进行再次编码,即在stage3完成了该输入数据在当前码流stream 1中的数据编码。进一步,当前码流完成输入数据的数据编码后,即完成了一次字符处理,在累加模块的计数器中进行一次字符数量累加,通过获取累加模块中的字符数量,得到当前码流已经处理的字符数量。
在其中一个实施例中,步骤204具体包括以下步骤:
步骤2042,所述多个码流中的每一码流每完成一次字符处理后,在所述每一码流对应的累加模块中进行字符数量累加。
请参阅步骤302至步骤306实现每一码流的字符数据累加。
步骤2044,获取多个所述每一码流对应的累加模块中的字符数量。
具体地,请继续参阅图4,获取stream 1至stream n中的N个累加模块的计数器值,得到N个字符数量。
步骤2046,对多个所述每一码流对应的累加模块中的字符数量进行对比,得到所述多个码流中已经处理的最小字符数量。
具体地,将步骤2044中获取到的N个字符数量进行对比,得到最小值,即得到多个码流中已经处理的最小字符数量。
上述数据压缩方法中,通过在累加模块中对多个码流已经完成编码的字符数量进行记录,从而得到当前码流已经处理的字符数量以及多个码流中已经处理的最小字符数量,进而能够判断压缩进程是否会产生死锁,是否需要向输出模块中插入第一预设字符。
在其中一个实施例中,步骤206具体包括以下步骤:
步骤2062,在配置模块中对所述第一预设字符进行编码,得到第一预设字符编码。
具体地,在配置模块中对第一预设字符进行编码,得到第一预设字符编码,并将该第一预设字符编码存储至缓存中。
步骤2064,当流水线发生死锁时,在所述当前码流的输出模块中插入所述第一预设字符编码。
具体地,当流水线发生死锁时,数据压缩模块将缓存中的第一预设字符编码直接插入当前码流的输出模块中,从而省去了重复编码的过程,实现了减少进程死锁造成的损失的效果。
在其中一个实施例中,该数据压缩方法还包括:
步骤402,获取多个码流中输出模块的存储容量,其中,所述多个码流中每一码流的输出模块的存储容量一致。
其中,输出模块优选为先入先出双口存储器(First Input First Output,FIFO)。
步骤404,当所述每一码流的输出模块中的输出数据均占满所述存储容量时,将多个所述输出模块中的数据统一进行输出。
具体地,当每个码流的输出模块中的输出数据均占满该输出模块的存储容量时,将多个输出模块中的数据统一进行输出。中间各级流水线可以独立进行,只有在前一级空或后一级满的情况下,进程会产生死锁,从而导致阻塞等待。
在其中一个实施例中,该数据压缩方法还包括:为与所述第一预设字符数值相同的真实数据设置附加字符位。
具体地,数据压缩模块可以为与该第一预设字符数值相同的真实数据增加一个附加字符位,也可以增加多个附加字符位,此处不做具体限定。基于节约带宽的考虑,优选为增加一个附加字符位,并将该附加字符位设置在字符串的最末位,从而将第一预设字符和与第一预设字符数值相同的真实数据进行区分,能够解决第一预设字符的定义冲突问题。
在其中一个实施例中,该数据压缩方法还包括:
步骤502,用第二预设字符对所述第一预设字符进行替换。
具体地,数据压缩模块可以选取出现频率更少的数据作为第二预设字符,并用该第二预设字符对第一预设字符进行替换。
步骤504,为与所述第二预设字符数值相同的真实数据设置附加字符位。
具体地,数据压缩模块可以为与该第二预设字符数值相同的真实数据增加一个附加字符位,也可以增加多个附加字符位,此处不做具体限定。基于节约带宽的考虑,优选为增加一个附加字符位,并将该附加字符位设置在字符串的最末位,从而解决了第二预设字符的定义冲突问题,能够进一步减少处理器的额外负担。
在其中一个实施例中,该数据压缩方法还包括:
步骤602,获取编码数据,并对所述编码数据进行解码,得到第一输出数据。
具体地,将缓存中的编码数据发送至数据解压模块进行解压,得到解压后的数据,即第一输出数据。
步骤604,若所述第一输出数据中包括所述第一预设字符或所述第一预设字符编码,则将所述第一预设字符或所述第一预设字符编码删除,得到第二输出数据。
具体地,数据解压模块进行数据解压的过程中,若得到出现频率较少的第一预设字符或第一预设字符编码,则将解压出来的第一预设字符或第一预设字符编码直接删除,不作为有效数据使用,从而在数据压缩的前提下保证运算的正确性。
应该理解的是,虽然图10的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且图10中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图11所示,提供了一种数据压缩装置,包括:第一获取模块701、第二获取模块702以及预设字符插入模块703,其中:
第一获取模块701,用于获取当前码流的流水线级数以及当前码流已经处理的字符数量;
第二获取模块702,用于获取多个码流中已经处理的最小字符数量;
预设字符插入模块703,用于若所述当前码流已经处理的字符数量与所述多个码流中已经处理的最小字符数量之间的差值大于或等于所述当前码流的流水线级数,判断流水线会发生死锁,则向所述当前码流中插入第一预设字符。
关于运算装置的具体限定可以参见上文中对于运算方法的限定,在此不再赘述。上述运算装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取当前码流的流水线级数以及当前码流已经处理的字符数量;
获取多个码流中已经处理的最小字符数量;
若所述当前码流已经处理的字符数量与所述多个码流中已经处理的最小字符数量之间的差值大于或等于所述当前码流的流水线级数,判断流水线会发生死锁,则向所述当前码流中插入第一预设字符。
应当清楚的是,本申请实施例中的计算机程序被处理器执行时实现的步骤,与上述实施例中的方法的各个步骤的执行过程一致,具体可参见上文的描述,此处不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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 (19)

1.一种数据压缩方法,其特征在于,所述方法包括:
多个码流并行进行数据压缩时,获取当前码流的流水线级数以及当前码流已经处理的字符数量;
获取所述多个码流中已经处理的最小字符数量;
若所述当前码流已经处理的字符数量与所述多个码流中已经处理的最小字符数量之间的差值大于或等于所述当前码流的流水线级数,判断流水线会发生死锁,则向所述当前码流中插入第一预设字符,以保证所述当前码流的输出码长能够满足输出要求。
2.根据权利要求1所述的方法,其特征在于,所述当前码流每完成一次字符处理后,在累加模块中进行字符数量累加,包括:
获取所述累加模块中的字符数量,得到所述当前码流已经处理的字符数量。
3.根据权利要求2所述的方法,其特征在于,所述当前码流每完成一次字符处理后,在累加模块中进行字符数量累加,包括:
对输入数据进行编码,得到第一中间编码结果;
将所述第一中间编码结果输入下一级流水线,对所述第一中间编码结果进行再次编码,得到第二中间编码结果;
在最后一级流水线完成所述输入数据在所述当前码流中的数据编码,并在所述累加模块中进行一次字符数量累加;
其中,所述编码包括哈夫曼编码以及游程编码中的至少一种。
4.根据权利要求1所述的方法,其特征在于,所述获取多个码流中已经处理的最小字符数量,包括:
所述多个码流中的每一码流每完成一次字符处理后,在所述每一码流对应的累加模块中进行字符数量累加;
获取多个所述每一码流对应的累加模块中的字符数量;
对多个所述每一码流对应的累加模块中的字符数量进行对比,得到所述多个码流中已经处理的最小字符数量。
5.根据权利要求1所述的方法,其特征在于,所述向所述当前码流中插入第一预设字符,包括:
在配置模块中对所述第一预设字符进行编码,得到第一预设字符编码;
当流水线发生死锁时,在所述当前码流的输出模块中插入所述第一预设字符编码。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取多个码流中输出模块的存储容量,其中,所述多个码流中每一码流的输出模块的存储容量一致;
当所述每一码流的输出模块中的输出数据均占满所述存储容量时,将多个所述输出模块中的数据统一进行输出。
7.根据权利要求1-6中任一项所述的方法,其特征在于,所述方法还包括:
为与所述第一预设字符数值相同的真实数据设置附加字符位。
8.根据权利要求1-6中任一项所述的方法,其特征在于,所述方法还包括:
用第二预设字符对所述第一预设字符进行替换;
为与所述第二预设字符数值相同的真实数据设置附加字符位。
9.根据权利要求1-6中任一项所述的方法,其特征在于,所述方法还包括:
获取编码数据,并对所述编码数据进行解码,得到第一输出数据;
若所述第一输出数据中包括所述第一预设字符或所述第一预设字符编码,则将所述第一预设字符或所述第一预设字符编码删除,得到第二输出数据。
10.一种处理器,其特征在于,所述处理器包括运算单元、与所述运算单元邻近设置的存储单元以及控制器单元,所述控制器单元连接于所述运算单元与所述存储单元之间;
其中,所述运算单元包括数据压缩模块,多个码流并行进行数据压缩时,所述数据压缩模块用于若当前码流已经处理的字符数量与所述多个码流中已经处理的最小字符数量之间的差值大于或等于当前码流的流水线级数时,判断流水线会发生死锁,则向所述当前码流中插入第一预设字符,以保证所述当前码流的输出码长能够满足输出要求;
所述存储单元用于存储原始数据以及编码后的数据,并与所述控制器单元以及所述运算单元之间进行数据传输;
所述控制器单元用于获取输入数据以及计算指令,并将解析该计算指令得到的多个运算指令以及所述输入数据发送至所述运算单元。
11.根据权利要求10所述的处理器,其特征在于,
所述数据压缩模块还用于为与所述第一预设字符数值相同的真实数据设置附加字符位。
12.根据权利要求10所述的处理器,其特征在于,
所述数据压缩模块还用于用第二预设字符对所述第一预设字符进行替换,并为与所述第二预设字符数值相同的真实数据设置附加字符位。
13.根据权利要求12所述的处理器,其特征在于,所述数据压缩模块包括控制信号接口、缓存、多个寄存器、累加模块、配置模块以及输出模块;
其中,所述控制信号接口用于实现所述数据压缩模块与所述控制器单元之间的连接以及数据传输;
所述缓存分别与所述缓存邻近设置的寄存器、所述配置模块以及所述输出模块连接,用于存储输入数据、中间数据、所述第一预设字符、所述第二预设字符以及第一预设字符编码;
所述多个寄存器,用于存储多级流水线的执行结果;
所述累加模块与所述累加模块邻近设置的寄存器连接,用于存储所述当前码流已经处理的字符数量;
所述配置模块用于对所述第一预设字符进行编码,得到所述第一预设字符编码,并将所述第一预设字符编码存储至所述缓存中;
所述输出模块用于存储并输出所述当前码流的输出数据。
14.根据权利要求13所述的处理器,其特征在于,所述缓存包括输入数据缓存、中间数据缓存以及预设字符缓存,所述预设字符缓存包括所述第一预设字符缓存、所述第二预设字符缓存以及所述第一预设字符编码缓存;
其中,所述输入数据缓存用于存储所述数据压缩模块中的待编码数据;
所述中间数据缓存用于存储各级流水线执行编码过程中得到的中间结果;
所述第一预设字符缓存用于存储所述第一预设字符;
所述第二预设字符缓存用于存储所述第二预设字符;
所述第一预设字符编码缓存用于存储将所述第一预设字符进行编码得到的所述第一预设字符编码。
15.根据权利要求13所述的处理器,其特征在于,
所述输出模块还用于当多个码流中每一码流的输出数据均占满所述输出模块的存储容量时,将所述输出模块中的数据进行输出。
16.根据权利要求13所述的处理器,其特征在于,所述运算单元还包括数据解压模块;
其中,所述数据解压模块用于对编码数据进行解码,若解码后的数据中包括所述第一预设字符或所述第一预设字符编码,则将所述第一预设字符或所述第一预设字符编码删除。
17.根据权利要求10-16中任一项所述的处理器,其特征在于,所述运算单元包括主处理电路和至少一个从处理电路,至少一个所述从处理电路均连接至所述主处理电路;
所述数据压缩模块设置于所述主处理电路以及每一所述从处理电路中。
18.一种数据压缩装置,其特征在于,所述装置包括:
第一获取模块,用于获取当前码流的流水线级数以及当前码流已经处理的字符数量;
第二获取模块,用于获取多个码流中已经处理的最小字符数量;
预设字符插入模块,用于若所述当前码流已经处理的字符数量与所述多个码流中已经处理的最小字符数量之间的差值大于或等于所述当前码流的流水线级数,判断流水线会发生死锁,则向所述当前码流中插入第一预设字符。
19.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至9中任一项所述的方法的步骤。
CN201811620302.3A 2018-12-07 2018-12-28 数据压缩方法、处理器、数据压缩装置及存储介质 Active CN111382849B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201811620302.3A CN111382849B (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
CN201811620302.3A CN111382849B (zh) 2018-12-28 2018-12-28 数据压缩方法、处理器、数据压缩装置及存储介质

Publications (2)

Publication Number Publication Date
CN111382849A CN111382849A (zh) 2020-07-07
CN111382849B true CN111382849B (zh) 2022-11-22

Family

ID=71214625

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811620302.3A Active CN111382849B (zh) 2018-12-07 2018-12-28 数据压缩方法、处理器、数据压缩装置及存储介质

Country Status (1)

Country Link
CN (1) CN111382849B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114697673B (zh) * 2020-12-30 2023-06-27 中国科学院计算技术研究所 基于流间数据混洗的神经网络量化压缩方法及系统
CN114442954B (zh) * 2022-01-26 2024-05-03 山东云海国创云计算装备产业创新中心有限公司 一种lz4编码压缩装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8106799B1 (en) * 2009-03-23 2012-01-31 Marvell International Ltd. Data compression and decompression using parallel processing
CN103326730A (zh) * 2013-06-06 2013-09-25 清华大学 数据并行压缩方法
CN105302524A (zh) * 2008-12-12 2016-02-03 辉达公司 通过标记cpu流量为特殊来避免死锁

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105302524A (zh) * 2008-12-12 2016-02-03 辉达公司 通过标记cpu流量为特殊来避免死锁
US8106799B1 (en) * 2009-03-23 2012-01-31 Marvell International Ltd. Data compression and decompression using parallel processing
CN103326730A (zh) * 2013-06-06 2013-09-25 清华大学 数据并行压缩方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
面向实时视频编码应用的控制系统;张晓波等;《计算机工程》;20081005;第34卷(第19期);第225-227页 *

Also Published As

Publication number Publication date
CN111382849A (zh) 2020-07-07

Similar Documents

Publication Publication Date Title
US6903668B1 (en) Decompression accelerator for flash memory
CN111382849B (zh) 数据压缩方法、处理器、数据压缩装置及存储介质
US6348881B1 (en) Efficient hardware implementation of a compression algorithm
US5818368A (en) Method and apparatus for lossless digital data compression
CN100414840C (zh) 逻辑电路装置以及可编程逻辑电路的工作方法
CN108886367B (zh) 用于压缩和解压缩数据的方法、设备和系统
CN110784225A (zh) 数据压缩、解压方法及相关装置、电子设备、系统
CN109889205B (zh) 编码方法及系统、解码方法及系统、编解码方法及系统
CN112968706B (zh) 数据压缩方法、fpga芯片及fpga在线升级方法
CN103546161A (zh) 基于二进制位处理的无损压缩方法
WO2001063772A1 (en) Method and apparatus for optimized lossless compression using a plurality of coders
CN111384969B (zh) 编码方法、处理器、编码装置及存储介质
CN112290953B (zh) 多道数据流的阵列编码装置和方法、阵列解码装置和方法
US20200266829A1 (en) Compression and decompression of fixed length data structures
US6349150B1 (en) Predictive data compression system and methods
CN116527775B (zh) 使用分区和无关位消除的数据压缩技术
WO2020258942A1 (zh) 一种数据压缩方法及装置
WO2020114283A1 (zh) 数据处理方法及装置
CN111628779A (zh) 一种fastq文件的并行压缩和解压方法及系统
CN115765756A (zh) 一种高速透明传输的无损数据压缩方法、系统及装置
JP2006259937A (ja) データ収集装置およびデータ復元装置
US10931303B1 (en) Data processing system
CN102547276B (zh) 多功能编码器和解码器设备及其方法
CN108829930A (zh) 三维数字化工艺设计mbd模型的轻量化方法
CN114337682A (zh) 一种Huffman编码压缩装置

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