CN105683927A - 用于重新平衡贮存在闪速存储器装置中的数据的方法和系统 - Google Patents

用于重新平衡贮存在闪速存储器装置中的数据的方法和系统 Download PDF

Info

Publication number
CN105683927A
CN105683927A CN201480058672.6A CN201480058672A CN105683927A CN 105683927 A CN105683927 A CN 105683927A CN 201480058672 A CN201480058672 A CN 201480058672A CN 105683927 A CN105683927 A CN 105683927A
Authority
CN
China
Prior art keywords
flash memory
memory device
logic block
storage controller
data
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
CN201480058672.6A
Other languages
English (en)
Other versions
CN105683927B (zh
Inventor
W.F.克鲁格
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.)
SanDisk Corp
SanDisk Technologies LLC
Original Assignee
SanDisk Corp
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 SanDisk Corp filed Critical SanDisk Corp
Publication of CN105683927A publication Critical patent/CN105683927A/zh
Application granted granted Critical
Publication of CN105683927B publication Critical patent/CN105683927B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • 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
    • 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
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0647Migration mechanisms
    • 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/0653Monitoring storage devices or 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • 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/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/78Masking faults in memories by using spares or by reconfiguring using programmable devices
    • G11C29/80Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
    • G11C29/816Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout
    • G11C29/822Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout for read only memories
    • 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
    • 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/7202Allocation control and policies
    • 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/7204Capacity control, e.g. partitioning, end-of-life degradation
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices
    • 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/0638Organizing or formatting or addressing of data

Abstract

这里描述了增强包括贮存介质的贮存系统的耐受性的系统、方法和装置。方法包括:将多个闪速存储器装置分割为逻辑组块,每个逻辑组块包括一个或多个闪速存储器块;对于分布算法将权重分配到闪速存储器装置的每一个,其中权重基于至少多个可用的逻辑组块;并且根据分布算法将数据贮存在逻辑组块中。方法包括检测用于各个闪速存储器装置的触发条件。响应于检测触发条件,方法包括:降低各个闪速存储器装置的权重;更新分布算法以反映各个闪速存储器装置的降低的权重;并且根据更新的分布算法重新平衡贮存在多个闪速存储器装置中的数据。

Description

