提供固态盘中的后台操作的机会窗口提示的方法和固态盘与流程

文档序号:15829152发布日期:2018-11-03 00:17阅读:307来源:国知局

本申请要求于2017年4月13日提交的美国临时专利申请no.62/485,296的权益和优先权,该申请的公开以引用方式全文并入本文中。

本公开整体涉及固态盘(ssd),更具体地说,涉及一种用于提供用于在ssd中执行后台操作的机会窗口提示的系统和方法。

背景技术

固态盘(ssd)将主机/用户数据存储在诸如闪存介质的存储介质中。闪存介质具有一定的读/写能力和持久性,需要谨慎管理。ssd控制器管理ssd的闪存介质,以提供可靠、高性能和高性价比的数据存储。ssd控制器需要执行各种内部后台操作,以延长ssd的生命周期和提供ssd的可靠的操作。这种内部后台操作的示例是回收、垃圾收集、闪存转换层(ftl)的数据结构更新、各种统计和日志更新和高速缓存卸载。

这些后台操作可占用闪存通道带宽的很大一部分和ssd控制器的资源。一些后台操作(如垃圾收集和回收)相当复杂,可能会导致主机读/写操作的严重中断。由于ssd的内部后台操作,主机所观察到的带宽和延迟可显著波动。



技术实现要素:

根据一个实施例,一种方法包括:从主机接收多个主机命令,以访问固态盘(ssd)的存储介质;监视用于执行所述多个主机命令的原速率;通过获取原速率在时间单元内的均值来计算平均速率;将平均速率与阈进行比较;检测出平均速率降至阈以下,这指示机会窗口打开;提供机会窗口的提示;以及确定是否在机会窗口期间执行将要进行或即将进行的后台操作。

根据另一实施例,一种固态盘(ssd)包括:闪存介质;以及控制器,其包括主机接口层、闪存转换层和闪存接口层。主机接口层被构造为:从主机接收多个主机命令,以访问固态盘(ssd)的存储介质;监视用于执行所述多个主机命令的原速率;通过获取原速率在时间单元内的均值来计算平均速率;将平均速率与阈进行比较;检测出平均速率降至阈以下,这指示机会窗口打开;以及为闪存转换层提供机会窗口的提示。闪存转换层被构造为确定是否在机会窗口期间执行将要进行或即将进行的后台操作。闪存接口层被构造为根据所述多个主机命令执行去往闪存介质和离开的数据转移。

现在将参照附图更具体地描述并且在权利要求中指出包括各种新颖的实施细节和事件组合的上述和其它优选特征。应该理解的是,本文所述的特定系统和方法仅以说明的方式呈现,而不是作为限制。正如本领域技术人员所理解的,本文中描述的原理和特征可在不脱离本公开范围的各个和众多实施例中采用。

附图说明

作为本申请的一部分包括在内的附图示出了当前优选实施例,并且与上面提供的一般性描述和下面提供的优选实施例的详细描述一起用于解释和教导本文描述的原理。

图1示出了根据一个实施例的示例固态盘(ssd)的框图;

图2是根据一个实施例的用于计算平均主机读速率的示例处理的流程图;

图3示出了机会窗口的示例;

图4显示了用于示出执行后台操作的机会窗口的数据库应用的使用情况示例;以及

图5是根据一个实施例的基于平均主机读速率执行后台操作的示例处理的流程图。

附图不一定按比例绘制,并且在整个附图中出于示意性目的,相似结构的元件或功能通常由相同标号代表。附图仅旨在便于本文描述的各个实施例的描述。附图未描述本文公开的教导的每个方面,并且不限制权利要求的范围。

具体实施方式

本文公开的特征和教导中的每一个可分别使用或与其它特征和教导结合使用,以提供一种用于提供用于在ssd中执行后台操作的机会窗口提示的系统和方法。参照附图进一步详细地描述了单独地和组合地利用许多这些额外特征和教导的代表性示例。该详细描述仅旨在教导本领域技术人员用于实施本教导的各方面的进一步的细节,而不是为了限制权利要求的范围。因此,在最广泛的意义上,以上在详细描述中公开的特征的组合对于实施教导来说可以不是必须的,而是仅仅是被教导为描述本教导的特定代表性示例。

