CN102023815B - 在固态存储器中实现raid - Google Patents

在固态存储器中实现raid Download PDF

Info

Publication number
CN102023815B
CN102023815B CN201010285233.2A CN201010285233A CN102023815B CN 102023815 B CN102023815 B CN 102023815B CN 201010285233 A CN201010285233 A CN 201010285233A CN 102023815 B CN102023815 B CN 102023815B
Authority
CN
China
Prior art keywords
data
memory
block
stored
grouping
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.)
Active
Application number
CN201010285233.2A
Other languages
English (en)
Other versions
CN102023815A (zh
Inventor
格雷戈里·伯德
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.)
Kaiwei International Co
Marvell International Ltd
Marvell Asia Pte Ltd
Original Assignee
Mawier International Trade Co Ltd
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 Mawier International Trade Co Ltd filed Critical Mawier International Trade Co Ltd
Publication of CN102023815A publication Critical patent/CN102023815A/zh
Application granted granted Critical
Publication of CN102023815B publication Critical patent/CN102023815B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1028Adjacent errors, e.g. error in n-bit (n>1) wide storage units, i.e. package error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/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/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Abstract

本公开包括涉及在固态存储器中实现容错数据存储的系统和技术。在一些实现中,方法包括:接收待存储的数据;将数据分成逻辑数据块;将块分配到逻辑块分组,逻辑块分组包括来自多个固态物理存储器设备中的两个或多个的至少一个物理数据存储块;将所述块存储在物理数据存储块中;确定相应于持久数据的代码;以及存储相应于存储在逻辑块分组中的数据的代码。通过识别相应于损坏的物理数据存储块的逻辑数据块和逻辑块分组,读取存储在所识别的分组中的数据和代码,并将该代码与不同于存储在损坏的块中的数据的所读取的数据进行比较,可恢复损坏的所存储的数据的块。

Description

