CN102541747B - 存储器系统中的数据压缩和编码 - Google Patents

存储器系统中的数据压缩和编码 Download PDF

Info

Publication number
CN102541747B
CN102541747B CN201110342639.4A CN201110342639A CN102541747B CN 102541747 B CN102541747 B CN 102541747B CN 201110342639 A CN201110342639 A CN 201110342639A CN 102541747 B CN102541747 B CN 102541747B
Authority
CN
China
Prior art keywords
data sector
compressed data
split
sector
compressed
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
CN201110342639.4A
Other languages
English (en)
Other versions
CN102541747A (zh
Inventor
X·杨
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.)
Kaiwei International Co
Marvell International Ltd
Marvell Asia Pte Ltd
Original Assignee
Mawier International Trade 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 Mawier International Trade Co Ltd filed Critical Mawier International Trade Co Ltd
Publication of CN102541747A publication Critical patent/CN102541747A/zh
Application granted granted Critical
Publication of CN102541747B publication Critical patent/CN102541747B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/04Addressing variable-length words or parts of words
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/403Error protection encoding, e.g. using parity or ECC codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Abstract

本发明涉及存储器系统中的数据压缩和编码。各实施例提供了一种方法,其包括:接收包括多个数据扇区的输入数据;压缩多个数据扇区,以生成对应的多个经压缩的数据扇区;拆分多个经压缩的数据扇区中的经压缩的数据扇区,以生成多个拆分的经压缩的数据扇区;以及将包括多个拆分的经压缩的数据扇区的多个经压缩的数据扇区,存储在存储器的多个存储器页面中。

Description

