用户可配置的被动后台操作的制作方法

文档序号:11275943阅读:182来源:国知局
用户可配置的被动后台操作的制造方法与工艺

相关申请数据

本申请要求于2016年3月17日提交的序列号为62/309,954的美国临时专利申请的权益,该美国临时专利申请通过引用并入于此以用于所有目的。

本发明构思通常涉及固态驱动(ssd),并且更具体地,涉及当ssd可以执行垃圾回收(garbagecollection)时进行的增强。



背景技术:

垃圾回收对于固态驱动(ssd)是常见事件。当ssd用尽空闲(free)擦除块时,其执行垃圾回收(gc)来释放新的擦除块以供新的写入使用。该处理可能会减慢ssd的读/写性能,这是因为在可以对请求提供服务之前,读/写必须等待垃圾回收完成。诸如存储智能的特征通过主机发起的垃圾回收帮助解决该问题。然而,这需要主机发出垃圾回收命令,以通知设备开始垃圾回收。

针对用于提高大数据库的性能并且对最小化延迟和降低成本的两个目的进行均衡的方式存有需求。



技术实现要素:

本申请的一个方面提供一种固态驱动(ssd),包括:用于数据的存储设备;用于对存储设备执行垃圾回收的垃圾回收逻辑;用于接收配置命令和数据请求的接收电路,该配置命令包括从包含空闲持续时间和队列深度阈值的集合中所得到的条件;用于存储条件的条件存储设备;用于对ssd的状态进行确定的状态确定器;以及用于将ssd的状态与条件进行比较的比较器。

本申请的另一方面提供一种方法,包括:在固态驱动(ssd)处接收配置命令,该配置命令包括从包含空闲持续时间和队列深度阈值的集合中所得到的条件;将条件存储在ssd上;以及使用条件来对ssd执行垃圾回收。

本申请又一方面提供一种物品,包括有形存储介质,所述有形存储介质具有存储在其上的非暂态指令,该非暂态指令当被机器执行时导致:在固态驱动(ssd)处接收配置命令,该配置命令包括从包含空闲持续时间和队列深度阈值的集合中所得到的条件;将条件存储在ssd上;以及使用条件来对ssd执行垃圾回收。

附图说明

图1示出了根据本发明构思的实施例、包括被配备为执行被动垃圾回收的固态驱动(ssd)的系统。

图2示出了图1的计算机的额外的细节。

图3示出了被配备为执行被动垃圾回收的图1的ssd的细节。

图4示出了图1的系统向图1的ssd发送配置命令以及之后的数据请求。

图5示出了根据本发明构思的实施例、图3的比较器被用于基于图1的ssd已经空闲(idle)多久来确定是否执行被动垃圾回收。

图6示出了根据本发明构思的另一实施例、图3的比较器被用于基于图1的ssd的队列深度来确定是否执行被动垃圾回收。

图7示出了在图1的ssd包括多个命令队列时图3的状态确定器确定图1的ssd的队列深度。

图8a至图8b示出了根据本发明构思的实施例、用于管理对图1的ssd的后台垃圾回收的过程的流程图。

图9示出了根据本发明构思的实施例、用于可以如何配置图1的ssd以执行被动垃圾回收的示例过程的流程图。

图10示出了根据本发明构思的实施例、用于图1的ssd使用图1的ssd的空闲时间并且可选地使用空闲块计数来确定何时执行被动垃圾回收的示例过程的流程图。

图11示出了根据本发明构思的实施例、用于图1的ssd使用图1的ssd的队列深度并且可选地使用空闲块计数来确定何时执行被动垃圾回收的示例过程的流程图。

图12示出了根据本发明构思的实施例、在图1的ssd包括多个命令队列时用于图3的状态确定器确定图1的ssd的队列深度的示例过程的流程图。

具体实施方式

现在将详细地参考在附图中示出了其示例的本发明构思的实施例。在下面的详细描述中,阐述了若干具体细节以使得能够透彻理解本发明构思。然而,应当理解,本领域普通技术人员可以将本发明构思实践为不具有这些具体细节。在其他情形下,未详细地描述已知的方法、过程、组件、电路和网络述,以不使得实施例的方面不必要地模糊。

将理解,尽管术语第一、第二等在本文中可以被用于描述各种元件,但是这些元件不应当被这些术语限制。这些术语仅被用于将一个元件与另一元件相区分。例如,第一模块可以被称为第二模块,并且类似地,第二模块可以被称为第一模块,而不背离本发明构思的范围。

本文中,在对本发明构思的描述中所使用的术语仅出于描述特定实施例的目的,而不意图对本发明构思进行限制。当在对本发明构思和所附权利要求的描述中使用时,单数形式“一”、“一个”以及“该”意图也包括复数形式,除非上下文清楚地指示并非如此。还将理解,在本文中所使用的术语“和/或”指代并且包含相关列举项中的一个或多个的任何和所有可能组合。将进一步理解,术语“包括”和/或“包括有”当在本说明书中使用时,指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但是不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其分组的存在或添加。附图中的组件和特征不必按照比例绘制。

