跨电源周期来跟踪对写入命令和解除映射命令的混合的制作方法

文档序号:11530700阅读:223来源:国知局
跨电源周期来跟踪对写入命令和解除映射命令的混合的制造方法与工艺

所公开的实施例总体上涉及存储器系统,并且具体地涉及在存储设备(例如,包括一个或多个闪存设备)中跨电源周期跟踪对写入命令和解除映射命令的混合。



背景技术:

半导体存储器设备(包括闪存)通常利用存储器单元来将数据存储为电性值,如电荷或电压。闪存单元例如包括具有用于存储表示数据值的电荷的浮栅的单个晶体管。闪存是可以被电擦除和重新编程的非易失性数据存储设备。更一般地,与需要电力来维持存储信息的易失性存储器相反,即使断电时,非易失性存储器(例如,闪存以及使用各种技术中的任何技术实现的其他类型的非易失性存储器)仍然保持所存储的信息。

数据强化(保存保持在易失性存储设备中的数据和关键任务元数据)对于存储设备而言是重要的。当存在掉电时,关键任务数据可以驻存在多个子系统部件中的易失性存储器中。协调并管理多个子系统部件以确保易失性数据被成功保存对于保护存储设备的数据完整性而言是重要的。



技术实现要素:

所附权利要求书的范围内的系统、方法和设备的各个实施例各自具有若干方面,其中这些方面中没有哪个单个方面单独地负责在此所描述的属性。不限制所附权利要求书的范围,在考虑本公开之后,并且具体地在考虑标题为“具体实施方式”的部分之后,将理解如何使用各个实施例的各个方面来使能够跨电源周期跟踪对写入命令和解除映射命令的混合。一方面,当存储设备上电时,根据存储设备的非易失性存储器中的保存的映射表快照以及根据存储设备的非易失性存储器中保存的日志重建易失性存储器中的映射表。

附图说明

为了可以更详细地理解本公开,可参考各个实施例的特征以产生更具体的说明,所述实施例中的一些被展示在附图中。然而,附图仅展示了本公开的相关特征,并且因此不应被认为是限制性的,因为说明书可以允许其他有效的特征。

图1是框图,展示了根据一些实施例的数据存储系统的实施方式。

图2是框图,展示了根据一些实施例的管理模块的实施方式。

图3是根据一些实施例的逻辑地址空间并且更确切地逻辑块地址(lba)空间的框图。

图4是根据一些实施例的映射表和物理地址空间的框图。

图5a至图5b展示了根据一些实施例的管理存储系统的方法的流程图表示。

根据惯例,附图中展示的各种特征不必按比例绘制。因此,为了清晰起见,不同特征的尺寸可以被任意放大或减小。此外,一些附图可能没有描绘给定系统、方法或设备的所有部件。最后,贯穿说明书和附图,相同的参考数字可以用来表示相似的特征。

具体实施方式

在此所描述的各实施例包括用于使能够跨电源周期跟踪对写入命令和解除映射命令的混合的系统、方法和/或设备。一些实施例包括用于在存储设备上电时从保存的映射表快照以及从日志中重建易失性存储器中的映射表的系统、方法和/或设备。

(a1)更确切地,一些实施例包括一种管理存储系统的方法。在一些实施例中,所述方法包括:(1)在所述存储系统的存储设备处接收来自与所述存储设备操作性地耦合主机的多个命令,所述存储设备包括非易失性存储器;(2)维护与来自所述主机的写入命令和解除映射命令相对应的日志;(3)在易失性存储器中维护映射表,所述映射表用于将逻辑地址空间中对所述主机可用的逻辑地址转换为在所述存储设备的物理地址空间中的物理地址;(4)在与所述解除映射命令无关的调度基础上,将所述映射表保存至所述存储设备的所述非易失性存储器中;(5)将所述日志保存到所述存储设备的所述非易失性存储器中;以及(6)当所述存储设备上电时,从所述存储设备的所述非易失性存储器中的所述保存的映射表以及从所述存储设备的所述非易失性存储器中的所述保存的日志来重建所述映射表。

(a2)在a1所述的方法的一些实施例中,保存所述映射表包括将指向所述日志中的位置的位置指针存储在所述非易失存储器中。

(a3)在a1至a2中任一项所述的方法的一些实施例中,保存映射表包括在不同的调度时间处将映射表的多个不同部分保存到非易失性存储器中。

(a4)在a1至a3中任一项所述的方法的一些实施例中,针对写入命令,所述日志包括结合执行所述写入命令存储数据的物理地址。

(a5)在a1至a4中任一项所述的方法的一些实施例中,所述日志包括针对对应解除映射命令(有时被称为“第一解除映射命令”)的条目,所述条目包括标识根据所述对应解除映射命令而被解除映射的多个逻辑地址的信息。

(a6)在a1至a4中任一项所述的方法的一些实施例中,所述日志包括针对对应解除映射命令的条目,所述条目包括标识根据所述对应解除映射命令而被解除映射的逻辑地址范围的信息。

(a7)在a1至a6中任一项所述的方法的一些实施例中,将所述日志保存到所述非易失性存储器中包括结合掉电事件将所述日志的至少一部分保存到所述非易失性存储器中。

(a8)在a1至a7中任一项所述的方法的一些实施例中,将所述日志保存到所述非易失性存储器中包括当所述日志满足预定义的充满度标准时将所述日志的至少第一部分保存到所述非易失性存储器中,并且结合掉电事件将所述日志的最终部分保存到所述非易失性存储器中。

