主机辅助的存储块的压缩转让专利

申请号 : CN201380043687.0

文献号 : CN104583977B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : A·梅斯罗斯B·柔特巴德

申请人 : 苹果公司

摘要 :

在包括主机和存储器控制器的系统中,一种用于数据存储的方法包括将来自非易失性存储器的一个或多个源块从所述存储器控制器传送至所述主机以用于压缩,存储器控制器与所述主机分离并且将用于所述主机的数据存储在非易失性存储器中。通过将有效数据从源块复制到一个或多个目标块中而在主机中压缩源块。将目标块从主机传送至存储器控制器,并且由存储器控制器将目标块存储在非易失性存储器中。

权利要求 :

1.一种用于数据存储的方法,包括:

在包括主机和存储器控制器的系统中,将来自非易失性存储器的一个或多个源块从所述存储器控制器传送至所述主机以用于压缩,分配主机存储器的一部分以供存储器控制器使用,所述存储器控制器与所述主机分离并将用于所述主机的数据存储在所述非易失性存储器中;

通过所述存储器控制器,发送请求以从所述主机存储器的所述部分检索与所述非易失性存储器的一个或多个源块有关的信息项;

通过所述主机,从所述主机存储器的所述部分检索所述信息项;

通过所述主机,将所述信息项发送给所述存储器控制器;

通过所述存储器控制器,根据所述信息项从所述非易失性存储器读取所述一个或多个源块;

从所述存储器控制器向所述主机传送所述一个或多个源块;

通过将有效数据从所述一个或多个源块复制到一个或多个目标块中而在所述主机中压缩所述一个或多个源块;

将所述一个或多个目标块从所述主机传送至所述存储器控制器;以及由所述存储器控制器将所述一个或多个目标块存储在所述非易失性存储器中。

2.根据权利要求1所述的方法,其中传送所述一个或多个源块包括将所述一个或多个源块存储在所述主机存储器中,并且其中压缩所述源块包括使用所述主机的处理器来生成所述目标块并将所述一个或多个目标块存储在所述主机存储器中。

3.根据权利要求1所述的方法,其中复制所述有效数据包括执行从所述一个或多个源块的读取操作的第一序列以及然后执行到所述一个或多个目标块的写入操作的第二序列。

4.根据权利要求1所述的方法,其中所述信息项包括逻辑到物理地址映射,并且其中存储所述目标块包括更新逻辑到物理地址映射以指示所述目标块在所述非易失性存储器中的相应物理存储位置。

5.根据权利要求1所述的方法,其中传送所述一个或多个源块包括向所述主机发送用于识别所述有效数据的指示,并且其中压缩所述一个或多个源块包括基于所述指示从所述一个或多个源块读取所述有效数据。

6.根据权利要求1所述的方法,其中传送所述一个或多个源块包括仅将来自所述源块的所述有效数据发送至所述主机。

7.根据权利要求1所述的方法,其中传送所述一个或多个源块和所述一个或多个目标块包括通过第一物理接口发送所述一个或多个源块和所述一个或多个目标块,所述第一物理接口与用于在所述存储器控制器和所述主机之间交换存储器访问命令的第二物理接口是分离的。

8.根据权利要求1所述的方法,其中传送所述一个或多个源块和所述一个或多个目标块包括在不由所述主机执行与所述源块和所述目标块的传送有关的任何操作的情况下,由所述存储器控制器发送所述一个或多个源块并获取所述一个或多个目标块。

9.根据权利要求1所述的方法,其中传送所述一个或多个源块和所述一个或多个目标块包括通过公共物理接口发送所述一个或多个源块和所述一个或多个目标块,所述公共物理接口还用于在所述存储器控制器和所述主机之间交换存储器访问命令。

10.一种数据存储装置,包括:

第一接口,所述第一接口被配置为与非易失性存储器通信;

第二接口,所述第二接口被配置为与主机通信;以及

处理器,所述处理器被配置为:

向所述主机发送请求以从主机存储器检索与存储在所述非易失性存储器中的一个或多个源块有关的信息项;

从所述主机接收所述信息项;

根据所述信息项从所述非易失性存储器读取所述一个或多个源块;

将所述一个或多个源块传送至所述主机;

从所述主机接收通过将有效数据从所述一个或多个源块复制到一个或多个目标块中而在所述主机中生成的所述一个或多个目标块;以及将所述一个或多个目标块存储在所述非易失性存储器中。

11.根据权利要求10所述的装置,其中所述信息项包括逻辑到物理地址映射,并且其中所述处理器还被配置为更新所述逻辑到物理地址映射以指示所述一个或多个目标块在所述非易失性存储器中的相应物理存储位置。

12.根据权利要求10所述的装置,其中所述处理器还被配置为通过执行从所述一个或多个源块的读取操作的第一序列以及然后执行到所述一个或多个目标块的写入操作的第二序列来复制所述有效数据。

13.根据权利要求10所述的装置,其中所述处理器还被配置为向所述主机发送用于识别所述有效数据的指示,以便使得所述主机能够基于所述指示从所述一个或多个源块读取所述有效数据。

14.根据权利要求10所述的装置,其中所述处理器还被配置为仅将来自所述一个或多个源块的所述有效数据发送至所述主机。

15.根据权利要求10所述的装置,其中所述处理器还被配置为通过第一物理接口传送所述一个或多个源块和所述一个或多个目标块,所述第一物理接口与用于与所述主机交换存储器访问的第二物理接口是分离的。

16.根据权利要求10所述的装置,其中所述处理器还被配置为在不由所述主机执行与所述源块和所述目标块的传送相关的任何操作的情况下,发送所述一个或多个源块并获取所述一个或多个目标块。