在固态存储器中实现RAID
相关申请的交叉引用
本申请要求2009年9月15日提交的且标题为“IMPLEMENTINGRAIDINSIDESSD”的美国临时申请序列号61/242,662的利益,并要求2009年10月23日提交的且标题为“IMPLEMENTINGRAIDINSIDESSD”的美国临时申请序列号61/254,577的利益;这两个优先权申请的全部内容由此通过引用被并入。
背景技术
计算机系统常常产生需要被持久地存储的数据。系统设置、数字照片、电子文档和数字视频都是计算机系统的大部分用户希望持久地存储的电子文件。在一般个人计算机中,这些和其它类型的电子文件存储在硬盘驱动器上,或日益增加地存储在固态存储器设备(例如,闪存驱动器)上。
对计算机用户的一个问题是电子文件和数据的损失。硬盘驱动器是机械设备,与任何其它机器一样,受到可导致故障的损耗或损坏,其中它们包含的信息可能变得部分地或完全不可得到。数据损失的可能性有时通过使用独立驱动器的冗余阵列(RAID)来减小。RAID是多个硬盘驱动器合并成一个较大的逻辑单元的技术,并通过冗余提供增加的可靠性。被储存到逻辑单元的数据连同错误恢复数据一起分布在多个驱动器中。如果一个物理硬盘驱动器出故障,则只有存储到该驱动器的数据的部分变得不可得到。不可得到的数据能够根据存储在其余驱动器上的错误恢复数据来恢复或重建。
发明内容
本公开包括涉及容错系统的系统和技术以及用于将数据存储在固态存储器例如闪存中的方法。根据所述系统和技术的方面,用于存储数据的电子设备包括:配置成接收数据的输入端口;保存比较值的比较缓冲存储器;比较数据被划分到的多个逻辑块中的每个与比较值来确定新的比较值以保存在比较缓冲存储器中的比较电路;以及存储逻辑块和相应于比较值的恢复码的固态数据储存存储器,其中通过合并来自所存储的逻辑块的一个或多个未选择的逻辑块的数据与恢复码,来自所存储的逻辑块中的至少一个的数据是可恢复的。
各种实现可包括下列特征中的一些、全部或一个特征也不包括。固态数据储存存储器可为闪存。比较电路可执行逻辑异或操作。缓冲存储器可包括多个缓冲存储器,且缓冲存储器中的至少一个可包括单端口存储器。通过确定当与比较值比较时导致预定值的值可确定恢复码。设备可包括由软件编程的处理器以实现比较电路,其中该比较电路可执行逻辑异或操作。
固态数据储存存储器可包括多个固态物理存储器设备。多个固态物理存储器设备中的每个可包括包含至少一个物理数据存储块的单个集成电路芯片,其中物理数据存储块可包括在集成电路芯片上形成的固态存储器的块,并连同在同一集成电路芯片上形成的固态存储器的其它块一起是单独可寻址的。本设备可作为单个数据存储设备与主设备通过接口连接。
根据所述系统和技术的另一方面,一种方法包括:在存储控制器处接收待存储在包括多个固态物理存储器设备的固态存储器中的数据;通过存储控制器将所接收的数据分到相应于固态存储器的逻辑数据块中;通过存储控制器将逻辑数据块分配到逻辑块分组,所述逻辑块分组包括来自多个固态物理存储器设备中的两个或多个的至少一个物理数据存储块;将逻辑数据块存储在逻辑块分组的被指定用于将持久数据存储在逻辑块分组内的物理数据存储块中;通过存储控制器确定相应于存储在逻辑块分组中的持久数据的代码;以及通过存储控制器将代码存储在至少一个物理数据存储块中,所述至少一个物理数据存储块被指定用于存储相应于存储在逻辑块分组中的持久数据的代码。
各种实现可包括下列特征中的一些、全部或一个特征也不包括。多个固态物理存储器设备可为闪存设备。所述确定可为逻辑异或操作。多个固态物理存储器设备和存储控制器可为单个存储器存储设备。多个固态物理存储器设备可为包括至少一个物理数据存储块的单个集成电路芯片,其中物理数据存储块可包括在集成电路芯片上形成的固态存储器的块,并可连同在同一集成电路芯片上形成的固态存储器的其它块一起是单独可寻址的。
该方法还可包括:通过识别相应于选定的物理数据存储块的逻辑数据块被分配给的逻辑块分组、读取存储在所识别的逻辑块分组中的持久数据和代码、以及比较代码与不同于存储在选定的物理数据存储块中的持久数据的所读取的持久数据,由存储控制器恢复存储在选定的物理数据存储块中的持久数据。该比较可为逻辑异或操作。确定代码可包括:在缓冲存储器中存储逻辑块分组的第一个逻辑数据块作为缓存值;对于逻辑块分组中的剩余逻辑数据块中的每个,通过存储控制器比较剩余逻辑数据块与缓存值以确定比较值并将比较值作为缓存值存储在缓冲存储器中;以及通过存储控制器确定当与缓存值比较时导致预定值的值。缓冲存储器可包括多个缓冲存储器,且缓冲存储器中的至少一个可包括单端口存储器。
所述系统和技术可在电路、计算机硬件、固件、软件中或在它们的组合例如在本说明书中公开的结构装置及其结构等效形式中实现。这可包括体现可操作来使一个或多个数据处理装置(例如,包括可编程处理器的信号处理设备)执行所述操作的程序的至少一个计算机可读介质。因此,程序实现可从所公开的方法、系统或装置实现,且装置实现可从所公开的系统、计算机可读介质或方法实现。类似地,方法实现可从所公开的系统、计算机可读介质或装置实现,且系统实现可从所公开的方法、计算机可读介质或装置实现。
例如,下面所公开的实施方式可在各种系统和装置中实现,这些系统和装置包括但不限于专用数据处理装置(例如,无线接入点、远程环境监控器、路由器、交换机、计算机系统部件、介质访问单元)、移动数据处理装置(例如,无线客户机、蜂窝电话、个人数字助理(PDA)、移动计算机、数据摄像机)、通用数据处理装置(例如,微型计算机、服务器、主计算机、超级计算机)或这些部件的组合。
所述系统和技术可导致存储在固态存储器设备中的数据的增加的容错和可恢复性(例如,在设备内的部件或存储器块的故障的情况下)。固态存储器设备的物理结构可有利地用于通过内在地提供可与RAID设备和条带类似地被处理的结构来减小在以前的RAID系统中使用的方法的复杂性。已经在一些固态存储器设备中使用的存储控制器可适合于使用现有的数据路径来计算、存储和使用奇偶值。已经用于便于存储器位置的均匀损耗的技术也可被利用以消除对现有RAID系统所需要的遍及硬盘驱动器的明确的工作负荷分布和损耗均衡的需要。此外,因为固态存储器设备不是机械的、旋转的设备,不需要使设备同步(例如,使轴同步),如在一些基于硬盘的RAID实现中存在的同步。
下面在附图和描述中阐述一个或多个实现的细节。从描述和附图中以及从权利要求中,其它特征、目的和优点可能明显。
附图说明
图1是示出容错固态存储器设备的例子的结构图。
图2是示出容错固态存储器设备的另一例子的结构图。
图3是示出包括多个固态存储器设备的容错固态存储器设备的例子的结构图。
图4示出对几个固态存储器设备的概念逻辑分组。
图5A和5B是示出奇偶编码器的例子的结构图。
图6是示出配置成将数据写到物理存储器的存储控制器的例子的示意图。
图7是奇偶数据测试器的例子的结构图。
图8是示出配置成从物理存储器读取数据的存储控制器的例子的示意图。
图9是示出多个奇偶数据缓冲器的例子的结构图。
图10A和10B示出用于将逻辑索引映射到物理索引的查找表的例子。
图11是示出用于存储数据和错误恢复码的过程的例子的流程图。
图12是示出用于检测所存储的数据中的错误的过程的例子的流程图。
图13是示出用于恢复数据的过程的例子的流程图。
不同附图中的相似的符号表示相似的元件。
具体实施方式
这里所述的系统和技术可被实现为一个或多个设备,例如在固态存储器设备(例如,闪存设备、USB存储设备、固态驱动器)中的一个或多个集成电路(IC)设备。
图1是示出容错固态存储器设备100的例子的结构图。通常,设备100是使用固态存储器部件和相关电路来提供用户数据和其它数据的非易失性存储的数据存储设备。可由设备100体现的固态存储器设备的例子包括通常称为“闪存驱动器”、“USB驱动器”、“拇指驱动器”或固态盘驱动器(SSD驱动器)的设备。设备100至少部分地通过分配将被存储在多个存储器存储子部件中的数据同时也计算和存储描述所储存的数据的纠错(例如,奇偶)码的方式来获得其容错。因为固态存储器设备例如设备100由多个固态(例如,闪存)存储器设备子部件组成,独立块冗余阵列(RAIB)可在单个SSD内实现,这与RAID系统的情况下的一组固态驱动器相反。在存储器存储子部件的故障的情况下,奇偶信息可作为恢复存储在出故障的子部件中的数据的过程的一部分来使用。
设备100通过输入端口104通信地连接到主设备102(例如,计算机)。在一些实现中,输入端口104可为通用串行总线(USB)、串行ATA(SATA)总线、并行ATA(PATA)总线、FireWire或任何其它串行或并行数据总线。
设备100包括存储控制器110。存储控制器110将主设备102通过接口连接到存储器设备120a-120f的集合,使得主设备102能够使用存储设备120a-120f用于数据的存储。存储设备120a-120f中的每个是固态存储器设备,其中每个存储设备可包括物理存储器的一个或多个块。在一些实施方式中,存储设备120a-120f可为闪存设备、NAND设备或其它适当类型的固态存储器设备。存储设备的额外例子将结合图3和4在下面的描述中被进一步讨论。在一些实现中,存储控制器110可组织存储设备120a-120f来通过接口与主设备102连接作为一个或多个存储设备。
闪存设备120a-120f中的每个被细分成逻辑数据块。在一些实现中,逻辑数据块代表在闪存设备120a-120f内的固态存储器的最小可擦除单元。每个块被分成页。在一些实现中,页可为可被读取或写到块的存储器的最小单元。在一些例子中,块可具有192个4KB页。逻辑数据块的例子将结合图4在下面的描述中被讨论。
存储控制器110包括处理器112、动态随机存取存储器(DRAM)114、页纠错码(ECC)模块116和独立块冗余阵列(RAIB)编码器212。处理器112从主设备102接收数据并将数据缓存在DRAM114中。在一些实现中,DRAM114可在存储控制器110的外部。处理器112接着通过将数据划分、分组或以另外方式加入到一个或多个逻辑数据块中、确定将逻辑数据块存储为逻辑块分组的闪存设备120a-120f的子集并将数据储存在其中的方式来处理从主设备102接收的或从DRAM114读取的数据。逻辑分组的例子将结合图4在下面的描述中被进一步讨论。
当数据被发送到存储设备120a-120f时,数据通过页ECC模块116传递。页ECC模块116将纠错码冗余添加到被发送到存储设备120a-120f用于存储的每页,并存储ECC冗余连同每页。在一些实现中,ECC代码可用于检测并修补相关页内的错误。例如,可在确定页内的哪些位被错误地存储或读取以及恢复页内的最初存储的数据的过程中使用ECC代码。
在一些实现中,ECC可在字线层上完成。例如,对于单比特位单元(例如,单层单元SLC),可能每字线有一页。然而,在一些例子中,闪存设备可能能够每单元存储两位(例如,多层单元MLC)、三位(例如,三层单元TLC)或多位。这样的设备可具有能够保存多页的字线(例如,多行单元)。例如,一页可相应于每个单元的最低有效位(LSB),而另一页相应于中心位,以及又一页相应于每个单元的最高有效位(MSB)。在TLC或MLC的例子中,可使用页层ECC或字线层ECC。
除了ECC代码对储存在存储设备120a-120f上的单独的页提供保护以外,RAIB编码器118处理页以产生逻辑块分组的RAIB冗余代码(例如,纠错码奇偶数据)。控制器可接着使用存储设备120a-120f中的两个或多个来存储由编码器118所计算的用户数据和RAIB冗余。
在一些实现中,在给定的时间,可能只有一个活动的逻辑块分组。数据可接着被逐页地写,同时遍及逻辑块分组的物理存储器块使页交错。在一些实现中,如果在逻辑块分组内的块存在于不同的存储设备120a-120f上,则可实现增加的吞吐量和/或可靠性。一旦用户数据的相应页被写到存储设备120a-120f,RAIB奇偶性就是可用的并被控制器写到存储设备120a-120f的相应页上。
在一些实现中,处理器112可在所有用户页被写到存储设备120a-120f之前请求RAIB编码器118将奇偶数据写到存储设备120a-120f。在这样的例子中,空的用户页可被标记为已用过的。例如,由于RAIB编码器118将不能够更新RAIB冗余,写到用过的用户页将使RAIB纠错码结构无效,因为在两个连续的块擦除操作之间一页只能被写一次。
在一些实现中,处理器112或主设备102可处理数据以确定纠错数据和/或控制纠错数据的分布和存储。例如,处理器112或主设备102可仿效RAIB编码器118的功能以将遍及不同设备的逻辑数据块分组成逻辑分组,并对每个这样的逻辑分组引入纠错码。
图2是示出容错固态存储器设备200的另一例子的结构图。设备200经由数据总线104通过接口与主设备102连接,以为主设备102提供固态存储器。
设备200包括存储控制器210。存储控制器210包括处理器112、DRAM114和页ECC模块116。存储控制器210还包括独立块冗余阵列(RAIB)编码器212。
除了在本例中控制器将RAIB奇偶性存储在专用的奇偶设备220a和220b中之外,RAIB编码器212执行与图1的RAIB编码器118实质上相同的功能。在一些实现中,奇偶设备220a和220b是类似于存储设备120a-120f的存储设备,其专供RAIB奇偶数据的存储之用。存储在奇偶设备220a和220b上的RAIB奇偶数据可稍后用于恢复存储在存储设备120a-120f上的数据。
图3是示出包括多个储存存储器设备的容错固态存储器设备300的例子的结构图。通常,在例如设备300等设备中的容错的概念是通过RAIB奇偶数据链接存储在该设备内的不同存储设备上的数据。在一些实现中,容错技术(例如,RAID)的前提是存储模块故障可为独立的。在容错固态存储器设备例如设备100、200和300的一些实现中,通过将设备100、200和300内的每个存储设备模块或每个芯片处理为能够独立于同一容错固态存储器设备内的其它类似设备出故障的设备来实现分离存储设备的逻辑方法。
设备300包括存储控制器310和存储设备320a-320f的集合。存储控制器310包括处理器312和DRAM314。在一些实现中,处理器312和DRAM可分别为处理器112和DRAM114。存储控制器310还包括固态设备数据路径316。在一些实现中,固态设备数据路径316可协调将用户数据和恢复码分布到存储设备320a-320f中的存储位置。
存储设备320a-320f中的每个包括多个存储子设备,例如在320a中的存储子设备322a-322d。在一些实现中,存储子设备322a-322d中的每个可为单个集成存储器电路或芯片。存储子设备中的每个进一步细分成很多存储器块,例如存储子设备322a中的存储器块324a-324d。在一些实现中,物理存储块可包括存储器块324a-324d的集合,其中存储器块324a-324d是单独可寻址的且都在同一集成电路芯片上形成。在一些实现中,存储器块324a-324d中的每个代表存储子设备322a上的最小可擦除单元的分组,且存储器块324a-324d中的每个包括很多代表存储器块内的存储器的最小可写单元的页(未示出)。
在一些实现中,为了创建容错存储系统的目的,可利用设备300的物理结构,更具体地,利用存储设备320a-320f。例如,因为闪存通常不能在页层上被盖写,一旦每个块被写入,整个块就必须先被擦除,然后新数据才能写到其页上,因此可能不需要考虑一些块被更改且RAIB奇偶性必须相应地更新的使用情况。在另一例子中,设备300的设计可能不需要如通常在RAID控制器中完成的适应插入、删除或替换包含用户数据或RAIB奇偶数据的块,因为一旦设备300被制造,添加或移除存储器设备可能就是不可能的。
图4示出几个固态存储器设备的概念逻辑分组400。通常,该分组代表在容错固态存储器设备内的存储器设备的逻辑布置,以示出提供容错的存储器块的逻辑分组的例子。在一些实现中,分组400可分别由图1、2和3的设备100、200和/或300使用。
分组400包括存储设备410a、存储设备410b、存储设备410c和存储设备410d。在一些实现中,存储设备410a-410d可为实质上类似于图1的存储设备120a-120f的存储设备。在一些实现中,存储设备410a-410d中的一个或多个可为图2的奇偶设备220a-200b。
存储设备410a-410d中的每个包括物理存储器块420的集合。物理存储器块420以行和列的概念布置示出,其中每个存储设备(例如,芯片)410a-410d由多个块组成。在一些实现中,存储设备可用于代表并行化结构,例如单个储存存储器设备内的可被同时写入或读取的存储器单元的集合(例如,多平面设备)。例如,列430代表包括在存储设备410b中的物理存储器块。
物理存储器块420的行例如行440代表包括每个子设备内的相应块(例如,第k个块)的存储器的逻辑单元。在一些实现中,行440代表可被一起擦除的存储器的逻辑单元(或其子组,如可能是每设备有两个面的情况)。
为了容错(例如,RAIB条带或RAIBECC码字)的目的,行440还用作物理存储器块420的逻辑块分组。存储控制器例如存储控制器110、210或310使用行440来存储用户数据和RAIB冗余。例如,用户数据可分成相应于物理存储器设备420的尺寸和数量的块,物理存储器设备420被指定用于行440内的用户数据的存储。更具体地,用户数据可一次一页地以交错的方式(例如,先写每个块的第0页,然后写每个块的第一页,等等)被写到这些块中。存储控制器可通过对用户页执行按位异或操作来计算RAIB奇偶页。存储控制器可接着将RAIB奇偶页存储到行440内的最后一个自由块(例如,并非必须的,如图4上所示的最右边的块)上。
在一些实现中,容错固态存储器设备的设计可部分地基于数据可能由于物理设备的故障而丢失的概念。例如,物理存储器块420之一可能发生故障,使它存储的数据被破坏或不可得到。在另一例子中,一个设备上的整个平面可能发生故障,从而使平面内的物理存储器块420不可读。
然而,在一些实现中,假定同一设备内的所有平面都是独立的可能不是可行的(例如,如果存储设备410a发生故障,存储设备410a内的所有平面可能是不可读的)。为了适应这样的设计考虑,几个RAIB条带可在单行内交错,使得每个RAIB码字不包含来自单个存储设备模块上的两个或多个平面的位。
例如,行440的逻辑组合包括来自每个存储设备模块的一个物理存储器块420。属于每行内的单个RAIB条带的物理存储器块420被显示有类似的填充模式。例如,物理存储器块420a的集合代表属于被交错到行440中的条带的物理存储器块420,使得来自存储设备410a-410d中的任何一个的仅仅一个物理存储器设备包括在单个RAIB条带中。
在图4的例子中,每行分成示有不同的填充模式的三个RAIB条带,且RAIB条带内的每个物理单元(例如,每个存储设备410a-410d)从故障点的角度来看独立于其它物理单元。更一般地,具有N个子设备的存储设备可每行提供N个RAIB条带。
在本例中,存储设备410a-410d被指定用于用户数据和恢复码的存储。在一些实现中,存储控制器可确定物理存储器块420中的哪些将用于RAIB奇偶性的存储。在一些实现中,多于一个的物理存储器块420可用于存储单个RAIB条带的奇偶性。例如,使用恢复码的一个块的RAIB条带可能通常能够恢复在RAIB条带内的单个出故障的物理存储器块中的数据。通过实现能够恢复每RAIB条带的两个或多个故障块的代码,可恢复相应的两个或多个坏的块。
在一些实现中,这个关系可称为RAIB码率(coderate)。单个块校正RAIB码率由(RAIB条带中设备的数量-1)/(RAIB条带中的设备的数量)给出。例如,对于具有八个闪存设备的容错固态存储器设备,RAIB码率将为(8-1)/8或7/8,这意味着整个设备的大约12%将用于存储恢复码。在八个闪存设备中的两个用于存储RAIB奇偶性的例子中,于是RAIB码率将为(8-2)/8或3/4,这意味着整个设备的大约25%将用于存储恢复码。在恢复码的多于一个的块被使用的实现中,Reed-Solomon(RS)码可用于实现RAIBECC。
仍然参考图4,在一些实现中,RAIB条带可被选择成与行440重合,使得RAIB冗余占据单个平面(例如,子设备)以产生较高的RAIB码率(例如,存储的空间的较小部分用于恢复码),以由在同一设备上的多个平面发生故障的可能性而导致的减小的数据可靠性保护为代价。例如,对于每个设备有16个闪存设备和两个平面的容错固态存储器设备,这可产生31/32RAIB码率系统。在一些实现中,RAIB码率可响应于用户选择来配置。
在一些实现中,有可能需要选择RAIB条带与由控制器所使用的逻辑块分组重合或是其子集,以实现存储器管理(例如,损耗均衡,垃圾收集)。因为可能需要在任何成员块可被擦除之前使RAIB条带内的所有页无效,在一些实现中,擦除RAIB条带内的一些块可能导致RAIB恢复码保护的损失。如果RAIB条带内的所有设备属于单个损耗均衡单元,该功能可以是固有的。在一些实现中,存储控制器可对RAIB条带内的相似数据(例如,具有热点的热点数据、具有冷点的冷点数据)分组,并选择相似的块(例如,具有实质上类似的循环特征的块)以形成条带。
到目前为止描述的很多例子实现了单个块校正RAIB。在一些实现中,可设计能够恢复RAIB条带内的多于一个的块的RAIBECC。例如,Reed-Solomon(RS)ECC码可用于对RAIB条带内的页的第k个符号(例如,8位符号)编码。在一些实现中,使用产生N维多项式的RSECC码可产生能够校正2N个块故障的RAIB条带,假设出故障的块能够被识别的话(例如,使用页层ECC/字线层ECC)。
图5A是示出奇偶编码器500的例子的结构图。在一些实现中,奇偶编码器500可包括在存储控制器110、210或310中。通常,奇偶编码器500对用户数据的页进行异或操作以产生一页RAIB冗余码。在本例中,奇偶编码器500配置成产生用于确定单个块校正恢复码的单个奇偶检验码。
写路径500包括页ECC编码器510。在一些实现中,页ECC编码器510可为图1的页ECC编码器116。页ECC编码器510处理用户数据的页以确定对页层ECC的纠错码冗余。在一些实现中,ECC码可用于校正用户数据的单独的页内的错误。用户数据和页层ECC冗余位接着被存储在存储设备520的集合中。
写路径500维持存储部分RAIB奇偶值的RAIB奇偶缓冲器530。例如,在逻辑块分组的第一用户页被写入之前,奇偶缓冲器530被复位到零。当用户页进入时,奇偶缓冲器530通过在奇偶缓冲器530的内容和进入的页之间执行异或操作540而被更新。一旦逻辑块分组(例如,RAIB条带)的最后一个用户页被写入,奇偶缓冲器530的内容就被写到存储设备520。
图5B是示出另一奇偶编码器501的例子的结构图。奇偶编码器501实质上类似于奇偶编码器500,除了一旦逻辑块分组的最后一个用户页被写入,奇偶缓冲器530的内容就被写到专用奇偶设备550。在一些实现中,可包括额外的奇偶设备550以预防多个设备故障。也可实现相等或较大数量的额外的奇偶缓冲器530,其中每个奇偶缓冲器530可使用额外的控制以与以前描述的类似的方式被更新,以根据查找表和用户页索引来启用或禁用异或540操作。多个奇偶缓冲器的例子将在图9的描述中被进一步讨论。查找表和用户页索引的例子将结合图10a和10b在下面的描述中被讨论。
图6是示出配置成将数据写到物理存储器的存储控制器600的例子的示意图。在一些实现中,存储控制器600可为图1的存储控制器110、图2的存储控制器210或图3的存储控制器310。
存储控制器600包括双倍数据率(DDR)存储器605,其缓存从主设备(未示出)发送的用户数据,用于存储在物理存储器设备610的集合中。缓存在DDR605中的用户数据的页被介质CRC/LBA615处理。在一些实现中,介质CRC/LBA615可对用户数据的页执行循环冗余校验、逻辑块寻址或两者。
用户数据的页在选择器(switch)620处被接收,选择器620受控于通过奇偶介质传输信号625从主设备接收的信号。当没有这样的信号存在时,用户页被ECC630处理并存储在物理存储器设备610内的逻辑块分组中。
从介质CRC/LBA615出现的用户数据的页也在选择器635处被接收,选择器635受控于通过奇偶缓冲复位信号640从主设备接收的信号。当奇偶缓冲复位信号640存在时,用户页由存储器保护奇偶(MPP)编码器645处理,存储器保护奇偶(MPP)编码器645确定CRC值以使数据被存储在奇偶缓冲器650中。当奇偶缓冲复位信号不存在时,MPP编码器接收进入的用户页与奇偶缓冲器的内容的异或(例如,表示新的运行RAIB奇偶性)。用户页和CRC接着被缓存在奇偶缓冲器650中。MPP检查器模块655使用CRC值来确定当数据存储在奇偶缓冲器650中时它是否被破坏。如果MPP检查器模块655检测到比较值中的错误,则奇偶缓冲误差信号660被置位以通知主设备比较值中有问题。
奇偶介质传输信号625也控制选择器665。通常,当逻辑块分组的RAIB奇偶数据准备存储在物理存储器模块610的集合中时,奇偶介质传输信号625被存储器设备控制器置位。
当逻辑块分组中的所有用户页被处理了时,控制器设置奇偶介质传输信号625,从而使选择器665和620指示将被写到物理存储器设备610上的最后的RAIB奇偶性。
被分配到同一逻辑块分组的随后的用户页接着与以前缓存的值进行异或操作。在本例中,以前缓存的值在异或逻辑670中与随后的用户页进行异或操作以产生新的中间RIAB奇偶值。控制器释放奇偶缓冲复位信号640,因此选择器635指示运行的RAIB奇偶性被MPP编码器645处理,作为更新的运行的RAIB奇偶性被缓存在奇偶缓冲器650中,并被MPP检查器模块655检查。这个循环对被分配给逻辑块分组的每个随后的用户页重复。
在一些实现中,RAIB奇偶数据可能描述不到整个逻辑块分组。例如,响应于掉电操作,RAIB编码器可能需要通过将相应的奇偶缓冲器写到物理存储器设备610来关闭所有打开的RAIB条带(例如,RAIB关联被认为是打开的,如果其奇偶缓冲区的内容还没有被存储)。一旦奇偶缓冲器被写到介质,所有未写入的页就被标为无效的。允许主设备将数据写到这些页可能使RAIB奇偶更新操作成为必需的,这通常对闪存设备是不可能的。
在一些实现中,这样的限制可通过允许每RAIB条带使用多于一个的奇偶页来克服。例如,RAIB编码器可通过将奇偶缓冲器的当前内容存储到下一可用的存储器块并将未写的页填充在RAIB条带中来关闭打开的RAIB条带。一旦奇偶页被写到介质,RAIB条带内的所有有效页的异或就为“0”页。如果在以后的时刻,RAIB编码器确定更多的页将被写到同一RAIB条带中,则不需要读以前写的页。每当RAIB编码器再次打开RAIB奇偶关联时,它可写只在写会话期间积累的RAIB奇偶性。
例如,RAIB条带可包括10页(0-9)。RAIB编码器可接收并处理三页用户数据,且那些页可被存储为第0、1和2页。如果在此时,RAIB编码器被请求关闭RAIB关联,同时条带是不完整的(例如,第4-9页没有被写),则RAIB编码器可将RAIB缓冲器的当前内容(例如,第0-2页的异或)存储到条带中的下一可用的页(例如,第3页),并将其余的第4-9页标为无效的。因为0-3页异或为“0”页,当重新开始写操作时,不需要重新读、异或以及缓存第0-2页;RAIB编码器再一次在第4页起开始对新的页编码以及将第4-8页的相应的RAIB奇偶性存储在页9中。因此,存储在第9页中的恢复码将可用于恢复第0-8页的任一页。
图7是示出能够执行自测试功能的RAIB奇偶编码器700的例子的结构图。在一些实现中,自测试功能可用于使RAIB特征测试自动化。通常,可只在存储设备模块故障的情况下使用RAIB功能。因为这是通常罕见的情况,检查RAIB结构完整性的方法被提供。在操作中,控制器读单个RAIB条带的所有页,同时在它们被读取时对页的内容进行异或操作。正常期望将是奇偶缓冲器650将为全“0”页。奇偶缓冲器650的内容由逻辑710检查,逻辑710对页中的所有位进行异或操作,以确定测试寄存器720的内容是否会变成非零的,非零可指示可能归因于存储设备故障的所读的页中的错误。
在存储设备模块故障的情况下,设备控制器可试图恢复存储在出故障的平面/设备上的数据。在一些实现中,这可通过读RAIB条带中的所有页(排除失效的页)并使用RAIBECC来恢复位于有故障的设备上的数据来完成。更具体地,失效的页可通过对RAIB条带中的剩余页进行异或操作来恢复。在一些实现中,如果在恢复期间确定RAIB条带中的另一页失效(例如,页层ECC失效),则控制器可停止恢复操作,因为只有一页可在单个页RAIB恢复码被使用时被恢复。在一些实现中,多页恢复RAIB码(例如,RSECC)可用来恢复数量等于或少于多页恢复码所适应的页的数量的页。
图8是示出配置成从物理存储器读取数据的存储控制器800的例子的示意图。在一些实现中,存储控制器800可为在读配置中的图6的存储控制器600。一般来说,用于从物理存储器设备610读和/或写到物理存储器设备610的电路可为单独的电路,因为它们执行不同的操作(例如,页层ECC编码器/解码器可不同地操作)。实现用于使读和写数据路径允许控制器同时从物理存储器设备610的一个读和/或写到物理存储器设备610的不同一个的单独的电路也可能是优先的。
仍然概况地讲,虽然可始终对写操作启用RAIB编码器,RAIB解码器可能只在存储器故障被检测到的情况下被启动。因为存储器故障通常罕见,在控制器的寿命中这些被认为是例外。在存储区故障被检测到的一些实现中,控制器可停止接受来自主设备的读或写数据的请求,直到执行了RAIB数据恢复为止。在一些实施方式中,RAIB解码器逻辑可实质上与RAIB编码器的逻辑相同,且因此相同电路用于RAIB编码和解码(例如,RAIB编码器硬件可被重新使用来减小控制器尺寸)。
在本例中,从物理存储器设备610的集合中读取在逻辑块分组内的所储存的数据的页。页层ECC830检查每页以检测可能存在的任何错误。在没有错误被检测到的页的例子中,主设备释放奇偶DDR传输信号825,且页通过选择器805涌到介质CRC/LBA815并继续到DDR605,从DDR605中页变得对主设备可用。
在错误被检测到的例子中,主设备设置奇偶DDR传输信号825,使得选择器810将无错误的页-包括RAIB冗余-引导到选择器835。奇偶缓冲复位信号840使选择器830将第一个有效的页引导到MPP编码器845,且页被缓存在奇偶缓冲器850中。MPP检查器模块855检查奇偶缓冲器的内容,然后将它们传递回选择器865和异或逻辑870。
随后,主设备释放奇偶缓冲复位信号,使进入的逻辑块分组的无错误页与奇偶缓冲器850的内容进行异或操作。该过程对逻辑块分组中的每个无错误页重复。在此时,奇偶缓冲器850的内容代表存储在出故障的存储器块上的页。
控制器接着设置奇偶DDR传输信号825。信号825使选择器865和805将所恢复的数据引导到主设备。
图9是示出多奇偶数据缓冲器900的例子的结构图。在一些实现中,多奇偶数据缓冲器900可包括在存储控制器例如存储控制器110、210和310中。在一些实现中,奇偶数据缓冲器可为图6的奇偶缓冲器650。在一些实现中,容错固态存储器设备可支持同时活动(例如,被部分地读或写)的多个逻辑块分组。这样的实现可使用多个奇偶缓冲器,对于每个同时活动的逻辑块分组,一个奇偶缓冲器在使用中。
多奇偶数据缓冲器900包括RAIB奇偶数据缓冲器910a-910g的集合。在一些实现中,RAIB奇偶数据缓冲器910a-910g中的每个可各自对很多活动的逻辑块分组保存单独的运行奇偶值。选择器920配置成响应于写奇偶缓冲选择信号930将MPP检查器模块645所检查的比较数据选择性地发送到RAIB奇偶缓冲器910a-910g中的一个。在一些实现中,信号930可由主设备或由包括900的存储控制器的其它部件发送。
多RAIB奇偶数据缓冲器900还包括选择器940,其配置成响应于读奇偶缓冲选择信号950将缓存的运行奇偶数据从缓冲器910a-910g中的选定的一个选择性地发送到MPP检查器模块655。在一些实现中,信号950可由存储控制器发送。注意,在一些实现中,缓冲器900包括对选择器920、940的单缓冲选择输入;在这种情况下,选择信号930、950合并到单缓冲选择信号中。
在一些实现中,单奇偶数据缓冲器910a-910g可为双端口存储器,其中N个缓冲器可提供多达N个活动分组。例如,可实现六个双端口存储器以一次提供多达六个活动逻辑块分组。
在其它实现中,单奇偶数据缓冲器910a-910g可为单端口存储器,其中通过读/写2N来使读和写到存储器中的操作交错,其中,N是要在单个时钟循环中处理的比特位的数量。例如,可实现12个单端口存储器以一次提供多达十二个活动逻辑块分组。单端口存储器设备的这样的实现可实现较大的吞吐量(例如,一个缓冲器可被写入,而另一个缓冲器可被同时读)。
图10A和10B示出用于将逻辑索引映射到物理索引的查找表1000的例子。在一些实现中,存储控制器可结合多奇偶数据缓冲器900来使用查找表1000。参考图10A,表1000在默认的映射配置中被示出(例如,在复位操作之后)。逻辑缓冲器位置的逻辑索引范围1010直接映射到多奇偶数据缓冲器900中的物理缓冲设备的物理索引范围1020。
存储控制器能够处理“N”个逻辑缓冲器(例如,在本例中“N”等于六),且第“N+1”个物理缓冲器用作“备用”缓冲器。在一些例子中,存储控制器提供奇偶缓冲活动信号以选择逻辑缓冲器位置。范围1030显示可由存储控制器使用的逻辑索引的范围。相应于活动逻辑缓冲器的物理缓冲器被查找,并例如通过设置奇偶缓冲读选择信号950被启动。存储控制器还可将奇偶缓冲写选择设置到相应于备用逻辑缓冲器的物理缓冲器(例如,在本例中第六个物理缓冲器)。
在一些实现中,当对选定的页的处理完成时,查找表1000可通过更新相应于被分配到备用缓冲器的选定逻辑地址的缓冲器来更改,且相应于逻辑地址“N+1”的缓冲器可被映射到由奇偶缓冲读选择信号所给出的物理地址。在一些实现中,查找表1000可能不需要响应于奇偶介质传输信号625或奇偶DDR传输信号825而被更新。
在一些实现中,当接收到复位信号时,可通过将奇偶缓冲读选择信号950设置到相应于逻辑缓冲器N+1的物理缓冲器来更新查找表1000,且奇偶缓冲写选择信号930可被设置到由奇偶缓冲活动信号指示的逻辑缓冲器位置。例如,当使用前面所述的技术时,存储控制器可设置奇偶缓冲活动信号等于2,奇偶缓冲读选择信号可被设置到2,且奇偶缓冲写选择信号可被设置到6。以这种方式更新的查找表1000在图10b中被示出。在一些实现中,查找表1000可在寄存器中实现,以减小对表1000中存储的值的存储器保护。
图11是示出用于存储数据和RIAB奇偶性的过程1100的例子的流程图。在一些实现中,过程1100可由存储控制器110、210和310使用。
在1102,接收待被存储在包括多个固态物理存储器设备(例如,存储数据设备320a-320f)的固态存储器中的数据(例如,在存储控制器110处从主设备102)。在1104,所接收的数据分成相应于固态存储器的逻辑数据块。例如,逻辑数据块可与存储数据的物理数据块(例如,存储器块324a-324d)相同。
在1106,逻辑数据块被分配到至少一个块分组,其包括来自多个固态物理存储器设备(例如,行440)的每个的至少一个物理数据存储块。在1108,读取存储在被分配到逻辑块分组的块中的数据。
在1110,如果所读取的块是从逻辑块分组读取的第一逻辑数据块,则在1112,该逻辑数据块作为缓存值被缓存(例如,缓存在奇偶缓冲器650中)。接着在1114,逻辑数据块被存储(例如,存储在相应于逻辑块分组的逻辑数据块的物理存储器块中)。然而,如果在1110,所读的块不是从逻辑块分组读取的第一逻辑数据块,则在1116,该逻辑数据块与缓存值异或(例如,通过异或逻辑670)以产生运行的RAIB奇偶性。运行RAIB奇偶性接着在1118作为缓存值被缓存,且逻辑数据块存储在逻辑块分组的物理数据存储块中,物理数据存储块被指定用于在1114将持久数据存储在逻辑块分组内。在一些实现中,多个缓冲器(例如,多奇偶数据缓冲器900)可用于缓存运行RAIB奇偶性。
如果在1120确定该块不是被分配到逻辑块分组的最后一个逻辑数据块,则在1122从逻辑块分组选择另一个块,并在1108被读取该块。如果在1120该块被确定为逻辑块分组的最后一个块,则在1124确定相应于存储在逻辑块分组中的持久数据的RAIB奇偶性。在一些实现中,RAIB奇偶性可为最后一个缓存的RAIB奇偶性。在1126,相应的代码存储在逻辑块分组的至少一个物理数据存储块中,物理数据存储块被指定用于存储相应于存储在逻辑块分组中的持久数据的代码。在一些实现中,相应的代码可为恢复码(例如,奇偶码、RAIB奇偶数据)。
图12是示出用于检测所存储的数据中的错误的过程1200的例子的流程图。在一些实现中,过程1200可由存储控制器110、210和310使用。在1202,存储在固态物理存储器(例如,存储数据设备320a-320f)内的逻辑块分组的逻辑数据块中的数据被读取(例如,通过存储控制器110来读取)。
如果在1204确定逻辑数据块是从逻辑块分组读取的第一个块,则逻辑数据块在1206作为RAIB奇偶性被缓存(例如,缓存在奇偶数据缓冲器650中)。然而,如果在1204该块被确定为不是从逻辑块分组读取的第一个块,则该块在1208与运行RAIB奇偶性异或(例如,通过异或逻辑670进行比较),并在1210作为运行RAIB奇偶性被缓存。在一些实现中,多个缓冲器(例如,多奇偶数据缓冲器900)可用于缓存运行RAIB奇偶性。
在1212确定该块是否是从逻辑块分组读取的最后一个块。如果不是,则逻辑块分组的下一个块在1214被选择并在1202被读取。如果该块是逻辑块分组的最后一个块,则在1216运行RAIB奇偶性被检查,以确定它是否等于预定值(例如,零)。如果在1216运行RAIB奇偶性被确定为等于预定值,则在1220没有错误被检测到。然而,如果在1216运行RAIB奇偶性不同于预定值,则错误在所读取的逻辑块中被检测到,且所检测的错误的通知在1218被给出。在一些实现中,逻辑块分组内的错误的检测可用于触发用于恢复错误数据的过程。
图13是示出用于恢复数据的过程1300的例子的流程图。在一些实现中,过程1300可由存储控制器110、210和310使用。
在1302,选择存储不可得到的或错误的数据的物理数据块(例如,通过存储控制器110来选择)。在1304,识别相应于选定的物理数据存储块的逻辑数据块。在1306,识别相应于选定的物理数据存储块的逻辑数据块被分配到的逻辑块分组。在1308,读取存储在所识别的逻辑块分组中的持久数据,包括相应的代码(例如,恢复码、奇偶码、RAIB奇偶数据)。
如果在1310确定所读取的逻辑数据块是从逻辑块分组读取的第一个块,则该逻辑数据块在1312作为运行RAIB奇偶性被缓存(例如,缓存在缓冲器650中)。然而,如果在1310逻辑数据块被确定为除了第一个块以外的块,则在1314,该逻辑数据块与缓存的运行RAIB奇偶性异或(例如,通过异或逻辑670进行比较)。因而产生的值接着在1316作为运行RAIB奇偶性被缓存。在一些实现中,多个缓冲器(例如,多奇偶数据缓冲器900)可用于缓存运行RAIB奇偶性。
如果在1318逻辑数据块被确定为不是逻辑块分组的最后一个块,则在1320选择逻辑块分组的另一个块。如果在1322选定的块相应于所识别的物理块(例如,在1302识别的块),则在1320选择另一个块。例如,如果最新选择的块是被识别为存储破坏的或不可得到的数据的块,则忽略该块并选择另一个块。否则,在1308读取选定的逻辑数据块。
然而,如果在1318逻辑数据块被确定为逻辑块分组的最后一个块,则在1324确定相应于逻辑块分组的代码。在一些实现中,相应的代码可为最后缓存的运行RAIB奇偶性。例如,在1316缓存的最终奇偶性可用作相应于逻辑块分组的代码。例如,如果第一页存储二进制值01101101,而第二页存储二进制值11010100,则这两页的异或可为10111001并被存储为这两页的奇偶性。如果第二页变得不可读,则其内容可通过对RAIB奇偶性10111001和第一页值01101101进行异或操作来恢复,以给出11010100的值,该值是最初被存储为第二页的值。
在一些实现中,相应的代码可为当与最后缓存的RAIB奇偶性合并时将导致预定值(例如,零)的值。在简化的例子中,8比特位页大小可缓存从0到255的值,且对于为200的最终值(例如,在1316被缓存)和零的预定值,相应的代码可被确定为56(例如,二进制200+二进制56回绕等于零值)。在1326,(例如,向主设备)提供相应的代码作为存储在选定的物理数据存储块中的数据。继续前面的例子,值56可为最初存储在损坏的块中的值,并可被提供给主设备以恢复在损坏的块中丢失的数据。
上面详细描述了新的实施方式,且各种更改是可能的。所公开的主题-包括在本说明书中描述的功能操作-可在电路、计算机硬件、固件、软件中或在它们的组合例如在本说明书中公开的结构装置及其结构等效形式中实现,可能包括可操作来使一个或多个数据处理装置执行所述操作的程序(例如,在计算机可读介质中编码的程序,计算机可读介质可为存储器设备、存储设备、机器可读存储基片或其它物理、机器可读介质或它们的一个或多个的组合)。
术语“数据处理装置”包括用于处理数据的所有装置、设备和系统,作为例子包括可编程处理器、计算机或多个处理器或计算机。该装置除了硬件以外还可包括为正被讨论的计算机程序创建执行环境的代码,例如构成处理器固件、协议堆栈、数据库管理系统、操作系统或它们的一个或多个的组合的代码。
程序(也称为计算机程序、软件、软件应用、脚本或代码)可用任何形式的编程语言-包括编译或解释语言或说明性或过程语言-来编写,且它可配置在任何形式中,包括作为独立的程序或作为模块、部件、子例程或适合于用在计算环境中的其它单元。程序可存储在电子存储器中、磁或光记录介质上、或另一适当的有形非暂时计算机可读介质上。程序不一定相应于文件系统中的文件。程序可存储在保存其它程序或数据(例如,存储在标记语言文件中的一个或多个脚本)的文件的一部分中、专用于正被讨论的程序的单个文件中或多个协调的文件(例如,存储一个或多个模块、子程序或代码的部分的文件)中。程序可部署成一个计算机上或在位于一个地点或分布在多个地点中并被通信网络互连的多个计算机上执行。
虽然本说明书包括很多细节,这些不应被解释为对可被主张的内容的范围的限制,而更确切地作为可能对特定的实施方式特有的特征的描述。在本说明书中在不同的实施方式的背景下描述的某些特征也可结合单个实施方式实现。反过来,在单个实施方式的背景下描述的各种特征也可在多个实施方式中单独地或以任何适当的子组合实现。而且,虽然特征在上面被描述为在某些实施方式中起作用且甚至最初照此被主张,来自所主张的组合的一个或多个特征在一些情况下可从该组合删除,且所主张的组合可针对于子组合或子组合的变形。
类似地,虽然以特定的顺序在附图中描述了操作,这不应被理解为要求这样的操作以所示的特定顺序或以连续的顺序被执行,或所有示出的操作都被执行来实现期望的结果。在某些情况下,多任务化和并行处理可能是有利的。而且,上述实施方式中的各种部件的分离不应被理解为在所有实施方式中都需要这样的分离。
其它实施方式落在下面的权利要求的范围内。

