CN102124527A - 用于检测和替代失效的数据存储器的装置、系统和方法 - Google Patents

用于检测和替代失效的数据存储器的装置、系统和方法 Download PDF

Info

Publication number
CN102124527A
CN102124527A CN2009801280134A CN200980128013A CN102124527A CN 102124527 A CN102124527 A CN 102124527A CN 2009801280134 A CN2009801280134 A CN 2009801280134A CN 200980128013 A CN200980128013 A CN 200980128013A CN 102124527 A CN102124527 A CN 102124527A
Authority
CN
China
Prior art keywords
data
module
ecc
storage
memory device
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.)
Pending
Application number
CN2009801280134A
Other languages
English (en)
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.)
Fusion IO LLC
Original Assignee
Fusion IO 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 Fusion IO LLC filed Critical Fusion IO LLC
Publication of CN102124527A publication Critical patent/CN102124527A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/76Masking faults in memories by using spares or by reconfiguring using address translation or modifications
    • G11C29/765Masking faults in memories by using spares or by reconfiguring using address translation or modifications in solid state disks
    • 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/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
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/109Sector level checksum or ECC, i.e. sector or stripe level checksum or ECC in addition to the RAID parity calculation

Landscapes

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

Abstract

本发明公开了一种用于检测和替代失效的数据存储器的装置、系统和方法。读取模块1002从存储设备902、904的阵列读取数据。该阵列包括存储设备902和存储来自存储设备902的奇偶校验信息的额外存储设备904。ECC模块1004利用纠错码(ECC)确定测试的数据是否存在错误以及错误是否可用ECC修正。测试的数据包括由读取模块1002读取的数据。隔离模块1006响应于ECC模块1004确定错误存在于由读取模块1002读取的数据中且数据是不可修正的而选定存储设备902。隔离模块1006还用替代数据和可用数据替代读取自选定的存储设备902的数据,其中,测试的数据包括结合有替代数据的可用数据。

Description

