用于生成与主机命令相关联的提示信息的系统和方法转让专利

申请号 : CN201580071260.0

文献号 : CN107111456A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : J·G·哈恩J·R·梅扎W·L·顾思睿

申请人 : 闪迪技术有限公司

摘要 :

本申请公开了用于生成与主机命令相关联的提示信息的系统和方法。在一种实施方式中,主机系统的处理器确定主机系统是否已发起将发送命令至非易失性存储器系统的规程。处理器分析与命令相关联的元数据或有效载荷数据中的至少一个,以确定处理器是否能够生成与元数据或有效载荷数据中的至少一个相关联的提示信息。处理器基于元数据或有效载荷数据中的至少一个的分析生成提示信息,发送提示信息至非易失性存储器系统,并且发送命令至非易失性存储器系统。

权利要求 :

1.一种方法,其包括:

在主机系统的处理器中执行:

确定所述主机系统是否已发起将发送命令至非易失性存储器系统的规程;

分析与所述命令相关联的元数据或有效载荷数据中的至少一个,以确定所述处理器是否能够生成与元数据或有效载荷数据中的所述至少一个相关联的提示信息;

基于元数据或有效载荷数据中的所述至少一个的分析生成提示信息;

发送所述提示信息至所述非易失性存储器系统;以及

发送所述命令至所述非易失性存储器系统。

2.根据权利要求1所述的方法,其中所述规程是在所述非易失性存储器系统上安装应用程序的规程。

3.根据权利要求2所述的方法,其中分析所述元数据或所述有效载荷数据中的至少一个以确定所述处理器是否能够生成与元数据或有效载荷数据中的所述至少一个相关联的提示信息包括:分析安装包以识别与所述安装包相关联的一个或多个文件;以及

针对所述一个或多个文件中的每一个,确定所述文件的特性。

4.根据权利要求2所述的方法,其进一步包括:

执行文件系统的分析以确定自从所述文件系统的先前分析以来所述文件系统是否已改变;以及响应于确定所述文件系统已改变:

基于所述文件系统的改变生成提示信息;以及

发送基于所述文件系统的改变的所述提示信息至所述非易失性存储器系统,之后发送基于与安装包相关联的文件的额外提示信息至所述非易失性存储器系统。

5.根据权利要求2所述的方法,其中所述提示信息包括与数据相关联的逻辑块地址序列将不频繁改变的用于所述非易失性存储器系统的指示,所述主机系统随后将所述数据以写入命令发送至所述非易失性存储器系统。

6.根据权利要求2所述的方法,其中所述提示信息包括在写入命令序列中的数据与特定文件类型相关联的指示,所述主机系统随后将所述写入命令序列发送至所述非易失性存储器系统。

7.根据权利要求1所述的方法,其中所述主机系统的所述处理器将所述提示信息作为发送至所述非易失性存储器系统的所述命令的一部分发送至所述非易失性存储器系统。

8.根据权利要求1所述的方法,其中当所述规程是用来读取已存储在所述非易失性存储器系统中的文件的数据的规程时,生成提示信息包括生成与读取命令相关联的逻辑块地址序列的用于所述非易失性存储器系统的指示,所述主机系统随后将发送所述读取命令至所述非易失性存储器系统。

9.根据权利要求1所述的方法,其中当所述规程是用来写入已存储在所述非易失性存储器系统中的文件的规程时,生成提示信息包括生成写入命令序列将替换已存储在所述非易失性存储器系统中的文件的数据的用于所述非易失性存储器系统的指示,所述主机系统随后将发送所述写入命令序列至所述非易失性存储器系统。

10.根据权利要求1所述的方法,其中当所述规程是用来写入已存储在所述非易失性存储器系统中的文件的规程时,生成提示信息包括生成写入命令序列将附加到已存储在所述非易失性存储器系统中的文件的用于所述非易失性存储器系统的指示,所述主机系统随后将发送所述写入命令序列至所述非易失性存储器系统。

11.根据权利要求1所述的方法,其中在所述处理器上运行的提示生成器确定所述主机系统是否已发起将发送所述命令至所述非易失性存储器系统的所述规程;以及其中所述提示生成器不发起发送所述命令至所述非易失性存储器系统的所述规程。

12.根据权利要求1所述的方法,其中在所述处理器上运行的、不是所述主机系统的操作系统的一部分的应用程序确定所述主机系统是否已发起将发送所述命令至所述非易失性存储器系统的所述规程。

13.根据权利要求1所述的方法,其中与所述命令相关联的元数据或有效载荷数据中的所述至少一个是与所述命令相关联的文件的元数据或有效载荷数据中的至少一个。

14.一种主机系统,其包括:

处理电路系统,其被配置为基于与命令相关联的元数据或有效载荷数据中的至少一个,生成关于与所述命令相关联的数据的特性的信息,所述主机系统将发送所述命令至非易失性存储器系统;以及与所述处理电路系统通信的驱动器模块,所述驱动器模块被配置为连同所述主机系统发送所述命令至所述非易失性存储器系统而将所生成的信息发送至所述非易失性存储器系统。

15.根据权利要求14所述的主机系统,其中所述处理电路系统被配置为发送用于所述非易失性存储器系统的所生成的信息作为被发送至所述非易失性存储器系统的所述命令的一部分。

16.根据权利要求14所述的主机系统,其中与命令相关联的元数据或有效载荷数据中的所述至少一个是与所述命令相关联的文件的元数据或有效载荷数据中的至少一个。

17.根据权利要求14所述的主机系统,其中为了生成关于与所述命令相关联的元数据或有效载荷数据中的所述至少一个的所述特性的所述信息,所述处理电路系统被配置为:分析安装包以识别与所述安装包相关联的一个或多个文件;

对于所述一个或多个文件中的每一个,识别所述文件的特性;以及

基于所述一个或多个文件中的每一个的所述特性生成所述信息。

18.一种方法,其包括:

在非易失性存储器系统处连同接收来自与数据相关联的所述主机系统的命令而接收来自所述主机系统的信息,所述信息识别与所述命令相关联的所述数据的特性;

在所述非易失性存储器系统处接收来自所述主机系统的所述命令;以及基于指示所述数据的所述特性的所述信息,选择用于处理所述非易失性存储器系统的非易失性存储器中的所述数据的规程。

19.根据权利要求18所述的方法,其中在从所述主机系统接收所述命令之前从所述主机系统接收识别与所述命令相关联的所述数据的所述特性的所述信息。

20.根据权利要求18所述的方法,其中选择所述规程包括:

响应于所述数据的所述特性指示所述数据将不频繁地改变,绕过所述非易失性存储器系统内的高速缓存器,并且将所述数据直接存储在所述非易失性存储器系统的所述非易失性存储器中。

21.根据权利要求19所述的方法,其中选择所述规程包括:

响应于所述数据的所述特性指示与所述命令相关联的所述数据将不频繁改变,将与所述数据相关联的逻辑块地址分隔成存储器的独立的物理块,并且防止所述存储器的所述物理块中的其他数据与频繁更新的数据一起存储。

22.根据权利要求19所述的方法,其中选择所述规程包括:

响应于所述数据的所述特性指示与所述命令相关联的所述数据将不频繁地改变,在所述非易失性存储器系统的非易失性存储器中循序存储所述逻辑块地址的所述数据。

23.根据权利要求19所述的方法,其中所述非易失性存储器系统包括硅衬底和多个存储器单元,所述多个存储器单元形成相对于彼此垂直设置的至少两个存储器层以形成单体三维结构,其中至少一个层相对于所述硅衬底垂直设置。

24.根据权利要求18所述的方法,其进一步包括:

在所述非易失性存储器系统处接收来自所述主机系统的终止信息,所述终止信息指示所述主机系统已完成为当前文件发送主机命令至所述存储模块。

说明书 :

用于生成与主机命令相关联的提示信息的系统和方法

背景技术

[0001] 目前的随机访问闪存系统(诸如固态驱动器)在访问存储在存储器系统中的数据时经常不具有固有的寻找惩罚。然而,存储器系统经常能够比能够访问循序存储在同一存储器管芯的存储器区块中的数据的存储器系统更有效地访问横跨不同存储器管芯中的存储器区块并行存储的数据。
[0002] 为了利用闪存系统的该性质,在存储器系统将数据存储在其存储器中之前,存储器系统获知主机系统稍后将如何访问数据将是有利的。

发明内容

[0003] 在一个方面,公开一种方法。该方法的要素用主机系统的处理器来执行。处理器确定主机系统是否已发起将发送命令至非易失性存储器系统的规程。处理器分析与命令相关联的元数据或有效载荷数据中的至少一个,以确定处理器是否能够生成与元数据或有效载荷数据中的所述至少一个相关联的提示信息。
[0004] 主机系统的处理器基于数据的分析生成提示信息;发送提示信息至非易失性存储器系统;并且发送命令至非易失性存储器系统。
[0005] 在另一方面,公开一种主机系统。该主机系统包括处理电路系统和与处理电路系统通信的驱动器模块。
[0006] 处理器电路系统被配置为基于与主机系统将要发送到非易失性存储器系统的命令相关联的元数据或有效载荷数据中的至少一个而生成关于与该命令相关联的数据的特性的信息。
[0007] 驱动器模块被配置为连同主机系统发送命令至存储器模块而将生成的信息发送至非易失性存储器系统。
[0008] 在进一步的方面,公开另一种方法。在该方法中,非易失性存储器系统从存在于主机系统上的提示生成器接收信息,该信息向非易失性存储器系统指示与命令相关联的数据的特性。
[0009] 非易失性存储器系统从主机系统接收该命令,基于指示该数据的特性的信息来选择用于将数据存储在非易失性存储器系统的非易失性存储器中的规程,以及执行所选择的规程。

附图说明

[0010] 图1A是示例非易失性存储器系统的框图。
[0011] 图1B是示出示例性存储模块的框图。
[0012] 图1C是示出分层存储系统的框图。
[0013] 图2A是示出非易失性存储器系统的控制器的示例性部件的框图。
[0014] 图2B是示出非易失性存储器系统的非易失性存储器的示例性部件的框图。
[0015] 图3示出存储器组的示例物理存储器组织。
[0016] 图4示出图3的物理存储器的一部分的展开图。
[0017] 图5是与非易失性存储器系统耦合的主机系统的一种实施方式的框图。
[0018] 图6是提示生成器响应于主机系统发起在非易失性存储器系统上安装应用程序的过程而生成提示信息的方法的一种实施方式的流程图。
[0019] 图7是提示生成器响应于主机系统发起在非易失性存储器系统上创建文件或打开文件的过程而生成提示信息的方法的一种实施方式的流程图。
[0020] 图8是非易失性存储器系统接收并利用提示信息以在非易失性存储器系统中有效地处理和/或存储数据的方法的一种实施方式的流程图。

具体实施方式

