经由冗余阵列的非易失性存储器编程故障恢复的制作方法

文档序号:6526258阅读:154来源:国知局
经由冗余阵列的非易失性存储器编程故障恢复的制作方法
【专利摘要】经由冗余阵列的非易失性存储器编程故障恢复在某些存储子系统实现方式中(例如,固态磁盘)允许较高编程带宽和/或减少延迟。在非易失性存储器控制器处接收用于编程多个非易失性存储器的N个部分的数据。数据包括用于编程N个部分中的特定部分的特定数据。特定数据存储在与非易失性存储器控制器相关联的被分配的缓冲器中。开始将特定数据编程到多个非易失性存储器中的特定非易失性存储器。更新足以从N个部分中的M个部分的故障中恢复的冗余信息。释放被分配的缓冲器。存储、开始编程、更新及释放中的至少一个响应于特定数据的接收。释放在特定非易失性存储器完成编程之前。
【专利说明】经由冗余阵列的非易失性存储器编程故障恢复
[0001]相关申请的交叉引用
[0002]在所附的申请书数据表、请求书和传送信(如适用,如果有的话)中列出了对该申请的优先权权益要求。在即时申请的类型所允许的范围内,本申请通过引用全面并入全部共同拥有在提出本发明时的即时申请的下列申请:
[0003]于2010年12月I日提交的美国临时申请(案号为SF-10-10,序列号为61/418,846),第一署名发明人为 Jeremy Isaac Nathaniel WERNER,且题为 “DYNAMICHIGHER-LEVEL REDUNDANCY MODE MANAGEMENT WITH INDEPENDENT SILICON ELEMENTS”;
[0004]于2011年I月18日提交的美国临时申请(案号为SF-10-14,序列号为61/433,918),第一署名发明人为 Jeremy Isaac Nathaniel WERNER,且题为“HIGHER-LEVELREDUNDANCY INFORMATION COMPUTATION” ;
[0005]于2011年11月30日提交的PCT申请(案号为SF-10-10PCT,序列号为PCT/US11/062726),第一署名发明人为 Jeremy Isaac Nathaniel WERNER,且题为 “DYNAMICHIGHER-LEVEL REDUNDANCY MODE MANAGEMENT WITH INDEPENDENT SILICON ELEMENTS”;以及
[0006]于2012年I月18日提交的PCT申请(案号为SF-10-14PCT,序列号为PCT/US12/21682),第一署名发明人为 Jeremy Isaac Nathaniel WERNER,且题为“HIGHER-LEVELREDUNDANCY INFORMATION COMPUTATION”。
【技术领域】
[0007]领域:非易失性存储技术及制造的进步对于提供成本的改善、盈利、性能、效率和使用实用性的提高是必要的。
【背景技术】
[0008]相关技术:除非被明确认定为被公开或众所周知,否则为了上下文、定义或比较的目的而包括的本文所提到的技术和概念不应被解释为承认这些技术和概念是以前公开为已知的或者是现有技术的一部分。为了所有目的,通过引用将本文中所引用的所有参考文献(如果有的话)(包括专利、专利申请和出版物)整体并入,而无论是否被具体并入。

【发明内容】

