使用多层存储器的磁盘驱动数据缓存的制作方法

文档序号:14785977发布日期:2018-06-28 01:18阅读:276来源:国知局
使用多层存储器的磁盘驱动数据缓存的制作方法

本公开内容涉及磁盘驱动器,包括但是不限于包括磁和固态存储装置两者的混合磁盘驱动器。更具体地,本公开内容涉及用于在包括固态存储器的多层存储器架构中存储数据的系统和方法。



背景技术:

非易失性存储器装置通常提供比磁介质更好的性能来读写数据。因此,在存储装置中,利用非易失性存储器来存储数据是有利的。然而,使用非易失性存储器来存储数据的问题是非易失性存储器的可靠性随着时间而退化。

非易失性存储器装置可以通常在它们的有用寿命中容忍有限数量的写循环。各种因素可能导致非易失性存储器装置中的数据错误,其中包括随着时间电荷丢失或者泄漏,读取干扰和由程序擦除循环造成的器件磨损。非易失性存储器退化可以造成存储的数据被损坏。例如,当读操作上的比特错误的数量超过非易失性存储器装置的ECC(纠错码)纠正能力时,读操作失败。



技术实现要素:

附图说明

下面将参照附图描述实现本发明的各种特征的系统和方法,其中:

图1是例示根据本发明的一个实施方式实现用于在多层存储器架构中存储数据的机制的存储装置的框图。

图2是例示根据本发明的一个实施方式用于在多层存储器架构中存储数据的机制的流程图。

图3是例示根据本发明的一个实施方式用于在多层存储器架构中存储数据的机制的流程图。

图4例示根据本发明的一个实施方式在多层存储器架构中存储数据的多个示例。

具体实施方式

尽管描述特定实施方式,但是这些实施方式仅作为示例呈现,而不旨在限制保护范围。实际上,此处描述的新颖方法和系统可以在多种其它形式中体现。此外,此处描述的方法和系统的形式可以进行各种省略、替代和修改,而不背离保护范围。

概述

非易失性存储器(NVM)装置(例如,闪存存储器和其它类型的固态存储器装置)在存储器单元的阵列中存储信息。在单级单元(SLC)非易失性存储器中,每一个单元存储单个比特的信息。在多级单元(MLC)非易失性存储器中,每一个单元存储两个或更多比特的信息。非易失性存储器具有由数据可被写入到特定NVM位置的次数测量的有限可用寿命。随着NVM磨损增加(例如,程序擦除循环的数量增加),NVM的可靠性和数据保持性降低。MLC非易失性存储器(例如,MLCNAND)比SLC非易失性存储器更廉价,但是趋向于具有更慢的存取时间,更低的耐久力和更低的数据保持性。MLC非易失性存储器可以被配置为在SLC模式下操作,从而在存储器单元中存储单个比特的信息。和被配置为在MLC模式下操作的MLC存储器相比,被配置为在SLC模式下操作的MLC存储器提供更好的耐久力和数据保持性。

为了提高性能,一些磁盘驱动器利用非易失性存储器的速度来在非易失性存储器中存储特定数据。这个数据可以包括被频繁存取的数据和在启动时存取的数据。在本公开内容中,除了磁存储之外,包括非易失性存储器缓存的磁盘驱动器被称为“混合硬盘驱动器”或者“混合硬驱动器”。在一些混合硬驱动器中,由于其低成本和高存储密度,MLC NVM可以是缓存存储的好选择。非易失性存储器通常被用作读缓存(例如,磁存储中存在的数据的副本)和写缓存(例如,和存储在磁存储中的数据相比,存储在NVM缓存中的数据是最近版本)两者。