(a9)在a1至a8中任一项所述的方法的一些实施例中,所述存储设备包括一个或多个闪存设备。

(a10)另一方面,一种存储设备包括:(1)非易失性存储器(例如,包括如闪存设备等一个或多个非易失性存储设备);(2)一个或多个处理器;以及(3)存储一个或多个程序的控制器存储器(例如,所述控制器中或者耦合至所述控制器的非易失性存储器或易失性存储器),所述一个或多个程序当由所述一个或多个处理器执行时使所述存储设备执行或控制在此所描述的a1至a9方法中的任何方法的执行。

(a12)在又另一方面,以上所描述的a1至a9方法中的任何方法由存储设备执行,所述存储设备包括用于执行在此所描述的方法中的任何方法的装置。

(a14)在又另一方面,一种存储系统包括:(1)存储介质(例如,包括如闪存设备等一个或多个非易失性存储设备);(2)一个或多个处理器;以及(3)存储一个或多个程序的存储器(例如,所述存储系统中的非易失性存储器或易失性存储器),所述一个或多个程序当由所述一个或多个处理器执行时使所述存储系统执行或控制在此所描述的a1至a9方法中的任何方法的执行。

(a15)在又另一方面,一些实施例包括一种非瞬态计算机可读存储介质,所述非瞬态计算机可读存储介质存储有被配置成由存储设备的一个或多个处理器执行的一个或多个程序,所述一个或多个程序包括用于执行在此所描述的方法中的任何方法的指令。

为了提供对附图中展示的示例实施例的透彻理解,在此描述了大量细节。然而,可以在没有许多特定细节的情况下实践一些实施例,并且权利要求书的范围仅由在权利要求中具体记载的那些特征和方面限制。此外,并未对已知的方法、部件和电路进行详细描述,以免不必要模糊在此所描述的实施例的相关方面。

图1是框图,展示了根据一些实施例的数据存储系统100。尽管展示了一些示例特征,但是,为简洁起见并且以免不必要模糊在此所公开的示例实施例的相关方面,没有展示各种其他特征。为此,作为非限制性示例,数据存储系统100包括存储设备120(有时也被称为信息存储设备、或数据存储设备、或存储器设备),所述存储设备包括存储控制器124、一个或多个非易失性存储器(nvm)控制器130(如闪存控制器)、以及非易失性存储器(例如,一个或多个nvm设备140、142,如一个或多个闪存设备),并且结合计算机系统110一起使用。在一些实施例中,存储设备120包括单个nvm设备,而在其他实施例中,存储设备120包括多个nvm设备。在一些实施例中,nvm设备140、142包括nand类型闪存或nor类型闪存。此外,在一些实施例中,nvm控制器130是固态驱动器(ssd)控制器。然而,根据各种各样的实施例的方面,可以包括其他类型的存储介质(例如,pcram、reram、stt-ram等)。在一些实施例中,闪存设备包括一个或多个闪存管芯、一个或多个闪存封装体、一个或多个闪存信道等。在一些实施例中,数据存储系统100可以包括一个或多个存储设备120。

计算机系统110通过数据连接101耦合至存储控制器124。然而,在一些实施例中,计算机系统110包括作为部件和/或子系统的存储控制器124或存储控制器124的一部分。例如,在一些实施例中,存储控制器124的部分或全部功能是由在计算机系统110上执行的软件实现的。计算机系统110可以是任何合适的计算机设备,如计算机、膝上型计算机、平板计算机、上网本、因特网信息站、个人数字助理、移动电话、智能电话、游戏设备、计算机服务器、或任何其他计算设备。计算机系统110有时被称为主机、主机系统、客户端或客户端系统。在一些实施例中,计算机系统110是服务器系统,如数据中心中的服务器系统。在一些实施例中,计算机系统110包括一个或多个处理器、一种或多种类型的存储器、显示器和/或其他用户接口部件,如键盘、触屏显示器、鼠标、轨迹板、数字相机和/或用于增加功能的任何数量的补充设备。在一些实施例中,计算机系统110不具有显示器和其他用户接口部件。

所述一个或多个nvm控制器130通过连接103与存储控制器124耦合。连接103有时被称为数据连接,但是通常传达除数据外的命令,并且可选地传达元数据、纠错信息和/或除了将要存储在nvm设备140、142中的数据值以及从nvm设备140、142中读取出的数据值之外的其他信息。然而,在一些实施例中,存储控制器124、所述一个或多个nvm控制器130以及nvm设备140、142包括在如其部件等相同设备(即,集成设备)中。此外,在一些实施例中,存储控制器124、所述一个或多个nvm控制器130以及nvm设备140、142嵌入在主机设备(例如,计算机系统110)中,如移动设备、平板计算机、其他计算机或计算机控制设备,并且在此所描述的方法至少部分地由嵌入的存储控制器执行。

在一些实施例中,存储设备120包括nvm设备140、142,如闪存设备(例如,nvm设备140-1至140-n、以及nvm设备142-1至142-k)和nvm控制器130(例如,nvm控制器130-1至130-m)。以另一种方式来看,存储设备120包括m个存储器通道,其中每个存储器通道具有nvm控制器130以及耦合至nvm控制器130的nvm设备140或142集合,其中,m是大于一的整数。然而,在一些实施例中,两个或更多个存储器通道共享nvm控制器130。在任一示例中,每个存储器通道具有其自己不同的nvm设备140或142集合。在非限制性示例中,典型存储设备中的存储器通道数量为8、16或32。在另一个非限制性示例中,每存储器通道nvm设备140或142的数量通常为8、16、32或64。此外,在一些实施例中,nvm设备140/142的数量在不同存储器通道中有所不同。