在下文的说明中,仅为了解释的目的,提出了具体的术语,以提供对本公开的彻底理解。然而,本领域的技术人员之一应该清楚,对于实施本公开的教导,不需要这些具体的细节。

本文的详细描述的一些部分按照对计算机存储器中的数据位的操作的算法和符号表示来呈现。这些算法描述和表示由数据处理领域的技术人员用来有效地将其工作的实质传达给本领域其它技术人员。本文通常将算法看作是导致预期结果的一系列有条理的步骤。这些步骤需要物理量的物理操作。通常(但不一定)这些量采取可以被存储、转移、合并、比较和以其他方式被操纵的电信号或磁信号的形式。将这些信号称为位、值、元素、符号、字符、术语、数字等有时(主要是出于常用的原因)被证明是方便的。

然而,应当记住,所有这些和类似的术语都与适当的物理量相联系,并且仅是适用于这些量的方便标记。除非特别说明,否则从下面的讨论中明显应该理解,在整个描述中,利用诸如“处理”、“计算”、“确定”、“显示”等的讨论,是指计算机系统或类似的电子计算装置的行为和处理,其操纵在计算机系统的寄存器和存储器中表示为物理(电子)量的数据、并且将其转变为在计算机系统存储器或寄存器或其它这种信息存储、传输或显示装置中类似地表示为物理量的其他数据。

此外,代表性示例和从属权利要求的各种特征可以以不具体和明确地列举的方式组合,以便提供本教导的额外的有用实施例。还明确指出,为了原始公开的目的以及为了限制要求保护的主题内容的目的,实体的组的所有的值的范围或指示公开了每个可能的中间值或中间实体。还明确指出了,图中所示的组件的尺寸和形状是为了帮助理解目前教导的实施,而不是为了限制示例中显示的尺寸和形状。

本公开提供了一种用于检测和提供用于执行固态盘(ssd)的后台操作的最佳时间窗口的系统和方法。ssd控制器可在最佳时间窗口中执行ssd的内部后台操作(诸如回收、垃圾收集、用于闪存转换层(ftl)的数据结构更新、各种统计和日志更新、以及高速缓存卸载),以最小化中断和避免与主机发起的i/o操作的潜在冲突。

根据一个实施例,ssd的主机接口层监视主机i/o操作的速率,并且提供指示最佳时间窗口对于ssd的闪存转换层(ftl)可用的提示。最佳时间窗口还被称作机会窗口。ftl可确定是否在最佳时间窗口中执行将要进行或即将进行的后台操作中的全部或一些,以减少或避免对主机发起的i/o操作的影响。主机接口层可不提出任何特定的闪存转换算法,而是基于现有ftl算法仅向ftl提供关于何时执行后台操作的提示。

图1示出了根据一个实施例的示例固态盘(ssd)的框图。ssd120包括闪存介质150和ssd控制器121。根据一个实施例,ssd120是包括经高速外围组件互连(pcie)总线附接的非易失性存储介质的高速非易失性存储器(nvme)。在另一实施例中,ssd120是一种可与结构上nvme(nvmeoverfabrics,nvme-of)标准兼容的存储器。在这种情况下,可通过诸如以太网、光纤通道和infiniband的下层网络结构访问ssd120。

ssd控制器121包括主机接口层122、闪存转换层(ftl)123和闪存接口层124。主机接口层122提供主机110与ssd控制器121之间的主机接口。ftl123利用映射表将逻辑块地址(lba)转换为物理块地址(pba),并且访问映射表所指示的闪存介质150的物理块,以对闪存介质150的物理块执行请求的主机i/o命令。主机i/o命令的示例包括(但不限于)读命令、写命令、读/改/写(rmw)命令和删除命令。闪存接口层124根据主机i/o命令和ftl映射执行去往闪存介质150和离开闪存介质150的实际数据转移。

根据一个实施例,主机接口层122可跟踪主机读操作的速率。例如,主机接口层122通过获取主机读操作在预定时间段(例如,1微秒、1毫秒、1秒)内的均值来计算主机读速率。主机读速率在本文中还被称作主机读带宽。主机接口层122相对于阈(即,主机读速率阈)定期检查主机读速率。通过从主机110接收到的命令,可对主机读速率阈编程。当主机读速率降至主机读速率阈以下时,主机接口层122认为后台操作机会窗口是打开的。当主机读速率超过主机读速率阈时,主机接口层122认为后台操作机会窗口是关闭的。