[0021] 本公开涉及用于生成与主机命令相关联的提示信息的系统和方法。随机访问闪存系统在访问存储在存储器系统中的数据时经常不具有固有的惩罚。然而,存储器系统经常能够比能够访问循序存储在同一存储器管芯的存储器区块中的数据的存储器系统更有效地访问横跨不同存储器管芯中的存储器区块并行存储的数据。
[0022] 如下面更详细论述,为了利用该效率,在主机系统上存在的提示生成器监控主机系统动作并将提示信息传送至非易失性存储器系统。当存储器系统从主机系统接收主机命令时,存储器系统利用所接收的提示信息以便更有效地处理数据和/或存储数据到存储器系统的非易失性存储器中。
[0023] 图1A是示出非易失性存储器系统的框图。非易失性存储器系统100包括控制器102和可由一个或多个非易失性存储器管芯104构成的非易失性存储器。如本文所用,术语“管芯”是指非易失性存储器单元组,以及用于管理那些非易失性存储器单元的物理操作的相关联电路系统,它们形成在单个存储器衬底上。控制器102与主机系统接合并向非易失性存储器管芯104传输用于读取、编程和擦除操作的命令序列。
[0024] 控制器102(其可以是闪存控制器)可以采用处理电路系统、微处理器或处理器以及存储可由例如(微)处理器、逻辑门、开关、专用集成电路(ASIC)、可编程逻辑控制器和嵌入式微控制器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质的形式。控制器102可用硬件和/或固件配置以执行下面描述并在流程图中示出的各种功能。同样,显示为在控制器内部的一些部件也可存储在控制器外部,并且可使用其它部件。另外,短语“可操作地与……通信”可意指(有线或无线)直接通信或者通过一个或多个部件(有线或无线)间接通信,其可能在或可能不在本文中示出或描述。
[0025] 如本文所用,闪存控制器是管理存储在闪存上的数据并与主机(诸如计算机或电子装置)通信的装置。除本文所描述的特定功能之外,闪存控制器也可具有的各种功能。例如,闪存控制器可以将闪存格式化以确保存储器正确地操作、标出损坏的闪存单元以及分配备用单元以替换未来故障单元。备用单元的一些部分可用于保持固件以操作闪存控制器和实施其他特征。在操作中,当主机需要从闪存读取数据或将数据写入到闪存中时,其将与闪存控制器通信。如果主机提供数据将被读取/写入的逻辑地址,则闪存控制器可将从主机接收的逻辑地址转换成闪存中的物理地址。(可替换地,主机可提供物理地址)。闪存控制器也可以执行各种存储器管理功能,诸如但不限于损耗均衡(分布写入以避免损耗掉否则将被重复写入的存储器特定区块)和垃圾收集(在区块存满之后,仅移动有效页面的数据到新区块,因此可擦除和复用已满区块)。
[0026] 非易失性存储器管芯104可包括任何合适的非易失性存储介质,其包括NAND闪存单元和/或NOR闪存单元。存储器单元可采取固态(例如,闪存)存储器单元的形式,并可以是一次可编程的、几次可编程的或多次可编程的。存储器单元也可以是单层单元(SLC)、多层单元(MLC)、三层单元(TLC)或使用现在已知或以后发展的其他存储器技术。而且,存储器单元可以以二维或三维形式布置。
[0027] 控制器102和非易失性存储器管芯104之间的接口可以是任何合适的闪存接口,诸如触发模式200、400或800。在一个实施例中,存储器系统100可以是基于卡的系统,诸如安全数字(SD)卡或微型安全数字(微型SD)卡。在可替换实施例中,存储器系统100可以是嵌入式存储器系统的一部分。
[0028] 尽管在图1A所示示例中非易失性存储器系统100包括控制器102和非易失性存储器管芯104之间的单个通道,但本文描述的主题不限于具有单个存储器通道。例如,在一些NAND存储器系统架构中,2个、4个、8个或更多个NAND通道可存在于控制器和NAND存储器装置之间,这取决于控制器能力。在本文所述实施例中的任一个中,多于单个通道可存在于控制器和存储器管芯之间,即使在附图中示出单个通道。
[0029] 图1B示出包括复数个非易失性存储器系统100的存储模块200。同样,存储模块200可以包括与主机并与存储系统204接合的存储控制器202,存储系统204包括多个非易失性存储器系统100。在存储控制器202和非易失性存储器系统100之间的接口可以是总线接口,诸如串行高级技术附件(SATA)接口或外围部件接口高速(PCIe)接口。在一个实施例中,存储模块200可以是诸如在便携式计算装置诸如膝上计算机和平板计算机中发现的固态驱动器(SSD)。
[0030] 图1C是示出分层存储系统的框图。分层存储系统210包括多个存储控制器202,其每一个控制相应的存储系统204。主机系统212可经由总线接口访问分层存储系统内的存储器。在一个实施例中,总线接口可以是非易失性存储器高速(NVMe)接口或以太网上的光线通道(FCoE)接口。在一个实施例中,图1C所示的系统可以是可安装在机架上的大容量存储系统,其是由多个主机计算机可访问的,诸如可在数据中心或需要大容量存储的其他位置发现的那些存储系统。
[0031] 图2A是更详细地示出控制器102的示例性部件的框图。控制器102包括与主机接合的前端模块108,与一个或多个非易失性存储器管芯104接合的后端模块110,以及执行现将更详细描述的功能的各种其他模块。
[0032] 例如,模块可以采取被设计用于与其他部件一起使用的封装功能硬件单元、可由通常执行相关功能中的特定功能的(微)处理器或处理电路系统执行的程序代码(例如软件或固件)的一部分、或与更大系统接合的自持硬件或软件部件的形式。
[0033] 控制器102的模块可以包括提示处理模块112。如下面结合图5至图8更详细论述,提示处理模块112处理从存在于主机系统上的提示生成器接收的提示信息,并且可选择用于基于在提示信息中识别的数据的特性而处理数据的规程。
[0034] 再次参考控制器102的模块,缓冲器管理器/总线控制器114管理随机访问存储器(RAM)116中的缓冲器,并且控制控制器102的内部总线仲裁。只读存储器(ROM)118存储系统启动代码。尽管图2A中示出为与控制器102分离定位,但在其他实施例中,RAM 116和ROM 118中的一个或两个可以位于控制器内。在其他实施例中,RAM和ROM中的一些部分可位于控制器102内和该控制器外。进一步地,在一些实施方式中,控制器102、RAM 116和ROM 118可位于分离的半导体管芯上。
[0035] 前端模块108包括主机接口120和提供与主机或下一级存储控制器的电接口的物理层接口(PHY)122。主机接口120的类型的选择可取决于使用的存储器类型。主机接口120的示例包括但不限于SATA、SATA高速、SAS、光纤信道、USB、PCIe和NVMe。主机接口120通常有利于数据、控制信号和定时信号的传递。
[0036] 后端模块110包括纠错控制器(ECC)引擎124,其将编码从主机接收的数据字节,并对从非易失性存储器读取的数据字节进行解码和纠错。命令定序器126生成将被传输至非易失性存储器管芯104的命令序列(诸如编程和擦除命令序列)。RAID(独立驱动器的冗余阵列)模块128管理RAID奇偶校验的生成和失效数据的恢复。RAID奇偶校验可用作被写入存储器装置104中的数据的额外完整性保护水平。在一些情况下,RAID模块128可以是ECC引擎124的一部分。存储器接口130提供命令序列至非易失性存储器管芯104并从非易失性存储器管芯104接收状态信息。在一个实施例中,存储器接口130可以是双倍数据速率(DDR)接口,诸如触发模式200、400或800接口。闪存控制层132控制后端模块110的总体操作。
[0037] 图2A所示的系统100的额外部件包括介质管理层138,其执行非易失性存储器管芯104的存储器单元的损耗均衡。系统100还包括其他分立部件140,诸如外部电气接口、外部RAM、电阻器、电容器或可与控制器102接合的其他部件。
[0038] 在可替换实施例中,物理层接口122、RAID模块128、介质管理层138和缓冲器管理/总线控制器114中的一个或多个是控制器102中非必要的可选部件。
[0039] 图2B是更详细地示出非易失性存储器管芯104的示例性部件的框图。非易失性存储器管芯104包括外围电路系统141和非易失性存储器阵列142。非易失性存储器阵列142包括用于存储数据的非易失性存储器单元。非易失性存储器单元可以是任何合适的非易失性存储器单元,包括二维和/或三维配置中的NAND闪存单元和/或NOR闪存单元。外围电路系统141包括向控制器102提供状态信息的状态机152。非易失性存储器管芯104进一步包括高速缓存数据的数据高速缓存器156。
[0040] 图3在概念上图示说明多平面布置,其示出存储器单元的四个平面302-308。这些平面302-308可以在单个管芯、两个管芯(每个管芯上这些平面中的两个)或四个分离的管芯上。当然,其他数量(诸如1、2、8、16或更多个)平面可存在于系统的每个管芯中。这些平面被各自划分成图3中以矩形示出的存储器单元的区块,诸如区块310、312、314和316,其位于相应的平面302-308中。在每个平面中可存在几十或几百个区块。
[0041] 如上所述,存储器单元的区块是擦除的单位,即在物理上可以一起擦除的最小数量的存储器单元。为了提高并行度,一些存储器系统以较大的元区块单位操作区块。然而,其他存储器系统可以利用异步存储器管芯形式而不是以较大的元区块单位操作。
[0042] 在利用元区块单位的存储器系统中,来自每个平面的一个区块在逻辑上链接在一起以形成元区块。四个区块310-316被示出形成一个元区块318。元区块内的所有单元通常一起被擦除。用于形成元区块的单元不需要被约束于它们的相应平面内的相同的相对位置,如在由区块322-328构成的第二元区块320中所示。尽管通常优选使元区块横跨所有平面延伸,但为了高系统性能,存储器系统可以用在不同平面中动态形成任一个或全部一个、两个或三个区块的元区块的能力进行操作。这允许元区块的大小更紧密地匹配在一个编程操作中可用于存储的数据量。
[0043] 如图4所示,个体区块进而为了操作目的被划分成存储器单元的页面。例如,区块310-316中的每个区块的存储器单元各自划分成八个页面P0-P7。可替换地,在每个区块内可以存在存储器单元的32个、64个或更多个页面。页面是在区块内进行数据编程和读取的单位,其包含同时编程或读取的最少量的数据。然而,为了提高存储器系统操作并行度,在两个或更多个区块内的此类页面可以在逻辑上链接到元页面。元页面428在图4中示出,其由来自四个区块310-316中的每个区块的一个物理页面形成。例如,元页面402包括四个区块中的每个区块中的页面P2,但元页面的页面不必在每个区块内具有相同的相对位置。
[0044] 如上所述,非易失性存储器系统经常能够比能够访问循序存储在同一存储器管芯的存储器区块中的数据的存储器系统更有效地访问横跨不同存储器管芯中的存储器区块并行存储的数据。然而,在不知主机系统将访问存储在非易失性存储器系统中的数据的访问模式的情况下,存储器系统难以利用该效率并且针对主机系统一次将访问的数据在不同存储器管芯中横跨存储器区块并行存储数据。
[0045] 本文所述的非易失性存储器系统可以利用来自位于主机系统上的提示生成器的信息以便更智能地在存储器系统的非易失性存储器中处理并存储数据。图5是与诸如上述那些非易失性存储器系统耦合的主机系统的一种施方式的框图。
[0046] 主机系统500存储数据至非易失性存储器系统502(诸如上面关于图1A至图4描述的那些)中,并从非易失性存储器系统502检索数据。在非易失性存储器系统502有关的范围内,主机系统500可被视为具有由电路系统和软件的组合构成的两个主部分。它们是与非易失性存储器系统502接合的应用程序部分508和驱动器模块部分510。
[0047] 应用程序部分508可以包括例如运行文字处理、图形、控制或其他常见应用软件的CPU处理器512(也称为处理电路系统)以及用于管理主机500上的数据的主机文件系统514。
[0048] 如下面更详细论述,应用程序部分508还可以包括监控发起并发送主机命令至存储模块的主机系统过程的提示生成器513。提示生成器513可以被实施为在CPU处理器512上运行的应用程序,其不是存在于主机系统上的操作系统的一部分。提示生成器513可以可替换地使用处理电路系统来实施。
[0049] 在一些实施方式中,提示生成器513可至少部分地与驱动器模块部分510集成,以便将提示信息作为主机命令的一部分发送至存储模块502。
[0050] 通常,提示生成器513寻找主机系统将要发送至非易失性存储器系统502的主机命令和相关联数据。在一些实施方式中,提示生成器513发起导致主机系统发送主机命令和相关联数据至非易失性存储器系统的规程。然而在其他实施方式中,提示生成器不发起导致主机系统发送主机命令和相关联数据至非易失性存储器系统的规程。
[0051] 例如,主机命令和相关联数据可以是主机系统意图在非易失性存储器系统上安装应用程序、在非易失性存储器系统上存储新文件的数据、替换在非易失性存储器系统上存储的文件的数据、从文件删除内容、删除整个文件、执行文件的内容、以存储器映射方式读取文件、或将数据从在非易失性存储器系统上存储的文件循序串流的结果。
[0052] 在识别主机系统将发送至非易失性存储器系统的主机命令和相关联数据之后,提示生成器513可以分析与所识别的主机命令相关联的元数据或有效载荷数据中的至少一个。元数据可以是描述与所识别的主机命令一起发送的数据的一个或多个特性的信息,并且有效载荷数据可以是与所识别的主机命令一起发送的实际数据。例如,元数据可以描述主机将发送至存储装置以用于存储的数据构成的文件的性质。有效载荷数据是主机将发送至存储装置的实际文件的数据。
[0053] 提示生成器513基于数据的分析和特性生成提示信息,并且提示生成器513发送所生成的提示信息至非易失性存储器系统。提示信息可以提供关于主机系统将发送至非易失性存储器系统的数据的特性(诸如数据是否将被频繁地更新)的信息、数据的文件类型(诸如文件是否为可执行文件)、与数据相关联的逻辑块地址序列、数据是否为现有文件的一部分、数据是否替换现有文件的数据、数据是否为已存储在非易失性存储器系统上的文件的副本,或当处理和/或存储数据时可用于非易失性存储器系统的任何其他类型的信息。
[0054] 提示生成器513可用来将提示信息传递到非易失性存储器系统的协议的一个示例在可得自www.nvmexpress.org的NVMe 1.2标准规格中描述。例如,提示生成器513可以利用所描述的访问频率(AF)字段(其指示数据被读取或写入的频率)、顺序读取(SR)字段(其指示数据应被优化以用于顺序读取访问),和/或顺序写入(SW)字段(其指示数据应被优化以用于顺序写入访问)。提示生成器513可以将这些字段与读取和写入命令一起发送至非易失性存储器系统。
[0055] 下面,关于图6和图7的论述示出提示生成器生成提示信息并发送提示信息至非易失性存储器系统的方法的实施方式。关于图8的论述示出非易失性存储器系统如何可接收和利用提示信息以在非易失性存储器系统中有效处理和/或存储数据的方法的实施方式。
[0056] 图6是提示生成器响应于主机系统发起在非易失性存储器系统上安装应用程序的过程而生成提示信息的方法的一种实施方式的流程图。如上所述,提示生成器存在于主机系统上并监控主机系统的动作。
[0057] 在步骤602,提示生成器确定主机系统已发起在与主机系统耦合的非易失性存储器系统上安装应用程序的规程。在一些实施方式中,提示生成器与主机设施集成在主机系统上,该主机设施在非易失性存储器系统上安装应用程序以帮助提示生成器识别主机系统何时发起在非易失性存储器系统上安装应用程序的规程。例如,提示生成器可以与由操作系统提供的安装服务或被供应有应用程序的设定脚本集成在一起。
[0058] 在一些实施方式中,在分析安装包之前,提示生成器首先在确定主机系统已发起在非易失性存储器系统上安装应用程序的规程之后分析文件系统布局。提示生成器分析文件系统布局以确定哪些文件范围是想要动态更新的以及哪些将在安装完成后为静态的。例如,应用程序图像(通常存储在/bin、/usr/bin或“\Program Files”目录中)通常是静态的并且不频繁更新,而用户数据(诸如模板、示例或用户可修改的资源文件)通常是动态更新的。如本领域中已知的,文件范围是在文件系统中为特定文件保留的逻辑上连续的存储区域。
[0059] 在步骤604,提示生成器从主机文件系统获得文件系统布局,并且在步骤606,提示生成器确定文件系统布局是否从文件系统布局的先前分析发生改变。当文件系统布局未改变时,提示生成器前进到步骤610以分析安装包。
[0060] 然而,当文件系统布局已改变时,在步骤608,提示生成器生成并发送关于新文件系统布局的提示信息并发送该提示信息至非易失性存储器系统。提示生成器在分析文件系统布局之后发送至非易失性存储器系统的提示信息可包括例如新文件的指示、特定文件是否已改变或移动的指示、更新文件范围的指示,和/或将是静态的或不频繁更新的任何新的一系列逻辑块地址的指示。
[0061] 在一些实施方式中,提示生成器使用由操作系统提供的穿透(pass-through)应用程序接口(“API”)或使用能够直接发送命令至存储模块的装置驱动器来发送提示信息至非易失性存储器系统。在其他实施方式中,当提示生成器至少部分内嵌有主机系统上的装置驱动器时,提示生成器可以在主机系统发送至非易失性存储器系统的写入命令中嵌入提示信息。
[0062] 在步骤610,提示生成器分析安装包以识别最终的安装将在非易失性存储器系统上存储的一个或多个文件。
[0063] 在步骤612,提示生成器检查在步骤610识别的一个或多个文件中的第一文件。在一些实施方式中,提示生成器可以检查与文件或实际文件自身的数据相关联的元数据中的至少一个。在步骤614,提示生成器确定文件的特性是否已知或能被确定。当文件的特性未知并且不能被确定时,在步骤616,主机系统在没有提示信息的情况下将文件的数据写入到非易失性存储器系统中。
[0064] 可替换地,在步骤618,当提示生成器确定文件的特性已知或能被确定时,提示生成器生成与文件相关联的提示信息。在一些实施方式中,提示信息可包括文件的数据将改变的频率、与文件相关联的逻辑块地址序列、和/或与数据相关联的文件类型(诸如文件是否为可执行文件)的用于非易失性存储器系统的指示。
[0065] 在步骤620,提示生成器发送与文件相关联的提示信息至非易失性存储器系统,并且在步骤622,主机系统发送包含文件的数据的一个或多个写入命令。如上所述,在一些实施方式中,提示生成器使用由操作系统提供的穿透API或使用能够直接发送命令至非易失性存储器系统的装置驱动器来发送提示信息至非易失性存储器系统。在其他实施方式中,当提示生成器至少部分内嵌有主机系统上的装置驱动器时,提示生成器可以将提示信息嵌入在主机系统发送至非易失性存储器系统的写入命令中。
[0066] 在一些实施方式中,在步骤624,在发送提示信息和包含文件的数据的写入命令之后,提示生成器发送终止提示信息至非易失性存储器系统。终止提示信息向非易失性存储器系统指示主机系统已完成发送用于当前文件的主机命令至非易失性存储器系统,和/或提示生成器将不发送关于和此时的当前文件相关联的范围的进一步提示信息至非易失性存储器系统。
[0067] 应认识到从步骤612开始的上述过程针对在步骤610识别的一个或多个文件中的每一个重复进行,直到所有文件都被处理并且在步骤626完成安装。
[0068] 当主机系统发起并非安装规程的一部分而是在非易失性存储器系统中创建文件和/或在非易失性存储器系统中打开现有文件的过程时,在主机系统上存在的提示生成器可以执行类似动作。
[0069] 图7是提示生成器响应于主机系统发起在非易失性存储器系统上创建或打开文件的过程而生成提示信息的方法的一种实施方式的流程图。如上所述,提示生成器存在于主机系统上并监控主机系统的动作。
[0070] 在步骤702,提示生成器监控主机系统的动作,并确定主机系统已发起在非易失性存储器系统上创建一个或多个文件和/或在非易失性存储器系统上打开一个或多个文件的规程。在步骤704,提示生成器确定被识别为规程的一部分的文件是否需要被处理。当文件需要被处理时,在步骤706,提示生成器确定该文件是否正被创建或该文件是否已存储在非易失性存储器系统中。
[0071] 当提示生成器确定文件已存储在非易失性存储器系统中时,在步骤708,提示生成器可以检索与文件(诸如元数据)相关联的信息,该信息指示文件特性(诸如与文件相关联的逻辑块地址序列)、文件类型、或期望文件的数据多频繁地改变的指示。提示生成器可以使用允许应用程序读取文件特性和范围布局的操作系统接口,或通过检查主机存储器内描述文件范围布局的数据结构,以提取该信息。另外,提示生成器可以检查实际文件数据以确定文件类型。
[0072] 在步骤710,提示生成器可以基于与文件相关联的信息生成提示信息,并且在步骤712,提示生成器发送提示信息至非易失性存储器系统,并且主机系统发送与文件相关联的命令至非易失性存储器系统。
[0073] 在一些实施方式中,提示生成器可以在步骤714确定主机系统已完成写入数据到已存在于非易失性存储器系统中的文件,或者已完成从该文件中读取数据。作为响应,在步骤716,提示生成器发送终止提示信息至非易失性存储器系统。终止提示信息向非易失性存储器系统指示主机系统已关闭文件并且将不再发送写入数据至与文件相关联的范围或从该范围读取数据的主机命令。另外,终止提示信息可以向非易失性存储器系统指示提示生成器将不发送关于和此时的文件相关联的范围的进一步提示信息至非易失性存储器系统。
[0074] 再次参考步骤706,当提示生成器代替地确定主机系统在创建用于在非易失性存储器系统上存储的新文件时,在步骤718,提示生成器识别关于将要创建的文件的特性。例如,提示生成器可以检查与将要与主机命令一起发送的文件相关联的元数据或该文件的实际有效载荷数据中的至少一个,以确定与该文件相关联的逻辑块地址序列、该文件的文件类型、期望文件数据多频繁地改变的指示、新创建的文件是已存储在非易失性存储器系统中的文件的副本的指示、和/或新创建的文件是临时文件且该临时文件是已存储在非易失性存储器系统中的文件的副本的指示。
[0075] 在步骤720,提示生成器基于所识别的特性来生成提示信息,并且在步骤722,提示生成器发送提示信息至非易失性存储器系统,并且主机系统发送主机命令至非易失性存储器系统。
[0076] 在一些实施方式中,在发送提示信息和主机命令至非易失性存储器系统之后,在步骤724,提示生成器发送终止提示信息至非易失性存储器系统。
[0077] 应认识到从步骤704开始的上述过程针对在步骤702识别的每个文件进行重复,直到所有文件都被处理并且在步骤726结束该规程。
[0078] 在主机系统上存在的提示生成器利用一些方法(诸如上面结合图6和图7描述的那些方法)发送提示信息至非易失性存储器系统之后,存储模块利用所接收的提示信息来有效地处理和/或存储与主机命令相关联的文件的数据。
[0079] 图8是非易失性存储器系统接收并利用提示信息以在非易失性存储器系统中有效地处理和/或存储数据的方法的一种实施方式的流程图。在步骤802,非易失性存储器系统从存在于主机系统上的提示生成器接收提示信息,并且在步骤804,非易失性存储器系统接收与提示信息相关联的一个或多个主机命令。
[0080] 如上所述,在一些实施方式中,非易失性存储器系统可以经由穿透API或从能够直接发送命令至非易失性存储器系统的装置驱动器接收提示信息以及主机命令。在其他实施方式中,非易失性存储器系统可以接收提示信息以及作为从主机系统接收的命令(诸如写入命令或读取命令)的一部分的主机命令。
[0081] 在步骤806,非易失性存储器系统的控制器的提示处理模块识别作为主机命令的一部分由主机装置发送至非易失性存储器系统的一个或多个文件的数据的一个或多个特性。如上所述,提示信息可以识别例如文件的数据是否会频繁地更新、与数据相关联的文件类型、与文件的数据相关联的逻辑块地址序列、数据是否将替换已存储在存储模块中的文件的数据、数据是否将附加到已存储在存储模块中的文件的数据、主机系统是否希望读取已存储在存储模块的文件的数据、和/或提示生成器可识别出非易失性存储器系统的控制器可用来在非易失性存储器系统中更有效地处理和/或存储数据的数据和/或文件的任何其他特性。
[0082] 在步骤808,提示处理模块基于所接收的提示信息来选择用于处理和/或存储由主机系统发送至非易失性存储器系统的一个或多个文件的数据的规程。
[0083] 例如,当提示信息指示文件的数据不会频繁更新时,诸如当主机系统在非易失性存储器系统上安装可执行文件时,存储器系统可以执行一些动作,诸如在写入规程期间绕过存储器系统内的缓冲模块(诸如高速缓存器),以及将数据直接存储到非易失性存储器系统的长期非易失性存储器中。减少非易失性存储器系统内的缓冲模块的使用改善了非易失性存储器系统的整体寿命。
[0084] 附加地或可替换地,当文件的数据将不被频繁更新并且提示信息包括针对文件的数据的逻辑地址块序列时,非易失性存储器系统可以将用于存储的逻辑块地址的数据分隔成独立的存储器物理区块。然后存储器系统防止文件的数据与可能频繁更新的其他数据一起被写入存储器物理区块中。通过将数据与不会频繁更新的其他数据一起存储在独立的存储器物理区块中,非易失性存储器系统内的写入放大(write amplification)通过减少非易失性存储器系统的控制器在修改频繁更新的数据时需要创建的第二代数据副本的数量而改善。
[0085] 当提示信息指示针对文件的数据的逻辑块地址序列时,诸如当主机装置在非易失性存储器系统上安装应用程序时,或者当主机装置在非易失性存储器系统中创建将被循序读取的文件和/或向该文件存储数据时,存储器系统可以通过在与序列(控制器将以该序列从非易失性存储器读取数据)对应的存储器物理区块序列中存储逻辑块地址序列的数据来改善未来读取的性能。在此类存储器的物理区块序列中存储文件数据允许控制器从非易失性存储器中有效地读取数据,而不是从遍及非易失性存储器随机定位的存储器物理区块读取数据。
[0086] 当提示信息指示针对文件的数据的逻辑块地址序列时,诸如当主机系统打开文件以读取存储在存储模块中的文件的数据时,非易失性存储器系统可以加载与该数据相关联的映射表,并开始缓冲与逻辑块序列相关联的数据,使得非易失性存储器系统可响应于读取命令更迅速地向主机系统提供所请求的数据。
[0087] 当提示信息指示将对已存储在存储模块中的文件的数据进行重写的数据的逻辑块地址序列时,非易失性存储器系统可以准备释放当前与存储在存储模块中的文件的数据相关联的逻辑块地址序列。
[0088] 当提示信息指示针对文件的数据的逻辑块地址序列是针对目前存储在存储模块中的文件的副本时,非易失性存储器系统可以复制来自当前存储文件数据而不是存储从主机系统接收的新数据的存储器物理区块的数据。
[0089] 当关于文件的副本的提示信息还指示文件的副本是临时文件时,非易失性存储器系统可以确定不将临时文件的副本的数据存储在非易失性存储器中,并且可替代地将临时文件的副本的数据保持在易失性存储器中,直到从提示生成器接收指示临时文件已在主机系统中关闭的进一步提示信息。
[0090] 在步骤810,非易失性存储器系统对在主机命令中接收的数据执行基于所接收的提示信息而识别的规程,并且处理主机命令。在提示生成器发送终止提示信息的实施方式中,提示处理模块可以在步骤812另外接收终止提示信息。
[0091] 图1至图8示出用于生成与主机命令相关联的提示信息的系统和方法。如上所述,位于主机系统上的提示生成器监控主机系统的动作,并识别主机系统将发送至与主机系统耦合的非易失性存储器系统的主机命令。
[0092] 提示生成器基于主机系统将与主机命令一起发送至存储系统的文件的元数据或有效载荷数据中的至少一个而生成提示信息,并提供提示信息至非易失性存储器系统。使用该提示信息,非易失性存储器系统能够有效地存储和管理存储模块的资源。
[0093] 前面详细描述旨在被视为是例示性而非限制性的,并且应理解所附权利要求书包括其等同形式旨在限定本发明的精神和范围。
[0094] 例如,在本申请中,诸如在本申请中描述的那些半导体存储器装置可以包括易失性存储器装置(诸如动态随机访问存储器(DRAM)或静态随机访问存储器(SRAM)装置)、非易失性存储器装置(诸如电阻式随机访问存储器(ReRAM)、电可擦写可编程只读存储器(EEPROM)、闪存(其也可被视为EEPROM的子集)、铁电式随机访问存储器(FRAM)和磁阻式随机访问存储器(MRAM)),以及能够存储信息的其他半导体元件。每种类型的存储器装置可以具有不同的配置。例如,闪存装置可以配置成NAND或NOR配置。
[0095] 存储器装置可以由无源元件和/或有源元件以任何组合形成。作为非限制示例,无源半导体存储器元件包括ReRAM装置元件,其在一些实施例中包括电阻式开关存储元件,诸如反熔丝、相变材料等,并且可选地包括诸如二极管等导向元件。进一步作为非限制示例,有源半导体存储器元件包括EEPROM和闪存装置元件,其在一些实施例中包括包含电荷存储区的元件,诸如浮动栅极、导电纳米颗粒或电荷存储电介质材料。
[0096] 多个存储器元件可被配置为使得它们串联连接,或使得每个元件单独可访问。作为非限制示例,NAND配置中的闪存装置(NAND存储器)通常包含串联连接的存储器元件。NAND存储器阵列可被配置为使得阵列由多个存储器串构成,其中一个串由共享单个位线并且作为群体被访问的多个存储器元件构成。可替换地,存储器元件可被配置为使得每个元件单独可访问,例如NOR存储器阵列。NAND和NOR存储器配置是示例性的,并且存储器元件可以以其他方式配置。
[0097] 位于衬底内和/或衬底上方的半导体存储器元件可以布置成二维或三维,诸如二维存储器结构或三维存储器结构。
[0098] 在二维存储器结构中,半导体存储器元件布置在单个平面或单个存储器装置级中。通常,在二维存储器结构中,存储器元件布置在一个平面中(例如,在x-z方向平面中),该平面基本平行于支撑存储器元件的衬底的主表面延伸。衬底可以是在其上或在其中形成存储器元件层的晶圆,或者其可以是在存储器元件形成后附接到存储器元件的载体衬底。作为非限制示例,衬底可以包括诸如硅的半导体。
[0099] 存储器元件可以布置在有序阵列中的单个存储器装置级中,诸如在多个行和/或列中。然而,存储器元件可以布置在不规则或不正交的配置中。存储器元件可各自具有两个或更多个电极或接触线,诸如位线和字线。
[0100] 三维存储器阵列被布置为使得存储器元件占用多个平面或多个存储器装置级,由此在三维中(即,在x、y和z方向上,其中y方向基本垂直于衬底的主表面,并且x和z方向基本平行于衬底的主表面)形成结构。
[0101] 作为非限制示例,三维存储器结构可以竖直布置为多个二维存储器装置级的叠堆。作为另一非限制示例,三维存储器阵列可被布置为多个竖直列(例如,基本上垂直于衬底的主表面(即在y方向上)延伸的列),其中每个列具有在每个列中的多个存储器元件。这些列可以被布置在二维配置中(例如在x-z平面中),产生存储器元件的三维布置,其具有在多个竖直堆叠的存储器平面上的元件。三维的存储器元件的其他配置也可以构成三维存储器阵列。
[0102] 作为非限制示例,在三维NAND存储器阵列中,存储器元件可耦合在一起以在单个水平(例如x-z)存储器装置级内形成NAND串。可替换地,存储器元件可耦合在一起以形成横跨多个水平存储器装置级的竖直NAND串。可设想其他三维配置,其中一些NAND串包含在单个存储器级中的存储器元件,而其他串包含跨越多个存储器级的存储器元件。三维存储器阵列还可以被设计在NOR配置和ReRAM配置中。
[0103] 通常,在单体三维存储器阵列中,一个或多个存储器装置级在单个衬底上面形成。可选地,单体三维存储器阵列也可以具有至少部分地在单个衬底内的一个或多个存储器层。作为非限制示例,衬底可以包括半导体(诸如硅)。在单体三维存储器阵列中,构成阵列的每个存储器装置级的层通常形成在阵列的下衬磁存储器装置级的层上。然而,单体三维存储器阵列的相邻存储器装置级的层可以被共享或在存储器装置级之间具有中间层。
[0104] 然后同样地,二维阵列可以分离地形成,然后封装在一起以形成具有多个存储器层的非单体存储器装置。例如,可以通过在分离的衬底上形成存储器级并且依次在顶部上堆叠存储器级来构造非单体堆叠存储器。衬底可以在堆叠之前被减薄或从存储器装置级移除,但由于存储器装置级初始形成在分离的衬底上方时,所得的存储器阵列不是单体三维存储器阵列。进一步地,多个二维存储器阵列或三维存储器阵列(单体或非单体的)可以形成在分离的芯片上,然后封装在一起以形成堆叠芯片的存储器装置。
[0105] 相关联的电路系统通常是存储器元件的操作和与存储器元件的通信所需要的。作为非限制示例,存储器装置可以具有用于控制和驱动存储器元件以实现诸如编程和读取的功能的电路系统。该相关联电路系统可以在与存储器元件相同的衬底上和/或在分离的衬底上。例如,用于存储器读-写操作的控制器可以位于独立的控制器芯片上,和/或位于与存储器元件相同的衬底上。
[0106] 本领域技术人员将认识到,如在本文中所描述和本领域技术人员所理解,本发明不限于所描述的二维和三维示例性结构,而是涵盖在本发明的精神和范围内的所有相关存储器结构。