在本发明的一些实施方式中,包括两个或者更多个非易失性存储器层的多层存储器可以被用于存储从主机接收的数据。例如,SLC存储器模块和MLC存储器模块两者可以被利用或者MLC存储器模块的一部分可以被配置为在SLC模式下操作。依赖于其特征,数据可以被存储在适当的存储器层中。数据的这些特征包括写频率、读频率、写性能、读性能、保持持续时间、数据的类型等。当标识适当的存储器层用于存储数据时不同存储器层的属性还可以被考虑在内。例如,因为与SLC存储器相比,MLC存储器具有类似的读性能但是差的耐久力和保持特征,所以MLC存储器可以被用于存储被频繁读出但是不频繁写入的数据。作为另一个示例,SLC存储器可以被用于存储具有更高写性能和/或保持要求的数据,诸如存储被频繁读和频繁写的数据。作为又一个示例,在系统初始化(例如,加电开机)期间使用的数据可以被存储在SLC存储器中,因为其性能特征优于MCL存储器的性能特征。替代地,在系统初始化期间使用的系统数据可以被存储在以SLC模式操作的MLC存储器中。

在一些实施方式中,使用多层存储器架构来存储数据提供改进的性能,因为数据可以被存储在适于满足性能要求的存储器层中。因为一些数据可以被存储在比SLC存储器更廉价的MLC存储器中,所以还可以实现降低成本。另外,在非易失性存储器中缓存数据可以造成增加的功耗。尽管本公开内容使用SLC和MLC存储器作为示例,但是根据此处公开的分层方式,具有不同特征的其它类型的存储器可以被使用。

系统概述

图1例示根据本发明的一个实施方式实现用于在多层存储器架构中存储数据的机制的系统100。如所示的,存储装置120(例如,混合硬驱动器)包括控制器130、非易失性存储器模块150、磁存储模块160,磁存储模块160包括磁介质164(例如磁盘)。如所例示的,非易失性存储器模块150可以包括可以体现多个层的一个或者更多个非易失性固态存储器阵列。在一个实施方式中,非易失性存储器模块150可以包括N个层。例如,MLC NAND闪存152可以被分割(如线154反映的)为在SLC模式操作的层1和在MLC模式操作的层2。层N-1156可以是SLC NAND闪存。层N 158可以是NOR闪存。其它类型的非易失性存储器可以被用作层,诸如闪存集成电路、硫族化合物RAM(C-RAM)、相变存储器(PC-RAM或者PRAM)、可编程金属化单元RAM(PMC-RAM或者PMCm)、奥氏统一存储器(OUM)、电阻RAM(RRAM)、NAND存储器、NOR存储器、EEPROM、铁电体存储器(FeRAM)或者其它分离的NVM(非易失性存储器)芯片。

在一个实施方式中,磁介质164可以被利用作为另一个存储器层。磁介质可以还包括多个层。例如,因为更多的数据被装配在磁盘外直径的磁轨中,所以外直径比内直径提供更高的性能。因此,磁介质可以被分割为外径层和内径层。特定类型的数据,诸如被顺序存储和存取的(例如,电影、视频、音乐等)可以被存储在磁存储层164中。

控制器130可以被配置为从主机系统110中的存储接口模块112(例如,装置驱动器)接收数据和/或存储存取命令。被存储接口112传递的存储存取命令可以包括主机系统110发出的写和读命令。读命令可以规定存储系统中存储数据的逻辑块地址。写或者程序命令可以包括要写入到存储系统中的数据以及数据应被写入的逻辑块地址(多于一个)。控制器130可以执行在非易失性存储器模块150或者磁存储模块160中接收的命令。在一个实施方式中,控制器可以包括用于存储数据(诸如系统数据)的存储器(例如,DRAM)。在一个实施方式中,控制器可以响应各种条件而在操作期间调整MLC NAND闪存152的分割(由线154反映的)。例如,主机系统110可以是存储大量频繁写入的数据在存储系统120中,并且SLC分区的大小可需要增加以容纳这种数据。

