基于逻辑饱和度选择用于垃圾收集的大容量存储装置流的制作方法

文档序号:21847931发布日期:2020-08-14 17:15阅读:144来源:国知局
基于逻辑饱和度选择用于垃圾收集的大容量存储装置流的制作方法

本发明的领域整体上涉及计算系统,并且更特别是涉及基于逻辑饱和度选择用于垃圾收集的大容量存储装置流。



背景技术:

图1描绘固态驱动器(ssd)101。ssd的闪速存储资源103可被视为包括多个(r个)闪存管芯,其中每个闪存管芯包括多个(k个)单独可写入的闪速存储单元块。这里,跨越r个管芯的相同位置的块对应于闪存块的“带”。因此,由于每个管芯有k个单独可写入的块并且每个ssd有r个闪存管芯,所以在ssd内有k个带,每个带具有r个存储块。块是擦除数据的基本物理单位。以页粒度对写入进行编程,并且以通常作为数据的可校正码字维护的某一较小的访问大小来访问读取。

将数据写入到闪速存储器是复杂的过程。由于数据不能直接在闪存上重写,因此必须首先擦除旧数据,在其之后可以写入新数据。闪存“回收”不再具有有效数据的物理区域的过程被称为“垃圾收集”。垃圾收集过程需要合并来自闪存块的有效数据,将其写入到不同的块,并且然后擦除原始块,这释放了其用于新数据的空间(并且有效地移除其无效数据)。因为以块粒度执行擦除,所以块是回收物理存储资源的基本单位。

块内的数据的寿命变化越大(其中,寿命对应于数据在块中无变化地停留的时间量),垃圾收集过程越影响性能。即,如果平均数据块内的数据项的寿命变化很大,则垃圾收集过程将花费更多的时间来在擦除原始数据块之前将有效数据项重写到其它块(被称为“写入放大”的低效率)。相比之下,如果平均数据块包含具有统一/相同寿命的数据,则理想地,在垃圾收集期间花费很少的时间/不花费时间来重写有效数据,这是因为所有的块的数据在相同的时间窗内变得无效,并且,可以擦除整个块而不用重写任何有效数据(当垃圾收集开始时,整个块无效)。

因此,目前和未来的高速非易失性存储器(nvme)规范(其是用于通过高速外围组件接口(pci)(pcie)链路访问非易失性存储介质的开放逻辑装置接口规范)包括“流”技术,在其中主机将相应的速度附加到要被写入到nvme兼容装置(例如,固态驱动器(ssd))中的数据项。速度值指示数据项的预期寿命。ssd将在相同数据块中存储具有相似/相同寿命的数据项,使得最小化写入放大(其中具有相同/相似寿命的数据对应于特定流)。

通常,在运行时间期间,ssd需要决定哪些块应当作为垃圾收集的目标。用于决定哪个流接下来要回收其块的传统策略/算法基本上是基于流数据速率,由此具有包含较长预期寿命(较低数据速率)的数据的流比具有包含较短预期寿命(较高数据速率)的数据的流更频繁地被选择用于回收。该方法的基本假设是ssd等待回收具有较短预期寿命数据的流的时间越长,当它最终开始对该流的垃圾收集时,该流的无效内容将越大。因此,应当产生较少的写入放大。

附图说明

从结合以下附图的以下详细描述中可以获得对本发明的更好理解,在附图中:

图1示出固态驱动器;

图2示出不同流的有效率;

图3示出用于选择用于垃圾收集的流的改进过程;

图4示出在固态驱动器的运行时间上的不同流的逻辑饱和度值;

图5示出改进的固态驱动器;

图6示出计算系统。

具体实施方式

然而,流方法的问题是ssd处理的具有不同数据速率和/或不同访问行为模式的流越多,避免写入放大越难。本质上,在背景技术中讨论的仅基于流数据速率来选择用于垃圾收集的流的算法过于简单化。