用于重新平衡贮存在闪速存储器装置中的数据的方法和系统
技术领域
公开的实施例一般地涉及存储器系统,并且具体地涉及改善包括贮存介质的贮存系统(例如,包括一个或多个闪速存储器装置)的耐受性。
背景技术
半导体存储器装置,包括闪速存储器,通常利用存储器单元来将数据贮存为电的值,诸如电荷或电压。闪速存储器单元,例如包括具有被用于贮存数据值的电荷表示的浮置栅极的单个晶体管。已经以各种方式促进了贮存密度的提高,包括由制造的发展使能的存储器单元在芯片上的密度的提高,以及从单级闪速存储器单元到多级闪速存储器单元的转变,使得可以由每个闪速存储器单元贮存两个或多个位。增加贮存密度的缺点在于贮存的数据更加倾向于被错误地贮存和/或读取。
在一些情况中,当检测到用于闪速存储器装置的触发条件时(例如,从闪速存储器装置读取不可恢复的码字,恢复码字所需的计算性资源超过预定的阈值,或者用于闪速存储器装置的编程-擦除(PE)周期的计数超过阈值值),整个闪速存储器装置被认为已经故障。相反,贮存在闪速存储器装置上的所有数据必须被复制并且贮存在不同的闪速存储器装置上。该整个装置的复制丢弃与被认为是故障的装置的仍工作的部分相关联的任何剩余寿命或值、消耗资源并且将过度的负担置于剩余的闪速存储器装置上。
发明内容
在一些实施例中,贮存控制器被配置为将多个闪速存储器装置分割为多个逻辑组块并且根据分布算法将数据贮存在多个逻辑组块中。在检测关于多个闪速存储器装置的各个闪速存储器装置的预定的触发条件之后,贮存控制器被配置为通过改变分布算法以及根据所述更新的分布算法在闪速存储器装置之中移动数据而更新分布算法。如此,当检测到关于闪速存储器装置的触发条件时逻辑组块被移动到新的位置,而不是整个闪速存储器装置故障并且因此立刻被复制。
附图说明
为了可以更加详细地理解本公开,可以具有参考各种实施例的特性的更加特定的描述,一些实施例在附图中说明。但是,附图仅示出了本公开的更加相关的特性并且从而不被认为是限制性的,因为说明书可能认可其他有效的特性。
图1是示出的根据一些实施例的数据贮存系统的实现方式框图。
图2A是示出的根据一些实施例的管理模块的实现方式框图。
图2B是示出的根据一些实施例的包括在图2A中的特征向量表的示意图。
图2C是示出的根据一些实施例的包括在图2B中的特征向量的示意图。
图3A是根据一些实施例的多个逻辑组块的框图。
图3B是根据一些实施例的对应于图3A中的多个逻辑组块的间接表的示意图。
图4A是根据一些实施例的多个逻辑组块的框图。
图4B是根据一些实施例的对应于在图4A中的多个逻辑组块的间接表的示意图。
图5-7示出了根据一些实施例的触发重新平衡过程的方法的流程图表示。
图8A-8C示出了根据一些实施例的管理贮存系统的方法的流程图表示。
根据惯例,在附图中示出的各种特性可能未按比例绘制。相应地,为了清晰,各种特性的大小可以任意地扩大或减小。此外,一些附图可能没有绘制给定系统、方法或装置的所有组件。最后,贯穿说明书和附图,相似的附图标记可以被用于表示相似的特性。
具体实施方式
这里所述的各种实施例包括可以改善包括贮存介质的贮存系统的耐受性(例如,包括一个或多个闪速存储器装置)的装置和/或方法。一些实施例包括用于通过重新平衡贮存在贮存系统的闪速存储器装置中的数据而管理贮存系统的方法和/或系统。
更具体地,一些实施例包括管理包括贮存控制器和多个闪速存储器装置的贮存系统的方法,其中每个闪速存储器装置具有多个闪速存储器块。在一些实施例中,方法在贮存控制器进行。方法包括:将多个闪速存储器装置的每一个分割为多个逻辑组块,其中每个逻辑组块包括一个或多个闪速存储器块;并且对于分布算法将权重分配到多个闪速存储器装置的每一个,其中权重基于至少多个可用的逻辑组块。方法还包括根据分布算法将数据贮存在多个闪速存储器装置的多个逻辑组块中。方法还包括检测关于多个闪速存储器装置的各个闪速存储器装置的预定的触发条件。响应于检测预定的触发条件,方法包括:降低对应于各个闪速存储器装置的权重;更新分布算法以反映各个闪速存储器装置的降低的权重;并且根据更新的分布算法重新平衡贮存在多个闪速存储器装置中的数据。
一些实施例包括贮存控制器,其包括:一个或多个处理器;主机接口,被配置为将贮存控制器耦接到主机;贮存介质接口,被配置为将贮存控制器耦接到包括多个闪速存储器装置的贮存介质,多个闪速存储器装置的每一个具有多个闪速存储器块;以及贮存控制器,贮存指令,当由一个或多个处理器执行该指令时,使得贮存控制器进行这里所述的任何方法的操作。
一些实施例包括非瞬时性计算机可读贮存介质,其贮存一个或多个程序以用于由耦接到包括多个闪速存储器装置的贮存介质的贮存控制器的一个或多个处理器执行,其中每个闪速存储器装置包括多个闪速存储器块,一个或多个程序包括指令,当由一个或多个处理器执行该指令时,使得贮存控制器进行这里所述的任何方法的操作。
在这里描述许多细节以便于提供对在附图中示出的示例实施例的透彻理解。但是,可以不需要许多特定细节而实施一些实施例,并且权利要求的范围仅由在权利要求中特别记述的那些特性和方面限制。此外,没有以详尽的细节描述已知的方法、组件和电路,以便不必要地混淆这里所述的实施例的更加相关的方面。
图1是根据一些实施例的数据贮存系统100的实现方式的示意图。尽管示出了一些示例特性,但是为了简洁而没有示出各种其它特性以便不混淆这里所述的示例实施例的更加相关的方面。为此,作为非限制性示例,数据贮存系统100包括贮存控制器120和贮存介质130,并且数据贮存系统100被结合计算机系统110使用。在一些实施例中,贮存介质130是单个闪速存储器装置,而在其它实施例中,贮存介质130包括多个闪速存储器装置。在一些实施例中,贮存介质130是NAND型闪速存储器或NOR型闪速存储器。此外,在一些实施例中,贮存控制器120是固态驱动(SSD)控制器。但是,根据多种实施例的方面可以包括其它类型的贮存介质(例如,PCRAM、ReRAM、STT-RAM等)。在一些实施例中,闪速存储器装置包括一个或多个闪速存储器裸芯、一个或多个闪速存储器封装、一个或多个闪速存储器信道、一个或多个SSD、一个或多个SSD阵列等。
计算机系统110通过数据连接101耦接到贮存控制器120。但是,在一些实施例中,计算机系统110包括贮存控制器120作为组件和/或子系统。例如,贮存控制器120的一些或全部功能由执行在计算机系统110上的软件实现。计算机系统110可以是任何合适的计算机装置,诸如计算机、膝上型计算机、平板装置、网本、上网亭、个人数字助理、移动电话、智能电话、游戏装置、计算机服务器或任何其它计算装置。计算机系统110有时被称为主机或主机系统。在一些实施例中,计算机系统110包括一个或多个处理器、一个或多个类型的存储器、显示器和/或其它用户接口组件,诸如键盘、触摸屏、鼠标、触控板、数码相机和/或任何数量的补充装置以添加功能。
贮存介质130通过连接103耦接到贮存控制器120。连接103有时被称为数据连接,但是通常传送除了数据以外的命令,并且可选地传送除了将被贮存在贮存介质130中的数据值和从贮存介质130读取的数据值以外的元数据、误差校正信息和/或其它信息。在一些实施例中,但是,贮存控制器120和贮存介质130包含在与其组件相同的装置中。此外,在一些实现方式中,存储器控制器120和贮存介质130被嵌入在主机装置中,该主机装置诸如移动装置、平板、其它计算机或计算机控制的装置,并且这里所述的方法由嵌入式存储器控制器进行。贮存介质130可以包括任何数量的(即,一个或多个)存储器装置,该存储器装置非限制性地包括,诸如闪速存储器的非易失性半导体存储器装置。例如,闪速存储器装置可以被配置为用于适用于诸如云计算的应用的企业贮存、用于数据库应用、主要和/或二级贮存、或用于缓存贮存在(或将被贮存在)诸如硬盘驱动的二级贮存中的数据。此外和/或可替换地,闪速存储器还可以被配置为相对小规模的应用,诸如个人闪速驱动或用于个人、膝上型和平板计算机的硬盘替换。
贮存介质130被分割为多个可编址的并且可单独选择的块,诸如可选择的部分131。在一些实施例中,可单独选择的块是闪速存储器装置中的最小尺寸的可擦除单元。换句话说,每个块包含可以被同时擦除的最小数量的存储器单元。每个块通常进一步被分割为多个页和/或字线,其中每个页或字线通常是块中最小的可单独访问的(可读)部分的实例。然而,在一些实施例中(例如,使用一些类型的闪速存储器),数据组的最小的可单独访问的单元是区段,该区段是页的子单元。就是说,块包括多个页,每个页包含多个区段,并且每个区段是用于从闪速存储器装置读取数据的数据的最小单元。
例如,一个块包括任何数量的页,例如,64页、128页、256页或另外的合适数量的页。块通常被组合为多个区。每个块区可以在某些程度上被独立地管理,这提高了用于并行操作的并行度并且简化了贮存介质130的管理。
如上所述,虽然非易失性半导体存储器装置的数据贮存密度普遍地提高,提高贮存密度的缺点在于贮存的数据更加倾向于被错误地贮存和/或读取。如将在下面更加详细描述的,误差控制码可以被用于限制由电波动引起的不可校正的误差的数量、贮存介质、操作条件、装置历史、写入-读取电路等中的瑕疵、或这些和各种其它因素的组合。
在一些实施例中,贮存控制器120包括管理模块121、输入缓冲器123、输出缓冲器124、误差控制模块125和贮存介质接口(I/O)128。贮存控制器120可以包括为了简洁而没有示出的各种额外的特性以便于不混淆这里公开的示例实施例的更加相关的特性,并且特性的不同的布置是可能的。输入和输出缓冲器123、124通过将接口提供到计算机系统110。类似地,贮存介质I/O128通过连接103将接口提供到贮存介质130。在一些实施例中,贮存介质I/O128包括读取和写入电路,包括能够将读取信号提供到贮存介质130的电路(例如,用于NAND型闪速存储器的读取阈值电压)。
在一些实施例中,管理模块121包括一个或多个处理单元(CPU,有时还被称为处理器)122,该一个或多个处理单元被配置为执行一个或多个程序(例如,在管理模块121中)中的指令。在一些实施例中,一个或多个CPU122由贮存控制器120的功能中的、并且在一些情况中由超出贮存控制器120的功能的一个或多个组件共享。管理模块121耦接到输入缓冲器123、输出缓冲器124(连接未示出)、误差控制模块125和贮存介质I/O128以便于协调这些组件的操作。
误差控制模块125耦接到贮存介质I/O128、输入缓冲器123和输出缓冲器124。提供误差控制模块125以限制被无意引入到数据中的不可校正的误差的数量。在一些实施例中,误差控制模块125由管理模块121的一个或多个CPU122在软件中执行,并且在其它实施例中,全部或部分使用专用电路进行编码和译码功能而实现误差控制模块125。在一些实施例中,由执行在计算机系统110上的软件全部或部分实现误差控制模块125。为此,误差控制模块125包括编码器126和译码器127。编码器126通过施加误差控制码以产生码字而编码数据,该码字之后被贮存在贮存介质130中。
当从贮存介质130读取编码的数据(例如,一个或多个码字)时,译码器127将译码过程施加到编码的数据以恢复数据,并且在误差控制码的误差校正能力中校正恢复的数据中的误差。本领域的技术人员将理解各种误差控制码具有不同的误差检测和校正能力,并且该特定的码由于超出本公开的范围的原因而被选择以用于各种应用。如此,这里不提供对各种类型的误差控制码的详尽的概述。此外,本领域的技术人员将理解每种类型或系列的误差控制码可以具有特定于误差控制码的类型或系列的编码和译码算法。另一方面,一些算法可以至少一些程度上用在译码多个不同类型的或系列的误差控制码中。如此,为了简洁,这里没有提供对本领域的技术人员一般可用并且已知的各种类型的编码和译码算法的详尽的描述。
在写入操作期间,输入缓冲器123从计算机系统110接收将贮存在贮存介质130中的数据。保持在输入缓冲器123中的数据可被用于编码器126,该编码器126编码数据以产生一个或多个码字。一个或多个码字可被用于贮存介质I/O128,该贮存介质I/O128以取决于所使用的贮存介质的类型的方式将一个或多个码字转移到贮存介质130。
当计算机系统(主机)110将一个或多个主机读取命令(例如,经由数据线101)发送到贮存控制器120从贮存介质130请求数据时起始读取操作。贮存控制器120将一个或多个读取访问命令经由贮存介质I/O128发送到贮存介质130,以根据由一个或多个主机读取命令指明的存储器位置(地址)获得原始读取数据。贮存介质I/O128将原始读取数据(例如,包括一个或多个码字)提供到译码器127。如果译码成功,译码的数据被提供到输出缓冲器124,其中译码的数据可被用于计算机系统110。在一些实施例中,如果译码不成功,贮存控制器120可以求助于多个补救措施或者提供不可解决的误差条件的指示。
闪速存储器装置利用存储器单元以将数据贮存为电的值,诸如电荷或电压。每个闪速存储器单元通常包括具有浮置栅极的单个晶体管,该浮置栅极被用于贮存修改晶体管的阈值电压(即,导通晶体管所需要的电压)的电荷。电荷的大小,以及该电荷创建的相应的阈值电压,被用于表示一个或多个数据值。在一些实施例中,在读取操作期间,读取阈值电压被施加到晶体管的控制栅极并且产生的感测的电流或电压被映射到数据值。
在闪速存储器单元的上下文中,术语“单元电压”和“存储器单元电压”,意味着存储器单元的阈值电压,其是需要施加到存储器单元的晶体管的栅极以便于晶体管导通电流的最小电压。类似地,施加到闪速存储器单元的读取阈值电压(有时也被称为读取信号和读取电压),是施加到闪速存储器单元的栅极以确定存储器单元在该栅极电压处是否导通电流的栅极电压。在一些实施例中,当闪速存储器单元的晶体管在指示单元电压小于读取阈值电压的给定读取阈值电压处导通电流时,对于该读取操作的原始数据值为“1”,否则原始数据值为“0”。
图2A是示出根据一些实施例的示例性管理模块121的框图。管理模块121通常包括:一个或多个处理单元(CPU)122,用于执行贮存在存储器202中的模块、程序和/或指令并且从而进行处理操作;存储器202;以及一个或多个通信总线204,用于互连这些组件。一个或多个通信总线204,可选地包括互连系统组件并控制系统组件之间的通信的电路(有时被称为芯片组)。管理模块121由一个或多个通信总线204耦接到缓冲器123、缓冲器124、误差控制模块125和贮存介质I/O128。存储器202包括高速随机存取存储器——诸如DRAM、SRAM、DDRRAM,或者其它随机存取固态存储器装置,并且可以包括非易失性存储器——诸如一个或多个磁盘贮存装置、光盘贮存装置,闪速存储器装置、或者其它非易失性固态贮存装置。存储器202,可选地包括位于远离(一个或多个)CPU122的一个或多个贮存装置。存储器202,或者可替换地存储器202中的(一个或多个)非易失性存储器装置,包括非瞬时性计算机可读贮存介质。在一些实施例中,存储器202或存储器202的非瞬时性计算机可读贮存介质,贮存以下程序、模块和数据结构或其子集或超集:
数据读取模块206,用于从包括多个闪速存储器装置的贮存介质130读取数据;
数据写入模块208,用于将数据写入到贮存介质130;
数据擦除模块210,用于将数据从贮存介质130擦除;
逻辑组块管理模块212,用于将多个闪速存储器装置的每一个分割为多个逻辑组块,包括:
逻辑到物理的映射214,其将用于逻辑组块的每一个的逻辑地址(或一组逻辑地址)与物理地址(或一组物理地址)相关联;
冗余模块216,用于将多个逻辑组块布置为冗余组,包括用于维持包括冗余组的每个逻辑组块的位置(或物理地址)的间接表218;
触发条件检测模块220,用于检测关于多个闪速存储器装置的各个闪速存储器装置的触发条件;
分布模块222,用于根据分布算法在多个逻辑组块中贮存数据,包括:
算法更新模块224,用于更新分布算法;以及
平衡模块226,用于在多个闪速存储器装置之中平衡(或重新平衡)贮存的数据;
重新编码模块232,用于以更高水平的误差校正保护重新编码逻辑组块中的数据;以及
特征向量表234,包括许多特征向量236,其每一个贮存用于贮存介质130的各个部分(例如,贮存介质130的闪速存储器装置、裸芯、块区、块、字线、字线区或页部分)的特征数据。
上述识别的元件的每一个可以贮存在之前提到的存储器装置的一个或多个中,并且对应于用于进行上述功能的指令集。上述识别的模块或程序(即,指令集)不需要实现为单独的软件程序、规程或模块,并且从而这些模块的各种子集可以组合或者在各种实施例中另外地重新布置。在一些实施例中,存储器202可以贮存以上识别的模块和数据结构的子集。此外,存储器202可以贮存以上未描述的额外的模块和数据结构。在一些实施例中,贮存在存储器202中的程序、模块和数据结构,或者存储器202的非瞬时性计算机可读贮存介质,提供用于实现参考图8A-8C在下面所述的任何方法的指令。在一些实施例中,这些模块的一些或全部可以用包含模块功能的部分或全部的专用的硬件电路实现。
尽管图2A示出了管理模块121,但是图2A相比于这里所述的实施例的结构性示意更倾向于作为可能出现在管理模块中的各种特性的功能性描述。实践中,并且如由本领域普通技术人员识别的,单独示出的程序、模块和数据结构可以被组合并且一些程序、模块和数据结构可以被分开。
图2B是示出根据一些实施例的特征向量表234的实现方式的框图。特征向量表234包括特征向量236的集合,每个特征向量236贮存与贮存介质130的各个部分(例如,贮存介质130的区别装置、裸芯、块区、块、字线、字线区或页部分)相关联的特征数据。在一些实施例中,特征向量236的集合中的每个向量(例如,向量236-1、向量236-2、...、向量236-n)贮存在至少两个时间段(例如,时间T-1和时间T-2、或X编程-擦除(PE)周期和2XPE周期)的每个期间得到的特征数据。在一些实施例中,统计地得到贮存在特征向量236中的特征数据。例如,而不限制,在其中贮存介质(例如,贮存介质130,图1)包括多个闪速存储器装置的一些实施例中,特征向量表234包括用于每个区别闪速存储器装置的至少一个特征向量。在另外的示例中,在一些实施例中,特征向量表234包括用于贮存介质130中的每个闪速存储器装置的一组区别特征向量236,并且用于每个闪速存储器装置的区别特征向量236的组包括用于闪速存储器装置中的每个闪速存储器裸芯的至少一个区别特征向量。参考图2C在下面描述了特征向量236的更加详细的示例实施例。
图2C是根据一些实施例的用于多个闪速存储器装置的各个闪速存储器装置的特征向量240(例如,对应于图2B中示出的特征向量236的一个)的实现方式的示意图。在一些实施例中,贮存在特征向量240中的特征数据包括贮存介质特征参数值——诸如指示用于各个闪速存储器装置的故障的闪速存储器块的数量的故障的块计数器字段242,指示在各个闪速存储器装置上进行的PE周期的数量的当前计数的编程-擦除(PE)周期字段244,以及具有用于各个闪速存储器装置的一个或多个读取阈值电压的读取阈值电压字段246。在一些实施例中,一个或多个贮存介质特征参数值提供以下至少一个的指示:与贮存介质的各个部分(例如,贮存介质130的区别装置、裸芯、块区、块、字线、字线区或页部分)相关联的物理特征、与贮存介质的各个部分相关联的操作模式、与贮存介质的各个部分相关联的使用历史、与贮存介质的各个部分相关联的条件特征、与贮存介质的各个部分相关联的读取类型以及与贮存介质的各个部分相关联的(一个或多个)位置。
图3A是示出根据一些实施例的多个逻辑组块的框图。图3A示出了包括在不一定是相同尺寸的贮存介质130(例如,装置1、2、3、4、5、6、...)中的多个闪速存储器装置。在一些实施例中,贮存介质130包括更多或更少数量的闪速存储器装置。在一些实施例中,多个闪速存储器装置的每一个是单裸芯或多裸芯闪速存储器装置。在一些实施例中,贮存控制器120和贮存介质130包括贮存系统,其中贮存介质130包括诸如闪速存储器装置的一个或多个存储器装置。
在图3A中,例如,贮存控制器120或其组件(例如,逻辑组块管理模块212,图2A)将闪速存储器装置的每一个分割为不一定是相同尺寸的多个逻辑组块。例如,装置1被分割为逻辑组块1a、1b、1c、1d、1e。每个逻辑组块被分配到逻辑地址(或逻辑地址的组),该逻辑地址在逻辑到物理的映射214中被映射到物理地址(或物理地址的组)。在一些实施例中,逻辑组块的尺寸由贮存系统的系统管理员在软件中确定。在一些实施例中,逻辑组块的尺寸由贮存系统使用的协议确定。
在一些实施例中,贮存控制器120或其组件(例如,分布模块222,图2A)被配置为根据分布算法将数据贮存在多个逻辑组块中。在一些实施例中,分布算法使用可扩展的哈希函数伪随机地识别逻辑组块,在该逻辑组块中基于映射层级和一组分布规则贮存数据。例如,分布算法可以从可伸缩哈希(CRUSH)算法之下的控制的复制中得到,该算法在Weil,SageA.(2007),CEPH:可靠的、可伸缩并且高性能分布的贮存(Reliable,Scalable,andHigh-PerformanceDistributedStorage)(博士论文)中描述。在一些实施例中,映射层级反映贮存系统(例如,贮存介质130)的贮存资源。例如,当贮存介质130包括企业贮存环境时,映射层级包括在企业贮存环境中的行的数量、每行柜的数量、每柜架的数量、每架闪速存储器装置的数量以及每个闪速存储器装置的权重。在一些实施例中,层级的每一级(即,行、柜、架、闪速存储器装置)被认为是故障域。在一些实施例中,贮存控制器120或其组件(例如,算法更新模块224,图2A)被配置为由于贮存资源(例如,闪速存储器装置、整个框架等)被添加到企业贮存环境或者从企业贮存环境移除来修改映射层级。
在一些实施例中,分布规则组包括必须被贮存的多个数据的冗余的副本、数据的冗余的副本之间的多个故障域、以及当在检测关于各个闪速存储器装置的预定的触发条件时将逻辑组块从各个闪速存储器装置迁移到第二闪速存储器装置时,必须经过多个故障域。例如,如果分布规则组指示迁移的逻辑组块必须经过至少两个故障域并且各个逻辑组块贮存在行1,柜2,架3,装置4中,各个逻辑组块必须至少被迁移到(例如,复制并且复制的副本贮存在)柜2(例如,穿过装置和架故障域)中的不同的架中。在一些实施例中,分布规则组被选中使得迁移的逻辑组块被贮存在由不同的存储器控制器控制的不同的电子电路中,或者位于与各个逻辑组块不相同的物理位置中。例如,分布规则组指示三个数据的冗余的副本必须贮存在闪速存储器装置的不共享相同的电子电路的不同的柜中。
图3A还示出了用于多个闪速存储器装置的每一个的权重。在图3A中,例如,多个闪速存储器装置的每一个具有等于五的权重。各个闪速存储器装置的权重基于至少分配到闪速存储器装置的逻辑组块的数量或者在可用于贮存数据的闪速存储器装置上的逻辑组块的数量。例如,逻辑组块当其已经被分配到逻辑地址(或一组逻辑地址)时被认为是被分配了。
图3B是根据一些实施例的对应于图3A中的多个逻辑组块的间接表的示意图。在一些实施例中,在将多个闪速存储器装置分割为多个逻辑组块之后(或者与此同时),贮存控制器120或其组件(例如,冗余模块216,图2A)被配置为将多个逻辑组块布置为冗余组,其中每个冗余组包括一个或多个逻辑组块。在一些实施例中,每个冗余组贮存足以使能恢复贮存在一个或多个逻辑组块的至少一个中的数据的冗余的数据。间接表218包括在每个冗余组中的一个或多个逻辑组块的位置(或物理地址)。在一些实施例中,贮存控制器120或其组件(例如,冗余模块216,图2A)被配置为由于冗余组中的一个或多个逻辑组块的物理地址随时间改变(例如,由于逻辑组块在闪速存储器装置之间迁移)而维持和更新间接表218。
在图3B中,例如,间接表218示出了用于冗余组1中的逻辑组块1的物理地址位于闪速存储器装置1(例如,由坐标1,1指示)处的第一位置(或物理地址的第一范围)中,用于冗余组1中的逻辑组块2的物理地址位于闪速存储器装置2(例如,由坐标2,1指示)处的第一位置(或物理地址的第一范围)中,用于冗余组1中的逻辑组块3的物理地址位于闪速存储器装置3(例如,由坐标3,1指示)处的第一位置(或物理地址的第一范围)中,用于冗余组1中的逻辑组块4的物理地址位于闪速存储器装置4(例如,由坐标4,1指示)处的第一位置(或物理地址的第一范围)中,用于冗余组1中的逻辑组块5的物理地址位于闪速存储器装置5(例如,由坐标5,1指示)处的第一位置(或物理地址的第一范围)中,并且用于冗余组1中的逻辑组块6的物理地址位于闪速存储器装置6(例如,由坐标6,1指示)处的第一位置(或物理地址的第一范围)中。在图3B中,例如,包括逻辑组块1a、2a、3a、4a、5a、6a的冗余组1在六个闪速存储器装置(例如,连续的RAID条带)之上被冗余地编码。在图3B中,例如,冗余组2-5遵循与冗余组1类似的组织化方案。本领域普通技术人员将理解,可以实现多种冗余方案但是为了简洁的原因而没有在此讨论。
图4A是根据一些实施例的多个逻辑组块的框图。例如,在检测关于多个闪速存储器装置的各个闪速存储器装置的预定的触发条件之后,贮存控制器120或其组件(例如,分布模块224,图2A)被配置为降低与各个闪速存储器装置相关联的权重。在下面参考图5-7更加详细地讨论了预定的触发条件的检测。在图4A中,例如,由于用于闪速存储器装置1的预定的触发条件的检测,对应于闪速存储器装置1的权重(例如,W1)已经从五降低到四。在一些实施例中,贮存控制器120或其组件(例如,分布模块224,图2A)还被配置为更新分布算法以反映用于闪速存储器装置1的降低的权重。
在一些实施例中,在更新分布算法之后,贮存在多个闪速存储器装置中的数据根据更新的分布算法被重新平衡。在一些实施例中,重新平衡贮存在多个闪速存储器装置中的数据包括将至少一个逻辑组块从各个闪速存储器装置(检测到用于其的预定的触发条件)迁移到不同的闪速存储器装置。在图4A中,例如,逻辑组块1c已经被划掉,因为其根据分布算法已经从闪速存储器装置1迁移出到不同的闪速存储器装置。应注意的是,在一些实施例中,触发迁移的预定的条件不一定需要源自于被选择用于迁移的各个逻辑组块中,仅需要在相同的闪速存储器装置中。
图4B是根据一些实施例的对应于图4A中的多个逻辑组块的间接表的示意图。间接表218是图3B中示出的间接表的更新的版本。在图4B中,间接表218反映在图4A中示出的多个闪速存储器装置的更新的权重。图4B,例如,示出了冗余组3中的逻辑组块1和2具有新的物理地址(例如,由坐标X,X指示),因为逻辑组块1c和2c已经根据更新的分布算法从闪速存储器装置1和2迁移出并且已经贮存在不同的闪速存储器装置处。
图5示出了根据一些实施例的触发重新平衡过程的方法500的流程图表示。在一些实施例中,在贮存系统处进行的方法500包括贮存控制器120,和包括各个闪速存储器装置的多个闪速存储器装置(例如,贮存介质130,图1)。
在步骤502处,各个闪速存储器装置确定已经故障或者在将来有时将发生故障的各个闪速存储器装置的闪速存储器块的阈值数量。在一些实施例中,多个闪速存储器装置的每一个保持指示用于各个闪速存储器装置的故障的闪速存储器块的数量的计数器。在一些实施例中,贮存控制器120或其组件被配置为维持多个闪速存储器装置的每一个的计数器,该计数器指示用于多个闪速存储器装置的各个闪速存储器装置的故障的闪速存储器块的数量。在一些实施例中,贮存控制器120或其组件被配置为在特征向量表234中贮存并且维持用于多个闪速存储器装置的每一个的特征向量236的集合。在一些实施例中,用于各个闪速存储器装置的各个特征向量236包括指示用于各个闪速存储器装置的故障的闪速存储器块的数量的故障的块计数器字段242。在一些实施例中,当从闪速存储器块读取的一个或多个码字是不可校正的时,或者在从闪速存储器块读取一个或多个码字之后产生的其它误差校正码(ECC)信息指示对应于一个或多个码字的误码率超过预定的阈值时,闪速存储器块故障。在一些实施例中,当用于闪速存储器块的PE周期的计数超过预定的阈值时,闪速存储器块故障。在一些实施例中,故障的闪速存储器块的阈值数等于在逻辑组块中的闪速存储器块的数量。在一些实施例中,故障的闪速存储器块的阈值数量等于在逻辑组块中的闪速存储器块的数量的整数倍数。
在步骤504处,各个闪速存储器装置减少其宣传的尺寸。在一些实施例中,当前(或减少的)宣传的尺寸和之前宣传的尺寸之间的差等于包括逻辑组块的闪速存储器块的数量。在一些实施例中,闪速存储器装置的宣传的尺寸是向贮存控制器120宣传的、等于贮存数据并且可用于贮存数据的逻辑组块的量的字节或地址的量。在一些实施例中,闪速存储器装置的宣传的尺寸等于包括闪速存储器装置的闪速存储器块的总量和故障的闪速存储器块的数量之间的差。
在步骤506处,贮存控制器120将存储器访问请求(例如,读取或写入操作)引导到各个闪速存储器装置。在一些实施例中,贮存控制器120响应于来自主机的请求,将存储器访问请求引导到各个闪速存储器装置以在对应于与各个闪速存储器装置相关联的存储器位置的逻辑地址处进行存储器访问操作。
在步骤508处,各个闪速存储器装置响应于接收存储器访问请求,将延迟的误差返回到贮存控制器120。延迟的误差指示用于各个闪速存储器装置的阈值数量的闪速存储器块已经故障。例如,当由贮存系统使用小型计算机系统接口(SCSI)协议时,延迟的误差可以是当接收存储器访问请求时仅返回(或报告)到贮存控制器120的延迟的SCSI误差。
在步骤510处,响应于接收延迟的误差,贮存控制器120查询各个闪速存储器装置以便于确定其当前宣传的尺寸。在一些实施例中,贮存控制器120或其组件(例如,触发条件检测模块220,图2A)被配置为响应于接收延迟的误差而检测关于各个闪速存储器装置的预定的触发条件。可替换地,响应于接收延迟的误差,贮存控制器120起始关于各个闪速存储器装置的重新平衡过程(在下面关于方法800更加详细地描述)。
在步骤512处,各个闪速存储器装置响应于接收来自贮存控制器120的查询,返回当前(即,减少的)宣传的尺寸。
在步骤514处,贮存控制器120确定由各个闪速存储器装置返回的当前宣传的尺寸是否小于各个闪速存储器装置的之前宣传的尺寸。在一些实施例中,贮存控制器120确定由各个闪速存储器装置返回的当前宣传的尺寸是否小于由各个闪速存储器装置贮存的数据的量。例如,这指示至少等于当前宣传的尺寸和由各个闪速存储器装置贮存的数据的量之间的差的数据的量需要被迁移到不同于各个闪速存储器装置的第二闪速存储器装置。
在步骤516处,根据各个闪速存储器装置的当前宣传的尺寸小于各个闪速存储器装置的之前宣传的尺寸的确定,贮存控制器120起始关于各个闪速存储器装置的重新平衡过程(在下面关于方法800更加详细地描述)。
图6示出了根据一些实施例的触发重新平衡过程的方法600的流程图表示。在一些实施例中,方法600在包括贮存控制器120和多个闪速存储器装置(例如,贮存介质130,图1)的贮存系统处进行,该多个闪速存储器装置包括各个闪速存储器装置。
在步骤602处,各个闪速存储器装置确定各个闪速存储器装置的阈值数量的闪速存储器块已经故障或者在将来有时可能发生故障。参见以上关于图5的步骤502的例如关于用于确定各个闪速存储器装置是否已经故障的准则的讨论。
在步骤604处,响应于步骤602中的确定,各个闪速存储器装置将通知返回到贮存控制器120。该通知指示各个闪速存储器装置的阈值数量的闪速存储器块已经故障。例如,当由贮存系统使用小型计算机系统接口(SCSI)协议时,该误差可能是主动式SCSI硬件误差。
在步骤606处,响应于接收来自各个闪速存储器装置的通知,贮存控制器120起始关于各个闪速存储器装置的重新平衡过程(在下面关于方法800更加详细地描述)。在一些实施例中,贮存控制器120或其组件(例如,触发条件检测模块220,图2A)被配置为响应于接收误差,检测关于各个闪速存储器装置的预定的触发条件。
图7示出了根据一些实施例的触发重新平衡过程的方法700的流程图表示。在一些实施例中,方法700在贮存控制器120处进行。
在步骤702处,贮存控制器120确定用于多个闪速存储器装置的各个闪速存储器装置的阈值数量的闪速存储器块已经故障或者在将来有时可能发生故障。参见以上关于图5的步骤502的例如关于用于确定各个闪速存储器装置是否已经故障的准则的讨论。
在步骤704处,响应于确定用于各个闪速存储器装置的阈值数量的闪速存储器块已经故障,贮存控制器120起始关于各个闪速存储器装置的重新平衡过程(在下面关于方法800更加详细地描述)。在一些实施例中,贮存控制器120或其组件(例如,触发条件检测模块220,图2A)被配置为响应于确定用于各个闪速存储器装置的阈值数量的闪速存储器块已经故障,检测关于各个闪速存储器装置的预定的触发条件。
图8A-8C示出了管理包括贮存控制器和多个闪速存储器装置的贮存系统的方法800的流程图表示,其中每个闪速存储器装置具有多个闪速存储器块。在一些实施例中,方法800由图1中的贮存控制器120进行,该贮存控制器120区别于图1的贮存介质130,并且由一个或多个连接(例如,连接103,图1)耦接到图1的贮存介质130(例如,包括多个闪速存储器装置)。可选的操作由虚线指示(例如,具有虚线边界的方框)。
在一些实施例中,方法800由贮存控制器120或贮存控制器120的一个或多个组件(例如,管理模块121,图1和2A)进行。在一些实施例中,方法800由贮存在非瞬时性计算机可读贮存介质中的指令以及由装置的一个或多个处理器(诸如管理模块121的一个或多个处理单元(CPU)122)执行的指令管理。在一些实施例中,方法800全部或部分由计算机系统110进行。
贮存控制器将多个闪速存储器装置的每一个分割(802)为多个逻辑组块,其中每个逻辑组块包括一个或多个闪速存储器块。在一些实施例中,贮存控制器120或其组件(例如,逻辑组块管理模块218,图2A)被配置为将多个闪速存储器装置的每一个分割为多个逻辑组块。此外,用于多个逻辑组块的每一个的逻辑地址(或逻辑地址的组)在逻辑到物理的映射214中与物理地址(或物理地址的组)相关联。在一些实施例中,贮存控制器120或其组件(例如,逻辑组块管理模块218,图2A)被配置为随着逻辑组块在闪速存储器装置之间迁移而维持并且更新逻辑到物理的映射214。
在一些实施例中,由软件预先确定(804)多个逻辑组块的尺寸。例如,贮存系统的管理员能够确定逻辑组块的尺寸。通常,逻辑组块的尺寸大于或等于1MB。
在一些实施例中,基于由贮存系统使用的协议确定(806)多个逻辑组块的尺寸。例如,当小型计算机系统接口(SCSI)协议被用于贮存系统时,逻辑组块可以是逻辑单元数量(LUN)。SCSI协议在贮存系统中支持达64,000个LUN;但是,一些操作系统仅支持达16,000个LUN。例如,8TB贮存系统可以被分割为16,000个500MBLUN。
贮存控制器对于分布算法将权重分配(808)到多个闪速存储器装置的每一个,其中权重对应于(例如,基于至少)多个可用的逻辑组块。在一些实施例中,逻辑组块当其被分配逻辑地址(或逻辑地址组)和/或能够贮存数据时是可用的。
贮存控制器根据分布算法将数据贮存(810)在多个闪速存储器装置的多个逻辑组块中。在一些实施例中,分布算法使用可扩展的哈希函数伪随机地识别逻辑组块,在该逻辑组块中基于映射层级和一组分布规则贮存数据。在一些实施例中,映射层级反映贮存系统(例如,贮存介质130,图1)的可用的贮存资源以及贮存系统中的多个闪速存储器装置的权重。在一些实施例中,分布规则组包括必须被贮存的多个数据的冗余的副本、数据的冗余的副本之间的多个故障域、以及当在闪速存储器装置之前迁移逻辑组块时必须经过的多个故障域。
贮存控制器检测(812)关于多个闪速存储器装置的各个闪速存储器装置的预定的触发条件。在图5中,例如,贮存控制器120或其组件(例如,触发条件检测模块220,图2A)响应于从各个闪速存储器装置接收延迟的误差,而检测关于各个闪速存储器装置的预定的触发条件。在该示例中,在从贮存控制器120接收存储器访问请求之后,各个闪速存储器装置将延迟的误差发送到贮存控制器120。在图6中,例如,贮存控制器120或其组件(例如,触发条件检测模块220,图2A)当接收来自各个闪速存储器装置的通知时,检测关于各个闪速存储器装置的预定的触发条件。在该示例中,在确定用于各个闪速存储器装置的阈值数的闪速存储器块已经故障之后,各个闪速存储器装置将主动式误差发送到贮存控制器120。在图7中,例如,贮存控制器120或其组件(例如,触发条件检测模块220,图2A)在确定用于各个闪速存储器装置的块的阈值数已经故障之后,检测关于各个闪速存储器装置的预定的触发条件。
在一些实施例中,检测的预定的触发条件是(814)一组预定的触发条件中的一个。例如,如上所述,预定的触发条件的组包括:贮存控制器120从各个闪速存储器装置接收延迟的误差;贮存控制器120从各个闪速存储器装置接收主动式误差;以及贮存控制器120确定用于各个闪速存储器装置的阈值数量的块已经故障。其中延迟的或主动式误差由贮存控制器120接收,多个闪速存储器装置的每一个维持指示用于各个闪速存储器装置的故障的闪速存储器块的数量的计数器。其中贮存控制器120确定用于各个闪速存储器装置的阈值数量的块已经故障,贮存控制器120维持指示用于多个闪速存储器装置的各个闪速存储器装置的故障的闪速存储器块的数量的多个闪速存储器装置的每一个的计数器。
在一些实施例中,贮存控制器在将存储器访问请求引导到各个闪速存储器装置之后检测(816)预定的触发条件。在图5中,例如,贮存控制器120或其组件(例如,触发条件检测模块220,图2A)响应于接收延迟的误差并且在步骤506处在将存储器访问请求引导到各个闪速存储器装置之后,检测关于各个闪速存储器装置的预定的触发条件。
在一些实施例中,预定的触发条件指示(818)用于各个闪速存储器装置的故障的闪速存储器块的计数器超过阈值数量的整数倍数,该阈值数量包括包含在逻辑组块中的闪速存储器块的数量或包含在逻辑组块中的闪速存储器块的数量的整数倍数。在图5中,例如,贮存控制器120从各个闪速存储器装置接收延迟的误差,其指示用于各个闪速存储器装置的故障的闪速存储器块的计数器超过阈值数量的整数倍数。在图6中,例如,贮存控制器120从各个闪速存储器装置接收主动式误差,其指示用于各个闪速存储器装置的故障的闪速存储器块的计数器超过阈值数量的整数倍数。在图7中,例如,贮存控制器120确定用于各个闪速存储器装置的故障的闪速存储器块的计数器超过阈值数量的整数倍数。例如,如果逻辑组块包括10个闪速存储器块,阈值数量是10或者10的整数倍数(例如,20、30、40、50等)。例如,当阈值数量为10时,预定的触发条件指示用于各个闪速存储器装置的故障的闪速存储器块的计数器超过10或者10的整数倍数(例如,20、30、40、50等)。
在一些实施例中,响应于检测(820)预定的触发条件,贮存控制器查询(822)各个闪速存储器装置以确定各个闪速存储器装置的尺寸是否小于各个闪速存储器装置之前的尺寸,并且根据查询指示各个闪速存储器装置的尺寸小于各个闪速存储器装置之前的尺寸的确定,而进行降低、更新和重新平衡。在图5中,例如,贮存控制器120或其组件(例如,触发条件检测模块220,图2A)当从各个存储器装置接收延迟的误差时,检测关于各个闪速存储器装置的预定的触发条件。在图5中,例如,响应于检测关于各个闪速存储器装置的预定的触发条件,贮存控制器120或其组件在步骤510处查询各个闪速存储器装置。在图5中,例如,当在步骤514处确定装置的当前宣传的尺寸小于装置的之前宣传的尺寸时,贮存控制器120或其组件(例如,分布模块222,图2A)在步骤516处起始重新平衡过程(包括降低、更新和重新平衡)。
响应于检测(820)预定的触发条件,贮存控制器降低(824)对应于各个闪速存储器装置的权重。在一些实施例中,贮存控制器120或其组件(例如,算法更新模块224,图2A)被配置为在检测关于各个闪速存储器装置的预定的触发条件之后,降低与各个闪速存储器装置相关联的权重。例如,与各个闪速存储器装置相关联的权重在层级映射中被减低。在图4A中,例如,由于关于闪速存储器装置1、2、4和6的预定的触发条件的检测,对应于闪速存储器装置1、2、4和6的权重(例如,W1、W2、W4、W6)相比于它们在图3A中的权重已经被减低了。在图4A中,例如,逻辑组块1c、2a、2c、2e、4b、4e和6d已经被划掉以指示它们不再可用并且不能贮存新的数据。
响应于检测(820)预定的触发条件,贮存控制器更新(826)分布算法以反映各个闪速存储器装置的降低的权重。在一些实施例中,贮存控制器120或其组件(例如,算法更新模块224,图2A)被配置为在检测关于各个闪速存储器装置的预定的触发条件之后,更新分布算法以反映各个闪速存储器装置的降低的权重。
响应于检测(820)预定的触发条件,贮存控制器根据更新的分布算法重新平衡(828)贮存在多个闪速存储器装置中的数据。降低、更新和重新平衡在这里有时被称为重新平衡过程,该重新平衡过程由检测关于各个闪速存储器装置的预定的触发条件而触发。在一些实施例中,重新平衡贮存在多个闪速存储器装置中的数据包括根据分布算法改变贮存在多个闪速存储器装置处的逻辑组块的数量。例如,贮存控制器120或其组件(例如,平衡模块226,图2A)被配置为在检测关于各个闪速存储器装置的预定的触发条件之后,根据更新的分布算法重新平衡贮存在闪速存储器装置处的逻辑组块的数量。例如,贮存在各个闪速存储器装置(检测到用于其的预定的触发条件)上的至少一个逻辑组块被从各个闪速存储器装置迁移出到不同于各个闪速存储器装置的第二闪速存储器装置。在一些实施例中,不同于各个闪速存储器装置的第二闪速存储器装置根据更新的分布算法被伪随机地识别。应注意的是,在一些实施例中,触发迁移的预定的条件不一定需要源自于被选择以用于迁移的各个逻辑组块中,仅需要在相同的闪速存储器装置中。在一些实施例中,在重新平衡完成之后,贮存控制器120或其组件通知各个闪速存储器装置(检测到用于其的预定的触发条件),由各个闪速存储器装置之前贮存的至少一个逻辑组块已经从各个闪速存储器装置迁移出并且至少一个逻辑组块现在可用(例如,经由用于标准SSD的TRIM或UNMAP命令)。
在一些实施例中,重新平衡包括(830)将至少一个逻辑组块从各个闪速存储器装置迁移到不同于各个闪速存储器装置的第二闪速存储器装置。在一些实施例中,迁移包括:在检测到用于其的预定的触发条件的各个闪速存储器装置上复制多个闪速存储器装置的至少一个;以及在不同于各个闪速存储器装置的第二闪速存储器装置处贮存多个闪速存储器装置的至少一个的复制的副本。在一些实施例中,迁移包括:根据预定的选择准则选择各个闪速存储器装置的多个逻辑组块的一个以用于迁移;并且在不同于各个闪速存储器装置的第二闪速存储器装置处贮存包括选择的逻辑组块的副本的复制的逻辑组块。在一些实施例中,预定的选择准则包括各个闪速存储器装置的最少使用的逻辑组块或最少填充的逻辑组块。在一些实施例中,预定的选择准则包括与存储器访问请求相关联的逻辑组块。在一些实施例中,至少一个逻辑组块贮存在与其之前贮存的不同类型的存储器介质中。例如,至少一个逻辑组块从闪速存储器迁移到HDD或者反之亦然。
在一些实施例中,在将至少一个逻辑组块从各个闪速存储器装置迁移到第二闪速存储器装置之后,贮存控制器120或其组件(例如,逻辑组块管理模块212,图2A)被配置为更新逻辑到物理的映射214以反映至少一个逻辑组块的迁移。例如,与分配到至少一个逻辑组块的逻辑地址(或逻辑地址组)相关联的物理地址被从在各个闪速存储器装置处的物理地址改变为在第二闪速存储器装置处的物理地址。
在一些实施例中,第二闪速存储器装置与各个闪速存储器装置位于(832)不同的故障域中。如上所讨论的,层级映射反映贮存系统的贮存资源并且层级映射的每一级是故障域(即,行、柜、架、闪速存储器装置)。例如,各个闪速存储器装置(检测到用于其的预定的触发条件)位于行1,柜2,架3,装置4并且第二闪速存储器装置至少在不同的故障域(例如,不同的装置)中。在一些实施例中,用于分布算法的分布规则组指定第二闪速存储器装置(或者各个逻辑组块迁移到其的位置)必须经过预定数量的故障域。例如,如果分布规则组指示各个逻辑组块必须经过至少两个故障域并且各个逻辑组块被贮存在行1,柜2,架3,装置4,各个逻辑组块必须至少被迁移到(例如,复制并且复制的副本贮存在)柜2中的不同的架(例如,经过装置和架故障域)。
在一些实施例中,响应于检测(820)预定的触发条件,贮存控制器在各个闪速存储器装置的至少一个逻辑组块中,以比在各个闪速存储器装置的至少一个逻辑组块中的数据的之前的编码更高水平的误差校正保护重新编码(834)数据。在一些实施例中,贮存控制器120或其组件(例如,重新编码模块232,图2A)被配置为在检测到关于各个闪速存储器装置的预定的触发条件之后,在用于各个闪速存储器装置的多个逻辑组块的一个中重新编码数据。作为一个示例,对于各个逻辑组块包含了更多的校验位(即,增加了校验-数据的比率)。作为另外的示例,更强的ECC方案被用于各个逻辑组块。例如,贮存在各个逻辑组块中的数据被从Bose-Chaudhuri-Hocquenghem(BCH)编码到低密度奇偶校验码(LDPC)编码重新编码。
在一些实施例中,贮存控制器将多个逻辑组块布置(836)为多个冗余组,每个冗余组包括一个或多个逻辑组块并且贮存足以使能恢复贮存在一个或多个逻辑组块的至少一个中的数据的冗余的数据。例如,冗余数据包括程序、指令、ECC、元数据、用户数据、系统数据和/或运算符数据。在一些实施例中,贮存控制器120或其组件(例如,冗余模块216,图2A)被配置为将多个逻辑组块布置为冗余组,其中每个冗余组包括一个或多个逻辑组块。在一些实施例中,每个冗余组贮存足以使能恢复贮存在一个或多个逻辑组块的至少一个中的数据的冗余的数据。
在一些实施例中,贮存控制器将包括各个冗余组的一个或多个逻辑组块与各个冗余组在间接表中相关联(838)。间接表218包含在每个冗余组中的一个或多个逻辑组块的逻辑地址。在一些实施例中,贮存控制器120或其组件(例如,冗余模块216,图2A)被配置为由于冗余组中的一个或多个逻辑组块的逻辑地址随时间而改变(例如,由于逻辑组块在闪速存储器装置之间迁移)而维持并且更新间接表218。
将理解的是,尽管术语“第一”、“第二”等在这里可以被用于描述各种元件,但是这些元件不应由这些术语限制。这些术语仅被用于将一个元件与另一个区分。例如,第一闪速存储器装置可以被称为第二闪速存储器装置,并且类似地,第二闪速存储器装置可以被称为第一闪速存储器装置,这改变说明书的含义,只要“第一闪速存储器装置”的所有出现被一致地重新命名并且“第二闪速存储器装置”的所有出现被一致地重新命名。第一闪速存储器装置和第二闪速存储器装置两者是闪速存储器装置,但是它们不是同一个闪速存储器装置。
这里使用的术语是仅是为了描述特定的实施例,而不是为了限制权利要求。如在对实施例的描述和所附权利要求中所使用的,单数形式“一”、“一个”和“该”意欲也包括复数形式,除非上下文另有清楚的指示。还可以理解的是,这里所使用的术语“和/或”是指并且包含一个或多个相关联的列出的项目的任意和所有可能组合。还可以理解的是,当在本说明书中使用时,术语“包括”和/或“包含”指定所述特征、整数、步骤、操作、元件和/或部件的存在,但是不排除一个或多个其他特征、整数、步骤、操作、元件、部件和/或其组的存在或添加。
如这里所使用的,根据上下文,术语“如果”可以解释为意思是“当所述的先决条件为真时”或“在所述的先决条件为真时”或“响应于确定所述的先决条件为真”或“根据所述的先决条件为真的确定”或“响应于检测到所述的先决条件为真”。类似地,根据上下文,短语“如果确定[所述的先决条件为真]”或“如果[所述的先决条件为真]”或“当[所述的先决条件为真]时”可以解释为意思是“当确定所述的先决条件为真时”或“响应于确定所述的先决条件为真”或“根据所述的先决条件为真的确定”或“在检测到所述的先决条件为真时”或“响应于检测到所述的先决条件为真”。
为了解释的目的,已经参考了特定实施例描述了前述说明。但是,以上示意性的讨论不意欲是穷举性的或者将权利要求限制到公开的精确形式。鉴于以上教导许多修改和变化是可能的。实施例被选中并且描述以便于最好地解释操作的原理和实际应用,从而使能本领域其它技术人员。

