CN105009088A - 具有运行时变量raid保护方案的方法、固态驱动器控制器以及数据存储设备 - Google Patents

具有运行时变量raid保护方案的方法、固态驱动器控制器以及数据存储设备 Download PDF

Info

Publication number
CN105009088A
CN105009088A CN201380072071.6A CN201380072071A CN105009088A CN 105009088 A CN105009088 A CN 105009088A CN 201380072071 A CN201380072071 A CN 201380072071A CN 105009088 A CN105009088 A CN 105009088A
Authority
CN
China
Prior art keywords
page
error correcting
correcting code
data
block
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
Application number
CN201380072071.6A
Other languages
English (en)
Other versions
CN105009088B (zh
Inventor
R·丹尼尔克
R·N·马伦多尔
J·琼斯
A·J·汤姆林
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.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
Skyera LLC
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 Western Digital Technologies Inc, Skyera LLC filed Critical Western Digital Technologies Inc
Publication of CN105009088A publication Critical patent/CN105009088A/zh
Application granted granted Critical
Publication of CN105009088B publication Critical patent/CN105009088B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1847File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • H03M13/353Adaptation to the channel

Abstract

数据存储设备可以包括闪存控制器和耦合到所述闪存控制器的闪存设备的阵列。所述阵列可以包括多个S页,每个所述S页包括多个F页。依次地,所述多个F页中的每个可以被配置为存储可变量的数据和可变量的纠错码。所述闪存控制器可以被配置为跨越S页的每个F页生成纠错码,以及将所生成的纠错码存储在具有所述最大数据量的一个或多个F页内。

Description

具有运行时变量RAID保护方案的方法、固态驱动器控制器以及数据存储设备
相关申请的交叉引用
本申请要求于2012年12月3日提交的临时美国专利申请序列号61/732,830(Atty.Docket No.T5961.P)的优先权,其整体以引用的方式并入在此。
背景技术
除其他因素外,由于工艺技术和制造偏差,在固态驱动器(SSD)的任何管芯中可能存在很多坏的存储器块。而且,每个块的耐久性不同。在管芯的早期寿命中,块中的大部分是好的。然而,存在一些初始故障。在大量的管芯寿命期间,发生随机位错误。最终,在管芯的寿命即将结束时,磨损效应显露,在其中错误率增加。每个块都经历这样的生命周期,虽然潜在地以不同的速率。实际上,一些块花费很长的时间经历该生命周期,而其他块花费相比较而言较短的时间段。然而,为了提供充足的安全裕量,常规的SSD系统根据表现最差的块而被提供。
闪存中的位可能在被编程之后被错误地读取(即,开发位错误)。闪存单元(cell)上的电荷水平将由于若干条件(例如,时间、温度、对块中的其他页的访问等)而改变。最终,当受到影响的单元被读取,则会返回错误的值。闪存制造商基于工艺技术、单元设计、实验室测试、模拟、操作条件等来规定针对闪存页的位错误的最大数。通常将位错误规范规定为每M字节P个错误。在一些情况下,控制器制造商负责实现满足或超过规范的纠错码(ECC)。ECC的类型包括Reed Solomon码、BCH码和低密度奇偶校验(LDPC)码,他们是在数据位的块中纠正位错误的方法。由闪存制造商规定的闪存设备的寿命(以编程/擦除(PE)周期测量)是基于对所规定的纠错需求的实现。闪存制造商在闪存页中提供额外的字节以容纳预期的ECC位的数量加上针对诸如例如循环冗余校验(CRC)字段、扇区号等的其他元数据的少量空间。
开放NAND闪存接口(ONFI)规范版本2.3将闪存页定义为包含数据区域和备用区域。备用区域旨在用于保持ECC校验位和元数据,而数据区域被假定包含扇区(例如,逻辑块)数据。错误可能发生在特定页的数据部分以及在整个页中。针对每种类型的错误,需要不同的ECC代码和不同的纠错策略。
附图说明
图1A是示出了根据一个实施例的数据存储设备的物理数据组织和逻辑数据组织的方面的图。
图1B是根据一个实施例的其中每个E页的数据部分和ECC部分在物理上分开的F页的图。
图1C是示出了在给定F页内F页数据部分和F页ECC部分在尺寸上可变的图。
图2示出了根据一个实施例的逻辑到物理地址转换映射及其示例性条目。
图3示出了显示针对常规设备和方法二者的以及根据一个实施例的坏块与编程/擦除周期的百分比的图。
图4是示出了根据一个实施例的块失效率与数据存储设备的生命期之间关系、以及可以变化E页的ECC部分和数据部分以扩展数据存储设备的有用生命期的方式的图。
图5是根据一个实施例的块信息数据结构的图。
图6是根据一个实施例的超块(S块)的方框图。
图7示出了根据一个实施例的超页(S页)的另一视图。
图8是根据一个实施例的示出了校验页的生成与存储的S页的图。
图9是示出了根据一个实施例的块失效率与数据存储设备的生命期之间关系、以及可以变化校验页的数量以扩展数据存储设备的有用生命期的方式的图。
图10是根据一个实施例的在数据存储设备中生成和存储校验页的方法的流程图。
具体实施方式
图1A是示出了根据一个实施例的数据存储设备的物理数据组织和逻辑数据组织的方面的图。在一个实施例中,数据存储设备是SSD。在另一实施例中,数据存储设备是包括闪存和旋转磁存储介质的混合驱动器。本公开能够应用于SSD和混合实现二者,但是出于简单的缘故,参考基于SSD的实现来对各种实施例进行描述。根据一个实施例,SSD控制器102可以被配置为耦合到如附图标记118处所示的主机。主机118可以采用逻辑块寻址(LBA)方案。尽管LBA的尺寸通常是固定的,但是主机能够动态地改变LBA的尺寸。例如,LBA的尺寸可以随着接口和接口模式而不同。实际上,尽管512字节是最常见的,但4KB的尺寸也正在获得青睐,还有512+(520、528等)和4K+(4K+8、4K+16等)格式。如其中所示出的,SSD控制器102可以包括或耦合到一个或多个页寄存器104。控制器102可以被配置为响应于来自主机118的数据访问命令而对来自闪存设备的阵列的数据进行编程并且读取。尽管本文的描述涉及闪存,但是应当理解的是,存储器设备的阵列可以包括其他类型的非易失性存储器,例如,闪存集成电路、硫系RAM(C-RAM)、相变存储器(PC-RAM或PRAM)、可编程金属化单元RAM(PMC-RAM或PMCm)、Ovonic Unified Memory(OUM)、阻变式RAM(RRAM)、NAND存储器(例如,单层单元(SLC)存储器、多层单元(MLC)存储器、或其任意组合)、NOR存储器、EEPROM、铁电体存储器(FeRAM)、磁阻RAM(MRAM)、其他分立的NVM(非易失性存储器)芯片、或其任意组合。
页寄存器104可以被配置为使控制器102能够从阵列中读取数据以及将数据存储到阵列。闪存设备的阵列可以包括一个或多个管芯(例如,128管芯)中的多个闪存设备。闪存设备可以包括多个闪存块,如图1A中109处所示。集合在一起的闪存块的组合可以被称为超块或S块。在一些实施例中,形成S块的单独的块可以从一个或多个管芯、平面或其他粒度级别中选择。因此,S块可以包括组合在一起的、跨过一个或多个管芯分布的多个闪存块。以这种方式,S块可以形成闪存管理系统(FMS)在其上操作的单元。在一些实施例中,可以根据与在管芯级不同的粒度来选择形成S块的单独的块,例如以下情况:当存储器设备包括被细分为诸如平面的结构的管芯(即,块可以从单独的平面中取得)时。根据一个实施例,分配、擦除和垃圾收集可以在S块级执行。在其他实施例中,FMS可以根据诸如页、块、平面、管芯等的其他逻辑分组来执行数据操作。
闪存块109中的每一个可以包括多个诸如闪存页(F页)208的物理页。每一个F页208可以是固定尺寸的,例如,16KB。根据一个实施例,F页208的尺寸可以被定义为用于给定的闪存设备的编程的最小单元的尺寸。同样如图1A所示,每一个F页208可以被配置为容纳一个或多个诸如ECC页的物理子页,在下文中被称为E页210。本文中所使用的术语“E页”指的是被配置为在非易失性存储器(在其上应用了纠错码)中存储数据的数据结构。根据一个实施例,E页210可以形成SSD内的物理寻址的基础,并且可以构成闪存读取数据传送的最小单元。即,每个E页210可以被配置为存储由控制器102可读取的数据的最小量。E页210可以是预定的固定尺寸(例如,2KB),并且确定ECC系统的有效载荷(例如,主机或其他数据)的尺寸。然而,物理页(例如,E页)的尺寸不必是固定的。在一个实施例中,E页的地址唯一地标识在闪存内E页的位置。例如,E页的地址可以指定闪存通道、在所标识的闪存通道内的特定管芯、在管芯内的特定块、特定F页、以及最后在所标识的F页内的E页的起始。
根据一个实施例,每一个F页208可以被配置为将一个或多个E页210安置在其边界内。例如,给定16KB宽的F页208以及每E页210固定尺寸2KB,八个E页210安置在单个F页208内,如图1A所示。根据一个实施例,在任何事件中,整数个E页,诸如2的幂次个E页210(包括ECC)可以被配置为安置于F页208。同样如图1A所示,每一个E页210可以包括数据部分114,并且取决于E页210位于何处也可以包括ECC部分116。ECC部分116可以被配置为存储被应用于E页210的数据部分114中存储的数据的ECC。根据一个实施例,数据部分114和ECC部分116在尺寸上都不需要是固定的。因此,根据一个实施例,对于给定的E页尺寸,E页内ECC部分的尺寸与数据部分的尺寸之间的比率可以变化。
E页、数据部分、以及ECC部分不需要根据图1A的示例性布局来布置。例如,每个E页的数据部分和ECC部分可以在物理上分离,这使得在F页内数据部分集合在一起而ECC部分集合在一起,如图1B中所示。在F页内,数据部分和ECC部分尺寸可变。实际上,图1C示出了F页,其构成数据部分比图1B中示出的E页的数据部分相对较大。相应地,图1C的F页的ECC部分比图1B中示出的E页的ECC部分在尺寸上相对较小。因此,结果就是在F页内的聚合中,图1C的F页的F页数据部分大于图1B中示出的F页的F页数据部分。类似地,在F页内的聚合中,与图1B中示出的F页的F页数据部分相比,图1C的F页的F页ECC部分在尺寸上较小。F页的数据部分和ECC部分尺寸可变将被用作在存储F页纠错码中的优势,这在下文中得到充分发展。在各种实施例中,E页、数据部分、以及ECC部分的其他布置是可能的,并且本文所公开的尺寸调节方法也能够应用于那些实施例。在一个实施例中,F页可以包括仅一个E页。
实际上,为了在SSD上的物理寻址与由主机进行的逻辑块寻址之间建立桥梁,引入了逻辑页(L页)结构。图1A和图2中由附图标记212所指示的L页可以包括由闪存管理系统所使用的地址转换的最小单元。根据一个实施例,每一个L页212可以与L页号相关联。在一个实施例中,数据被逻辑地存储在L页212中,而L页212被物理地存储在SSD上、在E页210中。根据一个实施例,鉴于E页210是固定尺寸的(整数的E页可以安置在F页内),根据一个实施例由于对要存储的数据进行的压缩中的可变性,L页112的尺寸是可变的。由于数据的可压缩性不同,所以4KB量的一种类型的数据可以被压缩成2KB的L页,而4KB量的另一种类型的数据可以被压缩成1KB的L页。由于这样的压缩,根据一个实施例,不需要对齐物理尺寸和逻辑尺寸,这会在本文进一步发展。因此,L页212及其相关联的L页号可以被配置为使控制器102能够对被存储在E页210中的一个或多个中的数据(例如,主机数据)进行逻辑地引用。也可以利用L页212作为压缩的基本单元。实际上,根据一个实施例,与F页208和E页210不同,L页212在尺寸上是不固定的,并且可以在一个范围内变化,所述范围例如由最小压缩尺寸(大约24字节)到最大解压缩尺寸(大约4KB或4KB+)进行定义。
如图1A和图2所示,L页212不需要与E页210的边界对齐。实际上,L页212可以被配置为具有与F页208和/或E页210边界对齐的起始地址,但也可以被配置为不与F页208或E页210的任一边界对齐。即,L页起始地址可以位于与以下之一非零偏移处:F页208的起始地址或结束地址、或者E页210的起始地址或结束地址,如图1A所示。由于L页212的尺寸是不固定的并且可能小于固定尺寸的E页210,所以多于一个L页212可以安置在单个E页210中。类似地,由于L页212在尺寸上可能大于E页210,所以L页212可能跨越多于一个E页210并且甚至可能跨过F页208的边界,如图1A中附图标记117处所示。如下文更详细描述的,L页112也可以跨越块边界,诸如将是以下情况:其中边界117中的一个表示块边界。
例如,在LBA尺寸是512或512+字节的情况,假定解压缩的L页212可以是4KB到4KB+,最大八个连续的LBA可以被组装至4KB的L页212。根据一个实施例,应当注意的是,L页212的确切逻辑尺寸不重要,这是因为在压缩之后物理尺寸可以跨越从最小尺寸的几个字节到完整尺寸的上千字节。例如,对于4TB的SSD设备,可以使用30位编址来对每一个L页112进行编址以覆盖可能潜在地呈现在这样的SSD中的L页的量。
图2示出了根据一个实施例的逻辑到物理地址转换映射250及其示例性条目。由于存储的数据在L页212中由主机引用,并且由于SSD将L页212存储在一个或多个E页210中,所以要求逻辑到物理地址转换映射使控制器202能够将L页212与一个或多个E页210相关联。这样的逻辑到物理地址转换映射(实际上,L页到E页地址转换映射)在图2中250处示出,并且在一个实施例中,逻辑到物理地址转换映射是具有每L页212一个条目的线性阵列。这样的地址转换映射250可以存储在诸如DRAM的易失性存储器中。
图2还示出了针对四个不同的L页号的地址转换映射250中的条目,其中,L页号在图2中标注为L页1、L页2、L页3、以及L页4。根据一个实施例,存储在SSD中的每一个L页可以由地址转换映射250中单个并且唯一的L页号条目所指向。因此,在以此发展的示例中,示出了四个条目。如所示出,L页到E页转换映射250中的每一个条目可以包括L页号,其可以包括包含被引用的L页的起始地址的E页的标识、在E页内的起始地址的偏移以及L页的长。另外,多个ECC位可以针对映射条目提供错误纠正功能。例如,如图2所示,并且假设E页尺寸为2KB,L页1可以在地址转换映射250中被引用如下:E页1003、偏移800、长1624,紧接着是预定数量的ECC位(未示出)。即,在物理地址项中,由L页号L页1所引用的L页的起始是在E页1003内(不与E页1003对齐),并且位于与E页1003的起始物理位置相距等于800字节的偏移处。而且,与L页号L页1相关联的压缩的L页扩展1624字节,从而跨过E页边界到达E页1004。因此,E页1003和E页1004的每一个都存储与L页号L页1相关联的L页的一部分。
类似地,与L页号L页2相关联的压缩的L页全部存储在E页1004内,并且在其中偏移400字节处起始,并仅在E页1004内扩展696字节,从而全部保持在指定为E页1004的起始地址和结束地址范围内。与L页号L页3相关联的压缩的L页起始于E页1004内偏移1120字节处(距离L页2的边界正好24字节),并且扩展4096字节越过E页1005并进入E页1006内。因此,与L页号L页3相关联的L页跨越E页1004的一部分、E页1005的全部以及E页1006的一部分。最后,与L页号L页4相关联的L页起始于E页1006内偏移1144字节处,并且扩展3128字节以完全跨越E页1007、跨过F页边界进入到下一个F页的E页1008中。
共同地,组成了地址转换映射250的每一个条目的这些构成标识符字段(E页、偏移、长度和ECC)中的每一个在尺寸上都可以是例如8字节。即,对于示例性4TB的驱动器,E页的地址在尺寸上可以是32位,偏移在尺寸上可以是12位(对于E页数据部分多达4KB),长度可以是13位,并且可以提供ECC字段。每当写入或改变L页时,可以创建这样的8字节条目,使得控制器102能够记录在闪存存储装置内的(被写入到L页的)数据。如上所示,在地址转换映射250中的该8字节条目可以被称为逻辑页号或LPN。应当注意到,在4KB扇区尺寸的情况下,LBA与LPN相同。因此,LPN可以构成在逻辑到物理地址转换表250内的L页的索引,并且包括在非易失性存储器内的条目的地址。因此,当控制器102从主机118接收到读取命令时,可以从所提供的LBA中得到LPN,并且其可以被用于索引至地址转换映射250,以提取闪存中要被读取的数据的位置。当控制器102从主机118接收到写入命令时,LPN可以从LBA构建,并且可以对地址转换映射250进行修改。例如,可以在其中创建新的条目。取决于存储地址转换映射250的易失性存储器的尺寸,LPN可以存储在单个条目中或被拆分为例如两个条目。例如,第一条目可以标识包含正讨论的L页的起始地址的E页(加ECC位),以及第二条目可以标识偏移和长度(加ECC位)。这两个条目可以一起与闪存内的单个L页相对应并且指向闪存内的单个L页。在其他实施例中,地址转换映射条目的特定格式可以与以上所示出的示例不同。
以各种方式使用E页内的可变的数据部分尺寸,以适应闪存设备的阵列中存储器块的变化的条件。下文参考图3和图4进一步讨论块的条件。图3示出了显示针对常规设备和方法以及根据各种实施例的那些设备和方法的坏块与PE周期的百分比的图。图4是示出了根据一个实施例的块失效率与诸如SSD的数据存储设备的生命期之间关系、以及可以变化E页的ECC部分和数据部分以扩展数据存储设备的有用生命期的方式的图。块的生命周期根据不同块而不同,并且根据不同管芯而不同,一些块比其他块更快老化(变得较不能够可靠地存储数据)。这些差异可能归因于管芯与管芯的制程差异、在管芯上的块位置,以及归因于一个块到下一个块的使用模式和不均匀的PE周期,以及其他不均匀老化的原因。
根据一个实施例,数据存储设备可以被配置为至少部分地基于(多个)块的条件来确定应用多个ECC配置项(profile)中的哪个和/或调节ECC部分116的尺寸并且相应地调节在一个或多个F页和/或一个或多个块中的E页210的数据部分114的尺寸。块的条件可以包括例如块的PE数、ECC错误率、闪存错误信息、温度、驻留时间(dwell time)(擦除事件之间的时间)、以及内部闪存状态信息、或诸如操作条件、温度、使用年限(age)等的大部分任意其他可测量的物理特性。根据一个实施例,控制器可以被配置为基于主机提供(host-provided)的(例如,作为诸如TRIM命令的主机专用(host-specified)的数据集管理命令的结果而生成的)元数据和/或数据存储设备中的全部空闲空间来调节ECC部分的尺寸和/或数据部分的尺寸。这样做时,一个实施例可以操作以将块的有用生命从图3中300处所示的初始PE数PEi扩展到更大的PE数PEi+x,其中“x”大于0,如302处所示。这是因为已经降级的块能够利用较大量的ECC来保护,因此扩展其有用生命。另外,在块/页级别的ECC的可变性也意味着所应用的ECC能够为单独的块/页的唯一条件而定制,并且能够追踪那些单独的块/页所经历的降级路径。
如图3所提出的,SSD的有用生命扩展到这样的PE数:在该PE数,坏块的百分比达到预定的最大值。在实践中,该预定的最大值可以由SSD垃圾收集的能力所指定。当垃圾收集不再可能时,由于空闲块的数量不够,SSD实际上到达其有用生命的结束,或者至少到达其存储新数据的能力的结束。根据一个实施例,至少部分地基于(多个)块的条件,通过明智地调节ECC部分116的尺寸并且相应地调节一个或多个块中的E页210的数据部分114的尺寸,被认为是“坏块”的存储器块的数量可以相对于PE周期上升得更慢,结果是增加了通过PE周期的数量来测量的SSD的生命。应当注意的是,根据一个实施例,针对一个块所选择的ECC配置项可以被保持,直到至少该正在讨论的块已被垃圾收集。
如图4所示,针对SSD的生命周期中的不同点,所观察到的坏块的百分比可以不同。在早期生命(当PE周期数低时)中,失效率可以稍高;即,可以存在页/块相关的失效的相对较高的发生率。这些早期生命的页/块失效中的至少一些实际上可能是使用E页的ECC不可纠正的。为了处理这些ECC不可纠正的实例,一些实施例提供了在一个或多个F页中的称为“校验页”的另外的纠错机制,其具有根据跨过多个F页的数据所计算的校验数据,这将结合图8-10进一步描述。由于使用校验页来处理这些早期的ECC不可纠正的失效,在早期生命中,E页可以被配置为具有与生命的后期阶段相比相对较弱的ECC。而且,与相对较强的ECC所必需的相比,可以以较少的字节提供较弱的ECC。因此,如所示出,ECC部分116EARLY可以被调节为占据E页中的相对较小的字节数。反过来,假定E页尺寸固定,这允许相对较大的数据部分114EARLY。有利地,该较大数据部分114EARLY空出来额外的字节,收益更大的空闲空间以用于数据存储和垃圾收集,并且增加了预留空间(overprovisioning)。替代地,为了适应失效率的较高发生率,在一些实施例中可以使用较高量的ECC。
在生命中期,SSD平衡数据部分的尺寸与ECC的强度的能力在其巅峰,结果是对E页的有效使用以优化生命期限。如所示出,生命中期是在SSD的生命期限中相对稳定的时期,如由相对平的失效率曲线所示。因此,与116EARLY相比,可以将稍大量的字节用作ECC,如116MID处所示。根据一个实施例,与如114EARLY所示的为生命早期E页中数据部分保留的空间相比,在生命中期E页内为数据部分114MID保留的空间则可能相对较小。而且,相对较小的数据部分114MID只可以收益相对较小量的额外空闲空间,并且因此,仅产生了在预留空间上相对小的增加。但是,该相对较小的数据部分114MID然而可以大于以下情况:如果该块已经被提供用于最坏情况的失效率,如常规所进行的。
接近生命的后期或结束,数据部分114LATE仍可以被调节得更小以在E页中为更强(例如,更大)ECC部分116LATE腾出空间。如一个实施例通过对数据部分和ECC部分尺寸的调节和对ECC配置项的选择来增加SSD的可用生命,在生命后期/生命结束中,相对于常规使用的ECC部分尺寸,可能需要增加ECC强度。通过在生成时对ECC强度的明智选择,因此SSD的最大PE数可以比常规可能的情况有所增加,在常规可能的情况下E页的数据部分和ECC部分二者的尺寸是静态的。这是因为,在生命早期和生命中期,分配给ECC的空间小于根据常规实践所要求的,在常规实践中ECC和数据部分的尺寸是静态的。根据一个实施例,即使在生命后期/结束中ECC部分尺寸增加以及对应的数据部分尺寸的减少也不够抵消在生命早期和生命中期通过增加数据部分尺寸所获得的增益,结果是在数据存储设备的有用生命期上的PE数的净增加。此外,根据一个实施例并且如下文所描述的,利用F页的可变尺寸数据部分和交叉F页(cross-F-Page)纠错(也称为“外”(outer)纠错,相对于被称为“内”纠错的ECC部分)的使用,通过PE周期数测量的SSD的有用生命可以更进一步增加。
一个实施例贯穿SSD的生命周期支持并且动态地追踪ECC的块级配置。除了贯穿生命周期调节ECC之外,基于块质量,不同的ECC可以用于不同的块。可以为弱块提供额外的ECC,而可以为相对较强的块以相对较小的ECC部分116来提供相对较弱的ECC,从而收益额外的空闲空间和随之发生的预留空间的增加。
根据一个实施例,控制器102可以被配置为:随着SSD从生命早期到生命中期的转变,当PE数达到第一预定的阈值PETH1时,增加ECC部分的尺寸并且相应地减小E页中的一个或多个中的数据部分的尺寸。也根据一个实施例,控制器102可以被配置为:随着SSD从生命中期到生命后期/结束的转变,当PE数达到第二预定的阈值PETH2时,进一步增加ECC部分的尺寸,并且再次相应地减小E页中的一个或多个中的数据部分的尺寸。第二预定阈值PETH2可能高于第一预定PE阈值PETH1。应当理解的是,本文所描述和示出的生命阶段(早期、中期和后期/结束)仅是示例性阶段,并且可以定义具有相应减少或增加数量的预定PE阈值的更小或更大粒度(例如,数量)的生命阶段。替代地,支配物理页的ECC部分和数据部分的调节的阈值可以完全独立于(或者不仅仅依赖于)PE数。因此,实施例不限于基于PE数调节物理页的数据和ECC部分的相对尺寸。实际上,其他因素可以驱动或者贡献这样的调节,诸如预留空间量、空闲空间、操作模式、操作温度、数据的关键程度、安全裕度等。
根据一个实施例,可以由控制器102通过选择多个ECC配置项中的一个来进行ECC部分的强度(以及尺寸)的选择。根据一个实施例,这样的选择可以在运行时进行。该选择可以确定对块、F页或E页中的一个或多个应用多个ECC配置项中的哪个。ECC配置项中的至少一些可以定义不同的ECC强度,并且因此,对应于占据更多或更少字节数的纠错码,而其能够纠正存储在物理页中的更多或更少量的数据(例如,位数、符号数)。给定固定的物理页尺寸,ECC配置项可以指示多少字节分配给在数据部分114中的数据以及多少字节分配给在ECC部分116中的ECC。每个配置项可以与不同的数字相关联。例如,可以定义16个ECC配置项,因此可以使用4位对16个ECC配置项编址。ECC配置项可以被存储在控制器102内,或者可以由控制器102访问,并且可以基于要被编程的(多个)E页、(多个)F页或(多个)块的条件来选择ECC配置项。
根据一个实施例,控制器102还可以被配置为在生成块109时确定:要跨越块109中的F页内的E页应用多个ECC配置项中的哪个。这反过来暗示控制器102将多个ECC配置项中的不同配置项应用到多个块109、F页208和/或E页210中的不同者的能力。例如,控制器102可以被配置为选择多个ECC配置项中的第一个配置项生成第一块109中的F页208,并且选择多个ECC配置项中的第二个配置项生成第二块109的F页208。在生命早期和/或生命中期,控制器可以被配置为:当例如块109的PE数低于预定的或动态选择的或计算的阈值(例如,PETH1或PETH2)时,通过减小ECC部分116的尺寸并且相应地增加块109的E页210的数据部分114的尺寸来增加SSD的预留空间。
根据一个实施例,控制器102还可以被配置为基于错误率来确定多个ECC配置项中的哪个将应用到块109、F页208或E页210。当特定块109、F页208或E页210内的错误率低时,在下一次编程时,控制器102可以针对特定E页210或驻留于特定块109或F页208中的(多个)E页,选择定义了相对较小ECC部分116和相应较大数据部分114的ECC配置项。例如,错误率可以基于先前发生块109、F页208或E页210内的ECC错误。
返回参考图2,与L页号L页4(L页4)相关联的L页跨越两个F页。此外,继续参考图2,虚线117可以指示块边界,意味着L页4跨越两个不同的块。根据一个实施例,可以使用根据第一ECC配置项的ECC对第一F页内的E页的数据部分进行纠错,并且可以使用根据不同于第一ECC配置项的第二ECC配置项的ECC对第二F页内的E页的数据部分进行纠错。因此,由此得出控制器102还可以被配置为读取跨越块(例如,从第一块到第二块)的诸如图2中的L页4的L页,并且在涉及L页的单个读操作内容纳多个ECC配置项中的两个或更多个。例如,第一F页可能属于已经转变为生命后期或生命结束的块,例如,第二F页所属于的块可能仍被分类为安置在生命结束阶段内,并因此,相比于第二F页所属于的块的E页的ECC部分116,第一F页所属于的块的E页包括尺寸相对较大的ECC部分116。因此,在SSD正在处理随机主机读取时,在页寄存器104中呈现的E页中可能存在多个不同尺寸的ECC部分。
根据一个实施例,任意给定块109可以包括具有第一尺寸的ECC部分的第一E页以及具有不同于第一尺寸的第二尺寸的ECC部分的第二E页。根据一个实施例,可以基于在块内的第二E页的位置选择第二尺寸。在一个实施例中,基于(第一和第二E页驻留于其中的)F页的存储器块内的物理位置来选择不同的ECC部分尺寸。该基于F页位置的ECC配置项选择可能在选择ECC配置项以应用于块内的特定F页时是有用的。例如,块的第一F页(诸如图1A中的F页0)和块的最后F页(诸如图1A中的F页255)在错误发生方面可能是该块中最差的F页。因此,根据一个实施例,针对块的第一和最后F页所选择的ECC配置项可以使得控制器102将具有较强纠错能力的ECC应用到存储在块的第一和最后F页中的物理页(例如,E页)中的数据。然而,这样的受位置影响的ECC配置项选择不限于块的第一和最后F页,而是可以根据需要被广泛应用以最高效地扩展SSD的有用生命期和/或为了任何其他目的。
图5是根据一个实施例的块信息数据结构的框图。在一个实施例中,每个块109可以与例如大约32字节的信息相关联,该大约32字节的信息可以被存储在例如如图5中的500所示的块信息数据结构中。该块信息数据结构500或者类似的块信息数据结构可以由控制器固件保存到闪存,这使得块信息以非易失的方式被存储。如其中所示,块类型字段可以被配置为存储已将哪个ECC配置项应用到该特定块的E页的数据部分。实际上,针对每个块的ECC配置项应当被追踪,这是因为该ECC配置项每次读取都被抽出以使控制器102能够适当地对存储在该块的E页的数据部分中的数据进行解码和纠错。如所示出,块类型字段可以占据例如4位来对可能的16个ECC配置项进行编址。然而,可以提供更多或更少数量的ECC配置项,可以使用更多或更少的位数来对其进行选择。不同的ECC格式自身可以被存储在如502处所示的ECC配置项表中。ECC配置项表502可以由块信息数据结构500的块类型字段所引用。
应当注意的是,如果最强的ECC格式在对存储在给定块的E页中的数据的纠错中都是无效的,则该块可能被切换到仅较低页(假设使用MLC存储器),意味着将每个单元仅存储一个位,而不是每个单元存储两个位。块信息结构500内的块类型字段也可以通过在其中存储例如0xFh值,来指示与其相关联的块是否为彻底的坏块。以这种方式,这样的坏块被标记为其后对数据存储不可用,从而潜在地减少了空闲空间和预留空间。根据一个实施例,ECC配置项可以被定义和选择以使得控制器102在编程期间跳过无效的F页。这将由控制器102所识别,控制器102将不对无效F页编程而将跳至该块的下一个顺序的F页。
如图5所示的块信息数据结构500也可以包括时间戳字段,其可以指示最后写入的日期和时间。块信息数据结构500也可以包括温度字段以存储温度相关的信息,以及PE数字段以追踪该块所经历的编程/擦除周期的数量,例如当选择要使用的ECC配置项时,可以使用该字段,并且可以因此影响所选择的该块的E页中的数据部分114和ECC部分116的尺寸,如先前详细描述的那样。块信息数据结构500的一个或多个块修整(Trim)偏移字段可以由SSD的固件所使用以调节闪存设备的内部设置。块修整偏移字段可以提供其自身的纠错。此外,块的TRIM信息可以被配置为包含与块的健康相关的数据,这使得如果错误变为使用当前ECC所不能纠正的,则可以使用该信息来改变ECC配置项并增加所使用的ECC的强度以为存储在该块的E页中的数据提供纠错。可以提供读取干扰字段以包含该块已被读取的次数。错误数字段可以追踪在块中遇到的错误数。如将在稍后描述的,数据结构500也可以包括一个或多个数据值(例如,(多个)标志)以指示S页内的哪些(哪个)F页被指定为(多个)校验页。
图5提供了用于存储关于块的信息的示例性格式。在其他实施例中,该信息可以在不同的粒度级别被存储。例如,在一些实施例中,每个E页或F页可以具有其自身的配置项指定以及对应的信息。同样,可以以与图5中所描述的示例不同的格式存储信息。
根据一个实施例,称为S日志的结构可以被配置为包含给定S块的映射信息。更准确地,根据一个实施例,S日志包含给定S块内预定范围的E页的映射信息。图6是根据一个实施例的S块的框图。如其中所示,S块602可以包括每管芯一个闪存块(F块)604(也如图1中的109处所示)。因此,可以把S块看作F块的集合,每管芯一个F块,其组合在一起以形成闪存管理系统的单元。根据一个实施例,分配、擦除和GC可以在S块级被管理。如图6所示,每一个F块604可以包括多个闪存页(F页),例如,256或512个F页。根据一个实施例,F页可以是用于给定的非易失性存储器设备的编程的最小单元的尺寸。图7示出了根据一个实施例的超页(S页)。如其中所示,S页702可以包括S块中的每F块中一个F页,意味着S页跨越整个S块。
图8是根据一个实施例的示出了校验页的生成与存储的S页的图。示出了包括在多个管芯中的每个管芯中相应编号的F页的S页702。在图8的示例中,S页702包括128个管芯的F页3。应当理解的是,S页不限于图8中示出的示例性128个管芯。闪存控制器102可以被配置为生成可变尺寸的ECC部分并且将数据存储在F页内对应的可变尺寸的数据部分中,如关于图1B和1C所示出和描述的。这样的ECC部分因此可以以作为E页内的纠错码为特征;也就是,只应用到F页内的给定E页内的预定数据部分的纠错码。这样的E页内的纠错码也可以以“内”纠错码为特征。如上所述,一个F页内的E页的可变尺寸的数据部分在聚合中集合地定义F页的数据部分。
根据一个实施例,控制器102还可以被配置为生成跨越S页的F页的一个或多个纠错码,并且将所生成的纠错码存储在S页的具有最大F页数据部分的该F页或那些F页内。用于存储所生成的纠错码的一个或多个F页被称为“校验页”。这样的跨F页的纠错码也可以以“外”纠错码为特征,并且以与“内”纠错码正交的方式操作以提供另外层的数据保护。即,所生成的(多个)跨F页纠错码可以被存储在该F页或多个F页中(其具有最大F页数据部分(多个部分)),如图1B和1C中所示出的这样的部分。图8示出了这样的跨F页纠错码802的生成和存储的方面。根据一个实施例,控制器102可以被配置为在S页中的F页之间指定具有最大尺寸的F页数据部分的一个或多个F页作为(多个)校验页;即,作为指定为存储跨F页纠错码的(多个)F页。根据一个实施例,跨F页纠错码可以包括前向纠错(FEC)码,例如,Reed-Solomon(“R-S”)码。
根据一个实施例,控制器102还可以被配置为在生成每个E页之后在运行时生成并存储E页纠错码。相反,控制器102可以被配置为在数据(例如,用户数据)已经存储在S页内的F页中之后完成跨F页纠错码(例如,R-S或其他FEC码)的生成和存储。根据一个实施例以及如图8所提出的,随着在S页内的数据(例如,用户数据)被存储,校验信息生成器(例如,编程的控制器或处理器)可以在运行时以跨F页(即,同时跨过若干F页)的方式遍历S页,并且可以根据S页内的F页的成分E页的数据部分来生成一个或多个FEC(例如,R-S)码802。为了使该码能够从所有F页中生成,当生成如812处所示的S页时,可以跳过具有最大(多个)数据部分的(多个)F页,以便使控制器102能够在其后将FEC码存储在具有最大(多个)数据部分的这样的(多个)F页中-图8中的附图标记806和808处所示。如810处所示,如果FEC码802存储在例如管芯127的F页3中,则FEC码将不从管芯1中的F页3生成,在附图标记804处示出。只有通过首先编码S页中的所有数据并且其后将校验(例如,奇偶)符号写出在具有最大F页数据部分的指定的(多个)F页(指定的(多个)校验页)中,才能保证跨F页纠错码覆盖S页内的全部可变尺寸的F页数据部分。由于(多个)校验页包括所生成的跨F页纠错码而非用户数据,所以它们可以在读操作期间被跳过(不被读取)。因此,校验页只需要在尝试从F页中的错误中恢复时被访问。如之前一样,存储在E页的ECC部分内的ECC码可以用于从给定E页的数据部分内的错误中恢复。用于纠正数据错误的存储在E页的ECC部分内的ECC码的失效识别经受该错误的S页的多个F页内的F页。在从F页错误中恢复的尝试中,跨F页纠错码可以被应用是与因此被识别的(多个)F页相对的。应当注意的是,当生成FEC码802时,没有被指定为校验页的F页中的E页可以被填充(例如,用零)以使得这些E页的数据字段尺寸与校验页中的E页的数据字段尺寸相匹配。相反地,当纠正F页时,在FEC码802生成期间所使用的填充值可以在纠正期间被使用。此外,S页中的F页中的一个或多个可能先前已经被标记为“坏”,或者对数据存储不可用。应当理解,这样的坏F页可以在FEC码802的生成期间被跳过,并且可以不参与任何随后的使用该FEC码802的纠正。
根据一个实施例,控制器102还可以被配置为在块信息数据结构(诸如图5中的500)中设置标志以用于将特定F页或S页内的F页识别和指定为(多个)校验页。因此,控制器102可以被配置为查阅块信息数据结构500以确定S页中的F页中的哪个或哪些被指定为(多个)校验页。因此,根据一个实施例,于是(多个)校验页的位置在S页中不固定。例如,如在第一S页和第二S页之间,在第一S页中被指定为(多个)校验页的(多个)F页可以在第一S页内占据与在第二S页中被指定为(多个)校验页的(多个)F页相对不同的位置。
应当注意的是,S页中的一个或多个另外的F页可以被指定为校验页并且被配置为存储跨F页纠错码。生成和存储另外的跨F页纠错码的决定可以取决于一个或多个因素。例如,可以基于存储器阵列的配置、存储器阵列的性能(例如,可纠正或不可纠正和/或两者的E页ECC错误的记录数)和/或存储器阵列的预定部分的使用配置项(use-profile)来生成和存储另外的跨F页纠错码。实际上,配置、性能和使用配置项的某种组合可以比其他情况推荐指定更大数量的校验页。例如,可以向存储关键信息的存储器阵列的某些区域(比存储器阵列的其他区域)提供每S页相对较大数量的校验页。例如,可以向存储文件系统信息(诸如S日志)的S页(比不存储这样的文件系统信息的S页)提供相对较大数量的校验页。因此,根据一个实施例,不同的S页可以包括不同数量的校验页,并且这样的校验页的位置跨S页是不固定的。
根据一个实施例,控制器102可以被配置为周期性地确定(例如,在每个编程-擦除(PE)周期上):在每个E页的可变尺寸ECC部分内要生成的E页纠错码的强度,被生成的在S页内要生成的跨F页纠错码的强度,以及被生成的S页内的哪个(或哪些)F页应当被指定为校验页。因此,E页ECC、跨F页纠错码二者的强度以及校验页的数量可以动态地被确定以及例如跨S页改变。
图9是示出了根据一个实施例的块失效率与数据存储设备的生命期之间关系、以及可以变化校验页的数量以扩展数据存储设备的有用生命期的方式的图。三个图902、904和906在X轴上时相关的,由于它们绘制了三个参数相对于相同的PE数的进展。图902绘制了失效率比PE数,图904绘制了所使用的ECC强度比PE数,而图906绘制了所使用的校验页数量比PE数。
如关于图4所描述的,尽管存储器阵列可以相对健康,但在生命早期存储器阵列可能以相对高的F页失效发生率为特征,其错误是使用F页中的E页内ECC不能纠正的。在之后的生命中,E页内的ECC的强度可能逐渐增加。为了处理上述在存储器阵列的生命早期中页错误的相对高的发生率,可以在早期生命中利用与之后的阵列生命周期中相比相对较大数量的校验页(如912所示)。例如,可以使用每S页四个校验页(或更多)来纠正这样的(否则使用E页的ECC不能纠正的)生命早期的F页错误。在之后的生命中(例如,在生命中期),由于E页的ECC强度增加(如918所示)而F页错误变得较不频繁,所以可以向S页提供相对较少的校验页并且它们的数量可以保持相对稳定(如914所示)。在生命的后期或生命的结束,E页错误上升而F页错误也变得相对于生命中期更频繁,则可以增加E页的ECC的强度(如920所示)并且可以根据需要增加每S页的校验页的数量(如916所示)。根据一个实施例,控制器102可以记录E页ECC错误率并且该所记录的比率可以用作对S页提供的校验页数量的确定中的一个示例性因素。在其他实施例中,不可纠正的ECC错误的数量被用作该确定中的至少一个因素。可以应用其他E页ECC和/或校验页配置项,如该领域那些技术人员可以识别的那样。例如,在不同生命阶段所使用的ECC和所使用的校验页的量之间的关系不需要如图9中所示的那样关联。在一些实施例中,每个可以被独立地调节而不考虑另一个的趋势。
图10是根据一个实施例的在数据存储设备中生成和存储校验页的方法的流程图。如所示出,框B101要求定义如上所示和所描述的那样配置S页;也就是,包括来自多个管芯中的一个或多个管芯的多个F页。如B102处所示以及如在图1C处所示,具有可变尺寸ECC部分的E页纠错码可以被存储在所定义的S页的F页的E页中的一个或多个内,以用于纠正E页的相应的可变尺寸数据部分内的错误。框B103要求在所定义的S页中的F页之中指定具有最大尺寸F页数据部分的一个或多个F页作为(多个)校验页,如关于图8所示出和描述的那样。如B104处所示,跨F页纠错码然后可以被存储在被指定为校验页的每个(多个)F页内。这样的跨F页纠错码可以包括例如R-S码或其他FEC码。
尽管已经描述了本公开的特定实施例,但这些实施例只是以示例的方式被呈现,而不意在限制本公开的范围。实际上,可以以各种其他形式来体现本文所描述的新颖的方法、设备和系统。另外,可以对本文所描述的方法和系统的形式做出各种省略、替换和改变,而不偏离本公开的精神。所附的权利要求及其等价物意在涵盖这样的形式或修改,其将落入本公开的范围和精神内。例如,本领域中的技术人员将意识到,在各种实施例中,实际的结构(例如,SSD块的结构或物理或逻辑页的结构)可以与附图中所示的那些不同。取决于实施例,可以移除在以上示例中所描述的特定步骤,可以添加其他步骤。同样,上文所公开的特定实施例的特征和属性可以以不同的方式组合以形成另外的实施例,其全部落入本公开的范围内。尽管本公开提供了特定优选的实施例和应用,但对本领域的普通技术人员而言显而易见的是,包括没有提供本文所阐述的全部特征和优点的实施例在内的其他实施例,也在本公开的范围内。因此,本公开的范围意在仅通过参考所附的权利要求来限定。

Claims (35)

1.一种固态驱动器控制器,包括:
处理器,所述处理器被配置为耦合到闪存设备的阵列,所述阵列包括多个管芯,每一个管芯包括多个闪存块(F块),每一个F块包括多个闪存页(F页),所述F页中的至少一些包括至少一个纠错码页(E页),并且所述E页中的至少一些包括可变尺寸的纠错码(ECC)部分和相应的可变尺寸的数据部分,在一个F页内的所述可变尺寸的数据部分作为总体定义了F页数据部分,
其中,所述处理器被配置为:
定义S页,所述S页包括来自所述多个管芯中的一个或多个的多个F页;
在所述S页内,
在所述F页内的每一个E页的所述可变尺寸的ECC部分内存储E页纠错码,以用于纠正在所述相应的可变尺寸的数据部分内的错误;
将在所述S页中的所述F页之中具有最大尺寸F页数据部分的至少一个F页指定为校验页;以及
在所述至少一个校验页内存储跨F页纠错码。
2.根据权利要求1所述的固态驱动器控制器,其中,所述跨F页纠错码包括前向纠错(FEC)码。
3.根据权利要求2所述的固态驱动器控制器,其中,所述FEC码包括Reed-Solomon码。
4.根据权利要求1所述的固态驱动器控制器,其中,所述E页纠错码包括低密度奇偶校验(LDPC)纠错码。
5.根据权利要求1所述的固态驱动器控制器,其中,所述处理器被配置为在生成所述多个E页中的一个时,在运行时生成和存储所述E页纠错码。
6.根据权利要求1所述的固态驱动器控制器,其中,所述处理器还被配置为随着数据被写入到所述S页,生成针对所述S页的所述跨F页纠错码。
7.根据权利要求1所述的固态驱动器控制器,其中,所述处理器还被配置为从所述S页读取数据并且跳过已被指定为校验页的所述S页内的所述至少一个F页。
8.根据权利要求1所述的固态驱动器控制器,其中,所述处理器还被配置为:
在块信息数据结构中设置标志以指定S页内的特定F页为校验页;以及
查阅所述块信息数据结构以确定S页的所述F页中的哪些已被指定为校验页。
9.根据权利要求1所述的固态驱动器控制器,其中,所述处理器还被配置为取决于以下中的至少一项,将所述S页中的另外的F页指定为校验页:(1)所述阵列的配置,(2)所述阵列的性能,以及(3)所述阵列的预定部分的使用配置项。
10.根据权利要求1所述的固态驱动器控制器,其中,所述处理器还被配置为将另外的F页指定为S页中的校验页,用于存储预定类型的信息。
11.根据权利要求10所述的固态驱动器控制器,其中,所述预定类型的信息包括元数据。
12.根据权利要求10所述的固态驱动器控制器,其中,所述预定类型的信息包括主机指示的数据。
13.根据权利要求1所述的固态驱动器控制器,其中,在第一S页和第二S页之间,与被指定为所述第二S页内的校验页的所述至少一个F页所占据的位置相比,被指定为所述第一S页中的校验页的所述至少一个F页占据所述第一S页内的相对不同的位置。
14.根据权利要求1所述的固态驱动器控制器,其中,所述S页是第一S页并且所述控制器还被配置为定义第二S页,所述第二S页具有与所述第一S页相比较大数量的被指定为校验页的F页。
15.根据权利要求1所述的固态驱动器控制器,其中,所述处理器还被配置为,当写入F块时,确定以下中的至少一项:
(1)要在每一个E页中的所述可变尺寸的ECC部分内生成的E页纠错码的强度;
(2)要生成的跨F页纠错码的强度;以及
(3)S页内的哪些F页被指定为校验页。
16.根据权利要求1所述的固态驱动器控制器,其中,所述处理器还被配置为当所述E页纠错码没能纠正所遇到的错误时,应用所述跨F页纠错码。
17.一种数据存储设备,包括:
权利要求1所述的控制器,以及
所述闪存设备的阵列。
18.一种控制数据存储设备的方法,所述数据存储设备包括处理器,所述处理器被配置为耦合到闪存设备的阵列,所述阵列包括多个管芯,每一个管芯包括多个闪存块(F块),每一个F块包括多个闪存页(F页),所述F页中的至少一些包括至少一个纠错码页(E页),并且所述E页中的至少一些包括可变尺寸的纠错码(ECC)部分和相应的可变尺寸的数据部分,在一个F页内的所述可变尺寸的数据部分作为总体定义了F页数据部分,所述方法包括:
定义S页,所述S页包括来自所述多个管芯中的一个或多个的多个F页;
在所述S页内,
在所述F页内的每一个E页的所述可变尺寸的ECC部分内存储E页纠错码,以用于纠正在所述相应的可变尺寸的数据部分内的错误;
将在所述S页中的所述F页之中具有最大尺寸F页数据部分的至少一个F页指定为校验页;以及
在所述至少一个校验页内存储跨F页纠错码。
19.根据权利要求18所述的方法,其中,所述跨F页纠错码包括前向纠错(FEC)码。
20.根据权利要求19所述的方法,其中,所述FEC码包括Reed-Solomon码。
21.根据权利要求18所述的方法,其中,所述E页纠错码包括低密度奇偶校验(LDPC)纠错码。
22.根据权利要求18所述的方法,其中,存储所述E页纠错码包括在生成所述多个E页中的一个时,在运行时生成和存储所述E页纠错码。
23.根据权利要求18所述的方法,其中,存储所述跨F页纠错码包括随着数据被写入到所述S页,生成和存储针对所述S页的所述跨F页纠错码。
24.根据权利要求18所述的方法,还包括从所述S页读取数据并且跳过已被指定为校验页的所述S页内的所述至少一个F页。
25.根据权利要求18所述的方法,还包括:
在块信息数据结构中设置标志以指定S页内的特定F页为校验页;以及
查阅所述块信息数据结构以确定S页的所述F页中的哪些已被指定为校验页。
26.根据权利要求18所述的方法,还包括取决于以下中的至少一项,将所述S页中的另外的F页指定为校验页:(1)所述阵列的配置,(2)所述阵列的性能,以及(3)所述阵列的预定部分的使用配置项。
27.根据权利要求18所述的方法,还包括将另外的F页指定为S页中的校验页,用于存储预定类型的信息。
28.根据权利要求27所述的方法,其中,所述预定类型的信息包括元数据和主机指示数据中的一个。
29.根据权利要求18所述的方法,其中,在第一S页和第二S页之间,与被指定为所述第二S页内的校验页的所述至少一个F页所占据的位置相比,被指定为所述第一S页中的校验页的所述至少一个F页占据所述第一S页内的相对不同的位置。
30.根据权利要求18所述的方法,其中,所述S页是第一S页并且其中所述方法还包括定义第二S页,所述第二S页具有与所述第一S页相比较大数量的被指定为校验页的F页。
31.根据权利要求18所述的方法,其中,当写入F块时,所述方法还包括确定以下中的至少一项:
(1)要在每一个E页中的所述可变尺寸的ECC部分内生成的E页纠错码的强度;
(2)要生成的跨F页纠错码的强度;以及
(3)S页内的哪些F页被指定为校验页。
32.根据权利要求18所述的方法,还包括当所述E页纠错码没能纠正所遇到的错误时,应用所述跨F页纠错码。
33.一种用于控制数据存储设备的方法,所述数据存储设备包括闪存控制器和耦合到所述闪存控制器的闪存设备的阵列,所述阵列包括多个S页,每一个所述S页包括多个F页,所述方法包括:
在所述多个F页的每一个中存储可变量的数据和可变量的纠错码;
跨越S页的每一个F页生成纠错码;以及
将所生成的纠错码存储在具有最大数据量的至少一个F页内。
34.一种固态驱动器控制器,包括:
处理器,所述处理器被配置为耦合到包括多个S页的闪存设备的阵列,每一个所述S页包括多个F页,所述多个F页中的每一个被配置为存储可变量的数据和可变量的纠错码;
其中,所述处理器被配置为跨越S页的每一个F页生成纠错码以及将所生成的纠错码存储在包括最大数据量的至少一个F页内。
35.一种数据存储设备,包括:
权利要求34所述的控制器,以及
所述闪存设备的阵列。
CN201380072071.6A 2012-12-03 2013-11-05 具有运行时变量raid保护方案的方法、固态驱动器控制器以及数据存储设备 Active CN105009088B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261732830P 2012-12-03 2012-12-03
US61/732,830 2012-12-03
US13/756,328 2013-01-31
US13/756,328 US9059736B2 (en) 2012-12-03 2013-01-31 Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme
PCT/US2013/068578 WO2014088747A1 (en) 2012-12-03 2013-11-05 Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme

Publications (2)

Publication Number Publication Date
CN105009088A true CN105009088A (zh) 2015-10-28
CN105009088B CN105009088B (zh) 2017-08-11

Family

ID=50826752

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380072071.6A Active CN105009088B (zh) 2012-12-03 2013-11-05 具有运行时变量raid保护方案的方法、固态驱动器控制器以及数据存储设备

Country Status (8)

Country Link
US (1) US9059736B2 (zh)
EP (1) EP2926256B1 (zh)
JP (1) JP6077673B2 (zh)
KR (1) KR101872573B1 (zh)
CN (1) CN105009088B (zh)
AU (1) AU2013356584B2 (zh)
HK (1) HK1216195A1 (zh)
WO (2) WO2014088684A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108829358A (zh) * 2018-06-29 2018-11-16 郑州云海信息技术有限公司 固态硬盘的坏块管理方法以及固态硬盘
CN109407972A (zh) * 2018-09-17 2019-03-01 至誉科技(武汉)有限公司 利用温差均衡方法进行数据纠错的存储装置
WO2020107301A1 (zh) * 2018-11-29 2020-06-04 华为技术有限公司 一种编码方法、译码方法以及存储控制器
CN112256464A (zh) * 2020-10-20 2021-01-22 湖南国科微电子股份有限公司 硬盘数据纠错方法、装置、电子设备及存储介质

Families Citing this family (121)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9176859B2 (en) 2009-01-07 2015-11-03 Siliconsystems, Inc. Systems and methods for improving the performance of non-volatile memory operations
US10079048B2 (en) 2009-03-24 2018-09-18 Western Digital Technologies, Inc. Adjusting access of non-volatile semiconductor memory based on access time
US9753847B2 (en) 2009-10-27 2017-09-05 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
US8782327B1 (en) 2010-05-11 2014-07-15 Western Digital Technologies, Inc. System and method for managing execution of internal commands and host commands in a solid-state memory
US9026716B2 (en) 2010-05-12 2015-05-05 Western Digital Technologies, Inc. System and method for managing garbage collection in solid-state memory
US8959284B1 (en) 2010-06-28 2015-02-17 Western Digital Technologies, Inc. Disk drive steering write data to write cache based on workload
US9058280B1 (en) 2010-08-13 2015-06-16 Western Digital Technologies, Inc. Hybrid drive migrating data from disk to non-volatile semiconductor memory based on accumulated access time
US8769190B1 (en) 2010-09-15 2014-07-01 Western Digital Technologies, Inc. System and method for reducing contentions in solid-state memory access
US8788779B1 (en) 2010-09-17 2014-07-22 Western Digital Technologies, Inc. Non-volatile storage subsystem with energy-based performance throttling
US9021192B1 (en) 2010-09-21 2015-04-28 Western Digital Technologies, Inc. System and method for enhancing processing of memory access requests
US9164886B1 (en) 2010-09-21 2015-10-20 Western Digital Technologies, Inc. System and method for multistage processing in a memory storage subsystem
US9069475B1 (en) 2010-10-26 2015-06-30 Western Digital Technologies, Inc. Hybrid drive selectively spinning up disk when powered on
US8700950B1 (en) 2011-02-11 2014-04-15 Western Digital Technologies, Inc. System and method for data error recovery in a solid state subsystem
US8700951B1 (en) 2011-03-09 2014-04-15 Western Digital Technologies, Inc. System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata
US9195530B1 (en) 2011-09-06 2015-11-24 Western Digital Technologies, Inc. Systems and methods for improved data management in data storage systems
US8713357B1 (en) 2011-09-06 2014-04-29 Western Digital Technologies, Inc. Systems and methods for detailed error reporting in data storage systems
US8700834B2 (en) 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
US8707104B1 (en) 2011-09-06 2014-04-22 Western Digital Technologies, Inc. Systems and methods for error injection in data storage systems
US9268701B1 (en) 2011-11-21 2016-02-23 Western Digital Technologies, Inc. Caching of data in data storage systems by managing the size of read and write cache based on a measurement of cache reliability
US8959416B1 (en) 2011-12-16 2015-02-17 Western Digital Technologies, Inc. Memory defect management using signature identification
US9348741B1 (en) 2011-12-19 2016-05-24 Western Digital Technologies, Inc. Systems and methods for handling write data access requests in data storage devices
US9053008B1 (en) 2012-03-26 2015-06-09 Western Digital Technologies, Inc. Systems and methods for providing inline parameter service in data storage devices
US9977612B1 (en) 2012-05-11 2018-05-22 Western Digital Technologies, Inc. System data management using garbage collection and logs
US9170932B1 (en) 2012-05-22 2015-10-27 Western Digital Technologies, Inc. System data storage mechanism providing coherency and segmented data loading
US8954653B1 (en) 2012-06-26 2015-02-10 Western Digital Technologies, Inc. Mechanisms for efficient management of system data in data storage systems
US8924832B1 (en) 2012-06-26 2014-12-30 Western Digital Technologies, Inc. Efficient error handling mechanisms in data storage systems
US8966343B2 (en) 2012-08-21 2015-02-24 Western Digital Technologies, Inc. Solid-state drive retention monitor using reference blocks
US9489296B1 (en) 2012-10-17 2016-11-08 Western Digital Technologies, Inc. Methods, devices and systems for hardware-based garbage collection in solid state drives
US8972826B2 (en) 2012-10-24 2015-03-03 Western Digital Technologies, Inc. Adaptive error correction codes for data storage systems
US9177638B2 (en) 2012-11-13 2015-11-03 Western Digital Technologies, Inc. Methods and devices for avoiding lower page corruption in data storage devices
US8954694B2 (en) 2012-11-15 2015-02-10 Western Digital Technologies, Inc. Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive
US9021339B2 (en) 2012-11-29 2015-04-28 Western Digital Technologies, Inc. Data reliability schemes for data storage systems
US9059736B2 (en) 2012-12-03 2015-06-16 Western Digital Technologies, Inc. Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme
US9032271B2 (en) 2012-12-07 2015-05-12 Western Digital Technologies, Inc. System and method for lower page data recovery in a solid state drive
US9214963B1 (en) 2012-12-21 2015-12-15 Western Digital Technologies, Inc. Method and system for monitoring data channel to enable use of dynamically adjustable LDPC coding parameters in a data storage system
US8954655B2 (en) 2013-01-14 2015-02-10 Western Digital Technologies, Inc. Systems and methods of configuring a mode of operation in a solid-state memory
US8972655B2 (en) 2013-01-21 2015-03-03 Western Digital Technolgies, Inc. Initialization of a storage device
US9274966B1 (en) 2013-02-20 2016-03-01 Western Digital Technologies, Inc. Dynamically throttling host commands to disk drives
US9454474B2 (en) 2013-03-05 2016-09-27 Western Digital Technologies, Inc. Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive
US8924824B1 (en) 2013-03-12 2014-12-30 Western Digital Technologies, Inc. Soft-decision input generation for data storage systems
US8990668B2 (en) 2013-03-14 2015-03-24 Western Digital Technologies, Inc. Decoding data stored in solid-state memory
US9448738B2 (en) 2013-03-15 2016-09-20 Western Digital Technologies, Inc. Compression and formatting of data for data storage systems
US9218279B2 (en) 2013-03-15 2015-12-22 Western Digital Technologies, Inc. Atomic write command support in a solid state drive
US9335950B2 (en) 2013-03-15 2016-05-10 Western Digital Technologies, Inc. Multiple stream compression and formatting of data for data storage systems
US9338927B2 (en) 2013-05-02 2016-05-10 Western Digital Technologies, Inc. Thermal interface material pad and method of forming the same
US9195293B1 (en) 2013-05-03 2015-11-24 Western Digital Technologies, Inc. User controlled data storage device power and performance settings
US9081700B2 (en) 2013-05-16 2015-07-14 Western Digital Technologies, Inc. High performance read-modify-write system providing line-rate merging of dataframe segments in hardware
US9632926B1 (en) 2013-05-16 2017-04-25 Western Digital Technologies, Inc. Memory unit assignment and selection for internal memory operations in data storage systems
US9170938B1 (en) 2013-05-17 2015-10-27 Western Digital Technologies, Inc. Method and system for atomically writing scattered information in a solid state storage device
US9280200B1 (en) 2013-05-20 2016-03-08 Western Digital Technologies, Inc. Automatic peak current throttle of tiered storage elements
US9740248B2 (en) 2013-06-07 2017-08-22 Western Digital Technologies, Inc. Component placement within a solid state drive
US9274978B2 (en) 2013-06-10 2016-03-01 Western Digital Technologies, Inc. Migration of encrypted data for data storage systems
US9436630B2 (en) 2013-06-11 2016-09-06 Western Digital Technologies, Inc. Using dual phys to support multiple PCIe link widths
US9830257B1 (en) 2013-06-12 2017-11-28 Western Digital Technologies, Inc. Fast saving of data during power interruption in data storage systems
US9665501B1 (en) 2013-06-18 2017-05-30 Western Digital Technologies, Inc. Self-encrypting data storage device supporting object-level encryption
US9304560B2 (en) 2013-06-19 2016-04-05 Western Digital Technologies, Inc. Backup power for reducing host current transients
US9208101B2 (en) 2013-06-26 2015-12-08 Western Digital Technologies, Inc. Virtual NAND capacity extension in a hybrid drive
US9583153B1 (en) 2013-06-28 2017-02-28 Western Digital Technologies, Inc. Memory card placement within a solid state drive
US9042197B2 (en) 2013-07-23 2015-05-26 Western Digital Technologies, Inc. Power fail protection and recovery using low power states in a data storage device/system
US9442668B1 (en) 2013-08-29 2016-09-13 Western Digital Technologies, Inc. Adaptive power management control with performance feedback
US9263136B1 (en) 2013-09-04 2016-02-16 Western Digital Technologies, Inc. Data retention flags in solid-state drives
US9330143B2 (en) 2013-10-24 2016-05-03 Western Digital Technologies, Inc. Data storage device supporting accelerated database operations
US9007841B1 (en) 2013-10-24 2015-04-14 Western Digital Technologies, Inc. Programming scheme for improved voltage distribution in solid-state memory
US10444998B1 (en) 2013-10-24 2019-10-15 Western Digital Technologies, Inc. Data storage device providing data maintenance services
US9323467B2 (en) 2013-10-29 2016-04-26 Western Digital Technologies, Inc. Data storage device startup
US9286176B1 (en) 2013-11-08 2016-03-15 Western Digital Technologies, Inc. Selective skipping of blocks in an SSD
US9270296B1 (en) 2013-11-13 2016-02-23 Western Digital Technologies, Inc. Method and system for soft decoding through single read
US9529710B1 (en) 2013-12-06 2016-12-27 Western Digital Technologies, Inc. Interleaved channels in a solid-state drive
US10140067B1 (en) 2013-12-19 2018-11-27 Western Digital Technologies, Inc. Data management for data storage device with multiple types of non-volatile memory media
CN103713857B (zh) * 2013-12-24 2017-06-27 华为技术有限公司 存储数据的方法及存储装置
US9036283B1 (en) 2014-01-22 2015-05-19 Western Digital Technologies, Inc. Data storage device with selective write to a first storage media or a second storage media
US9337864B1 (en) 2014-01-29 2016-05-10 Western Digital Technologies, Inc. Non-binary LDPC decoder using binary subgroup processing
US9250994B1 (en) 2014-02-05 2016-02-02 Western Digital Technologies, Inc. Non-binary low-density parity check (LDPC) decoding using trellis maximization
US9384088B1 (en) 2014-02-24 2016-07-05 Western Digital Technologies, Inc. Double writing map table entries in a data storage system to guard against silent corruption
US9354955B1 (en) 2014-03-19 2016-05-31 Western Digital Technologies, Inc. Partial garbage collection for fast error handling and optimized garbage collection for the invisible band
US9348520B2 (en) 2014-03-24 2016-05-24 Western Digital Technologies, Inc. Lifetime extension of non-volatile semiconductor memory for data storage device
US9268487B2 (en) 2014-03-24 2016-02-23 Western Digital Technologies, Inc. Method and apparatus for restricting writes to solid state memory when an end-of life condition is reached
US9448742B2 (en) 2014-03-27 2016-09-20 Western Digital Technologies, Inc. Communication between a host and a secondary storage device
US9419655B2 (en) * 2014-04-04 2016-08-16 Seagate Technology Llc Error correction code (ECC) selection using probability density functions of error correction capability in storage controllers with multiple error correction codes
US9564212B2 (en) 2014-05-06 2017-02-07 Western Digital Technologies, Inc. Solid-state memory corruption mitigation
US9690696B1 (en) 2014-05-14 2017-06-27 Western Digital Technologies, Inc. Lifetime extension of memory for data storage system
US9472222B2 (en) 2014-05-16 2016-10-18 Western Digital Technologies, Inc. Vibration mitigation for a data storage device
US9275741B1 (en) 2014-09-10 2016-03-01 Western Digital Technologies, Inc. Temperature compensation management in solid-state memory
US9418699B1 (en) 2014-10-09 2016-08-16 Western Digital Technologies, Inc. Management of sequentially written data
US9405356B1 (en) 2014-10-21 2016-08-02 Western Digital Technologies, Inc. Temperature compensation in data storage device
US9823859B2 (en) 2014-11-06 2017-11-21 Western Digital Technologies, Inc. Mechanical shock mitigation for data storage
US9857995B1 (en) 2015-03-09 2018-01-02 Western Digital Technologies, Inc. Data storage device and method providing non-volatile memory buffer for real-time primary non-volatile memory protection
US9785563B1 (en) 2015-08-13 2017-10-10 Western Digital Technologies, Inc. Read command processing for data storage system based on previous writes
US9668337B2 (en) 2015-09-08 2017-05-30 Western Digital Technologies, Inc. Temperature management in data storage devices
JP6158265B2 (ja) 2015-09-16 2017-07-05 株式会社東芝 キャッシュメモリシステム
US9727261B2 (en) 2015-09-24 2017-08-08 Western Digital Technologies, Inc. Weighted programming patterns in solid-state data storage systems
US10013174B2 (en) 2015-09-30 2018-07-03 Western Digital Technologies, Inc. Mapping system selection for data storage device
US9836232B1 (en) 2015-09-30 2017-12-05 Western Digital Technologies, Inc. Data storage device and method for using secondary non-volatile memory for temporary metadata storage
US9620226B1 (en) 2015-10-30 2017-04-11 Western Digital Technologies, Inc. Data retention charge loss and read disturb compensation in solid-state data storage systems
US10126981B1 (en) 2015-12-14 2018-11-13 Western Digital Technologies, Inc. Tiered storage using storage class memory
US9529663B1 (en) 2015-12-20 2016-12-27 Apple Inc. Detection and localization of failures in 3D NAND flash memory
US9910606B2 (en) * 2016-03-23 2018-03-06 Seagate Technology Llc End of life extension of solid state memory
US20170364275A1 (en) * 2016-06-20 2017-12-21 Intel Corporation Technologies for managing end of life behavior for storage devices
US10387303B2 (en) 2016-08-16 2019-08-20 Western Digital Technologies, Inc. Non-volatile storage system with compute engine to accelerate big data applications
US10146604B2 (en) * 2016-08-23 2018-12-04 Oracle International Corporation Bad block detection and predictive analytics in NAND flash storage devices
US10459644B2 (en) 2016-10-28 2019-10-29 Western Digital Techologies, Inc. Non-volatile storage system with integrated compute engine and optimized use of local fast memory
CN106527984A (zh) * 2016-11-02 2017-03-22 郑州云海信息技术有限公司 一种用于固态硬盘的存储方法及其系统
US10248515B2 (en) 2017-01-19 2019-04-02 Apple Inc. Identifying a failing group of memory cells in a multi-plane storage operation
US10565123B2 (en) 2017-04-10 2020-02-18 Western Digital Technologies, Inc. Hybrid logical to physical address translation for non-volatile storage devices with integrated compute module
KR20190040607A (ko) * 2017-10-11 2019-04-19 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US20190294346A1 (en) * 2018-03-26 2019-09-26 International Business Machines Corporation Limiting simultaneous failure of multiple storage devices
US10762967B2 (en) 2018-06-28 2020-09-01 Apple Inc. Recovering from failure in programming a nonvolatile memory
US10755787B2 (en) 2018-06-28 2020-08-25 Apple Inc. Efficient post programming verification in a nonvolatile memory
US11061606B2 (en) * 2018-06-29 2021-07-13 Micron Technology, Inc. NAND temperature-aware operations
US10956071B2 (en) 2018-10-01 2021-03-23 Western Digital Technologies, Inc. Container key value store for data storage devices
US10769062B2 (en) 2018-10-01 2020-09-08 Western Digital Technologies, Inc. Fine granularity translation layer for data storage devices
US10740231B2 (en) 2018-11-20 2020-08-11 Western Digital Technologies, Inc. Data access in data storage device including storage class memory
US10976361B2 (en) * 2018-12-20 2021-04-13 Advantest Corporation Automated test equipment (ATE) support framework for solid state device (SSD) odd sector sizes and protection modes
US10936455B2 (en) 2019-02-11 2021-03-02 Apple Inc. Recovery of data failing due to impairment whose severity depends on bit-significance value
US10977125B2 (en) * 2019-06-06 2021-04-13 Western Digital Technologies, Inc. Adaptive usage of irregular code schemas based on specific system level triggers and policies
US10915394B1 (en) 2019-09-22 2021-02-09 Apple Inc. Schemes for protecting data in NVM device using small storage footprint
US11016905B1 (en) 2019-11-13 2021-05-25 Western Digital Technologies, Inc. Storage class memory access
US11249921B2 (en) 2020-05-06 2022-02-15 Western Digital Technologies, Inc. Page modification encoding and caching
US11487450B1 (en) * 2021-05-14 2022-11-01 Western Digital Technologies, Inc. Storage system and method for dynamic allocation of control blocks for improving host write and read
US11550657B1 (en) 2021-09-01 2023-01-10 Apple Inc. Efficient programming schemes in a nonvolatile memory
US11880594B2 (en) 2022-06-14 2024-01-23 Western Digital Technologies, Inc. Proactively biasing parameters of data storage device based on spatial position in storage enclosure

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101097551A (zh) * 2006-08-23 2008-01-02 晶天电子(深圳)有限公司 带有闪存控制器的电子数据闪存卡
US20080195900A1 (en) * 2007-02-12 2008-08-14 Phison Electronics Corp. Flash memory system and method for controlling the same
CN101533677A (zh) * 2008-03-13 2009-09-16 群联电子股份有限公司 存储器的设置方法、控制器、以及非易失性存储器系统
US20090259805A1 (en) * 2008-04-15 2009-10-15 Adtron, Inc. Flash management using logical page size
CN101779194A (zh) * 2007-07-09 2010-07-14 美光科技公司 用于存储器的错误校正
CN101965559A (zh) * 2007-12-27 2011-02-02 普莱恩特技术股份有限公司 包括将处理器与内部存储器连接的交叉切换器的用于闪存的存储控制器
US20110087855A1 (en) * 2009-08-11 2011-04-14 Texas Memory Systems, Inc. Method and Apparatus for Protecting Data Using Variable Size Page Stripes in a FLASH-Based Storage System
US20120079190A1 (en) * 2010-09-28 2012-03-29 John Colgrove Offset protection data in a raid array

Family Cites Families (163)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5499337A (en) 1991-09-27 1996-03-12 Emc Corporation Storage device array architecture with solid-state redundancy unit
US5621660A (en) * 1995-04-18 1997-04-15 Sun Microsystems, Inc. Software-based encoder for a software-implemented end-to-end scalable video delivery system
US6011868A (en) * 1997-04-04 2000-01-04 Hewlett-Packard Company Bitstream quality analyzer
US20080282128A1 (en) 1999-08-04 2008-11-13 Super Talent Electronics, Inc. Method of Error Correction Code on Solid State Disk to Gain Data Security and Higher Performance
US8266367B2 (en) 2003-12-02 2012-09-11 Super Talent Electronics, Inc. Multi-level striping and truncation channel-equalization for flash-memory system
JP3626070B2 (ja) * 2000-04-19 2005-03-02 松下電器産業株式会社 積符号符号化装置および復号化装置
US7072417B1 (en) 2000-06-28 2006-07-04 Marvell International Ltd. LDPC encoder and method thereof
US6934904B2 (en) 2001-04-30 2005-08-23 Sun Microsystems, Inc. Data integrity error handling in a redundant storage array
US6895547B2 (en) 2001-07-11 2005-05-17 International Business Machines Corporation Method and apparatus for low density parity check encoding of data
US7149846B2 (en) 2002-04-17 2006-12-12 Lsi Logic Corporation RAID protected external secondary memory
US7702986B2 (en) 2002-11-18 2010-04-20 Qualcomm Incorporated Rate-compatible LDPC codes
US6856556B1 (en) 2003-04-03 2005-02-15 Siliconsystems, Inc. Storage subsystem with embedded circuit for protecting against anomalies in power signal from host
US20090193184A1 (en) 2003-12-02 2009-07-30 Super Talent Electronics Inc. Hybrid 2-Level Mapping Tables for Hybrid Block- and Page-Mode Flash-Memory System
US7395495B2 (en) 2004-01-12 2008-07-01 Intel Corporation Method and apparatus for decoding forward error correction codes
US7260763B2 (en) 2004-03-11 2007-08-21 Nortel Networks Limited Algebraic low-density parity check code design for variable block sizes and code rates
JP3875693B2 (ja) 2004-03-24 2007-01-31 株式会社東芝 Lpc符号を用いた符号化ビットのマッピング方法及び送信装置
CN1947368B (zh) 2004-04-28 2010-06-16 三星电子株式会社 对具有可变块长度的块低密度奇偶校验码编码/解码的设备和方法
US7346832B2 (en) 2004-07-21 2008-03-18 Qualcomm Incorporated LDPC encoding methods and apparatus
US7395490B2 (en) 2004-07-21 2008-07-01 Qualcomm Incorporated LDPC decoding methods and apparatus
US7203897B2 (en) 2004-08-12 2007-04-10 Motorola, Inc. Method and apparatus for encoding and decoding data
WO2006019217A1 (en) 2004-08-16 2006-02-23 Samsung Electronics Co., Ltd. Apparatus and method for coding/decoding block low density parity check code with variable block length
US8131926B2 (en) 2004-10-20 2012-03-06 Seagate Technology, Llc Generic storage container for allocating multiple data formats
US7502256B2 (en) 2004-11-30 2009-03-10 Siliconsystems, Inc. Systems and methods for reducing unauthorized data recovery from solid-state storage devices
KR100641052B1 (ko) 2004-12-08 2006-11-02 한국전자통신연구원 Ldpc 부호기 및 복호기, 및 ldpc 부호화 방법 및복호화 방법
US7500172B2 (en) 2005-02-26 2009-03-03 Broadcom Corporation AMP (accelerated message passing) decoder adapted for LDPC (low density parity check) codes
US7657816B2 (en) 2005-07-13 2010-02-02 Leanics Corporation Low-complexity hybrid LDPC code encoder
KR100732628B1 (ko) 2005-07-28 2007-06-27 삼성전자주식회사 멀티-비트 데이터 및 싱글-비트 데이터를 저장하는 플래시메모리 장치
US7129862B1 (en) * 2005-07-29 2006-10-31 Texas Instruments Incorporated Decoding bit streams encoded according to variable length codes
KR100809616B1 (ko) 2005-10-19 2008-03-05 삼성전자주식회사 가변 블록 길이를 가지는 블록 저밀도 패리티 검사 부호부호화/복호 장치 및 방법
US20070124648A1 (en) 2005-10-31 2007-05-31 Ajay Dholakia Data protection method
US7797611B2 (en) 2005-11-14 2010-09-14 International Business Machines Corporation Creating an error correction coding scheme and reducing data loss
US7631246B2 (en) 2006-01-09 2009-12-08 Broadcom Corporation LDPC (low density parity check) code size adjustment by shortening and puncturing
US8055979B2 (en) * 2006-01-20 2011-11-08 Marvell World Trade Ltd. Flash memory with coding and signal processing
JP4863749B2 (ja) 2006-03-29 2012-01-25 株式会社日立製作所 フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム
US7653778B2 (en) 2006-05-08 2010-01-26 Siliconsystems, Inc. Systems and methods for measuring the useful life of solid-state storage devices
US7809994B2 (en) 2006-05-17 2010-10-05 Sandisk Corporation Error correction coding for multiple-sector pages in flash memory devices
US7765373B1 (en) 2006-06-27 2010-07-27 Siliconsystems, Inc. System for controlling use of a solid-state storage subsystem
US8108692B1 (en) 2006-06-27 2012-01-31 Siliconsystems, Inc. Solid-state storage subsystem security solution
US7447807B1 (en) 2006-06-30 2008-11-04 Siliconsystems, Inc. Systems and methods for storing data in segments of a storage subsystem
US7509441B1 (en) 2006-06-30 2009-03-24 Siliconsystems, Inc. Systems and methods for segmenting and protecting a storage subsystem
US7739576B2 (en) 2006-08-31 2010-06-15 Micron Technology, Inc. Variable strength ECC
JP2008084116A (ja) 2006-09-28 2008-04-10 Aisin Seiki Co Ltd データ記憶装置及びデータ記憶装置からのデータ読み出し方法
JP4932427B2 (ja) 2006-10-20 2012-05-16 株式会社日立製作所 記憶装置及び記憶方法
US8161227B1 (en) 2006-10-30 2012-04-17 Siliconsystems, Inc. Storage subsystem capable of programming field-programmable devices of a target computer system
CN101622594B (zh) 2006-12-06 2013-03-13 弗森-艾奥公司 使用空数据令牌指令管理来自于请求设备的数据的装置、系统和方法
US8090980B2 (en) 2006-12-08 2012-01-03 Sandforce, Inc. System, method, and computer program product for providing data redundancy in a plurality of storage devices
US8549236B2 (en) 2006-12-15 2013-10-01 Siliconsystems, Inc. Storage subsystem with multiple non-volatile memory arrays to protect against data losses
US7660911B2 (en) 2006-12-20 2010-02-09 Smart Modular Technologies, Inc. Block-based data striping to flash memory
US7913149B2 (en) 2006-12-20 2011-03-22 Lsi Corporation Low complexity LDPC encoding algorithm
US7596643B2 (en) 2007-02-07 2009-09-29 Siliconsystems, Inc. Storage subsystem with configurable buffer
US8418023B2 (en) 2007-05-01 2013-04-09 The Texas A&M University System Low density parity check decoder for irregular LDPC codes
US7685338B2 (en) 2007-05-24 2010-03-23 Siliconsystems, Inc. Solid state storage subsystem for embedded applications
US7685337B2 (en) 2007-05-24 2010-03-23 Siliconsystems, Inc. Solid state storage subsystem for embedded applications
US7685374B2 (en) 2007-07-26 2010-03-23 Siliconsystems, Inc. Multi-interface and multi-bus structured solid-state storage subsystem
US8181089B1 (en) 2007-08-24 2012-05-15 Datadirect Networks, Inc. Method for auto-correction of errors in a solid-state memory system
US8095851B2 (en) 2007-09-06 2012-01-10 Siliconsystems, Inc. Storage subsystem capable of adjusting ECC settings based on monitored conditions
US8261152B2 (en) 2007-09-10 2012-09-04 Samsung Electronics Co., Ltd. Apparatus and method for channel encoding/decoding in communication system using variable-length LDPC codes
US8078918B2 (en) 2008-02-07 2011-12-13 Siliconsystems, Inc. Solid state storage subsystem that maintains and provides access to data reflective of a failure risk
US7962792B2 (en) 2008-02-11 2011-06-14 Siliconsystems, Inc. Interface for enabling a host computer to retrieve device monitor data from a solid state storage subsystem
KR101398212B1 (ko) 2008-03-18 2014-05-26 삼성전자주식회사 메모리 장치 및 인코딩/디코딩 방법
KR101398200B1 (ko) 2008-03-18 2014-05-26 삼성전자주식회사 메모리 장치 및 인코딩/디코딩 방법
US7733712B1 (en) 2008-05-20 2010-06-08 Siliconsystems, Inc. Storage subsystem with embedded circuit for protecting against anomalies in power signal from host
WO2009143375A2 (en) 2008-05-21 2009-11-26 The Regents Of The University Of Calfornia Lower-complexity layered belief propagation deconding ldpc codes
JP2010020648A (ja) * 2008-07-12 2010-01-28 Hitachi Ulsi Systems Co Ltd 記憶装置
US20100017650A1 (en) 2008-07-19 2010-01-21 Nanostar Corporation, U.S.A Non-volatile memory data storage system with reliability management
US20100125695A1 (en) 2008-11-15 2010-05-20 Nanostar Corporation Non-volatile memory storage system
KR101391362B1 (ko) 2008-07-23 2014-05-07 삼성전자주식회사 읽기 전압 레벨이 설정가능한 플래시 메모리 시스템 및읽기 전압 레벨의 설정방법
US8583835B1 (en) 2008-08-06 2013-11-12 Siliconsystems, Inc. Command portal for executing non-standard storage subsystem commands
US8375151B1 (en) 2009-02-12 2013-02-12 Siliconsystems, Inc. Command portal for securely communicating and executing non-standard storage subsystem commands
US20100049914A1 (en) 2008-08-20 2010-02-25 Goodwin Paul M RAID Enhanced solid state drive
US8239734B1 (en) 2008-10-15 2012-08-07 Apple Inc. Efficient data storage in storage device arrays
US8281214B2 (en) 2008-10-17 2012-10-02 Lsi Corporation Programmable quasi-cyclic low-density parity check (QC LDPC) encoder for read channel
US8161345B2 (en) 2008-10-29 2012-04-17 Agere Systems Inc. LDPC decoders using fixed and adjustable permutators
US9356623B2 (en) 2008-11-26 2016-05-31 Avago Technologies General Ip (Singapore) Pte. Ltd. LDPC decoder variable node units having fewer adder stages
KR101059673B1 (ko) 2008-12-26 2011-08-25 서울대학교산학협력단 신뢰도 또는 저장 용량을 동적으로 조절하는 저장 장치 및 그 방법
US9176859B2 (en) 2009-01-07 2015-11-03 Siliconsystems, Inc. Systems and methods for improving the performance of non-volatile memory operations
US8090899B1 (en) 2009-03-04 2012-01-03 Western Digital Technologies, Inc. Solid state drive power safe wear-leveling
KR100929371B1 (ko) 2009-03-18 2009-12-02 한국과학기술원 페이지-디퍼런셜을 이용하여 dbms에 독립적인 방법으로 플래시 메모리에 데이터를 저장하는 방법
US10079048B2 (en) 2009-03-24 2018-09-18 Western Digital Technologies, Inc. Adjusting access of non-volatile semiconductor memory based on access time
US8327224B2 (en) 2009-04-16 2012-12-04 Micron Technology, Inc. Data recovery in a solid state storage system
US8578256B2 (en) 2009-04-22 2013-11-05 Agere Systems Llc Low-latency decoder
US7898859B2 (en) 2009-06-15 2011-03-01 Micron Technology, Inc. Use of emerging non-volatile memory elements with flash memory
US8255620B2 (en) 2009-08-11 2012-08-28 Texas Memory Systems, Inc. Secure Flash-based memory system with fast wipe feature
US7941696B2 (en) 2009-08-11 2011-05-10 Texas Memory Systems, Inc. Flash-based memory system with static or variable length page stripes including data protection information and auxiliary protection stripes
US20110041039A1 (en) 2009-08-11 2011-02-17 Eliyahou Harari Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device
US8402217B2 (en) 2009-09-15 2013-03-19 Marvell International Ltd. Implementing RAID in solid state memory
WO2011036864A1 (ja) 2009-09-25 2011-03-31 パナソニック株式会社 符号化装置、復号装置、符号化方法、復号方法、及び通信システム
US8243525B1 (en) 2009-09-30 2012-08-14 Western Digital Technologies, Inc. Refreshing non-volatile semiconductor memory by reading without rewriting
US8254172B1 (en) 2009-09-30 2012-08-28 Western Digital Technologies, Inc. Wear leveling non-volatile semiconductor memory based on erase times and program times
JP2011086333A (ja) * 2009-10-14 2011-04-28 Sony Corp データ変調装置および方法、並びにプログラム、記録媒体
US9753847B2 (en) 2009-10-27 2017-09-05 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
US8135903B1 (en) 2009-10-30 2012-03-13 Western Digital Technologies, Inc. Non-volatile semiconductor memory compressing data to improve performance
US8261012B2 (en) 2009-10-30 2012-09-04 Western Digital Technologies, Inc. Non-volatile semiconductor memory comprising power fail circuitry for flushing write data in response to a power fail signal
TWI415396B (zh) 2009-11-23 2013-11-11 Nat Univ Tsing Hua 適用於根據里德-索羅門碼建立之低密度同位檢查碼的解碼器及解碼方法
US8397107B1 (en) 2009-12-11 2013-03-12 Western Digital Technologies, Inc. Data storage device employing data path protection using both LBA and PBA
US8443167B1 (en) 2009-12-16 2013-05-14 Western Digital Technologies, Inc. Data storage device employing a run-length mapping table and a single address mapping table
KR101623119B1 (ko) 2010-02-01 2016-05-20 삼성전자주식회사 솔리드 스테이트 드라이브의 에러 제어 방법
US8316176B1 (en) 2010-02-17 2012-11-20 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification
US8407449B1 (en) 2010-02-26 2013-03-26 Western Digital Technologies, Inc. Non-volatile semiconductor memory storing an inverse map for rebuilding a translation table
JP4940322B2 (ja) 2010-03-16 2012-05-30 株式会社東芝 半導体メモリ映像蓄積再生装置及びデータ書込み/読出し方法
WO2011116454A1 (en) 2010-03-22 2011-09-29 Mosaid Technologies Incorporated Composite semiconductor memory device with error correction
US8726126B2 (en) * 2010-03-23 2014-05-13 Apple Inc. Non-regular parity distribution detection via metadata tag
US8725931B1 (en) 2010-03-26 2014-05-13 Western Digital Technologies, Inc. System and method for managing the execution of memory commands in a solid-state memory
US8713066B1 (en) 2010-03-29 2014-04-29 Western Digital Technologies, Inc. Managing wear leveling and garbage collection operations in a solid-state memory using linked lists
US9544090B2 (en) 2010-03-31 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Hard input low density parity check decoder
WO2011126578A1 (en) 2010-04-09 2011-10-13 Link_A_Media Devices Corporation Implementation of ldpc selective decoding scheduling
US8782327B1 (en) 2010-05-11 2014-07-15 Western Digital Technologies, Inc. System and method for managing execution of internal commands and host commands in a solid-state memory
US9026716B2 (en) 2010-05-12 2015-05-05 Western Digital Technologies, Inc. System and method for managing garbage collection in solid-state memory
US8489979B2 (en) 2010-05-28 2013-07-16 Seagate Technology Llc Methods and devices to reduce outer code failure rate variability
US8799747B2 (en) 2010-06-03 2014-08-05 Seagate Technology Llc Data hardening to compensate for loss of data retention characteristics in a non-volatile memory
US8341339B1 (en) 2010-06-14 2012-12-25 Western Digital Technologies, Inc. Hybrid drive garbage collecting a non-volatile semiconductor memory by migrating valid data to a disk
US8612669B1 (en) 2010-06-28 2013-12-17 Western Digital Technologies, Inc. System and method for performing data retention in solid-state memory using copy commands and validity and usage data
US8447920B1 (en) 2010-06-29 2013-05-21 Western Digital Technologies, Inc. System and method for managing data access in non-volatile memory
US8521972B1 (en) 2010-06-30 2013-08-27 Western Digital Technologies, Inc. System and method for optimizing garbage collection in data storage
US8639872B1 (en) 2010-08-13 2014-01-28 Western Digital Technologies, Inc. Hybrid drive comprising write cache spanning non-volatile semiconductor memory and disk
US8775720B1 (en) 2010-08-31 2014-07-08 Western Digital Technologies, Inc. Hybrid drive balancing execution times for non-volatile semiconductor memory and disk
US8638602B1 (en) 2010-09-10 2014-01-28 Western Digital Technologies, Inc. Background selection of voltage reference values for performing memory read operations
US8769190B1 (en) 2010-09-15 2014-07-01 Western Digital Technologies, Inc. System and method for reducing contentions in solid-state memory access
US8788779B1 (en) 2010-09-17 2014-07-22 Western Digital Technologies, Inc. Non-volatile storage subsystem with energy-based performance throttling
US8463991B2 (en) 2010-09-28 2013-06-11 Pure Storage Inc. Intra-device data protection in a raid array
US8775868B2 (en) 2010-09-28 2014-07-08 Pure Storage, Inc. Adaptive RAID for an SSD environment
US8612804B1 (en) 2010-09-30 2013-12-17 Western Digital Technologies, Inc. System and method for improving wear-leveling performance in solid-state memory
US9348696B2 (en) 2010-10-01 2016-05-24 Pure Storage, Inc. Distributed multi-level protection in a raid array based storage system
US20120084507A1 (en) 2010-10-01 2012-04-05 John Colgrove Multi-level protection with intra-device protection in a raid array based storage system
US20120254686A1 (en) * 2010-10-01 2012-10-04 SIGLEAD Inc. Non-volatile semiconductor memory devices and error correction methods
US20140136927A1 (en) 2010-10-27 2014-05-15 Lsi Corporation Adaptive ecc techniques for flash memory based data storage
US8601313B1 (en) 2010-12-13 2013-12-03 Western Digital Technologies, Inc. System and method for a data reliability scheme in a solid state memory
US8615681B2 (en) 2010-12-14 2013-12-24 Western Digital Technologies, Inc. System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss
US8601311B2 (en) 2010-12-14 2013-12-03 Western Digital Technologies, Inc. System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory
US8458435B1 (en) 2010-12-20 2013-06-04 Western Digital Technologies, Inc. Sequential write thread detection
US8392635B2 (en) 2010-12-22 2013-03-05 Western Digital Technologies, Inc. Selectively enabling a host transfer interrupt
US8683113B2 (en) 2011-02-04 2014-03-25 Western Digital Technologies, Inc. Concurrently searching multiple devices of a non-volatile semiconductor memory
US8484542B2 (en) * 2011-02-08 2013-07-09 Sandisk Technologies Inc. Data recovery using additional error correction coding data
US8700950B1 (en) 2011-02-11 2014-04-15 Western Digital Technologies, Inc. System and method for data error recovery in a solid state subsystem
US8700951B1 (en) 2011-03-09 2014-04-15 Western Digital Technologies, Inc. System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata
US8769232B2 (en) 2011-04-06 2014-07-01 Western Digital Technologies, Inc. Non-volatile semiconductor memory module enabling out of order host command chunk media access
US8862804B2 (en) 2011-04-29 2014-10-14 Western Digital Technologies, Inc. System and method for improved parity determination within a data redundancy scheme in a solid state memory
US8751728B1 (en) 2011-04-29 2014-06-10 Western Digital Technologies, Inc. Storage system bus transfer optimization
US9021178B2 (en) 2011-05-02 2015-04-28 Western Digital Technologies, Inc. High performance path for command processing
US8503237B1 (en) 2011-05-18 2013-08-06 Western Digital Technologies, Inc. System and method for data recovery in a solid state storage device
US8793429B1 (en) 2011-06-03 2014-07-29 Western Digital Technologies, Inc. Solid-state drive with reduced power up time
JP5426711B2 (ja) * 2011-06-08 2014-02-26 パナソニック株式会社 メモリコントローラ及び不揮発性記憶装置
US8719531B2 (en) 2011-06-14 2014-05-06 Western Digital Technologies, Inc. System and method for performing data retention that incorporates environmental conditions
US8423722B1 (en) 2011-08-26 2013-04-16 Western Digital Technologies, Inc. System and method for high performance command processing in solid state drives
US8707104B1 (en) 2011-09-06 2014-04-22 Western Digital Technologies, Inc. Systems and methods for error injection in data storage systems
US8713357B1 (en) 2011-09-06 2014-04-29 Western Digital Technologies, Inc. Systems and methods for detailed error reporting in data storage systems
US8700834B2 (en) 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
US8977803B2 (en) 2011-11-21 2015-03-10 Western Digital Technologies, Inc. Disk drive data caching using a multi-tiered memory
US8339919B1 (en) 2011-12-14 2012-12-25 Western Digital Technologies, Inc. Disk drive margining read channel by biasing log-likelihood ratios of a nonbinary iterative decoder
US8724422B1 (en) 2012-02-29 2014-05-13 Western Digital Technologies, Inc. System and method for charging back-up charge storage element for data storage device using spindle phase switching elements
JP2013191169A (ja) * 2012-03-15 2013-09-26 Toshiba Corp ホスト機器、メモリコントローラ、及びメモリ装置
US9003224B2 (en) 2012-04-25 2015-04-07 Western Digital Technologies, Inc. Managing unreliable memory in data storage systems
US8788778B1 (en) 2012-06-04 2014-07-22 Western Digital Technologies, Inc. Garbage collection based on the inactivity level of stored data
US8966343B2 (en) 2012-08-21 2015-02-24 Western Digital Technologies, Inc. Solid-state drive retention monitor using reference blocks
US8788880B1 (en) 2012-08-22 2014-07-22 Western Digital Technologies, Inc. Efficient retry mechanism for solid-state memory failures
US9268682B2 (en) 2012-10-05 2016-02-23 Skyera, Llc Methods, devices and systems for physical-to-logical mapping in solid state drives
US8972826B2 (en) 2012-10-24 2015-03-03 Western Digital Technologies, Inc. Adaptive error correction codes for data storage systems
US9177638B2 (en) 2012-11-13 2015-11-03 Western Digital Technologies, Inc. Methods and devices for avoiding lower page corruption in data storage devices
US8954694B2 (en) 2012-11-15 2015-02-10 Western Digital Technologies, Inc. Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive
US9021339B2 (en) 2012-11-29 2015-04-28 Western Digital Technologies, Inc. Data reliability schemes for data storage systems
US9059736B2 (en) 2012-12-03 2015-06-16 Western Digital Technologies, Inc. Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme
US20140223255A1 (en) 2012-12-18 2014-08-07 Western Digital Technologies, Inc. Decoder having early decoding termination detection
US9430376B2 (en) 2012-12-26 2016-08-30 Western Digital Technologies, Inc. Priority-based garbage collection for data storage systems

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101097551A (zh) * 2006-08-23 2008-01-02 晶天电子(深圳)有限公司 带有闪存控制器的电子数据闪存卡
US20080195900A1 (en) * 2007-02-12 2008-08-14 Phison Electronics Corp. Flash memory system and method for controlling the same
CN101779194A (zh) * 2007-07-09 2010-07-14 美光科技公司 用于存储器的错误校正
CN101965559A (zh) * 2007-12-27 2011-02-02 普莱恩特技术股份有限公司 包括将处理器与内部存储器连接的交叉切换器的用于闪存的存储控制器
CN101533677A (zh) * 2008-03-13 2009-09-16 群联电子股份有限公司 存储器的设置方法、控制器、以及非易失性存储器系统
US20090259805A1 (en) * 2008-04-15 2009-10-15 Adtron, Inc. Flash management using logical page size
US20110087855A1 (en) * 2009-08-11 2011-04-14 Texas Memory Systems, Inc. Method and Apparatus for Protecting Data Using Variable Size Page Stripes in a FLASH-Based Storage System
US20120079190A1 (en) * 2010-09-28 2012-03-29 John Colgrove Offset protection data in a raid array

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108829358A (zh) * 2018-06-29 2018-11-16 郑州云海信息技术有限公司 固态硬盘的坏块管理方法以及固态硬盘
CN109407972A (zh) * 2018-09-17 2019-03-01 至誉科技(武汉)有限公司 利用温差均衡方法进行数据纠错的存储装置
CN109407972B (zh) * 2018-09-17 2021-08-06 至誉科技(武汉)有限公司 利用温差均衡方法进行数据纠错的存储装置
WO2020107301A1 (zh) * 2018-11-29 2020-06-04 华为技术有限公司 一种编码方法、译码方法以及存储控制器
CN113168882A (zh) * 2018-11-29 2021-07-23 华为技术有限公司 一种编码方法、译码方法以及存储控制器
CN112256464A (zh) * 2020-10-20 2021-01-22 湖南国科微电子股份有限公司 硬盘数据纠错方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
KR20150093755A (ko) 2015-08-18
WO2014088747A1 (en) 2014-06-12
AU2013356584A1 (en) 2015-07-02
EP2926256B1 (en) 2019-07-24
JP2015535640A (ja) 2015-12-14
EP2926256A1 (en) 2015-10-07
JP6077673B2 (ja) 2017-02-08
HK1216195A1 (zh) 2016-10-21
AU2013356584B2 (en) 2019-04-04
EP2926256A4 (en) 2016-07-20
US9059736B2 (en) 2015-06-16
WO2014088684A1 (en) 2014-06-12
CN105009088B (zh) 2017-08-11
KR101872573B1 (ko) 2018-06-28
US20140157078A1 (en) 2014-06-05

Similar Documents

Publication Publication Date Title
CN105009088A (zh) 具有运行时变量raid保护方案的方法、固态驱动器控制器以及数据存储设备
US8898548B1 (en) Methods, data storage devices and systems having variable size ECC page size
JP5984989B2 (ja) オンチップのnand型フラッシュメモリおよびその不良ブロック管理方法
CN105593943B (zh) 具有动态擦除块组合机制的数据贮存系统及其操作方法
KR101679530B1 (ko) 이용 가능한 메모리 공간에 기초한 이중화 저장 장치 구성의 선택
US9135112B2 (en) Policy for read operations addressing on-the-fly decoding failure in non-volatile memory
US9152555B2 (en) Data management with modular erase in a data storage system
JP2015056184A (ja) メモリにおけるデータの管理のための方法および装置
CN105122220A (zh) 固态驱动器中的原子写入命令支持
KR20130078973A (ko) 메모리 장치의 불량 저장 영역 관리 방법 및 이를 이용한 저장 장치
CN103871447A (zh) 与非门快闪存储器阵列及芯片及其存取、读取及管理方法
CN104794063A (zh) 一种具备电阻式存储器的固态储存装置的控制方法
US20140115424A1 (en) Memory system and method of operating memory system using reconstructed data
US20140025907A1 (en) Storage control apparatus, storage apparatus, and processing methods thereof
US20170255502A1 (en) Storage control apparatus, storage apparatus, and storage control method
CN108108118B (zh) 数据写入方法以及存储控制器
WO2023047149A1 (en) Improved ecc configuration in memories
CN106980464B (zh) 利用过采样读取的系统最优化方法
CN110119247A (zh) 非易失性存储器
JP6260395B2 (ja) メモリコントローラ、メモリシステム及びメモリ制御方法
WO2021029143A1 (ja) 半導体記憶装置及び該装置における不良メモリセルに対するエラー処理方法
CN102760087B (zh) 固态存储器中数据冗余方案内改进的奇偶校验值确定的系统和方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1216195

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20180612

Address after: American California

Patentee after: Western Digital Technologies, Inc.

Address before: American California

Co-patentee before: SKYERA INC

Patentee before: Western Digital Technologies, Inc.

TR01 Transfer of patent right
REG Reference to a national code

Ref country code: HK

Ref legal event code: WD

Ref document number: 1216195

Country of ref document: HK