存储系统120可以存储主机系统110传递的数据。也就是说,存储系统120可以用作用于主机系统110的存储器存储。为了促进此功能,控制器130可以实现逻辑接口。逻辑接口可以向主机系统110呈现存储系统的存储器作为可以存储数据的一组逻辑地址(例如,连续地址)。内部地,控制器130可以将逻辑地址映射到磁介质164和/或非易失性存储器模块150中的各种物理存储器地址。

在一个实施方式中,非易失性存储器模块150可以在非易失性存储器中存储由主机系统110传递的数据。在一个实施方式中,非易失性存储器模块150的至少一部分可以被用作缓存(例如,读缓存和/或写缓存)。在另一个实施方式中,整个非易失性存储器模块150可以被用作缓存。当非易失性存储器模块的一部分(或者整个)被作为读缓存使用时,数据的副本也在磁存储器160中存在。当非易失性存储器模块的一部分(或者整个)被作为写缓存使用时,被存储在非易失性存储器中的数据是比存储在磁存储器160中更近的版本。为了提高存储系统120和/或主机系统110的性能,在一些实施方式中,各种类型的数据可以被存储在非易失性存储器缓存中,包括频繁存取的数据、在启动(例如,在复位或者关机之后)时存取的数据、系统数据(例如,操作系统数据,诸如注册表数据、交换文件等)、顺序存取的数据等。

多层存储器架构

图2例示根据本发明的一个实施方式用于在多层存储器架构中存储数据的机制。过程200可以由诸如混合磁盘驱动器这样的存储系统120的控制器130实现。在一个实施方式中,当从主机系统110接收到新存储存取命令(例如,读和/写命令)时过程200被执行。该过程的主要目的是基于关于数据要素将可能如何被存取的信息选择用于缓存特定数据要素的适当存储器层。该过程使用关于过去存取的统计数据和存取模式。

过程200开始于块202,在此处,正被存储在非易失性存储器缓存中的候选集被标识。在一个实施方式中,过程200可以分析从主机接收到的存储存取命令,确定存取模式并且计算统计数据。统计数据可以被确定以编译主机系统110如何存取存储在存储系统120中的数据的历史。统计数据可以额外地被使用以预测主机系统110将如何存取数据。数据可以基于编译的历史被存储在适当的存储器层中。

在一个实施方式中,过程200可以标识在初始化和正常操作期间被主机频繁存取的存储系统存储器的逻辑地址范围的集合(例如,磁介质中的位置)。在一个实施方式中,可以相对于主机对存储系统存储器的平均存取率确定存取的频率。例如,对地址范围的主机系统传递的读命令和写命令的平均率可以被监视。频繁存取的地址范围可以被标识为以超过被监视的平均存取率被存取的那些地址范围。在一个实施方式中,两个计数可以被维持和更新(例如,递增):对应于读命令的读计数器和对应于写命令的写计数器。

在一个实施方式中,可以随着时间调整用于标识哪些逻辑地址范围被频繁存取的阈值为更多的选择性或者更少的选择性。在一个实施方式中,该过程可以标识频繁存取的地址范围的两个集合:一个对应于初始化数据而另一个对应于在正常操作期间使用的数据。

在块204、206、208和210中,该过程计算各种属性的度量,各种属性对应于已存储的或者打算被主机系统存储在块202中标识的地址范围集合中的数据。在一个实施方式中,这些属性可以对应于数据的写频率、数据的读频率、期望的读性能(例如,获取数据的期望性能)、期望的写性能(例如,将数据编程的期望性能)、期望的数据保持持续时间(例如,期望数据被存储在存储系统中多少时间)等。过程200可以使用这些属性中的一个或者更多个来预测主机系统110将如何存取数据。

