CN106462493A - 固态存储器损坏的减轻 - Google Patents

固态存储器损坏的减轻 Download PDF

Info

Publication number
CN106462493A
CN106462493A CN201580023720.2A CN201580023720A CN106462493A CN 106462493 A CN106462493 A CN 106462493A CN 201580023720 A CN201580023720 A CN 201580023720A CN 106462493 A CN106462493 A CN 106462493A
Authority
CN
China
Prior art keywords
data
piece
block
lpo
programmed
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
CN201580023720.2A
Other languages
English (en)
Other versions
CN106462493B (zh
Inventor
D·S·西金斯
D·M·罗兰
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
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 filed Critical Western Digital Technologies Inc
Publication of CN106462493A publication Critical patent/CN106462493A/zh
Application granted granted Critical
Publication of CN106462493B publication Critical patent/CN106462493B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • G11C16/3427Circuits or methods to prevent or reduce disturbance of the state of a memory cell when neighbouring cells are read or written
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • 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/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明公开在非易失性存储器阵列中编程数据的系统和方法。某些实施例提供非易失性固态存储器阵列和控制器,所述控制器被配置成接收来自主机设备的写入数据,以仅下部页(LPO)编程模式将写入数据编程到存储器阵列的第一块,以及在第一块上执行数据合并操作,其中所述执行垃圾收集包括不以LPO编程模式将写入数据的至少一部分编程到第二块。

Description

固态存储器损坏的减轻
技术领域
本公开涉及数据存储系统。更具体地,本公开涉及用于编程固态存储器的系统和方法。
背景技术
特定的固态存储器(如闪存驱动器)将信息存储到由浮栅晶体管构造的存储单元的阵列中。固态存储单元中的编程失败可能不利地影响设备性能。
发明内容
附图说明
为了说明性目的,各种实施例在随附的附图中被描述,并且绝不应当被解释为限制本公开的范围。此外,公开的不同实施例的各种特征可以被组合以形成附加实施例,这也是本公开的一部分。
图1是示出根据实施例的非易失性存储器阵列中的单元的概率分布的图。
图2A至图2C示出根据实施例的在编程过程的各个级处的单元的概率分布。
图3A示出根据实施例的以多级单元(MLC)模式被编程的固态存储器的块。
图3B示出根据实施例的以仅下部页(LPO)模式被编程的固态存储器的块。
图4是根据实施例的包括非易失性存储器阵列的数据存储系统的框图。
图5是示出用于管理在数据存储环境中的存储块的过程的数据流程图。
图6是示出根据一个实施例的用于在非易失性存储器阵列中编程数据的过程的流程图。
具体实施方式
当描述某些实施例时,这些实施例仅通过示例形式呈现,并且不旨在限定保护范围。实际上,可以采用各种其他形式体现本文中描述的新颖的方法和系统。此外,可以进行在本文描述的方法和系统的形式下的各种省略、替代和改变,而不偏离保护范围。
本文提供的标题仅为方便并且不一定影响请求保护的发明的范围或含义。文本所公开的是涉及数据存储系统中的控制器板布局的示例配置和实施例。
术语
如本申请中所使用的,“非易失性固态存储器”、“非易失性存储器”、“NVM”或其变型可以涉及固态存储器(如NAND闪存)。然而,本公开中的系统和方法还可以在更常规的硬盘驱动器和包括固态部件和硬盘驱动器部件两者的混合驱动器中是有用的。固态存储器可以包括各种技术,如闪存集成电路、相变存储器(PC-RAM或PRAM)、可编程金属化单元RAM(PMC-RAM或PMCm)、相变存储器(Ovonic Unified Memory)(OUM)、电阻式RAM(RRAM)、NAND存储器、NOR存储器、EEPROM、铁电存储器(FeRAM)、MRAM或其他分立NVM(非易失性固态存储器)芯片。如本领域中已知的,非易失性固态存储器阵列或存储设备可以物理地被划分成面、块、页和扇区。可以附加地或替代地使用其他存储形式(例如,电池备份易失性DRAM或SRAM设备、磁盘驱动器等)。
术语“页”、“闪存页”、“F-页”或其变型根据其广泛和普通含义在本文中被使用。例如,“页”可以指物理存储器单元的块或物理存储器单元本身。在多级单元(MLC)中,“页”可以指两级方案中的上部页或下部页、或由最高有效位或最低有效位表示的数据、或在具有更大粒度的方案或三级单元(TLC)方案中的中间有效位中的一个。此外,术语“块”可以在本文中被使用以指页组或块组,如超级块。
概述
多级单元(MLC)固态存储器(例如,NAND闪存)能够在单个存储器元件或单元中存储一比特以上的信息。例如,MLC存储器的单个单元可以存储两比特或更多比特的信息。为说明的目的,在以下教导示例中将假设每单元两比特。在某些实施例中,如以下更详细的描述,两比特信息没有一起被编程;两比特中的每个比特的编程可以在不同时间发生。可以表示最低有效位(LSB)的第一比特(例如,下部页)可以首先被编程;之后,可以表示最高有效位(MSB)或更高有效位的第二比特(例如,上部页)可以随后被编程一些数量的页。此类编程方案可以导致具有四个可能的电压电荷电平(charge level)中的一个的单元,其中硬件被配置成检测电荷电平,引起从单个单元返回四个独特状态或两个比特数据的能力。
在某些情况下,两级MLC编程可能导致LSB数据损坏。例如,当上部页编程操作在编程期间遭遇错误或中断时,下部页也可以由此被损坏。编程中断可以由例如系统电力故障引起。某些数据存储系统包括被配置成提供备用电力以允许在电力故障时完成存储器访问操作的附加电路。例如,一个或多个电容器或者其他电荷保持设备可以被使用,以在正常操作期间存储电力并且在电力故障期间释放这些电力以用于使用。此外,某些磁盘驱动器被配置成在电源已被移除之后从主轴马达生成反电动势(EMF)电力。然而,成本和/或其他考虑可以利用此类不切实际或不期望的备用电力解决方案。因此,某些固态存储系统不被配置成基本上防止由编程中断引起的LSB数据的损失。先前编程的下部页数据的损失在本文中称为“LSB损坏”或“成对页损坏”。以下讨论固态存储器设备中的LSB损坏的进一步细节。
本文公开某些实施例用于防止或减少由MLC固态存储器中的上部页编程中断引起的LSB损坏的影响。某些实施例可以提供主机数据编程方案,在该方案中,最初仅利用存储器的下部页,用于主机数据写入操作,其中数据合并机制(例如,垃圾收集)被用于将编程的下部页数据打包到使用上部页和下部页的打开块。
LSB损坏
图1是示出根据实施例的非易失性存储器阵列中的单元的概率分布的图。图1的分布与MLC编程方案相关联,其中两比特或更多比特的信息被存储在单个存储器单元中。然而,应当理解的是,本文公开的系统和方法可以相对于其他技术(例如,三级单元(TLC)技术)被使用。
图1示出四个编程状态(L0-L3),其中每个状态表示两比特数据。在某些实施例中,每个编程状态包括最高有效位(本文中被称为“上部页”)和最低有效位(LSB)(本文中也可以被称为“下部页”)。此外,在某些实施例中,“上部页”可以指最低有效位,而“下部页”指最高有效位。当特定编码值被分配到分布的各种状态时(例如,对于L0为‘11’、对于L1为‘01’、对于L2为‘00’以及对于L3为‘10’),其他编码方案可以被使用。在某些实施例中,L0对应于擦除状态。
在解码存储器单元中,一个或多个参考电压电平可以被使用以读取单元,从而确定单元属于哪种电荷状态。图1示出三个电压读取电平R1、R2和R3。在某些实施例中,可以基于在R2处的读取确定下部页值,而上部页值可以通过在R1和/或R3处读取来获得。
如以上提到的,在MLC编程方案中的编程可以在多个级中被执行。图2A至图2C示出根据实施例的在编程过程的各个级处的单元的概率分布。图2A示出了电压分布,其中固态存储器的页的单元在第一状态(如擦除状态)中。在某些实施例中,单元最初从擦除状态被编程。因此,如本文描述的,在编程之前使固态存储器的页被擦除以允许适当的编程可能是必要的或令人期望的。
在某些实施例中,MLC编程包括两步:第一步,如图2B所示,LSB页可以被编程。例如,针对具有LSB值为‘1’的单元,该单元可以基本上保持低电压擦除状态,然而,具有LSB值为‘0’的单元可以被编程到高于较高编程电压(PV-Low)的电平。在一个实施例中,LSB页编程可以通过将一个或多个编程脉冲施加到指定的单元以推动编程的单元超过(past)PV-Low来实现。因此,如示出的,在LSB编程之后,电压分布可以包括两个单独状态,所述状态可以被称为LSB“原型(proto)”状态或LSB原型页。
在LSB编程之后,MSB页可以被编程,如图2C所示。然而,LSB页编程可以导致单元划分为两个原型电压状态(例如,对应于低电平/状态(如擦除状态)的第一状态,并且对应于高电平/状态的第二状态),MSB编程可以进一步将分布划分为四个状态。例如,由于状态L0和L1都可以对应于LSB值为‘1’,在某些实施例中,下部LSB原型页可以被分为L0和L1状态,其中对L0或L1的分配由相关的MSB值确定。在某些实施例中,在MSB页为‘1’(并且LSB为‘1’)的情况下,单元可以被允许保持在最低电压状态(例如,擦除状态)。此外,在MSB页为‘0’的情况下,单元可以被编程超过编程电压电平PV-1。关于对应于LSB值为‘0’的单元,此类单元的MSB编程可以通过将具有MSB值为‘0’的编程单元超过编程电压电平PV-2到第三电压状态L2来执行。此外,具有MSB值为‘1’的单元可以被编程从较高LSB原型页超过编程电压PV-3到第四电压状态L3。
由多级MLC编程引起的LSB或“成对的页”损坏可以通过图3A所示的示例MLC存储器块300A的逻辑图进一步来说明。例如,块300A以MLC模式被编程,并且块的下部页(310A)和上部页(312A)两者都被编程。由于编程上部页的过程通常改变单元的电压,所以如果在上部页的编程期间电力中断,先前被编程在下部页中的数据可能丢失或损坏。具体地,为了编程上部页,下部页可能需要暂时地被转变为另一个编程值,并且然后在上部页被编程后,下部页被转变回原始编程值。如果该过程被中断,在相当大量时间之前可能已被编程的下部页中的数据可能丢失。在固态混合驱动器应用中,如果该下部页包含由先前推迟的写入操作编程的数据,那么可能产生数据完整性问题,其中可能没有已写入到例如磁介质或其他非易失性存储器的备份副本。
数据存储设备可以包括作为备份电力源的电容器,该电容器允许在电力中断事件中完成MLC存储器中的上部页编程操作。然而,如先前以上讨论的,这样的备份电力源通常不总是可行或可用的。
图3B示出根据替代的编程方案被编程的块300B,其中仅存储的块的下部页或其部分被编程。这种编程方案在本文中可以被称为“仅下部页”或“LPO”编程。如图所示,块300B包括多个存储器单元或单位(例如,302B),其中,下部页310B被编程,而链接的上部页312B未被编程。由于仅块的下部页被使用,块300B可以具有与传统MLC编程相比相对减小的容量。然而,如以下更详细的讨论,LPO编程可以不遭受与LSB损坏相关联的并发症。
LSB损坏减轻系统
图4根据本文公开的一个或多个实施例示出包括主机系统410和数据存储设备420的系统400,该系统400实现LSB损坏减轻。如图所示,数据存储设备420(例如,固态混合驱动器、固态驱动器等)包括控制器430和非易失性存储器阵列(例如,固态存储)440。非易失性存储器阵列440可以包括多个芯片或管芯,每个芯片或管芯包括存储的一个或多个块。例如,图4的图示出多个块(其被标识为块“A”(442)至块“N”),所述多个块可以被设置在一个或多个分立的管芯上。每个块包括多个闪存页(F-页)。例如,图4的块A(442)包括多个F-页,其被标识为F-页A(443)、B至N。在一些实施例中,每个“块”是在单个操作中或作为单位(unit)可擦除的固态存储440的位置或存储器页的最小分组,并且每个“F-页”或“页”是可以在单个操作中或作为单位被编程的存储器单元的最小分组。其他实施例可以使用与如本文描述不同定义的块和/或页。
在某些实施例中,一组块被一起分组成超级块。超级块或“S-块”可以包括每个管芯一个闪存块。因此,S-块可以被认为是F-块的集合,每个管芯一个F-块,这些F-块结合在一起形成了固态存储440的逻辑单位。根据一个实施例,块分配、擦除和/或垃圾收集可以在S-块等级上被管理。
在某些实施例中,数据存储设备420可以是包括磁性存储模块460的固态混合磁盘驱动器,该磁性存储模块460包括磁性介质464(例如,一个或多个磁盘)。固态存储440可以包括任何期望类型的固态存储器。
控制器430可以被配置成接收来自主机系统410的存储接口模块412(例如,设备驱动器)的数据和/或存储访问命令。通过存储接口模块412通信的存储访问命令可以包括由主机系统410发布的写入数据命令和读取数据命令。读取命令和写入命令可以指定用于访问数据存储设备420的逻辑地址(例如,逻辑块地址或“LBA”)。控制器430可以执行接收的在固态存储440和/或磁性存储设备460中的命令。
控制器430的编程模块432可以实现适合于固态存储440的期望的编程方案。在某些实施例中,编程模块432被配置成实现MLC编程方案,其中固态存储器的单元被编程以存储代表两个比特或更多比特的数据的电荷电平。以上参照图1和图2A至图2C描述了这种编程方案。在某些实施例中,编程模块432可以被配置成实现到固态存储440的主机数据的仅下部页(LPO)编程,从而提供成对页损坏减轻,如以下更详细的描述。
数据存储设备420可以存储通过主机系统410通信的数据。换言之,数据存储设备420可以充当主机系统410的存储器存储装置。为促进该功能,控制器430可以实现逻辑接口。逻辑接口可以向主机系统410呈现作为一组逻辑地址(例如,连续的地址)的数据存储系统存储器,用户数据可以被存储在这些逻辑地址中。在内部,控制器430可以将逻辑地址映射到固态存储440和/或其他存储模块中的各种物理位置或地址。
控制器430包括被配置成执行垃圾收集和磨损均衡(wear leveling)的垃圾收集/磨损均衡模块434。垃圾收集是一类数据合并或碎片化操作。然而,如本文所使用的,“垃圾收集”可以指任何类型的数据合并或碎片化操作。此外,如本文所使用的,磨损均衡操作可以被认为是整体垃圾收集操作的子部分或特殊情况。在一些实施例中,垃圾收集/磨损均衡模块434单独地执行磨损均衡,而在其他实施例中,垃圾收集/磨损均衡模块434执行固态存储440的至少一部分的垃圾收集和/或磨损均衡。在一个实施例中,垃圾收集/磨损均衡模块432可以运行以通过LPO编程和随后的数据合并操作(如垃圾收集和/或磨损均衡)来适应成对的页损坏减轻。
在一个实施例中,垃圾收集/磨损均衡模块434可以选择垃圾收集和/或磨损均衡在其上被执行的固态存储440的块。这种块选择功能可以至少部分地基于与取数据时间(data age)和/或磨损均衡相关的信息来执行。块可以用增加在数据存储设备420的寿命期间的空闲空间量并且促进或保证块保持在P/E计数的范围内的方式来选择,这可以使固态存储440的数据存储寿命最大化。
数据存储设备420可以被配置成根据本文公开的一个或多个实施例减轻LSB损坏。在某些实施例中,数据存储设备420仅使用下部页用于主机写入(例如,以LPO模式将主机数据写入到块中),并且使用垃圾收集、磨损均衡和/或其他背景/系统维护操作以将数据打包到新块(例如,以MLC模式将数据写入到块)。为了简单的目的,以下示例将使用垃圾收集作为示例说明。在垃圾收集期间,如果MLC编程操作未成功,任何丢失的或损坏的下部页数据在(多个)LPO块中可以仍然是完整的,使得写入操作可以在稍后时间被重试,诸如当电力被恢复到系统时。以LPO模式写入主机数据的附带益处是,与典型的MLC模式编程相比,写入性能可以提高到例如两倍或更多倍。
仅下部页(LPO)编程
本文公开的某些实施例通过主机数据的仅下部页(LPO)编程提供成对的页损坏减轻。这种功能可以由以上结合图4描述的控制器430和/或编程模块432执行。作为一个示例,新进入的主机写入数据可以使用仅下部(LSB)页被存储在用户数据MLC超级块中;此类块的上部页此时可以不被编程。在稍后的时间,例如,在垃圾收集程序期间,存储在指定的超级块的下部页中的主机数据(LPO数据)可以利用此类块的两个页被移动到其他超级块。
在某些实施例中,由控制器维持的前向映射不被更新,直到数据被安全移动到新的超级块并且在上部页和下部页两者中被编程。因此,因为LPO数据直到在成功编程发生之后才从LPO块擦除,所以电力损失或其他成对的页损坏可以不导致下部页数据丢失。
LPO编程可以在关于错误校正所使用或需要的奇偶校验数据的量的性能上具有积极影响。可以使用数据页的比特的异或或(XOR)和来计算奇偶校验数据,例如,约定(yielding)“0”用于偶校验,“1”用于奇校验。例如,在某些实施例中,使用XOR将数据的每个页与先前页进行比较,并且结果被累积并且周期性地被存储(例如,存储至空白页或“奇偶校验页”)。由于奇偶校验通常取决于所有相关比特,任何一个比特的损坏可以通过错误检测中的奇偶校验数据的检查来揭示。
奇偶校验条带长度表示与单个奇偶校验元件(element)相关联的用户数据元件(例如,页)的数量;相对高的奇偶校验率可以负面地影响存储容量,因为更多的存储专用于奇偶校验而不是用户数据。如本文所描述的,LPO编程的使用可以有利地允许高于某些其它系统的奇偶校验条带长度。例如,在非LPO系统中,奇偶校验条带长度可以受到期望避免成对的页与相同的奇偶校验元件相关联的限制;存储器模块的几何结构可以指示奇偶校验条带长度。例如,存储器几何结构可以将奇偶校验条带长度限制为约15:16或更低。当单元中的两个可用页中的仅一个被使用以编程用户数据时,使用相对较长的或无限长的奇偶校验条带可以是可能的。例如,可以使用在127:128、1023:1024或更大的范围内的奇偶校验条带。
进一步参照图4,在某些实施例中,控制器430被配置成在LPO模式中打开超级块。新进入的主机写入数据将被存储在已经在LPO模式中被打开的用户数据MLC超级块中。为此,控制器430可以维持指示期望在编程LPO块中被使用的减少数量的页的信息。具体地,可以分配大约一半的页来用于编程。在某些实施例中,在LPO模式中打开的超级块被指定为LPO块并且作为LPO块被跟踪,使得控制器430将知道不在这些块的上部页中寻找有效数据。
如本文所描述的,LPO编程可以对于某些工作负载导致写入放大(WA)的至少暂时增加,从而有效地减少可以随时间写入的数据量。例如,LPO编程可以仅使用块的大约一半的潜在可用页达至少一些编程/擦除周期。然而,因为LPO块可以在垃圾收集期间被重新打包,所以相关的容量减少可以是相对小的。
修改的垃圾收集
垃圾收集是允许回收不再有效的存储器的页的存储器管理机制。由于在存储器内写入和更新数据,一些页变得无效。这导致存储器随时间的碎片化。为了回收被无效数据占用的存储空间,垃圾收集涉及选择合适的(多个)块,将所有有效页移动至新打开的(多个)块,并且擦除选择的块。在这种方式下,垃圾收集块可以变得可用,以结合写入操作使用。例如,垃圾收集模块434可以选择垃圾收集的存储器的区域。在一个实施例中,具有最少量的有效数据的区域可以被选择以用于垃圾收集。给定块的有效数据的量可以由指示块中的有效或过时(stale)数据的量的元数据(例如,“过时计数”)表示。在另一个实施例中,可以选择具有小于阈值量的有效数据量的区域用于垃圾收集。在一个实施例中,这种区域可以通过仅将有效数据移动至另一个区域(例如,空闲区域或指定为空闲的区域)来被释放。
垃圾收集功能可以有利地关于LPO块被修改。例如,如果垃圾收集通常将有效映射的下部页数据置于风险中,则可以将其修改为针对转发(forward)表中当前正在使用的那些下部页“跳过”上部页。此外,考虑到这些块的减少的有效容量,垃圾收集度量可以被用于修改LPO块的磨损率。例如,当关闭LPO块时,可以增加块的过时计数以反映块的有限容量。在一个实施例中,过时计数被增加以反映半过时状态。
由于块的磨损率可以取决于其被擦除的频率,因此修改LPO块的过时计数可以是期望的。当缺少LPO块的修改的过时计数值时,此类块可以不被选择用于具有期望频率的垃圾收集,因为仅它们的页的一半(即,下部页)可以是潜在有效的。因此,通过增加LPO块的过时计数,可以更频繁地选择这些块用于垃圾收集。在某些应用中,此类增加的过时计数可以有效地导致任何LPO超级块被认为是垃圾收集的好的候选。
在某些实施例中,垃圾收集操作开始的就绪列表阈值可以针对LPO块而改变。例如,可以至少部分基于以下等式来确定就绪列表阈值:
调整的就绪列表长度=((超级块数量)*0.5)+(2*理想就绪列表长度))
修改的磨损均衡
垃圾收集/磨损均衡模块434可以被配置成通过实施算法促进在固态存储440的块上的数据写入的均匀分布,控制器430通过该算法将逻辑块地址重新映射到固态存储器阵列中的不同物理块地址。由于LPO块可以仅被编程到一半容量,并且因此遭受了比全部编程块更小的磨损,简单地跟踪LPO块的编程/擦除周期的数量可以导致存储器阵列的不均匀磨损。此外,当从固态存储读回数据时,使用的电压阈值水平可以至少部分基于关于块的磨损水平的假设。因此,块的磨损水平的不当计算可能是有问题的。
在某些实施例中,为了解释LPO块的减少的磨损,控制器和/或磨损均衡模块434可以被配置成跟踪给定块被用作LPO块的次数。例如,LPO计数变量可以被维持在页头部元数据或系统表中,以指示特定的超级块已经被用作LPO块的次数。LPO计数可以以类似于磨损均衡的方式来使用,以便防止单个块在LPO模式中比其他块明显更频繁地被使用。在一个实施例中,控制器430被配置成确保块具有在平均LPO计数的大约200或其他数字内的LPO计数。
驰豫时间
本文使用的“弛豫(relaxation)时间”可以被定义为从块的最后页被编程的时间和该块被擦除的时间之间的时间差。如果单个块被重新利用得太快,其可能引发过度磨损。如以上所描述的,增加的过时计数可以针对LPO块被实施为修改的垃圾收集机制。结果,针对某些工作负载,LPO块将频繁地被认为相对过时是可能的,这取决于增加的程度。因此,修改或控制关闭的LPO超级块的弛豫时间以避免过度磨损可以是期望的。例如,在某些状况下,LPO块可以在关闭之后基本上立即被选择用于垃圾收集,并且被放回就绪块队列(如以下结合图5的就绪块池410更加详细地描述的),并且随后该LPO块被选择用于非期望地快速使用;可以重复这个过程,从而引起块的过度磨损。
在某些实施例中,最小弛豫时间被确定并且被实施以防止超级块被重新利用得太快。在某些实施例中,可以设置就绪块列表长度以至少部分地控制LPO超级块的弛豫时间。经过垃圾收集的块可以被放在就绪列表的最后,其中在队列前面的每个打开块在给定块被编程之前被编程。就绪列表的大小可以被选择使得块可能从就绪列表的后面移动到前面的最短时间段大于或等于期望的弛豫时间。在某些实施例中,大约60秒的时间段可以用于弛豫时间。
编程流程
图5是示出用于管理在数据存储环境中的存储块的过程500的数据流程图。过程500涉及数据存储系统,例如,在图4中示出的数据存储设备/系统的控制器,其接收与主机发出的写入命令相关联的主机数据,其中写入命令引导控制器将数据的至少一部分写入固态存储器设备中。为了将数据写入固态存储器设备,过程500可以涉及选择用于编程的块以及擦除该块以允许对该块进行编程。在某些实施例中,过程500涉及将主机数据初始地编程到用于仅下部页(LPO)编程所指定的块。因此,如以上更加详细地描述的,块401可以被指定为LPO块并且仅在下部页中被编程。在某些实施例中,过程500涉及维持与块401相关联的元数据以指示该块已被选择用于LPO模式和/或该块已被选择用于LPO模式的次数。
块402编程以LPO模式被编程后,它可以被添加到具有编程的数据的关闭块的池。该过程可以进一步包括关于编程的块执行某些数据合并。例如,随着时间,在编程的块中的一些或所有数据可能变得无效。数据合并操作(如垃圾收集)可以允许在部分无效块中的数据被合并成更少的块,从而允许先前关闭的块被擦除并且被重新用于编程。在某些实施例中,LPO块可以被选择用于数据合并,并且LPO块可以被放置到队列430,用于等待数据重新布置到其他块。在某些实施例中,用于数据合并的块的选择至少部分地基于与块相关联的指示给定块是如何过时的元数据。术语“过时”在本文中根据其广泛和普通含义被使用,并且可以在存储块的上下文中指示块页或单元的多少或者什么部分包含无效或有效数据。因为LPO块最多具有MLC块的容量的50%的数据容量,所以过程500的某些实施例包括增加与LPO块相关联的过时元数据,以指示块可以包含减小量的有效数据。这样做使得当两种类型的块被考虑用于垃圾收集时,LPO块相对于MLC块减少的容量在将过时度用作垃圾收集块选择的选择因素的方案中被考虑。然而,例如,具有全部有效数据的LPO块的过时计数可以指示该块大约一半过时。这种过时性的增加可能导致LPO块比其以其他方式更早地被选择用于数据合并。
在数据合并(例如,垃圾收集)期间,在LPO块中的数据可以以MLC编程模式被重新编程到块(数据被编程到上部页和下部页两者)。块405是已经以MLC模式被编程的包含从垃圾收集过程中保存的有效数据的块的示例。在某些实施例中,在为了数据合并目的而来自块的数据已被重新编程之后,该块被擦除。可替代地,块可以不被擦除,直到该块再次被选择用于编程。因此,就绪块池410可以包括擦除的块,或者可以主要包括包含无效数据的块。在某些实施例中,如以上更加详细地描述的,如图5中所示的LPO编程可以允许在上部页编程故障的情况下进行数据保护。
图6是示出根据一个实施例的用于在非易失性存储器阵列中编程数据的过程600的流程图。过程600可以至少部分由如图4所示的数据存储设备/系统的控制器来执行。过程600包括从主机系统接收写入数据(框602)。在框604处,一个或多个存储块可以被选择用于仅下部页(LPO)编程。在框606处,写入数据以LPO模式被编程到一个或多个块。在框608处,(多个)LPO块可以被选择用于数据合并(例如,垃圾收集),其中如在框610处所示,数据在非LPO模式下被重新编程到一个或多个其他块。例如,可以使用MLC编程将数据编程到(多个)新的块。
附加实施例
本领域技术人员将认识到,在一些实施例中,其他类型的成对的页损坏减轻系统可以被实施,同时保持在本公开的范围内。此外,在本文中讨论的过程中所采取的实际步骤可能不同于在附图中描述或示出的那些步骤。根据实施例,以上描述的某些步骤可以被移除,其他步骤可以被添加。
虽然一些实施例已经被描述,但是这些实施例仅通过示例的方式已被呈现,并且这些实施例非旨在限制保护的范围。实际上,本文中描述的新颖方法和系统可以采用各种其他形式来实施。此外,可以进行以本文描述的方法和系统的形式的各种省略、替换和改变。随附权利要求及其等同物旨在覆盖将落入保护的范围和精神内的此类形式或修改。例如,在附图中示出的各种部件可以被实施为处理器上的软件和/或固件、ASIC/FPGA或者专用硬件。而且,以上公开的特定实施例的特征和属性可以以不同的方式被组合以形成附加实施例,所有这些附加实施例落入本公开的范围内。尽管本公开提供某些优选的实施例和应用,但是对于本领域技术人员而言是明显的,包括未提供在本文中所述的所有特征和优点的实施例的其他实施例也在本公开的范围内。因此,本公开的范围旨在仅通过参考随附权利要求来限定。