通过允许设备被配置为当设备的状态超过(cross)特定阈值时、在i/o请求中间自动地开始后台操作,可以提高主机发起的后台操作——诸如垃圾回收——的效力。可以通过主机经由命令或设置页面来启用或禁用此特征。

允许设备被配置为自动地开始后台操作可以帮助主机查看对输入/输出(i/o)的改进,而对其应用进行最小化的修改或不进行修改。该特征使得固态驱动(ssd)空闲时间——其为主机应用所不期望的——的使用最大化。主机可以配置ssd以在命令请求中间(即,空闲时间)自动地开始后台操作。

在一个示例中,主机可以配置ssd设备以在空闲持续时间达到特定时间——例如,50毫秒(ms)——时,自动地开始后台操作。ssd可以在队列中不存在主机命令时开始空闲计时器,并且当已经经过50ms时开始后台操作。

在另一示例中,主机可以配置ssd设备以在命令队列深度下降低于特定等级(例如,10个命令)时自动地开始后台操作。该低队列深度可以向设备指示存在“轻”业务量,并且因此可以运行后台操作。这可能对于正被处理的当前i/o的性能具有效果(effect),但是不应当具有对i/o的显著的整体影响。

可以使用设备的接口协议(例如,小型计算机系统接口(scsi)、快速非易失性存储器(nvme)、at附接(ata)、串行ata(sata)、iscsi、光纤通道(fc)、以太网等)来配置设备。例如,在scsi中,可以在模式页面(modepage)中设置配置值,以使能被动垃圾回收并且对后台操作条件设置进行设置;在nvme中,可以在特征页面(featurespages)中对这些设置进行设置,等等。

图1示出了根据本发明构思的实施例、包括被配备为执行被动垃圾回收的固态驱动(ssd)的系统。在图1中,计算机105可以包括处理器110、存储器115以及ssd120。处理器110可以是任何种类的处理器:例如,英特尔至强(xeon)、赛扬(celeron)、安腾(itanium)或凌动(atom)处理器,或者amd皓龙(opteron)处理器。存储器115可以是任何种类的存储器,诸如非易失性存储器(例如,闪速存储器)、静态随机存取存储器(sram)、永久性随机存取存储器(pram)等,但是通常为动态随机存取存储器(dram)。ssd120可以是任何种类的ssd。另外,ssd120可以被替换为可以从本发明构思的实施例获益的任何等价存储设备。计算机105自身可以被替换为提供可比的功能的任何机器,诸如膝上型计算机、服务器或者如智能电话的便携式计算设备,而不失普遍性。为了简明,计算机105将被称为“主机”。

图2示出了图1的主机105的额外的细节。参考图2,通常,主机105包括一个或多个处理器110,该一个或多个处理110可以包括可以被用于协调主机105的组件的操作的存储器控制205和时钟210。处理器110还可以耦合到存储器115,作为示例,该存储器115可以包括随机存取存储器(ram)、只读存储器(rom)或其他状态保存媒介。处理器110还可以耦合到存储设备120和网络连接器215,该网络连接器215可以是例如以太网连接器或无线连接器。处理器110还可以连接到总线220,用户接口225和可以使用输入/输出引擎230来管理的输入/输出接口端口以及其他组件可以附接到该总线220。

图3示出了被配备为执行被动垃圾回收的图1的ssd120的细节。在图3中,ssd120可以包括电路305,该电路305可以被用于发送和接收信息(诸如操作或数据)。ssd120还可以包括ssd控制器310和闪速存储器315。ssd控制器310可以控制ssd120的操作。闪速存储器315可以将数据存储在可以经受垃圾回收的块中。

ssd控制器310可以包括状态确定器320、比较器325、条件存储设备330、触发电路335和垃圾回收逻辑340,以及其他组件。状态确定器320可以确定ssd120的状态。ssd120的“状态”可以依赖于图1的主机105指定了什么条件。如上所述,主机105可以指定不同的条件,诸如空闲持续时间(即,在其期间ssd120不对来自图1的主机105或其他主机的请求进行处理的间隔)或队列深度(即,多少命令等待处理)。依赖于图1的主机105所指定的条件,状态确定器320可以确定ssd120的适当的状态。

比较器325可以将如由状态确定器320所确定的ssd120的状态与由图1的主机105所指定的条件进行比较。例如,如果图1的主机105指定为50ms的空闲持续时间,则比较器325可以将此空闲持续时间与如由状态确定器320所确定的ssd120实际上已经空闲多久进行比较。如果ssd120已经空闲达到至少50ms,则比较器325可以指示满足条件。可替选地,如果图1的主机105指定为10个命令的队列深度,则比较器325可以将此队列深度与对于ssd120多少命令当前待决进行比较。如果ssd120不具有多于10个的当前待决的命令,则比较器325可以指示满足条件。

