CN103229243A - 用于在非易失性存储设备中以冗余方式存储数据块的存储控制器和系统 - Google Patents

用于在非易失性存储设备中以冗余方式存储数据块的存储控制器和系统 Download PDF

Info

Publication number
CN103229243A
CN103229243A CN2011800537707A CN201180053770A CN103229243A CN 103229243 A CN103229243 A CN 103229243A CN 2011800537707 A CN2011800537707 A CN 2011800537707A CN 201180053770 A CN201180053770 A CN 201180053770A CN 103229243 A CN103229243 A CN 103229243A
Authority
CN
China
Prior art keywords
data
address
read
block
data block
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
CN2011800537707A
Other languages
English (en)
Other versions
CN103229243B (zh
Inventor
S.阿亚
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.)
Greenliant LLC
Original Assignee
Greenliant LLC
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 Greenliant LLC filed Critical Greenliant LLC
Publication of CN103229243A publication Critical patent/CN103229243A/zh
Application granted granted Critical
Publication of CN103229243B publication Critical patent/CN103229243B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes

Landscapes

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

Abstract

一种在多个物理上不同的非易失性存储设备中存储多个数据块的方法,每个非易失性存储设备被独立地写入或从中读取,其中,每个数据块是能够从非易失性存储设备中读取或向该设备写入的最小数据量。该方法包括根据多个数据块生成一个或多个错误校验数据块;并且在多个不同的物理非易失性存储设备中存储所述数据的多个块和一个或多个错误校验数据块,其中数据块在不同的物理存储设备中。

Description