存储器系统中的数据压缩和编码
相关申请的交叉引用
本公开要求于2010年10月25日递交的美国临时专利申请No.61/406,267以及于2011年4月28日递交的美国临时专利申请No.61/480,268的优先权,以上申请的除与本公开不一致的部分(如果有的话)之外的全部内容以引用的方式整体并入本文。本公开与2010年4月9日递交的美国专利申请No.12/757,222有关,该申请的除与本公开不一致的部分(如果有的话)之外的全部内容以引用的方式整体并入本文。
技术领域
本公开的实施例涉及存储器系统领域,并且更具体地,涉及存储器系统中的数据压缩和编码。
背景技术
除非在此另有指示,否则在本部分中描述的方法并不是本公开中的权利要求的现有技术,并且并非由于包含在本部分而承认其是现有技术。
在存储器设备(例如,非易失性存储器(NVM)设备)的生命周期期间,存储器设备会由于正常使用而经历退化。从信号处理/编码的角度来看,这意味着通信信道质量随着时间退化,这可能最终影响该设备的数据可靠性。闪存设备例如通常随着存储器单元循环经过多个读取和/或写入操作而易遭受诸如读取扰乱、持久性以及保持力之类的可靠性问题。
为了考虑这些可靠性问题,各种通信系统利用纠错码(ECC)编码方案。为了增加存储的可靠性,通常期望ECC编码方案的编码速率满足目标编码速率。
发明内容
在一个实施例中,提供了一种方法,包括:接收包括多个数据扇区的输入数据;压缩多个数据扇区,以生成对应的多个经压缩的数据扇区;拆分多个经压缩的数据扇区中的经压缩的数据扇区,以生成多个拆分的经压缩的数据扇区;以及将包括多个拆分的经压缩的数据扇区的多个经压缩的数据扇区存储在存储器的多个存储器页面中。拆分经压缩的数据扇区包括拆分经压缩的数据扇区以生成该多个拆分的经压缩的数据扇区的第一拆分的经压缩的数据扇区和第二拆分的经压缩的数据扇区,以及存储多个经压缩的数据扇区还包括:将第一拆分的经压缩的数据扇区存储在多个存储器页面的第一存储器页面中;以及将第二拆分的经压缩的数据扇区存储在多个存储器页面的第二存储器页面中。在一个实施例中,经压缩的数据扇区是第一经压缩的数据扇区,以及将第一拆分的经压缩的数据扇区存储在第一存储器页面中还包括:将第一拆分的经压缩的数据扇区与多个经压缩的数据扇区的第二经压缩的数据扇区分组在一起;以及将第一拆分的经压缩的数据扇区与第二经压缩的数据扇区存储在第一存储器页面中。在一个实施例中,该方法还包括在存储多个经压缩的数据扇区之前对多个经压缩的数据扇区进行编码。在一个实施例中,该方法还包括在存储多个经压缩的数据扇区之前填充多个经压缩的数据扇区的一个或者多个。在一个实施例中,该方法还包括生成表,该表针对每个数据扇区指示其中存储了对应的经压缩的数据扇区的多个存储器页面的一个或者多个存储器页面。拆分经压缩的数据扇区包括拆分经压缩的数据扇区以生成第一拆分的经压缩的数据扇区和第二拆分的经压缩的数据扇区,其中从给定数据扇区生成经压缩的数据扇区,存储多个经压缩的数据扇区还包括:将第一拆分的经压缩的数据扇区存储在多个存储器页面的第一存储器页面中;以及将第二拆分的经压缩的数据扇区存储在多个存储器页面的第二存储器页面中;以及该生成包括生成表,从而使得该表指示给定数据扇区存储在第一存储器页面和第二存储器页面中。在一个实施例中,该方法还包括生成表,该表针对多个存储器页面的每个存储器页面指示存储在存储器页面中的有效的经压缩的数据扇区的数目。
在一个实施例中,提供了一种方法,包括:接收多个数据扇区;将多个数据扇区存储在存储器的多个存储器页面中,其中多个数据扇区中的每个数据扇区存储在多个存储器页面中的一个或者多个存储器页面中;以及生成表,其中生成该表包括:指示其中存储了多个数据扇区的数据扇区的多个存储器页面的一个或者多个存储器页面,以及针对多个数据扇区中的每个数据扇区重复该指示。在一个实施例中,该方法还包括拆分多个数据扇区的给定数据扇区,以生成第一拆分的数据扇区和第二拆分的数据扇区,其中存储多个数据扇区还包括:将第一拆分的数据扇区存储在多个存储器页面的第一存储器页面中;以及将第二拆分的数据扇区存储在多个存储器页面的第二存储器页面中,并且其中生成该表还包括生成表,从而使得该表指示给定数据扇区存储在第一存储器页面和第二存储器页面中。
在一个实施例中,提供了一种方法,包括:接收多个数据扇区;将多个数据扇区存储在存储器的多个存储器页面中,其中多个数据扇区中的每个数据扇区存储在多个存储器页面的一个或者多个存储器页面中;以及生成表,其中生成该表包括:指示存储在多个存储器页面的存储器页面中的有效的数据扇区的数目,以及针对多个存储器页面中的每个存储器页面重复该指示。
在一个实施例中,提供了一种存储器系统,包括:存储器模块;压缩器模块,其配置用于压缩多个数据扇区,以生成对应的多个经压缩的数据扇区;拆分模块,其配置用于拆分多个经压缩的数据扇区中的经压缩的数据扇区,以生成多个拆分的经压缩的数据扇区;以及存储器控制器,其配置用于将包括多个拆分的经压缩的数据扇区的多个经压缩的数据扇区存储在存储器模块的多个存储器页面中。
附图说明
通过以下详细描述结合所附附图,将容易理解各实施例。各实施例通过示例的方式图示,并且不受所附附图中的图的限制。
图1图示了根据各种实施例的存储器系统。
图2a-图2e图示了根据各种实施例的,图1的存储器系统的操作的示例。
图3a-图3e图示了根据各种实施例的,图1的存储器系统的操作的另一示例。
图4图示了根据各种实施例的,用于将各种数据扇区存储在图1的存储器的各个存储器页面中的存储器分配的示例。
图5图示了根据各种实施例的,将一个或者多个数据扇区地址映射到图4的存储器分配的一个或者多个存储器页面地址的表。
图6a和图6b图示了根据各种实施例的,为对应物理页面地址维持有效的逻辑页面地址计数器的表。
图7图示了根据各种实施例的,用于操作图1的存储器系统的方法的示例。
图8图示了根据各种实施例的,用于生成图5的表的方法的示例。
图9图示了根据各种实施例的,用于生成图6a和图6b表的方法的示例。
具体实施方式
图1图示了根据各种实施例的存储器系统10。存储器系统10包括配置用于接收输入数据的输入数据处理模块20。在一个实施例中,输入数据采取数据扇区的形式(在一个或者多个附图中也被标记为DS)。例如,输入数据包括数据扇区流。输入数据的每个数据扇区例如可以具有固定的尺寸或者具有可变的尺寸。作为一个示例,输入数据的每个数据扇区具有为4千字节(KB)的固定尺寸。
输入数据处理模块20接收输入数据,并且处理输入数据以用于向存储器40进行写入。存储器40可以是任何适当类型的存储器。在一个实施例中,该存储器是基于硅的非易失性存储器(NVM),例如闪存。在一个实施例中,虽然未在图1中图示,但是存储器40包括多个块,并且每个块包括多个存储器页面。数据存储在存储器40的各个存储器页面中。
在一个实施例中,从存储器40中读取回的数据由输出数据处理模块50进行处理,该输出数据处理模块50输出输出数据。在一个实施例中,输出数据采取数据扇区的形式。例如,输出数据包括数据扇区流。
输入数据处理模块20包括压缩器模块24、拆分模块26、填充模块28、分组模块30和编码器模块32,稍后在本文中将更详细讨论它们中的每一个。输出数据处理模块50包括解压缩器模块54、解拆分模块56、解填充模块58、解分组模块60和解码器模块62,稍后在本文中将更详细讨论它们中的每一个。存储器系统10还包括用于控制存储器40的一个或者多个操作的存储器控制器42,如稍后在本文中将更详细讨论的。
存储器系统10包括多种其他部件,在图1中出于说明清楚的目的未示出这些其他部件。例如,存储器系统10包括用于对存储器40执行写入、读取和/或擦除操作等的适当部件。
图2a-图2e图示了根据各种实施例的,存储器系统10的操作的示例。参照图1和图2a,在一个实施例中,输入数据包括数据扇区流,该数据扇区流包括如图2a中所示的数据扇区DS A1、DS A2、DS A3和DS A4。
在一个实施例中,数据扇区DS A1、...、DS A4中的每一个是固定尺寸的,例如4KB,但是在各种其他实施例中,数据扇区可以是任何不同固定尺寸的或者可变尺寸的。在图2a-图2e中,对于所图示的每个数据部件(例如,每个数据扇区)而言,数据部件的尺寸(以KB为单位)在数据部件内的括号中图示。例如,在图2a中,每个数据扇区内的标记“(4)”指示数据扇区DS A1、...、DS A4中的每个的尺寸为4KB。
输入数据处理模块20接收数据扇区DS A1、...、DS A4。压缩器模块24压缩数据扇区DS A1、...、DS A4,以分别生成图2b所示的经压缩的数据扇区CDS B1、...、CDS B4。该压缩可以是无损耗压缩,从而使得经压缩的数据扇区在稍后阶段处能够以最小数据损失或者无数据损失的方式解压缩。备选地,该压缩可以是有损耗的,从而使得某一数据丢失。
压缩器模块24将数据扇区中的每个数据扇区从第一尺寸压缩成第二尺寸,其中第二尺寸等于或者小于第一尺寸。用于数据扇区的压缩率定义为(i)数据扇区在压缩之后的尺寸与(ii)数据扇区在压缩之前的尺寸的比值。例如,如图2b中所示,经压缩的数据扇区CDS B1、...、CDS B4的尺寸分别为2KB、3KB、4KB和3KB。因此,例如,用于数据扇区DS A1的压缩率为0.5(即,2/4)。此外,用于数据扇区DS A3的压缩率为1(即,4/4)。即,压缩器模块24不能通过压缩操作减小数据扇区DS A3的尺寸。数据扇区的压缩率例如基于数据扇区的类型、用于压缩所使用的压缩算法等。例如,与视频文件(例如,具有MPEG格式)相关联的数据扇区可以具有为1的压缩率,而与不同文件格式相关联的数据扇区可以具有较低的压缩率。
在一个实施例中,拆分模块26选择性地拆分或者划分经压缩的数据扇区CDS B1、...、CDS B4中的一个或者多个经压缩的数据扇区。例如,如图2c中所示,经压缩的数据扇区CDS B3被拆分为两个经压缩的数据扇区,借此生成拆分的经压缩的数据扇区CDS B3a和CDS B3b。在图2c中所示的实施例中,拆分的经压缩的数据扇区CDS B3a和CDS B3b均为2KB。在图2c中所示实施例中,其他经压缩的数据扇区CDS B1、CDS B2与CDS B4没有被拆分模块26拆分。
在一个实施例中,具有相对高的压缩率(例如,在阈值压缩率之上)的数据扇区由拆分模块26拆分。在一个实施例中,数据扇区被拆分,从而使得在对数据扇区进行编码期间达到阈值编码速率。稍后在本文中更详细讨论数据扇区的拆分。
在选择性地拆分之后,如图2d中所示,通过向经压缩的数据扇区附随或者添加附加比特来填充经压缩的数据扇区(例如,使用填充模块28)。例如,经压缩的数据扇区CDS B1使用填充P1(其中,P1是例如1.6KB)来进行填充。类似地,填充P2、填充P3a、填充P3b和填充P4分别被附随到经压缩的数据扇区CDS B2、CDS B3a、CDS B3b以及CDS B4。填充P2、填充P3a、填充P3b和填充P4分别为例如0.6KB、1.6KB、1.6KB和0.6KB。添加适当长度的填充稍后将在本文中更详细地讨论。经压缩的数据扇区的填充可以通过使用针对其的任何适当的方法来执行。
在一个实施例中,使用编码器模块32对经压缩的数据扇区与所添加的填充一起进行编码。在一个实施例中,编码器模块32使用适当的纠错码(ECC)编码方案(例如,使用奇偶校验码、BCH码、里德-所罗门(Reed-Solomon)码等)。在编码操作期间,生成多个ECC编码比特(例如,其包括奇偶校验信息),其用于检测并且校正在经压缩的数据扇区的后续检索中可能产生的错误。作为一个示例,如图2e中所示,ECC编码比特E1被添加到经压缩的数据扇区CDS B1,ECC编码比特E2被添加到经压缩的数据扇区CDS B2等。作为一个示例,如图2e中所示,针对每个经压缩的数据扇区的ECC编码比特为0.9KB。
在一个实施例中,编码器模块32可以基于例如经压缩的数据扇区的类型、经压缩的数据扇区的尺寸等,使用多个编码算法之一对经压缩的数据扇区进行编码。作为一个示例,编码器模块32使用第一编码算法对经压缩的数据扇区CDS B1进行编码,使用第二编码算法对经压缩的数据扇区CDS B2进行编码等。使用一个或者多个编码算法的数据扇区的选择性编码在2010年4月9日递交的、名称为“Error Correction Code”的美国专利申请No.12/757,222(代理人案号MP3226)中更详细地描述,该申请的除了与本公开不一致的部分(如果有的话)之外的全部内容以引用的方式并入本文。
如先前讨论的,数据存储在存储器40的各个存储器页面中。例如,图2e图示了存储器40的三个存储器页面M1、M2和M3。作为一个示例,存储器40的每个存储器页面具有固定的尺寸,例如,8KB用于存储数据,并且附加的1KB用于例如存储奇偶校验比特或者任何其他的适当信息。因此,存储器40的存储器页面M1、M2和M3中的每个存储器页面为9KB(当然在其他实施例中,存储器页面可以是任何其他适当的尺寸)。
再次参照图2e,一旦拆分的经压缩的数据扇区被填充和编码,则这些数据扇区被写入到存储器40的各个存储器页面中。例如,如图2e中所示,利用附随的填充和编码比特,经压缩的数据扇区CDSB1具有4.5KB的尺寸(例如,经压缩的数据扇区CDS B1为2KB,填充P1为1.6KB,并且ECC编码比特E1为0.9KB)。类似地,利用附随的填充和编码比特,经压缩的数据扇区CDS B2、CDS B3a、CDS B3b和CDS B4中的每个经压缩的数据扇区都为4.5KB。
在一个实施例中,经压缩的数据扇区CDS B1和CDS B2(具有附随的相应的填充和编码比特)具有9KB的组合尺寸,并且被写入到存储器40的存储器页面M1。类似地,经压缩的数据扇区CDS B3a和CDS B3b(具有附随的相应的填充和编码比特)具有9KB的组合尺寸,并且被写入到存储器40的存储器页面M2。经压缩的数据扇区CDS B4(具有附随的相应的填充和编码比特)与一个或者多个其他经压缩的数据扇区(在图2e中未示出)一起被写入到存储器页面M3。
在一个实施例中,执行填充操作(例如,在图2d中),从而使得一个或者多个经压缩的数据扇区,在选择性拆分和编码之后,与相应的存储器页面匹配并且适合于该相应的存储器页面。例如,经压缩的数据扇区CDS B1和CDS B2分别为2KB和3KB,并且具有各自为0.9KB大小的ECC编码比特。这使得经压缩的数据扇区CDSB1和CDS B2中的每个经压缩的数据扇区(与ECC编码比特一起但是没有任何填充)为6.8KB大小。为了将经压缩的数据扇区CDS B1和CDS B2与存储器页面M1(例如,其具有9KB的尺寸)匹配,3.2KB的组合填充被附随到经压缩的数据扇区CDS B1和CDS B2(例如,针对经压缩的数据扇区CDS B1和CDS B2中的每个经压缩的数据扇区为1.6KB的填充)。在一个实施例中,附随到经压缩的数据扇区的填充的尺寸可以基于各种因子(例如,经压缩的数据扇区的尺寸、对经压缩的数据扇区执行的编码操作的编码速率、其中将要存储经压缩的数据扇区的存储器页面的尺寸、将要被存储在与存储经压缩的数据扇区的存储器页面相同的存储器页面中的一个或者多个其他数据扇区的尺寸等)而适当地配置。
一旦数据被写入到存储器40,则该数据可以从存储器40读取,并且由输出数据处理模块50进行处理。在一个实施例中,解码器模块62对从存储器40读取的数据进行解码,解填充模块58对经解码的数据进行解填充(例如,从先前由填充模块28施加了填充的、经压缩的数据扇区中消除填充),解拆分模块56对先前由拆分模块26拆分的经压缩的数据扇区进行解拆分(例如,对拆分的经压缩的数据扇区CDS B3a和CDS B4a进行组合),以及解压缩器模块54对先前由压缩器模块24压缩的经压缩的数据扇区进行解压缩。在一个实施例中,输出数据处理模块50的一个或者多个部件的操作可以与输入数据处理模块20的一个或者多个相应部件的操作互补。
图3a-图3e图示了根据各种实施例的,存储器系统10的操作的另一示例。与图2a-图2e不同,在图3a-图3e的实施例中,如稍后在本文中将更详细讨论的,经压缩的数据扇区被选择性地分组在一个或者多个组中。
参照图1和图3a,在一个实施例中,输入数据包括数据扇区流,该数据扇区流包括数据扇区DS A 10、DS A20、DS A30和DS A40,它们中的每个具有固定的尺寸,例如4KB。与图2b类似,在图3b中,数据扇区被压缩以生成经压缩的数据扇区CDS B10、...、CDSB40。例如,经压缩的数据扇区CDS B10、...、CDS B40的尺寸分别为1KB、2KB、4KB和3KB。
在一个实施例中,拆分模块26选择性地拆分经压缩的数据扇区CDS B10、...、CDS B40中的一个或者多个经压缩的数据扇区。例如,如图3c中所示,经压缩的数据扇区CDS B30被拆分,以生成拆分的经压缩的数据扇区CDS B30a和CDS B30b,它们两者各自为例如2KB。在图3c中所示的实施例中,其他经压缩的数据扇区CDSB10、CDS B20和CDS B40没有被拆分模块26拆分。
在选择性拆分之后,如图3d中所示,经压缩的数据扇区由分组模块30选择性地分组。例如,经压缩的数据扇区CDS B10和CDS B20被分组到一起,从而使得例如对填充和编码操作而言,经压缩的数据扇区CDS B10和CDS B20被视为单个经压缩的数据扇区。在另一示例中,经压缩的数据扇区CDS B30a被视为一个组,经压缩的数据扇区CDS B30b被视为另一组,并且经压缩的数据扇区CDS B40被视为又一组。
在一个实施例中,如同样在图3d中所示出的,通过向经压缩的数据扇区附随或者添加附加比特来填充经分组的和经压缩的数据扇区(例如,使用填充模块28)。例如,使用填充P10统一地填充经分组的经压缩的数据扇区CDS B10和CDS B20,其中P10为例如0.6KB。类似地,填充P30a、填充P30b和填充P40分别被附随到经压缩的数据扇区CDS B30a、CDS B30b以及CDS B40。填充P30a、填充P30b和填充P40分别为例如1.6KB、1.6KB和0.6KB。
在一个实施例中,在填充操作之后,使用编码器模块32对经压缩的数据扇区进行编码。作为一个示例,如图3e中所示,ECC编码比特E10被统一地添加到经分组的经压缩的数据扇区CDS B10和CDS B20,ECC编码比特E30a被添加到经压缩的数据扇区CDS B30a等。图3e还图示了经压缩的各个数据扇区的ECC编码比特的尺寸,每个为例如0.9KB。图3e还图示了存储器40的两个示例存储器页面M10和M20,其中存储器页面M10和M20中的每个存储器页面具有固定的尺寸,例如9KB(类似于图2e的存储器页面M1和M2)。
再次参照图3e,在对经压缩的数据扇区进行编码之后,这些经压缩的数据扇区被写入到存储器40的各个页面中。例如,利用附随的填充和编码比特,如在图3e中所示,经分组的经压缩的数据扇区CDS B10和CDS B20具有4.5KB的尺寸。类似地,利用附随的填充和编码比特,经压缩的数据扇区CDS B30a、CDS B30b和CDS B40均为4.5KB。在一个实施例中,经分组的经压缩的数据扇区CDS B10和CDS B20,与经压缩的数据扇区CDS B30a(具有相应的附随的填充和编码比特)一起具有9KB的组合尺寸,并且被写入到存储器页面M10。此外,经压缩的数据扇区CDS B30b和CDS B40(具有相应的附随的填充和编码比特)具有9KB的组合尺寸,并且被写入到存储器页面M20。
在一个实施例中,执行图3d中的分组和/或填充操作,从而使得一个或者多个经压缩的数据扇区在选择性拆分、分组、填充和编码之后,与相应存储器页面匹配并且适合于该相应的存储器页面。此外,对两个经压缩的数据扇区CDS B10和CDS B20进行分组确保了所有四个数据扇区DS A10、...、DS A40被存储在存储器40的两个存储器页面(例如,而不是三个存储器页面)中。例如,如果两个经压缩的数据扇区CDS B10和CDS B20并未被分组(例如,如在图3d所示),则两个经压缩的数据扇区CDS B10和CDS B20中的每个经压缩的数据扇区将具有例如0.9KB的相应的ECC编码比特。在这种情况中,将会需要三个存储器页面(例如,而不是两个)以存储数据扇区DS A10、...、DS A40。例如,在这种情况中,将不可能将经压缩的数据扇区CDS B10、CDS B20和CDS B30a存储在存储器页面M10中。
如果尺寸为XKB数据扇区由编码器模块32进行编码以生成YKB的ECC编码比特,则编码操作的编码速率是X/(X+Y)。此外,如先前讨论的,用于数据扇区的压缩比被定义为(i)数据扇区在压缩之后的尺寸与(ii)数据扇区在压缩之前的尺寸的比值。在一个实施例中,对经压缩的数据扇区进行拆分和/或对数据扇区进行分组具有若干优点,包括例如改善具有相对较高的压缩比的经压缩的数据扇区的编码速率。
作为一个示例,存储器系统10可以具有为0.80或者更小的目标编码速率(一般而言,编码速率越低,则编码能力越强,尽管这种强的编码导致相对多的ECC编码比特)。对于具有相对低的压缩比(例如,0.80或者更小)的数据扇区而言,由压缩操作导致的尺寸的减小可以用于ECC编码比特,从而导致相对低的编码速率(例如,0.80或者更小)。
然而,对于具有相对高的压缩比(例如,0.80或者更大,例如图3a的数据扇区DS A30具有为1的压缩比)的数据扇区而言,压缩操作导致尺寸的相对小的减小或者不减小(例如,对于为1的压缩比而言,不产生尺寸的减小)。因此,针对这些数据扇区的压缩操作并不显著地有助于减小数据扇区的尺寸,并且因此并不促进获得针对这些数据扇区的、为0.8或者更小的编码速率(由于数据扇区的尺寸并未由于压缩而减小,没有附加的空间被释放以用于存储针对低编码速率编码的高数量的ECC比特)。然而,拆分这些经压缩的数据扇区促进将拆分的经压缩的数据扇区与具有相对较小的尺寸(例如,由于其他经压缩的数据扇区的高压缩比)的其他经压缩的数据扇区分组和/或存储在一起。因此,如在图3a-图3e中所示,这种拆分和/或分组有助于实现为0.8或者更小的目标编码速率。降低数据扇区的编码速率导致针对存储器系统10的相对低的错误率。
在常规的存储器系统中,存储器页面通常存储一个或者多个经压缩的数据扇区。此外,在常规存储器系统中,经压缩的数据扇区通常存储在单个存储器页面中(即,整个经压缩的数据扇区存储在单个存储器页面中,而不是部分地存储在第一存储器页面并且部分地存储在第二存储器页面中)。因此,在常规的存储器系统中,存在经压缩的数据扇区与其中存储有经压缩的数据扇区的存储器页面之间的一对一映射。
相反,在存储器系统10中,由于将经压缩的数据扇区拆分为两个拆分的经压缩的数据扇区,所以两个拆分的经压缩的数据扇区中的第一个拆分的经压缩的数据扇区可以被存储在存储器40的第一存储器页面中,而两个拆分的经压缩的数据扇区中的第二个拆分的经压缩的数据扇区可以被存储在存储器40的第二存储器页面中。因此,在存储器系统10中,(i)经压缩的数据扇区与(ii)其中存储有经压缩的数据扇区的存储器页面之间的映射比常规存储器系统的映射相对更加复杂。
图4图示了根据各种实施例的,用于将各种数据扇区存储在图1的存储器40的各个存储器页面中的存储器分配的示例。如图4中所示,数据扇区411与数据扇区412存储在存储器40的存储器页面M401中,拆分的数据扇区413a存储在存储器40的存储器页面M 402中,并且拆分的数据扇区413b和数据扇区414存储在存储器40的存储器页面M 403中。虽然在图4中未示出,但是图4的各个数据扇区在被存储到存储器40中之前、使用关于图2a-图2e和/或图3a-图3e所公开的操作对它们进行适当地压缩、分组、填充和/或编码。此外,拆分的数据扇区413a和数据扇区413b通过使用关于图2a-图2e和/或图3a-图3e所公开的操作拆分单个数据扇区413(在图4中未示出)而形成。因此,存储器页面M 401存储两个数据扇区,存储器页面M 402存储数据扇区的一部分,并且存储器页面M 403存储数据扇区的另一部分以及另一完整数据扇区。因此,存储器40的存储器页面可以包括部分数据扇区、单个数据扇区和/或多于一个的数据扇区。此外,跨两个存储器页面存储数据扇区413。
在一个实施例中,与数据扇区相关联的数据扇区地址包括与该数据扇区相关联的标识符。因此,数据扇区地址在逻辑上标识数据扇区(虽然并不指向其中存储有数据扇区的物理地址)。数据扇区的数据扇区地址在本文中也称为数据扇区的逻辑页面地址。为了简单起见并且并不限制本公开的范围,数据扇区DS 411的数据扇区地址被假定为411L,数据扇区DS 412的数据扇区地址被假定为412L,数据扇区DS 413的数据扇区地址被假定为413a,以此类推。
在一个实施例中,与存储器40的存储器页面相关联的存储器页面地址是存储器页面的物理地址(即,指向存储器页面的物理位置)。存储器页面的存储器页面地址在本文中也称为存储器页面的物理页面地址。为了简单起见并且并不限制本公开的范围,存储器页面M401的存储器页面地址被假定为401P,存储器页面M 402的存储器页面地址被假定为402P,以此类推。
图5图示了根据各个实施例的,将一个或者多个数据扇区地址(例如,一个或者多个逻辑页面地址)映射到针对图4的存储器分配的一个或者多个存储器页面地址(例如,一个或者多个物理页面地址)的表500。由于表500使用逻辑页面地址作为索引而映射地址,所以表500在本文中也称为逻辑页面地址索引表和/或数据扇区地址索引表。
表500包含三个列,第一列包括逻辑页面地址,第二列包括物理页面地址,并且第三列包括附加物理页面地址。对于数据扇区而言,表500将数据扇区的逻辑页面地址映射到其中存储有数据扇区的一个或者多个对应的存储器页面的一个或者多个物理页面地址。
数据扇区可以完整地存储在一个存储器页面中(例如,DS 411完整地存储在存储器页面401中)。备选地,数据扇区可以被拆分,从而使得该数据扇区存储在两个存储器页面中(例如,DS 413存储在存储器页面M 402和M 403中)。数据扇区尺寸(例如,在任何压缩之前)通常小于或者等于存储器40的存储器页面的尺寸。因此,在一个实施例中,即使在数据扇区被拆分(以及适当地压缩、分组、填充和/或编码)之后,该数据扇区至多可以被存储在两个存储器页面中。因此,在表500中,逻辑页面地址至多对应于两个物理页面地址。然而,在各种其他实施例中,数据扇区可以存储在多于两个存储器页面中,并且表500可以被修改(在图5中未示出),从而使得逻辑页面地址对应于多于两个物理页面地址。
参照图4和图5,数据扇区DS 411完整地存储在存储器页面M401中。因此,在表500的第一行中,逻辑页面地址411L(其是与数据扇区DS 411相关联的数据扇区地址)与物理页面地址401P(其是存储器页面M 401的存储器页面地址)相关联。由于数据扇区DS411并未存储在任何其他存储器页面中,所以第一行的附加物理页面地址为空。类似地,在表500的第二行中,逻辑页面地址412L对应于物理页面地址401P,而对于附加物理页面地址则为空值(由于数据扇区412完整地存储在存储器页面M 401中)。类似地,在表500的第四行中,逻辑页面地址414L对应于物理页面地址403P,而对于附加物理页面地址则为空值(由于数据扇区414完整地存储在存储器页面403中)。
另一方面,如图4中所示,数据扇区413存储在存储器页面M 402和M 403中。因此,在图5的表500的第三行中,逻辑页面地址413L对应于物理页面地址402P和403P。
在一个实施例中,表500用来标识存储器40中的数据扇区。例如,如果数据扇区(例如,数据扇区411)存储在单个存储器页面(例如,存储器页面M 401)中,则表500标识其中存储有该数据扇区的存储器页面。备选地,如果数据扇区(例如,数据扇区413)存储在多个存储器页面(例如,存储器页面M 402和M 403)中,则表500标识其中存储有该数据扇区的所有存储器页面。其中存储有数据扇区的存储器页面的这种标识是有用的,例如,在对数据扇区进行追踪时和/或在对主扇区的读取或者重写入操作期间是有用的。在一个实施例中,存储器控制器42和/或存储器系统10的任何其他适当的部件生成和/或更新表500。
在一个实施例中,存储器40(其可以是例如NAND闪存)不允许更新存储在存储器页面中的数据扇区。例如,参照图4,数据扇区DS 413存储在存储器页面M 402和M 403中。在这种存储之后,如果数据扇区DS 413需要被更新或者改变,则数据扇区413的原始位置(即,数据扇区DS 413在存储器页面M 402和M 403中的位置)被标记为无效,并且将更新后的数据扇区413存储在另一位置(可能在与存储器页面M 402和M 403不同的两个其他存储器页面)中。
因此,存储器40的存储器页面可以包括有效和/或无效数据扇区。例如,一旦数据扇区413被更新,则存储器页面M 402仅包括无效数据,而存储器页面M 403包括无效数据(例如,对应于数据扇区413的过时的副本)和有效数据(例如,对应于有效数据扇区414)。
图6a图示了根据各个实施例的,为对应的物理页面地址维持有效逻辑页面地址计数器的表600。参照图4和图6a,在存储了数据扇区DS 411、...、DS 414之后,存储器页面M 401包括两个有效数据扇区(例如,数据扇区DS 411和DS 412)。因此,在图6a中的表600的第一行中,对应于物理页面地址401P的有效逻辑页面地址计数器为2。此外,存储器页面M 402包括一个有效数据扇区(例如,数据扇区DS 413的部分)。因此,在图6a中的表600的第二行中,对应于物理页面地址402P的有效逻辑页面地址计数器为1。此外,存储器页面M 403包括两个有效数据扇区(例如,数据扇区DS 414和数据扇区DS 413的另一部分)。因此,在图6a中的表600的第三行中,对应于物理页面地址403P的有效逻辑页面地址计数器为2。
在一个实施例中,如果存储在一个或者多个存储器页面中的数据扇区被更新,则对应于一个或者多个存储器页面中的每个存储器页面的有效逻辑页面地址计数器减少1。例如,在存储了数据扇区DS 411、...、DS 414之后(如在图4中示出的),假定数据扇区413被更新。因此,如先前讨论的,数据扇区413的原始位置(即,数据扇区DS 413在存储器页面M 402和M 403中的位置)被标记为无效(同时,更新后的扇区数据413被存储在另一位置-可能存储在任何附图中都未示出的两个其他存储器页面中)。存储器控制器42例如从表500标识原始存储数据扇区413的较旧版本的存储器页面(即,存储器页面M 402和M 403)。随后,针对物理页面地址402P和403P有效逻辑页面地址计数器各自减1,以生成在图6b中示出的表600的更新后版本。如果针对存储器页面的有效逻辑页面地址计数器达到零(例如,在图6b的表600中的存储器页面M 402),则这指示没有有效数据扇区存储在存储器页面中。
生成、维持和/或更新表600具有若干优点。例如,表600容易地标识针对存储器40的每个存储器页面的有效数据扇区的数目。如先前讨论的,存储器40包括多个块,每个块包括多个页面。在一个实施例中,存储器40的各个存储器页面以块为单位被刷新(例如,删除各个页面中所包括的数据)。例如,整个块的存储器页面统一刷新。在一个实施例中,基于表600,周期地维持并且更新存储器40的块的各个存储器页面中的有效数据扇区的总数。如果块的各个存储器页面中的有效数据扇区的总数下降到阈值之下,则整个块都被刷新(例如,在将块的存储器页面的剩余有效数据扇区存储在不同块的存储器页面中之后)。因此,表600还有助于存储器40的一个或者多个块的这种周期性刷新。
图7图示了根据各种实施例的,用于操作图1的存储器系统10的方法700的示例。在704处,输入数据处理模块20接收包括多个数据扇区(例如,图3a的数据扇区DS A10、...、DS A40)的输入数据。在708处,压缩器模块24压缩多个数据扇区,以生成对应的多个经压缩的数据扇区(例如,经压缩的数据扇区CDS B10、...、CDSB40)。在712处,拆分模块26拆分多个经压缩的数据扇区的经压缩的数据扇区(例如,经压缩的数据扇区CDS B30),以生成多个拆分的经压缩的数据扇区(例如,拆分的经压缩的数据扇区CDSB30a和CDS B30b)。虽然在图7中未示出,但是在这种压缩之后,如关于图2a-图2e和/或图3a-图3e所讨论的,经压缩的数据扇区可以被填充、编码和/或分组。在716处,存储器控制器42将多个经压缩的数据扇区(包括多个拆分的经压缩的数据扇区)存储在存储器40的多个存储器页面中。
图8图示了根据各种实施例的,用于生成图5的表500的方法800的示例。参照图1、图4、图5和图8,在804处,输入数据处理模块20接收包括多个数据扇区(例如,图4的数据扇区DS 411、...、DS 414)的输入数据。虽然在图8中未示出,但是在这种接收之后,如关于图2a-图2e和/或图3a-图3e所讨论的,数据扇区可以被压缩、填充、拆分、编码和/或分组。在808处,多个数据扇区被存储在存储器40的多个存储器页面中,其中多个数据扇区中的每个数据扇区存储在多个存储器页面(例如,如图4中所示)中的一个或者多个存储器页面中。在812处,通过指示其中存储有多个数据扇区中的数据扇区的多个存储器页面的一个或者多个存储器页面并且针对多个数据扇区中的每个数据扇区重复该指示来生成表500(例如,通过存储器控制器42或者通过存储器系统10的任何其他适当的部件)。例如,表500指示数据扇区DS 411存储在存储器页面M 401中,数据扇区DS 412存储在存储器页面M 401中,数据扇区DS 413存储在存储器页面M 402和M 403中等。
图9图示了根据各个实施例的,用于生成图6a和图6b的表600的方法900的示例。参照图1、图4、图6a-图6b和图9,在904处,输入数据处理模块20接收包括多个数据扇区(例如,图4的数据扇区DS 411、...、DS 414)的输入数据。虽然在图9未示出,但是在这种接收之后,如参照图2a-图2e和/或图3a-图3e所讨论的,数据扇区可以被压缩、填充、拆分、编码和/或分组。在908处,多个数据扇区被存储在存储器40的多个存储器页面中,其中多个数据扇区中的每个数据扇区被存储在多个存储器页面中的一个或者多个存储器页面中,例如,如图4中所示。在912处,通过指示存储在多个存储器页面中的存储器页面的有效数据扇区的数目,并且针对多个存储器页面中的每个存储器页面重复该指示来生成表600(例如,通过存储器控制器42或者通过存储器系统10的任何其他适当部件)。例如,图6a的表600指示存储器页面401存储两个有效数据扇区,存储器页面402存储一个有效的数据扇区等。
根据各个实施例,可以提供包含具有存储在其上的指令的存储介质的制品,当指令被执行时,产生在本文中关于图7-图9的方法700、800和/或900所描述的操作(和/或在本公开中所讨论的各种其他操作)。在一个实施例中,存储介质包括某一类型的非临时性存储器(未示出)。根据各种实施例,制品可以是计算机可读介质,诸如例如软件或者固件。
可能已经将各种操作描述为多个分立的动作或者操作,继而,按照最有助于理解所要求保护的主题的方式描述了它们。然而,描述的顺序不应当被理解为意指这些操作必须依赖于顺序。特别地,这些操作可以不按照所呈现的顺序执行。所描述的操作可以按照不同于所描述的实施例的顺序执行。可以执行各种附加操作和/或所描述的操作可以在附加的实施例中被省略。
本描述可以使用术语“实施例”或则“多个实施例”,它们各自可以指代相同或者不同实施例中的一个或者多个实施例。此外,参照实施例使用的术语“包括”、“包含”和“具有”等是同义词。
如本文所使用的,术语“模块”可以指代专用集成电路(ASIC)、电子电路、执行一个或者多个软件或者固件程序的处理器(共享的、专用的或者组)和/或存储器(共享的、专用的或者组)、组合逻辑电路和/或提供所描述功能的其他适当部件,或者是以上各项的一部分或者包括以上各项。
虽然在本文中已经图示和描述了某些实施例,但是本领域技术人员将理解,经计算以实现相同目的的广泛的备选和/或等价实施例或者实现可以代替所示出的和所描述的实施例,而不脱离其范围。本领域技术人员将容易领会到,这些实施例可以按照很多种方式来实现。本申请旨在覆盖在本文中讨论的实施例的任何调整或者变形。因此,明确地旨在使这些实施例仅由权利要求及其等价物进行限定。

