用于获得和使用非易失性存储器健康信息的系统和方法转让专利

申请号 : CN201210504255.2

文献号 : CN103092764B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : N·瑟弗A·费N·J·瓦卡拉特

申请人 : 苹果公司

摘要 :

用于获得和使用非易失性存储器(“NVM”)健康信息的系统和方法被提供。健康信息可包括与NVM装置的各部分的性能和可靠性相关联的各种各样的信息,诸如NVM的一部分中检测到的错误数量或者从非易失性存储器的一部分读取或对非易失性存储器的一部分编程所需的时间量。在操作期间,地址特定的健康信息可被动地存储在主机装置上,并作为命令的一部分被提供给存储控制器。存储控制器可从命令提取健康信息,并使用该信息来执行访问请求。在访问请求被完成之后,存储控制器可以更新健康信息,并将该信息传送回主机装置。

权利要求 :

1.一种用于获取和使用非易失性存储器健康信息的系统,包括:非易失性存储器;

存储控制器,所述存储控制器经由第一总线在通信上被耦接到所述非易失性存储器;

以及

主机装置,所述主机装置具有至少一个存储组件,其中所述主机装置经由第二总线在通信上被耦接到所述存储控制器,以及其中所述主机装置配置为:在所述至少一个存储组件中维持用于所述非易失性存储器的健康信息数据库,所述健康信息数据库存储由所述存储控制器生成的地址特定的健康信息,其中,所述地址特定的健康信息包括用于在地址处访问所述非易失性存储器的至少一个软件和/或硬件参数;

从文件系统接收文件系统命令;

以所述文件系统命令确定要访问的物理地址;

访问所述健康信息数据库以检索与所述物理地址对应的地址特定的健康信息;以及经由所述第二总线将一命令提供给所述存储控制器,其中该命令包括访问请求、所述物理地址和所述地址特定的健康信息,其中所述存储控制器配置为:

从所述命令提取所述地址特定的健康信息;以及根据所述地址特定的健康信息中所包括的所述至少一个软件和/或硬件参数来执行所述访问请求。

2.如权利要求1所述的系统,其中所述非易失性存储器包括NAND闪速存储器。

3.如权利要求1所述的系统,其中所述存储控制器还配置为:更新所述地址特定的健康信息;以及

将更新后的地址特定的健康信息提供给所述主机装置。

4.如权利要求3所述的系统,其中所述主机装置还配置为在所述健康信息数据库中存储所述更新后的地址特定的健康信息。

5.如权利要求1所述的系统,其中所述主机装置还配置为独立于存储在所述健康信息数据库中的任何地址特定的健康信息而操作。

6.如权利要求1所述的系统,其中所述主机装置被禁止独立地修改所述健康信息数据库中的任何地址特定的健康信息。

7.如权利要求1所述的系统,其中所述地址特定的健康信息包括纠错参数、编程参数、读取参数、或它们的任何组合。

8.一种由与非易失性存储器通信的存储控制器实施的方法,所述方法包括:从主机装置接收命令,所述命令包括:

访问请求;

地址;以及

所述存储控制器生成的与所述地址相关联的地址特定的健康信息,其中,所述地址特定的健康信息包括用于在地址处访问所述非易失性存储器的至少一个存储控制器软件和/或硬件设置;

处理所述地址特定的健康信息以获得所述至少一个存储控制器软件和/或硬件设置;

以及

根据所述至少一个存储控制器软件和/或硬件设置来改变所述访问请求的执行。

9.如权利要求8所述的方法,还包括:

确定所述至少一个存储控制器软件和/或硬件设置是否需要改变以便执行所述访问请求;

响应于确定所述至少一个存储控制器软件和/或硬件设置中的一个需要改变以便执行所述访问请求,更新所述地址特定的健康信息以包含所述至少一个存储控制器软件和/或硬件设置的改变;以及将更新后的地址特定的健康信息和所述地址传送到所述主机装置。

10.如权利要求8所述的方法,其中所述地址特定的健康信息包括纠错码(“ECC”)参数。

11.如权利要求8所述的方法,其中所述地址特定的健康信息包括读取参数。

12.如权利要求8所述的方法,其中所述地址特定的健康信息包括编程参数。

13.如权利要求8所述的方法,其中所述访问请求为读取请求或编程请求。

14.一种非易失性存储器封装件,包括:

用于与主机通信的接口;

非易失性存储器;以及