Claims (21)

1.一种数据存储设备,其包括:
非易失性固态存储器阵列;和
控制器,所述控制器被配置成:
接收来自主机设备的写入数据;
以仅下部页编程模式即LPO编程模式将所述写入数据编程到所述存储器阵列的第一块;以及
在所述第一块上执行数据合并操作,其中所述执行垃圾收集包括以非LPO编程模式将所述写入数据的至少一部分编程到第二块。
2.如权利要求1所述的数据存储设备,其中所述第二块以多级单元模式即MLC模式被编程。
3.如权利要求1所述的数据存储设备,其中所述控制器进一步被配置成当遇到故障状况时恢复来自所述第一块的所述写入数据,同时将所述写入数据的所述至少一部分编程到所述第二块。
4.如权利要求1所述的数据存储设备,其中所述固态存储器阵列包括MLC NAND闪存存储器。
5.如权利要求1所述的数据存储设备,其中所述数据合并操作是垃圾收集操作。
6.如权利要求1所述的数据存储设备,其中所述第一块的写入数据与奇偶校验数据的比率大于所述第二块的写入数据与奇偶校验数据的比率。
7.如权利要求1所述的数据存储设备,其中所述控制器进一步被配置成维持与所述固态存储器阵列中的多个块相关联的过时计数数据。
8.如权利要求7所述的数据存储设备,其中所述控制器进一步被配置成增加与所述第一块相关联的过时计数以反映所述第一块以LPO模式被编程。
9.如权利要求8所述的数据存储设备,其中所述控制器进一步被配置成增加与所述第一块相关联的所述过时计数以指示所述第一块大约50%过时。
10.如权利要求1所述的数据存储设备,其中所述控制器进一步被配置成维持与在所述固态存储器阵列中的多个块相关联的信息,所述信息指示所述多个块中的每个块已被选择用于LPO模式的次数。
11.如权利要求1所述的数据存储设备,其中所述控制器进一步被配置成实施预定弛豫时间段以防止在所述数据合并操作完成之后所述第一块在所述弛豫时间段内被重新选择为仅下部页块即LPO块。
12.如权利要求11所述的数据存储设备,其中所述弛豫时间段是大约60秒。
13.如权利要求11所述的数据存储设备,其中所述弛豫时间段至少部分通过将就绪块列表长度设置为预定值来实施。
14.一种在数据存储系统中存储数据的方法,所述方法包括:
接收来自主机设备的写入数据;
以仅下部页编程模式即LPO编程模式将所述写入数据编程到非易失性固态存储器阵列的第一块;以及
在所述第一块上执行数据合并,其中所述执行数据合并包括以非LPO编程模式将所述写入数据的至少一部分编程到第二块;
其中所述方法在所述数据存储系统的控制器的控制下被执行。
15.如权利要求14所述的方法,其进一步包括以多级单元模式即MLC模式编程所述第二块。
16.如权利要求14所述的方法,其进一步包括当遇到故障状况时恢复来自所述第一块的所述写入数据,同时将所述写入数据的所述至少一部分编程到所述第二块。
17.如权利要求14所述的方法,其中所述第一块的写入数据与奇偶校验数据的比率大于所述第二块的写入数据与奇偶校验数据的比率。
18.如权利要求14所述的方法,其进一步包括维持与所述固态存储器阵列中的多个块相关联的过时计数数据。
19.如权利要求18所述的方法,其进一步包括增加与所述第一块相关联的过时计数以反映所述第一块以LPO模式被编程。
20.如权利要求14所述的方法,其进一步包括实施预定弛豫时间段以防止在所述数据合并操作完成之后所述第一块在所述弛豫时间段内被重新选择为仅下部页块即LPO块。
21.如权利要求20所述的方法,其中所述弛豫时间段至少部分通过将就绪块列表长度设置为预定值来实施。
CN201580023720.2A 2014-05-06 2015-04-28 固态存储器损坏的减轻 Active CN106462493B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201461989420P 2014-05-06 2014-05-06
US61/989,420 2014-05-06
US14/312,144 2014-06-23
US14/312,144 US9564212B2 (en) 2014-05-06 2014-06-23 Solid-state memory corruption mitigation
PCT/US2015/028060 WO2015171369A1 (en) 2014-05-06 2015-04-28 Solid-state memory corruption mitigation

