CN103348330A - 采用独立硅元件的动态较高级冗余模式管理 - Google Patents
采用独立硅元件的动态较高级冗余模式管理 Download PDFInfo
- Publication number
- CN103348330A CN103348330A CN2011800666799A CN201180066679A CN103348330A CN 103348330 A CN103348330 A CN 103348330A CN 2011800666799 A CN2011800666799 A CN 2011800666799A CN 201180066679 A CN201180066679 A CN 201180066679A CN 103348330 A CN103348330 A CN 103348330A
- Authority
- CN
- China
- Prior art keywords
- data
- flash memory
- page
- protection
- fault
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/18—Error detection or correction; Testing, e.g. of drop-outs
- G11B20/1883—Methods for assignment of alternate areas for defective areas
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/16—Protection against loss of memory contents
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/35—Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
- H03M13/353—Adaptation to the channel
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Probability & Statistics with Applications (AREA)
- Signal Processing (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Retry When Errors Occur (AREA)
Abstract
固态磁盘(SSD)控制器能实现采用独立硅元件的动态较高级冗余模式管理以在由控制器实施的SSD的操作期间非易失性(例如闪速)存储器元件发生故障时提供故障弱化。较高级错误校正提供较低级不可校正错误的校正。若检测到一个非易失性存储器元件的故障,则较高级错误校正从当前模式下的操作动态过渡至新模式下的操作。该过渡包括以下中的一种或多种:减小SSD上可用的自由空间、重新配置SSD的数据存储、恢复/存储发生故障的用户数据(如果可能的话)、以及确定/存储修改的较高级错误校正信息。随后继续在新模式下进行操作。若检测到非易失性存储器元件的另一故障,则再过渡到另一新模式。
Description
相关申请的交叉引用
在所附的申请数据表、请求或传递单(如适用,如果有的话)中列出了对该申请的优先权要求。在即时申请的类型所允许的范围内,为了所有目的,本申请结合在做出本申请时所有由即时申请的所有者共同拥有的下列申请供参考:
于2010年12月1日提交的美国临时申请(案号SF-10-10和序列号61/418,846),第一署名发明人为Jeremy Isaac Nathaniel Werner,且题为“Dynamic Higher-Level Redundancy Mode Management with IndependentSilicon Elements”;
于2011年1月18日提交的美国临时申请(案号SF-10-14和序列号61/433,918),第一署名发明人为Jeremy Isaac Nathaniel Werner,且题为“Higher-Level Redundancy Information Computation”;
于2011年3月11日提交的PCT申请(案号SF-10-01PCTB和序列号PCT/US11/28244),第一署名发明人为Hao Zhong,且题为“LDPC ErasureDecoding for Flash Memories”;以及
于2011年10月26日提交的PCT申请(案号SF-10-03PCT和序列号PCT/US11/57914),第一署名发明人为Yan Li,且题为“Adaptive ECCTechniques for Flash Memory Based Data Storage”。
技术领域
领域:需要闪存存储技术的进步来提供性能、效率和实用性的改进。
背景技术
现有技术:除非明确确定为大众所知或众所周知,否则本文中提及的技术和概念(包括用于上下文、定义或比较的目的)不应被理解为承认大众预先知晓这种技术和概念或者这种技术和概念为现有技术的一部分。无论是否明确结合,为了所有目的,本文中所引用的所有参考文献(若有的话)(包括专利、专利申请以及出版物)整体结合于此供参考。
发明内容
本发明可以多种方式实现,例如,这些方式为过程、制品、设备、系统、物质组分和计算机可读介质(诸如计算机可读存储介质(例如,光学和/或磁性大容量存储装置中的介质(诸如盘),或具有诸如闪存存储的非易失性存储器的集成电路))或计算机网络,其中,通过光学或电子通信链路发送程序指令。具体实施方式提供了能实现在上文认定的领域中的成本、盈利、性能、效率和使用实用性的提高的本发明的一种或多种实施方式的论述。具体实施方式包括用于促进对具体实施方式的其余部分理解的介绍。该介绍包括根据本文描述的概念的系统、方法、制品和计算机可读介质中的一个或多个的实例性实施方式。如在结论中更详细讨论,本发明涵盖所公布的权利要求的范围内的所有可能修改和变更。
附图说明
图1A示出了包括使用利用独立硅元件的动态较高级冗余模式管理来访问和控制非易失性存储器(NVM)的SSD控制器的固态硬盘(SSD)的实施方式的所选细节。
图1B示出了包括图1A的SSD的一个或多个实例的系统的各种实施方式的所选细节。
图2示出了映射逻辑块地址(LBA)的逻辑页号(LPN)部分的实施方式的所选细节。
图3示出了以读取单元地址访问非易失性存储器(NVM)以产生被组织为各个读取单元的读取数据的实施方式的所选细节,所述各个读取单元统一具有以读取单元的量测量的长度。
图4A示出了读取单元的实施方式的所选细节。
图4B示出了读取单元的另一实施方式的所选细节。
图5示出了具有多个域的报头的实施方式的所选细节。
图6示出了多个NVM装置的块、页和读取单元的实施方式的所选细节。
图7A示出了较高级冗余技术的各种实施方式的所选细节。
图7B示出了R-块的实施方式的所选细节。
图8示出了利用硅独立元件的冗余阵列(RASIE)的动态较高级冗余模式管理的实施方式的所选细节。
图9示出了具有由存储在一个或多个读取单元中的较高级冗余信息保护的自适应码率的较低级冗余信息的读取单元的实施方式。
图10示出了较高级冗余信息结果和数据源对应的实施方式的所选细节。
图11示出了较高级冗余信息计算的实施方式的所选细节。
图12示出了(在单一操作期间)从一个(较低级)故障恢复的实施方式的所选细节。
图13A至图13D示出了(在单一操作期间)从两个(较低级)故障恢复的实施方式的所选细节。
图14A和图14B示出了针对从NVM接收的页计算较高级冗余信息的实施方式的所选细节。
图15A至图15C示出了针对提供至NVM的写入撤回较高级冗余信息的计算的实施方式的所选细节。
附图中的附图标记列表
具体实施方式
以下将伴随示出本发明的所选细节的附图一起提供对本发明的一个或多个实施方式的详细描述。将结合实施方式来描述本发明。本文的实施方式应被理解为仅是实例性的,本发明不明确限于本文的任何或所有实施方式或者受到其限制,且本发明涵盖许多替代、修改和等同物。为避免阐述单调,各种字标签(包括但不限于:第一、最后、某些、各种、进一步、其他、特定的、选择、一些和显著的)可被应用于独立的实施方式组;如本文所使用,这些标签并不明确地意指传达质量、或任何形式的偏爱或偏见,而仅是为了方便在独立组之间区分。所公开的过程的一些操作顺序在本发明的范围内是可变的。无论在什么位置多个实施方式用于描述过程、方法和/或程序指令特征的变化,其他实施方式均被设想为根据预定的或动态确定的标准执行分别对应于多个实施方式的多个操作模式中的一个的静态和/或动态选择。许多具体细节被列于以下描述中,以提供对本发明的透彻理解。为实例的目的而提供细节,且本发明可根据未列出的一些或所有细节的权利要求来实践。为清楚的目的,与本发明相关的技术领域中已知的技术资料未被详细描述,使得本发明未被不必要模糊。
引言
仅包括该引言,以便于更迅速理解具体实施方式;本发明不限于在引言中提出的概念(包括明确的实例,若有的话),因为任何引言的段落均必须是整个主题的缩略图,且不意味着是详尽或限制的描述。例如,以下介绍仅对某些实施方式提供由空间和组织限定的概述信息。有许多其他实施方式,包括最终将针对其描绘权利要求的那些实施方式,在整个说明书的其余部分中讨论。
缩略语
这里所定义的各个速记缩写(例如,缩写词)中的至少一些是指本文所用的某些元件。
NAND闪存使用浮置栅极晶体管阵列来存储信息。在SLC技术中,每个位单元(例如,浮置栅极晶体管)能存储一比特信息。在MLC技术中,每个位单元能存储多比特信息。随着制造技术(例如,CMOS技术)尺寸缩小,每个浮置栅极存储更少电子。此外,随着存储容量和密度增大,每个位单元存储更多比特。因此,位单元内存储的值由更小的电压范围表示。检测过程中的不确定因素和/或所存储的电子量随时间的变化增大了错误存储或读取数据的可能性。使用一种或多种冗余和/或ECC技术(例如,以较低级)能实现从NAND闪存中正确检索其他损坏的数据,从而在某些使用场景中克服一些前述困难。
某些类型的SSD使用闪存来提供非易失性存储(例如,该闪存无需加电即保留信息)。使用一个或多个ECC和/或冗余技术(例如,以较高级)能实现从闪速存储器正确检索以其他方式损坏的数据,和/或即使在一个或多个闪速存储器元件暂时或永久故障时能实现SSD的适当系统级操作。
例如,SSD控制器能实现由独立硅元件进行动态较高级冗余模式管理,以在由控制器部分实施的SSD的操作期间一个或多个NVM(例如,闪存)元件发生故障时提供故障弱化。NVM的一部分被读取。若发生使用较低级冗余和/或错误校正(诸如根据一个或多个ECC技术)不可校正的错误,则较高级错误校正(诸如根据一个或多个RASIE技术和/或动态较高级冗余模式管理技术)被用于试图校正错误。若通过较低级和/或较高级错误校正和/或通过其他技术(诸如由一个或多个NVM元件报告的故障状态)检测到一个NVM元件的故障,则较高级错误校正从当前模式下的操作被动态过渡至新模式下的操作。所述过渡包括以下中的一种或多种:减小SSD上可用的自由空间、重新配置SSD的数据存储、恢复/存储发生故障的用户数据(如果可能的话)、以及确定/存储修改的较高级错误校正信息。随后继续在新模式下进行操作。若由现在在新模式下操作的较高级错误校正检测到另一NVM元件的其他故障,则再过渡到另一较高级错误校正模式。写入NVM根据较高级错误校正操作模式,包括根据较高级错误校正操作模式和写数据确定/存储较高级错误校正信息。
在一些实施方式和/或使用场景中,根据较高级冗余信息的计算确定/存储较高级错误校正信息。较高级冗余信息计算能使SSD控制器提供较高级冗余能力以在由控制器部分实施的SSD的操作期间在非易失性(例如,闪存)存储器元件的故障的环境下维持可靠的操作。经由由较高级冗余信息保护的一部分数据(例如,条纹)中的所有页的XOR使用奇偶校验编码计算较高级冗余信息的第一部分。使用加权和技术计算较高级冗余信息的第二部分,在计算加权和时,所述部分中的每一页被分配唯一的非零“指数”作为权重。在有限域(诸如伽罗华域,或诸如整数模p,其中,p是素数)上进行算术运算。
较高级冗余信息的一部分可以任何顺序计算,诸如由在NVM元件上进行的一个或多个读操作完成的顺序确定的顺序,或诸如基于从NVM元件返回和/或可用的数据的顺序的顺序,在各种实施方式中,能实现减小或消除缓冲。在各种实施方式中,任何顺序的计算性能使用相对较少的临时和/或中间缓冲和/或状态来计算恢复数据值和/或撤回写入。较高级冗余信息的一部分可通过任何程度的并行度计算,诸如由可用的专用硬件元件确定,在各种实施方式中,能实现减少延迟处理和/或减小存储器(例如,NVM)带宽使用。
在一些实施方式中,I/O装置,诸如SSD,包括SSD控制器。SSD控制器用作SSD的主机接口和NVM之间的桥接器,并经由SSD的主机接口执行从计算主机发送的主机协议的命令。至少一些命令将SSD引导至分别利用从和向计算主机发送的数据写入和读取NVM。在其他实施方式中,SSD控制器被启用来使用映射以在主机协议的LBA和在NVM中的物理存储地址之间转换。在其他实施方式中,至少一部分映射被用于I/O装置的专用存储(对于计算主机不可视)。例如,由计算主机无法访问的LBA的一部分由I/O装置使用来管理访问日志、统计或其他专用数据。
在一些实施方式中,NVM中的不同大小的量的存取压缩数据在某些使用场景中提供了改进的存储效率。例如,SSD控制器从计算主机(例如,关于磁盘写入命令)接收(未压缩)数据、压缩数据,并将压缩数据存储到闪存。响应于来自计算主机的随后请求(例如,关于磁盘读命令),SSD控制器从闪存读取压缩数据、解压缩压缩数据,并向计算主机提供未压缩数据。压缩数据根据不同大小的量被存储在闪存中,量大小由于例如压缩算法、操作模式和对各种数据的压缩有效性而不同。SSD控制器部分通过查阅包括的映射表来解压缩数据,以确定报头被存储在闪存中。SSD控制器解析从闪存中获得的报头,以确定适当(压缩)的数据被存储在闪存中。SSD控制器解压缩来自闪存的适当数据,以产生未压缩数据来提供至计算主机。在即时应用中,未压缩(及其变形)与解压缩(及其变形)同义。
在各种实施方式中,SSD控制器包括用于接口连接计算主机的主机接口、用于接口连接NVM(诸如闪存)的接口、以及用于控制接口并进行(和/或控制进行的各个方面)压缩与解压缩以及较低级错误校正、较高级错误校正、和由独立硅元件进行的动态较高级冗余模式管理的电路。
根据各种实施方式,一些主机接口与以下中的一个或多个兼容:USB接口标准、CF接口标准、MMC接口标准、eMMC接口标准、雷电(Thunderbolt)接口标准、UFS接口标准、SD接口标准、记忆棒接口标准、xD-图像卡接口标准、IDE接口标准、SATA接口标准、SCSI接口标准、SAS接口标准和PCIe接口标准。根据各种实施方式,计算主机是以下中的所有或任何部分:计算机、工作站计算机、服务器计算机、存储服务器、SAN、NAS装置、DAS装置、存储设备、PC、膝上型计算机、笔记本计算机、上网本计算机、平板装置或计算机、超极本计算机、电子阅读装置(诸如电子阅读器)、PDA、导航系统、(手持式)GPS装置、汽车控制系统、车载媒体控制系统或计算机、打印机、复印机或传真机或一体机、POS装置、现金寄存器、媒体播放器、电视机、媒体录像机、DVR、数码照相机、蜂窝手机、无绳电话听筒和电子游戏机。在一些实施方式中,接口主机(诸如SAS/SATA桥接器)作为计算主机和/或计算主机的桥接器而操作。
在各种实施方式中,SSD控制器包括一个或多个处理器。处理器执行固件以控制和/或进行SSD控制器的操作。SSD控制器与计算主机通信以发送和接收命令和/或状态以及数据。计算主机执行操作系统、驱动器和应用中的一个或多个。可选地和/或选择性地经由驱动器和/或经由应用进行通过计算主机与SSD控制器的通信。在第一实例中,对SSD控制器的所有通信经由驱动器进行,且应用对驱动器提供较高级命令,驱动器将所述命令转换成SSD控制器特定的命令。在第二实例中,驱动器实施旁路模式,且应用被启用以经由驱动器将特定命令发送至SSD控制器。在第三实例中,PCIe SSD控制器支持一个或多个虚拟功能(VF),一旦被配置为绕过驱动器直接与SSD控制器通信即能实现应用。
根据各种实施方式,一些SSD与形状因素、电接口和/或由磁性和/或光学非易失性存储装置(诸如HDD、CD驱动器和DVD驱动器)使用的协议兼容。在各种实施方式中,SSD使用零个或多个奇偶校验码、零个或多个RS码、零个或多个BCH码、零个或多个维特比或其他网格码和零个或多个LDPC码的各种组合。
实例性实施方式
在结束对具体实施方式的介绍时,如下是实例性实施方式的集合,包括明确列举为“EC”(实例性组合)的至少一些实施方式,根据本文所述的概念提供对各种实施方式类型的额外描述;这些实施方式并不意味着是相互排斥的、详尽无遗的或限制性的;且本发明并不限于这些实例性实施方式,而是涵盖所公布的权利要求的范围内的所有可能的修改和变更。
EC1)一种系统,包括:
用于计算k个冗余数据部分以保护n-k个有用数据部分的装置;
用于将所述k个冗余数据部分中的每一个和所述n-k个有用数据部分中的每一个存储在单独的相应区域中的装置,所述相应区域中的每一个在n个物理装置的相应一个中;
用于在使得一个所述相应区域不再可用的故障之后计算j个冗余数据部分以保护n-1-j个有用数据部分的装置;以及
其中,j<=k。
EC2)根据EC1所述的系统,其中,所述用于计算k个冗余数据部分以保护n-k个有用数据部分的装置可在第一数据保护模式下操作,用于计算j个冗余数据部分以保护n-1-j个有用数据部分的所述装置可在第二数据保护模式下操作,且所述系统还包括用于响应所述故障从所述第一数据保护模式下的操作切换至所述第二数据保护模式下的操作的装置。
EC3)根据EC1所述的系统,其中,当j==k时,减少所述有用数据部分的总量且至少保留保护程度。
EC4)根据EC3所述的系统,其中,所述保护程度是防止高达j个所述相应区域的故障的保护。
EC5)根据EC1所述的系统,其中,当j==k-1且j>=1时,保留所述有用数据部分的总量,降低保护程度,且保护所述有用数据部分。
EC6)根据EC5所述的系统,其中,所降低的保护程度是防止高达j-1个所述相应区域的故障的保护。
EC7)根据EC1所述的系统,
其中,所述n个物理装置中的每一个包括多个所述相应区域;
所述系统还包括用于在多组所述相应区域中的每一组中存储包括有用数据子集和保护所述有用数据子集的冗余数据子集的相应组数据的装置,所述冗余数据子集被存储在与所述有用数据子集不同的一个所述n个物理装置中;以及
其中,所述相应区域的组中的每一个包括所述n个物理装置中的每一个的不超过一个的相应区域,且用于存储的所述装置根据可选地被存储在所述n个物理装置的n个或更少的不同组中的每个所述相应组数据。
EC8)根据EC7所述的系统,其中,在所述故障之前,数据组的特定一个的所述有用数据子集包括所述n-k个有用数据部分,且特定数据组的所述冗余数据子集包括所述k个冗余数据部分。
EC9)根据EC7所述的系统,其中,用于存储的所述装置根据用于存储数据组的第一个的所述有用数据子集的一部分的所述n个物理装置的特定一个中的所述相应区域的第一个,并进一步根据用于存储所述数据组的第二个的所述冗余数据子集的一部分或全部的特定物理装置中的所述相应区域的第二个。
EC10)根据EC7所述的系统,其中,在所述相应区域的第一个中的存储量不同于在所述相应区域的第二个中的存储量。
EC11)根据EC10所述的系统,其中,第一相应区域和第二相应区域位于所述n个物理装置的同一个中。
EC12)一种系统,包括:
用于在第一较高级冗余模式下操作的装置,包括用于在存储器的n个相应非重叠区域中存储n个信息部分的装置;
用于在第二较高级冗余模式下操作的装置,包括用于在所述存储器的n-1个相应非重叠区域中存储n-1个信息部分的装置;
用于检测所述n个相应非重叠区域中的发生故障的一个的故障的装置;
用于响应于所述故障从经由用于在所述第一较高级冗余模式下操作的所述装置进行的操作动态过渡至经由用于在所述第二较高级冗余模式下操作的所述装置进行的操作的装置,所述n个相应非重叠区域的n-1个是不包括所述n个相应非重叠区域的所述发生故障的一个的n个相应非重叠区域;
其中,所述n个信息部分中的每一个包括相应n-k个数据信息部分和被计算以保护所述相应n-k个数据信息部分的相应k个冗余信息部分;
其中,所述n-1个信息部分中的每一个包括相应n-1-j个数据信息部分和被计算以保护所述相应n-1-j个数据信息部分的相应j个冗余信息部分;
其中,j<=K;以及
其中,所述n个相应非重叠区域中的每一个位于所述存储器的n个物理装置的相应一个中。
EC13)根据EC12所述的系统,其中,当j==k时,减少所述数据信息部分的总量并至少保留保护程度。
EC14)根据EC13所述的系统,其中,所述保护程度是防止高达所述n个相应非重叠区域的j个的故障的保护。
EC15)根据EC12所述的系统,其中,当j==k-1且j>=1时,保留所述数据信息部分的总量,降低保护程度,且保护所述数据信息部分。
EC16)根据EC15所述的系统,其中,所降低的保护程度是防止高达所述n个相应非重叠区域的j-1个的故障的保护。
EC17)根据EC1或EC12所述的系统,其中,至少一个用于存储的所述装置响应于来自计算主机的写入请求。
EC18)根据EC1或EC12所述的系统,其中,至少一个用于存储的所述装置包括用于操作闪存接口的装置。
EC19)根据EC1或EC12所述的系统,其中,所述n个物理装置中的至少一个包括一个或多个闪存。
EC20)一种系统,包括:
用于响应于来自计算主机的读取和/或写入请求根据当前较高级冗余模式管理一个或多个闪存的装置;以及
用于响应于检测一个或多个所述闪存的一个或多个部分的故障来动态过渡所述当前较高级冗余模式的装置。
EC21)根据EC20所述的系统,其中,用于动态过渡的所述装置包括用于减小自由空间的装置。
EC22)根据EC20所述的系统,其中,用于动态过渡的所述装置包括用于根据目标较高级冗余模式重新配置数据存储的装置。
EC23)根据EC20所述的系统,其中,用于动态过渡的所述装置包括用于根据目标较高级冗余模式确定和存储修改的较高级冗余信息的装置。
EC24)根据EC20所述的系统,其中,当前较高级冗余模式是第一较高级冗余模式,且用于动态过渡当前较高级冗余模式的装置包括用于响应于第一故障将当前较高级冗余模式过渡到第二较高级冗余模式的装置,以及用于响应于第二故障将当前较高级冗余模式过渡到第三较高级冗余模式的装置。
EC25)根据EC24所述的系统,其中,第二故障是在第一故障之后,且可用自由空间在第三较高级冗余模式下比在第二较高级冗余模式下更小。
EC26)根据EC17或EC20所述的系统,还包括用于接口连接利用计算主机的请求的装置。
EC27)根据EC26所述的系统,其中,用于接口连接利用计算主机的请求的装置可与存储接口标准兼容。
EC28)根据EC20所述的系统,还包括用于接口连接用于利用闪存的管理的装置的装置。
EC29)根据EC28所述的系统,其中,用于接口连接用于利用闪存的管理的装置的装置包括用于操作闪存接口的装置。
EC30)根据EC20所述的系统,还包括:
用于接口连接利用计算主机的请求的装置;以及
用于接口连接利用闪存的管理的装置。
EC31)根据EC27所述的系统,其中,系统在单一集成电路(IC)中实施。
EC32)根据EC27所述的系统,其中,系统在固态磁盘(SSD)中实施。
EC33)根据EC17或EC20所述的系统,还包括用于操作计算主机以产生至少一些读取和/或写入请求的装置。
EC34)根据EC19或EC20所述的系统,还包括用于操作至少一个闪存的装置。
EC35)一种方法,包括:
计算k个冗余数据部分以保护n-k个有用数据部分;
将所述k个冗余数据部分中的每一个和所述n-k个有用数据部分中的每一个存储在单独的相应区域中,所述相应区域中的每一个在n个物理装置的相应一个中;
在使得一个所述相应区域不再可用的故障之后计算j个冗余数据部分以保护n-1-j个有用数据部分;以及
其中,j<=k。
EC36)根据EC35所述的方法,其中,所述计算k个冗余数据部分以保护n-k个有用数据部分是第一数据保护模式,计算j个冗余数据部分以保护n-1-j个有用数据部分是第二数据保护模式,且所述方法还包括响应所述故障从所述第一数据保护模式切换至所述第二数据保护模式。
EC37)根据EC35所述的方法,其中,当j==k时,减少所述有用数据部分的总量且至少保留保护程度。
EC38)根据EC37所述的方法,其中,所述保护程度是防止高达j个所述相应区域的故障的保护。
EC39)根据EC35所述的方法,其中,当j==k-1且j>=1时,保留所述有用数据部分的总量,降低保护程度,且保护所述有用数据部分。
EC40)根据EC39所述的方法,其中,所降低的保护程度是防止高达j-1个所述相应区域的故障的保护。
EC41)根据EC35所述的方法,
其中,所述n个物理装置中的每一个包括多个所述相应区域;
所述方法还包括在多组所述相应区域中的每一组中存储包括有用数据子集和保护所述有用数据子集的冗余数据子集的相应组数据,所述冗余数据子集被存储在与所述有用数据子集不同的一个所述n个物理装置中;以及
其中,所述相应区域的组中的每一个包括所述n个物理装置中的每一个的不超过一个的相应区域,且所述存储根据可选地被存储在所述n个物理装置的n个或更少的不同组中的每个所述相应组数据。
EC42)根据EC41所述的方法,其中,在所述故障之前,数据组的特定一个的所述有用数据子集包括所述n-k个有用数据部分,且特定数据组的所述冗余数据子集包括所述k个冗余数据部分。
EC43)根据EC41所述的方法,其中,所述存储根据用于存储数据组的第一个的所述有用数据子集的一部分的所述n个物理装置的特定一个中的所述相应区域的第一个,并进一步根据用于存储所述数据组的第二个的所述冗余数据子集的一部分或全部的特定物理装置中的所述相应区域的第二个。
EC44)根据EC41所述的方法,其中,在所述相应区域的第一个中的存储量不同于在所述相应区域的第二个中的存储量。
EC45)根据EC44所述的方法,其中,第一相应区域和第二相应区域位于所述n个物理装置的同一个中。
EC46)一种方法,包括:
在第一较高级冗余模式下操作,包括在存储器的n个相应非重叠区域中存储n个信息部分;
检测所述n个相应非重叠区域中的发生故障的一个的故障;
响应于所述故障从在所述第一较高级冗余模式下的操作动态过渡至在所述第二较高级冗余模式下的操作,包括在n个相应非重叠区域的n-1个中存储n-1个信息部分,所述n个相应非重叠区域的n-1个是不包括所述n个相应非重叠区域的所述发生故障的一个的n个相应非重叠区域;
其中,所述n个信息部分中的每一个包括相应n-k个数据信息部分和被计算以保护所述相应n-k个数据信息部分的相应k个冗余信息部分;
其中,所述n-1个信息部分中的每一个包括相应n-1-j个数据信息部分和被计算以保护所述相应n-1-j个数据信息部分的相应j个冗余信息部分;
其中,j<=K;以及
其中,所述n个相应非重叠区域中的每一个位于所述存储器的n个物理装置的相应一个中。
EC47)根据EC46所述的方法,其中,当j==k时,减少所述数据信息部分的总量并至少保留保护程度。
EC48)根据EC47所述的方法,其中,所述保护程度是防止高达所述n个相应非重叠区域的j个的故障的保护。
EC49)根据EC46所述的方法,其中,当j==k-1且j>=1时,保留所述数据信息部分的总量,降低保护程度,且保护所述数据信息部分。
EC50)根据EC49所述的方法,其中,所降低的保护程度是防止高达所述n个相应非重叠区域的j-1个的故障的保护。
EC51)根据EC35或EC46所述的方法,其中,至少一个存储动作的至少一部分响应于来自计算主机的写入请求。
EC52)根据EC35或EC46所述的方法,其中,至少一个存储动作包括操作闪存接口。
EC53)根据EC35或EC46所述的方法,其中,所述n个物理装置中的至少一个包括一个或多个闪存。
EC54)一种方法,包括:
响应于来自计算主机的读取和/或写入请求根据当前较高级冗余模式管理一个或多个闪存;以及
响应于检测一个或多个所述闪存的一个或多个部分的故障来动态过渡所述当前较高级冗余模式。
EC55)根据EC54所述的方法,其中,动态过渡包括减小自由空间。
EC56)根据EC54所述的方法,其中,动态过渡包括根据目标较高级冗余模式重新配置数据存储。
EC57)根据EC54所述的方法,其中,动态过渡包括根据目标较高级冗余模式确定和存储修改的较高级冗余信息。
EC58)根据EC54所述的方法,其中,当前较高级冗余模式是第一较高级冗余模式,且动态过渡当前较高级冗余模式响应于第一故障将当前较高级冗余模式过渡到第二较高级冗余模式,以及响应于第二故障将当前较高级冗余模式过渡到第三较高级冗余模式。
EC59)根据EC58所述的方法,其中,第二故障是在第一故障之后,且可用自由空间在第三较高级冗余模式下比在第二较高级冗余模式下更小。
EC60)根据EC51或EC54所述的方法,还包括接口连接利用计算主机的请求。
EC61)根据EC60所述的方法,其中,接口连接利用计算主机的请求可与存储接口标准兼容。
EC62)根据EC54所述的方法,还包括接口连接利用闪存的管理。
EC63)根据EC62所述的方法,其中,接口连接利用闪存的管理包括操作闪存接口。
EC64)根据EC54所述的方法,还包括:
接口连接利用计算主机的请求;以及
接口连接利用闪存的管理。
EC65)根据EC61所述的方法,其中,所述方法在单一集成电路(IC)中实施。
EC66)根据EC61所述的方法,其中,所述方法在固态磁盘(SSD)中实施。
EC67)根据EC51或EC54所述的方法,还包括操作计算主机以产生至少一些读取和/或写入请求。
EC68)根据EC53或EC54所述的方法,还包括操作至少一个闪存。
EC69)一种系统,包括:
主机接口,被启用以接口连接到计算主机;
存储器接口,被启用以接口连接到至少n个物理装置;
控制器,被启用以
计算k个冗余数据部分以保护n-k个有用数据部分;
响应于经由主机接口从计算主机接收的一个或多个写入命令,将所述k个冗余数据部分中的每一个和所述n-k个有用数据部分中的每一个存储在单独的相应区域中,所述相应区域中的每一个在n个物理装置的相应一个中;以及
在使得一个所述相应区域不再可用的故障之后计算j个冗余数据部分以保护n-1-j个有用数据部分;以及
其中,j<=k。
EC70)根据EC69所述的系统,还包括硬件逻辑电路,被启用来计算k个冗余数据部分的任何一个或多个的全部或任何部分。
EC71)根据EC69所述的系统,其中,所述计算k个冗余数据部分以保护n-k个有用数据部分是根据在第一数据保护模式下操作的控制器,计算j个冗余数据部分以保护n-1-j个有用数据部分是根据在第二数据保护模式下操作的控制器,且所述控制器还能实现响应所述故障从在所述第一数据保护模式下的操作切换至在所述第二数据保护模式下的操作。
EC72)根据EC69所述的系统,其中,当j==k时,减少所述有用数据部分的总量且至少保留保护程度。
EC73)根据EC72所述的系统,其中,所述保护程度是防止高达j个所述相应区域的故障的保护。
EC74)根据EC69所述的系统,其中,当j==k-1且j>=1时,保留所述有用数据部分的总量,降低保护程度,且保护所述有用数据部分。
EC75)根据EC74所述的系统,其中,所降低的保护程度是防止高达j-1个所述相应区域的故障的保护。
EC76)根据EC69所述的系统,
其中,所述n个物理装置中的每一个包括多个所述相应区域;
其中,所述控制器还能实现在多组所述相应区域中的每一组中存储包括有用数据子集和保护所述有用数据子集的冗余数据子集的相应组数据,所述冗余数据子集被存储在与所述有用数据子集不同的一个所述n个物理装置中;以及
其中,所述相应区域的组中的每一个包括所述n个物理装置中的每一个的不超过一个的相应区域,且所述存储根据可选地被存储在所述n个物理装置的n个或更少的不同组中的每个所述相应组数据。
EC77)根据EC76所述的系统,其中,在所述故障之前,数据组的特定一个的所述有用数据子集包括所述n-k个有用数据部分,且特定数据组的所述冗余数据子集包括所述k个冗余数据部分。
EC78)根据EC76所述的系统,其中,所述存储根据用于存储数据组的第一个的所述有用数据子集的一部分的所述n个物理装置的特定一个中的所述相应区域的第一个,并进一步根据用于存储所述数据组的第二个的所述冗余数据子集的一部分或全部的特定物理装置中的所述相应区域的第二个。
EC79)根据EC76所述的系统,其中,在所述相应区域的第一个中的存储量不同于在所述相应区域的第二个中的存储量。
EC80)根据EC79所述的系统,其中,第一相应区域和第二相应区域位于所述n个物理装置的同一个中。
EC81)一种系统,包括:
主机接口,被启用以接口连接到计算主机;
存储器接口,被启用以接口连接到至少n个物理装置;
控制器,被启用以
在第一较高级冗余模式下,根据在存储器的n个相应非重叠区域中存储n个信息部分来操作;
检测所述n个相应非重叠区域中的发生故障的一个的故障;
响应于所述故障从在所述第一较高级冗余模式下的操作动态过渡至在所述第二较高级冗余模式下的操作,所述第二较高级冗余模式根据在n个相应非重叠区域的n-1个中存储n-1个信息部分,所述n个相应非重叠区域的n-1个是不包括所述n个相应非重叠区域的所述发生故障的一个的n个相应非重叠区域;
其中,所述n个信息部分中的每一个包括相应n-k个数据信息部分和被计算以保护所述相应n-k个数据信息部分的相应k个冗余信息部分;
其中,所述n-1个信息部分中的每一个包括相应n-1-j个数据信息部分和被计算以保护所述相应n-1-j个数据信息部分的相应j个冗余信息部分;
其中,j<=K;以及
其中,所述n个相应非重叠区域中的每一个位于所述存储器的n个物理装置的相应一个中。
EC82)根据EC81所述的系统,还包括硬件逻辑电路,被启用来计算k个冗余信息部分中的任何一个或多个的全部或任何部分。
EC83)根据EC81所述的系统,其中,当j==k时,减少所述数据信息部分的总量并至少保留保护程度。
EC84)根据EC83所述的系统,其中,所述保护程度是防止高达所述n个相应非重叠区域的j个的故障的保护。
EC85)根据EC81所述的系统,其中,当j==k-1且j>=1时,保留所述数据信息部分的总量,降低保护程度,且保护所述数据信息部分。
EC86)根据EC85所述的系统,其中,所降低的保护程度是防止高达所述n个相应非重叠区域的j-1个的故障的保护。
EC87)根据EC69或EC81所述的系统,其中,至少一个存储动作的至少一部分响应于来自计算主机的写入请求。
EC88)根据EC69或EC81所述的系统,其中,存储器接口包括闪存接口。
EC89)根据EC69或EC81所述的系统,其中,所述n个物理装置中的至少一个包括一个或多个闪存。
EC90)一种系统,包括:
主机接口,被启用以接口连接到计算主机;
控制器,被启用以
响应于来自计算主机的读取和/或写入请求根据当前较高级冗余模式管理一个或多个闪存;以及
响应于检测一个或多个所述闪存的一个或多个部分的故障来动态过渡所述当前较高级冗余模式。
EC91)根据EC90所述的系统,还包括硬件逻辑电路,被启用来计算在当前较高级冗余模式下可用的冗余信息。
EC92)根据EC90所述的系统,其中,控制器还被启用来根据动态过渡减小自由空间。
EC93)根据EC90所述的系统,其中,控制器还被启用来根据目标较高级冗余模式和根据动态过渡重新配置数据存储。
EC94)根据EC90所述系统,其中,控制器还被启用来根据目标较高级冗余模式和根据动态过渡确定和存储修改的较高级冗余信息。
EC95)根据EC90所述的系统,其中,当前较高级冗余模式是第一较高级冗余模式,且控制器还被启用来响应于第一故障将当前较高级冗余模式过渡到第二较高级冗余模式,以及响应于第二故障将当前较高级冗余模式过渡到第三较高级冗余模式。
EC96)根据EC95所述的系统,其中,第二故障在第一故障之后,且可用自由空间在第三较高级冗余模式下比在第二较高级冗余模式下更小。
EC97)根据EC90所述的系统,其中,主机接口可与存储接口标准兼容。
EC98)根据EC90所述的系统,还包括闪存接口,被启用以接口连接闪存。
EC99)根据EC88或EC97所述的系统,其中,所述系统在单一集成电路(IC)中实施。
EC100)根据EC88或EC97所述的系统,其中,所述系统在固态磁盘(SSD)中实施。
EC101)根据EC87或EC90所述的系统,还包括计算主机。
EC102)根据EC89或EC90所述的系统,还包括至少一个闪存。EC103)一种有形计算机可读介质,具有存储在其中的一组指令,所述指令在由处理元件执行时使处理元件执行包括以下的操作:
计算k个冗余数据部分以保护n-k个有用数据部分;
将所述k个冗余数据部分中的每一个和所述n-k个有用数据部分中的每一个存储在单独的相应区域中,所述相应区域中的每一个在n个物理装置的相应一个中;
在使得一个所述相应区域不再可用的故障之后计算j个冗余数据部分以保护n-1-j个有用数据部分;以及
其中,j<=k。
EC104)根据EC103所述的有形计算机可读介质,其中,所述计算k个冗余数据部分以保护n-k个有用数据部分根据第一数据保护模式,计算j个冗余数据部分以保护n-1-j个有用数据部分根据第二数据保护模式,且还包括响应所述故障从所述第一数据保护模式切换至所述第二数据保护模式。
EC105)根据EC103所述的有形计算机可读介质,其中,当j==k时,减少所述有用数据部分的总量且至少保留保护程度。
EC106)根据EC105所述的有形计算机可读介质,其中,所述保护程度是防止高达j个所述相应区域的故障的保护。
EC107)根据EC103所述的有形计算机可读介质,其中,当j==k-1且j>=1时,保留所述有用数据部分的总量,降低保护程度,且保护所述有用数据部分。
EC108)根据EC107所述的有形计算机可读介质,其中,所降低的保护程度是防止高达j-1个所述相应区域的故障的保护。
EC109)根据EC103所述的有形计算机可读介质,
其中,所述n个物理装置中的每一个包括多个所述相应区域;
还包括在多组所述相应区域中的每一组中存储包括有用数据子集和保护所述有用数据子集的冗余数据子集的相应组数据,所述冗余数据子集被存储在与所述有用数据子集不同的一个所述n个物理装置中;以及
其中,所述相应区域的组中的每一个包括所述n个物理装置中的每一个的不超过一个的相应区域,且所述存储根据可选地被存储在所述n个物理装置的n个或更少的不同组中的每个所述相应组数据。
EC110)根据EC109所述的有形计算机可读介质,其中,在所述故障之前,数据组的特定一个的所述有用数据子集包括所述n-k个有用数据部分,且特定数据组的所述冗余数据子集包括所述k个冗余数据部分。
EC111)根据EC109所述的有形计算机可读介质,其中,所述存储根据用于存储数据组的第一个的所述有用数据子集的一部分的所述n个物理装置的特定一个中的所述相应区域的第一个,并进一步根据用于存储所述数据组的第二个的所述冗余数据子集的一部分或全部的特定物理装置中的所述相应区域的第二个。
EC112)根据EC109所述的有形计算机可读介质,其中,在所述相应区域的第一个中的存储量不同于在所述相应区域的第二个中的存储量。
EC113)根据EC112所述的有形计算机可读介质,其中,第一相应区域和第二相应区域位于所述n个物理装置的同一个中。
EC114)一种有形计算机可读介质,具有存储在其中的一组指令,所述指令在由处理元件执行时使处理元件执行包括以下的操作:
在第一较高级冗余模式下操作,包括在存储器的n个相应非重叠区域中存储n个信息部分;
检测所述n个相应非重叠区域中的发生故障的一个的故障;
响应于所述故障从在所述第一较高级冗余模式下的操作动态过渡至在所述第二较高级冗余模式下的操作,包括在n个相应非重叠区域的n-1个中存储n-1个信息部分,所述n个相应非重叠区域的n-1个是不包括所述n个相应非重叠区域的所述发生故障的一个的n个相应非重叠区域;
其中,所述n个信息部分中的每一个包括相应n-k个数据信息部分和被计算以保护所述相应n-k个数据信息部分的相应k个冗余信息部分;
其中,所述n-1个信息部分中的每一个包括相应n-1-j个数据信息部分和被计算以保护所述相应n-1-j个数据信息部分的相应j个冗余信息部分;
其中,j<=K;以及
其中,所述n个相应非重叠区域中的每一个位于所述存储器的n个物理装置的相应一个中。
EC115)根据EC114所述的有形计算机可读介质,其中,当j==k时,减少所述数据信息部分的总量并至少保留保护程度。
EC116)根据EC115所述的有形计算机可读介质,其中,所述保护程度是防止高达所述n个相应非重叠区域的j个的故障的保护。
EC117)根据EC114所述的有形计算机可读介质,其中,当j==k-1且j>=1时,保留所述数据信息部分的总量,降低保护程度,且保护所述数据信息部分。
EC118)根据EC117所述的有形计算机可读介质,其中,所降低的保护程度是防止高达所述n个相应非重叠区域的j-1个的故障的保护。
EC119)根据EC103或EC114所述的有形计算机可读介质,其中,至少一个存储动作的至少一部分响应于来自计算主机的写入请求。
EC120)根据EC103或EC114所述的有形计算机可读介质,其中,至少一个存储动作包括操作闪存接口。
EC121)根据EC103或EC114所述的有形计算机可读介质,其中,所述n个物理装置中的至少一个包括一个或多个闪存。
EC122)一种有形计算机可读介质,具有存储在其中的一组指令,所述指令在由处理元件执行时使处理元件执行包括以下的操作:
响应于来自计算主机的读取和/或写入请求根据当前较高级冗余模式管理一个或多个闪存;以及
响应于检测一个或多个所述闪存的一个或多个部分的故障来动态过渡所述当前较高级冗余模式。
EC123)根据EC122所述的有形计算机可读介质,其中,动态过渡包括减小自由空间。
EC124)根据EC122所述的有形计算机可读介质,其中,动态过渡包括根据目标较高级冗余模式重新配置数据存储。
EC125)根据EC122所述的有形计算机可读介质,其中,动态过渡包括根据目标较高级冗余模式确定和存储修改的较高级冗余信息。
EC126)根据EC122所述的有形计算机可读介质,其中,当前较高级冗余模式是第一较高级冗余模式,且动态过渡当前较高级冗余模式响应于第一故障将当前较高级冗余模式过渡到第二较高级冗余模式,以及响应于第二故障将当前较高级冗余模式过渡到第三较高级冗余模式。
EC127)根据EC126所述的有形计算机可读介质,其中,第二故障是在第一故障之后,且可用自由空间在第三较高级冗余模式下比在第二较高级冗余模式下更小。
EC128)根据EC119或EC122所述的有形计算机可读介质,还包括接口连接利用计算主机的请求。
EC129)根据EC128所述的有形计算机可读介质,其中,接口连接利用计算主机的请求可与存储接口标准兼容。
EC130)根据EC122所述的有形计算机可读介质,还包括接口连接利用闪存的管理。
EC131)根据EC130所述的有形计算机可读介质,其中,接口连接利用闪存的管理包括操作闪存接口。
EC132)根据EC122所述的有形计算机可读介质,还包括:
接口连接利用计算主机的请求;以及
接口连接利用闪存的管理。EC133)根据EC129所述的有形计算机可读介质,其中,所述有形计算机可读介质在单一集成电路(IC)中实施。
EC134)根据EC129所述的有形计算机可读介质,其中,所述有形计算机可读介质在固态磁盘(SSD)中实施。
EC135)根据EC119或EC122所述的有形计算机可读介质,还包括操作计算主机以产生至少一些读取和/或写入请求。
EC136)根据EC121或EC122所述的有形计算机可读介质,还包括操作至少一个闪存。
EC137)任何前述EC均具有存储接口标准,其中,存储接口标准包括以下中的一个或多个:
通用串行总线(USB)接口标准,
紧凑型闪存(CF)接口标准,
多媒体卡(MMC)接口标准,
嵌入式MMC(eMMC)接口标准,
雷电(Thunderbolt)接口标准,
UFS接口标准,
安全数字(SD)接口标准,
记忆棒接口标准,
xD-图像卡接口标准,
集成驱动电子设备(IDE)接口标准,
串行高级技术附件(SATA)接口标准,
外部SATA(eSATA)接口标准,
小型计算机系统接口(SCSI)接口标准,
串行连接小型计算机系统接口(SAS)接口标准,
光纤信道接口标准,
以太网接口标准,以及
外围组件互连快速(PCIe)接口标准。
EC138)任何前述EC均具有闪存接口,其中,闪存接口与以下中的一个或多个兼容:
开放式NAND闪存接口(ONFI),
切换模式接口,
双倍数据速率(DDR)同步接口,
DDR2同步接口;
同步接口,以及
异步接口。
EC139)任何前述EC均具有计算主机,其中,计算主机包括以下中的一个或多个:
计算机,
工作站计算机,
服务器计算机,
存储服务器,
存储连接网络(SAN),
网络连接存储(NAS)装置,
直接连接存储(DAS)装置,
存储设备,
个人计算机(PC),
膝上型计算机,
笔记本计算机,
上网本计算机,
平板装置或计算机,
超极本计算机,
电子阅读装置(电子阅读器),
个人数字助理(PDA),
导航系统,
(手持式)全球定位系统(GPS)装置,
汽车控制系统,
车载媒体控制系统或计算机,
打印机、复印机或传真机或一体机,
销售点POS装置,
现金寄存器,
媒体播放器,
电视机,
媒体录像机,
数字视频录像机(DVR),
数码照相机,
蜂窝手机,
无绳电话听筒,以及
电子游戏机。
EC140)任何前述EC均具有至少一个闪存,其中,至少一个闪存的至少一部分包括以下中的一个或多个:
NAND闪存技术存储单元,以及
NOR闪存技术存储单元。
EC141)任何前述EC均具有至少一个闪存,其中,至少一个闪存的至少一部分包括以下中的一个或多个:
单层单元(SLC)闪存技术存储单元,以及
多层单元(MLC)闪存技术存储单元。
EC142)任何前述EC均具有至少一个闪存,其中,至少一个闪存的至少一部分包括以下中的一个或多个:
基于多晶硅技术的电荷存储单元,以及
基于氮化硅技术的电荷存储单元。
EC143)任何前述EC均具有至少一个闪存,其中,至少一个闪存的至少一部分包括以下中的一个或多个:
基于二维技术的闪存技术,以及
基于三维技术的闪存技术。
系统
图1A示出了包括使用利用独立硅元件的动态较高级冗余模式管理来访问和控制NVM的SSD控制器的固态硬盘(SSD)的实施方式的所选细节。SSD控制器用于管理诸如经由NVM元件实施的非易失性存储(例如,闪速存储器)。SSD控制器100经由一个或多个外部接口110通信地耦接至主机(未示出)。根据各种实施方式,外部接口110是以下中的一个或多个:SATA接口;SAS接口;PCIe接口;光纤信道接口;以太网接口(诸如10千兆位以太网);非标准版本的任何前述接口;自定义接口;或用于互连存储和/或通信和/或计算装置的任何其他类型的接口。例如,在一些实施方式中,SSD控制器100包括SATA接口和PCIe接口。
SSD控制器100还经由一个或多个装置接口190通信地耦接到NVM199,该NVM 199包括一个或多个存储装置,诸如一个或多个闪存装置192。根据各种实施方式,装置接口190是以下中的一个或多个:异步接口;同步接口;单数据速率(SDR)接口;双倍数据速率(DDR)接口;DRAM兼容的DDR或DDR2同步接口;ONFI兼容接口,诸如ONFI 2.2或ONFI 3.0兼容接口;切换模式兼容闪存接口;非标准版本的任何前述接口;自定义接口;或用于连接到存储装置的任何其他类型的接口。
在一些实施方式中,每个闪存装置192具有一个或多个单独闪存管芯194。根据闪存装置192中的特定一个的类型,特定闪存装置192中的多个闪存管芯194可选地和/或选择地可并行访问。闪存装置192仅表示被启用来通信地耦接至SSD控制器100的一种类型的存储装置。在各种实施方式中,可使用任何类型的存储装置,诸如SLC NAND闪速存储器、MLCNAND闪速存储器、NOR闪速存储器、使用基于多晶硅或硅氮化物技术的电荷存储单元的闪速存储器、基于两维或三维技术的闪速存储器、只读存储器、静态随机存取存储器、动态随机存取存储器、铁磁存储器、相变存储器、赛道存储器或任何其他类型的存储装置或存储介质。
根据各种实施方式,装置接口190被组织为:每个总线具有一个或多个闪存装置192的一个或多个总线;每个总线具有一个或多个闪存装置192的一组或多组总线,其中,通常并行访问组中的总线;或到装置接口190上的一个或多个闪存装置192的任何其他组织。
继续在图1A中,SSD控制器100具有一个或多个模块,诸如主机接口111、数据处理121、缓冲器131、映射141、反复循环器151、ECC 161、装置接口逻辑191和CPU 171。图1A所示的具体模块和互连仅表示一种实施方式,且构思一些或所有模块的多种布置和互连以及未示出的额外模块。在第一实例中,在一些实施方式中,有两个或更多的主机接口111来提供双端口连接。在第二实例中,在一些实施方式中,数据处理121和/或ECC 161与缓冲器131结合。在第三实例中,在一些实施方式中,主机接口111直接耦接到缓冲器131,且数据处理121对存储在缓冲器131中的数据可选和/或选择性地操作。在第四实例中,在一些实施方式中,装置接口逻辑191直接耦接到缓冲器131,且ECC 161对存储在缓冲器131中的数据可选和/或选择性地操作。
主机接口111经由外部接口110发送和接收命令和/或数据,并在一些实施方式中,经由标签跟踪113跟踪单个命令的进度。例如,该命令包括指定地址(如LBA)的读命令和要读的数据量(诸如LBA量的数目,例如,扇区);响应于此,SSD提供读状态和/或读取数据。对于另一实例,该命令包括指定地址(例如LBA)的写命令和要写的数据量(诸如LBA量的数目,例如,扇区);响应于此,SSD提供写状态和/或请求写数据,并随后可选地提供写状态。对于又一实例,该命令包括指定不再需要进行分配的一个或多个地址(诸如一个或多个LBA)的去分配命令(例如,修剪命令);响应于此,SSD相应修改映射并可选地提供去分配状态。在某些环境下,ATA兼容的TRIM命令是示例性去分配命令。对于另一实例,该命令包括超级电容器测试命令或数据硬化成功查询;响应于此,SSD提供适当的状态。在一些实施方式中,主机接口111可与SATA协议兼容,且使用NCQ命令,被启用以具有多达32个等待命令,每个均具有被表示为从0到31的数字的唯一标签。在一些实施方式中,标签跟踪113被启用以将用于经由外部接口110接收的命令的内部标签与用于在由SSD控制器100进行的处理期间跟踪命令的内部标签相关联。
根据各种实施方式,以下中的一个或多个:数据处理121可选和/或选择性地处理在缓冲器131与外部接口110之间发送的一些或全部数据;以及数据处理121可选和/或选择性地处理存储在缓冲器131中的数据。在一些实施方式中,数据处理121使用一个或多个引擎123来进行以下中的一个或多个:格式化;重新格式化;转码;以及任何其他数据处理和/或操纵任务。
缓冲器131存储从装置接口190向外部接口110或者从外部接口110向装置接口190发送的数据。在一些实施方式中,缓冲器131额外存储系统数据,诸如由SSD控制器100使用的一些或所有映射表,以管理一个或多个闪存装置192。在各种实施方式中,缓冲器131具有以下中的一个或多个:用于临时存储数据的存储器137;用于控制数据向和/或从缓冲器131移动的DMA 133;以及用于提供较高级错误校正和/或冗余功能的ECC-X 135;以及其他数据移动和/或操纵功能。较高级冗余功能的实例是类似RAID的能力(例如,RASIE),其中,冗余是以闪存装置(例如,多个闪存装置192)级和/或闪存管芯(例如,闪存管芯194)级的,而不是磁盘级。
根据各种实施方式,以下中的一个或多个:ECC 161可选和/或选择性地处理在缓冲器131与装置接口190之间发送的一些或全部数据;以及ECC 161可选和/或选择性地处理存储在缓冲器131中的数据。在一些实施方式中,ECC 161被用于提供较低级错误校正和/或冗余功能,诸如根据一种或多种ECC技术。在一些实施方式中,ECC 161实施以下中的一个或多个:CRC码;汉明码;RS码;BCH码;LDPC码;维特比码;网格码;硬判决码;软判决码;基于擦除的码;任何错误检测和/或校正码;以及前述的任何组合。在一些实施方式中,ECC 161包括一个或多个解码器(诸如LDPC解码器)。
装置接口逻辑191经由装置接口190控制闪存装置192的实例。装置接口逻辑191被启用来根据闪存装置192的协议向/从闪存装置192的实例发送数据。装置接口逻辑191包括调度193,用于经由装置接口190选择性队列控制闪存装置192的实例。例如,在一些实施方式中,调度193被启用以队列操作闪存装置192的实例,并在闪存装置192(或闪存管芯194)的单独一个实例可用时,将操作选择性发送至闪存装置192(或闪存管芯194)的单独一个实例。
使用表143来将外部数据地址映射到NVM 199中的位置,映射141在外部接口110上使用的数据寻址与装置接口190上使用的数据寻址之间转换。例如,在一些实施方式中,映射141经由由表143提供的映射将用在外部接口110上的LBA转换为目标为一个或多个闪存管芯194的块和/或页地址。对于由于驱动器制造或去分配而从未被写入的LBA,映射指向默认值以在读取LBA时返回。例如,当处理去分配命令时,映射被修改,使得对应于去分配的LBA的条目指向一个默认值。在各种实施方式中,有不同默认值,每个均具有相应的指针。多个默认值能读取一些去分配的LBA(诸如在第一范围内),作为一个默认值,同时读取其他去分配的LBA(诸如在第二范围内),作为另一默认值。在各种实施方式中,默认值由以下来定义:闪速存储器、硬件、固件、命令和/或原始参数和/或参数、可编程寄存器或它们的各种组合。
在一些实施方式中,映射141使用表143来进行和/或查找外部接口110上使用的地址与装置接口190上使用的数据寻址之间的转换。根据各种实施方式,表143是以下中的一个或多个:一级映射;二级映射;多级映射;映射高速缓存;压缩映射;从一个地址空间到另一个的任何类型的映射;以及前述的任何组合。根据各种实施方式,表143包括以下中的一个或多个:静态随机存取存储器、动态随机存取存储器、NVM(诸如闪速存储器)、高速缓存存储器;片上存储器;片外存储器;以及前述的任何组合。
在一些实施方式中,反复循环器151进行垃圾收集。例如,在一些实施方式中,闪存装置192的实例包括块,其在该块可重写之前必须擦除。反复循环器151被启用以诸如通过扫描由映射141保持的映射来确定闪存装置192的实例的哪些部分在使用中活动(例如,分配,而不是去分配),并使闪存装置192的实例的未使用(例如,去分配)部分可用于通过将其删除而写入。在其他实施方式中,反复循环器151被启用来移动存储在闪存装置192的实例中的数据,以使闪存装置192的实例的较大连续部分可用于写入。
在一些实施方式中,闪存装置192的实例被选择性和/或动态配置、管理和/或使用以具有用于存储不同类型和/或属性的数据的一个或多个频带。频带的编号、布置、大小和类型可动态变化。例如,来自计算主机的数据被写入热(活动)频带,而来自反复循环器151的数据被写入冷(较少活动)频带。在某些使用场景中,若计算主机写入长的连续流,则热频带的大小增长,而若计算主机不随机写入或很少写入,则冷频带的大小增长。
CPU171控制SSD控制器100的各个部分。CPU 171包括CPU核172。根据各种实施方式,CPU核172是一个或多个单核或多核处理器。在一些实施方式中,CPU核172中的各个处理器核是多线程的。CPU核172包括指令和/或数据高速缓存和/或存储器。例如,指令存储器包括指令来启用CPU核172来执行程序(例如,有时被称为固件的软件)以控制SSD控制器100。在一些实施方式中,由CPU核172执行的固件的一些或全部被存储在闪存装置192的实例(如图所示,例如,如图1B中的NVM 199的固件106)上。
在各种实施方式中,CPU 171还包括:命令管理173,其跟踪和控制经由外部接口110接收的命令,同时该命令在进行中;缓冲器管理175,其控制缓冲器131的分配和使用;转换管理177,其控制映射141;相干性管理179,其控制数据寻址的相干性以避免诸如外部数据访问与反复循环数据访问之间的冲突;装置管理181,其控制装置接口逻辑191;识别管理182,其控制识别信息的修改和通信;以及可选的其他管理单元。根据各种实施方式,由CPU 171执行的任何或所有管理功能不由硬件、软件(诸如在CPU核172或经由外部接口110连接的主机上执行的固件)或它们的任何组合控制和/或管理。
在一些实施方式中,CPU 171被启用来执行其他管理任务,诸如以下中的一个或多个:收集和/或报告性能统计;实施SMART;控制电源排序,控制和/或监控和/或调节功耗;响应电源故障;控制和/或监控和/或调整时钟速率;以及其他管理任务。
各种实施方式包括类似于SSD控制器100的计算主机闪存控制器,并诸如经由调适主机接口111和/或外部接口110而与各个计算主机的操作兼容。各个计算机主机包括以下中的一个或任何组合:计算机、工作站计算机、服务器计算机、存储服务器、SAN、NAS装置、DAS装置、存储设备、PC、膝上型计算机、笔记本计算机、上网本计算机、平板装置或计算机、超极本计算机、电子阅读装置(诸如电子阅读器)、PDA、导航系统、(手持式)GPS装置、汽车控制系统、车载媒体控制系统或计算机、打印机、复印机或传真机或一体机、POS装置、现金寄存器、媒体播放器、电视机、媒体录像机、DVR、数码照相机、蜂窝手机、无绳电话听筒和电子游戏机。
在各种实施方式中,SSD控制器的所有或任何部分(或计算主机闪存控制器)在单个IC、多芯片IC的单个芯片、多芯片IC的多个芯片或多个IC上实施。例如,缓冲器131在与SSD控制器100的其他元件相同的管芯上实施。对于另一实例,缓冲器131在与SSD控制器100的其他元件不同的管芯上实施。
图1B示出了包括图1A的SSD的一个或多个实例的系统的各种实施方式的所选细节。SSD 101包括经由装置接口190耦接到NVM 199的SSD控制器100。该图示出了实施方式的各种类别:直接耦接到主机的单一SSD、各自分别经由相应的外部接口直接耦接到主机的多个SSD,以及经由不同的互连元件间接耦接到主机的一个或多个SSD。
作为直接耦接到主机的单一SSD的实例性实施方式,SSD 101的一个实例经由外部接口110(例如,开关/结构/中间控制器103被省略、旁路或通过)直接耦接到主机102。作为各自均经由相应的外部接口直接耦接到主机的多个SSD的实例性实施方式,SSD 101的多个实例中的每一个经由外部接口110的相应实例(例如,开关/结构/中间控制器103被省略、旁路或通过)分别直接耦接到主机102。作为经由不同互连元件间接耦接到主机的一个或多个SSD的实例性实施方式,SSD 101的一个或多个实例中的每一个分别间接耦接到主机102。每个间接耦接经由耦接到开关/结构/中间控制器103的外部接口110的相应实例和耦接到主机102的中间接口104。
包括开关/结构/中间控制器103的一些实施方式还包括卡存储器112C,其经由存储器接口180耦接并可由SSD存取。在各种实施方式中,SSD、开关/结构/中间控制器和/或卡存储器中的一个或多个被包括在物理识别模块、卡或可插拔元件(例如,I/O卡116)上。在一些实施方式中,SSD 101(或其变形)对应于耦接到作为主机102而操作的启动器的SAS驱动器或SATA驱动器。
主机102被启用以执行主机软件115的各个元件,诸如OS 105、驱动器107、应用109和多装置管理软件114的各个组合。虚线箭头107D表示主机软件←→I/O装置通信,例如,经由驱动器107、驱动器107和应用109,经由驱动器107或直接作为VF向/从SSD 101的一个或多个实例和从/向任何一个或多个OS 105发送/接收的数据。
OS 105包括和/或被启用来由驱动器(由驱动器107概念性示出)操作以用于接口连接至SSD。各个版本的Windows(例如,95、98、ME、NT、XP、2000、服务器、Vista和7),各个版本的Linux(例如,Red Hat、Debian和Ubuntu),和各个版本的MacOS(例如,8、9和X)是OS 105的实例。在各种实施方式中,驱动器是可由标准接口和/或协议(诸如SATA、AHCI或NVM快速)操作的标准和/或通用驱动器(有时被称为“收缩包装”或“预安装”),或被可选定制和/或供应商特定地能使用SSD 101特定的命令。一些驱动器和/或驱动器具有直通模式,其能使应用级程序(诸如经由优化NAND访问(有时称为ONA)或直接NAND存取(有时被称为DNA)技术进行的应用109)将命令直接发送到SSD 101,从而能使自定义应用使用SSD 101特定的命令,即使采用通用驱动器。ONA技术包括以下中的一个或多个:使用非标准修改器(提示);使用供应商特定的命令;非标准统计的通信,诸如根据可压缩性的实际NVM使用;以及其他技术。DNA技术包括以下中的一个或多个:使用非标准命令或供应商特定的提供对NVM的未映射的读、写和/或擦除访问;使用非标准或供应商特定的命令,其诸如通过绕过I/O装置将以其他方式进行的数据的格式化而提供对NVM的更直接访问;以及其他技术。驱动器的实例是没有ONA或DNA支持的驱动器、启用ONA的驱动器、启用DNA的驱动器和启用ONA/DNA的驱动器。驱动器的其他实例是供应商提供、供应商开发和/或供应商增强的驱动器,以及客户端提供、客户端开发和/或客户端增强的驱动器。
应用级程序的实例是没有ONA或DNA支持的应用、启用ONA的应用、启用DNA的应用和启用ONA/DNA的应用。虚线箭头109D表示应用←→I/O装置通信(例如,经由驱动器进行的旁路或经由用于应用的VF进行的旁路),例如,启用ONA的应用和与SSD通信的启用ONA的驱动器,诸如没有使用OS作为中介的应用。虚线箭头109V表示应用←→I/O装置通信(诸如经由用于应用的VF进行的旁路),例如,启用DNA的应用和与SSD通信的启用DNA的驱动器,诸如没有使用OS或驱动器作为中介的应用。
在一些实施方式中,使用NVM 199的一个或多个部分来用于固件(例如,固件106)存储。固件存储包括一个或多个固件图像(或其部分)。例如,固件图像具有例如由SSD控制器100的CPU核172执行的固件的一个或多个图像。对于另一实例,固件图像具有常数、参数值和在固件执行期间例如由CPU核引用的NVM装置信息的一个或多个图像。固件的图像对应于例如当前固件图像和零个或多个先前(对于固件更新)固件图像。在各种实施方式中,固件提供了通用的、标准的、ONA和/或DNA操作模式。在一些实施方式中,固件的一个或多个操作模式经由键或各种软件技术被启用(例如,一个或多个API被“解锁”),可选地,由驱动器通信和/或提供。
在一些实施方式中,缺少开关/结构/中间控制器,SSD经由外部接口110直接耦接到主机。在各种实施方式中,SSD控制器100经由其他控制器(诸如RAID控制器)的一个或多个中间级被耦接到主机。在一些实施方式中,SSD 101(或其变形)对应于SAS驱动器或SATA驱动器且开关/结构/中间控制器103对应于依次耦接到启动器的扩展器,或可替代地,开关/结构/中间控制器103对应于经由扩展器间接耦接到启动器的桥接器。在一些实施方式中,开关/结构/中间控制器103包括一个或多个PCIe开关和/或结构。
在各种实施方式中,诸如主机102是计算主机(例如计算机、工作站计算机、服务器计算机、存储服务器、SAN、NAS装置、DAS装置、存储设备、PC、膝上型计算机、笔记本计算机和/或上网本计算机)的一些实施方式中,计算主机可选地被启用来(例如,经由可选的I/O&存储装置/源117和可选的LAN/WAN 119)与一个或多个本地和/或远程服务器(例如,可选的服务器118)通信。通信能实现例如本地和/或远程访问、管理,和/或使用SSD 101元件中的任何一个或多个。在一些实施方式中,通信全部或部分经由以太网来进行。在一些实施方式中,通信全部或部分经由光纤信道来进行。在各种实施方式中,LAN/WAN 119表示一个或多个局域网和/或广域网,诸如服务器场中的任何一个或多个网络、耦接服务器场的网络、地铁区域网络和互联网。
在各种实施方式中,SSD控制器和/或与一个或多个NVM组合的计算主机闪速存储器控制器被实施为非易失性存储组件,诸如USB存储组件、CF存储组件、MMC存储组件、eMMC存储组件、雷电(Thunderbolt)存储组件、UFS存储组件、SD存储组件、记忆棒存储组件和xD-图像卡存储组件。
在各种实施方式中,SSD控制器的全部或任何部分(或计算主机闪速存储器控制器)或它们的功能在控制器所耦接的主机(例如,图1B的主机102)中实施。在各种实施方式中,SSD控制器的所有或任何部分(或计算主机闪速存储器控制器)或它们的功能经由硬件(例如,逻辑电路)、软件和/或固件(例如,驱动器软件或SSD控制固件)或者它们的任何组合实施。例如,ECC单元的功能或与其相关联的功能(诸如类似于图1A的ECC 161和/或ECC-X 135)部分经由主机上的软件和部分经由SSD控制器中的固件和硬件的组合来实施。再例如,反复循环器单元的功能或与其相关联的功能(诸如类似于图1A的反复循环器151)部分经由主机上的软件和部分经由计算主机闪速存储器控制器中的硬件来实施。
映射操作
图2示出了映射LBA的LPN部分的实施方式的所选细节。在一些实施方式中,读取单元是独立可读的NVM的最精细粒度,诸如NVM的页的一部分。在其他实施方式中,读取单元对应于(较低级)纠错码的校验位(有时称为冗余)以及由校验位保护的所有数据。例如,图1A的ECC161经由校验位(诸如经由LDPC码)实施错误校正,且读取单元对应于实施除了由LDPC编码位保护的数据位之外的LDPC码的编码位。
在一些实施方式中,映射141诸如经由表143(如图1A中所示)将LBA 211的LPN 213部分映射到用于LPN 221的映射信息。用于LPN的映射信息(诸如用于LPN 221的映射信息)有时也被称为映射条目。映射141被称为将LPN与相应的映射条目关联。在各种实施方式中,映射经由一个或多个关联查找、经由一个或多个非关联查找和/或经由一个或多个其他技术来进行。
在一些实施方式中,SSD控制器100为在使用中潜在和/或活动的每个LPN保持一个映射条目。
在一些实施方式中,用于LPN 221的映射信息包括相应的读取单元地址223和读取单元长度225。在一些实施方式中,例如在读取单位225的长度的全部或任何部分中,诸如通过将长度作为与跨度的偏移而存储来存储和编码长度和/或跨度。在其他实施方式中,第一LPN与第一映射条目相关联,第二LPN(与第一LPN不同,但是指与由第一LPN参照的逻辑页相同的大小的逻辑页)与第二映射条目相关联,且第一映射条目的读取单元中的相应长度与第二映射条目的读取单元中的相应长度不同。
在各种实施方式中,在相同的时间点,第一LPN与第一映射条目相关联,第二LPN(与第一LPN不同)与第二映射条目相关联,且第一映射条目的相应读取单元地址与第二映射条目的相应读取单元地址相同。在其他实施方式中,与第一LPN相关联的数据和与第二LPN相关联的数据均被存储在NVM 199中的相同装置的相同物理页中。
根据各种实施方式,读取单元地址223与以下中的一个或多个相关联:NVM中的起始地址;NVM中的结束地址;任何前述的偏移;以及用于识别与LPN 213相关联的NVM的部分的任何其他技术。
图3示出了以读取单元地址访问NVM以产生由各个读取单元组织的读取数据的实施方式的所选细节,所述读取单元统一具有以读取单元的量测量的长度。根据各种实施方式,第一读取单元313是以下中的一个或多个:具有NVM的地址空间中的最低地址的读取数据311中的一个读取单元;读取单元中的固定一个;读取单元中的任意一个;读取单元中的可变的一个;以及由任何其他技术选择的读取单元中的一个。在各种实施方式中,SSD控制器100被启用来访问NVM 199并通过读取不超过由读取单位225中的长度指定的读取单元的数量来产生读取数据311。
图4A示出了如读取单元401A的读取单元(诸如图3的读取单元313或315)的实施方式的所选细节。在各种实施方式和/或使用场景中,报头1 411A至报头N 419A是连续的,且由每个报头(诸如经由各自偏移)识别的各自数据区域是连续的,并跟随报头中的最后一个。数据区域统一形成数据字节421A。以匹配存储报头的位置顺序的位置顺序来存储数据区域。例如,考虑第一报头在读取单元的开始,且第二报头和第三报头连续跟随第一报头。第一数据区域(由第一报头中的第一偏移识别)连续跟随第三报头。第二数据区域(由第二报头中的第二偏移识别)连续跟随第一数据区域。同样,第三数据区域(由第三报头识别)连续跟随第二数据区域。
图4B示出了如读取单元401B的读取单元(诸如图3的读取单元313或315)的另一实施方式的所选细节。在各种实施方式和/或使用场景中,报头标记(HM)410B是指示跟随连续报头的编号(报头1 411B、报头2412B…报头N 419B)的可选的初始字段(诸如一个字节的字段)。数据区域(数据字节421B、数据字节422B…数据字节429B)分别由报头(报头1 411B、报头2 412B…报头N 419B)识别,并以与存储报头的位置顺序相反的位置顺序存储。报头始于读取单元的开始,而对应的数据区域始于读取单元的结束。在一些实施方式中,数据区域内的数据字节(例如,数据字节421B、数据字节422B...数据字节429B)被以正向顺序(匹配位置顺序的字节顺序)布置,而在其他实施方式中,数据字节被以相反顺序(相对于位置顺序反向的字节顺序)布置。在一些实施方式中,报头标记用于报头和数据字节以相同的位置顺序存储(例如,如图4A中所示)的读取单位中。
在一些实施方式中,可选的填充字节431A(或431B)根据与特定LPN相关联的数据的粒度。例如,在一些实施方式中,若数据字节421A(或统一地,数据字节421B、数据字节422B...数据字节429B)具有小于固定量的剩余空间,诸如8个字节,则在存储与所有但除了报头1 411A至报头N 419A(或报头1 411B、报头2 412B...报头N 419B)中的最后一个相关联的数据之后,与最后一个报头相关联的用于LPN的数据在随后的读取单元中开始。在其他实施方式中,最后一个报头中的特定偏移值(例如,所有的值)表示与最后一个报头相关联的用于LPN的数据在随后的读取单元中开始。
图5示出了具有多个字段的报头(诸如图4A的报头1 411A至报头N419A或图4B的报头1 411B至报头419B中的任一个)的实施方式的所选细节。在一些实施方式中,报头是固定长度的(例如,每个报头的长度是相同字节数)。报头501包括字段类型511、最后指示513、标志515、LPN517、长度519和偏移521。类型字段识别数据字节的类别。例如,类型字段指示数据字节的类别是主机数据(例如,逻辑页数据)或系统数据(例如,映射信息或检查点信息)中的一个。最后字段指示报头是数据字节之前的最后报头。在具有报头标记的一些实施方式中,可选地,省略最后字段。LPN字段是报头所关联的LPN。LPN字段能进行报头解析以通过例如搜索具有匹配特定LPN的LPN字段的一个的报头来确定与特定LPN相关联的报头中的特定一个。长度字段是以字节为单位的数据字节的长度(例如,在数据字节421A中有多少数据字节与报头501相关联)。在一些实施方式中,偏移字段中的偏移根据特定粒度(例如,8字节粒度)被舍入。
在各种实施方式中,与特定LPN相关联的一些或所有信息被存储在与特定LPN相关联的映射条目、与特定LPN相关联的报头或两者中。例如,在一些实施方式中,长度519的一些或全部被存储在映射条目中,而不是在报头中。
图6示出了多个NVM装置的块、页和读取单元的实施方式的所选细节。例如,601、603...和609对应于图1A的一个或多个单独闪存管芯194中的相应一个。
在一些实施方式中,装置601、603…和609是小于NVM199的所有的部分。例如,在各种实施方式中,数据在多组装置之间被单独条带化,其中,多组装置中的每一个可单独访问。
每个装置(诸如装置601、603…和609中的任何一个)提供被组织为块(诸如装置601的块631、633...和639;装置603的块661、663...和669等)的存储。在一些实施方式中,每个装置均包括整数个块,且块是擦除的最小量。反过来,块包括页(诸如块631的页621、623...和629;块661的页651、653…和659等)。在一些实施方式中,每个块包括整数个页,且页是写入的最小量。页又包括读取单元(诸如页621的读取单元611、613…和619;页651的读取单元641、643…和649等)。根据各种实施方式,以下中的一个或多个:读取单元是读取和错误校正的最小量;每个页包括整数个读取单元;两页或更多页的相关联组包括整数个读取单元;以及读取单元可选和/或选择性地跨越页边界。在装置中读和/或写信息是根据顺序(诸如‘读取单元优先’顺序或‘页优先’的顺序)进行的。图中所示的用于读取单元的读取单元优先顺序的实例开始于读取单元611,随后是641、…、671、613、643、…、673等,以679结束。图中所示的用于读取单元的页优先顺序的实例开始于读取单位611,随后是613、…、619、641、643、…、649、671、673等,以679结束。
在一些实施方式中,在R-块的单元中进行各种NVM管理功能。R-块的实例是闪速存储器的所有管芯之间的逻辑分层或部分。例如,在具有R闪存管芯的闪速存储器中,每个闪存管芯都具有N个块,对于总共N个R-块,每个R-块为来自合起来的闪存管芯中的每一个的第i块。对于另一实例,在具有各自均具有N个块的R闪存管芯的闪速存储器中,对于总共N/2个R-块,每个R-块是来自每个闪存管芯的第i块和第(i+1)块。对于另一实例,在具有多个双平面装置的闪速存储器中,每个R-块是来自每个双平面装置的第i个偶数块和第i个奇数块。
较高级冗余技术
图7A示出了较高级冗余技术的各种实施方式的所选细节。闪存装置720包括64个闪存管芯(闪存管芯710.63、710.62、710.61…710.0),并经由接口信道730通信。额外的闪存装置740包括多达两个的闪存管芯(闪存管芯710.65和710.64),并经由额外的接口信道750通信。闪存管芯提供在存储子系统(诸如SSD中的NVM)中存储较高级冗余信息和数据存储(例如,用户数据和/或用户自由空间)。(在冗余信息和数据存储的环境下‘用户数据’的实例包括用于后续检索的除了在闪速存储器上存储的冗余信息以外的所有数据,诸如操作系统数据、应用数据、SSD管理数据等。)较高级冗余例如能从一个或多个闪存管芯的一个或多个部分的暂时或永久故障(诸如用于提供用于读取操作的错误校正的数据(例如,经由较低级ECC功能)的故障或适当地完成写操作的故障)中恢复。
例如,在硅独立元件的冗余阵列(RASIE)的环境下操作每个闪存管芯(或替代地,每个块或每个块内的每个页)。若在特定的闪存管芯中检测到故障(例如,由于特定管芯的块的一部分的ECC不可校正的读取错误),则响应于此,存储在其他闪存管芯中的冗余信息被用来确定已由特定管芯提供的信息。在一些实施方式和/或使用场景中,足够的冗余信息被存储以能够(在单一操作期间)从一个闪存管芯内的一个故障中恢复。在一些实施方式中,在能够从单一故障恢复的模式下的操作包括:分配和管理相当于用于较高级冗余信息的一个闪存管芯的空间,并被称为‘RASIE-1’。在一些实施方式中,在能够从两个故障恢复的模式下的操作包括分配和管理相当于用于较高级冗余信息的两个闪存管芯的空间,并被称为‘RASIE-2’。
在一些实施方式和/或使用场景中,管理管芯级故障是客观的,并在管芯之间进行传播信息。例如,较高级冗余信息被存储在仅专门分配至较高级冗余信息的一个或多个管芯中。在一些实施方式和/或使用场景中,管理块级别故障是客观的,且在管芯内的块之间进行传播信息。例如,较高级冗余信息被存储在分配至较高级冗余信息的一个或多个块中,而不考虑对块是其一部分的特定管芯的分配。在一些实施方式和/或使用场景中,管理特定实体级故障包括传播信息,使得不超过N个元件(例如,对于RASIE-1是1个且对于RASIE-2是2个)在任一特定实体中。
较高级冗余信息根据写到闪存管芯的(用户)数据被计算和写入,且因此,当检测到故障时可用于提供信息。在各种实施方式中,在针对较高级冗余信息所关联的写入(用户)数据的不特定时间顺序之前、之后或其中,较高级冗余信息被写到闪存管芯。
该图示出了RASIE操作模式的各种实施方式,如下表所总结。
更具体地,在RASIE-1模式下,相当于一个管芯的空间被分配给较高级冗余信息。在RASIE-1模式1-0下,未使用额外的闪存装置740,由于较高级冗余信息被存储在闪存装置720的一个管芯(例如,闪存管芯710.63)中,使63个管芯(闪存管芯710.62…710.0)可用于数据存储(例如,用户数据和/或用户自由空间)。在RASIE-1模式1-1下,使用额外的闪存装置740的一个管芯(例如,闪存管芯710.64),使所有闪存装置720(64个管芯)可用于数据存储。
在RASIE-2模式下,相当于两个管芯的空间被分配给较高级冗余信息。在RASIE-2模式2-0下,未使用额外的闪存装置740,由于较高级冗余信息被存储在闪存装置720的两个管芯(例如,闪存管芯710.63和闪存管芯710.62)中,使62个管芯(闪存管芯710.61…710.0)可用于数据存储。在RASIE-2模式2-1下,使用额外的闪存装置740的一个管芯(例如,闪存管芯710.64),由于较高级冗余信息被部分存储在闪存装置720的一个管芯(例如,闪存管芯710.63)中,使63个管芯(闪存管芯710.62…710.0)可用于数据存储。在RASIE-2模式2-2下,使用额外的闪存装置740的两个管芯(例如,闪存管芯710.65和闪存管芯710.64),使所有管芯720(64个管芯)可用于数据存储。
在一些实施方式中,未在所有场景下使用的管芯未被组装。例如,在只在RASIE 2-0模式和RASIE 1-0模式(但不在其他RASIE模式)下可操作的系统中,额外的闪存装置740未被组装。
在一些实施方式中,较高级冗余信息全部存储在“专用”管芯(例如,RASIE-1模式1-0下的闪存管芯710.63或RASIE-2模式2-2下的闪存管芯710.65和闪存管芯710.64)中。在其他实施方式中,较高级冗余信息被存储在任何管芯中,因此,例如,在RASIE-1模式1-0下,闪存管芯710.62用于较高级冗余信息,而闪存管芯710.63和闪存管芯710.61…710.0用于数据存储。在一些实施方式和/或使用场景中,较高级冗余信息随着时间的推移被存储在不同管芯(和/或其部分)中,因此,例如,在第一时间期间内,第一闪存管芯保持较高级冗余信息,而在第二时间期间内,第二闪存管芯保持较高级冗余信息。
在各种实施方式中,根据多少闪存管芯可以使用而有多个RASIE 1-0模式(和多个RASIE 2-0模式)。例如,在第一RASIE 1-0模式(如在上表中所示)下,闪存管芯710.63存储较高级冗余信息,且闪存管芯710.62...710.0可用于数据存储。在第二RASIE 1-0模式下,闪存管芯710.63不再可用,闪存管芯710.62存储较高级冗余信息,且闪存管芯710.61...710.0可用于数据存储,从而减少由一个管芯存储的可用数据量。由于用于较高级冗余信息的管芯(或其部分)的使用而使以前可用于数据存储的管芯(或其任何部分)不再可用于数据存储的RASIE模式有时也被称为减小能力的RASIE模式。
在一些实施方式中,使用与由较高级冗余信息保护的用户数据相同和/或类似的较低级错误校正编码方案来存储较高级冗余信息。以与确定用户数据中的不可校正的较低级错误相同和/或类似的方式,使用较低级错误校正方案来保护较高级冗余信息能够确定是否在较高级冗余信息中有不可校正的错误。
图7B示出了R-块的实施方式的所选细节。在所有管芯之间的逻辑分层或部分中管理闪存管芯(例如,用于循环和/或擦除),且分层/部分被称为R-块。该图示出了具有66个闪存管芯(闪存管芯710.65…710.0)的实施方式。示出了作为R-块的块、页和块的管理。每个闪存管芯被示出为具有N个块(诸如闪存管芯710.65的块710.65B0、块710.65B1...710.65BB)。每个R-块是来自一起采用的每个闪存管芯的第i块(诸如作为来自闪存管芯710.65的块710.65B0、来自闪存管芯710.64的块0(未明确示出)、以此类推直到闪存管芯710.0的块710.0B0的R-块760.0)。因此,有总共N个R-块(R-块760.0、R-块760.1...R-块760.R)。
在各种实施方式中,在所有装置(例如,从最低到最高编号的装置,如由图6的条带化方向600概念地建议)之间,在R-块内写入和/或条带化数据顺序是页优先(例如从最低到最高),然后是下一个最高页(在所有装置之间)等,继续到R-块的最后一页。特别针对图7的R-块760.0,实例顺序开始于页710.0P0,随后是闪存管芯710.1的第一块中的第一页等、继续到页710.65P0。实例顺序继续于页710.0P1,随后是闪存管芯710.1的第一块中的第二页,依此类推,继续到页710.65P1。实例顺序完成于页710.0PP,随后是闪存管芯710.1的第一块中的最后一页,依此类推,结束于页710.65PP。
R-块的另一实例是一起采用的来自每个闪存管芯的第i和(i+1)块(例如,来自闪存管芯710.65的块0和1、来自闪存管芯710.64的块0和1,以此类推,来自闪存管芯710.0的块0和1)。因此,若在每个闪存管芯中有N个块,则有N/2个R-块。R-块的又一实例是来自多个双平面装置中的每一个的第i个偶数和奇数块。设想用于作为R-块而管理的闪存管芯块的其他布置,包括虚拟和物理块地址之间的映射以确保R-块具有来自每个管芯的一个块,即使有些块是无法操作的。在各种实施方式中,使用每个闪存管芯中的N个块中的一些作为备用,以使虚拟和物理块地址之间的映射具有备用(否则未使用)块来替换R-块中的块中有缺陷的块。
在以对或其他相关联的组的方式作为形成R-块的部分来处理块的各种实施方式中,来自相关联组的块中的每个块的相应页也作为单元而被处理,至少用于写入、形成较大的多块的页。例如,继续上面的双平面实例,偶数块中特定一个的第一页和奇数块中相关联的一个的第一页被处理为用于写入的单元,以及可选和/或选择性地作为用于读取的单元。类似地,特定偶数块的第二页和相关联的奇数块的第二页作为单元而处理。根据各种实施方式,本文所用的NVM的页是指以下中的一个或多个:NVM的单个页;NVM的多块页;用于写入的NVM的作为用于读取的一个或多个单一页而可选和/或选择性地处理的多块页;以及NVM的任何其他分组或相关联的页。
在一些实施方式中,较高级冗余信息被存储在数据的不同部分的不同管芯中。例如,在R-块中管理闪存管芯的一些实施方式中,较高级冗余信息被存储在不同R-块的不同闪存管芯中。例如,包括闪存管芯710.0的块0的用于R-块的较高级冗余信息被存储在闪存管芯710.0中,而包括闪存管芯710.0的块1的用于R-块的较高级冗余信息被存储在闪存管芯710.1中等。在一些实施方式中,诸如在R-块中管理闪存管芯的一些实施方式中,在较高级冗余信息所取决的数据已知和/或写入之后,较高级冗余信息被写入。
在一些使用场景中,NVM元件的一个或多个部分(例如,装置的块,诸如图6的装置601的块639)在操作期间是或成为不可操作。在一些实施方式中,经由虚拟和物理块地址(例如,经由通过图1A的映射141和/或表143进行的处理)映射出不可操作的部分。或者,跳过(而不是明确地映射出)不可操作的部分。在基于R-块的一些实施方式中,跳过导致一些R-块具有不同数量的块。例如,若块710.0B0有缺陷且无法使用,则R-块760.0比R-块760.1少一个块。较高级冗余信息被写入(每个R-块)可变位置,即,例如,每个R-块的最后块。
在各种实施方式中,图7A的一个或多个元件对应于图1A的一个或多个元件。例如,闪存装置720和额外闪存装置740统一对应于NVM 199,且接口信道730和额外接口信道750统一对应于装置接口190。对于另一实例,闪存管芯710.65...710.0统一对应于闪存管芯194的实例。对于又一实例,闪存装置720和/或额外闪存装置740的一个或多个闪存装置对应于闪存装置192的一个或多个实例。在各种实施方式中,图1A的一个或多个元件管理较高级冗余信息和/或根据本文所描述的RASIE操作模式至少部分基于较高级冗余信息来恢复用户数据。例如,CPU 171的软件执行能力的一部分被用于根据各个RASIE操作模式管理较高级冗余信息的计算。对于另一实例,数据处理121和/或ECC-X 135包括专用于和/或专门用于计算较高级冗余信息和/或根据各个RASIE操作模式恢复用户数据的硬件元件。对于又一实例,ECC 161检测闪存管芯的一部分的ECC不可校对的(较低级)读取错误,且ECC-X 135检测RASIE(较高级)读取错误和/或启用其校正。
在各种实施方式中,接口信道730不同地具有一个、四个、八个或16个信道,且额外的接口信道750不同地具有一个或两个信道。在各种实施方式中,闪存装置720被实施为一个、二个、四个、八个或16个装置,各自分别具有64个、32个、16个、八个和四个闪存管芯。在各种实施方式中,额外的闪存装置740被实施为具有一个或两个管芯的一个装置,或被实施为各自具有一个管芯的两个装置。在一些实施方式中,额外的闪存装置740的闪存管芯在也实施闪存装置720的闪存管芯的装置中被实施。例如,一个闪存装置实施66个闪存管芯(闪存管芯710.65…710.0)。对于另一实例,两个闪存装置各自例如在第一闪存装置(闪存管芯710.65…710.33)和在第二闪存装置(闪存管芯710.32…710.0)中实施33个闪存管芯。设想闪存管芯和闪存装置的其他布置。在具有也实施闪存装置720的闪存管芯的装置中实施的额外的闪存装置740的一些实施方式中,闪存管芯经由共享接口信道通信,或替代地,经由专用于闪存管芯的特定闪存管芯(或组)的接口信道通信。尽管由具体数量的闪存管芯(分别为2和64)示出闪存装置720和额外的闪存装置740,但设想其他实施方式,诸如具有2个、4个、8个、16个、32个或128个闪存管芯的闪存装置720和/或具有0个、1个或4个闪存管芯的额外的闪存装置740。
图8示出了由RASIE进行的动态较高级冗余模式管理的实施方式的所选细节,诸如在由图7A和/或图7B示出的各种实施方式启用的RASIE模式之间进行动态切换。在一些实施方式和/或使用场景中,提供了故障弱化的形式,其中,存储子系统(例如,SSD)被从第一较高级冗余模式下的操作动态过渡至第二较高级冗余模式下的操作。该过渡响应于检测到故障,诸如整个闪存管芯或其一个或多个部分的永久或暂时性故障,或对其的操作(诸如读或写操作)。根据各种实施方式,过渡是以下中的一个或多个:对于SSD是全局的;在一个或多个子集SSD上进行;以及在SSD的一个或多个R-块上进行。例如,若存储RASIE-2信息的一个NVM装置的特定块在编程期间出现故障,则包括特定(有故障)的块的R-块的随后操作过渡到不同较高级冗余模式(例如,RASIE-1模式),而SSD中的其他R-块不会受影响并继续在RASIE-2模式下操作。
参照图8,处理根据第一较高级冗余模式(在第一较高级冗余模式802下操作)开始于被布置在闪存管芯中的较高级冗余信息和数据存储(例如,用户数据和/或用户自由空间)。然后流程继续进行以确定是否已检测到故障(故障?803),诸如较低级不可校正的读错误或写/程序故障。若没有检测到故障,则流程继续进行回到继续在第一较高级冗余模式下操作。若已检测到故障,则流程继续进行从第一较高级冗余模式下的操作切换至第二较高级冗余模式下的操作。切换开始于(可选地)减小可用于数据存储的空间(减小自由空间804)以解释故障的原因。若第二较高级冗余模式使用比第一较高级冗余模式足够少的较高级冗余信息,则省略减小可用空间。切换继续根据第二较高级冗余模式(重新配置数据存储805)来重组数据存储。该重组包括从另一个闪存管芯发生故障的闪存管芯中可选地移动所有用户数据和/或用户自由空间(在一些实施方式中,通过操纵指针和/或其他数据结构元件来完成用户自由空间运动)。该切换还继续经由第一较高级冗余模式的较高级冗余信息选择性地恢复(如果可能的话)存储在发生故障的闪存管芯中的任何用户数据,并根据第二较高级冗余模式(恢复/存储失败的用户数据806)将恢复的用户数据写到另一个闪存管芯。若故障是写入/程序故障,则省略恢复。该切换还继续根据第二较高级冗余模式可选地计算和写到闪存管芯较高级冗余信息(确定/存储修改的较高级冗余信息807)。若第二较高级冗余模式可利用由于在第一较高级冗余模式下操作而先前在适当位置的较高级冗余信息操作,则省略计算和写入。然后操作开始于第二较高级冗余模式下(在第二较高级冗余模式808下操作)。
经由以下中的一个或多个进行故障检测(故障?803):较低级错误校正(例如,根据一个或多个ECC技术)、较高级错误校正(例如,根据一个或多个RASIE技术)、以及由一个或多个闪存管芯或其部分报告的故障状态。例如,在特定闪存管芯的特定部分内的读取的超过阈值数量的较低级校正可选和/或有条件地导致特定闪存管芯(或特定部分)被处理为发生故障,且进行较高级冗余模式切换,使得发生故障的闪存管芯(或部分)不再被使用。对于另一实例,若较高级错误校正发生故障,则闪存管芯(或其部分)中的适当的一个被处理为发生故障,并进行较高级冗余模式切换,使得发生故障的闪存管芯(或部分)不再被使用。对于又一实例,若闪存管芯返回程序故障状态(指示写操作不成功),则闪存管芯中的适当的一个的适当块被视为发生故障,并可选和/或有条件地进行较高级冗余模式切换,使得发生故障的闪存管芯不再被使用。
在一些实施方式中,经由虚拟和物理块地址(例如,经由通过图1A的映射141和/或表143进行的处理)通过重新映射来替换发生故障的块。代替发生故障的块,映射来自备用块池中的备用块。在发生故障的块中写入的任何内容均被复制到替换块,且从在发生故障的块中发生故障的备用块中进行写入。
在一些实施方式中,跳过发生故障的块(而不是明确地重新映射),导致“孔”,其在孔所处的R-块被接下来擦除(在准备重写时)时可选和/或有条件地导致较高级冗余模式切换。若孔处于用于数据存储的位置,则不进行切换,且孔仍存在。若孔处于用于较高级冗余信息的位置,则较高级冗余信息被存储在另一位置中,并可选地,切换较高级冗余模式。
在一些实施方式和/或使用场景中,恢复存储在不可能发生故障的闪存管芯中的用户数据。例如,若故障是由于经由较高级错误校正检测到的和/或由一个或多个闪存管芯或其部分报告的某些类型的故障状态而引起,则某些用户数据可能会丢失。
在一些实施方式中,在响应于多个故障的较高级冗余模式之间动态过渡的环境(例如,SSD控制器)下进行图8的处理。具体而言,响应于第一故障,SSD控制器开始在第一较高级冗余模式下操作并动态过渡到第二较高级冗余模式,并响应于第二故障,随后从第二较高级冗余模式动态过渡到第三较高级冗余模式,以此类推。例如,SSD控制器根据RASIE-2模式2-2操作各个闪存管芯并响应于第一故障动态过渡根据RASIE-2模式2-1的操作。随后,SSD控制器响应于第二故障动态过渡根据RASIE-2模式2-0的操作。此外,随后,SSD控制器响应于第三故障动态过渡根据RASIE-1降低能力模式1-0的操作(类似于除了用于较高级冗余信息的一个闪存管芯和用于数据存储的62个闪存管芯之外的RASIE-1模式1-0的降低能力模式1-0)。
作为具体的实例,考虑耦接到图7A中的元件的SSD控制器(诸如图1A的SSD控制器100),最初在RASIE-2模式2-2(例如,闪存管芯710.65和闪存管芯710.64中的较高级冗余信息,和闪存管芯710.63…710.0中的数据存储)下操作,对应于在第一较高级冗余模式下操作。然后,进行读入或者替代地写一个或多个闪存管芯。在闪存管芯的特定一个的部分中(例如,用于用户数据和/或用户自由空间的闪存管芯710.62的页),该读取导致不可校正的(较低级)ECC故障,或者替代地,写入不成功。响应于此,SSD控制器从在RASIE-2模式2-2下操作动态切换至在RASIE-2模式2-1下操作,从而不再使用任何闪存管芯710.62。当在RASIE-2模式2-1下的操作提供用于数据存储的63个芯片(相对于RASIE-2模式2-2下的64个管芯)时,可用于数据存储的空间从64个管芯减小到63个管芯,且用户数据和/或用户自由空间相应地移动。例如,来自闪存管芯710.62的所有用户数据根据用户自由空间移动到闪存管芯710.63和闪存管芯710.61...710.0的部分。具有不可校正的ECC故障的页中的任何用户数据基于闪存管芯710.65和/或闪存管芯710.64中的较高级冗余信息而恢复。基于闪存管芯710.63和闪存管芯710.61...710.0中的数据存储并根据RASIE-2模式2-1的较高级冗余信息被计算并存储在闪存管芯710.65和/或闪存管芯710.64中。SSD控制器然后在RASIE-2模式2-1(闪存管芯710.65和闪存管芯710.64中的较高级冗余信息和闪存管芯710.63和闪存管芯710.61...710.0中的数据存储)下操作。
尽管前面描述了由整个闪存管芯的粒度的独立硅元件进行的动态较高级冗余模式管理的几种实施方式,但其他实施方式实施了由作为管芯的一部分(诸如一个或多个页、块或R-块)的独立硅元件进行的动态较高级冗余模式管理。
在各种实施方式中,由图1A的一个或多个元件(或其部分)完全或部分地进行图8的一个或多个元件的处理或与其相关的处理。例如,CPU171的软件执行能力的一部分被用于诸如通过引导可用于数据存储的减小的空间或引导重组的数据存储来管理较高级冗余模式之间的动态过渡。对于另一实例,数据处理121和/或ECC-X135包括专用于和/或专门用于根据‘目标’冗余模式计算较高级冗余信息的硬件元件。对于又一实例,ECC161实施较低级(例如,ECC)误差校正和检测不可校正的错误,而ECC-X135实施较高级(例如,RASIE)错误校正和检测不可校正的错误和/或存储元件故障。对于另一实例,由ECC-X 135的一个或多个部分进行关于(较高级)冗余模式之间的动态转换的功能的全部或任何部分。
较高级冗余和自适应较低级码率
在一些实施方式和/或使用场景中,较低级错误校正使用自适应码率(例如,使用可变码率的自适应ECC技术)。例如,由提供比用第二码率管理的第二读取单元相对更多的可用数据位的第一码率来管理第一读取单元。在较低级错误校正使用可变码率的一些实施方式和/或使用场景中,较高级冗余信息被存储在独立硅元件的部分中(诸如闪存管芯的部分),所述元件由提供相对于由较高级冗余信息保护的数据存储而相对更多的可用数据位或最有用的数据位的较低级错误校正来管理。在各种实施方式和/或使用场景中,较高级冗余信息被存储的部分以每个R-块为基础、以每个管芯为基础、动态地随着时间推移或它们的任何组合而各不相同。在各种实施方式中,一个或多个管芯、R-块、块和/或页被选择用于存储基于具有相对于较低级错误校正码率具有最有用的数据的较高级冗余数据。
例如,较高级冗余信息以每个R块为基础被存储在不同位置(诸如块位置)、基于较低级错误校正码率的那些具有最有用数据的位置(诸如块)上。在任意实例中,考虑图7A的环境下的RASIE-2操作模式场景,其中,66个闪存管芯的集合被视为每个是一个块高度的高达M个R-块的逻辑“堆栈”,其中,M是每个闪存管芯的块的数量。(在概念上最简单的情况下,堆栈中每个R-块由来自每个管芯的相同的物理块号组成,但至少在一些实施方式中,这个约束被解除以容纳发生故障的块。在又一些实施方式中,约束维持不变,但对应于发生故障的块而容纳“孔”。)因此,每个R-块有高达66个的块,对应于来自闪存管芯710.0至闪存管芯710.65的每一个的一个块。(在图7A中,尽管明确列出了范围710.0至710.65中的仅一些闪存管芯,但通过使用省略号应理解,隐含地示出了在这个范围内的所有闪存管芯)。较高级冗余信息被写入每个R-块均具有基于较低级错误校正码率的最有用数据的任何块中。例如,若在第一R-块中,对应于闪存管芯710.15和710.49的块碰巧具有基于较低级错误校正码率的最有用数据,则较高级冗余信息被写入这些块(对应于闪存管芯710.15和710.49)中。而若在第二R-块中,对应于闪存管芯710.9和710.35的块碰巧具有基于较低级错误校正码率的最有用数据,则较高级冗余信息被写入这些块(对应于闪存管芯710.9和710.35)中。在一些实施方式中,在已知R-块中的所有其他数据之后,写入较高级冗余数据。
图9示出了具有由存储在一个或多个读取单元中的较高级冗余信息保护的自适应(例如,不同和/或随时间的推移而不同和/或因位置不同)码率的较低级冗余信息的读取单元(911、931...951、971)的实施方式。每个读取单元均具有被启用和/或分配以包括用户数据(911.U、931.U、...、951.U、971.U)的部分,和被启用和/或分配以包括较低级冗余信息(诸如作为较低级ECC(911.E、931.E…951.E、971.E)的ECC码的校验位)的剩余部分。
在附图中,垂直尺寸相对按照比例绘制并指示相对尺寸。因此读取单元911和951的第一尺寸相同(在一些实施方式中,所有读取单位对于所有NVM装置的所有块尺寸相同),较低级ECC部分931.E和951.E的第二尺寸相同,且较低级ECC部分911.E和971.E的第三尺寸相同。读取单元931大于读取单元911和951(其反过来大于读单元971)。用户数据部分931.U大于用户数据部分951.U。用户数据部分951.U大于用户数据部分911.U。较低级ECC部分951.E小于较低级ECC部分911.E。
如图所示,各自的读取单元具有各自的尺寸,例如,NVM的每个相应块,能使如在各自块中使用的较低级码率变化。更具体而言,读取单元931和951具有相同量的较低级冗余信息(931.E和951.E的尺寸相同),但读取单元931的较低级码率高于读取单位951的较低级码率,原因是读取单元931包括的用户数据(931.U)比读取单元951(包括用户数据951.U)更多。
如图所示,各自读取单元具有各自尺寸的用户数据,能使两个或更多个相同尺寸的读取单元的每一个中的用户数据的尺寸不同。例如,用户数据的尺寸变化以改变用于特定读取单元中的较低级码率。更具体而言,读取单元951和911具有相同尺寸,但有各自不同的用户数据(951.U和911.U)的量,且因此具有各自不同的较低级冗余信息(951.E和911.E)的量,能使读取单元951具有比读取单元911更高的较低级码率。
在一些实施方式和/或使用场景中,变化和/或改变较低级码率有利地能实现提供足量的较低级ECC信息来实现较低级错误校正要求,同时最大化用户数据的量。
在用户数据量在读取单元中不同的一些实施方式中,较高级冗余信息被存储在具有最大用户数据量的一个或多个读取单元中。例如在图9中,使用RASIE-1模式,较高级冗余信息被存储在用户数据931.U中,以及使用RASIE-2模式,较高级冗余信息被存储在用户数据931.U和用户数据951.U中。将较高级冗余信息存储在具有最大用户数据量(在由较高级冗余信息保护的读取单元中)的读取单元中可确保有足够的较高级冗余信息来保护所有其他读取单元中的用户数据。
根据各种实施方式,使用一种或多种技术来确定由较高级冗余信息保护的多个读取单元中的一个或多个读取单元中的哪个用于存储较高级冗余信息。在第一实例中,使用具有最大用户数据量的最近写入的一个(用于RASIE-1)或两个(用于RASIE-2)读取单元。在第二实例中,使用具有最大用户数据量的最早写入的一个(用于RASIE-1)或两个(用于RASIE-2)读取单元。同样,确定选择具有最大用户数据量以保护其他读取单元中的所有剩余用户数据的一个或多个读取单元的任何技术在本文所考虑的技术范围内。
较高级冗余信息计算技术
在各种实施方式和/或使用场景中,由各种技术(诸如经由奇偶校验、RS和/或加权和技术)计算较高级冗余信息。例如,在能够从一个(较低级)故障(例如,RASIE-1)恢复的一些较高级冗余模式下,经由奇偶校验技术计算较高级冗余信息。对于另一实例,在能够从两个(较低级)故障(例如RASIE-2)恢复的一些较高级冗余模式下,经由奇偶校验和RS技术的组合计算较高级冗余信息。使用奇偶校验编码计算较高级冗余信息的第一部分,并使用RS编码来计算第二部分。对于又一实例,在能够从两个故障(例如RASIE-2)恢复的一些较高级冗余模式下,经由奇偶校验与加权和技术的组合计算较高级冗余信息。使用奇偶校验编码计算较高级冗余信息的第一部分,并使用加权和编码计算第二部分。使用与用于可用于存储由较高级冗余信息保护的数据的NVM的页的较低级故障检测技术相同或类似的较低级故障检测技术(诸如ECC),例如经由读和写NVM的页来管理较高级冗余信息。
作为RASIE-2的具体实例,经由R-块之间的条带中的所有第一页的XOR使用奇偶校验编码计算较高级冗余信息的第一页。更具体而言,对在R-块之间的条带中的所有第一页的所有第一字节进行XOR,从而产生较高级冗余信息的第一页的第一字节。类似地,通过异或(XOR)R-块之间的条带中的所有第一页的所有第二字节以及以此类推条带中的所有第一页的所有字节来形成较高级冗余信息的第二字节。使用如下加权和技术计算较高级冗余信息的第二页。
通过有限域(诸如伽罗华域(用作实例))进行算术。实例假定正在操作的数据为字节宽,并因此使用域(诸如GF(256))。在各种实施方式中,以任何单位操作数据。
条带中的每一页均被分配唯一非零“指数”。指数值被选择以简化实施复杂性,并与生成多项式的任何形式不相关。例如,由从0到N-1的条带中的管芯位置标记页(例如,通过软件),且指数的合适值是管芯数量的补充(确保提供非零N<255)。指数值的另一选择是最低权重(最少数量的设置位或最少数量的清除位)非零整数,例如以减少和/或最小化硬件成本。在一些实施方式和/或使用场景中,选择灰度编码的指数值最小化过渡和/或减少如处理页的功率。
不根据有限域算术选择指数值,但根据其他原则来选择。尽管如此,每个指数值都对应于有限域中的非零元素。假设该页i有指数值Ki(且页j具有指数值Kj)。加权和冗余是Ki*PI的(GF域)和(从每页i超过相应字节Pi),每个字节乘以其指数值(超过GF域)。
因此,每个字节的加权和冗余信息计算如下:
R0=超过所有相应字节Pi的和;
Rl=超过所有相应字节Ki*Pi的和;
R0是所有相应字节的XOR;以及
R1是字节的加权和,其中,权重被选择为指数值。对页中的每个相应字节迭代前述计算,从而产生R0和R1中的每一个的字节的相应页。在下面的讨论中,为清晰的说明,在某些环境中,R0和R1分别作为单一元素(例如,各自均作为单字节)来描述,但如在上述计算中,每个均表示元素的相应页(例如,各自为字节页)。
Pi表示页i中的字节,且Pj表示在页j中的字节。相对于来自每页的对应字节的一个条带来描述处理,且在所有相应字节上进行迭代。若由于例如具有不同(较低级)冗余码率而使一些页比其他页“短”,则较短页均被零填充(或由对编码和解码的同样方式使用的任何已知值填充),以便被有效地处理的所有页具有相同的大小。
根据各种实施方式,经由各种串行和/或并行计算以任何顺序来进行求和计算R0和R1。页无需以任何特定的顺序处理,而无论是否在Kj*Pj对R1中的结果没有任何影响之前或之后添加Ki*Pi。根据各种实施方式,经由各种串行和/或并行计算,R0和R1值对应于冗余信息的页的各种字节的计算是彼此独立的,并且是可以任何顺序计算。此外,从R1减去Ki*Pi(和从R0减去Pi)能够“撤回”页面上的计算效果。由于超过GF域,加法和减法运算都是XOR(从而减法相当于第二次简单增加),在一些实施方式和/或使用场景中,没有特定的硬件需要GF域实施(例如,逻辑XOR功能是足够的)以“撤回”页。
在一些实施方式中,在不可校正的较低级错误的情况下,通过重新计算R0和R1,但通过有不可校正的较低级错误的省略页(有时也被称为列),较高级校正开始。通过从原始R0减去重新计算的R0以产生ΔR0,并从原始R1减去重新计算的R1以生产ΔR1来进行校正。
若没有不可校正的较低级错误,则重新计算的R0和R1均为零。若有不可校正的较低级错误,则重新计算的R0和R1(减法后)反映“丢失”的数据(未在第二次加入,但存在于原始值中)。
若有一个不可校正的较低级错误,则重新计算的R0用于校正该错误(以及重新计算的R1是不需要的)。
若有两个不可校正的较低级错误,则重新计算的R0和R1用来校正错误。若R0和R1值的页都是具有不可校正的较低级错误的页,则无需校正数据存储页。若R1值的页是具有不可校正的较低级错误的页中的一个,则经由R0进行校正(重新计算的R0值是具有不可校正的较低级错误的数据存储页的值)。
若在数据存储页中有两个不可校正的较低级错误,或者若R0页是具有不可校正的较低级错误的一页,则如上通过计算ΔR0和ΔR1开始校正。若R0页是具有不可校正的较低级错误的一个页,则可选地省略ΔR0页的计算。若页i和页j是具有不可校正的较低级错误的页,则重新计算的ΔR0=Pi+Pj,以及重新计算的ΔR1=Ki*Pi+Kj*Pj。等式求解产生:
Pi=(ΔR1-Kj*ΔR0)/(Ki-Kj)
Pj=ΔR0-Pi
若R0是具有不可校正的较低级错误的一个页,则(因为R0不包括在R1中)ΔR1=Ki*Pi,或Pi=ΔR1/Ki;通过在上式中设置Kj=0获得相同的结果(忽略ΔR0)。
在替代实施方式中,使用由整数模p(其中,p是素数)定义的有限域,而不使用伽罗华域。计算与上述相同,且加法是整数加法模p,以及乘法是整数乘法模p。例如,若页是字节的页,则使用整数模257的有限域。所有用户数据字节在0-255的范围内,且每个均被存储在一个字节中。然而,R1结果具有范围从0-256的值,需要多于一个字节来表示。有许多方法进行编码从0到256的值,以最小化存储空间,并能利用减少的开销使R1页被存储。例如,0和256的值被分别存储为000000000和000000001的九位序列,且所有其他值被存储在八位中。给定R1值的随机分布,则存储开销是<0.1%。参照图9所描述,选择R1页具有最大用户数据量,能使存储开销在某些使用场景中隐藏。
图10示出了较高级冗余信息结果和数据源对应的实施方式的所选细节,例如在诸如图7A的环境下的RASIE-2模式2-2所使用和如图7B进一步所示。图10明确示出了闪存管芯710.0、710.63、710.64和710.65,且由省略号(...)隐含地示出闪存管芯710.1...710.62。示出了块、页和闪存管芯的页内的字节的所选细节。较高级冗余信息的第一部分被示出为R0 1010(存储在闪存管芯710.64中),并使用奇偶校验编码来计算。较高级冗余信息的第二部分被示出为R1 1011(存储在闪存管芯710.65中),并使用加权和编码来计算。数据信息的存储被示出为数据1019(存储在闪存管芯710.0...710.63中)。
虚线箭头1001概念性地指示基于数据1019的所有第一页(在所有闪存管芯之间)的相应第一字节的两字节冗余计算结果(对于R0 1010和R1 1011中每一个的一个字节)。如图所示,两字节结果是第一R0和R1页中每一个上的第一字节。虚线箭头1002概念性地指示基于数据1019的所有第一页的相应最后字节的两字节冗余计算结果(R0 1010和R1 1011中每一个的一个字节)。如图所示,两字节结果是第一R0和R1页中每一个上的最后字节。虚线箭头1003概念性地指示基于数据1019的第一块(在所有闪存管芯之间)的相应最后页的两页冗余计算结果(R0 1010和R11011中每一个的一页)。
注意,如本文其他地方所描述,在一些实施方式中,较高级冗余信息被存储在数据的不同部分的不同管芯中。因此,在一些实施方式中,R0和R1被存储在各种管芯之间,而不是两个“专用的”管芯,如图10所示。
图11示出了较高级冗余信息计算的实施方式的所选细节,例如在诸如图7A的环境下由RASIE-2模式2-2所使用和如图7B和图10进一步所示,具有根据各种实施方式的各种操作条件。更具体而言,根据例如由图10的虚线箭头1001概念性地示出的两字节冗余计算结果,图11示出了字节R0的奇偶校验编码计算和字节R1的加权和编码计算。操作条件包括以下中的一个或多个:在有限域(诸如伽罗华域)上进行运算,作为闪存管芯编号的补充(或任何其他唯一和非零编号)的指数(对应于图11中的伪求和变量“i”值),以及对应于有限域中非零元素的指数。基于相应数据字节重复如图11所示的R0和R1的所有字节的计算。注意,非零指数能使R1值包括来自Pi的每一元素的贡献。
因此,不依赖于对任何字节R1彼此或之间的任何字节R0的计算。因此,设想各种实施方式,其中,以并行、部分并行或完全串行的方式完全(大量)计算R0和R1值。例如,并行计算页中的所有R0和/或R1字节。对于另一实例,并行计算页中的所有R0字节,随后(或之前)并行计算页中的所有R1字节。
此外,不存在对相对于彼此或相对于计算任何R1字节而计算任何字节R0的排序要求。因此,设想各种实施方式,其中,以以下方式计算R0和R1值:完全相对于彼此按顺序、相对于彼此单独按顺序(例如,以相对于彼此按顺序但相对于R1不按顺序来计算R0,且反之亦然)、或不按特定的顺序(例如,完全无序、无序或随机排序)。例如,以特定顺序(例如,从最低字节到最高字节)计算页的所有R0字节,随后以特定顺序计算页的所有R1字节。对于另一实例,以特定顺序计算页的所有R0字节,并以特定顺序独立计算页的所有R1字节。对于又一实例,相对于彼此(例如,当数据操作数变为可用)不按特定顺序计算页的所有R0字节以及页的所有R1字节。
对于又一实例,以由在一个或多个NVM(各自具有例如一个或多个闪存管芯)上进行的一个或多个读操作的完成的顺序确定的顺序来计算一页或多页的所有R0和R1字节,读操作用于读取由图11所示的求和和加权求和计算(Pi)所引用的数据字节。在一些实施方式和/或使用场景中,以由读操作的完成确定的顺序进行计算能够减小或消除NVM和被启用来进行计算的元件之间的缓冲。在一些实施方式和/或使用场景中,以由读操作的完成确定的顺序进行计算能够减小用于进行计算的存储带宽,诸如NVM的存储带宽。
对于又一实例,以响应于在一个或多个NVM(各自具有例如一个或多个闪存管芯)上进行的读操作返回的数据和/或可用的数据的顺序确定的顺序来计算一页或多页的所有R0和R1字节,返回的数据和/或可用的数据对应于由图11所示的求和和加权求和计算(Pi)引用的数据字节。在一些实施方式和/或使用场景中,以由返回的数据和/或可用的数据确定的顺序进行计算可减小或消除NVM和被启用来进行计算的元件之间的缓冲。在一些实施方式和/或使用场景中,以由返回的数据和/或可用的数据确定的顺序进行计算可减小用于进行计算的存储带宽,诸如NVM的存储带宽。在一些实施方式中,以特定顺序(例如,从Pi的最低字节到最高字节)进行读操作,而在其他实施方式中,不以特定顺序进行读操作。
图12示出了(在单一操作期间)从一个(较低级)故障恢复的实施方式的所选细节,例如在诸如与图11相关联的环境下,且其中,在页j上已发生较低级故障。注意,若较低级故障是在R0或R1页上,则如图11所述重新确定R0(或R1)。图12示出了页j的恢复值的一个字节的计算(注意,求和省略了发生故障的页j)。基于R0的相应字节和来自除页j之外的所有数据页的相应字节,重复如图12所示的计算以确定页j的所有字节的恢复值。
因此,对计算页j的恢复值的任何字节彼此没有依赖性。因此,设想各种实施方式,其中,在从高度并行到高度串行的范围计算Pj恢复值,类似于上述R0和R1值的计算。此外,对相对于彼此计算页j的任何恢复值没有顺序的要求。因此,设想各种实施方式,其中,相对于彼此以不同顺序计算Pj恢复值,类似于上述R0和R1值的计算。
一些示例性实施方式进行与以至少部分由对一个或多个NVM(各自具有例如一个或多个闪存管芯)进行的一个或多个读操作的完成的排序确定的排序来确定恢复值相关的计算,读操作用于读取NVM以获得如图12所示的R0和/或Pi值。在一些实施方式和/或场景中,以完成读操作的顺序进行计算能够减小或消除NVM和被启用来进行计算的元件之间的缓冲。在一些实施方式和/或使用场景中,以完成读操作的顺序进行计算能够减小用于进行计算的存储带宽,诸如NVM的存储带宽。
一些示例性实施方式进行与以至少部分由从一个或多个NVM(各自具有例如一个或多个闪存管芯)返回的数据和/或可用的数据的排序确定的排序来确定恢复值相关的计算,返回的数据和/或可用的数据响应于对NVM进行的读操作以获得如图12所示的R0和/或Pi值。在一些实施方式和/或使用场景中,以从读操作返回的数据和/或可用的数据的顺序进行计算可减小或消除NVM和被启用来进行计算的元件之间的缓冲。在一些实施方式和/或使用场景中,以从读操作返回的数据和/或可用的数据的顺序进行计算可减小用于进行计算的存储带宽,诸如NVM的存储带宽。在一些实施方式中,以特定顺序(例如,从Pi的最低字节到最高字节)进行读操作,而在其他实施方式中,不以特定顺序进行读操作。
图13A至图13D示出了(在单一操作期间)从两个(较低级)故障恢复的实施方式的所选细节,例如在诸如与图11相关联的环境下,且其中,在页m和n上已发生了较低级故障。注意,若较低级故障是在R0或R1页上,则无需R0和R1进行数据恢复,且没有恢复数据的处理。否则,需注意,若一个较低级故障是R1页,则如图12所述进行数据恢复。若较低级故障既不在R0页上也不在R1页上,则如下进行Pm和Pn值恢复。图13A示出了修改为R0'的R0的一个字节和修改为R1'的R1的一个字节的计算(注意,求和省略了发生故障的m和n页)。图13B示出了关于原始冗余信息(R0、R1)至修改的冗余信息(R0'、R1')的一个字节的等式,和从用于形成修改的R0和R1的求和中省略的术语(Pm+Pn和Km*Pm+Kn*Pn)。图13C示出了图13B的代数重排,其中,引进术语德尔塔R0(ΔR0)和德尔塔R1(ΔR1)。图13D示出了图13C的Pn和Pm的解,并因此基于R1、R0的相应字节和来自除了页m和n之外的所有数据页的相应字节来表示页n的恢复值的一个字节和页m的恢复值的一个字节的计算。注意,唯一指数能实现非零分母,如Kn相对于Km唯一。
在各种实施方式中,进行由图13A至图13D所表示的计算以确定页m的恢复值的一个字节和页n的恢复值的一个字节。基于R0、R1的相应字节和来自除了页m和n之外的所有数据页的相应字节,重复计算以确定页m和n的所有字节的恢复值。
因此,对计算页m或n的恢复值的任何字节彼此没有依赖性。因此,设想各种实施方式,其中,在从高度并行到高度串行的范围计算Pm和/或Pn恢复值,类似于上述Pj恢复值的计算。此外,对相对于彼此计算页m和/或页n的任何恢复值没有顺序的要求。因此,设想各种实施方式,其中,相对于彼此以不同顺序计算Pm和/或Pn恢复值,类似于上述Pj恢复值的计算。
一些示例性实施方式进行与以至少部分由对一个或多个NVM(各自具有例如一个或多个闪存管芯)进行的一个或多个读操作的完成的排序确定的排序来确定恢复值相关的计算(诸如R0'和R1'的计算),读操作用于获得如图13A至图13D的任一个中的计算源所示的任何一个或多个值。在一些实施方式和/或使用场景中,以完成读操作的顺序进行计算能够减小或消除NVM和被启用来进行计算的元件之间的缓冲。在一些实施方式和/或使用场景中,以完成读操作的顺序进行计算能够减小用于进行计算的存储带宽,诸如NVM的存储带宽。
一些其他示例性实施方式进行与以至少部分由从一个或多个NVM(各自具有例如一个或多个闪存管芯)返回的数据和/或可用的数据的排序确定的排序来确定恢复值相关的计算(诸如R0'和R1'的计算),返回的数据和/或可用的数据响应于对NVM进行的读操作以获得如图13A至图13D的任一个中的计算源所示的任何一个或多个值。在一些实施方式和/或使用场景中,以从读操作返回的数据和/或可用的数据的顺序进行计算可减小或消除NVM和被启用来进行计算的元件之间的缓冲。在一些实施方式和/或使用场景中,以从读操作返回的数据和/或可用的数据的顺序进行计算可减小用于进行计算的存储带宽,诸如NVM的存储带宽。在一些实施方式中,以特定顺序(例如,从Pi的最低字节到最高字节)进行读操作,而在其他实施方式中,不以特定顺序进行读操作。
图14A和图14B示出了针对从NVM接收的页计算较高级冗余信息的实施方式的所选细节。图14A示出了经由发出(发出读操作1402A)、检查是否所有命令已发送(所有已发出?1403A)将多个读命令发送到一个或多个NVM的实施方式的所选细节,且若没有,则循环回到发送另一命令。注意,设想其他实施方式,其中,每次发出多个命令,而不是一次发出一个。
图14B示出了响应于如图14A所示的发送的读命令而处理从NVM接收的页的实施方式的所选细节。进行检查以确定是否页可用(页已准备好?1402B)。若没有,则处理循环回以再次进行检查。若页可用,则执行关于页的较高级冗余信息处理(进行基于页的计算1403B)。随后,进行检查以确定所有页是否已被处理(页已完成?1404B)。如果是,则完成处理(结束1499B),否则流程循环回以确定是否另一页可用。
除了响应于如图14A所示发送的命令的页的接收,图14B所示的处理独立于图14A所示的处理。在各种场景中,页的到达顺序根据NVM类型、状态、操作环境和其他因素而有所不同,且在某些场景中不同于对应于到达页的读命令的发送顺序或到达顺序。由于图14A的处理独立于图14B(除了页数据到达依赖于被发送的相应读命令之外),在一些实施方式和/或使用场景中,读命令被发送(图14A),同时读数据正被接收/处理(图14B)。在一些实施方式和/或使用场景中,一些页从一个或多个缓冲器提供,而不是经由针对NVM的读命令来请求,例如,如果在特定页的读命令被发送之前,特定页存在于特定缓冲器中。在一些实施方式和/或使用场景中,除了响应于发送的命令之外的页由与响应于发送的命令所提供的页(例如,响应于针对其他活动而发送的读命令所提供的页)混合的NVM提供。
在各种实施方式中,至少部分如由图14A和图14B所示来进行如图11所示的R0和R1的计算。在第一实例中,计算相应R0和R1页所需的所有数据页的读命令被发送到如由图14A所示的一个或多个NVM。当接收页以计算R0和R1页(如图11所示)时,处理响应于读命令而接收的数据页。在第二实例中,一对(例如,对应于双平面NVM的两个平面)R0和R1页的读命令被发送到一个或多个NVM,如由图14A所示。当接收页以计算R0和R1页(如由图11所示)时,处理响应于读命令而接收的数据页。
在各种实施方式中,至少部分如由图14A和图14B所示进行如由图12所示的Pj的计算。在第一实例中,计算特定Pj页所需的所有数据页的读命令被发送到如由图14A所示的一个或多个NVM。当接收页以计算Pj页(如图12所示)时,处理响应于读命令而接收的数据页。在第二实例中,一对(例如,对应于双平面NVM的两个平面)Pj页的读命令被发送到一个或多个NVM,如由图14A所示,且如由图14B所示的接收来处理所接收的数据页以计算一对Pj页。
在各种实施方式中,至少部分如由图14A和图14B所示进行与如由图13A至图13D中的任一个所示来确定恢复值(诸如R0'和R1'的计算)相关的计算。在第一实例中,计算特定R0'页和特定R1'页所需的所有数据页的读命令被发送到如由图14A所示的一个或多个NVM。当接收页以计算R0'和R1'页(如图13A所示)时,处理响应于读命令而接收的数据页。在第二实例中,一对(例如,对应于双平面NVM的两个平面)R0'和R1'页的读命令被发送到一个或多个NVM,如由图14A所示,且如由图14B所示的接收来处理所接收的数据页以计算一对R0'和R1'页。
图15A至图15C示出了针对提供至NVM的写入撤回较高级冗余信息的计算的实施方式的所选细节,例如在诸如与图11相关联的环境下。图15A示出了经由发出(发出写操作1502A)、检查是否所有命令已发送(所有已发出?1503A)将多个写命令发送到一个或多个NVM的实施方式的所选细节,且若没有,则循环回到发送另一命令。注意,设想其他实施方式,其中,每次发出多个命令,而不是一次发出一个。
图15B示出了响应于如图15A所示的发送的写命令而处理从NVM接收的写完成和状态信息的实施方式的所选细节。进行检查以确定是否在没有错误的情况下已完成写入(写入可以吗?1502B)。若是这样,则进行检查以确定是否所有写操作已完成(写入已完成?1504B)。若是这样,则处理完成(结束 1599B)。若写入已完成,但有(较低级)错误,诸如程序故障,则流程进行至相对于较高级冗余信息“撤消”写入的效果(从冗余中撤回写入 1503B)。更具体而言,根据任何相应较高级冗余信息计算(假设写数据已被包括在假设写入会成功的推定下的相应较高级冗余计算中)来重新计算具有较低级错误的写数据。例如,对特定页j检测较低级写故障。响应于此,计算修改的R0和R1页,使得页j数据(Pj)被设置为零。图15C示出了修改的R0(nR0)的单字节和修改的R1(nR1)的单字节的计算的实施方式的所选细节,其中,j是较低级写故障的页。注意,在图12的环境中,诸如与图相关联,若有限域是伽罗华域,则图15C所示的减法运算(“–”)相当于逻辑XOR操作。在各种实施方式中,进行其他处理(未示出)以存储具有较低级写故障的页(Pj),以及修改的较高级冗余页(nR0和nR1)。
除了响应于如图15A所示发送的命令的写完成和状态信息的接收,图15B所示的处理独立于图15A所示的处理。在各种场景中,写完成和状态信息的到达顺序根据NVM类型、状态、操作环境和其他因素而有所不同,且在某些场景中不同于对应于到达写完成和状态信息的写命令的发送顺序或到达顺序。由于图15A的处理独立于图15B(除了写完成和状态信息到达依赖于被发送的相应写命令之外),在一些实施方式和/或使用场景中,写命令被发送(图15A),同时写完成和状态信息正被接收/处理(图15B)。
在一些实施方式和/或使用场景中,显著延迟在被发送到NVM的写命令和响应于写命令从NVM接收写完成和状态信息之间发生。在一些实施方式和/或使用场景中,除了响应于如图15A所示发送的命令之外的写完成和状态信息由与响应于图15A所示发送的命令而提供的写完成和状态信息(例如,响应于用于其他活动而发送的写命令提供的写完成和状态信息)混合的NVM提供。
在各种实施方式和/或场景中,不使用将以其他方式用于数据信息的一页或多页。在各种场景中,未使用的页是块、R-块、条带的第一、中间或最后一页或任何一种页的序列。在一些场景中,先验不使用未使用的页(“留下”),且在一些情况中,在一些使用后不使用未使用的页(“从服务中删除”)。被留下的未使用的页的实例是不正确产生的页。从服务中删除的未使用的页的实例是不能正确写入的页(例如,如参照图15B被描述为较低级写入错误)。例如,参照图10至图12、图13A至图13D、图14A至图14B和图15A至图15B的处理跳过任何未使用的页(不论是留下还是从服务中删除),诸如通过完全从计算中省略未使用的页,或通过假设未使用的页上的所有数据为零进行计算。
在各种实施方式中,完全或部分由图1A的一个或多个元件(或其部分)进行图10至图12、图13A至图13D、图14A至图14B和图15A至图15B的一个或多个元件的处理或关于其的处理。例如,CPU 171的软件执行能力的一部分被用于管理较高级冗余处理,诸如通过引导如由图12和图13A至图13D所示的数据恢复操作。在另一实例中,数据处理121包括专用和/或专门用于根据诸如由图11所示的计算来计算较高级冗余信息的硬件元件。
示例性实施技术
在一些实施方式中,通过与由计算机系统的处理兼容的规范来指定由实施动态较高级冗余模式管理的系统(诸如独立硅元件(例如,闪速存储器)、计算主机闪速存储器控制器和/或SSD控制器(诸如图1A的SSD控制器100)、以及处理器、微处理器、片上系统、专用集成电路、硬件加速器或提供所有或部分上述操作的其他电路中的一部分)执行的操作的全部或部分的各种组合。该规范根据各种描述,诸如硬件描述语言、电路描述、网表描述、掩膜(mask)描述或布局描述。实例性描述包括:Verilog、VHDL、SPICE、诸如PSpice的SPICE变形、IBIS、LEF、DEF、GDS-II、OASIS或其他描述。在各种实施方式中,处理包括解释、编译、模拟和合成的任何组合,以产生、验证或指定适用于包括在一个或多个集成电路上的逻辑和/或电路。根据各种实施方式,每个集成电路可根据各种技术设计和/或制造。所述技术包括可编程技术(诸如字段或掩模可编程门阵列集成电路)、半定制技术(诸如全部或部分基于单元的集成电路)和全定制技术(诸如实质上特定的集成电路)、它们的任何组合、或与集成电路的设计和/或制造兼容的任何其他技术。
在一些实施方式中,如由具有存储在其中的一组指令的计算机可读介质描述的操作的所有或部分的各种组合可通过以下来执行:执行和/或解释一个或多个程序指令、解释和/或编译一个或多个源和/或脚本语言语句、或执行通过编译、转换和/或解释在编程和/或脚本语言语句中表达的信息而产生的二进制指令。语句可与任何标准的编程或脚本语言(诸如C、C++、Fortran、Pascal、Ada、Java、VBscript和Shell)兼容。程序指令、语言语句或二进制指令中的一个或多个可选地被存储在一个或多个计算机可读存储介质元件中。在各种实施方式中,程序指令中的一些、所有或各个部分被实现为功能、例程、子例程、在线例程、程序、宏或其部分中的一个或多个。
结论
在准备文本和附图中,仅为了方便,在描述中已做了某些选择,且除非有相反的指示,否则选择本身不应被解释为传达了有关所描述的实施方式的结构或操作的额外信息。选择的实例包括:用于附图标记指定的特定组织或分配以及用于识别和引用实施方式的特征和元件的元件标识符(例如标注或数字标识符)的特定组织或分配。
词语“包括”或“包含”具体意在被理解为对描述开放式范围的逻辑组的抽象,且并不意味着传达物理包含物,除非后面明确跟随词语“之内”。
尽管为了描述和理解清晰的目的,已在一些细节中描述了上述实施方式,但本发明不限于所提供的细节。有许多本发明的实施方式。所公开的实施方式是实例性的,而不是限制性的。
应理解构造、布置和使用的许多变化可能与本描述一致,且处于已公布的专利的权利要求的范围内。例如,互连和功能单位的位宽度、时钟速度和所使用的技术的类型根据每个组件块中的各种实施方式而可变。给于互连和逻辑的名称仅是实例性的,且不应被解释为限定所描述的概念。流程图和流程图过程、动作和功能元件的顺序和布置根据各种实施方式可变化。另外,除非特别说明与此相反,否则指定的值范围、使用的最大值和最小值或其他特定的规范(诸如闪存技术类型;以及寄存器和缓存器中的条目或级别的数量)仅是所描述的那些实施方式,期望跟踪实施技术的改进和变化,且不应被解释为限定。
可采用本领域公知的功能相当的技术,而不是用于实施各种组件、子系统、操作、功能、例程、子例程、在线例程、程序、宏或其部分的那些所述技术。还应理解,实施方式中的许多功能方面可在硬件(即,一般专用电路)或软件(例如,经由编程的控制器或处理器的某种方式)中选择性实现,以作为取决于设计约束和更快处理的技术趋势(促使先前在硬件中的功能迁移至软件)和更高的集成密度(促使先前在软件中的功能迁移至硬件)的实施方式的功能。各种实施方式中的具体变化包括但不限于:划分的差异;不同的形式因素和配置;使用不同的操作系统和其他系统软件;使用不同接口标准、网络协议、或通信链路;以及当根据特定应用的独特工程和商业限制实施在本文中描述的概念时预期的其他变化。
已通过超越需要用于所描述的实施方式的很多方面的最小实现的细节和环境背景描述了实施方式。本领域普通技术人员将认识到,一些实施方式省略了公开的组件或特征,且无需改变剩余元素之间的基本合作。因此,应理解许多公开的细节不需要实施所描述的实施方式的各个方面。在剩余元素可与现有技术相区别的范围内,被省略的组件和特征不限于本文中所描述的概念。
设计中的所有这些变化是在由所描述的实施方式传达的教导上的非实质性变化。还应理解,本文中描述的实施方式对其他的计算和网络应用具有广泛的适用性,且并不限于所描述的实施方式的特定应用或行业。因此,本发明将被解释为包括涵盖在所公布的专利的权利要求的范围内的所有可能的修改和变更。
Claims (20)
1.一种系统,包括:
用于计算k个冗余数据部分以保护n-k个有用数据部分的装置;
用于将所述k个冗余数据部分中的每一个和所述n-k个有用数据部分中的每一个存储在单独的相应区域中的装置,所述相应区域中的每一个在n个物理装置的相应一个中;
用于在使得一个所述相应区域不再可用的故障之后计算j个冗余数据部分以保护n-1-j个有用数据部分的装置;以及
其中,j<=k。
2.根据权利要求1所述的系统,其中,所述用于计算k个冗余数据部分以保护n-k个有用数据部分的装置可在第一数据保护模式下操作,用于计算j个冗余数据部分以保护n-1-j个有用数据部分的所述装置可在第二数据保护模式下操作,且所述系统还包括用于响应所述故障从所述第一数据保护模式下的操作切换至所述第二数据保护模式下的操作的装置。
3.根据权利要求1所述的系统,其中,当j==k时,减少所述有用数据部分的总量且至少保留保护程度。
4.根据权利要求3所述的系统,其中,所述保护程度是防止高达j个所述相应区域的故障的保护。
5.根据权利要求1所述的系统,其中,当j==k-1且j>=1时,保留所述有用数据部分的总量,降低保护程度,且保护所述有用数据部分。
6.根据权利要求5所述的系统,其中,所降低的保护程度是防止高达j-1个所述相应区域的故障的保护。
7.根据权利要求1所述的系统,
其中,所述n个物理装置中的每一个包括多个所述相应区域;
所述系统还包括用于在多组所述相应区域中的每一组中存储包括有用数据子集和保护所述有用数据子集的冗余数据子集的相应组数据的装置,所述冗余数据子集被存储在与所述有用数据子集不同的一个所述n个物理装置中;以及
其中,所述相应区域的组中的每一个包括所述n个物理装置中的每一个的不超过一个的相应区域,且用于存储的所述装置根据可选地被存储在所述n个物理装置的n个或更少的不同组中的每个所述相应组数据。
8.根据权利要求7所述的系统,其中,在所述故障之前,数据组的特定一个的所述有用数据子集包括所述n-k个有用数据部分,且特定数据组的所述冗余数据子集包括所述k个冗余数据部分。
9.根据权利要求7所述的系统,其中,用于存储的所述装置根据用于存储数据组的第一个的所述有用数据子集的一部分的所述n个物理装置的特定一个中的所述相应区域的第一个,并进一步根据用于存储所述数据组的第二个的所述冗余数据子集的一部分或全部的特定物理装置中的所述相应区域的第二个。
10.根据权利要求7所述的系统,其中,在所述相应区域的第一相应区域中的存储量不同于在所述相应区域的第二相应区域中的存储量。
11.根据权利要求10所述的系统,其中,所述第一相应区域和所述第二相应区域位于所述n个物理装置的同一个中。
12.一种系统,包括:
用于在第一较高级冗余模式下操作的装置,包括用于在存储器的n个相应非重叠区域中存储n个信息部分的装置;
用于在第二较高级冗余模式下操作的装置,包括用于在所述存储器的n-1个相应非重叠区域中存储n-1个信息部分的装置;
用于检测所述n个相应非重叠区域中的发生故障的一个的故障的装置;
用于响应于所述故障从经由用于在所述第一较高级冗余模式下操作的所述装置进行的操作动态过渡至经由用于在所述第二较高级冗余模式下操作的所述装置进行的操作的装置,所述n个相应非重叠区域的n-1个是不包括所述n个相应非重叠区域的所述发生故障的一个的n个相应非重叠区域;
其中,所述n个信息部分中的每一个包括相应n-k个数据信息部分和被计算以保护所述相应n-k个数据信息部分的相应k个冗余信息部分;
其中,所述n-1个信息部分中的每一个包括相应n-1-j个数据信息部分和被计算以保护所述相应n-1-j个数据信息部分的相应j个冗余信息部分;
其中,j<=K;以及
其中,所述n个相应非重叠区域中的每一个位于所述存储器的n个物理装置的相应一个中。
13.根据权利要求12所述的系统,其中,当j==k时,减少所述数据信息部分的总量并至少保留保护程度。
14.根据权利要求13所述的系统,其中,所述保护程度是防止高达所述n个相应非重叠区域的j个的故障的保护。
15.根据权利要求12所述的系统,其中,当j==k-1且j>=1时,保留所述数据信息部分的总量,降低保护程度,且保护所述数据信息部分。
16.根据权利要求15所述的系统,其中,所降低的保护程度是防止高达所述n个相应非重叠区域的j-1个的故障的保护。
17.一种系统,包括:
用于响应于来自计算主机的读取和/或写入请求根据当前较高级冗余模式管理一个或多个闪存的装置;以及
用于响应于检测一个或多个所述闪存的一个或多个部分的故障来动态过渡所述当前较高级冗余模式的装置。
18.根据权利要求17所述的系统,其中,用于动态过渡的所述装置包括用于减小自由空间的装置。
19.根据权利要求17所述的系统,其中,用于动态过渡的所述装置包括用于根据目标较高级冗余模式重新配置数据存储的装置。
20.根据权利要求17所述的系统,其中,用于动态过渡的所述装置包括用于根据目标较高级冗余模式确定和存储修改的较高级冗余信息的装置。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US41884610P | 2010-12-01 | 2010-12-01 | |
US61/418,846 | 2010-12-01 | ||
US201161433918P | 2011-01-18 | 2011-01-18 | |
US61/433,918 | 2011-01-18 | ||
PCT/US2011/062726 WO2012075200A2 (en) | 2010-12-01 | 2011-11-30 | Dynamic higher-level redundancy mode management with independent silicon elements |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103348330A true CN103348330A (zh) | 2013-10-09 |
CN103348330B CN103348330B (zh) | 2017-05-24 |
Family
ID=46172550
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180066679.9A Expired - Fee Related CN103348330B (zh) | 2010-12-01 | 2011-11-30 | 采用独立硅元件的动态较高级冗余模式管理 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9105305B2 (zh) |
EP (1) | EP2646922A4 (zh) |
JP (1) | JP5980798B2 (zh) |
KR (1) | KR101636785B1 (zh) |
CN (1) | CN103348330B (zh) |
TW (1) | TW201232264A (zh) |
WO (1) | WO2012075200A2 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104699577A (zh) * | 2013-12-06 | 2015-06-10 | 英特尔公司 | 用于在分布式码字存储系统中定位故障管芯的计数器 |
CN105096993A (zh) * | 2015-09-21 | 2015-11-25 | 联想(北京)有限公司 | 固态硬盘、电子设备及信息处理方法 |
CN106843771A (zh) * | 2017-01-26 | 2017-06-13 | 合肥兆芯电子有限公司 | 存储器重读方法、存储器控制电路单元及存储器存储装置 |
CN113168289A (zh) * | 2018-12-03 | 2021-07-23 | 美光科技公司 | 使用逐出和恢复管理存储装置中的冗余上下文 |
CN115686353A (zh) * | 2021-07-27 | 2023-02-03 | 北京特纳飞电子技术有限公司 | 用于异常情况同步处理的固件控制且基于表的条件作用 |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101541040B1 (ko) | 2010-03-12 | 2015-08-03 | 엘에스아이 코포레이션 | 플래시 메모리들을 위한 ldpc 소거 디코딩 |
US9582431B2 (en) | 2010-03-22 | 2017-02-28 | Seagate Technology Llc | Storage address space to NVM address, span, and length mapping/converting |
CN103348330B (zh) | 2010-12-01 | 2017-05-24 | 希捷科技有限公司 | 采用独立硅元件的动态较高级冗余模式管理 |
WO2012099937A2 (en) | 2011-01-18 | 2012-07-26 | Lsi Corporation | Higher-level redundancy information computation |
US8719663B2 (en) | 2010-12-12 | 2014-05-06 | Lsi Corporation | Cross-decoding for non-volatile storage |
US8874994B2 (en) | 2011-07-22 | 2014-10-28 | Sandisk Technologies Inc. | Systems and methods of storing data |
WO2013109640A1 (en) | 2012-01-17 | 2013-07-25 | Intel Corporation | Techniques for command validation for access to a storage device by a remote client |
US9183085B1 (en) | 2012-05-22 | 2015-11-10 | Pmc-Sierra, Inc. | Systems and methods for adaptively selecting from among a plurality of error correction coding schemes in a flash drive for robustness and low latency |
US8972824B1 (en) | 2012-05-22 | 2015-03-03 | Pmc-Sierra, Inc. | Systems and methods for transparently varying error correction code strength in a flash drive |
US8996957B1 (en) | 2012-05-22 | 2015-03-31 | Pmc-Sierra, Inc. | Systems and methods for initializing regions of a flash drive having diverse error correction coding (ECC) schemes |
US9021333B1 (en) | 2012-05-22 | 2015-04-28 | Pmc-Sierra, Inc. | Systems and methods for recovering data from failed portions of a flash drive |
US9021336B1 (en) | 2012-05-22 | 2015-04-28 | Pmc-Sierra, Inc. | Systems and methods for redundantly storing error correction codes in a flash drive with secondary parity information spread out across each page of a group of pages |
US8788910B1 (en) | 2012-05-22 | 2014-07-22 | Pmc-Sierra, Inc. | Systems and methods for low latency, high reliability error correction in a flash drive |
US8793556B1 (en) | 2012-05-22 | 2014-07-29 | Pmc-Sierra, Inc. | Systems and methods for reclaiming flash blocks of a flash drive |
US9047214B1 (en) | 2012-05-22 | 2015-06-02 | Pmc-Sierra, Inc. | System and method for tolerating a failed page in a flash device |
US9021337B1 (en) | 2012-05-22 | 2015-04-28 | Pmc-Sierra, Inc. | Systems and methods for adaptively selecting among different error correction coding schemes in a flash drive |
US9176812B1 (en) | 2012-05-22 | 2015-11-03 | Pmc-Sierra, Inc. | Systems and methods for storing data in page stripes of a flash drive |
US9418700B2 (en) * | 2012-06-29 | 2016-08-16 | Intel Corporation | Bad block management mechanism |
US8856431B2 (en) * | 2012-08-02 | 2014-10-07 | Lsi Corporation | Mixed granularity higher-level redundancy for non-volatile memory |
US20140047177A1 (en) * | 2012-08-10 | 2014-02-13 | International Business Machines Corporation | Mirrored data storage physical entity pairing in accordance with reliability weightings |
WO2014028183A1 (en) * | 2012-08-13 | 2014-02-20 | Lsi Corporation | Fractional redundant array of silicon independent elements |
US9098400B2 (en) | 2012-10-31 | 2015-08-04 | International Business Machines Corporation | Dynamic tuning of internal parameters for solid-state disk based on workload access patterns |
US9021339B2 (en) * | 2012-11-29 | 2015-04-28 | Western Digital Technologies, Inc. | Data reliability schemes for data storage systems |
US9009565B1 (en) | 2013-03-15 | 2015-04-14 | Pmc-Sierra, Inc. | Systems and methods for mapping for solid-state memory |
US9081701B1 (en) | 2013-03-15 | 2015-07-14 | Pmc-Sierra, Inc. | Systems and methods for decoding data for solid-state memory |
US9208018B1 (en) | 2013-03-15 | 2015-12-08 | Pmc-Sierra, Inc. | Systems and methods for reclaiming memory for solid-state memory |
US9053012B1 (en) | 2013-03-15 | 2015-06-09 | Pmc-Sierra, Inc. | Systems and methods for storing data for solid-state memory |
US9026867B1 (en) | 2013-03-15 | 2015-05-05 | Pmc-Sierra, Inc. | Systems and methods for adapting to changing characteristics of multi-level cells in solid-state memory |
JP5978259B2 (ja) * | 2013-08-16 | 2016-08-24 | エルエスアイ コーポレーション | 順次読み出し最適化可変サイズフラッシュトランスレーションレイヤ |
JP6443794B2 (ja) * | 2013-08-16 | 2018-12-26 | エルエスアイ コーポレーション | ホストとコントローラとの間でパーティション化された変換レイヤ |
TWI507883B (zh) * | 2013-09-18 | 2015-11-11 | Realtek Semiconductor Corp | 記憶卡存取裝置、其控制方法與記憶卡存取系統 |
US9239756B2 (en) | 2013-12-13 | 2016-01-19 | Sandisk Technologies Inc. | Systems and methods for performing data recovery in a memory system |
KR102108386B1 (ko) | 2013-12-23 | 2020-05-08 | 삼성전자주식회사 | 저장 장치 및 그것의 데이터 엔코딩 및 디코딩 방법들 |
US9927998B2 (en) | 2014-02-05 | 2018-03-27 | Tidal Systems, Inc. | Flash memory compression |
US9218244B1 (en) * | 2014-06-04 | 2015-12-22 | Pure Storage, Inc. | Rebuilding data across storage nodes |
KR102249810B1 (ko) | 2014-07-23 | 2021-05-11 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
US9766972B2 (en) * | 2014-08-07 | 2017-09-19 | Pure Storage, Inc. | Masking defective bits in a storage array |
JP6486723B2 (ja) | 2015-01-21 | 2019-03-20 | 東芝メモリ株式会社 | メモリシステムおよび処理装置 |
US9678665B2 (en) * | 2015-03-06 | 2017-06-13 | Western Digital Technologies, Inc. | Methods and systems for memory page allocation |
CN106155812A (zh) | 2015-04-28 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 一种对虚拟主机的资源管理的方法、装置、系统及电子设备 |
US9766837B2 (en) | 2015-06-10 | 2017-09-19 | Micron Technology, Inc. | Stripe mapping in memory |
US10656838B2 (en) | 2015-07-13 | 2020-05-19 | Samsung Electronics Co., Ltd. | Automatic stream detection and assignment algorithm |
CN106814643B (zh) * | 2015-11-30 | 2019-08-23 | 北京铁路信号有限公司 | 一种双机热备的控制方法及系统 |
US9971523B2 (en) | 2016-03-10 | 2018-05-15 | Toshiba Memory Corporation | Memory controller with data compression and padding features, method of controlling nonvolatile memory and memory system |
US10866905B2 (en) | 2016-05-25 | 2020-12-15 | Samsung Electronics Co., Ltd. | Access parameter based multi-stream storage device access |
US10735346B2 (en) | 2017-12-30 | 2020-08-04 | Intel Corporation | Data block prioritization for internet of things payloads |
JP2018101440A (ja) * | 2018-02-08 | 2018-06-28 | 株式会社日立製作所 | 計算機システム |
US10949297B2 (en) * | 2018-12-05 | 2021-03-16 | Micron Technology, Inc. | NAND device mixed parity management |
CN113993847A (zh) | 2019-06-06 | 2022-01-28 | 巴斯夫欧洲公司 | 杀真菌的n-(吡啶-3-基)羧酰胺类 |
KR102650809B1 (ko) | 2019-08-02 | 2024-03-26 | 삼성전자주식회사 | 스토리지 장치 및 그것의 동작 방법 |
CN111639008B (zh) * | 2020-05-29 | 2023-08-25 | 杭州海康威视系统技术有限公司 | 基于双端口ssd的文件系统状态监测方法、装置及电子设备 |
US20230015697A1 (en) * | 2021-07-13 | 2023-01-19 | Citrix Systems, Inc. | Application programming interface (api) authorization |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6557123B1 (en) * | 1999-08-02 | 2003-04-29 | Inostor Corporation | Data redundancy methods and apparatus |
US7073115B2 (en) * | 2001-12-28 | 2006-07-04 | Network Appliance, Inc. | Correcting multiple block data loss in a storage array using a combination of a single diagonal parity group and multiple row parity groups |
CN101523353A (zh) * | 2006-09-19 | 2009-09-02 | Lsi罗吉克 | 在存在全局热备用磁盘的情况下用于故障驱动器的优化重建和向回复制的方法 |
US20100293439A1 (en) * | 2009-05-18 | 2010-11-18 | David Flynn | Apparatus, system, and method for reconfiguring an array to operate with less storage elements |
Family Cites Families (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5099484A (en) | 1989-06-09 | 1992-03-24 | Digital Equipment Corporation | Multiple bit error detection and correction system employing a modified Reed-Solomon code incorporating address parity and catastrophic failure detection |
JPH06187249A (ja) * | 1992-12-16 | 1994-07-08 | Nec Eng Ltd | ディスクアレイ装置 |
JPH07271672A (ja) | 1994-03-30 | 1995-10-20 | Toshiba Corp | マルチウェイセットアソシアティブキャッシュシステム |
WO1996012229A1 (en) | 1994-10-14 | 1996-04-25 | Silicon Graphics, Inc. | Indexing and multiplexing of interleaved cache memory arrays |
US5666512A (en) | 1995-02-10 | 1997-09-09 | Hewlett-Packard Company | Disk array having hot spare resources and methods for using hot spare resources to store user data |
US5862158A (en) | 1995-11-08 | 1999-01-19 | International Business Machines Corporation | Efficient method for providing fault tolerance against double device failures in multiple device systems |
JP2000039970A (ja) * | 1998-07-24 | 2000-02-08 | Nec Software Kobe Ltd | ディスクアレイシステムの二重障害防止制御方式 |
US6516425B1 (en) * | 1999-10-29 | 2003-02-04 | Hewlett-Packard Co. | Raid rebuild using most vulnerable data redundancy scheme first |
US7117397B1 (en) * | 1999-12-15 | 2006-10-03 | Fujitsu Limited | Apparatus and method for preventing an erroneous operation at the time of detection of a system failure |
US6826711B2 (en) * | 2000-02-18 | 2004-11-30 | Avamar Technologies, Inc. | System and method for data protection with multidimensional parity |
US6647514B1 (en) * | 2000-03-23 | 2003-11-11 | Hewlett-Packard Development Company, L.P. | Host I/O performance and availability of a storage array during rebuild by prioritizing I/O request |
US6594796B1 (en) * | 2000-06-30 | 2003-07-15 | Oak Technology, Inc. | Simultaneous processing for error detection and P-parity and Q-parity ECC encoding |
KR100388208B1 (ko) | 2001-05-25 | 2003-06-19 | 주식회사 하이닉스반도체 | 반도체 메모리 장치의 리던던시 회로 |
US6961890B2 (en) | 2001-08-16 | 2005-11-01 | Hewlett-Packard Development Company, L.P. | Dynamic variable-length error correction code |
US7372731B2 (en) | 2003-06-17 | 2008-05-13 | Sandisk Il Ltd. | Flash memories with adaptive reference voltages |
US7206991B2 (en) * | 2003-10-15 | 2007-04-17 | Lsi Logic Corporation | Method, apparatus and program for migrating between striped storage and parity striped storage |
US20090193184A1 (en) | 2003-12-02 | 2009-07-30 | Super Talent Electronics Inc. | Hybrid 2-Level Mapping Tables for Hybrid Block- and Page-Mode Flash-Memory System |
US7237067B2 (en) | 2004-04-22 | 2007-06-26 | Hewlett-Packard Development Company, L.P. | Managing a multi-way associative cache |
US8122193B2 (en) | 2004-12-21 | 2012-02-21 | Samsung Electronics Co., Ltd. | Storage device and user device including the same |
US8200887B2 (en) | 2007-03-29 | 2012-06-12 | Violin Memory, Inc. | Memory management system and method |
KR100732628B1 (ko) | 2005-07-28 | 2007-06-27 | 삼성전자주식회사 | 멀티-비트 데이터 및 싱글-비트 데이터를 저장하는 플래시메모리 장치 |
US7681109B2 (en) | 2005-10-13 | 2010-03-16 | Ramot At Tel Aviv University Ltd. | Method of error correction in MBC flash memory |
US20070143541A1 (en) * | 2005-12-19 | 2007-06-21 | Lsi Logic Corporation | Methods and structure for improved migration of raid logical volumes |
US7809994B2 (en) | 2006-05-17 | 2010-10-05 | Sandisk Corporation | Error correction coding for multiple-sector pages in flash memory devices |
US7739576B2 (en) | 2006-08-31 | 2010-06-15 | Micron Technology, Inc. | Variable strength ECC |
US8171380B2 (en) | 2006-10-10 | 2012-05-01 | Marvell World Trade Ltd. | Adaptive systems and methods for storing and retrieving data to and from memory cells |
US20080140724A1 (en) * | 2006-12-06 | 2008-06-12 | David Flynn | Apparatus, system, and method for servicing object requests within a storage controller |
US7505319B2 (en) | 2007-01-31 | 2009-03-17 | Taiwan Semiconductor Manufacturing Company, Ltd. | Method and apparatus for high efficiency redundancy scheme for multi-segment SRAM |
WO2008099723A1 (en) | 2007-02-01 | 2008-08-21 | Kabushiki Kaisha Toshiba | Semiconductor memory with reed- solomon decoder |
US8122323B2 (en) | 2007-03-08 | 2012-02-21 | Intel Corporation | Method, apparatus, and system for dynamic ECC code rate adjustment |
US20080276124A1 (en) | 2007-05-04 | 2008-11-06 | Hetzler Steven R | Incomplete write protection for disk array |
JP2009037304A (ja) * | 2007-07-31 | 2009-02-19 | Hitachi Ltd | Raidレベルを変更する機能を有したストレージシステム |
US8429492B2 (en) | 2007-11-30 | 2013-04-23 | Marvell World Trade Ltd. | Error correcting code predication system and method |
US9152496B2 (en) | 2007-12-21 | 2015-10-06 | Cypress Semiconductor Corporation | High performance flash channel interface |
US8443260B2 (en) | 2007-12-27 | 2013-05-14 | Sandisk Il Ltd. | Error correction in copy back memory operations |
US8724381B2 (en) | 2008-03-11 | 2014-05-13 | Agere Systems Llc | Methods and apparatus for storing data in a multi-level cell flash memory device with cross-page sectors, multi-page coding and per-page coding |
US8959280B2 (en) | 2008-06-18 | 2015-02-17 | Super Talent Technology, Corp. | Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear |
JP2010015195A (ja) * | 2008-06-30 | 2010-01-21 | Toshiba Corp | 記憶制御装置及び記憶制御方法 |
US20100017650A1 (en) | 2008-07-19 | 2010-01-21 | Nanostar Corporation, U.S.A | Non-volatile memory data storage system with reliability management |
US20100017649A1 (en) | 2008-07-19 | 2010-01-21 | Nanostar Corporation | Data storage system with wear-leveling algorithm |
US8041984B2 (en) | 2008-10-17 | 2011-10-18 | International Business Machines Corporation | Redundancy information for adjusting threshold for component failure in a multi-layer system |
KR101059673B1 (ko) | 2008-12-26 | 2011-08-25 | 서울대학교산학협력단 | 신뢰도 또는 저장 용량을 동적으로 조절하는 저장 장치 및 그 방법 |
US8438455B2 (en) * | 2008-12-31 | 2013-05-07 | Intel Corporation | Error correction in a solid state disk |
US8065558B2 (en) * | 2009-03-24 | 2011-11-22 | Lsi Corporation | Data volume rebuilder and methods for arranging data volumes for improved RAID reconstruction performance |
CN101882472A (zh) | 2009-05-05 | 2010-11-10 | 建兴电子科技股份有限公司 | 具可变动错误校正码机制的快闪储存装置及其控制方法 |
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 |
KR101541040B1 (ko) | 2010-03-12 | 2015-08-03 | 엘에스아이 코포레이션 | 플래시 메모리들을 위한 ldpc 소거 디코딩 |
US9189385B2 (en) | 2010-03-22 | 2015-11-17 | Seagate Technology Llc | Scalable data structures for control and management of non-volatile storage |
KR101606718B1 (ko) | 2010-10-27 | 2016-03-28 | 엘에스아이 코포레이션 | 플래시 메모리 기반 데이터 저장을 위한 적응적 ecc 기술들 |
US9727414B2 (en) | 2010-12-01 | 2017-08-08 | Seagate Technology Llc | Fractional redundant array of silicon independent elements |
WO2012099937A2 (en) | 2011-01-18 | 2012-07-26 | Lsi Corporation | Higher-level redundancy information computation |
US9569320B2 (en) | 2010-12-01 | 2017-02-14 | Seagate Technology Llc | Non-volatile memory program failure recovery via redundant arrays |
CN103348330B (zh) | 2010-12-01 | 2017-05-24 | 希捷科技有限公司 | 采用独立硅元件的动态较高级冗余模式管理 |
US8719663B2 (en) | 2010-12-12 | 2014-05-06 | Lsi Corporation | Cross-decoding for non-volatile storage |
US8595415B2 (en) | 2011-02-02 | 2013-11-26 | Micron Technology, Inc. | At least semi-autonomous modules in a memory system and methods |
US8856431B2 (en) | 2012-08-02 | 2014-10-07 | Lsi Corporation | Mixed granularity higher-level redundancy for non-volatile memory |
-
2011
- 2011-11-30 CN CN201180066679.9A patent/CN103348330B/zh not_active Expired - Fee Related
- 2011-11-30 WO PCT/US2011/062726 patent/WO2012075200A2/en active Application Filing
- 2011-11-30 EP EP11844502.2A patent/EP2646922A4/en not_active Withdrawn
- 2011-11-30 KR KR1020137017048A patent/KR101636785B1/ko active IP Right Grant
- 2011-11-30 US US13/989,659 patent/US9105305B2/en not_active Expired - Fee Related
- 2011-11-30 JP JP2013542154A patent/JP5980798B2/ja not_active Expired - Fee Related
- 2011-12-01 TW TW100144228A patent/TW201232264A/zh unknown
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6557123B1 (en) * | 1999-08-02 | 2003-04-29 | Inostor Corporation | Data redundancy methods and apparatus |
US7073115B2 (en) * | 2001-12-28 | 2006-07-04 | Network Appliance, Inc. | Correcting multiple block data loss in a storage array using a combination of a single diagonal parity group and multiple row parity groups |
CN101523353A (zh) * | 2006-09-19 | 2009-09-02 | Lsi罗吉克 | 在存在全局热备用磁盘的情况下用于故障驱动器的优化重建和向回复制的方法 |
US20100293439A1 (en) * | 2009-05-18 | 2010-11-18 | David Flynn | Apparatus, system, and method for reconfiguring an array to operate with less storage elements |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104699577A (zh) * | 2013-12-06 | 2015-06-10 | 英特尔公司 | 用于在分布式码字存储系统中定位故障管芯的计数器 |
US9911509B2 (en) | 2013-12-06 | 2018-03-06 | Intel Corporation | Counter to locate faulty die in a distributed codeword storage system |
CN104699577B (zh) * | 2013-12-06 | 2018-05-29 | 英特尔公司 | 用于在分布式码字存储系统中定位故障管芯的计数器 |
CN105096993A (zh) * | 2015-09-21 | 2015-11-25 | 联想(北京)有限公司 | 固态硬盘、电子设备及信息处理方法 |
CN105096993B (zh) * | 2015-09-21 | 2017-11-07 | 北京联想核芯科技有限公司 | 固态硬盘、电子设备及信息处理方法 |
CN106843771A (zh) * | 2017-01-26 | 2017-06-13 | 合肥兆芯电子有限公司 | 存储器重读方法、存储器控制电路单元及存储器存储装置 |
CN106843771B (zh) * | 2017-01-26 | 2019-11-19 | 合肥兆芯电子有限公司 | 存储器重读方法、存储器控制电路单元及存储器存储装置 |
CN113168289A (zh) * | 2018-12-03 | 2021-07-23 | 美光科技公司 | 使用逐出和恢复管理存储装置中的冗余上下文 |
CN113168289B (zh) * | 2018-12-03 | 2022-04-19 | 美光科技公司 | 使用逐出和恢复管理存储装置中的冗余上下文 |
CN115686353A (zh) * | 2021-07-27 | 2023-02-03 | 北京特纳飞电子技术有限公司 | 用于异常情况同步处理的固件控制且基于表的条件作用 |
Also Published As
Publication number | Publication date |
---|---|
WO2012075200A2 (en) | 2012-06-07 |
US20130246839A1 (en) | 2013-09-19 |
WO2012075200A3 (en) | 2012-08-16 |
CN103348330B (zh) | 2017-05-24 |
US9105305B2 (en) | 2015-08-11 |
EP2646922A2 (en) | 2013-10-09 |
KR20130114681A (ko) | 2013-10-17 |
TW201232264A (en) | 2012-08-01 |
EP2646922A4 (en) | 2015-11-25 |
JP2013545202A (ja) | 2013-12-19 |
KR101636785B1 (ko) | 2016-07-06 |
JP5980798B2 (ja) | 2016-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11144389B2 (en) | Non-volatile memory program failure recovery via redundant arrays | |
CN103348330A (zh) | 采用独立硅元件的动态较高级冗余模式管理 | |
US11379301B2 (en) | Fractional redundant array of silicon independent elements | |
CN103415844B (zh) | 用于高级冗余信息计算的系统和方法 | |
US9323612B2 (en) | Mixed granularity higher-level redundancy for non-volatile memory | |
CN103942010A (zh) | 用于写入非易失性存储器的管理及区域选择 | |
CN103942114A (zh) | Nvm地址、跨度及长度映射/转换的存储地址空间 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20160223 Address after: California, USA Applicant after: Seagate Technology LLC Address before: California, USA Applicant before: LSI Corp. |
|
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170524 Termination date: 20171130 |