ftl123可在机会窗口期间发起和执行内部内务(house-keeping)后台操作。例如,ftl123可执行用于更新ftl映射表和将更新后的ftl映射表存储至闪存介质150的后台操作。当主机命令被执行时,ftl映射表随着新写数据写至闪存介质150中的新物理位置而保持改变。ftl映射表也可由于卸载写高速缓存、闪存介质的回收和垃圾收集的这些后台操作以及来自主机的lba修剪命令而改变。ftl123需要在后台操作中将ftl映射表的改变定期保存至闪存介质150。除ftl映射表以外,ftl123更新诸如每块的编程/擦除(p/e)计数的其它ftl统计表和各种日志,并将它们定期保存至闪存介质150。

在后台操作机会窗口期间,只要机会窗口保持打开,ftl123就可执行全部或一些后台操作。当机会窗口关闭时,ftl123可以停止或减少活动的后台操作,以最小化对后续主机的i/o性能的影响。

根据一个实施例,ftl123可在机会窗口期间选择执行将要进行或即将进行的后台操作当中的特定后台操作。根据应用、阈和工作负载的特性,机会窗口可能不是定期可用的,或者可能很难获得。在这种情况下,ftl123可执行特定的将要进行或即将进行的后台操作,而不管从主机接口层122接收到的机会窗口提示。在一个实施例中,ssd控制器121可确定当前阈可设置得太高以致没有足够的机会窗口的机会或者机会窗口的持续时间不够。在这种情况下,ssd控制器121可使用由主机110设置的预定的一组阈中的阈。某些后台操作可延迟,但不能无限期地延迟,而是需要在特定的时间段内执行,以在实现ssd120的所需可靠性和持久性的同时不影响整体主机i/o性能。在这种情况下,机会窗口可以只表示主机i/o操作执行得较少的时间窗口,用于表示执行后台操作的潜在机会,但不要求必需在这样的窗口中进行操作。因此,在机会窗口中选择性地执行的后台操作可减少或避免与主机操作的冲突或矛盾,并且最小化对主机i/o性能的影响。

虽然主机读速率主要用于机会窗口检测,但是ssd控制器121可跟踪主机操作的不同速率,以检测机会窗口。例如,ssd控制器121可跟踪主机写操作的速率,并按照与主机读速率相似的方式基于主机写速率检测机会窗口。用于基于主机写速率检测机会窗口的阈可与用于基于主机读速率检测机会窗口的阈不同。在一些实施例中,ssd控制器121可跟踪主机读速率和主机写速率二者以检测机会窗口,从而平衡主机读速率和主机写速率二者。在这种情况下,当计算组合的主机读/写速率时,可应用权重因数以说明主机读操作和主机写操作各自对整体主机i/o性能的贡献。在一些实施例中,主机读速率可用于主机读密集性应用,并且主机写速率可用于主机写密集性应用。

根据一个实施例,主机接口层122可跟踪主机操作的多个速率。例如,主机接口层122可跟踪主机读操作的速率和主机写操作的速率二者。主机接口层122相对于一组速率阈(例如,主机读速率阈和主机写速率阈)定期检查主机操作的多个速率。通过从主机110接收到的命令,可对速率阈编程。当每一个速率降至对应的速率阈以下时,主机接口层122认为机会窗口是打开的。根据一个实施例,可对主机操作的多个速率进行彼此独立的检查。这是因为执行一些后台操作所需的资源可与执行其它后台操作所需的资源不同。在这种情况下,用于特定后台操作的机会窗口可打开,同时用于其它后台操作的另一机会窗口可关闭。根据另一实施例,相对于对应的速率阈同时检查多个速率,以确定机会窗口是打开的还是关闭的。