Claims (20)

1.一种数据存储方法,其包括:
接收包括多个数据扇区的输入数据;
压缩所述多个数据扇区中的各个数据扇区,以生成对应的多个经压缩的数据扇区;
拆分所述多个经压缩的数据扇区中的各个经压缩的数据扇区,以生成多个拆分的经压缩的数据扇区;
向所述多个拆分的经压缩的数据扇区中的各个拆分的经压缩的数据扇区添加附加比特,以生成填充的各个拆分的经压缩的数据扇区,其中向所述各个拆分的经压缩的数据扇区添加的附加比特的数目至少部分基于存储器的各个存储器页面的尺寸;以及
将所述填充的各个拆分的经压缩的数据扇区中的每个填充的各个拆分的经压缩的数据扇区存储在所述存储器的所述各个存储器页面中。
2.根据权利要求1所述的方法,其中
拆分所述各个经压缩的数据扇区包括拆分所述各个经压缩的数据扇区以生成所述多个拆分的经压缩的数据扇区的第一拆分的经压缩的数据扇区和第二拆分的经压缩的数据扇区,以及
存储所述填充的各个经压缩的数据扇区中的每个填充的各个经压缩的数据扇区还包括:
将所述第一拆分的经压缩的数据扇区存储在所述多个存储器页面的第一存储器页面中;以及
将所述第二拆分的经压缩的数据扇区存储在所述多个存储器页面的第二存储器页面中。
3.根据权利要求2所述的方法,其中
所述各个经压缩的数据扇区是第一经压缩的数据扇区,以及
将所述第一拆分的经压缩的数据扇区存储在所述第一存储器页面中还包括:
将所述第一拆分的经压缩的数据扇区与所述多个经压缩的数据扇区的第二经压缩的数据扇区分组在一起;以及
将所述第一拆分的经压缩的数据扇区与所述第二经压缩的数据扇区存储在所述第一存储器页面中。
4.根据权利要求3所述的方法,其中将所述第一拆分的经压缩的数据扇区存储在所述第一存储器页面中还包括:
将所述第一拆分的经压缩的数据扇区与所述第二经压缩的数据扇区分组在一起,从而使得在对所述第一拆分的经压缩的数据扇区与所述第二经压缩的数据扇区进行编码时达到阈值编码速率。
5.根据权利要求4所述的方法,其中将所述第一拆分的经压缩的数据扇区存储在所述第一存储器页面中还包括:
将所述第一拆分的经压缩的数据扇区与所述第二经压缩的数据扇区分组在一起,从而使得所述第一拆分的经压缩的数据扇区与所述第二经压缩的数据扇区在编码之后适合于所述第一存储器页面。
6.根据权利要求3所述的方法,其中将所述第二拆分的经压缩的数据扇区存储在所述第二存储器页面中还包括:
将所述第二拆分的经压缩的数据扇区存储在所述第二存储器页面中,从而使得没有其他经压缩的数据扇区存储在所述第二存储器页面中。
7.根据权利要求1所述的方法,其中,拆分所述各个经压缩的数据扇区还包括:
确定针对所述各个经压缩的数据扇区的压缩比超过用于对所述各个经压缩的数据扇区进行编码的期望的编码速率;以及
响应于确定所述压缩比超过所述期望的编码速率,而拆分所述各个经压缩的数据扇区。
8.根据权利要求1所述的方法,还包括:
在存储所述填充的各个拆分的经压缩的数据扇区中的每个填充的各个拆分的经压缩的数据扇区之前编码所述多个经压缩的数据扇区。
9.根据权利要求1所述的方法,还包括:
生成表,所述表针对所述多个数据扇区中的每个数据扇区指示其中存储了对应的经压缩的数据扇区的所述存储器的所述存储器页面中的一个或者多个存储器页面。
10.根据权利要求9所述的方法,其中
拆分所述各个经压缩的数据扇区包括拆分所述各个经压缩的数据扇区,以生成第一拆分的经压缩的数据扇区和第二拆分的经压缩的数据扇区,其中所述各个经压缩的数据扇区从给定数据扇区生成,
存储所述填充的各个拆分的经压缩的数据扇区中的每个填充的各个拆分的经压缩的数据扇区还包括:
将所述第一拆分的经压缩的数据扇区存储在所述存储器页面的第一存储器页面中;以及
将所述第二拆分的经压缩的数据扇区存储在所述存储器页面的第二存储器页面中,以及
所述生成所述表包括生成表,从而使得所述表指示特定数据扇区存储在所述第一存储器页面和所述第二存储器页面中。
11.根据权利要求1所述的方法,还包括:
生成表,所述表针对所述存储器页面中的各个存储器页面指示存储在所述各个存储器页面中的每个各个存储器页面中的有效经压缩的数据扇区的数目。
12.根据权利要求11所述的方法,还包括:
改变所述多个数据扇区的特定数据扇区,其中所述特定数据扇区被压缩以生成第一经压缩的数据扇区,并且其中所述第一经压缩的数据扇区存储在所述存储器页面的第一存储器页面和第二存储器页面中;以及
响应于改变所述特定数据扇区,更新所述表,从而使得针对所述第一存储器页面和所述第二存储器页面的每个存储器页面,调节存储在所述各个存储器页面中的每个各个存储器页面中的有效经压缩的数据扇区的数目。
13.一种存储器系统,包括:
存储器模块;
压缩器模块,其配置用于压缩多个数据扇区中的每个数据扇区,以生成对应的多个各个经压缩的数据扇区;
拆分模块,其配置用于拆分所述各个经压缩的数据扇区,以生成多个拆分的经压缩的数据扇区;
填充模块,用于向所述多个拆分的经压缩的数据扇区中的各个拆分的经压缩的数据扇区添加附加比特,以生成填充的各个拆分的经压缩的数据扇区,其中向所述填充的各个拆分的经压缩的数据扇区添加的附加比特的数目至少部分基于所述存储器模块的各个存储器页面的尺寸;以及
存储器控制器,其配置用于将所述填充的各个拆分的经压缩的数据扇区中的每个填充的各个拆分的经压缩的数据扇区存储在所述存储器模块的所述各个存储器页面中。
14.根据权利要求要求13所述的存储器系统,还包括:
编码器模块,其配置用于在存储所述填充的各个拆分的经压缩的数据扇区中的每个填充的各个拆分的经压缩的数据扇区之前对所述多个各个经压缩的数据扇区进行编码。
15.根据权利要求要求13所述的存储器系统,其中所述多个拆分的经压缩的数据扇区包括第一拆分的经压缩的数据扇区和第二拆分的经压缩的数据扇区,所述存储器系统还包括:
分组模块,其配置用于将所述第一拆分的经压缩的数据扇区和所述多个拆分的经压缩的数据扇区的所述第二拆分的经压缩的数据扇区分组在一起,其中所述存储器控制器配置用于将所述第一拆分的经压缩的数据扇区与所述第二拆分的经压缩的数据扇区存储在所述存储器页面的特定页面中。
16.根据权利要求要求15所述的存储器系统,所述第一拆分的经压缩的数据扇区与所述第二拆分的经压缩的数据扇区被分组在一起,从而使得在对所述第一拆分的经压缩的数据扇区与所述第二拆分的经压缩的数据扇区进行编码时达到阈值编码速率。
17.根据权利要求要求13所述的存储器系统,其中所述拆分模块配置用于通过以下操作拆分第一经压缩的数据扇区:
确定针对所述第一经压缩的数据扇区的压缩比超过用于对所述第一经压缩的数据扇区进行编码的期望的编码速率;以及
响应于确定所述压缩比超过所述期望的编码速率,而拆分所述第一经压缩的数据扇区。
18.根据权利要求要求13所述的存储器系统,其中所述存储器系统配置用于:
生成表,所述表针对所述多个数据扇区中的每个数据扇区指示其中存储了对应的经压缩的数据扇区的所述存储器的所述存储器页面中的一个或者多个存储器页面。
19.根据权利要求要求13所述的存储器系统,其中所述存储器系统配置用于:
生成表,所述表针对所述存储器页面中的各个存储器页面指示存储在所述各个存储器页面中的每个各个存储器页面中的有效经压缩的数据扇区的数目。
20.根据权利要求要求19所述的存储器系统,其中所述存储器系统还配置用于:
改变所述多个数据扇区的特定数据扇区,其中所述特定数据扇区被压缩以生成第一经压缩的数据扇区,并且其中所述第一经压缩的数据扇区存储在所述存储器页面的第一存储器页面和第二存储器页面中;以及
响应于改变所述特定数据扇区,更新所述表,从而使得针对所述第一存储器页面和所述第二存储器页面的每个存储器页面,调节存储在所述各个存储器页面中的每个各个存储器页面中的有效经压缩的数据扇区的数目。
CN201110342639.4A 2010-10-25 2011-10-25 存储器系统中的数据压缩和编码 Active CN102541747B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US40626710P 2010-10-25 2010-10-25
US61/406,267 2010-10-25
US201161480268P 2011-04-28 2011-04-28
US61/480,268 2011-04-28