Publications (2)

Publication Number Publication Date
CN106462493A true CN106462493A (zh) 2017-02-22
CN106462493B CN106462493B (zh) 2019-08-20

Family

ID=54367948

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580023720.2A Active CN106462493B (zh) 2014-05-06 2015-04-28 固态存储器损坏的减轻

Country Status (3)

Country Link
US (2) US9564212B2 (zh)
CN (1) CN106462493B (zh)
WO (1) WO2015171369A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110147200A (zh) * 2018-02-13 2019-08-20 矽创电子股份有限公司 闪存的控制器及控制方法
CN111164576A (zh) * 2018-03-06 2020-05-15 西部数据技术公司 故障存储设备重建方法
CN112823331A (zh) * 2018-10-10 2021-05-18 阿里巴巴集团控股有限公司 用于具有较细粒度的并行多租户ssd中的数据恢复的系统和方法
CN113393884A (zh) * 2020-03-13 2021-09-14 西部数据技术公司 组合qlc编程方法

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9564212B2 (en) * 2014-05-06 2017-02-07 Western Digital Technologies, Inc. Solid-state memory corruption mitigation
US9798657B2 (en) 2014-10-15 2017-10-24 Samsung Electronics Co., Ltd. Data storage device including nonvolatile memory device and operating method thereof
TWI578320B (zh) * 2014-11-25 2017-04-11 旺宏電子股份有限公司 記憶體的操作方法及應用其之記憶體裝置
US10540274B2 (en) 2016-03-29 2020-01-21 Micron Technology, Inc. Memory devices including dynamic superblocks, and related methods and electronic systems
JP6524039B2 (ja) * 2016-09-23 2019-06-05 東芝メモリ株式会社 メモリシステム及び制御方法
WO2018174857A1 (en) * 2017-03-21 2018-09-27 Micron Technology, Inc. Apparatuses and methods for automated dynamic word line start voltage
US10319445B1 (en) * 2017-11-30 2019-06-11 Western Digital Technologies, Inc. Programming unprogrammed upper page during lower page programming of multi-level storage cells
US10949123B2 (en) * 2018-10-18 2021-03-16 Western Digital Technologies, Inc. Using interleaved writes to separate die planes
KR20210157157A (ko) 2020-06-19 2021-12-28 삼성전자주식회사 메모리 컨트롤러의 구동방법, 호스트의 구동방법 및 스토리지 장치

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080250300A1 (en) * 2007-03-29 2008-10-09 Nima Mokhlesi Method for decoding data in non-volatile storage using reliability metrics based on multiple reads
CN102792381A (zh) * 2010-02-17 2012-11-21 马维尔国际贸易有限公司 用于多电平存储器单元(mlc)快闪存储器的防数据破坏的保护
US20130024460A1 (en) * 2011-07-22 2013-01-24 Fusion-Io Apparatus, system, and method for indexing data of an append-only, log-based structure
US20130155760A1 (en) * 2011-12-15 2013-06-20 Everspin Technologies, Inc. Method of writing to a spin torque magnetic random access memory
US20140115233A1 (en) * 2012-10-23 2014-04-24 Seagate Technology Llc Restoring Virtualized GCU State Information