用于在非易失性存储设备中以冗余方式存储数据块的存储控制器和系统
技术领域
本发明涉及一种用于冗余并高效地存储多个数据块的方法,特别在数据块是随机的情况下,在多个独立的可读/写非易失性存储设备中,所述设备把数据块作为可以从该存储设备中读取或向该设备写入的最小数据量。所述方法存储多个数据块以及一个或多个与所述多个数据块相关联的错误校验数据块,其中每个数据块存储于单独的非易失性存储设备中,其中建立对块的存储进行链接(link)的关联映射(map)。本发明还涉及一种执行前述方法的存储控制器和具有执行该方法的存储控制器的存储系统。
背景技术
每次存储或读取诸如一页数据的数据块的非易失性存储设备是本领域所熟知的。例如,典型地,在每次读/写操作中,NAND存储设备可以在设备中存储诸如4千字节的一页数据。每次存储或读取数据块的其他类型的非易失性存储设备,包括所谓的托管NAND(managed NAND)存储设备,诸如可向Santa Clara California的Greenliant Systems, Inc.购买的NANDrive 存储设备。在诸如NANDrive存储设备的托管 NAND存储设备中,控制器对原始(或非托管的)NAND存储设备进行控制,以使得诸如SATA(串行ATA)的标准接口可用于与NANDrive存储设备对接。如本文使用的,术语“NAND存储设备”指的是原始和托管NAND存储设备二者。
在NAND存储设备中,非易失性存储设备只能以每次多个数据块的方式被写入或从中读取。由于它们每次读回数据块的能力,NAND存储设备对存储大量数据是有用的。
在现有技术中,因为NAND存储设备容易出现错误,所以数据连同错误校验比特一起被存入NAND存储设备中。因而,从多个数据比特生成的一种已知的错误校验比特是奇偶校验比特。其他类型的错误比特包括里德所罗门错误比特和其他已知的类型。数据比特和从数据比特所生成的错误比特被提供给多个NAND存储设备。一种存储数据比特块的现有技术的方法是将数据块分成多个相等的数据子块,其中提供到物理上不同的NAND存储设备的每个数据子块彼此不同。该关联的错误比特(用于多个数据子块)被提供到另一个物理上不同的NAND存储设备。因而,所有的数据比特和错误比特块都被提供到物理上不同的NAND存储设备。
被提供到每个不同的NAND存储设备的数据子块能以两种方式之一被存储。首先,当在NAND存储设备的缓冲器中接收到数据子块时,该数据子块被存储在NAND存储单元块中以用于存储。这是浪费的,因为该存储块只包含子块数据量。可替换地,数据子块能被保存在缓冲器中直到接收到另一个子块(来自不同的数据块),以此类推,直到在缓冲器中接收到等于一个块的数据量时,在该情况下缓冲器中的整个数据块(包括来自不同数据块的多个子块)可以存储在一个存储块中。这种替代方法也不是最优的,因为数据被保存在缓冲器中,并且由于缓冲器通常是易失性存储器,因此存在电源故障导致数据丢失的可能性。
在读回时,一旦从一个NAND存储设备读出了存储块,必须对从该存储块中读取的数据进行解析以恢复所选择的数据子块。从物理上不同的NAND存储设备读出与选择的块相关联的多个数据子块(与相关联的错误比特一起)。把来自所有数据块的数据与来自错误块的数据相比较以确定是否出现了错误。为了这种方法正确地操作,在现有技术中,数据块被分成多个子块,然后带有错误比特块,降低了存储和读取的数据的大小,这反过来降低了读写效率。例如,如果数据块为4千字节,并且被存储在8个NAND设备中。每个数据子块为0.5千字节并且被存储在NAND设备的每一块中。当读出时,如果需要8个数据块或32千字节,则八(8)个NAND设备中的每一个必须被读取8次。来自八(8)个NAND设备的每一个中的每个子块(0.5千字节)的数据量必须组合成一个4千字节的块。然而,读取NAND设备所需的时间量归因于建立命令操作所需的时间、读取非易失性存储单元阵列所需的时间和来自每个NAND设备的0.5千字节的实际传送时间。建立命令操作的时间量和读取阵列所需的时间量几乎相同,不考虑要传送的数据量。由于NAND设备的块大小是增大的,使用把数据块分为子块并且把子块存储到NAND设备的块的现有技术方法在读取操作期间需要更多的时间。
参见图1,示出了现有技术的存储系统10的示意性框图以及其在存储多个数据块中出现的问题。图1示出了具有“逻辑地址1”、“逻辑地址2”、“逻辑地址3”等逻辑地址的八(8)个数据块。存储系统10还具有八个NAND存储设备20(a-h),分别示为“设备1”、“设备2”、“设备3”和“设备8”,以及用于存储奇偶校验比特的第九NAND存储设备20i。存储控制器(未示出)控制设备20(a-h)的操作,以及数据块到各个设备20(a-h)的定向,生成奇偶校验比特并且将奇偶校验比特存入设备20i。在现有技术中,当接收到数据块时,诸如具有逻辑地址1的数据块,存储控制器将数据块分为八个子块,并且将每个子块存入不同的NAND设备20(a-h)中。从而,如图1所示,具有逻辑地址1并且具有物理地址A的块被分为八(8)个子块,其中每个子块存储于不同的存储设备20(a-h)中。存储控制器根据来自逻辑地址1的八个数据子块生成奇偶校验比特子块,并且将奇偶校验比特子块存入设备9 20i。来自具有逻辑地址1的数据块的所有八(8)个数据子块(包括奇偶校验比特子块则是九个)都被存储于具有物理地址A的NAND设备的块中,虽然具有物理地址A的块全都在不同的存储器NAND设备20(a-i)中,但是具有相同的物理地址。以相同的方式来存储具有逻辑地址2的第二数据块。数据块被分为八(8)个子块,但是都具有物理地址B,并且被存储于NAND设备20(a-h)中,其中与八(8)个数据子块相关联的奇偶校验比特被存储于NAND设备20(i)中。
在读出时,假定希望读取具有逻辑地址3的逻辑地址的块,那么存储控制器使每个NAND存储设备20(a-h)从非易失性存储单元中在与逻辑地址3相关联的物理地址C读取数据块并且进入在每个NAND存储设备20(a-h)内的各自的缓冲器。其后,根据读取的八个数据子块来对具有逻辑地址3的逻辑地址的数据块进行组合,并且将该数据与来自设备20i的奇偶校验比特进行比较,来确定是否存在任何错误。此外,如果设备(a-h)中的任何一个检测到错误,则从NAND存储设备20i中读取与具有逻辑地址3的数据块相关联的奇偶校验比特块,并且将其存入该设备的缓冲器。然后校正错误,并且写回到有错误的NAND存储设备,并且从存储系统10提供校正后的数据。如果不存在错误,则从存储系统10提供来自具有逻辑地址3的逻辑地址的块的未校正的数据。
如前所讨论,这些数据块的存储的问题是当NAND设备20提高了数据传送速度并且降低了存储读取延迟时,读取开销使存储系统的性能急剧下降。这导致读取大量小数据块的增大的时间和开销。用以上作为示例,如果希望从存储系统10中读取具有逻辑地址(1-8)的八(8)个数据块,然后由上述讨论可以看出,每个NAND设备20(x)必须被读取8次(即使我们假定所有八(8)个存储设备20(a-h)-包括用于存储奇偶校验比特的NAND存储设备20(i))可以被同时读取。八(8)个小块读取操作的每一个,如前所讨论,需要建立读取操作的开销时间、读取阵列的时间以及最终传送来自于NAND设备20的数据的时间。当NAND设备提高了阵列读取延迟并且降低了传送时间时,这更成为一种瓶颈。
发明内容
因此,在本发明中,公开了一种在多个物理上不同的非易失性存储设备中存储多个数据块的方法。每个物理上不同的非易失性存储设备能够被独立地写入或从中读取,其中,每个数据块是能够从非易失性存储设备中读取或向该设备写入的最小数据量。本发明的方法包括根据多个数据块生成一个或多个错误校验数据块。该方法进一步包括在多个不同的物理非易失性存储设备中存储多个数据块和一个或多个错误校验数据块,其中每个数据块在不同的物理存储设备中。进一步,多个数据块被链接在地址映射中。
本发明还涉及一种用于控制多个独立的存储设备的存储控制器。所述存储控制器具有处理器和用于存储根据上述方法用于由处理器执行的编程代码的非易失性存储器。
最后,本发明涉及一种存储系统,该存储系统具有多个独立的存储设备和上述用于控制多个存储设备的存储控制器。
附图说明
图1是根据现有技术的方法操作的存储系统的框图。
图2是用于运行本发明的方法的存储系统和存储控制器的示意性框图。
图3是用于实现本发明的方法的优选实施例的映射表的图。
具体实施方式
参见图2,其示出了本发明的存储系统50。在本发明的存储系统50中,存储控制器30控制多个NAND存储设备20(a-i),所述设备可以与图10中所示的现有技术的NAND存储设备相同。存储控制器30包括处理器32和用于存储由处理器32执行的编程代码的非易失性存储器,通常是NOR存储器。存储于NOR存储器34中的编程代码使处理器32来运行本发明的方法,以控制要被存储在多个NAND存储设备20(a-i)中的多个数据块的存储。存储控制器30可以是包含处理器32和非易失性存储器34二者的集成电路设备,存储器34包含用于由处理器32执行的编程代码。
参见图3,其示出了在本发明的方法中由存储控制器30维护的映射地址表。由存储系统50接收到的每个数据块具有相关联的逻辑地址。当每个数据块被存储系统50接收到时,存储控制器30分配与逻辑地址相关联的物理地址。因而,例如,对于具有逻辑地址“a”的第一数据块,存储控制器30为该数据块分配物理地址“1”。此外,逻辑地址a被分配到RAID组“1”。当接收到另一个数据块时,例如具有逻辑地址“x”的数据块,为其分配物理地址“7”。分配给该块的RAID组也是“1”。当接收到具有逻辑地址“r”和“q”的块时,分别为其分配物理地址“19”和“3”,并且也为其分配RAID组“1”。来自逻辑地址“a”、“x”“r”和“q”的块的数据然后被用于生成诸如奇偶校验比特的错误校正比特块,并且然后共同地将这些块写入物理NAND设备20(a-i),其中一个数据块(包括错误比特块)进入不同的设备20(a-i)中。将数据奇偶校验块写入物理地址A,该地址是在设备20i中的地址,并且也被分配到RAID组“1”。用于将数据块集合在相同RAID组内的参数可以基于许多因素,例如在相同RAID组中的数据块的物理地址(或逻辑地址)都涉及不同的NAND存储设备20。因而,物理地址1、7、19、3和A指代每个NAND存储设备20(a-i)内的地址。每个数据(或错误校验数据)块将其地址(逻辑地址或物理地址)链接到相同RAID组内的所有其他数据块。进一步地,该链接是循环的(cyclical),因为从任何入口进入地址映射表,都可以定位所有其他的数据(或错误校验数据)块。通过循环,这意味着即使一个链接断了,仍然可以确定所有入口。例如,如果希望访问具有逻辑地址x的数据块,(具有相应的物理地址7),本发明的方法提供了到具有逻辑地址a(相应的物理地址1)的链接。从逻辑地址a,可以确定其他块的逻辑地址(和相应的物理地址)。然而,如果前面提到的该链接断了,那么从逻辑地址x(和物理地址7)可以找到具有逻辑地址r(和物理地址19)的块,并且从那里可以找到其余的逻辑地址(和相应的物理地址)。因而,具有逻辑地址x的数据块自动地指向在相同RAID组中具有逻辑地址a等的另一个数据块。当然,如之前所指出的,该链接还可以通过物理地址的方式。
当从存储系统50读回时,让我们假定希望恢复具有逻辑地址x的数据块。存储控制器30参考如图3所示的映射表,并且确定必须从中读取块的设备和物理地址,并且更高效地读取数据块,由于读取的块较大。如果在读取操作期间出现错误,那么存储控制器30确定对于除了有错误的设备之外的所有设备20(a-i)应该在物理地址1、7、19、3和A(其都涉及不同的设备20(a-i))发起读取操作。设备20(a-i)全都彼此独立地执行它们各自的读取操作,并且从非易失性存储单元中在那些相应的物理地址读取数据,并且然后将该数据存储在该存储设备20(a-i)的缓冲器内。来自存储设备20i在物理地址A的奇偶校验比特然后被用于确定在来自物理地址7的块的数据中是否存在错误,所述块是具有逻辑地址x的块。如果不存在错误,则从存储系统50提供来自该逻辑块x的数据,由于那是被请求的数据块。如果存在错误,但是不在具有逻辑地址x的块中,则从存储系统50提供来自该逻辑地址x的数据。此外,然后校正包含错误的存储设备20中的缓冲器。然后指示该存储设备20将其缓冲器内的校正后的数据写回到设备20的非易失性存储单元阵列中。然后用设备20中的校正后的数据的物理地址更新图3的映射表。如果在具有逻辑地址x的块中存在错误,则校正来自逻辑地址x的数据,并且然后从存储系统50提供校正后的数据。此外,然后校正用于逻辑地址x的存储设备20的缓冲器。然后指示该存储设备20将其缓冲器内的校正后的数据写回到设备20的非易失性存储单元阵列中。然后用设备20中的校正后的数据的物理地址更新图3的映射表。
从前述可见,本发明具有许多优势。特别地,在独立接收到的数据块被集合成RAID组并且由此形成一个或多个错误校验比特的情况下,并且在数据和错误校验数据块以一个块在每个不同的存储设备中的方式存储于存储设备20的情况下,RAID概念被继续,其导致数据读出更准确。此外,可以更高效地对NAND存储设备进行读出,特别是当NAND存储设备持续提高存储容量时,连同更好的错误检测和校正,因为单个读取操作导致整个数据块被读取,而不是现有技术中数据子块被读取。