在一些实施例中,nvm控制器130中的每个nvm控制器包括被配置成用于执行一个或多个程序中的指令(例如,在nvm控制器130中)的一个或多个处理单元(有时也被称为cpu或处理器或微处理器或微控制器)。在一些实施例中,所述一个或多个处理器由在nvm控制器130的功能之内(以及某些情况下之外)的一个或多个部件共享。nvm设备140、142通过连接耦合至nvm控制器130,所述连接典型地传达除数据外的命令,并且可选地传达元数据、纠错信息和/或除了将要存储在nvm设备140、142中的数据值以及从nvm设备140、142中读取出的数据值之外的其他信息。nvm设备140、142可以包括任意数量(即,一个或多个)的存储设备,包括但不限于,非易失性半导体存储设备,如(多个)闪存设备。

例如,(多个)闪存设备(例如,nvm设备140、142)可以被配置成用于适合于如云计算应用、数据库应用的企业存储设备、主存储设备和/或辅助存储设备,或者于缓存在辅助存储设备(如硬盘驱动器)中所存储(或将要存储)的数据。另外地或替代性地,(多个)闪存设备(例如,nvm设备140、142)还可以被配置成用于个人计算机、膝上型计算机和平板计算机的相对更小型应用,如个人闪存驱动器或硬盘替代。尽管闪存设备和闪存控制器在此被用作示例,但是,在一些实施例中,存储设备120包括其他(多个)非易失性存储器设备和相应的(多个)非易失性存储控制器。

在一些实施例中,nvm设备140、142被划分为多个可寻址且单独可选择块。在一些实施例中,单独可选块是闪存设备中的最小尺寸可擦除单元。换言之,每个块包含可同时擦除的最少数量的存储器单元。每个块通常被进一步划分为多个页和/或字线,其中,每一页或字线典型地是块中的最小单独可寻址(可读)部分的实例。在一些实施例中(例如,使用某些类型的闪存),然而,数据集的最小单独可寻址单元是作为页的子集的扇区。也就是说,一个块包括多页,每一页包含多个扇区,并且每个扇区是用于从闪存设备读取数据的最小数据单元。

如以上指出的,当非易失性半导体存储设备的数据存储密度总体增加时,增加的存储密度的缺点为所存储的数据更倾向于被错误地存储和/或读取。在一些实施例中,误差控制编码可以用于限制由电气波动、存储介质缺陷、操作状况、设备历史、读取写入电路等或这些以及各种其他因素的组合引入的不可校正的误差数量。

在一些实施例中,存储控制器124包括管理模块121-1、主机接口129、存储介质(i/o)接口128以及(多个)附加模块125。存储控制器124可以包括各种附加特征,为简洁起见并且以免模糊在此公开的示例实施例的相关特征,没有展示所述附加特征,并且所述特征的不同安排是可能的。

主机接口129通过数据连接101向计算机系统110提供接口。类似地,存储介质接口128提供用于通过连接103到达nvm控制器130的接口。在一些实施例中,存储介质接口128包括读取写入电路,所述读取写入电路包括能够将读取信号提供至nvm控制器130的电路(例如,针对nand类型闪存的读取阈值电压)。在一些实施例中,连接101和连接103被实现为通信介质,在所述通信介质上,使用如ddr3、scsi、sata、sas等协议传达命令和数据。在一些实施例中,存储控制器124包括被配置成用于执行一个或多个程序中的指令(例如,在存储控制器124中)的一个或多个处理单元(有时也被称为cpu或处理器或微处理器或微控制器)。在一些实施例中,所述一个或多个处理器由在存储控制器124的功能之内(以及某些情况下之外)的一个或多个部件共享。

在一些实施例中,管理模块121-1包括被配置成用于执行一个或多个程序中的指令(例如,在管理模块121-1中)的一个或多个处理单元(cpu,有时还被称为处理器或微处理器或微控制器)122。在一些实施例中,一个或多个cpu122由在存储控制器124的功能之内(以及某些情况下之外)的一个或多个部件共享。管理模块121-1耦合至主机接口129、(多个)附加模块125以及存储介质接口128,以便协调这些部件的操作。在一些实施例中,管理模块121-1的一个或多个模块在计算机系统110的管理模块121-2中实现。在一些实施例中,计算机系统110(未示出)的一个或多个处理器被配置成用于执行一个或多个程序中的指令(例如,在管理模块121-2中)。管理模块121-2耦合至存储设备120,以便管理存储设备120的操作。

(多个)附加模块125耦合至存储介质接口128、主机接口129以及管理模块121-1。举例来讲,(多个)附加模块125可以包括误差控制模块,用于限制在写入存储器和/或从存储器读取的过程中无意中引入数据中的不可校正的误差的数量。在一些实施例中,(多个)附加模块125由管理模块121-1的一个或多个cpu122在软件中执行,并且,在其他实施例中,(多个)附加模块125全部地或部分地使用特殊用途电路实现(例如,以执行编码和解码功能)。在一些实施例中,(多个)附加模块125全部地或部分地由在计算机系统110上执行的软件实现。