主机接口层122执行主机命令取回,、发起主机命令的执行,转移与主机命令关联的数据,并且最终向主机110发送完成条目以指示是否成功执行了主机命令。除这些一般任务之外,主机接口层122可在完成主机命令中的每一个时监视主机读/写速率。主机接口层122可累积在时间单元内发送至主机110/从主机110发送的数据(例如,字节、双字(dword)或逻辑块)的大小。时间单元分辨率的一些示例为1微秒、1毫秒和1秒。可通过主机命令由主机110对用于累积数据转移的时间单元进行编程。针对每个时间单元,主机接口层122基于数据的累积大小保持跟踪原(raw)主机读/写速率。当计算原主机读/写速率时,主机接口层122可应用平滑函数(例如,低通滤波器)。基于原主机读/写速率,主机接口层122通过将可编程权重应用于原主机读/写速率来计算平均主机读/写速率。可存储原主机读/写速率和计算的平均主机读/写速率用于检测机会窗口和/或用于将来参考。原主机读/写速率可剧烈地波动,并且主机接口层122可对原主机读/写速率取均值,以消除锐利部分(sharpness)和计算平均主机读/写速率。可基于在主机110上运行的应用对平均函数的权重编程并且通过系统软件和/或主机驱动器对其精调。

下面是根据一个实施例的计算原主机读/写速率和计算平均主机读/写速率的伪代码。

针对各个主机读/写命令,主机接口层122计算对应于执行的主机命令的累积的数据大小。累积的读/写大小的值存储在累加器中。

对于每个时间触发器(例如,1微秒),主机接口层122基于平均weight参数计算平均主机读/写速率。按照可编程的方式将平均的weight参数设置在0与1之间。平均的weight参数用于确定将对原主机读速率执行的平滑处理的程度。例如,weight1表示不进行平滑处理,而weight0表示均值固定为零。在计算平均主机读/写速率之后,主机接口层122重置累加器的累积读/写大小,以计算在后一时间单元中的新的平均主机读/写速率。主机接口层122可重复该处理,并且继续计算、监视和存储主机读/写速率的值。主机接口层122可定期将主机读/写速率的值与一个或多个阈进行比较,并且向ftl123提供关于机会窗口的提示,以执行后台操作。

图2是根据一个实施例的用于计算平均主机读速率的示例处理的流程图。注意,相似的流程可应用于计算主机写速率或者组合的主机读/写速率。

主机向ssd发出i/o命令(201)。ssd的ssd控制器的主机接口层执行命令取回(202)并且发起接收到的主机i/o命令的执行(203)。ssd控制器的闪存转换层(ftl)和闪存接口层执行数据转移,以执行主机i/o命令中的每一个(204),并且主机接口层最终将完成条目发送回主机(205)。针对各个执行的主机命令,主机接口层检查执行的主机命令是否是主机读命令(206)并且在执行的主机命令是主机读命令时更新主机读数据大小累加器(207)。针对其它主机命令,绕过用于计算平均主机读速率的步骤207。

主机接口层还运行定时器(211)。对于每个时间触发器(例如,1微秒),主机接口层计算和更新平均主机读速率(212)并且重置主机读数据大小累加器,以计算对应于下一时间单元的新主机读/写速率(213)。

写高速缓存卸载是将由ftl123执行的内部后台操作的另一示例。写高速缓存可存在于芯片上缓冲器中或者外部存储器中,或者甚至存在于快闪型介质中。ftl123定期将写高速缓存转移至主闪存介质150。当ftl在密集地执行主机i/o操作的峰时间窗口中执行写高速缓存卸载操作时,会不利地影响主机i/o操作的执行。

ftl123还需要定期执行闪存块/页的回收和垃圾收集。需要将闪存介质150的闪存块擦除并添加至自由块的池中。针对垃圾收集选择的一些闪存块可包含需要在将这种块擦除之前移至其它闪存块的一些有效数据。这些回收和垃圾收集操作会显著占用闪存带宽,因此,会在主机i/o操作与回收和垃圾收集操作冲突或矛盾的情况下对主机i/o性能造成不利影响。

根据一个实施例,主机接口层122可监视平均主机读/写速率并将平均主机读/写速率与可编程的阈进行比较。当平均读/写速率降至设定的阈以下时,主机接口层122认为后台操作机会窗口是打开的。主机接口层122为ftl123提供机会窗口,作为用于执行后台操作的提示。利用该机会窗口,ftl123决定后台操作的实际执行。安排在机会窗口期间的后台操作将最少地影响主机i/o性能。