Claims (25)

1.一种在多个物理上不同的非易失性存储设备中存储多个数据块的方法,每个设备被独立地写入或从中读取,其中,每个数据块是能够从非易失性存储设备中读取或向该设备写入的最小数据量,所述方法包括:
根据多个数据块生成一个或多个错误校验数据块;
在所述多个不同的物理非易失性存储设备中存储所述数据的所述多个块和所述一个或多个错误校验数据块,其中数据块在不同的物理存储设备中;以及
将多个数据块链接在地址映射中。
2.如权利要求1所述的方法,其中,所述生成步骤包括根据所述多个数据块生成奇偶校验数据块。
3.如权利要求1所述的方法,其中,所述链接步骤进一步对所述多个数据块和错误校验数据块进行链接。
4.如权利要求3所述的方法,其中,所述多个数据块和错误校验数据块中的每一个具有与之相关联的地址,并且其中所述方法进一步包括通过循环链接将所述多个数据块和错误校验数据块的所述地址彼此关联,在循环链接中从块的任何入口能够找到所有其他块。
5.如权利要求4所述的方法,其中,所述地址是逻辑地址。
6.如权利要求4所述的方法,其中,所述地址是物理地址。
7.一种用于控制在多个物理上不同的非易失性存储设备中存储多个数据块的存储控制器,每个非易失性存储设备被独立地写入或从中读取,其中,每个数据块是能够从非易失性存储设备中读取或向该设备写入的最小数据量,所述存储控制器包括:
处理器;以及
非易失性存储器,存储用于由所述处理器执行的编程代码,所述编程代码用于根据多个数据块生成一个或多个错误校验数据块;并且用于在所述多个不同的物理存储设备中存储所述数据的所述多个块和所述一个或多个错误校验数据块,其中数据块在不同的物理存储设备中,并且用于将多个数据块链接在地址映射中。
8.如权利要求7所述的存储控制器,其中,所述用于生成一个或多个错误校验数据块的编程代码根据所述多个数据块生成奇偶校验数据块。
9.如权利要求7所述的存储控制器,进一步包括用于将所述多个数据块的所述地址彼此链接在循环链接中的编程代码,其中从块的任何入口可以找到所有其他块。
10.如权利要求9所述的存储控制器,其中,所述用于对地址进行链接的编程代码对逻辑地址进行链接。
11.如权利要求9所述的存储控制器,其中,所述用于对地址进行链接的编程代码对物理地址进行链接。
12.如权利要求7所述的存储控制器,其中,处理器和所述非易失性存储器在集成电路设备中形成。
13.如权利要求7所述的存储控制器,其中,所述用于由所述处理器执行的编程代码进一步包括编程代码,用于使所述处理器从非易失性存储设备中在期望地址读取数据块;在所述读取步骤中出现错误的情况下,使所述处理器读取具有与期望地址相关联的地址的数据块和一个或多个错误校验数据块;并且用具有与期望地址相关联的地址的数据块和一个或多个错误校验数据块来校正已读取的具有期望地址的数据块。
14.一种存储系统,包括:
多个非易失性存储设备,其中每个非易失性存储设备能够以数据块的方式被独立地写入或从中读取,其中所述数据块是能够从非易失性存储设备中读取或向该设备写入的最小数据量;
控制器,用于控制在所述多个非易失性存储设备中存储多个数据块,所述控制器包括:
处理器;以及
非易失性存储器,存储用于由所述处理器执行的编程代码,所述编程代码用于根据多个数据块生成一个或多个错误校验数据块;并且用于在所述多个不同的物理存储设备中存储所述数据的所述多个块和所述一个或多个错误校验数据块,其中数据块在不同的物理存储设备中,所述编程代码用于将多个数据块链接在地址映射中。
15.如权利要求14所述的存储系统,其中,所述用于生成一个或多个错误校验数据块的编程代码根据所述多个数据块生成奇偶校验数据块。
16.如权利要求14所述的存储系统,其中,所述编程代码用于将所述多个数据块的所述地址彼此链接在循环链接中,其中从块的任何入口可以找到所有其他的块。
17.如权利要求16所述的存储系统,其中,所述用于对地址进行链接的编程代码对逻辑地址进行链接。
18.如权利要求16所述的存储系统,其中,所述用于对地址进行链接的编程代码对物理地址进行链接。
19.如权利要求14所述的存储系统,其中,处理器和所述非易失性存储器在集成电路设备中形成。
20.如权利要求14所述的存储系统,其中,所述用于由所述处理器执行的编程代码进一步包括编程代码,用于使所述处理器从非易失性存储设备中在期望地址读取数据块;在所述读取步骤中出现错误的情况下,使所述处理器读取具有与期望地址相关联的地址的数据块和一个或多个错误校验数据块;并且用具有与期望地址相关联的地址的数据块和一个或多个错误校验数据块来校正已读取的具有期望地址的数据块。
21.一种对具有多个非易失性存储设备的存储系统进行操作的方法,其中,每个非易失性存储设备能够以数据块的方式被独立地写入或从中读取,其中所述数据块是能够从非易失性存储设备中读取或向该设备写入的最小数据量;和用于控制在所述多个非易失性存储设备中存储多个数据块的控制器,所述方法包括:
通过以下方式向所述存储系统写入:
根据多个数据块生成一个或多个错误校验数据块;
将所述多个数据块和所述一个或多个错误校验数据块的地址彼此关联;
在所述多个不同的物理非易失性存储设备中存储所述数据的所述多个块和所述一个或多个错误校验数据块,其中数据块在不同的物理非易失性存储设备中;
通过以下方式从所述存储系统中在期望地址读取:
从非易失性存储设备中读取具有所述期望地址的数据块;
读取具有与所述期望地址相关联的地址的数据块和一个或多个错误校验数据块;以及
用具有与期望地址相关联的地址的数据块和一个或多个错误校验数据块来校正已读取的具有期望地址的数据块。
22.如权利要求21所述的方法,其中,所述生成步骤包括根据所述多个数据块生成奇偶校验数据块。
23.如权利要求21所述的方法,其中,所述关联步骤将所述多个数据块的逻辑地址彼此关联。
24.如权利要求21所述的方法,其中,所述关联步骤将所述多个数据块的物理地址彼此关联。
25.如权利要求21所述的方法,其中,所述读取数据块和一个或多个错误校验数据块的步骤只在从非易失性存储设备中读取具有所述期望地址的数据块的步骤引起错误的情况下执行。
CN201180053770.7A 2010-11-08 2011-10-17 用于在非易失性存储设备中以冗余方式存储数据块的存储控制器和系统 Active CN103229243B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US12/941,926 2010-11-08
US12/941926 2010-11-08
US12/941,926 US9003153B2 (en) 2010-11-08 2010-11-08 Method of storing blocks of data in a plurality of memory devices in a redundant manner, a memory controller and a memory system
PCT/US2011/056572 WO2012064464A1 (en) 2010-11-08 2011-10-17 Memory controller and system for storing blocks of data in non-volatile memory devices in a redundant manner