在一些实施例中,包括在(多个)附加模块125中的误差控制模块包括编码器和解码器。在一些实施例中,编码器通过应用误差控制码(ecc)来对数据进行编码以产生码字,所述码字随后被存储在nvm设备140、142中。当从nvm设备140、142中读取编码数据(例如,一个或多个码字)时,解码器将解码过程应用于编码数据以恢复所述数据并且在误差控制码的误差校正能力范围内校正所述恢复数据中的误差。本领域技术人员将理解的是,各种误差控制码具有不同的误差检测和校正能力,并且由于超出本公开范围的原因,选择特定的码用于各种应用。由此,本文不提供各种类型的误差控制码的详尽回顾。此外,本领域技术人员将认识到,每一类或每一族误差控制码可以具有特定于所述一类或一族误差控制码的编码和解码算法。另一方面,一些算法可以至少在一定程度上用于对多个不同类或族的误差控制码进行解码。由此,为了简洁起见,在此不提供对本领域技术人员而言通常可用且已知的各种类型的编码和解码算法的详尽描述。

在一些实施例中,在写入操作过程中,主机接口129从计算机系统110接收有待存储在nvm设备140、142中的数据。由主机接口129接收的数据可用于编码器(例如,在(多个)附加模块125中),所述编码器对所述数据进行编码以产生一个或多个码字。所述一个或多个码字可用于存储介质接口128,所述存储介质接口128以与所利用的存储介质的类型无关的方式将所述一个或多个码字传送至nvm设备140、142(例如,通过nvm控制器130)。

在一些实施例中,当计算机系统(主机)110(例如,经由数据连接101,或替代性地单独的控制线或总线)将一个或多个主机读取命令发送至从nvm设备140、142请求数据的存储控制器124时,发起读取操作。存储控制器124经由存储介质接口128将一个或多个读取访问命令发送至nvm设备140、142(例如,通过nvm控制器130),以根据由所述一个或多个主机读取命令指定的存储器位置(地址)获取原始读取数据。存储介质接口128将原始读取数据(例如,包括一个或多个码字)提供给解码器(例如,在(多个)附加模块125中)。如果解码成功,则解码数据被提供给主机接口129,其中,解码数据可用于计算机系统110。在一些实施例中,如果解码不成功,则存储控制器124可以采取多个补救动作或提供不能解决误差状况的指示。

如以上所解释的,存储介质(例如,nvm设备140、142)被划分为多个可寻址的且可单独选择的块并且每个块可选地(但典型地)被进一步划分为多个页和/或字线和/或扇区。当在块基础上执行存储介质的擦除时,在许多实施例中,存储介质的读取和编程是在块的更小子单元上执行的(例如,在页基础、字线基础或扇区基础上)。在一些实施例中,块的较小子单元由多个存储器单元(例如,单级单元或多级单元)组成。在一些实施例中,编程是在整页上执行的。在一些实施例中,多级单元(mlc)nand闪存通常每单元具有四个可能的状态,每单元产生两比特信息。进一步地,在一些实施例中,mlcnand具有两页类型:(1)下页(有时被称为快页),以及(2)上页(有时被称为慢页)。在一些实施例中,三级单元(tlc)nand闪存每单元具有八个可能的状态,每单元产生三比特信息。尽管本文的描述示例性地使用tlc、mlc和slc,本领域技术人员将理解的是,本文描述的实施例可以扩展至每单元具有多于八个可能状态的存储器单元,每单元产生多于三比特的信息。在一些实施例中,存储介质(即,tlc、mlc或slc和/或所选的数据冗余机制)的编码格式是当数据实际被写入存储介质中时所做的选择。

举例来讲,如果数据按页被写入存储介质,但所述存储介质以块为单位被擦除,则所述存储介质中的页可能包含无效数据(例如,过期数据),但那些页不可被覆写入,直到包含那些页的整个块被擦除。为了利用无效数据对页进行写入操作,所述块中具有无效数据的页(若有的话)被读取并被重写入成新的块,而旧的块被擦除(或被放入队列中以等待擦除)。这个过程被称作垃圾收集。在垃圾收集之后,新块包含具有无效数据的页并且可以具有空页,所述空页可用于新数据写入,并且旧块可被擦除以便可用于新数据写入。因为闪存仅可以被编程和擦除有限次数,所以用于挑选(多个)接下来的块来进行重写入和擦除的算法的效率对基于闪存的存储系统的寿命和可靠性具有显著影响。

写入放大是一种现象,其中,写入存储介质(例如,存储设备120中的nvm设备140、142)的实际物理数据量是由主机(例如,计算机系统110,有时被称为主机)写入介质的逻辑数据量的倍数。如以上所讨论的,当存储介质的块在其可以被重写入之前必须被擦除时,用于执行这些操作的垃圾收集过程一次或多次产生重写入数据。这个倍乘效应增加了在存储介质的寿命之上所要求的写入次数,其缩短了可以可靠操作的时间。用于计算存储系统的写入放大的公式由以下等式给出:

任何基于闪存的数据存储系统架构的目标之一是尽可能地减少写入放大,从而使得可用的持久性用于满足存储介质可靠性和保修规格。更高的系统持久性还导致更低的成本,因为存储系统可能需要更少的预留空间。通过减少写入放大,存储介质的持久性增加并且存储系统的整体成本降低。通常,垃圾收集是在具有最少数量的有效页的擦除块上执行的,以获得最佳的性能和最佳的写入放大。

闪存设备利用存储器单元来将数据存储为电性值,如电荷或电压。每个闪存单元通常包括单晶体管,所述单晶体管具有用于存储电荷的浮栅,所述浮栅修改晶体管的阈值电压(即,导通晶体管所需的电压)。电荷大小以及电荷所产生的相应阈值电压用于表示一个或多个数据值。在一些实施例中,在读取操作期间,读取阈值电压施加于晶体管的控制栅极并且所产生的感测电流或电压被映射为数据值。