图2提供用于理解当在存在多个变化重写行为的流时选择用于垃圾收集的特定流时可能出现的更深问题的框架。这里,图2示出五个流中的每个流的有效率,其作为在ssd运行时间的时段内为每个流接收的访问次数的函数。有效率是有效的流的存储数据的百分比。这里,在任何时刻,流的存储数据将包括有效数据和无效数据。无效数据是已经被重写但尚未作为垃圾收集过程的一部分被擦除的较旧数据。

如图2中所观察到的,不同的流包括:1)两个冷流201、202,ssd在该时间段内已经接收到对其相对少的访问;2)两个热流204、205,ssd在该时间段内已经接收到对其相对大量的访问;以及3)暖流203,ssd在该时间段内已经接收到对其中等数量的访问(访问可以是读取和写入,或仅仅是写入)。为了简单起见,假设在图2的ssd的运行时间内没有垃圾收集操作被执行。

这里,在假设热流正在以高速率产生无效数据(因为它们频繁地重写它们的现有数据)并且冷流正在以低速率产生无效数据(因为它们不频繁地重写它们的现有数据)的情况下,在背景技术中讨论的基于“数据速率”的流选择方法将故意地延迟回收两个热流204、205的块,以支持回收两个冷流201、202的块。照这样,冷流的块将以比热流的块更大的速度被回收。

然而,上述假设只有在现有数据的重写操作随时间均匀地发生时才是准确的。冷流201和热流204都展示这种特性,因为它们相应的有效率随着它们访问次数的增加而稳定地衰减(现有数据的均匀、稳定的重写流以恒定速率产生无效数据,导致稳定下降的有效率)。

相比之下,冷流202和热流205没有展示这种特性。相反,冷流202和热流205都以“突发”(“突发的”或“顺序的”写入行为)重写它们的现有数据。对于这两个流202、205,存在扩展的访问序列(或相对长的时间段),其中很少/没有发生现有数据的重写,并且无效率保持近似恒定(无效率可以随着时间适当地增加,因为新数据的任何初始写入将增加有效数据的量)。

然而,这些扩展的访问序列由短访问序列隔开,在短访问序列中流正在主要以高数据速率重写现有数据。照这样,流202、205的特征在于相对恒定的有效率,该有效率被标记有在有效性方面的突然下降。仅基于流的数据速率来标识用于回收的流的传统算法可能不能服务于两个流202、205,这是因为取决于两个流的垃圾收集过程的时机,易于出现写入放大或一些其它与写入相关的低效率。

即,例如,相对于热流205(ssd将故意地对其延迟垃圾收集),如果ssd延迟通过访问序列207的垃圾收集直到点206为止,则该延迟将不提供任何益处,这是因为很少/没有无效数据通过访问序列207产生。此外,在点206处垃圾收集的决定将可能导致写入放大,这是因为ssd将写入/保存在点206处有效但此后通过紧跟在点206之后不久的大突发重写的方式几乎立即宣布无效的大量数据。同样,相对于冷流202(ssd将选择对其更频繁地调用垃圾收集),如果ssd在点208处决定调用垃圾收集,则出于相同/类似的原因,写入放大再次可能产生。

因此,仅基于流的相应数据速率来选择用于垃圾收集的流的传统方法过于简单化,因为流对写入放大或其它与写入相关的低效率的暴露可以很大程度上取决于垃圾收集何时开始的时机和流的重写行为的(一个或多个)模式。

图3描绘用于选择用于垃圾收集的流的改进方案。如图3中所观察到的,为每个流301计算逻辑饱和度值,其中逻辑饱和度是有效的流的存储空间的百分比(或与其互相关)。这里,根据至少一个实施例,ssd在逐个带的基础上将存储资源分配给流。

通常,ssd维持存储空间的“空闲池”。即,ssd维持准备被写入的最近擦除的存储空间的供应。当流的分配的存储空间变得不够(流的空闲空间量减少)时,从空闲池向其分配更多空的存储空间。随着空闲池中的存储空间的量变得更少,ssd控制器将增加其选择用于垃圾收集的流的速率。从垃圾收集过程回收的存储空间进入到空闲池中。理想地,当流需要更多存储空间时,空闲池从不是空的。