Claims (9)

1.一种用于存储数据的方法,包括:
在存储控制器处接收待存储在包括多个固态物理存储器设备的固态存储器中的数据;
通过所述存储控制器将所接收的数据分成相应于所述固态存储器的逻辑数据块;
通过所述存储控制器将所述逻辑数据块分配到逻辑块分组,所述逻辑块分组包括来自所述多个固态物理存储器设备中的两个或多个的至少一个物理数据存储块;
将所述逻辑数据块存储在所述逻辑块分组的、被指定用于将持久数据存储在所述逻辑块分组内的物理数据存储块中;
通过所述存储控制器确定相应于存储在所述逻辑块分组中的所述持久数据的代码;以及
通过所述存储控制器将所述代码存储在至少一个物理数据存储块中,所述至少一个物理数据存储块被指定用于存储相应于存储在所述逻辑块分组中的所述持久数据的所述代码。
2.如权利要求1所述的方法,其中所述多个固态物理存储器设备是闪存设备。
3.如权利要求1所述的方法,其中所述确定是逻辑异或操作。
4.如权利要求1所述的方法,其中所述多个固态物理存储器设备和所述存储控制器包括单个存储器存储设备,且所述逻辑块分组对应于由所述存储控制器所使用的逻辑块分组,以实现在所述单个存储器存储设备中的存储器管理。
5.如权利要求1所述的方法,其中所述多个固态物理存储器设备中的每个包括包含多个物理数据存储块的单个集成电路芯片,其中所述多个物理数据存储块中的每个是在所述集成电路芯片上形成的固态存储器的单独可寻址的块。
6.如权利要求1所述的方法,还包括:
通过识别相应于选定的物理数据存储块的逻辑数据块被分配给的逻辑块分组、读取存储在所识别的逻辑块分组中的持久数据和代码、将所述代码与不同于存储在所述选定的物理数据存储块中的持久数据的所读取的持久数据进行比较,来由所述存储控制器恢复存储在所述选定的物理数据存储块中的持久数据。
7.如权利要求6所述的方法,其中所述比较是逻辑异或操作。
8.如权利要求1所述的方法,其中确定所述代码包括:
在缓冲存储器中存储所述逻辑块分组的第一个逻辑数据块作为缓存值:
对于所述逻辑块分组中的剩余逻辑数据块中的每个,
通过所述存储控制器比较所述剩余逻辑数据块与所述缓存值以确定比较值,以及
将所述比较值作为缓存值存储在所述缓冲存储器中;以及
通过所述存储控制器确定当与所述缓存值比较时导致预定值的值。
9.如权利要求8所述的方法,其中所述缓冲存储器包括多个缓冲存储器,且所述缓冲存储器中的至少一个包括单端口存储器。
CN201010285233.2A 2009-09-15 2010-09-15 在固态存储器中实现raid Active CN102023815B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US24266209P 2009-09-15 2009-09-15
US61/242,662 2009-09-15
US25457709P 2009-10-23 2009-10-23
US61/254,577 2009-10-23