在一个实施方式中,可以经由每次地址范围被主机系统存取(例如,读或者写)而更新的计数器确定读频率和写频率。可以通过分析主机系统是否获取存储在地址范围中作为更多突发的读命令的一部分的数据来确定期望的读性能,在此期间,存储系统120的期望性能比在隔离的读命令的执行期间高。可以通过分析主机系统是否在地址范围中存储作为更多突发的读命令的一部分的数据来确定期望的写性能,在此期间,存储系统120的期望性能比在隔离的写命令的执行期间高。可以通过分析对存储在地址范围中的数据的连续主机存取之间的时间来确定期望的保持持续时间。

在块212,该过程计算总度量和/或将计算出的对应于属性的度量组合。可以根据诸如简单平均或者加权平均这样的线性组合、非线性组合、回归分析等来计算总度量或者组合计算出的度量。在块214,该过程标识适当的存储器层用于存储数据。在一个实施方式中,可以通过例如对读频率分配15%权重,对写频率分配25%权重,对期望的读性能分配25%权重、对期望的写性能分配25%权重和对期望的保持持续时间分配20%的权重来确定加权平均。例如,具有更长的期望保持持续时间的数据可以是被存储在SLC NAND层中的候选。在一个实施方式中,总度量的计算和/或组合计算出的度量可以在操作期间改变。例如,过程200可以是学习和/或自适应的。过程200可以响应于操作条件,例如,总VNM存储器的自由量或者任何特定存储器层中的存储器的自由量,被主机系统存储的数据的特征和/或其组合。在一个实施方式中,过程200标识的候选可以被存储在单个列表中或者针对每一个存储器层的分离列表中。

在一个实施方式中,在块216,通过布置对应于地址范围和/或已存储或者打算被存储在块202中标识的地址范围集合中的数据的条目,该过程可以更新单个列表或者分离的列表。可以根据块212中确定的计算的总度量和/或组合的度量排序单个列表或者分离的列表。尽管示出了四个属性,但是其它实施方式可以使用更少或者更多的属性。如果块202中标识的集合中存在其它候选,则过程200可以转换到块204并且考虑其它候选。当块202中标识的集合中不再存在剩余候选时该过程终止。

数据的其它属性可以被过程200利用。在一个实施方式中,非易失性存储器的保持性(或者可靠性)可以被确定并且作为因子使用。保持性(或者可靠性)可以对应于非易失性存储器的估计的剩余有用寿命。可以部分或者完全基于NVM可以承受的剩余程序擦除循环的估计数量确定剩余有用寿命。例如,可以通过跟踪已写入到NVM的字节总数、跟踪当读取存储在NVM中的数据时遭遇的错误数量(例如,如由纠错机制确定的)、当从MLC闪存存储器读取数据时选择或者确定电压阈值电平或者电压基准值、当在NVM中存储数据时调整编程算法参数的参数(例如编程时间、擦除时间等)来测量。

在一个实施方式中,可以由单个处理子系统确定剩余可用寿命(或者其它可靠性测量)。非易失性存储器模块150可以包括经诸如ONFI这样的接口与非易失性存储器模块耦合的桥接装置。桥接装置可以还被配置为在诸如PCIe这样的高速接口上与控制器130通信并且向控制器提供对非易失性存储器的物理、页面级别的存取/控制。桥接装置可以进行基本信号处理和非易失性存储器的通道管理。在2011年9月6日提交的题目为“SYSTEMS AND METHODS FOR AN ENHANCED CONTROLLER ARCHITECTURE IN DATA STORAGE SYSTEMS”的共同未决专利申请no.13/226,393中描述了这个架构,该申请的公开内容通过引用全部并入本文。在其它实施方式中,桥接装置可以不被使用,并且非易失性存储器模块150可以被控制器130直接控制。

图3是例示根据本发明的一个实施方式用于在多层存储器架构中存储数据的机制的流程图。过程300可以由诸如混合磁盘驱动器这样的存储系统120的控制器130实施。在一个实施方式中,图2中例示的过程200可以分析从主机接收到的存储存取命令,确定存取模式并且计算统计数据。图3中例示的过程300可以在存储系统120中存储条目(例如,过程200标识的候选)。例如,控制器130可以在存储器(例如,DRAM)中存储条目。在一个实施方式中,过程200和300可以并行地执行。在另一个实施方式中,过程200和300可以被顺序地执行或者在并行和顺序执行的组合中执行。