17.根据权利要求10所述的装置,其中所述处理器还被配置为通过公共物理接口传送所述一个或多个源块和所述一个或多个目标块,所述公共物理接口还用于在所述处理器与所述主机之间交换存储器访问命令。

18.根据权利要求10所述的装置,其中为了传送所述一个或多个源块和所述一个或多个目标块,所述处理器还被配置为:使用硬件信号,将对与所述处理器交换信息的请求从所述处理器发送至所述主机;以及响应于所述请求,由所述主机发起所述一个或多个源块中的至少一个源块或所述一个或多个目标块中的至少一个目标块的交换。

19.一种用于数据存储的系统,包括:

非易失性存储器,所述非易失性存储器包括多个存储块;

耦接至主机存储器的主机;以及

存储器控制器,被配置为:

从所述多个存储块选择一个或多个源块以用于压缩;

向所述主机发送请求以从所述主机存储器检索与所述非易失性存储器中的所述一个或多个源块有关的信息项;

其中所述主机被配置为:

从所述主机存储器检索所述信息项;以及

向所述存储器控制器发送所述信息项;

其中所述存储器控制器还被配置为:

根据所述信息项从所述非易失性存储器读取所述一个或多个源块;以及将所述一个或多个源块传送至所述主机;

其中所述主机还被配置为:

接收所述一个或多个源块;以及

通过将有效数据从所述一个或多个源块复制到一个或多个目标块中来压缩所述一个或多个源块;以及其中所述存储器控制器还被配置为:

从所述主机接收所述一个或多个目标块;以及

将所述一个或多个目标块存储在所述非易失性存储器中。

20.根据权利要求19所述的系统,其中为了复制所述有效数据,所述主机还被配置为执行从所述一个或多个源块的读取操作的第一序列以及执行到所述目标块的写入操作的第二序列。

说明书 :

主机辅助的存储块的压缩

技术领域

[0001] 本发明整体涉及数据存储,并具体地涉及使用主机系统资源的存储器控制器。

背景技术

[0002] 多种类型的存储器设备诸如闪存存储器使用模拟存储器单元的阵列来存储数据。每个模拟存储器单元均存储一定量的模拟值,也称为存储值,诸如电荷或电压。该模拟值表示存储在单元中的信息。例如,在闪存存储器中,每个模拟存储器单元保持一定量的电荷。
可能的模拟值的范围通常被划分成多个区间,每个区间对应于一个或多个数据位值。通过写入与所期望的一个或多个位对应的标称模拟值来将数据写入模拟存储器单元。
[0003] 通常称为单级单元(SLC)设备的一些存储器设备在每个存储器单元中存储单个信息位,即,可以对每个存储器单元进行编程以呈现两种可能的编程级。通常称为多级单元(MLC)设备的较高密度设备每存储器单元存储两位或更多位,即,可以对其进行编程以呈现不止两种可能的编程级。
[0004] 例如,在2003年4月的IEEE论文集第91卷第4期第489-502页,由Bez等人在“Introduction to Flash Memory”中描述了闪存存储器设备,该文献以引用方式并入本文。例如,在美国纽约州纽约市召开的1996年IEEE国际电子设备会议(IEDM)的论文集第169-172页,由Eitan等人在“Multilevel Flash Cells and their Trade-Offs”中描述了多级闪存单元和设备,该文献以引用方式并入本文。该论文比较了几种多级闪存单元,例如共接地、DINOR、AND、NOR和NAND单元。
[0005] 1999年9月21-24日在日本东京召开的1999年国际固态设备与材料(SSDM)研讨会,其论文集第522-524页,由Eitan等人在“Can NROM,a 2-bit,Trapping Storage NVM Cell,Give a Real Challenge to Floating Gate Cells?”中描述了称为氮化物只读存储器(NROM)的另一种类型的模拟存储器单元,该文献以引用方式并入本文。2002年2月3-7日在美国加利福尼亚州旧金山市召开的2002年IEEE国际固态电路会议(ISSCC2002),其论文集第100-101页,由Maayan等人在“A 512Mb NROM Flash Data Storage Memory with 8MB/s Data Rate”中也描述了NROM单元,该文献以引用方式并入本文。模拟存储器单元的其他示例性类型是浮栅(FG)单元、铁电RAM(FRAM)单元、磁性RAM(MRAM)单元、电荷撷取闪存(CTF)和相变RAM(PRAM,也称为相变存储器-PCM)单元。例如,2004年5月16-19日,在塞尔维亚和黑山的尼斯召开的第24届关于微电子学的国际会议(MIEL),其论文集第1卷第377-384页,由Kim和Koh在“Future Memory Technology including Emerging New Memories”中描述了FRAM、MRAM和PRAM单元,该文献以引用方式并入本文。

发明内容