用于检测和替代失效的数据存储器的装置、系统和方法
相关申请的交叉引用
本申请要求下述申请的优选权:由David Flynn等人于2008年5月16日提交的申请号61/054,055、题为“Apparatus,System,and Method for Detecting and ReplacingFailed Data Storage”美国临时专利申请,通过引用将其并入本文中。
技术领域
本发明涉及数据存储,并且更具体地,涉及检测和替代存储设备的阵列中失效的数据存储器。
背景技术
固态存储器和其他形式的数据存储媒体容易受到固态存储器内的具体区域中的失效或数据错误的影响。在其他例子中,整个设备或芯片发生故障并丧失功能。通常,使用多个存储器设备或存储元件,例如在分布式独立驱动器冗余阵列(RAID)或其他冗余数据系统中。存储器设备的阵列(例如RAID系统)提供了防止数据错误和设备故障的一定程度的保护,这是由于存储在阵列中的奇偶校验数据可被用于替换失效的数据。
然而,当存储在阵列中的数据未与任意具体的物理硬件边界对齐时,确定产生错误的存储器设备或存储元件是困难的。
发明内容
如上所述,显而易见,存在对用于检测和替代失效的数据存储器的装置、系统和方法的需求。有利地是,这种装置、系统和方法单独地测试阵列的存储设备以检测数据错误。
本发明是针对现有技术的现况开发出来的,具体地,是针对现有技术中现有的可用数据存储系统并未完全解决的问题和需要。因此,本发明已经被开发出来以提供一种用于检测和替代失效的数据存储器的装置、系统和方法,克服现有技术中的上述多数或全部缺陷。
用于检测和替代失效的数据存储器的装置具有多个配置为功能性的执行下述必要步骤的模块:从存储设备的阵列读取数据,利用纠错码(ECC)确定测试的数据是否存在一个或多个错误以及错误是否可用ECC修正,从存储设备的阵列选定存储设备和替代读取自选定的存储设备的数据。在描述的实施方式中,这些模块包括读取模块、ECC模块和隔离模块。
读取模块从存储设备的阵列读取数据。该阵列包括两个或多个存储设备和一个或多个额外存储设备。额外存储设备存储来自存储设备的奇偶校验信息。在一种实施方式中,读取模块从逻辑页的至少一部分读取数据。逻辑页遍及存储设备的阵列。存储设备的阵列包括N+P个存储元件的阵列。存储元件的阵列包括N个每个存储ECC组块的一部分的存储元件和P个存储奇偶校验数据的存储元件。ECC组块包括存储的数据和生成自存储的数据的纠错码(ECC),其中ECC遍及存储的数据。P个存储元件存储生成自存储在N个存储元件中的ECC组块的奇偶校验数据。在某些实施方式中,每个存储设备包括非易失性固态存储器。
ECC模块利用纠错码(ECC)确定测试的数据是否存在一个或多个错误以及错误是否可用ECC修正,测试的数据包括由读取模块读取的数据。
隔离模块响应于ECC模块确定错误存在于由读取模块读取的数据中且该错误不可用ECC修正而从存储设备的阵列选定存储设备。隔离模块还利用包括生成自奇偶校验数据的数据(替代数据)和读取自未被选定的存储设备的数据(可用数据)的数据替代读取自选定的存储设备的数据,奇偶校验数据存储在一个或多个额外存储设备上,其中由ECC模块测试的数据还包括结合有替代数据的可用数据。在一种实施方式中,隔离模块响应于ECC模块确定结合有替代数据的可用数据包含不可用ECC修正的错误而选定用于测试的下一存储设备。下一存储设备选自存储设备的阵列。隔离模块选定每个隔离模块用于测试,直到ECC 1004模块确定结合有替代数据的可用数据不包含错误或包含可用ECC修正的错误。
在一种实施方式中,该装置包括引退模块,其响应于ECC模块确定结合有替代数据的可用数据不包含错误或包含可用ECC修正的错误而基于引退策略引退选定的存储设备和选定的存储设备上的一个或多个存储区域中的一个。一个或多个存储区域包括一个或多个错误。存储区域包括选定的存储设备的至少一部分。
在另一种实施方式中,引退模块引退擦除块并响应于下述情况用来自一个或多个额外存储设备的替代数据替代来自擦除块的数据:存储错误恢复模块擦除擦除块,顺序地将额外数据写入擦除块,读取模块顺序地读取额外数据和使用ECC模块和隔离模块确定擦除块包括不可修正的错误,其中通过结合替代数据和可用数据,不可修正的错误是可修正的。
在一种实施方式中,该装置包括存储设备重新配置模块,其响应于ECC模块确定结合有替代数据的可用数据不包含错误或包含可用ECC修正的错误而识别选定的存储设备,从而为将来的操作生成数据以替代来自选定的存储设备的读取数据。
在一种实施方式中,装置包括记录模块,其响应于ECC模块确定结合有替代数据的可用数据不包含错误或包含可用ECC修正的错误,进行下述操作中的一个或多个:记录选定的存储设备的标识;和记录指明包括一个或多个错误的一个或多个存储区域的存储位置数据。该区域包括选定的存储设备的至少一部分。
在一些实施方式中,记录模块记录选定的存储设备的标识而不记录包括具有一个或多个错误的存储区域的存储位置数据。在另一种实施方式中,记录模块记录包括一个或多个错误的一个或多个存储区域,并且还记录指明选定的存储设备中包括一个或多个错误的一个或多个存储区域的存储位置数据。记录模块还响应于读取模块进行的后续读取和使用ECC模块和隔离模块确定具有不可修正的错误的存储区域,记录一个或多个存储区域和额外存储区域,其中结合替代数据和可用数据,不可修正的错误是可修正的。
在又一种实施方式中,后续读取包括由存储区域测试模块初始化的读取和来自读取请求的读取中的一个。在一种实施方式中,存储区域包括下述中的一个或多个:一个或多个ECC组块、一个或多个物理页、一个或多个逻辑页、一个或多个物理擦除块、一个或多个逻辑擦除块、芯片、芯片的一部分、一个或多个芯片块的一部分和一个或多个芯片块。
在一种实施方式中,装置包括存储区域测试模块,其识别选定的存储设备内包括错误的一个或多个存储区域。记录模块还记录包括由存储区域测试模块识别的一个或多个存储区域的存储位置数据。在又一种实施方式中,存储区域测试模块利用后续读取并使用ECC模块和隔离模块确定具有不可修正的错误的存储区域来识别具有一个或多个错误的存储区域,后续读取由读取模块进行,通过结合替代数据和可用数据,不可修正的错误是可修正的。
在一种实施方式中,装置包括区重新配置模块,其为了将来的操作,用来自一个或多个额外存储设备的替代数据替代选定的存储设备中一个或多个存储区域的数据,从而选定的存储设备中一个或多个存储区域外的数据不被替代。在又一种实施方式中,区重新配置模块用来自一个或多个额外存储设备的替代数据替代来自选定的存储设备上的一个或多个存储区域的数据,并用来自相相同的一个或多个额外存储设备的替代数据替代来自相同选定的存储设备或不同选定的存储设备上的一个或多个额外存储区域的数据,一个或多个额外存储区域中的每一个包括一个或多个错误,其中,一个或多个存储区域和一个或多个额外存储区域不共享共同的逻辑页。
在另一种实施方式中,区重新配置模块用来自一个或多个额外存储设备的替代数据替代来自选定的存储设备上的一个或多个存储区域的数据,并用来自一个或多个不同额外存储设备的替代数据替代一个或多个额外存储区域。一个或多个额外存储区域中的每一个包括一个或多个错误,其中,一个或多个存储区域和一个或多个额外存储区域共享共同的逻辑页。
在一种实施方式中,装置包括分析模块,其分析记录以确定下述中的一项或多项:选定的存储设备中具有数据错误的区和错误类型。
在一种实施方式中,装置包括错误存储恢复模块,其响应于ECC模块确定结合有替代数据的可用数据不包含错误或包含可用ECC修正的错误而擦除具有一个或多个错误的擦除块以将擦除块准备用于将来的数据存储。
在一种实施方式中,该装置包括修正数据模块,其响应于ECC模块确定结合有替代数据的可用数据不包含错误或包含可用ECC修正的错误而返回修正的数据。
本发明也提了一种用于检测和替代失效的数据存储器的系统。该系统可被实施为:存储设备的阵列,控制阵列的存储控制器和相对于装置描述的类似模块。具体地,在一种实施方式中,该系统包括读取模块、ECC模块和隔离模块。读取模块从存储设备的阵列读取数据。该阵列包括两个或多个存储设备和一个或多个额外存储设备。额外存储设备存储来自存储设备的奇偶校验信息。
ECC模块利用纠错码(ECC)确定测试的数据是否存在一个或多个错误以及错误是否可用ECC修正,测试的数据包括由读取模块读取的数据。隔离模块响应于ECC模块确定错误存在于由读取模块读取的数据中且数据不可用ECC修正而从存储设备的阵列选定存储设备。隔离模块还利用包括生成自奇偶校验数据的数据(替代数据)和读取自未被选定的存储设备的数据(可用数据)的数据替代读取自选定的存储设备的数据,奇偶校验数据存储在一个或多个额外存储设备上,
本发明还提出了一种包括计算机可读媒体的计算机程序制品,该计算机可读媒体具有计算机可读的程序代码,可执行该程序代码以实现检测和替代失效的数据存储器的操作。该计算机程序制品包括从存储设备的阵列读取数据。该阵列包括两个或多个存储设备和一个或多个额外存储设备。额外存储设备存储来自存储设备的奇偶校验信息。该计算机程序制品还包括利用纠错码(ECC)确定测试的数据是否存在一个或多个错误以及错误是否可用ECC修正,测试的数据包括由读取模块读取的数据。
该计算机程序制品包括响应于ECC模块确定错误存在于数据中且该错误不可用ECC修正而从存储设备的阵列选定存储设备。该计算机程序制品还包括利用包括生成自奇偶校验数据的数据(替代数据)和读取自未被选定的存储设备的数据(可用数据)的数据替代读取自选定的存储设备的数据,奇偶校验数据存储在一个或多个额外存储设备上。该计算机程序制品还包括确定测试的数据是否不包含错误或包含可用ECC修正的错误,测试的数据还包括结合有替代数据的可用数据。
本说明书全文所提到的特征、优点或者类似措辞并不意味着可利用本发明实现的所有的特征和优点应该是或本来就包含在本发明的任一单独的实施方式中。当然,涉及特征和优点的措辞被理解为意味着:与实施方式一起描述的特定的特征、优点或者特点包括在本发明的至少一种实施方式中。因此,在本说明书全文中,关于特征、优点和类似措辞的讨论可(但未必)涉及相同种实施方式。
此外,描述的本发明的特征、优点和特点可采用任何合适的方式与一个或多个实施方式结合。相关领域的技术人员可意识到本发明可在不具备特定实施方式的一个或多个具体特征或优点的情况下被实施。在其他例子中,可意识到附加特征和优点出现在某些实施方式中,而不是在本发明的所有实施方式中都出现。
通过下面的说明和附加的权利要求,本发明的这些特征和优点将变得更加充分的显而易见,或者可以通过按下文所阐述的本发明的实施而获悉。
附图说明
为了更容易地理解本发明的优点,将参考附图中示出的具体实例方式详细说明上文中简述的本发明的实施方式。应当理解,这些附图仅描绘了本发明的典型实施方式,因此不能将其理解为对本发明的范围的限制,将结合附图具体且详细地描述和解释本发明,附图中:
图1是示意性方框图,示出了根据本发明的用于固态存储设备中的数据管理的系统的一种实施方式;
图2是示意性方框图,示出了根据本发明的固态存储设备中的固态存储设备控制器的一种实施方式;
图3是示意性方框图,示出了根据本发明的固态存储设备中的具有写入数据管道和读取数据管道的固态存储控制器的一种实施方式;
图4A是示出了根据本发明的存储元件的阵列的一种实施方式的示意性方框图;
图4B是示出了根据本发明的存储元件的阵列的另一种实施方式的示意性方框图;
图5是示意性框图,示出了根据本发明的增强冗余存储系统中的数据完整性的装置的一种实施方式;
图6是示意性框图,示出了根据本发明的增强冗余存储系统中的数据完整性的装置的另一种实施方式;
图7是示意性流程图,示出了根据本发明的增强冗余存储系统中的数据完整性的方法的一种实施方式;
图8是示意性流程图,示出了根据本发明的增强冗余存储系统中的数据完整性的方法的另一种实施方式;
图9A是示意性框图,示出了根据本发明的检测和替代失效数据存储器的装置的一种实施方式;
图9B是示意性框图,示出了根据本发明的检测和替代失效数据存储器的装置的另一种实施方式;
图10是示意性框图,示出了根据本发明的检测和替代失效数据存储器的装置的又一种实施方式;
图11是示意性框图,示出了根据本发明的检测和替代失效数据存储器的装置的再一种实施方式;
图12是示意性流程图,示出了根据本发明的检测和替代失效数据存储器的方法的一种实施方式;
图13是示意性流程图,示出了根据本发明的检测和替代失效数据存储器的方法的另一种实施方式;
图14是示意性流程图,示出了根据本发明的检测和替代失效数据存储器的方法的又一种实施方式;
图15A是示意性流程图,示出了根据本发明的记录具有错误的存储区域的方法的一种实施方式;
图15B是示意性流程图,示出了根据本发明的记录具有错误的存储区域的方法的另一种实施方式;
图16是示意性流程图,示出了根据本发明的引退擦除块的方法的一种实施方式;
图17是示意性方框图,示出了根据本发明的使用奇偶校验数据重新配置受保护的固态存储元件阵列的装置的一种实施方式;
图18是示意性方框图,示出了根据本发明的使用奇偶校验数据重新配置受保护的固态存储元件阵列的装置的另一种实施方式;
图19是示意性流程图,示出了根据本发明的使用奇偶校验数据重新配置受保护的固态存储元件阵列的方法的一种实施方式;
图20是示意性流程图,示出了根据本发明的用于确定额外不可用存储元件的方法的一种实施方式。
具体实施方式
为了更显著地强调功能性单元运行的独立性,在本说明书中描述的许多功能性单元已被标示为模块。例如,模块可作为硬件电路来实施,所述硬件电路包括自定义VLSI电路或门阵列、成品半导体(例如逻辑芯片、晶体管或其他分立元件)。模块也可在可编程硬件设备(如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备或类似设备)内实施。
模块还可在由不同类型的处理器运行的软件中实施。例如,可执行代码的识别模块可以包括一个或多个计算机指令物理块或逻辑块,该计算机指令可以例如被作为对象、程序或函数来组织。然而,识别模块的可执行文件不必在物理上位于一起,但是可包括存储在不同位置的不同命令,当这些命令在逻辑上连接在一起时,所述命令包括所述模块并实现所述模块的指定目标。
当然,可执行代码的模块可以为一个或许多指令,并且甚至可以分布在若干不同的代码段中、分布在不同的程序中并可分布在多个存储设备中。类似地,可以在此在模块内识别并示出运算数据,并且可以以任何合适的形式体现所述运算数据并在任意合适类型的数据结构中组织所述运算数据。所述运算数据可作为单数据集收集,或者可以分布在不同的位置(包括不同的存储设备),并且可仅作为电信号至少部分地存在于系统或网络中。当模块或模块的部分在软件中实施时,软件部分被存储在一个或多个计算机可读媒体上。
本说明书全文所提到的“一种实施方式”、“实施方式”或类似的措辞意味着与实施方式一起描述的特定的特征、结构或特点包括在本发明的至少一种实施方式中。因此,在本说明书全文中,短语“在一种实施方式中”、“在实施方式中”及类似措辞的出现可(但未必)涉及相同实施方式。
提及的计算机可读媒体可采取任何能够将机器可读指令存储在数字处理设备上的形式。计算机可读媒体可通过下述设备体现:传输线、光盘、数字视频光盘、磁带、伯努利驱动器、磁盘、穿孔卡、闪存、集成电路或其他数字处理装置存储设备。
此外,描述的本发明的特征、结构或特点可以以任何合适的方式合并在一种或多种实施方式中。在下文的说明中,提供了大量的具体细节以全面理解本发明的实施方式,所述具体细节比如编程、软件模块、用户选择、网络事务、数据库查询、数据库结构、硬件模块、硬件电路、硬件芯片等等的实例。然而,相关技术领域的技术人员可认识到:本发明可在不具备一个或多个具体细节的情况下实施,或者本发明可结合其他方法、组件、材料等实施。在其他例子中,为了避免使本发明的多个方面模糊,并没有详细地显示或描述公知的结构、材料或操作。
此处包括的示意性流程图大体上是作为逻辑流程图来列举的。就这点而言,描述的顺序和标记的步骤是本方法的一种实施方式的指示性说明。可设想其他在功能上、逻辑上或效果上与图示方法的一个或多个步骤(或其中部分)等效的步骤和方法。此外,使用的格式和符号被用于解释方法的逻辑步骤并被理解为不限制本方法的范围。尽管在流程图中可使用不同的箭头类型和线条类型,但这些箭头类型和线条类型被理解为不限制相应方法的范围。实际上,一些箭头或其他连接器可用于仅表示方法的逻辑流程。例如,箭头可表示所描述方法的列举步骤之间的未指明间期的等待或监测时期。此外,特定方法的步骤的顺序可以或可以不严格依照所示的对应步骤的顺序。
固态存储系统
图1是示意性框图,示出了根据本发明的用于固态存储设备内的数据管理的系统100的一种实施方式。系统100包括固态存储设备102、固态存储控制器104、写入数据管道106、读取数据管道108、固态存储器110、计算机112、客户端114和计算机网络116,这些装置描述如下。此外,在不同的实施方式中,系统100还包括缩减装置116、检测装置118和重构装置120。
系统100包括至少一个固态存储设备102。在另一种实施方式中,系统100包括两个或多个固态存储设备102。每个固态存储设备102可包括非易失性、固态存储器110,所述非易失性、固态存储器例如闪存、纳米随机存取存储器(“纳米RAM”或者“NRAM”)、磁电阻式RAM(“MRAM”)、动态RAM(“DRAM”)、相变RAM(“PRAM”)、赛道存储器(Racetrack memory)、忆阻存储器(Memristor memory)等等。固态存储设备102被描述成位于通过计算机网络116与客户端114相连的计算机112内。在一种实施方式中,固态存储设备102位于计算机112内部并且采用系统总线连接,所述系统总线例如快速外围组件互连(peripheral componentinterconnect express)(“PCI-e”)总线、串行高级技术附件(“串行ATA”)总线或类似总线。在另一种实施方式中,固态存储设备102位于计算机112外部,并且通过通用串行总线(“USB”)、电气与电子工程师协会(“IEEE”)1394总线(“火线”)或类似总线连接。在其他实施方式中,固态存储设备102采用下述方式与计算机112相连接:PCI express总线、外部电或光总线扩展或者总线网络解决方案,所述总线网络解决方案例如无限带宽或快速PCI高级交换(“PCIe-AS”)或类似技术。
在不同的实施方式中,固态存储设备102可以是双列直插式内存模块(“DIMM”)、子卡或微型模块的形式。在另一种实施方式中,固态存储设备102是位于机架式刀片(rack-mounted blade)内的元件。在另一种实施方式中,固态存储设备102包含在直接集成到高级集成装置(如主板、笔记本电脑、图形处理器)上的封装内。在另一种实施方式中,包括固态存储设备102的单独元件直接集成到高级集成装置上而不经过中间封装。
固态存储设备102包括一个或多个固态存储控制器104,每个固态存储控制器104可包括写入数据管道106和读取数据管道108,而且,每个固态存储设备102包括固态存储器110,这将在下文中结合图2和图3详细说明。
系统100包括一台或多台连接到固态存储设备102的计算机112。计算机112可以是主机、服务器、存储区域网络(“SAN”)的存储控制器、工作站、个人计算机、笔记本电脑、手持式计算机、超级计算机、计算机集群、网络交换机、路由器或设备、数据库或存储设备、数据采集或数据收集系统、诊断系统、测试系统、机器人、便携式电子设备、无线设备或类似设备。在另一种实施方式中,计算机112可以是客户端,并且固态存储设备102自主运行以应答发送自计算机112的数据请求。在这种实施方式中,计算机112和固态存储设备102可采用下列方式连接:计算机网络、系统总线或其他适于在计算机112和自主固态存储设备102之间连接的通信手段。
在一种实施方式中,系统100包括一个或多个客户端114,所述一个或多个客户端114通过一个或多个计算机网络116连接到一台或多台计算机112。客户端114可以是主机、服务器、SAN的存储控制器、工作站、个人计算机、笔记本电脑、手持式计算机、超级计算机、计算机集群、网络交换机、路由器或设备、数据库或存储设备、数据采集或数据收集系统、诊断系统、测试系统、机器人、便携式电子设备、无线设备或类似设备。计算机网络116可包括因特网、广域网(“WAN”)、城域网(“MAN”)、局域网(“LAN”)、令牌环网、无线网络、光纤通道网络、SAN、网络附属存储(“NAS”)、ESCON或类似网络、或者是网络的任意组合。计算机网络116还可包括来自IEEE 802系列网络技术中的网络,如以太网、令牌环网、WiFi、WiMax及类似网络。
计算机网络116可包括服务器、交换机、路由器、电缆、无线电和其他用于促进计算机112和客户端114的网络连接的设备。在一种实施方式中,系统100包括通过计算机网络116进行对等通信的多台计算机112。在另一种实施方式中,系统100包括通过计算机网络116进行对等通信的多个固态存储设备102。本领域技术人员可认识到其他计算机网络116可包括一个或多个计算机网络116以及相关设备,所述相关设备具有在一个或多个客户端114或其他计算机或与一台或多台计算机112相连的一个或多个固态存储设备102之间的单个或冗余连接,所述其他计算机具有一个或多个固态存储设备102。在一种实施方式中,系统100包括两个或多个通过计算机网络118连接到客户端116的固态存储设备102,而不包括计算机112。
系统100包括缩减装置116。在图1中,缩减装置116被描述为位于固态存储设备102中,但也可位于固态控制器104、固态存储器110、计算机108等中。缩减装置116可位于一起,或者可以是分布式的。本领域技术人员会认识到缩减装置116的其他形式。下文更详细地描述了缩减装置116。
系统100还包括检测装置118。在图1中,检测装置118被描述为位于固态存储设备104中,但也可位于固态控制器104、固态存储器106、计算机108等中。检测装置118可位于一起,或者可以是分布式的。本领域技术人员会认识到检测装置118的其他形式。下文更详细地描述了检测装置118。
系统100包括重构装置120。在图1中,重构装置120被描述为位于固态存储设备104中,但也可位于固态控制器104、固态存储器106、计算机108等中。重构装置120可位于一起,或者可以是分布式的。本领域技术人员会认识到重构装置120的其他形式。下文更详细地描述了重构装置120。
固态存储设备
图2是示出了根据本发明的固态存储设备102内的固态存储设备控制器202的一种实施方式201的示意性框图,该固态存储设备控制器202包括写入数据管道106和读取数据管道108。固态存储设备控制器202可包括若干固态存储控制器0-N104a-n,每个固态存储控制器都控制固态存储器110。在描述的实施方式中,示出了两个固态控制器:固态控制器0 104a和固态控制器N 104n,并且每一个控制固态存储器110a-n。在描述的实施方式中,固态存储控制器0 104a控制数据通道,以使得附属固态存储器110a存储数据。固态存储控制器N 104n控制与存储的数据关联的索引元数据通道,并且关联的固态存储器110n存储索引元数据。在替代的实施方式中,固态存储设备控制器202包括具有单个固态存储器110a的单个固态控制器104a。在另一种实施方式中,存在多个固态存储控制器104a-n和关联的固态存储器110a-n。在一种实施方式中,一个或多个固态控制器104a-104n-1(与它们的关联固态存储器110a-110n-1连接)控制数据,而至少一个固态存储控制器104n(与其关联固态存储器110n连接)控制索引元数据。
在一种实施方式中,至少一个固态控制器104是现场可编程门阵列(“FPGA”)并且控制器功能被编入FPGA。在特定的实施方式中,FPGA是
Figure BPA00001297289700111
公司的FPGA。在另一种实施方式中,固态存储控制器104包括专门设计为固态存储控制器104的组件(如专用集成电路(“ASIC”)或自定义逻辑解决方案)。每个固态存储控制器104通常包括写入数据管道106和读取数据管道108,这两个管道被结合图3进一步描述。在另一种实施方式中,至少一个固态存储控制器104由PGA、ASIC和自定义逻辑组件的组合组成。
固态存储器
固态存储器110是非易失性固态存储元件216、218、220的阵列,该阵列布置在内存库214中并且通过双向存储输入/输出(I/O)总线210并行访问。在一种实施方式中,存储I/O总线210能够在任何一个时刻进行单向通信。例如,当将数据写入固态存储器110时,不能从固态存储器110中读取数据。在另一种实施方式中,数据可同时双向地流动。然而,如此处针对数据总线使用的双向指在相同时间数据仅在一个方向流动的数据通路,但是,当在双向数据总线上一个方向流动的数据被阻止时,数据可在所述双向总线上沿相反方向流动。
固态存储元件(如SSS 0.0216a)通常被配置为电路板上的芯片(一个或多个芯片块(die)的封装)或芯片块。正如所描述的那样,固态存储元件(如216a)独立于或半独立于其他固态存储元件(如218a)运行,即使这些元件被一起封装在芯片包、芯片包的堆栈或一些其他封包元件内。正如所描述的,一列固态存储元件216、218、220被指定为内存库214。正如所描述的,可以有“n”个内存库214a-n并且每个内存库可以有“m”个固态存储元件216a-m,218a-m,220a-m,从而在固态存储器110中可以有n×m个固态存储元件216、218、220的阵列。在一种实施方式中,固态存储器110a的每个内存库214(有8个内存库214)包括20个固态存储元件216、218、220,并且,固态存储器110n的每个内存库214(有一个内存库214)包括两个固态存储元件216、218。在一种实施方式中,每个固态存储元件216、218、220由单层单元(“SLC”)设备组成。在另一种实施方式中,每个固态存储元件216、218、220由多层单元(“MLC”)设备组成。
在一种实施方式中,用于多个内存库的固态存储元件被封包在一起,所述多个内存库共享公用存储I/O总线210a行(如216b、218b、220b)。在一种实施方式中,固态存储元件216、218、220的每个芯片可具有一个或多个芯片块,而一个或多个芯片垂直堆叠且每个芯片块可被独立存取。在另一种实施方式中,固态存储元件(如SSS 0.0216a)的可具有在每个芯片块内的一个或多个虚拟芯片块、以及在每个芯片内的一个或多个芯片块、以及垂直堆叠的一个或多个芯片,且每个虚拟芯片块可被独立存取。在再一种实施方式中,固态存储元件SSS 0.0216a可具有在每个芯片块内的一个或多个虚拟芯片块以及在每个芯片内的一个或多个芯片,其中一个或多个芯片块中的一些或全部垂直堆叠,并且每个虚拟芯片块可被独立存取。
在一种实施方式中,每组有四个堆,每堆有两个芯片块垂直堆叠,从而形成8个存储元件(如SSS 0.0-SSS 0.8)216a-220a,每个存储元件位于分离的内存库214a-n内。在另一种实施方式中,20个存储元件(如SSS 0.0-SSS 20.0)216形成逻辑内存库214a,因此8个逻辑内存库中的每一个都具有20个存储元件(如SSS0.0-SSS20.8)216、218、220。通过存储I/O总线210将数据发送到固态存储器110,从而发送到存储元件(SSS 0.0-SSS 0.8)216a、218a、220a的特定组的所有存储元件。存储控制总线212a用于选择特定的内存库(如内存库-0 214a),从而通过连接到所有内存库214的存储I/O总线210接收到的数据仅被写入选定的内存库214a。
在优选实施方式中,存储I/O总线210由一个或多个独立I/O总线(包括210aa-m,210n.a-m的“IIOBa-m”)组成,其中,每一行内的固态存储元件共享独立I/O总线中的一条,所述独立I/O总线中的一条并行访问每个固态存储元件216、218、220,从而使得同时访问所有的内存库214。例如,存储I/O总线210的一个通道可同时访问每个内存库214a-n的第一固态存储元件216a、218a、220a。存储I/O总线210的第二通道可同时访问每个内存库214a-n的第二固态存储元件216b、218b、220b。固态存储元件216、218、220的每一行都被同时访问。在一种实施方式中,其中固态存储元件216、218、220是多层的(物理堆叠的),固态存储元件216、218、220的所有物理层被同时访问。正如此处所使用的,“同时”还包括几乎同时的访问,其中,以略有不同的时间间隔访问设备以避免开关噪声。在这种情况下,同时被用于与连续的或系列的访问相区别,其中,命令和/或数据被单独地相继发送。
通常,采用存储控制总线212独立地选择内存库214a-n。在一种实施方式中,采用芯片选通或芯片选择来选择内存库214。当芯片选择和芯片选通均可用时,存储控制总线212可选择多层固态存储元件216、218、220中的一层。在其他实施方式中,存储控制总线212使用其他命令来单独地选择多层固态存储元件216、218、220中的一层。还可通过控制和地址信息的结合来选择固态存储元件216、218、220,所述控制和地址信息在存储I/O总线210和存储控制总线212上传输。
在一种实施方式中,每个固态存储元件216、218、220被分割成擦除块,并且每个擦除块被分割成页。固态存储元件216、218、220上的擦除块可被称为物理擦除块或PEB。典型的页为2000字节(“2kB”)。在一个实例中,固态存储元件(如SSS 0.0)包括两个寄存器并能编程两页,从而双寄存器固态存储元件216、218、220具有4kB的容量。20个固态存储元件216、218、220的内存库214就会有80kB的相同地址的页访问容量,所述相同地址流出存储I/O总线210的通道。
在固态存储元件216、218、220的内存库214中的这一组80kB大小的页可称为逻辑页或虚拟页。类似地,内存库214a的每个存储元件216a-m的擦除块可被分组以形成逻辑擦除块或虚拟擦除块。在优选实施方式中,当在固态存储元件216、218、220中接收到擦除命令时,擦除位于固态存储元件216、218、220内的页擦除块。然而,在固态存储元件216、218、220内的擦除块、页、平面层或其他逻辑和物理分区的大小和数量预计会随着时间的推移、随着技术的进步而变化,可以预期的是,与新配置一致的许多实施例是可能的并与本文的一般描述相一致。
通常,当将包写入固态存储元件216、218、220内的特定位置时,其中,拟将所述包写入特定页内的位置,所述特定页对应于特定内存库的特定存储元件的特定物理擦除块的页,在发送所述包之后,将物理地址发送在存储I/O总线210上。所述物理地址包含足够的信息,以使得固态存储元件216、218、220将所述包导入页内的指定位置。由于存储元件行(如SSS 0.0-SSS 0.N 216a、218a、220a)上的存储元件通过存储I/O总线210a.a内的合适总线同时被访问,为了到达合适的页并避免将所述数据包写入在存储元件行(SSS 0.0-SSS 0.N 216a、218a、220a)中相似地址的页,存储控制总线212同时选择内存库214a,所述内存库包括具有要将所述数据包写入其内的正确页的固态存储元件SSS 0.0216a。
类似地,在存储I/O总线212上传输的读命令需要在存储控制总线212上的同步命令,以选择单个的内存库214a和内存库214a内的合适页。在优选实施方式中,读命令读取整个页,并且由于在内存库214内存在许多并行的固态存储元件216、218、220,利用读命令读取整个逻辑页。然而,所述读命令可分割为子命令,这将在下文中结合内存库交错进行解释。还可以在写操作中访问逻辑页。
可通过存储I/O总线210发出擦除块擦除命令以擦除擦除块,该擦除块擦除命令具有特定的擦除块地址以擦除特定的擦除块。通常,可通过存储I/O总线210的并行通路发送擦除块擦除命令以擦除逻辑擦除块,每个擦除块擦除命令具有特定的擦除块地址以擦除特定的擦除块。同时,通过存储控制总线212选择特定的内存库(如内存库-0214a)以防止擦除所有的内存库(内存库1-N 214b-n)中的类似地址的擦除块。还可采用存储I/O总线210和存储控制总线212的结合将其他命令发送到特定位置。本领域技术人员会认识到采用双向存储I/O总线210和存储控制总线212选择特定存储位置的其他方法。
在一种实施方式中,将包顺序地写入固态存储器110。例如,包流到存储元件216的内存库214a的存储写入缓冲器,并且当所述缓冲器饱和时,所述包被编程入指定的逻辑页。然后所述包再次填充所述存储写入缓冲器,并且当所述存储缓冲器饱和时,所述包被写入下一逻辑页。所述下一个逻辑页可位于相同内存库214a内或可位于另一个内存库(如214b)内。这个过程(一个逻辑页接一个逻辑页)通常一直持续到逻辑擦除块被填满时。在另一种实施方式中,当这个过程(一个逻辑擦除块接一个逻辑擦除块)持续时,数据流可继续越过逻辑擦除块边界。
在读、修改、写操作中,在读操作中定位并读取与所述对象关联的数据包。已被修改的修改对象的数据段并不写入读取它们的位置。取而代之,修改的数据段再次被转化为数据包并随后被顺序地写入正在被写入的逻辑页中的下一个可用位置。各个数据包的所述对象索引项被修改为指向包含已修改的数据段的包。所述对象索引中用于与未被修改的相同对象关联的数据包的项(或多个项)会包括指向未被修改的数据包的源位置的指针。因此,如果源对象保持不变(例如保持所述对象的先前版本不变),所述源对象将在所述对象索引中具有指向所有与最初写入的一样的数据包的指针。新对象将在所述对象索引中具有指向一些源数据包的指针和指向正在被写入的逻辑页中的修改的数据包的指针。
在复制操作中,所述对象索引包括用于源对象的项,该源对象映射到若干存储在固态存储器110中的包。当复制完拷贝时,创建了新对象并在将所述新对象映射到源包的对象索引中创建新项。还将所述新对象写入固态存储器110,所述固态存储器具有映射到所述对象索引中的新项的新对象地址。新对象包可用于确定在源对象中的包,该包被引用以防在未复制的源对象中发生改变并以防对象索引丢失或损坏。
有利地是,顺序地写入包有助于更平滑地使用固态存储器110并允许固态存储设备控制器202监测固态存储器110内的存储热点和不同逻辑页的层使用状况。相继地写入包还可有助于建立强大、高效的垃圾收集系统,这将在下文中详细描述。本领域技术人员会认识到顺序地存储数据包的其他好处。
固态存储设备控制器
在不同的实施方式中,固态存储设备控制器202还可包括数据总线204、局部总线206、缓冲控制器208、缓冲器0-N 222a-n,主控制器224、直接存储器存取(“DMA”)控制器226、存储器控制器228、动态存储器阵列230、静态随机存储器阵列232、管理控制器234、管理总线236、连接系统总线240的网桥238和杂项逻辑块242,这些将在下文中描述。在其他实施方式中,系统总线240与一个或多个网络接口卡(“NIC”)244相连接,这些网络接口卡中的一些可包括远程DMA(“RDMA”)控制器246、一个或多个中央处理单元(“CPU”)248、一个或多个外部存储器控制器250和关联的外部存储器阵列252、一个或多个存储控制器254对等控制器256和专用处理器258,这些将在下文描述。连接到系统总线240的组件244-258可位于计算内112内或者可以为其他设备。
通常,固态存储控制器104通过存储I/O总线210与固态存储器110进行数据通信。在典型的实施方式中,固态存储器布置在内存库214内,且每个内存库214包括多个并行访问的存储元件216、218、220,存储I/O总线210是多条总线的阵列,每一条总线用于内存库214内的存储元件216、218、220的每一行。正如此处所使用的,术语“存储I/O总线”可指一条存储I/O总线210或多条独立的数据总线204的阵列。在优选实施方式中,访问存储元件的行(如216、218a、220a)的每条存储I/O总线210可包括在存储元件216、218a、220a的行中访问的存储部(如擦除块)的逻辑-物理映射。如果第一存储部失效、部分失效、不可访问或出现一些其他问题时,这种映射(或错误块重映射)允许映射到存储部的物理地址的逻辑地址重映射到不同的存储部。
还可通过系统总线240、网桥238、局部总线206、缓冲器22并最终通过数据总线204将数据从请求设备155传送到固态存储控制器104。数据总线204通常连接到一个或多个由缓冲控制器208控制的缓冲器222a-n。缓冲控制器208通常控制数据从局部总线206传递到缓冲器222并通过数据总线204传递到管道输入缓冲器306和输出缓冲器330。为了解决时钟域差异、防止数据冲突等等,缓冲控制器222通常控制在缓冲器222中暂时存储来自请求设备的数据的方式,并控制此后传送给数据总线204(或相反)的方式。缓冲控制器208通常与主控制器224结合使用以协调数据流。当数据到达时,所述数据会到达系统总线240并通过网桥238传递给局部总线206.
通常,数据在主控制器224和缓冲控制器208的指引下从局部总线206传递给一个或多个数据缓冲器222。然后,所述数据通过固态控制器104从缓冲器222流向数据总线204并到达固态存储器110(如NAND闪存或其他存储媒体)。在优选实施方式中,数据和与所述数据一起到达的关联的带外元数据(“对象元数据”)采用一个或多个数据通道送达,所述数据通道包括一个或多个固态存储控制器104a-104n-1和关联的固态存储器110a-110n-1,而至少一个通道(固态存储控制器104n、固态存储器110n)用于带内元数据(如索引信息和其他固态存储设备102内部生成的元数据)。
局部总线206通常为双向总线或总线组,所述双向总线或总线组允许数据和命令在固态存储设备控制器202内部的设备间通信,也允许命令和数据在固态存储设备102内部的设备和与系统总线240连接的设备244-258之间通信。网桥238有助于在局部总线206和系统总线240之间的通信。本领域技术人员会认识到其他实施方式,如总线240、206、204、210和网桥238的环结构或交换式星形配置和功能。
系统总线240通常是计算机、安装有或连接有固态存储设备102的其他设备的总线。在一种实施方式中,系统总线240可以为PCI-e总线、串行高级技术附件(“串行ATA”)总线、并行ATA或类似总线。在另一种实施方式中,系统总线240为外部总线,例如小型计算机系统接口(“SCSI”)、防火墙、光纤通道、USB、PCIe-As或类似总线。固态存储设备102可被封装为适于置于设备内部或被封装为外部连接设备。
固态存储设备控制器202包括控制固态存储设备102内较高级别功能的主控制器224。在不同的实施方式中,主控制器224通过解释对象请求和其他请求来控制数据流,指导创建索引,以将与数据关联的对象标识符映射到关联的数据或协调的DMA请求等的物理地址。主控制器224完全地或部分地控制此处描述的许多功能。
在一种实施方式中,主控制器224采用嵌入式控制器。在另一种实施方式中,主控制器224采用局部存储器,如动态存储器阵列230(动态随机存取存储器“DRAM”)、静态存储器阵列323(静态随机存取存储器“SRAM”)等。在一种实施方式中,采用主控制器224控制局部存储器。在另一实施方式中,主控制器通过存储器控制器228访问局部存储器。在另一种实施方式中,所述主控制器运行Linux服务器并可支持各种常用服务器接口,如万维网、超文本标记语言(“HTML”)等。在另一种实施方式中,主控制器224采用纳米处理器。可采用可编程或标准逻辑或上述控制器类型的任意组合来构建主控制器224。本领域技术人员会认识到主控制器的许多实施方式。
在一种实施方式中,其中存储设备152/固态存储设备控制器202管理多个数据存储设备/固态存储器110a-n,主控制器224在内部控制器(如固态存储控制器104a-n)之间分配工作负载。例如,主控制器224可分割将要被写入数据存储设备(如固态存储器110a-n)的对象,使得每个附属的数据存储设备存储所述对象的一部分。这种特征是允许更快地存储和访问对象的性能增强。在一种实施方式中,主控制器224利用FPGA实施。在另一种实施方式中,位于主控制器224内的固件可通过管理总线236、经由网络连接到NIC244的系统总线240或其他连接到系统总线240的设备更新。
在一种实施方式中,管理对象的主控制器224仿真块存储,从而使得计算机102或其他连接到存储设备152/固态存储设备102的设备将存储设备152/固态存储设备102视为块存储设备并将数据发送给存储设备152/固态存储设备120中的特定物理地址。然后,主控制器224分割块并像存储对象一样存储数据块。然后,主控制器224将块和与块一起发送的物理地址映射到由主控制器224确定的实际位置。映射存储在对象索引中。通常,对于块仿真来说,在计算机112、客户端114或其他希望将存储设备152/固态存储设备102当成块存储设备来使用的设备的驱动器中提供有块设备应用程序接口(“API”)。
在另一种实施方式中,主控制器224与NIC控制器244和嵌入式RDMA控制器246协同运行以提供数据和命令集的准时RDMA传输。NIC控制器244可隐藏在非透明端口后以使得能够使用自定义的驱动器。此外,客户端114上的驱动器可通过采用标准堆栈API并与NIC 244结合运行的I/O存储驱动器访问计算机网络118。
在一种实施方式中,主控制器224也是独立驱动冗余阵列(“RAID”)控制器。当数据存储设备/固态存储设备120与一个或多个其他数据存储设备/固态存储设备120联网时,主控制器224可以是用于单层RAID、多层RAID、渐进式RAID等的RAID控制器。主控制器224还允许一些对象存储在RAID阵列内而其他对象不通过RAID存储。在另一种实施方式中,主控制器224可以是分布式RAID控制器元件。在另一种实施方式中,主控制器224可包括许多RAID、分布式RAID和另行描述的其他功能。在一种实施方式中,主控制器224控制RAID类结构中的数据存储,其中,奇偶校验信息存储在逻辑页的一个或多个存储元件216、218、220中,奇偶校验信息保护存储在相同逻辑页的其他存储元件216、218、220中的数据。
在一种实施方式中,主控制器224与单个或多个网络管理器(如交换机)协同运行以建立路由、平衡带宽使用率、故障转移等。在另一种实施方式中,主控制器224与集成专用逻辑器件(通过局部总线206)和关联的驱动器软件协同运行。在另一种实施方式中,主控制器224与附属专用处理器258或逻辑器件(通过外部系统总线240)和关联的驱动器软件协同运行。在另一种实施方式中,主控制器224与远程专用逻辑器件(通过计算机网络118)和关联的驱动器软件协同运行。在另一种实施方式中,主控制器224与局部总线206或附属于硬盘驱动器(“HDD”)存储控制器的外部总线协同运行。
在一种实施方式中,主控制器224与一个或多个存储控制器254通信,其中存储设备/固态存储设备102可表现为通过SCSI总线、因特网SCSI(“iSCSI”)、光纤通道等连接的存储设备。同时,存储设备/固态存储设备102可自主地管理对象并可表现为对象文件系统或分布式对象文件系统。还可通过对等控制器256和/或专用处理器258访问主控制器224。
在另一种实施方式中,主控制器224与自主集成管理控制器协同运行以周期性地验证FPGA码和/或控制器软件、在运行(复位)时验证FPGA码和/或在通电(复位)期间验证控制器软件、支持外部复位请求、支持由于检查超时的复位请求,并支持电压、电流、功率、温度及其他环境测量和阈值中断设置。在另一种实施方式中,主控制器224管理垃圾收集以释放擦除块进行再次使用。在另一种实施方式中,主控制器224管理耗损均衡。在另一种实施方式中,主控制器224允许数据存储设备/固态存储设备102被分割成多个逻辑设备并允许基于分区的媒体加密。在又一种实施方式中,主控制器224支持具有高级的、多位的ECC修正的固态存储控制器104。本领域技术人员会认识到存储控制器152内,或更具体地说位于固态存储设备102内的主控制器224的其他特征和功能。
在一种实施方式中,固态存储设备控制器202包括存储器控制器228,该存储器控制器228控制动态随机存储器阵列230和/或静态随机存储器阵列232。如上所述,存储器控制器228可独立于主控制器224使用或与主控制器224集成使用。存储器控制器228通常控制一些类型的易失性存储器,如DRAM(动态随机存储器阵列230)和SRAM(静态随机存储器阵列232)。在其他实例中,存储器控制器228还控制其他存储器类型,如电可擦可编程序只读存储器(“EEPROM”)等。在其他实施方式中,存储器控制器228控制两种或多种存储器类型且存储器控制器228可包括不止一个控制器。通常,存储器控制器228在可行情况下控制尽可能多的SRAM232,并且通过DRAM 230补足SRAM 232。
在一种实施方式中,所述对象索引存储在存储器230、232中并被周期性地卸载到固态存储器110n或其他非易失性存储器的通道内。本领域技术人员会认识到存储器控制器228、动态存储器阵列230和静态存储器阵列232的其他运用和配置。
在一种实施方式中,固态存储设备控制器202包括DMA控制器226,该DMA控制器226控制在下列设备之间的DMA操作:存储设备/固态存储设备102、一个或多个外部存储器控制器250、关联的外部存储器阵列252和CPU 248。应该注意到,外部存储器控制器250和外部存储器阵列252之所以被称为外部是因为它们位于存储设备/固态存储设备102的外部。此外,DMA控制器226还可通过NIC 244和关联的RDMA控制器246控制请求设备的RDMA操作。
在一种实施方式中,固态存储设备控制器202包括连接到管理总线236的管理控制器234。通常,管理控制器234管理存储设备/固态存储设备102的环境指标和状态。管理控制器234可通过管理总线236监测设备温度、风扇转速、电力供应设置等。管理控制器可支持电可擦可编程序只读存储器(“EEPROM”)的读取和编程以存储FPGA码和控制器软件。通常,管理总线236连接到存储设备/固态存储设备102内的不同组件。管理控制器234可通过局部总线206进行警报、中断等的通信或可包括单独的与系统总线240或其他总线的连接。在一种实施方式中,管理总线236为内部集成电路(“I2C”)总线。本领域技术人员会认识到通过管理总线236连接到存储设备/固态存储设备102的组件的管理控制器234的其他相关的功能和运用。
在一种实施方式中,固态存储设备控制器202包括杂项逻辑块242,该杂项逻辑块242可被定制为专用。通常,当使用FPGA或其他可配置控制器配置固态设备控制器202或主控制器224时,可基于特定应用、用户需求、存储需求等而包括定制逻辑块。
数据管道
图3是示出了根据本发明的位于固态存储设备102内的固态存储设备控制器104的一种实施方式300的示意性框图,该固态存储设备控制器具有写入数据管道106和读取数据管道108。实施方式300包括数据总线204、局部总线206和缓冲控制器208,这些设备大体上类似于相对于图2的固态存储设备控制器202描述的设备。所述写入数据管道包括封包器302和纠错码(“ECC”)发生器304。在其他实施方式中,所述写入数据管道包括输入缓冲器306、写入同步缓冲器308、写入程序模块310、压缩模块312、加密模块314、垃圾收集器旁路316(部分位于所述读取数据管道内)、媒体加密模块318和写入缓冲器320。读取数据管道108包括读取同步缓冲器328、ECC纠错模块322、解包器324、对齐模块326和输出缓冲器330。在另一种实施方式中,读取数据管道108可包括媒体解密模块332、垃圾收集器旁路316的一部分、解密模块334、解压缩模块336和读取程序模块338。固态存储控制器104还可包括控制和状态寄存器340和控制队列342、内存库交错控制器344、同步缓冲器346、存储总线控制器348及多路转换器(“MUX”)350。固态控制器104的组件和关联的写入数据管道106和读取数据管道108描述如下。在其他实施方式中,可采用同步固态存储器110并且可不使用同步缓冲器308、328。
写入数据管道
写入数据管道106包括封包器302,该封包器直接地或间接地通过另一写入数据管道106的级接收将要被写入固态存储器的数据或元数据段,并创建一个或多个大小适于固态存储器110的包。所述数据或元数据段通常是对象的一部分,但也可包括整个对象。在另一种实施方式中,所述数据段是数据块的一部分,但也可包括整个数据块。通常,对象接收自计算机112、客户端114或其他计算机或设备并被以流向固态存储设备102或计算机112的数据段的形式传送给固态存储设备102。数据段也可被称为另一名称,如数据包裹,本文所提及的数据段包括对象或数据块的全部或一部分。
每个对象被存为一个或多个包。每个对象可具有一个或多个容器包。每个包包含包头。所述包头可包括包头类型字段。类型字段可包括数据、对象属性、元数据、数据段定界符(多包)、对象结构、对象连接及类似物。所述包头还可包括关于包的大小的信息,如包内的数据的字节数。所述包的长度可由包类型确定。包头可以包括确定包与对象关系的信息。一个实例可能是利用数据包包头的偏移值来确定对象内数据段的位置。本领域技术人员会认识到其他包含在由封包器302添加到数据上的包头内的信息和其他添加到数据包的信息。
每个包包括包头,还可能包括来自所述数据或元数据段的数据。每个包的包头包括用于将包与包所属对象联系起来的相关信息。例如,所述包头可包括对象标识符和偏移值,该偏移值表明了形成数据包的数据段、对象或数据块。所述包头还可包括存储总线控制器348用以存储包的逻辑地址。所述包头还可包括关于包的大小的信息,如包内字节数。所述包头还可包括序列号,当重建数据段或对象时,该序列号识别数据段相对于对象内的其他包所属的位置。所述包头可包括包头类型字段。类型字段可包括数据、对象属性、元数据、数据段定界符(多包)、对象结构、对象连接及类似物。本领域技术人员会认识到其他包含在由封包器302加到数据或元数据上的包头内的信息和其他添加到数据包的信息。
写入数据管道106包括ECC 发生器304,该ECC发生器为一个或多个接收自封包器302的包生成一个或多个纠错码(“ECC”)。ECC发生器304通常采用纠错算法生成ECC,该ECC与包一起存储。与包一起存储的ECC通常用于检测和纠正由于传送和存储而引入数据中的错误。在一种实施方式中,包作为长度为N的未编码块流入ECC 发生器304。计算并添加长度为S的并发位,并作为长度为N+S的编码块输出。长度为N的数据包结合并发位S形成了ECC组块或ECC块。N和S的值依赖于算法的特点,该算法被选择用于实现特定的性能、效率和鲁棒性指标。在优选实施方式中,在ECC组块和包之间并没有固定关系;包可包括不止一个ECC组块;ECC组块可包括不止一个包;且第一包可在ECC组块内的任何位置终止而第二包可始于相同ECC组块内的第一包终止之后的位置。在优选实施方式中,ECC算法不能被动态修改。在优选实施方式中,与数据包一起存储的ECC足够稳定以在两个以上的位内纠正错误。
有利地是,采用允许不止一位的修正或甚至是两位修正的稳健ECC算法允许延长固态存储器110的使用寿命。例如,如果固态存储器110内使用闪存作为存储媒体,闪存在每个擦除周期内可被写入大约100000次不出现错误。这种使用期限可通过稳健ECC算法延长。固态存储设备102载有ECC 发生器304和相应的ECC纠错模块322,固态存储设备102可在其内部纠正错误并具有比采用不甚稳健的ECC算法(如单位错误修正)更长的使用寿命。然而,在其他实施方式中,ECC发生器304可采用不甚稳健的算法并可修正单位或双位错误。在另一种实施方式中,固态存储设备110可包括不甚可靠的存储器以增加容量,所述不甚可靠的存储器例如多级单元(“MLC”)闪存,所述不甚可靠的存储器在没有稳健ECC算法的情况下可能不是充分可靠的。
在一种实施方式中,写入数据管道包括输入缓冲器306,该输入缓冲器接收将要被写入固态存储器110的数据段并存储输入的数据段直到写入数据管道106的下一级,例如封包器302(或其他更复杂写入数据管道106的其他级)准备处理下一个数据段。通过使用适当容量的数据缓冲器,输入缓冲器306通常允许写入数据管道106接收和处理数据段之间存在速率差异。输入缓冲器306还允许数据总线204将数据传送给写入数据管道106的速率大于写入数据管道106能支持的速率,从而提高数据总线204运行的效率。通常,当写入数据管道106不包括输入缓冲器306时,缓冲功能在别处(如固态存储设备102)实现,但所述别处位于写入数据管道106外、位于计算机内,例如当使用远程直接存储器读取(“RMDA”)时,如在网络接口卡(“NIC”)内或其他设备上。
在另一种实施方式中,写入数据管道106还包括写入同步缓冲器308,该写入同步缓冲器308在将包写入固态存储器110之前缓冲接收自ECC发生器304的包。写入同步缓冲器308位于本地时钟域和固态存储时钟域之间的边界上,并且提供缓冲以解决时钟域差异。在其他实施方式中,可采用同步固态存储器110,并可移除同步缓冲器308328。
在一种实施方式中,写入数据管道106还包括媒体加密模块318,该媒体加密模块318直接地或间接地从封包器302接收一个或多个包,并在将包发送给ECC发生器304之前利用对固态存储设备102唯一的加密密钥加密所述一个或多个包。通常,整个包(包括包头)都被加密。在另一种实施方式中,并不加密包头。在本文中,加密密钥被理解为意味着在集成固态存储器110的实施方式外管理的秘密加密密钥,这种实施方式需要加密保护。媒体加密模块318和相应的媒体解密模块332为存储在固态存储器110中的数据提供安全等级。例如,当数据利用媒体加密模块318加密时,如果固态存储器110连接到不同的固态存储控制器104、固态存储设备102或计算机112,通常,在不使用在将数据写入固态存储器110期间使用的相同加密密钥的情况下,不经过合理的努力,则不能读取固态存储器110的内容。
在典型的实施方式中,固态存储设备102不将所述加密密钥存储在非易失性存储器中并且不允许从外部访问所述加密密钥。在初始化期间为固态存储控制器104提供加密密钥。固态存储设备102可使用并存储非秘密性加密临时值,该非秘密性加密临时值与加密密钥结合使用。不同的临时值可用于存储每个包。为了加强加密算法所提供的保护,可利用唯一临时值在多个包之间分割数据段。所述加密密钥可接收自客户端114、计算机112、密钥管理器或其他管理固态存储控制器104使用的加密密钥的设备。在另一种实施方式中,固态存储器110可具有两个或多个分区,并且固态存储控制器104显得就像有两个或多个固态存储控制器104,每一个固态存储控制器104在固态存储器110内的单个分区上运行。在这种实施方式中,唯一的媒体加密密钥可与每个分区一起使用。
在另一种实施方式中,写入数据管道106还包括加密模块314,该加密模块314在将数据段发送给封包器302之前直接地或间接地加密接收自输入缓冲器306的数据或元数据段,利用与数据段一同接收的加密密钥来加密数据段。加密模块314与媒体加密模块318的区别在于:加密模块318用以加密数据的加密密钥对存储在固态存储设备102内的所有数据来说不是共同的,并在对象基础上可能不同,并且加密密钥可不与数据段一起接收(如下所述)。例如,用于将要被加密模块318加密的数据段的加密密钥可与数据段一起被接收,或可作为命令的一部分接收以写入数据段所属的对象。固态存储设备102可为每个与加密密钥结合使用的对象包使用并存储非秘密性加密临时值。不同的临时值可用于存储每个包。为了加强加密算法所提供的保护,可利用唯一临时值在多个包之间分割数据段。在一种实施方式中,媒体加密模块318使用的临时值与加密模块314使用的临时值相同。
加密密钥可接收自客户端114、计算机112、密钥管理器或其他保存用于加密数据段的加密密钥的设备。在一种实施方式中,加密密钥被从固态存储设备102、计算机112、客户端114或其他外部代理中的一个传送到固态存储控制器104,所述外部代理能够执行工业标准方法以安全地传送并保护私有密钥和公共密钥。
在一种实施方式中,加密模块318利用与第一包一起接收的第一加密密钥加密第一包,并利用与第二包一起接收的第二加密密钥加密第二包。在另一种实施方式中,加密模块318利用与第一包一起接收的第一加密密钥加密第一包,而将第二数据包传递给下一级而不加密。有利地是,包括在固态存储设备102的写入数据管道106内的加密模块318允许对象接对象或段接段的数据加密,而不需要单独的文件系统或其他外部系统来追踪不同的用于存储相应对象或数据段的加密密钥。每个请求设备155或相关密钥管理器独立地管理加密密钥,该加密密钥仅用于加密请求设备155发送的对象或数据段。
在另一种实施方式中,写入数据管道106包括压缩模块312,该压缩模块312在将数据段发送给封包器302之前为元数据段压缩数据。压缩模块312通常利用本领域技术人员熟知的压缩例程来压缩数据或元数据段以减少段的的存储大小。例如,如果数据段包括一串512个0位,压缩模块312可用表明512个0位的编码或令牌来替换这512个0位,其中,所述编码被压缩地比512个0位的空间更多。
在一种实施方式中,压缩模块312利用第一压缩例程压缩第一段,而输送第二段且未经压缩。在另一种实施方式中,压缩模块312利用第一压缩例程压缩第一段并利用第二压缩例程压缩第二段。在固态存储设备102内具有这种灵活性是有利的,以便客户端114或其他将数据写入固态存储设备102内的设备每一个都可指定压缩程序,或以便一个设备指定压缩程序而另一个设备指定无压缩。还可根据每个对象类型或对象类基础的默认设置来选择压缩例程。例如,特定对象的第一对象可以能够废除默认压缩例程设置,相同对象类和对象类型的第二对象可采用默认压缩例程,而相同对象类和对象类型的第三对象可不压缩。
在一种实施方式中,写入数据管道106包括垃圾收集器旁路316,该垃圾收集器旁路316接收来自读取数据管道的108(在垃圾收集系统中作为数据旁路的一部分)的数据段。垃圾收集系统通常标记不再有效的包,不再有效的原因通常是由于包被标记为删除或包已被修改且修改过的数据存储在不同的位置。在某一时刻,垃圾收集系统确定存储器的某个区域(例如逻辑擦除块)可被恢复。之所以确定某个区域可被恢复可能是由于:缺乏可用的存储空间、标记为无效的的数据百分比达到阈值、有效数据的合并、存储器的该区域的错误检出率达到阈值或基于数据分布提高性能等。垃圾收集算法可考虑大量的因素以确定何时存储器的区域将要被恢复。
一旦存储器的区域被标记为恢复,该区域内的有效包通常必须被重新存放。垃圾收集器旁路316允许将包读入读取数据管道108,并允许然后将包直接传送给写入数据管道106而不会将包路由出固态存储控制器104。在一种实施方式中,从正被恢复的逻辑擦除块恢复的有效包与来自客户端116的输入包混合。在另一种实施方式中,从正被恢复的逻辑擦除块恢复的有效包存储在一起,而不散布输入的数据包。在优选实施方式中,垃圾收集器旁路316是运行在固态存储设备102内的自主垃圾收集系统的一部分。这允许固态存储设备102管理数据,从而数据系统地传播到整个固态存储器110以提升性能、数据可靠性并避免过度使用和不充分使用固态存储器110的任何一个位置或区域,并且延长了固态存储器110的使用寿命。
垃圾收集器旁路316协调将数据段插入写入数据管道106,数据导管106具有其他由客户端116或其他设备写入的数据段。在描述的实施方式中,垃圾收集器旁路316位于写入数据管道106内的封包器302之前、读取数据管道108内的解包器314之后,但也可位于写入和读取数据管道106、108内的其他位置。可在清洗写入管道106期间使用垃圾收集器旁路316,以填充逻辑页的剩余部分,从而提升固态存储器110内的存储效率并因此降低垃圾收集的频率。
在一种实施方式中,写入数据管道106包括写入缓冲器320,该写入缓冲器320为了高效的写操作而缓冲数据。通常,写入缓冲器320包括用于包的足够容量,以填充固态存储器110内的至少一个逻辑页。这允许写操作将数据的整个页没有中断地发送给固态存储器110。通过将写入数据管道106的写入缓冲器320和读取数据管道108内的缓冲器的容量选为与固态存储器110内存储写入缓冲器的容量同样大小的容量或比固态存储器110内存储写入缓冲器的容量大,写入和读取数据的效率更高,因为单个写入命令可被设计为将数据的整个逻辑页发送给固态存储器110,而不是多条命令。
当填充写入缓冲器320时,固态存储器110可用于其他读操作。这是有利的,原因是:当将数据写入存储写入缓冲器时和注入存储写入缓冲器的数据失速时,具有更小的写入缓冲器的或不具有写入缓冲器的其他固态设备可绑定固态存储器。读操作会被拦截直到整个存储写入缓冲器被填充或被编程。用于不具有写入缓冲器或小写入缓冲器的系统的另一种方法是清洗未满的存储写入缓冲器以使得能进行读取。同样地,由于需要多个写入/编程周期来填充页,因此这种方法的效率低。
对于描述的具有容量比逻辑页容量大的写入缓冲器320的实施方式,单个的写入命令(包括大量子命令)的后续命令可以是单个程序命令,以将来自每个固态存储元件216、218、220中的存储写入缓冲器的数据页传递给每个固态存储元件216、218、220中的指定页。这种技术带来的好处是:减少了部分页编程,众所周知,这降低了数据的可靠性和稳定性并在当缓冲器填充时,为读命令和其他命令释放了目标内存库。
在一种实施方式中,写入缓冲器320为交替缓冲器(ping-pong buffer),其中,所述交替缓冲器的一侧被填充,然后当所述交替缓冲器的另一侧被填充时,所述交替缓冲器的一侧被指定在适当的时间传送数据。在另一种实施方式中,写入缓冲器320包括先进先出(“FIFO”)寄存器,该FIFO寄存器的容量比数据段逻辑页的容量大。本领域技术人员会认识到允许在将数据写入固态存储器110之前存储数据逻辑页的其他写入缓冲器320配置。
在另一种实施方式中,写入缓冲器320的容量比逻辑页小,从而少于一页的信息可被写入固态存储器110内的存储写入缓冲器。在这种实施方式中,为了防止写入数据管道106的失速阻止读操作,采用需要从一个位置移动到另一个位置的垃圾收集系统将数据排队,这个过程是垃圾收集进程的一部分。在写入数据管道106中的数据失速的情况下,可通过垃圾收集器旁路316将所述数据供应给写入缓冲器320并然后将所述数据供应给固态存储器110中的存储写入缓冲器,从而在编程所述数据之前填充逻辑页的页面。这样,写入数据管道106中的数据失速不会使读取自固态存储设备106的数据失速。
在另一种实施方式中,写入数据管道106包括写入程序模块310,该写入程序模块310具有写入数据管道106内的一个或多个用户可定义的功能。写入程序模块310允许用户自定义写入数据管道106。用户可基于特定数据请求或应用自定义写入数据管道106。当固态存储控制器104为FPGA时,用户可相对轻松地编程具有自定义命令和功能的写入数据管道106。用户还可利用写入程序模块310以使ASIC包括自定义功能,然而自定义ASIC可能比使用FPGA时更困难。写入程序模块310可包括缓冲器和旁路机制,以允许第一数据段在写入程序模块310中执行,而第二数据段通过写入数据管道106可继续传送。在另一种实施方式中,写入程序模块310可包括能通过软件编程的处理器内核。
应注意,写入程序模块310被示为位于输入缓冲器306和压缩模块312之间,然而写入程序模块310可位于写入数据管道106内的任何位置,并且可分布在不同的级302-320之间。此外,在不同的、已编程的且独立运行的级302-320之间可分布有多个写入程序模块310。此外,级302-320的顺序可以改变。本领域技术人员会认识到基于特定用户需求的级302-320的顺序的可行改变。
读取数据管道
读取数据管道108包括ECC纠错模块322,该ECC纠错模块322通过使用与请求包中的每个ECC组块一起存储的ECC来确定接收自固态存储器110的请求包的ECC组块中是否存在错误。然后,如果存在任何错误并且所述错误可使用ECC修正,则ECC纠错模块322修正请求包中的任何错误。例如,如果ECC能够探测6位错误但只能修正3位错误,那么ECC纠错模块322修正具有3位错误的请求包ECC组块。ECC纠错模块322通过把出错的位改变为正确的1或0状态来修正出错的位,从而请求数据包与其被写入固态存储器110并且为包生成ECC时一致。
如果ECC纠错模块322确定请求包包含了比ECC能修正的位数多的出错位,则ECC纠错模块322不能修正请求包中毁坏的ECC组块的错误并发送中断。在一种实施方式中,ECC纠错模块322发送中断,该中断带有指示请求包出错的消息。所述消息可包括指出ECC纠错模块322不能修正错误或暗示ECC纠错模块322没有能力修正错误的信息。在另一种实施方式中,ECC纠错模块322与所述中断和/或消息一起发送请求包中毁坏的ECC组块。
在优选的实施方式中,请求包中不能被ECC纠错模块322修正的毁坏的ECC组块或毁坏的ECC组块的一部分由主控制器224读取、修正和返回给ECC纠错模块322,以被读取数据管道108进一步处理。在一种实施方式中,请求包中毁坏的ECC组块或毁坏的ECC组块的一部分被发送给请求数据的设备。请求设备155可修正所述ECC组块或用另一拷贝替换数据(如备份或镜像拷贝),然后可使用请求数据包的替换的数据或将所述替换的数据返回给读取数据管道108。请求设备155可使用出错请求包中的包头信息以识别替换毁坏请求包或替换包所属的对象所需的数据。在另一种优选实施方式中,固态存储控制器104采用一些类型的RAID存储数据并能够恢复毁坏的数据。在另一种实施方式中,ECC纠错模块322发送中断和/或消息,并且接收设备停止与请求数据包关联的读操作。本领域技术人员会认识到ECC纠错模块322确定请求包的一个或多个ECC组块为毁坏的且ECC纠错模块322不能修正错误后采取的其他选择和操作。
读取数据管道108包括解包器324,该解包器324直接地或间接地接收来自ECC修正模块322的请求包的ECC组块,并检查和删除一个或多个包头。解包器324可通过检查包头内的包标识符、数据长度、数据位置等验证包头。在一种实施方式中,所述包头包括散列码,该散列码可用于验证传递给读取数据管道108的包为请求包。解包器324还从封包器302所添加的请求包中删除包头。解包器324可被指定为不对某些包起作用而将这些包未经修改地向前传送。一个实例可以是容器标签,当对象索引重建模块272需要包头信息时,该容器标签在重建进程期间被请求。另外的实例包括传送不同类型的包,这些包预定在固态存储设备102内使用。在另一种实施方式中,解包器324操作可以依赖于包的类型。
读取数据管道326包括对齐模块326,该对齐模块326接收来自解包器324的数据并删除多余的数据。在一种实施方式中,发送给固态存储器110的读命令恢复数据包。请求数据的设备可不需要恢复的数据包内的所有数据,并且对齐模块326删除不需要的数据。如果恢复页内的所有数据都是请求的数据,对齐模块326不删除任何数据。
对齐模块326在将数据段传输到下一级之前以与请求数据段的设备兼容的形式按对象的数据段重新格式化数据。通常,由于数据由读取数据管道108处理,数据段或包的大小在不同级改变。对齐模块326使用接收到的数据以将数据格式化为适于发送给请求设备155的数据段,该数据段还适于连接在一起以形成响应。例如,来自第一数据包的一部分的数据可与来自第二数据包的一部分的数据结合。如果数据段比请求设备请求的数据大,对齐模块326可丢弃不需要的数据。
在一种实施方式中,读取数据管道108包括读取同步缓冲器328,该读取同步缓冲器328在读取数据管道108处理之前缓冲一个或多个读取自固态存储器110的请求包。读取同步缓冲器328位于固态存储时钟域和本地总线时钟域之间的边界上并提供缓冲以解决时钟域差异。
在另一种实施方式中,读取数据管道108包括输出缓冲器330,该输出缓冲器330接收来自对齐模块326的请求包并在数据包传送到所述请求设备前存储该包。输出缓冲器330解决当从读取数据管道108级接收数据段时和当将数据段传送给固态存储控制器104的其他部分或传送给请求设备时之间的差异。输出缓冲器330还允许数据总线204以比读取数据管道108能够支持的速率高的速率接收来自读取数据管道108的数据,以提升数据总线204运行的效率。
在一种实施方式中,读取数据管道108包括媒体解密模块332,该媒体解密模块332接收一个或多个来自ECC纠错模块322的加密过的请求包并在将一个或多个所述请求包发送给解包器324之前利用对于固态存储设备102唯一的加密密钥解密一个或多个所述请求包。通常,媒体解密模块332用以解密数据的加密密钥与媒体加密模块318使用的加密密钥一致。在另一种实施方式中,固态存储器110可具有两个或多个分区且固态存储控制器104表现得好像有两个或多个固态存储控制器104(每个都在固态存储器110内的单独分区内运行)一样。在这种实施方式中,可对每个分区使用唯一的媒体加密密钥。
在另一种实施方式中,读取数据管道108包括解密模块334,该解密模块334在将数据段发送给输出缓冲器330之前解密由解包器324格式化的所述数据段。采用与读请求一起接收的加密密钥解密所述数据段,所述读请求初始化由读取同步缓冲器328接收的请求包的恢复。解密模块334可利用与用于第一包的读请求一起接收的加密密钥解密第一包,然后可利用不同的加密密钥解密第二包或可将第二包未经解密地传送给读取数据管道108的下一级。通常,解密模块334使用与媒体解密模块332用以解密请求数据包的加密密钥不同的加密密钥解密数据段。当包与非秘密性加密临时值一起存储时,该临时值与加密密钥一起使用以解密数据包。加密密钥可接收自客户端114、计算机112、密钥管理器或管理固态存储控制器104使用的加密密钥的其他设备。
在另一种实施方式中,读取数据管道108包括解压缩模块336,该解压缩模块336解压缩由解包器324格式化的数据段。在优选实施方式中,解压缩模块336使用存储在包头和容器标签中的一个或两个中的压缩信息以选择补充例程,压缩模块312使用该补充程序来压缩数据。在另一种实施方式中,解压缩模块336所使用的解压缩例程由请求解压缩数据段的设备确定。在另一种实施方式中,解压缩模块336根据每个对象类型或对象类基础的默认设置选择解压缩例程。第一对象的第一包可以能够废除默认解压缩例程设置,具有相同的对象类和对象类型的第二对象的第二包可采用默认解压缩例程,而具有相同的对象类和对象类型的第三对象的第三包可不经过解压缩。
在另一种实施方式中,读取数据管道108包括读取程序模块338,该读取程序模块338包括一个或多个在读取数据管道108内的用户可定义功能。读取程序模块338具有与写入程序模块310类似的特点并允许用户提供自定义功能给读取数据管道108。读取程序模块338可位于图3中所示的位置,可位于读取数据管道108内的其他位置,或者可包括读取数据管道108内多个位置的多个部分。此外,在读取数据管道108内的多个不同位置可有多个独立运行的读取程序模块338。本领域技术人员会认识到读取数据管道108内的读取程序模块338的其他形式。正如写入数据管道,读取数据管道108的级可重新排序,本领域技术人员会认识到读取数据管道108内的级的其他排列顺序。
固态存储控制器104包括控制和状态寄存器340和相应的控制队列342。控制和状态寄存器340和控制队列342有助于控制并按顺序排列与在写入和读取数据管道106、108内处理的数据相关联的命令和子命令。例如,封包器302中的数据段可具有一个或多个在与ECC发生器关联的控制队列342内的相应控制命令或指令。当数据段被封包时,可在封包器302内执行一些指令或命令中。当从数据段建立的、最新形成的数据包被传送给下一级时,其他命令或指令可通过控制和状态寄存器340直接传送给下一个控制队列342。
可同时将命令或指令加载到控制队列342上以将包转发给写入数据管道106,其中由于每个管道级要执行各自的包,因此每个管道级读取合适的命令或指令。类似地,可同时将命令或指令加载到控制队列342上以从读取数据管道108请求包,其中由于每个管道级要执行各自的包,因此每个管道级读取合适的命令或指示。本领域技术人员会认识到控制和状态寄存器340和控制队列342的其他特征和功能。
固态存储控制器104和/或固态存储设备102还可包括内存库交错控制器344、同步缓冲器346、存储总线控制器348及多路转换器(“MUX”)350。
存储元件配置
图4A是示出了根据本发明的N+P个存储元件402的阵列400的一种实施方式的示意性方框图。存储元件402的阵列400包括N个存储元件402a、402b......402n和存储奇偶校验数据的P个存储元件402p,奇偶校验数据是从存储在N个存储元件402a、402b......402n上的数据生成的。存储奇偶校验数据402p的存储元件402可以是专用的奇偶校验存储元件402,其可仅存储奇偶校验数据。此外,如下所述,奇偶校验数据可以在存储元件402之间轮换。尽管描述了单个奇偶校验存储元件402p,但本领域内普通技术人员会认识到可以使用多个奇偶校验存储元件402p。附加奇偶校验数据可以以不同的方式存储在附加的存储元件402(未示出)上,例如使用设计为在多个失效后允许数据恢复的复杂奇偶校验方案;使用简单奇偶校验,在该简单奇偶校验中,两个或多个存储元件402具有相同奇偶校验数据的拷贝。每个存储元件402可包括设备、芯片、芯片的一部分、芯片块和类似物。
此外,在一种实施方式中,每个存储元件402包括物理擦除块(PEB)404。例如,存储元件1402a包括PEB1404a。物理擦除块通常是位于芯片块、芯片或其他存储元件402上的擦除块。每个PEB 404包括m个物理页406。例如,PEB1包括页0406a、页1410a.....页m412a。每个物理页406a存储数据的一部分和与数据(D)408一起分散的纠错码(ECC)。另外,奇偶校验存储元件402p上的物理页406p、410p......412p存储奇偶校验数据408p。
在一种实施方式中,PEB的群组形成逻辑擦除块(LEB)。LEB 414遍及包括奇偶校验存储元件402p的N+P个存储元件400的阵列。此外,在一种实施方式中,逻辑页(LP)416遍及成一行的、包括奇偶校验存储元件402p上的物理页410p的多个物理页410。在另一种实施方式中,逻辑页416遍及N个存储元件402a-n而不是奇偶校验存储元件402p,从而奇偶校验数据在一个单独的步骤中存储在存储元件402p上,该单独的步骤不同于数据存储在N个存储元件402a-n上的步骤。
在一种实施方式中,ECC是与数据一起分散的块码。此外,数据和ECC可不与任何特定的物理硬件边界对齐。因此,利用ECC的错误纠正不依赖于特定的硬件配置。因此,ECC和对应的数据可形成ECC组块,并且ECC组块可被分割并存储在N个存储元件402a-n中的一个或多个上。ECC组块418通常遍及逻辑页416的多个物理页406的至少一部分,其中,生成自数据408a、408b......408m的数据和ECC散布在不包括奇偶校验存储元件402p上的奇偶校验数据408p的N个存储元件402a-n上。包括奇偶校验数据402p的存储元件可在包括存储元件402的阵列400的存储元件之间动态轮换。在优选实施方式中,LP416包括多个ECC组块418。物理页406可包含ECC组块418的一个或多个数据字节。ECC组块418可遍及物理页406中的多个行,物理页418可包括多个ECC组块418。
图4B是示出了根据本发明的具有分散的奇偶校验的N+P个存储元件450阵列的另一种实施方式的示意性方框图。在所描述的实施方式中,奇偶校验数据408p是分散的。因此,存储奇偶校验数据408p的逻辑页454的存储元件402改变了。例如,LP 454在存储元件3402c上包括用于特定数据列的奇偶校验数据408p,在存储元件2402b上包括用于另一数据列的奇偶校验数据。在这种实施方式中,ECC组块456仍然独立于奇偶校验数据。在另一种实施方式中,奇偶校验信息存储在用于LP454内的所有ECC组块456的相同存储元件中,并且仅在LP 454的边界上的改变。在另一种实施方式中,奇偶校验的位置存储在LEB 452内的相同存储元件402中,并仅在LEB 452的边界上改变。
增强的数据完整性
图5是示意性框图,示出了根据本发明的增强冗余存储系统中的数据完整性的装置500的一种实施方式。装置500包括缩减装置116的一种实施方式,在一种实施方式中,装置500包括接收模块502、数据读取模块504、重新生成模块506和ECC模块508,下文将描述这些模块。Jonathan Thatcher等人于2009年5月18日提交的题为“Apparatus,System,and Method to Increase Data Integrity in a RedundantStorage System”、申请号为____的美国专利申请中也描述了装置500,其通过援引并入本文。
在一种实施方式中,装置500包括接收从逻辑页416中读取数据(请求的数据)的读取请求的接收模块502。逻辑页416遍及N+P个存储元件402的阵列400,并可包括一个或多个ECC组块418。在一种实施方式中,接收模块502接收从多个逻辑页416中读取数据的请求。N和P每个代表多个存储元件402。
N个存储元件402的每一个存储ECC组块418的一部分,P个存储元件402存储奇偶校验数据。如图4A和4B所示,存储奇偶校验数据408p的实际存储元件402可通过页406、410、412、LEB 414或其他存储分区改变。在一个或多个ECC组块418中存储的数据可包括请求的数据。此外,存储在P个存储元件402上的奇偶校验数据生成自存储在每个ECC组块418上的数据。例如,如果来自ECC组块418的数据和ECC丢失或损坏,可利用余下的数据和ECC恢复并还原丢失或损坏的数据和ECC。奇偶校验数据可包括简单XOR奇偶校验信息,或者可以更复杂并如现有技术已知的那样涉及存储奇偶校验数据的多个存储元件402。在一种实施方式中,ECC组块418的存储在N个存储元件402中的每一个上的那部分存储在每个存储元件402的物理页406的至少一部分上。
在一种实施方式中,存储奇偶校验数据的P个的存储元件402包括数据镜像,该数据镜像包括存储在N个存储元件402中的数据的拷贝,而不包括奇偶校验数据。因此,来自具有镜像数据的P个的设备的数据可直接作为替代,而不是在为N个存储元件还原数据之前利用奇偶校验计算处理。在另一种实施方式中,数据镜像包括数据的反相,从而逻辑“1”在镜像中具有对应的逻辑“0”,逻辑“0”在镜像中具有逻辑“1”。
在一种实施方式中,装置500包括数据读取模块504,数据读取模块504从N+P个存储元件402的X个存储元件402中的每一个上的物理页406的至少一部分读取数据(读取的数据),其中X等于N。X表示由数据读取模块504读取的多个存储元件402,并且其足以恢复数据。因此,数据读取模块504可读取阵列400中的存储元件402的子集(X),与存储元件402(N+P)总数相等的子集(X)减少了存储奇偶校验数据(P)的存储元件402的个数。
数据读取模块504响应于接收读取请求的接收模块502读取数据。在一种实施方式中,数据读取模块504为每个读取请求读取X个存储元件402中的每一个上的物理页406的至少一部分。由数据读取模块504读取的物理页406可包括由读取请求所请求的逻辑页416的一部分。
在一种实施方式中,数据读取模块504为每个读取从相同存储元件402读取数据。由数据读取模块504读取的存储元件402可包括ECC组块418的某些部分或包括来自ECC组块418和奇偶校验数据408p的数据的组合。通过从相同存储元件402读取,数据读取模块504最大化了最初未被读取的存储元件402上的数据完整性。未作为读取请求的一部分被读取的存储元件402中的数据包括可在随后被用于修正一个或多个错误的数据。
在一种实施方式中,数据读取模块504从存储ECC组块418的至少一部分的N个存储元件402读取数据并且不从存储奇偶校验数据的P个的存储元件402读取数据。因此,与其他存储元件402相比,存储奇偶校验数据的存储元件402经历了较少的读取,奇偶校验数据可具有较高的数据完整性。相对于非奇偶校验数据存储元件402来说,存储奇偶校验数据的存储元件402可变得更加可靠,这是因为奇偶校验存储元件402平均故障时间变得大于非奇偶校验存储元件402。因此,当奇偶校验数据被需要用于数据替换时,更高质量的数据用作替代。
在一种实施方式中,数据读取模块504确定读取哪些存储元件402。数据读取模块504可确定是否从存储奇偶校验数据的存储元件402上的物理页406读取,是否从不包括奇偶校验数据的物理页406完全读取,或者是否根据用户设定的方式从存储元件402读取,下文将详细描述。通过在每次读取中不读取全部的存储元件402且仅读取那些获取所请求的数据所需要的一定量的存储元件402,对阵列400的全部读取次数下降。因此,存储元件402不会快速失效,而且存储元件402上的数据经受了较少的读取干扰,或者当相邻的位被读取时,存储元件402上的数据中被激活的位也较少。
在一种实施方式中,装置500包括重新生成丢失的数据的重新生成模块506。由于数据读取模块504仅从X个存储元件402的物理页406读取,被数据读取模块504读取的存储元件402中的一个或多个可包括导致并非整个ECC组块418被读取的奇偶校验数据,由此导致了“丢失的数据”。重新生成模块506使用由数据读取模块506读取的奇偶校验数据和读取的数据中剩余的并非奇偶校验数据的部分来重新生成丢失的数据。
重新生成模块506将丢失的数据替换进ECC组块418,并且与读取的数据的剩余部分相结合的该丢失的数据现在包括ECC组块418。在数据读取模块504并不读取奇偶校验数据的例程中,重新生成模块506不需要重新生成丢失的数据。举例来说,重新生成模块506可响应于读取的数据的一部分(包括奇偶校验数据)或从来自读取奇偶校验数据的读取数据模块504的信号重新生成丢失的数据。
在一种实施方式中,装置500包括确定一个或多个ECC组块418是否包括错误的ECC模块508。ECC模块508可使用每个ECC组块418中的ECC来确定ECC组块418中的数据是否包括错误。ECC组块418可包括读取的数据和任何重新生成的丢失的数据。每个ECC组块418中的ECC可被用于检测并修正通过传输和存储而引入ECC组块418中的数据的错误。通常,ECC能够检测特定数量的错误并具其能修正的错误的量小于ECC所能检测到的错误的量。例如,ECC能够检测六位中的错误,但仅能修正位错误中的三位。具有数据组块的包括大量数据的存储系统通常使用具有多位ECC修正的高级ECC。具有高级、多位ECC修正的ECC可检测16位中的错误,并且修改位错误中的8位。ECC模块508通过将错误的位改变成正确的1或0状态而修正错误的位,从而ECC组块418与其被写入固态存储器110中且ECC被生成以用于ECC组块418时一致。
图6是示意性框图,示出了根据本发明的增强冗余存储系统中的数据完整性的装置600的另一种实施方式。装置600包括具有接收模块502、数据读取模块504、重新生成模块506和ECC模块508的轮流的坏块映射装置114,这些模块大体上类似于相对于图5的装置500所描述的模块。在不同实施方式中,装置600也可包括ECC检查模块602、替换模块604、设备错误确定模块606、周期性读取模块608、奇偶校验轮换模块610、读取轮换模块612和ECC修正模块614,将在下文中描述这些模块。
在一种实施方式中,装置600包括ECC检查模块602。如果ECC模块508确定ECC组块418包括错误,则ECC检查模块602确定是否能够利用存储在ECC组块418中的ECC修正错误。能够利用ECC修正的错误的数量由用于生成ECC的ECC算法的鲁棒性来确定。如果ECC组块418中的错误多于能够用存储在ECC组块418中的特定ECC所修正的量,ECC检查模块602确定错误不可修正。ECC组块418具有多于能够用与数据一起存储的ECC所修正的错误,这种状况可以是存储元件402失效的指示。
在一种实施方式中,装置600包括替换模块604。如果ECC检查模块602确定错误不可利用与ECC组块418一起存储的ECC修正,替换模块604从未被数据读取模块504读取的存储元件402读取数据(替换数据)并且使用替换数据和所读取的数据来替换来自有错误的存储元件402的数据,从而生成不包括错误或包括大量随后可用替换ECC组块418中的ECC修正的错误的ECC组块418(替换ECC组块418)。替换模块604读取先前未被数据读取模块504读取的数据,这是因为ECC组块418中的错误不能用ECC组块418中的ECC修正。
在一种实施方式中,未被数据读取模块504读取的存储元件402是存储奇偶校验数据的存储元件402。替换模块604可读取存储奇偶校验数据的存储元件402以生成替换数据。在另一种实施方式中,未被数据读取模块504读取的存储元件402是存储ECC组块418的一部分而不存储奇偶校验数据的存储元件402。替换模块402可读取存储ECC组块418的一部分的存储元件402以将ECC组块418的一部分用作替换数据,或使用替换数据和由数据读取模块504读取的数据(包括奇偶校验数据)以替代有错误的存储元件502上的数据。
在一种实施方式中,装置600包括ECC修正模块614,ECC修正模块614使用ECC和来自ECC组块418的数据修正数据中的错误。如果ECC检查模块602确定错误能够在ECC组块418中修正,则ECC修正模块614可利用ECC组块418中的ECC修正这些错误。
在另一种实施方式中,ECC检查模块602确定ECC组块418中的错误不可修正。在确定具有错误的存储元件402存储奇偶校验数据的情况下,由数据读取模块504读取的来自其他存储元件402的数据加上来自替换存储元件402的ECC组块数据构成了ECC组块418,而且随后ECC修正模块614使用ECC组块418并修正存储在替换ECC组块418中的数据中的任何错误。在不存储奇偶校验数据的存储元件被识别为具有错误的情况下,替换模块604使用替换数据和来自由数据读取模块504读取的数据中的奇偶校验数据以替代确定为具有错误的存储元件上的数据,从而创建替换ECC组块418,在一种实施方式中,ECC检查模块602能够确定具有可修正的错误或不具有错误。如果可修正的错误存在于替换ECC组块的数据中,则ECC修正模块614使用来自替换ECC组块418的数据修正替换ECC组块418中的数据中的错误。
在一种实施方式中,装置600包括设备错误确定模块606,设备错误确定模块606与ECC检查模块602和替换模块604配合工作以确定哪个存储元件402包括具有错误的数据。错误可以是不可用ECC组块418中的ECC修正的错误。不可用ECC修正的错误可以是故障存储元件402的信号,该信号可能需要故障存储元件402的引退。此外,如下文更详细地描述的那样,由于ECC组块418遍及多个存储元件402,错误所源自的存储元件402不能被ECC单独确定。设备错误确定模块606可包括下文更详细描述的检测装置118的一种实施方式。
在另一种实施方式中,ECC组块418内的ECC能够修正特定存储元件402中的错误的大部分位。在这种实施方式中,这种专用的ECC码可直接识别需要作为替换的存储元件402。在该实施方式中,设备错误确定模块606分析修正的数据的输出并根据ECC修正模块614提供的信息确定哪个存储元件402失效。
在一种实施方式中,装置600包括周期性读取模块608,周期性读取模块608周期性地从未被数据读取模块504读取的一个或多个存储元件402读取数据。当存储元件402未被数据读取模块504读取时,这些存储元件402中的潜在缺陷或故障的机率将未被发现地大幅增加。潜在故障保持未被发现,直到缺陷的设备被需要时。通常,潜在故障在具有冗余性和容许一定数量的故障的系统中尤其重要。潜在故障创建了一种情况,在这种情况下,具有假象的明显冗余性,并且随之而来的故障可导致系统失效。相反的,如果故障已经被发现,则故障可能已经在随后的额外故障发生之前通过修复或重新配置而避免。
一般而言,这种潜在故障可用标准的、周期性的读取检测。然而,当数据读取模块504并不是定期地从某些存储元件402读取时,周期性读取模块608可周期性地从这些存储元件402读取数据。
周期性读取模块608可根据预定的或用户配置的方式或根据阈值从较少使用的存储元件402读取。例如,周期性读取模块608可从存储元件402被读取之时起跟踪时间量或跟踪存储替换阵列400全部读取次数(不包括存储元件402的读取)。如果时间量或全部读取次数达到阈值,则周期性读取模块608可读取存储元件402。本领域技术人员会认识到确定周期性读取模块608何时从较少使用的存储元件402读取的其他方法。
在一种实施方式中,装置600包括奇偶校验轮换模块610,奇偶校验轮换模块610改变逻辑页416的哪些存储元件402为每个存储元件402的存储子集存储奇偶校验数据。每个存储子集包括存储元件402的至少一部分,逻辑存储子集包括阵列400的每个存储元件402上的存储子集。存储子集可包括存储元件的物理或逻辑部分,存储元件包括物理页406的一部分、物理页406、物理擦除块404的一部分、物理擦除块404、设备、芯片或一个或多个芯片块。
通过轮换奇偶校验数据,奇偶校验轮换模块610促进了损耗均衡,这是由于一个专用的存储元件402不会持续地用于读取和写入奇偶校验数据。因此,奇偶校验数据可在数据存储的若干级别上轮换。例如,逻辑页416可包括一行物理页406(例如,406a-m,p),其中奇偶校验数据408p存储在第一存储元件402a的物理页406a上。下逻辑页416的下一行物理页410a-m,p中的奇偶校验数据408p可存储在第二存储元件402b的物理页410b上。这种方式可为每个逻辑页416继续。在不同的实施方式中,奇偶校验轮换模块610可按页406、410、412,按PEB404等轮换。
在一种实施方式中,对于逻辑存储子集来说,奇偶校验轮换模块610在存储空间恢复操作之后改变存储奇偶校验数据的存储元件402。存储空间恢复操作可包括将有效数据复制出逻辑存储子集和擦除逻辑存储子集以为存储新写入的数据准备逻辑存储子集。存储空间恢复操作的一个实例是垃圾收集。在这种实施方式中,奇偶校验轮换模块610可指令每个ECC组块418的奇偶校验数据408p存储在LEB 414的一个PEB(如,PEB1404a)中,然后在垃圾收集进程之后轮换到相同LEB 414的不同PEB(如,PEB2404b),在垃圾收集进程中,从LEB 414复制有效数据,LEB414然后重新可用于数据存储。
在一种实施方式中,数据读取模块504在每次读取中从相同存储元件402读取数据,并且奇偶校验轮换模块610改变存储奇偶校验数据的存储元件402。因此,当奇偶校验轮换模块410指令奇偶校验数据408p存储在每次由数据读取模块504读取的存储元件402上时,数据读取模块504将读取奇偶校验数据408p。
在一种实施方式中,数据读取模块504包括读取轮换模块612,读取轮换模块612轮换N+P个存储元件402中数据读取模块504读取数据的X个存储元件402。在一种实施方式中,对于特定的读取而言,N个存储元件402存储数据,单独的P个存储元件402存储奇偶校验数据,数据读取模块504在N个存储ECC组块的存储元件402之间读取N-1个存储元件402,并且读取存储奇偶校验数据408p的存储元件402。对另一读取而言,数据读取模块504可读取存储ECC组块418的N个存储元件402a-n。在不同的读取操作中,读取轮换模块612指令数据读取模块504读取相同逻辑页416的不同存储元件402。读取轮换模块612在N+P个存储元件402之间轮换读取的X个存储元件402,以进行损耗均衡和降低未检测到的潜在故障。本领域技术人员会认识到确定读取轮换模块612如何轮换数据读取模块504读取数据的存储元件402的其他方法。
在一种实施方式中,奇偶校验轮换模块610为每个存储元件402的存储子集改变逻辑页416的存储奇偶校验数据408p的存储元件402,并且读取轮换模块612轮换X个存储元件402中的数据读取模块504读取数据的存储元件402。在某些实施方式中,读取轮换模块612轮换存储元件402,从而数据读取模块504从存储ECC组块418的至少一部分的N个存储元件402读取数据,并不从存储奇偶校验数据的P个存储元件402读取数据,而不考虑存储奇偶校验数据的存储元件402轮换到了哪里。因此,尽管奇偶校验数据在轮换,但奇偶校验数据仍然未被读取。随后,周期性读取模块608可周期性地读取存储奇偶校验数据的存储元件402。本领域技术人员会认识到奇偶校验轮换模块610和读取轮换模块612可交互以轮换被读取的存储元件402的不同方法。
图7是示意性流程图,示出了根据本发明的增强冗余存储系统中的数据完整性的方法700的一种实施方式。方法700开始,在步骤702,接收模块502接收从逻辑页416读取请求的数据的读取请求,逻辑页416遍及N+P个存储元件的阵列400。存储元件的阵列400包括存储ECC组块418的一部分的N个存储元件402和存储奇偶校验数据的P个的存储元件402。
响应于步骤702中接收模块502接收读取请求,在步骤702中,数据读取模块504从N+P个存储元件402的X个存储元件402中的每一个上的物理页406的至少一部分读取数据,其中X等于N。因此,数据读取模块504读取的存储元件402的数量小于存储元件402的总数。
响应于包括奇偶校验数据的读取的数据的一部分,在步骤706中,如果需要,重新生成模块506使用由数据读取模块504读取的奇偶校验数据和读取的数据中不是奇偶校验数据的的剩余部分生成丢失的数据。由重新生成模块506生成的数据用重新生成的数据替换丢失的数据,从而为ECC模块508提供替换ECC组块418。ECC模块508确定ECC组块418(包括读取的数据和任何重新生成的丢失数据)是否具有错误,方法700结束。
图8是示意性流程图,示出了根据本发明的增强冗余存储系统中的数据完整性的方法800的另一种实施方式。方法800开始,在步骤802,接收模块502接收从逻辑页416读取请求的数据的读取请求,逻辑页416遍及N+P个存储元件的阵列400。存储元件的阵列400包括存储ECC组块418的一部分的N个存储元件402和存储奇偶校验数据的P个的存储元件402。此外,奇偶校验轮换模块610可(为阵列400上的每个存储元件402的存储子集)改变逻辑页416的存储奇偶校验数据的存储元件402.
响应于步骤802中接收模块502接收读取请求,在步骤804中,数据读取模块504确定所要读取的X个存储元件402。数据读取模块504可确定为仅读取不存储奇偶校验数据的存储元件402。数据读取模块504(通过读取轮换模块612)可涉及预定的读取方案或算法,从而确定被读取数据的X个存储元件402。
在步骤806,数据读取模块504从N+P个存储元件402的X个存储元件402中的每一个上的物理页406的至少一部分读取数据,其中X等于N。在步骤808,重新生成模块506确定读取的数据的一部分是否包括奇偶校验数据。如果在步骤808中,重新生成模块506确定读取的数据的一部分包括奇偶校验数据,则在步骤810中,重新生成模块506重新生成丢失的数据以补偿ECC组块418未被读取的部分。如果在步骤808中,重新生成模块506确定读取的数据的一部分不包括奇偶校验数据,重新生成模块506不重新生成数据。
在步骤812中,ECC模块508确定ECC组块418是否包括任何错误。ECC组块418包括读取的数据和任何重新生成的丢失数据。如果在步骤812中,ECC模块508确定ECC组块418不包括任何错误,则方法800结束。可选地,如果在步骤812中,ECC模块580确定ECC组块418包括错误,则在步骤814中,ECC检查模块602确定错误是否可利用存储在ECC组块418中的ECC修正。如果在步骤814中,ECC检查模块602确定错误可利用ECC修正,则在步骤816中,ECC模块580利用ECC修改错误,方法800结束。
可选地,如果在步骤814中,ECC检查模块602确定错误不可利用ECC修正,则在步骤818中,设备错误确定模块606从未被数据读取模块504读取的一个或多个存储元件402读取数据。在步骤820中,设备错误确定模块402确定哪个存储元件402导致了错误,从而ECC组块418具有太多可被修正的错误,这将在下文结合检测装置118做详细说明。在步骤822中,替换模块604用替换数据替换导致ECC组块418中的数据不可被修正的存储元件402中的数据,方法800返回,ECC模块508在步骤812中确定替换ECC组块418是否具有错误。在一种实施方式中(未示出),设备错误确定模块606不能确定哪些存储元件402具有错误并发送错误消息。
有利地是,图7和图8中的方法700和800允许仅从需要读取ECC组块418的多个存储元件402中读取数据,从而P个存储元件402通常未被读取,除非需要其在失效、故障等情况下恢复数据。方法700、800延长了固态存储设备102的寿命,并可以通过减少影响读取的数据附近的数据的读取干扰的次数提高存储在设备102中的数据的质量。
检测失效的数据存储器
图9A是示意性框图,示出了根据本发明的检测和替代失效数据存储器的装置900的一种实施方式。装置900包括检测装置118的一种实施方式。该装置可检测数据存储器(包括固态存储器110或任何类型的存储芯片,易失性的或非易失性的)中的失败。固态驱动制造商最近发现固态存储器110(例如NAND闪存)具有高故障率。此外,如上所述,当ECC组块418遍及多个存储元件402时,错误所源自的存储元件402通常不能被ECC单独确定。
装置900位于存储设备902的阵列中故障的存储芯片内或位于芯片(存储设备902)的一部分内,并随后用来自另一存储设备904或存储设备904的一部分的数据作替换。该构造包括存储设备902的阵列,并且有一个或多个额外的设备904。在一种实施方式中,存储设备902、904是固态存储器,并且存储设备902、904可被称为存储元件402。下文中,“存储设备”和“存储元件”可交换使用,并且除非另有说明,存储设备902、904和存储元件402都可以是固态存储器或一些其他类型的易失性或非易失性存储器。每个存储设备902可包括上述的存储元件402。此外,存储设备902a-n的阵列可包括上述的N+P个存储元件的阵列400。具体的,存储元件的阵列400可包括N个存储元件402(每个存储ECC组块418的一部分)和存储奇偶校验数据的P个存储元件402。如上所述,ECC组块418存储数据和根据数据生成的ECC。ECC检查/修正电路910使用存储在ECC组块418中的ECC确定数据中是否存在错误。ECC检查/修正电路可包括上述的设ECC检查模块602和/或ECC修正模块614的一种实施方式。
存储设备902、904可在结构、尺寸等上一致。通常存储设备902、904是存储芯片,但也可以是芯片的群组、DIMM等。存储设备902可包括N个上述的存储元件402。奇偶校验信息存储在额外存储设备904中。此外,额外存储设备904可包括上述的存储奇偶校验数据的P个存储元件402。如果单个额外存储设备904a被包括,额外存储设备904a通常可包括从存储设备902a-n的阵列生成的简单奇偶校验信息。如果使用多个额外存储设备904a-m,多维奇偶校验或其他更复杂的奇偶校验信息可存储在额外存储设备904a-m中。在另一种实施方式中,多个额外存储设备904a-m存储简单奇偶校验数据。例如,每个额外存储设备904可包括相同的奇偶校验数据。存储设备902、904可以是易失性存储器,例如静态随机存取存储器(静态RAM)、动态RAM(DRAM)或类似存储器,或者可以是非易失性存储器,例如闪存、纳米随机存取存储器(纳米RAM或NRAM)、磁阻RAM(MRAM)、相变RAM(PRAM)、赛道存储器(racetrack memory)、忆阻存储器等。
通常通过对阵列中存储设备902a-n的输入的数据进行异或(XOR)运算,生成存储在额外存储设备904上的奇偶校验信息。当数据读取自阵列902、904时,通常并行地读取,从而数据的一部分读取自阵列中的每个存储设备902。为简便起见,该实施方式读取存储设备902、904的所有数据。如上所述,为了增加数据完整性,这种设计所读取存储设备的量小于全部存储设备的量。
ECC(不包括奇偶校验信息)被用于确定读取自存储设备102的数据是否有效。ECC可位于多个ECC组块418中,其中每个ECC组块418中的ECC对应于ECC组块418中的数据。此外,ECC组块418可遍及多个存储设备902a-n。如果ECC被ECC检查/修正电路910用于确定数据有效或数据是否包括可利用ECC修正的错误,则有效数据或修正的数据被装置900放行,而不采取进一步的操作。
然而,如果ECC检查/修正电路910发现数据无效且错误的量大于ECC所能修正的量,类似于上述相对于缩减装置116描述的情况,一个或多个存储设备902a-n的全部或一部分有很大可能性发生故障。在这种情况下,来自额外存储设备904的奇偶校验信息作为每个存储设备902a-n的替代,一次替换一个以发现哪个存储设备902未起作用或包括大量的错误数据。数据恢复906包括允许奇偶校验信息被替代的XOR逻辑,从而存储设备902的被测试的有效数据被源于额外存储设备904的数据所替代。
在一个实例中,四个存储设备902a-d在一个阵列中,存储有数据A、B、C和D,还有一个具有奇偶校验数据P的额外存储设备904a。为了生成奇偶校验信息P,数据被异或运算:P=A^B^C^D(未示出,^表示异或运算),P存储在额外存储设备904a中。举例来说,假设第三存储设备902c损坏,从而数据A、B、C、D不能利用ECC修正。损坏的数据C’将被读取,并且ECC检查/修正电路910将使用ECC确定数据A、B、C’、D为损坏且不能被修正。当数据A、B、C’、D与存储在每个存储设备902上的ECC组块418的一部分一起存储,从而ECC组块418遍及存储设备902a-n时,装置900可能不能够单独从ECC检测出第三存储设备902c的全部或一部分已经失效或具有太多要被修正的错误。
在图9A所描述的实施方式中,MUX 912和XOR逻辑914与每个存储设备902包括在一起。每个MUX 912能够从其存储设备902或从关联的XOR 914选择数据。每个XOR 914结合读取的数据和来自数据恢复906的奇偶校验数据。数据恢复906包括与读取的数据异或的奇偶校验信息。读取的数据通常被缓冲908,从而如果存储设备902、904中存在错误,读取的数据不会被改变。MUX 912和XOR914可包括重新生成模块506和/或替换模块604的一部分或全部的一种实施方式。
使存储设备902、904取消选定的控制信号未被示出。当未被选定时,未被读取的存储设备902的关联MUX 912将同时被选定,并且丢失的数据将由数据恢复906重新生成。
装置900通过选定来自XOR 914的数据而不是读取自存储设备902的数据来测试每个存储设备902a-n。该进程为每个存储设备902a-n重复,直到ECC组块被确定为可修正。装置900可通过控制器916控制数据和存储设备902选择。控制器916可控制选定/取消选定数据的逻辑并反复以独立故障的存储设备902或存储设备902的一部分。此外,控制器916可包括设备错误确定模块606、奇偶校验轮换模块610和读取轮换模块612的一种实施方式。
继续该实例,如果第一存储设备902a首先被测试,第一MUX 912a选定XOR
914a数据。在这个实例中,数据恢复906将是A^B^C’^D^P。代入P所表示的,数据恢复906为A^B^C’^D^A^B^C^D=(A^A)^(B^B)^(C’^C)^(D^D)=0^0^C^C’^0=C^C’。其与来自第一存储设备的读取的数据相异或:A^C^C’。由于C和C’不取消,结果是A’,并且该结果将被损坏,ECC910仍然将检测不可修正的错误。该进程为每个存储设备902重复。
当第三存储设备902c被测试时,损坏的数据C’被从第三存储设备902c读取并与其他存储设备902a、902b、902d相异或:数据恢复906=A^B^C’^D^P。代入P所表示的:数据恢复906=A^B^C’^D^A^B^C^D=(A^A)^(B^B)^(C’^C)^(D^D)。与其自身异或的数据为0,因此,XOR=0^0^C’^C^0=C’^C。如果第三MUX 912c选定第三XOR 914c数据而不是直接来自第三存储设备902c的数据,MUX 912c上的数据是第三存储设备902c的数据C’和数据恢复XOR 906的输出的异或:C’^(C’^C)=C。因此,正确的数据C替换了无效数据C’。在这点上,ECC检查/修正电路910通常确定数据有效或可修正。
一旦数据被确定为有效或可修正,在数据被确定为可用ECC修正之时所选定的存储设备902c就被确定为失效的存储设备902c。在这点上,用于失效的存储设备902c的MUX 912c被永久地选定,并且具有奇偶校验信息的额外存储设备904a被用于替代失效的存储设备902c为失效的存储设备902c的至少一个区域提供数据。该区域可以是页、多页、PEB、多个PEB、芯片块、芯片或存储设备902c内的任何其他分区,或者甚至可以包括整个存储设备902c。奇偶校验数据仍然存储在额外存储设备902c上,而且上述进程被用于获取正确的数据C,正确的数据C被用于替代来自额外存储设备904a的损坏的数据C’。
在上述实例中,当装置900确定存储设备902c包括错误的数据时,来自存储设备902c的具有损坏的数据C’的数据可被从额外存储设备904a获取的被修正的数据替换。该进程修正错误的数据,其用一个存储器模块904替换另一个存储设备902。如下所述,本发明也包括替换存储设备902内的存储位置的任何子集(区域),以及通过分析如上所述的错误的存储器位置而匹配来自额外存储设备904的数据。
例如,一旦装置900检测到不可用ECC 910修正的错误、隔离错误并修复数据,装置900可记录错误记录,错误记录包含诸如存储器位置的信息。每次发生错误,错误信息被记录并随后被分析,从而将错误与特定页、块、逻辑擦除块等隔离。一旦存储设备902中的区域被确定,该装置可隔离那个区域并用来自额外存储设备904的数据替换,直到具有失效区域的存储设备902被替换。下文更详细地描述了错误记录。
本发明预先考虑到完成下述步骤的许多其他的方法:检测不可修正的错误、使用奇偶校验数据以选择性地隔离错误和随后使用额外存储设备904中的数据修正错误的数据。尽管在图9A和9B中描述的实例表明8位数据总线,但本发明也预料到了更宽或更窄的其他阵列。
图9B是示意性框图,示出了根据本发明的检测和替代失效数据存储器的装置950的另一种实施方式。在装置950的实施方式中,MUX 912上方的XOR 914被移去,来自数据恢复906的数据被直接输入到MUX 912。第二组MUX装置952接收来自存储设备902和来自接地以提供逻辑0的数据线的一组数据。
当隔离错误时,一组MUX(例如MUX 952a、MUX 912a)被设置为不选定来自适当的存储设备(例如存储设备902a)的数据。再次返回到上述实例,阵列包括数据A,B,C,D和奇偶校验P,奇偶校验以与图9A相同的方式生成(例如,P=A^B^C^D)。再次假设第三存储设备902c被损坏,因此,C’被读取。如果第一存储设备902a被选定为隔离,存储设备902a下方的第一MUX952a将读取所有的0。随后,数据恢复块将异或数据和奇偶校验:数据恢复906=0^B^C’^D^P=0^B^C’^D^A^B^C^D=(0^A)^(B^B)^(C’^C)^(D^D)=A^0^C’^C^0=A^C’^C=A’。随后,这被反馈到第二MUX112a,ECC检查/修正电路910将继续检测不可修正的错误。
当第三存储设备902c被选定时,数据恢复输出为A^B^0^D^P=A^B^0^D^A^B^C^D=(A^A)^(B^B)^(0^C)^(D^D)=0^0^0^C^0=C。然后,第三存储设备902c线上的第二MUX 112c选定数据恢复906的输出,其为C,从而ECC检查/修正电路910通常检测有效数据A、B、C和D。错误可随后被记录用于分析或垃圾收集,或者第三存储设备902c可被选定,而来自额外存储设备904的数据可被用于提供修正的数据。
本领域技术人员会认识到将实现下述步骤的其他电路:检测不可用ECC检查/修正电路910和存储在ECC组块418中的ECC修正的错误、通过顺序地选定存储设备902隔离错误并使用奇偶校验数据以用被修正的数据做替换、以及随后一旦存储设备902被选定且ECC检查/修正电路910确定数据为有效或可修正,则修正错误。此外,此处所述的本发明预料到下述情况:多个存储设备902发生故障或包括坏数据,并且复杂的替换方式与来自多个额外存储设备904的数据一起使用以定位发生故障的存储设备902。在这种实施方式中,来自多个额外存储设备904的奇偶校验数据被用于创建数据,从而以轮换方案替换相应数量的存储设备902的数据,直到存储设备902被发现,从而ECC组块418中的任何错误均可被修正。
图10是示意性框图,示出了根据本发明的检测和替代失效数据存储器的装置1000的又一种实施方式。装置1000包括检测装置118的一种实施方式,并且在一种实施方式中,包括读取模块1002、ECC模块1004和隔离模块1006,下文将描述这些模块。
在一种实施方式中,装置100包括从存储设备的阵列中读取数据的读取模块1002。阵列包括两个或多个存储设备902和一个或多个存储来自存储设备902的奇偶校验信息的额外存储设备904。在一些实施方式中,读取模块1002从逻辑页416的至少一部分读取数据,逻辑页416遍及存储设备902、904的阵列。此外,存储设备902、904的阵列可包括N+P个存储元件402的阵列。如上所述,存储元件402的阵列400可包括N个存储元件402(每个存储ECC组块418的一部分)和存储奇偶校验数据的P个存储元件402。
如下文相对于隔离模块1006更详细地描述的,来自选定为测试的存储设备的数据不会被使用但会被替代。因此,在一种实施方式中,读取模块1002从N+P个存储元件402的X个存储元件402中的每一个上的物理页406的至少一部分读取,其中X等于(N+P)-1。未被读取的存储元件402被选定为测试下的存储元件402。
在一种实施方式中,装置1000包括ECC模块1004,ECC模块1004使用纠错码(ECC)确定测试的数据中是否存在一个或多个错误,和错误是否可用ECC修正。测试的数据可包括由读取模块1002读取的数据。在一些实施方式中,ECC与由读取模块1002读取的数据一起存储在ECC组块418中。数据被用于生成与数据一起存储在ECC组块418中的ECC。因此,测试数据可包括ECC组块418,例如由读取模块1002读取的ECC组块418,或由隔离模块1006生成的ECC组块418,如下文更详细地描述的。
在一种实施方式中,1000包括隔离模块1006,隔离模块1006响应于ECC模块1004确定错误存在于由读取模块1002读取的数据中且错误不可用ECC修正而从存储设备的阵列中选定存储设备902。存在于数据中的不可修正的错误可以是发生故障的存储设备902/存储元件402的指示。
隔离模块1006用下述数据替代读取自选定的存储设备902的数据:包括从存储在一个或多个额外存储设备904上的奇偶校验数据生成的数据的数据(替代数据)和读取自未被选定的存储设备902的数据(有效数据)。在一种实施方式中,隔离模块1006使用异或逻辑以用数据替换选定的正被测试的存储设备902,该数据源于替换数据和有效数据。
在另一种实施方式中,ECC组块418内的ECC能够修正特定存储设备902内出错的所有位的大部分。在这种实施方式中,专用的ECC码可直接识别产生错误的存储设备902。在该实施方式中,隔离模块1006分析修正的数据的输出并从ECC模块1004提供的信息确定哪些存储设备902失效。
另外,隔离模块1006通过存储设备902迭代,以找出不可修正的错误所源自的存储设备902。具体地,如下文详细所述的,隔离模块1006响应于选定的存储设备902被检测为不具有不可修正的错误而选定下一个存储设备902以测试。下一个存储设备902可包括存储设备以在取消选定被测试过的存储设备902之后选定和测试。因此,隔离模块1006选定存储设备902中的每一个用于测试,直到找出错误的存储设备902或所有的存储设备902被测试。在一种实施方式中,如果所有的存储设备902已被选定和测试而没有检测到故障的存储设备902,隔离模块1006返回或报告错误。在这种情况下,多个存储设备902可发生错误,并且可能需要用户进一步的操作。在一种实施方式中,隔离模块1006可存储先前发生故障的存储设备902的标识,从而隔离模块1006随后不必迭代这些存储设备902。隔离模块1006可包括在图9A和图9B中描述的控制器916。
ECC模块1004确定测试数据(现在是结合有替代数据的可用数据)是否不包括错误或包括可用ECC修正的错误。结合有替代数据的可用数据不包括错误或包括可用ECC修正的错误的事实可表明:数据被替代的选定的存储设备902是错误所源自的存储设备。
一旦数据被确定为有效或可修正,在数据被确定为可被ECC修正时被选定的存储设备902随后被装置1000确定为是失效的存储设备,并在下文中被称为“选定的出错的存储设备902”。如果结合有替代数据的可用数据是有效的且不包含错误,选定的出错的存储设备902(隔离模块1006为其替代数据)是出错的原因。类似地,如果余下的仅有的错误是可利用ECC修正的,不可修正的错误通常源于选定的存储设备902(隔离模块1006为其替代数据)。
注意到图9A和9B示出了存储数据的具体存储设备902和存储奇偶校验数据的具体存储设备904,如上文中相对于缩减装置116所描述的,奇偶校验数据可按页、擦除块等轮换,从而对于一页来说,额外存储设备904可位于阵列的尾部,对于下一页来说,额外存储设备904可以是阵列中的第一个设备,依此类推。存储奇偶校验数据的额外存储设备904可基于奇偶校验轮换方案变换,如图9A和9B中的电路或类似电路可允许阵列中的任何设备存储用于替换另一存储设备902的奇偶校验数据。
图11是示意性框图,示出了根据本发明的检测和替代失效数据存储器的装置1100的再一种实施方式。装置1100包括读取模块1002、ECC模块1004和隔离模块1006,这些模块基本上类似于相对于图10的装置1000描述的模块。在不同的实施方式中,装置1100还可包括引退模块1102、存储设备重新配置模块1104、记录模块1106、存储区域测试模块1108、区重新配置模块1110、分析模块1112、错误存储恢复模块1114、修正数据模块1116和报告模块1118,下文将描述这些模块。
在一种实施方式中,装置1100包括引退模块1102。响应于ECC模块1004确定选定的出错的存储设备,引退模块1102引退选定的存储设备902或选定的存储设备902上的一个或多个存储区域。存储区域(包括存储设备902上的物理或逻辑区域,并包括选定的存储设备的至少一部分)如果包括一个或多个错误,则可以被引退。存储区域可包括一个或多个ECC组块418的一部分、一个或多个物理页406、一个或多个逻辑页416、一个或多个物理擦除块404、一个或多个逻辑擦除块414、芯片、芯片的一部分、一个或多个芯片块的一部分、一个或多芯片块或者存储设备902/存储元件402的任何其他部分。
引退模块1102可通过永久地或暂时地将引退的存储器脱离标准使用来引退选定的存储设备902或存储区域(引退的存储器)。在一种实施方式中,引退模块1102通过向存储控制器发出引退的存储器不再可用于标准读取和写入的信号来引退存储器。随后,引退的存储器可被进一步测试,然后被永久的关闭或基于引退策略被跟踪。引退模块1102甚至可擦除引退的存储器并允许其上的继续操作,同时监测为进一步的错误监测引退的存储器。本领域技术人员会认识到引退存储器的其他方法。
引退模块1102可使引退决定基于引退策略。在一种实施方式中,引退策略包括确定何时引退引退的存储器、引退的存储器怎样引退及类似问题的规则、用户偏好和逻辑。引退策略可包括引退的标准、引退的不同级别和引退的手段。例如,引退策略可指明:在一定数量的错误或错误的级别或严重程度之后,引退的存储器暂时地停止标准操作并被标记为测试协议。在另一个实例中,引退策略可指明在一定数量的错误之后,将警报发送给用户。
在某些实施方式中,引退模块1102可在错误之后标记存储区域,但随后允许存储区域被存储空间恢复操作(例如垃圾收集)恢复。例如,具有错误的擦除块可被擦除,并且后续的数据可被写入擦除块。如果用ECC模块1004和隔离模块1006在擦除块中识别了额外的错误,擦除块可永久的引退。
在一种实施方式中,引退策略为引退的存储器指明宏引退手段或“自上而下”的方法。具体地,宏引退可假设初始区是有缺陷的,初始区包括比实际缺陷大的存储区。初始区可包括选定的出错的存储设备902或整个设备上的存储区域。随后,宏引退可利用进一步测试将初始区减少到实际有缺陷的存储区域。在一种实施方式中,宏引退指明当选定的存储设备902出错时,整个存储设备902被引退。在这点上,引退模块1102可实施进一步地测试以确定存储设备902上的错误的范围。引退模块1102还可将错误隔离在存储设备902上的存储区域之外。存储设备902上未被错误影响的存储区域可重新投入标准使用。因此,在宏引退下,引退的存储区域是集中的并通过额外测试被隔离。
在另一种实施方式中,引退策略为引退的存储器指明微引退手段或“自下而上”的方法。具体地,微引退可始于已知的或假设为有缺陷的初始区,并扩大初始区以包括有缺陷的其他存储区域。在一种实施方式中,在微引退下,仅仅是具有错误的存储分区被初始引退,而不是整个存储设备902。引退模块1102可进一步为额外错误测试或监测相邻存储区域上的标准读取。如果发现额外错误,引退模块1102可进一步引退存储设备902上的额外存储区域或增加引退的存储区域的尺寸。如下文所描述的,引退模块1102可与其他模块协同工作以将错误定位和监测存储设备902。
在一种实施方式中,装置1100包括存储设备重新配置模块1104,存储设备重新配置模块1104识别选定的出错的存储设备,从而数据被生成以为了将来的操作替代来自选定的存储设备902的读取数据。如上所述,选定的出错的存储设备可以是响应于ECC模块1004确定结合有替代数据的可用数据不包含错误或包含可用ECC修正的错误而选定的存储设备。存储设备重新配置模块1104可与引退模块1102协同工作以永久地或暂时地用结合有替代的奇偶校验数据的可用数据(如图9A和9B所述)替代来自引退的存储设备902的数据。
在一种实施方式中,装置1100包括记录模块1106。响应于选定的出错的存储设备,记录模块记录选定的存储设备902的标识并且/或者记录指明包括一个或多个错误的一个或多个存储区域的存储器位置数据。每次发生错误,错误信息可被记录模块1106记录并随后被分析以将错误与特定存储区域(如页、块、擦除块等)隔离。一旦存储设备902中的存储区域被确定,装置1100可隔离那个区,并用来自额外存储设备904的数据替换,直到选定的出错的存储设备被替代。
记录模块1106可与引退模块1102协同运行以跟踪存储设备902或存储区域中的错误。例如,根据宏引退,引退模块1102可记录选定的出错的存储设备的标识,而不记录包括具有一个或多个错误的存储区域的存储器位置数据,因为引退模块1102在隔离错误之前始于较大的区。如下所述,记录模块1106还可为被存储区域测试模块1108进行的进一步的存储区域测试识别的一个或多个存储区域记录存储器位置数据,从而缩窄已知的出错的存储设备902的区域。
在另一种实施方式中,取代于记录选定的出错的存储设备的标识,记录模块1106根据微引退记录存储设备902上包括的一个或多个错误的一个或多个存储区域。因此,整个存储设备902可不被记录为出错,而仅包括错误的存储区域被记录为出错。此外,响应于读取模块1002的后续读取以及用ECC模块1004和隔离模块1006确定具有可通过结合替代数据和可用数据而被修正的不可修正错误的额外存储区域,记录模块1106也可记录存储位置数据,该存储位置数据指明包括选定的存储设备902中的一个或多个错误的一个或多个额外存储区域。后续的读取可包括由存储区域测试模块1108初始化,以将特定的额外存储区域作为目标来进行如下所述的测试。此外,后续的读取可包括来自读取请求的标准读取。
在一种实施方式中,装置1100包括存储区域测试模块1108,存储区域测试模块1108识别选定的存储设备902内包括错误的一个或多个存储区域。存储区域测试模块1108可测试存储设备902中被引退模块1102根据宏引退记录的存储区域。因此,存储区域测试模块1108可进一步通过利用读取模块1002进行的后续读取和使用ECC模块1004和隔离模块1006替代测试的存储区域上的数据来识别具有一个或多个错误的存储区域而隔离存储设备902上的包括错误的区,并为测试下的具体存储区域确定具有通过结合替代数据和可用数据(如上所述)而可被修正的不可修正的错误的存储区域。
例如,记录模块1102根据宏引退记录出错的存储设备902的标识,引退模块1102通过将选定的存储设备902移出标准使用引退选定的出错的存储设备902并指派选定的存储设备902用于进一步测试,并且存储区域测试模块1108识别存储设备902中出错的存储区域。存储区域测试模块1108可将特定的存储区域作为目标以用于测试,例如邻近出错的存储区域的存储区域。此外,存储区域测试模块1108可扩大或压缩测试下的或已知的包括错误的存储区域。
在一种实施方式中,根据宏引退,当记录模块1102已经识别了出错的存储区域时,存储区域测试模块1108可测试额外的存储区域以确定存储设备902中错误的范围。由于数据错误可局限于存储设备902的某些区,存储区域测试模块1108可测试邻近错误的存储区域的额外存储区域。本领域技术人员会认识到存储区域测试模块1108可测试额外的存储区域的不同方法。
在一种实施方式中,装置1100包括区重新配置模块1110,区重新配置模块1110用来自一个或多个额外存储设备的替代数据替代选定的存储设备902中的一个或多个存储区域中的数据以用于将来的操作,从而选定的存储设备902中的一个或多个存储区域之外的数据不被替代。例如,根据微引退,仅这些出错的存储区域可被初始引退。因此,区重新配置模块1110可替代出错的存储区域中的数据,而不替代其余存储设备902中的数据。在这种方式下,整个存储设备902在没有进一步测试的情况下是备用引退。
在某些实施方式中,区重新配置模块1110可使用相同额外存储设备904替代一些存储区域上的数据。区重新配置模块1110用来自额外存储设备904的替代数据替代来自选定的存储设备902上存储区域的数据,并且如果存储区域和额外存储区域不共享共同的逻辑页416,替代来自相同额外存储设备904的额外存储区的数据。额外存储区域可驻留在相同选定的存储设备902上或不同的选定的存储设备902上。
例如,装置1100可确定第一存储设备902a上的区X出错、第二存储设备902b上的区Y出错、第三存储设备902c上的区Z出错,等等。只要区(X、Y、Z等)不重叠存储器地址(例如,区X中的地址不与区Y、Z等中的地址相同),区重新配置模块1110可用修正的数据替代第一存储设备902a的区X的数据、用修正的数据替代第二存储设备902b上区Y的数据、以及用来自相同额外存储设备的修正的数据替代第三存储设备902c的区Z的数据。
如果存储区域和额外存储区域共享共同的逻辑页416或共同的存储器地址,区重新配置模块1110可用来自额外存储设备904的替代数据替代来自一个或多个存储区域的数据,并替代一个或多个不同的额外存储设备904的额外存储区域中的数据。
在一种实施方式中,装置1100包括分析记录以确定选定的存储设备902中具有数据错误的区的分析模块1112,存储设备902a-n中具有错误的区的大小可通过分析记录的错误独立地确定。此外,分析模块1112也可利用故障中的更多详情确定错误类型。例如,不可修正的错误可被检测,进一步的分析可表明:错误是由于擦除失败、程序失败、读取失败、诊断失败、POST失败和记录。
在一种实施方式中,装置1100包括错误存储恢复模块1114,错误存储恢复模块1114响应于选定的出错的存储设备擦除具有一个或多个错误的擦除块以将该擦除块准备好用于将来的数据存储。在闪存中,程序干扰(写入干扰)和读取干扰能够导致暂时的错误。对于特定的存储位置而言,当存储位置周围的数据被编程或读取时,数据线对其他编程/读取的位置的接近程度能够干扰存储位置中的数据。这种错误可以是通过在垃圾收集(存储空间恢复)操作中刷新存储位置而解决的暂时性错误。
在垃圾收集操作中,通常,有效数据从擦除块或存储器的其他区移动到另一区,擦除块被擦除。对于闪存而言,这可涉及将“1”写入擦除块中的所有存储单元,这种操作为单元充电。随后,擦除块可被重新使用,新数据可被存储在擦除块中。然后,装置1100可继续记录错误,而且如果出错的存储位置在垃圾收集操作之前再次出错,存储位置可被引退并被标记为永久不可用,而对应于额外存储设备904中存储位置的数据可被用于替换失效的存储位置。
在一种实施方式中,装置1100包括修正数据模块1116,修正数据模块1116响应于选定的出错的存储设备而返回修正的数据。在一种实施方式中,当隔离模块1006已经识别了选定的出错的存储设备902时,修正的数据是通过隔离模块1006结合有可用数据的替代数据。如上所述,当结合有替代数据的可用数据不包含错误或包含可用ECC修正的错误时,选定的出错的存储设备902被识别。
在一种实施方式中,装置1100包括响应于选定的出错的存储设备而报告错误的报告模块1118。报告模块1118可报告错误以警告用户潜在的存储设备902故障或帮助错误诊断。此外,报告模块1118也可报告潜在的用户可选定为引退的存储设备902或存储区域。
图12是示意性流程图,示出了根据本发明的检测和替换失效数据存储器的方法1200的一种实施方式。方法1200开始,在步骤1202,读取模块1002从具有两个或多个存储设备902和一个或多个额外存储设备904(存储来自存储设备902的奇偶校验信息)的存储设备的阵列读取数据。
在步骤1204,ECC模块1004确定测试的数据中是否存在一个或多个错误,和错误是否可用ECC修正。测试的数据包括由读取模块1002读取的数据。ECC可与由读取模块1002读取的数据一起存储在ECC组块418中。响应于ECC模块1004确定错误存在于读取模块1002读取的数据中而且错误不可用ECC修正,在步骤1206,隔离模块1006从存储设备的阵列中选定存储设备902。
在步骤1208,隔离模块1006用替代数据或根据存储在一个或多个额外存储设备904上的奇偶校验数据生成的数据替代读取自选定的存储设备902的数据。隔离模块1006使替代数据结合可用数据或读取自未被选定的存储设备902的数据。在步骤1208中,ECC模块1004为选定的存储设备902确定结合有替代数据的可用数据不包含错误或包含可用ECC修正的错误,方法1200结束。
图13是示意性流程图,示出了根据本发明的检测和替换失效数据存储器的方法1300的另一种实施方式。方法1300示出了隔离模块1006迭代每个存储设备902。方法1300开始,在步骤1302,ECC模块1004检测读取的数据中的错误。在步骤1304,方法1300选定存储设备902a并迭代以确定哪个存储设备902是坏的。在这个实例中,变量设置为0(i=0)。在步骤1306,读取模块1002随后从存储设备902读取数据,除了被测试的存储设备902具有选定的MUX 912以从数据恢复906读取数据。对于未选定的存储设备902来说,未修正的数据在步骤1308被读取。在初次通过方法1300时,i=0,第一存储设备902a被选定。对于选定的存储设备902a,未被修正的数据成为与数据恢复906的输出(如C’C)相异或的读取的数据(如A)。然后,在步骤1312,ECC模块1004确定数据是否可修正。
如果数据可修正,则在步骤1316,隔离模块1006返回选定的设备(i),方法1300完成。如果ECC模块1004在步骤1312确定数据仍然不可修正,则在步骤1314,隔离模块1006增加变量i。然后在步骤1318,隔离模块1006确定变量i是否达到最大值,达到最大值表明所有的存储设备902已经被测试,如果隔离模块1006在步骤1318确定变量i达到最大值,则隔离模块1006在步骤1320返回失效的消息,这表明不止一个存储设备902出错,或一些其他的错误不能被装置900修正。
如果隔离模块1006在步骤1318确定变量i未达到最大值,隔离模块1006返回并测试下一存储设备902。方法1300继续,直到装置900在步骤1312确定错误可修正或者所有的存储设备902都已被测试,装置在步骤1320返回失败信息。
方法1300仅仅是本发明的一种实施方式,本领域技术人员会认识到选择性地测试存储设备以用来自额外存储设备904的数据替代存储设备902的数据的其他方法。
图14是示意性流程图,示出了根据本发明的检测和替换失效数据存储器的方法1400的又一种实施方式。方法1400涉及分析错误以确定怎样将存储设备分段或分区以修正错误。图13的方法1300首先执行,装置1000隔离错误并返回哪个存储设备902出错和存储位置信息。方法1400开始,由记录模块1106记录的错误数据被分析模块1112分析以确定发生了哪种类型的错误。例如,在步骤1402中,另一ECC910不可修正的错误可被检测,并且进一步的分析可指示错误是由于擦除失败1404、程序失败1406、读取失败1408、诊断失败1410、POST失败1412等。记录的错误数据可被用于将错误与存储设备902的特定区隔离。
基于分析,在步骤1414,方法1400将特定的坏的存储设备识别为最小,但分析也可以能够隔离存储设备902内坏的特定区。在步骤1416,方法1400确定坏的存储设备902是否已经被隔离。如果隔离,则在步骤1418,存储设备重新配置模块1104重新配置装置900、装置950,以用来自额外存储设备904的数据替换坏的存储设备902,在步骤1420,当第一次检测到错误时,方法1400可重试操作。如果未隔离,则在步骤1422,方法1400返回失败消息。
图15A是示意性流程图,示出了根据本发明的记录具有错误的存储区域的方法1500的一种实施方式。方法1500是根据宏引退的一种实施方式,并且发生在错误在选定的存储设备902上被检测出之后。方法1500开始,在步骤1502,记录模块1106记录选定的存储设备902的标识。在另一种实施方式中,记录模块1106记录初始区,该初始区包括存储设备902上具有错误的区的扩展集。
在步骤1504,存储区域测试模块1108识别选定的存储设备902中包括错误的存储区域。在另一种实施方式中,存储区域测试模块1108识别初始区(具有错误的区的扩展集)内包括错误的存储区域。
在步骤1506,记录模块1106为由存储区域测试模块1108识别的一个或多个存储区域记录存储位置数据。此外,在步骤1508,存储区域测试模块1108利用后续的读取(由读取模块1002进行)和使用ECC模块1004和隔离模块1006确定具有不可修正的错误的存储区域(如上所述)来识别具有一个或多个错误的存储区域,方法1500结束。
存储区域测试模块1108可继续将存储设备902内的存储区域作为整体或更大的存储区域测试,以隔离错误。在这种方式下,测试的区在自上而下的方法中重复的聚集。此外,引退模块1102可将存储设备从标准操作引退,而方法1500根据引退策略进行。
图15B是示意性流程图,示出了根据本发明的记录具有错误的存储区域的方法1550的另一种实施方式。方法1550是根据宏引退的一种实施方式,并且发生在错误在选定的存储设备902上被检测出之后。方法1550开始,在步骤1552中,记录模块1106记录包括一个或多个错误的一个或多个存储区域。在步骤1554中,ECC模块1004和隔离模块1006利用上述的后续的读取识别具有错误的额外存储区域。后续的读取可包括由存储区域测试模块1108初始化以将特定的存储区域(例如相邻的存储区域)作为目标的读取,从而扩大已知的包括错误的存储区域。后续的读取也可是来自读取请求的标准读取,例如,如果引退模块1102未将存储区域从标准操作中引退。
在步骤1556中,记录模块1106记录表明一个或多个具有错误的额外存储区域的存储位置数据,方法1550结束。存储区域测试模块1108可继续测试存储区域以扩张存储区域或测试下的存储区域。在这种方式下,测试下的区或已知为包括错误的区被重复地扩大以按照自下而上的方法定位额外的错误。此外,引退模块1102可将存储区域从标准操作中引退,同时方法1550根据引退策略进行。
图16是示意性流程图,示出了根据本发明的引退擦除块的方法1600的一种实施方式。方法1600开始,在步骤1602,ECC模块1004和隔离模块1006如上所述地检测存储设备902中的错误。在步骤1604,记录模块1106根据上述的引退策略记录错误。在步骤1606,引退模块1102根据引退策略引退存储设备902或存储设备902内的存储区域。如下所述,在步骤1608中,重新配置装置120可随后配置存储设备902以将数据写入未出错的区,方法1600结束。
重新配置存储元件
图17是示意性方框图,示出了根据本发明的使用奇偶校验数据重新配置受保护的固态存储元件402的阵列的装置1700的一种实施方式。装置1700包括重新配置装置120的一种实施方式,并且在一种实施方式中,包括存储元件错误模块1702、重新配置数据读取模块1704、数据重新生成模块1706、数据重新配置模块1708和新配置存储模块1710,下文将描述这些模块。装置1700在由David Flynn等人于2009年5月18日提交的题为“Apparatus,System,and Method for Reconfiguring an Array toOperate with Less Storage Elements”、申请号为____的美国专利申请中也有所描述,通过引用将该申请并入本文中。
在一种实施方式中,装置1700包括存储元件错误模块1702,存储元件错误模块1702确定一个或多个存储元件402不可用于存储数据(不可用存储元件)。存储元件402可驻留在三个或更多个存储元件402的阵列中。此外,阵列中的每个存储元件402可包括非易失性固态存储器110。类似于上述的存储元件的阵列400,数据被写入阵列400的逻辑页416,逻辑页416包括阵列400的每个存储元件402上的页。注意到不可用存储元件402可仅具有不可用的存储元件402的区域,例如页、擦除块等,从而存储元件402可用于区域而不是不可用的区域。下述情况是有利的:在服务中保持尽可能大的容量以提升性能和延长存储元件402的可用寿命。
阵列400可包括N个存储第一ECC组块418的存储元件402和存储生成自第一ECC组块418的第一奇偶校验数据的P个存储元件402。N个存储元件402可存储多个ECC组块418,P个存储元件402可存储生成自多个ECC组块408的奇偶校验数据。第一ECC组块418的一部分存储在N个存储元件402中的每一个上。ECC组块418包括数据(存储的数据)和生成自存储的数据的ECC,第一ECC组块418的一部分存储在N个存储元件402中的每一个上。在一种实施方式中,阵列400的存储元件402中的每一个包括一个或多个附加点,数据顺序地存储在存储元件的阵列400上。
数据被顺序地存储,从而数据被写入附加点。顺序存储与随机存取存储的区别在于:在读取-修改-写入操作中,数据从一个位置被读取、被修正,然后被写入当前写入数据的附加点中。一旦数据被写入,附加点移动到新写入数据的尾端并为写入新附加点的下一数据准备好。
在一种实施方式中,不可用存储元件402是具有错误的存储元件402或被如上所述的检测装置118识别或引退的存储元件402。在某些实施方式中,存储元件错误模块1702通过确定第一ECC组块418中的错误不可用与第一ECC组块418一起存储的ECC修正来确定存储元件402出错或不可用。存储元件错误模块1702可利用多个ECC组块418来确定存储元件402出错。不可用ECC修正的错误可表示,在读取和写入干扰之外,存储元件402存在问题。此外,用户可具体指定不可用的存储元件402。
在一种实施方式中,存储元件错误模块1702通过确定正在起作用的存储元件402(正在失效的存储元件)达到替代阈值来确定存储元件402出错。例如,存储元件402可仍然起作用,但可能正在失效、性能上退化或注定要失效。替代阈值可以是存储元件402的状况的指示符。替代阈值可包括存储在正在失效的存储元件402中的数据的错误率、存储在正在失效的存储元件402中的数据的错误次数、正在失效的存储元件402上的读取和/或写入操作的次数、正在失效的存储元件402中的环境条件及类似指示。
在存储元件错误模块1702确定一个或多个不可用存储元件402之后,存储元件错误模块1702可确定一个或多个额外不可用存储元件402,如下文详细描述的。
在一种实施方式中,装置1700包括重新配置数据读取模块1704,重新配置数据读取模块1704从除不可用存储元件402之外的存储元件402读取数据(可用数据)。在一种实施方式中,可用数据包括来自逻辑页416的数据。重新配置数据读取模块1704读取可用数据且并不读取来自正在失效的存储元件上的数据,从而获取的数据不具有错误,或者获取的数据具有一些可用与数据一起存储的ECC修正的错误。通常,相比于从正在失效的存储元件使用的数据,可用数据包含错误的机率较低。此外,如果不可用存储元件402是非功能性,不可用存储元件402甚至可不被重新配置数据读取模块1704访问。
在一种实施方式中,重新配置数据读取模块1704运行在后台进程(例如存储空间恢复操作)中。存储空间恢复操作的一个实例包括垃圾收集进程。通过在后台进程中运行,重新配置数据读取模块1704可将对固态存储设备102的操作的妨碍最小化。
在一种实施方式中,装置1700包括数据重新生成模块1706。响应于包括第一奇偶校验数据的可用数据,数据重新生成模块1706使用第一奇偶校验数据从第一ECC组块418重新生成丢失的数据(丢失数据)。在另一种实施方式中,响应于包括ECC组块418的可用数据,数据重新生成模块1706重新生成第一奇偶校验数据。第一奇偶校验数据可包括简单XOR奇偶校验信息或者可以更复杂,涉及多个存储奇偶校验数据的存储元件402。第一奇偶校验数据可以由检测装置118提供。同样地,数据重新生成模块1706可利用XOR操作(如图9A和9B描述的)或其他类似的本领域已知的奇偶校验操作重新生成丢失数据。数据重新生成模块1706可利用用于ECC组块418的奇偶校验数据为多个ECC组块418重新生成丢失数据。在一种实施方式中,数据重新生成模块1706运行在后台进程(例如存储空间恢复操作)中。
在一种实施方式中,装置1700包括数据重新配置模块1708,数据重新配置模块1708从可用数据、丢失数据和由存储控制器接收的数据(新数据)中的一个或多个生成第二ECC。第二ECC和用于创造第二ECC的数据一起形成了第二ECC组块418。此外,数据重新配置模块1708也可从第二ECC组块418生成第二奇偶校验数据以保护第二ECC组块418中的数据。
在一种实施方式中,数据重新配置模块1708使新数据与第一ECC组块418分离,从而第一ECC与第二ECC一致,而且第一ECC组块418与第二ECC组块418一致。在另一种实施方式中,新数据与来自第一ECC组块418的数据混合,从而数据重新配置模块1708为新数据和来自第一ECC组块418的一部分数据生成第二ECC。在一种实施方式中,数据重新配置模块1708运行在后台进程中,后台进程例如存储空间恢复操作(垃圾收集)。
在一种实施方式中,装置1700包括新配置模块1710,新配置模块1710将第二ECC组块418的至少一部分和关联的第二奇偶校验数据存储在(N+P)-Z个存储元件402上,其中,1≤Z≤P。因此第二ECC组块418和任何额外的重新配置的ECC组块418被重新配置为存储在具有较少存储元件402的阵列中。Z是不可用存储元件402的数量。
在简单情况下,Z=1,从而新配置存储模块1710将第二ECC组块418存储在比存储第一ECC组块418存储的设备少一个的设备上。每次存储元件402或存储元件402的区域变得不同用时,重新配置装置120重新配置存储在存储元件402的阵列400中的数据,从而新配置存储模块1710将数据存储在少一个的存储元件402上,至少为了正被引退的区域。在一种实施方式中,对于某些存储区域而言,ECC组块418存储在N+P个存储元件402中,在其他存储区域中,其他ECC组块418存储在(N+P)-1个存储区域中,在其他存储区域中,其他ECC组块418存储在(N+P)-2个存储区域中,等等。
在一种实施方式中,阵列400的存储元件402中的每一个包括一个或多个附加点,数据顺序地存储在存储元件的阵列400上。在这种实施方式中,新配置存储模块1710将第二ECC组块418和关联的奇偶校验数据存(N+P)-Z个存储元件402中的每一个的附加点上。每个附加点被移动到在恰好在移动附加点之前存储的数据的尾端。
当新配置存储模块1710存储产生第二ECC组块418和第二奇偶校验数据时,可利用少一个的奇偶校验设备或少一个的数据设备重新配置数据。例如,如果第一ECC组块418存储在N个存储元件402中并利用两个或多个存储元件402(即,PP≥2)上的奇偶校验数据保护,则新配置存储模块1710能够生成第二ECC组块418和第二奇偶校验数据,从而第二ECC组块418仍然存储在N个存储元件402上,但奇偶校验信息存储在P-1个存储元件402上。在这个实例中,阵列400的性能不会受到影响,但数据的奇偶校验保护将少一层并且能容许的存储元件402失效也将少一次。
在P=1或奇偶校验保护保持不变的情况下,新配置存储模块1710能够生成第二ECC组块和第二奇偶校验数据,从而第二ECC组块能够被存储在N-1个存储元件402上,并且奇偶校验信息能够存储在P个存储元件402上。在这种情况下,阵列400的性能将降低,这是由于存储数据的存储元件402较少,然而,奇偶校验保护将保持不变。
不可用存储元件402可以是存储数据的存储元件402或存储奇偶校验数据的存储元件402,这取决于被存取的逻辑页416的位置和奇偶校验数据的轮换。然而,存储在不可用存储设备402上的数据的性质不需要与由新配置存储模块1710存储的数据的配置有任何关系。因此,如果不可用存储元件402存储奇偶校验数据,在一种实施方式中,新配置存储模块1710可将第二ECC组块418的一部分存储在(N-Z)个存储元件402上,将关联的第二奇偶校验数据存储在P个存储元件402上,或者在另一种实施方式中,新配置存储模块1710可将第二ECC组块418的一部分存储在N个存储元件402上,将关联的第二奇偶校验数据存储在P-Z个存储元件402上,其中P>1。
在一种实施方式中,新配置存储模块1710将第二ECC组块418的一部分存储在先前是存储奇偶校验数据的存储元件402的设备上。同样地,在另一种实施方式中,新配置存储模块1710将与第二ECC组块418关联的奇偶校验数据存储在先前是存储来自ECC组块418的数据的存储元件402的设备上。一旦存储区域(例如逻辑擦除块414)已被擦除,且准备好再次存储数据,重新配置装置120能够以任何方便的组合存储数据和奇偶校验数据。在优选实施方式中,第二ECC组块418存储在不同于被读取以获取第一ECC组块418的逻辑擦除块414的逻辑擦除块414中。存储的重新配置可重新配置逻辑擦除块414以及ECC组块418存储在逻辑擦除块414内的方式。这可从存储在存储元件402上的ECC组块418内部改变位数。在另一种重新配置中,ECC组块418的大小可被修改以维持由存储元件402上的ECC组块418存储的相同位数。
冗余存储系统(例如RAID系统)在一定数量的数据或奇偶校验存储元件402失效的情况下提供了数据保护。阵列400以一种类RAID的方式被保护,因为数据类似于RAID被条带化且利用奇偶校验数据被保护。如果这些存储元件402不被替代,缺陷的或不可用的存储元件402的数量降低到RAID系统所能容纳的失效存储元件402的数量之下,数据将丢失。然而,通过将存储元件的N+P个阵列400重新配置成存储元件的(N+P)-Z个阵列400,即使在存储元件402未被替代的情况下,阵列仍400可保持数据保护的级别。有利地是,不像常规RAID配置,失效的存储元件402不需要被替代。通过重新配置被RAID的数据,余下的功能性存储元件402可被重新配置为容纳失效的存储元件402。
在按上述的那样使用宏引退方法的情况下,可能需要逆向重新配置以将(N+P)-1变回(N+P)状态。这个进程实质上与上述的一样,本领域技术人员将认识到第二ECC组块418可被进一步重新配置为存储在N+P个存储元件418上。
此外,如果更多的存储元件402失效或变得不可用,装置1700可继续重新配置ECC组块418。在存储元件错误模块1702识别一个或多个不可用存储元件402并且重新配置数据读取模块1704、数据重新生成模块1706、数据重新配置模块1708和新配置存储模块1710运作以将一个或多个ECC组块418存储在(N+P)-Z个存储元件402之后,存储元件错误模块1702可识别更多个不可用存储元件402。因此,重新配置数据读取模块1704、数据重新生成模块1706、数据重新配置模块1708和新配置存储模块1710运作以将一个或多个额外ECC组块418存储在((N+P)-Z)-Y个存储元件402上。Y可以表示在最近的重新配置之后确定的不可用存储元件402的数量。
图18是示意性方框图,示出了根据本发明的使用奇偶校验数据重新配置受保护的固态存储元件402的阵列的装置1800的另一种实施方式。装置1800包括存储元件错误模块1702、重新配置数据读取模块1704、数据重新生成模块1706、数据重新配置模块1708和新配置存储模块1710,这些模块大体上类似于相对于图17的装置1700描述的模块。在不同实施方式中,装置1800也可包括重新配置记录模块1802和存储元件错误位置模块1804,下文将描述这些模块。
在一种实施方式中,装置1800包括重新配置记录模块1802,重新配置记录模块1802识别存储元件的阵列400的一个或多个区域,其中数据存储在(N+P)-Z个存储元件402上。重新配置记录模块1802可通过将关于区域的数据记录在记录文件中来识别区域,记录文件例如区域的位置、时间戳或有关于重新配置的数据何时首先被存储在区域中的序列信息,等等。一个或多个区域可包括存储元件402上或多个存储元件402上的物理或逻辑区域。区域可包括逻辑页416的一部分、逻辑页416、逻辑页416的群组、擦除块的一部分、擦除块、擦除块的群组、一个或多个芯片块或一个或多个芯片。在一种实施方式中,重新配置记录模块1802利用逻辑-物理映射识别记录中的区域。记录文件可在读取操作、程序化操作等中使用,从而存储控制器104得知要存取哪些存储元件402。
在一种实施方式中,重新配置记录模块1802为不可用存储元件402上的数据存储跟踪不可用的存储区域。如果存储元件402的某些部分不可用且不起作用,数据可仍然存储在可用部分上。因此,重新配置记录模块1802跟踪不可用存储区域上,从而数据存储在(N+P)-Z个存储元件上用于不可用区域,并存储在N+P个存储元件402上用于不可用存储区域之外的位置。存储区域包括N+P个存储元件402的每一个的一部分,并可包括逻辑页416的一部分、逻辑页416、多个逻辑页416、逻辑擦除块414的一部分、逻辑擦除块414、多个擦除块414、芯片块、多个芯片块、芯片和/或多个芯片。重新配置记录模块1802防止浪费存储元件402的功能性部分。
在一种实施方式中,重新配置记录模块1802跟踪具有变化数量的存储元件402的不可用存储区域。具体地,重新配置记录模块1802可跟踪一个或多个不可用存储区域,其中,数据在(N+P)-Z个存储元件402和一个或多个额外不可用存储区域上,在额外不可用存储区域中,数据存储在((N+P)-Z)-X个存储元件402上。在除了不可用存储区域之外的存储区域中,数据存储在N+P个存储元件402中。
通常,相比于具有较少不可用存储元件402的存储区域而言,具有较多不可用存储元件402的存储区域具有较高的性能。在一种实施方式中,根据数据的性能要求,数据存储并隔离在存储元件的阵列400中。在该实施方式中,具有较高性能要求的数据被指定有高优选级,以被存储在具有较高性能的存储区域中。例如,频繁存取的某些数据可被存储在具有较高性能的存储区域中。如上所述,N个存储元件402的N值较大的存储元件的阵列400可具有较高的性能。
在一种实施方式中,存储元件错误模块1702通过确定第一ECC组块418中的错误不可利用与第一ECC组块418一起存储的ECC修正来确定存储元件402出错。例如,存储元件错误模块1702可使用检测装置118来确定第一ECC组块418中的错误不可修正。在另一种实施方式中,存储元件错误模块1702包括存储元件错误位置模块1804,存储元件错误位置模块1804使用存储在存储一个或多ECC组块418的一个或多个存储元件402中的和存储在存储关联的奇偶校验数据的存储元件402中的数据来识别不可用于存储数据的存储元件402。存储元件错误位置模块1804可包括上述的检测装置118的一种实施方式,以识别不可用的存储元件。在一种实施方式中,存储元件错误位置模块1804使用硬件门和逻辑来替换存储在存储一个或多个ECC组块418的一个或多个存储元件402中的数据。
图19是示意性流程图,示出了根据本发明的使用奇偶校验数据重新配置受保护的固态存储元件402的阵列400的方法1900的一种实施方式。方法1900开始,在步骤1902,存储元件错误模块1702确定一个或多个存储元件402不可用于存储数据(不可用存储元件)。存储元件402是三个或更多个存储元件402的阵列的一部分,数据被写入阵列400的逻辑页416中。此外,阵列400包括存储第一ECC组块418的N个存储元件402和存储生成自第一ECC组块418的第一奇偶校验数据的P个存储元件402。
在步骤1904,重新配置数据读取模块1704从除不可用存储元件402之外的存储元件402读取数据(可用数据)。可用数据包括来自逻辑页416的数据。如果可用数据包括第一奇偶校验数据,则在步骤1906,数据重新生成模块1706用第一奇偶校验数据重新生成来自第一ECC组块418的丢失的数据(丢失数据)。
在步骤1908,数据重新配置模块1708从可用数据、丢失数据和/或存储控制器接收的数据生成第二ECC(新数据)。第二ECC和数据被数据重新配置模块1708用以创建第二ECC组块418。数据重新配置模块1708也从第二ECC组块418生成第二奇偶校验数据。在一种实施方式中,数据重新配置模块1708不包括新数据,因此第二ECC生成自第一ECC组块418的数据并因此通常与第一ECC一致。在这种情况下,第二ECC组块418与第一ECC组块418一致。在新数据与第一ECC组块418的数据混合的情况下,第二ECC组块418的数据不同于第一ECC组块418的数据,因此,第二ECC不同于第一ECC,第二ECC组块418不同于第一ECC组块418。
在步骤1910,新配置存储模块1710将第二ECC组块418的一部分和关联的第二奇偶校验数据存储在(N+P)-Z个存储元件402上,其中1≤Z≤P,方法1900结束。在一种实施方式中,至少重新配置数据读取模块1704、数据重新生成模块1706和数据重新配置模块1708可运行在后台进程中。此外,后台进程可与垃圾收集一起运行。
图20是示意性流程图,示出了根据本发明的用于确定额外不可用存储元件402的方法2000的一种实施方式。方法2000开始,在步骤2002,存储元件错误模块1702确定一个或多个存储元件402是不可用存储元件402。在步骤2004,重新配置数据模块1704、数据重新生成模块1706、数据重新配置模块1708和新配置存储模块1710运作以将一个或多个ECC组块418存储在(N+P)-Z个存储元件402上,其中,Z是被发现不可用的存储元件402的数量。
在步骤2006,存储元件错误模块1702再次确定一个或多个额外存储元件402不可用。在步骤2008,重新配置数据模块1704、数据重新生成模块1706、数据重新配置模块1708和新配置存储模块1710运作以将一具或多个额外ECC组块418存储在((N+P)-Z)-Y个存储元件402上,其中,Y是被发现为不可用的额外存储元件402的数量。在步骤2010,重新配置记录模块1802跟踪一个或多个不可用存储区域,其中,数据存储在(N+P)-Z个存储元件402和一个或多个额外不可用存储区域上,在额外不可用存储区域中,数据存储在((N+P)-Z)-Y个存储元件402上,方法2000结束。
本发明可采用其他指定形式实施而不脱离本发明的宗旨或本质特点。描述的实施方式在各个方面被视为仅仅是示例性而不是限制性的。因此,本发明的范围由附属的权利要求确定,而不是由上述说明书确定。在本发明的权利要求的含义和等价范围内的所有改变被包含在本发明的保护范围内。