第一类型的ssd将整个带分配给流,并且在整个带上执行垃圾收集。照这样,以带为单位向空闲池添加存储空间并且从空闲池减去存储空间。在备选实施例中,可以想象,存储空间被分配给块中的流,并且垃圾收集过程回收块中的存储空间。在这种情况下,以块为单位向空闲池添加存储空间并且从空闲池减去存储空间。为了简单起见,本申请的其余部分将假设带粒度,但是读者应当理解,下面讨论的相同原理还可以应用于块(或某一其它)粒度。

在任何时刻,可以将特定流的逻辑饱和度计算为当前分配给流的带内的有效数据的总量除以这些相同带的组合容量。这里,对于典型的流,较旧或较年长的已分配的带主要包含无效数据和有效数据的某种组合(其中无效数据的量通常随着带年龄的增加而增加),而较新或较年轻的已分配的带包含更多的有效数据(包括最初写入的新数据项)以及尚未被写入的空闲空间。

因此,在各种实施例中,流的逻辑饱和度可被视为由分配给流的带中的有效数据、无效数据和空闲空间的组合来标准化的流的所存储的有效数据的量。本质上,逻辑饱和度是已经分配给流的物理存储容量的有效率的类型。

ssd控制器可以采用直接的方式计算任何特定流的逻辑饱和度。这里,例如,ssd的控制器可被设计成维持对哪些块已经被分配给流(当将带分配给流时,将带的块分配给该流)以及对于每个这样的块、其页中有多少包含有效数据的理解。

典型的ssd控制器包含lba/pba表,其维持逻辑块地址(lba)和对应的物理块地址(pba)的条目。lba是由将命令发送到ssd的主机(针对任何读取或写入操作)指定的块地址。pba是ssd的对应内部地址,其标识ssd中的哪个物理块存储lba所针对的信息。

典型的块具有存储许多页的容量。因此,当接收到重写现有页的请求时,通常,新数据被写入到该页的紧接的先前版本所驻留的相同块中的空闲页的空间余量中(因为lba/pba映射结果中没有改变)。将该页的先前版本标记为无效。因此,lba/pba表或某一其它数据结构中的每个条目通常包括可以从中容易地确定块中的有效页的数量的信息。

通过保持哪些块已经被分配给流以及在每个这样的块内存在多少有效页的运行总数,可以容易地计算为流存储的有效数据的量。此外,在任何时间点分配给流的容量是当前分配给流的带的数量、每个带的块数量和每个块的页数量的乘积。因此,每个流的逻辑饱和度可作为相对简单的计算由控制器容易地实时确定。

在为每个流301计算逻辑饱和度的情况下,进行关于ssd中存在的空闲空间的量的询问302。如果ssd中存在足够量的空闲空间,则没有流作为垃圾收集的目标。相比之下,如果ssd中的空闲空间的量降到低于某一第一较低阈值(低水位标志),则选择具有最低逻辑饱和度的流用于垃圾收集303。这里,在实施例中,由垃圾收集过程303回收特定数量的所选择的流的带(例如,空闲空间低于低水位标志越多,越多的带被回收)。然后,进行第二询问304以查看ssd中的空闲空间是否已经上升到高于某一第二较高阈值(高水位标志)。如果是这样,则ssd控制器通过询问302返回到循环。如果不是这样,则选择具有最低逻辑饱和度的流用于垃圾收集,回收其存储空间303,并且重复该过程直到空闲空间增长到高于高水位标志为止。

值得注意地,取决于在作出选择303时的逻辑饱和度值的状态,被选择用于垃圾收集303的流可以是与由紧接的之前的流选择所选择的流相同的流或不同的流。这里,当流被选择用于垃圾收集并且回收其带的设置数量时,ssd中的空闲空间增加并且所选择的流的逻辑饱和度增加。即,后垃圾收集,空闲池的大小将增加,并且流将在更少分配的存储资源中存储相同量的有效数据。