Family Cites Families (94)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6839801B2 (en) 2003-01-06 2005-01-04 International Business Machines Corporation Deferred writing of data to be synchronized on magnetic tape employing a non-volatile store
US6856556B1 (en) 2003-04-03 2005-02-15 Siliconsystems, Inc. Storage subsystem with embedded circuit for protecting against anomalies in power signal from host
US7502256B2 (en) 2004-11-30 2009-03-10 Siliconsystems, Inc. Systems and methods for reducing unauthorized data recovery from solid-state storage devices
US7412560B2 (en) 2004-12-16 2008-08-12 Sandisk Corporation Non-volatile memory and method with multi-stream updating
US7634585B2 (en) * 2005-11-04 2009-12-15 Sandisk Corporation In-line cache using nonvolatile memory between host and disk device
US7653778B2 (en) 2006-05-08 2010-01-26 Siliconsystems, Inc. Systems and methods for measuring the useful life of solid-state storage 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
US7509441B1 (en) 2006-06-30 2009-03-24 Siliconsystems, Inc. Systems and methods for segmenting and protecting a storage subsystem
US7447807B1 (en) 2006-06-30 2008-11-04 Siliconsystems, Inc. Systems and methods for storing data in segments of a storage subsystem
US8161227B1 (en) 2006-10-30 2012-04-17 Siliconsystems, Inc. Storage subsystem capable of programming field-programmable devices of a target computer system
US9153337B2 (en) 2006-12-11 2015-10-06 Marvell World Trade Ltd. Fatigue management system and method for hybrid nonvolatile solid state memory system
US8549236B2 (en) 2006-12-15 2013-10-01 Siliconsystems, Inc. Storage subsystem with multiple non-volatile memory arrays to protect against data losses
US7596643B2 (en) 2007-02-07 2009-09-29 Siliconsystems, Inc. Storage subsystem with configurable buffer
US8768890B2 (en) 2007-03-14 2014-07-01 Microsoft Corporation Delaying database writes for database consistency
US7925796B1 (en) 2007-05-03 2011-04-12 Emc Corporation Methods, systems, and computer program products for performing an input/output (I/O) operation that includes a virtual drain
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
US8095851B2 (en) 2007-09-06 2012-01-10 Siliconsystems, Inc. Storage subsystem capable of adjusting ECC settings based on monitored conditions
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
US7733712B1 (en) 2008-05-20 2010-06-08 Siliconsystems, Inc. Storage subsystem with embedded circuit for protecting against anomalies in power signal from host
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
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
US10079048B2 (en) 2009-03-24 2018-09-18 Western Digital Technologies, Inc. Adjusting access of non-volatile semiconductor memory based on access time
US8225035B2 (en) 2009-04-21 2012-07-17 Apple Inc. Systems and methods for operating a disk drive
WO2010144587A2 (en) 2009-06-12 2010-12-16 Violin Memory, Inc. Memory system having persistent garbage collection
US8332578B2 (en) 2009-07-31 2012-12-11 Intel Corporation Method and system to improve the performance of a multi-level cell (MLC) NAND flash memory
US9250687B1 (en) * 2009-08-10 2016-02-02 Ajoy Aswadhati High performance flexible storage system architecture
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
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
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
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
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
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
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
US8612804B1 (en) 2010-09-30 2013-12-17 Western Digital Technologies, Inc. System and method for improving wear-leveling performance in solid-state memory
TWI451435B (zh) 2010-10-08 2014-09-01 Phison Electronics Corp 非揮發性記憶體儲存裝置、記憶體控制器與資料儲存方法
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
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
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
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
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
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
US8713357B1 (en) 2011-09-06 2014-04-29 Western Digital Technologies, Inc. Systems and methods for detailed error reporting 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
US8700834B2 (en) 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
US20130103889A1 (en) 2011-10-25 2013-04-25 Ocz Technology Group Inc. Page-buffer management of non-volatile memory-based mass storage devices
US8977803B2 (en) 2011-11-21 2015-03-10 Western Digital Technologies, Inc. Disk drive data caching using a multi-tiered memory
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
US8862952B1 (en) * 2012-03-16 2014-10-14 Western Digital Technologies, Inc. Prioritized memory scanning for data storage systems
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
US9448924B2 (en) * 2014-01-08 2016-09-20 Netapp, Inc. Flash optimized, log-structured layer of a file system
US9564212B2 (en) * 2014-05-06 2017-02-07 Western Digital Technologies, Inc. Solid-state memory corruption mitigation

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080250300A1 (en) * 2007-03-29 2008-10-09 Nima Mokhlesi Method for decoding data in non-volatile storage using reliability metrics based on multiple reads
CN102792381A (zh) * 2010-02-17 2012-11-21 马维尔国际贸易有限公司 用于多电平存储器单元(mlc)快闪存储器的防数据破坏的保护
US20130024460A1 (en) * 2011-07-22 2013-01-24 Fusion-Io Apparatus, system, and method for indexing data of an append-only, log-based structure
US20130155760A1 (en) * 2011-12-15 2013-06-20 Everspin Technologies, Inc. Method of writing to a spin torque magnetic random access memory
US20140115233A1 (en) * 2012-10-23 2014-04-24 Seagate Technology Llc Restoring Virtualized GCU State Information

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110147200A (zh) * 2018-02-13 2019-08-20 矽创电子股份有限公司 闪存的控制器及控制方法
CN111164576A (zh) * 2018-03-06 2020-05-15 西部数据技术公司 故障存储设备重建方法
CN111164576B (zh) * 2018-03-06 2023-03-10 西部数据技术公司 故障存储设备重建方法
CN112823331A (zh) * 2018-10-10 2021-05-18 阿里巴巴集团控股有限公司 用于具有较细粒度的并行多租户ssd中的数据恢复的系统和方法
CN112823331B (zh) * 2018-10-10 2024-03-29 阿里巴巴集团控股有限公司 用于具有较细粒度的并行多租户ssd中的数据恢复的系统和方法
CN113393884A (zh) * 2020-03-13 2021-09-14 西部数据技术公司 组合qlc编程方法