Claims (23)

1.一种检测和替代失效的数据存储器的装置,该装置包括:
读取模块,其从存储设备的阵列读取数据,该阵列包括两个或多个存储设备和一个或多个额外存储设备,额外存储设备存储来自存储设备的奇偶校验信息;
ECC模块,其利用纠错码(ECC)确定测试的数据是否存在一个或多个错误以及错误是否可用ECC修正,测试的数据包括由读取模块读取的数据;
隔离模块,
所述隔离模块响应于ECC模块确定错误存在于由读取模块读取的数据中且该错误不可用ECC修正而从存储设备的阵列选定存储设备;并
利用包括生成自奇偶校验数据的数据(替代数据)和读取自未被选定的存储设备的数据(可用数据)的数据替代读取自选定的存储设备的数据,奇偶校验数据存储在一个或多个额外存储设备上,
其中,测试的数据还包括结合有替代数据的可用数据。
2.如权利要求1所述的装置,其中,隔离模块响应于ECC模块确定结合有替代数据的可用数据包含不可用ECC修正的错误而选定用于测试的下一存储设备,下一存储设备选自存储设备的阵列,隔离模块选定每个隔离模块用于测试,直到ECC模块确定结合有替代数据的可用数据不包含错误或包含可用ECC修正的错误。
3.如权利要求1所述的装置,还包括引退模块,其响应于ECC模块确定结合有替代数据的可用数据不包含错误或包含可用ECC修正的错误而基于引退策略引退选定的存储设备和选定的存储设备上的一个或多个存储区域中的一个,该一个或多个存储区域包括一个或多个错误,存储区域包括选定的存储设备的至少一部分。
4.如权利要求1所述的装置,还包括存储设备重新配置模块,其响应于ECC模块确定结合有替代数据的可用数据不包含错误或包含可用ECC修正的错误而识别选定的存储设备,从而为将来的操作生成数据以替代来自选定的存储设备的读取数据。
5.如权利要求1所述的装置,还包括记录模块,其响应于ECC模块确定结合有替代数据的可用数据不包含错误或包含可用ECC修正的错误,进行下述操作中的一个或多个:
记录选定的存储设备的标识;和
记录指明包括一个或多个错误的一个或多个存储区域的存储位置数据,该区域包括选定的存储设备的至少一部分。
6.如权利要求5所述的装置,其中,记录模块记录选定的存储设备的标识而不记录包括具有一个或多个错误的存储区域的存储位置数据。
7.如权利要求6所述的装置,还包括存储区域测试模块,其识别选定的存储设备内包括错误的一个或多个存储区域,并且其中,记录模块还记录包括由存储区域测试模块识别的一个或多个存储区域的存储位置数据。
8.如权利要求7所述的装置,其中,存储区域测试模块利用由读取模块进行的后续读取并使用ECC模块和隔离模块确定具有不可修正的错误的存储区域来识别具有一个或多个错误的存储区域,其中所述不可修正的错误通过结合替代数据和可用数据是可修正的。
9.如权利要求5所述的装置,其中,记录模块记录包括一个或多个错误的一个或多个存储区域,还响应于读取模块进行的后续读取和使用ECC模块和隔离模块确定具有不可修正的错误的存储区域,记录指明选定的存储设备中包括一个或多个错误的一个或多个额外存储区域的存储位置数据,其中所述不可修正的错误通过结合替代数据和可用数据是可修正的。
10.如权利要求9所述的装置,其中,后续读取包括由存储区域测试模块初始化的读取和来自读取请求的读取中的一个。
11.如权利要求5所述的装置,还包括区重新配置模块,其为了将来的操作,用来自一个或多个额外存储设备的替代数据替代选定的存储设备中一个或多个存储区域的数据,从而选定的存储设备中一个或多个存储区域外的数据不被替代。
12.如权利要求11所述的装置,其中,区重新配置模块用来自一个或多个额外存储设备的替代数据替代来自选定的存储设备上的一个或多个存储区域的数据,并用来自相相同的一个或多个额外存储设备的替代数据替代来自相同选定的存储设备或不同选定的存储设备上的一个或多个额外存储区域的数据,一个或多个额外存储区域中的每一个包括一个或多个错误,其中,一个或多个存储区域和一个或多个额外存储区域不共享共同的逻辑页。
13.如权利要求11所述的装置,其中,区重新配置模块用来自一个或多个额外存储设备的替代数据替代来自一个或多个存储区域的数据,并用来自一个或多个不同的额外存储设备的替代数据替代一个或多个额外存储区域,一个或多个额外存储区域中的每一个包括一个或多个错误,其中,一个或多个存储区域和一个或多个额外存储区域共享共同的逻辑页。
14.如权利要求5所述的装置,其中,存储区域包括下述中的一个或多个:一个或多个ECC组块、一个或多个物理页、一个或多个逻辑页、一个或多个物理擦除块、一个或多个逻辑擦除块、芯片、芯片的一部分、一个或多个芯片块的一部分和一个或多个芯片块。
15.如权利要求5所述的装置,还包括分析模块,其分析记录以确定下述中的一项或多项:选定的存储设备中具有数据错误的区和错误类型。
16.如权利要求1所述的装置,还包括错误存储恢复模块,其响应于ECC模块确定结合有替代数据的可用数据不包含错误或包含可用ECC修正的错误而擦除具有一个或多个错误的擦除块以将擦除块准备用于将来的数据存储。
17.如权利要求16所述的装置,其中,引退模块引退擦除块并响应于下述情况用来自一个或多个额外存储设备的替代数据替代来自擦除块的数据:
存储错误恢复模块擦除擦除块,
顺序地将额外数据写入擦除块,
读取模块顺序地读取额外数据,和
使用ECC模块和隔离模块确定擦除块包括不可修正的错误,其中所述不可修正的错误通过结合替代数据和可用数据是可修正的。
18.如权利要求1所述的装置,其中,读取模块从逻辑页的至少一部分读取数据,逻辑页遍及存储设备的阵列,存储设备的阵列包括N+P个存储元件的阵列,存储元件的阵列包括N个每个存储ECC组块的一部分的存储元件和P个存储奇偶校验数据的存储元件,ECC组块包括存储的数据和生成自存储的数据的ECC,其中ECC遍及存储的数据,P个存储元件存储生成自存储在N个存储元件中的ECC组块的奇偶校验数据。
19.如权利要求1所述的装置,还包括修正数据模块,其响应于ECC模块确定结合有替代数据的可用数据不包含错误或包含可用ECC修正的错误而返回修正的数据。
20.如权利要求1所述的装置,还包括报告模块,其响应于ECC模块确定结合有替代数据的可用数据包含不可用ECC修正的错误而报告错误。
21.如权利要求1所述的装置,其中,每个存储设备包括非易失性固态存储器。
22.一种检测和替代失效的数据存储器的系统,该系统包括:
存储设备的阵列,该阵列包括两个或多个存储设备和一个或多个额外存储设备,额外存储设备存储来自存储设备的奇偶校验信息;
控制阵列的存储控制器;
从存储设备的阵列读取数据的读取模块;
ECC模块,其利用纠错码(ECC)确定测试的数据是否存在一个或多个错误以及错误是否可用ECC修正,测试的数据包括由读取模块读取的数据;
隔离模块,
所述隔离模块响应于ECC模块确定错误存在于由读取模块读取的数据中
且该错误不可用ECC修正而从存储设备的阵列选定存储设备;并
利用包括生成自奇偶校验数据的数据(替代数据)和读取自未被选定的存储设备的数据(可用数据)的数据替代读取自选定的存储设备的数据,奇偶校验数据存储在一个或多个额外存储设备上,
其中,测试的数据还包括结合有替代数据的可用数据。
23.一种包括计算机可读媒体的计算机程序制品,该计算机可读媒体具有计算机可读的程序代码,可执行该程序代码以实现检测和替代失效的数据存储器的操作,该计算机程序制品的操作包括:
从存储设备的阵列读取数据,该阵列包括两个或多个存储设备和一个或多个额外存储设备,额外存储设备存储来自存储设备的奇偶校验信息;
利用纠错码(ECC)确定测试的数据是否存在一个或多个错误以及错误是否可用ECC修正,测试的数据包括由读取模块读取的数据;
响应于ECC模块确定错误存在于数据中且该错误不可用ECC修正而从存储设备的阵列选定存储设备;
利用包括生成自奇偶校验数据的数据(替代数据)和读取自未被选定的存储设备的数据(可用数据)的数据替代读取自选定的存储设备的数据,奇偶校验数据存储在一个或多个额外存储设备上;及
确定测试的数据是否不包含错误或包含可用ECC修正的错误,测试的数据还包括结合有替代数据的可用数据。
CN2009801280134A 2008-05-16 2009-05-18 用于检测和替代失效的数据存储器的装置、系统和方法 Pending CN102124527A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US5405508P 2008-05-16 2008-05-16
US61/054,055 2008-05-16
PCT/US2009/044414 WO2009140700A1 (en) 2008-05-16 2009-05-18 Apparatus, system, and method for detecting and replacing failed data storage