存储控制器,所述控制器被耦接到所述接口和所述非易失性存储器,所述存储控制器操作用于:从所述接口接收命令,所述命令包括访问请求、地址和地址特定的健康信息,其中所述地址特定的健康信息包括用于在地址处访问所述非易失性存储器的至少一个存储控制器软件和/或硬件设置,并且其中,所述地址特定的健康信息由所述存储控制器生成;

处理所述地址特定的健康信息以获得所述至少一个存储控制器软件和/或硬件设置;

以及

根据所述至少一个存储控制器软件和/或硬件设置来改变所述访问请求的执行。

15.如权利要求14所述的非易失性存储器封装件,其中所述存储控制器还操作用于:确定所述至少一个存储控制器软件和/或硬件设置是否需要改变以便执行所述访问请求;

响应于确定所述至少一个存储控制器软件和/或硬件设置中的一个需要改变以便执行所述访问请求,更新所述地址特定的健康信息以包含所述至少一个存储控制器软件和/或硬件设置的改变;以及将更新后的地址特定的健康信息和所述地址传送到所述接口。

16.如权利要求14所述的非易失性存储器封装件,其中所述地址特定的健康信息包括纠错码ECC参数。

17.如权利要求14所述的非易失性存储器封装件,其中所述地址特定的健康信息包括读取参数。

18.如权利要求14所述的非易失性存储器封装件,其中所述地址特定的健康信息包括编程参数。

19.如权利要求16所述的非易失性存储器封装件,还包括被耦接到所述控制器的纠错码ECC引擎,其中所述存储控制器指示所述ECC引擎使用所述ECC参数。

20.一种与非易失性存储器通信的存储控制器,包括:接收单元,用于从主机装置接收命令,所述命令包括:访问请求;

地址;以及

与所述地址相关联的地址特定的健康信息,其中,所述地址特定的健康信息包括用于在地址处访问所述所述非易失性存储器的至少一个存储控制器软件和/或硬件设置;

处理单元,用于处理所述地址特定的健康信息以获得所述至少一个存储控制器软件和/或硬件设置;以及执行单元,用于根据所述至少一个存储控制器软件和/或硬件设置来改变所述访问请求的执行。

21.如权利要求20所述的存储控制器,还包括:确定单元,用于确定所述至少一个存储控制器软件和/或硬件设置是否需要改变以便执行所述访问请求;

更新单元,用于如果确定所述至少一个存储控制器软件和/或硬件设置中的一个需要改变以便执行所述访问请求,则更新所述地址特定的健康信息以包含所述至少一个存储控制器软件和/或硬件设置的改变;以及传送单元,用于将更新后的地址特定的健康信息和所述地址传送到所述主机装置。

22.如权利要求20所述的存储控制器,其中所述地址特定的健康信息包括纠错码(“ECC”)参数。

23.如权利要求20所述的存储控制器,其中所述地址特定的健康信息包括读取参数。

24.如权利要求20所述的存储控制器,其中所述地址特定的健康信息包括编程参数。

25.如权利要求20所述的存储控制器,其中所述访问请求为读取请求或编程请求。

说明书 :

用于获得和使用非易失性存储器健康信息的系统和方法

技术领域

[0001] 本文档涉及用于获得和使用非易失性存储器健康(health)信息的系统和方法。

背景技术

[0002] 各种类型的非易失性存储器(“NVM”),诸如闪速存储器(例如,NAND闪速存储器和NOR闪速存储器),可被用于海量(mass)存储。例如,消费性电子产品(例如,便携式媒体播放器)使用闪速存储器来存储数据,包括音乐、视频、图像、以及其它媒体或类型的信息。
[0003] 在一些闪速存储器系统中,主机系统请求对逻辑块地址(LBA)的读取和编程操作,所述逻辑块地址被映射或翻译为闪速存储器的物理块地址。该映射允许主机操作系统以类似于盘驱动器(disk drive)的方式访问闪速存储器。尽管闪速存储器能够以随机访问的方式一次被读取或编程一个字节或字,但是它通常一次被擦除一个块。以新擦除的块开始,该块内的任何字节都可以被编程。一旦一个字节已被编程,则直到整个块被擦除它通常才能被再次编程。因为闪速存储器具有有限数量的擦除-编程循环,所以希望使擦除-编程循环的数量最小化以延长闪速存储器的寿命。
[0004] 由于上述的闪速存储器的独特特性,因此需要能够有效地获得和使用闪速存储器和其它NVM的健康信息的系统、方法和装置。

发明内容

