用于非易失性存储器的支持无效命令的制作方法

文档序号:12176259阅读:331来源:国知局
用于非易失性存储器的支持无效命令的制作方法与工艺

本申请是非临时申请并且要求于2015年9月2日提交的临时申请号为62/213,228、标题为“用于支持在SPOR中的修正命令的技术(ATECHNIQUE FOR SUPPORTING TRIM COMMAND IN SPOR)”的美国临时申请的权益和优先权,其全部内容在此通过引用并入本文以用于所有目的。

技术领域

本发明总体涉及用于存储装置的系统、方法和设备,并且特别地涉及提升性能的非易失性存储器装置。



背景技术:

诸如固态驱动器(SSD)的非易失性存储器装置正在寻找在消费电子产品中的新应用。例如,它们正在替代硬盘驱动器(HDD),其通常包括快速旋转的磁盘(盘片)。有时被称作“闪速存储器”(例如,NAND和NOR闪速装置)的非易失性存储器被用于媒介存储、相机、移动电话、移动计算机、笔记本计算机、USB闪存盘等等。当断电时,非易失性存储器提供相对可靠的、简洁的、划算的并且容易访问的存储数据的方法。

闪速存储器控制器被用于管理存储在非易失性存储器中的数据,并且充当主机和非易失性存储器之间的接口。闪速存储器控制器可以包括将诸如“逻辑块地址(LBA)”的主机端逻辑地址映射至对应于物理位置的闪速存储器端“物理地址”的闪存转换层(FTL)。由于包括闪存管理的各种原因,逻辑地址和物理地址之间的映射在系统的操作期间可以变化。在操作期间,FTL可以保持将实现在诸如动态随机存取存储器(DRAM)的易失性存储器中的转换的表在控制器内部或控制器可访问。



技术实现要素:

本发明的实施例关于用于追踪命令的方法、系统和计算机可读指令。方法包括将元页面保持在易失性存储器中以追踪命令。这种元页面可以包括与非易失性存储器超级块相关的信息。超级块可以包括多个物理页面。该方法可以进一步包括接收用于第一逻辑地址的无效命令,无效命令指示与第一逻辑地址相关的数据是无效的。方法可以进一步包括将第一逻辑地址连同与第一逻辑地址相关的数据无效的指令一起存储在元页面中的第一位置中。在实施例中,第一位置的指数可以是可用于确定对应于逻辑地址的物理页面。

在一些实施例中,确定对应于逻辑地址的物理页面可以包括确定具有比第一位置的指数小的指数的位置的数量,其中位置具有与它们存储的逻辑地址相关的数据无效的指示。在一些实施例中,与第一逻辑地址相关的数据无效的指令包括使用许可的逻辑地址的未使用的值。

在一些实施例中,与第一逻辑地址相关的数据无效的指令包括使用第一位置的指示位。这种指示位可以是符号位,并且负号可以表示与第一逻辑地址相关的数据是无效的。在一些实施例中,第一位置的指数可以进一步可用于确定无效命令在命令的序列中的位置。

在一些实施例中,在超级块中的多个物理页面可以包括元数据。在一些这样的实施例中,方法可以在包括元数据的超级块的最后的物理页面中,指示包括元数据的物理页面的位置和总数。在一些实施例中,方法可以在包括元数据的物理页面中,指示包括元数据的在前的物理页面的位置。

在一些实施例中,方法可以包括检测转移事件的触发;以及将元页面的内容转移至非易失性存储器。转移事件可以是例如满的元页面或功率损耗发生中的至少一个。在一些这样的实施例中,方法可以包括将页面结束指示符包括在其中触发事件是功率损耗发生的元页面中。在一些实施例中,触发事件可以是块的关闭。

一些实施例涉及包括被配置为实现各种方法的一个或多个处理器的非易失性存储器控制器。其它实施例涉及其上存储有指令的计算机可读媒介,其中当指令被处理器执行时,计算机可读媒介执行一些过程。

附图说明

图1是示出根据实施例的包括主机、控制器和非易失性存储器的系统的框图。

图2A和2B是描述根据实施例的示例控制器的部件的框图。

图3是根据实施例的示例非易失性存储器管芯的组织的简化图示。

图4A是不包括修正位置的指示的元页面的图示。

图4B是根据实施例的包括修正位置的指示的元页面的图示。

图5是根据实施例的包括多个元页面的块的结构的简化图示。

图6是示出根据实施例的由控制器执行的过程的流程图。

图7是示出根据实施例的另一个过程的流程图。

图8是示出根据实施例的另一个过程的流程图。

图9是示出根据实施例的恢复过程的流程图。

图10是包括实施例的主机计算机装置的简化图示。

具体实施方式

本公开的某些方面和实施例在下文中被提供。如对于本领域技术人员将显而易见的是,这些方面和实施例中的一些可以被独立应用并且它们中的一些可以被组合应用。在下文的描述中,出于解释的目的,为了提供实施例的全面的理解,具体的细节被阐述。然而,各个实施例可以在不具有这些具体细节的情况下被实施将会是显而易见的。附图和描述不是为了限制。

随后的描述提供示例,并且不是为了限制本公开的范围、适用性或配置。相反地,随后的示例性实施例的描述将会为本领域技术人员提供用于实施示例性实施例的实现性描述。应当理解的是在不脱离如权利要求中所阐述的本发明的精神和范围的情况下,在元件的功能和配置方面可以做出各种变化。

具体细节在接下来的描述中被给出以提供实施例的全面的理解。然而,将会被本领域内的普通技术人员所理解的是,实施例可以在不具有这些具体细节的情况下被实践。例如,为了不使不必要的细节令实施例模糊不清,电路、系统、网络、过程和其它部件可以被示为框图形式的部件。在其它实例中,为了避免模糊实施例,众所周知的电路、过程、算法、结构和技术可以在不具有非必要的细节的情况下被示出。

而且,注意的是,个别的实施例可以被描述为被描述为流程图表、流程图、数据流程图、结构图或框图的过程。尽管流程图表可以描述操作为顺序过程,但是很多操作可以并行或同时被执行。此外,操作的顺序可以被重新安排。当其操作被完成时,过程终止,但是可能有额外的步骤没有被包括在图中。过程可以对应于方法、功能、步骤、子例程、子程序等等。当过程对应于功能时,其终止可以对应于该功能返回至调用功能或主功能。

术语“计算机可读媒介”包括但不限于便携式或非便携式存储装置、光存储装置和能够存储、包括或携带指令和/数据的各种其它媒介。计算机可读媒介可以包括数据可以被存储在其中并且其不包括载波和/或无线传播或通过有线连接的暂时性电信号的非暂时性媒介。非暂时性媒介的示例可以包括但不限于磁盘或磁带、诸如光盘(CD)或数字通用磁盘(DVD)的光存储媒介、闪速存储器、存储器或存储器装置。计算机可读媒介可以具有存储在其上的代码和/或可以表示步骤、功能、子程序、程序、例程、子例程、模块、软件包、分类(class)或指令、数据结构或程序语句的任何组合的机器可执行指令。代码段可以通过传递和/或接收信息、数据、参数、参量或存储器内容被联接至另一个代码段或硬件电路。信息、参数、参量、数据等可以通过包括存储器共享、消息传递、令牌传递、网络传输等的任何合适的方法被传递、转递或传输。

而且,实施例可以通过硬件、软件、固件、中间件、微码、硬件描述语言或其任何组合来实施。当在软件、固件、中间件或微码中被实施时,待执行必要的任务(例如计算机程序产品)的程序代码或代码段可以被存储在计算机可读媒介或机器可读媒介中。处理器可以执行必要的任务。

接下来的详细的描述和连同其中相同参考数字有时被用在多个图中以指明相似的或完全相同的结构的结构元件的附图一起提供本发明的性质和优点的更好的理解。

随着时间的推移,主机系统可以请求存储在非易失性存储器上的某些数据的删除。这样的删除请求可以引起从主机系统至非易失性存储装置的用于具体逻辑地址或逻辑块地址(LBA)的无效命令。这些无效命令是为了将存储在这些LBA中的数据标记为无效。然而,在实际中,对应于该LBA的数据可以不被物理地擦除-LBA可以被简单地标记为无效。如果在对应于无效的LBA的物理地址中的数据随后被读取,则其可以包括之前存在的数据。因为在很多情况下可构成安全威胁,所以返回之前被擦除的数据可能是不可取的,或可能不符合规范。

本公开的某些方面提供用于追踪无效数据的强大技术。例如,与主机相互作用的存储器系统追踪被标记为无效的那些LBA的位置,使得当随后对无效LBA执行读取操作时存储器系统能够(基于请求)返回具体数据(例如所有的零或所有的一)或随机数据其一。在下面进一步描述的示例方法中,与非易失性存储器和主机通信的闪速存储器控制器可以帮助将在非易失性存储器本身内的无效位置的LBA存储在元页面中。该存储在元页面中的信息可以被用于建立或重建映射表,并且随后满足关于什么数据应当被从无效位置中读取出的要求。

图1描述包括主机、控制器和非易失性存储器的系统的一般的高层体系结构。图2和图3描述控制器和非易失性存储器的结构的示例。图4A示出不包括无效命令的追踪的元页面,而图4B示出追踪包括它们的历史的无效命令的元页面。图5示出每个块/超级块利用指向元页面的位置的指针使用不止一个元页面的情况。图6、图7和图8示出根据某些实施例的三种过程。图9描述通电时重建FTL映射表的恢复过程。图10示出合并实施例的示例计算装置。

图1是示出根据实施例的包括主机110、控制器120和非易失性存储器130的系统100的简化框图。在一些实施例中,易失性存储器130可以是NAND闪速存储器。在其它实施例中,非易失性存储器130可以是被配置为与NAND闪速存储器外部相互作用的NOR闪速存储器。在实施例中,非易失性存储器130可以被设计为在没有持续的或大体上持续的外部电源的情况下存储数据。在一些示例中,非易失性存储器130可以被用作二级数据存储,例如,在诸如笔记本电脑的计算机系统中。在这种示例中,非易失性存储器系统140可以代替硬盘驱动器(HDD)。在一些示例中,控制器120可以在非易失性存储器系统140外部。在一些这样的示例中,控制器120可以与多个非易失性存储器相互作用。一个示例非易失性存储器的架构和组织将会在说明书中被稍后提供。非易失性存储器的其它示例可以包括只读存储器(ROM)、掩膜ROM(MROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、铁电RAM(F-RAM)、磁阻RAM(M-RAM)、聚合物基有机存储器、全息存储器、相变存储器等等。

主机110可以包括任何合适的硬件装置、软件应用或硬件和软件的组合。在一些实施例中,主机110可以包括主机端控制器(未示出)。在实施例中,控制器120可以连接在主机110和非易失性存储器130之间。控制器120可以被配置为从主机110接收各种命令并基于这些命令与非易失性存储器130连接。示例控制器将会参照图2在下文中进一步解释。

图2A和图2B是分别描述根据实施例的示例控制器120和120'的部件的框图。如示出的,控制器120和120'可以包括主机接口210、一个或多个处理实体220和非易失性存储器接口230。处理实体可以指任何处理逻辑,包括但不限于处理器或与处理器有关的处理核心、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或可配置为执行指令的任何其它电路系统。如图2B所示,控制器120'进一步包括易失性存储器240。例如,易失性存储器240可以包括DRAM。在其它示例中,易失性存储器240可以包括双倍数据速率DRAM(DDR DRAM)或静态RAM(SRAM)。通常,易失性存储器可以指在没有持续的或大体持续的电源的情况下,存储的数据被丢失的任何存储器媒介。

在一些实施例中,除了或代替内部易失性存储器,控制器120或120'可以与外部易失性存储器连接。例如,控制器120可以访问其中数据可以在被转移至非易失性存储器之前被存储的外部DRAM。控制器120或120'可以将数据保持在易失性存储器中并且接着当触发转移事件时,将该数据转移至非易失性存储器。下文中关于图2A的控制器120的进一步描述也可以适用于图2B的控制器120'。

返回图1,在一些实施例中,控制器120可以使得非易失性存储器130能够基于从主机110接收的控制信号执行各种操作。在示例中,这可以使主机110能够编程、擦除、读取或修正非易失性存储器130的部分。

图3是根据实施例的示例非易失性存储器130的组织的简化图示。在某些实施例中,与控制器相互作用的易失性存储器的结构可以与非易失性存储器的部分的结构相似。换言之,页面(诸如拥有元数据的页面,或元页面)可以在被转移至非易失性存储器的页面之前被保持在易失性存储器中。应当注意的是,图3中所示的结构只是为了说明并且非易失性存储器的实际的物理组织可以与描述实质上不同。

在图3示出的示例中,非易失性存储器管芯300包括两个平面310和310'。其它示例中每个管芯可以包括不同数量的平面。多个这样的管芯可以被包括在诸如非易失性存储器130的非易失性存储器中。平面310可以包括诸如块320的多个块。块320可以进一步包括多个页面330。在这些页面中,一个或多个页面可以被用于存储元数据。这样的页面可以被称作“元页面”。元页面340是将元数据存储在块320中的页面的示例。诸如页面330的页面可以表示最小可编程单元。页面也可以表示最小可读取单元。

诸如非易失性存储器管芯300的管芯可以使用不同的沟道被组织。每一沟道可以具有附于其的多个管芯。例如,第一管芯的第一块、第二管芯的第一块、第三管芯的第一块等可以被分组在一起并且被并行访问,因此形成超级块。例如,属于相同超级块的页面可以被并行编程和读取。尽管超级块可以不被物理地分组在一个单元中,但逻辑上,超级块可以相当于块。

图1、图2A和图2B的控制器120和120'可以执行闪存转换层(FTL)为软件层,并且可以包括可以被用于为对应的逻辑地址追踪物理地址的一个或多个映射表。控制器120(在实施例中,更具体地,处理实体220)被配置为执行FTL以促进对非易失性存储器的访问。FTL保持被用于将逻辑地址转换至物理地址的映射表。在至少一个实施例中,映射表被保持在被控制器保持的易失性存储器240中。在示例中,逻辑地址可以是逻辑块地址(LBA)并且物理地址可以对应于非易失性存储器中的物理位置或坐标。FTL可以通过使其与用于硬盘的传统主机接口兼容起到使SSD功能如同硬盘驱动/硬盘驱动器(HDD)的作用。在示例中,被FTL保持的映射表可以具有大尺寸,例如非易失性存储器的容量的1/1000,并且因此消耗大量的资源。在某些方面,被FTL保持的映射表也可以被称为FTL映射表或仅被称为FTL表。

在操作期间,FTL保持可以存在于诸如在控制器120内部或在控制器120访问的位置处的DRAM的易失性存储器中的映射表。物理地址和逻辑地址之间的映射在操作期间可以改变。最新的映射必须在通电时被追踪并重新产生。例如,当发生突然断电时,可能没有足够的时间或可用的电力来将全部的映射表写入到非易失性存储器中用于未来的恢复。在下一次通电时恢复更新的映射表可以被称作突然断电恢复(SPOR)。特别地,一个问题是通过诸如“修正”命令的无效命令被标记无效的逻辑地址的恢复。

非易失性存储器130可以不支持数据的原状更新。换言之,当逻辑地址的数据被更新或重写时,对应的物理位置可以不被更新。在更新时,新数据可以被写入在不同的物理位置中,并且逻辑地址的映射现在可以被更新至对应于新物理位置。这可以导致在映射表中的更新的映射。

被FTL保持的映射表可以是基于页面的。形成表的内容的物理地址可以按逻辑地址的顺序被布置,使得物理地址的指数(index)可以用来确定逻辑地址。

如前述提到的,映射表可以被保持在控制器中。然而,如果在操作期间存在功率损耗,那么可能没有足够的时间或能量将更新的映射表写入至非易失性存储器用于在下一次通电时使用。为了帮助控制器重建更新的映射表以取代“脏的(dirty)”映射表,另一种类型的映射被存储在非易失性存储器本身的元块中。这是物理至逻辑(PTL)映射,下文中也被称作PTL表以区分其与在FTL中的(物理至逻辑)映射表。PTL表可以被存储在非易失性存储器中,并且被控制器使用以建立更新的映射表。PTL表可以被用于查找物理地址的逻辑地址。在这种表中,物理地址被用作指数,并且逻辑地址可以在内容中被查找。PTL表的示例将结合例如图4A和图4B来进一步解释。

PTL表可以被存储在非易失性存储器中的元页面中。在某些实施例中,元页面可以存在于每一个块的末端。非易失性存储器中的这种元页面可以被用在通电序列中以建立干净的FTL映射表,取代“脏的表”-即,一个过时的表。元页面可以被保持在控制器可访问的易失性存储器中,然后被写入在非易失性存储器上。例如,当超级块满时,或当超级块被关闭时,元页面的内容可以被写入至超级块。序号或时间戳也可以被写入至非易失性存储器,使得破译超级块被关闭的顺序是可能的。该序号可以被用于破译最新的逻辑地址位置。当在通电时重建FTL映射表时,来自超级块中的元页面的信息可以被回放,并且逻辑至物理映射可以从每一个超级块的物理至逻辑映射中产生。关于从元页面的恢复的更多的信息将在说明书中例如参照图9被稍后提供。

在某些实施例中,控制器120可以接收命令以使某些逻辑地址无效。换言之,这种命令请求在这些逻辑地址中的数据被标记为无效。一个示例为修正命令。来自主机的修正命令意味着与逻辑块地址(LBA)有关的数据被删除-即,主机认为该数据无效。实际上,物理地存在于这种位置中的数据实际上不需要被擦除。因此,如果读取操作随后在之前被标记为无效的位置上被完成,择旧的数据可以是可用的。

然而,提供来自之前被标记为无效的位置的实际数据是不可取的。因为打算被删除的数据现在是可用的,所以提供来自被标记为无效的位置的实际数据构成安全风险。换言之,如果非易失性存储器不包括或追踪无效位置,则来自被修正的位置的数据对于那些物理地址依然可以是可读取的。此外,可能存在将全部修正的数据全部读出为1或0的需求。在其它示例中,修正的数据可以必须是随机数据/垃圾数据或其它预定的模式。

图4A是根据本公开的某些方面的元页面450的图示。在一些实施例中,元页面450可以是超级块/其部分的块的最后的页面。例如,元页面450可以被控制器管理并保持在易失性存储器中并被转移至诸如图3所示的页面340或340'的非易失性存储器的页面。在SPOR之后的通电序列中,所有超级块的元页面可以按时间顺序被读取并被用于更新FTL映射表,使得对于相同的逻辑地址,较新的物理地址可以“重写”存在于较老的物理地址中的数据。换言之,尽管其它物理地址可以保持对应于逻辑地址的过时的数据,但最终一个物理地址将保持对应于该逻辑地址的当前的数据。

图4A的元页面450如一维表所示。在其它实施例中(未示出),元页面450可以具有更多的维度以存储数据。元页面450的每一个位置的指数在对应的条目上方被示出。例如,L=100对应于第“0”位置,L=101对应于第“1”位置,L=102对应于第“2”位置,等等,直到L=500对应第“X”位置。该指数(从0一直到X)可以被用于确定对应于为条目的内容的逻辑地址的物理地址。

在图4A所示的示例中,例如,对应于逻辑地址L=102的物理地址可以使用指数“2”来确定。在实施例中,指数“2”可以意味着对应的物理地址是块中的第二地址。因此,根据这些实施例,在图4A所示的元页面450中,逻辑地址102可以对应于块中的第二物理位置。相似地,逻辑地址101可以对应于块中的第一物理位置,逻辑地址100可以对应于与块中的指数0对应的位置,等等。元页面450存储仅用于“被写入的”数据的物理-逻辑转换,即用于“写入”命令。如在下文中将被进一步解释的,在元页面中的一个或多个最后位置可以被用于存储诸如指向其它页面的指针的其它数据。

图4B是根据某些实施例的包括修正位置的指示的元页面460的图示。在某些实施例中,元页面460表示也包括用于追踪修正命令的指示的元页面450的加强的实施例。如示出的,元页面460捕获指示逻辑地址100通过存在于其内的逻辑地址的符号-指示修正位置的负号-已经被修正的信息。尽管从图4B中不明显,但是元页面460也可以捕获修正命令的历史、序列和/或时间戳。捕获修正命令的序列对于在通电时恢复FTL的正确的最新的映射表可能是重要的。

例如,接下来的两个序列导致不同的映射表:

事件1:LBA 100被写入至物理页面1,随后LBA 100被修正,随后LBA 100被写入至物理页面2。

事件2:LBA 100被写入至物理页面1,随后LBA 100被写入至物理页面2,随后LBA 100被修正。

在事件1中,LBA 100是有效的并且最新的物理地址是第二物理页面。在事件2中,LBA 100是无效的。

多种方法可以被用于包括与逻辑地址有关的数据是无效的或已经被修正的指示连同逻辑地址。换言之,使用这种指示,修正命令可以与在元页面中的写入命令区分。在没有这种指示的情况下,写入逻辑地址可以不区别于修正逻辑地址。指示的实施例下面被提供为示例,并且一个示例在图4B的元页面460中被图示。

在一些实施例中,诸如在图4B中描述的一个实施例,额外位,即指示位,可以被用于区分写入逻辑地址与修正逻辑地址。例如,被用于指示正值或负值的符号位可以被使用。负号可以被用于指示与逻辑地址有关的数据是无效的。

在元页面460中,例如,在指数2处,L=-100(负100)表示在逻辑地址100中的数据是无效的。在指数0处的逻辑地址100表示逻辑地址100在其被修正之前被写入对应于指数0的物理页面。

因为指数2被用尽来存储修正命令,所以当从突然断电事件中恢复时,必须在从被存储在非易失性存储器中的物理至逻辑映射重建逻辑至物理映射中考虑到这一点。换言之,如其指数所暗示的,逻辑地址102应当依然对应于物理位置2而不是物理位置3。因此,当通电时,在表中的负数的逻辑地址、物理地址将不会随着指数增加。在元页面460中,逻辑地址102将如在元页面450中继续对应于物理地址2。现在,尽管在元页面460中的条目的数量现在为X+T,但L=101对应于第“1”位置,L=102对应于第“2”位置,等等,直到L=500对应第“X”位置,其中T对应于存储修正信息的那些条目。换言之,为了确定对应于给出的逻辑地址的物理地址,直到给出的逻辑地址的负的逻辑地址的数量必须求和并且从给出的逻辑地址的指数中被减去。

元页面460也可以存储指向诸如在前的另一个元页面的位置的指针。在图4B中,条目470包括指向另一个元页面的指针。这种指针将在下文中参照图5被进一步讨论。当FTL映射表被重建时,元页面460也可以追踪修正命令的顺序和历史,其当通电时可以被重放。因为图4B中的方法可以使用元页面460中其它未使用的空间,所以没有明显的,如果有的话,存储器负担。

在实施例中,元页面450和460可以被临时地保持在控制器可访问的易失性存储器中。当转移事件触发时,例如元页面460的内容可以被转移至诸如NAND闪存的非易失性存储器上。在一些实施例中,当块/超级块关闭时,元页面460的内容可以被转移至非易失性存储器。在其它实施例中,当元页面460被充满时,元页面460可以被转移至非易失性存储器。

当元页面用于追踪修正命令时,可能存在因为元页面中缺乏空间而导致不是整个块或超级块的所有的修正命令历史和序列可以在块/超级块的一个元页面中被捕获的情况。例如,块内的大部分位置可以被主机修正。在这种情况下,大量修正位置的地址将必须被追踪。因为不是所有的地址可以被容纳在一个元页面中,因此其可以请求每个块/超级块有多个元页面以追踪修正位置。每块中元页面的数量因此变成可变的。这产生指示多少元页面存在于块和这种元页面的位置中的需要。

尽管下文参照存储修正命令进一步描述,但可能存在不依赖于可以请求每个块/超级块的多个元页面的修正命令的其它原因。例如,因为块的尺寸增加,并非所有的物理至逻辑转换可以在一个元页面中被捕获。

图5是根据实施例的包括N个页面、包括多个元页面的块500的结构的简化图示。块500可以是超级块的部分。块500可以包括被标记为“数据页面”的一个或多个数据页面,以及被标记为“元-页面”的多个元页面。元页面510、520和530可以与前述的页面460相似。

在块500中,元页面510,第“N”页面,是包括如参照元页面450和460所述的物理至逻辑转换的元页面。在某些实施例中,块的最后的页面总是元页面,使得元页面可以被容易发现。根据本公开的方面,元页面也可以包括修正命令指示。元页面510也可以包括指向先前的元页面,在这种情况下为位置6处的元页面520,的位置的指针。该指针示为“p=6”。尽管被示为如图5中最后的条目,但在其它实施例中,指针可以位于元页面510中的其它位置。元页面520反过来包括指向先前的元页面,在这种情况下为第三位置中的元页面530,的位置的指针。该链可以继续直到没有更多的元页面。在图5中,这发生在元页面530处。元页面530包括表示没有更多元页面的指针“p=-1”。在其它实施例中,其它指示可以被用于表示没有更多的元页面。

在通电和查核期间,在实施例中总是元页面的最后的页面可以被读取。基于在最后的页面中的指针,先前的(倒数第二)元页面可以被读取,等等,直到在元页面中的指针指向表示已经到达最后的元页面的负一。

在一些实施例中,除了或取代上述的指针方案,元页面的总数和位置可以被存储在可以总是为元页面的超级块的最后的页面中。在这种实施例中,当FTL映射表在通电时被建立时,为元页面的最后的页面可以被首先读取以捕获关于其它元页面的细节。用于通电的通常的恢复方法将在下文被进一步描述。

在每块使用多个元页面的一些实施例中,当在被保持在诸如DRAM的易失性存储器中的元页面中的数据充满时,其内容可以被转移至非易失性存储器的元页面。在其它实施例中,诸如在每块使用一个元页面的实施例中,当块关闭时,被保持在易失性存储器中的内容可被转移至非易失性存储器。

使用上述方案,每块可以使用多个和变化数量的元页面。为了实施,块中的元页面永远不会比页面的数量多,在这种情况下该方案也是稳健的。这可以通过使用整个逻辑地址空间的简单计算被示出。在一个示例中,在元页面中的条目的尺寸,即存储逻辑地址的条目的尺寸,可以是32位。即使整个存储器装置被单独的修正命令修正,但条目的数量将是C/4KB,其中C表示存储器装置的容量。因此,即使存储器装置的每个位被修正,总计C/4KB*32位被请求追踪修正位置。在该示例中,超级块的尺寸为C/4000,其大于需要追踪修正位置的位的数量。因此,在块中的元页面永远不会多于页面。

图6是示出根据实施例的由控制器执行的过程600的流程图。过程600可以被控制器使用以将元页面保持在易失性存储器中以追踪命令,并且将元页面的内容转移至非易失性存储器以追踪命令,并且将元页面的内容转移至非易失性存储器。

在步骤610中,过程600包括将元页面保持在易失性存储器中以追踪命令。例如,控制器可以将元页面保持在控制器内部或外部之一的DRAM中。在过程600中被保持的元页面可以与非易失性存储器超级块有关,并且可以最终被转移至非易失性存储器超级块上。在示例中,非易失性存储器可以是NAND闪存装置。在示例中,NAND闪存装置可以操作为SSD。非易失性存储器超级块可以包括多个物理页面。之前结合图3描述了非易失性存储器的示例结构。

在步骤620中,过程600包括接收用于第一逻辑地址的无效命令,无效命令指示与第一逻辑地址有关的数据是无效的。在示例中,这种无效命令可以是修正命令并且可以来自主机。无效命令的其它示例可以包括删除。逻辑地址可以是逻辑块地址(LBA)。

在步骤630中,过程600包括将第一逻辑地址连同与第一逻辑地址有关的数据无效的指示一起存储在元页面中的第一位置中。一个示例在图4B中参照元页面460被提供。如前文所解释的,与第一逻辑地址有关的数据无效的指示可以例如通过使用具有指示修正位置的负值的符号位被获得。第一位置的指数可以可用于确定对应于第一逻辑地址的物理页面。

在实施例中,确定对应于逻辑地址的物理页面可以包括确定具有小于第一位置的指数的指数的位置的数量,其中位置具有与它们存储的逻辑地址有关的数据无效的指示。特别地,第一逻辑地址的物理地址可以通过计数直到第一位置的负地址的总数并且从第一位置的指数中将其减去来计算。

在实施例中,第一位置的指数也可以可用于确定在命令的序列中的无效命令的位置。当在通电时重建FTL映射表时,关于无效命令的历史信息可以是有用的。

在步骤640中,过程600包括检测转移事件的触发并且将元页面的内容转移至非易失性存储器。在示例中,这种转移事件可以是块的关闭。在其它示例中,转移事件可以是易失性存储器中的元页面的装满。在其它示例中,转移事件可以是功率损耗发生。当逻辑地址的修正位置是已知的并且存在于非易失性存储器中时,在稍后的读取操作期间,特定的数据或垃圾数据可以根据请求被读取出。

图7是示出根据实施例的过程700的流程图。在一些实施例中,多个元页面可以被用于连同追踪修正位置一起追踪逻辑地址的物理位置。然而,过程700的应用不限于这种实施例。由于一些其它的原因,每块中可以使用多个元页面,并且过程700可以被用于每块保持多个元页面以用于许多应用。

在步骤710中,过程700包括将超级块或块中的多个物理页面用于元数据。示例结合图5被提供。在步骤720中,过程700包括在包括元数据的超级块的最后的物理页面中,指示包括元数据的物理页面的位置和总数。一些实施例可以跳过步骤720。

在步骤730中,过程700包括在包括元数据的物理页面中指示包括元数据的在前的物理页面的位置。在示例中,块/超级块的最后的物理页面可以总是包括元数据,并且因此是元页面。在其它示例中,诸如在突然断电的情况下,待被从易失性存储器写入的最后的页面可以包括页面结束指示符以指示页面未满。

在突然断电的方案中,开放块可在重建FTL映射表中形成特殊问题。开放块可以指被积极访问并被写入的块。在一些实施例中,当开放块关闭时,保持在易失性存储器中的元页面可以被写入至非易失性存储器。在这种实施例中,当在块仍然开放时发生突然断电时,物理至逻辑地址映射信息可能还未被写入至非易失性存储器。在下一次通电时,地址映射信息可以通过读取所有的元页面连同修正命令信息被恢复。然而,对于开放块,因为修正的逻辑地址可能未被写入至非易失性存储器的任何位置,所以修正命令信息不能通过在通电时扫描在元页面中的数据被恢复。

解决该问题的一种方法是通过使用存储能量并且可以被用于功率损耗的事件中以完成从易失性存储器至非易失性存储器的一些数据的转移的超级电容器。然而,在断电期间,由于在易失性存储器中的一些未被写入的元页面,开放块的尺寸是巨大的,因此,需要非常昂贵的超级电容器。

根据实施例,来自主机的写入和修正信息通过控制器被累积在易失性存储器中直到元页面被充满,并且满的元页面被转移至非易失性存储器中。换言之,在任何给定的时间,即使在功率损耗的情况下,将有至多一个页面的数据写入至非易失性存储器。当在元页面未满时发生功率损耗时,部分元页面可以连同页面结束指示符一起被写入在元页面中。页面结束指示符可以提供超过页面结束指示符的数据不是有效的指示。这种功率损耗数据转移可以利用来自超级电容器的能量完成。

根据这种方法,元页面的数量和位置是待定的直到超级块被关闭。控制器可以保持在运行时间期间产生的写入页面的数量和元页面的数量的追踪。每当两种类型的总数等于超级块的尺寸时,在非易失性存储器中的超级块可以通过写入最后的元页面被关闭。当电源被打开时,在读取总是为元页面的最后的页面之后,映射表重建所需要的信息可以被恢复。

图8是示出根据实施例的过程800的流程图。过程800可以确保在任何给定时间,只有与可以由失效模式机理支持的数据一样多的数据转移至非易失性存储器。例如,在电源失效的事件中,只有与可以被写入至非易失性存储器的数据一样多的数据可以被保持在易失性存储器中。根据失效恢复机理(例如超级电容器),这可以是一个元页面,或其可以被一些其它的失效恢复机理所限制。

在步骤810中,过程800包括将元页面保持在易失性存储器中以追踪命令。在实施例中,步骤810可以被与或者在控制器内部或者在控制器外部的诸如DRAM的易失性存储器执行。在步骤820中,过程800包括检测转移事件的触发。在一个示例中,转移事件可以是满的元页面。在另一个示例中,转移事件可以是突然断电发生。在又一个示例中,转移事件可以是当功率损耗时基于超级电容器的容量可被写入的固定数量的元页面。在步骤830中,过程800包括将元页面或多个元页面的内容转移至非易失性存储器。

根据一些实施例,运行时间算法可以如下:

1.当超级块在非易失性存储器(NAND闪存)中被开放时,元页面区域被创建在易失性存储器(DRAM)中以累积主机写入信息和修正命令信息。

2.在DRAM的元页面中的元数据被设为d=[]。

3.元页面的数量被设为m=1。

4.前一个元页面位置被设为p=-1。

5.当主机写入命令和对应的LBA“1”一起被接收时,“1”被附加于d的结束,使得d=[d,l]并且主机写入页面计数h增加1.

6.当主机修正命令和对应的LBA“1'”一起被接收时,“-1'”(负1')被附加至d的结束,使得d=[d,-l′]。主机修正页面计数t增加1。

7.如果元页面被充满,则d被p(指向前一个元页面的指针)附加,使得d=[d,p]并且被写入至开放块。在写入之后,在DRAM中的元页面区域被清除用于下一轮。

8.如果当前的物理页面指数是p1,则p被设为p1,使得p=p1。(如上文提到的,p被用于保持前一个元页面的位置的追踪)。

9.在功率损耗的事件中,d被p和页面的结束(EOP)指示符附加,使得d=[d,p,EOP]并且被写入至NAND的系统区域。EOP指示没有更多的数据。

10.当h(写入页面计数)+t(修正页面计数)=N(超级块的尺寸,即在超级块中的页面的数量)时,超级块被关闭。d被p附加,使得d=[d,p]并且被写入至块的结束。

在上述算法之后的通电期间,在实施例中,恢复算法可以如下:

1.当通电时,来自全部关闭块和开放块的元页面被读取。当从关闭块读取元页面时,最后的页面因为其为元页面而被首先读取。然后根据在该最后的页面中的p值,其它的元页面可以被定位并读取,直到达到具有表示没有更多的元页面的p=-1的元页面。

2.当从开放块读取元页面时,NAND的系统区域被读取,使得最后的元页面的p值可以被读取。来自NAND的其它的元页面接着可以与上述相同的方式被读取。

3.元页面信息被分类并且根据最老至最新的顺序被重放至FTL表中。在此方法中,主机写入条目和修正的条目两者均被恢复。

图9是示出根据实施例的恢复过程900的流程图。当通电时,过程900可以被用于恢复建立FTL表所需的地址映射信息.

在步骤910中,过程900包括读取关闭的超级块的最后的物理页面。关闭块的最后的物理页面包括元数据。在步骤920中,过程900可以包括读取包括元数据的在前的物理页面的指示。在步骤930中,过程900可以包括将包括元数据的在前物理页面设为包括元数据的当前物理页面,以及读取包括元数据的当前物理页面。

在步骤940中,过程900包括确定是否已经到达包括元数据的最后的物理页面。在示例中,该指示可以通过指向不存在的页面(例如p=-1)的指针被读取。如果的确已经到达包括元数据的最后的物理页面,则过程900结束。如果还未到达包括元数据的最后的物理页面,则对包括元数据的在前物理页面的指示,例如通过指针被读取。包括元数据的在前物理页面接着被设置为包括元数据的当前的物理页面并且该过程继续。

一种追踪已经被修正的地址的方法是使用与“位映射”或保持修正的逻辑地址的追踪的FTL映射表相似的另一个表。在一些实施例中,在FTL映射表的每一个条目中的额外位可以被用于追踪修正状态。在一些实施例中,在FTL映射表中的逻辑地址是否对应于修正值的指示可以通过使用未使用的值被获得。例如,根据国际磁盘驱动设备与材料协会(International Disk-drive Equipment and Materials Association,IDEMA)规范,可以存在一些逻辑地址的禁止值。这些不允许的或禁止的模式可以被用于指示对应于修正命令的逻辑地址。

图10示出包括本发明的实施例的示例计算装置1000。装置1000的硬件元件可以通过总线被电联接(或另外可以视情况而连通)。如图10所示,计算装置1000包括处理单元1004、非易失性存储器装置1002、输入/输出(I/O)系统1010、网络电路1012和多媒体电路1014。在所述的示例中,处理单元1004可以作为主机系统。

在示例中,非易失性存储器装置1002可以是NAND闪速存储器装置并且可以被用于存储被处理单元1004访问的二级数据。非易失性存储器装置1002可以包括根据上述实施例的作为诸如图1和图3中示出的非易失性存储器和图2A、图2B和图3中所示的控制器的非易失性存储器装置1002和处理单元1004之间的接口的控制器(未示出)。系统存储器1006可以是诸如随机存取存储器(RAM)的易失性存储器并且可以与处理器1008一起操作。处理器1008可以包括但不限于一个或多个通用处理器和/或一个或多个专用处理器(诸如数字信号处理芯片、图形加速处理器等等)。

计算装置1000可以进一步包括网络电路1012以将计算装置1000连接至网络。网络电路可以包括但不限于调制解调器、网卡(无线或有线)、红外线通信装置、无线通信装置和/或芯片组(诸如蓝牙装置、1602.11装置、WiFi装置、WiMax装置、移动通信设备等)等等。网络电路1012可以允许与网络、其它装置和/或本文所述的任何其它装置交换数据。

如图10所示,计算装置1000可以包括多媒体电路1014。多媒体电路1014可以将计算装置1000连接至一些外部音频和视频输入和输出,诸如显示器和扬声器。I/O系统1010可以将计算装置1000连接至诸如键盘、鼠标、触摸屏、相机、红外捕获装置等的各种输入装置和机构以及诸如打印机、显示单元、触觉反馈装置等的输出装置和机构。

装置1000也可以包括位于系统存储器1006内或非易失性存储器1002中的包括装置驱动器、可执行库和/或诸如一个或多个应用程序的其它代码的软件元件,其可以包括由多种实施例提供的计算机程序和/或可以被设计以实施由其它实施例提供的方法和/或配置由其它实施例提供的系统,如本文所示。仅仅通过示例的方法,关于上述讨论的方法,所述的一个或多个步骤可以通过计算机(和/或计算机内的处理器)被实施为代码和/或可执行的指令;然后在一方面,这种代码和/或指令可以被用于配置和/或适应通用计算机(或诸如图2A和2B的控制器120和120'的其它装置)以根据所述的例如图6、图7、图8和图9中所示的方法中的任何方法的方法执行一个或多个操作。

这些指令和/或代码的集可以被存储在诸如非易失性存储器装置1002的在上述的控制器120或120'内的计算机可读存储媒介上。在一些情况下,存储媒介可以被包含在诸如装置1000或控制器120或120'的装置内。在其它实施例中,存储媒介可以与装置分离(例如可移除媒介,诸如光盘),和/或被设置在安装包内,使得存储媒介可以被用于编程、配置和/或适应具有存储于其上的指令/代码的通用计算机。这些指令可以采用通过装置可以被执行的可执行代码的形式,和/或可以采用经过装置上的编译和/或安装(例如,使用多种通用编译器、安装程序、压缩/解压工具等的任何一个)然后呈现为可执行编码的形式的源和/或可安装代码的形式。

根据具体的要求,可以作出实质性的变化。例如,定制的硬件也可以被使用和/或特定的元件可以硬件、软件(包括便携式软件,诸如小应用程序等)或两者实施。进一步地,诸如网络输入/输出装置的与其它计算装置的连接可以被采用。

如本文中所使用的,术语“机器-可读媒介”和“计算机可读媒介”指参与提供引起机器以特定方式操作的数据的任何媒介。虽然应用的是说明性的实施例已经在本文中被详细描述,但应当被理解的是,本发明的概念可以被另外不同地实现和采用,并且除了如被现有技术所限制的,权利要求是为了被解释为包括这些变形。

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