Publications (1)

Publication Number Publication Date
CN102124527A true CN102124527A (zh) 2011-07-13

Family

ID=40795037

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009801280134A Pending CN102124527A (zh) 2008-05-16 2009-05-18 用于检测和替代失效的数据存储器的装置、系统和方法

Country Status (6)

Country Link
US (2) US8195978B2 (zh)
EP (1) EP2297742B1 (zh)
JP (1) JP5220185B2 (zh)
KR (1) KR20110050404A (zh)
CN (1) CN102124527A (zh)
WO (1) WO2009140700A1 (zh)

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103019883A (zh) * 2012-12-31 2013-04-03 华为技术有限公司 一种内存纠错方法及系统
CN103389924A (zh) * 2013-07-25 2013-11-13 苏州国芯科技有限公司 应用于随机存储器的ecc存储系统
CN103678027A (zh) * 2012-09-12 2014-03-26 旺宏电子股份有限公司 存储器装置及其操作方法、控制方法和存储器控制器
CN103858108A (zh) * 2011-09-30 2014-06-11 阿尔卡特朗讯公司 硬件消耗架构
CN104597843A (zh) * 2014-12-19 2015-05-06 清能德创电气技术(北京)有限公司 一种判断存储设备中数据是否可用的方法
CN105022022A (zh) * 2015-07-08 2015-11-04 国网上海市电力公司 一种智能电表故障抓取测试设备及其应用
CN105765991A (zh) * 2013-11-22 2016-07-13 卡姆鲁普股份有限公司 具有纠错的耗量表
CN106067326A (zh) * 2015-04-22 2016-11-02 爱思开海力士有限公司 错误校正电路及包括其的半导体存储器件
CN107229965A (zh) * 2016-03-25 2017-10-03 深圳光启合众科技有限公司 智能机器人的拟人系统和模拟遗忘效果的方法
CN104021049B (zh) * 2014-05-16 2017-11-03 华为技术有限公司 分布式存储系统中数据统一的方法和以太接口硬盘
CN108053862A (zh) * 2014-09-26 2018-05-18 英特尔公司 使用来自多个存储单元和奇偶校验存储单元的可靠性信息为一个失效存储单元恢复数据
CN108062258A (zh) * 2016-11-08 2018-05-22 爱思开海力士有限公司 用于错误恢复的循环交错的xor阵列
CN108205306A (zh) * 2016-12-16 2018-06-26 罗伯特·博世有限公司 用于对控制器进行校准的方法和装置
CN108694098A (zh) * 2017-03-31 2018-10-23 桑迪士克科技有限责任公司 对于存储设备的不同存储器区域的比特顺序修改
CN109144407A (zh) * 2017-06-16 2019-01-04 希捷科技有限公司 用于监测存储器以便引退的系统和方法
CN109213105A (zh) * 2018-10-22 2019-01-15 暨南大学 一种可重构装置、实现可重构的方法及分布式控制系统
CN109313632A (zh) * 2016-04-22 2019-02-05 远程媒体有限责任公司 一种用于增强网络环境中数据处理的系统和方法
CN109362236A (zh) * 2018-08-31 2019-02-19 深圳大学 基于双云端的数据安全存储方法、装置、设备及存储介质
US10275356B2 (en) 2015-12-11 2019-04-30 Quanta Computer Inc. Component carrier with converter board
CN110232001A (zh) * 2018-03-05 2019-09-13 三星电子株式会社 存储系统
CN110852098A (zh) * 2019-10-24 2020-02-28 深圳市元征科技股份有限公司 一种数据修正方法及电子设备和存储介质
CN111415699A (zh) * 2019-01-07 2020-07-14 爱思开海力士有限公司 数据存储装置及其操作方法
CN112216333A (zh) * 2020-09-30 2021-01-12 深圳市宏旺微电子有限公司 芯片测试方法及装置
CN112256464A (zh) * 2020-10-20 2021-01-22 湖南国科微电子股份有限公司 硬盘数据纠错方法、装置、电子设备及存储介质
CN112289364A (zh) * 2020-10-13 2021-01-29 珠海全志科技股份有限公司 eMMC质量检测修复方法、装置及其存储介质
WO2021088403A1 (zh) * 2019-11-06 2021-05-14 深圳大普微电子科技有限公司 一种数据纠错方法、装置、设备及可读存储介质
CN114333965A (zh) * 2020-09-30 2022-04-12 长鑫存储技术有限公司 存储器和存储器的测试方法

