限制数据存储设备中的访问操作的制作方法

文档序号:13532379阅读:147来源:国知局
限制数据存储设备中的访问操作的制作方法

本专利大体涉及数据存储设备。更具体地,本发明的实施方案涉及限制数据存储设备中的访问操作。



背景技术:

混合数据存储设备可以将作为主数据存储库的常规硬盘驱动器(hdd)与一个或多个二级数据高速缓存组合以提高性能。可将混合数据存储设备的一个或多个二级高速缓存组件限制为用作从主数据存储库接收数据的推进的读取高速缓存,并且响应于来自主机的请求而传输所推进的数据。然而,二级高速缓存组件可能受到与二级高速缓存组件可预期能够在失效之前在二级高速缓存组件的生命周期中提供支持的编程和擦除的总数相关的耐久性限制。由于混合数据存储设备可包括一定时间段的制造商质保,因此,因过多的编程/擦除或读写操作导致的二级高速缓存组件的失效可能导致混合数据存储设备在质保期结束前进入失效模式。



技术实现要素:

本文所公开的数据存储设备包括数据存储介质,该数据存储介质包括主存储库和闪存数据存储高速缓存;以及闪存管理子系统,该闪存管理子系统被配置为推进从主存储库到存储高速缓存的数据群集,控制器,该控制器被进一步配置为调整存储高速缓存上的使用寿命编程/擦除(pe)操作。

本发明内容旨在以简化形式介绍一些概念,这些概念在下面的具体实施方式中进一步描述。本发明内容并非旨在标识所要求保护的主题的主要特征或基本特征,也不旨在用于限制所要求保护的主题的范围。

本文还介绍并陈述了其他具体实施。

附图说明

图1是用于管理混合数据存储设备中的编程/擦除操作的示例性装置的框图。

图2示出了使用读取高速缓存上的数据暂时自我逐出管理混合数据存储设备中的编程/擦除操作的示例性操作。

图3示出了使用读取高速缓存上的数据暂时自我逐出管理混合数据存储设备中的编程/擦除操作的示例性操作。

图4示出了通过限制去往读取高速缓存的推进来管理混合数据存储设备中的编程/擦除操作的示例性操作。

图5示出了通过限制读取高速缓存上的垃圾收集操作来管理混合数据存储设备中的编程/擦除操作的示例性操作。

图6是混合数据存储设备中读取高速缓存上的总累积编程/擦除操作数与时间的示例性曲线图。

具体实施方式

本公开包括用于管理混合数据存储设备中的编程/擦除或读写操作的系统和方法。在本公开中,根据存储介质的类型,对编程/擦除操作的提及也可以是指读写操作。在一个具体实施中,混合数据存储设备可包括主数据存储库(例如,旋转磁介质)、一级高速缓存(例如,dram)和二级高速缓存(例如,nand闪存)。nand闪存二级高速缓存可包括存储设备的整个使用寿命期间不应超过的或者在存储设备的质保期内不应超过的预期总使用寿命编程/擦除操作数。在一个具体实施中,可增加nand闪存读取高速缓存的超量配置水平,以减少由诸如在垃圾收集操作期间高速缓存上的有效数据迁移而引起的编程/擦除操作。在另一个具体实施中,超量配置的空间的相对大小可以从典型水平增加(例如,到物理空间的50%),并且二级nand闪存高速缓存上的数据块可以被标记为“待定逐出”,而不是在读取高速缓存从主存储库接收推进时变得无效,并且实际的逐出可被延迟,直到包含数据的块的垃圾收集时间点。因此,有效数据可在读取高速缓存中保存的时间比在高速缓存接收到新的推进时被逐出时所保存的时间更长,从而增加读取高速缓存的命中可能性。由于通告的空间中的数据和超量配置的空间中被标记为“待定逐出”的数据可能总共占高速缓存的物理容量的高达100%(或接近100%),因此在超量配置的空间中的标记块还有效地增加了高速缓存的可用容量,这是因为不再需要在高速缓存上维持一个固定的空闲(即,超量配置)空间列表。

另一个具体实施可通过限制来自主数据存储库的推进来管理nand闪存高速缓存上的编程/擦除操作。首先,可通过一个操作确定一段时间内的编程/擦除操作的上限。在一个具体实施中,存储设备的剩余使用寿命可以被划分为多个时段,这些时间段可以是相等的时间段,直到停止日期,例如存储设备的预期寿命结束日期、存储设备的质保期结束日期等。在读取高速缓存达到最大使用寿命编程/擦除操作数之前的剩余编程/擦除操作数可以除以剩余时间段数量,以计算每个时间段允许的编程/擦除操作的平均数。如果读取高速缓存在当前时间段内接近或达到允许的编程/擦除操作平均数,则可以限制来自主数据存储库的另外的推进以防止nand闪存读取高速缓存的过度磨损。

又一个具体实施可通过限制垃圾收集操作来管理nand闪存读取高速缓存上的编程/擦除操作。垃圾收集操作可能需要程序操作才能从块中迁移有效数据,然后再擦除块。如果nand闪存高速缓存与主数据存储库是相干的(即,仅包含主数据存储库上也存在的数据),则可以在垃圾收集操作期间跳过有效数据的迁移,因为如果将来需要任何跳过的数据,则可以从主数据存储库进行检索。可根据当前时间段内允许的编程/擦除操作平均数或者根据其他启发法(例如,数据的冷度、最近最少使用的数据等)来确定是否在垃圾收集操作期间跳过,如下文更详细地阐释。