[0005] 用于获得和使用非易失性存储器(“NVM”)健康信息的系统和方法被公开。本发明的实施例可在具有主机和非易失性存储器封装件(package)的系统中运用。主机可包括易失性存储器并运行非易失性存储器功能,诸如维持(maintaining)逻辑至物理映射,对NVM封装件发出编程、读取或擦除命令,以及执行损耗均衡(wear leveling)和垃圾收集(garbage collection)操作。根据本发明实施例,主机还可维持健康数据库。NVM封装件可换地(commutatively)耦接到主机并可包括存储控制器和非易失性存储器(例如,Nand闪存)。在一些实施例中,NVM封装件还可包括纠错码引擎。
[0006] 健康数据库可存储与NVM相关的信息。即,对于NVM中的每一物理位置(例如,页或块),在数据库中存储对于该物理位置特定的健康信息。存储在数据库中的健康信息可以是地址特定的健康信息,所述地址特定的健康信息指定用于在该特定地址位置处访问NVM的各种软件和/或硬件参数。健康信息例如可包括页正确性,阈值电压,读取、编程或擦除所需的时间和/或循环数量,使用的纠错码等。健康信息可由存储控制器生成,但存储在由主机维持的数据库中。尽管健康信息可被存储在主机上,但主机并不以任何方式解释、修改或使用健康信息以管理NVM。
[0007] 当主机希望访问NVM时,它可汇编(assemble)包含访问命令(例如,读取或编程命令)、地址、和地址特定的健康信息的命令包,并将该命令包提供给存储控制器。主机访问健康信息数据库以基于地址检索(retrieve)地址特定的健康信息,用于包含到命令包中。当存储控制器接收到命令包时,它可提取健康信息,并根据为NVM中正被访问的物理位置指定的软件和/或硬件参数执行访问请求。
[0008] 命令被执行之后,存储控制器然后可确定是否需要改变一个或更多个操作参数,以便执行访问请求。如果需要改变,则存储控制器可更新健康信息,并将更新后的健康信息和NVM地址传送给主机装置。主机然后可将更新后的健康信息存储在数据库中。

附图说明

[0009] 考虑到结合附图的以下详细描述时,本发明的以上及其它方面、其本质和各种特征将变得更为明显,在附图中,同样的附图标记始终指的是同样的组件,并且其中:
[0010] 图1是描绘根据本发明各种实施例的示意性系统的示图,所述示意性系统包括主机和具有存储控制器的NVM封装件;
[0011] 图2是根据本发明各种实施例的示意性系统;
[0012] 图3是根据本发明各种实施例的示意性数据结构;
[0013] 图4是描绘根据本发明一些实施例的用于获得和使用健康信息的示意性处理的流程图;以及
[0014] 图5是根据本发明各种实施例的示意性存储控制器。

具体实施方式