条件存储设备330可以将被用于确定何时执行被动垃圾回收的条件本地地存储在ssd120上。例如,如果图1的主机105指定为50ms的空闲持续时间,则条件存储设备330可以存储50ms作为条件。可替选地,如果图1的主机105指定为10个命令的队列深度,则条件存储设备330可以存储10个命令作为条件。比较器325可以访问来自条件存储设备330的条件。

条件可以是单个的或复合的。例如,图1的主机105可以指定单个的条件,诸如为50ms的空闲持续时间。然后,如果ssd120空闲达到50ms,则被动垃圾回收可以被触发。以此方式执行被动垃圾回收的优点是ssd120可以尽力在闪速存储器315内保持尽可能多的空闲擦除块,而无需来自图1的主机105的指令。但是,图1的主机105还可以指定为50ms的空闲时间和少于10,000个空闲擦除块的复合的条件。以此方式,即使ssd120空闲达到足够的间隔,但是如果ssd120具有足够的空闲擦除块,则ssd120将不执行被动垃圾回收。通过不执行被动垃圾回收,ssd120可以避免当另一命令进入时不必要地繁忙,而在垃圾回收完成时该另一命令可能被延迟。

当使用复合的条件时,可以使用惯用的逻辑运算符(and(逻辑与)、or(逻辑或)和not(逻辑非))以任何期望的方式并且以任何数量来对其进行组合。例如,图1的主机105可以指定(持续时间=50ms)and(队列深度<=10个命令)and(空闲擦除块<10,000)的条件。该组合指定,为了执行被动垃圾回收,对于ssd120的队列深度需要不大于10个命令达到为50ms的持续时间;并且即使那样,也仅当在闪速存储器315中存在少于10,000个空闲擦除块时,才将执行被动垃圾回收。注意,在此示例中,持续时间描述了在其期间ssd120的整体状态(队列中10个或更少个命令并且少于10,000个空闲擦除块)保持不改变的间隔,而不测量空闲持续时间(即,在其期间ssd120不对命令进行处理的间隔)。利用持续时间的该更一般性的概念,可以使用复合的条件(持续时间=50ms)and(队列深度=0)来指定空闲持续时间。

当条件是复合的时,状态确定器320可以确定用于ssd120的多个状态。例如,如果图1的主机105指定(持续时间=50ms)and(空闲擦除块<10,000)的条件,则状态确定器320可以确定用于ssd120的空闲时间和空闲擦除块两者。

触发电路335可以接收比较器325的结果。然后,触发电路335可以在满足条件时向垃圾回收逻辑340发送触发信号以执行被动垃圾回收。

垃圾回收逻辑340可以是用于对闪速存储器315执行垃圾回收的逻辑。垃圾回收自身是传统的,并且不需要在此进一步地描述。

虽然图3示出了状态确定器320、比较器330、条件存储设备330以及触发电路335作为ssd控制器310内的单独的组件,但是本发明构思的实施例可以将这些组件组合为单一单元,或者可以组合为任何期望的子组合。图3示出了这些组件作为单独的元件仅为了更好地解释在执行被动垃圾回收时所涉及的操作。

图4示出了图1的主机105向图1的ssd120发送配置命令以及之后的数据请求。在图4中,主机105可以向ssd120发送配置命令405。配置命令405可以包括条件410,该条件可以是单个的条件或者复合的条件。一旦使用配置命令405来配置被动垃圾回收,则主机105可以发送数据请求415、420和425。虽然图4示出主机105发送三个数据请求415、420和425,但是本发明构思的实施例可以支持任何数量的数据请求。

另外,主机105可以发送多个配置命令405。例如,主机105可以发送第一配置命令,该第一配置命令将条件410指定为10个命令的队列深度。但是基于对于ssd120的响应时间,主机105可以决定将条件410改变到为50ms的空闲持续时间。主机105可以发送如期望那样多的配置命令405;通常,最新近的配置命令将覆写任何在先的配置命令。

图5示出了根据本发明构思的实施例、图3的比较器330被用于基于图1的ssd120已经空闲多久来确定是否执行被动垃圾回收。在图5中,条件505被设置为空闲持续时间:例如,50ms。状态确定器320可以追踪图1的ssd120已经空闲多久。例如,状态确定器320可以在ssd120变为空闲时开始计时器,并且可以向比较器330发送周期性的状态信息,如状态510所示。然后,比较器330可以将状态510与条件505进行比较。当基于状态510满足条件505时,比较器330可以使用触发515来指示成功的比较,该触发515可以被发送到图3的触发电路335。

图5还示出了比较器330接收空闲擦除块的数量520。如上所述,在图1的主机105指定复合的条件的情形下,空闲擦除块的数量520也可以由状态确定器330来确定。但是如果图1的条件410仅考虑图1的ssd120的空闲时间,则可以从图5中省略空闲擦除块的数量520。