Claims (24)

1.一种管理包括贮存控制器和多个闪速存储器装置的贮存系统的方法,所述多个闪速存储器装置的每一个具有多个闪速存储器块,所述方法包括:
在所述贮存控制器处:
将所述多个闪速存储器装置的每一个分割为多个逻辑组块,其中每个逻辑组块包括一个或多个闪速存储器块;
将权重分配到所述多个闪速存储器装置的每一个用于分布算法,其中所述权重基于至少可用的逻辑组块的数量;
根据所述分布算法将数据贮存在所述多个闪速存储器装置的多个逻辑组块中;
针对所述多个闪速存储器装置的各个闪速存储器装置,检测预定的触发条件;以及
响应于检测到所述预定的触发条件:
降低对应于所述各个闪速存储器装置的权重;
更新所述分布算法以反映所述各个闪速存储器装置的降低的权重;并且
根据所述更新的分布算法重新平衡贮存在所述多个闪速存储器装置中的数据。
2.如权利要求1所述的方法,其中所述重新平衡包括将至少一个逻辑组块从所述各个闪速存储器装置迁移到不同于所述各个闪速存储器装置的第二闪速存储器装置。
3.如权利要求2所述的方法,其中所述第二闪速存储器装置位于与所述各个闪速存储器装置不同的故障域中。
4.如权利要求1-3的任一项所述的方法,其中所述检测的预定的触发条件是一组预定的触发条件的一个。
5.如权利要求1-4的任一项所述的方法,其中所述贮存控制器在将存储器访问请求引导到所述各个闪速存储器装置之后检测所述预定的触发条件。
6.如权利要求1-5的任一项所述的方法,还包括:
响应于检测到所述预定的触发条件:查询所述各个闪速存储器装置以确定所述各个闪速存储器装置的尺寸是否小于所述各个闪速存储器装置之前的尺寸;并且
其中所述降低、更新和重新平衡根据所述查询指示所述各个闪速存储器装置的尺寸小于所述各个闪速存储器装置的之前的尺寸的确定而进行。
7.如权利要求1-6的任一项所述的方法,其中所述预定的触发条件指示用于所述各个闪速存储器装置的故障的闪速存储器块的计数器超过阈值数量的整数倍数,所述阈值数量包括包含在逻辑组块中的闪速存储器块的数量或者包含在逻辑组块中的闪速存储器块的数量的整数倍数。
8.如权利要求1-7的任一项所述的方法,其中所述多个逻辑组块的尺寸由软件预先确定。
9.如权利要求1-7的任一项所述的方法,其中所述多个逻辑组块的尺寸基于所述贮存系统使用的协议确定。
10.如权利要求1-9的任一项所述的方法,还包括:
响应于针对所述各个闪速存储器装置检测到所述预定的触发条件,以比在所述各个闪速存储器装置的至少一个逻辑组块中的数据的之前的编码更高水平的误差校正保护来重新编码在所述各个闪速存储器装置的至少一个逻辑组块中的数据。
11.如权利要求1-10的任一项所述的方法,还包括:
将所述多个逻辑组块布置为多个冗余组,每个冗余组包括一个或多个逻辑组块并且贮存足以使能贮存在所述一个或多个逻辑组块的至少一个中的数据的恢复的冗余数据。
12.如权利要求11所述的方法,还包括:
将包括各个冗余组的一个或多个逻辑组块与所述各个冗余组在间接表中相关联。
13.一种贮存控制器,包括:
一个或多个处理器;
主机接口,被配置为将所述贮存控制器耦接到主机;
贮存介质接口,被配置为将所述贮存控制器耦接到包含多个闪速存储器装置的贮存介质,所述多个闪速存储器装置的每一个具有多个闪速存储器块;
贮存控制器存储器,贮存指令,所述指令当由一个或多个处理器执行时,使得所述贮存控制器进行操作,包括:
将所述多个闪速存储器装置的每一个分割为多个逻辑组块,其中每个逻辑组块包括一个或多个闪速存储器块;
将权重分配到所述多个闪速存储器装置的每一个,用于分布算法,其中所述权重基于至少所述各个闪速存储器装置的可用的逻辑组块的数量;
根据所述分布算法将数据贮存在所述多个闪速存储器装置的多个逻辑组块中;
针对所述多个闪速存储器装置的各个闪速存储器装置,检测预定的触发条件;以及
响应于检测到所述预定的触发条件:
降低对应于所述各个闪速存储器装置的权重;
更新所述分布算法以反映所述各个闪速存储器装置的降低的权重;并且
根据所述更新的分布算法重新平衡贮存在所述多个闪速存储器装置中的数据。
14.如权利要求13所述的贮存控制器,其中所述重新平衡包括将至少一个逻辑组块从所述各个闪速存储器装置迁移到不同于所述各个闪速存储器装置的第二闪速存储器装置。
15.如权利要求14所述的贮存控制器,其中所述第二闪速存储器装置位于与所述各个闪速存储器装置不同的故障域中。
16.如权利要求13-15的任一项所述的贮存控制器,其中所述指令使得所述贮存控制器进行进一步操作,包括:
响应于针对所述各个闪速存储器装置检测到所述预定的触发条件,以比在所述各个闪速存储器装置的至少一个逻辑组块中的数据的之前的编码更高水平的误差校正保护来重新编码在所述各个闪速存储器装置的至少一个逻辑组块中的数据。
17.如权利要求13-16的任一项所述的贮存控制器,其中所述指令使得所述贮存控制器进行进一步操作,包括:
将所述多个逻辑组块布置为多个冗余组,每个冗余组包括一个或多个逻辑组块并且贮存足以使能贮存在所述一个或多个逻辑组块的至少一个中的数据的恢复的冗余数据。
18.如权利要求17所述的贮存控制器,其中所述指令使得所述贮存控制器进行进一步操作,包括:
将包括各个冗余组的一个或多个逻辑组块与所述各个冗余组在间接表中相关联。
19.一种非瞬时性计算机可读贮存介质,贮存用于由贮存控制器的一个或多个处理器执行的一个或多个程序,所述贮存控制器耦接到包括多个闪速存储器装置的贮存介质,其中每个闪速存储器装置包括多个闪速存储器块,所述一个或多个程序包括指令,所述指令当由一个或多个处理器执行时使得所述贮存控制器:
将所述多个闪速存储器装置的每一个分割为多个逻辑组块,其中每个逻辑组块包括一个或多个闪速存储器块;
将权重分配到所述多个闪速存储器装置的每一个,用于分布算法,其中所述权重基于至少可用的逻辑组块的数量;
根据所述分布算法将数据贮存在所述多个闪速存储器装置的多个逻辑组块中;
针对所述多个闪速存储器装置的各个闪速存储器装置,检测预定的触发条件;以及
响应于检测到所述预定的触发条件:
降低对应于所述各个闪速存储器装置的权重;
更新所述分布算法以反映所述各个闪速存储器装置的降低的权重;并且
根据所述更新的分布算法重新平衡贮存在所述多个闪速存储器装置中的数据。
20.如权利要求19所述的非瞬时性计算机可读贮存介质,其中所述重新平衡包括将至少一个逻辑组块从所述各个闪速存储器装置迁移到不同于所述各个闪速存储器装置的第二闪速存储器装置。
21.如权利要求20所述的非瞬时性计算机可读贮存介质,其中所述第二闪速存储器装置位于与所述各个闪速存储器装置不同的故障域中。
22.如权利要求19-21的任一项所述的非瞬时性计算机可读贮存介质,其中所述一个或多个程序还包括指令,所述指令当由一个或多个处理器执行时使得所述贮存控制器:
响应于针对所述各个闪速存储器装置检测到所述预定的触发条件,以比在所述各个闪速存储器装置的至少一个逻辑组块中的数据的之前的编码更高水平的误差校正保护来重新编码在所述各个闪速存储器装置的至少一个逻辑组块中的数据。
23.如权利要求19-22的任一项所述的非瞬时性计算机可读贮存介质,其中所述一个或多个程序还包括指令,所述指令当由一个或多个处理器执行时使得所述贮存控制器:
将所述多个逻辑组块布置为多个冗余组,每个冗余组包括一个或多个逻辑组块并且贮存足以使能贮存在所述一个或多个逻辑组块的至少一个中的数据的恢复的冗余数据。
24.如权利要求23所述的非瞬时性计算机可读贮存介质,其中所述一个或多个程序还包括指令,所述指令当由一个或多个处理器执行时使得所述贮存控制器:
将包括各个冗余组的一个或多个逻辑组块与所述各个冗余组在间接表中相关联。
CN201480058672.6A 2013-09-03 2014-09-03 用于重新平衡贮存在闪速存储器装置中的数据的方法和系统 Active CN105683927B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361873326P 2013-09-03 2013-09-03
US61/873,326 2013-09-03
US14/470,596 US9442670B2 (en) 2013-09-03 2014-08-27 Method and system for rebalancing data stored in flash memory devices
US14/470,596 2014-08-27
PCT/US2014/053879 WO2015034907A1 (en) 2013-09-03 2014-09-03 Method and system for rebalancing data stored in flash memory devices