过程300开始于块302,在此其确定特定非易失性存储器层(例如,SLC NAND层156)是否满。如以上说明的,存储系统120和非易失性存储器150可以被分割为层。在一个实施方式中,过程300可以针对存储系统120的每一个存储器层被分开执行。

如果特定存储器层不满,则该过程转换到块310。因为在该存储器层中有可用空间,所以过程300可以简单地将候选存储在该存储器层中。在一个实施方式中,过程300可以存储最高优先级的候选,如以下说明的。

如果特定存储器层满,则过程300确定已经存储在该层中的任何条目是否应被替换。在一个实施方式中,在块304,该过程(基于度量)标识存储在该存储器层中的最低价值的条目。例如,最低价值的条目可以被选择为具有在块212中确定的最低计算总度量和/或组合度量的条目。该过程转换到块306,在此过程标识要被存储在该存储器层中的最有价值的候选。该过程可以从针对存储器层的候选的列表(例如,在块216中更新的列表)选择具有最高计算总度量和/或组合度量的条目。

在块308中,该过程确定块306中标识的候选是否比在块304中标识的存储器层条目更有价值。在一个实施方式中,该过程比较标识的候选和条目的计算总度量和/或组合度量。如果候选更有价值,则该过程转换到块310,其中用候选替换该条目。过程300可以在存储器层中存储已存储或者打算被存储在对应于候选的地址范围的集合中的数据。标识或者对应于地址范围的信息也可以被存储。如果在块308中候选被确定为是较低价值的,则该过程跳到块310。该过程可以返回块302并且针对其它存储器层重复上述步骤。在一个实施方式中,当全部存储器层已经被考虑时过程300终止。在另一个实施方式,在考虑存储器层的子集或者单个存储器层之后,过程300可以终止。例如,在电力丢失或者关机期间,过程300可以仅仅考虑NVM存储器层,因为磁盘层可能不可用。

利用多层存储器架构的示例

图4例示根据本发明的一个实施方式在多层存储器架构中存储数据的多个示例。表400例示用于存储具有在列422、424、426、428、430和432中列出的各种属性的多个类型数据的适当层(在列440中示出)。被标记为“不关心”的条目反映属性可以假设任意特征。

行A 402提供存储被频繁写入并且其剩余属性是“不关心”的数据的示例。例如,这种类型的数据可以对应于被活动用户应用(例如,因特网浏览器)使用的数据。因为MCL存储器的耐久力低于SLC存储器的耐久力,所以用于这种类型数据的适当的层是SLC NAND层(例如,SLC NAND或者被配置为在SLC模式下操作的MLC NAND)。

行B 404提供存储被频繁读并且其期望保持持续时间比正常或者平均期望保持持续时间更长的数据的示例。例如,这种类型的数据可以对应于特定操作系统数据(例如,注册数据)。因为SLC存储器的保持性和耐久力比MCL存储器的高,所以用于这种类型数据的适当的层是SLC NAND层。

行C 406提供存储要求高写性能并且也被频繁读的数据的示例。例如,这种类型的数据可以对应于作为从主机系统接收的更多突发的写操作的一部分而被写入的数据。因为MLC存储器具有比SLC存储器更长的编程时间因而具有较差的写性能,所以用于这种类型数据的适当的层是SLC NAND层。

行D 408提供存储要求高的读性能、被频繁读取但是不是在初始化期间被存取的数据的的数据示例。例如,这种类型的数据可以对应于作为从主机系统接收的更多突发的读操作的一部分而被存取的数据。因为MLC存储器具有与SLC存储器的读性能相当的读性能,所以用于这种类型数据的适当的层是MLC NAND层。