图6示出了根据本发明构思的另一实施例、图3的比较器330被用于基于图1的ssd120的队列深度来确定是否执行被动垃圾回收。图6与图5类似,除了图6使用队列深度作为图4的条件410,而不是使用空闲时间作为图4的条件410。因此,条件650示出了由比较器330所考虑的队列深度阈值。比较器330还可以将状态610考虑为命令队列的深度,如由状态确定器320所确定地。作为比较的结果,如果满足条件605则比较器330可以产生触发515。

如同图5那样,图6示出了比较器330还接收空闲擦除块的数量520。如果条件410包括空闲擦除块的阈值数量,则状态确定器320可以确定空闲擦除块的数量520,比较器330可以将空闲擦除块的阈值数量与该空闲块的数量520进行比较。如果图4的条件410不包括空闲擦除块的阈值数量,则可以从图6中省略空闲擦除块的数量520。

图7示出了在图1的ssd120包括多个命令队列时图3的状态确定器320确定图1的ssd120的队列深度。在图7中,状态确定器320可以接收深度705、710和715,深度705、710和715可以表示图1的ssd120中的三个命令队列的深度。虽然图7示出了三个深度705、710和715,但是本发明构思的实施例可以支持用于任何数量的命令队列的任何数量的深度。

给定深度705、710和715,状态确定器320可以计算任何期望的统计数据作为图6的命令队列深度610。示例统计数据可以包括平均值720(也被称为算术平均值)、求和值725、中位值730、最小值735以及最大值740,但是本发明构思的其他实施例可以计算其他统计数据。平均值(average)720可以被计算为所有深度705、710和715的求和值除以深度705、710和715的数量。求和值(sum)725可以被简单地计算为所有深度705、710和715的求和(求和值725可以表示跨越所有队列、待决命令的总计数量)。中位值(median)730可以表示如果按照数值对所有队列的大小进行排序,则在中间处的队列的大小。最小值(minimum)735可以表示具有最小数量的待决命令的队列的大小。以及最大值(maximum)740可以表示具有最大数量的待决命令的队列的大小。

图8a至图8b示出了根据本发明构思的实施例、用于管理对图1的ssd120的后台垃圾回收的过程的流程图。在图8a中,在块805处,图3的ssd控制器310可以确定图1的ssd120是否被设置为执行后台垃圾回收。如果是,则在块810处,图3的ssd控制器310(经由均在图3中的状态确定器320、比较器325以及条件存储设备330)可以进行等待,直到图4的条件410满足为止。一旦图4的条件410满足,则在块815处,图3的触发电路335可以触发垃圾回收逻辑340开始后台垃圾回收。

在块820(图8b中)处,图3的ssd控制器310可以确定在后台垃圾回收发生时主机命令是否待决完成。如果没有主机命令待决完成,则在块825处,后台垃圾回收可以继续。否则,在块830处,图3的ssd控制器310(经由均在图3中的状态确定器320、比较器325以及条件存储设备330)可以确定图4的条件410是否仍然满足。如果是,则控制可以以块825继续,从而继续后台垃圾回收。否则,在块835处,后台垃圾回收可以暂停以允许对待决主机命令进行处理。

图9示出了根据本发明构思的实施例、用于可以如何配置图1的ssd120以执行被动垃圾回收的示例过程的流程图。在图9中,在块905处,图3的接收电路305可以接收图4的配置命令405。在块910处,图3的ssd控制器310可以识别图4的配置命令405中的图4的条件410。在块915处,条件存储设备330可以存储图4的条件410。在块920处,图3的ssd控制器310可以使用图4的条件410来确定是否被动地触发垃圾回收。以下在图10至图11中示出可以如何实施块920的示例。

在块925处,图3的接收电路305可以从图1的主机105接收命令,以执行垃圾回收。该命令可以用于主机发起的垃圾回收。在块930处,图3的垃圾回收逻辑340可以执行主机发起的垃圾回收。然后,处理可以返回到块920。注意,主机发起的垃圾回收是可选的并且可以省略,如虚线箭头935所示。

图10示出了根据本发明构思的实施例、用于图1的ssd120使用图5的空闲时间505并且可选地使用图5的空闲块计数520来针对图1的ssd120确定何时执行被动垃圾回收的示例过程的流程图。在图10中,在块1005处,状态确定器320可以追踪用于图1的ssd120的图5的空闲时间510。在块1010处,图3的比较器330可以将图5的空闲时间510与图5的空闲持续时间505进行比较。在块1015处,图3的ssd控制器310可以确定图5的空闲时间510是否满足图5的空闲持续时间505。如果否,则控制可以返回到块1005。