混合数据存储设备可包括主数据存储库(例如,旋转磁介质)、一级高速缓存和二级高速缓存。在一个具体实施中,一级高速缓存是较小、较快的存储介质,诸如动态随机存取存储器(dram),并且二级高速缓存是中等、较慢的数据存储介质,诸如nand闪存。在一个具体实施中,二级高速缓存是读取高速缓存。读取高速缓存可以接收来自主数据存储库的数据推进,并且根据请求将其上存储的数据提供给主机。在另一个具体实施中,二级高速缓存是写入高速缓存。在本公开中,读取高速缓存的描述适用于其中可控制使用和磨损的任何二级高速缓存,诸如具有耐久性或预期磨损限制的任何二级高速缓存。

可限制nand闪存存储介质上执行的总使用寿命编程/擦除操作数(也称为存储介质的“耐久性”),以避免失效并因此也使整个混合数据存储设备失效。预期nand闪存高速缓存能够成功执行的总使用寿命编程/擦除操作数可以由制造商提供,或者可以通过测试作为读取高速缓存的特定用途来确定。可依赖于诸如错误率、保留要求、编程/擦除失效、误码率、运行温度等考虑因素来确定和/或改变nand闪存读取高速缓存的耐久性。混合数据存储设备可能受制造商质保的限制,并且制造商可以选择nand闪存读取高速缓存的值,以将质保期结束前的预期失效数量限制到制造商可接受的数量。

图1是用于管理混合数据存储设备100中的编程/擦除操作的装置的框图。混合数据存储设备100包括混合设备控制器102,该混合设备控制器通过主机接口120将混合数据存储设备100通信耦接至主机104。混合设备控制器102提供允许主机104将数据存储到主数据存储库106并从主数据存储库检索数据的机制。在一个具体实施中,主数据存储库106包括旋转磁盘。混合设备控制器102可以利用包括sata、scsi、esata、sas、usb等的通信接口和协议。混合设备控制器102提供主机104与混合数据存储设备100之间的通信。此外,主机接口120还至少相对于主数据存储库106、一级高速缓存108、二级高速缓存110和功能模块112提取混合设备控制器102的操作。例如,主机104可以通过参考由混合设备控制器102映射到主数据存储库106上的物理地址的逻辑块地址(lba)访问数据,所述物理地址根据不同的物理寻址方案进行组织,例如基于柱面、磁头、扇区等的寻址方案。

混合设备控制器102可以通过将会改善性能或提供与主机104的有效操作的方式来存储和组织从主机接收的数据。主机104可以向混合数据存储设备100发送存储器访问请求,以经由混合设备控制器102读取或写入数据。存储器访问请求可以指定用于存储器访问请求操作的主机逻辑块地址(lba)范围。例如,来自主机104的存储器访问请求可包括在混合数据存储设备100上写入主机lba范围的请求或者从混合数据存储设备100读取主机lba范围的请求。混合设备控制器102进一步控制混合设备控制器102与如本文所述的混合数据存储设备100的其他组件之间的数据流,所述其他组件诸如一级高速缓存108、二级高速缓存110、主数据存储库106、模块112等。

混合数据存储设备100可包括用于存储数据的一级高速缓存108和二级高速缓存110。在一个具体实施中,一级高速缓存108可以是易失性随机存取存储器(ram)设备,诸如动态ram(dram),并且二级高速缓存110可以是非易失性ram,例如nand闪存存储器。一级高速缓存108和二级高速缓存110可以出于各种原因而使用,包括在操作期间混合设备控制器102所需的数据的临时或永久存储或者用于从主机104高速缓存数据。

从主数据存储库106检索的数据或存储到主数据存储库的数据可以存储在一级高速缓存108、二级高速缓存110或两者中,以提高混合数据存储设备100的吞吐量,因为一级高速缓存108和二级高速缓存110通常具有比主数据存储库106更快的访问速率和更短的检索时间,但通常具有更低的存储容量。虽然在一级高速缓存108和二级高速缓存110上存储数据可能引入数据处理和传输开销,但通常诸如dram和nand闪存的更快介质可以在许多条件下显著提高数据存储设备100的整体性能。

如本文所用,术语“一级”和“二级”通常是指混合设备控制器102的即时性和优先级。例如,来自主机104的读写请求可以由一级高速缓存108处理,以促进快速完成主机命令。随着主机发送新的请求,一级高速缓存108上的数据可以移动到二级高速缓存110或移动到主数据存储库106。在一个具体实施中,二级高速缓存110可以是只读存储设备,因为只有来自主数据存储库106的可被主机进行读取操作的数据才能存储在其上。在该具体实施中,被标记以进行写入的数据可以直接从混合设备控制器102或经由一级高速缓存108发送到主数据存储库106。在另一个具体实施中,二级高速缓存110可以与主数据存储库106相干,这意味着如果主机数据还存储在主数据存储库106上,则主机数据可以仅存储在二级高速缓存110上。当二级高速缓存110与主数据存储库106相干时,可以简化诸如垃圾收集操作之类的某些操作,因为二级高速缓存110上的任何有效数据可能由于在主数据存储库106中的可检索性而从二级高速缓存110跳过或丢失。本文所公开的二级高速缓存(例如,二级高速缓存110)的特征也可适用于相对于其他高速缓存并非“二级”的高速缓存,诸如非易失性高速缓存相对于易失性高速缓存以平行、非分级的关系维持,或者在根本没有易失性高速缓存的情况下使用。二级高速缓存110可以可选地使用诸如dram的易失性存储器,而不是非易失性存储器。在本公开中,包括“二级高速缓存”、“读取高速缓存”、“nand闪存存储介质”及其组合的术语可互换使用。