在闪存单元的背景下,术语“单元电压”和“存储器单元电压”指存储单元的阈值电压,所述阈值电压是需要施加于存储器单元的晶体管的栅极以便由晶体管传导电流的最小电压。类似地,施加于闪存单元的读取阈值电压(有时也被称为读取信号和读取电压)是施加于闪存单元的栅极以判定存储器单元是否在所述栅极电压处传导电流的栅极电压。在一些实施例中,当闪存单元的晶体管在给定读取阈值电压处传导电流时,指示所述单元电压小于读取阈值电压,针对所述读取操作的原始数据值为“1”并且另外地所述原始数据值为“0”。

图2是框图,展示了根据一些实施例的管理模块121-1,如图1中所示。管理模块121-1通常包括用于执行存储在存储器206中的模块、程序和/或指令并且由此执行处理操作的一个或多个处理单元(有时被称为cpu或处理器)122-1、存储器206(有时被称为控制器存储器)、以及使这些部件互连的一根或多根通信总线208。所述一根或多根通信总线208可选地包括使系统部件互连并且控制系统部件之间的通信的电路(有时被称为芯片组)。管理模块121-1通过所述一根或多根通信总线208耦合至主机接口129、(多个)附加模块125以及存储介质i/o128。存储器206包括高速随机存取存储器,如dram、sram、ddrram或者其他随机存取固态存储设备;并且可包括非易失性存储器,如一个或多个磁盘存储设备、光盘存储设备、闪存设备、或者其他非易失性固态存储设备。存储器206可选地包括与(多个)cpu122-1远离地定位的一个或多个存储设备。存储器206或者替代性地在存储器206内的(多个)非易失性存储器设备包括非瞬态计算机可读存储介质。在一些实施例中,存储器206或存储器206的非瞬态计算机可读存储介质存储下述程序、模块和数据结构或其子集或超集:

·转换表212,所述转换表用于将逻辑地址映射到物理地址(例如,在一些实施例中,转换表212包括图4的映射表402);

·数据读取模块214,所述数据读取模块用于从存储介质(例如,图1的nvm设备140、142)中的一个或多个码字、页或块读取数据;

·数据写入模块216,所述数据写入模块用于将数据写入存储介质(例如,图1的nvm设备140、142)中的一个或多个码字、页或块;

·数据擦除模块218,所述数据擦除模块用于从存储介质(例如,图1的nvm设备140、142)中的一个或多个块中擦除数据;

·垃圾收集模块220,所述垃圾收集模块用于对存储介质(例如,图1的nvm设备140、142)中的一个或多个块进行垃圾收集;

·命令接收模块222,所述命令接收模块用于接收来自主机的多个命令(例如,解除映射命令和i/o命令,如写入请求和/或读取请求);

·日志模块224,所述日志模块用户维护和/或保存日志(例如,日志226,有时被称为重放fifo);

·日志226,所述日志包括与来自主机的写入命令和解除映射命令相对应的数据结构集合;以及

·映射模块228,所述映射模块用于执行与映射表(例如,转换表212)相关的一个或多个操作,所述映射模块可选地包括:

o维护模块230,所述维护模块用于维护易失性存储器中的映射表;

o保存模块232,所述保存模块用于将映射表保存到存储设备的非易失性存储器中;以及

o重建模块234,所述重建模块用于重建映射表。

上述要素中的每一个都可以被存储在前面所提到的存储器设备中的一个或多个中,并且与用于执行上述功能的指令集相对应。上述模块或程序(即,指令集)不需要被实现为独立的软件程序、过程或模块,从而在各个实施例中,可以组合或者以其他方式重新排列这些模块的各个子集。在一些实施例中,存储器206可保存上述模块和数据结构的子集。此外,存储器206可存储上面没有说明的另外的模块和数据结构。在一些实施例中,存储在存储器206中的程序、模块和数据结构或者存储器206的计算机可读存储介质提供用于实现以下所描述的一些方法的指令。在一些实施例中,这些模块中的部分和全部可以利用将部分或全部模块功能包含在内的专用硬件电路来实现。

尽管图2示出了根据一些实施例的管理模块121-1,但是图2与其意在作为在此所描述的实施例的结构示意相比,更意在作为可以在管理模块121-1中存在的各种特征的功能描述。实践中,并且如本领域技术人员认识到的,分开示出的程序、模块和数据结构可以组合,并且一些程序、模块和数据结构可以被分开。

图3是根据一些实施例的逻辑地址(lba)空间320(有时被称为(la)空间)的框图。在一些实施例中,逻辑地址是从主机(例如,图1的计算机系统110)的角度来看,项(例如,文件或其他数据)所驻留的地址。在一些实施例中,逻辑地址(例如,在lba空间320中)由于映射函数或地址转换器(例如,图2中包括转换表212的函数或模块,或者图4中的映射表402)的操作而不同于物理地址(例如,在物理空间318中)。在一些实施例中,逻辑地址被实现为逻辑块地址(lba),所述lba被映射至物理闪存地址(例如,物理页编号(ppn))。物理地址通常包括与多级存储器层次相对应的多个部分,如,组(bank)、块(block)和页(page)。

在一些实施例中,逻辑块地址(lba)被映射到物理闪存地址(例如,物理页编号(ppn),包括组、块和页),如进一步关于图4所述。