如果图5的空闲时间510满足图5的空闲持续时间505,则在块1020处,图3的ssd控制器310可以确定在图1的ssd120中是否存在足够数量的空闲擦除块。如果存在足够数量的空闲擦除块,则控制可以返回到块1005。否则,控制可以继续到块930,其中,垃圾回收逻辑340可以对图3的闪速存储器315执行垃圾回收。注意,在图10中,块930是被动垃圾回收操作,而不是主机发起的垃圾回收操作;但是对于图3的垃圾回收逻辑340不存在差异。块1020是可选的,如虚线箭头1025所示,在该情况下,图1的ssd120中的空闲擦除块的数量不是图4的条件410的一部分。

图11示出了根据本发明构思的实施例、用于图1的ssd120使用图6的队列深度605并且可选地使用图6的空闲块计数520来针对图1的ssd120确定何时执行被动垃圾回收的示例过程的流程图。在图11中,在块1105处,状态确定器320可以追踪用于图1的ssd120的图6的队列深度605。在块1110处,图3的比较器330可以将图6的队列深度605与图6的队列深度阈值610进行比较。在块1115处,图3的ssd控制器310可以确定图6的队列深度605是否满足图6的队列深度阈值610。如果否,则控制可以返回到块1105。

如果图6的队列深度605满足图6的队列深度阈值610,则在块1120处,图3的ssd控制器310可以确定在图1的ssd120中是否存在足够数量的空闲擦除块。如果存在足够数量的空闲擦除块,则控制可以返回到块1105。否则,控制可以继续到块930,其中,垃圾回收逻辑340可以对图3的闪速存储器315执行垃圾回收。注意,在图11中,块930是被动垃圾回收操作,而不是主机发起的垃圾回收操作;但是对于图3的垃圾回收逻辑340不存在差异。块1120是可选的,如由虚线箭头1125所示,在该情况下,图1的ssd120中的空闲擦除块的数量不是图4的条件410的一部分。

图12示出了根据本发明构思的实施例、在图1的ssd120包括多个命令队列时用于图3的状态确定器320确定用于图1的ssd120的图6的队列深度610的示例过程的流程图。在块1205处,图3的状态确定器320可以针对多个队列中的每个确定图7的深度705、710和715。在块1210处,图3的状态确定器320可以根据用于多个队列的深度705、710和715来计算统计数据,诸如均在图7中的平均值720、求和值725、中位值730、最小值735或最大值740。然后,状态确定器320可以使用该计算的统计数据作为图6的队列深度610。

在图8a至图12中,示出了本发明构思的一些实施例。但是本领域技术人员将意识到,通过改变块的次序、通过省略块、或通过包括在附图中未示出的链接,本发明构思的其他实施例也是可能的。流程图的所有这样的变化被认为是本发明构思的实施例,而无论是否被明确地描述。

下面的讨论意图提供在其中可以实施本发明构思的特定方面的适合的一个或多个机器的简要的、一般的描述。一个或多个机器可以至少部分地通过来自传统的输入设备——诸如键盘、鼠标等——的输入以及通过从另一机器所接收的指令、与虚拟现实(vr)环境的交互、生物计量反馈或其他输入信号来控制。当在本文中使用时,术语“机器”意图广泛地包含单个机器、虚拟机器或者通信地耦合一起进行操作的机器、虚拟机器或设备的系统。示例性机器包括计算设备,诸如个人计算机、工作站、服务器、便携式计算机、手持式设备、电话机、平板式设备等;以及运输设备,诸如私人或公共运输,例如,汽车、火车、出租车等。

一个或多个机器可以包括嵌入式控制器,诸如可编程或不可编程逻辑设备或阵列、专用集成电路(asic)、嵌入式计算机、智能卡等。一个或多个机器可以利用到一个或多个远程机器的一个或多个连接,诸如,通过网络接口、调制解调器或其他通信耦合。可以通过物理和/或逻辑网络——诸如内联网、互联网、局域网、广域网等——的方式对设备进行互联。本领域技术人员将意识到,网络通信可以利用各种有线的和/或无线的短程或长程载波和协议,包括射频(rf)、卫星、微波、电气与电子工程师协会(ieee)802.11、光学、红外、线缆、激光等。

可以通过参考或结合当被机器访问时导致机器执行任务或者定义抽象数据类型或低层硬件环境的相关联的数据来描述本发明构思的实施例,该相关联的数据包括函数、过程、数据结构、应用程序等。相关联的数据可以存储在例如易失性和/或非易失性存储器设备中,例如,ram、rom等;或者存储在其他存储设备及其相关联的存储媒介中,包括硬驱、软盘、光学存储设备、磁带、闪速存储器、记忆棒、数字视频盘、生物存储设备等。相关联的数据可以按照分组、串行数据、并行数据、传播的信号等的形式,经由包括物理和/或逻辑网络的传输环境被递送,并且可以以压缩格式或加密格式被使用。相关联的数据可以在分布式环境中使用,并且可以本地地和/或远程地存储以用于机器访问。

本发明构思的实施例可以包括有形的、非暂态的机器可读介质,包括一个或多个处理器可执行的指令,该指令包括用于如在本文中所描述地执行本发明构思的元件的指令。