根据一个实施例,ftl123可忽略从主机接口层122接收到的机会窗口提示,并且由于各种原因在机会窗口期间可不执行特定后台操作。例如,可在特定事件之后或者在特定时间窗口期需要执行一些即将进行的后台操作,而不管机会窗口的提示。当接收到这种机会窗口提示时,ftl123可检查是否可执行将要进行或即将进行的后台操作中的全部或一些。当主机读/写速率超过阈时,主机接口层122向ftl123指示机会窗口是关闭的。在机会窗口关闭以后,ftl123可停止或者缩减在机会窗口中开始的内部后台操作。

图3示出了机会窗口的示例。原主机读速率高频率地波动,并且主机接口层对波动的原主机读速率进行平均以计算平均主机读速率。在当前示例中,当平均主机读速率小于阈32mbps时,机会窗口在24微秒与49微秒之间和64微秒与83微秒之间打开。参照图1,用于检测机会窗口的阈是可编程的,并且可通过主机110设置。主机110可基于闪存介质150的应用和特性以及主机i/o操作来应用不同的阈。根据一个实施例,主机110可对用于计算主机读/写速率的各种参数进行编程。主机可编程参数的示例包括(但不限于)机会窗口阈和读/写平均函数权重。主机110可利用存储在ssd的寄存器中的保留空间中的值、或者将nvme标准的setfeature/getfeature命令或者供应商特定的命令发送至ssd,来对这些参数编程。在一些实施例中,ssd可采用各种学习算法以调整用于计算主机读/写速率的参数并精调速率阈。

图4示出了用于示出用于执行后台操作的机会窗口的数据库应用的使用情况示例。用于当前示例中的工作负载专用于针对推特使用情况的rocksdb数据库应用。在当前示例中,i/o的大小为4kb,工作负载是读和随机写,数据库块高速缓存为20gb,并且使用了16个i/o线程。

图4所示的主机读速率跟踪表明机会窗口是定期可用的。使用机会窗口作为用于执行后台操作的提示,ssd控制器可减少主机i/o操作与内部后台操作之间的冲突和矛盾。

下面是ftl利用由主机接口层提供的机会窗口提示的伪代码。

图5是根据一个实施例的基于平均主机读速率执行后台操作的示例处理的流程图。应该注意,相似的流程图可应用于计算主机写速率或组合的主机读/写速率。

主机接口层保持跟踪主机读速率并且将主机读速率与可编程阈进行比较(501)。如果主机读速率低于阈(502),则主机接口层确定用于执行后台操作的机会窗口是打开的。在这种情况下,ftl在机会窗口期间执行将要进行或即将进行的后台操作(503)。如果主机读速率高于阈(502),则主机接口层确定用于执行后台操作的机会窗口是关闭的。在这种情况下,ftl停止或缩减活动的后台操作,以释放执行主机i/o操作的闪存通道带宽(504)。

纠删编码(ec)是一种数据保护的方法,其中数据被分割成碎片,通过冗余数据块进行扩展和编码,并存储在一组不同的位置中或不同的存储介质中。纠删编码可以利用存储在不同位置或不同存储介质中的冗余数据,使得在磁盘存储过程中的一些点上被破坏的数据能够重建。纠删码优于传统raid的优点在于它们能够减少重建数据所需的时间和开销。纠删编码的缺点在于,它可以更加cpu密集,这可转化为增加的i/o延迟。

根据一个实施例,用于提供机会窗口的当前系统和方法可扩展至一组ssd的纠删编码。在任何给定的点,所述一组ssd中的n个ssd(n取决于纠删编码方案)可为离线的,并且数据可仍然通过纠删码被恢复。当在特定ssd中可用机会窗口时,ssd可检查(算上自己)在纠删编码组中是否具有n个或更少的不可操作或遭受增加的延迟的ssd。如果具有少于n个的ssd,则ssd可安全地开始其后台操作。即使机会窗口预计不正确,由于可利用纠删编码从剩余的未受影响的驱动器构造数据,纠删编码组也仍可在没有延迟的情况下处理操作。

根据一个实施例,一种方法包括以下步骤:从主机接收多个主机命令,以访问固态盘的存储介质(ssd);监视用于执行所述多个主机命令的原速率;通过获得原速率在时间单元上的均值来计算平均速率;将平均速率与阈进行比较;检测出平均速率降至阈以下,这指示机会窗口打开;提供机会窗口的提示;并且确定是否在机会窗口期间执行将要进行或即将进行的后台操作。