[0009]本发明可以以多种方式实现,这些方式例如过程、制品、装置、系统、物质组分和计算机可读介质(比如计算机可读存储介质(例如,光学和/或磁性大容量存储设备中的介质(比如磁盘),或具有比如闪存存储器的非易失性存储器的集成电路)或计算机网络,其中,通过光学或电子通信链路发送编程指令。【具体实施方式】提供了能实现在上文认定的领域中的成本的改善、盈利、性能、效率和使用实用性的提高的本发明的一种或多种实施例的论述。【具体实施方式】包括用于促进对【具体实施方式】的其余部分的理解的介绍。该介绍包括根据本文描述的概念的系统、方法、制品和计算机可读介质中的一个或多个的示例性实施例。如在结论中更详细讨论,本发明涵盖所公布的权利要求的范围内的所有可能修改和变更。
【专利附图】

【附图说明】
[0010]图1A示出了包括提供经由一个或多个(可选内部)冗余阵列的用于非易失性存储器(NVM)的编程故障恢复的SSD控制器的固态磁盘(SSD)的实施例的所选细节。
[0011]图1B示出了包括图1A的SSD的一个或多个实例的系统的各种实施例的所选细节。
[0012]图2示出了映射逻辑块地址(LBA)的逻辑页面号(LPN)部分的实施例的所选细节。
[0013]图3示出了在读取单元地址访问非易失性存储器(NVM)以产生被组织为各个读取单元的读取数据,一致地具有以读取单元配量(quanta)测得的长度的实施例的所选细节。
[0014]图4A示出了读取单元的一个实施例的所选细节。
[0015]图4B示出了读取单元的另一实施例的所选细节。
[0016]图5示出了具有大量字段的报头(header,首部)的实施例的所选细节。
[0017]图6示出了在逻辑片段和/或区段中管理的多个NVM器件(例如,一个或多个闪存芯片和/或闪存芯片)的区块、页面及读取单元的实施例的所选细节。
[0018]图7示出了更高级 冗余技术的各种实施例的所选细节。
[0019]图8示出了具有硅独立元件冗余阵列(RASIE)的动态更高级冗余模式管理的实施例的所选细节。
[0020]图9示出了具有适应性码速率的更低级冗余信息的读取单元的实施例,该更低级冗余信息受存储于读取单元的一个或多个中的更高级冗余信息保护。
[0021]图10示出了更高级冗余信息结果及数据源对应物的实施例的所选细节。
[0022]图11示出了更高级冗余信息计算的实施例的所选细节。
[0023]图12示出了(单一操作期间)自一个(更低级)故障恢复的实施例的所选细节。
[0024]图13A至图13D示出了(单一操作期间)自两个(更低级)故障恢复的实施例的所选细节。
[0025]图14A及图14B示出了计算关于自NVM接收的页面的更高级冗余信息的实施例的所选细节。
[0026]图15A至图15C示出了自关于提供至NVM的写入的更高级冗余信息的计算的撤回(backout)的实施例的所选细节。
[0027]图16示出了经由冗余阵列的NVM故障恢复的实施例的所选细节。
[0028]附图中的附图标记列表
[0029]
【权利要求】
1.一种方法,包括: 在非易失性存储器控制器处接收用于编程多个非易失性存储器的N个部分的数据,该数据包括用于编程所述N个部分中的特定部分的特定数据; 将所述特定数据存储在与所述非易失性存储器控制器相关联的被分配的缓冲器中; 开始将所述特定数据编程到所述多个非易失性存储器中的特定非易失性存储器; 更新足以从所述N个部分中的M个部分的故障中恢复的冗余信息; 释放所分配的缓冲器; 其中,所述存储、所述开始编程所述特定数据、所述更新冗余信息以及所述释放中的至少一个响应于所述接收;并且 其中,所述释放在所述特定非易失性存储器完成所述编程之前。
2.根据权利要求1所述的方法,其中,所述冗余信息是第一冗余信息,已针对所述N个部分的子集接收数据,但尚未针对所述N个部分的所述子集开始编程,并且所述方法进一步包括: 延迟对所述N个部分的所述子集中的至少一部分的编程; 开始将所述第一冗余信息编程到所述多个非易失性存储器中的多个非易失性存储 器; 开始对所述N个部分的所述子集中的至少一部分进行编程; 更新不同于所述第一冗余信息的并且足以从所述N个部分中的M个部分的故障中恢复的第二冗余信息;并且 其中,所述延迟编程、所述开始对所述第一冗余信息进行编程、所述开始对所述N个部分的所述子集中的至少一部分进行编程以及所述更新第二冗余信息中的至少一个响应于检测到对所述特定数据的所述编程的故障。
3.根据权利要求2所述的方法,其中,当检测到故障时,所述特定数据被单独存储为被编码在所述第一冗余信息中。
4.根据权利要求1所述的方法,其中,所述数据进一步包括用于编程所述N个部分中的第一部分的初始数据,并且进一步包括: 至少部分基于所述初始数据来初始化所述冗余信息。
5.根据权利要求1所述的方法,其中,所述非易失性存储器控制器包括所述被分配的缓冲器。
6.根据权利要求1所述的方法,其中,所述被分配的缓冲器包括在与包括所述非易失性存储器控制器的第二芯片分离的第一芯片中。
7.根据权利要求1所述的方法,其中,所述非易失性存储器控制器可操作为能够至少部分地经由与存储器接口标准兼容的计算主机接口与计算主机通信的固态磁盘控制器。
8.一种实体的计算机可读介质,具有存储在其中的一组指令,该组指令当由处理元件执行时使所述处理元件执行和/或控制包括以下各项的操作: 在非易失性存储器控制器处接收用于编程多个非易失性存储器的N个部分的数据,所述数据包括用于编程所述N个部分中的特定部分的特定数据; 将所述特定数据存储在与所述非易失性存储器控制器相关联的被被分配的缓冲器中;开始将所述特定数据编程到所述多个非易失性存储器中的特定非易失性存储器中; 更新足以从所述N个部分中的M个部分的故障中恢复的冗余信息; 释放所述被分配的缓冲器; 其中,所述存储、所述开始编程所述特定数据、所述更新冗余信息及所述释放中的至少一个响应于所述特定数据的所述接收;并且 其中,所述释放在所述特定非易失性存储器完成所述编程之前。
9.根据权利要求8所述的实体的计算机可读介质,其中,所述冗余信息是第一冗余信息,已针对所述N个部分的子集接收数据,但尚未针对所述N个部分的所述子集开始编程,并且所述操作进一步包括: 延迟对所述N个部分的所述子集中的至少一部分的编程; 开始将所述第一冗余信息编程到所述多个非易失性存储器中的多个非易失性存储器; 开始对所述N个部分的所述子集中的至少一部分进行编程; 更新不同于所述第一冗余信息的并且足以从所述N个部分的M个所述子集的故障中恢复的第二冗余信息 ;并且 其中,所述延迟编程、所述开始对所述第一冗余信息进行编程、所述开始对所述N个部分的所述子集中的至少一部分进行编程以及所述更新所述第二冗余信息响应于检测到对所述特定数据的所述编程的故障。
10.根据权利要求9所述的实体的计算机可读介质,其中,当检测到所述故障时,所述特定数据被单独存储为被编码在所述第一冗余信息中。
11.根据权利要求8所述的实体的计算机可读介质,其中,所述数据进一步包括用于编程所述N个部分中的第一个部分的初始数据,并且所述操作进一步包括: 至少部分基于所述初始数据来初始化所述冗余信息。
12.根据权利要求8所述的实体的计算机可读介质,其中,所述非易失性存储器控制器包括所述被分配的缓冲器。
13.根据权利要求8所述的实体的计算机可读介质,其中,所述被分配的缓冲器包括在与包括所述非易失性存储器控制器的第二芯片分离的第一芯片中。
14.根据权利要求8所述的实体的计算机可读介质,其中,所述非易失性存储器控制器可操作为固态磁盘控制器,所述固态磁盘控制器能够至少部分地经由与存储器接口标准兼容的计算主机接口与计算主机通信。
15.根据权利要求8所述的实体的计算机可读介质,其中,所述非易失性存储器控制器包括所述处理元件。
16.—种系统,包括: 被分配的缓冲器; 用于在非易失性存储器控制器处接收用于编程多个非易失性存储器的N个部分的数据的装置,所述数据包括用于编程所述N个部分中的特定部分的特定数据; 用于将所述特定数据存储在与所述非易失性存储器控制器相关联的所述被分配的缓冲器中的装置; 用于开始将所述特定数据编程到所述多个非易失性存储器中的特定非易失性存储器的装置; 用于更新足以从所述N个部分中的M个部分的故障中恢复的冗余信息的装置; 用于释放所述被分配的缓冲器的装置; 其中,所述用于存储的装置、所述用于开始编程所述特定数据的装置、所述用于更新冗余信息的装置以及所述用于释放的装置中的至少一个响应于所述用于接收的装置;并且 其中,所述用于释放的装置可操作用于在所述特定非易失性存储器完成所述编程之前释放所述被分配的缓冲器。
17.根据权利要求16所述的系统,其中,所述冗余信息是第一冗余信息,已针对所述N个部分的子集接收数据,但尚未针对所述N个部分的所述子集开始编程,并且所述系统进一步包括: 用于延迟对所述N个部分的所述子集中的至少一部分进行编程的装置; 用于开始将所述第一冗余信息编程到所述多个非易失性存储器中的多个非易失性存储器的装置; 用于开始对所述N个部分的所述子集中的至少一部分进行编程的装置; 用于更新不同于所述第一冗余信息的并且足以从所述N个部分的M个所述子集中的故障中恢复的第二冗余信息的装置;并且 其中,所述用于延迟编程的装置、所述用于开始对所述第一冗余信息进行编程的装置、所述用于开始对所述N个部分的所述子集中的至少一部分进行编程的装置以及所述用于更新第二冗余信息的装置响应于所述用于检测所述特定数据的所述编程的故障的装置。
18.根据权利要求17所述的系统,其中,当检测到所述故障时,所述特定数据被单独存储为被编码在所述第一冗余信息中。
19.根据权利要求16所述的系统,其中,所述数据进一步包括用于编程所述N个部分中的第一个部分的初始数据,并且进一步包括: 用于至少部分基于所述初始数据来初始化所述冗余信息的装置。
20.根据权利要求16所述的系统,其中,所述非易失性存储器控制器包括所述被分配的缓冲器。
【文档编号】G06F11/10GK103902403SQ201310739979
【公开日】2014年7月2日 申请日期:2013年12月26日 优先权日:2012年12月27日
【发明者】杰里米·艾萨克·纳撒尼尔·维尔纳, 厄尔·T·柯亨 申请人:Lsi公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1