CN103916131A - 压缩数据的方法和用于执行该方法的设备 - Google Patents
压缩数据的方法和用于执行该方法的设备 Download PDFInfo
- Publication number
- CN103916131A CN103916131A CN201410001223.XA CN201410001223A CN103916131A CN 103916131 A CN103916131 A CN 103916131A CN 201410001223 A CN201410001223 A CN 201410001223A CN 103916131 A CN103916131 A CN 103916131A
- Authority
- CN
- China
- Prior art keywords
- data
- data block
- current
- piece
- previous
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- 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
- G06F3/0641—De-duplication techniques
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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/6064—Selection of Compressor
- H03M7/6082—Selection strategies
Abstract
一种数据压缩方法,包括:接收包括先前数据块和当前数据块的输入数据流;执行先前数据块的一部分与先前参考数据块的一部分的第一比较,以及当前数据块与当前参考数据块的第二比较,其中,第一比较和第二比较被并行执行。所述方法还包括基于第一比较和第二比较的结果,选择性地输出当前数据块或者压缩扩展数据块,其中,扩展数据块包括先前数据块的所述部分和当前数据块。
Description
技术领域
本发明构思的实施例涉及数据压缩技术,更具体地,涉及用于数据压缩加速和用于补偿数据压缩加速期间损失的数据压缩率的数据压缩方法以及设备。
背景技术
一般采用数据压缩技术来提高通信设备和/或数据存储设备中的有效的数据传输速率和/或有效的数据存储容量。此外,由于数据压缩减小了要被存储在数据存储设备(例如,快闪存储设备)中的数据量,所以在存储设备中写的数量和/或读的数量被降低,藉此提高存储设备的预期寿命。
一般地,数据压缩可以被分类为无损压缩或者有损压缩。无损数据压缩特征在于原始数据的精确再生,而有损数据压缩允许原始数据的近似。
无损数据压缩算法的例子包括被称为“LZ77”和“LZ78”的技术,它们被公开于Abraham Lempel和Jacob Ziv于1977和1978年所写的论文中。无损数据压缩算法的另一例子被称为“LZW”或者mpel-Ziv Ross Williams(“LZRW”),其被公开于Abraham Lempel、Jacob Ziv和Terry Welch写于1984年的论文中。
发明内容
根据本发明构思的某些实施例,提供了一种数据压缩方法,其包括:接收包括先前数据块和当前数据块的输入数据流;执行先前数据块的一部分与先前参考数据块的一部分的第一比较,以及当前数据块与当前参考数据块的第二比较,其中,第一比较和第二比较被并行执行。所述方法还包括:基于第一比较和第二比较的结果,选择性地输出当前数据块或者压缩扩展数据块,其中,扩展数据块包括先前数据块的所述部分和当前数据块。
根据本发明构思的其他实施例,提供了一种数据压缩方法,其包括:接收包括先前数据块和当前数据块的输入数据流。所述方法还包括:从存储器读取先前参考数据块的一部分,并且从所述存储器并行地读取当前参考数据块。所述方法还包括:比较先前数据块的一部分与先前参考数据块的所述部分,并且并行地比较当前数据块和当前参考数据块。所述方法还包括:当先前数据块的所述部分和先前参考数据块的所述部分匹配,并且当前数据块匹配当前参考数据块时,压缩扩展数据块,其中,扩展数据块包括先前数据块的所述部分和当前数据块。
根据本发明构思的其他实施例,提供了一种数据压缩电路,其包括:缓冲存储器,包括第一存储器区域、第二存储器区域和第三存储器区域;和,缓冲存储器控制器,被配置成响应于地址,输出存储在第一存储器区域中的先前参考数据块的一部分和存储在第二存储器区域中的当前参考数据块。数据压缩电路还包括:比较电路,被配置成确定先前数据块的一部分是否和先前参考数据块的所述部分匹配,以及当前数据块是否和当前参考数据块匹配,并根据确定结果,产生控制信息。数据压缩电路还包括:压缩数据产生电路,被配置成基于控制信息,选择性地输出当前数据块或者压缩数据,其中,通过压缩包括先前数据块的所述部分和当前数据块的扩展数据块来产生压缩数据。
根据本发明构思进一步的实施例,提供了一种数据处理系统,其包括:数据存储设备;主机,被配置成输出包括先前数据块和当前数据块的数据流;和,存储器控制器,被配置成确定来自主机的数据流中的每一数据块或者每一扩展数据块的匹配属性,根据确定结果压缩数据流中的数据块或者扩展数据块,并把压缩数据输出到数据存储设备。存储器控制器确定先前数据块的匹配属性,然后确定包括先前数据块的一部分和当前数据块的扩展数据块的匹配属性。
附图说明
结合附图,从下面的详细描述,本发明构思的上述以及其他方面和特征将变得清晰,在附图中:
图1A是根据本发明构思某些实施例的数据处理系统的框图;
图1B和图1C是本发明构思其他实施例的数据处理系统的框图;
图2是示出图1A中所示的数据压缩电路的例子的框图;
图3是示出图2中所示的哈希键产生电路的例子的框图;
图4是用于说明图2中所示的哈希键产生电路的工作例子的概念图;
图5是示出图2中所示的缓冲存储器和缓冲存储器控制器的例子的框图;
图6是示出图2中所示的缓冲存储器控制器的例子的框图;
图7是示出图2中所示的比较电路的例子的框图;
图8是示出图2中所示的压缩数据产生电路的例子的框图;
图9是示出图2中所示的数据解压缩电路的例子的框图;
图10是供描述根据本发明构思的某些实施例的数据压缩方法时参考的流程图;
图11是供描述根据本发明构思的其他实施例的数据压缩方法时参考的流程图;和
图12是用于说明图11中所示的数据压缩方法的例子的概念图。
具体实施方式
此后将参考附图更全面地描述本发明构思,在附图中示出了本发明的实施例。但是,本发明可被以很多不同形式具体实施,并且不应被理解为只限于这里给出的实施例。相反,提供这些实施例以使本公开将是透彻的和完整的,并且将向本领域技术人员全面传达本发明的范围。在附图中,为了清晰可能夸大层和区域的尺寸和相对尺寸。相同的数字通篇指示相同的元件。
将会理解,当一元件被称为被“连接”或者“耦合”到另一元件时,其可以直接连接或者耦合到另一元件,或者,可能存在居间的元件。相反,当一元件被称为被“直接连接”或者“直接耦合”到另一元件时,不存在居间的元件。如这里所使用的,术语“和/或”包括相关联的被列出项目中的一个或多个的任意和所有组合,并可以被缩写为“/”。
将会理解,尽管这里可能使用术语第一、第二等来描述各种元件,但是这些元件不应被这些术语限制。这些术语只被用来将一个元件与另一个加以区分。例如,第一信号可以被称为第二信号,并且类似地,第二信号可以被称为第一信号而不偏离本公开的教导。
这里使用的术语仅仅是为了描述特定实施例,并非旨在限制本发明。如这里所使用的,单数形式“一”、“一个”和“该”预期也包括复数形式,除非上下文清楚地另有指示。还将会理解,例如“包含”和/或“包括”在本说明书中被使用时,指定了存在所陈述的特征、区域、部分、步骤、操作、元件,和/或部件,但是不排除存在或者添加一个或多个其他的特征、区域、部分、步骤、操作、元件、部件,和/或其组。
除非另外定义,否则这里使用的所有术语(包括技术术语和科学术语)具有和本发明所属技术领域的技术人员通常理解的相同的含义。还将会理解,例如在常用词典中定义的那些的术语应该被解释为具有与其在相关技术和/或本申请的上下文中的含义相符的含义,并且将不会以理想化或者过于形式化的意义解释,除非这里明确地如此定义。
图1A是本发明构思其他实施例的数据处理系统100的框图。数据处理系统100包括主机110、存储器控制器200、第一存储设备130和第二存储设备150。
存储器控制器200和第一存储设备130可以被单独封装,或者被一起封装在单个封装中,例如层叠封装(package on package,PoP)或者多芯片封装。
数据处理系统100可以被实施为例如个人计算机(PC)、数据服务器或者便携式电子设备。便携式电子设备的例子包括膝上型计算机、移动电话机、智能电话机、平板PC、个人数字助理(PDA)、企业数字助理(enterprise digitalassistant,EDA)、数字静态相机、数字摄像机、便携式多媒体播放器(PMP)、个人(或者便携式)导航设备(personal(or portable)navigation device,PND)、手持游戏控制台、移动互联网设备(mobile internet device,MID),以及电子书。
主机110可以把包括数据块的输入数据流IDS输出到存储器控制器200。每一数据块可以由N个字节(其中N为2或者大于2的自然数)组成,以允许快速数据压缩。此外,主机110可以从存储器控制器200接收输出数据流DDS。
存储器控制器200可以逐数据块地处理(例如,压缩或者旁路)数据块。存储器控制器200可以压缩扩展数据块以便提高压缩比,所述扩展数据块包括要被处理的当前数据块和先前数据块的一部分。例如,扩展数据块的尺寸与数据块的尺寸的比例可以是带小数的数,即,扩展数据块的字节尺寸可以大于数据块的字节尺寸但并非数据块的字节尺寸的精确倍数。
为了描述方便,假设数据块长度是4字节,并且扩展数据块长度是6字节。但是,本发明构思不受数据块和扩展数据块字节的相应数量的限制。
存储器控制器200可以基于对应的接口协议,在主机110、第一存储设备130和第二存储设备150之间交换或者处理数据和/或命令。
存储器控制器200可以包括主机接口210、数据压缩电路230、中央处理单元(CPU)或者处理器240、第一存储器控制器250、第二存储器控制器260和数据解压缩电路270。存储器控制器200可以被实施为例如片上芯片(SoC)。
主机接口210,例如主机侧接口,在主机110和存储器控制器200之间交换数据和/或命令。例如,在数据压缩期间,主机接口210把来自主机110的输入数据流IDS传送到数据压缩电路230,并在数据解压缩期间,把解压缩的输出数据流DDS从数据解压缩电路270传送到主机110。
数据压缩电路230可以在CPU240的控制下处理(例如,压缩或者旁路)数据块,或者可以处理(例如压缩)扩展数据块。数据压缩电路230加速压缩过程并最小化压缩比的降低。数据压缩电路230起到编码器的作用。
CPU240可以通过数据总线201控制数据压缩电路230、第一存储器控制器250、第二存储器控制器260和数据解压缩电路270其中至少一个的操作。
第一存储器控制器250可以基于第一存储设备130的接口协议在存储器控制器200和第一存储设备130之间交换数据和/或命令。在第一存储设备130是NAND快闪存储器的情况下,第一存储器控制器250可以被实施为NAND快闪控制器。
第二存储器控制器260可以基于第二存储设备150的接口协议在存储器控制器200和第二存储设备150之间交换数据和/或命令。在第二存储设备150是动态随机访问存储器(DRAM)的情况下,第二存储器控制器260可以被实施为DRAM控制器。
数据解压缩电路270可以将压缩数据解压缩,并通过主机接口210把解压缩输出数据流DDS传送到主机110。数据解压缩电路270起到解码器的作用。
第一存储设备130可以是基于闪存的存储器,例如快闪存储器、嵌入式多媒体卡(embedded multimedia card,eMMC)、通用快闪存储设备(universalflash storage,UFS)、通用串行总线(USB)快闪驱动器,或者固态驱动器(SSD)。
或者,第一存储设备130可以是非易失存储器,例如电可擦除可编程只读存储器(EEPROM)、磁性随机访问存储器(MRAM)、自旋转移扭矩MRAM、导电桥接RAM(conductive bridging RAM,CBRAM)、铁电RAM(ferroelectricRAM,FeRAM)、相变RAM(phase-change RAM,PRAM)、电阻RAM(resistiveRAM,RRAM)、纳米管RRAM、聚合物RAM(polymer RAM,PoRAM)、纳米浮栅存储器(nano floating gate memory,NFGM)、全息存储器、分子电子存储器件,或者绝缘体变阻存储器。
作为另一替换,第一存储设备130可以是硬盘驱动器。
第二存储设备150可以是DRAM或者双数据率(DDR)同步DRAM(SDRAM)。根据第二存储器控制器260的控制,输入第一存储设备130或者从其输出的数据可以被暂时存储在第二存储设备150中。
图1B和图1C是本发明构思其他实施例的数据处理系统100的框图,其中,相同的参考数字指示图1A相同的元件。展示图1B和图1C以演示可以用各种不同方式改变数据压缩电路230和/或数据解压缩电路270的集成而不偏离本发明构思。例如,图1B示出了压缩电路230通过数据总线201从主机接口210接收输入数据流IDS的配置,并且同样地,解压缩电路270通过数据总线201把输出数据流DDS供应给主机接口210。又例如,图1C示出了压缩电路230和解压缩电路270被可操作地置于数据总线201与第一存储器控制器250之间的例子。
图2是示出图1A中所示的数据压缩电路230的例子的框图。参考图2,数据压缩电路230包括输入数据寄存器231、哈希键产生电路233、缓冲存储器控制器237、缓冲存储器239、比较电路241和压缩数据产生电路243。
输入数据寄存器231接收输入数据流IDS,使用延迟电路D1、D2和D3的对应一个调整输入数据流IDS中所包括的每一数据块的延迟,并把经过延迟调整的数据块DATA2、DATA3和DATA4分别传送到处理电路237、241和243。可以分别依据处理电路233、237和241的处理时间来调整延迟电路D1、D2和D3的延迟。
输入数据寄存器231把输入数据流IDS中所包括的数据块DATA1传送到哈希键产生电路233,把第一延迟数据块DATA2传送到缓冲存储器控制器237,把第二延迟数据块DATA3传送到比较电路241,把第三延迟数据块DATA4传送到压缩数据产生电路243。当忽略延迟时,数据块DATA1到DATA4彼此相同。
图3是示出图2中所示的哈希键产生电路233的例子的框图。参考图3,哈希键产生电路233产生对应于顺次接收到的每一数据块(或者数据样式)DATA1的哈希键Hi,并把缓冲存储器239中所包括的存储区域的地址或者位置写到哈希键表235中的记录,其中每一数据块存在于所述存储区域中,或者已经被存储在所述存储区域中,所述记录对应于哈希键Hi。这个例子的哈希键产生电路233包括哈希键产生器233-1、第一计数器233-2和哈希键表235。
图4是用于说明图3中所示的哈希键产生电路233的工作例子的概念图。参考图3和图4,哈希键产生电路233-1每L个字节产生哈希键Hi(其中,L是自然数并且在此后的实施例中L=4),并将哈希键Hi输出到哈希键表235,其中,L个字节构成单个数据块。
第一计数器233-2对每一数据块DATA1中所包括的字节进行计数,并根据计数结果把第一计数值BCNT输出到哈希键表235。
哈希键表235把第一计数值BCNT存储在由哈希键Hi指定的记录中。此时,第一计数值BCNT可以对应于地址ADD。
哈希键产生器233-1产生对应于第一处理单元PU1——即4字节数据A1A2A3A4的哈希键H0,并且第一计数器233-2产生“0x00”作为指示4字节数据A1A2A3A4的起始位置的第一计数值BCNT。
哈希键表235把第一计数值BCNT或者地址ADD——即“0x00”存储在由哈希键H0指定的记录中。此时,哈希键表235可以输出“0x00”作为第一处理单元PU1(=A1A2A3A4)的地址ADD。此外,哈希键产生器233-1产生对应于随后的4字节数据A2A3A4B5的哈希键H2,并且第一计数器233-2产生“0x01”作为指示4字节数据A2A3A4B5的起始位置的第一计数值BCNT。
哈希键产生器233-1产生对应于随后的4字节数据A3A4B5B6的哈希键H4,并且第一计数器233-2产生“0x02”作为指示4字节数据A3A4B5B6的起始位置的第一计数值BCNT。哈希键产生器233-1产生对应于随后的4字节数据A4B5B6B7的哈希键H6,并且第一计数器233-2产生“0x03”作为指示4字节数据A4B5B6B7的起始位置的第一计数值BCNT。
哈希键产生器233-1产生对应于第二处理单元PU2——即4字节数据B5B6B7B8的哈希键H8,并且第一计数器233-2产生“0x04”作为指示4字节数据B5B6B7B8的起始位置的第一计数值BCNT。此时,哈希键表235可以输出“0x04”作为第二处理单元PU2(=B5B6B7B8)的地址ADD。
哈希键产生器233-1产生对应于第三处理单元PU3——即4字节数据C1C2A3A4的哈希键,并且第一计数器233-2产生“0x08”作为指示4字节数据C1C2A3A4的起始位置的第一计数值BCNT。此时,哈希键表235可以输出“0x08”作为第三处理单元PU3(=C1C2A3A4)的地址ADD。
哈希键产生器233-1产生对应于第四处理单元PU4——即4字节数据B1B2B3B4的哈希键H1,并且第一计数器233-2产生“0x0C”作为指示4字节数据B1B2B3B4的起始位置的第一计数值BCNT。此时,哈希键表235可以输出“0x0C”作为地址ADD。
哈希键产生器233-1产生对应于第五处理单元PU5——即4字节数据C3C4A3A4的哈希键H1,并且第一计数器233-2产生“0x40”作为指示4字节数据C3C4A3A4的起始位置的第一计数值BCNT。此时,哈希键表235可以输出“0x40”作为地址ADD。
当接收到和第四处理单元PU4(=B1B2B3B4)相同的第六处理单元PU6——即B1B2B3B4时,哈希键产生器233-1产生和用于第四处理单元PU3的哈希键H1相同的哈希键H1,并且第一计数器233-2产生“0x44”作为指示第六处理单元PU6的4字节数据B1B2B3B4的起始位置的第一计数值BCNT。此时,哈希键表235输出“0x44”而非“0x0C”作为第六处理单元PU6(=B1B2B3B4)的地址,并且在和哈希键H1对应的记录中的地址ADD被从“0x0C”更新到“0x44”。
当要被处理的当前数据块和先前数据块匹配或者相同时,哈希键表235可以把和为每一数据块产生的哈希键Hi对应的地址ADD输出到缓冲存储器控制器237。
图5是示出图2中所示的缓冲存储器239和缓冲存储器控制器237的例子的框图。参考图2和图5,基于从哈希键产生电路233输出的地址ADD,缓冲存储器控制器237把扩展参考数据块MDATA和指示扩展参考数据块MDATA的起始位置的扩展参考数据块起始地址MDATA-ADD传送到比较电路241。
扩展参考数据块MDATA包括存储在不同存储器239-1到239-4其中之一中的先前参考数据块的一部分和存储在存储器239-1到239-4其中另一个中的当前参考数据块。
而且,响应于指示第一延迟数据块DATA2的起始位置的写地址,缓冲存储器控制器237把第一延迟数据块DATA2写到具有交叉结构的存储器239-1到239-4其中之一。
缓冲存储器239包括存储器239-1到239-4,存储器239-1到239-4均被使用交叉方法分配,并且可独立地存取。存储器239-1到239-4的每一个均可以由例如双端口静态随机访问存储器(SRAM)来实施。和单端口SRAM不同,双端口SRAM被配置成在单个周期中同时执行读操作和写操作。
由于缓冲存储器控制器237使用分别具有使用交叉方法分配的不同地址的存储器239-1到239-4,缓冲存储器控制器237能够并行地(即并发或者同时)读取先前参考数据块的所述部分和当前参考数据块。
图6是示出图2中所示的缓冲存储器控制器237的例子的框图。作为例子,将参考图1A到图8详细地描述处理第一处理单元PU1——即第一数据块A1A2A3A4的过程。
当缓冲存储器控制器237从哈希键产生电路233接收和第一处理单元PU1的哈希键H0对应、指示数据块A1A2A3A4的起始位置的地址ADD(=0x00),并且通过输入数据寄存器231接收第一延迟数据块DATA2(=A1A2A3A4)时,缓冲存储器控制器237中所包括的地址产生器237-1产生当前参考地址ADD_C和直接先前(或者先前)参考地址ADD_P。
此时,当前参考地址ADD_C和从哈希键产生电路233输出的地址ADD(=0x00)相同,并且直接先前参考地址ADD_P是恰好直接在当前存储器区域之前的存储器区域的地址。
当第一处理单元PU1的数据块是初始数据块时,直接先前参考地址ADD_P可以是缺省设置的地址。
图6中所示的第二计数器237-2对第一延迟数据块DATA2(=A1A2A3A4)的起始地址计数,并产生第二计数值BCNT1(=0x00)。此时,第二计数值BCNT1对应于将在其中存储第一延迟数据块DATA2(=A1A2A3A4)的存储器区域的地址。
在其他实施例中,不提供第二计数器237-2。在这种情况下,代替第二计数值BCNT1,可以把图3中所示的第一计数器233-2的第一计数值BCNT(=0x00)直接输入到缓冲存储器访问控制电路237-3。
缓冲存储器访问控制电路237-3读取存储在和当前参考地址ADD_C(=0x00)对应的第一存储器区域MR1中的当前参考数据块,例如4字节数据X1X2X3X4,并且并行地(同时)读取存储在和缺省设置的直接先前参考地址ADD_P对应的存储器区域中的直接先前参考数据块的一部分,例如2字节数据。直接先前参考数据块可以是存储在缺省选择的存储器区域中的数据块。
此后,缓冲存储器访问控制电路237-3把第一延迟数据块DATA2(=A1A2A3A4)写到第一存储器239-1中和地址ADD(=0x00)对应的的第一存储器区域MR1。因此,当前参考数据块X1X2X3X4被利用第一延迟数据块DATA2(=A1A2A3A4)更新。
缓冲存储器访问控制电路237-3可以把扩展参考数据块MDATA,例如6字节数据,输出到比较电路241,扩展参考数据块包括直接先前参考数据块的一部分和存储在第一存储器区域MR1中的当前参考数据块X1X2X3X4。此外,缓冲存储器访问控制电路237-3也可以把指示扩展参考数据块MDATA的起始位置的扩展参考数据块起始地址MDATA_ADD输出到比较电路241。
图7是示出图2中所示的比较电路241的例子的框图。寄存器301存储直接在第二延迟数据块DATA3(=A1A2A3A4)之前的数据块的一部分PDATA1。当第二延迟数据块DATA3(=A1A2A3A4)是初始数据块时,存储在寄存器301中的2字节数据PDATA1可以被缺省设置。
第一比较器303把存储在寄存器301中的2字节数据PDATA1和直接先前参考数据块的部分PDATA进行比较,并根据比较结果产生第一比较信号CP1。同时或者并行地,第二比较器305把当前参考数据块RDATA(=X1X2X3X4)与第二延迟数据块DATA3(=A1A2A3A4)进行比较,并根据比较结果产生第二比较信号CP2。
长度计算电路311基于第一比较信号CP1和第二比较信号CP2产生指示重复数据的长度的长度信息Match_LEN和指示匹配还是不匹配的匹配信息Match_FLAG。
当存储在寄存器301中的2字节数据PDATA1和直接先前参考数据块的部分PDATA不同时,并且当前参考数据块RDATA(=X1X2X3X4)与第二延迟数据块DATA3(=A1A2A3A4)不同时,长度计算电路311可以输出具有第一电平,例如高电平的匹配信息Match_FLAG。此时,长度计算电路311可以不产生长度信息Match_LEN。
距离计算电路309可以基于扩展参考数据块起始地址MDATA_ADD和第三计数值BCNT2产生指示扩展数据块的相对位置、距离或者偏移的距离信息Match_DIS。在其他实施例中,距离计算电路309可以被基于匹配信息Match_FLAG使能或者废能(disabled)。
第三计数器307可以对第二延迟数据块DATA3(=A1A2A3A4)的起始位置计数,并根据计数结果产生第三计数值BCNT2。
在其他实施例中,可以不提供第三计数器307。在这种情况下,代替第三计数值BCNT2,图3中所示的第一计数器233-2的第一计数值BCNT可以被直接输入到距离计算电路309。用于控制压缩数据产生电路243的控制信息COMP包括长度信息Match_LEN、匹配信息Match_FLAG和距离信息Match_DIS。
图8是示出图2中所示的压缩数据产生电路243的例子的框图。压缩数据产生电路243可以基于控制信息COMP和第三延迟数据块DATA4产生字面值和长度/距离(length/distance,LLD)数据。
具体地,压缩数据产生电路243可以基于控制信息COMP确定要被处理的第三延迟数据块DATA4是否是重复数据块或者重复数据样式,并根据确定结果将第三延迟数据块DATA4依其原样不压缩地输出,或者压缩包括第三延迟数据块DATA4的扩展数据块。
此时,未压缩数据块被称为使用第一编码方案产生的“字面数据”,并且压缩数据块或者压缩扩展数据块被称为使用第二编码方案产生的“长度/距离数据”。例如,压缩数据产生电路243可以由有限状态机(finite state machine,FSM)实施。
选择信号产生电路401响应于匹配信息Match_FLAG产生选择信号SEL。例如,当匹配信息Match_FLAG是处于第一电平的信号时,选择电路405响应于具有第一电平的匹配信息Match_FLAG,将第三延迟数据块DATA4(=A1A2A3A4)依其原样不压缩地输出。因此,字面数据A1A2A3A4被作为输出数据DATA0输出。
下面将参考图1A到图8详细地描述用于处理第二处理单元PU2的数据块B5B6B7B8的过程。
当缓冲存储器237从哈希键产生电路233接收到指示第二处理单元PU2的数据块B5B6B7B8的起始位置的地址ADD(=0x04)并且通过输入数据寄存器231接收到第一延迟数据块DATA2(=B5B6B7B8)时,地址产生器237-1产生当前参考地址ADD_C(=0x04)和直接先前参考地址ADD_P(=0x00)。
根据地址产生器237-1的实施例,当“0x02”被作为直接先前参考地址ADD_P输出时,缓冲存储器访问控制电路237-3可以读取存储在地址“0x02”和地址“0x03”的数据。此外,当“0x00”被作为直接先前参考地址ADD_P输出时,缓冲存储器访问控制电路237-3也可以读取存储在地址“0x02”和地址“0x03”的数据。
第二计数器237-2对第一延迟数据块DATA2(=B5B6B7B8)的起始位置进行计数,并根据计数结果产生第二计数值BCNT1(=0x04),即写地址。
缓冲存储器访问控制电路237-3读取存储在第二存储器239-2中的第二存储器区域MR2中的当前参考数据块X5X6X7X8,并且并行地读取存储在第一存储器239-1中的第一存储器区域MR1中的直接先前参考数据块A1A2A3A4的一部分,例如2字节数据A3A4,当前参考数据块X5X6X7X8对应于当前参考地址ADD_C(=0x04),并且直接先前参考数据块A1A2A3A4对应于直接先前参考地址ADD_P(=0x00)。
此后,缓冲存储器访问控制电路237-3响应于写地址BCNT1(=0x04)(或者在其他实施例中,BCNT(=0x04)),把第一延迟数据块DATA2(=B5B6B7B8)写到第二存储器239-2中的第二存储器区域MR2。因此,存储在第二存储器区域MR2中的当前参考数据块X5X6X7X8被利用第一延迟数据块DATA2(=B5B6B7B8)更新。
缓冲存储器访问控制电路237-3可以把扩展参考数据块MDATA,例如6字节数据A3A4X5X6X7X8输出到比较电路241,6字节数据A3A4X5X6X7X8包括存储在第一存储器区域MR1中的直接先前参考数据块A1A2A3A4的部分A3A4,以及存储在第二存储器区域MR2中的当前参考数据块X5X6X7X8。此外,缓冲存储器访问控制电路237-3也可以把指示扩展参考数据块MDATA的起始位置的扩展参考数据块起始地址MDATA_ADD(=0x02)输出到比较电路241。
图7中所示的寄存器301存储恰好直接在第二延迟数据块DATA3(=B5B6B7B8)之前的数据块A1A2A3A4的部分A3A4。
第一比较器303把存储在寄存器301中的2字节数据PDATA1(=A3A4)与直接先前参考数据块的部分PDATA(=A3A4)进行比较,并根据比较结果产生第一比较信号CP1。同时或者并行地,第二比较器305把当前参考数据块RDATA(=X5X6X7X8)与第二延迟数据块DATA3(=B5B6B7B8)进行比较,并根据比较结果产生第二比较信号CP2。
长度计算电路311基于第一比较信号CP1和第二比较信号CP2产生长度信息Match_LEN和匹配信息Match_FLAG。
当存储在寄存器301中的2字节数据PDATA1(=A3A4)和直接先前参考数据块的部分PDATA(=A3A4)相同,并且当前参考数据块RDATA(=X5X6X7X8)与第二延迟数据块DATA3(=B5B6B7B8)不同时,长度计算电路311可以输出具有第一电平,例如高电平的匹配信息Match_FLAG。
距离计算电路309可以基于扩展参考数据块起始地址MDATA_ADD(=0x02)和第三计数值BCNT2(=0x04)产生距离信息Match_DIS。如上所述,当距离计算电路309被根据匹配信息Match_FLAG使能或者废能时,距离计算电路309可以被响应于据具有第一电平的匹配信息Match_FLAG废能。
图8中所示的选择电路405响应于具有第一电平的匹配信息Match_FLAG,将第三延迟数据块DATA4(=B5B6B7B8)依其原样不压缩地输出。换句话说,第三延迟数据块DATA4(=B5B6B7B8)被作为字面数据DATA0输出。
用于分别处理第三处理单元PU3的数据块C1C2A3A4、第四处理单元PU4的数据块B1B2B3B4和第五处理单元PU5的数据块C3C4A3A4的过程基本上和用于处理第二处理单元PU2的数据块B5B6B7B8的过程相同。
因此,分别存储在存储器区域MR3、MR4和MR5中的参考数据块Y1Y2Y3Y4、Y5Y6Y7Y8和Z1Z2Z3Z4被分别利用数据块C1C2A3A4、B1B2B3B4和C3C4A3A4更新。
图8中所示的选择电路405响应于具有第一电平的匹配信息Match_FLAG,将第三延迟数据块DATA4——即C1C2A3A4、B1B2B3B4和C3C4A3A4依其原样不压缩地输出。换句话说,第三延迟数据块DATA4(C1C2A3A4、B1B2B3B4和C3C4A3A4)被作为字面数据DATA0输出。
下面将参考图1A到图8描述用于处理第六处理单元PU6的数据块B1B2B3B4的过程。
哈希键产生电路233产生对应于第六处理单元PU6的数据块B1B2B3B4的哈希键H1,并把存储在哈希键表235中的记录的和哈希键H1对应的第一计数值BCNT输出到缓冲存储器控制器237。这里,第一计数值BCNT是指示第四处理单元PU4的数据块B1B2B3B4的起始位置的地址ADD(=0x0C)。
而且,哈希键产生电路233利用指示第六处理单元PU6的数据块B1B2B3B4的起始位置的第一计数值BCNT0x44更新存储在和哈希键H1对应的记录的第一计数值BCNT0x0C。因此,当接收到新数据块B1B2B3B4时,哈希键产生电路233输出更新的第一计数值BCNT0x44作为地址ADD。
缓冲存储器控制器237中所包括的地址产生器237-1响应于地址ADD(=0x0C),产生当前参考地址ADD_C(=0x0C)和直接先前参考地址ADD_P(=0x08)。此时,第二计数器237-2对第一延迟数据块DATA2(=PU6=B1B2B3B4)的起始位置进行计数,并根据计数结果产生第二计数值BCNT1(=0x44),即写地址。
图6中所示的缓冲存储器访问控制电路237-3读取存储在和当前参考地址ADD_C(=0x0C)对应的第四存储器区域MR4中的当前参考数据块B1B2B3B4,并且并行地读取存储在和直接先前参考地址ADD_P(=0x08)对应的第三存储器区域MR3中的直接先前参考数据块C1C2A3A4的一部分,例如2字节数据A3A4。
此后,缓冲存储器访问控制电路237-3响应于写地址BCNT1(=0x44)把第一延迟数据块DATA2(=PU6=B1B2B3B4)写到第二存储器239-2中的第六存储器区域MR6。因此,存储在第六存储器区域MR6中的当前参考数据块Z5Z6Z7Z8被利用第一延迟数据块DATA2(=PU6=B1B2B3B4)更新。
缓冲存储器访问控制电路237-3可以把扩展参考数据块MDATA,例如6字节数据A3A4B1B2B3B4输出到比较电路241,6字节数据A3A4B1B2B3B4包括存储在第三存储器区域MR3中的直接先前参考数据块C1C2A3A4的部分A3A4,以及存储在第四存储器区域MR4中的当前参考数据块B1B2B3B4。此外,缓冲存储器访问控制电路237-3也可以把指示扩展参考数据块MDATA的起始位置的扩展参考数据块起始地址MDATA_ADD(=0x0A)输出到比较电路241。
寄存器301存储恰好直接在第二延迟数据块DATA3(=PU6=B1B2B3B4)之前的数据块C3C4A3A4(=PU5)的部分A3A4。
第一比较器303把存储在寄存器301中的2字节数据PDATA1(=A3A4)与直接先前参考数据块的部分PDATA(=A3A4)进行比较,并根据比较结果产生第一比较信号CP1。与由第一比较器303执行的比较并行,第二比较器305把当前参考数据块RDATA(=B1B2B3B4)与第二延迟数据块DATA3(=PU6=B1B2B3B4)进行比较,并根据比较结果产生第二比较信号CP2。
长度计算电路311基于第一比较信号CP1和第二比较信号CP2产生长度信息Match_LEN和匹配信息Match_FLAG。
当存储在寄存器301中的2字节数据PDATA1(=A3A4)和直接先前参考数据块的部分PDATA(=A3A4)相同,并且当前参考数据块RDATA(=B1B2B3B4)与第二延迟数据块DATA3(=PU6=B1B2B3B4)相同时,长度计算电路311输出具有第二电平,例如低电平的匹配信息Match_FLAG。
距离计算电路309可以基于扩展参考数据块起始地址MDATA_ADD和第三计数值BCNT2产生距离信息Match_DIS。
选择电路405响应于匹配信息Match_FLAG输出码,即由码产生电路403产生的长度/距离数据,作为输出数据DATA0。
码产生电路403基于长度信息Match_LEN和距离信息Match_DIS产生长度/距离数据,例如压缩数据。因此,选择电路405输出码,例如指示长度和距离的压缩数据[6,50]而非扩展数据,所述扩展数据包括第五处理单元PU5中所包括的2字节数据A3A4和第六处理单元PU6中所包括的4字节数据B1B2B3B4。
数据压缩电路230决定是否针对每一数据块进行压缩,藉此提高数据压缩速度。此外,数据压缩电路230可以压缩扩展数据,藉此提高压缩比。
第一存储器控制器250可以产生指示从数据压缩电路230输出的数据DATA0是否已经被压缩的标志,并且可以把该标志和字面或长度/距离数据存储在第一数据存储设备130中。此时,字面数据或者长度/距离数据可以通过第二数据存储设备150被存储在第一数据存储设备130中。
图9是示出图2中所示的数据解压缩电路270的例子的框图。参考图9,数据压缩电路270包括有限状态机(FSM)271、输出数据产生电路273和输出数据缓冲器275。
FSM271接收包括字面数据和长度/距离数据的数据CDATA以及包括指示数据的压缩或者未压缩状态的标志的报头,并根据所述报头输出指令将压缩数据解压缩的控制信号。
输出数据产生电路273基于从FSM271输出的控制信号和压缩数据CDATA把压缩数据CDATA解压缩,并把解压缩数据流DDS输出到输出数据缓冲器275。输出数据缓冲器275把解压缩数据流DDS传送到主机接口210(图1A)。
图10是供描述根据本发明构思的某些实施例的数据压缩方法时参考的流程图。参考图1A到图8和图10,在操作S110中,数据压缩电路230的缓冲存储器控制器237基于从哈希键产生电路233输出的地址ADD,并行地读取先前参考数据块的一部分和当前参考数据块,它们分别被存储在存储器239-1到239-4中的两个中,并把读取的数据传送到比较电路241。
在操作S120中,比较电路241把先前参考数据块的所述部分与先前数据块的一部分进行比较,并把当前参考数据块与当前数据块进行比较。比较被并行地执行,即同时执行。
当先前数据块的所述部分和先前参考数据块的所述部分匹配,并且当前数据块和当前参考数据块匹配时,在操作S140中,压缩数据产生电路243压缩扩展数据块,并输出压缩数据,即长度/距离数据,其中扩展数据块包括先前数据块的所述部分和当前数据块。
但是,在当前数据块和当前参考数据块不匹配而先前数据块的所述部分和先前参考数据块的所述部分匹配时,在操作S150中,压缩数据产生电路243压缩或者旁路当前数据块。
在当前数据块和当前参考数据块匹配而先前数据块和先前参考数据块不匹配时,数据压缩电路230从缓冲存储器239读取扩展参考数据块,把扩展参考数据块与扩展数据块进行比较,并基于比较结果压缩扩展数据块。
这里,扩展参考数据块包括先前参考数据块的所述部分和当前参考数据块。如先前提到的,扩展参考数据块的尺寸和当前参考数据块的尺寸的比例不是整数而是带小数的数。
如上所述,根据先前数据块的重复性和当前数据块的重复性,数据压缩电路230可以输出当前数据块作为字面数据,输出通过压缩先前数据块和当前数据块产生的长度/距离数据,或者输出通过压缩包括先前数据块的一部分和当前数据块的扩展数据块产生的长度/距离数据。
图11是根据本发明构思的其他实施例的数据压缩方法的流程图。图12是用于说明图11中所示的数据压缩方法的例子的概念图。将参考图1A、图11和图12详细地描述当编码位置被改变时压缩数据块的方法。
如图12中所示,编码位置CD1、CD2和CD3指示要被压缩的数据块的起始位置。
为了确定要被处理的当前数据块CDB(=A3A4B1B2)和参考数据块RDB之间的匹配或者重复,在操作S210中,数据压缩电路230确定在第i编码位置CD1,当前数据块CDB(=A3A4B1B2)是否和第一参考数据块RDB(=A1A2A3A4)匹配。这里,“i”是从1开始的自然数,并且假设N是自然数3。
当在操作S220中在第i编码位置CD1不存在匹配时,即当当前数据块CDB(=A3A4B1B2)和第一参考数据块RDB(=A1A2A3A4)不匹配时,在操作S230中,数据压缩电路230把编码位置从第i编码位置CD1改变到第(i+1)编码位置CD2。当在操作S250中,(i+1)小于或者等于N时,在操作S210中,数据压缩电路230确定在第(i+1)编码位置CD2,当前数据块CDB(=A3A4B1B2)是否和第二参考数据块RDB(=B1B2B3B4)匹配。
在操作S220中,在第(i+1)编码位置CD2不存在匹配的情况下,在操作S230中,数据压缩电路230把编码位置从第(i+1)编码位置CD2改变到第(i+2)编码位置CD3。当在操作S250中,(i+1)小于或者等于N时,在操作S210中,数据压缩电路230确定在第(i+2)编码位置CD3,当前数据块CDB(=A3A4B1B2)是否和第三参考数据块RDB(=A3A4B1B2)匹配。
在操作S220中,在第(i+2)编码位置CD3存在匹配时,在操作S240中,数据压缩电路230基于第三参考数据块RDB(=A3A4B1B2),把当前数据块CDB(=A3A4B1B2)压缩为长度/距离数据。
但是,当在操作S220中,在第(i+2)编码位置CD3不存在匹配时,在操作S230中,数据压缩电路230把编码位置从第(i+2)编码位置CD3改变到第(i+3)编码位置。但是,在操作S250中,由于(i+1)大于N,在操作S240中,当前数据块CDB(=A3A4B1B2)被作为字面数据输出。
如上所述,根据本发明构思的某些实施例,在每一数据块上执行压缩,所以数据压缩速度被增大。此外,由于扩展数据块被压缩,避免了压缩比降低。
由于使用交叉存储器或者可独立访问的存储器处理扩展数据块,所以提高了压缩效率。
而且,确定已经被处理的数据块的一部分和先前参考数据的一部分之间的匹配属性,所以可以提高数据压缩比或者数据压缩效率。
虽然已经参考本发明构思的示范性实施例具体示出和描述了本发明构思,但是本领域技术人员将会理解,不偏离本发明构思的由下列权利要求限定的精神和范围,就可以对其在形式和细节上做出各种变化。
Claims (25)
1.一种数据压缩方法,包含:
接收包括先前数据块和当前数据块的输入数据流;
执行先前数据块的一部分与先前参考数据块的一部分的第一比较,以及当前数据块与当前参考数据块的第二比较,其中,第一比较和第二比较被并行执行;和
基于第一比较和第二比较的结果,选择性地输出当前数据块或者对扩展数据块进行压缩,其中,扩展数据块包括先前数据块的所述部分和当前数据块。
2.如权利要求1所述的数据压缩方法,其中,在使用交叉方法分配并且可独立地存取的不同存储器中分别实施其中存储当前参考数据块的第一存储器区域和其中存储先前参考数据块的第二存储器区域。
3.如权利要求1所述的数据压缩方法,其中,扩展数据块尺寸和当前数据块尺寸的比例是带小数的数。
4.如权利要求1所述的数据压缩方法,还包含从缓冲存储器并行地读取先前参考数据块的所述部分和当前数据块。
5.一种数据压缩方法,包含:
接收包括先前数据块和当前数据块的输入数据流;
从存储器读取先前参考数据块的一部分,并且从所述存储器并行地读取当前参考数据块;
比较先前数据块的一部分与先前参考数据块的所述部分,并且并行地比较当前数据块和当前参考数据块;
当先前数据块的所述部分和先前参考数据块的所述部分匹配,并且当前数据块匹配当前参考数据块时,压缩扩展数据块,其中,扩展数据块包括先前数据块的所述部分和当前数据块。
6.如权利要求5所述的数据压缩方法,还包含当先前数据块的所述部分的至少一个和先前参考数据块的所述部分不匹配,并且当前数据块和当前参考数据块不匹配时,选择性地压缩或者不压缩当前数据块。
7.如权利要求5所述的数据压缩方法,其中,存储器是包括其中存储当前数据块的第一存储器区域和其中存储先前参考数据块的第二存储器区域的缓冲存储器,并且第一区域和第二区域分别在使用交叉方法分配并且可独立地存取的不同存储器中实施。
8.如权利要求5所述的数据压缩方法,其中,扩展数据块尺寸和当前数据块尺寸的比例是带小数的数。
9.一种数据压缩电路,包含:
缓冲存储器,包括第一存储器区域、第二存储器区域和第三存储器区域;
缓冲存储器控制器,被配置成响应于地址,输出存储在第一存储器区域中的先前参考数据块的一部分和存储在第二存储器区域中的当前参考数据块;
比较电路,被配置成确定先前数据块的一部分是否和先前参考数据块的所述部分匹配,以及当前数据块是否和当前参考数据块匹配,并根据确定结果,产生控制信息;和
压缩数据产生电路,被配置成基于控制信息,选择性地输出当前数据块或者压缩数据,其中,通过压缩包括先前数据块的所述部分和当前数据块的扩展数据块来产生压缩数据。
10.如权利要求9所述的数据压缩电路,其中,第一存储器区域、第二存储器区域和第三存储器区域被分别实施在使用交叉方法分配并且可独立地存取的不同存储器中。
11.如权利要求9所述的数据压缩电路,其中,缓冲存储器控制器并行地从第一存储器区域读取先前参考数据块的所述部分,从第二存储器区域读取当前参考数据块,然后把当前数据块写到第三存储器区域。
12.如权利要求9所述的数据压缩电路,其中,缓冲存储器控制器包含:
地址产生器,被配置成使用所述地址产生第一存储器区域的第一地址和第二存储器区域的第二地址;和
缓冲存储器访问控制电路,被配置成并行地使用第一地址从第一存储器区域读取先前参考数据块的所述部分,并使用第二地址从第二存储器区域读取当前参考数据块,并基于当前数据块的第三地址把当前数据块写到第三存储器区域。
13.如权利要求9所述的数据压缩电路,其中,压缩电路并行地确定先前数据块的所述部分是否和先前参考数据块的所述部分匹配,以及当前数据块是否和当前参考数据块匹配。
14.如权利要求9所述的数据压缩电路,其中,比较电路包含:
寄存器,被配置成存储先前数据块的所述部分;
第一比较器,被配置成确定从寄存器输出的先前数据块的所述部分是否和从缓冲存储器控制器输出的先前参考数据块的所述部分匹配;
第二比较器,被配置成确定当前数据块是否和当前参考数据块匹配;
长度计算电路,被配置成基于第一比较器的输出信号和第二比较器的输出信号,输出指示匹配还是不匹配的匹配信息,以及指示匹配数据的长度的长度信息;和
距离计算电路,被配置成基于先前数据块的所述部分的地址和当前数据块的地址输出距离信息,
其中,控制信息包括匹配信息、长度信息和距离信息。
15.如权利要求14所述的数据压缩电路,其中,压缩数据产生电路包含:
选择信号产生电路,被配置成基于匹配信息产生选择信号;
码产生电路,被配置成基于长度信息和距离信息产生压缩数据;和
选择电路,被配置成响应于选择信号,输出当前数据块或者压缩数据。
16.一种数据处理系统,包含:
数据存储设备;
主机,被配置成输出包括先前数据块和当前数据块的数据流;和
存储器控制器,被配置成确定来自主机的数据流中的每一数据块或者每一扩展数据块的匹配属性,根据确定结果压缩数据流中的数据块或者扩展数据块,并把压缩数据输出到数据存储设备,
其中,存储器控制器确定先前数据块的匹配属性,然后确定包括先前数据块的一部分和当前数据块的扩展数据块的匹配属性。
17.如权利要求16所述的数据处理系统,其中,存储器控制器包含:
缓冲存储器,包括第一存储器区域、第二存储器区域和第三存储器区域;
缓冲存储器控制器,被配置成响应于地址,并行地输出存储在第一存储器区域中的先前参考数据块的一部分和存储在第二存储器区域中的当前参考数据块;
比较电路,被配置成并行地确定先前数据块的所述部分是否和先前参考数据块的所述部分匹配,以及当前数据块是否和当前参考数据块匹配,并根据确定结果,产生控制信息;和
压缩数据产生电路,被配置成基于控制信息,选择性地输出当前数据块或者压缩数据,其中,通过对扩展数据块进行压缩来产生压缩数据。
18.如权利要求17所述的数据处理系统,其中,第一存储器区域、第二存储器区域和第三存储器区域被分别实施在具有使用交叉方法分配的不同地址的不同存储器中。
19.如权利要求17所述的数据处理系统,其中,缓冲存储器控制器包含:
地址产生器,被配置成使用所述地址产生第一存储器区域的第一地址和第二存储器区域的第二地址;和
缓冲存储器访问控制电路,被配置成并行地使用第一地址从第一存储器区域读取先前参考数据块的所述部分,并使用第二地址从第二存储器区域读取当前参考数据块,并基于当前数据块的第三地址把当前数据块写到第三存储器区域。
20.如权利要求17所述的数据处理系统,其中,比较电路包含:
寄存器,被配置成存储先前数据块的所述部分;
第一比较器,被配置成确定从寄存器输出的先前数据块的所述部分是否和从缓冲存储器控制器输出的先前参考数据块的所述部分匹配;
第二比较器,被配置成确定当前数据块是否和当前参考数据块匹配;
长度计算电路,被配置成基于第一比较器的输出信号和第二比较器的输出信号,输出指示匹配还是不匹配的匹配信息,以及指示匹配数据的长度的长度信息;和
距离计算电路,被配置成基于先前数据块的所述部分的地址和当前数据块的地址输出距离信息,
其中,控制信息包括匹配信息、长度信息和距离信息。
21.如权利要求20所述的数据处理系统,其中,压缩数据产生电路包含:
选择信号产生电路,被配置成基于匹配信息产生选择信号;
码产生电路,被配置成基于长度信息和距离信息产生压缩数据;和
选择电路,被配置成响应于选择信号,输出当前数据块或者压缩数据。
22.如权利要求16所述的数据处理系统,其中,扩展数据块的尺寸和当前数据块的尺寸的比例不是整数。
23.如权利要求16所述的数据处理系统,其中,数据存储设备是快闪存储器、嵌入式多媒体卡(eMMC)、通用快闪存储设备(UFS)、通用串行总线(USB)快闪驱动器或者固态驱动器(SSD)。
24.如权利要求16所述的数据处理系统,其中,数据存储设备是硬盘驱动器。
25.如权利要求16所述的数据处理系统,其中,数据处理系统是智能电话机、平板个人计算机、移动互联网设备,或者电子书。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130000074A KR101992274B1 (ko) | 2013-01-02 | 2013-01-02 | 데이터 압축 방법과 상기 방법을 수행할 수 있는 장치들 |
KR10-2013-0000074 | 2013-01-02 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103916131A true CN103916131A (zh) | 2014-07-09 |
CN103916131B CN103916131B (zh) | 2019-05-28 |
Family
ID=50150526
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410001223.XA Active CN103916131B (zh) | 2013-01-02 | 2014-01-02 | 压缩数据的方法和用于执行该方法的设备 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9280287B2 (zh) |
EP (1) | EP2752760B1 (zh) |
JP (1) | JP6512733B2 (zh) |
KR (1) | KR101992274B1 (zh) |
CN (1) | CN103916131B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104485967A (zh) * | 2015-01-08 | 2015-04-01 | 中山大学 | 由序列通项表达式驱动的并行计算传输列表实时压缩方法 |
CN105790768A (zh) * | 2014-12-19 | 2016-07-20 | 珠海全志科技股份有限公司 | 数据存储方法和系统 |
CN107622781A (zh) * | 2017-10-12 | 2018-01-23 | 华中科技大学 | 一种提升三层忆阻器写性能的编解码方法 |
CN111124940A (zh) * | 2018-10-31 | 2020-05-08 | 深信服科技股份有限公司 | 一种基于全闪存阵列的空间回收方法及系统 |
CN112070652A (zh) * | 2019-06-10 | 2020-12-11 | 上海赜睿信息科技有限公司 | 数据压缩、解压方法、可读存储介质和电子设备 |
CN114077554A (zh) * | 2022-01-20 | 2022-02-22 | 广州匠芯创科技有限公司 | 一种数据解码方法、系统、设备及介质 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9438940B2 (en) * | 2014-04-07 | 2016-09-06 | The Nielsen Company (Us), Llc | Methods and apparatus to identify media using hash keys |
US10542457B2 (en) | 2015-04-20 | 2020-01-21 | Qualcomm Incorporated | Enhanced compression formats for data compression |
US20170038978A1 (en) * | 2015-08-05 | 2017-02-09 | HGST Netherlands B.V. | Delta Compression Engine for Similarity Based Data Deduplication |
US10394724B2 (en) | 2016-08-22 | 2019-08-27 | Qualcomm Incorporated | Low power data transfer for memory subsystem using data pattern checker to determine when to suppress transfers based on specific patterns |
US10809928B2 (en) | 2017-06-02 | 2020-10-20 | Western Digital Technologies, Inc. | Efficient data deduplication leveraging sequential chunks or auxiliary databases |
US10503608B2 (en) | 2017-07-24 | 2019-12-10 | Western Digital Technologies, Inc. | Efficient management of reference blocks used in data deduplication |
KR20200143611A (ko) | 2019-06-14 | 2020-12-24 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2259824B (en) * | 1991-09-19 | 1995-01-18 | Sony Broadcast & Communication | Data compression |
US5371499A (en) * | 1992-02-28 | 1994-12-06 | Intersecting Concepts, Inc. | Data compression using hashing |
US5521597A (en) * | 1993-08-02 | 1996-05-28 | Mircosoft Corporation | Data compression for network transport |
US5977977A (en) * | 1995-08-04 | 1999-11-02 | Microsoft Corporation | Method and system for multi-pass rendering |
US5990955A (en) * | 1997-10-03 | 1999-11-23 | Innovacom Inc. | Dual encoding/compression method and system for picture quality/data density enhancement |
JP3541930B2 (ja) * | 1998-08-13 | 2004-07-14 | 富士通株式会社 | 符号化装置及び復号化装置 |
JP2000148656A (ja) * | 1998-11-09 | 2000-05-30 | Mitsubishi Electric Corp | メモリシステム |
US6819271B2 (en) | 1999-01-29 | 2004-11-16 | Quickshift, Inc. | Parallel compression and decompression system and method having multiple parallel compression and decompression engines |
US6601104B1 (en) * | 1999-03-11 | 2003-07-29 | Realtime Data Llc | System and methods for accelerated data storage and retrieval |
US6658148B1 (en) | 2000-06-06 | 2003-12-02 | Matsushita Electric Works, Ltd. | Image processing method and apparatus |
US6763444B2 (en) * | 2001-05-08 | 2004-07-13 | Micron Technology, Inc. | Read/write timing calibration of a memory array using a row or a redundant row |
TWI220959B (en) * | 2003-06-05 | 2004-09-11 | Carry Computer Eng Co Ltd | Storage device with optimized compression management mechanism |
RU2335022C2 (ru) * | 2003-07-21 | 2008-09-27 | Фраунхофер-Гезелльшафт Цур Фердерунг Дер Ангевандтен Форшунг Е.Ф. | Преобразование формата аудиофайла |
US7321991B2 (en) | 2004-01-10 | 2008-01-22 | Hynix Semiconductor Inc. | Semiconductor memory device having advanced test mode |
US20060069857A1 (en) | 2004-09-24 | 2006-03-30 | Nec Laboratories America, Inc. | Compression system and method |
US20060106870A1 (en) * | 2004-11-16 | 2006-05-18 | International Business Machines Corporation | Data compression using a nested hierarchy of fixed phrase length dictionaries |
US7215259B2 (en) | 2005-06-03 | 2007-05-08 | Quantum Corporation | Data compression with selective encoding of short matches |
JP5431148B2 (ja) | 2006-05-31 | 2014-03-05 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ストレージ用論理データオブジェクトの変換方法およびシステム |
CN101212682B (zh) * | 2007-12-22 | 2011-06-15 | 深圳市同洲电子股份有限公司 | 一种运动搜索区域的数据加载装置和方法 |
JP5481809B2 (ja) * | 2008-08-12 | 2014-04-23 | 富士通株式会社 | コンパレータ回路及びそれを有するアナログデジタルコンバータ |
CN101478311B (zh) * | 2009-01-22 | 2010-10-20 | 浙江大学 | bzip2压缩算法硬件加速实现方法 |
CN101505427A (zh) * | 2009-02-20 | 2009-08-12 | 杭州爱威芯科技有限公司 | 视频压缩编码算法中的运动估计装置 |
WO2010113454A1 (ja) * | 2009-03-31 | 2010-10-07 | パナソニック株式会社 | 記録媒体、再生装置、及び集積回路 |
KR20120090194A (ko) * | 2011-02-07 | 2012-08-17 | 삼성전자주식회사 | 데이터 처리 장치 및 이를 포함하는 데이터 처리 시스템 |
-
2013
- 2013-01-02 KR KR1020130000074A patent/KR101992274B1/ko active IP Right Grant
- 2013-12-19 JP JP2013262636A patent/JP6512733B2/ja active Active
- 2013-12-20 US US14/135,628 patent/US9280287B2/en active Active
- 2013-12-30 EP EP13199794.2A patent/EP2752760B1/en active Active
-
2014
- 2014-01-02 CN CN201410001223.XA patent/CN103916131B/zh active Active
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105790768A (zh) * | 2014-12-19 | 2016-07-20 | 珠海全志科技股份有限公司 | 数据存储方法和系统 |
CN105790768B (zh) * | 2014-12-19 | 2018-12-25 | 珠海全志科技股份有限公司 | 数据存储方法和系统 |
CN104485967A (zh) * | 2015-01-08 | 2015-04-01 | 中山大学 | 由序列通项表达式驱动的并行计算传输列表实时压缩方法 |
CN104485967B (zh) * | 2015-01-08 | 2017-10-03 | 中山大学 | 由序列通项表达式驱动的并行计算传输列表实时压缩方法 |
CN107622781A (zh) * | 2017-10-12 | 2018-01-23 | 华中科技大学 | 一种提升三层忆阻器写性能的编解码方法 |
CN107622781B (zh) * | 2017-10-12 | 2020-05-19 | 华中科技大学 | 一种提升三层忆阻器写性能的编解码方法 |
CN111124940A (zh) * | 2018-10-31 | 2020-05-08 | 深信服科技股份有限公司 | 一种基于全闪存阵列的空间回收方法及系统 |
CN111124940B (zh) * | 2018-10-31 | 2022-03-22 | 深信服科技股份有限公司 | 一种基于全闪存阵列的空间回收方法及系统 |
CN112070652A (zh) * | 2019-06-10 | 2020-12-11 | 上海赜睿信息科技有限公司 | 数据压缩、解压方法、可读存储介质和电子设备 |
CN114077554A (zh) * | 2022-01-20 | 2022-02-22 | 广州匠芯创科技有限公司 | 一种数据解码方法、系统、设备及介质 |
CN114077554B (zh) * | 2022-01-20 | 2022-06-21 | 广州匠芯创科技有限公司 | 一种数据解码方法、系统、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
KR20140088319A (ko) | 2014-07-10 |
JP6512733B2 (ja) | 2019-05-15 |
US9280287B2 (en) | 2016-03-08 |
JP2014132750A (ja) | 2014-07-17 |
EP2752760A3 (en) | 2015-07-29 |
EP2752760A2 (en) | 2014-07-09 |
EP2752760B1 (en) | 2019-03-20 |
US20140189279A1 (en) | 2014-07-03 |
KR101992274B1 (ko) | 2019-09-30 |
CN103916131B (zh) | 2019-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103916131A (zh) | 压缩数据的方法和用于执行该方法的设备 | |
JP6366249B2 (ja) | データ圧縮装置及び方法、データ圧縮装置を含むメモリシステム | |
CN103236847B (zh) | 基于多层哈希结构与游程编码的数据无损压缩方法 | |
CN104202054A (zh) | 一种硬件lzma压缩实现系统及方法 | |
US11791838B2 (en) | Near-storage acceleration of dictionary decoding | |
CN105426413A (zh) | 一种编码方法及装置 | |
CN202931289U (zh) | 一种硬件lz77压缩实现系统 | |
CN107924292A (zh) | 硬件加速型存储压缩 | |
CN104410424A (zh) | 嵌入式设备内存数据的快速无损压缩方法 | |
CN106849956A (zh) | 压缩方法、解压缩方法、装置和数据处理系统 | |
JP2018152887A (ja) | 改善されたファイルの圧縮及び暗号化 | |
CN105320669A (zh) | 数据存储、读取方法及数据存储、读取装置 | |
US9444490B2 (en) | Method of operating data compression circuit and devices to perform the same | |
CN106484852B (zh) | 数据压缩方法、设备与计算设备 | |
US7447263B2 (en) | Processing digital data prior to compression | |
CN116865766A (zh) | 一种波形数据压缩方法、系统、设备及介质 | |
CN108932315A (zh) | 一种数据解压的方法以及相关装置 | |
CN103475375A (zh) | 一种lz77压缩算法硬件加速系统及加速方法 | |
CN203632687U (zh) | 用于通信加密的切换电路 | |
CN102346728B (zh) | 一种采用矢量处理器实现fft/dft倒序的方法和装置 | |
Li et al. | Efficient algorithms for optimal 4-bit reversible logic system synthesis | |
CN114416752B (zh) | Kv ssd的数据处理方法及装置 | |
Mamun et al. | Hardware Approach of Lempel-Ziv-Welch Algorithm for Binary Data Compression | |
CN103458247B (zh) | 一种非定长码高速拼接硬件实现装置 | |
CN103294771A (zh) | swf文件中声音数据批量压缩的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |