中间存储的适应性管理的制作方法

文档序号:17761225发布日期:2019-05-24 21:42阅读:127来源:国知局
中间存储的适应性管理的制作方法

包括非易失性存储器的存储设备可以包括被指定为中间存储(is)存储器的非易失性存储器的一部分以及被指定为主存储(ms)存储器的非易失性存储器的另一部分。is存储器用于存储设备以提供更快的写入吞吐量,并且还可以用作安全区域以在将主机数据存储在ms中之前快速存储主机数据。is存储器还可以充当非易失性存储器高速缓存,其使得能够非常快速地访问存储在is存储器内的热数据。一般的概念是使用更昂贵的非易失性存储器,它具有较低的读写延迟、较大的耐久性、以及较低的存储密度和容量,如is存储器,并且使用较便宜的非易失性存储器,它具有较高的读写延迟、较小的耐久性、以及较高的存储密度和容量,如ms存储器。更昂贵的is存储器(其可能占用存储设备的总存储预算的不到百分之十)可以包括单级单元(slc)存储器,其中每个存储器单元存储一位数据。is存储器可以另选地或另外地包括存储级存储器(scm)。相比之下,较便宜的ms存储器(其可能占总存储预算的百分之九十以上)可以包括多级单元(mlc)存储器,其中每个存储器单元存储两位或多位。如本文使用的术语,mlc存储器可以包括存储器单元,其中每个存储器单元存储两位、三位或四位数据,或者可能甚至多于四位数据。因此,如本文使用的术语,术语mlc存储器还包含三级单元(tlc)存储器和四级单元(qlc)存储器。

将数据从is存储器传输到ms存储器的过程称为“重定位”。执行重定位以清除is存储器内的空间。虽然is存储器在性能和耐久性方面通常都很出色,但它太小而无法有效地缓存所有主机数据。用于执行重定位的常规技术通常基于简单的启发法,诸如先进先出(fifo),或基于老化算法。然而,用于执行重定位的传统技术(也可以称为传统的重定位方案)对于许多用例来说并不是最佳的,因为在用于流视频的存储设备中使用的最佳重定位方案与用于重复更新相同的相对较小的数据块的存储设备中使用的最佳重定位方案之间存在明显的区别。流视频示例是一个极端的用例,其中写入整个闪存驱动器,然后立即重写,一次又一次。重复更新相同的相对较小的数据块是频谱另一端的另一个极端用例,其中可以一遍又一遍地写入相同的逻辑块地址(lba)。

在不同的场景中,存储设备可能在仍然需要时耗尽is存储器,这可能降低写入吞吐量,并且通常是不期望的。但是,is存储器的读取延迟也比ms存储区短。因此,避免将一块数据从is存储器重新定位到ms存储器是有意义的,其中在写入之后不久将读取该块数据,因为如果将其保持在is存储器中,则其读取延迟将更低。

附图说明

图1是描绘连接到主机设备(或嵌入在主机设备中)的存储设备的一个实施方案的框图,该存储设备可以实现本文描述的本技术的实施方案。

图2是图1中介绍的用于存储设备的控制器的硬件架构的一个示例实施方案的框图,该存储设备可以实现本文描述的本技术的某些实施方案。

图3是存储设备的一个示例的框图。

图4是非易失性存储器管芯的一个示例的框图。

图5是根据本技术的某些实施方案的用于概述执行is存储器的适应性管理的方法的高级流程图。

图6是用于解释选择和执行的重定位方案如何能够随时间改变的高级流程图。

图7a是根据本技术的实施方案用于描述图5中介绍的步骤中的一个的附加细节的流程图,该步骤涉及选择多个存储的重定位方案中的一个,该重定位方案用于选择性地将数据从is存储器重新定位到ms存储器。

图7b是根据本技术的另一实施方案用于描述图5中介绍的步骤中的一个的附加细节的流程图,该步骤涉及选择多个存储的重定位方案中的一个,该重定位方案用于选择性地将数据从is存储器重新定位到ms存储器。

图8是根据本技术的某些实施方案用于解释如何识别其他的潜在的主机活动模式以及可以生成和存储其他重定位方案的流程图。

图9示出了第一示例性活动日志,基于其可以预测主机活动模式并且预测的主机活动模式可以用于选择重定位方案。

图10示出了第二示例性活动日志,基于其可以预测主机活动模式并且预测的主机活动模式可以用于选择重定位方案。

图11是根据实施方案在被选择之后提供如何执行重定位方案的一些附加细节的高级流程图。

图12是根据实施方案在被选择之后提供如何执行另选重定位方案的一些附加细节的高级流程图。

具体实施方式

本文描述了可以执行中间存储存储器的适应性管理的存储设备及其使用方法。此类存储设备可以包括非易失性存储器,其中非易失性存储器的一部分被指定为中间存储(is)存储器,并且非易失性存储器的另一部分被指定为主存储(ms)存储器。与ms存储器相比,is存储器具有较低的读写延迟、较大的耐久性、以及较低的存储密度和容量。例如,is存储器可以包括单级单元(slc)型闪存存储器,其中每个存储器单元存储一位数据,并且ms存储器可以包括多级单元(mlc)型闪存存储器,其中每个存储器单元存储两位或多位数据。根据下面另外详细描述的本技术的某些实施方案,存储多个重定位方案,每个重定位方案与多个潜在的主机活动模式中的一个相关联。另外,维护活动日志以跟踪与存储在非易失性存储器中的数据相关的操作,并且基于活动日志预测主机活动模式。根据某些实施方案,选择多个存储的重定位方案中的一个以应用于存储在is存储器中的数据,其中基于预测的主机活动模式执行该选择。然后执行选定的重定位方案,从而根据选定的重定位方案选择性地将数据的一个或多个部分从is存储器重新定位到ms存储器。在提供本技术的实施方案的附加细节之前,首先描述可用于实现本技术的实施方案的示例性存储设备是有用的。

在以下详细描述中,参考形成了其一部分的附图,并且其中通过说明的方式示出了特定的说明性实施方案。应当理解,可以利用其他实施方案,并且可以进行机械和电气改变。因此,以下详细描述不应被视为具有限制意义。在下面的描述中,相同的数字或参考标号将用于指代相同的部分或元件。另外,三位数参考数字的第一个数字和四位数参考数字的前两个数字识别首次出现参考数字的图形。

图1是描绘连接到主机设备102(或嵌入在主机设备102中)的存储设备120的一个实施方案的框图,其中主机设备102可以实现下面描述的本技术的实施方案。参见图1,主机设备102通过发出读写命令将数据存储到存储设备120中并从中检索数据。存储设备120可以嵌入在主机设备102中,或者可以以卡、通用串行总线(usb)驱动器或其他可移动驱动器的形式存在,诸如通过机械和电气连接器可拆卸地连接到主机设备102的固态盘(ssd)。主机设备102可以是许多固定或便携式数据生成设备中的任何一个,诸如个人计算机、智能电话、个人数字助理(pda)、服务器、机顶盒等。更一般地,主机设备102可以包括执行智能电话、pda、膝上型电脑、服务器、机顶盒等的功能的主机逻辑。虽然没有具体示出,但是主机可以包括和/或与只读存储器(,rom)通信。

主机设备102可以更简洁地称为主机102,可以包括运行一个或多个应用程序106的一个或多个处理器104。当数据要存储在存储设备120中或从其中检索数据时,应用程序106通过一个或多个操作系统应用程序编程接口(api)108与文件系统110通信。文件系统110可以是在处理器104上执行的软件模块,并管理存储设备120中的文件。文件系统110管理逻辑地址空间中的数据簇。由文件系统110执行的通用操作包括创建、打开、写入(存储)数据、读取(检索)数据、搜索文件中的特定位置、移动、复制和删除文件的操作。文件系统110可以是电路、软件或电路和软件的组合。

文件系统110可以是独立的芯片或可由主机102的处理器104执行的软件。主机102上的存储设备驱动器112可以转换文件系统110的指令,以通过主机102与存储设备120之间的通信信道114进行传输。通过通信信道114进行通信的接口可以是许多已知接口中的任何一种,诸如sd、mmc、usb存储设备、sata、scsi和pciexpress接口。文件系统数据结构诸如文件分配表(fat)可以存储在存储设备120的存储器(例如,124或206)中。主机102可以利用文件系统数据结构来维护已由主机102分配给数据的所有逻辑块地址(lba)的逻辑地址范围。除了用于指代主机102与存储设备120之间的通信信道之外,参考数字114还可以用于指代通过通信信道114通信的主机接口信号。另外,参考数字114可以指代根据协议诸如在pciexpress传输之上操作的nvme或ahci从存储设备120读取和检索的主机存储器中的修改。主机设备102(也可以更简洁地称为主机102)使用文件系统110来寻址存储在存储设备120内的文件,这可以涉及将数据写入到存储设备120的非易失性存储器124中以及从其中读取数据。可以由主机102使用的示例性类型的文件系统包括但不限于fat32、exfat、ext2/3/4、hfs+和ntfs。

存储设备120包括经由信号123与非易失性存储器124通信的控制器122(其也可以称为存储器控制器122)。参考数字123还可以用于指代控制器122与非易失性存储器124之间的通信信道。注意,图1示出了非易失性存储器124的逻辑描绘。在一个实施方案中,可以使用一个或多个存储器管芯来实现非易失性存储器124。

非易失性存储器124可以存储管理表125和一个或多个活动日志126。如下面将进一步详细描述的,根据本技术的某些实施方案,非易失性存储器124可以存储多个潜在的主机活动模式128,并且对于每个潜在的主机活动模式,存储相关联的重定位方案。另选地,多个潜在的主机活动模式和相关联的重定位方案可以存储在存储设备120的只读存储器(例如,图3中的rom318)中。

在一个实施方案中,管理表125包括一个或多个l2p(逻辑到物理映射)表和一个或多个p2l(物理到逻辑映射)表。控制器122可以使用管理表125将逻辑块地址(lba)映射到物理块地址(pba)。此类的表125可以用于将lba直接映射到pba,或者lba可以映射到中间或虚拟块地址,这些地址映射到pba。其他变化也是可能的。在一些实施方案中,主机数据130存储在块中(例如,块0、块1、块2、…)。在一些示例实施方案中,非易失性存储器单元块是擦除单元。在一些实施方案中,块表示由通用位线和字线分组的多个存储器单元。通过通信信道114从主机102发送到存储设备120的指令或命令(诸如写入命令)可以包括逻辑块地址(lba)。相比之下,通过通信信道123发送的指令或命令可以包括物理块地址(pba)。

响应于从主机102接收写入命令,一个或多个活动日志126跟踪为主机102执行的写入操作。另外,响应于从主机102接收读取命令,活动日志126跟踪为主机102执行的读取操作。可以根据逻辑块地址(lba)和/或lba范围来指定活动日志126中的条目,并且优选地包括指定何时执行读取操作的定时信息(例如,时间戳)。如将在下面进一步详细描述的,根据本技术的某些实施方案,可以基于活动日志126来预测主机活动模式。预测的主机活动模式可以包括预测的写入模式。另外或另选地,预测的主机活动模式可以包括预测的读取模式。

仍然参见图1,非易失性存储器124包括被指定为中间存储(is)存储器的一部分,以及被指定为主存储(ms)存储器的另一部分。如图1所描绘,主机数据130可以存储在is存储器和ms存储器中。更具体地,当存储设备120从主机102接收写入命令时,响应于此的存储设备120可以将主机数据存储在被指定为is存储器132的非易失性存储器124的部分中,或者在被指定为ms存储器134的非易失性存储器124的部分中。存储器控制器122可以使用各种已知技术来确定是将数据存储在is存储器132中还是存储在ms存储器134中。另外,存在各种已知技术,存储器控制器122可以使用这些技术将数据从is存储器132重新定位(即,传送)到ms存储器134。下面另外详细描述的本技术的实施方案与存储器控制器122用于确定是否最初将数据存储在is存储器132中或ms存储器134中的任何特定技术无关。相反,下面另外详细描述的本技术的实施方案一般涉及用于将数据从is存储器132重新定位(即,传送)到ms存储器134的改进技术。

如图1所示,主机数据130存储在is存储器132和ms存储器134中。主机数据130的各个块(例如,块0、块1、块2、…)可以出于操作目的而划分为存储器单元的页面。例如,每个块的存储器单元可以划分成八页p0-p7。另选地,每个块内可以有16、32或多页的存储器单元。该页面是块内数据编程和读取的单元,包含一次编程或读取的最小数据量。然而,为了增加存储器系统操作并行性,两个或多个块内的这些页面可以逻辑地链接到元页面中。例如,元页面可以由来自四个块中的每个的一个物理页面形成(例如,元页面可以例如包括四个块中的每个块中的页面p2,但是元页面的页面不一定在每个块内具有相同的相对位置)。元页面可以是编程的最大单元。

仍然参见图1,is存储器132具有比ms存储器134更低的读写延迟。换句话讲,is存储器132可以以比ms存储器134可读写更快的速度读写。另外,is存储器132具有比ms存储器134更大的耐久性。例如,is存储器132的每个单元的预期寿命可以是20,000个编程/擦除(p/e)循环,而ms存储器134的每个单元的预期寿命可以是2,000个p/e循环,在这种情况下,is存储器132的单元的耐久性将是ms存储器134的单元的10倍。这只是一个示例,并不意味着包含所有。is存储器132还具有比ms134更低的存储密度和容量。更一般地,is存储器132的各个单元可以存储比ms存储器134的各个单元更少的主机数据位,并且用于存储主机数据130的非易失性存储器124的明显更小的部分可以被分配给is存储器132,而不是分配给ms存储器134。更一般地,更昂贵的is存储器132可能占存储设备120的总存储预算的不到百分之十,并且可能仅占总存储预算的百分之二或更少,这取决于存储设备120。is存储器132与ms存储器134的确切比率取决于特定产品,并且通常影响存储设备120的成本与性能和耐久性。

根据某些实施方案,is存储器132可以包括单级单元(slc)存储器,其中每个存储器单元存储一位数据,其也可以称为存储元件或区域。更一般地,可以操作slc存储器以存储两个可检测的电荷电平,以便存储一位,其可以具有两种可能状态之一:0或1。is存储器132可以另选地或另外地包括持久字节可寻址存储器的形式,包括reram、相变存储器或磁ram。相比之下,较便宜的ms存储器134可以包括多级单元(mlc)存储器,其中每个存储器单元存储两位或多位。如本文使用的术语,mlc存储器可以包括存储器单元,其中每个存储器单元存储两位、三位或四位数据,或者可能甚至多于四位数据。因此,如本文使用的术语,术语mlc存储器还包含三级单元(tlc)存储器和四级单元(qlc)存储器。例如,可以操作mlc存储器以存储四个可检测的电荷水平,其可以用于存储四个状态并且可以保留两位数据:00、01、10或11。再例如,在mlc存储器是tlc存储器的情况下,可以操作其以存储八个可检测的电荷电平,可用于存储八个状态并且可以保留三位数据:000、001、010、011、100、101、110或111。又例如,在mlc存储器是qlc存储器的情况下,可以操作其以存储十六个可检测的电荷电平,可用于存储十六个状态并且可以保留四位数据:0000、0001、0010、0011、0100、0101、0110、0111、1000、1001、1010、1011、1100、1101、1110或1111。is存储器132在本文中可以更简洁地称为is132。类似地,ms存储器134在本文中可以更简洁地称为ms134。

如上所述,在

背景技术:
中,is存储器132可以用于提供更快的写入吞吐量,并且还可以用作安全区域,以在将主机数据存储在ms存储器134中之前快速存储主机数据。is存储器132还可以充当非易失性存储器高速缓存,其使得能够非常快速地访问存储在is存储器132内的热数据。一般的概念是使用更昂贵的非易失性存储器,其具有较低的读写延迟、较大的耐久性、以及较低的存储密度和容量,如is存储器132,并且使用较便宜的非易失性存储器,其具有较高的读写延迟、较小的耐久性、以及较高的存储密度和容量,如ms存储器134。

如上所述,在背景技术中,将数据从is存储器132传送到ms存储器134的过程称为“重定位”。执行重定位以便清除is存储器132内的空间,从而在is存储器132内存在可用空间来存储输入的主机数据。根据某些实施方案,重定位作为后台过程执行而无需主机102的任何干预。优选地,当存储设备120空闲时执行重定位,或者更具体地,不响应从主机102接收的读写命令。在某些情况下,存储设备120可能在仍然需要时耗尽is存储器132,这可能降低写入吞吐量,并且通常是不期望的。然而,来自is存储器132的读取延迟也比来自ms存储器134的读取延迟短,因此避免重新定位写入后不久将使用的数据是有意义的,因为如果将其保持在is存储器132中,则其读取延迟将更低。

虽然is存储器132在性能和耐久性方面通常都很出色,但它太小而无法有效地缓存所有主机数据。用于执行重定位的常规技术通常基于简单的启发法,诸如先进先出(fifo),或基于老化算法。然而,用于执行重定位的传统技术(也可以称为传统的重定位方案)对于许多用例来说并不是最佳的,因为在用于流视频的存储设备中使用的最佳重定位方案与用于重复更新相同的相对较小的数据块的存储设备中使用的最佳重定位方案之间存在明显的区别。流视频示例是一个极端的用例,其中写入整个闪存驱动器,然后立即重写,重复数次。重复更新相同的相对较小的数据块是频谱另一端的另一个极端用例,其中可以一遍又一遍地写入相同的lba。在上述极端情况场景之间存在大的灰色区域。下面将更详细地解释的本技术的实施方案可以用于以与执行传统重定位时相比提供改进的读写性能的方式管理重定位。然而,在提供本技术的此类实施方案的进一步细节之前,将参考图2、图3和图4描述可用于实现本技术的实施方案的存储设备120的另外的示例性细节。

图2是可用于实现本文描述的技术的控制器122的硬件架构的一个示例实施方案的框图。控制器122包括与主机接口202和存储器接口204通信的一个或多个处理器200。主机接口202经由主机接口信号114与主机设备102通信。在一个实施方案中,主机接口202是多媒体卡(mmc)接口。在另一实施方案中,主机接口202是通用闪存存储(ufs)接口。存储器接口204经由信号123与非易失性存储器124通信,并且可以是包括切换模式200、400或800的任何合适的接口。处理器200还与随机存取存储器(ram)206通信,ram是用于控制器122的本地易失性存储器,因此也可以称为控制器ram206。ram206可以是任何类型的易失性存储器(例如,dram、sram等)。在一个实施方案中,ram206存储编程处理器200以执行下面描述的用于管理存储设备120的功能的代码(软件和/或固件),包括选择和执行重定位方案。在另一实施方案中,一个或多个处理器200包括具有或不具有软件的定制硬件(fpga、asics等),以执行下面描述的用于管理存储设备120的功能,包括选择和执行重定位方案。

存储设备120可以包括用于存储器管理的功能。在操作中,处理器200可以执行存储器管理指令(其可以驻留在指令中)以用于存储器管理功能的操作。存储器管理功能可以控制存储设备120内的存储器的一个或多个部分的分配,诸如控制器ram206。例如,存储器管理功能可以将控制器ram206的一部分分配给数据高速缓存。存储器管理功能还可以指定非易失性存储器124的哪个部分是is存储器132以及哪个部分是ms存储器134。存储器管理功能中的一个、一些或全部可以由存储设备120内的一个或单独元件执行。控制器ram206的一部分可以用于高速缓存管理表125或其部分的副本,以使控制器122能够比控制器122总是访问存储在非易失性存储器中的管理表125所需的速度快得多地执行逻辑到物理(ltp)和物理到逻辑(ptl)地址转换。例如,控制器ram206可以包括可以存储用于ltp转换的一个或多个表(或其部分)的ltp高速缓存,以及可以存储用于ptl转换的一个或多个表(或其部分)的ptl高速缓存。控制器ram206还可以用于高速缓存存储在非易失性存储器124中的其他信息,以便通过控制器122,更具体地,通过其处理器200提供对此类信息的快速访问。例如,控制器ram206可以包括活动日志高速缓存226,其可以存储活动日志126(或其部分)的副本,以及可以存储潜在的主机活动模式的活动模式和重定位方案高速缓存228,以及用于执行从is存储器132到ms存储器134的重定位的相关重定位方案128(或其部分)。

图3是存储设备120的一个示例性实施方案的框图。然而,图3中描绘的架构还可用于实现其他类型的非易失性存储设备。图3描绘了存储设备120,其包括连接到一个或多个非易失性存储器管芯308(其包括图1中描绘的非易失性存储器124)的控制器122。图3提供了控制器122的一些软件组件的细节,这将在下面更详细地讨论。取决于用于实现is存储器132的技术,is存储器可以在与ms存储器134不同的非易失性存储器管芯308中,或者相同的非易失性存储器管芯308可以包括一些is存储器132和一些ms存储器134。

如本文所使用的,对于使用非易失性存储器的系统,控制器122是管理存储在非易失性存储器中并与主机通信的数据的设备。除了本文描述的特定功能之外,控制器122还可以具有各种功能。例如,控制器122可以格式化非易失性存储器,以确保存储器正常运行、映射出坏的存储器单元(存储的物理单元)、并分配备用存储器单元以替换未来的故障单元。备用存储器单元的一些部分可用于保持固件以操作控制器并实现其他功能。该固件也可以在操作期间读入本地易失性存储器。当主机需要从非易失性存储器读取数据或将数据写入非易失性存储器时,它将与控制器122通信。如果主机提供待读取/写入数据的逻辑地址,则控制器122将从主机接收的逻辑地址转换为物理闪存存储器中的物理地址。控制器122还可以执行各种存储器管理功能,诸如但不限于耗损均衡(在存储器管芯或存储器块之间分配写入操作,以避免磨损否则将被重复写入的特定存储器块)和碎片帐集(在块已满之后,仅将有效的数据页移动到新块,因此可以擦除并重用完整块)。

控制器122与非易失性存储器管芯308之间的接口可以是任何合适的闪存接口,诸如切换模式200、400或800,或任何其他通信接口,诸如pciexpress。在一些实施方案中,存储设备120包括控制器122与非易失性存储器管芯308之间的单个通道;然而,本文描述的主题不限于具有单个存储器通道。例如,在一些存储器系统架构中,取决于控制器能力,在控制器122与存储器管芯308之间可存在两个、四个、八个或更多个通道。在本文描述的任何实施方案中,即使在附图中示出了单个通道,在控制器122与存储器管芯308之间可以存在多于单个通道。

如图3所描绘,控制器122包括与主机接口的前端模块312、与一个或多个非易失性存储器管芯308接口的后端模块310、以及执行现在将描述的功能的各种其他模块。

图3中描绘的控制器122的组件可以采用被设计用于与其他组件一起使用的封装功能硬件单元(例如,电子电路)的形式,可由一个或多个处理器执行的程序代码(例如,软件或固件)或通常执行相关功能的特定功能的处理电路,或与较大系统接口的独立硬件或软件组件。例如,每个模块可以包括专用集成电路(asic)、现场可编程门阵列(fpga)、电路、数字逻辑电路、模拟电路、分立电路的组合、栅极、或硬件的任何其他类型、或其组合。另选地或另外地,每个模块可以包括存储在处理器可读设备(例如,本地易失性存储器)中的软件,以对处理器进行编程以执行本文描述的功能。

存储设备120包括随机存取存储器(ram)206(与上面参考图2所讨论的相同的本地易失性存储器)和只读存储器(rom)318。再次参见控制器122的模块,缓冲区管理器/总线控制314管理ram206并控制控制器122的内部总线仲裁。rom318存储控制器的启动代码。尽管在图3中示出为与控制器122分开定位(但是连接到控制器122),但是在其他实施方案中,ram216和rom318中的一个或两个可以位于控制器内。在其他实施方案中,ram和rom的部分可以位于控制器内和控制器外部。此外,在一些实施方案中,控制器122、ram206和rom318可位于分离的半导体管芯上。在某些实施方案中,代替在非易失性存储器124中存储潜在的主机活动模式和关联重定位方案,可以将潜在的主机活动模式和关联重定位方案存储在rom318中。

前端模块312包括主机接口202(在图2的讨论中介绍)和物理层接口(phy)322,其提供与主机或下一级存储控制器的电接口。主机接口202的类型的选择可取决于所使用的存储器的类型。主机接口202的示例性类型包括但不限于sata、sataexpress、sas、光纤通道、usb、pcie、mmc、ufs和nvme。主机接口202通常便于传输数据、控制信号和定时信号。在一个实施方案中,前端模块312提供适于与外部计算设备(例如,主机)通信的单个通信接口,用于控制器122和存储设备120的存储器管芯308。

后端模块310包括纠错码(ecc)引擎324,其对从主机接收的数据字节进行编码,并对从非易失性存储器管芯308读取的数据字节进行解码和纠错。ecc引擎324可以包括用于接收数据并生成表示数据编码的一个或多个码字的电路。例如,ecc引擎324可以被配置为利用里德-所罗门编码、bch码、低密度奇偶校验(ldpc)码、一个或多个其他错误检测和校正码、或其任何组合。命令定序器326产生命令序列,诸如编程和擦除命令序列,以发送到非易失性存储器管芯308。raid(独立管芯的冗余阵列)模块328管理raid奇偶校验的生成和故障数据的恢复。raid奇偶校验可以用作对写入非易失性存储器124的数据的附加级别的完整性保护。在一些情况下,raid模块328可以是ecc引擎324的一部分。注意,raid奇偶校验可以作为额外的管芯或管芯添加,但是它也可以在现有管芯内添加,例如作为额外的平面、或额外的块、或块内的额外wl。存储器接口204(在图2的讨论中介绍)将命令序列提供给非易失性存储器管芯308并从非易失性存储器管芯308接收状态信息。在一个实施方案中,存储器接口204可以是双倍数据速率(ddr)接口,诸如切换模式200、400或800接口。闪存控制层332控制后端模块310的整体操作。

在将数据写入存储器(诸如,进入is存储器132)的过程期间,可以用额外位(“奇偶校验位”)对数据进行编码以形成码字。在存在噪声的情况下,表示码字的一些位可能会改变,从而破坏原始码字的错误。当从存储器读取码字时,可以使用解码器来识别和纠正使用纠错编码(ecc)的错误。例如,bose-chaudhuri-hocquenghem(bch)ecc方案用于位错误往往不相关的应用中。可以在具有或不具有ecc控制的情况下将数据从is存储器132重新定位到ms存储器134。当数据被写入is存储器132时,可能会将错误引入码字。如果包括错误的码字从is存储器132重新定位到ms存储器134,而不是首先解码它并校正错误,如在芯片上复制(occ)操作期间可能做的那样,该错误可能变成困难的错误(mlc型闪存存储器使用错误的电压编程),这可能会影响吞吐量和耐久性。为了降低ms存储器134中的硬错误的概率和扩展,在用奇偶校验位重新编码并重新定位(即,传送)到ms存储器134之前,可以对从is存储器132重新定位的数据进行解码和纠错。例如,存储器控制器122可以执行数据的此类解码、纠错和重新编码,该过程可以称为通过控制器的复制(ctc)。虽然使用ctc可以减少硬错误,但它会增加重定位延迟。

图3中示出的存储设备120的附加组件包括闪存转换层(ftl)或媒体管理层(mml)338,其执行非易失性存储器管芯308的存储器单元的损耗均衡。存储设备120还包括其他分立组件340,诸如外部电接口(例如,作为主机接口和存储器接口的一部分)、外部ram、电阻器、电容器或可以与控制器122接口的其他组件。在另选实施方案中,物理层接口322、raid模块328、介质管理层338和缓冲区管理/总线控制器314中的一者或多者是控制器122中不必要的任选组件。

可以集成闪存转换层(ftl)或媒体管理层(mml)338作为可以处理错误并与主机接口的闪存管理的一部分。特别地,ftl338负责非易失性存储器管理的内部。特别地,ftl338可以包括存储器设备固件中的算法,该算法将来自主机的写入转换为写入存储器管芯308的存储器。可能需要ftl338,因为:1)存储器可能具有有限的耐久性;2)存储器只能以多页写入;并且/或者3)除非将存储器擦除为块,否则不能写入存储器。ftl338理解存储器的这些潜在限制,这些限制可能对主机不可见。因此,ftl338尝试将写入从主机转换为写入非易失性存储器124,该非易失性存储器可以是闪存存储器。ftl338还管理用于在主机的逻辑地址与存储器管芯308上的物理地址之间进行映射的过程。这可以包括在编程、擦除和执行移动命令期间更新l2p表和p2l表。

ftl338示出为包括中间存储(is)管理控制器334,其也可以被称为is管理器334。is管理器334可以从存储在非易失性存储器124(例如,在活动模式和重定位方案128中)、存储在rom318中、和/或存储在控制器ram206(例如,在活动模式和重定位方案高速缓存228中)中的多个可能的重定位方案中选择。如下面将进一步详细描述的,is管理器334可以基于预测的主机活动模式选择重定位方案,并且可以执行(或促使执行)选定的重定位方案。is管理器334可以基于存储在非易失性存储器124和/或存储在控制器ram206中的活动日志高速缓存226中的活动日志126来预测活动模式。如下面将进一步详细描述的,根据本技术的某些实施方案,is管理器334可以确定何时应该改变重定位方案。另外,根据本技术的某些实施方案,is管理器334可以识别新的或其他的潜在的主机活动模式并生成相关联的重定位方案,以添加到存储的潜在的主机活动模式和重定位方案128,之后新的重定位方案可供is管理器334选择和执行。另选地,is管理控制器334或其一部分可以包括在后端模块310内。例如,后端模块310可以使用ftl338的逻辑来执行关系方案。is管理控制器334的一部分也可以由前端模块312实现,更具体地,由(前端模块312的)主机接口202实现,其记录一个或多个活动日志126。更一般地,根据某些实施方案,is管理器334由存储器控制器122实现。

根据某些实施方案,使用专用硬件电路来执行重定位,例如,其可以是图3中表示的其他分立组件340中的一个。此类实施方案的好处是可以执行重定位而不需要为了执行重定位而停止存储器控制器122的工作过程。这将允许合理的重定位延迟和ms存储器134中的较低错误计数。这样,可以使用相对高速率的ecc(较低的奇偶校验)将数据存储在is存储器132中,然后可以用较低的码率(较多的奇偶校验)对数据进行解码和重新编码,以便在ms存储器134中进行长期存储。

图4是示例存储器管芯308的功能框图。图4中描绘的组件是电子电路。在一个实施方案中,存储器管芯308包括非易失性存储器单元的单片三维存储器结构426、控制电路410和读/写电路428。在其他实施方案中,可以使用二维存储器单元阵列。存储器结构426可经由行解码器424通过字线寻址,并通过列解码器432通过位线寻址。读/写电路428包括多个感测块450,其包括sb1、sb2、…、sbp(感测电路)并允许并行读取或编程一页存储器单元。命令和数据经由信号线123在控制器122与存储器管芯308之间传输。在一个实施方案中,存储器管芯308包括连接到信号线123的一组输入和/或输出(i/o)引脚。

存储器结构426的一个实施方案包括单片三维存储器结构,其中多个存储器级形成在单个基底(诸如晶片)上方(而不是在其中),没有中间基底。存储器结构426可以包括任何类型的非易失性存储器,其单片地形成在存储器单元阵列的一个或多个物理层中,该存储器单元具有设置在硅基底上方的有源区。在一个实施方案中,存储器结构426实现三维nand闪存存储器。三维nand闪存存储器的一个示例可以在美国专利no.9,548,130中找到,该专利的全部内容通过引用的方式并入本文。其他实施方案包括二维nand闪存存储器、二维nor闪存存储器、reram交叉点存储器、磁阻存储器(例如,mram)、相变存储器(例如,pcram)等。

控制电路410与读/写电路428协作以在存储器结构426上执行存储器操作(例如,擦除、编程、读取等),并且包括状态机412、芯片上地址解码器414、以及功率控制模块416。状态机412提供存储器操作的管芯级控制。在一个实施方案中,状态机412可由软件编程。在其他实施方案中,状态机412不使用软件并且完全以硬件(例如,电子电路)实现。在一个实施方案中,控制电路410包括寄存器、rom熔丝和其他存储设备,用于存储默认值诸如基准电压和其他参数。芯片上地址解码器414提供主机102或控制器122使用的地址与解码器424和432使用的硬件地址之间的地址接口。功率控制模块416控制在存储器操作期间提供给字线和位线的功率和电压。它可以包括字线、选择晶体管、源极线和其他组件的驱动器。功率控制模块416可以包括用于产生电压的电荷泵。感测块450包括位线驱动器。

控制电路410、状态机412、解码器414/424/432、功率控制模块416、感测块450、读/写电路428和控制器122中的任何一者或任何组合可以被认为是一个或多个执行本文描述功能的控制电路。

存储器结构426中的多个存储器元件可以被配置为使得它们串联连接或使得每个元件可单独访问。作为非限制性示例,nand配置(nand闪存存储器)中的闪存存储器设备通常包含串联连接的存储器元件。nand串是可以在存储器结构426内使用的一组串联连接的存储器单元和选择栅极晶体管的示例。nand闪存存储器阵列可以被配置为使得阵列由多个nand串组成,其中nand串由公用单个位线并作为一组访问的多个存储器单元组成。另选地,可以配置存储器元件,使得每个元件可单独访问,例如nor存储器阵列。nand和nor存储器配置是示例性的,并且可以以其他方式配置存储器单元。

存储器单元可以以有序阵列布置在单个存储器设备级中,诸如以多个行和/或列布置。然而,存储器元件可以以非规则或非正交配置排列,或者以不被视为阵列的结构排列。

在一个实施方案中,布置三维存储器阵列,使得存储器单元占据多个平面或多个存储器设备级,从而形成三维结构(即,在x、y和z方向上,其中z方向基本垂直,并且x和y方向基本上平行于基底的主表面)。作为非限制性示例,三维存储器结构可以垂直布置为多个二维存储器设备级的堆叠。作为另一个非限制性示例,三维存储器阵列可以被布置为多个垂直列(例如,基本上垂直于基底的主表面延伸的列,即在y方向上),每列具有多个存储器单元。垂直列可以以二维配置布置,例如,在xy平面中,从而导致存储器单元的三维布置,其中存储器单元处于多个垂直堆叠的存储器平面上。三维存储器元件的其他配置也可以构成三维存储器阵列。

作为非限制性示例,在三维nand存储器阵列中,存储器元件可以联接在一起以形成穿过多个水平存储器设备级的垂直nand串。可以设想其他三维配置,其中一些nand串包含单个存储器级中的存储器元件,而其他串包含跨越多个存储器级的存储器元件。一个示例存储器系统是三维存储器结构,其包括具有电荷俘获材料的垂直nand串。三维存储器阵列也可以以nor配置设计。

存储器结构426也可以是reram交叉点存储器。reram交叉点存储器的一个示例包括可逆电阻开关元件,其布置在由x线和y线(例如,字线和位线)访问的交叉点阵列中。在另一个实施方案中,存储器单元可以包括导电桥存储器元件。导电桥存储器元件也可以称为可编程金属化单元。基于固体电解质内的离子的物理重新定位,导电桥存储器元件可以用作状态改变元件。在一些情况下,导电桥存储器元件可以包括两个固体金属电极,一个是相对惰性的(例如,钨),另一个是电化学活性的(例如,银或铜),在两个电极之间具有固体电解质的薄膜。随着温度升高,离子的迁移率也增加,从而导致导电桥存储器单元的编程阈值降低。因此,导电桥存储器元件可以在整个温度范围内具有宽范围的编程阈值。

存储器结构426也可以是磁阻存储器(mram),其通过磁存储元件存储数据。在一个示例中,这些元件由两个铁磁板形成,每个铁磁板可以保持磁化,由薄绝缘层隔开。两个板中的一个是设置为特定极性的永磁体;可以改变另一个板的磁化强度以匹配外部磁场的磁化强度来存储存储器。存储器设备由此类存储器单元的网格构建。在用于编程的一个实施方案中,每个存储器单元位于彼此成直角、与该单元平行、一个在单元上方、一个在单元下方的一对写入线之间布置。当电流通过它们时,产生感应磁场。

存储器结构426也可以是相变存储器(pcram),其利用硫属化物玻璃的独特行为。一个实施方案使用gete-sb2te3超晶格通过简单地利用激光脉冲(或来自另一个源的光脉冲)改变锗原子的配位状态来实现非热相变。因此,编程的剂量是激光脉冲。可以通过阻止存储器单元接收光来抑制存储器单元。注意,在本文档中使用“脉冲”不需要矩形脉冲,但包括(连续或非连续)振动或声音、电流、电压光或其他波形的爆发。存储器结构426包括许多存储器单元块。本领域普通技术人员将认识到,本文描述的技术不限于单个特定存储器结构,而是涵盖在本文描述技术的实质和范围内的许多相关存储器结构,并且

如上所述,本技术的某些实施方案涉及用于将数据从is存储器(例如,132)重新定位(即,传送)到存储设备(例如,120)的非易失性存储器(例如,124)的ms存储器(例如,134)的改进技术。图5的高级流程图将用于描述某些此类技术。更具体地,图5的高级流程图将用于概述执行is存储器的适应性管理的方法。此类方法可以由存储设备(例如,120)使用,该存储设备从主机(例如,102)接收读写命令并且包括与非易失性存储器(124)和主机(102)通信的非易失性存储器(例如,124)和存储器控制器(例如,122),其中非易失性存储器(例如,124)包括被指定为is存储器(例如,132)的存储器的一部分和被指定为ms存储器(例如,134)的另一部分,其中与ms存储器相比,is存储器具有较低的读写延迟、较大的耐久性、以及较低的存储密度和容量。

参见图5,步骤502涉及存储多个重定位方案,每个重定位方案与多个潜在的主机活动模式中的一个相关联。可以包括潜在的读写模式的潜在的主机活动模式可以通过分析来自众多不同存储设备的活动日志来确定,这些存储设备用于存储由许多不同类型的用户操作的主机的数据。例如,如果主机是单处理器低性能笔记本电脑,并且用户是主流电影并在互联网上搜索的学生,那么潜在的主机活动模式看起来会非常不同,其中主机是高性能多处理器计算机,用于执行模拟和/或计算机建模,用户是工程师。潜在的主机活动模式可以包括通过分析许多不同的活动日志而识别的最常见的预期活动模式的一些数量(例如,100、500或1000,但不限于此)。与每个潜在的主机活动模式相关联的是重定位方案,其优选地针对特定主机活动模式进行优化。重定位方案与潜在的主机活动模式之间可以存在一对一的对应关系。换句话讲,对于存储的每个潜在的主机活动模式,可以存储唯一的重定位方案。另选地,可能有一个以上的潜在的主机活动模式可以与重定位方案中的同一个相关联。例如,可能存储1000个潜在的主机活动模式,但是仅存储800个重定位方案,使得某些潜在的主机活动模式共享相同的重定位方案。

在某些实施方案中,可以通过优化成本函数来确定潜在的主机活动模式的优选重定位方案。示例性成本函数可以尝试最小化或以其他方式考虑与从is存储器读取数据、将数据从is存储器传送(即,重新定位)到ms存储器以及从ms存储器读取数据相关联的成本,但不限于此。成本可以是延迟和/或功耗。这只是可用于确定潜在的主机活动模式的重定位方案的成本函数的仅一个示例,其并非旨在包含所有。不同的重定位方案可以具有不同的重定位属性,诸如但不限于不同的定时和长度属性。定时属性可以指定重定位何时发生的频率,或更一般地,时间细节。长度属性可以指定,例如,要从is存储器重新定位到ms存储器的数据块的长度。

简要地回顾图1,多个潜在的主机活动模式和相关联重定位方案128被示为存储在非易失性存储器124中,并且更具体地,可以存储在ms存储器134中。多个潜在的主机活动模式和相关联的重定位方案可以另选地存储在图3所示的rom318中。另外,如图2所示,为了提供对多个潜在的主机活动模式和相关联重定位方案的更快和更高功率的访问,可以将多个潜在的主机活动模式和相关联重定位方案(或其部分)的副本存储在ram206中的高速缓存228中,该高速缓存包括在存储器控制器122内和/或可由该存储器控制器访问。在存储设备120的一次性初始配置期间,例如在存储设备120已经制造但尚未分发出售之后,可以识别初始多个潜在的主机活动模式和相关联的重定位方案128并将其存储在存储设备120中。每次存储设备120通电或重置时,可以将潜在的主机活动模式和相关联的重定位方案128或其部分复制到高速缓存228。如下面将描述的,根据某些实施方案或本技术,可以在已经分发存储设备120并且正用于为用户存储主机数据之后添加附加的潜在的主机活动模式和相关联的重定位方案。

再次参见图5,步骤504涉及维护一个或多个活动日志,该活动日志跟踪与存储在存储设备120的非易失性存储器124中的数据有关的操作。此类活动日志可以跟踪用于将数据写入is存储器132的写入操作、用于将数据写入ms存储器134的写入操作、用于从is存储器132读取数据的读取操作、以及用于从ms存储器134读取数据的读取操作,但不限于此。简要地回顾图1,一个或多个活动日志126可以存储在非易失性存储器124中。另外,如图2所示,为了提供对活动日志126的更快和更高功率的访问,活动日志126(或其部分)的副本可以存储在ram206中的高速缓存226中,该高速缓存包括在存储器控制器122内和/或可由其访问。可以根据逻辑块地址(lba)和/或lba范围指定活动日志126中的条目,并且优选地包括指定何时执行读写操作的定时信息(例如,时间戳)。这样,可以跟踪读写操作的相对定时,包括此类操作之间的时间间隙。

再次参见图5,步骤506涉及响应于从主机(例如,102)接收一个或多个写入命令,从而将数据(例如,主机数据)存储在存储设备(例如,120)的is存储器(例如,132)中。存储器控制器(例如,122)可以使用任何一个或多个各种已知或未来开发的技术来确定何时将数据存储在is存储器132中。例如,对于某些存储设备120,数据可以总是存储在存储设备的is存储器132中,之后根据重定位方案在稍后的时间重新定位到ms存储器134。对于其他存储设备120,其存储器控制器122可以确定在某些情况下数据应该直接写入ms存储器134而不首先存储在is存储器132中。其他变化也是可能的并且在本文描述的实施方案的范围内。根据一个实施方案,每当数据被存储到is存储器132时,活动日志被更新,或者更具体地,一个或多个相应的条目被添加到活动日志。因此,即使在图5中的步骤506之前示出了步骤504,步骤504的各方面也可以与步骤506的各方面同时或在其后不久发生。每当发生读写操作时,活动日志通常可以更新。