Families Citing this family (155)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090257956A1 (en) * 2002-01-25 2009-10-15 Ramsey Sallis Treatment Method for Treatment of Erectile Dysfunction and Premature Ejaculation
US8276024B2 (en) 2008-03-25 2012-09-25 Sony Computer Entertainment America Llc Method and system for error correction of a storage media
US9170897B2 (en) 2012-05-29 2015-10-27 SanDisk Technologies, Inc. Apparatus, system, and method for managing solid-state storage reliability
KR20110086725A (ko) * 2008-11-10 2011-07-29 퓨전-아이오, 인크. 솔리드-스테이트 저장장치의 고장을 예측하는 장치, 시스템 및 방법
US9063874B2 (en) 2008-11-10 2015-06-23 SanDisk Technologies, Inc. Apparatus, system, and method for wear management
JP5367357B2 (ja) * 2008-12-24 2013-12-11 株式会社メガチップス メモリシステムおよびコンピュータシステム
US8438455B2 (en) * 2008-12-31 2013-05-07 Intel Corporation Error correction in a solid state disk
US8433950B2 (en) * 2009-03-17 2013-04-30 International Business Machines Corporation System to determine fault tolerance in an integrated circuit and associated methods
US7945822B1 (en) * 2009-04-27 2011-05-17 Netapp, Inc. Storing data to multi-chip low-latency random read memory device using non-aligned striping
US8281227B2 (en) 2009-05-18 2012-10-02 Fusion-10, Inc. Apparatus, system, and method to increase data integrity in a redundant storage system
US8307258B2 (en) 2009-05-18 2012-11-06 Fusion-10, Inc Apparatus, system, and method for reconfiguring an array to operate with less storage elements
US8090978B2 (en) * 2009-05-25 2012-01-03 International Business Machines Corporation Protection of data on failing storage devices
US8412987B2 (en) * 2009-06-30 2013-04-02 Micron Technology, Inc. Non-volatile memory to store memory remap information
US8495467B1 (en) 2009-06-30 2013-07-23 Micron Technology, Inc. Switchable on-die memory error correcting engine
US8412985B1 (en) 2009-06-30 2013-04-02 Micron Technology, Inc. Hardwired remapped memory
US8910002B2 (en) * 2009-08-24 2014-12-09 OCZ Storage Solutions Inc. NAND flash-based storage device with built-in test-ahead for failure anticipation
US7954021B2 (en) * 2009-10-23 2011-05-31 International Business Machines Corporation Solid state drive with flash sparing
US8495471B2 (en) * 2009-11-30 2013-07-23 International Business Machines Corporation Solid-state storage system with parallel access of multiple flash/PCM devices
TWI497293B (zh) * 2009-12-17 2015-08-21 Ibm 固態儲存裝置內之資料管理
US11301592B2 (en) * 2010-01-28 2022-04-12 Pure Storage, Inc. Distributed storage with data obfuscation and method for use therewith
US8327226B2 (en) * 2010-02-03 2012-12-04 Seagate Technology Llc Adjustable error correction code length in an electrical storage device
US20110230711A1 (en) * 2010-03-16 2011-09-22 Kano Akihito Endoscopic Surgical Instrument
TWI447739B (zh) * 2010-03-22 2014-08-01 Phison Electronics Corp 錯誤校正方法、記憶體控制器與儲存系統
US8719675B1 (en) * 2010-06-16 2014-05-06 Google Inc. Orthogonal coding for data storage, access, and maintenance
US8713268B2 (en) 2010-08-05 2014-04-29 Ut-Battelle, Llc Coordinated garbage collection for raid array of solid state disks
US8850114B2 (en) 2010-09-07 2014-09-30 Daniel L Rosenband Storage array controller for flash-based storage devices
US8638602B1 (en) 2010-09-10 2014-01-28 Western Digital Technologies, Inc. Background selection of voltage reference values for performing memory read operations
JP5692780B2 (ja) * 2010-10-05 2015-04-01 日本電気株式会社 マルチコア型誤り訂正処理システムおよび誤り訂正処理装置
US8452914B2 (en) 2010-11-26 2013-05-28 Htc Corporation Electronic devices with improved flash memory compatibility and methods corresponding thereto
WO2012099937A2 (en) 2011-01-18 2012-07-26 Lsi Corporation Higher-level redundancy information computation
US8549367B1 (en) * 2010-12-29 2013-10-01 Cadence Design Systems, Inc. Method and system for accelerating memory randomization
TWI459393B (zh) * 2011-01-19 2014-11-01 Phison Electronics Corp 用於非揮發性記憶體的資料寫入方法、控制器與儲存裝置
US9213594B2 (en) 2011-01-19 2015-12-15 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for managing out-of-service conditions
US10049040B2 (en) 2011-01-21 2018-08-14 Seagate Technology Llc Just in time garbage collection
US8874872B2 (en) 2011-01-21 2014-10-28 Seagate Technology Llc Garbage collection management in memories
WO2012106362A2 (en) 2011-01-31 2012-08-09 Fusion-Io, Inc. Apparatus, system, and method for managing eviction of data
US8826086B2 (en) * 2011-02-07 2014-09-02 Sandisk Technologies Inc. Memory card test interface
KR101854200B1 (ko) * 2011-04-27 2018-06-20 시게이트 테크놀로지 엘엘씨 데이터 라이트 방법 및 이를 적용한 저장 장치
US8954787B2 (en) * 2011-05-09 2015-02-10 Cleversafe, Inc. Establishing trust in a maintenance free storage container
US8503237B1 (en) 2011-05-18 2013-08-06 Western Digital Technologies, Inc. System and method for data recovery in a solid state storage device
KR20120129239A (ko) * 2011-05-19 2012-11-28 삼성전자주식회사 비휘발성 메모리 장치, 이의 동작 방법, 및 이를 포함하는 메모리 시스템
US8572466B2 (en) 2011-06-06 2013-10-29 Micron Technology, Inc. Apparatuses, systems, devices, and methods of replacing at least partially non-functional portions of memory
US9417894B1 (en) 2011-06-15 2016-08-16 Ryft Systems, Inc. Methods and apparatus for a tablet computer system incorporating a reprogrammable circuit module
US20120324143A1 (en) 2011-06-15 2012-12-20 Data Design Corporation Methods and apparatus for data access by a reprogrammable circuit module
US8832524B2 (en) 2011-09-22 2014-09-09 Violin Memory, Inc. System and method for correcting errors in data using a compound code
US9075741B2 (en) * 2011-12-16 2015-07-07 Intel Corporation Dynamic error handling using parity and redundant rows
US9767032B2 (en) 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
KR101826051B1 (ko) * 2012-02-27 2018-02-07 삼성전자주식회사 비휘발성 메모리 장치의 제어 방법 및 비휘발성 메모리 시스템
US8924832B1 (en) * 2012-06-26 2014-12-30 Western Digital Technologies, Inc. Efficient error handling mechanisms in data storage systems
KR101925383B1 (ko) 2012-07-23 2018-12-05 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 데이터 관리 방법
GB2504956A (en) 2012-08-14 2014-02-19 Ibm Management of RAID error recovery procedures and configuration
US8898548B1 (en) * 2012-08-24 2014-11-25 Western Digital Technologies, Inc. Methods, data storage devices and systems having variable size ECC page size
TWI492051B (zh) * 2012-09-05 2015-07-11 Silicon Motion Inc 資料儲存裝置與快閃記憶體控制方法
US9053748B2 (en) * 2012-11-14 2015-06-09 International Business Machines Corporation Reconstructive error recovery procedure (ERP) using reserved buffer
US8793552B2 (en) 2012-11-14 2014-07-29 International Business Machines Corporation Reconstructive error recovery procedure (ERP) for multiple data sets using reserved buffer
US9489297B2 (en) 2013-01-21 2016-11-08 Sandisk Technologies Llc Pregroomer for storage array
US9542101B2 (en) * 2013-01-22 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. System and methods for performing embedded full-stripe write operations to a data volume with data elements distributed across multiple modules
JP5713412B2 (ja) * 2013-01-31 2015-05-07 株式会社日立製作所 管理装置、管理システム、および管理方法
US9619318B2 (en) 2013-02-22 2017-04-11 Intel Deutschland Gmbh Memory circuits, method for accessing a memory and method for repairing a memory
KR20150135311A (ko) 2013-03-25 2015-12-02 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. 에러 정정 로직을 갖는 메모리 디바이스
KR101862379B1 (ko) 2013-04-19 2018-07-05 삼성전자주식회사 Ecc 동작과 리던던시 리페어 동작을 공유하는 메모리 장치
US9430324B2 (en) 2013-05-24 2016-08-30 Rambus Inc. Memory repair method and apparatus based on error code tracking
EP3005117A4 (en) * 2013-05-29 2017-01-18 Hewlett-Packard Enterprise Development LP Invoking an error handler to handle an uncorrectable error
US8810944B1 (en) 2013-07-16 2014-08-19 International Business Machines Corporation Dynamic buffer size switching for burst errors encountered while reading a magnetic tape
CN108447516B (zh) * 2013-08-23 2020-04-24 慧荣科技股份有限公司 存取快闪存储器中存储单元的方法以及使用该方法的装置
CN103488583B (zh) * 2013-09-09 2016-08-10 华中科技大学 一种高性能高可靠的固态盘实现方法
US9256490B2 (en) * 2013-09-27 2016-02-09 Hitachi, Ltd. Storage apparatus, storage system, and data management method
US10019352B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for adaptive reserve storage
US9262263B2 (en) 2013-11-25 2016-02-16 Qualcomm Incorporated Bit recovery system
US10067829B2 (en) 2013-12-13 2018-09-04 Intel Corporation Managing redundancy information in a non-volatile memory
US9378081B2 (en) 2014-01-02 2016-06-28 Qualcomm Incorporated Bit remapping system
US9141478B2 (en) 2014-01-07 2015-09-22 International Business Machines Corporation Reconstructive error recovery procedure (ERP) using reserved buffer
US9582360B2 (en) 2014-01-07 2017-02-28 International Business Machines Corporation Single and multi-cut and paste (C/P) reconstructive error recovery procedure (ERP) using history of error correction
US9454422B2 (en) 2014-01-30 2016-09-27 International Business Machines Corporation Error feedback and logging with memory on-chip error checking and correcting (ECC)
US20150222291A1 (en) * 2014-02-05 2015-08-06 Kabushiki Kaisha Toshiba Memory controller, storage device and memory control method
US9798620B2 (en) 2014-02-06 2017-10-24 Sandisk Technologies Llc Systems and methods for non-blocking solid-state memory
US20150311921A1 (en) * 2014-04-25 2015-10-29 Kabushiki Kaisha Toshiba Memory controller, storage device and decoding method
US9361182B2 (en) * 2014-05-20 2016-06-07 Transcend Information, Inc. Method for read disturbance management in non-volatile memory devices
US9817750B2 (en) * 2014-07-03 2017-11-14 Pure Storage, Inc. Profile-dependent write placement of data into a non-volatile solid-state storage
US10146482B2 (en) 2014-08-01 2018-12-04 Toshiba Memory Corporation Global error recovery system
US9082512B1 (en) * 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
WO2016022156A1 (en) * 2014-08-08 2016-02-11 Hewlett-Packard Development Company, L. P. Error counters on a memory device
US10002044B2 (en) 2014-08-19 2018-06-19 Samsung Electronics Co., Ltd. Memory devices and modules
US10002043B2 (en) 2014-08-19 2018-06-19 Samsung Electronics Co., Ltd. Memory devices and modules
WO2016032784A1 (en) 2014-08-25 2016-03-03 Rambus Inc. Buffer circuit with adaptive repair capability
US10204003B2 (en) * 2014-08-27 2019-02-12 Hitachi, Ltd. Memory device and storage apparatus
US9619326B2 (en) * 2014-12-09 2017-04-11 Western Digital Technologies, Inc. Methods and systems for implementing redundancy in memory controllers
US9690660B1 (en) * 2015-06-03 2017-06-27 EMC IP Holding Company LLC Spare selection in a declustered RAID system
US9916091B2 (en) 2015-07-13 2018-03-13 Samsung Electronics Co., Ltd. Memory system architecture
KR102385138B1 (ko) * 2015-10-08 2022-04-12 삼성전자주식회사 정정 불가능한 ecc 오류를 갖는 데이터를 복구하도록 구성되는 raid 컨트롤러 장치 및 스토리지 장치
CN105404469B (zh) * 2015-10-22 2018-11-13 浙江宇视科技有限公司 一种视频数据的存储方法和系统
US10866854B2 (en) * 2015-12-29 2020-12-15 Arteris, Inc. System and method for reducing ECC overhead and memory access bandwidth
US9946596B2 (en) 2016-01-29 2018-04-17 Toshiba Memory Corporation Global error recovery system
KR102533389B1 (ko) 2016-02-24 2023-05-17 삼성전자주식회사 장치 수명을 향상시키는 데이터 저장 장치 및 이를 포함하는 raid 시스템
KR102585871B1 (ko) * 2016-02-26 2023-10-10 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR102549605B1 (ko) 2016-03-04 2023-06-30 삼성전자주식회사 Raid 스토리지 장치의 리커버리 방법
US10078567B2 (en) 2016-03-18 2018-09-18 Alibaba Group Holding Limited Implementing fault tolerance in computer system memory
US10372368B2 (en) * 2016-10-13 2019-08-06 International Business Machines Corporation Operating a RAID array with unequal stripes
US10719398B1 (en) * 2017-07-18 2020-07-21 EMC IP Holding Company LLC Resilience of data storage systems by managing partial failures of solid state drives
US10216685B1 (en) * 2017-07-19 2019-02-26 Agiga Tech Inc. Memory modules with nonvolatile storage and rapid, sustained transfer rates
US10853177B2 (en) * 2017-07-27 2020-12-01 United States Of America As Represented By The Secretary Of The Air Force Performant process for salvaging renderable content from digital data sources
US10877839B2 (en) 2017-09-22 2020-12-29 Arteris, Inc. Recovery of a coherent system in the presence of an uncorrectable error
US10877898B2 (en) 2017-11-16 2020-12-29 Alibaba Group Holding Limited Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements
US10929226B1 (en) * 2017-11-21 2021-02-23 Pure Storage, Inc. Providing for increased flexibility for large scale parity
US10496548B2 (en) 2018-02-07 2019-12-03 Alibaba Group Holding Limited Method and system for user-space storage I/O stack with user-space flash translation layer
US10929260B2 (en) 2018-05-16 2021-02-23 Advantest Corporation Traffic capture and debugging tools for identifying root causes of device failure during automated testing
WO2019222958A1 (en) 2018-05-24 2019-11-28 Alibaba Group Holding Limited System and method for flash storage management using multiple open page stripes
WO2020000136A1 (en) 2018-06-25 2020-01-02 Alibaba Group Holding Limited System and method for managing resources of a storage device and quantifying the cost of i/o requests
US10921992B2 (en) * 2018-06-25 2021-02-16 Alibaba Group Holding Limited Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency
US10996886B2 (en) 2018-08-02 2021-05-04 Alibaba Group Holding Limited Method and system for facilitating atomicity and latency assurance on variable sized I/O
US10754726B2 (en) * 2018-08-21 2020-08-25 Micron Technology, Inc. Tracking error-correction parity calculations
US11327929B2 (en) 2018-09-17 2022-05-10 Alibaba Group Holding Limited Method and system for reduced data movement compression using in-storage computing and a customized file system
US10607712B1 (en) * 2018-09-28 2020-03-31 Toshiba Memory Corporation Media error reporting improvements for storage drives
CN109508247B (zh) * 2018-11-09 2022-02-11 英业达科技有限公司 定位内存错误发生位置的方法、系统、及电子设备
US10977122B2 (en) 2018-12-31 2021-04-13 Alibaba Group Holding Limited System and method for facilitating differentiated error correction in high-density flash devices
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US11132291B2 (en) 2019-01-04 2021-09-28 Alibaba Group Holding Limited System and method of FPGA-executed flash translation layer in multiple solid state drives
US11200337B2 (en) 2019-02-11 2021-12-14 Alibaba Group Holding Limited System and method for user data isolation
US10970212B2 (en) 2019-02-15 2021-04-06 Alibaba Group Holding Limited Method and system for facilitating a distributed storage system with a total cost of ownership reduction for multiple available zones
US11061834B2 (en) 2019-02-26 2021-07-13 Alibaba Group Holding Limited Method and system for facilitating an improved storage system by decoupling the controller from the storage medium
US10891065B2 (en) 2019-04-01 2021-01-12 Alibaba Group Holding Limited Method and system for online conversion of bad blocks for improvement of performance and longevity in a solid state drive
US10922234B2 (en) 2019-04-11 2021-02-16 Alibaba Group Holding Limited Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive
US10908960B2 (en) 2019-04-16 2021-02-02 Alibaba Group Holding Limited Resource allocation based on comprehensive I/O monitoring in a distributed storage system
CN110032341B (zh) * 2019-04-16 2022-07-08 昆山丘钛微电子科技股份有限公司 一种模组的数据处理方法、装置、电子设备及介质
US11169873B2 (en) 2019-05-21 2021-11-09 Alibaba Group Holding Limited Method and system for extending lifespan and enhancing throughput in a high-density solid state drive
US10860223B1 (en) 2019-07-18 2020-12-08 Alibaba Group Holding Limited Method and system for enhancing a distributed storage system by decoupling computation and network tasks
US11074124B2 (en) 2019-07-23 2021-07-27 Alibaba Group Holding Limited Method and system for enhancing throughput of big data analysis in a NAND-based read source storage
US10838811B1 (en) * 2019-08-14 2020-11-17 Silicon Motion, Inc. Non-volatile memory write method using data protection with aid of pre-calculation information rotation, and associated apparatus
US11617282B2 (en) 2019-10-01 2023-03-28 Alibaba Group Holding Limited System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers
US11126561B2 (en) 2019-10-01 2021-09-21 Alibaba Group Holding Limited Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive
US11449455B2 (en) 2020-01-15 2022-09-20 Alibaba Group Holding Limited Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility
US11150986B2 (en) 2020-02-26 2021-10-19 Alibaba Group Holding Limited Efficient compaction on log-structured distributed file system using erasure coding for resource consumption reduction
US11200114B2 (en) 2020-03-17 2021-12-14 Alibaba Group Holding Limited System and method for facilitating elastic error correction code in memory
US11385833B2 (en) 2020-04-20 2022-07-12 Alibaba Group Holding Limited Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
US11281575B2 (en) 2020-05-11 2022-03-22 Alibaba Group Holding Limited Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks
US11494115B2 (en) 2020-05-13 2022-11-08 Alibaba Group Holding Limited System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC)
US11461262B2 (en) 2020-05-13 2022-10-04 Alibaba Group Holding Limited Method and system for facilitating a converged computation and storage node in a distributed storage system
US11218165B2 (en) 2020-05-15 2022-01-04 Alibaba Group Holding Limited Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11263132B2 (en) 2020-06-11 2022-03-01 Alibaba Group Holding Limited Method and system for facilitating log-structure data organization
US11422931B2 (en) 2020-06-17 2022-08-23 Alibaba Group Holding Limited Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
US11354200B2 (en) 2020-06-17 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating data recovery and version rollback in a storage device
US11354233B2 (en) 2020-07-27 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating fast crash recovery in a storage device
US11372774B2 (en) 2020-08-24 2022-06-28 Alibaba Group Holding Limited Method and system for a solid state drive with on-chip memory integration
TWI748609B (zh) * 2020-08-25 2021-12-01 慧榮科技股份有限公司 全快閃陣列儲存裝置與資料處理方法
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11416365B2 (en) 2020-12-30 2022-08-16 Alibaba Group Holding Limited Method and system for open NAND block detection and correction in an open-channel SSD
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11461173B1 (en) 2021-04-21 2022-10-04 Alibaba Singapore Holding Private Limited Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement
US11476874B1 (en) 2021-05-14 2022-10-18 Alibaba Singapore Holding Private Limited Method and system for facilitating a storage server with hybrid memory for journaling and data storage
US12074962B2 (en) 2021-08-10 2024-08-27 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for dividing and encrypting data
US11886295B2 (en) 2022-01-31 2024-01-30 Pure Storage, Inc. Intra-block error correction
US11940872B2 (en) * 2022-04-21 2024-03-26 Analog Devices International Unlimited Company Error correction code validation

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0569236A2 (en) * 1992-05-08 1993-11-10 Compaq Computer Corporation Error correcting code technique for improving reliability of a disk array
CN1421871A (zh) * 2001-11-22 2003-06-04 富士通株式会社 具有奇偶校验单元阵列的存储电路
CN1821971A (zh) * 2005-01-07 2006-08-23 恩益禧电子股份有限公司 半导体存储设备和伪sram