所述方法还可包括以下步骤:发起所述多个主机命令中的一个主机命令;针对所述多个主机命令中的每一个宣布完成条目;以及在执行每个主机命令之后更新平均速率。

原速率可为原主机读速率,并且平均速率可为平均主机读速率。

原速率可为原主机写速率,并且平均速率可为平均主机写速率。

所述方法还可包括:通过获取多个原速率在时间单元的均值计算多个平均速率;将所述多个平均速率与一组阈进行比较;检测出第一平均速率降至第一阈以下,这指示第一机会窗口打开;检测出第二平均速率降至第二阈以下,这指示第二机会窗口打开;提供第一机会窗口和第二机会窗口的提示;确定是否在第一机会窗口期间执行将要进行或即将进行的后台操作的第一子集;以及确定是否在第二机会窗口期间执行将要进行或即将进行的后台操作的第二子集。

ssd的主机接口层可提供指示机会窗口对于ssd的闪存转换层(ftl)可用的提示。

后台操作可包括以下中的一个或多个:更新闪存介质的ftl映射表、将用于每块的编程/擦除(p/e)计数的表和各种日志保存至闪存介质、写高速缓存卸载、和回收闪存块/页、和垃圾收集。

可利用权重参数计算平均速率。

可基于在主机上运行的应用、ssd的类型、主机命令的特性中的一个或多个确定阈。

所述方法还可包括:检测出平均速率超过阈,这指示机会窗口关闭;并且停止或缩减活动的后台操作。

所述方法还可包括:利用从主机接收到的命令对用于计算平均速率的一个或多个参数进行编程。

根据另一个实施例,固态盘(ssd)包括:闪存介质;和控制器,其包括主机接口层、闪存转换层和闪存接口层。主机接口层被构造为:从主机接收多个主机命令,以访问固态盘(ssd)的存储介质;监视用于执行所述多个主机命令的原速率;通过获取原速率在时间单元内的均值来计算平均速率;将平均速率与阈进行比较;检测出平均速率降至阈以下,这指示机会窗口打开;以及为闪存转换层提供机会窗口的提示。闪存转换层被构造为确定是否在机会窗口期间执行将要进行或即将进行的后台操作。闪存接口层被构造为根据所述多个主机命令执行去往闪存介质和离开闪存介质的数据转移。

主机接口层还可被构造为:发起所述多个主机命令中的一个主机命令;针对所述多个主机命令中的每一个宣布完成条目;并且在执行每个主机命令之后更新平均速率。

原速率可为原主机读速率,并且平均速率可为平均主机读速率。

原速率可为原主机写速率,并且平均速率可为平均主机写速率。

主机接口层还可被构造为:通过获取多个原速率在时间单元中的均值来计算多个平均速率;将所述多个平均速率与一组阈进行比较;检测出第一平均速率降至第一阈以下,这指示第一机会窗口打开;检测出第二平均速率降至第二阈以下,这指示第二机会窗口打开;提供第一机会窗口和第二机会窗口的提示;确定是否在第一机会窗口期间执行将要进行或即将进行的后台操作的第一子集;以及确定是否在第二机会窗口期间执行将要进行或即将进行的后台操作的第二子集。

后台操作可包括以下中的一个或多个:更新闪存介质的ftl映射表、将用于每块的编程/擦除(p/e)计数的表和各种日志保存至闪存介质、写高速缓存卸载、和回收闪存块/页、和垃圾收集。

可通过权重参数计算平均速率。

可基于在主机上运行的应用、ssd的类型、主机命令的特性中的一个或多个确定阈。

主机接口层还可被构造为:检测出平均速率超过阈,这指示机会窗口关闭。闪存转换层还可被构造为:停止或缩减活动的后台操作。

可利用从主机接收到的命令对用于计算均值的一个或多个参数编程。

ssd可与结构上nvme(nvme-of)标准的高速非易失性存储器(nvme)标准兼容。

上面已描述了以上示例实施例,以示出实施提供用于在ssd中执行后台操作的机会窗口提示的系统和方法的各个实施例。公开的示例实施例的各种改变和偏离将对于本领域普通技术人员是清楚的。在下面的权利要求中阐述了旨在落入本发明的范围内的主题内容。

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