因此,在两个流具有几乎相同的逻辑饱和度值的情况下,在这些流中的一个流被选择用于垃圾收集并且其垃圾收集完成之后,另一个流可能接下来被选择用于垃圾收集,而不是再次选择相同的流。同样,在两个流具有非常不同的逻辑饱和度的情况下,在选择具有高得多的逻辑饱和度的流之前,具有低得多的逻辑饱和度的流将可能被重复地选择用于垃圾收集(最终,重复地垃圾收集的流的逻辑饱和度将超过另一个流的逻辑饱和度)。

图4示出对于图2中最初讨论的暖流和热流203、204、205来说逻辑饱和度将如何变化的定性演示。回想图2没有试图示出由垃圾收集导致的各个流的有效率中的任何改变,相比之下,图4中观察到的逻辑饱和度率反映了从图3的流选择过程发生的垃圾收集。

图4的流405对应于暖流。暖流405以比热流403、404更低的速率接收访问命令,并且因此其逻辑饱和度将以比热流403、404更慢的速率随着时间下降(其接收重写命令的较慢输入速率)。热流包括以稳定/恒定速率接收重写命令的第一热流403,以及采用突发接收重写命令的第二热流404。

参考图4,点a到p中的每个点表示控制器选择用于垃圾收集的特定流并且然后对该流执行垃圾收集的决定。值得注意地,当对流执行垃圾收集时,流的逻辑饱和度上升,这是因为流的有效数据与无效数据比率在流的分配的存储空间中已经增加(无效空间已经被有效地回收并且进入到空闲池中)。因此,点a到p中的每个点所位于的特定流展示紧接在该点之后的流的逻辑饱和度的上升。

如图4中可见,与暖流405相比,更频繁地选择两个热流403、404用于垃圾收集。特别地,仅三次选择暖流405用于垃圾收集(点b、g和p),而六次选择稳定热流403(点a、d、f、i、k、o)并且七次选择突发热流404(点c、e、h、j、l、m、n)。照这样,图3的改进选择过程已经以显著的方式表现得与选择具有最慢数据速率的流的传统方法不同。即,尽管传统方法将选择较慢数据速率流比较快数据速率流更频繁,但相比之下,图4的方法示出选择较高数据速率流比较低数据速率流更频繁。

较不频繁地选择较低数据速率流的原因和效果在于,随着时间推移,与较高数据速率流相比,将把更多的存储空间分配给较低数据速率流。即,随着时间推移,暖流405将具有比热流403和404更多的分配的带。这里,在热流403、404被更频繁地选择用于垃圾收集的情况下,它们的分配的存储空间没有同样多地增加,这是因为它们的带被定期地回收到空闲池。相比之下,在暖流405比其它两个流更不频繁地被选择的情况下,暖流将需要定期地请求更多存储空间,这是因为其无效数据没有被定期地回收。

注意,出于类似的原因,如果图2的冷流201、202被添加到图4中的流的混合,则它们将甚至比暖流405更不频繁地被选择用于垃圾收集,并且将具有比暖流的分配存储空间容量更大的分配存储空间容量。

因此,图3的选择过程特征在于较高数据速率流:1)被更频繁地选择用于垃圾收集;以及2)具有比较低数据速率流更少的分配存储空间。图3的选择过程的另一个特征是所有流的逻辑饱和度将最终收敛到近似相同的值(在图4中标记为逻辑饱和度稳态(lsss))。更特别地,在lsss稳态周围存在适当的带,使得所有流的逻辑饱和度值将倾向于停留在ssd的延长运行时间内。理论分析和模拟分析都已经证实了这种特性。

所有流的相应逻辑饱和度的收敛保持在特定逻辑饱和度值周围的带内被认为是相对于写入放大避免的某种程度的最佳状态。这里,假设所有流具有相等的优先级,最好所有流具有对写入放大的近似相同暴露(同等地受到其影响),而不是以一个或多个其它流更多地受到写入放大影响的代价而使一个流更少地受到写入放大影响。