Publications (2)

Publication Number Publication Date
CN102023815A CN102023815A (zh) 2011-04-20
CN102023815B true CN102023815B (zh) 2016-01-20

Family

ID=43731593

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010285233.2A Active CN102023815B (zh) 2009-09-15 2010-09-15 在固态存储器中实现raid

Country Status (2)

Country Link
US (3) US8402217B2 (zh)
CN (1) CN102023815B (zh)

Families Citing this family (172)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8719661B1 (en) * 2010-11-15 2014-05-06 Vmware, Inc. Transparent and lightweight recovery from hardware memory errors
US8156403B2 (en) * 2006-05-12 2012-04-10 Anobit Technologies Ltd. Combined distortion estimation and error correction coding for memory devices
CN103258572B (zh) 2006-05-12 2016-12-07 苹果公司 存储设备中的失真估计和消除
WO2007132456A2 (en) 2006-05-12 2007-11-22 Anobit Technologies Ltd. Memory device with adaptive capacity
US7975192B2 (en) 2006-10-30 2011-07-05 Anobit Technologies Ltd. Reading memory cells using multiple thresholds
US8151163B2 (en) * 2006-12-03 2012-04-03 Anobit Technologies Ltd. Automatic defect management in memory devices
US8151166B2 (en) * 2007-01-24 2012-04-03 Anobit Technologies Ltd. Reduction of back pattern dependency effects in memory devices
US8369141B2 (en) 2007-03-12 2013-02-05 Apple Inc. Adaptive estimation of memory cell read thresholds
WO2008139441A2 (en) 2007-05-12 2008-11-20 Anobit Technologies Ltd. Memory device with internal signal processing unit
US8234545B2 (en) 2007-05-12 2012-07-31 Apple Inc. Data storage with incremental redundancy
US8259497B2 (en) 2007-08-06 2012-09-04 Apple Inc. Programming schemes for multi-level analog memory cells
US8174905B2 (en) 2007-09-19 2012-05-08 Anobit Technologies Ltd. Programming orders for reducing distortion in arrays of multi-level analog memory cells
US8527819B2 (en) 2007-10-19 2013-09-03 Apple Inc. Data storage in analog memory cell arrays having erase failures
US8270246B2 (en) 2007-11-13 2012-09-18 Apple Inc. Optimized selection of memory chips in multi-chips memory devices
US8225181B2 (en) 2007-11-30 2012-07-17 Apple Inc. Efficient re-read operations from memory devices
US8209588B2 (en) 2007-12-12 2012-06-26 Anobit Technologies Ltd. Efficient interference cancellation in analog memory cell arrays
US8156398B2 (en) 2008-02-05 2012-04-10 Anobit Technologies Ltd. Parameter estimation based on error correction code parity check equations
US8230300B2 (en) 2008-03-07 2012-07-24 Apple Inc. Efficient readout from analog memory cells using data compression
US8400858B2 (en) 2008-03-18 2013-03-19 Apple Inc. Memory device with reduced sense time readout
US8493783B2 (en) 2008-03-18 2013-07-23 Apple Inc. Memory device readout using multiple sense times
US7995388B1 (en) 2008-08-05 2011-08-09 Anobit Technologies Ltd. Data storage using modified voltages
US8169825B1 (en) 2008-09-02 2012-05-01 Anobit Technologies Ltd. Reliable data storage in analog memory cells subjected to long retention periods
US8949684B1 (en) 2008-09-02 2015-02-03 Apple Inc. Segmented data storage
US8482978B1 (en) 2008-09-14 2013-07-09 Apple Inc. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US8239734B1 (en) 2008-10-15 2012-08-07 Apple Inc. Efficient data storage in storage device arrays
US8713330B1 (en) 2008-10-30 2014-04-29 Apple Inc. Data scrambling in memory devices
US8208304B2 (en) * 2008-11-16 2012-06-26 Anobit Technologies Ltd. Storage at M bits/cell density in N bits/cell analog memory cell devices, M>N
US8174857B1 (en) 2008-12-31 2012-05-08 Anobit Technologies Ltd. Efficient readout schemes for analog memory cell devices using multiple read threshold sets
US8248831B2 (en) 2008-12-31 2012-08-21 Apple Inc. Rejuvenation of analog memory cells
US8924661B1 (en) 2009-01-18 2014-12-30 Apple Inc. Memory system including a controller and processors associated with memory devices
US8228701B2 (en) 2009-03-01 2012-07-24 Apple Inc. Selective activation of programming schemes in analog memory cell arrays
US8832354B2 (en) 2009-03-25 2014-09-09 Apple Inc. Use of host system resources by memory controller
US8259506B1 (en) 2009-03-25 2012-09-04 Apple Inc. Database of memory read thresholds
US8238157B1 (en) 2009-04-12 2012-08-07 Apple Inc. Selective re-programming of analog memory cells
US8479080B1 (en) 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
US8402217B2 (en) 2009-09-15 2013-03-19 Marvell International Ltd. Implementing RAID in solid state memory
US8988800B1 (en) 2009-09-15 2015-03-24 Marvell International Ltd. Error correction for storage devices
US8495465B1 (en) 2009-10-15 2013-07-23 Apple Inc. Error correction coding over multiple memory pages
US8677054B1 (en) 2009-12-16 2014-03-18 Apple Inc. Memory management schemes for non-volatile memory devices
US8694814B1 (en) 2010-01-10 2014-04-08 Apple Inc. Reuse of host hibernation storage space by memory controller
US8677203B1 (en) 2010-01-11 2014-03-18 Apple Inc. Redundant data storage schemes for multi-die memory systems
JP2011233186A (ja) * 2010-04-23 2011-11-17 Toshiba Corp ディスク記憶装置及びデータ復元方法
US8694853B1 (en) 2010-05-04 2014-04-08 Apple Inc. Read commands for reading interfering memory cells
US8572423B1 (en) 2010-06-22 2013-10-29 Apple Inc. Reducing peak current in memory systems
US8514630B2 (en) 2010-07-09 2013-08-20 Sandisk Technologies Inc. Detection of word-line leakage in memory arrays: current based approach
US8432732B2 (en) 2010-07-09 2013-04-30 Sandisk Technologies Inc. Detection of word-line leakage in memory arrays
US8595591B1 (en) 2010-07-11 2013-11-26 Apple Inc. Interference-aware assignment of programming levels in analog memory cells
US9104580B1 (en) 2010-07-27 2015-08-11 Apple Inc. Cache memory for hybrid disk drives
US8645794B1 (en) 2010-07-31 2014-02-04 Apple Inc. Data storage in analog memory cells using a non-integer number of bits per cell
US8856475B1 (en) 2010-08-01 2014-10-07 Apple Inc. Efficient selection of memory blocks for compaction
US8493781B1 (en) 2010-08-12 2013-07-23 Apple Inc. Interference mitigation using individual word line erasure operations
US8694854B1 (en) 2010-08-17 2014-04-08 Apple Inc. Read threshold setting based on soft readout statistics
US8832507B2 (en) * 2010-08-23 2014-09-09 Apple Inc. Systems and methods for generating dynamic super blocks
US9021181B1 (en) 2010-09-27 2015-04-28 Apple Inc. Memory management for unifying memory cell conditions by using maximum time intervals
US9727414B2 (en) * 2010-12-01 2017-08-08 Seagate Technology Llc Fractional redundant array of silicon independent elements
US8438429B2 (en) * 2010-12-01 2013-05-07 Hitachi, Ltd. Storage control apparatus and storage control method
US8601313B1 (en) 2010-12-13 2013-12-03 Western Digital Technologies, Inc. System and method for a data reliability scheme in a solid state memory
US8615681B2 (en) 2010-12-14 2013-12-24 Western Digital Technologies, Inc. System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss
US8601311B2 (en) 2010-12-14 2013-12-03 Western Digital Technologies, Inc. System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory
US8578208B2 (en) * 2011-01-13 2013-11-05 Micron Technology, Inc. Determining location of error detection data
US9007836B2 (en) * 2011-01-13 2015-04-14 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device
JP2014507717A (ja) 2011-01-18 2014-03-27 エルエスアイ コーポレーション より高いレベルの冗長な情報の計算
US8700950B1 (en) * 2011-02-11 2014-04-15 Western Digital Technologies, Inc. System and method for data error recovery in a solid state subsystem
US8700951B1 (en) 2011-03-09 2014-04-15 Western Digital Technologies, Inc. System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata
US8379454B2 (en) 2011-05-05 2013-02-19 Sandisk Technologies Inc. Detection of broken word-lines in memory arrays
KR20120129239A (ko) * 2011-05-19 2012-11-28 삼성전자주식회사 비휘발성 메모리 장치, 이의 동작 방법, 및 이를 포함하는 메모리 시스템
US8726104B2 (en) 2011-07-28 2014-05-13 Sandisk Technologies Inc. Non-volatile memory and method with accelerated post-write read using combined verification of multiple pages
US8750042B2 (en) 2011-07-28 2014-06-10 Sandisk Technologies Inc. Combined simultaneous sensing of multiple wordlines in a post-write read (PWR) and detection of NAND failures
US8775901B2 (en) 2011-07-28 2014-07-08 SanDisk Technologies, Inc. Data recovery for defective word lines during programming of non-volatile memory arrays
US9449692B2 (en) 2011-08-03 2016-09-20 Micron Technology, Inc. Functional data programming and reading in a memory
KR20130031046A (ko) * 2011-09-20 2013-03-28 삼성전자주식회사 플래시 메모리 장치 및 플래시 메모리 장치의 데이터 관리 방법
JP5768654B2 (ja) * 2011-10-25 2015-08-26 ソニー株式会社 記憶制御装置、記憶装置、情報処理システム、および、記憶制御方法
US8730722B2 (en) 2012-03-02 2014-05-20 Sandisk Technologies Inc. Saving of data in cases of word-line to word-line short in memory arrays
US9026887B2 (en) 2012-03-15 2015-05-05 Micron Technology, Inc. Physical page, logical page, and codeword correspondence
US20130304970A1 (en) * 2012-04-20 2013-11-14 Stec, Inc. Systems and methods for providing high performance redundant array of independent disks in a solid-state device
US9021333B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for recovering data from failed portions of a flash drive
US9021336B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for redundantly storing error correction codes in a flash drive with secondary parity information spread out across each page of a group of pages
US9047214B1 (en) 2012-05-22 2015-06-02 Pmc-Sierra, Inc. System and method for tolerating a failed page in a flash device
US9021337B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for adaptively selecting among different error correction coding schemes in a flash drive
US9183085B1 (en) 2012-05-22 2015-11-10 Pmc-Sierra, Inc. Systems and methods for adaptively selecting from among a plurality of error correction coding schemes in a flash drive for robustness and low latency
US9176812B1 (en) 2012-05-22 2015-11-03 Pmc-Sierra, Inc. Systems and methods for storing data in page stripes of a flash drive
KR101925383B1 (ko) 2012-07-23 2018-12-05 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 데이터 관리 방법
US9111648B2 (en) * 2012-08-28 2015-08-18 Apple Inc. Redundancy schemes for non-volatile memory based on physical memory layout
US8972826B2 (en) 2012-10-24 2015-03-03 Western Digital Technologies, Inc. Adaptive error correction codes for data storage systems
US9021339B2 (en) 2012-11-29 2015-04-28 Western Digital Technologies, Inc. Data reliability schemes for data storage systems
US9059736B2 (en) 2012-12-03 2015-06-16 Western Digital Technologies, Inc. Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme
US9026893B1 (en) * 2012-12-13 2015-05-05 Western Digital Technologies, Inc. Dynamically assigning inactive pages not used in Reed-Solomon code in non-volatile solid-state storage array
US9214963B1 (en) 2012-12-21 2015-12-15 Western Digital Technologies, Inc. Method and system for monitoring data channel to enable use of dynamically adjustable LDPC coding parameters in a data storage system
CN103092765B (zh) * 2012-12-31 2015-08-05 记忆科技(深圳)有限公司 固态存储系统、装置及数据写入方法
US9026757B2 (en) * 2013-01-25 2015-05-05 Sandisk Technologies Inc. Non-volatile memory programming data preservation
US8913428B2 (en) 2013-01-25 2014-12-16 Sandisk Technologies Inc. Programming non-volatile storage system with multiple memory die
KR20140099689A (ko) * 2013-02-04 2014-08-13 삼성전자주식회사 불휘발성 메모리 셀 어레이를 포함하는 반도체 메모리 장치
US8972776B2 (en) 2013-03-06 2015-03-03 Seagate Technology, Llc Partial R-block recycling
US9478271B2 (en) * 2013-03-14 2016-10-25 Seagate Technology Llc Nonvolatile memory data recovery after power failure
US9081701B1 (en) 2013-03-15 2015-07-14 Pmc-Sierra, Inc. Systems and methods for decoding data for solid-state memory
US20140281802A1 (en) * 2013-03-15 2014-09-18 SEAKR Engineering, Inc. Multi-dimensional error detection and correction memory and computing architecture
US9208018B1 (en) 2013-03-15 2015-12-08 Pmc-Sierra, Inc. Systems and methods for reclaiming memory for solid-state memory
US9053012B1 (en) 2013-03-15 2015-06-09 Pmc-Sierra, Inc. Systems and methods for storing data for solid-state memory
US9026867B1 (en) * 2013-03-15 2015-05-05 Pmc-Sierra, Inc. Systems and methods for adapting to changing characteristics of multi-level cells in solid-state memory
US9009565B1 (en) * 2013-03-15 2015-04-14 Pmc-Sierra, Inc. Systems and methods for mapping for solid-state memory
CA2812607A1 (en) * 2013-04-02 2014-10-02 Sunb Ub Moon A multi-layer usb storage drive with physically separated secure storage layer and non secure storage layer, and with multiple layers
JP2015018451A (ja) * 2013-07-11 2015-01-29 株式会社東芝 メモリコントローラ、記憶装置およびメモリ制御方法
US9747993B2 (en) 2013-08-13 2017-08-29 Empire Technology Development Llc Memory systems
US9519577B2 (en) * 2013-09-03 2016-12-13 Sandisk Technologies Llc Method and system for migrating data between flash memory devices
US9304709B2 (en) * 2013-09-06 2016-04-05 Western Digital Technologies, Inc. High performance system providing selective merging of dataframe segments in hardware
US9189332B1 (en) * 2013-09-13 2015-11-17 Seagate Technology Llc Parity data in solid state memory
CN105556480B (zh) * 2013-09-16 2017-06-30 上海宝存信息科技有限公司 在基于闪存的存储系统中构建raid的方法及系统
US9424131B2 (en) 2013-09-19 2016-08-23 Avago Technologies General Ip (Singapore) Pte. Ltd. Spatially decoupled redundancy schemes for a solid state drive (SSD)
US9411817B2 (en) * 2013-09-23 2016-08-09 Google Inc. Programmatically choosing preferred storage parameters for files in large-scale distributed storage systems based on desired file reliability or availability
US9165683B2 (en) 2013-09-23 2015-10-20 Sandisk Technologies Inc. Multi-word line erratic programming detection
WO2015052833A1 (ja) * 2013-10-11 2015-04-16 株式会社日立製作所 ストレージ装置、ストレージシステム、及びストレージ装置制御方法
US9286176B1 (en) * 2013-11-08 2016-03-15 Western Digital Technologies, Inc. Selective skipping of blocks in an SSD
US9405480B2 (en) * 2014-01-13 2016-08-02 Seagate Technology Llc Interleaving codewords over multiple flash planes
US8949692B1 (en) 2014-01-23 2015-02-03 DSSD, Inc. Method and system for service-aware parity placement in a storage system
US20150205667A1 (en) * 2014-01-23 2015-07-23 DSSD, Inc. Method and system for service-aware data placement in a storage system
US9431052B2 (en) 2014-06-26 2016-08-30 Marvell World Trade Ltd. Two dimensional magnetic recording systems, devices and methods
US9484086B2 (en) 2014-07-10 2016-11-01 Sandisk Technologies Llc Determination of word line to local source line shorts
US9514835B2 (en) 2014-07-10 2016-12-06 Sandisk Technologies Llc Determination of word line to word line shorts between adjacent blocks
US9460809B2 (en) 2014-07-10 2016-10-04 Sandisk Technologies Llc AC stress mode to screen out word line to word line shorts
US9443612B2 (en) 2014-07-10 2016-09-13 Sandisk Technologies Llc Determination of bit line to low voltage signal shorts
US9240249B1 (en) 2014-09-02 2016-01-19 Sandisk Technologies Inc. AC stress methods to screen out bit line defects
US9202593B1 (en) 2014-09-02 2015-12-01 Sandisk Technologies Inc. Techniques for detecting broken word lines in non-volatile memories
US9449694B2 (en) 2014-09-04 2016-09-20 Sandisk Technologies Llc Non-volatile memory with multi-word line select for defect detection operations
KR102330391B1 (ko) 2014-09-11 2021-11-24 삼성전자주식회사 저장 장치 및 그것을 포함하는 데이터 저장 시스템의 가비지 컬렉션 방법
US9858325B1 (en) * 2014-09-29 2018-01-02 Amazon Technologies, Inc. Consolidating data in storage host groupings
SG11201702739VA (en) * 2014-10-03 2017-04-27 Agency Science Tech & Res Active storage unit and array
TWI539282B (zh) * 2014-10-13 2016-06-21 慧榮科技股份有限公司 非揮發性儲存裝置與控制器
WO2016092364A1 (en) 2014-12-09 2016-06-16 Marvell Israel (M.I.S.L.) Ltd. System and method for performing simultaneous read and write operations in memory
US9619326B2 (en) * 2014-12-09 2017-04-11 Western Digital Technologies, Inc. Methods and systems for implementing redundancy in memory controllers
WO2016113831A1 (ja) * 2015-01-13 2016-07-21 株式会社日立製作所 ストレージシステム、及び、記憶制御方法
US9830093B2 (en) * 2015-03-27 2017-11-28 Intel Corporation Method and apparatus for improving immunity to defects in a non-volatile memory
US11403173B2 (en) 2015-04-30 2022-08-02 Marvell Israel (M.I.S.L) Ltd. Multiple read and write port memory
CN107787485B (zh) * 2015-04-30 2021-04-09 马维尔以色列(M.I.S.L.)有限公司 多读取和写入端口存储器
US9857986B2 (en) * 2015-06-30 2018-01-02 International Business Machines Corporation Wear leveling of a memory array
US9659666B2 (en) 2015-08-31 2017-05-23 Sandisk Technologies Llc Dynamic memory recovery at the sub-block level
US9569306B1 (en) * 2015-12-18 2017-02-14 International Business Machines Corporation Recovery of multi-page failures in non-volatile memory system
US10198315B2 (en) * 2016-02-29 2019-02-05 Sandisk Technologies Llc Non-volatile memory with corruption recovery
US10198313B2 (en) 2016-03-11 2019-02-05 Western Digital Technologies, Inc. Redundancy of error correction encoded data in a storage system
US9946469B2 (en) * 2016-03-21 2018-04-17 Smart Modular Technologies, Inc. Solid state storage system with latency management mechanism and method of operation thereof
US9996417B2 (en) 2016-04-12 2018-06-12 Apple Inc. Data recovery in memory having multiple failure modes
KR102580123B1 (ko) * 2016-05-03 2023-09-20 삼성전자주식회사 Raid 스토리지 장치 및 그것의 관리 방법
KR102573301B1 (ko) * 2016-07-15 2023-08-31 삼성전자 주식회사 Raid 리커버리를 수행하는 메모리 시스템 및 그 동작방법
CN107807788B (zh) * 2016-09-09 2021-06-15 北京忆恒创源科技有限公司 块条带构造方法、构造装置及固态存储设备
US9996285B2 (en) * 2016-11-08 2018-06-12 SK Hynix Inc. Cyclically interleaved XOR array for error recovery
US10445199B2 (en) * 2016-12-22 2019-10-15 Western Digital Technologies, Inc. Bad page management in storage devices
CN106776110A (zh) * 2016-12-29 2017-05-31 忆正科技(武汉)有限公司 一种用于固态存储读策略的控制方法
CN106873912B (zh) * 2017-02-16 2020-02-07 苏州浪潮智能科技有限公司 Tlc芯片固态硬盘的动态分区存储方法及装置、系统
US10579471B2 (en) * 2017-03-02 2020-03-03 Toshiba Memory Corporation Storage device and error correction method for storage device
CN106980594A (zh) * 2017-04-06 2017-07-25 上海航天测控通信研究所 一种低成本高性能空间用计算机
CN108958961B (zh) * 2017-05-22 2021-11-30 上海宝存信息科技有限公司 数据储存装置以及数据错误管理方法
CN107273304A (zh) * 2017-05-24 2017-10-20 记忆科技(深圳)有限公司 一种提高固态硬盘顺序读性能的方法及固态硬盘
US10453547B2 (en) * 2017-06-16 2019-10-22 Seagate Technologies Llc Monitoring a memory for retirement
US10474527B1 (en) * 2017-06-30 2019-11-12 Seagate Technology Llc Host-assisted error recovery
US10585749B2 (en) * 2017-08-10 2020-03-10 Samsung Electronics Co., Ltd. System and method for distributed erasure coding
US10365967B2 (en) 2017-08-23 2019-07-30 Toshiba Memory Corporation On the fly raid parity calculation
CN107632947A (zh) * 2017-09-12 2018-01-26 记忆科技(深圳)有限公司 一种智能raid数据保护系统
CN109600242A (zh) * 2017-09-30 2019-04-09 美的智慧家居科技有限公司 用于家电配网的管理方法、家电、客户端及系统
US10496472B2 (en) * 2017-10-18 2019-12-03 Western Digital Technologies, Inc. Combined XOR buffer memory for multiple open blocks of non-volatile memory
US10838805B2 (en) * 2018-02-23 2020-11-17 Micron Technology, Inc. Generating parity data based on a characteristic of a stream of data
US10768856B1 (en) * 2018-03-12 2020-09-08 Amazon Technologies, Inc. Memory access for multiple circuit components
US10762967B2 (en) 2018-06-28 2020-09-01 Apple Inc. Recovering from failure in programming a nonvolatile memory
US10755787B2 (en) 2018-06-28 2020-08-25 Apple Inc. Efficient post programming verification in a nonvolatile memory
CN109324756A (zh) * 2018-08-22 2019-02-12 华中科技大学 一种基于固态盘阵列的数据安全删除方法
JP2020095548A (ja) * 2018-12-13 2020-06-18 株式会社日立製作所 不揮発性メモリドライブを備えたシステム
US10936455B2 (en) 2019-02-11 2021-03-02 Apple Inc. Recovery of data failing due to impairment whose severity depends on bit-significance value
US10915394B1 (en) 2019-09-22 2021-02-09 Apple Inc. Schemes for protecting data in NVM device using small storage footprint
US11138071B1 (en) 2020-06-22 2021-10-05 Western Digital Technologies, Inc. On-chip parity buffer management for storage block combining in non-volatile memory
CN111897746B (zh) * 2020-07-31 2023-06-23 广东昆仑信息科技有限公司 一种机房设备编码方法及系统
KR20220081610A (ko) 2020-12-09 2022-06-16 에스케이하이닉스 주식회사 컨트롤러 및 상기 컨트롤러를 포함하는 메모리 시스템
US11556416B2 (en) 2021-05-05 2023-01-17 Apple Inc. Controlling memory readout reliability and throughput by adjusting distance between read thresholds
US11847342B2 (en) 2021-07-28 2023-12-19 Apple Inc. Efficient transfer of hard data and confidence levels in reading a nonvolatile memory
US11550657B1 (en) 2021-09-01 2023-01-10 Apple Inc. Efficient programming schemes in a nonvolatile memory

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5737742A (en) * 1994-06-29 1998-04-07 Hitachi, Ltd. Memory system using flash memory and method of controlling the memory system
CN1535422A (zh) * 2001-07-26 2004-10-06 在无线通信设备中更新持久数据的系统和方法
CN1687904A (zh) * 2005-06-16 2005-10-26 北京航空航天大学 智能卡存储环境的控制方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8078794B2 (en) * 2000-01-06 2011-12-13 Super Talent Electronics, Inc. Hybrid SSD using a combination of SLC and MLC flash memory arrays
KR100380024B1 (ko) * 2001-01-04 2003-04-18 삼성전자주식회사 리던던시를 구비하는 반도체 메모리 장치
US7664903B2 (en) * 2002-02-25 2010-02-16 Solid Access Technologies LLC Control unit with PCI and SCSI buses and computing system with electronic semiconductor disk
US7188228B1 (en) * 2003-10-01 2007-03-06 Sandisk Corporation Hybrid mapping implementation within a non-volatile memory system
US8140795B2 (en) * 2005-02-28 2012-03-20 Lenovo (Singapore) Pte. Ltd. Hard disk drive with write-only region
WO2007058617A1 (en) * 2005-11-17 2007-05-24 Chee Keng Chang A controller for non-volatile memories, and methods of operating the memory controller
US8935302B2 (en) * 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US8001444B2 (en) * 2007-08-08 2011-08-16 Intel Corporation ECC functional block placement in a multi-channel mass storage device
WO2009039222A2 (en) * 2007-09-19 2009-03-26 Marvell World Trade Ltd. Flexible sequencer design architecture for solid state memory controller
US20090228762A1 (en) * 2008-03-07 2009-09-10 Kabushiki Kaisha Toshiba Inforamtion Precessing Apparatus and Non-Volatile Semiconductor Memory Drive
US8392687B2 (en) * 2009-01-21 2013-03-05 Micron Technology, Inc. Solid state memory formatting
JP5185156B2 (ja) * 2009-02-24 2013-04-17 株式会社東芝 メモリコントローラおよび半導体記憶装置
WO2010137178A1 (en) * 2009-05-25 2010-12-02 Hitachi,Ltd. Storage subsystem
US8751860B2 (en) * 2009-06-03 2014-06-10 Micron Technology, Inc. Object oriented memory in solid state devices
TWI400707B (zh) * 2009-07-09 2013-07-01 Phison Electronics Corp 快閃記憶體邏輯區塊管理方法及其控制電路與儲存系統
WO2011010348A1 (ja) * 2009-07-23 2011-01-27 株式会社日立製作所 フラッシュメモリ装置
US8484414B2 (en) * 2009-08-31 2013-07-09 Hitachi, Ltd. Storage system having plurality of flash packages
US8402217B2 (en) 2009-09-15 2013-03-19 Marvell International Ltd. Implementing RAID in solid state memory

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5737742A (en) * 1994-06-29 1998-04-07 Hitachi, Ltd. Memory system using flash memory and method of controlling the memory system
CN1535422A (zh) * 2001-07-26 2004-10-06 在无线通信设备中更新持久数据的系统和方法
CN1687904A (zh) * 2005-06-16 2005-10-26 北京航空航天大学 智能卡存储环境的控制方法