混合数据存储设备100可包括用于执行与管理主数据存储库106中、一级高速缓存108中、二级高速缓存110中和混合数据存储设备100的其他部分中的数据(包括发送到主机104和从主机接收的数据)相关的功能的模块112。模块112可包括定制逻辑电路、通用处理器和控制器、固件和软件的任何组合。模块112可包括历史跟踪模块114,以跟踪随时间影响混合数据存储设备100的操作。例如,历史跟踪模块114可以跟踪在一级高速缓存108、二级高速缓存110和/或主数据存储库106上执行的编程和/或擦除操作的总数。历史跟踪模块114可以跟踪自制造混合数据存储设备100以来的时间、首次使用混合数据存储设备100的时间、混合数据存储设备100的质保期、一级高速缓存108、二级高速缓存110和/或主数据存储库106所经历的写入放大、从混合设备控制器102接收的主机读写请求等。

分析模块116被配置为确定与混合数据存储设备100相关联的一个或多个标准。与混合数据存储设备100相关联的标准可包括在质保期结束之前剩余的多个时间段、在当前时间段内在一级高速缓存108和/或二级高速缓存110上的允许的编程/擦除操作数、在质保期结束之前在一级高速缓存108和/或二级高速缓存110上允许的编程/擦除操作总数、在混合数据存储设备100的使用寿命期间在一级高速缓存108和/或二级高速缓存110上的总允许编程/擦除操作数、在当前时间段或任何其他时间段内的垃圾收集期间允许的编程/擦除操作数以及与本文所公开的混合数据存储设备100有关的任何其他操作、确定或计算。分析模块116可以耦接到历史跟踪模块114,以获得执行上述分析所需或期望的任何信息。

诊断模块118被配置为确定与混合数据存储设备100的性能相关联的一个或多个标准。与混合数据存储设备100的性能相关联的标准可包括在一个或多个垃圾收集操作期间每个垃圾收集单元的写入放大、与主数据存储库106、一级高速缓存108和/或二级高速缓存110上的超量配置动态水平相关联的写入放大以及与本文的公开内容一致的其他操作。

混合设备控制器102可包括各种模块和/或子系统,包括闪存管理子系统122。闪存管理子系统122可以执行与二级高速缓存110有关的各种操作和控制参数。例如,闪存管理子系统122可以处理来自二级高速缓存110的数据的逐出,将数据在二级高速缓存110上标记为待定逐出/过期/不再待定撤消,调整二级高速缓存110上的超量配置水平,在二级高速缓存110上执行垃圾收集操作等。

当混合设备控制器102将数据从主存储库106推进到二级高速缓存110时,常常发生在诸如二级高速缓存110的读取高速缓存上的程序操作。混合设备控制器102可以将数据推进到二级高速缓存110,因为当响应来自主机104的数据访问请求时,二级高速缓存110可以提供与主数据存储库106相比的改善的性能。用于二级高速缓存110的程序也经常在垃圾收集操作期间执行。nand闪存介质由擦除块组成,每个擦除块包含多个可写入数据的页。尽管擦除块中的页可以单独写入,但是如果整个块中的所有页同时被擦除,则擦除块中的页可能仅被擦除。随着时间的推移,擦除块可包含一些页中的有效数据和其他页中的过期数据的混合。垃圾收集操作可以在删除目标擦除块之前将目标擦除块中的有效数据页迁移到其他擦除块,从而释放二级高速缓存110上的空间。然而,将有效数据迁移到其他擦除块需要将数据编程到其他擦除块,从而导致与从主机发送的数据无关的编程成本。

当在迁移有效数据以释放擦除块的页以便接收有效数据之后对擦除块的页进行擦除时,也常常在垃圾收集操作期间发生在诸如二级高速缓存110的读取高速缓存上的擦除操作。当二级高速缓存110处于饱和状态时,当二级高速缓存110从主机104接收新的推进时,也可能发生擦除操作。如下文更详细地阐释,数据存储介质可被超量配置,这意味着数据存储介质的物理容量的一部分专用于通告空间,即主机104可用的物理容量,数据存储介质上的其余物理空间可以专用于超量配置的空间,其被保留以供混合设备控制器102用于存储数据,以在进行垃圾收集操作或以其他方式在数据存储介质上迁移有效数据时最小化写入放大。当数据存储介质被划分为超量配置的空间和通告的空间时,当通告空间已满或接近满时,介质可能被认为是饱和的。如果二级高速缓存110处于饱和状态,并且混合设备控制器102将新数据推进至二级高速缓存110,则混合设备控制器102可以逐出(即,删除)二级高速缓存110上的数据,从而为新推进的数据提供空间。

由于预期二级高速缓存110能够成功处理的生命周期编程/擦除操作数有限,因此可能期望对于在二级高速缓存110的使用寿命期间如何执行编程/擦除操作方面具有更多选择性,而不是在垃圾收集操作期间推进所有符合条件的数据并执行有效数据的完全迁移。考虑到二级高速缓存110的耐久性估计的潜在下调,考虑到增加的操作要求严格性或对延长二级高速缓存110的预期使用寿命的需要,以最大程度降低二级高速缓存110将在混合数据存储设备100的其他组件之前发生失效从而推动混合数据存储设备100进入失效模式的可能性,这一担忧可能变得越来越重要。如果二级高速缓存110在混合数据存储设备100的质保期结束之前失效,则因二级高速缓存110的失效而导致的混合数据存储设备100的失效更加重要,所述质保期可持续一定年数,例如从混合数据存储设备100的购买之日起五年。

