CN105683927A - 用于重新平衡贮存在闪速存储器装置中的数据的方法和系统 - Google Patents
用于重新平衡贮存在闪速存储器装置中的数据的方法和系统 Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1048—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/78—Masking faults in memories by using spares or by reconfiguring using programmable devices
- G11C29/80—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
- G11C29/816—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout
- G11C29/822—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout for read only memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7204—Capacity control, e.g. partitioning, end-of-life degradation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing 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所述的非瞬时性计算机可读贮存介质,其中所述一个或多个程序还包括指令,所述指令当由一个或多个处理器执行时使得所述贮存控制器:
将包括各个冗余组的一个或多个逻辑组块与所述各个冗余组在间接表中相关联。
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)
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)
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)
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)
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 |
-
2014
- 2014-08-27 US US14/470,596 patent/US9442670B2/en active Active
- 2014-09-03 CN CN201480058672.6A patent/CN105683927B/zh active Active
- 2014-09-03 WO PCT/US2014/053879 patent/WO2015034907A1/en active Application Filing
Patent Citations (5)
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)
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 |