根据一个观点,ssd的整体性能很大程度上是受到写入放大影响最多的流的性能的函数。因此,利用使得所有流稳定到近似相同的逻辑饱和度值的图3的流选择方法,没有流比任何其它流(平均)受到更多影响,并且ssd正在以近似最佳状态操作。

图5示出具有控制器502的ssd501,该ssd501包括用于实现图3的流垃圾收集选择过程的智能设备503。这里,控制器502和/或智能设备503可以利用专用硬连线逻辑电路、可编程逻辑电路(例如,现场可编程门阵列(fpga)逻辑电路)和/或被设计成执行某种形式的程序代码(例如,固件)的诸如嵌入式处理器、嵌入式微控制器等的逻辑电路中的任何一个来实现。

图6提供计算系统600(例如,智能电话、平板计算机、膝上型计算机、台式计算机、服务器计算机等)的示例性描绘。如图6中所观察到的,基本计算系统600可以包括中央处理单元601(其可以包括例如多个通用处理核615_1到615_x)和设置在多核处理器或应用处理器上的主存储器控制器617、系统存储器602、显示器603(例如,触摸屏、平板)、本地有线点到点链路(例如,usb)接口604、各种网络i/o功能605(诸如以太网接口和/或蜂窝调制解调器子系统)、无线局域网(例如,wifi)接口606、无线点到点链路(例如,蓝牙)接口607和全球定位系统接口608、各种传感器609_1到609_y、一个或多个照相机610、电池611、功率管理控制单元612、扬声器和麦克风613以及音频编码器/解码器614。

应用处理器或多核处理器650可以包括在其cpu601内的一个或多个通用处理核615、一个或多个图形处理单元616、存储器管理功能617(例如,存储器控制器)和i/o控制功能618。通用处理核615通常执行计算系统的应用软件和操作系统。图形处理单元616通常执行图形密集功能,以例如生成在显示器603上呈现的图形信息。存储器控制功能617与系统存储器602通过接口连接,以向/从系统存储器602写入/读取数据。功率管理控制单元612通常控制系统600的功耗。

触摸屏显示器603、通信接口604-607、gps接口608、传感器609、(一个或多个)照相机610和扬声器/麦克风编解码器613、614中的每个全部可以被视为相对于整个计算系统的各种形式的i/o(输入和/或输出),在适当的情况下,整个计算系统也包括集成外围装置(例如,一个或多个照相机610)。取决于实现,这些i/o组件中的各种i/o组件可以集成在应用处理器/多核处理器650上,或者可以位于管芯之外或位于应用处理器/多核处理器650的封装之外。计算系统还包括非易失性存储设备620,其可以是系统的大容量存储组件。非易失性存储设备620可以用ssd来实现,所述ssd基于如上文详细描述的最低逻辑饱和度来选择用于垃圾收集的流。

本发明的实施例可以包括如上文所阐明的各种过程。过程可以在机器可执行指令中体现。指令可以用于使得通用或专用处理器执行某些过程。备选地,这些过程可以由包含用于执行过程的硬连线逻辑电路或可编程逻辑电路(例如,fpga、pld)的特定/定制硬件组件来执行、或由经过编程的计算机组件和定制硬件组件的任何组合来执行。

本发明的元件还可以作为用于存储机器可执行指令的机器可读介质被提供。机器可读介质可以包括但不限于软盘、光盘、cd-rom和磁光盘、闪速存储器、rom、ram、eprom、eeprom、磁卡或光卡、传播介质或适合于存储电子指令的其它类型的介质/机器可读介质。例如,本发明可以作为计算机程序被下载,所述计算机程序可以经由通信链路(例如,调制解调器或网络连接)通过在载波或其它传播介质中体现的数据信号从远程计算机(例如,服务器)传送到请求计算机(例如,客户端)。

在前述说明书中,已经参考本发明的特定示例性实施例描述了本发明。然而,将明显的是,在不偏离如所附权利要求书中所阐明的本发明的较宽精神和范围的情况下,可以对其进行各种修改和改变。因此,说明书和附图要在说明性而不是限制性意义上被看待。

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