Family Cites Families (153)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61226853A (ja) * 1985-03-30 1986-10-08 Toshiba Corp 半導体メモリにおける誤り検出訂正機能テスト回路
US4740968A (en) 1986-10-27 1988-04-26 International Business Machines Corporation ECC circuit failure detector/quick word verifier
JPH0667912B2 (ja) 1986-12-19 1994-08-31 日本曹達株式会社 ピリダジノン誘導体、その製造方法及び除草剤
JPH01251146A (ja) * 1988-03-31 1989-10-06 Nec Corp ビットエラー訂正装置
JPH03233638A (ja) * 1990-02-08 1991-10-17 Nec Corp メモリエラー情報収集方式
US5233618A (en) 1990-03-02 1993-08-03 Micro Technology, Inc. Data correcting applicable to redundant arrays of independent disks
US5261068A (en) 1990-05-25 1993-11-09 Dell Usa L.P. Dual path memory retrieval system for an interleaved dynamic RAM memory unit
US5265098A (en) 1990-08-03 1993-11-23 International Business Machines Corporation Method and means for managing DASD array accesses when operating in degraded mode
US5208813A (en) 1990-10-23 1993-05-04 Array Technology Corporation On-line reconstruction of a failed redundant array system
US5438671A (en) 1991-07-19 1995-08-01 Dell U.S.A., L.P. Method and system for transferring compressed bytes of information between separate hard disk drive units
JPH05225798A (ja) 1991-08-14 1993-09-03 Internatl Business Mach Corp <Ibm> メモリシステム
US6230233B1 (en) 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
JPH0667912A (ja) * 1992-08-20 1994-03-11 Yokogawa Electric Corp エラー検出訂正回路
US5379415A (en) * 1992-09-29 1995-01-03 Zitel Corporation Fault tolerant memory system
US5819109A (en) 1992-12-07 1998-10-06 Digital Equipment Corporation System for storing pending parity update log entries, calculating new parity, updating the parity block, and removing each entry from the log when update is complete
US5579474A (en) 1992-12-28 1996-11-26 Hitachi, Ltd. Disk array system and its control method
US5845329A (en) 1993-01-29 1998-12-01 Sanyo Electric Co., Ltd. Parallel computer
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US5596708A (en) 1994-04-04 1997-01-21 At&T Global Information Solutions Company Method and apparatus for the protection of write data in a disk array
US5479653A (en) 1994-07-14 1995-12-26 Dellusa, L.P. Disk array apparatus and method which supports compound raid configurations and spareless hot sparing
US6170047B1 (en) 1994-11-16 2001-01-02 Interactive Silicon, Inc. System and method for managing system memory and/or non-volatile memory using a memory controller with integrated compression and decompression capabilities
US6002411A (en) 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
US5488701A (en) 1994-11-17 1996-01-30 International Business Machines Corporation In log sparing for log structured arrays
US5701434A (en) 1995-03-16 1997-12-23 Hitachi, Ltd. Interleave memory controller with a common access queue
US5889795A (en) * 1995-04-21 1999-03-30 International Business Machines Corporation Disk array system and method for storing data
DE69615278T2 (de) 1995-06-06 2002-06-27 Hewlett-Packard Co. (N.D.Ges.D.Staates Delaware), Palo Alto SDRAM-Datenzuweisungsanordnung und -verfahren
US5835935A (en) 1995-09-13 1998-11-10 Lexar Media, Inc. Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory
US6330688B1 (en) 1995-10-31 2001-12-11 Intel Corporation On chip error correction for devices in a solid state drive
US5841795A (en) 1996-02-12 1998-11-24 Compaq Computer Corporation Error correction codes
US6385710B1 (en) 1996-02-23 2002-05-07 Sun Microsystems, Inc. Multiple-mode external cache subsystem
US5729497A (en) 1996-02-27 1998-03-17 Micron Technology Inc. Method of using parity and ECC bits to increase the yield of non-parity ECC devices
US5922080A (en) 1996-05-29 1999-07-13 Compaq Computer Corporation, Inc. Method and apparatus for performing error detection and correction with memory devices
US5740188A (en) 1996-05-29 1998-04-14 Compaq Computer Corporation Error checking and correcting for burst DRAM devices
US6024486A (en) 1996-06-05 2000-02-15 Compaq Computer Corporation Data error detection and correction
KR100275900B1 (ko) 1996-09-21 2000-12-15 윤종용 알에이아이디 서브시스템에 있어서 분할패러티 예비 디스크 구현방법
US5960462A (en) 1996-09-26 1999-09-28 Intel Corporation Method and apparatus for analyzing a main memory configuration to program a memory controller
US5754567A (en) 1996-10-15 1998-05-19 Micron Quantum Devices, Inc. Write reduction in flash memory systems through ECC usage
US5978953A (en) 1996-12-19 1999-11-02 Compaq Computer Corporation error detection and correction
JP3595099B2 (ja) 1997-03-17 2004-12-02 富士通株式会社 デバイスアレイ・システム
JP3459868B2 (ja) 1997-05-16 2003-10-27 日本電気株式会社 メモリ障害時におけるグループ入れ替え方式
US6003144A (en) 1997-06-30 1999-12-14 Compaq Computer Corporation Error detection and correction
US6076143A (en) 1997-09-02 2000-06-13 Emc Corporation Method and apparatus for managing the physical storage locations for blocks of information in a storage system to increase system performance
KR100267366B1 (en) 1997-07-15 2000-10-16 Samsung Electronics Co Ltd Method for recoding parity and restoring data of failed disks in an external storage subsystem and apparatus therefor
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
US6223301B1 (en) 1997-09-30 2001-04-24 Compaq Computer Corporation Fault tolerant memory
US6418478B1 (en) 1997-10-30 2002-07-09 Commvault Systems, Inc. Pipelined high speed data transfer mechanism
EP0917059A1 (en) 1997-11-14 1999-05-19 Nec Corporation A semiconductor memory device having an ECC circuit
KR100266748B1 (ko) 1997-12-31 2000-10-02 윤종용 반도체 메모리 장치 및 그 장치의 에러 정정 방법
US6185654B1 (en) 1998-07-17 2001-02-06 Compaq Computer Corporation Phantom resource memory address mapping system
US6279138B1 (en) 1998-08-04 2001-08-21 International Business Machines Corporation System for changing the parity structure of a raid array
US6282671B1 (en) 1998-11-10 2001-08-28 International Business Machines Corporation Method and system for improved efficiency of parity calculation in RAID system
US6412080B1 (en) 1999-02-23 2002-06-25 Microsoft Corporation Lightweight persistent storage system for flash memory devices
JP2000259359A (ja) 1999-03-04 2000-09-22 Toshiba Corp Raid装置および記録媒体
US6557123B1 (en) 1999-08-02 2003-04-29 Inostor Corporation Data redundancy methods and apparatus
KR100577380B1 (ko) 1999-09-29 2006-05-09 삼성전자주식회사 플래시 메모리와 그 제어 방법
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
US6785835B2 (en) 2000-01-25 2004-08-31 Hewlett-Packard Development Company, L.P. Raid memory
US6671757B1 (en) 2000-01-26 2003-12-30 Fusionone, Inc. Data transfer and synchronization system
US6651138B2 (en) 2000-01-27 2003-11-18 Hewlett-Packard Development Company, L.P. Hot-plug memory catridge power control logic
US7089391B2 (en) 2000-04-14 2006-08-08 Quickshift, Inc. Managing a codec engine for memory compression/decompression operations using a data movement engine
US6523102B1 (en) 2000-04-14 2003-02-18 Interactive Silicon, Inc. Parallel compression/decompression system and method for implementation of in-memory compressed cache improving storage density and access speed for industry standard memory subsystems and in-line memory modules
US6883079B1 (en) 2000-09-01 2005-04-19 Maxtor Corporation Method and apparatus for using data compression as a means of increasing buffer bandwidth
US6625685B1 (en) 2000-09-20 2003-09-23 Broadcom Corporation Memory controller with programmable configuration
US6779088B1 (en) 2000-10-24 2004-08-17 International Business Machines Corporation Virtual uncompressed cache size control in compressed memory systems
US6745310B2 (en) 2000-12-01 2004-06-01 Yan Chiew Chow Real time local and remote management of data files and directories and method of operating the same
JP4818812B2 (ja) 2006-05-31 2011-11-16 株式会社日立製作所 フラッシュメモリストレージシステム
US6990547B2 (en) 2001-01-29 2006-01-24 Adaptec, Inc. Replacing file system processors by hot swapping
US20020174295A1 (en) 2001-01-29 2002-11-21 Ulrich Thomas R. Enhanced file system failure tolerance
US7222257B1 (en) 2001-06-12 2007-05-22 Emc Corporation Method and system for repairing a redundant array of disk drives
US6839808B2 (en) 2001-07-06 2005-01-04 Juniper Networks, Inc. Processing cluster having multiple compute engines and shared tier one caches
US6981196B2 (en) * 2001-07-25 2005-12-27 Hewlett-Packard Development Company, L.P. Data storage method for use in a magnetoresistive solid-state storage device
GB0123415D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
US6938133B2 (en) 2001-09-28 2005-08-30 Hewlett-Packard Development Company, L.P. Memory latency and bandwidth optimizations
US6883131B2 (en) 2001-09-28 2005-04-19 Sun Microsystems, Inc. XOR processing incorporating error correction code data protection
US6976187B2 (en) 2001-11-08 2005-12-13 Broadcom Corporation Rebuilding redundant disk arrays using distributed hot spare space
US6851082B1 (en) 2001-11-13 2005-02-01 Network Appliance, Inc. Concentrated parity technique for handling double failures and enabling storage of more than one parity block per stripe on a storage device of a storage array
US7055058B2 (en) 2001-12-26 2006-05-30 Boon Storage Technologies, Inc. Self-healing log-structured RAID
JP4061272B2 (ja) 2002-01-09 2008-03-12 株式会社ルネサステクノロジ メモリシステム及びメモリカード
US7315976B2 (en) 2002-01-31 2008-01-01 Lsi Logic Corporation Method for using CRC as metadata to protect against drive anomaly errors in a storage array
US6871257B2 (en) 2002-02-22 2005-03-22 Sandisk Corporation Pipelined parallel programming operation in a non-volatile memory system
JP2003281071A (ja) 2002-03-20 2003-10-03 Seiko Epson Corp データ転送制御装置、電子機器及びデータ転送制御方法
US6934878B2 (en) 2002-03-22 2005-08-23 Intel Corporation Failure detection and failure handling in cluster controller networks
JP2003303139A (ja) 2002-04-09 2003-10-24 Nec Corp 冗長メモリモジュールおよびメモリコントローラ
JP4050548B2 (ja) 2002-04-18 2008-02-20 株式会社ルネサステクノロジ 半導体記憶装置
US6959413B2 (en) 2002-06-18 2005-10-25 Lsi Logic Corporation Method of handling unreadable blocks during rebuilding of a RAID device
US7043599B1 (en) 2002-06-20 2006-05-09 Rambus Inc. Dynamic memory supporting simultaneous refresh and data-access transactions
US7024586B2 (en) 2002-06-24 2006-04-04 Network Appliance, Inc. Using file system information in raid data reconstruction and migration
US20040015771A1 (en) 2002-07-16 2004-01-22 Menahem Lasser Error correction for non-volatile memory
US6922752B2 (en) 2002-08-23 2005-07-26 Hewlett-Packard Development Company, L.P. Storage system using fast storage devices for storing redundant data
US7076606B2 (en) 2002-09-20 2006-07-11 Quantum Corporation Accelerated RAID with rewind capability
US6985992B1 (en) 2002-10-28 2006-01-10 Sandisk Corporation Wear-leveling in non-volatile storage systems
US7152942B2 (en) 2002-12-02 2006-12-26 Silverbrook Research Pty Ltd Fixative compensation
US7350101B1 (en) 2002-12-23 2008-03-25 Storage Technology Corporation Simultaneous writing and reconstruction of a redundant array of independent limited performance storage devices
US7096407B2 (en) 2003-02-18 2006-08-22 Hewlett-Packard Development Company, L.P. Technique for implementing chipkill in a memory system
US20040163027A1 (en) 2003-02-18 2004-08-19 Maclaren John M. Technique for implementing chipkill in a memory system with X8 memory devices
JP2004310650A (ja) 2003-04-10 2004-11-04 Renesas Technology Corp メモリ装置
JP2004348818A (ja) 2003-05-20 2004-12-09 Sharp Corp 半導体記憶装置の書込制御方法及びシステム並びに携帯電子機器
US7243203B2 (en) 2003-06-13 2007-07-10 Sandisk 3D Llc Pipeline circuit for low latency memory
US7146461B1 (en) 2003-07-01 2006-12-05 Veritas Operating Corporation Automated recovery from data corruption of data volumes in parity RAID storage systems
US7191379B2 (en) 2003-09-10 2007-03-13 Hewlett-Packard Development Company, L.P. Magnetic memory with error correction coding
US7012835B2 (en) * 2003-10-03 2006-03-14 Sandisk Corporation Flash memory data correction and scrub techniques
CA2544063C (en) 2003-11-13 2013-09-10 Commvault Systems, Inc. System and method for combining data streams in pilelined storage operations in a storage network
TWI232376B (en) 2003-12-15 2005-05-11 Promise Technology Inc RAID storage device
US7243293B2 (en) 2003-12-23 2007-07-10 International Business Machines Corporation (18, 9) Error correction code for double error correction and triple error detection
US7631138B2 (en) 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
US7334156B2 (en) 2004-02-13 2008-02-19 Tandberg Data Corp. Method and apparatus for RAID conversion
US7680977B2 (en) 2004-02-26 2010-03-16 Super Talent Electronics, Inc. Page and block management algorithm for NAND flash
US7100004B2 (en) * 2004-04-06 2006-08-29 International Business Machines Corporation Method for scrubbing regions in central storage
JP2006018373A (ja) * 2004-06-30 2006-01-19 Tdk Corp メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
US7526686B2 (en) * 2004-08-04 2009-04-28 International Business Machines Corporation Apparatus, system, and method for active data verification in a storage system
US8464093B1 (en) 2004-09-03 2013-06-11 Extreme Networks, Inc. Memory array error correction
US7555701B2 (en) 2004-11-04 2009-06-30 Adaptec, Inc. Method and system for recovering from multiple drive failures
JP5116151B2 (ja) 2004-11-05 2013-01-09 ドロボ, インコーポレイテッド 仮想ホットスペアを用いて動的に拡張可能かつ縮小可能な故障許容格納システム
US7308532B1 (en) 2004-11-12 2007-12-11 Sun Microsystems, Inc. Method for dynamically implementing N+K redundancy in a storage subsystem
US7426655B2 (en) 2004-12-13 2008-09-16 Dell Products L.P. System and method of enhancing storage array read performance using a spare storage array
US7185246B2 (en) * 2004-12-15 2007-02-27 International Business Machines Corporation Monitoring of solid state memory devices in active memory system utilizing redundant devices
US7386758B2 (en) 2005-01-13 2008-06-10 Hitachi, Ltd. Method and apparatus for reconstructing data in object-based storage arrays
JP2006236001A (ja) 2005-02-24 2006-09-07 Nec Corp ディスクアレイ装置
US7224604B2 (en) 2005-03-14 2007-05-29 Sandisk Il Ltd. Method of achieving wear leveling in flash memory using relative grades
US7496823B2 (en) * 2005-03-16 2009-02-24 Hewlett-Packard Development Company, L.P. Hardware based memory scrubbing
US8200887B2 (en) 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
US20060265636A1 (en) 2005-05-19 2006-11-23 Klaus Hummler Optimized testing of on-chip error correction circuit
US7373583B2 (en) 2005-05-19 2008-05-13 Infineon Technologies North America Corp. ECC flag for testing on-chip error correction circuit
US7721182B2 (en) * 2005-05-27 2010-05-18 International Business Machines Corporation Soft error protection in individual memory devices
US7716387B2 (en) 2005-07-14 2010-05-11 Canon Kabushiki Kaisha Memory control apparatus and method
US7480766B2 (en) 2005-08-03 2009-01-20 Sandisk Corporation Interfacing systems operating through a logical address space and on a direct data file basis
US7227797B2 (en) 2005-08-30 2007-06-05 Hewlett-Packard Development Company, L.P. Hierarchical memory correction system and method
US7529905B2 (en) 2005-10-13 2009-05-05 Sandisk Corporation Method of storing transformed units of data in a memory system having fixed sized storage blocks
JP2007133683A (ja) 2005-11-10 2007-05-31 Sony Corp メモリシステム
US7861122B2 (en) 2006-01-27 2010-12-28 Apple Inc. Monitoring health of non-volatile memory
US20070255889A1 (en) 2006-03-22 2007-11-01 Yoav Yogev Non-volatile memory device and method of operating the device
US7617361B2 (en) 2006-03-29 2009-11-10 International Business Machines Corporation Configureable redundant array of independent disks
JP4863749B2 (ja) 2006-03-29 2012-01-25 株式会社日立製作所 フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム
US7779334B2 (en) 2006-06-26 2010-08-17 Taiwan Semiconductor Manufacturing Company, Ltd. Memory having an ECC system
US8069377B2 (en) 2006-06-26 2011-11-29 Micron Technology, Inc. Integrated circuit having memory array including ECC and column redundancy and method of operating the same
JP4842719B2 (ja) 2006-06-28 2011-12-21 株式会社日立製作所 ストレージシステム及びそのデータ保護方法
US7634686B2 (en) 2006-07-24 2009-12-15 Marvell World Trade Ltd. File server for redundant array of independent disks (RAID) system
JP2008041123A (ja) 2006-08-01 2008-02-21 Toshiba Corp 半導体記憶装置
JP4946249B2 (ja) 2006-08-07 2012-06-06 富士通セミコンダクター株式会社 Eccのコード長が変更可能な半導体メモリ装置
US7526606B2 (en) 2006-09-08 2009-04-28 Agere Systems, Inc. High-speed redundant disk controller methods and systems
JP4942446B2 (ja) 2006-10-11 2012-05-30 株式会社日立製作所 ストレージ装置及びその制御方法
US20080140724A1 (en) 2006-12-06 2008-06-12 David Flynn Apparatus, system, and method for servicing object requests within a storage controller
US7721140B2 (en) * 2007-01-02 2010-05-18 International Business Machines Corporation Systems and methods for improving serviceability of a memory system
US7788526B2 (en) 2007-01-10 2010-08-31 International Business Machines Corporation Providing enhanced tolerance of data loss in a disk array system
US7681089B2 (en) 2007-02-20 2010-03-16 Dot Hill Systems Corporation Redundant storage controller system with enhanced failure analysis capability
US7975209B2 (en) 2007-03-31 2011-07-05 Sandisk Technologies Inc. Non-volatile memory with guided simulated annealing error correction control
US7966550B2 (en) 2007-03-31 2011-06-21 Sandisk Technologies Inc. Soft bit data transmission for error correction control in non-volatile memory
KR100909902B1 (ko) 2007-04-27 2009-07-30 삼성전자주식회사 플래쉬 메모리 장치 및 플래쉬 메모리 시스템
US8261124B2 (en) * 2007-12-21 2012-09-04 Spansion Llc System and method for optimized error correction in flash memory arrays
US8156392B2 (en) * 2008-04-05 2012-04-10 Fusion-Io, Inc. Apparatus, system, and method for bad block remapping
US8438455B2 (en) * 2008-12-31 2013-05-07 Intel Corporation Error correction in a solid state disk
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
US7856528B1 (en) 2009-08-11 2010-12-21 Texas Memory Systems, Inc. Method and apparatus for protecting data using variable size page stripes in a FLASH-based storage system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0569236A2 (en) * 1992-05-08 1993-11-10 Compaq Computer Corporation Error correcting code technique for improving reliability of a disk array
CN1421871A (zh) * 2001-11-22 2003-06-04 富士通株式会社 具有奇偶校验单元阵列的存储电路
CN1821971A (zh) * 2005-01-07 2006-08-23 恩益禧电子股份有限公司 半导体存储设备和伪sram