Publications (2)

Publication Number Publication Date
CN105683927A true CN105683927A (zh) 2016-06-15
CN105683927B CN105683927B (zh) 2018-11-06

Family

ID=52584899

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480058672.6A Active CN105683927B (zh) 2013-09-03 2014-09-03 用于重新平衡贮存在闪速存储器装置中的数据的方法和系统

Country Status (3)

Country Link
US (1) US9442670B2 (zh)
CN (1) CN105683927B (zh)
WO (1) WO2015034907A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11520510B1 (en) 2021-07-21 2022-12-06 International Business Machines Corporation Extending the lifespan of a flash-based storage device

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9141297B2 (en) 2012-06-25 2015-09-22 Cleversafe, Inc. Verifying encoded data slice integrity in a dispersed storage network
US11093327B1 (en) 2012-06-25 2021-08-17 Pure Storage, Inc. Failure abatement approach for failed storage units common to multiple vaults
US9582363B2 (en) * 2014-06-09 2017-02-28 International Business Machines Corporation Failure domain based storage system data stripe layout
US9082512B1 (en) * 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US9823969B2 (en) 2014-09-02 2017-11-21 Netapp, Inc. Hierarchical wide spreading of distributed storage
US20160062832A1 (en) 2014-09-02 2016-03-03 Netapp. Inc. Wide spreading data storage architecture
US9767104B2 (en) 2014-09-02 2017-09-19 Netapp, Inc. File system for efficient object fragment access
US10691531B2 (en) 2014-12-04 2020-06-23 Western Digital Technologies, Inc. Systems and methods for multi-zone data tiering for endurance extension in solid state drives
US10141049B2 (en) * 2014-12-19 2018-11-27 Sandisk Technologies Llc Nonvolatile memory system storing system data in marginal word lines
US11188665B2 (en) 2015-02-27 2021-11-30 Pure Storage, Inc. Using internal sensors to detect adverse interference and take defensive actions
US10275185B2 (en) * 2015-02-27 2019-04-30 International Business Machines Corporation Fail-in-place supported via decentralized or Distributed Agreement Protocol (DAP)
US9817715B2 (en) 2015-04-24 2017-11-14 Netapp, Inc. Resiliency fragment tiering
US9431061B1 (en) 2015-04-24 2016-08-30 Netapp, Inc. Data write deferral during hostile events
US20160349993A1 (en) * 2015-05-29 2016-12-01 Cisco Technology, Inc. Data-driven ceph performance optimizations
US10114716B2 (en) * 2015-11-20 2018-10-30 International Business Machines Corporation Virtual failure domains for storage systems
US10379742B2 (en) 2015-12-28 2019-08-13 Netapp, Inc. Storage zone set membership
US10514984B2 (en) 2016-02-26 2019-12-24 Netapp, Inc. Risk based rebuild of data objects in an erasure coded storage system
US10055317B2 (en) 2016-03-22 2018-08-21 Netapp, Inc. Deferred, bulk maintenance in a distributed storage system
US10055351B1 (en) 2016-06-29 2018-08-21 EMC IP Holding Company LLC Low-overhead index for a flash cache
US10089025B1 (en) * 2016-06-29 2018-10-02 EMC IP Holding Company LLC Bloom filters in a flash memory
US10331561B1 (en) 2016-06-29 2019-06-25 Emc Corporation Systems and methods for rebuilding a cache index
US10037164B1 (en) 2016-06-29 2018-07-31 EMC IP Holding Company LLC Flash interface for processing datasets
US10146438B1 (en) 2016-06-29 2018-12-04 EMC IP Holding Company LLC Additive library for data structures in a flash memory
US10261704B1 (en) 2016-06-29 2019-04-16 EMC IP Holding Company LLC Linked lists in flash memory
KR20180051984A (ko) * 2016-11-09 2018-05-17 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그것의 동작 방법
KR20180062246A (ko) 2016-11-30 2018-06-08 삼성전자주식회사 재분배기를 포함하는 메모리 시스템
US10254981B2 (en) 2016-12-12 2019-04-09 International Business Machines Corporation Adaptive health grading for a non-volatile memory
US11042330B2 (en) * 2017-03-01 2021-06-22 Samsung Electronics Co., Ltd. Methods and systems for distributed data storage
US10866741B2 (en) * 2017-08-02 2020-12-15 Toshiba Memory Corporation Extending SSD longevity
US10735030B2 (en) * 2017-08-07 2020-08-04 Hewlett Packard Enterprise Development Lp Re-encoding data associated with failed memory devices
US10409500B2 (en) * 2017-09-08 2019-09-10 Intel Corporation Multiple indirection granularities for mass storage devices
US10628300B2 (en) * 2017-11-13 2020-04-21 Western Digital Technologies, Inc. RAID stripe physical placement
US11054991B2 (en) * 2018-03-21 2021-07-06 Western Digital Technologies, Inc. Data storage system scale-out with local address remapping
DE102018003906A1 (de) 2018-05-07 2019-11-07 Smart Material Printing Verwendung von Polyoxometallaten gegen den Befall von Eukaryotenkulturen, Virenkulturen und Mikroorganismenpopulationen durch Mollicuten sowie mollicutenhemmende und -abtötende polyoxometallathaltige Stoffe und Verfahren
CN114496051A (zh) * 2018-10-25 2022-05-13 华为技术有限公司 固态硬盘及固态硬盘管理方法
US11481336B2 (en) * 2019-08-19 2022-10-25 Micron Technology, Inc. Host assisted operations in managed memory devices
US11556481B2 (en) 2019-08-29 2023-01-17 Micron Technology, Inc. Increased efficiency obfuscated logical-to-physical map management
CN113031857B (zh) * 2021-01-30 2022-05-10 柏科数据技术(深圳)股份有限公司 数据写入方法、装置、服务器及存储介质
US11860732B2 (en) * 2021-08-27 2024-01-02 Micron Technology, Inc. Redundancy metadata media management at a memory sub-system
WO2023244620A1 (en) * 2022-06-14 2023-12-21 Rambus Inc. Detection and correction of errors using limited error correction data

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101625894A (zh) * 2008-07-11 2010-01-13 三星电子株式会社 非易失性存储器装置及其操作方法
US7761678B1 (en) * 2004-09-29 2010-07-20 Verisign, Inc. Method and apparatus for an improved file repository
WO2012174216A2 (en) * 2011-06-15 2012-12-20 Apple Inc. Block management schemes in hybrid slc/mlc memory
CN103034589A (zh) * 2011-09-28 2013-04-10 联发科技股份有限公司 进行存储器管理的方法和装置
CN103137199A (zh) * 2011-11-30 2013-06-05 三星电子株式会社 存储器系统、数据存储设备、存储卡和固态驱动器