仍然参见图5,步骤508涉及基于活动日志预测主机活动模式。可以根据lba和/或lba范围指定预测的主机活动模式,并且还可以根据时间信息指定预测的主机活动模式。预测的主机活动模式可以是预测的写入模式。另外地或另选地,预测的主机活动模式可以是预测的读取模式。更一般地,预测的主机活动模式可以是针对主机102执行的写入和/或读取操作的预测模式,其将数据写入存储设备120并从其中读取数据。步骤508可以由存储器控制器122执行,或者更具体地,由其is管理器334执行。步骤508还可以由专用于预测主机活动模式的电路或一些其他分立组件(例如,340)执行,并且还可能专用于选择和/或执行重定位方案。活动日志126可以存储在非易失性存储器126中,并且活动日志或其部分可以在ram的活动日志高速缓存226中兑现,如上所述。

可以通过从活动日志识别重复模式并预测模式将继续重复来执行步骤508。对于第一个示例,活动日志可以指定将数据写入特定范围的lba,然后在被删除之前读取三十次,然后将该活动重复100次。此类活动日志的示例内容如图9所示。基于活动日志,可以在步骤508预测将继续重复该相同的活动模式。换句话讲,预测的主机活动模式的第一示例可以重复将数据写入特定范围的lba,然后从特定范围的lba读取数据三十次,然后从特定范围的lba中删除数据。

对于第二个示例,活动日志可以指定:将数据写入lba0至lba99,然后从lba3和lba5读取数据;然后在中断数据被写入lba100至lba199之后,从lba103和lba105读取数据;然后在中断数据写入lba200至299之后,然后从lba203和lba205读取数据;然后在中断数据写入lba300至399之后,然后从lba303和lba305读取数据;然后在中断数据写入lba400至499之后,然后从lba403和lba405读取数据;然后在中断数据写入lba500至599之后,然后从lba503和lba505读取数据。此类活动日志的示例内容如图10所示。基于活动日志,可以预测数据接下来将被写入lba600至699,然后从lba603和605读取,或者更一般地,第二示例性预测主机活动模式可以是向lban*100至(n*100)+99写入数据,以及从lba(n*100)+3和(n*100)+5读取数据,其中n是递增的整数。这些仅是几个示例,并非包含所有。

返回图5的流程图,步骤510涉及多个存储的重定位方案中的选定的一个,以应用于存储在is存储器中的数据。基于在步骤508处预测的主机活动模式来执行步骤510处的选择。下面参考图7a和图7b描述如何在步骤508处选择多个存储的重定位方案中的一个,以应用于存储在is存储器中的数据的示例性细节。

接下来,在步骤512处,执行选定的重定位方案,从而选择性地将存储在is存储器(例如,132)中的数据的一个或多个部分重新定位(即,传送)到ms存储器(例如,134)。重新参见上面的第一个示例(其中预测的主机活动模式指定数据被写入特定范围的lba,然后在被删除之前读取三十次,然后该活动重复100次),然后在步骤510处选择重定位方案,并且在步骤512处执行可以导致保持被写入、重复读取然后删除的数据仅被存储在is存储器中(没有被重新定位到ms存储器中),并且可能导致所有其他数据已存储在is存储器中以移动到ms存储器。

现在回到第二个示例,其中预测的主机活动模式是将数据写入lban*100至(n*100)+99,从lba(n*100)+3和(n*100)+5读取数据,然后删除数据。假设数据总是最初存储在is存储器(例如,132)中,则在步骤510处选择并在步骤512处执行的重定位方案可以导致100个lba值的数据保持在is存储器中足够的时间,以允许读取两个lba(即,lba(n*100)+3和(n*100)+5),然后将所有100个lba重新定位到ms存储器(例如,134)。图11的高级流程图示出了根据实施方案的在步骤510处被选择之后如何在步骤512处执行此类重定位方案的一些附加细节。参见图11,在步骤1102处,响应于接收到以lban*100至lba((n*100)+99)存储数据的写入命令,将lba映射到对应于is存储器132的物理块地址(pba),并且相应地更新管理表125内的ltp映射。如步骤1104所示,数据保持存储在is存储器132中足够的时间,以允许从lba((n*100)+3)和lba((n*100)+5)中读取数据的部分,lba被映射到is存储器132中的pba。然后,在从lba((n*100)+3)和lba((n*100)+5)以及更一般地从is存储器132读取数据的部分之后,将数据重新定位到ms存储器134(根据在步骤510处基于预测的主机活动模式选择的重定位方案),并且相应地更新管理表125内的ltp映射。

可以在步骤510处选择并且在步骤512处执行的另选重定位方案可以仅导致将被读取的两个lba(即,lba(n*100)+3和(n*100)+5)保持在is存储器(例如,132)中足够的时间,以使得能够读取数据的该部分,而其余数据基本上立即重新定位到ms存储器(例如,134),然后在对于is存储器读取两个lba之后(即,lba(n*100)+3和(n*100)+5),它们也被重新定位到ms存储器。这些只是几个示例,并不意味着包含所有。