Publications (2)

Publication Number Publication Date
CN103229243A true CN103229243A (zh) 2013-07-31
CN103229243B CN103229243B (zh) 2016-08-24

Family

ID=46020806

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180053770.7A Active CN103229243B (zh) 2010-11-08 2011-10-17 用于在非易失性存储设备中以冗余方式存储数据块的存储控制器和系统

Country Status (6)

Country Link
US (1) US9003153B2 (zh)
EP (1) EP2638545A4 (zh)
JP (1) JP2013542541A (zh)
KR (1) KR101507669B1 (zh)
CN (1) CN103229243B (zh)
WO (1) WO2012064464A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130049332A (ko) * 2011-11-04 2013-05-14 삼성전자주식회사 메모리 시스템 및 그것의 동작 방법
KR102120825B1 (ko) 2013-01-03 2020-06-09 삼성전자주식회사 메모리 장치 및 이를 포함하는 메모리 시스템
WO2014139390A1 (zh) * 2013-03-11 2014-09-18 北京忆恒创源科技有限公司 存储设备及其访问方法
CN103150261B (zh) * 2013-03-11 2017-02-08 北京忆恒创源科技有限公司 用于同时访问多个固态盘的方法与装置
CN103218270B (zh) * 2013-03-11 2016-08-17 北京忆恒创源科技有限公司 具有多个固态盘的计算机
CN107066202B (zh) * 2013-03-11 2020-07-28 北京忆恒创源科技有限公司 具有多个固态盘的存储设备
KR20170044781A (ko) * 2015-10-15 2017-04-26 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US11494087B2 (en) * 2018-10-31 2022-11-08 Advanced Micro Devices, Inc. Tolerating memory stack failures in multi-stack systems
US11520491B2 (en) * 2021-04-12 2022-12-06 Micron Technology, Inc. Parity protection in non-volatile memory

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020161972A1 (en) * 2001-04-30 2002-10-31 Talagala Nisha D. Data storage array employing block checksums and dynamic striping
US20100005228A1 (en) * 2008-07-07 2010-01-07 Kabushiki Kaisha Toshiba Data control apparatus, storage system, and computer program product
CN101681283A (zh) * 2007-06-28 2010-03-24 国际商业机器公司 存储系统中的错误纠正和检测的系统和方法
US20100172179A1 (en) * 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Spare Block Management of Non-Volatile Memories
WO2010095612A1 (ja) * 2009-02-23 2010-08-26 ソニー株式会社 メモリ装置

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10017A (en) * 1853-09-13 Improved cutter-head for molding-machines
US6480943B1 (en) * 2000-04-29 2002-11-12 Hewlett-Packard Company Memory address interleaving and offset bits for cell interleaving of memory
JP3938842B2 (ja) * 2000-12-04 2007-06-27 富士通株式会社 半導体記憶装置
JP3592640B2 (ja) * 2001-01-09 2004-11-24 株式会社東芝 ディスク制御システムおよびディスク制御方法
US6763424B2 (en) 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
US8200887B2 (en) * 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
US7639542B2 (en) 2006-05-15 2009-12-29 Apple Inc. Maintenance operations for multi-level data storage cells
JP4842719B2 (ja) * 2006-06-28 2011-12-21 株式会社日立製作所 ストレージシステム及びそのデータ保護方法
JP2008287404A (ja) * 2007-05-16 2008-11-27 Hitachi Ltd 読み出しによる非アクセスメモリセルのデータ破壊を検出及び回復する装置、及びその方法
US7877515B2 (en) * 2008-05-21 2011-01-25 Telefonaktiebolaget L M Ericsson (Publ) Identity assignment for software components
JP2010009548A (ja) * 2008-06-30 2010-01-14 Toshiba Corp 記憶装置、制御装置、記憶システム、および記憶方法
JP2010198071A (ja) * 2009-02-23 2010-09-09 Sony Corp メモリ装置
US8819385B2 (en) 2009-04-06 2014-08-26 Densbits Technologies Ltd. Device and method for managing a flash memory
US20100262773A1 (en) 2009-04-08 2010-10-14 Google Inc. Data striping in a flash memory data storage device

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020161972A1 (en) * 2001-04-30 2002-10-31 Talagala Nisha D. Data storage array employing block checksums and dynamic striping
CN101681283A (zh) * 2007-06-28 2010-03-24 国际商业机器公司 存储系统中的错误纠正和检测的系统和方法
US20100005228A1 (en) * 2008-07-07 2010-01-07 Kabushiki Kaisha Toshiba Data control apparatus, storage system, and computer program product
US20100172179A1 (en) * 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Spare Block Management of Non-Volatile Memories
WO2010095612A1 (ja) * 2009-02-23 2010-08-26 ソニー株式会社 メモリ装置