在一些实施例中,逻辑地址空间包括已分配的逻辑地址空间(例如,已分配的lba空间342)以及未分配的逻辑地址空间(例如,未分配的lba空间340)。在一些实施例中,未分配的逻辑地址空间是在其处不存储数据的逻辑地址空间。在一些实施例中,未分配的逻辑地址空间包括从未被写入和/或已经被丢弃的逻辑地址空间(预先写入的数据可以通过修整或解除映射操作被丢弃,并且有时被称为修整逻辑地址空间)。例如,在图3中,未分配的lba空间340包括修整的lba空间330。在一些实施例中,已分配的逻辑地址空间是由主机预先写入包括不再由主机使用的数据(例如,非实时数据332)以及仍由主机使用的数据(例如,实时数据334)的预先写入数据的逻辑地址空间。在一些实施例中,非实时数据是在逻辑地址空间的在文件系统的元数据中被标记为空闲、可用或未使用的一部分中的数据。可选地,文件系统可以通过修整或解除映射操作选择将非实时地址空间转换为未分配的地址空间。

在图3中,已分配的lba空间342表示分配空间的量,而未分配的lba空间340表示未分配空间的量。然而,已分配的lba空间342和未分配的lba空间340都不必是lba空间320的单个连续区域。类似地,图3中的实时数据334和非实时数据332分别表示实时数据和非实时数据的量(例如,lba计数)。然而,实时数据334和非实时数据332都不必是lba空间320或已分配的lba空间342的单个连续区域,图3中所展示的实时数据334和非实时数据332的位置也不与实时数据和非实时数据的逻辑或物理地址值具有任何关联。通常,实时数据334和/或非实时数据332将存在于lba空间320的多个区域中,并因此不是连续的。可选地,然而,可以执行重映射或聚结过程(其也可被称为垃圾重组),以将部分或全部实时数据334合并为lba空间320的连续区域。

已分配的逻辑地址空间(342)是被利用的空间。典型地,减小已分配的逻辑地址空间的大小要求减小由存储设备或存储系统存储的实时数据334和/或非实时数据332的量,由此将已分配的逻辑地址空间的一部分转换为未分配的逻辑地址空间。在一些实施例中,非实时数据332的一部分被修整,并由此通过使用修整或解除映射操作被转换为未分配的逻辑地址空间。

图4是根据一些实施例的映射表402和物理地址空间410的框图。在一些实施例中,映射表402用于将逻辑块地址(lba)从主机(例如,图1的计算机系统110)的角度转换为存储设备(例如,图1的存储设备120)中的非易失性存储器的在物理地址空间(例如,物理地址空间410)中的物理地址。在一些实施例中,lba是可由主机访问的最小单元存储数据的地址(例如,512b或4096b)。在一些实施例中,lba是在逻辑地址空间中按数值顺序组织的整数序列。在一些实施例中,lba是从逻辑地址空间选择的但不必连续的整数。例如,在利用稀疏逻辑地址空间的实现方式中,可寻址空间的量由可以被已分配的逻辑地址数量极限控制,但是那些逻辑地址分布在比可以被分配(例如,至主机或者主机或客户端的集合)的逻辑地址的最大数量更大的地址空间之上。

在一些实施例中,映射表402存储在与存储设备相关联的存储器中(例如,在图2的存储器206中,作为转换表212的一部分)。在一些实施例中,映射表402用于在管理模块121-1(图2)中实现转换表212。在一些实施例中,物理地址是物理页编号(ppn),包括组编号、块编号和页编号。在图4中所示的示例中,lba0被映射至物理地址空间410的组1(例如,组420-1)、块3(例如,块421-3)、页37(页未在块421-3中示出)。图4示出物理地址空间410包括多个非易失性存储器块421、422、423、424。如上所述,并且如在块424-p的表示中所示,存储设备的物理地址空间中的每个非易失性存储器块通常包括多个页426,其中,每一页是块的最小单独可访问(例如,可读或可写入)部分的实例。尽管图4展示了逻辑地址至物理地址映射的一个示例,在其他实施例中,可以使用不同的映射。例如,在一些实施例中,逻辑地址条目中的每个逻辑地址条目与多个(例如,八个)逻辑地址相对应(例如,每逻辑地址条目8个lba)。在一些实施例中,映射表402不需要包含连续的lba地址并且可以以任何方式被组织以促进高效的查找操作,例如,哈希表、二叉树、内容可寻址存储器等。

如以上指出的,保存保持在易失性存储设备中的数据和关键任务元数据对于非易失性数据存储设备而言是重要的。闪存设备需要使数据跨电源周期受到保护,并且完整转换表(例如,图2的转换表212或图4的映射表402)被要求针对存储设备(例如,图1的存储设备120)为有效的。然而,针对企业产品,转换表通常极大(例如,几百mb)并且在由电池备用(例如,电容器)提供的时间帧中保存完整转换表是不可行的。在一些实施例中,在调度时间处保存转换表的增加部分,以便使在掉电情况下需要被保存的数据量最小。然而,期望几乎立即响应有效地擦除数据的一部分(例如,一个扇区、一个单元、整个存储设备等)的解除映射命令。这个响应时间不允许保存完整转换表。在此描述的各实施例包括用于使能够快速重放解除映射命令并且通过经由日志(有时被称为重放fifo)跨电源周期跟踪对写入命令和解除映射命令的混合来确保转换表的一致性的系统、方法和/或设备。

