首页> 中国专利> 采用独立硅元件的动态较高级冗余模式管理

采用独立硅元件的动态较高级冗余模式管理

摘要

固态磁盘(SSD)控制器能实现采用独立硅元件的动态较高级冗余模式管理以在由控制器实施的SSD的操作期间非易失性(例如闪速)存储器元件发生故障时提供故障弱化。较高级错误校正提供较低级不可校正错误的校正。若检测到一个非易失性存储器元件的故障,则较高级错误校正从当前模式下的操作动态过渡至新模式下的操作。该过渡包括以下中的一种或多种:减小SSD上可用的自由空间、重新配置SSD的数据存储、恢复/存储发生故障的用户数据(如果可能的话)、以及确定/存储修改的较高级错误校正信息。随后继续在新模式下进行操作。若检测到非易失性存储器元件的另一故障,则再过渡到另一新模式。

著录项

  • 公开/公告号CN103348330A

    专利类型发明专利

  • 公开/公告日2013-10-09

    原文格式PDF

  • 申请/专利权人 LSI公司;

    申请/专利号CN201180066679.9

  • 申请日2011-11-30

  • 分类号G06F12/16;G06F11/08;

  • 代理机构北京康信知识产权代理有限责任公司;

  • 代理人余刚

  • 地址 美国加利福尼亚州

  • 入库时间 2024-02-19 20:39:13

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-11-23

    未缴年费专利权终止 IPC(主分类):G06F12/16 授权公告日:20170524 终止日期:20171130 申请日:20111130

    专利权的终止

  • 2017-05-24

    授权

    授权

  • 2016-03-16

    专利申请权的转移 IPC(主分类):G06F12/16 登记生效日:20160223 变更前: 变更后: 申请日:20111130

    专利申请权、专利权的转移

  • 2013-12-25

    实质审查的生效 IPC(主分类):G06F12/16 申请日:20111130

    实质审查的生效

  • 2013-10-09

    公开

    公开

说明书

相关申请的交叉引用

在所附的申请数据表、请求或传递单(如适用,如果有的话)中列出 了对该申请的优先权要求。在即时申请的类型所允许的范围内,为了所有 目的,本申请结合在做出本申请时所有由即时申请的所有者共同拥有的下 列申请供参考:

于2010年12月1日提交的美国临时申请(案号SF-10-10和序列号 61/418,846),第一署名发明人为Jeremy Isaac Nathaniel Werner,且题为 “Dynamic Higher-Level Redundancy Mode Management with Independent  Silicon 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 Erasure  Decoding for Flash Memories”;以及

于2011年10月26日提交的PCT申请(案号SF-10-03PCT和序列号 PCT/US11/57914),第一署名发明人为Yan Li,且题为“Adaptive ECC  Techniques 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通信地耦接到NVM 199,该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闪速存储器、MLC  NAND闪速存储器、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的ECC  161经由校验位(诸如经由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、报头2 412B…报头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至报头N 419A或图4B的报头1 411B至报头419B中的任一个)的实施方式的所选 细节。在一些实施方式中,报头是固定长度的(例如,每个报头的长度是 相同字节数)。报头501包括字段类型511、最后指示513、标志515、LPN 517、长度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的一个或多个元件的处理或与其相关的处理。例如,CPU 171的软件执行能力的一部分被用于诸如通过引导可用于数据存储的减小 的空间或引导重组的数据存储来管理较高级冗余模式之间的动态过渡。对 于另一实例,数据处理121和/或ECC-X135包括专用于和/或专门用于根 据‘目标’冗余模式计算较高级冗余信息的硬件元件。对于又一实例,ECC 161实施较低级(例如,ECC)误差校正和检测不可校正的错误,而ECC-X 135实施较高级(例如,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和R1  1011中每一个的一页)。

注意,如本文其他地方所描述,在一些实施方式中,较高级冗余信息 被存储在数据的不同部分的不同管芯中。因此,在一些实施方式中,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)兼容。程序指令、语言语 句或二进制指令中的一个或多个可选地被存储在一个或多个计算机可读 存储介质元件中。在各种实施方式中,程序指令中的一些、所有或各个部 分被实现为功能、例程、子例程、在线例程、程序、宏或其部分中的一个 或多个。

结论

在准备文本和附图中,仅为了方便,在描述中已做了某些选择,且除 非有相反的指示,否则选择本身不应被解释为传达了有关所描述的实施方 式的结构或操作的额外信息。选择的实例包括:用于附图标记指定的特定 组织或分配以及用于识别和引用实施方式的特征和元件的元件标识符(例 如标注或数字标识符)的特定组织或分配。

词语“包括”或“包含”具体意在被理解为对描述开放式范围的逻辑 组的抽象,且并不意味着传达物理包含物,除非后面明确跟随词语“之内”。

尽管为了描述和理解清晰的目的,已在一些细节中描述了上述实施方 式,但本发明不限于所提供的细节。有许多本发明的实施方式。所公开的 实施方式是实例性的,而不是限制性的。

应理解构造、布置和使用的许多变化可能与本描述一致,且处于已公 布的专利的权利要求的范围内。例如,互连和功能单位的位宽度、时钟速 度和所使用的技术的类型根据每个组件块中的各种实施方式而可变。给于 互连和逻辑的名称仅是实例性的,且不应被解释为限定所描述的概念。流 程图和流程图过程、动作和功能元件的顺序和布置根据各种实施方式可变 化。另外,除非特别说明与此相反,否则指定的值范围、使用的最大值和 最小值或其他特定的规范(诸如闪存技术类型;以及寄存器和缓存器中的 条目或级别的数量)仅是所描述的那些实施方式,期望跟踪实施技术的改 进和变化,且不应被解释为限定。

可采用本领域公知的功能相当的技术,而不是用于实施各种组件、子 系统、操作、功能、例程、子例程、在线例程、程序、宏或其部分的那些 所述技术。还应理解,实施方式中的许多功能方面可在硬件(即,一般专 用电路)或软件(例如,经由编程的控制器或处理器的某种方式)中选择 性实现,以作为取决于设计约束和更快处理的技术趋势(促使先前在硬件 中的功能迁移至软件)和更高的集成密度(促使先前在软件中的功能迁移 至硬件)的实施方式的功能。各种实施方式中的具体变化包括但不限于: 划分的差异;不同的形式因素和配置;使用不同的操作系统和其他系统软 件;使用不同接口标准、网络协议、或通信链路;以及当根据特定应用的 独特工程和商业限制实施在本文中描述的概念时预期的其他变化。

已通过超越需要用于所描述的实施方式的很多方面的最小实现的细 节和环境背景描述了实施方式。本领域普通技术人员将认识到,一些实施 方式省略了公开的组件或特征,且无需改变剩余元素之间的基本合作。因 此,应理解许多公开的细节不需要实施所描述的实施方式的各个方面。在 剩余元素可与现有技术相区别的范围内,被省略的组件和特征不限于本文 中所描述的概念。

设计中的所有这些变化是在由所描述的实施方式传达的教导上的非 实质性变化。还应理解,本文中描述的实施方式对其他的计算和网络应用 具有广泛的适用性,且并不限于所描述的实施方式的特定应用或行业。因 此,本发明将被解释为包括涵盖在所公布的专利的权利要求的范围内的所 有可能的修改和变更。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号