Also Published As

Publication number Publication date
CN106462493B (zh) 2019-08-20
US10020065B2 (en) 2018-07-10
US20150324282A1 (en) 2015-11-12
US20170133100A1 (en) 2017-05-11
WO2015171369A1 (en) 2015-11-12
US9564212B2 (en) 2017-02-07

Similar Documents

Publication Publication Date Title
CN106462493B (zh) 固态存储器损坏的减轻
CN110045913B (zh) 垃圾收集的方法、记忆装置及其控制器和电子装置
AU2013345301B2 (en) Methods and devices for avoiding lower page corruption in data storage devices
US8909986B2 (en) Data storing method for solid state drive to preserve data integrity after power failure
US9921956B2 (en) System and method for tracking block level mapping overhead in a non-volatile memory
US8914670B2 (en) Redundancy schemes for non-volatile memory using parity zones having new and old parity blocks
CN103488578B (zh) 虚拟存储设备(vmd)应用/驱动器
CN102622306B (zh) 存储装置的坏块管理方法
CN103985409B (zh) 对于意外功率损失的数据保护
CN107391027A (zh) 廉价磁盘冗余阵列存储设备及其管理方法
US20130297850A1 (en) Solid state drive data storage system & method
US20120144102A1 (en) Flash memory based storage devices utilizing magnetoresistive random access memory (mram)
CN106170773A (zh) 用于裸芯上缓冲式非易失性存储器的选择性回拷
US20170371584A1 (en) Solid state storage device and data writing method thereof
TW201633314A (zh) 記憶體控制電路單元、記憶體儲存裝置及資料存取方法
TW201339958A (zh) 記憶體控制器、記憶體儲存裝置與資料寫入方法
CN105468998A (zh) 数据保护方法、数据保护装置以及固态硬盘存储系统
JP2011134031A (ja) 半導体記録装置および半導体記録システム
TWI661300B (zh) 記憶體的資料管理方法及記憶體裝置
TWI747532B (zh) 記憶體裝置
CN106033681B (zh) 存储器控制电路单元、存储器储存装置及数据存取方法
KR20190061473A (ko) NVMe-SSD 기반 RAID 스토리지 시스템
US20230376230A1 (en) Data storage with parity and partial read back in a redundant array
CN104464821A (zh) 一种防止MLC Nand Flash出现UECC问题的方法
Lee et al. Dual Address Mapping Method for Efficient Wear-Leveling of SSDs

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant