首页> 中国专利> 在由主机管理的闪存转换层中报告和处置闪存编程失败的系统和方法

在由主机管理的闪存转换层中报告和处置闪存编程失败的系统和方法

摘要

公开了一种用于便利I/O故障处置的由计算机实现的方法。在操作期间,系统通过控制器从包括闪存转换层组件的主机接收将多个页写至非易失性存储器装置的请求,其中,数据是以包括物理页的页条带来依次写的。系统生成编程状态信息,编程状态信息包括:表示当前页条带中的数据是否成功写至非易失性存储器装置的成功或失败的状态;与该状态相关联的第一物理块地址;以及要填充在当前页条带中的第一页数量。响应于向主机发送编程状态信息,系统将来自当前页条带的有效数据复制到由主机的闪存转换层组件确定的新物理块地址。

著录项

  • 公开/公告号CN113168288A

    专利类型发明专利

  • 公开/公告日2021-07-23

    原文格式PDF

  • 申请/专利权人 阿里巴巴集团控股有限公司;

    申请/专利号CN201880099289.3

  • 发明设计人 周平;杜宇;李舒;

    申请日2018-10-30

  • 分类号G06F3/06(20060101);G06F12/02(20060101);

  • 代理机构11127 北京三友知识产权代理有限公司;

  • 代理人王小东;黄纶伟

  • 地址 英属开曼群岛大开曼

  • 入库时间 2023-06-19 11:55:48

说明书

发明人:周平、杜宇和李舒

背景

技术领域

本公开总体上涉及数据存储领域。更具体地,本公开涉及用于在由主机管理的闪存转换层中报告和处置闪存编程失败的系统和方法。

背景技术

因特网和电子商务的激增继续产生大量的数字内容。已经创建了各种存储系统和服务器来访问和存储这种数字内容。存储系统或服务器可以包括易失性存储器(例如,动态随机存取存储器(DRAM))和多个驱动器(例如,固态驱动器(SSD))。驱动器可包括用于持久存储的非易失性存储器(例如,NAND闪存或闪存存储器)。服务器中的存储器在存储系统的性能和容量中起关键作用。

SSD中的闪存被组织成通道/晶片。通道可以包括多个晶片;晶片可以包括多个块;块可包括多个页。主机通常向被组织成奇偶校验组的SSD写数据。在接收到写请求时,SSD控制器通常将数据依次存储到“页条带”中,页条带是多个晶片上的物理页。页条带中的物理页中的一个物理页通常用于存储奇偶校验信息。在多个晶片上进行组织和写数据可最大化带宽并确保可靠性。

因为对闪存存储器的编程所涉及的延迟会较高(例如,在毫秒级),所以常规SSD控制器通常是当命令缓冲于SSD控制器的内部掉电保护缓冲器中时就立即将写完成返回到主机。数据随后由SSD控制器异步地编程到闪存。虽然从主机的角度,此异步完成可减少写延迟,但其在如何处置将数据编程到闪存存储器中的失败方面也引入了挑战。从主机的角度来看,写命令总是成功的。因此,在闪存编程失败的情况下,写命令已被主机确认并视为成功。在常规SSD控制器中,SSD控制器自身中的闪存转换层(FTL)组件可处置编程失败。

然而,在开放通道SSD中,其中FTL组件驻留在主机(例如,由主机管理的FTL)中而不在SSD自身上,必须以及时和确定性的方式向由主机管理的FTL通知编程失败,以便处置编程失败(例如,处置错误恢复、数据迁移、坏块管理和数据填充)。目前不存在允许开放通道SSD中的由主机管理的FTL以及时和确定性的方式正确处置闪存编程失败的机制。该限制会降低主机软件的灵活性,并且会在服务器的性能中产生瓶颈。此外,该限制会导致存储系统的低效率。

发明内容

一个实施方式便利处置输入/输出(I/O)故障。在操作期间,系统由控制器从包括闪存转换层组件的主机接收将多个页写至非易失性存储器装置的请求,其中,数据是以包括物理页的页条带来依次写的,并且其中,所述页条带中的各个物理页对应于所述非易失性存储器装置的依次排序的晶片。系统生成编程状态信息,所述编程状态信息包括:表示当前页条带中的数据是否成功写至所述非易失性存储器装置的成功或失败的状态;与所述状态相关联的第一物理块地址;以及为了确保所述当前页条带中的数据能够成功地写至所述非易失性存储器装置而要填充在所述当前页条带中的第一页数量。响应于向主机发送编程状态信息,系统将来自所述当前页条带的有效数据复制到由所述主机的闪存转换层组件确定的新物理块地址,由此便利执行连续的异步写请求,同时允许基于主机的所述闪存转换层组件来管理所述非易失性存储器装置中的编程失败。

在一些实施方式中,确定下一可用晶片为当前页条带的最后晶片还包括:将与所述当前页条带中的有效数据相关联的奇偶校验信息写至所述当前页条带的所述最后晶片中的下一可用页。

在一些实施方式中,响应于向所述主机发送所述编程状态信息并且响应于确定所述状态表示失败,系统:基于所述第一页数量填充当前页条带;由所述主机的所述闪存转换层组件确定来自所述当前页条带的所述有效数据要写至的所述新物理块地址;以及将来自所述当前页条带的所述有效数据写至所述新物理块地址。

在一些实施方式中,所述新物理块地址对应于新页条带中的位置。

在一些实施方式中,在生成所述编程状态信息之前,所述方法还包括:由所述控制器从所述主机接收取得针对所述当前页条带的所述编程状态信息的第一命令,其中,向所述主机发送所述编程状态信息是响应于接收到所述第一命令而进行的。

在一些实施方式中,在将来自所述当前页条带的所述有效数据复制到所述新物理块地址之前,所述方法还包括:基于与所述状态相关联的所述第一物理块地址来确定所述有效数据。

在一些实施方式中,所述非易失性存储器装置不包括闪存转换层组件。

在一些实施方式中,仅当所述状态表示失败时,才将所述第一物理块地址和所述第一页数量包括在所述编程状态信息中。

附图说明

图1例示了根据本申请的实施方式的便利I/O故障处置的示例性环境。

图2例示了根据现有技术的用于便利I/O故障处置的示例性环境。

图3A例示了根据现有技术的用于便利I/O故障处置的示例性通信,其包括通常的主机写。

图3B例示了根据现有技术的用于便利I/O故障处置的示例性通信,其包括通常的主机写。

图4例示了根据本申请的实施方式的便利I/O故障处置的示例性通信,其包括由主机管理的闪存转换层中的主机写。

图5例示了根据本申请的实施方式的用于便利I/O故障处置的示例性环境。

图6A例示了根据本申请的实施方式的用于便利I/O故障处置的方法的流程图。

图6B例示了根据本申请的实施方式的用于便利I/O故障处置的方法的流程图。

图7例示了根据本申请的实施方式的便利I/O故障处置的示例性计算机系统。

图8例示了根据本申请的实施方式的便利I/O故障处置的示例性设备。

在附图中,类似的附图标记表示类似的附图元件。

具体实施方式

对以下描述进行呈现以使所属领域的技术人员能够实施和使用所述实施方式,且是在特定应用及其要求的上下文中提供的。所属领域的技术人员将容易明白对所揭示实施方式的各种修改,且本文所界定的一般原理可在不脱离本公开的精神和范围的情况下适用于其它实施方式和应用。因此,本文描述的实施方式不限于所示出的实施方式,而是与符合本文公开的原理和特征的最宽范围一致。

本文描述的实施方式提供了一种系统,其解决了允许开放通道SSD中的基于主机的FTL在继续执行异步写命令的同时处置闪存编程失败的问题。

在主机写请求中,数据通常由SSD控制器以包括物理页的页条带依次写,其中,页条带中的各个物理页对应于闪存存储器的依次排序的晶片。页条带中的一个物理页用于存储奇偶校验信息。在多个晶片上组织和写数据可最大化带宽并确保可靠性。

因为对闪存存储器的编程所涉及的延迟会较高(例如,在毫秒级),所以常规SSD控制器通常是当命令缓冲于SSD控制器的内部掉电保护缓冲器中时就立即将写完成返回到主机。数据随后由SSD控制器异步地编程到闪存。虽然从主机的角度,此异步完成可减少写延迟,但其在如何处置将数据编程到闪存存储器中的失败方面也引入了挑战。从主机的角度来看,写命令总是成功的。因此,在闪存编程失败的情况下,写命令已被主机确认并视为成功。在常规SSD控制器中,SSD控制器自身中的闪存转换层(FTL)组件可处置编程失败。

然而,在开放通道SSD中,其中FTL组件驻留在主机(例如,由主机管理的FTL)中而不在SSD自身上,必须以及时和确定性的方式向由主机管理的FTL通知编程失败,以便处置编程失败(例如,处置错误恢复、数据迁移、坏块管理和数据填充)。目前不存在允许开放通道SSD中的由主机管理的FTL以及时和确定性的方式正确处置闪存编程失败的机制。该限制会降低主机软件的灵活性,并且会在服务器的性能中产生瓶颈。此外,该限制会导致存储系统的低效率。

开放通道规范2.0中提出的一个解决方案是使所有写命令同步,从而写完成总是返回闪存编程的真实状态。然而,从主机的角度来看,该解决方案显着地将写延迟从微秒级增加到毫秒级。处置写延迟的这种显著增加会需要主机软件设计的显著改变,这对于已经在线广泛部署的许多传统解决方案是不切实际的解决方案。

另一种解决方案是通过非易失性存储器(NVMe)异步事件机制来报告编程失败事件。然而,这种机制既不及时也不可靠,因为它依赖于中断并且不保证通知的传递。可以合并多个事件,这会导致信息的显著丢失。此外,此机制不是确定性的,其不允许主机关于何时可以经由此机制接收任何通知方面具有任何可见性或可预测性。

本文描述的实施方式通过创建新的同步命令即“奇偶校验结束”命令来解决这些限制。来自主机的写命令仍然被异步地写,因此如现有技术中那样,从主机的角度来看保持了短的写延迟。通过使用奇偶校验结束命令,主机可大体上同步地命令控制器生成并写针对当前页条带的奇偶校验数据,且还返回当前页条带的编程状态信息。编程状态信息可包括:1)表示当前页条带中的数据是否已成功写或编程到闪存存储器的成功或失败的状态;2)如果状态表示失败,则与所述状态相关联的物理块地址;以及3)如果状态表示失败,则用于确保将当前页条带中的数据被成功地写或编程到闪存存储器而要填充的附加页的或页部分的数量。在接收到编程状态信息后,如果状态表示失败,则基于主机的FTL可基于页数量来填充当前页条带,确定有效数据要写至的新物理块地址,并将有效数据写至新物理块地址。主机、SSD控制器和NAND通道之间的示例性通信在下面结合图4和图5进行描述。

因此,本文描述的实施方式提供了一种提高存储系统的效率和性能的系统。该系统提供一种机制,通过该机制,可向基于主机的FTL(例如,如在开放通道SSD中)通知(所报告的)编程失败,并且随后可基于同步奇偶校验结束命令中的信息来处置所报告的编程失败,同时保持来自主机的写命令的异步特性。也就是说,为了处置开放通道SSD中的闪存编程失败,系统不需要从主机的角度牺牲写延迟。此外,本文所描述的实施方式为软件领域中的技术问题(保持异步写请求的执行,同时允许基于主机的FTL(如在开放通道SSD中)处置对闪存存储器的编程失败)提供了技术解决方案(引入奇偶校验结束命令,其生成并报告编程信息状态)。

措辞“闪存转换层组件”、“闪存-转换-层组件”、“FTL”和“FTL组件”在本公开中可互换使用,且指代将主机侧或文件系统逻辑块地址(LBA)映射到闪存存储器的物理块地址(PBA)(例如,逻辑到物理映射)的层或组件。在常规SSD中,FTL组件通常包括在SSD控制器中。然而,在开放通道SSD中,FTL组件是基于主机的FTL并驻留在主机中。即,基于主机的FTL组件负责执行逻辑到物理映射。

措辞“由主机管理的FTL”和“基于主机的FTL”在本公开中可互换使用,并且是指由主机管理的FTL组件。即,不是驻留在SSD控制器中或存储装置上,FTL组件驻留在主机中(如在开放通道SSD中)。

图1例示了根据本申请的实施方式的便利I/O故障处置的示例性环境100。环境100可以包括计算装置102和相关联的用户104。计算装置102可以经由网络110与存储服务器112、114和116通信,存储服务器112、114和116可以是分布式存储系统的一部分并且经由客户端服务器(未示出)来访问。存储服务器可以包括多个存储驱动器,并且各个驱动器可以包括控制器和用于数据存储的多个物理介质。例如,服务器116可以包括网络接口卡(NIC)122、中央处理单元(CPU)124、动态随机存取存储器双列直插存储器模块(DRAM DIMM)126、以及分别具有控制器134、138、142和146的SSD 132、136、140和144。

控制器可包对到主机和对非易失性存储器的接口。控制器还可以包括具有掉电保护的写缓冲器、以及包括用于执行本文描述的方法的指令和/或代码的固件。例如,SSD 140可以包括SSD控制器142。控制器142可以包括:主机接口150;嵌入式处理器152,其包括写缓冲器154和固件156;以及通道管理158。SSD控制器142可与主机通信(例如,经由主机接口150和去往/来自主机的通信192)。SSD控制器142还可以与非易失性存储器通信(经由通道管理158)。可通过多个通道访问非易失性存储器。举例来说,可经由通道170访问NAND晶片172、174及176,且可经由通道180访问NAND晶片182、184及186。

在操作期间,在本文所描述的实施方式中,固件156可包括包含生成“奇偶校验结束”命令的指令和/或代码,在到达页条带的末端时所述“奇偶校验结束”命令使控制器向主机返回:1)页条带的编程状态(例如,成功或失败);2)与失败状态相关联的物理位置(如物理块地址);以及3)为了确保页条带中的数据可成功地写至非易失性存储器而要填充在页条带中的页数量。下面结合图4和图5来描述奇偶校验结束命令和相关通信。

图2例示了根据现有技术的便利I/O故障处置的示例性环境200。环境200可包括主机202,该主机执行主机写204请求。环境200包括非易失性存储器,非易失性存储器可以包括多个晶片,例如晶片208、218,228和238。各个晶片可包括多个块,且各个块可包括多个页。例如,晶片208可以包括块210、212、214和216,并且块212可以包括物理页211。类似地,块222,232和242可分别包括物理页221、231和241。在环境200中,对角阴影图案指示(有关的)数据已被存储或填充在相应单元中,而透明图案(即,无图案)指示数据尚未被存储或填充在相应单元中。

回想一下,页条带可以包括多个晶片上的物理页。在环境200中,块210、220、230和240被数据完全填充(如对角阴影图案所示)。(块212、222、232和242各自的)物理页211、221、231和241被部分填充(如211.1、221.1、231.1和241.1中的对角阴影图案所示),并且包括页条带209。

在操作期间,在执行主机写204时,常规的系统可按照“水平”方式(例如,作为4KB或4K页)将数据写至页条带209的页中。也就是说,系统可将4K的数据写至页条带中的第一依次排序的晶片(208)的当前物理页(211)的下一可用部分(211.1)。然后,系统可以继续将附加的4K段写至下一依次排序的晶片(218)的下一当前物理页(221)的下一可用部分(221.1),写至下一当前物理页(231)的下一可用部分(231.1),并且最后将奇偶校验信息写至奇偶校验页(241)的下一可用部分(241.1)。

常规的系统可继续以水平页条带方式写数据。然而,如果在页部分221.2处发生编程失败250,则即使在发生失败250之后,SSD控制器也可能继续将数据写至非易失性存储器。在常规的SSD中(其中FTL在SSD控制器中),失败250由SSD控制器内部处理,并且因此对主机是透明的。然而,在常规的开放通道SSD(其中FTL在主机中)中,系统缺少向主机报告失败的机制,并且主机也无法处置失败。为了处置错误恢复、数据迁移、坏块管理和数据填充,基于主机的FTL需要知道编程失败。因此,常规的开放通道SSD不允许基于主机的FTL正确地处置这种编程失败。

图3A例示了根据现有技术的用于便利I/O故障处置(包括通常的成功主机写)的示例性通信300。通信300可包括主机302、SSD控制器304与NAND通道306间的通信。主机302可向SSD控制器304发送一系列写命令并且从SSD控制器304接收一系列相应的写完成。异步地执行从SSD控制器304发送到NAND通道306的相应编程命令。例如,主机302可向SSD控制器304发送写命令312并且从SSD控制器304接收写完成314。主机302还可向SSD控制器304发送写命令316并且从SSD控制器304接收写完成318。主机302还可向SSD控制器304发送写命令320并且从SSD控制器304接收写完成322。在与这一系列写命令/完成异步的时间处,SSD控制器可将编程命令332发送到NAND通道306,NAND通道306可执行NAND编程340(例如,通过将与写命令312、316和320相关联的数据写至非易失性存储器)。当NAND编程340成功完成时,NAND通道306可向SSD控制器304发送编程完成命令334。注意,在此实例中,在SSD控制器304将写完成314发送回主机302之后,SSD控制器304将编程命令332发送到NAND通道306。此外,在SSD控制器向主机302发送写完成322之后,SSD控制器304接收编程完成334。

图3B例示了根据现有技术的用于便利I/O故障处置(包括通常的不成功主机写)的示例性通信350。通信350类似于图3A的通信300,不同之处在于NAND编程340产生不成功的结果(例如,如上文关于图2的失败250所描绘)。在此情况下,NAND通道306可向SSD控制器304发送编程失败352(例如,在失败354处)。然而,不存在向主机302报告编程失败352的机制,也不存在主机302处置编程失败352(或失败354)的任何机制。

图4例示了根据本申请的实施方式的便利I/O故障处置的示例性通信400,其包括由主机管理的闪存转换层中的主机写。通信400包括与图3A的通信300类似的通信,但还包括奇偶校验结束命令,其可返回对非易失性存储器进行的编程的状态、编程失败的位置(如果有的话)以及为了确保安全数据迁移而要填充的页数量(如果有的话)。同时,系统可以保持异步写和编程命令,这与现有解决方案不同,不会导致增加的延迟、显著的软件设计改变、或缺乏可见性和可预测性。

具体来说,一组异步写命令可从主机302发送到SSD控制器304,并且相应的一组编程命令可从SSD控制器304发送到NAND通道306。主机302还可向SSD控制器304发送奇偶校验结束命令422,该奇偶校验结束命令可触发SSD控制器304将某些编程状态信息返回到主机302(经由奇偶校验结束完成424,其包括编程状态信息)。主机302随后可使用所返回的编程状态信息由基于主机的FTL执行适当的错误恢复功能,包括数据迁移、坏块管理和数据填充。

举例来说,编程命令432可使NAND通道306执行NAND编程436,NAND编程可结束于(成功)编程完成434,该成功编程完成434被发送回SSD控制器304。类似地,编程命令442可使NAND通道306执行NAND编程446,其可结束于编程失败444(或不成功的编程完成)。SSD控制器304随后可将奇偶校验结束完成424发送回主机302。奇偶校验结束完成可以包括:1)页条带的编程状态(例如,成功或失败);2)与失败状态相关联的物理位置(诸如物理块地址);以及3)为了确保页条带中的数据可成功地写至非易失性存储器而要填充在页条带中的页数量。这允许基于主机的FTL基于页数量(包括在奇偶校验结束完成中)填充页条带,并基于与失败状态相关联的物理位置(也包括在奇偶校验结束完成中)确定页条带中的有效数据。基于主机的FTL还可确定来自页条带的有效数据要写至的新物理块地址。随后,基于主机的FTL可将来自页条带的有效数据写至新物理块地址。

因此,本文所描述的系统的实施方式提供了一种机制,其既向主机报告编程失败,又允许主机管理编程失败,而不牺牲从主机到SSD控制器的写命令和从SSD控制器到NAND通道的编程命令的异步特性。

图5例示了根据本申请的实施方式的便利I/O故障处置的示例性环境500。环境500可以包括主机502,主机执行主机写552请求和奇偶校验结束命令554。主机502还可接收奇偶校验结束完成消息556。环境500包括非易失性存储器,其可以包括多个晶片,例如晶片508、518、528和538。各个晶片可包括多个块,且各个块可包括多个页。例如,晶片508可包括块510、512、514和516,而块512可包括物理页511。类似地,块522、532和542可分别包括物理页521、531和541。在环境500中,对角阴影图案指示(有关的)数据已被存储或填充在相应单元中,而透明图案(即,无图案)指示数据尚未被存储或填充在相应单元中。

回想一下,页条带可以包括多个晶片上的物理页。在环境500中,块510、520、530和540被数据完全填充(如对角阴影图案所示)。(块512、522、532和542各自的)物理页511、521、531和541被部分填充(如在页511、521、531和541中的对角阴影图案所指示),并且包括页条带509。

在操作期间,在执行主机写504时,系统可按照“水平”方式(类似于上文关于图2所描述的方式)将数据写至页条带509的页中。在到达页条带的末端时(例如,检测或确定下一可用晶片为当前页条带的最后晶片),系统可通过将与有效数据相关联的奇偶校验信息写页条带509中并生成编程状态信息来执行奇偶校验结束命令554,所述编程状态信息包括:1)页条带509的编程状态(例如,成功或失败);2)与所述状态相关联的物理位置(例如物理块地址),如果所述状态表示失败;和3)为了确保页条带509中的数据被成功地写至非易失性存储器而要填充在页条带509中的页数量(如果状态表示失败)。注意,系统还可以填充不完整的物理页,或者可以返回要被填充以确保安全数据迁移的全部物理页的一部分或一小部分。系统可将此编程状态信息作为奇偶校验结束完成556消息的一部分返回到主机502。

因此,在环境500中,系统提供了向主机报告编程失败状态并且允许主机处置错误恢复的机制,该机制在常规开放通道SSD中缺失。具体来说,通过直接向主机报告闪存编程中的失败,环境500的系统允许继续执行异步写请求,而不会从主机的角度牺牲写延迟。这允许基于主机的FTL(如在开放通道SSD中)以及时和确定性的方式处置错误恢复,其提高了存储系统的效率。

图6A例示了根据本申请的实施方式的用于便利I/O故障处置的方法的流程图600。在操作期间,系统通过控制器从包括闪存转换层组件的主机接收将多个页写至非易失性存储器装置的请求,其中,数据是以包括物理页的页条带来依次写的(操作602)。所述页条带中的各个物理页对应于所述非易失性存储器装置的依次排序的晶片。所述系统通过所述控制器从所述主机接收取得针对当前页条带的编程状态信息的第一命令,其中所述编程状态信息包括:指示所述当前页条带中的数据是否成功写至所述非易失性存储器装置的成功或失败的状态;如果所述状态表示失败,则与所述状态相关联的第一物理块地址;以及(如果状态表示失败)为了确保所述当前页条带中的数据能够成功地写至所述非易失性存储器装置而要填充在所述当前页条带中的第一页数量(操作604)。

如果下一可用晶片不是当前页条带的最后晶片(判断606),则操作可在操作602处继续或返回(未示出)。如果下一可用晶片是当前页条带的最后晶片(判断606),则系统生成针对当前页条带的编程状态信息(操作608)。系统将与当前页条带中的有效数据相关联的奇偶校验信息写至当前页条带的最后晶片中的下一可用页(操作610)。响应于向主机发送编程状态信息,系统将来自当前页条带的有效数据复制到由主机的闪存转换层组件确定的新物理块地址,借此便利连续异步写请求的执行,同时允许基于主机的闪存转换层组件管理非易失性存储器装置中的编程失败(操作612)。

图6B例示了根据本申请的实施方式的用于便利I/O故障处置的方法的流程图620。流程图620的操作可由基于主机的FTL组件执行,且可响应于向主机发送编程状态信息而发生。在操作期间,系统由主机从控制器接收编程状态信息(操作622)。如果包括在编程状态信息中的状态不表示失败(判断624),则操作返回。

如果包括在编程状态信息中的状态确实表示失败(判断624),则系统基于第一页数量填充当前页条带(操作626)。系统基于与状态相关联的第一物理块地址确定来自当前页条带的有效数据(操作628)。系统由主机的闪存转换层组件确定来自当前页条带的有效数据要写至的新物理块地址(操作630)。系统将来自当前页条带的有效数据写至新物理块地址(操作632)。

图7例示了根据本申请的实施方式的便利I/O故障处置的示例性计算机系统700。计算机系统700包括处理器702、存储器704、非易失性存储器706和存储装置/固件708。计算机系统500可以是计算装置或存储装置。易失性存储器704可以包括用作受管存储器的存储器(例如,RAM),并且可以用于存储一个或多个存储池。非易失性存储器706可以包括用于持久存储的存储器(例如,NAND闪存)。此外,计算机系统700可以联接到显示装置710、键盘712和指点装置714。存储装置/固件708可以存储操作系统716、内容处理系统718和数据732。注意,固件708可以另选地位于或包括在计算机系统700的其它组件中。

内容处理系统718可包括指令,所述指令在由计算机系统700执行时可使计算机系统700执行本公开中所描述的方法和/或处理。举例来说,内容处理系统718可包括用于接收和发送数据分组的指令,所述数据分组包括写或读数据的请求、待编码和存储的数据、数据块、数据页、命令和编程状态信息。