[0006] 本文描述的本发明的实施例提供了一种用于在系统中进行数据存储的方法,该系统包括主机和存储器控制器,该存储器控制器与主机分离并且将用于主机的数据存储在非易失性存储器中。该方法包括将来自非易失性存储器的一个或多个源块从存储器控制器传送至主机以用于压缩。通过将有效数据从源块复制到一个或多个目标块中而在主机中压缩源块。将目标块从主机传送至存储器控制器,并且由存储器控制器将目标块存储在非易失性存储器中。
[0007] 在一些实施例中,传送源块包括将源块存储在主机的随机存取存储器(RAM)中,并且压缩源块包括使用主机的处理器来生成目标块并将该目标块存储在RAM中。在实施例中,复制有效数据包括执行从源块的读取操作的第一序列以及然后执行到目标块的写入操作的第二序列。
[0008] 在所公开的实施例中,存储目标块包括更新逻辑到物理地址映射以指示目标块在非易失性存储器中的相应物理存储位置。在另一个实施例中,传送源块包括向主机发送用于识别有效数据的指示,并且压缩源块包括基于该指示从源块读取有效数据。在另选的实施例中,传送源块包括仅将来自源块的有效数据发送至主机。
[0009] 在另一个实施例中,传送源块和目标块包括通过第一物理接口发送源块和目标块,该第一物理接口与用于在存储器控制器和主机之间交换存储器访问命令的第二物理接口是分离的。在另一个实施例中,传送源块和目标块包括在不由主机执行与源块和目标块的传送有关的任何操作的情况下,由存储器控制器发送源块并获取目标块。
[0010] 在一些实施例中,传送源块和目标块包括通过公共物理接口发送源块和目标块,该公共物理接口还用于在存储器控制器和主机之间交换存储器访问命令。公共物理接口可符合NAND接口规范、微SD(μSD)接口规范、嵌入式多媒体卡(eMMC)接口规范、通用闪存(UFS)接口规范、串行高级技术附件(SATA)接口规范、通用串行总线(USB)接口规范或外围组件互连(PCI)接口。
[0011] 在实施例中,传送源块和目标块包括:使用硬件信号,将对与存储器控制器交换信息的请求从存储器控制器发送至主机;以及响应于该请求,由主机发起至少一个源块或至少一个目标块的交换。在另一个实施例中,传送源块包括在从存储器控制器发送至主机的响应中发送源块,并且传送目标块包括在从主机发送至存储器控制器的一个或多个主机命令中发送目标块。
[0012] 根据本发明的实施例,另外提供了包括第一接口、第二接口和处理器的数据存储装置。第一接口被配置为与非易失性存储器通信。第二接口被配置为与主机通信。处理器被配置为将来自非易失性存储器的一个或多个源块传送至主机以用于压缩、从主机接收通过将有效数据从源块复制到目标块中而在主机中生成的一个或多个目标块、以及将目标块存储在非易失性存储器中。
[0013] 根据本发明的实施例,还提供了包括非易失性存储器、主机和存储器控制器的数据存储装置。非易失性存储器包括多个存储块。主机被配置为接收非易失性存储器的一个或多个源块以用于压缩,并且通过将有效数据从源块复制到一个或多个目标块中来压缩源块。存储器控制器被配置为选择用于压缩的源块、将源块传送至主机、从主机接收目标块并将目标块存储在非易失性存储器中。
[0014] 通过下面的具体实施方式以及结合附图,将更全面地理解本发明,其中:

附图说明

[0015] 图1为根据本发明实施例的示意性地示出数据存储系统的框图;
[0016] 图2为根据本发明实施例的示意性地示出用于使用主机系统资源来将数据存储在非易失性存储器中的方法的流程图;
[0017] 图3为根据本发明实施例的示意性地示出用于在主机处理器与存储器控制器之间交换信息的方法的流程图;并且
[0018] 图4为根据本发明实施例的示意性地示出用于主机辅助的块压缩的方法的流程图。

具体实施方式