图5a至图5b展示了根据一些实施例的管理存储系统的方法500的流程图表示。至少在一些实施例中,方法500由存储设备(例如,图1中的存储设备120)或存储设备的一个或多个部件(例如,图1中的存储控制器124、nvm控制器130和/或nvm设备140、142)执行,其中,存储设备与主机系统(例如,图1中的计算机系统110)操作性地耦合。在一些实施例中,方法500由存储在非瞬态计算机可读存储介质中并由设备的一个或多个处理器(如图1和图2中所示出的管理模块121-1的一个或多个处理单元(cpu)122-1)执行的指令进行控制。在一些实施例中,方法500由存储系统(例如,图1的数据存储系统100)或者存储系统的一个或多个部件(例如,图1的计算机系统110和/或存储设备120)执行。在一些实施例中,方法500的操作中的一些操作在主机(例如,图1中的计算机系统110)处执行,并且信息被传输至存储设备(例如,图1中的存储设备120)。在一些实施例中,方法500至少部分地由存储在非瞬态计算机可读存储介质中并由主机(图1中未示出)的一个或多个处理器执行的指令控制。为便于解释,以下描述了由存储设备(例如,图1中的存储设备120)执行的方法500。然而,本领域的技术人员将认识到,在其他实施例中,方法500中描述的操作中的一个或多个操作由主机(例如,图1中的计算机系统110)执行。

存储系统(例如,图1的数据存储系统100)的存储设备(例如,图1的存储设备120)接收(502)来自与所述存储设备操作性地耦合的主机(例如,图1的计算机系统110)的多个命令,所述存储设备包括非易失性存储器(例如,图1的nvm设备140、142)。在一些实施例中,所述多个命令包括写入命令、读取命令和/或接触映射命令。在一些实施例中,命令接收模块(例如,图2的命令接收模块222)用于在存储系统的存储设备处接收来自与存储设备操作性地耦合的主机的多个命令,所述存储设备包括非易失性存储器,如以上关于图2所描述的。

在一些实施例中,存储设备包括(504)一个或多个闪存设备。在一些实施例中,存储设备包括存储介质(例如,图1的nvm设备140、142),并且存储介质包括如闪存设备等一个或多个非易失性存储设备。在一些实施例中,存储介质是单个闪存设备,而在其他实施例中,存储介质包括多个闪存设备。例如,在一些实施例中,存储介质包括在并行存储器通道中组织的数十个或数百个闪存设备,如每个存储器通道16、32或64个闪存设备,以及8、16或32个并行存储器通道。在一些实施例中,非易失性存储介质(例如,图1的nvm设备140、142)包括nand类型闪存或nor类型闪存。在其他实施例中,存储介质包括一种或多种其他类型的非易失性存储设备。

存储设备维护(506)与来自主机的写入命令和解除映射命令相对应的日志(例如,图2的日志226,有时被称为重放fifo)。在一些实施例中,日志是fifo(先入先出)队列。在一些实施例中,存储设备维护存储设备的单个日志。在一些实施例中,存储设备维护针对存储设备的每个逻辑端口(有时被称为存储器通道)的不同的日志。在一些实施例中,日志模块(例如,图2的日志模块224)用于维护与来自主机的写入命令和解除映射命令相对应的日志,如以上关于图2所描述的。

在一些实施例中,针对写入命令,所述日志包括(508)结合执行写入命令来存储数据的物理地址。例如,在一些实施例中,日志中的每个物理页条目包括其被物理地写入的所述页的管芯编号、块编号和页编号。在一些实施例中,所述物理页条目按照其被写入存储介质(例如,nvm设备140、142)中的内插顺序被存入日志中。

在一些实施例中,所述日志包括(510)针对对应解除映射命令的条目,所述条目包括标识根据所述对应解除映射命令而被解除映射的多个逻辑地址的信息。例如,在一些实施例中,如果对应的解除映射命令为解除映射lba8、lba13和lba63,则日志中针对对应解除映射命令的条目包括标识lba8、lba13和lba63的信息。在一些替代性实施例中,当由解除映射命令解除映射的逻辑地址不是单个地址并且不是单个逻辑地址范围时,所述日志包括与解除映射命令相对应的多个条目,每个条目指定由解除映射命令解除映射的单独的lba或者lba范围。例如,针对解除映射lba8和lba100-130的解除映射命令,所述日志包括两个条目,一个条目针对lba8而另一个条目针对lba范围100-130。

在一些实施例中,所述日志包括(512)针对对应解除映射命令的条目,所述条目包括标识根据所述对应解除映射命令而被解除映射的逻辑地址范围的信息。例如,在一些实施例中,如果对应的解除映射命令为解除映射lba8至lba63,则日志中针对对应解除映射命令的条目包括标识从lba8至lba63的逻辑地址范围的信息。在一些实施例中,日志中的条目通过标识第一lba为解除映射以及最后lba为解除映射而标识逻辑地址范围。

存储设备维护(514)易失性存储器中的映射表(例如,图2的转换表212、和/或图4的映射表402),所述映射表用于将逻辑地址空间中对主机可用的逻辑地址转换为在存储设备的物理地址空间中的物理地址。在一些实施例中,维护模块(例如,图2的维护模块230)用于维护易失性存储器中的映射表,所述映射表用于将逻辑地址空间中对主机可用的逻辑地址转换为在存储设备的物理地址空间中的物理地址,如以上关于图2所描述的。

在与解除映射命令无关的调度基础上(例如,与接收和/或处理解除映射命令无关),存储设备将映射表保存(516)到存储设备的非易失性存储器(例如,图1的nvm设备140、142)中。例如,在一些实施例中,存储设备在周期性基础上(例如,每小时等)存储映射表(例如,映射表的一部分)。在一些实施例中,存储设备在非周期性的调度基础上(例如,在1:00am、在3:30am以及在6:00am)保存映射表。在一些实施例中,保存模块(例如,图2的保存模块232)用于在与解除映射命令无关的调度基础上,将映射表保存至存储设备的非易失性存储器中,如以上关于图2所述。