Family Cites Families (236)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4916652A (en) 1987-09-30 1990-04-10 International Business Machines Corporation Dynamic multiple instruction stream multiple data multiple pipeline apparatus for floating-point single instruction stream single data architectures
US5270979A (en) 1991-03-15 1993-12-14 Sundisk Corporation Method for optimum erasing of EEPROM
US5657332A (en) 1992-05-20 1997-08-12 Sandisk Corporation Soft errors handling in EEPROM devices
US5416915A (en) 1992-12-11 1995-05-16 International Business Machines Corporation Method and system for minimizing seek affinity and enhancing write sensitivity in a DASD array
US5537555A (en) 1993-03-22 1996-07-16 Compaq Computer Corporation Fully pipelined and highly concurrent memory controller
US5519847A (en) 1993-06-30 1996-05-21 Intel Corporation Method of pipelining sequential writes in a flash memory
US5708849A (en) 1994-01-26 1998-01-13 Intel Corporation Implementing scatter/gather operations in a direct memory access device on a personal computer
GB9419246D0 (en) 1994-09-23 1994-11-09 Cambridge Consultants Data processing circuits and interfaces
US5666114A (en) 1994-11-22 1997-09-09 International Business Machines Corporation Method and means for managing linear mapped address spaces storing compressed data at the storage subsystem control unit or device level
US5530705A (en) 1995-02-08 1996-06-25 International Business Machines Corporation Soft error recovery system and method
KR100404650B1 (ko) 1995-06-14 2004-02-11 히다치초엘에스아이 엔지니어링가부시키가이샤 반도체메모리,메모리디바이스및메모리카드
US6728851B1 (en) 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US6134148A (en) 1997-09-30 2000-10-17 Hitachi, Ltd. Semiconductor integrated circuit and data processing system
US5943692A (en) 1997-04-30 1999-08-24 International Business Machines Corporation Mobile client computer system with flash memory management utilizing a virtual address map and variable length data
US6000006A (en) 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
JPH11126497A (ja) 1997-10-22 1999-05-11 Oki Electric Ind Co Ltd 不揮発性半導体記憶装置
US6018304A (en) 1997-12-18 2000-01-25 Texas Instruments Incorporated Method and apparatus for high-rate n/n+1 low-complexity modulation codes with adjustable codeword length and error control capability
US5953255A (en) 1997-12-24 1999-09-14 Aplus Flash Technology, Inc. Low voltage, low current hot-hole injection erase and hot-electron programmable flash memory with enhanced endurance
US6070074A (en) 1998-04-24 2000-05-30 Trw Inc. Method for enhancing the performance of a regenerative satellite communications system
US6138261A (en) 1998-04-29 2000-10-24 Trw Inc. Concatenated coding system for satellite communications
US6182264B1 (en) 1998-05-22 2001-01-30 Vlsi Technology, Inc. Smart dynamic selection of error correction methods for DECT based data services
US7111293B1 (en) 1998-06-03 2006-09-19 Ants Software, Inc. Method for increased concurrency in a computer system
US6192092B1 (en) 1998-06-15 2001-02-20 Intel Corp. Method and apparatus for clock skew compensation
US6505305B1 (en) 1998-07-16 2003-01-07 Compaq Information Technologies Group, L.P. Fail-over of multiple memory blocks in multiple memory modules in computer system
US6314501B1 (en) 1998-07-23 2001-11-06 Unisys Corporation Computer system and method for operating multiple operating systems in different partitions of the computer system and for allowing the different partitions to communicate with one another through shared memory
US6295592B1 (en) 1998-07-31 2001-09-25 Micron Technology, Inc. Method of processing memory requests in a pipelined memory controller
US6438661B1 (en) 1999-03-03 2002-08-20 International Business Machines Corporation Method, system, and program for managing meta data in a storage system and rebuilding lost meta data in cache
US6449625B1 (en) 1999-04-20 2002-09-10 Lucent Technologies Inc. Use of a two-way stack approach to optimize flash memory management for embedded database systems
US6564271B2 (en) 1999-06-09 2003-05-13 Qlogic Corporation Method and apparatus for automatically transferring I/O blocks between a host system and a host adapter
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
US7318117B2 (en) 2004-02-26 2008-01-08 Super Talent Electronics, Inc. Managing flash memory including recycling obsolete sectors
US7333364B2 (en) 2000-01-06 2008-02-19 Super Talent Electronics, Inc. Cell-downgrading and reference-voltage adjustment for a multi-bit-cell flash memory
US20050114587A1 (en) 2003-11-22 2005-05-26 Super Talent Electronics Inc. ExpressCard with On-Card Flash Memory with Shared Flash-Control Bus but Separate Ready Lines
US6484224B1 (en) 1999-11-29 2002-11-19 Cisco Technology Inc. Multi-interface symmetric multiprocessor
DE19961138C2 (de) 1999-12-17 2001-11-22 Siemens Ag Multiport-RAM-Speichervorrichtung
US8341332B2 (en) 2003-12-02 2012-12-25 Super Talent Electronics, Inc. Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices
US7082056B2 (en) 2004-03-12 2006-07-25 Super Talent Electronics, Inc. Flash memory device and architecture with multi level cells
US8266367B2 (en) 2003-12-02 2012-09-11 Super Talent Electronics, Inc. Multi-level striping and truncation channel-equalization for flash-memory system
US8037234B2 (en) 2003-12-02 2011-10-11 Super Talent Electronics, Inc. Command queuing smart storage transfer manager for striping data to raw-NAND flash modules
US8452912B2 (en) 2007-10-11 2013-05-28 Super Talent Electronics, Inc. Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read
US20020152305A1 (en) 2000-03-03 2002-10-17 Jackson Gregory J. Systems and methods for resource utilization analysis in information management environments
US6516437B1 (en) 2000-03-07 2003-02-04 General Electric Company Turbo decoder control for use with a programmable interleaver, variable block length, and multiple code rates
US6615307B1 (en) 2000-05-10 2003-09-02 Micron Technology, Inc. Flash with consistent latency for read operations
US20030188045A1 (en) 2000-04-13 2003-10-02 Jacobson Michael B. System and method for distributing storage controller tasks
US6678788B1 (en) 2000-05-26 2004-01-13 Emc Corporation Data type and topological data categorization and ordering for a mass storage system
US6442076B1 (en) 2000-06-30 2002-08-27 Micron Technology, Inc. Flash memory with multiple status reading capability
US6980985B1 (en) 2000-08-30 2005-12-27 At&T Corp. Distributed evalulation of directory queries using a topology cache
US6738870B2 (en) 2000-12-22 2004-05-18 International Business Machines Corporation High speed remote storage controller
US6754773B2 (en) 2001-01-29 2004-06-22 Snap Appliance, Inc. Data engine with metadata processor
US7017107B2 (en) 2001-04-30 2006-03-21 Sun Microsystems, Inc. Storage array employing scrubbing operations at the disk-controller level
US6938253B2 (en) 2001-05-02 2005-08-30 Portalplayer, Inc. Multiprocessor communication system and method
US6757768B1 (en) 2001-05-17 2004-06-29 Cisco Technology, Inc. Apparatus and technique for maintaining order among requests issued over an external bus of an intermediate network node
US7068603B2 (en) 2001-07-06 2006-06-27 Juniper Networks, Inc. Cross-bar switch
US6836815B1 (en) 2001-07-11 2004-12-28 Pasternak Solutions Llc Layered crossbar for interconnection of multiple processors and shared memories
JP4569055B2 (ja) 2001-08-06 2010-10-27 ソニー株式会社 信号処理装置及び信号処理方法
TW539946B (en) 2001-08-07 2003-07-01 Solid State System Company Ltd Window-based flash memory storage system, and the management method and the access method thereof
JP4437519B2 (ja) 2001-08-23 2010-03-24 スパンション エルエルシー 多値セルメモリ用のメモリコントローラ
US7111292B2 (en) 2001-09-10 2006-09-19 Texas Instruments Incorporated Apparatus and method for secure program upgrade
US7028213B2 (en) 2001-09-28 2006-04-11 Hewlett-Packard Development Company, L.P. Error indication in a raid memory system
US7032123B2 (en) 2001-10-19 2006-04-18 Sun Microsystems, Inc. Error recovery
JP3663377B2 (ja) 2001-10-23 2005-06-22 インターナショナル・ビジネス・マシーンズ・コーポレーション データ記憶装置、読み出しデータの処理装置および読み出しデータの処理方法
US7380085B2 (en) 2001-11-14 2008-05-27 Intel Corporation Memory adapted to provide dedicated and or shared memory to multiple processors and method therefor
US6798696B2 (en) 2001-12-04 2004-09-28 Renesas Technology Corp. Method of controlling the operation of non-volatile semiconductor memory chips
US6871257B2 (en) 2002-02-22 2005-03-22 Sandisk Corporation Pipelined parallel programming operation in a non-volatile memory system
US6836808B2 (en) 2002-02-25 2004-12-28 International Business Machines Corporation Pipelined packet processing
KR100476888B1 (ko) 2002-04-04 2005-03-17 삼성전자주식회사 온도보상기능을 가진 멀티비트 플래쉬메모리
JP4079684B2 (ja) 2002-05-08 2008-04-23 株式会社日立製作所 ヒープメモリ管理方法およびそれを用いた計算機システム
US6895464B2 (en) 2002-06-03 2005-05-17 Honeywell International Inc. Flash memory management system and method utilizing multiple block list windows
US6978343B1 (en) 2002-08-05 2005-12-20 Netlogic Microsystems, Inc. Error-correcting content addressable memory
US7051155B2 (en) 2002-08-05 2006-05-23 Sun Microsystems, Inc. Method and system for striping data to accommodate integrity metadata
US20040153902A1 (en) 2003-01-21 2004-08-05 Nexflash Technologies, Inc. Serial flash integrated circuit having error detection and correction
US7043505B1 (en) 2003-01-28 2006-05-09 Unisys Corporation Method variation for collecting stability data from proprietary systems
US7162678B2 (en) 2003-03-14 2007-01-09 Quantum Corporation Extended error correction codes
US7527466B2 (en) 2003-04-03 2009-05-05 Simmons Robert J Building-erection structural member transporter
KR100543447B1 (ko) 2003-04-03 2006-01-23 삼성전자주식회사 에러정정기능을 가진 플래쉬메모리장치
JP4170988B2 (ja) 2003-05-09 2008-10-22 富士通株式会社 実行環境の危険予測/回避方法,システム,プログラムおよびその記録媒体
EP1627331B1 (en) 2003-05-23 2017-09-20 IP Reservoir, LLC Intelligent data storage and processing using fpga devices
US7877647B2 (en) 2003-05-23 2011-01-25 Hewlett-Packard Development Company, L.P. Correcting a target address in parallel with determining whether the target address was received in error
US7685254B2 (en) 2003-06-10 2010-03-23 Pandya Ashish A Runtime adaptable search processor
US7054968B2 (en) 2003-09-16 2006-05-30 Denali Software, Inc. Method and apparatus for multi-port memory controller
US7100002B2 (en) 2003-09-16 2006-08-29 Denali Software, Inc. Port independent data transaction interface for multi-port devices
US7523157B2 (en) 2003-09-25 2009-04-21 International Business Machines Corporation Managing a plurality of processors as devices
US7173852B2 (en) 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
US7401174B2 (en) 2003-12-16 2008-07-15 Matsushita Electric Industrial Co., Ltd. File system defragmentation and data processing method and apparatus for an information recording medium
US7376887B2 (en) 2003-12-22 2008-05-20 International Business Machines Corporation Method for fast ECC memory testing by software including ECC check byte
US7328377B1 (en) 2004-01-27 2008-02-05 Altera Corporation Error correction for programmable logic integrated circuits
JP4477365B2 (ja) 2004-01-29 2010-06-09 株式会社日立製作所 複数インタフェースを有する記憶装置、および、その記憶装置の制御方法
US7389465B2 (en) 2004-01-30 2008-06-17 Micron Technology, Inc. Error detection and correction scheme for a memory device
US7350044B2 (en) 2004-01-30 2008-03-25 Micron Technology, Inc. Data move method and apparatus
JP3892851B2 (ja) 2004-02-04 2007-03-14 株式会社東芝 メモリカード及び半導体装置
US20080147964A1 (en) 2004-02-26 2008-06-19 Chow David Q Using various flash memory cells to build usb data flash cards with multiple partitions and autorun function
US7020017B2 (en) 2004-04-06 2006-03-28 Sandisk Corporation Variable programming of non-volatile memory
EP1870814B1 (en) 2006-06-19 2014-08-13 Texas Instruments France Method and apparatus for secure demand paging for processor devices
US7490283B2 (en) 2004-05-13 2009-02-10 Sandisk Corporation Pipelined data relocation and improved chip architectures
US20050273560A1 (en) 2004-06-03 2005-12-08 Hulbert Jared E Method and apparatus to avoid incoherency between a cache memory and flash memory
US7334179B2 (en) 2004-06-04 2008-02-19 Broadcom Corporation Method and system for detecting and correcting errors while accessing memory devices in microprocessor systems
US7159069B2 (en) 2004-06-23 2007-01-02 Atmel Corporation Simultaneous external read operation during internal programming in a flash memory device
DK3422583T3 (da) 2004-08-30 2020-09-28 Google Llc System og fremgangsmåde for at tilvejebringe ikke-flygtig hukommelsesadministration i trådløse telefoner
US20060156177A1 (en) 2004-12-29 2006-07-13 Sailesh Kottapalli Method and apparatus for recovering from soft errors in register files
KR100648281B1 (ko) 2005-01-14 2006-11-23 삼성전자주식회사 보안 리던던시 블록을 구비한 낸드 플래시 메모리 장치
US7657696B2 (en) 2005-02-25 2010-02-02 Lsi Corporation Method to detect NAND-flash parameters by hardware automatically
US7707232B2 (en) 2005-05-13 2010-04-27 Microsoft Corporation Implementation for collecting unmanaged memory
US20070061597A1 (en) 2005-09-14 2007-03-15 Micky Holtzman Secure yet flexible system architecture for secure devices with flash mass storage memory
KR100705220B1 (ko) 2005-09-15 2007-04-06 주식회사 하이닉스반도체 프로그램 속도를 증가시키기 위한 플래시 메모리 장치의소거 및 프로그램 방법
KR20080054412A (ko) 2005-09-27 2008-06-17 엔엑스피 비 브이 에러 검출/보정 회로 및 방법과, 전자 메모리 소자 또는메모리 모듈
US7652922B2 (en) 2005-09-30 2010-01-26 Mosaid Technologies Incorporated Multiple independent serial link memory
KR100715147B1 (ko) 2005-10-06 2007-05-10 삼성전자주식회사 전류소모를 감소시키는 내부전원전압 발생회로를 가지는멀티칩 반도체 메모리 장치
US20070083697A1 (en) 2005-10-07 2007-04-12 Microsoft Corporation Flash memory management
US8223553B2 (en) 2005-10-12 2012-07-17 Macronix International Co., Ltd. Systems and methods for programming a memory device
US7954037B2 (en) 2005-10-25 2011-05-31 Sandisk Il Ltd Method for recovering from errors in flash memory
KR101021465B1 (ko) 2005-10-26 2011-03-15 삼성전자주식회사 저밀도 패리티 검사 코드를 사용하는 통신 시스템에서 신호수신 장치 및 방법
KR100966043B1 (ko) 2005-10-31 2010-06-25 삼성전자주식회사 저밀도 패리티 검사 부호를 사용하는 통신 시스템에서 신호 송수신 장치 및 방법
US7500062B2 (en) 2005-11-17 2009-03-03 International Business Machines Corporation Fast path memory read request processing in a multi-level memory architecture
WO2007058617A1 (en) 2005-11-17 2007-05-24 Chee Keng Chang A controller for non-volatile memories, and methods of operating the memory controller
US7546515B2 (en) 2005-12-27 2009-06-09 Sandisk Corporation Method of storing downloadable firmware on bulk media
US7562283B2 (en) 2005-12-27 2009-07-14 D.S.P. Group Ltd. Systems and methods for error correction using binary coded hexidecimal or hamming decoding
US7349264B2 (en) 2005-12-28 2008-03-25 Sandisk Corporation Alternate sensing techniques for non-volatile memories
WO2007080586A2 (en) 2006-01-10 2007-07-19 Saifun Semiconductors Ltd. Rd algorithm improvement for nrom technology
US7609561B2 (en) 2006-01-18 2009-10-27 Apple Inc. Disabling faulty flash memory dies
KR100725410B1 (ko) 2006-01-20 2007-06-07 삼성전자주식회사 전원 상태에 따라 비휘발성 메모리의 블록 회수를 수행하는장치 및 그 방법
US20070234143A1 (en) 2006-01-25 2007-10-04 Samsung Electronics Co., Ltd. Semiconductor memory devices and methods of testing for failed bits of semiconductor memory devices
JP4859471B2 (ja) 2006-02-02 2012-01-25 株式会社日立製作所 ストレージシステム及びストレージコントローラ
US7870326B2 (en) 2006-07-28 2011-01-11 Samsung Electronics Co., Ltd. Multiprocessor system and method thereof
JP4863749B2 (ja) 2006-03-29 2012-01-25 株式会社日立製作所 フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム
US7681106B2 (en) 2006-03-29 2010-03-16 Freescale Semiconductor, Inc. Error correction device and methods thereof
US20070245061A1 (en) 2006-04-13 2007-10-18 Intel Corporation Multiplexing a parallel bus interface and a flash memory interface
US7685494B1 (en) 2006-05-08 2010-03-23 Marvell International, Ltd. Error correction coding for varying signal-to-noise ratio channels
US7707481B2 (en) 2006-05-16 2010-04-27 Pitney Bowes Inc. System and method for efficient uncorrectable error detection in flash memory
US20070300130A1 (en) 2006-05-17 2007-12-27 Sandisk Corporation Method of Error Correction Coding for Multiple-Sector Pages in Flash Memory Devices
US7606084B2 (en) 2006-06-19 2009-10-20 Sandisk Corporation Programming differently sized margins and sensing with compensations at select states for improved read operations in non-volatile memory
JP4842719B2 (ja) 2006-06-28 2011-12-21 株式会社日立製作所 ストレージシステム及びそのデータ保護方法
US7774684B2 (en) 2006-06-30 2010-08-10 Intel Corporation Reliability, availability, and serviceability in a memory device
JP2008047273A (ja) 2006-07-20 2008-02-28 Toshiba Corp 半導体記憶装置およびその制御方法
US7831895B2 (en) 2006-07-25 2010-11-09 Communications Coding Corporation Universal error control coding system for digital communication and data storage systems
TW200813724A (en) 2006-07-28 2008-03-16 Samsung Electronics Co Ltd Multipath accessible semiconductor memory device with host interface between processors
US20080052446A1 (en) 2006-08-28 2008-02-28 Sandisk Il Ltd. Logical super block mapping for NAND flash memory
US7450425B2 (en) 2006-08-30 2008-11-11 Micron Technology, Inc. Non-volatile memory cell read failure reduction
TW200816651A (en) 2006-09-25 2008-04-01 Sunplus Technology Co Ltd Decoding method and system of real-time wireless channel estimation
US7886204B2 (en) 2006-09-27 2011-02-08 Sandisk Corporation Methods of cell population distribution assisted read margining
US8171380B2 (en) 2006-10-10 2012-05-01 Marvell World Trade Ltd. Adaptive systems and methods for storing and retrieving data to and from memory cells
JP2008117195A (ja) 2006-11-06 2008-05-22 Hitachi Ltd 半導体記憶装置
TWI307100B (en) 2006-11-07 2009-03-01 Macronix Int Co Ltd Memory and method for reading error checking thereof
JP2008123330A (ja) 2006-11-14 2008-05-29 Toshiba Corp 不揮発性半導体記憶装置
KR100808664B1 (ko) 2006-12-08 2008-03-07 한국전자통신연구원 패리티 검사행렬 저장 방법 및 이를 이용한 블록 저밀도패리티 검사 부호화 방법 및 장치
KR100881669B1 (ko) 2006-12-18 2009-02-06 삼성전자주식회사 비휘발성 데이터 저장장치의 정적 데이터 영역 검출 방법,마모도 평준화 방법 및 데이터 유닛 병합 방법과 그 장치
US7554853B2 (en) 2006-12-30 2009-06-30 Sandisk Corporation Non-volatile storage with bias based on selective word line
KR100842680B1 (ko) 2007-01-08 2008-07-01 삼성전자주식회사 플래시 메모리 장치의 오류 정정 컨트롤러 및 그것을포함하는 메모리 시스템
US7603490B2 (en) 2007-01-10 2009-10-13 International Business Machines Corporation Barrier and interrupt mechanism for high latency and out of order DMA device
KR100855587B1 (ko) 2007-01-17 2008-09-01 삼성전자주식회사 메일박스 영역을 가지는 멀티 패스 액세스블 반도체 메모리장치 및 그에 따른 메일박스 액세스 제어방법
US7596643B2 (en) 2007-02-07 2009-09-29 Siliconsystems, Inc. Storage subsystem with configurable buffer
US7913022B1 (en) 2007-02-14 2011-03-22 Xilinx, Inc. Port interface modules (PIMs) in a multi-port memory controller (MPMC)
US7646636B2 (en) 2007-02-16 2010-01-12 Mosaid Technologies Incorporated Non-volatile memory with dynamic multi-mode operation
KR100918707B1 (ko) 2007-03-12 2009-09-23 삼성전자주식회사 플래시 메모리를 기반으로 한 메모리 시스템
JP4897524B2 (ja) 2007-03-15 2012-03-14 株式会社日立製作所 ストレージシステム及びストレージシステムのライト性能低下防止方法
TWI368224B (en) 2007-03-19 2012-07-11 A Data Technology Co Ltd Wear-leveling management and file distribution management of hybrid density memory
KR100907218B1 (ko) 2007-03-28 2009-07-10 삼성전자주식회사 읽기 레벨 제어 장치 및 그 방법
WO2008121553A1 (en) 2007-03-29 2008-10-09 Sandisk Corporation Non-volatile storage with decoding of data using reliability metrics based on multiple reads
WO2008121577A1 (en) 2007-03-31 2008-10-09 Sandisk Corporation Soft bit data transmission for error correction control in non-volatile memory
US8032724B1 (en) 2007-04-04 2011-10-04 Marvell International Ltd. Demand-driven opportunistic garbage collection in memory components
US7996642B1 (en) 2007-04-25 2011-08-09 Marvell International Ltd. Digital locked loop on channel tagged memory requests for memory optimization
US8151171B2 (en) 2007-05-07 2012-04-03 Broadcom Corporation Operational parameter adaptable LDPC (low density parity check) decoder
US7743203B2 (en) 2007-05-11 2010-06-22 Spansion Llc Managing flash memory based upon usage history
US8073648B2 (en) 2007-05-14 2011-12-06 Sandisk Il Ltd. Measuring threshold voltage distribution in memory using an aggregate characteristic
KR100891005B1 (ko) 2007-06-28 2009-03-31 삼성전자주식회사 고온 스트레스로 인한 읽기 마진의 감소를 보상하기 위한플래시 메모리 장치 및 그것의 읽기 전압 조정 방법
US7802132B2 (en) 2007-08-17 2010-09-21 Intel Corporation Technique to improve and extend endurance and reliability of multi-level memory cells in a memory device
JP4564520B2 (ja) 2007-08-31 2010-10-20 株式会社東芝 半導体記憶装置およびその制御方法
US8095851B2 (en) 2007-09-06 2012-01-10 Siliconsystems, Inc. Storage subsystem capable of adjusting ECC settings based on monitored conditions
US8139412B2 (en) 2007-10-31 2012-03-20 Agere Systems Inc. Systematic error correction for multi-level flash memory
US8429492B2 (en) 2007-11-30 2013-04-23 Marvell World Trade Ltd. Error correcting code predication system and method
US8751755B2 (en) 2007-12-27 2014-06-10 Sandisk Enterprise Ip Llc Mass storage controller volatile memory containing metadata related to flash memory storage
KR101077339B1 (ko) 2007-12-28 2011-10-26 가부시끼가이샤 도시바 반도체 기억 장치
US20090172335A1 (en) 2007-12-31 2009-07-02 Anand Krishnamurthi Kulkarni Flash devices with raid
US8159874B2 (en) 2008-01-22 2012-04-17 Micron Technology, Inc. Cell operation monitoring
US8271515B2 (en) 2008-01-29 2012-09-18 Cadence Design Systems, Inc. System and method for providing copyback data integrity in a non-volatile memory system
JP4617405B2 (ja) 2008-02-05 2011-01-26 富士通株式会社 不良メモリを検出する電子機器、不良メモリ検出方法およびそのためのプログラム
JP4672743B2 (ja) 2008-03-01 2011-04-20 株式会社東芝 誤り訂正装置および誤り訂正方法
US8230300B2 (en) 2008-03-07 2012-07-24 Apple Inc. Efficient readout from analog memory cells using data compression
US8185706B2 (en) 2008-04-30 2012-05-22 Apple Inc. Copyback optimization for memory system
KR101518199B1 (ko) 2008-05-23 2015-05-06 삼성전자주식회사 오류 정정 장치, 그 방법 및 상기 장치를 포함하는 메모리장치
KR101412690B1 (ko) 2008-05-28 2014-06-27 삼성전자주식회사 메모리 장치 및 메모리 프로그래밍 방법
KR101412974B1 (ko) 2008-05-28 2014-06-30 삼성전자주식회사 메모리 장치 및 메모리 프로그래밍 방법
US8060719B2 (en) 2008-05-28 2011-11-15 Micron Technology, Inc. Hybrid memory management
US9123422B2 (en) 2012-07-02 2015-09-01 Super Talent Technology, Corp. Endurance and retention flash controller with programmable binary-levels-per-cell bits identifying pages or blocks as having triple, multi, or single-level flash-memory cells
US8959280B2 (en) 2008-06-18 2015-02-17 Super Talent Technology, Corp. Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear
US8627169B2 (en) 2008-06-20 2014-01-07 Cadence Design Systems, Inc. Method and apparatus for dynamically configurable multi level error correction
US8880775B2 (en) 2008-06-20 2014-11-04 Seagate Technology Llc System and method of garbage collection in a memory device
US8130552B2 (en) 2008-09-11 2012-03-06 Sandisk Technologies Inc. Multi-pass programming for memory with reduced data storage requirement
KR101484556B1 (ko) 2008-10-28 2015-01-20 삼성전자주식회사 독출 보상 회로
KR20100058166A (ko) 2008-11-24 2010-06-03 삼성전자주식회사 불휘발성 메모리 장치 및 그것을 포함하는 메모리 시스템
US9128699B2 (en) 2008-12-22 2015-09-08 Intel Corporation Method and system for queuing transfers of multiple non-contiguous address ranges with a single command
US8645749B2 (en) 2009-02-04 2014-02-04 Micron Technology, Inc. Systems and methods for storing and recovering controller data in non-volatile memory devices
KR20100090439A (ko) 2009-02-06 2010-08-16 주식회사 하이닉스반도체 불휘발성 메모리 장치의 독출 방법 및 이를 구현하는 불휘발성 메모리 장치
KR20100093885A (ko) 2009-02-17 2010-08-26 삼성전자주식회사 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템
US20100281207A1 (en) 2009-04-30 2010-11-04 Miller Steven C Flash-based data archive storage system
KR101575248B1 (ko) 2009-04-30 2015-12-07 삼성전자주식회사 메모리 컨트롤러 및 그것을 포함하는 메모리 시스템
US8151137B2 (en) 2009-05-28 2012-04-03 Lsi Corporation Systems and methods for governing the life cycle of a solid state drive
US20100332922A1 (en) 2009-06-30 2010-12-30 Mediatek Inc. Method for managing device and solid state disk drive utilizing the same
US8412985B1 (en) 2009-06-30 2013-04-02 Micron Technology, Inc. Hardwired remapped memory
US8412987B2 (en) 2009-06-30 2013-04-02 Micron Technology, Inc. Non-volatile memory to store memory remap information
US20100332950A1 (en) 2009-06-30 2010-12-30 Gurkirat Billing Bit error threshold and content addressable memory to address a remapped memory device
US8479080B1 (en) 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
US8495423B2 (en) 2009-08-11 2013-07-23 International Business Machines Corporation Flash-based memory system with robust backup and restart features and removable modules
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
US8464106B2 (en) 2009-08-24 2013-06-11 Ocz Technology Group, Inc. Computer system with backup function and method therefor
KR20120059506A (ko) 2009-08-25 2012-06-08 샌디스크 아이엘 엘티디 플래시 저장 디바이스로의 데이터 복원
US8077515B2 (en) 2009-08-25 2011-12-13 Micron Technology, Inc. Methods, devices, and systems for dealing with threshold voltage change in memory devices
EP2476079A4 (en) 2009-09-09 2013-07-03 Fusion Io Inc APPARATUS, SYSTEM, AND METHOD FOR STORAGE ALLOCATION
JP5197544B2 (ja) 2009-10-05 2013-05-15 株式会社東芝 メモリシステム
US8312349B2 (en) 2009-10-27 2012-11-13 Micron Technology, Inc. Error detection/correction based memory management
CN101699406B (zh) 2009-11-12 2011-12-14 威盛电子股份有限公司 数据储存系统与方法
US8130553B2 (en) 2009-12-02 2012-03-06 Seagate Technology Llc Systems and methods for low wear operation of solid state memory
US8327226B2 (en) 2010-02-03 2012-12-04 Seagate Technology Llc Adjustable error correction code length in an electrical storage device
KR101691088B1 (ko) 2010-02-17 2016-12-29 삼성전자주식회사 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템
US8213255B2 (en) 2010-02-19 2012-07-03 Sandisk Technologies Inc. Non-volatile storage with temperature compensation based on neighbor state information
KR101633048B1 (ko) 2010-02-25 2016-06-24 삼성전자주식회사 메모리 시스템 및 그것의 데이터 처리 방법
US8365041B2 (en) 2010-03-17 2013-01-29 Sandisk Enterprise Ip Llc MLC self-raid flash data protection scheme
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
US8656256B2 (en) 2010-07-07 2014-02-18 Stec, Inc. Apparatus and method for multi-mode operation of a flash memory device
US8737136B2 (en) 2010-07-09 2014-05-27 Stec, Inc. Apparatus and method for determining a read level of a memory cell based on cycle information
JP5066241B2 (ja) 2010-09-24 2012-11-07 株式会社東芝 メモリシステム
WO2012051600A2 (en) 2010-10-15 2012-04-19 Kyquang Son File system-aware solid-state storage management system
WO2012058328A1 (en) 2010-10-27 2012-05-03 Sandforce, Inc. Adaptive ecc techniques for flash memory based data storage
US9063878B2 (en) 2010-11-03 2015-06-23 Densbits Technologies Ltd. Method, system and computer readable medium for copy back
US9569320B2 (en) * 2010-12-01 2017-02-14 Seagate Technology Llc Non-volatile memory program failure recovery via redundant arrays
US20120144110A1 (en) 2010-12-02 2012-06-07 Lsi Corporation Methods and structure for storage migration using storage array managed server agents
KR20120064462A (ko) 2010-12-09 2012-06-19 삼성전자주식회사 메모리 컨트롤러, 이의 오류정정 방법, 및 이를 포함하는 메모리 시스템
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
US9047955B2 (en) 2011-03-30 2015-06-02 Stec, Inc. Adjusting operating parameters for memory cells based on wordline address and cycle information
KR101733620B1 (ko) 2011-05-25 2017-05-11 삼성전자주식회사 기판에 적층된 복수의 메모리 셀들을 포함하는 불휘발성 메모리
US8711665B1 (en) 2011-10-26 2014-04-29 Western Digital Technologies, Inc. Method and apparatus for determining storage capacity error for a data storage device
KR101856130B1 (ko) 2012-01-04 2018-05-10 삼성전자주식회사 비휘발성 메모리 장치, 그리고 그것을 포함하는 메모리 시스템
US8898548B1 (en) 2012-08-24 2014-11-25 Western Digital Technologies, Inc. Methods, data storage devices and systems having variable size ECC page size
US8830717B2 (en) 2012-11-29 2014-09-09 Sandisk Technologies Inc. Optimized configurable NAND parameters
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9804960B2 (en) 2013-03-14 2017-10-31 Western Digital Technologies, Inc. Overprovision capacity in a data storage device
US10073626B2 (en) 2013-03-15 2018-09-11 Virident Systems, Llc Managing the write performance of an asymmetric memory system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7761678B1 (en) * 2004-09-29 2010-07-20 Verisign, Inc. Method and apparatus for an improved file repository
CN101625894A (zh) * 2008-07-11 2010-01-13 三星电子株式会社 非易失性存储器装置及其操作方法
WO2012174216A2 (en) * 2011-06-15 2012-12-20 Apple Inc. Block management schemes in hybrid slc/mlc memory
CN103034589A (zh) * 2011-09-28 2013-04-10 联发科技股份有限公司 进行存储器管理的方法和装置
CN103137199A (zh) * 2011-11-30 2013-06-05 三星电子株式会社 存储器系统、数据存储设备、存储卡和固态驱动器

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11520510B1 (en) 2021-07-21 2022-12-06 International Business Machines Corporation Extending the lifespan of a flash-based storage device