Publications (2)

Publication Number Publication Date
CN102541747A CN102541747A (zh) 2012-07-04
CN102541747B true CN102541747B (zh) 2016-09-21

Family

ID=45973972

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110342639.4A Active CN102541747B (zh) 2010-10-25 2011-10-25 存储器系统中的数据压缩和编码

Country Status (2)

Country Link
US (1) US8892809B2 (zh)
CN (1) CN102541747B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9148172B2 (en) * 2012-06-22 2015-09-29 Micron Technology, Inc. Data compression and management
US9852055B2 (en) 2013-02-25 2017-12-26 International Business Machines Corporation Multi-level memory compression
US20150067436A1 (en) * 2013-09-03 2015-03-05 Sandisk Technologies Inc. Nonvolatile Memory System Compression
CN103617134A (zh) * 2013-11-07 2014-03-05 中国人民解放军61660部队 一种便携式数据安全存储装置及实现安全存储的方法
US9361228B2 (en) * 2014-08-05 2016-06-07 Qualcomm Incorporated Cache line compaction of compressed data segments
JP2016058832A (ja) * 2014-09-08 2016-04-21 キヤノン株式会社 画像処理装置、その制御方法、及びプログラム
US9720821B2 (en) * 2014-09-17 2017-08-01 Storart Technology Co. Ltd. Adaptive compression data storing method for non-volatile memories and system using the same
US10319348B2 (en) * 2015-05-11 2019-06-11 Vixs Systems, Inc. Memory subsystem consumer trigger
US10365937B2 (en) * 2015-07-24 2019-07-30 Red Hat Israel, Ltd. Entropy increase by executable loader
CN110383698B (zh) * 2016-12-28 2022-02-11 华为技术有限公司 数据访问方法及闪存设备
US10606760B2 (en) * 2017-08-23 2020-03-31 Samsung Electronics Co., Ltd. Nonvolatile memory devices and methods of controlling the same
US10430246B2 (en) * 2018-01-18 2019-10-01 International Business Machines Corporation Virtualized and synchronous access to hardware accelerators
US20230236725A1 (en) * 2022-01-25 2023-07-27 Dell Products L.P. Method to opportunistically reduce the number of SSD IOs, and reduce the encryption payload, in an SSD based cache in a deduplication file system
US20230317195A1 (en) * 2022-04-04 2023-10-05 Micron Technology, Inc. Error Correction in a Memory Device having an Error Correction Code of a Predetermined Code Rate

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6266671B1 (en) * 1997-10-02 2001-07-24 Oki Electric Industry Co., Ltd. Data storage apparatus, method, and medium with variable data storage structure
WO2008070811A3 (en) * 2006-12-06 2008-08-07 David Flynn Apparatus, system, and method for managing data in a storage device with an empty data token directive

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4047151A (en) 1974-12-24 1977-09-06 Rydbeck Nils R C Adaptive error correcting transmission system
US5875280A (en) 1990-03-29 1999-02-23 Canon Kabushiki Kaisha Recording apparatus having variably settable compression ratio
KR0170261B1 (ko) 1992-09-02 1999-04-15 김광호 최적 기록/재생장치
US5666560A (en) * 1995-08-03 1997-09-09 International Business Machines Corporation Storage method and hierarchical padding structure for direct access storage device (DASD) data compression
EP1492376A1 (en) 1997-04-17 2004-12-29 NTT DoCoMo, Inc. Base station apparatus of mobile communication system
US6747827B1 (en) 2000-03-27 2004-06-08 Texas Instruments Incorporated Error correction codes applied variably by disk zone, track, sector, or content
ATE261231T1 (de) 2000-05-10 2004-03-15 Mitsubishi Electric Inf Tech Verfahren zur zuweisung von sekundärsynchronisationskodes zu einer basisstation eines mobilkommunikationssystems
US6775751B2 (en) * 2002-08-06 2004-08-10 International Business Machines Corporation System and method for using a compressed main memory based on degree of compressibility
JP2005130256A (ja) 2003-10-24 2005-05-19 Ntt Docomo Inc 移動局装置、基地局装置、無線通信システムおよび無線通信方法
US7457431B2 (en) 2003-12-05 2008-11-25 New Jersey Institute Of Technology System and method for robust reversible data hiding and data recovery in the spatial domain
CN101031971A (zh) 2004-08-02 2007-09-05 皇家飞利浦电子股份有限公司 数据存储和重放设备
US7673215B2 (en) 2004-12-17 2010-03-02 Samsung Electronics Co., Ltd. Apparatus and method for using an error correcting code to achieve data compression in a data communication network
US20070183493A1 (en) 2005-02-04 2007-08-09 Tom Kimpe Method and device for image and video transmission over low-bandwidth and high-latency transmission channels
US20070089023A1 (en) 2005-09-30 2007-04-19 Sigmatel, Inc. System and method for system resource access
US7844879B2 (en) 2006-01-20 2010-11-30 Marvell World Trade Ltd. Method and system for error correction in flash memory
US8151163B2 (en) 2006-12-03 2012-04-03 Anobit Technologies Ltd. Automatic defect management in memory devices
US8015473B2 (en) 2006-12-19 2011-09-06 Intel Corporation Method, system, and apparatus for ECC protection of small data structures
US8583981B2 (en) 2006-12-29 2013-11-12 Marvell World Trade Ltd. Concatenated codes for holographic storage
US9356730B2 (en) 2007-01-30 2016-05-31 Telefonaktiebolaget Lm Ericsson (Publ) Method for adding error protection bits to match codeword length
US7962683B2 (en) * 2007-08-15 2011-06-14 Silicon Motion, Inc. Flash memory, and method for operating a flash memory
US20090125790A1 (en) 2007-11-13 2009-05-14 Mcm Portfolio Llc Method and Apparatus of Automatically Selecting Error Correction Algorithms by a NAND Flash Controller
US8341501B2 (en) 2009-04-30 2012-12-25 International Business Machines Corporation Adaptive endurance coding of non-volatile memories
US8370544B2 (en) * 2009-07-23 2013-02-05 Stec, Inc. Data storage system with compression/decompression
US8275168B2 (en) 2009-08-28 2012-09-25 Seiko Epson Corporation Orientation free watermarking message decoding from document scans
US8533564B2 (en) 2009-12-23 2013-09-10 Sandisk Technologies Inc. System and method of error correction of control data at a memory device

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6266671B1 (en) * 1997-10-02 2001-07-24 Oki Electric Industry Co., Ltd. Data storage apparatus, method, and medium with variable data storage structure
WO2008070811A3 (en) * 2006-12-06 2008-08-07 David Flynn Apparatus, system, and method for managing data in a storage device with an empty data token directive