图12的高级流程图示出了根据实施方案的在步骤510处被选择之后如何在步骤512处执行此类另选重定位方案的一些附加细节。参见图12,在步骤1202处,响应于接收到以lban*100至lba((n*100)+99)存储数据的写入命令,将lba映射到对应于is存储器132的物理块地址(pba),并且相应地更新管理表125内的ltp映射。如步骤1204所示,数据保持存储在is存储器132中足够的时间,以允许从lba((n*100)+3)和lba((n*100)+5)中读取数据的部分,lba被映射到is存储器132中的pba。如步骤1206所示,在等待从is存储器中读取数据的部分(对应于lba((n*100)+3)和lba((n*100)+5))时,其他部分lba范围(从lban*100至lba((n*100)+99))内的数据从is存储器132重新定位到ms存储器134(根据基于预测的主机活动模式选择的重定位方案),并且相应地更新管理表125。然后,在从is存储器132读取了数据的部分(对应于lba((n*100)+3)和lba((n*100)+5)之后,数据的那些部分从is存储器132重新定位到ms存储器134(根据基于预测的主机活动模式选择的重定位方案),并且相应地更新管理表以将lba映射到ms存储器134中的pba。通常参考图11描述的重定位方案或者通常参考图12描述的重定位方案是否与特定预测主机活动模式相关联(并且因此在步骤510选择的)可以取决于用于生成重定位方案的成本函数、以及与向is存储器132和ms存储器134读写数据有关的各种操作相关的成本(例如,延迟和功耗成本)、以及与将数据从is存储器132重新定位到ms存储器134相关联的成本,但不限于此。

现在参见图6,根据本技术的某些实施方案,有时(例如,周期性地,或基于某些周期性或非周期性触发事件),在步骤614处确定是否应将另一个重定位方案应用于存储在is中的数据。如步骤616所示,响应于确定应该将另一个重定位方案应用于存储在is存储器中的数据,选择多个存储的重定位方案中的另一个以应用于存储在is存储器中的数据。然后,在步骤618处,执行选定的另外一个重定位方案,从而根据选定的另外一个重定位方案,选择性地将数据的一个或多个部分从is存储器重新定位到ms存储器。根据某些实施方案,通过基于活动日志(每当执行写入和读取操作时向其添加条目)确定预测的主机活动是否已经改变来执行步骤614,以及如果它已经改变是否应该选择不同的重定位方案(基于新的或改变的预测主机活动)然后执行该步骤。预测的主机活动可以改变主机用户改变其行为的位置,例如,通过从使用主机切换到流视频到使用主机来执行模拟。

参考图6描述的步骤614、616和618可以在参考图5描述的步骤508、510和512之后发生。根据某些实施方案,步骤614、616和618实际上可以分别是步骤508、510和512的其他实例。更具体地,重新参见图5,在执行步骤512之后,可以执行步骤508的另一个实例,并且如果预测的主机活动模式已经改变(即,如果存在新的预测的主机活动模式),则可以在步骤510的另一个实例处选择另一个重定位方案,并在步骤512的另一个实例处执行。此类返回步骤508由虚线箭头线513表示。此外,如上所述,在执行附加的写入和/或读取操作时,可以连续更新在步骤504处存储的活动日志,并且在步骤506处存储在is存储器中的数据可以响应于从主机接收的写入命令以及基于在步骤512的实例中存储在is存储器中的数据被重新定位到ms存储器的部分而连续地改变。

现在将使用图7a来描述根据本技术的实施方案的步骤510的附加细节。更具体地,图7a将用于描述如何基于预测的主机活动模式来选择存储的重定位方案中的一个。参见图7a,在步骤702处,将预测的主机活动模式与存储的潜在的主机活动模式中的一个进行比较,从而生成指示预测的主机活动模式与潜在的主机活动模式中的一个之间的相似性水平的匹配分数。从步骤704和步骤702处可以理解,重复此类比较,直到为每个存储的潜在的主机活动模式确定匹配分数,然后,在步骤706处,选择与具有最高匹配分数的潜在的主机活动模式相关联的重定位方案。

现在将使用图7b来描述根据本技术的另一实施方案的步骤510的附加细节。参见7b,在步骤702(与图7a中的步骤702相同)处,将预测的主机活动模式与存储的潜在的主机活动模式中的一个进行比较,从而产生指定的匹配分数,该分数指示预测的主机活动模式与潜在的主机活动模式中的一个之间的相似性水平。接下来,在步骤703处,确定匹配分数是否超过匹配阈值。如果匹配分数超过匹配阈值,则在步骤705处选择与具有超过阈值的匹配分数的潜在的主机活动模式相关联的存储的重定位方案。如果匹配分数没有超过匹配阈值,则从步骤704和步骤702处可以理解,重复此类比较,直到潜在的主机活动模式中的任一个具有超过匹配阈值的匹配分数并且在步骤705处选择,或者直到所有潜在的主机活动模式已经与预测的主机活动模式进行比较,并且如果没有匹配的分数超过匹配的阈值,则在步骤706处选择具有最高匹配分数的潜在的主机活动模式。在参见图7b描述的实施方案中,选择与被确定为具有超过指定匹配阈值的匹配分数的第一潜在的主机活动模式相关联的重定位方案。更一般地,根据某些实施方案,可以选择与被确定为具有超过指定匹配阈值的匹配分数的潜在的主机活动模式中的任何一个相关联的重定位方案。另选地或另外地,可以选择与被确定为具有最高匹配分数的潜在的主机活动模式相关联的重定位方案。其他变化也是可能的,同时仍然在本文描述的实施方案的范围内。换句话讲,重新参见图5,在步骤510处,基于比较结果选择的多个存储的重定位方案中的一个可以涉及选择与具有最高匹配分数的潜在的主机活动模式中的一个相关联的多个存储的重定位方案中的一个,或者选择与存储的潜在的主机活动模式相关联的多个存储的重定位方案中的任何一个,其匹配分数超过指定的匹配阈值。

现在参见图8,根据本技术的某些实施方案,有时可以用于向非易失性存储器写入数据和/或从非易失性存储器读取数据的一个或多个其他潜在的主机活动模式可以在步骤802处基于活动日志识别,如上所述,活动日志不断更新。仍然参见图8,在步骤804处,可以为所识别的其他潜在的主机活动模式中的每个生成其他重定位方案,并且在步骤806处,将另外的重定位方案与相关联的其他潜在的主机活动模式一起存储。在生成和存储之后,其他的重定位方案此后可供is管理器334选择和执行。如上面参见图5的流程图所描述的,在存储设备120的一次性初始配置期间,例如,在制造存储设备120之后但在存储设备120尚未分发出售之前,可以在存储设备120中识别并存储在步骤502存储的初始多个潜在的主机活动模式(和相关联的重定位方案)。相比之下,在存储设备120已经被主机设备102用于向存储设备120的非易失性存储器124写入数据和从其中读取数据之后,执行步骤802、804和806。

根据某些实施方案,当预测的主机活动模式与存储的潜在的主机活动模式之间的比较不产生超过指定匹配阈值的任何匹配分数时,存储器控制器122或其is管理器334可以确定识别其他潜在的主机活动模式是适当的。这将提供可能的指示,即没有存储的重定位方案基本上针对存储在is存储器中的数据进行优化。另选地或另外地,响应于某种其他类型的触发,可以周期性地或非周期性地识别其他潜在的主机活动模式。在某些实施方案中,其他潜在的主机活动模式可以简单地是预测的主机活动模式,对于该预测的主机活动模式,尚不存在类似的存储的潜在的主机活动模式(例如,没有匹配的分数超过指定的匹配阈值的预测的主机活动模式)。在其他实施方案中,基于从存储的活动日志识别的重复模式,可以更一般地识别其他潜在的主机活动模式。在某些实施方案中,其他潜在的主机活动模式和与其相关联的其他重定位方案由存储设备120本身识别和生成,例如,由存储器控制器122或其is管理器334。在其他实施方案中,可以在固件升级等期间将其他潜在的主机活动模式和与其相关联的其他重定位方案上载到存储设备120。

存储器控制器122或其is管理器334可以通过优化成本函数来生成与所识别的其他潜在的主机活动模式相关联的其他重定位方案。示例性成本函数可以尝试最小化或以其他方式考虑与从is存储器读取数据、将数据从is存储器传送(即,重新定位)到ms存储器以及从ms存储器读取数据相关联的成本,但不限于此。成本可以是延迟时间和/或功耗,但不限于此。这只是成本函数的一个示例,其并不意味着包含所有。

根据本技术的某些实施方案,为实现is存储器的适应性管理而执行的过程作为后台进程执行。这可以包括用于基于活动日志预测主机活动模式的过程、基于预测的主机活动模式选择多个存储的重定位方案中的一个、以及执行选定的重定位方案。可以作为后台进程执行的其他进程可以包括用于确定是否应该应用另一重定位方案的进程,以及选择和执行另一重定位方案。可以作为后台进程执行的其他进程可以包括用于识别其他潜在的主机活动模式的进程,并且用于生成和存储与其他潜在的主机活动模式相关联的其他重定位方案。

本文描述的本技术的实施方案应该增加大多数用户的读写吞吐量,并且还应该导致更少的块用于过度供应。这应该有利地具有增加耐久性和降低功耗的效果。

本技术的某些实施方案涉及一种从主机接收读写命令的存储设备,其中该存储设备包括非易失性存储器和中间存储(is)管理器。非易失性存储器包括被指定为中间存储(is)存储器的一部分,以及被指定为主存储(ms)存储器的另一部分,其中is存储器具有比ms存储器更低的读写延迟,is存储器具有比ms存储器更大的耐久性,并且is存储器具有比ms存储器更低的存储密度和容量。is管理器被配置为预测主机活动并基于预测的主机活动选择并执行重定位方案,从而根据选定的重定位方案选择性地将一个或多个数据的部分从is存储器重新定位到ms存储器。根据某些实施方案,is存储器包括单级单元(slc)型闪存存储器,其中每个存储器单元存储一位数据,并且ms存储器包括多级单元(mlc)型闪存存储器,其中每个存储器单元存储两位或多位数据。

存储设备包括与非易失性存储器通信的存储器控制器,其中存储器控制器被配置为确定响应于从主机接收的写入命令而存储在非易失性存储器中的数据是否要存储在is存储器或ms存储器中。is管理器可以由存储器控制器实现。另选地,is控制器可以由与存储器控制器通信的存储设备的另一组件实现。

存储设备还可以包括is管理器和/或存储器控制器与之通信的随机存取存储器(ram)。根据某些实施方案,跟踪对主机执行的读写操作的活动日志存储在ram或非易失性存储器中的至少一者中,并且is管理器被配置为基于活动日志预测主机活动。is管理器基于活动日志预测的预测的主机活动可以包括预测写入模式、预测读取模式、和/或预测读写模式中的至少一者。

根据某些实施方案,多个重定位方案存储在存储设备的非易失性存储器、rom和/或ram中,其中每个重定位方案与多个潜在的主机活动模式中的一个相关联。在此类实施方案中,is管理器可以被配置为基于预测的主机活动模式与多个潜在的主机活动模式中的至少一些之间的比较结果来选择多个重定位方案中的一个。根据某些实施方案,潜在的和预测的主机活动模式是根据逻辑块地址(lba)或lba范围来指定的。

根据某些实施方案,is管理器被配置为不时地更新预测的主机活动模式,并基于更新的预测的主机活动来选择和执行另一个重定位方案。

根据某些实施方案,is管理器被配置为基于活动日志识别和存储其他潜在的主机活动模式,并生成和存储其他重定位方案,每个重定位方案与所识别的其他潜在的主机活动模式中的一个相关联。在生成和存储之后,is管理器可以选择和执行这些其他重定位方案。

本技术的某些实施方案涉及由存储设备使用的方法,该存储设备从主机接收读写命令,并且包括非易失性存储器和与非易失性存储器通信的存储器控制器,其中非易失性存储器包括指定为is存储器的一部分和指定为ms存储器的另一部分。如上所述,与ms存储器相比,is存储器具有较低的读写延迟、较大的耐久性、以及较低的存储密度和容量。根据某些实施方案,此类方法包括存储多个重定位方案,每个重定位方案与多个潜在的主机活动模式中的一个相关联,并且维护一个或多个活动日志,该活动日志跟踪与存储在非易失性存储器的数据相关的操作。该方法还包括响应于从主机接收一个或多个写入命令而将数据存储在is存储器中。该方法还包括基于活动日志预测主机活动模式,并选择多个存储的重定位方案中的一个以应用于存储在is存储器中的数据。基于预测的主机活动模式执行选择。该方法还包括执行选定的重定位方案,从而根据选定的重定位方案选择性地将数据的一个或多个部分从is存储器重新定位到ms存储器。

根据某些实施方案,维护的活动日志跟踪对主机执行的读写操作,并且基于活动日志预测的预测主机活动包括预测写入模式、预测读取模式或预测读写模式中的至少一者。选择多个存储的重定位方案中的一个以应用于存储在is存储器中的数据可以涉及将预测的主机活动模式与多个潜在的主机活动模式中的至少一些进行比较,每个都与重定位方案中的一个相关联,并且基于比较的结果选择多个存储的重定位方案中的一个。

根据某些实施方案,将预测的主机活动模式与多个存储的潜在的主机活动模式中的至少一些进行比较包括,对于每个比较,生成指示预测的主机活动模式与潜在的主机活动模式中的一个之间的相似性水平的匹配分数。在此类实施方案中,基于比较的结果选择多个存储的重定位方案中的一个可以包括选择与具有最高匹配分数的潜在的主机活动模式相关联的多个存储的重定位方案中的一个,或者选择存储的与匹配分数超过指定匹配阈值的潜在的主机活动模式中的任何一个(例如,第一个)相关联的重定位方案。

根据某些实施方案,该方法还包括确定是否应该将另一个重定位方案应用于存储在is存储器中的数据。响应于确定应该将另一个重定位方案应用于存储在is存储器中的数据,选择多个存储的重定位方案中的另外一个以应用于存储在is存储器中的数据,其中该选择基于新的预测写入模式。然后执行选定的另外一个重定位方案,从而根据选定的另外一个重定位方案,选择性地将数据的一个或多个部分从is存储器重新定位到ms存储器。

根据某些实施方案,该方法还包括基于活动日志识别一个或多个其他潜在的主机活动模式,以及生成和存储一个或多个其他重定位方案,每个重定位方案与所识别的其他潜在的主机活动模式中的一个相关联。在生成和存储之后,其他重定位方案可用于选择和执行。

根据某些实施方案,存储设备包括非易失性存储器,其包括被指定为is存储器的一部分,以及被指定为ms存储器的另一部分。is存储器具有比ms存储器更低的读写延迟,is存储器具有比ms存储器更大的耐久性,并且is存储器具有比ms存储器更低的存储密度和容量。存储设备还包括基于对主机执行的读写操作来预测主机活动模式的装置、基于预测的主机活动模式选择多个潜在的重定位方案中的一个的装置、以及用于执行多个潜在的重定位方案中的一个的选择的装置,从而选择性地将存储在is存储器中的至少一部分数据重新定位到ms存储器。用于预测主机活动模式的装置可以是is管理器334、和/或存储器控制器122、和/或一些其他分立组件340。用于基于预测的主机活动模式选择多个潜在的重定位方案中的一个的装置可以是is管理器334、和/或存储器控制器122、和/或一些其他分立组件340。用于执行多个潜在的重定位方案中的一个的选择的装置可以是is管理器334、和/或存储器控制器122、和/或一些其他分立组件340。上述装置中的任何一个或多个可以采用被设计用于与其他组件一起使用的封装功能硬件单元(例如,电子电路),可由(微)处理器执行的程序代码(例如,软件或固件)或通常执行相关功能的特定功能的处理电路,或与较大系统接口的独立硬件或软件组件。例如,每个装置可以包括专用集成电路(asic)、现场可编程门阵列(fpga)、电路、数字逻辑电路、模拟电路、分立电路的组合、栅极、或硬件的任何其他类型、或其组合。另选地或另外地,每个装置可以包括存储在处理器可读设备(例如,存储器)中的软件,以对处理器进行编程以执行本文描述的功能。

根据某些实施方案,存储设备还包括用于跟踪为主机执行的写入或读取操作的装置。用于跟踪写入或读取操作的装置可以是活动日志。此类活动日志可以存储在非易失性存储器124和/或ram206中。在此类实施方案中,用于预测主机活动模式的装置可以使用用于跟踪对主机执行的写入或读取操作的装置来预测主机活动模式。此外,用于预测主机活动模式的装置可以被配置为更新预测的主机活动模式,响应于此,用于选择多个潜在的重定位方案中的一个的装置将选择多个潜在的重定位方案中的另外一个,并且响应于此,用于执行的装置将执行选定的多个潜在的重定位方案中的另外一个。

根据某些实施方案,存储设备包括用于识别其他的潜在的主机活动模式的装置,以及用于为其他潜在的主机活动模式生成其他重定位方案的装置。在生成之后,其他的重定位方案可用于通过选择的装置选择,并且可由执行装置执行。用于识别其他的潜在的主机活动模式的装置可以是is管理器334、和/或存储器控制器122、和/或一些其他分立组件340。用于生成其他重定位方案的装置可以是is管理器334、和/或存储器控制器122、和/或一些其他分立组件340。上述装置中的任何一个或多个可以采用被设计用于与其他组件一起使用的封装功能硬件单元(例如,电子电路),可由(微)处理器执行的程序代码(例如,软件或固件)或通常执行相关功能的特定功能的处理电路,或与较大系统接口的独立硬件或软件组件。例如,每个装置可以包括专用集成电路(asic)、现场可编程门阵列(fpga)、电路、数字逻辑电路、模拟电路、分立电路的组合、栅极、或硬件的任何其他类型、或其组合。另选地或另外地,每个装置可以包括存储在处理器可读设备(例如,存储器)中的软件,以对处理器进行编程以执行本文描述的功能。

出于本文档的目的,术语“写入”和“存储”常常可互换使用,术语“正在写入”和“正在存储”也是如此。

出于本文档的目的,说明书中对“实施方案”、“一个实施方案”、“一些实施方案”或“另一实施方案”的引用可用于描述不同的实施方案或相同的实施方案。

出于本文档的目的,连接可以是直接连接或间接连接(例如,经由一个或多个其他部分)。在一些情况下,当元件被称为连接或联接到另一元件时,该元件可以直接连接到另一元件或经由中间元件间接连接到另一元件。当一个元件被称为直接连接到另一个元件时,该原件和另一个元件之间没有中间元件。如果两个设备直接或间接连接,则它们“通信”,以便它们可以在它们之间对电子信号通信。

出于本文档的目的,术语“基于”和“取决于”可以被解读为“至少部分地基于”。

虽然上面已经描述了本技术的各种实施方案,但是应当理解,它们是作为示例而非限制来呈现的。对于相关领域的技术人员显而易见的是,在不脱离本技术的实质和范围的情况下,可以在其中进行形式和细节上的各种改变。例如,尽管上面已经详细描述了一些变化,但是其他修改或添加也是可能的。特别地,除了本文描述的那些之外,还可以提供其他特征和/或变化。例如,上述实现可以针对所公开的特征的各种组合和子组合和/或以上所公开的若干其他特征的组合和子组合。另外,在附图中描绘和/或在本文描述的逻辑流程不需要所示的特定顺序或顺序次序来实现期望的结果。其他实施方案可以在以下权利要求的范围内。

上面已经借助于示出特定功能及其关系的性能的功能构建块描述了本技术的实施方案。为了便于描述,本文常常定义这些功能构建块的边界。可以定义替代边界,只要适当地执行指定的功能及其关系即可。因此,任何此类的替代边界都在本权利要求的技术范围和实质内。本领域的技术人员将认识到,这些功能构建块可以由分立组件、专用集成电路、执行适当软件的处理器等或其任何组合来实现。

本技术的广度和范围不应受任何上述示例性实施方案的限制,而应仅根据所附权利要求及其等同物来限定。

尽管用结构特征和/或方法动作专用的语言描述了本主题,但是应当理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。而是,公开了上述具体特征和动作作为实现权利要求的示例形式。

已经出于说明和描述的目的呈现了前面的详细描述。其并非旨在穷举或限制所公开的精确形式。鉴于上述教导,许多修改和变化都是可能的。选择所描述的实施方案是为了最好地解释所提出的技术的原理及其实际应用,从而使得本领域的其他技术人员能够在各种实施方案中以及适合于预期的特定用途的各种修改中最好地利用它。本发明的范围旨在由所附权利要求限定。

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