内容处理系统718可还包括用于由控制器从包括闪存转换层组件的主机接收将多个页写至非易失性存储器装置的请求的指令,其中,数据是以包括物理页的页条带来依次写的,并且其中,所述页条带中的各个物理页对应于所述非易失性存储器装置的依次排序的晶片(通信模块720)。内容处理系统718可包括用于确定下一可用晶片为当前页条带的最后晶片的指令(数据写模块722)。内容处理系统718可还包括用于生成编程状态信息的指令,所述编程状态信息包括:表示当前页条带中的数据是否成功写至所述非易失性存储器装置的成功或失败的状态;与所述状态相关联的第一物理块地址;以及要填充在所述当前页条带中以确保所述当前页条带中的数据能够成功地写至所述非易失性存储器装置的第一页数量(编程状态生成模块724)。内容处理系统718可包括用于响应于向主机发送编程状态信息(通信模块720)而将来自所述当前页条带的有效数据复制到由所述主机的闪存转换层组件确定的新物理块地址(数据复制模块726)的指令,由此便利执行连续的异步写请求,同时允许基于主机的所述闪存转换层组件来管理所述非易失性存储器装置中的编程失败(数据写模块722)。

内容处理系统718可附加地包括用于将与当前页条带中的有效数据相关联的奇偶校验信息写至当前页条带的最后晶片中的下一可用页的指令(奇偶校验信息管理模块728)。内容处理系统718可包括用于以下内容的指令:响应于向主机发送编程状态信息(通信模块720)并且响应于确定状态表示失败(数据复制模块726),基于第一页数量填充当前页条带(数据复制模块726);由主机的闪存转换层组件确定来自当前页条带的有效数据要写至的新物理块地址(数据复制模块726);以及将有效数据从当前页条带写至新物理块地址(数据复制模块726)。

数据732可包括作为输入所需的或通过本公开中描述的方法和/或处理作为输出生成的任何数据。具体地,数据732可以至少存储:待存储、写、加载、移动、检索、删除或复制的数据;逻辑单位的数据、逻辑块地址(LBA)、物理单位的数据;物理块地址(PBA)、物理数据页、数据块、页条带、依次写的数据、依次排序的晶片、命令、写指令、写完成、编程指令、编程完成、编程失败、编程状态信息、状态、指示成功或失败的状态、要填充的页数量、奇偶校验信息、新物理块地址;页条带中的有效数据、新页条带中的位置、取得页条带的编程状态信息的命令、编程失败的指示符、奇偶校验结束命令、奇偶校验结束完成、以及闪存转换层组件。

图8例示了根据本申请的实施方式的便利I/O故障处置的示例性设备800。设备800可以包括可以经由有线、无线、量子光或电通信信道彼此通信的多个单元或设备。设备800可以使用一个或多个集成电路来实现,并且可以包括比图8所示的单元或设备少或多的单元或装置。此外,设备800可以集成在计算机系统中,或者实现为能够与其它计算机系统和/或装置通信的单独装置。具体地,设备800可以包括执行与图7的计算机系统700的模块720-730类似的功能或操作的单元802-812,包括:通信单元802、数据写单元804、编程状态生成单元806、数据复制单元808、奇偶校验信息管理单元810、以及命令生成单元812。

在本具体实施方式中描述的数据结构和代码通常存储在计算机可读存储介质上,该计算机可读存储介质可以是能够存储供计算机系统使用的代码和/或数据的任何装置或介质。计算机可读存储介质包括但不限于易失性存储器,非易失性存储器,磁和光存储装置,诸如磁盘驱动器、磁带、CD(质密盘)、DVD(数字通用盘或数字视频盘),或能够存储现在已知或以后开发的计算机可读介质的其它介质。

在具体实施方式部分中描述的方法和处理可以实现为代码和/或数据,其可以存储在如上所述的计算机可读存储介质中。当计算机系统读取并执行存储在计算机可读存储介质上的代码和/或数据时,计算机系统执行实现为数据结构和代码并且存储在计算机可读存储介质内的方法和处理。

此外,上述方法和处理可以包括在硬件模块中。例如,硬件模块可以包括但不限于专用集成电路(ASIC)芯片、现场可编程门阵列(FPGA)和现在已知或以后开发的其它可编程逻辑器件。当硬件模块被激活时,硬件模块执行包括在硬件模块中的方法和处理。

仅出于说明和描述的目的而呈现本文中所描述的前述实施方式。其不旨在是穷尽的或将本文描述的实施方式限制为所公开的形式。因此,许多修改和变化对于本领域技术人员来说是显而易见的。此外,上述公开内容并非旨在限制本文所述的实施方式。本文描述的实施方式的范围由所附权利要求限定。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号