[0015] 图1是描绘系统100的示图,所述系统100包括NVM封装件104和主机102。主机102可被配置为将健康信息提供给NVM封装件104,所述NVM封装件104可包括存储控制器106、主机接口110、和具有相应的NVM128a-n的存储器芯片(die)112a-n。例如,如示例系统100中所示,主机102可给NVM封装件104提供健康信息,所述NVM封装件104可使用健康信息来执行可改善系统100的性能、可靠性和/或电力使用的存储器管理功能(例如,损耗均衡和垃圾收集)以及访问请求(例如,读取、编程和擦除操作)。NVM封装件104还可更新健康信息并将其传输回主机102,以存储在健康信息数据库中。
[0016] 主机102可以是各种各样的主机装置和/或系统中的任何种,诸如便携式媒体播放器、蜂窝电话、口袋尺寸的个人计算机、个人数字助理(“PDA”)、台式计算机、膝上计算机、和/或平板(tablet)计算装置。NVM封装件104可包括NVM128a-n(例如,在存储器芯片112a-n中),并且可以是球栅阵列封装件或其它适合类型的集成电路(“IC”)封装件。NVM封装件104可以是主机102的一部分和/或与其相分离。例如,主机102可以是板级(board-level)装置,而NVM封装件104可以是安装在该板级装置上的存储器子系统。在其它实施例中,NVM封装件104可以用有线(例如,SATA)或无线(例如,BluetoothTM)接口被耦接到主机102。
[0017] 主机102可包括被配置为与NVM封装件104交互的主机控制器114。例如,主机102可以给NVM封装件104传送各种访问请求,诸如读取、编程和擦除操作。主机控制器114可包括被配置为基于固件指令和/或软件的执行来执行操作的一个或更多个处理器和/或微处理器。额外地和/或替换地,主机控制器114可包括被配置为执行各种操作的基于硬件的组件,诸如专用集成电路(“ASIC”)。主机控制器114可以根据主机102和NVM封装件104之间共享的通信协议,将传送给NVM封装件104的信息(例如,命令、数据)格式化。
[0018] 主机102可包括存储组件134,所述存储组件134包括易失性存储器108。易失性存储器108可以是各种各样的易失性存储器类型中的任何种,诸如高速缓冲存储器或RAM。主机102可以使用易失性存储器108来执行存储器操作和/或临时存储正从NVM封装件104被读取的数据和/或正被写入到NVM封装件104的数据。例如,易失性存储器108可临时存储将要发送给NVM封装件104的存储器操作的队列,或者存储从NVM封装件104接收到的数据。另外,根据本发明的实施例,易失性存储器108可以存储健康信息数据库。主机控制器114可以访问健康信息数据库以检索地址特定的健康信息,用于包含到发出给存储控制器106的命令中。一般需要在主机102上的易失性存储器、而不是NVM封装件104上的易失性存储器中维持健康信息数据库,因为足量的易失性存储器太昂贵以至于不能保持在NVM封装件104中。
[0019] 主机102可使用主机接口110和存储控制器106经由(over)通信信道116与NVM封装件104通信。通信信道116可以是适合双向通信的任何总线。通信信道116可以是固定的、可拆卸的或无线的。例如,通信信道116可以是通用串行总线(USB)、串行高级技术(SATA)总线、或者任何其它适合的总线。
[0020] 存储控制器106可以包括被配置成基于固件指令和/或软件的执行来执行操作的一个或更多个处理器和/或微处理器120。额外地和/或替换地,存储控制器106可包括被配置成执行不同操作的基于硬件的组件,诸如ASIC。存储控制器106可以执行各种各样的操作,诸如执行由主机102发出的命令。
[0021] 主机控制器114和存储控制器106可以单独地或组合地执行各种存储器管理功能,诸如垃圾收集和损耗均衡。在存储控制器106被配置为执行至少一些存储器管理功能的实施中,NVM封装件104可被称为“被管理(managed)NVM”(或者对于NAND闪速存储器被称为“被管理NAND”)。这可以与“原始(raw)NVM”(或者对于NAND闪速存储器被称为“原始NAND”)相对照,在“原始NVM”中,在NVM封装件104外部的主机控制器114对于NVM封装件104执行存储器管理功能。
[0022] 在一些实施例中,存储控制器106可与存储器芯片112a-n被并入到同一封装件中。在其它实施例中,存储控制器106可以在物理上位于单独的封装件中或者与主机102位于同一封装件中。在一些实施例中,可以省掉存储控制器106,并且通常由存储控制器106执行的所有存储器管理功能(例如,垃圾收集和损耗均衡)可以由主机控制器(例如,主机控制器
114)执行。
[0023] 存储控制器106可包括易失性存储器122。易失性存储器122可以是各种各样的易失性存储器类型中的任何种,诸如高速缓冲存储器或RAM。存储控制器106可以使用易失性存储器122来执行访问请求和/或临时存储正从存储器芯片112a-n中的NVM128a-n被读取的数据和/或正被写入到存储器芯片112a-n中的NVM128a-n的数据。例如,易失性存储器122可以存储固件,而存储控制器106可以使用该固件来执行对NVM封装件104的操作(例如,读取/编程操作)。易失性存储器122还可临时存储与NVM封装件104中的NVM相关联的健康信息。存储控制器106可以使用NVM128a-n来持久存储各种各样的信息,诸如调试日志、指令、以及NVM封装件104用来操作的固件。
[0024] 存储控制器106可以使用共享的内部总线126来访问NVM128a-n,所述NVM128a-n可被用于持久数据存储。尽管在NVM封装件104中只描绘了一条共享的内部总线126,但是NVM封装件可以包括多于一条的共享内部总线。每条内部总线可以连接到如关于存储器芯片112a-n所示的多个(例如,2个、3个、4个、8个、32个等)存储器芯片。存储器芯片112a-n可以以各种各样的配置被物理地布置,包括层叠配置,并且根据一些实施例可为集成电路(“IC”)芯片。
[0025] NVM128a-n可以是各种各样的NVM中的任何种,诸如基于浮栅或电荷俘获技术的NAND闪速存储器、NOR闪速存储器、可擦除可编程只读存储器(“EPROM”)、电可擦除可编程只读存储器(“EEPROM”)、铁电RAM(“FRAM”)、磁阻RAM(“MRAM”)、相变存储器(“PCM”)、或它们的任何组合。
[0026] 图2示出电子装置200的框图,其能以更多细节示出根据各种实施例的系统100(图1)的固件、软件和/或硬件组件中的一些。电子装置200可具有上面关于图1描述的任何特征和功能性,反之亦然。如示出的那样,虚线对层进行了划界。理解的是,对哪些组件落入分界线内的描绘只是示意性的,并且一个或更多个组件可以隶属于不同的层。
[0027] 电子装置200可包括文件系统210、主机控制器212、NVM总线控制器216、存储控制器220、和NVM230。在一些实施例中,文件系统210和主机控制器212可以是软件或固件模块,而NVM总线控制器216、存储控制器220和NVM230可以是硬件模块。相应地,在这些实施例中,主机控制器212可代表NVM接口218的软件或固件方面,而NVM总线控制器216可代表NVM接口218的硬件方面。
[0028] 文件系统210可包括任何适合类型的文件系统,诸如FileAllocationTable(“FAT”)文件系统或者Hierarchical File System Plus(“HFS+”),并且可以是电子装置200的操作系统的一部分(例如,图1的SoC控制电路系统(circuitry)112的一部分)。在一些实施例中,文件系统210可包括闪存文件系统(flash file system),所述闪存文件系统提供页的逻辑到物理的映射。在这些实施例中,文件系统210可以执行以下讨论的主机控制器
212的一些或所有功能性,并且因此文件系统210和主机控制器212可以是或者可以不是分离的模块。
[0029] 文件系统210可以管理应用和操作系统的文件和文件夹结构。文件系统210可以在运行于电子装置200上的应用或操作系统的控制下操作,并可在应用或操作系统请求从NVM230读取信息或在NVM230中存储信息时给主机控制器212提供写入和读取命令。随着每个读取或写入命令一起,文件系统210可提供用于指示用户数据应当从何处被读取或被写入到何处的逻辑地址,诸如逻辑页地址或者具有页偏移(page offset)的LBA。
[0030] 文件系统210可给不直接与NVM230兼容的主机控制器212提供读取和写入请求。例如,逻辑地址可以使用基于硬盘驱动器的系统所典型的约定或协议。不像闪速存储器,基于硬盘驱动器的系统可以盖写存储位置而不用先执行块擦除。此外,硬盘驱动器可不需要损耗均衡以增加装置的寿命。因此,NVM接口218可以执行存储器特定的、出售商特定的或它们两者的任何功能,以便以适于NVM230的方式处理文件系统请求并执行其它管理功能。
[0031] 主机控制器212可包括翻译层214。在一些实施例中,翻译层214可以是或包括闪存翻译层(“FTL”)。关于写入命令,翻译层214可以将所提供的逻辑地址映射到NVM230上的空闲的、被擦除的物理位置。关于读取命令,翻译层214可以使用所提供的逻辑地址来确定存储被请求数据的物理地址。因为每个NVM可取决于该NVM的大小或出售商而具有不同的布局,所以该映射操作可以是存储器和/或出售商特定的。除了逻辑至物理地址映射之外,翻译层214还可以执行任何其它适合的功能。例如,翻译层214可执行可以是闪存翻译层所典型的任何其它功能,诸如垃圾收集(“GC”)和损耗均衡。
[0032] 例如,翻译层214可以执行垃圾收集,以为了擦除使NVM230的被编程块空闲。一旦被使得空闲和擦除,存储位置就可以用来存储例如新的从文件系统210接收到的用户数据。在一些情况下,GC处理可涉及将有效数据从被编程块复制到具有被擦除的存储位置的另一块,由此使被编程块中的有效数据无效。一旦被编程块中的所有存储位置都已经被无效,翻译层214就可以指示NVM总线控制器216来对该被编程块执行擦除操作。如这里所使用的那样,“有效数据”可指响应于与一个或更多个逻辑地址(例如,LBA)对应的最近写入请求而已被编程的用户数据,并因此可以是对于所述一个或更多个逻辑地址的用户数据的有效版本。
[0033] 主机控制器212可包括用于存储地址特定的健康信息的健康数据库215。健康数据库215可包括与NVM230内的物理位置相对应的信息的查找表。当文件系统210向主机控制器212发送命令和逻辑地址时,翻译层214确定NVM230中的物理位置,并且主机控制器212使用该物理位置来从健康数据库215获得地址特定的健康信息。在一些实施例中,主机控制器
212将从健康数据库215获得的健康信息包含到将被提供给存储控制器220的命令包中。在该实施例中,主机控制器212用作数据检索代理(agent),并不使用健康信息来作出任何NVM管理决定。主机控制器212也可通过用从存储控制器220接收到的健康信息更新健康数据库
215来用作数据填充(populating)代理。
[0034] 存储控制器220生成存储在健康数据库215中的健康信息。结果,只有存储控制器220能够解释和使用健康信息。虽然主机控制器212可以在数据库215中存储健康信息,但是它不能用来作出NVM管理决定。
[0035] 存储在健康数据库(其可驻留在图1的易失性存储器108中)中的信息可以是这样的信息:所述信息使得NVM接口218下游的软件和/或硬件组件或者主机接口110能够对于NVM230的任何特定物理位置更有效地处理命令请求。例如,健康信息可以指定那个纠错码应该被驻留在例如NVM封装件104上的ECC引擎实施。作为另一个例子,健康信息可以对存储控制器硬件设置进行存储,诸如NVM内的特定物理位置所需的编程电压、编程/验证循环的数量、和编程分辨率。
[0036] 健康信息可包括指示NVM的一部分的劣化和/或故障的可能性的任何数据。一般而言,健康信息可以包含关于NVM的可被用来对其有效和可靠的使用作出决定的任何数据。通过存储关键性能和校准参数,存储控制器106或220可以改变其执行命令请求的方式,以避免不必要的延迟(latency)和数据污损(corruption)。
[0037] 在一个具体例子中,健康信息可被用于预补偿由主机发起的读取操作。主机可以发起对NVM的特定部分(例如,块)的读取操作。存储控制器可以接收该读取操作并检查与NVM的物理地址(例如,块或页)相关联的健康信息。健康信息可指示块被读取的最近(last)时间以及需要多于一个读取循环的读取操作。例如,读取操作可能已花费八个读取循环,其中每个读取循环采用渐进(progressively)变化的读取条件(例如,渐进偏移的阈值电压值)。基于健康信息,存储控制器可以决定使用最近的已知的成功读取条件来对物理位置执行所请求的读取操作。如果读取操作成功,那么存储控制器可以将关于该物理位置(例如,块)的健康信息不改变地返回给主机。然而,如果读取操作需要额外的读取循环,那么存储控制器可以更新关于该物理位置(例如,块)的健康信息,并将更新后的健康信息返回给主机。
[0038] 在另一例子中,当主机发起编程操作时,健康信息可被用于更有效地对NVM的一部分编程。NVM(例如,NAND闪速存储器)趋于随着时间、使用(例如,读取/编程循环的数量)和操作温度而劣化。例如,该劣化可自身表现为存储单元的阈值电压的偏移。因此,健康信息可以保持对NVM的各部分的这些关键参数的跟踪。当存储控制器106从主机102接收到用于给NVM128a-n的特定部分编程数据的请求时,它可参考与存储器的该部分相关联的健康信息,并确定被编程单元可能劣化多少以及可能多快劣化。例如,如果主机102发起对可能很快劣化(例如,如健康信息中的时间、温度和循环数据所指示)的存储器部分的编程操作,那么存储控制器106可决定改变编程电压以补偿预期的阈值电压漂移。
[0039] 根据一些实施例可被获得和使用的健康信息的额外例子可包括反映NVM的一部分中的坏(bad)比特数量的比特错误率数据、DLL定时设置、和/或编程或读取数据所需的时间或循环数量。健康信息还可在页正确性方面被编译,其可指示存储装置的用于纠正检测到的错误的能力。例如,纠正错误所需的纠错码(“ECC”)循环的数量或所使用的ECC技术(例如,高比特翻转(flip)ECC、低比特翻转ECC、软件ECC等)可以指示NVM的一部分的健康。
[0040] 主机控制器212可与NVM总线控制器216接口(interface)以完成NVM访问命令(例如,编程、读取和擦除命令)。NVM总线控制器216可用作对存储控制器220的硬件接口,并可使用总线协议、数据率和其它规范与存储控制器220通信。
[0041] NVM接口218可以基于存储管理数据来管理NVM230,这里所述存储管理数据有时被称为“元数据(metadata)”。元数据可由主机控制器212生成,或者可由在主机控制器212的控制下操作的模块生成。例如,元数据可以包括用于以下的任何信息:管理逻辑地址和物理地址之间的映射、坏块管理、损耗均衡、用于检测或纠正数据错误的纠错码(“ECC”)数据、或者它们的任何组合。元数据可包括与用户数据一起由文件系统210提供的数据,诸如逻辑地址。因此,一般而言,“元数据”可指关于或涉及用户数据或者一般被用于管理非易失性存储器的操作和存储位置的任何信息。在一些实施例中,元数据和健康信息是互斥的。
[0042] NVM接口218可配置为在NVM230中存储元数据。在一些实施例中,NVM接口218可将与用户数据相关联的元数据存储在存储该用户数据的相同存储位置(例如,页)处。例如,NVM接口218可以在NVM230的一个或更多个存储位置处存储用户数据、相关联的逻辑地址、和用于该用户数据的ECC数据。NVM接口218还可在相同存储位置中存储关于该用户数据的其它类型的元数据。
[0043] NVM接口218还可在NVM230中存储健康信息。NVM接口218可以周期性地将健康数据库215的内容存储在NVM230中,或者其可在掉电(powerdown)事件期间(例如,装置被关断时)存储它。如果健康信息被存储在NVM230中,那么它可以在上电(power up)期间被检索以填充健康数据库215。
[0044] NVM接口218可以存储逻辑地址,以使得在NVM230的上电时或在NVM230的操作期间电子装置200可以确定什么数据驻留在该位置处。特别地,因为文件系统210可根据其逻辑地址而不是其物理地址来参考用户数据,所以NVM接口218可将用户数据和逻辑地址存储在一起以维持它们的关联。这样,即使维持物理到逻辑映射的NVM230中的索引表变得过时,NVM接口218也仍然可在例如电子装置200的上电或重启时确定适合的映射。
[0045] 图3是命令包300的示意性示图,所述命令包300可以在主机(例如,图1的主机102)装置和存储控制器(例如,图1的存储控制器106)之间被传输。命令包300可包括命令访问请求331、地址333、健康信息335、数据337和元数据339。命令访问请求331可以是由主机装置提供给存储控制器的任何适合的指令,例如,诸如读取、编程或擦除请求。地址333可以是待访问的NVM内的物理地址。例如,地址可以由翻译层(例如,翻译层214)导出。
[0046] 命令包还可包括健康信息335。健康信息335可与地址333相关联,并因此这里可被称为地址特定的健康信息。地址特定的健康信息可由主机控制器从健康数据库(例如,健康数据库215)检索到,所述主机控制器将它包含在命令包300中。当存储控制器接收到命令包300时,它可提取健康信息335,对其进行处理,并相应地执行命令访问请求331。根据一些实施例,健康信息335可包括地址特定的NVM健康指标(indicator),诸如页正确性,阈值电压,读取、编程或擦除NVM的该部分所需的时间和/或循环数量。在其它实施例中,健康信息335可以是健康等级,所述健康等级可以是从各个(individual)NVM健康指标计算出的NVM的一般化健康指示。健康信息335对存储控制器220可以是特定的,并因此可以仅由该存储控制器解释和使用。因此,不管哪个制造商制造存储控制器和NVM,它都可以接收它可处理和使用的命令包300中的健康信息。并且,主机控制器对健康信息的内容是完全不可知的(agnostic)。
[0047] 数据结构330还可包括数据337和元数据339。例如,当访问请求是编程请求时,数据337可以是正被编程到NVM的数据。数据337可以是任何适合类型的数据。在主机装置为媒体播放器的实施例中,数据337可以代表一个或更多个媒体文件(例如,歌曲、视频、图像、电子书等)。元数据339可以包括用于以下的任何信息:管理逻辑地址和物理地址之间的映射、坏块管理、损耗均衡、用于检测或纠正数据错误的纠错码(“ECC”)数据、或者它们的任何组合。
[0048] 在示例性的命令编程请求中,存储控制器可在第一总线循环中经由通信信道(例如,图1的通信信道116)从主机装置接收编程命令包,并将其存储在命令寄存器中(例如,易失性存储器122中)。然后可以使用一个或更多个总线循环以将地址333输入到该易失性存储器中的地址寄存器中。接下来,数据337和元数据339可被加载到页缓冲器中,并然后在存储于该地址寄存器中的地址处被编程到NVM中。
[0049] 在示例性的命令读取请求中,存储控制器可在第一总线循环中经由通信信道从主机装置接收命令读取包,并将其存储在命令寄存器中。可使用一个或更多个总线循环以将地址333输入到地址寄存器中。接下来,被存储在NVM中地址333处的数据可被传输到页缓冲器,并在总线准备好时被传输到主机。
[0050] 图4是根据本发明实施例的系统如何使用健康信息的步骤的示意性流程图。系统除了别的以外可包括主机装置(例如,主机102)、存储控制器(存储控制器106)和NVM(例如,NVM128)。在步骤410处,在至少一个存储组件中维持用于NVM的健康信息数据库。该至少一个存储组件可以是与主机装置相关联的易失性存储器。健康信息数据库存储物理地址特定的健康信息。
[0051] 在步骤420处,命令被提供给存储控制器,并且每个命令包括命令访问请求、地址、和地址特定的健康信息。主机装置可以通过从翻译层(例如,翻译层214)获得物理地址并使用该物理地址以从健康信息数据库检索地址特定的健康信息来对命令进行打包。由主机组织的命令包可类似于上面关于图3讨论的命令包。
[0052] 在步骤430处,存储控制器可从命令提取地址特定的健康信息。在步骤440处,存储控制器可根据地址特定的健康信息执行访问请求。例如,存储控制器在针对NVM的物理地址执行命令时,考虑地址特定的健康信息中存在的任何硬件和/或软件参数。如果编程命令正被执行,那么健康信息可对于给定位置指定应如何精细地调整编程或者指定编程时间、或最终编程电压电平应当是什么。使用该信息,控制器可以以最适于其预想位置的方式对数据进行编程。
[0053] 在步骤450处,确定是否根据地址特定的健康信息执行了访问请求。如果根据地址特定的健康信息执行了访问请求,则处理在步骤480处结束。如果没有根据地址特定的健康信息执行访问请求,则处理进行到步骤460。例如,如果需要与包含于地址特定的健康信息中不同的软件和/或硬件参数来执行访问请求,则处理可进行到步骤460。例如,存储控制器可以将所用的实际参数与健康信息建议应该是的参数进行比较。
[0054] 在步骤460处,存储控制器可通过将改变的参数打包到包中来更新健康信息并将其提供给主机装置。该包可包括地址和更新后的健康信息。在步骤470处,主机装置可使用从存储控制器接收到的改变的参数来更新健康信息数据库中的健康信息。
[0055] 要理解的是,图4中所示的步骤只是示意性的且可以修改或省略现有的步骤,可以添加额外的步骤,并且可以改变某些步骤的顺序。
[0056] 图5是根据本发明各种实施例的示意性的存储控制器。该存储控制器500与非易失性存储器(“NVM”)通信,并包括:接收单元510,用于从主机装置接收命令,该命令包括访问请求、地址、以及与该地址相关联的地址特定的健康信息;处理单元520,用于处理地址特定的健康信息以获得至少一个NVM操作参数;和执行单元530,用于根据该至少一个NVM操作参数执行访问请求。
[0057] 可选地,存储控制器500还包括:确定单元540,用于确定该至少一个操作参数是否需要被改变以便执行访问请求;更新单元550,用于如果确定该至少一个操作参数中的一个需要被改变以便执行访问请求,则更新健康信息以包含该至少一个操作参数的改变;和传送单元560,用于将更新后的健康信息和该地址传送给主机装置。
[0058] 可选地,该至少一个NVM操作参数包括纠错码(“ECC”)参数。
[0059] 可选地,该至少一个NVM操作参数包括读取参数。
[0060] 可选地,该至少一个NVM操作参数包括编程参数。
[0061] 可选地,访问请求为读取请求或编程请求。
[0062] 要理解的是,存储控制器500可以由软件组件或硬件组件来实施。本领域技术人员可以对图5中的单元进行组合、分离、子组合。所有这样的组合、分离和子组合均落在本发明的范围内。
[0063] 虽然已经描述了用于获得和使用非易失性存储器健康信息的系统和方法,但是要理解的是,在其中可以作出很多改变而不背离本发明的精神和范围。本领域普通技术人员所认为的对所要求保护的主题的非实质性改变,未知的或以后设计的,都被明确地预计作为等价地在权利要求的范围内。因此,本领域普通技术人员现在或以后所知的明显替换被限定在所定义的要素的范围内。
[0064] 出于示意而不是限制的目的给出本发明的所述实施例。