已经参考所示出的实施例描述并且示出了本发明构思的原理,将意识到,所示出的实施例可以在布置上和细节上被修改而不背离这样的原理,并且可以按照任何期望的方式被组合。并且,尽管前述讨论关注于特定实施例,但是也设想到其他配置。具体地,尽管在本文中使用诸如“根据本发明构思的实施例”等的表述,但是这些词组意味着通常地指代实施例的可能性,并且不意图将本发明构思限制为特定实施例配置。当在本文中使用时,这些术语可以指代可组合到其他实施例中的相同或不同的实施例。

前述说明性实施例不将被解释为限制本发明构思。尽管已经描述了一些实施例,但是本领域技术人员将容易地意识到,对于那些实施例的许多修改是可能的,而不实质上背离本公开的新颖的教导和优点。因此,所有这样的修改意图被包括在如在权利要求书中所定义的本发明构思的范围内。

本发明构思的实施例可以扩展到下述声明,但是不具有限制:

声明1.本发明构思的实施例包括一种固态驱动(ssd)(120),该固态驱动(ssd)包括:

用于数据的存储设备(315);

用于对存储设备(315)执行垃圾回收的垃圾回收逻辑(340);

用于接收配置命令(405)和数据请求(420,415,425)的接收电路(305),该配置命令(405)包括从包含空闲持续时间(505)和队列深度阈值(605)的集合中所得到的条件(410,505,605);

用于存储条件(410,505,605)的条件存储设备(325);

用于对ssd(120)的状态(510,610)进行确定的状态确定器(320);以及

用于将ssd(120)的状态(510,610)与条件(410,505,605)进行比较的比较器(330)。

声明2.本发明构思的实施例包括根据声明1的ssd(120),进一步包括触发电路(335),用于如果比较器(330)指示ssd(120)的状态(510,610)满足条件(410,505,605),则触发垃圾回收逻辑(340)以对存储设备(315)执行垃圾回收。

声明3.本发明构思的实施例包括根据声明1的ssd(120),其中,条件(410,505,605)包括复合的条件。

声明4.本发明构思的实施例包括根据声明2的ssd(120),其中,触发电路(335)可操作为,如果比较器(330)指示ssd(120)的状态(510,610)满足条件(410,505,605)并且ssd(120)上空闲擦除块的数量(520)低于阈值,则触发垃圾回收逻辑(340)以对存储设备(315)执行垃圾回收。

声明5.本发明构思的实施例包括根据声明1的ssd(120),其中,接收电路(305)可操作为从主机(105)接收配置命令(405)。

声明6.本发明构思的实施例包括根据声明1的ssd(120),其中:

条件(410,505,605)包括空闲持续时间(505);

状态确定器(320)可操作为确定用于ssd(120)的空闲时间(510);以及

比较器(330)可操作为将用于ssd(120)的空闲时间(510)与空闲持续时间(505)进行比较。

声明7.本发明构思的实施例包括根据声明1的ssd(120),其中:

条件(410,505,605)包括队列深度阈值(605);

状态确定器(320)可操作为确定用于ssd(120)的命令队列深度(610);以及

比较器(330)可操作为将用于ssd(120)的命令队列深度(610)与队列深度阈值(605)进行比较。

声明8.本发明构思的实施例包括根据声明7的ssd(120),其中,状态确定器(320)可操作为从多个深度(705,710,715)中确定用于ssd(120)的命令队列深度(610)。

声明9.本发明构思的实施例包括根据声明8的ssd(120),其中,状态确定器(320)可操作为将命令队列深度(610)计算为多个深度(705,710,715)的平均值(720)。

声明10.本发明构思的实施例包括根据声明8的ssd(120),其中,状态确定器(320)可操作为将命令队列深度(610)计算为多个深度(705,710,715)的求和值(725)。

声明11.本发明构思的实施例包括根据声明8的ssd(120),其中,状态确定器(320)可操作为将命令队列深度(610)计算为多个深度(705,710,715)的中位值(730)。

声明12.本发明构思的实施例包括根据声明8的ssd(120),其中,状态确定器(320)可操作为将命令队列深度(610)计算为多个深度(705,710,715)的最大值(740)。

声明13.本发明构思的实施例包括根据声明8的ssd(120),其中,状态确定器(320)可操作为将命令队列深度(610)计算为多个深度(705,710,715)的最小值(735)。

声明14.本发明构思的实施例包括根据声明1的ssd(120),其中,接收电路(305)可操作为从主机(105)接收指令以执行垃圾回收。

声明15.本发明构思的实施例包括根据声明1的ssd(120),其中,配置命令(405)包括用户可配置的配置命令(405)。

声明16.本发明构思的实施例包括一种方法,包括:

在固态驱动(ssd)(120)处接收(905,910)配置命令(405),该配置命令(405)包括从包含空闲持续时间(505)和队列深度阈值(605)的集合中所得到的条件(410,505,605);