在混合数据存储设备100中管理编程/擦除操作的因素是写入放大(也称为“磨损放大”)。写入放大是指写入的数据量,以便满足主机104请求写入的数据量。例如,为了将2兆字节的主机数据写入二级高速缓存110,还可能需要将1兆字节通过内部垃圾收集或其他技术写入二级高速缓存100,以释放高速缓存上的足够数量的擦除块,从而写入2兆字节的主机数据。较低的写入放大优于较高的写入放大,因为较低的写入放大可以延长二级高速缓存110的使用寿命并增加混合数据存储设备100的整体性能。垃圾收集操作可以利用用于最小化写入放大的技术,例如先在具有最少量的待迁移有效数据的擦除块上操作,再在具有更大量的有效数据的擦除块上操作。

超量配置是与在二级高速缓存110上管理编程/擦除操作相关的另一个概念。超量配置通常是指与暴露于主机104的物理空间部分相比,在存储介质上被保留用于诸如垃圾收集的操作或由混合设备控制器102执行的其他操作所需数据的物理空间部分。换句话讲,诸如二级高速缓存110的存储介质可能能够存储比向用户和/或用户主机通告的数据量更大的数据量。超量配置水平通常与预期由超量配置的存储介质所经历的写入放大成反比关系,这是因为超量配置的空间提供了在存储介质上更有效地执行数据迁移和用于存储和组织数据的其他操作的机会。例如,如果主机在逻辑位置上覆盖了数据但这些数据仍存在于存储介质上的物理位置作为过期数据,则混合设备控制器102可使用超量配置的空间更有效地处理过期数据的垃圾收集。此外,超量配置与写入放大之间的关系不必是线性的。换句话讲,增加超量配置水平可以按照指数关系减少写入放大。由于增加的写入放大,丢失超量配置的空间因此可能会带来高昂的成本,以实现存储介质的期望使用寿命。

增加超量配置通常会降低暴露于主机的物理容量,从而减少主机能够在存储介质上访问的数据量。增加超量配置还会减少写入放大,从而减少存储介质上所需的程序操作数,并减少存储介质上随时间推移发生的磨损。由于从主机的角度,越来越多的超量配置也会降低存储介质的容量,因此较高的超量配置水平通常会导致较低的高速缓存命中率,从而降低存储介质在用作读取高速缓存时的性能。因此,超量配置空间与通告空间之间的比率可能需要在可以有效执行垃圾收集的速率与读取高速缓存对来自主机的处理数据访问请求的实际需求的响应性之间找到平衡。

利用超量配置的暂时自我逐出

一种在诸如二级读取高速缓存110的存储介质上管理编程/擦除操作的方式是利用增加的超量配置在高速缓存上暂时地自我逐出块。数据高速缓存可以被划分为通告的空间部分和超量配置的部分。闪存管理子系统122可以标记块以用于暂时自我逐出,代替通过在高速缓存从混合设备控制器102接收到新的推进时逐出数据来为新推进的数据提供空间,以在饱和的二级读取高速缓存110上维持固定量的空闲空间用于超量配置。在本公开中,术语“待定自我逐出”和“暂时自我逐出”可互换使用。术语“自我逐出”和“逐出”也可互换使用。当块被标记为暂时自我逐出时,该块中的数据保留在二级读取高速缓存110上,直到包含该块的垃圾收集单元的最终垃圾收集操作将其擦除为止。在包含块的垃圾收集单元的垃圾收集操作擦除被标记为暂时自我逐出的块之前,被标记为暂时自我逐出的块中的数据保留有效数据。如果二级读取高速缓存110从主机104接收到对于被标记为暂时自我逐出的块中的数据的数据访问请求,则二级读取高速缓存110可以用所请求的数据对主机104进行响应。如果二级读取高速缓存110确实从主机104接收到对于被标记为暂时自我逐出的块中的数据的数据访问请求,则闪存管理子系统122可以从所请求的擦除块中移除暂时自我逐出标记。在这种情况下,未被标记为暂时或待定自我逐出的块对应于高速缓存的通告空间部分,并且被标记为待定或暂时自我逐出的块对应于高速缓存的超量配置的空间部分。可调整被标记为待定自我逐出的块的数量,从而改变数据存储高速缓存的超量配置部分的大小,并且还相对于如此标记的块的数量改变数据存储高速缓存的通告部分的大小。可根据诸如写入放大限制条件的因素或其他因素来动态地改变超量配置的空间与通告空间之间的比率。

在一个具体实施中,可使用位图将擦除块标记为待定自我逐出。在另一个具体实施中,擦除块可以通过从指针或与待标记的擦除块相对应的标记借用一个位而被标记为待定自我逐出。

在将擦除块标记为暂时自我逐出的方案下,不再需要放弃二级读取高速缓存110的容量以实现更高的超量配置水平。换句话讲,超量配置不必再被视为二级读取高速缓存110上的空闲块的固定列表,而是可以被视为控制所推进块被认为多久可进行自我逐出。这允许二级读取高速缓存110完全或几乎完全被有效数据占据。换句话讲,通过暂时自我逐出,二级读取高速缓存110的逻辑容量可以等于或几乎等于二级读取高速缓存110的物理容量。

将擦除块标记为待定自我逐出还提高了二级读取高速缓存110上对于来自主机104的数据访问请求的命中率,因为更有效的数据可能被保留较长的时间段。在一个具体实施中,为二级读取高速缓存110选择了50%的超量配置水平。换句话讲,在饱和水平下,二级读取高速缓存110的50%被未标记为自我逐出的有效数据占据,并且二级读取高速缓存110的50%被标记为自我逐出的有效数据占据。当二级读取高速缓存110饱和并且接收到推进时,被标记为暂时自我逐出的数据可被擦除以便为新的推进提供空间。尽管至少一些块必须保持空闲以便接收传入的推进,但包含有效数据的块(被标记为暂时自我逐出)的数量接近存储介质的物理容量的100%。与不使用暂时自我逐出并维持固定的空闲块列表的超量配置方案相反,更多块被有效数据占据,并且因此更有可能成为主机104的数据访问请求的对象。在超量配置的空间上将块标记为暂时自我逐出,而不是逐出块以在超量配置的空间上维持空闲空间,会得到改进的响应时间,因为待定自我逐出列表中的擦除块被提供给主机,如果二级读取高速缓存110维持固定的空闲块列表作为其超量配置空间,这些擦除块在二级读取高速缓存110上将不可用。