Also Published As

Publication number Publication date
US20110066793A1 (en) 2011-03-17
US8402217B2 (en) 2013-03-19
US20130227202A1 (en) 2013-08-29
US8725944B2 (en) 2014-05-13
CN102023815A (zh) 2011-04-20
US20140237287A1 (en) 2014-08-21
US8977813B2 (en) 2015-03-10

Similar Documents

Publication Publication Date Title
CN102023815B (zh) 在固态存储器中实现raid
US8239714B2 (en) Apparatus, system, and method for bad block remapping
CN102549554B (zh) 基于条带的存储器操作
US9201718B2 (en) Data recovery in a solid state storage system
CN101183563B (zh) 包括闪存的存储器系统和操作该系统的方法
KR101405741B1 (ko) 스트라이프-기반 비-휘발성 멀티레벨 메모리 동작
TWI528174B (zh) 基於可用記憶體空間選擇冗餘儲存組態
US11531590B2 (en) Method and system for host-assisted data recovery assurance for data center storage device architectures
MX2012010944A (es) Detección de distribución de paridad no regulada vía etiqueta de metadatos.
US20110029716A1 (en) System and method of recovering data in a flash storage system
CN103718162A (zh) 用于ssd中灵活的raid的方法和设备
CN103455386A (zh) 一种修复出错数据的方法和设备
US20130166991A1 (en) Non-Volatile Semiconductor Memory Device Using Mats with Error Detection and Correction and Methods of Managing the Same
JP5950286B2 (ja) アドレス変換テーブルを書き込む装置及び方法
US9305655B2 (en) Solving MLC NAND paired page program using reduced spatial redundancy
US20100138603A1 (en) System and method for preventing data corruption after power failure
JP6524126B2 (ja) メモリ制御装置及びメモリ制御方法
CN113220221B (zh) 存储器控制器与数据处理方法
CN117632579B (zh) 存储器控制方法和存储器存储装置
CN103514961A (zh) 自修复存储器
CN116266472A (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
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20200422

Address after: Singapore City

Patentee after: Marvell Asia Pte. Ltd.

Address before: Ford street, Grand Cayman, Cayman Islands

Patentee before: Kaiwei international Co.

Effective date of registration: 20200422

Address after: Ford street, Grand Cayman, Cayman Islands

Patentee after: Kaiwei international Co.

Address before: Hamilton, Bermuda

Patentee before: Marvell International Ltd.

Effective date of registration: 20200422

Address after: Hamilton, Bermuda

Patentee after: Marvell International Ltd.

Address before: Babado J San Michael

Patentee before: MARVELL WORLD TRADE Ltd.

TR01 Transfer of patent right