Also Published As

Publication number Publication date
US8892809B2 (en) 2014-11-18
CN102541747A (zh) 2012-07-04
US20120102295A1 (en) 2012-04-26

Similar Documents

Publication Publication Date Title
CN102541747B (zh) 存储器系统中的数据压缩和编码
CN105009088B (zh) 具有运行时变量raid保护方案的方法、固态驱动器控制器以及数据存储设备
US10459794B2 (en) Memory systems having extended product lifetime and methods of operating the same
CN104871249B (zh) 数据存储系统的自适应错误纠正码
CN101256842B (zh) 纠错码控制器和包括该纠错码控制器的存储器系统
KR101564569B1 (ko) 상위-레벨 리던던시 정보 계산
JP6125087B2 (ja) 利用可能なメモリスペースに基づく冗長ストレージ構成の選択
CN101510448B (zh) 用于存储器的错误检测/校正方案
CN101473308A (zh) 非易失性存储器纠错系统和方法
CN104272262A (zh) 物理页、逻辑页及码字对应
CN104871138A (zh) 用于多维raid重构和缺陷避免的方法和系统
CN102023901A (zh) 非易失性存储器装置、存储器控制器和存储器系统
CA3177662C (en) Data-storage method and apparatus, and data-recovery method and apparatus
KR20130049464A (ko) 에러 정정 성능 신장 방법 및 이를 이용한 저장 장치
CN103563255B (zh) 用于可执行代码的压缩与实时解压缩的方法
CN104393878A (zh) 用于纠正在编码比特序列中的至少单比特错误的设备和方法
US20130117632A1 (en) Storage control apparatus
CN101281788A (zh) 闪存系统及其控制方法
WO2023184911A1 (zh) 一种数据存储方法、装置、设备及非易失性可读存储介质
JP6657634B2 (ja) 符号化装置、メモリシステム、通信システムおよび符号化方法
TWI378463B (en) Method and controller for generating an ecc code for a memory device
CN112585589A (zh) 将压缩数据块和未压缩数据块压紧的设备及方法
CN109844864B (zh) 用于使用多单元存储单元组对非易失性存储器进行编程以提供保持差错的差错位置信息的方法和设备
CN110209598A (zh) 一种高速缓冲存储器、一种数据读写控制方法及系统
US11914887B2 (en) Storage device and data accessing method using multi-level cell

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20200427

Address after: Singapore City

Patentee after: Marvell Asia Pte. Ltd.

Address before: Ford street, Grand Cayman, Cayman Islands

Patentee before: Kaiwei international Co.

Effective date of registration: 20200427

Address after: Ford street, Grand Cayman, Cayman Islands

Patentee after: Kaiwei international Co.

Address before: Hamilton, Bermuda

Patentee before: Marvell International Ltd.

Effective date of registration: 20200427

Address after: Hamilton, Bermuda

Patentee after: Marvell International Ltd.

Address before: Babado J San Mega Le

Patentee before: MARVELL WORLD TRADE Ltd.

TR01 Transfer of patent right