Also Published As

Publication number Publication date
CN105683927B (zh) 2018-11-06
WO2015034907A1 (en) 2015-03-12
US20150067245A1 (en) 2015-03-05
US9442670B2 (en) 2016-09-13

Similar Documents

Publication Publication Date Title
CN105683927A (zh) 用于重新平衡贮存在闪速存储器装置中的数据的方法和系统
CN105637490A (zh) 用于在闪速存储器装置之间迁移数据的方法和系统
KR101912596B1 (ko) 리던던트 어레이들을 통한 비휘발성 메모리 프로그램 실패 복구
JP6185993B2 (ja) 不揮発性メモリのための混合粒度の上位レベルの冗長
CN103348330B (zh) 采用独立硅元件的动态较高级冗余模式管理
US9442662B2 (en) Device and method for managing die groups
US9996297B2 (en) Hot-cold data separation method in flash translation layer
US10475518B2 (en) Memory system, memory system control method, and program
US10795827B2 (en) Adaptive management of intermediate storage
CN111164574A (zh) 基于存储设备内部地址的冗余编码条带
CN111831469A (zh) 错误恢复方法、非暂时性计算机存储媒体及存储器子系统
KR20130118370A (ko) 상위-레벨 리던던시 정보 계산
KR20160075174A (ko) 메모리 시스템 및 그 동작방법
CN108958961B (zh) 数据储存装置以及数据错误管理方法
CN114385407A (zh) 用于校正数据处理系统的数据传输中的错误的设备和方法
KR102440704B1 (ko) 예측 메모리 관리
CN113590503A (zh) 一种非挥发性记忆体存储器的垃圾回收方法与垃圾回收系统
US9323617B2 (en) Remap raid to maintain raid level
CN113849121A (zh) 用于访问条带形式的数据的存储器系统及其操作方法
CN111477260A (zh) 平衡块损耗均衡以实现最佳ssd耐久性
CN113971001B (zh) 存储器装置中的存储流量模式检测
US11966638B2 (en) Dynamic rain for zoned storage systems
US20240070020A1 (en) Block failure protection for zone memory system
CN117931055A (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
CB02 Change of applicant information

Address after: texas

Applicant after: DELPHI INT OPERATIONS LUX SRL

Address before: texas

Applicant before: Sandisk Corp.

COR Change of bibliographic data
GR01 Patent grant
GR01 Patent grant