在一些实施例中,保存所述映射表包括(518)将指向日志中的位置的位置指针存储在非易失存储器中。在一些实施例中,日志中的位置对应于当重建映射表时日志中有待处理的条目(如以下关于操作528所描述的)。在一些实施例中,日志中的位置偏离日志中对应于在将映射表保存到存储设备的非易失性存储器中之前更新的映射表的一部分的最后条目。例如,如果条目n是日志中在非易失性存储器中在保存的映射表中反映的最后条目,则所述日志中的位置将指向条目n+1,作为当重建映射表时有待处理的下一条目。

在一些实施例中,保存映射表包括(520)在不同的调度时间处将映射表的多个不同部分保存到非易失性存储器中。在一些实施例中,存储设备在周期性基础上(例如,每小时等)存储映射表的一部分(例如,10mb)。在一些实施例中,存储设备在非周期性调度基础上(例如,在1:00am、在3:30am以及在6:00am)存储映射表的一部分。在一些实施例中,存储设备在第一时间处保存映射表的第一部分、在不同于(并且通常晚于)第一时间的第二时间处保存映射表的第二部分、在不同于(并且通常晚于)第一时间和第二时间的第三时间处保存映射表的第三部分等。

存储设备将日志(例如,图2的日志226)保存(522)到存储设备的非易失性存储器中(例如,图1的nvm设备140、142)。在一些实施例中,日志模块(例如,图2的日志模块224)将日志保存到存储设备的非易失性存储器中,如以上关于图2所描述的。

在一些实施例中,将日志保存到非易失性存储器中包括(524)结合掉电事件将日志的至少一部分保存到非易失性存储器(例如,图1的nvm设备140、142)中。例如,在一些实施例中,日志的与尚未在保存的映射表中反映的条目相对应的一部分被保存到非易失性存储器中。

在一些实施例中,将日志保存到非易失性存储器中包括(526)当所述日志满足预定义充满度标准时将日志的至少第一部分保存到非易失性存储器(例如,图1的nvm设备140、142)中,并且结合掉电事件将日志的最终部分保存到非易失性存储器中。例如,在一些实施例中,当日志半满时,将日志的前一半保存到非易失存储器中,并且结合掉电事件,将日志的最终部分(例如,日志的尚未被保存的剩余部分)保存到非易失性存储器中。

当存储设备上电时,存储设备从存储设备的非易失性存储器中的保存的映射表以及从存储设备的非易失性存储器中的保存的日志来重建(528)映射表。在一些实施例中,存储设备通过用来自保存的日志的从所述日志的保存位置开始的条目来更新保存的映射表并且更新映射表直到到达日志的末尾来重建所述映射表(如以上关于操作518所描述的)。在一些实施例中,重建映射表包括获取块元数据(例如,以获取针对日志中的物理地址的相应逻辑地址)。在一些实施例中,重建模块(例如,图2的重建模块234)用于当存储设备上电时,从存储设备的非易失性存储器中的保存的映射表以及从存储设备的非易失性存储器中的保存的日志来重建所述映射表,如以上关于图2所描述的。

将理解的是,尽管此处可以使用术语“第一”、“第二”等来描述各个元件,但是这些元件不应被这些术语限制。这些术语仅用于将一个元件与另一个元件相区分。例如,在不改变描述的含义的情况下,第一区域可以被称为第二区域,并且类似地,第二区域可以被称为第一区域,只要一致地重新命名“第一区域”的所有出现并且一致地重新命名“第二区域”的所有出现即可。第一区域和第二区域都是区域,不过它们不是同一区域。

此处所使用的术语仅出于描述特定实施例的目的,而不旨在于限制权利要求书。如在对实施例和所附权利要求书的描述中所使用的,除非上下文另有明示,否则单数形式“一个(a)”、“一个(an)”和“所述(the)”旨在同样包括复数形式。还将理解的是,如本文使用的术语“和/或”指代并且包括相关联的列举项的一个或多个项的任何和所有可能组合。将进一步理解的是,当在本说明书中使用术语“包括(comprises)”和/或“包括(comprising)”时,其指定陈述的特征、整数、步骤、操作、元件和/或部件的存在,但不排除一个或多个其他特征、整数、步骤、操作、元件、部件和/或它们的组的存在或添加。

如在此所使用的,短语“a、b和c中的至少一者”将被解释为需要所列项目中的一个或多个项目,并且此短语关于单独a的单个实例、单独b的单个实例、或单独c的单个实例,同时还包括如“a中的一者或多者以及b中的一者或多者而没有c中的任何一者”等所列项目的组合。

如在此所使用的,根据上下文,术语“如果”可以被解释为指“当…时”或者“在…时”或者“响应于确定”或者“根据确定“或者“响应于检测到”所述先决条件为真。类似地,根据上下文,短语“如果确定”或“如果”或“当时”可以被解释为指“在确定时”或“响应于确定”或“根据确定”或“在检测到时”或“响应于检测到”所述先决条件为真。

出于解释的目的,已经参考特定实施例描述了前述描述。然而,以上的说明性讨论并不旨在是详尽的或旨在将权利要求书限制成所公开的精确形式。鉴于以上教导,许多修改和变化都是可能的。选择并描述了实施例,以便最好地解释操作原理和实际应用,由此使能本领域的技术人员。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1