CN105637490A - 用于在闪速存储器装置之间迁移数据的方法和系统 - Google Patents

用于在闪速存储器装置之间迁移数据的方法和系统 Download PDF

Info

Publication number
CN105637490A
CN105637490A CN201480056332.XA CN201480056332A CN105637490A CN 105637490 A CN105637490 A CN 105637490A CN 201480056332 A CN201480056332 A CN 201480056332A CN 105637490 A CN105637490 A CN 105637490A
Authority
CN
China
Prior art keywords
flash memory
logic block
memory device
redundancy group
storing
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
CN201480056332.XA
Other languages
English (en)
Other versions
CN105637490B (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 CN105637490A publication Critical patent/CN105637490A/zh
Application granted granted Critical
Publication of CN105637490B publication Critical patent/CN105637490B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1608Error detection by comparing the output signals of redundant hardware
    • G06F11/1612Error detection by comparing the output signals of redundant hardware where the redundant component is persistent storage
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/004Error avoidance
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1456Hardware arrangements for backup
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • 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

Landscapes

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

Abstract

这里所述的实施例包括可以增强包括贮存介质的贮存系统的耐受性的系统、方法和/或装置。所述方法包括:将多个闪速存储器装置分割为逻辑组块,每个逻辑组块包括一个或多个闪速存储器块;以及检测关于多个闪速存储器装置的各个闪速存储器装置的触发条件。响应于检测触发条件,所述方法包括:根据预定的选择准则选择各个闪速存储器装置的逻辑组块的一个以用于迁移;以及在第二闪速存储器装置处贮存包括所述选择的逻辑组块的副本的复制的逻辑组块。所述方法包括:将所述选择的逻辑组块的地址重新映射到所述复制的逻辑组块的物理位置;以及降低与所述各个闪速存储器装置相关联的逻辑组块的数量。

Description

用于在闪速存储器装置之间迁移数据的方法和系统
技术领域
公开的实施例一般地涉及存储器系统,并且具体地涉及改善包括贮存介质的贮存系统(例如,包括一个或多个闪速存储器装置)的耐受性。
背景技术
半导体存储器装置——包括闪速存储器——通常利用存储器单元来将数据贮存为电的值,诸如电荷或电压。闪速存储器单元例如包括具有被用于贮存数据值的电荷表示的浮置栅极的单个晶体管。已经以各种方式促进了贮存密度的提高,包括通过制造的发展使能的存储器单元在芯片上的密度的提高,以及从单级闪速存储器单元到多级闪速存储器单元的转变,使得可以由每个闪速存储器单元贮存两个或更多位。
在一些情况中,当检测到用于闪速存储器装置的误差条件(例如,从闪速存储器装置读取不可恢复的码字,恢复码字所需的计算性资源超过预定的阈值,或者用于闪速存储器装置的编程-擦除(PE)周期的计数超过阈值值)时,整个闪速存储器装置被认为已经故障。相反,贮存在闪速存储器装置上的所有数据必须被复制并且贮存在不同的闪速存储器装置上。该整个装置的复制丢弃与被认为是故障的装置的仍工作的部分相关联的任何剩余寿命或值,消耗资源,并且将过度的负担置于剩余的闪速存储器装置上。
发明内容
在一些实施例中,贮存控制器被配置为将多个闪速存储器装置分割为多个逻辑组块。在检测到关于所述多个闪速存储器装置的各个闪速存储器装置的预定的触发条件之后,贮存控制器被配置为启动迁移过程,从而在各个闪速存储器装置上的至少一个逻辑组块被迁移到不同于各个闪速存储器装置的第二闪速存储器装置。如此,由于检测到关于闪速存储器装置的触发条件而将逻辑组块迁移出闪速存储器装置,从而缓慢地逐渐淘汰闪速存储器装置而不是整个闪速存储器装置立即故障并且从而被复制。
附图说明
为了可以更加详细地理解本公开,可以通过参考各种实施例的特性来进行的更加特定的描述,一些实施例在附图中说明。但是,附图仅示出了本公开的更加相关的特性并且从而不被认为是限制性的,因为说明书可能认可其他有效的特性。
图1是示出根据一些实施例的数据贮存系统的实现方式框图。
图2A是示出根据一些实施例的管理模块的实现方式框图。
图2B是示出根据一些实施例的在图2A中包括的特征向量表的示意图。
图2C是示出根据一些实施例的在图2B中包括的特征向量的的示意图。
图3A-3C是根据一些实施例的被分割为多个逻辑组块的贮存介质的框图。
图4A是根据一些实施例的被分割为多个逻辑组块的贮存介质的框图。
图4B是根据一些实施例的对应于在图4A中的多个逻辑组块的间接表的示意图。
图4C是根据一些实施例的被分割为多个逻辑组块的贮存介质的框图。
图4D是根据一些实施例的对应于在图4C中的多个逻辑组块的间接表的示意图。
图5-7示出了根据一些实施例的触发迁移过程的方法的流程图表示。
图8A-8C示出了根据一些实施例的管理贮存系统的方法的流程图表示。
根据惯例,在附图中示出的各种特性可能未按比例绘制。相应地,为了清晰,各种特性的大小可以任意地扩大或减小。此外,一些附图可能没有绘制给定系统、方法或装置的所有组件。最后,贯穿说明书和附图,相似的参考标号可以被用于表示相似的特性。
具体实施方式
这里所述的各种实施例包括可以改善包括贮存介质(例如,包括一个或多个闪速存储器装置)的贮存系统的耐受性的装置和/或方法。一些实施例包括用于通过在贮存系统的闪速存储器装置之间迁移数据而管理贮存系统的方法和/或系统。
更具体地,一些实施例包括管理包括贮存控制器和多个闪速存储器装置的贮存系统的方法,其中每个闪速存储器装置具有多个闪速存储器块。在一些实施例中,在贮存控制器进行该方法。方法包括:将多个闪速存储器装置的每一个分割为多个逻辑组块,其中每个逻辑组块包括一个或多个闪速存储器块;并且检测关于多个闪速存储器装置的各个闪速存储器装置的预定的触发条件。响应于检测预定的触发条件,方法包括:根据预定的选择准则选择各个闪速存储器装置的多个逻辑组块中的一个以用于迁移;并且在不同于各个闪速存储器装置的第二闪速存储器装置处,贮存包括选择的逻辑组块的副本的复制的逻辑组块。方法还包括:将选择的逻辑组块的地址重新映射到复制的逻辑组块的物理位置;并且降低与各个闪速存储器装置相关联的逻辑组块的数量。
一些实施例包括贮存控制器,其包括:一个或多个处理器;主机接口,被配置为将贮存控制器耦接到主机;贮存介质接口,被配置为将贮存控制器耦接到包括多个闪速存储器装置的贮存介质,多个闪速存储器装置的每一个具有多个闪速存储器块;以及贮存控制器,贮存指令,当由一个或多个处理器执行该指令时,使得贮存控制器进行这里所述的任何方法的操作。
一些实施例包括非瞬时性计算机可读贮存介质,其贮存一个或多个程序以用于由耦接到包括多个闪速存储器装置的贮存介质的贮存控制器的一个或多个处理器执行,其中每个闪速存储器装置包括多个闪速存储器块,一个或多个程序包括指令,当由一个或多个处理器执行指令时使得贮存控制器进行这里所述的任何方法的操作。
在这里描述许多细节以便于提供对在附图中示出的示例实施例的透彻理解。但是,可以不需要许多特定细节而实施一些实施例,并且权利要求的范围仅由在权利要求中特别记述的那些特性和方面限制。此外,没有以详尽的细节描述已知的方法、组件和电路,以便不必要地混淆这里所述的实施例的更加相关的方面。
图1是根据一些实施例的数据贮存系统100的实现方式的示意图。尽管示出了一些示例特性,但是为了简洁而没有示出各种其它特性以便不混淆这里所述的示例实施例的更加相关的方面。为此,作为非限制性示例,数据贮存系统100包括贮存控制器120和贮存介质130,并且被结合计算机系统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的非瞬时性计算机可读贮存介质贮存以下程序、模块和数据结构或其子集或超集:
●用于从贮存介质130读取数据的、包括多个闪速存储器装置的数据读取模块206;
●用于将数据写入到贮存介质130的数据写入模块208;
●用于将数据从贮存介质130擦除的数据擦除模块210;
●用于将多个闪速存储器装置的每一个分割为多个逻辑组块的逻辑组块管理模块212,包括:
●冗余模块214,用于将多个逻辑组块布置为冗余组,包括用于维持包括冗余组的每个逻辑组块的位置(或物理地址)的间接表216;
●映射模块218,用于将对于逻辑组块的每一个的逻辑地址(或一组逻辑地址)映射到物理地址(或一组物理地址),包括将逻辑地址与对于多个逻辑组块的物理地址相关联的逻辑到物理的映射220;
●触发条件检测模块222,用于检测关于多个闪速存储器装置的各个闪速存储器装置的触发条件;
●迁移模块224,用于进行迁移过程,包括:
●选择模块226,用于选择将被复制的逻辑组块;以及
●贮存模块228,用于贮存包括选择的逻辑组块的副本的复制的逻辑组块;
●重新编码模块230,用于以更高水平的误差校正保护重新编码逻辑组块中的数据;以及
●特征向量表234,包括许多特征向量236,其每一个贮存用于贮存介质130(例如,贮存介质130的闪速存储器装置、裸芯、块区、块、字线、字线区或页部分)的各个部分的特征数据。
上述识别的元件的每一个可以被贮存在之前提到的存储器装置的一个或多个中,并且对应于用于进行上述功能的指令集。上述识别的模块或程序(即,指令集)不需要实现为单独的软件程序、规程或模块,并且从而这些模块的各种子集可以组合或者在各种实施例中另外地重新布置。在一些实施例中,存储器202可以贮存以上识别的模块和数据结构的子集。此外,存储器202可以贮存以上未描述的额外的模块和数据结构。在一些实施例中,贮存在存储器202中的程序、模块和数据结构或者存储器202的非瞬时性计算机可读贮存介质提供用于实现参考图8A-8C在下面所述的任何方法的指令。在一些实施例中,这些模块的一些或全部可以用包含模块功能的部分或全部的专用的硬件电路实现。
尽管图2A示出了管理模块121,但是图2A相比于这里所述的实施例的结构性示意更倾向于作为可能出现在管理模块中的各种特性的功能性描述。实践中,并且如由本领域普通技术人员识别的,单独示出的程序、模块和数据结构可以被组合,并且一些程序、模块和数据结构可以被分开。
图2B是示出根据一些实施例的特征向量表234的实现方式的框图。特征向量表234包括多个特征向量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示出了包括多个闪速存储器装置(例如,装置1、2、3、4、5、6、...)的贮存介质130。在一些实施例中,贮存介质130包括更多或更少数量的闪速存储器装置。在一些实施例中,多个闪速存储器装置的每一个是单裸芯或多裸芯闪速存储器装置。在一些实施例中,贮存控制器120和贮存介质130包括贮存系统,其中贮存介质130包括诸如闪速存储器装置的一个或多个存储器装置。
在一些实施例中,贮存控制器120或其组件(例如,逻辑组块管理模块212,图2A)被配置为将闪速存储器装置分割为多个逻辑组块。在图3A中,例如,装置1被分割为逻辑组块1a、1b、1c、1d、1e、1f。每个逻辑组块被分配到逻辑地址(或逻辑地址的组),在逻辑到物理的映射220中该逻辑地址被映射到物理地址(或物理地址的组)。例如,逻辑组块1a在装置1处被映射到物理地址的第一范围。在一些实施例中,贮存控制器120或其组件(例如,映射模块218,图2A)被配置为随着逻辑组块从第一闪速存储器装置迁移到第二闪速存储器装置,而维持并且更新逻辑到物理的映射220。
在图3A中,例如,贮存介质130包括原来的(origin)装置1、2、3、4和备用装置5、6。例如,原来的装置是初始地贮存数据的闪速存储器装置,并且备用装置是贮存从原来的装置的一个产生的复制的数据的储备闪速存储器装置。在图3A中,例如,数据被贮存在原来的装置1-4的逻辑组块中。图3A示出了包括四个原来的装置和两个备用装置的贮存介质130;但是,如将由本领域技术人员所理解的,贮存介质130可以包括任何数量的原来的和备用装置,并且装置不一定都是相同的尺寸。
在一些实施例中,在将多个闪速存储器装置分割为多个逻辑组块之后(或者与此同时),贮存控制器120或其组件(例如,冗余模块214,图2A)被配置为将多个逻辑组块布置为冗余组,其中每个冗余组包括一个或多个逻辑组块。在一些实施例中,每个冗余组贮存足以使能恢复被贮存在一个或多个逻辑组块的至少一个中的数据的冗余的数据。在图3A中,例如,代表性冗余组310包括逻辑组块1a、2a、3a、4a。例如,代表性冗余组310在四个原来的装置(例如,连续的RAID条带)之上冗余地编码。在图3A中,例如,代表性冗余组320包括逻辑组块1e、2e、3e、4e,并且以与代表性冗余组310类似的组织的方案布置。
图3B是根据一些实施例的被分割为多个逻辑组块的贮存介质的框图。在一些实施例中,在检测到关于原来的装置的预定的触发条件之后,贮存控制器120或其组件(例如,选择模块226,图2A)被配置为根据预定的选择准则来选择包括用于迁移过程的原来的装置的多个逻辑组块中的一个。关于图5-7在下面更加详细地描述预定的触发条件的检测,并且关于方法800在下面更加详细地描述迁移过程。在一些实施例中,迁移过程包括复制选择的逻辑组块并且在备用装置处贮存复制的逻辑组块,该复制的逻辑组块包括选择的逻辑组块的副本。在一些实施例中,在迁移过程完成之后,贮存控制器120或其组件通知原来的装置选择的逻辑组块现在被清空(例如,经由用于标准SSD的TRIM或UNMAP命令)。在一些实施例中,根据优选的贮存利用方案复制的逻辑组块被贮存在备用装置处。在一些实施例中,优选的贮存利用方案需要将复制的逻辑组块贮存在冗余组中的不包括任何逻辑组块的备用装置中,和/或需要将复制的逻辑组块贮存在备用装置中的位置处,使得复制的逻辑组块被贮存在与冗余组中的其它逻辑组块相同的连续的条带中,该复制的逻辑组块被分配到与选择的逻辑组块相同的冗余组。
例如,贮存控制器120或其组件(例如,触发条件检测模块222,图2A)在对应于原来的装置1的贮存介质130中检测第一预定的触发条件。在图3B中,例如,贮存控制器120或其组件(例如,选择模块226,图2A)在检测到关于原来的装置1的预定的触发条件之后选择代表性冗余组310中的逻辑组块1a(例如,如示出为划掉的)以用于迁移。在图3B中,例如,贮存控制器120或其组件(例如,贮存模块228,图2A)在不在代表性冗余组310中贮存任何逻辑组块的备用装置(例如,备用装置5)处,贮存包括逻辑组块1a的副本的复制的逻辑组块1a。在图3B中,例如,复制的逻辑组块1a被贮存在备用装置5中的位置处,使得复制的逻辑组块1a被贮存在与代表性冗余组310中的其它逻辑组块(例如,在备用装置5处的第一位置(或物理地址的第一范围))相同的连续的条带中。应注意的是,触发迁移的条件不一定需要从被选择以用于迁移的逻辑组块中产生,仅在相同的装置中。
图3C是根据一些实施例的被分割为多个逻辑组块的贮存介质的框图。例如,贮存控制器120或其组件(例如,触发条件检测模块222,图2A)在对应于原来的装置3的贮存介质130中检测第二预定的触发条件。在图3C中,例如,贮存控制器120或其组件(例如,选择模块226,图2A)在检测到关于原来的装置3的预定的触发条件之后选择代表性冗余组310中的逻辑组块3a(例如,如示出为划掉的)以用于迁移。在图3C中,例如,贮存控制器120或其组件(例如,贮存模块228,图2A)在代表性冗余组310中不贮存任何逻辑组块的备用装置(例如,备用装置6)处贮存包括逻辑组块3a的副本的复制的逻辑组块3a。在图3C中,例如,复制的逻辑组块3a被贮存在备用装置6中的位置处,使得复制的逻辑组块3a被贮存在与代表性冗余组310中的其它逻辑组块(例如,在备用装置6处的第一位置(或物理地址的第一范围))相同的连续的条带中。
例如,贮存控制器120或其组件(例如,触发条件检测模块222,图2A)在对应于原来的装置2的贮存介质130中检测第三预定的触发条件。在图3C中,例如,贮存控制器120或其组件(例如,选择模块226,图2A)在检测到关于原来的装置2的预定的触发条件之后选择代表性冗余组320中的逻辑组块2e(例如,如示出为划掉的)以用于迁移。在图3C中,例如,贮存控制器120或其组件(例如,贮存模块228,图2A)在不在代表性冗余组320中贮存任何逻辑组块的备用装置(例如,备用装置5)处,贮存包括逻辑组块2e的副本的复制的逻辑组块2e。在图3C中,例如,复制的逻辑组块2e被贮存在备用装置5中的位置处,使得复制的逻辑组块2e被贮存在与代表性冗余组320中的其它逻辑组块(例如,在备用装置5处的第五位置(或物理地址的第五范围))相同的连续的条带中。
图4A是根据一些实施例的贮存介质(例如,企业贮存环境)被分割为多个逻辑组块的框图。图4A示出了包括多个闪速存储器装置(例如,装置1、2、3、4、5、6、…)的贮存介质130。在一些实施例中,贮存介质130包括更多或更少数量的闪速存储器装置。在一些实施例中,多个闪速存储器装置的每一个是单裸芯或多裸芯闪速存储器装置。在一些实施例中,贮存控制器120和贮存介质130包括贮存系统。
在一些实施例中,贮存控制器120或其组件(例如,逻辑组块管理模块212,图2A)被配置为将闪速存储器装置分割为多个逻辑组块。在图4A中,例如,装置1被分割为逻辑组块1a、1b、1c、1d、1e、1f。每个逻辑组块被分配到逻辑地址(或逻辑地址的组),其中该逻辑地址(或逻辑地址的组)在逻辑到物理的映射220中被映射到物理地址(或物理地址的组)。例如,逻辑组块1a在装置1处被映射到第一位置(或物理地址的第一范围)。在一些实施例中,管理贮存控制器120或其组件(例如,映射模块218,图2A)被配置为随着逻辑组块从第一闪速存储器装置迁移到第二闪速存储器装置,而维持并且更新逻辑到物理的映射220。
在图4A中,例如,贮存介质130包括原来的装置1、2、3、4和备用装置5、6。例如,原来的装置是初始地贮存数据的闪速存储器装置,并且备用装置是贮存从原来的装置的一个产生的复制的数据的储备闪速存储器装置。在图4A中,例如,数据被贮存在原来的装置1-4的逻辑组块中。图4A示出了包括四个原来的装置和两个备用装置的贮存介质130;但是,如将由本领域技术人员所理解的,贮存介质130可以包括任何数量的原来的和备用装置。
图4B是根据一些实施例的对应于在图4A中的多个逻辑组块的间接表的示意图。在一些实施例中,在将多个闪速存储器装置分割为多个逻辑组块之后(或者与此同时),贮存控制器120或其组件(例如,冗余模块214,图2A)被配置为将多个逻辑组块布置为冗余组,其中每个冗余组包括一个或多个逻辑组块。在一些实施例中,每个冗余组贮存足以使能恢复被贮存在一个或多个逻辑组块的至少一个中的数据的冗余的数据。间接表216包含每个冗余组中的一个或多个逻辑组块的位置(例如,物理地址)。在一些实施例中,贮存控制器120或其组件(例如,冗余模块214,图2A)被配置为随着冗余组中的一个或多个逻辑组块的物理地址随时间改变(例如,随着逻辑组块从第一闪速存储器装置迁移到第二闪速存储器装置)而维持并且更新间接表216。
在图4B中,例如,间接表216示出了用于冗余组1中的逻辑组块1的物理地址位于原来的装置1(例如,由坐标1,1指示)处的第一位置(或物理地址的第一范围)中,用于冗余组1中的逻辑组块2的物理地址位于原来的装置2(例如,由坐标2,1指示)处的第一位置(或物理地址的第一范围)中,用于冗余组1中的逻辑组块3的物理地址位于原来的装置3(例如,由坐标3,1指示)处的第一位置(或物理地址的第一范围)中,并且用于冗余组1中的逻辑组块4的物理地址位于原来的装置4(例如,由坐标4,1指示)处的第一位置(或物理地址的第一范围)中。在图4B中,例如,包括逻辑组块1a、2a、3a、4a的冗余组1在四个原来的装置(例如,连续的RAID条带)之上被冗余地编码。在图4B中,例如,冗余组2-6被以与冗余组1类似的组织的方案布置。本领域普通技术人员将理解可以实现多种冗余方案,而为了简洁的原因而不在此讨论。
图4C是根据一些实施例的被分割为多个逻辑组块的贮存介质的框图。在一些实施例中,在检测到关于原来的装置的预定的触发条件之后,贮存控制器120或其组件(例如,选择模块226,图2A)被配置为根据预定的选择准则选择包括原来的装置的多个逻辑组块中的一个以用于迁移过程。在下面关于图5-7更加详细地描述预定的触发条件的检测,并且在下面关于方法800更加详细地描述迁移过程。在一些实施例中,迁移过程包括复制选择的逻辑组块并且在备用装置处贮存复制的逻辑组块,该复制的逻辑组块包括选择的逻辑组块的副本。在一些实施例中,在迁移过程完成之后,贮存控制器120或其组件通知原来的装置选择的逻辑组块现在被清空(例如,经由用于标准SSD的TRIM或UNMAP命令)。应注意的是,触发迁移的条件不一定需要从被选择以用于迁移的逻辑组块中产生,仅在相同的装置中产生。
在一些实施例中,根据优选的贮存利用方案复制的逻辑组块被贮存在备用装置处。在一些实施例中,优选的贮存利用方案需要将复制的逻辑组块贮存在备用装置中的第一可用的位置处。在一些实施例中,优选的贮存利用方案需要将复制的逻辑组块贮存在不在冗余组中包括逻辑组块的备用装置中的第一可用的位置处,该复制的逻辑组块被分配到与选择的逻辑组块相同的冗余组。在一些实施例中,优选的贮存利用方案需要将复制的逻辑组块贮存在不在冗余组中包括任何逻辑组块的备用装置中,并且需要将复制的逻辑组块贮存在与冗余组中的其它逻辑组块不在相同的连续的条带中的第一可用的位置,该复制的逻辑组块被分配到与选择的逻辑组块相同的冗余组。
例如,贮存控制器120或其组件(例如,触发条件检测模块222,图2A)在对应于原来的装置3的贮存介质130中检测第一预定的触发条件。在图4C中,例如,贮存控制器120或其组件(例如,选择模块226,图2A)在检测到关于原来的装置3的预定的触发条件之后选择冗余组3中的逻辑组块3c(例如,如示出为划掉的)以用于迁移。在图4C中,例如,贮存控制器120或其组件(例如,贮存模块228,图2A)在备用装置5处贮存包括逻辑组块3c的副本的复制的逻辑组块3c,因为备用装置5不在冗余组3中贮存任何逻辑组块。在该示例中,复制的逻辑组块3c被贮存在与冗余组3中的其它逻辑组块不在相同的连续的条带中的备用装置5中的第一可用的位置处(例如,在由坐标5,1指示的备用装置5处的第一位置(或物理地址的第一范围)中)。
例如,贮存控制器120或其组件(例如,触发条件检测模块222,图2A)检测在对应于原来的装置4的贮存介质130中的第二预定的触发条件。在图4C中,例如,贮存控制器120或其组件(例如,选择模块226,图2A)在检测到关于原来的装置4的预定的触发条件之后选择冗余组2中的逻辑组块4b(例如,如示出为划掉的)以用于迁移。在图4C中,例如,贮存控制器120或其组件(例如,贮存模块228,图2A)在备用装置5处贮存包括逻辑组块4b的副本的复制的逻辑组块4b,因为备用装置5不在冗余组2中贮存任何逻辑组块。在该示例中,复制的逻辑组块4b被可选地贮存在与冗余组2中的其它逻辑组块不在相同的故障域中的备用装置5中的第一可用的位置(例如,在由坐标5,3指示的备用装置5处的第三位置(或物理地址的第三范围)中)。
例如,贮存控制器120或其组件(例如,触发条件检测模块222,图2A)在对应于原来的装置1的贮存介质130中检测第三预定的触发条件。在图4C中,例如,贮存控制器120或其组件(例如,选择模块226,图2A)在检测到关于原来的装置1的预定的触发条件之后选择冗余组4中的逻辑组块1d(例如,如示出为划掉的)以用于迁移。在图4C中,例如,贮存控制器120或其组件(例如,贮存模块228,图2A)在备用装置5处贮存包括逻辑组块1d的副本的复制的逻辑组块1d,因为备用装置5不在冗余组4中贮存任何逻辑组块。在该示例中,复制的逻辑组块1d被可选地贮存在与冗余组4中的其它逻辑组块不在相同的连续的条带中的备用装置5中的第一可用的位置处(例如,在由坐标5,2指示的备用装置5处的第二位置(或物理地址的第二范围)中)。
例如,贮存控制器120或其组件(例如,触发条件检测模块222,图2A)在对应于原来的装置2的贮存介质130中检测第四预定的触发条件。在图4C中,例如,贮存控制器120或其组件(例如,选择模块226,图2A)在检测到关于原来的装置2的预定的触发条件之后在冗余组4中选择逻辑组块2d(例如,如示出为划掉的)以用于迁移。在图4C中,例如,贮存控制器120或其组件(例如,贮存模块228,图2A)在备用装置6处贮存包括逻辑组块2d的副本的复制的逻辑组块2d,因为备用装置6不在冗余组4中贮存任何逻辑组块。在该示例中,复制的逻辑组块2d被贮存在与冗余组4中的其它逻辑组块不在相同的连续的条带中的备用装置6中的第一可用的位置处(例如,在由坐标6,1指示的备用装置6处的第一位置(或物理地址的第一范围)中)。
例如,贮存控制器120或其组件(例如,触发条件检测模块222,图2A)在对应于原来的装置1的贮存介质130中检测第五预定的触发条件。在图4C中,例如,贮存控制器120或其组件(例如,选择模块226,图2A)在检测到第二关于原来的装置1的预定的触发条件之后在冗余组1中选择逻辑组块1a(例如,如示出为划掉的)以用于迁移。在图4C中,例如,贮存控制器120或其组件(例如,贮存模块228,图2A)在备用装置5处贮存包括逻辑组块1a的副本的复制的逻辑组块1a,因为备用装置5不在冗余组1中贮存任何逻辑组块。在该示例中,复制的逻辑组块1a被贮存在与冗余组1中的其它逻辑组块不在相同的连续的条带中的备用装置5中的第一可用的位置处(例如,在由坐标5,4指示的备用装置5处的第四位置(或物理地址的第四范围)中)。
图4D是根据一些实施例的对应于在图4C中的多个逻辑组块的间接表的示意图。在图4D中,间接表216是在图4B中示出的间接表的更新的版本。在图4D中,间接表216反映如关于图4C在上面描述地迁移的逻辑组块的新的位置(或物理地址)。在图4D中,例如,冗余组4中的逻辑组块1和2具有新的物理地址(例如,分别由坐标5,2和6,1指示)。例如,根据优选的贮存利用方案,逻辑组块1d已经从原来的装置1迁移出到在备用装置5处的第二位置(或物理地址的范围)(例如,坐标5,2),并且逻辑组块2d已经从原来的装置2迁移出到在备用装置6处的第一位置(或物理地址的范围)(例如,坐标6,1)。换句话说,冗余组4中的逻辑组块1(例如,逻辑组块1d)已经从位置(1,4)重新映射到位置(5,2),并且冗余组4中的逻辑组块2(例如,逻辑组块2d)已经从位置(2,4)重新映射到位置(6,1)。例如,在图4C中-4D中示出的优选的贮存利用方案需要将复制的逻辑组块贮存在冗余组中不包括任何逻辑组块的备用装置中,并且需要将复制的逻辑组块贮存在不在与冗余组中的其它逻辑组块相同的连续的条带中的第一可用的位置处,该复制的逻辑组块被分配到与选择的逻辑组块相同的冗余组。可选地,复制的组块不一定需要在与冗余组中的其它逻辑组块相同的连续的条带中。
图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或其组件(例如,触发条件检测模块222,图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或其组件(例如,触发条件检测模块222,图2A)被配置为响应于接收误差,检测关于各个闪速存储器装置的预定的触发条件。
图7示出了根据一些实施例的触发迁移过程的方法700的流程图表示。在一些实施例中,方法700在贮存控制器120处进行。
在步骤702处,贮存控制器120确定用于多个闪速存储器装置的各个闪速存储器装置的阈值数的闪速存储器块已经故障或者在近期有时可能发生故障。见以上关于图5的步骤502的例如关于用于确定各个闪速存储器装置是否已经故障的准则的讨论。
在步骤704处,响应于确定用于各个闪速存储器装置的阈值数的闪速存储器块已经故障,贮存控制器120启动关于各个闪速存储器装置的迁移过程(在下面关于方法800更加详细地描述)。在一些实施例中,贮存控制器120或其组件(例如,触发条件检测模块222,图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或其组件(例如,逻辑组块管理模块212,图2A)被配置为将多个闪速存储器装置的每一个分割为多个逻辑组块。此外,用于多个逻辑组块的每一个的逻辑地址(或逻辑地址的组)在逻辑到物理的映射220中与物理地址(或物理地址的组)相关联。在一些实施例中,贮存控制器120或其组件(例如,映射模块218,图2A)被配置为随着逻辑组块在闪速存储器装置之间迁移而维持并且更新逻辑到物理的映射220。
在一些实施例中,由软件预先确定(804)多个逻辑组块的尺寸。例如,贮存系统的管理员能够确定逻辑组块的尺寸。通常,逻辑组块的尺寸大于或等于1MB。
在一些实施例中,基于由贮存系统使用的协议确定(806)多个逻辑组块的尺寸。例如,当小型计算机系统接口(SCSI)协议被用于贮存系统时,逻辑组块可以是逻辑单元数量(LUN)。SCSI协议在贮存系统中支持达64,000LUN;但是,一些操作系统仅支持达16,000LUN。例如,8TB贮存系统可以被分割为16,000500MBLUN。
贮存控制器检测(808)关于多个闪速存储器装置的各个闪速存储器装置的预定的触发条件。在图5中,例如,贮存控制器120或其组件(例如,触发条件检测模块222,图2A)响应于从各个闪速存储器装置接收延迟的触发,而检测关于各个闪速存储器装置的预定的触发条件。在该示例中,在从贮存控制器120接收存储器访问请求之后,各个闪速存储器装置将延迟的误差发送到贮存控制器120。在图6中,例如,贮存控制器120或其组件(例如,触发条件检测模块222,图2A)当接收来自各个闪速存储器装置的通知时,检测关于各个闪速存储器装置的预定的触发条件。在该示例中,在确定用于各个闪速存储器装置的阈值数的闪速存储器块已经故障之后,各个闪速存储器装置将主动式误差发送到贮存控制器120。在图7中,例如,贮存控制器120或其组件(例如,触发条件检测模块222,图2A)在确定用于各个闪速存储器装置的块的阈值数已经故障之后,检测关于各个闪速存储器装置的预定的触发条件。
在一些实施例中,检测的预定的触发条件是(810)一组预定的触发条件中的一个。例如,如上所述,预定的触发条件的组包括:贮存控制器120从各个闪速存储器装置接收延迟的误差;贮存控制器120从各个闪速存储器装置接收主动式误差;以及贮存控制器120确定用于各个闪速存储器装置的块的阈值数已经故障。其中延迟的或主动式误差由贮存控制器120接收,多个闪速存储器装置的每一个保持指示用于各个闪速存储器装置的故障的闪速存储器块的数量的计数器。其中贮存控制器120确定用于各个闪速存储器装置的块的阈值数已经故障,贮存控制器120保持指示用于多个闪速存储器装置的各个闪速存储器装置的故障的闪速存储器块的数量的多个闪速存储器装置的每一个的计数器。
在一些实施例中,贮存控制器在将存储器访问请求引导到各个闪速存储器装置之后检测(812)预定的触发条件。在图5中,例如,贮存控制器120或其组件(例如,触发条件检测模块222,图2A)响应于接收延迟的误差并且在步骤506处在将存储器访问请求引导到各个闪速存储器装置之后,检测关于各个闪速存储器装置的预定的触发条件。
在一些实施例中,预定的触发条件指示(814)用于各个闪速存储器装置的故障的闪速存储器块的计数器超过阈值数的整数倍数,该阈值数包括被包含在逻辑组块中的闪速存储器块的数量或包含在逻辑组块中的闪速存储器块的数量的整数倍数。在图5中,例如,贮存控制器120从各个闪速存储器装置接收延迟的误差,其指示用于各个闪速存储器装置的故障的闪速存储器块的计数器超过阈值数的整数倍数。在图6中,例如,贮存控制器120从各个闪速存储器装置接收主动式误差,其指示用于各个闪速存储器装置的故障的闪速存储器块的计数器超过阈值数的整数倍数。在图7中,例如,贮存控制器120确定用于各个闪速存储器装置的故障的闪速存储器块的计数器超过阈值数的整数倍数。例如,如果逻辑组块包括10个闪速存储器块,阈值数是10或者10的整数倍数(例如,20、30、40、50等)。例如,当阈值数为10时,预定的触发条件指示用于各个闪速存储器装置的故障的闪速存储器块的计数器超过10或者10的整数倍数(例如,20、30、40、50等)。
在一些实施例中,响应于检测到(816)预定的触发条件,贮存控制器询问(818)各个闪速存储器装置以确定各个闪速存储器装置的尺寸是否小于各个闪速存储器装置的之前尺寸,并且根据询问指示各个闪速存储器装置的尺寸小于各个闪速存储器装置的之前尺寸的确定而进行选择和贮存。在图5中,例如,贮存控制器120或其组件(例如,触发条件检测模块222,图2A)当从各个存储器装置接收延迟的触发时,检测关于各个闪速存储器装置的预定的触发条件。在图5中,例如,响应于检测关于各个闪速存储器装置的预定的触发条件,贮存控制器120或其组件在步骤510处询问各个闪速存储器装置。在图5中,例如示出了,当在步骤514处确定装置的当前宣传的尺寸小于装置的之前宣传的尺寸时,贮存控制器120或其组件在步骤516处启动迁移过程(包括选择和贮存)。
响应于检测(816)预定的触发条件,贮存控制器根据预定的选择准则选择(820)各个闪速存储器装置的多个逻辑组块中的一个以用于迁移。在图3B中,例如,响应于检测关于原来的装置1的预定的触发条件,贮存控制器120或其组件(例如,选择模块226,图2A)选择逻辑组块1a以用于迁移。在图4C中,例如,响应于检测关于原来的装置3的预定的触发条件,贮存控制器120或其组件(例如,选择模块226,图2A)选择逻辑组块3c以用于迁移。例如,贮存控制器120或其组件(例如,选择模块226,图2A)伪随机地或根据预定的选择准则选择逻辑组块1a和3c。
在一些实施例中,预定的选择准则包括(822)各个闪速存储器装置的最少使用的逻辑组块或最少填充的逻辑组块。例如,响应于检测关于各个闪速存储器装置的预定的触发条件,贮存控制器120或其组件(例如,选择模块226,图2A)选择各个闪速存储器装置的最少使用的(例如,最少在其上操作的)或最少填充的逻辑组块以便于减少迁移过程所需要的时间和资源。
在一些实施例中,预定的选择准则包括(824)与存储器访问请求相关联的逻辑组块。例如,响应于检测关于各个闪速存储器装置的预定的触发条件,贮存控制器120或其组件(例如,选择模块226,图2A)选择与当前的或下一个存储器访问请求(例如,读取或写入操作)相关联的逻辑组块。
在一些实施例中,预定的选择准则包括对贮存控制器120在该时间取回来说是简单或有效的逻辑组块。例如,当贮存控制器120在逻辑组块上进行与方法800(例如,垃圾收集或误差擦除)无关的其它任务时,在无关的任务完成之前或者之后选择所述逻辑组块。
响应于检测(816)预定的触发条件,贮存控制器在不同于各个闪速存储器装置的第二闪速存储器装置处贮存(826)包括选择的逻辑组块的副本的复制的逻辑组块。在图3B中,例如,贮存控制器120或其组件(例如,贮存模块228,图2A)在备用装置5处贮存包括逻辑组块1a的副本的复制的逻辑组块1a,其中备用装置5不同于原来的装置1。在图4C中,例如,贮存控制器120或其组件(例如,贮存模块228,图2A)在备用装置5处贮存包括逻辑组块3c的副本的复制的逻辑组块3c,其中备用装置5不同于原来的装置3。在一些实施例中,选择的组块贮存在与之前贮存的不同类型的存储器介质中。例如,选择的逻辑组块从闪速存储器迁移到HDD或反之亦然。
在一些实施例中,贮存控制器120或其组件(例如,迁移模块224,图2A)进行迁移过程包括,选择(820)、贮存(826)和重新映射(832)。在一些实施例中,选择的逻辑组块的迁移包括贮存(826)和重新映射(832)。在一些实施例中,在迁移过程完成之后,贮存控制器120或其组件通知原来的装置选择的逻辑组块现在被清空(例如,经由用于标准SSD的TRIM或UNMAP命令)。
在一些实施例中,第二闪速存储器装置在(828)与各个闪速存储器装置不同的故障域中。在一些实施例中,贮存介质130包括企业贮存环境。企业贮存环境被组织为层级,包括多个行,每行多个柜(cabinet),每个柜多个架(shelf),并且每个架多个闪速存储器装置。在一些实施例中,层级的每一级(即,行、柜、架、闪速存储器装置)被认为是一故障域。在一些实施例中,贮存控制器120或其组件(例如,贮存模块228,图2A)在与包括各个闪速存储器装置的故障域不同的故障域中贮存复制的逻辑组块。在一些实施例中,当贮存复制的逻辑组块时,必须跨至少预定的数量的故障域。例如,如果各个闪速存储器装置位于行1、柜2、架3并且复制的逻辑组块必须跨一个故障域,则复制的闪速存储器装置至少贮存在行1、柜2中的不同的架中。
在一些实施例中,响应于检测到(816)预定的触发条件,贮存控制器在各个闪速存储器装置的至少一个逻辑组块中、以比在各个闪速存储器装置的至少一个逻辑组块中的数据的之前的编码更高水平的误差校正保护重新编码(830)数据。在一些实施例中,贮存控制器120或其组件(例如,重新编码模块230,图2A)被配置为在检测到关于各个闪速存储器装置的预定的触发条件之后,在各个闪速存储器装置的多个逻辑组块中的一个中重新编码数据。作为一个示例,对于各个逻辑组块包含了更多的校验位(即,增加了校验-数据的比率)。作为另外的示例,更强的ECC方案被用于各个逻辑组块。例如,贮存在各个逻辑组块中的数据被从Bose-Chaudhuri-Hocquenghem(BCH)编码到到低密度奇偶校验码(LDPC)编码重新编码。
响应于检测(816)预定的触发条件,贮存控制器将选择的逻辑组块的地址重新映射(832)到复制的逻辑组块的物理位置。在一些实施例中,贮存控制器120或其组件(例如,映射模块218,图2A)被配置为更新逻辑到物理的映射220使得选择的逻辑组块的物理地址(例如,各个闪速存储器装置处的位置)由复制的逻辑组块的物理地址(例如,不同于各个闪速存储器装置的第二装置的位置)替代。换句话说,与复制的逻辑组块相关联的逻辑地址(或逻辑地址的组)和与选择的逻辑组块相关联的逻辑地址(或逻辑地址的组)相同,但是与选择的逻辑组块相关联的物理地址(或物理地址的组)由于复制的逻辑组块相关联的物理地址(或物理地址的组)替代。在图3C中,例如,在将包括逻辑组块2e的副本的复制的逻辑组块2e贮存在备用装置5处之后,映射模块218在逻辑到物理的映射220中将与逻辑组块2e相关联的物理地址从在原来的装置2处的第五位置(或物理地址的第五范围)重新映射到在备用装置5处的第五位置(或物理地址的第五范围)。
贮存控制器降低(834)与各个闪速存储器装置相关联的逻辑组块的数量。在一些实施例中,贮存控制器120或其组件(例如,逻辑组块管理模块212,图2A)被配置为,在将选择的逻辑组块从各个闪速存储器装置迁移到不同于各个闪速存储器装置的第二闪速存储器装置之后,降低与各个闪速存储器装置相关联的逻辑组块的数量。在图3B中,例如,在检测到关于原来的装置1的预定的触发条件并且将逻辑组块1a迁移到备用装置5之后,逻辑组块管理模块212将与原来的装置1相关联的逻辑组块的数量从六降低到五(例如,由划掉逻辑组块1a所指示)。
在一些实施例中,逻辑组块被分配(836)以用于贮存数据并且被组织为多个冗余组,每个冗余组包括一个或多个逻辑组块并且贮存足以使能恢复贮存在一个或多个逻辑组块的至少一个中的数据的冗余的数据。例如,数据包括程序、指令、ECC、元数据、用户数据、系统数据和/或运算符数据。在将多个闪速存储器装置分割为多个逻辑组块之后(或者以此同时),贮存控制器120或其组件(例如,冗余模块214,图2A)被配置为将多个逻辑组块布置为冗余组,其中每个冗余组包括一个或多个逻辑组块。在一些实施例中,每个冗余组贮存足以使能恢复贮存在一个或多个逻辑组块的至少一个中的数据的冗余的数据。在图3A中,例如,代表性冗余组310(包括逻辑组块1a、2a、3a、4a)在四个原来的装置(例如,连续的RAID条带)之上被冗余地编码。类似地,在图3A中,代表性冗余组320(包括逻辑组块1e、2e、3e、4e)在四个原来的装置(例如,连续的RAID条带)之上被冗余地编码。在图4A中-4B,例如,冗余组1(包括逻辑组块1a、2a、3a、4a)在四个原来的装置(例如,连续的RAID条带)之上被冗余地编码。
在一些实施例中,复制的逻辑组块被包括(838)在之前包括选择的逻辑组块的多个冗余组的各个冗余组中。在一些实施例中,复制的组块被包括在与选择的组块相同的连续的条带中。在图3B中,例如,复制的逻辑组块1a被包括在代表性冗余组310中,该代表性冗余组310之前包括逻辑组块1a。在一些实施例中,复制的组块经由间接表被包括在相同的冗余组中。在图4C中-4D,例如,复制的逻辑组块4b(例如,对应于坐标5,3)被包括在冗余组2中,该冗余组2之前包括逻辑组块4b。
在一些实施例中,多个冗余组的各个冗余组是(840)多个闪速存储器装置之上的连续的条带,并且在与各个闪速存储器装置不同的第二闪速存储器装置处,复制的逻辑组块被贮存在与选择的逻辑组块相同的连续的条带中。在一些实施例中,复制的逻辑组块被分配到与选择的逻辑组块相同的冗余组。在一些实施例中,复制的逻辑组块贮存在冗余组中不包括其它逻辑组块的备用装置,并且复制的逻辑组块被贮存使得其在与冗余组中的其它逻辑组块相同的连续的条带中。在图3A中,例如,代表性冗余组310(包括逻辑组块1a、2a、3a、4a)在四个原来的装置之上被冗余地编码以形成连续的条带。在图3B中,例如,包括逻辑组块1a的副本的复制的逻辑组块1a被贮存在备用装置5中的第一位置(或物理地址的第一范围)处,使得其在具有代表性冗余组310中的其它逻辑组块(例如,逻辑组块2a、3a、4a)的连续的条带中。
在一些实施例中,根据优选的贮存利用方案贮存(842)复制的逻辑组块,并且贮存控制器在间接表中将复制的逻辑组块与多个冗余组的各个冗余组相关联。例如,在图4C中-4D中示出的优选的贮存利用方案需要将复制的逻辑组块贮存在冗余组中不包括任何逻辑组块的备用装置中,并且需要将复制的逻辑组块贮存在可选地不在与冗余组中的其它逻辑组块相同的连续的条带中的第一可用的位置处,该复制的逻辑组块被分配到与选择的逻辑组块相同的冗余组。在图4C中,例如,贮存控制器120或其组件(例如,贮存模块228,图2A)在备用装置5处贮存包括逻辑组块4b的副本的复制的逻辑组块4b,因为备用装置5在冗余组2中不贮存任何逻辑组块。在该示例中,复制的逻辑组块4b被贮存在备用装置5中的第一可用的位置,该第一可用的位置不在与冗余组2中的其它逻辑组块(例如,在备用装置5处的第三位置或物理地址的第三范围中)相同的连续的条带中。在图4D中,例如,贮存控制器120或其组件(例如,冗余模块214)更新间接表216使得冗余组2中的逻辑组块4(例如,逻辑组块4b)被从位置(4,2)重新映射到位置(5,3)。
应理解的是,尽管术语“第一”、“第二”等在这里可以被用于描述各种元件,但是这些元件不应由这些术语限制。这些术语仅被用于将一个元件与另一个区分。例如,第一闪速存储器装置可以被称为第二闪速存储器装置,并且类似地,第二闪速存储器装置可以被称为第一闪速存储器装置,这改变说明书的含义,只要“第一闪速存储器装置”的所有出现被一致地重新命名并且“第二闪速存储器装置”的所有出现被一致地重新命名。第一闪速存储器装置和第二闪速存储器装置两者是闪速存储器装置,但是它们不是同一个闪速存储器装置。
这里使用的术语是仅是为了描述特定的实施例,而不是为了限制权利要求。如在对实施例的描述和所附权利要求中所使用的,单数形式“一”、“一个”和“该”意欲也包括复数形式,除非上下文另有清楚的指示。还可以理解的是,这里所使用的术语“和/或”是指并且包含一个或多个相关联的列出的项目的任意和所有可能组合。还可以理解的是,当在本说明书中使用时,术语“包括”和/或“包含”指定所述特征、整数、步骤、操作、元件和/或部件的存在,但是不排除一个或多个其他特征、整数、步骤、操作、元件、部件和/或其组的存在或添加。
如这里所使用的,根据上下文,术语“如果”可以解释为意思是“当所述的先决条件为真时”或“在所述的先决条件为真时”或“响应于确定所述的先决条件为真”或“根据所述的先决条件为真的确定”或“响应于检测到所述的先决条件为真”。类似地,根据上下文,短语“如果确定[所述的先决条件为真]”或“如果[所述的先决条件为真]”或“当[所述的先决条件为真]时”可以解释为意思是“当确定所述的先决条件为真时”或“响应于确定所述的先决条件为真”或“根据所述的先决条件为真的确定”或“在检测到所述的先决条件为真时”或“响应于检测到所述的先决条件为真”。
为了解释的目的,已经参考了特定实施例描述了前述说明。但是,以上示意性的讨论不意欲是穷举性的或者将权利要求限制到公开的精确形式。鉴于以上教导许多修改和变化是可能的。实施例被选中并且描述以便于最好地解释操作的原理和实际应用,从而使能本领域其它技术人员。

Claims (25)

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

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361873324P 2013-09-03 2013-09-03
US61/873,324 2013-09-03
US14/470,580 2014-08-27
US14/470,580 US9519577B2 (en) 2013-09-03 2014-08-27 Method and system for migrating data between flash memory devices
PCT/US2014/053868 WO2015034901A1 (en) 2013-09-03 2014-09-03 Method and system for migrating data between flash memory devices

Publications (2)

Publication Number Publication Date
CN105637490A true CN105637490A (zh) 2016-06-01
CN105637490B CN105637490B (zh) 2019-07-05

Family

ID=52584898

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480056332.XA Active CN105637490B (zh) 2013-09-03 2014-09-03 用于在闪速存储器装置之间迁移数据的方法和系统

Country Status (3)

Country Link
US (1) US9519577B2 (zh)
CN (1) CN105637490B (zh)
WO (1) WO2015034901A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107783530A (zh) * 2016-08-25 2018-03-09 通用汽车环球科技运作有限责任公司 基于软件代码迁移的失效可操作的系统设计模式
CN110688323A (zh) * 2018-07-06 2020-01-14 华为技术有限公司 一种系统控制器和系统垃圾回收方法

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US9082512B1 (en) * 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
TWI546666B (zh) * 2014-11-03 2016-08-21 慧榮科技股份有限公司 資料儲存裝置以及快閃記憶體控制方法
KR20180062246A (ko) 2016-11-30 2018-06-08 삼성전자주식회사 재분배기를 포함하는 메모리 시스템
US10474528B2 (en) 2017-10-02 2019-11-12 Western Digital Technologies, Inc. Redundancy coding stripe based on coordinated internal address scheme across multiple devices
US10379948B2 (en) * 2017-10-02 2019-08-13 Western Digital Technologies, Inc. Redundancy coding stripe based on internal addresses of storage devices
CN107704212B (zh) * 2017-10-31 2019-09-06 新华三信息技术有限公司 一种数据处理方法及装置
CN109726033B (zh) * 2017-10-31 2022-05-06 伊姆西Ip控股有限责任公司 提供raid数据保护的方法、数据存储系统和计算机可读介质
US10409511B1 (en) 2018-06-30 2019-09-10 Western Digital Technologies, Inc. Multi-device storage system with distributed read/write processing
US10725941B2 (en) 2018-06-30 2020-07-28 Western Digital Technologies, Inc. Multi-device storage system with hosted services on peer storage devices
WO2020007030A1 (zh) 2018-07-06 2020-01-09 华为技术有限公司 一种系统控制器和系统垃圾回收方法
JP7042716B2 (ja) * 2018-07-26 2022-03-28 キオクシア株式会社 記憶装置及び記憶制御方法
US10831603B2 (en) 2018-08-03 2020-11-10 Western Digital Technologies, Inc. Rebuild assist using failed storage device
US10649843B2 (en) 2018-08-03 2020-05-12 Western Digital Technologies, Inc. Storage systems with peer data scrub
US10824526B2 (en) 2018-08-03 2020-11-03 Western Digital Technologies, Inc. Using failed storage device in peer-to-peer storage system to perform storage-centric task
US10592144B2 (en) 2018-08-03 2020-03-17 Western Digital Technologies, Inc. Storage system fabric with multichannel compute complex
US10901848B2 (en) * 2018-08-03 2021-01-26 Western Digital Technologies, Inc. Storage systems with peer data recovery
US11182258B2 (en) 2019-01-04 2021-11-23 Western Digital Technologies, Inc. Data rebuild using dynamic peer work allocation
KR102650809B1 (ko) 2019-08-02 2024-03-26 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법
CN112306900A (zh) 2019-08-02 2021-02-02 三星电子株式会社 存储装置和存储系统的操作方法
KR102650689B1 (ko) 2019-08-02 2024-03-25 삼성전자주식회사 스토리지 장치

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
CN101937725A (zh) * 2009-06-30 2011-01-05 恒忆有限责任公司 比特错误阈值和内容可寻址存储器以寻址重映射存储装置
CN102023815A (zh) * 2009-09-15 2011-04-20 格雷戈里·伯德 在固态存储器中实现raid
WO2012174216A2 (en) * 2011-06-15 2012-12-20 Apple Inc. Block management schemes in hybrid slc/mlc memory
CN103137199A (zh) * 2011-11-30 2013-06-05 三星电子株式会社 存储器系统、数据存储设备、存储卡和固态驱动器

Family Cites Families (239)

* 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
US6016560A (en) 1995-06-14 2000-01-18 Hitachi, Ltd. Semiconductor memory, memory device, and memory card
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
US7318117B2 (en) 2004-02-26 2008-01-08 Super Talent Electronics, Inc. Managing flash memory including recycling obsolete sectors
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
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
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
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
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
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
US8266367B2 (en) 2003-12-02 2012-09-11 Super Talent Electronics, Inc. Multi-level striping and truncation channel-equalization for flash-memory system
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
US7082056B2 (en) 2004-03-12 2006-07-25 Super Talent Electronics, Inc. Flash memory device and architecture with multi level cells
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
US6745286B2 (en) 2001-01-29 2004-06-01 Snap Appliance, Inc. Interface architecture
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
US7051155B2 (en) 2002-08-05 2006-05-23 Sun Microsystems, Inc. Method and system for striping data to accommodate integrity metadata
US6978343B1 (en) 2002-08-05 2005-12-20 Netlogic Microsystems, Inc. Error-correcting content addressable memory
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 삼성전자주식회사 에러정정기능을 가진 플래쉬메모리장치
WO2004099985A1 (ja) 2003-05-09 2004-11-18 Fujitsu Limited 実行環境の危険予測/回避方法,システム,プログラムおよびその記録媒体
AU2004290281A1 (en) 2003-05-23 2005-05-26 Washington University 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 株式会社日立製作所 複数インタフェースを有する記憶装置、および、その記憶装置の制御方法
US7350044B2 (en) 2004-01-30 2008-03-25 Micron Technology, Inc. Data move method and apparatus
US7389465B2 (en) 2004-01-30 2008-06-17 Micron Technology, Inc. Error detection and correction scheme for a memory device
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
JP2008511929A (ja) 2004-08-30 2008-04-17 シリコン ストレージ テクノロジー、 インク. 携帯電話の不揮発性メモリを管理するシステムおよび方法
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
US7934049B2 (en) 2005-09-14 2011-04-26 Sandisk Corporation Methods used in a secure yet flexible system architecture for secure devices with flash mass storage memory
KR100705220B1 (ko) 2005-09-15 2007-04-06 주식회사 하이닉스반도체 프로그램 속도를 증가시키기 위한 플래시 메모리 장치의소거 및 프로그램 방법
JP2009510585A (ja) 2005-09-27 2009-03-12 エヌエックスピー ビー ヴィ 誤り検出/訂正回路及び方法
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 삼성전자주식회사 저밀도 패리티 검사 부호를 사용하는 통신 시스템에서 신호 송수신 장치 및 방법
WO2007058617A1 (en) 2005-11-17 2007-05-24 Chee Keng Chang A controller for non-volatile memories, and methods of operating the memory controller
US7500062B2 (en) 2005-11-17 2009-03-03 International Business Machines Corporation Fast path memory read request processing in a multi-level memory architecture
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
US7546515B2 (en) 2005-12-27 2009-06-09 Sandisk Corporation Method of storing downloadable firmware on bulk media
US7349264B2 (en) 2005-12-28 2008-03-25 Sandisk Corporation Alternate sensing techniques for non-volatile memories
US7742339B2 (en) 2006-01-10 2010-06-22 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
US7681106B2 (en) 2006-03-29 2010-03-16 Freescale Semiconductor, Inc. Error correction device and methods thereof
JP4863749B2 (ja) 2006-03-29 2012-01-25 株式会社日立製作所 フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム
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
US20100017557A1 (en) 2006-07-26 2010-01-21 Panasonic Corporation Memory controller, nonvolatile memory device,access device, and nonvolatile memory system
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
CN101842850B (zh) 2007-10-31 2013-08-21 艾格瑞系统有限公司 多级闪存的系统性纠错
US8429492B2 (en) 2007-11-30 2013-04-23 Marvell World Trade Ltd. Error correcting code predication system and method
US7934052B2 (en) 2007-12-27 2011-04-26 Pliant Technology, Inc. System and method for performing host initiated mass storage commands using a hierarchy of data structures
EP2225643B1 (en) 2007-12-28 2020-05-06 Toshiba Memory Corporation Semiconductor storage device
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 삼성전자주식회사 메모리 장치 및 메모리 프로그래밍 방법
US8060719B2 (en) 2008-05-28 2011-11-15 Micron Technology, Inc. Hybrid memory management
KR101412974B1 (ko) 2008-05-28 2014-06-30 삼성전자주식회사 메모리 장치 및 메모리 프로그래밍 방법
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
US8880775B2 (en) 2008-06-20 2014-11-04 Seagate Technology Llc System and method of garbage collection in a memory device
US8627169B2 (en) 2008-06-20 2014-01-07 Cadence Design Systems, Inc. Method and apparatus for dynamically configurable multi level error correction
KR101490421B1 (ko) 2008-07-11 2015-02-06 삼성전자주식회사 메모리 셀 사이의 간섭을 억제할 수 있는 불휘발성 메모리장치, 컴퓨팅 시스템 및 그것의 프로그램 방법
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 삼성전자주식회사 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템
KR101575248B1 (ko) 2009-04-30 2015-12-07 삼성전자주식회사 메모리 컨트롤러 및 그것을 포함하는 메모리 시스템
US20100281207A1 (en) 2009-04-30 2010-11-04 Miller Steven C Flash-based data archive storage system
US8151137B2 (en) 2009-05-28 2012-04-03 Lsi Corporation Systems and methods for governing the life cycle of a solid state drive
US8412985B1 (en) 2009-06-30 2013-04-02 Micron Technology, Inc. Hardwired remapped memory
US20100332922A1 (en) 2009-06-30 2010-12-30 Mediatek Inc. Method for managing device and solid state disk drive utilizing the same
US8412987B2 (en) 2009-06-30 2013-04-02 Micron Technology, Inc. Non-volatile memory to store memory remap information
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
KR101769883B1 (ko) 2009-09-09 2017-08-21 샌디스크 테크놀로지스 엘엘씨 저장부 할당 장치, 시스템, 및 방법
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
KR20120003283A (ko) 2010-07-02 2012-01-10 삼성전자주식회사 데이터 저장 장치 및 그것의 배드 블록 관리 방법
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
JP2013542533A (ja) 2010-10-27 2013-11-21 エルエスアイ コーポレーション フラッシュメモリベースのデータ記憶のための順応ecc技術
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
US9524113B2 (en) 2013-05-24 2016-12-20 Seagate Technology Llc Variable redundancy in a solid state drive

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
CN101937725A (zh) * 2009-06-30 2011-01-05 恒忆有限责任公司 比特错误阈值和内容可寻址存储器以寻址重映射存储装置
CN102023815A (zh) * 2009-09-15 2011-04-20 格雷戈里·伯德 在固态存储器中实现raid
WO2012174216A2 (en) * 2011-06-15 2012-12-20 Apple Inc. Block management schemes in hybrid slc/mlc memory
CN103137199A (zh) * 2011-11-30 2013-06-05 三星电子株式会社 存储器系统、数据存储设备、存储卡和固态驱动器

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107783530A (zh) * 2016-08-25 2018-03-09 通用汽车环球科技运作有限责任公司 基于软件代码迁移的失效可操作的系统设计模式
CN110688323A (zh) * 2018-07-06 2020-01-14 华为技术有限公司 一种系统控制器和系统垃圾回收方法
CN110688323B (zh) * 2018-07-06 2023-11-17 华为技术有限公司 一种系统控制器和系统垃圾回收方法

Also Published As

Publication number Publication date
WO2015034901A1 (en) 2015-03-12
CN105637490B (zh) 2019-07-05
US20150067244A1 (en) 2015-03-05
US9519577B2 (en) 2016-12-13

Similar Documents

Publication Publication Date Title
CN105637490A (zh) 用于在闪速存储器装置之间迁移数据的方法和系统
CN105683927A (zh) 用于重新平衡贮存在闪速存储器装置中的数据的方法和系统
TWI599946B (zh) 記憶體中之條紋映射
US8266501B2 (en) Stripe based memory operation
US9298545B2 (en) Data protection across multiple memory blocks
US9235503B2 (en) Stripe-based non-volatile multilevel memory operation
CN103902403B (zh) 经由冗余阵列的非易失性存储器编程故障恢复
US9996297B2 (en) Hot-cold data separation method in flash translation layer
US10795827B2 (en) Adaptive management of intermediate storage
CN111164574A (zh) 基于存储设备内部地址的冗余编码条带
KR20130114681A (ko) 독립 실리콘 소자들을 갖는 동적 상위 레벨 리던던시 모드 관리
TW201931366A (zh) 資料儲存裝置以及非揮發式記憶體操作方法
CN108958961B (zh) 数据储存装置以及数据错误管理方法
CN105718213A (zh) 改进在低队列深度工作负载中的混合随机性能的方法
CN112988056A (zh) 固态驱动器和操作固态驱动器的方法
CN117931055A (zh) 在多个存储器区域中分配和存储写入数据的设备和方法
CN113849121A (zh) 用于访问条带形式的数据的存储器系统及其操作方法
US11966638B2 (en) Dynamic rain for zoned storage systems
CN114090330A (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