待逐出的具体数据可通过多种方式确定,所述多种方式包括但不限于:以任意方式、根据最近最少使用的(lru)块、根据将释放足够数量的数据以接受新的推进的块等。在一个具体实施中,逐出被标记为暂时自我逐出的块可延迟到二级读取高速缓存110上的最终垃圾收集操作。在二级读取高速缓存110上的最终垃圾收集操作期间,被标记为暂时自我逐出的块可以包括在计算中以出于垃圾收集目的确定过期情况。

二级读取高速缓存110上的超量配置水平可以动态地确定。在一个具体实施中,根据在混合数据存储设备100的剩余使用寿命期间或在混合数据存储设备100的剩余质保时间段期间剩余的允许编程/擦除操作数,可以将超量配置水平调整得更高。如果对于混合数据存储设备100可用的剩余编程/擦除操作数相对较多,则二级读取高速缓存110上的超量配置可能会降低,从而增加二级读取高速缓存110上的写入放大,但允许在垃圾收集期间保留更有效的数据。另一方面,如果二级读取高速缓存110上剩余的允许编程/擦除操作数相对较少,则二级读取高速缓存110上的超量配置可增加,以减少写入放大,但是以降低性能为代价,因为在垃圾收集期间保留的有效数据较少。动态控制二级读取高速缓存110上的超量配置可控制写入放大,并且最多可以实现1.0的写入放大。为了在二级读取高速缓存110上最有效地管理总编程/擦除操作数,应当将通过超量配置进行的暂时自我逐出与限制二级读取高速缓存110上的推进和限制二级读取高速缓存110上的垃圾收集操作的策略一起使用,如下文更详细地阐释。

图2是使用读取高速缓存上的数据暂时自我逐出管理混合数据存储设备中的编程/擦除操作的示例性操作200。操作202是选择读取高速缓存的超量配置水平。由于示例性操作200依赖于使用超量配置的空间用于被标记为待定自我逐出的擦除块,而不是使用超量配置的空间来维持固定数量的空闲擦除块,因此操作202涉及选择读取高速缓存中的推进数据多久会被视为自我逐出。无论所选的超量配置水平如何,读取高速缓存容量的接近100%将用于存储推进数据,而不论该块是否被标记为暂时自我逐出。可维持一些空闲块以接收新推进的数据,使得读取高速缓存的整个物理容量可不包含推进的主机数据。

在操作204中,读取高速缓存从混合设备控制器接收请求以推进主数据存储库上存储的主机数据。如果在操作206中读取高速缓存上的通告空间不饱和,则在操作208中将推进请求相关数据编程在读取高速缓存上。如果在操作206中读取高速缓存上的通告空间饱和,那么在操作210中,在读取高速缓存上的通告空间中选择足够的块来接收推进请求数据的大小,并将这些块标记为待定自我逐出。

如果在操作212中读取高速缓存上的超量配置空间不饱和,则在操作214中将所推进的数据编程到读取高速缓存。操作214的编程操作是可能的,因为在操作210中通过将块标记为待定逐出来减少读取高速缓存上的通告空间中的数据量。如果在操作212中超量配置的空间饱和,则必须从超量配置的空间中逐出足够的块,以便为推进请求相关数据提供空间以适配在超量配置的空间中。可以任意地、根据最近最少使用的块或根据另一启发法来选择在操作216中被选择用于逐出的块。在操作216中逐出足够的块以释放足够的空间来容纳推进请求相关数据之后,在操作218中将推进请求相关数据编程到读取高速缓存。

图3示出了使用读取高速缓存上的数据暂时自我逐出管理混合数据存储设备中的编程/擦除操作的示例性操作300。在操作302中,混合存储控制器从主机接收对于数据的数据访问请求。如果在操作304中来自主机的数据访问请求的相关数据不在读取高速缓存上,则示例性操作300在操作306处结束。如果在操作304中来自主机的数据访问请求的相关数据在读取高速缓存上,则示例性操作继续进行到操作308。如果在操作308中来自主机的数据访问请求的相关数据被标记为待定自我逐出,则在操作310中可以从数据中移除待定自我逐出标记,并且来自主机的数据访问请求的相关数据在操作312中被发送到主机。如果在操作308中来自主机的数据访问请求的相关数据未被标记为待定自我逐出,则在操作312中数据将发送到主机。

确定剩余的允许编程/擦除操作

在混合数据存储设备中管理编程/擦除操作的另一方面包括相对于包含读取高速缓存的数据存储介质的耐久性估计确定二级读取高速缓存上剩余的使用寿命编程/擦除操作总数,并限制一定时间段内的另外的编程/擦除操作,使得混合数据存储设备不会在二级读取高速缓存上执行比高速缓存的估计耐久性水平更多的编程/擦除操作。在一个具体实施中,二级读取高速缓存上的编程/擦除操作被限制为在混合数据存储设备的质保期内低于读取高速缓存的耐久性水平。