Cited By (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103858108A (zh) * 2011-09-30 2014-06-11 阿尔卡特朗讯公司 硬件消耗架构
CN103678027A (zh) * 2012-09-12 2014-03-26 旺宏电子股份有限公司 存储器装置及其操作方法、控制方法和存储器控制器
CN103678027B (zh) * 2012-09-12 2016-12-28 旺宏电子股份有限公司 存储器装置及其操作方法、控制方法和存储器控制器
CN103019883A (zh) * 2012-12-31 2013-04-03 华为技术有限公司 一种内存纠错方法及系统
CN103019883B (zh) * 2012-12-31 2015-08-26 华为技术有限公司 一种内存纠错方法及系统
CN103389924A (zh) * 2013-07-25 2013-11-13 苏州国芯科技有限公司 应用于随机存储器的ecc存储系统
CN103389924B (zh) * 2013-07-25 2016-04-06 苏州国芯科技有限公司 应用于随机存储器的ecc存储系统
CN105765991B (zh) * 2013-11-22 2019-04-19 卡姆鲁普股份有限公司 具有纠错的耗量表
CN105765991A (zh) * 2013-11-22 2016-07-13 卡姆鲁普股份有限公司 具有纠错的耗量表
CN104021049B (zh) * 2014-05-16 2017-11-03 华为技术有限公司 分布式存储系统中数据统一的方法和以太接口硬盘
CN108053862B (zh) * 2014-09-26 2021-08-06 英特尔公司 使用来自多个存储单元和奇偶校验存储单元的可靠性信息为一个失效存储单元恢复数据
CN108053862A (zh) * 2014-09-26 2018-05-18 英特尔公司 使用来自多个存储单元和奇偶校验存储单元的可靠性信息为一个失效存储单元恢复数据
CN104597843A (zh) * 2014-12-19 2015-05-06 清能德创电气技术(北京)有限公司 一种判断存储设备中数据是否可用的方法
CN104597843B (zh) * 2014-12-19 2017-10-13 清能德创电气技术(北京)有限公司 一种判断存储设备中数据是否可用的方法
CN106067326A (zh) * 2015-04-22 2016-11-02 爱思开海力士有限公司 错误校正电路及包括其的半导体存储器件
CN106067326B (zh) * 2015-04-22 2020-08-11 爱思开海力士有限公司 错误校正电路及包括其的半导体存储器件
CN105022022A (zh) * 2015-07-08 2015-11-04 国网上海市电力公司 一种智能电表故障抓取测试设备及其应用
US10275356B2 (en) 2015-12-11 2019-04-30 Quanta Computer Inc. Component carrier with converter board
CN107229965A (zh) * 2016-03-25 2017-10-03 深圳光启合众科技有限公司 智能机器人的拟人系统和模拟遗忘效果的方法
CN109313632A (zh) * 2016-04-22 2019-02-05 远程媒体有限责任公司 一种用于增强网络环境中数据处理的系统和方法
CN109313632B (zh) * 2016-04-22 2022-04-29 维迪阁传媒公司 一种用于增强网络环境中数据处理的系统和方法
CN108062258A (zh) * 2016-11-08 2018-05-22 爱思开海力士有限公司 用于错误恢复的循环交错的xor阵列
CN108062258B (zh) * 2016-11-08 2021-05-25 爱思开海力士有限公司 用于错误恢复的循环交错的xor阵列
CN108205306A (zh) * 2016-12-16 2018-06-26 罗伯特·博世有限公司 用于对控制器进行校准的方法和装置
CN108694098A (zh) * 2017-03-31 2018-10-23 桑迪士克科技有限责任公司 对于存储设备的不同存储器区域的比特顺序修改
CN109144407B (zh) * 2017-06-16 2021-12-21 希捷科技有限公司 用于监测存储器以便引退的系统和方法
CN109144407A (zh) * 2017-06-16 2019-01-04 希捷科技有限公司 用于监测存储器以便引退的系统和方法
CN110232001A (zh) * 2018-03-05 2019-09-13 三星电子株式会社 存储系统
CN109362236A (zh) * 2018-08-31 2019-02-19 深圳大学 基于双云端的数据安全存储方法、装置、设备及存储介质
CN109213105A (zh) * 2018-10-22 2019-01-15 暨南大学 一种可重构装置、实现可重构的方法及分布式控制系统
CN111415699B (zh) * 2019-01-07 2023-09-26 爱思开海力士有限公司 数据存储装置及其操作方法
CN111415699A (zh) * 2019-01-07 2020-07-14 爱思开海力士有限公司 数据存储装置及其操作方法
CN110852098B (zh) * 2019-10-24 2023-05-30 深圳市元征科技股份有限公司 一种数据修正方法及电子设备和存储介质
CN110852098A (zh) * 2019-10-24 2020-02-28 深圳市元征科技股份有限公司 一种数据修正方法及电子设备和存储介质
US12107601B2 (en) 2019-11-06 2024-10-01 Shenzhen Dapu Microelectronics Co., Ltd. Data error correction method, apparatus, device, and readable storage medium
WO2021088403A1 (zh) * 2019-11-06 2021-05-14 深圳大普微电子科技有限公司 一种数据纠错方法、装置、设备及可读存储介质
CN114333965A (zh) * 2020-09-30 2022-04-12 长鑫存储技术有限公司 存储器和存储器的测试方法
CN114333965B (zh) * 2020-09-30 2023-09-08 长鑫存储技术有限公司 存储器和存储器的测试方法
CN112216333B (zh) * 2020-09-30 2024-02-06 深圳市宏旺微电子有限公司 芯片测试方法及装置
CN112216333A (zh) * 2020-09-30 2021-01-12 深圳市宏旺微电子有限公司 芯片测试方法及装置
CN112289364A (zh) * 2020-10-13 2021-01-29 珠海全志科技股份有限公司 eMMC质量检测修复方法、装置及其存储介质
CN112256464A (zh) * 2020-10-20 2021-01-22 湖南国科微电子股份有限公司 硬盘数据纠错方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
US8195978B2 (en) 2012-06-05
EP2297742A1 (en) 2011-03-23
JP5220185B2 (ja) 2013-06-26
US8412978B2 (en) 2013-04-02
KR20110050404A (ko) 2011-05-13
EP2297742B1 (en) 2013-07-24
WO2009140700A1 (en) 2009-11-19
US20120221924A1 (en) 2012-08-30
US20090287956A1 (en) 2009-11-19
JP2011521397A (ja) 2011-07-21

Similar Documents

Publication Publication Date Title
CN102124527A (zh) 用于检测和替代失效的数据存储器的装置、系统和方法
US10656993B2 (en) Apparatus, system, and method to increase data integrity in a redundant storage system
US9306599B2 (en) Apparatus, system, and method for reconfiguring an array of storage elements
CN101622594B (zh) 使用空数据令牌指令管理来自于请求设备的数据的装置、系统和方法
CN101636712B (zh) 在存储控制器内服务对象请求的装置、系统和方法
CN104978281B (zh) 数据存储设备中的数据完整性管理
CN102597910B (zh) 存储设备中用于功率减小管理的装置、系统及方法
CN102272731A (zh) 用于预测固态存储装置中的故障的设备、系统和方法
CN104303162A (zh) 用于管理缓存接纳的系统和方法
CN103098034A (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1160289

Country of ref document: HK

C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20110713

REG Reference to a national code

Ref country code: HK

Ref legal event code: WD

Ref document number: 1160289

Country of ref document: HK