[0019] 综述
[0020] 在一些数据存储应用中,存储器控制器连接至主机系统并且将用于主机系统的数据存储在非易失性存储器中。例如,移动电话或媒体播放器可将数据存储在微安全数字(μSD)卡、嵌入式多媒体卡(eMMC)或通用闪存(UFS)设备中。个人计算机可将数据存储在固态驱动器(SSD)中。在许多情况下,主机系统具有比存储器控制器的内部资源更多的硬件资源(例如,存储器空间和计算能力)。
[0021] 下文所描述的本发明的实施例提供了用于数据存储的改进的方法和系统。在这些方法和系统中,存储器控制器使用主机系统的资源以便改进存储性能。
[0022] 在一些实施例中,存储器控制器将用于主机的数据存储在非易失性存储器中,诸如闪存存储器中。此外,存储器控制器进行各种存储器管理任务,包括非易失性存储器的存储块的压缩。压缩过程还称为“垃圾收集”。压缩通常涉及选择包括有效数据和无效数据两者的一个或多个源块,以及仅将有效数据以压缩方式从源块复制到一个或多个目标块中。然后源块可用于擦除和重新使用。
[0023] 在一些所公开的实施例中,存储器控制器选择用于压缩的源块,并且稍后将经压缩的目标块存储在非易失性存储器中,但实际压缩过程(即,将有效数据从源块复制到目标块)由主机执行。为了这个目的,存储器控制器和主机在其之间传送源块和目标块。
[0024] 由于主机通常比存储器控制器具有更大的存储器空间以及更高的计算能力,因此将压缩过程委托给主机显著改进了压缩性能。具体地,较大的存储器空间使主机能够通过执行长的读取操作序列并随后执行长的写入操作序列来复制有效数据。这种类型的顺序操作显著提高了压缩过程的效率。
[0025] 此外,较大的存储器空间使主机能够同时处理大量源块和目标块,并因此优化压缩性能。主机的高计算能力减小了压缩过程的延迟。此外,将密集的管理任务委托给主机使得存储器控制器的成本、尺寸和功率消耗的减小成为可能。作为另一有益效果,由于主机执行压缩过程,因此该主机可以在将压缩的块发送回存储器控制器时重新映射逻辑地址。
[0026] 系统描述
[0027] 图1为根据本发明实施例的示意性地示出数据存储系统20的框图。系统20包括存储器系统22和主机系统24。存储器系统22接受来自主机系统24的用于存储的数据并将其存储在存储器中,并从存储器检索数据并将其提供至主机系统。在该示例中,系统22包括存储用于蜂窝电话、媒体播放器、数码相机或其他主机的数据的微安全数字(μSD)卡。然而,在另选的实施例中,系统22可在任何其他合适的应用程序中使用并与任何其他合适的主机系统一起使用,诸如在计算设备中诸如用于将数据存储在SSD中的移动计算机、在WiFi终端或其他通信终端、全球定位系统(GPS)单元、可移除的存储器模块(诸如随身碟(Disk-On-Key,DOK)设备、安全数字(SD)卡、多媒体卡(MMC)和嵌入式MMC(eMMC))、数码相机、音乐及其他媒体播放器诸如便携式媒体播放器(PMP)中、和/或在其中存储和检索数据的任何其他系统或设备中。
[0028] 存储器系统22包括多个存储器设备28,每个存储器设备包括多个模拟存储器单元。在该示例中,设备28包括非易失性NAND闪存设备,但也可使用任何其他合适的存储器类型,诸如NOR及电荷撷取闪存(CTF)闪存单元、相变RAM(PRAM,还称为相变存储器-PCM)、氮化物只读存储器(NROM)、铁电RAM(FRAM)和/或磁性RAM(MRAM)。
[0029] 在本专利申请的上下文和权利要求中,术语“模拟存储器单元”用于描述保持物理参数的连续模拟值的任何存储器单元,该物理参数诸如电压或电荷。可使用任何合适类型的模拟存储器单元,诸如上文所列出的类型。在该示例中,每个存储器设备28包括NAND闪存单元的非易失性存储器。存储在单元中的电荷级别和/或写入到单元中和从单元中读出的模拟电压或电流在本文统称为模拟值或存储值。尽管本文所描述的实施例主要涉及阈值电压,但本文所描述的方法和系统可与任何其他合适类型的存储值一起使用。
[0030] 系统22通过对单元编程以呈现相应的存储器状态来将数据存储在模拟存储器单元中,所述存储器状态也称为编程级。编程级选自可能级别的有限集合,并且每一级对应于某个标称存储值。例如,可对2位/单元MLC进行编程以通过将四个可能的标称存储值中的一个标称存储值写入到单元中来呈现四个可能的编程级中的一个编程级。存储器单元通常以行和列来布置。通常,给定存储器设备包括多个擦除块(也称为存储块),即,被一起擦除的多组存储器单元。
[0031] 每个存储器设备28可包括封装的设备或未封装的半导体芯片或管芯。通常,存储器系统22可包括任何所需类型和尺寸的任何合适数量的存储器设备。尽管图1的系统配置包括多个存储器设备,但本文所描述的一些方法和系统还可用于仅具有单个存储器设备的系统中。
[0032] 存储器系统22包括存储器控制器32,该存储器控制器接收来自主机系统24的数据并将其存储在存储器设备28中,并且从存储器设备检索数据并将其提供至主机系统。存储器控制器32包括用于与主机系统24通信的主机接口36、用于与存储器设备28通信的存储器接口40以及处理所存储和所检索的数据的处理器44。例如,处理器44可用纠错码(ECC)来对用于存储的数据进行编码,并且对从存储器读取的数据的ECC进行解码。可例如使用在合适的中央处理单元(CPU)上运行的软件、使用硬件(例如,状态机或其他逻辑器)、或者使用软件元件和硬件元件的组合来实施处理器44的功能。
[0033] 在一些实施例中,存储器控制器32使用主机系统24的硬件资源以用于执行访问存储器设备28的存储器访问操作(例如,读取或写入操作)。在图1的实施例中,主机系统24包括主机处理器48和主机存储器,在该示例中包括动态随机存取存储器(DRAM)52。DRAM 52可被主机处理器48用于存储数据、用于存储程序指令或用于任何其他目的。在一些实施例中,DRAM 52中的存储空间中的一部分用于存储由存储器控制器32使用的信息。在图1的示例中,存储器控制器32使用主机总线56来(经由主机接口36)与主机处理器48通信。此外,存储器控制器32的处理器44使用专用接口60直接与DRAM 52通信。在另选的实施例中,存储器控制器32使用主机总线56来与主机处理器48以及与DRAM 52通信,在这种情况下,省略了接口60。
[0034] 存储器控制器32,并且具体地处理器44可以在硬件中实施。作为另外一种选择,存储器控制器可包括运行合适软件的微处理器,或硬件元件和软件元件的组合。在一些实施例中,处理器44包括在软件中编程以执行本文所描述的功能的通用处理器。软件可例如通过网络以电子形式被下载到处理器,或者除此之外或作为另外一种选择,其可以在有形介质诸如磁性的、光学的、或电子的存储器上被提供和/或存储。
[0035] 图1的系统配置为示例性配置,其纯粹为了概念清晰而示出。也可使用任何其他合适的存储器系统配置。例如,在一些实施例中,可将两个或更多个存储器控制器32连接至同一主机处理器。尽管本文所描述的实施例涉及DRAM,但主机系统24可包括任何其他合适类型的易失性和/或非易失性存储器。为了清楚起见,已从附图中省略了对于理解本发明的原理非必需的元件,诸如各种接口、寻址电路、计时和排序电路及调试电路。
[0036] 在图1所示的示例性系统配置中,存储器设备28和存储器控制器32被实施为单独的集成电路(IC)。然而,在另选的实施例中,存储器设备和存储器控制器可集成在单个多芯片封装(MCP)或片上系统(SoC)中的单独半导体管芯上,并且可通过内部总线互连。此外,作为另外一种选择,存储器控制器电路中的一些或全部可驻留在其上设置有存储器设备中的一个或多个存储器设备的同一管芯上。此外,作为另外一种选择,存储器控制器32的功能中的一些或全部功能可在软件中实施,并且通过主机处理器48或主机系统24的其他元件,或通过任何其他类型的存储器控制器来执行。在一些实施例中,主机处理器48和存储器控制器32可在同一管芯上制造,或在同一设备封装中的单独管芯上制造。
[0037] 使用主机系统资源进行的非易失性存储器中的数据存储
[0038] 在许多实际应用中,主机系统24具有比存储器控制器32中内部可用的硬件资源显著更多的硬件资源。例如,在一些移动电话中,存储器控制器32包括具有有限存储器资源和有限计算能力的SD或eMMC控制器。另一方面,主机系统通常包括强大的处理器以及相当大的DRAM存储空间。在本发明的一些实施例中,存储器控制器32使用主机系统24的更丰富的硬件资源以用于访问存储器设备28。在图1的示例中,硬件资源包括主机存储器(DRAM)存储空间,但也可使用主机系统的各种其他硬件资源。
[0039] 在一些实施例中,分配DRAM 52中的存储空间以用于存储由存储器控制器32用来访问存储器设备28的信息项。此外,存储器控制器支持通过使用存储在DRAM中的信息项来访问存储器设备28的一个或多个操作。信息项可包括例如存储参数和配置、逻辑到物理地址转换表或可供存储器控制器用来访问(例如,读取、写入或擦除)存储器设备的任何其他信息。在执行这种类型的给定操作时,存储器控制器通常响应于主机命令从DRAM 52检索适当的信息然后使用所检索的信息来访问存储器设备28。
[0040] 在一些实施例中,存储在DRAM 52中的信息项包括用于相应存储器单元组的存储参数。可针对每存储器设备、每存储器管芯、每擦除块、每字线或页面或每任何其他合适的存储器单元组来存储信息项。当准备访问(例如,读取、写入或擦除)设备28中的给定存储器单元组时,存储器控制器从DRAM 52检索这个存储器单元组的存储参数,然后使用所检索的存储参数来访问该组中的存储器单元。由于DRAM 52中的可用存储空间通常显著大于处理器44中的内部存储空间,因此该技术使存储器控制器能够更好地将存储参数与正被访问的实际存储器单元组匹配。可使用任何合适的存储参数。
[0041] 例如,存储器设备28可包括模拟存储器单元(例如,闪存单元),所述单元通过将它们的存储值与某些读取阈值进行比较而被读取。在这些实施例中,存储器控制器32可将用于不同存储器单元组(例如,不同擦除块)的读取阈值存储在DRAM 52中。存储器控制器支持读取操作,该读取操作通过从DRAM 52检索适用于设备28中的某组存储器单元的读取阈值然后使用所检索的读取阈值而从设备28中的某组存储器单元读取数据。
[0042] 又如,可使用迭代编程和校验(P&V)过程来对存储器设备28中的存储器单元进行编程。在典型的P&V过程中,通过将编程脉冲的序列施加至被映射至存储页面的一组存储器单元来写入该整个页面。编程脉冲的电平在脉冲间递增。在每个脉冲之后,读取(“验证”)在单元中编程的存储值,并且继续该迭代直至达到所需的电平。在一些实施例中,将适用于不同存储器单元组的P&V过程的参数存储在主机系统24的DRAM 52中。存储器控制器支持写入操作,该写入操作通过从DRAM 52检索对应的P&V参数,然后使用所检索的P&V参数来对某一存储器单元组进行编程而将数据存储在该存储器单元组中。
[0043] 可存储在DRAM 52中的P&V参数可包括例如用于对写入到存储器单元中的存储值进行校验的校验阈值、增量步长(即,连续编程脉冲之间的增量,也称为增量阶跃脉冲编程-ISPP)、初始编程脉冲量值、和/或任何其他合适的参数。
[0044] 再如,设备28中的存储器单元可被擦除,然后可针对某些擦除校验阈值来被校验。在一些实施例中,存储器控制器将不同存储器单元组的不同擦除校验阈值存储在DRAM 52中。存储器控制器可支持擦除操作,该擦除操作从DRAM 52中检索该单元组的擦除校验阈值并且使用所检索的阈值来擦除该单元组。
[0045] 可存储在DRAM 52中的信息项的其他示例指示设备28中的相应存储器单元组的磨损程度或健康程度(health level),或存储器单元的其他历史品质因数。此类信息项可包括例如每组存储器单元已经历的编程及擦除(P/E)循环次数,或自每组存储器单元的最后编程起所经过的时间。
[0046] 其他信息项可指示设备28中的每组存储器单元中存在的失真水平。此类参数可包括例如交叉耦合干扰的估计、单元的存储值的所估计的漂移、或不同存储器单元组的所估计的温度-时间积分(随时间推移而积分的操作温度)。可存储在DRAM 52中的信息项的又一示例包括存储在每个擦除块中的最后页面的索引。所有这些信息项均可用于确定读取和/或编程存储器单元的方式。这种类型的示例性技术在例如PCT国际公布WO 2007/132453、WO 2007/132457、WO 2008/026203、WO 2008/053472和WO 2008/111058中有所描述,所述国际公布的公开内容以引用方式并入本文。
[0047] 在一些实施例中,存储器控制器32使用不同的存储配置将数据存储在设备28中的不同存储器单元组中。例如,存储器控制器可在一个存储器单元组与另一个存储器单元组之间修改编程状态(编程级)的数目和/或纠错码(ECC)。这种类型的示例性技术在例如PCT国际公布WO 2007/132456中有所描述,所述国际公布的公开内容以引用方式并入本文。又如,存储器控制器可使用不同的ECC块大小,例如以便在纠错能力与延迟之间提供不同的权衡。在示例性实施例中,存储器控制器可使用2KB块来对一些页面进行编码,并且使用4KB块来对其他页面进行编码。
[0048] 在一些实施例中,存储器控制器32将待应用于设备28的不同存储器单元组中的存储配置(例如,待用于每个擦除块、字线或页面中的编程级的数目、ECC类型和/或ECC块大小)存储在DRAM 52中。存储器控制器支持读取和写入操作,所述读取和写入操作从DRAM 52检索针对给定存储器单元组的存储配置,然后使用所检索的存储配置来读取或编程该单元组。
[0049] 在一些实施例中,存储器控制器从主机系统24接收使用逻辑地址(也称为虚拟地址)指定的读取/写入命令。存储器控制器将逻辑地址转换为存储器设备28中的物理存储位置,并且从适当的物理存储位置读取数据或将数据写入到适当的物理存储位置。逻辑地址与物理存储位置之间的转换通常通过查询由存储器控制器管理的转换表来执行。
[0050] 在一些实施例中,存储器控制器32将逻辑地址与物理存储位置之间的映射存储在DRAM 52中。逻辑物理映射可由一个或多个表或使用任何其他合适的数据结构来表示。映射可将逻辑地址映射至物理存储位置,将物理存储位置映射至逻辑地址,或两者。在这些实施例中,存储器控制器支持读取和写入操作,所述读取和写入操作通过查询存储在DRAM 52中的映射而在逻辑地址与物理存储位置之间转换。
[0051] 例如,响应于来自主机系统的用于请求从给定的逻辑地址范围中读出的读取命令,存储器控制器可执行读取操作,该读取操作用于查询DRAM52中的映射以便获得与所请求的逻辑地址对应的物理存储位置。然后,该操作从存储器设备28中的这些物理存储位置读取数据。也可针对写入操作来定义类似的流程。该技术使存储器控制器能够以最小的内存来执行逻辑物理地址转换,而不必将映射存储在非易失性存储器28中。与将映射存储在设备28中相比,系统22的读取/写入速度显著提升。当执行大量随机读取/写入操作时,速度的提升尤其高。
[0052] 在具有有限内存的存储器控制器应用中,诸如在μSD控制器中,将逻辑物理地址映射存储在主机存储器中是尤其有利的。在使用该技术时,读取和写入操作不涉及额外的读取和写入操作,以便确定适当的地址转换和/或更新该转换。因此,读取和写入吞吐量增加。此外,减少了写入操作的次数和读取干扰量,从而延长了非易失性存储器的寿命。
[0053] 在许多情况下,设备28中的存储器单元遭受干扰,例如来自相邻存储器单元的交叉耦合干扰。在一些实施例中,在从存储器单元读取数据时,存储器控制器32应用干扰消除过程。干扰消除过程通常基于设备28中其他存储器单元(通常为相邻存储器单元)的存储值或数据来估计并校正给定存储器单元组中的干扰。示例性干扰消除技术在上文引述的PCT国际公布WO 2007/132453、WO 2007/132457和WO 2008/026203中有所描述。
[0054] 在一些实施例中,存储器控制器32从DRAM 52检索相邻存储器单元的数据。存储器控制器支持读取操作,该读取操作从存储器设备28的给定存储器单元组中读取数据,从DRAM 52检索相邻单元数据,并且使用从DRAM 52中获得的相邻单元数据来消除读取数据中的干扰。相邻单元数据可例如从存储相邻页面时起在DRAM 52中获得。该技术消除了存储器控制器对从存储器设备28中读取相邻存储器单元的需求。因此,可提升系统22的总读取速度。
[0055] 在一些实施例中,存储器控制器32使用较大尺寸的DRAM 52以便以顺序方式将较大量的数据写入到存储器设备28。例如,存储器控制器可支持块回拷贝操作,该块回拷贝操作将多个页面(例如,整个擦除块)从存储器设备28中的某个源位置复制到某个目标位置。当执行这个命令时,存储器控制器首先从源位置顺序地读取多个页面并将所述页面存储在DRAM 52中。然后,存储器控制器从DRAM 52读取多个页面,并将它们顺序地写入到存储器设备28中的目标位置。通过顺序地读取和写入多个页面而不是一次复制一个页面,显著减少了回拷贝操作的持续时间。又如,DRAM 52可用于(通过存储器控制器或通过主机)累积间歇到达的用于存储的数据,直至生成连续的数据块。然后,存储器控制器可将所累积的块顺序地写入到存储器设备28。
[0056] 此外或作为另外一种选择,存储器控制器可将任何其他合适的信息存储在DRAM 52中,然后将该信息用于访问存储器设备28。虽然本文所描述的实施例主要涉及DRAM资源,但存储器控制器32可使用主机系统24的任何其他合适的硬件资源。下文进一步描述了示例性资源。
[0057] 图2为根据本发明的实施例的示意性地示出用于由存储器控制器32使用主机系统24的DRAM资源将数据存储在非易失性存储器设备28中的方法的流程图。该方法开始于在存储器分配步骤70处分配主机系统24的DRAM 52中的存储空间以供存储器控制器32使用。在DRAM存储步骤74处,存储器控制器32将与设备28的相应模拟存储器单元组有关的信息项存储在DRAM 52中。如上所述,信息项可例如包括存储参数和配置、逻辑物理地址映射和/或相邻单元数据。
[0058] 在命令接收步骤78处,在某个时间点,存储器控制器32接收来自主机系统24的命令。该命令使存储器控制器访问设备28的给定模拟存储器单元组。例如,该命令可请求对某个数据项的存储或读出。在操作执行步骤82处,响应于该命令,存储器控制器32使用从DRAM 52检索的信息来执行访问存储器设备28的操作。通常,存储器控制器识别设备28中待访问的模拟存储器单元组,从DRAM 52检索与该存储器单元组有关的(一个或多个)信息项,并且使用所检索的信息来访问该组中的存储器单元。
[0059] 主机系统与存储器控制器之间的接口
[0060] 在执行上文所述的技术时,存储器控制器32可使用任何合适的接口来将信息存储在DRAM 52中以及读取DRAM 52中的信息。在上文图1的示例中,存储器控制器使用专用接口60(即,使用与用于在存储器控制器与主机处理器之间通信的物理接口分离的物理接口)来与DRAM 52直接通信。在这些实施例中,从DRAM 52检索信息不涉及主机处理器的任何操作,因为存储器控制器与DRAM直接通信。存储器控制器和/或主机系统包括合适的仲裁逻辑器以用于控制处理器44和处理器48对DRAM 52的访问。
[0061] 在另选的实施例中,存储器控制器32使用主机总线56(即,通过用于在存储器控制器与主机处理器之间通信的同一物理接口)来将信息存储在DRAM 52中以及读取DRAM 52中的信息。主机总线56可根据任何合适的标准或协议来操作,诸如NAND接口、微SD(μSD)接口、嵌入式多媒体卡(eMMC)接口、通用闪存(UFS)接口、串行高级技术附件(SATA)接口、通用串行总线(USB)、快速外围组件互连(PCIe)或任何其他合适的接口。
[0062] μSD接口在例如“SD Specifications”(2009年11月9日第3.01版草案1.00的第一部分物理层规范)中指定,该文献以引用方式并入本文。eMMC接口在例如“Embedded MultiMediaCard(eMMC)Mechanical Standard with Optional Reset Signal”(2009年7月JEDEC标准JESD84-C44)中指定,该文献以引用方式并入本文。UFS接口在例如“UFS Specification”(2009年11月11日第0.1版)中指定,该文献以引用方式并入本文。SATA接口在例如“Serial ATA Revision 3.0”(2009年6月2日)中指定,该文献以引用方式并入本文。USB接口在例如“Universal Serial Bus Specification”(2000年4月27日修订版2.0)中指定,该文献以引用方式并入本文。
[0063] 在上文列出的通信协议中,将主机处理器定义为主设备,并且将存储器控制器定义为从设备。因此,存储器控制器不能向主机处理器发起和发送用于请求存储或检索信息的命令。在一些实施例中,存储器控制器32通过经由存储器控制器与主机处理器之间的硬件线路发送信号来请求主机处理器48与DRAM 52交换信息。在一些实施例中,专用硬件线路可出于该目的而连接在存储器控制器与主机处理器之间。作为另外一种选择,存储器控制器可使用现有硬件线路,诸如就绪线路/占用线路来向主机处理器指示请求数据交换。一旦主机处理器接收该指示,其便发起信息交换过程。
[0064] 图3为根据本发明实施例的示意性地示出用于在主机处理器与存储器控制器之间交换信息的方法的流程图。该方法开始于在指示步骤90处存储器控制器32向主机处理器48指示请求与DRAM 52的信息交换。存储器控制器通过连接在存储器控制器与主机处理器之间的硬件信号(例如,分立的硬件线路或引脚)来用信号发送该指示。
[0065] 在接收到该指示时,在查询步骤94处,主机处理器48将用于查询所请求的信息交换的类型的消息发送至存储器控制器32。该查询消息请求存储器控制器指示其请求是从DRAM读取信息还是将信息存储在DRAM中。
[0066] 在发送该查询消息之后,在读出步骤98处,主机处理器48从存储器控制器32读取用于指示所请求的信息交换的类型的数据。例如,该数据指示所请求的操作是从DRAM读取信息还是将信息写入到DRAM。该数据还指示DRAM 52中的用于读取或写入信息的地址范围。当该请求是用于将信息存储在DRAM中时,该数据还包括待存储的信息。
[0067] 在执行步骤102处,基于在步骤98处从存储器控制器读取的数据,主机处理器执行所请求的信息交换。如果存储器控制器请求将信息存储在DRAM中,则主机处理器将信息存储在DRAM中所指示的地址处,然后将确认消息发送至存储器控制器。如果存储器控制器请求从DRAM读取信息,则主机处理器从所指示的地址读取信息并且将该信息发送至存储器控制器。
[0068] 在另选的实施例中,存储器控制器可使用被包括在主机命令和对应响应中的元数据来经由主机处理器与DRAM交换信息。存储器控制器可通过将元数据添加至被发送至主机系统的响应(例如,读取命令或确认或写入命令的结果)来从DRAM请求信息,或发送用于存储在DRAM中的信息。主机处理器可将所请求的信息作为元数据从DRAM发送至存储器控制器,该元数据被包括在主机系统发送至存储器控制器的读取命令或写入命令中。
[0069] 在一些实施例中,存储器控制器和主机处理器交换包括适用的DRAM信息的命令和响应。例如,在存储器控制器读取某个存储页面时,其可将用于读取操作的读取阈值连同读取结果一起发送至主机处理器。作为响应,主机处理器将读取阈值存储在DRAM中。在主机处理器将读取命令发送至存储器控制器时,其可将(从DRAM读取的)适用的读取阈值作为读取命令的一部分发送至存储器控制器。
[0070] 尽管本文所描述的实施例主要解决了主机DRAM的使用,但本文所描述的方法和系统可利用任何其他类型的主机存储器,诸如静态RAM(SRAM)。除分配和使用主机存储器之外或者作为另外一种选择,存储器控制器可使用主机的各种其他资源以便访问非易失性存储器。例如,存储器控制器可使用主机中的硬件逻辑电路来执行作为访问非易失性存储器的一部分的各种逻辑操作(例如,XOR操作或比较)。又如,存储器控制器可从主机接收其供电电压。在此类实施例中,主机可将经稳定的、已调节的和/或经滤波的供电电压提供至存储器控制器,使得存储器控制器可使其芯片上的调节、稳定和/或滤波电路最小化。因此,可提高存储器控制器的功率效率,并可降低其热耗散。例如,存储器控制器可从主机接收经调节的1.2V供电电压,而不是接收1.8V或3.3V供电电压并在内部降低该供电电压。
[0071] 再如,存储器控制器可调用主机来对从非易失性存储器读取的数据执行干扰消除计算。在此类实施例中,可向主机提供从非易失性存储器读取的一个或多个页面的读取结果以及相邻页面的读取结果。主机然后可基于相邻页面的读取结果来消除读取结果中的干扰,以便产生无干扰的数据。
[0072] 再如,可调用主机来执行ECC解码。在一些实施例中,可使用主机的较高的固有计算复杂度和/或使用专用硬件来在主机中实施高性能ECC解码器(例如,软解码器)。在这些实施例中,存储器控制器向主机提供从非易失性存储器读取的码字。然后,主机解码ECC以便重组数据。在示例性实施例中,存储器控制器包括某个ECC解码器,并且主机包括另一个ECC解码器。主机中的解码器比存储器控制器中的解码器更复杂且具有更高的纠错能力。例如,存储器控制器中的解码器可应用硬解码,而主机中的解码器可应用软解码。在这些实施例中,存储器控制器最初尝试使用其本地ECC解码器来对给定码字进行解码。如果初始尝试失败,则存储器控制器调用主机中的更高性能的ECC解码器来对码字进行解码。
[0073] 主机辅助的块压缩
[0074] 在典型的闪存存储器中,以页面为单位将数据写入到存储器设备28,但向整个存储块应用擦除。由于仅将数据写入到已擦除的页面,因此不可能就地更新数据。更新数据涉及:将已更新的数据写入到闪存存储器中的另一物理存储位置,将数据的先前版本标记为无效,以及动态地更新用于将数据的逻辑地址转换为存储有数据的物理存储位置的逻辑到物理地址映射。
[0075] 由于上述特征,存储器设备28的存储块逐渐累积无效数据页面,所述无效数据页面的更新版本已存储在其他物理存储位置中。为了减少无效页面的数目,存储器控制器32的处理器44执行压缩或“垃圾收集”过程。该后台进程选择用于压缩的一个或多个存储块(称为源块),将有效数据从所选择的源块复制到一个或多个其他块(称为目的块)中的其他存储位置,然后擦除源块。所擦除的块然后准备用于后续编程。
[0076] 图4为根据本发明实施例的示意性地示出用于主机辅助的块压缩的方法的流程图。该方法开始于在源块选择步骤110处存储器控制器32的处理器44选择用于压缩的一个或多个存储块。每个源块通常包括有效数据和无效数据两者。存储器控制器可使用任何合适的标准来选择源块,例如它可选择具有最大无效数据量的块。
[0077] 在源传送步骤114处,处理器44将所选择的源块传送至主机系统44。处理器44可使用上文所描述的接口和传送方案中的任一者来传送源块,例如使用主机总线56将源块传送至主机处理器48,或使用专用接口60将源块直接传送至DRAM 52。
[0078] 在一些实施例中,处理器44还向主机发送用于识别有效数据的指示,使得主机能够基于该指示从源块仅读取有效数据。可将任何合适类型的指示作为源块的一部分来发送或者独立地发送,并且可使用任何合适的接口来将指示发送至主机。在另选的实施例中,存储器控制器仅将来自源块的有效数据而不是整个源块传送至主机。在本专利申请的上下文中以及在权利要求中,仅传送有效数据还被视为传送用于压缩的源块。
[0079] 在压缩步骤118处,主机处理器48压缩源块。主机处理器通常复制来自源块的有效数据,并将所述有效数据顺序地存储在一个或多个目标块中。因此,在消除无效数据的区域的同时,有效数据以压缩方式存储在目标块中。目标块存储在DRAM 52中。
[0080] 在目标传送步骤122处,将目标块从主机系统24传送至存储器控制器32。可使用上文所描述的接口和传送方案中的任一者来进行目标块的传送,例如使用主机总线56从主机处理器48传送,或使用专用接口60直接从DRAM 52传送。
[0081] 在存储步骤126处,存储器控制器32的处理器44将目标块存储在存储器设备28中。此外,处理器44更新逻辑到物理地址映射以指示有效数据的新的物理存储位置。在压缩过程完成之后,处理器44通常擦除源块。这些块然后可用于新的编程。
[0082] 由于主机的DRAM 52通常远大于存储器控制器32的内存,因此由主机执行压缩比由存储器控制器执行压缩显著更有效。例如,由于存储器空间较大,主机处理器48能够通过执行长的读取操作序列(从源块),并且随后以长的写入操作序列(到目标块执行中)来复制有效数据。这种类型的顺序操作显著提高了压缩过程的效率。
[0083] DRAM 52中的较大的存储器空间使主机处理器48能够同时处理大量源块和目标块,并因此优化了压缩性能。此外,主机处理器的高计算能力减小了压缩过程的延迟。
[0084] 因此,应当理解,上述实施例是以举例方式援引的,本发明不限于上文特别示出和描述的内容。相反地,本发明的范围包括上文所描述的各种特征的组合和子组合两者,以及本领域技术人员在阅读前述描述时将想到的且在现有技术中未公开的所述各种特征的变型形式和修改形式。