Also Published As

Publication number Publication date
KR101507669B1 (ko) 2015-03-31
EP2638545A1 (en) 2013-09-18
EP2638545A4 (en) 2014-05-28
CN103229243B (zh) 2016-08-24
JP2013542541A (ja) 2013-11-21
WO2012064464A1 (en) 2012-05-18
KR20130086366A (ko) 2013-08-01
US9003153B2 (en) 2015-04-07
US20120117444A1 (en) 2012-05-10

Similar Documents

Publication Publication Date Title
CN103229243A (zh) 用于在非易失性存储设备中以冗余方式存储数据块的存储控制器和系统
EP3800554B1 (en) Storage system managing metadata, host system controlling storage system, and storage system operating method
US10417124B2 (en) Storage system that tracks mapping to a memory module to be detached therefrom
US10496312B2 (en) Method of operating a storage device to compress or decompress data and a data storage system including the storage device
US7984325B2 (en) Storage control device, data recovery device, and storage system
CN105009087B (zh) 用于数据存储系统的数据可靠性方案
EP2375330B1 (en) Semiconductor memory device
US9575844B2 (en) Mass storage device and method of operating the same to back up data stored in volatile memory
US8612836B2 (en) Non-volatile memory device with uncorrectable information region and operation method using the same
CN101889267B (zh) 存储器阵列中的差错校正
US10795768B2 (en) Memory reallocation during raid rebuild
CN110442529B (zh) 可配置的存储器系统及配置和使用该存储器系统的方法
CN106920575B (zh) 数据存储装置及其操作方法
US20160283308A1 (en) Medium defect management method for storage systems requiring an integrated controller
US11340986B1 (en) Host-assisted storage device error correction
KR20210000877A (ko) 메모리 시스템의 입출력 성능을 향상시키는 장치 및 방법
US11461177B2 (en) Data storage device and method of operating the same
CN112860177A (zh) 提高存储器系统的写入吞吐量的设备和方法
US11049581B2 (en) Media error reporting improvements for storage drives
CN109727630A (zh) 存储系统及其操作方法
CN109739777B (zh) 本地与分布式协同设计的可靠闪存存储方法及系统
US11360697B2 (en) Apparatus and method for encoding and decoding operations to protect data stored in a memory system
US20100313101A1 (en) Memory system and computer system
US9547554B2 (en) Mass storage device and method of operating the same to store parity data
US20130124778A1 (en) Method of storing host data and meta data in a nand memory, a memory controller and a memory system

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
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20130731

Assignee: Green core semiconductor (Xiamen) Co., Ltd.

Assignor: Greenliant LLC

Contract record no.: 2018990000016

Denomination of invention: Memory controller and system for storing blocks of data in non-olatile memory devices in redundant manner

Granted publication date: 20160824

License type: Exclusive License

Record date: 20180119

EE01 Entry into force of recordation of patent licensing contract