行E 410提供存储被频繁读取并且还要求高的写性能的的数据示例。因为MLC存储器具有比SLC存储器长的编程时间,所以用于这种类型数据的适当的层是SLC NAND层。

行F 412提供存储被频繁读取但是不是在初始化期间被存取的数据并且其剩余属性是平均值或者低于平均值的数据示例。例如,这种类型的数据可以对应于特定的操作系统数据(例如,动态链接库数据)。因为MLC存储器具有与SLC存储器的读性能相当的读性能,所以针对这种数据的适当的层是MLC NAND层。

行G 414提供存储要求高读性能和更长的保持性并且也在初始化期间使用的数据的示例。例如,这种类型的数据可以对应于在开机期间、重启之后和/或在系统恢复时加载的系统数据。因为SLC存储器具有比MLC存储器更好的耐久力和保持性,所以用于这种类型数据的适当的层是SLC NAND层。

行H 416提供存储不被频繁写入、不被频繁读取、要求平均读性能并且在初始化期间不被使用的数据的示例。例如,这种类型的数据可以对应于电影、视频或者音乐数据。用于这种类型数据的适当的层是磁存储层,特别是如果数据是被顺序存取的更大数据集的一部分。

结论

在一些实施方式中,利用多层存储器允许混合硬驱动器提高性能,降低成本并且改进功耗。依赖于其特征,从主机接收的数据可以被存储在提供性能和成本之间的适当平衡的存储器层中。数据的特征可以包括写频率、读频率、写性能、读性能、保持持续时间、数据的类型、数据是否被顺序存取、(多于一个)非易失性存储器层的剩余寿命等。可以随着时间收集反映这些特征的统计数据并且将其编译为历史,基于其数据可以被存储在适当的存储器层中。

其它变形

如在本申请中使用的,“非易失性存储器”通常是指固态存储器,诸如但是不限于NAND闪存。然而,本公开内容的系统和方法还对更常规的硬盘驱动器和包括固态和硬盘驱动器部件的混合驱动器有用。本公开内容的系统和方法还可以对具有多个存储装置的RAID系统(例如,服务器RAID系统)有用,存储装置诸如是带有SLC闪存的存储模块、带有MLC闪存的存储模块、带有磁存储的存储模块等。如本领域已知的,固态存储装置(例如晶粒)可以物理上划分为平面、块、页和扇区。可以附加或者另选地使用其它形式的存储器(例如,电池备份的易失性DRAM或者SRAM装置、磁盘驱动器等)。

本领域技术人员将理解在某些实施方式中,可以实现其它类型的缓存策略。另外,在图2-图4中示出的过程中采取的实际步骤可以不同于附图中所示的步骤。依赖于实施方式,以上描述的特定步骤可以被去除,可以添加其它步骤。因此,本公开内容的范围旨在仅参照所附权利要求限定。

尽管描述了特定实施方式,但是这些实施方式仅作为示例呈现,而不旨在限制保护范围。实际上,此处描述的新颖方法和系统可以在各种其它形式中体现。此外,此处描述的方法和系统可以进行各种省略、替代和修改。所附的权利要求和其等同物旨在覆盖这种形式或者修改,因为这种形式或者修改会落入保护的范围和实质。例如,附图中描述的各个部件可以实现为处理器、ASIC/FPGA或者专用硬件上的软件和/或固件。作为另一个示例,此处公开的各种存储器层可以是存储模块和/或装置的一部分或者可以分离为不同的存储模块和/或装置,诸如当在RAID系统中使用时。另外,以上公开的特定实施方式的特征和属性可以按照不同方式组合以形成附加实施方式,全部实施方式落入本公开内容的范围内。尽管本公开内容提供特定优选实施方式和应用,但是其它实施方式对于本领域技术人员是明显的,包括不提供此处阐述的全部特征和优点的实施方式,并且也在本公开内容的范围内。因此,本公开内容的范围旨在仅参照所附权利要求限定。

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