二级读取高速缓存可以与对应于二级读取高速缓存预期在失效之前能够成功处理的编程/擦除操作数的耐久性水平相关联。二级读取高速缓存的制造商可以为出于本文所述目的而提供的二级读取高速缓存存储介质提供耐久性等级。另选地或除此之外,二级读取高速缓存存储介质的耐久性等级可以在用作读取高速缓存的各个条件下具体确定。影响用作二级读取高速缓存的存储介质的耐久性水平的考虑因素可能与确定一般用途的存储介质的耐久性水平所依据的考虑因素有很大不同。例如,二级读取高速缓存可以与主数据存储库相干,这意味着存储在二级读取高速缓存上的数据在主数据存储库上也可用。因此,当将存储介质用作读取高速缓存而非一般用途时,存储介质上的数据的丢失或损坏可以是更加可容忍的,因为如果需要,可以从主数据存储库中检索任何丢失的数据。确定用于二级读取高速缓存的存储介质的耐久性水平的其他可依据的因素包括错误率、保留要求、编程/擦除操作失效、误码率、运行温度等。

在一个具体实施中,用于二级读取高速缓存的数据存储介质的耐久性水平可以动态地确定,并且在存储介质的使用寿命期间进行修改。例如,如果检测到的用于二级读取高速缓存的存储介质的运行温度显著高于设备使用寿命期间的预期范围,则可以向下修改二级读取高速缓存的耐久性。另一方面,如果检测到的误码率和编程/擦除操作失效率在设备的使用寿命内保持低于预期值,则可以向上修改二级读取高速缓存的耐久性。

混合数据存储设备在混合数据存储设备的使用寿命内将二级读取高速缓存上的编程/擦除操作总数限制为小于用于二级读取高速缓存的存储介质的耐久性水平的量可能很重要,因为用于二级读取高速缓存的存储介质的失效可能导致混合数据存储设备进入失效模式。

混合数据存储设备可以将设备的剩余使用寿命划分成多个时间段。在一个具体实施中,时间段是相等的时间段,诸如5、10、15秒等,并且混合数据存储设备的剩余使用寿命在混合数据存储设备的质保期内持续。在另一个具体实施中,时间段是不相等的。在又一个具体实施中,时间段的长度是可变的,并且可以在混合数据存储设备的使用寿命内改变。

在将混合数据存储设备的剩余寿命划分成多个时间段之后,可以假设各个时间段均具有相等的值,通过将剩余使用寿命编程/擦除操作除以剩余的时间段来计算每个时间段的最大编程/擦除操作数。参考图1,历史跟踪模块114可以存储与二级读取高速缓存相关联的耐久值和与在混合数据存储设备的使用寿命内至今在二级读取高速缓存上执行的编程/擦除操作总数相对应的编程/擦除操作计数器值。历史跟踪模块114可以针对在二级读取高速缓存上执行的每个编程/擦除操作递增编程/擦除操作计数器值。分析模块116可以通过获取存储在编程/擦除操作计数器中的编程/擦除操作总数与历史跟踪模块114上存储的二级高速缓存耐久值之间的差值,并将该值除以剩余时间段的数量,从而计算每个时间段中二级高速缓存上允许的最大编程/擦除操作数。

限制读取高速缓存中的推进

本公开的一个方面涉及将二级读取高速缓存中的推进数限制为小于在混合数据存储设备的使用寿命内每个时间段中允许的最大编程/擦除操作数。限制二级读取高速缓存中的推进可以通过多种方式完成。在一个具体实施中,可以接收向二级读取高速缓存进行的推进,直到达到最大值,并且可以拒绝任何后续的推进,直到下一个时间段开始。在另一个具体实施中,对于向二级读取高速缓存进行的推进的要求严格性可能变得更加严格,因为某一时间段期间的推进数接近该时间段允许的最大推进数。增加对于向二级读取高速缓存进行的推进的要求严格性的一种方式是增加被视为推进的数据的读取热度阈值。在该示例中,推进在某一时间段的早期阶段将不那么严格,并且根据在该时间段期间遇到的推进数,随着时间段的进行将会变得更加严格。增加严格要求的一个优点是,随着编程/擦除操作数接近时间段内允许的最大编程/擦除操作数,具有高读取热度阈值的数据将能够在接近时间段结束时进行推进。另一方面,如果对于推进的严格要求在整个时间段内保持不变,则可以接受具有较低读取热度阈值的推进,直到达到限值,然后一旦达到该时间段的限制,则可以拒绝具有较高读取热度阈值的推进。

图4示出了通过限制去往读取高速缓存的推进来管理混合数据存储设备中的编程/擦除操作的示例性操作400。操作402是将二级读取高速缓存的剩余使用寿命分成多个时间段的操作。在一个具体实施中,时间段可以是相等的时间段。每个时间段可为例如5、10、15等秒长。在另一个具体实施中,时间段长度可以不相等。操作404是接收推进请求,以在一个时间段期间将数据推进到读取高速缓存。作为推进请求对象的数据可以驻留在主数据存储库上,并且该请求可以是将数据从主数据存储库推进到读取高速缓存以便可用于响应来自主机的数据访问请求,从而读取作为推进请求对象的数据。

在可以确定是否应当接受推进请求之前,混合数据存储设备可以确定在操作406中接收推进请求的时间段内的编程/擦除操作允许值。操作406涉及将剩余的允许使用寿命编程/擦除操作除以剩余时间段数量。在一个具体实施中,分析模块可以执行操作406的计算。可通过获得读取高速缓存的耐久性水平并减去直到该时间在读取高速缓存上执行的总编程/擦除操作数,来计算剩余的允许使用寿命编程/擦除操作数。在一个具体实施中,历史跟踪模块可以保持与读取高速缓存相关联的耐久性水平。历史跟踪模块还可以维持计数器,以跟踪至今在读取高速缓存上的总使用寿命编程/擦除操作数。历史跟踪模块还可以保留关于混合数据存储设备在操作中花费的时间量的数据以及表示混合数据存储设备的质保期结束的时间段或日期。在一个具体实施中,分析模块可以从历史跟踪模块检索必要的数据并执行操作406的计算。