将条件(410,505,605)存储(915)在ssd(120)上;以及

使用(920)条件(410,505,605)来对ssd(120)执行垃圾回收。

声明17.本发明构思的实施例包括根据声明16的方法,其中,在ssd(120)处接收(905,910)配置命令(405)包括,在ssd(120)处从主机(105)接收配置命令(405)。

声明18.本发明构思的实施例包括根据声明16的方法,其中,使用(920)条件(410,505,605)来对ssd(120)执行垃圾回收包括:

监视(1005,1105)ssd(120)的状态(510,610);

将ssd(120)的状态与条件(410,505,605)进行比较(1010,1110);以及

如果ssd(120)的状态(510,610)满足条件(410,505,605)则对ssd(120)执行(930)垃圾回收。

声明19.本发明构思的实施例包括根据声明18的方法,其中,

在ssd(120)处接收(905,910)配置命令(405)包括,在ssd(120)处接收(905,910)配置命令(405),该配置命令(405)包括空闲持续时间(505);

监视(1005,1105)ssd(120)的状态(510,610)包括追踪(1005)用于ssd(120)的空闲时间(510);以及

将ssd(120)的状态(510,610)与条件(410,505,605)进行比较包括将用于ssd(120)的空闲时间(510)与空闲持续时间(505)进行比较(1010)。

声明20.本发明构思的实施例包括根据声明18的方法,其中;

在ssd(120)处接收(905,910)配置命令(405)包括,在ssd(120)处接收(905,910)配置命令(405),该配置命令(405)包括队列深度阈值(605);

监视(1005,1105)ssd(120)的状态(510,610)包括确定(1105)用于ssd(120)的命令队列深度(610);以及

将ssd(120)的状态(510,610)与条件(410,505,605)进行比较(1010,1110)包括将队列深度阈值(605)与用于ssd(120)的命令队列深度(610)进行比较(1110)。

声明21.本发明构思的实施例包括根据声明20的方法,其中,监视(1005,1105)ssd(120)的状态(510,610)包括确定(1105)用于ssd(120)的命令队列深度(610),包括:

确定(1205)用于多个命令队列的多个深度(705,710,715);以及

从多个深度(705,710,715)中确定(1105)命令队列深度(610)。

声明22.本发明构思的实施例包括根据声明21的方法,其中,从多个深度(705,710,715)中确定(1105)命令队列深度(610)包括将命令队列深度(610)计算(1210)为多个深度(705,710,715)中的所有深度的平均值(720)。

声明23.本发明构思的实施例包括根据声明21的方法,其中,从多个深度(705,710,715)中确定(1105)命令队列深度(610)包括将命令队列深度(610)计算(1210)为多个深度(705,710,715)中的所有深度的求和值(725)。

声明24.本发明构思的实施例包括根据声明21的方法,其中,从多个深度(705,710,715)中确定(1105)命令队列深度(610)包括将命令队列深度(610)计算为多个深度(705,710,715)中的所有深度的中位值(730)。

声明25.本发明构思的实施例包括根据声明21的方法,其中,从多个深度(705,710,715)中确定(1105)命令队列深度(610)包括将命令队列深度(610)计算(1210)为多个深度(705,710,715)中的所有深度的最大值(740)。

声明26.本发明构思的实施例包括根据声明21的方法,其中,从多个深度(705,710,715)中确定(1105)命令队列深度(610)包括将命令队列深度(610)计算为多个深度(705,710,715)中的所有深度的最小值(735)。

声明27.本发明构思的实施例包括根据声明16的方法,其中,在固态驱动(ssd)(120)处接收(905,910)配置命令(405)包括,在ssd(120)处接收配置命令(405),该配置命令(405)包括复合的条件。

声明28.本发明构思的实施例包括根据声明18的方法,其中,如果ssd(120)的状态(510,610)满足条件(410,505,605)则对ssd(120)执行(930)垃圾回收包括,如果ssd(120)的状态(510,610)满足条件(410,505,605)并且ssd(120)上的空闲擦除块的数量(520)低于阈值则对ssd(120)执行(930)垃圾回收。

声明29.本发明构思的实施例包括根据声明16的方法,进一步包括从主机(105)接收(925)用以执行垃圾回收的指令。

声明30.本发明构思的实施例包括根据声明16的方法,其中,在ssd(120)处接收(905,910)配置命令(405)包括,在ssd(120)处接收用户可配置的配置命令(405),该用户可配置的配置命令(405)包括从包含空闲持续时间(505)和队列深度阈值(605)的集合中所得到的条件(410,505,605)。

声明31.本发明构思的实施例包括一种物品(article),包括有形存储介质,所述有形存储介质具有存储在其上的非暂态指令,该非暂态指令当被机器执行时导致:

在固态驱动(ssd)(120)处接收(905,910)配置命令(405),该配置命令(405)包括从包含空闲持续时间(505)和队列深度阈值(605)的集合中所得到的条件(410,505,605);