如果将通过在操作408中接收推进请求来超过接收到推进请求的时间段的最大编程/擦除操作数,那么混合数据存储设备可以在操作410中限制推进请求。在一个具体实施中,在操作410中限制推进请求包括拒绝该请求。在另一个具体实施中,在操作410中限制推进请求包括增加用于接收推进请求的严格性,例如增加推进请求的读取热度阈值。如果在操作404中接收到的推进请求将超过在接收该请求的时间段内允许的最大编程/擦除操作数,但是在操作404中接收到的推进请求仍然满足增加的读取热度阈值,那么混合数据存储设备可以接收在操作404中接收到的推进请求,即使这样做会超过该时间段的最大允许编程/擦除操作数。如果读取热度水平足够高,即使会超过某一时间段的最大允许编程/擦除操作数,接受推进请求也可以是可接受的,因为这样做本质上是从未来时间段的编程/擦除操作预算中进行“借用”。超过最大允许编程/擦除操作数限值以接收具有高读取热度值的推进可能优于拒绝该推进以支持未来时间段中具有相对较低读取热度值的另一推进。如果混合数据存储设备超过某一时间段的最大允许编程/擦除操作数限值,则下一次混合数据存储设备计算每个时间段的最大允许编程/擦除操作数时,由于超过了较早时间段的最大允许编程/擦除操作数,将会为未来时间段分配一个较小的最大允许编程/擦除操作数。

如果在操作404中接收到的推进请求被混合数据存储设备接收,那么在操作412中可以将作为推进请求对象的数据推进到读取高速缓存。在作为操作412将数据推进到读取高速缓存之后,在操作414中可以递增总使用寿命编程/擦除操作计数器的值,以反映在操作412中为推进数据而执行的编程/擦除操作数。在一个具体实施中,历史跟踪模块维持计数器,以跟踪读取高速缓存上的总使用寿命编程/擦除操作数。操作416通过从读取高速缓存的总允许编程/擦除操作数(即,耐久性)中减去总使用寿命编程/擦除计数器的值来确定读取高速缓存上剩余的允许编程/擦除操作数。然后,操作400返回到操作404,以接收将数据推进到读取高速缓存的请求。

限制读取高速缓存上的垃圾收集操作

本公开的另一方面是通过限制读取高速缓存上的垃圾收集操作来管理编程/擦除操作。如果读取高速缓存与主数据存储库相干,即读取高速缓存上的任何数据也存在于主数据存储库上,则可以在读取高速缓存的垃圾收集操作期间跳过有效数据的迁移,而不会丢失整个混合数据存储设备上的有效数据。例如,如果读取高速缓存上的擦除块包含一页有效数据,并且剩余的页被过期数据占据,则该擦除块可以在垃圾收集操作期间被擦除,而不会将有效数据页迁移到另一个块,即有效数据页被“跳过”。如果主机对所跳过页中包含的数据发出数据访问请求,那么混合数据存储设备可以将数据再次推进到读取高速缓存,或者它可以用直接来自主数据存储库的请求数据对主机的数据访问请求进行响应。

在开始垃圾收集操作之前,如果要迁移所有有效数据,混合数据存储设备可以计算与垃圾收集操作相关联的写入放大值。如果预期的写入放大值高于写入放大限值,或者如果在垃圾收集操作期间与有效数据迁移相关联的编程/擦除操作超过或接近在将发生垃圾收集操作的时间段内允许的最大允许编程/擦除操作数,则混合数据存储设备可以在垃圾收集操作期间跳过一些或所有有效数据的迁移。在一个具体实施中,要在垃圾收集操作期间跳过的有效数据可以通过随机方式选择。在另一个具体实施中,待跳过的有效数据可以基于启发法来被选择,所述启发法包括但不限于基于最近最少使用的数据或数据的冷度。在一个具体实施中,混合数据存储设备上的分析模块可包括访问模式跟踪器,以确定读取高速缓存上的数据的冷度。

如果被逐出的数据已经具有在读取高速缓存中保留足够长的时间的机会,使得可以建立足够的历史记录以便能够决定是否有利于迁移或跳过数据,考虑在垃圾收集操作期间跳过读取高速缓存上的有效数据的迁移可能是可取的。尽管在将来可能需要将已逐出的有效数据重新写入读取高速缓存,但是可通过迁移有效数据直到其保留在读取高速缓存上的时间长于阈值时间段来最小化此风险,使得可以做出明智的决定。

在垃圾收集操作期间跳过有效数据的迁移可以控制写入放大,并且在最佳情况下,如果积极地跳过有效数据的迁移,则可以实现1的写入放大。在另一个具体实施中,对于垃圾收集操作存在写入放大限值,并且可以将有效数据向上迁移,直到达到该垃圾收集操作的写入放大限值为止。在特定垃圾收集操作达到写入放大限值之后尚未迁移的任何有效数据可能会被跳过。在一个具体实施中,可以为单个垃圾收集操作设置2.0的写入放大限值,使得将超过2.0的写入放大的任何垃圾收集操作被限制为在达到写入放大限值之后跳过任何有效数据的迁移。在另一个具体实施中,写入放大限值取决于读取高速缓存的超量配置水平。读取高速缓存的超量配置水平越高,可预期的写入放大越低,反之亦然。在垃圾收集期间跳过有效数据的迁移可允许实际的写入放大与基于读取高速缓存的超量配置水平预期的写入放大一致。