将条件(410,505,605)存储(915)在ssd(120)上;以及

使用(920)条件(410,505,605)来对ssd(120)执行垃圾回收。

声明32.本发明构思的实施例包括根据声明31的物品,其中,在ssd(120)处接收(905,910)配置命令(405)包括,在ssd(120)处从主机(105)接收(905,910)配置命令(405)。

声明33.本发明构思的实施例包括根据声明31的物品,其中,使用(920)条件(410,505,605)来对ssd(120)执行垃圾回收包括:

监视(1005,1105)ssd(120)的状态(510,610);

将ssd(120)的状态(510,610)与条件(410,505,605)进行比较(1010,1110);以及

如果ssd(120)的状态(510,610)满足条件(410,505,605)则对ssd(120)执行(930)垃圾回收。

声明34.本发明构思的实施例包括根据声明33的物品,其中:

在ssd(120)处接收(905,910)配置命令(405)包括,在ssd(120)处接收(905,910)配置命令(405),该配置命令(405)包括空闲持续时间(505);

监视(1005,1105)ssd(120)的状态(510,610)包括追踪(1005)用于ssd(120)的空闲时间(510);以及

将ssd(120)的状态(510,610)与条件(410,505,605)进行比较(1010,1110)包括将用于ssd(120)的空闲时间(510)与空闲持续时间(505)进行比较(1010)。

声明35.本发明构思的实施例包括根据声明33的物品,其中:

在ssd(120)处接收(905,910)配置命令(405)包括,在ssd(120)处接收配置命令(405),该配置命令(405)包括队列深度阈值(605);

监视(1005,1105)ssd(120)的状态(510,610)包括确定(1105)用于ssd(120)的命令队列深度(610);以及

将ssd(120)的状态(510,610)与条件(410,505,605)进行比较(1010,1110)包括将队列深度阈值(605)与用于ssd(120)的命令队列深度(610)进行比较(111)。

声明36.本发明构思的实施例包括根据声明35的物品,其中,监视(1005,1105)ssd(120)的状态(510,610)包括确定(1105)用于ssd(120)的命令队列深度(610),包括:

确定(1205)用于多个命令队列的多个深度(705,710,715);以及

从多个深度(705,710,715)中确定(1105)命令队列深度(610)。

声明37.本发明构思的实施例包括根据声明36的物品,其中,从多个深度(705,710,715)中确定(1105)命令队列深度(610)包括将命令队列深度(610)计算(1210)为多个深度(705,710,715)中的所有深度的平均值(720)。

声明38.本发明构思的实施例包括根据声明36的物品,其中,从多个深度(705,710,715)中确定(1105)命令队列深度(610)包括将命令队列深度(610)计算(1210)为多个深度(705,710,715)中的所有深度的求和值(725)。

声明39.本发明构思的实施例包括根据声明36的物品,其中,从多个深度(705,710,715)中确定(1105)命令队列深度(610)包括将命令队列深度(610)计算(1210)为多个深度(705,710,715)中的所有深度的中位值(730)。

声明40.本发明构思的实施例包括根据声明36的物品,其中,从多个深度(705,710,715)中确定(1105)命令队列深度(610)包括将命令队列深度(610)计算(1210)为多个深度(705,710,715)中的所有深度的最大值(735)。

声明41.本发明构思的实施例包括根据声明36的物品,其中,从多个深度(705,710,715)中确定(1105)命令队列深度(610)包括将命令队列深度(610)计算(1210)为多个深度(705,710,715)中的所有深度的最小值(740)。

声明42.本发明构思的实施例包括根据声明36的物品,其中,在ssd(120)处接收(905,910)配置命令(405)包括,在ssd(120)处从主机(105)接收配置命令(405)。

声明43.本发明构思的实施例包括根据声明33的物品,其中,如果ssd(120)的状态(510,610)满足条件(410,505,605)则对ssd(120)执行(930)垃圾回收包括,如果ssd(120)的状态(510,610)满足条件(410,505,605)并且ssd(120)上的空闲擦除块的数量(520)低于阈值则对ssd(120)执行(930)垃圾回收。

声明44.本发明构思的实施例包括根据声明31的物品,其中,所述有形存储介质具有存储于其上的更多非暂态指令,当被机器运行时该非暂态指令导致从主机(105)接收(925)用以执行垃圾回收的指令。

声明45.本发明构思的实施例包括根据声明31的物品,其中,在ssd(120)处接收(905,910)配置命令(405)包括,在ssd(120)处接收用户可配置的配置命令(405),该用户可配置的配置命令(405)包括从包含空闲持续时间(505)和队列深度阈值(605)的集合中所得到的条件(410,505,605)。

因此,考虑到对这里所描述的实施例的各种各样的排列,本具体实施例和附图资料仅旨在是说明性的,而不应被视为限制本发明构思的范围。因此,作为本发明构思主张的是可以落入所附权利要求及其等同物的范围和精神内的所有这些修改。

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