图5示出了通过限制读取高速缓存上的垃圾收集操作来管理混合数据存储设备中的编程/擦除操作的示例性操作。操作502是发起垃圾收集操作。垃圾收集操作可包括读取高速缓存的一部分或全部,或者包括读取高速缓存上的垃圾收集单元。操作504是确定垃圾收集写入放大限值。垃圾收集写入放大限值可适用于整个垃圾收集操作、整个读取高速缓存或读取高速缓存上的垃圾收集单元。垃圾收集写入放大限值可以动态地确定,包括但不限于基于读取高速缓存的超量配置水平、基于在将发生垃圾收集操作的时间段期间可以使用的允许编程/擦除操作数等等。或者,垃圾收集写入放大限值可以是预先确定的值。

操作506确定垃圾收集操作的预期写入放大。在一个具体实施中,如果要迁移所有有效数据并且没有待迁移的有效数据,则操作506确定垃圾收集操作的预期写入放大。在另一个具体实施中,如果在垃圾收集操作期间仅迁移部分有效数据,则操作506确定垃圾收集操作的写入放大。如果垃圾收集操作的预期写入放大大于写入放大限值,则操作516将垃圾收集单元中的有效数据的迁移限制为一定量,该量将相关的写入放大限制为小于写入放大限值。操作516可以通过随机方式或根据启发法确定要跳过的有效数据,所述启发法包括但不限于最冷数据优先、最近最少使用的数据等。如果垃圾收集操作的写入放大不大于写入放大限值,则操作510完成当前垃圾收集单元的垃圾收集操作。如果当前垃圾收集单元是垃圾收集操作中的最后一个垃圾收集单元,那么在操作514中,操作500继续进行到下一个垃圾收集单元。如果当前垃圾收集单元不是垃圾收集操作中的最后一个垃圾收集单元,那么操作500在操作518处结束。

图6是混合数据存储设备中读取高速缓存上的总累积编程/擦除操作数与时间的曲线图600。曲线602表示在读取高速缓存的推进期间的编程/擦除操作的恒定消耗。换句话讲,如果从混合数据存储设备的使用寿命开始到质保期结束(由时间t3表示)的一系列时间段中的每个时间段消耗最大允许编程/擦除操作数,则编程/擦除消耗的曲线图将遵循曲线602。

曲线604表示读取高速缓存随时间的编程/擦除操作消耗的示例性曲线图。在时间t1处,由读取高速缓存消耗的使用寿命编程/擦除操作数由曲线604上点a的值表示。点a在曲线602上表示每个时间段的最大预算编程/擦除操作数。因此,在点a处,没有可用的多余编程/擦除操作,并且在不超出曲线602的情况下可以不消耗额外的编程/擦除操作。在时间t1处,混合数据存储设备可以通过多种方式降低编程/擦除操作被消耗的速率。例如,可增加读取高速缓存上的超量配置,以减少数据在被视为自我逐出之前可能保留在高速缓存上的时间量,优点是由于减少的写入放大而使编程/擦除操作减少。另选地或除此之外,可通过增加推进所需的读取热度阈值,更严格地进行推进,使得在时间t1和时间t3之间的每个时间段进行的主机推进更少。另选地或除此之外,垃圾收集操作可以跳过更多有效数据的迁移,从而由于减少的写入放大而使得消耗的编程/擦除操作更少。

在时间t2处,由读取高速缓存消耗的总使用寿命编程/擦除操作数由曲线604上点b的值表示。点b位于曲线602下方,表示最大消耗编程/擦除操作数。因此,在点b处,每个时间段可消耗的编程/擦除操作比在以恒定速率消耗编程/擦除操作时将会消耗的操作更多。换句话讲,具有斜率1的曲线606表示在时间t1和时间t3之间可消耗编程/擦除操作的新的最大速率。另外的编程/擦除操作可以通过各种方式实现。例如,可减少读取高速缓存上的超量配置,以增加数据在被视为自我逐出之前可能保留在高速缓存上的时间量,代价是由于增加的写入放大而使编程/擦除操作增多。另选地或除此之外,可通过减少推进所需的读取热度阈值,不那么严格地进行推进,使得在时间t1和时间t3之间的每个时间段进行的主机推进更多。另选地或除此之外,垃圾收集操作可以迁移更多有效数据,从而由于增加的写入放大而使得消耗的编程/擦除操作更多。

图6的曲线图示出,本文所述的技术提供了可调参数以管理混合数据存储设备上的编程/擦除操作。可调参数包括改变二级读取高速缓存上的超量配置水平、限制推进和限制垃圾收集操作。这些参数可以在混合数据存储设备的使用寿命期间动态地调整,如图6的曲线图所示,以牺牲性能来延长读取高速缓存的使用寿命。例如,如果混合数据存储设备在操作的早期阶段经历低水平的使用,则可以调整参数以在设备的剩余使用寿命期间提供改进的性能,代价是由于设备不再处于超过读取高速缓存的耐久性限制的危险之中,而增加了编程/擦除操作。另一方面,如果混合数据存储设备在其使用寿命的早期阶段中经历过度使用,则可以调整参数以降低由于过多的编程/擦除操作而导致的读取高速缓存失效的风险,代价是降低性能。

本文所述的具体实施被实现为一个或多个计算机系统中的逻辑操作。逻辑操作可以通过以下方式实现:(1)作为在一个或多个计算机系统中执行的由处理器实现的操作的序列,以及(2)作为在一个或多个计算机系统内互连的机器或电路模块。具体实施是一个选择性问题,具体取决于所使用的计算机系统的性能要求。因此,构成本文所述的具体实施的逻辑运算被不同地称为操作、对象或模块。此外,应当理解,逻辑操作可以任何顺序执行,除非另有明确声明,或者特定顺序本身就是权利要求语言所必需的。上述说明书、示例和数据以及所附附录提供了示例性具体实施的结构和用途的完整描述。

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