用于多流垃圾收集的方法与流程

文档序号:15828635发布日期:2018-11-03 00:10阅读:171来源:国知局

本申请要求于2017年9月21日提交的美国临时专利申请序列no.62/561,674的利益,针对所有目的以引用方式将该申请并入本文。

本申请是于2017年6月12日提交的美国专利申请序列no.15/620,814的部分继续申请,该申请要求于2017年4月25日提交的美国临时专利申请序列no.62/490,027的利益,针对所有目的以引用方式将这两项申请并入本文。

本申请涉及于2017年4月27日提交现在待审的美国专利申请序列no.15/499,877,其要求于2017年2月13日提交的美国临时专利申请序列no.62/458,566和于2017年3月14日提交的美国临时专利申请序列no.62/471,350的利益;其为于2016年11月4日提交现在待审的美国专利申请序列no.15/344,422的部分继续申请,该专利申请要求于2016年9月2日提交的美国临时专利申请序列no.62/383,302的利益,并且是于2016年5月2日提交现在待审的美国专利申请序列no.15/144,588的部分继续申请,该申请要求于2015年10月22日提交的美国临时专利申请序列no.62/245,100和于2015年7月13日提交的美国临时专利申请序列no.62/192,045的利益;并且其为于2016年4月5日提交现在待审的美国专利申请序列no.15/090,799的部分继续申请,该申请要求于2015年10月22日提交的美国临时专利申请序列no.62/245,100和于2015年7月13日提交的美国临时专利申请序列no.62/192,045的利益,针对所有目的以引用方式将所有这些申请并入本文。

本申请涉及于2017年3月14日提交现在待审的美国专利申请序列no.15/458,968,该申请要求于2017年1月20日提交的美国临时专利申请序列no.62/448,958和于2016年10月26日提交的美国临时专利申请序列no.62/413,177的利益,针对所有目的以引用方式将所有这些申请并入本文。

本申请涉及于2016年5月27日提交的美国专利申请序列no.15/167,974,该申请要求于2016年3月16日提交的美国临时专利申请序列no.62/309,446的利益,针对所有目的以引用方式将这两个申请并入本文。

本申请涉及于2016年5月4日提交现在授权的美国专利申请序列no.15/146,708,该申请要求于2016年3月1日提交的美国临时专利申请序列no.62/302,162的利益,并且是于2016年2月17日提交现在授权的15/046,439的部分继续申请,该申请要求于2015年11月30日提交的美国临时专利申请序列no.62/261,303的利益,针对所有目的以引用方式将所有这些申请并入本文。

本发明构思整体涉及存储装置,并且更具体地,涉及提高存储装置中的垃圾收集性能。

背景技术

多流化是一种创新的固态驱动器(ssd)控制器技术,其通过在同一擦除块中存储相关数据或类似的生存期数据来减少或消除ssd中的垃圾收集。多流化在t10和快速非易失性存储器(nvme)标准组织中被标准化,并被行业ssd制造商实施。多流化依赖于主机的提示来指示哪些数据写入彼此关联或具有相似的生存期。

自动流化是多流化技术的扩展,在ssd或主机中运行的算法分析输入数据写入,并自动确定哪些数据写入相互关联或具有相似的生存期,并相应地分配流。

当前的多流化和自动流化的实施的局限在于,每个数据写入的特定流id不与数据一起写入存储。因此,如果一些数据需要进行垃圾收集,则不知道该数据的原始流id,因此无法将其与其它数据相关联。

还需要一种利用多流化或自动流化来提高存储装置中垃圾收集的性能的方法。



技术实现要素:

示例实施例提供了一种固态驱动器(ssd),其可包括用于数据的存储和用于从主机机器接收输入/输出(i/o)请求的主机接口逻辑。

所述ssd还可包括ssd控制器,其响应于所述i/o请求管理从所述存储中读数据或者将数据写入所述存储。所述ssd控制器可包括闪存转换层、垃圾收集逻辑、流逻辑和再流化器逻辑。闪存转换层可将i/o请求中的逻辑地址转换为存储中的物理地址。垃圾收集逻辑可在擦除块上执行垃圾收集,擦除块包括含有效数据的有效页。流逻辑可管理在i/o请求中写入到所述存储的有效数据的流特性。再流化器逻辑可响应于有效数据的流特性将有效页分配至新块。

另一示例实施例提供了一种方法,其可包括以下步骤:识别用于垃圾收集的固态驱动器(ssd)中的擦除块;识别擦除块中的含有效数据的有效页;确定有效页的流特性,所述流特性存储在ssd上;以及利用所述流特性将有效页编程至ssd中的新块。

又一示例实施例提供了一种方法,其可包括以下步骤:从主机机器接收数据;利用用于所述数据的流id选择用于写入数据的块;将数据写入所述块中的有效页中;以及存储与用于所述数据的流id关联的流特性。

附图说明

图1示出了根据本发明构思的实施例的能够支持垃圾收集多流化方法的固态驱动器(ssd)的机器。

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

图3示出了向图1的ssd发送输入/输出(i/o)请求的图1的机器。

图4示出了图1的ssd的细节。

图5示出了图1的ssd中的存储页面和存储块。

图6示出了可存储在图1的ssd中的流的流特性的细节。

图7示出了图4的闪存转换层中的物理块地址表的逻辑块地址。

图8示出了图4的流逻辑的细节。

图9示出了图4的再流化器逻辑的细节。

图10a-图10c示出了根据本发明构思的实施例的向图1的ssd写入数据和存储流信息的示例程序的流程图。

图11示出了根据本发明构思的实施例的在对图1的ssd执行垃圾收集并对有效页编程时使用存储的流信息的示例程序的流程图。

图12示出了根据本发明构思的实施例的确定用于在垃圾收集期间被编程的图1的ssd中的有效页的流标识符(id)的示例程序的流程图。

图13示出了根据本发明构思的实施例的用于在垃圾收集期间用于在图1中的ssd中对有效页编程的流中读取流特性的示例程序的流程图。

具体实施方式

现在将详细介绍本发明构思的实施例,其示例在附图中示出。在下面的详细描述中,列出了许多特定细节,以便能够透彻理解本发明构思。然而,应当理解,本领域普通技术人员可在没有这些具体细节的情况下实施本发明构思。在其他情况下,不详细描述熟知的方法、程序、组件、电路和网络,以免使实施例的各方面不必要地模糊。

应该理解的是,虽然本文可以使用术语第一、第二等来描述各个元件,但这些元件不应受到这些术语的限制。这些术语仅用于将一个元件于另一个进行区分。例如,第一模块可被称为第二模块,类似地,第二模块可被称为第一模块,而不脱离本发明构思的范围。

本文中本发明构思的描述中使用的术语仅用于描述特定实施例,而不旨在限制本发明构思。如在本发明构思的描述和权利要求中所用的,除非上下文另有明确说明,否则单数形式也旨在包括复数形式。还应理解,本文所用的术语“和/或”指代并涵盖一个或多个相关联的列出项目的任意和所有可能的组合。还应该理解,术语“包括”、“包含”当用于本说明书中时,指明存在所列特征、整体、步骤、操作、元件和/或组件,但不排除存在或增加一个或多个其它特征、整体、步骤、操作、元件、组件和/或它们的组。附图的组件和特征不一定是按比例绘制的。

本发明构思的实施例定义了可在具有多流能力的固态驱动器(ssd)中存储或恢复用于数据写入的流标识符(id)的方法。然后,当随后对数据进行垃圾收集时,可以使用该存储的流id/信息来帮助将相关数据或具有相似生存期的数据组合在一起以存储在同一擦除块中。

本发明构思的实施例还提出了一种方法,与用于进行垃圾收集的数据被第一次写入时的情况相比,在该数据的原始流id被重用于具有新特性的流的情况下,可通过该方法使用存储在闪存中的流特性来为所述数据找到最合适的流id。

提出了可以在用户数据被第一次写入闪存或擦除块被第一次被分配到流时在闪存中记录流id和/或流特性的几种不同的方法。如果数据在垃圾收集期间随后被编程,则这些记录的流id和/或特性可用于将相关数据或具有相似的生存期的数据存储组合在一起,以存储在同一擦除块中。

方法1:

具有多流能力的ssd的一个可能的用例是用于主机软件(或硬件)执行一些流分类算法,其将相同的地址范围“块体(chunk)”内的所有输入/输出(i/o)请求分类到相同的流id,其中一个块体是ssd的逻辑块地址(lba)空间的一个固定大小的区。例如,每1兆字节(mb)的地址空间可以被认为是一个块体。这类似于一些自动流算法如何跟踪lba空间的每个块体中的i/o请求并且将同一块体中的所有i/o请求相同地分类。

对于具有自动流能力的ssd来说,该ssd可维护块体lba范围到流id的映射表,例如,通过利用大小为1mb的块体和512字节的块,映射可如下实施:

例如(对于1mb的块体和512字节的块)

块体0:lba0→2047流id2

块体1:lba2048→4095流id0

块体2:lba4096→6143流id5

块体3:lba6144→8191流id7等。注意,虽然在给定的示例中,流id是唯一的,但块体数量可超过ssd支持的流的数量。在这种情况下,流id可被重用。(即使ssd支持超过块体数量的更多的流,流id也可被重用。)

请注意,与具有自动流能力的ssd不同,ssd不需要支持自动流算法来将输入的写请求自动地分类到流。相反,ssd可以依赖主机软件或硬件来基于块体地址将写请求分类到流,并为ssd中的该写请求指定对应的流id。

ssd可将“块体-流id”映射表的永久记录存储至闪存,以在启动时加载并且在运行期间维护/使用。该映射表可与诸如坏块表的其他ssd元数据按照相同方式存储。

假设每1mb块体需要4位流id,那么对于每1太字节(tb)存储,存储映射表所需的总空间为4千字节(kb)。

在垃圾收集过程中可以使用由ssd维护的“块体-流id”映射表,以保持相关数据或具有相似生存期的数据组合在一起,特别是通过根据块体-流id映射将相同的擦除块中具有相同流id的数据组合在一起。随着数据通过垃圾收集多次移动,这将多流ssd对于用户写入的所有益处(诸如损耗、写入放大和垃圾收集效率)扩展到存储在ssd上的数据的整个生存期。

方法2:

各个擦除块的一页或多页可专用于存储擦除块级别元数据,其包括存储在擦除块中的数据的流特性。这样,如果对给定的块的数据进行垃圾收集,则存储的流特性可用于将被进行垃圾收集的数据与具有相同流特性的其它数据进行并置。

在方法1中,对应于各个擦除块中的数据的流id可记录在各个擦除块的页中。该流id可随后在垃圾收集过程中用于将具有相同流id的数据并置到相同的擦除块中。

然而,流的特性很可能随着时间而改变。例如,使用流的应用可关闭,并且可将流id分配给不同的应用。作为另一示例,使用流id的应用可在其操作生存期中存在流量变化,因此数据生存期特性可随时间变化。因此,一些更详细的流特性可存储在擦除块的一页中。如果发生垃圾收集,则可以将这些存储的流特性与所有活动流的流特性进行比较。然后,ssd可以选择正被进行垃圾收集的数据映射到的最适当(最适合)的当前流id。这要求要么将各个流的一些流特性从主机传递至ssd,要么在ssd上运行自动流化功能以从接收到的数据流中推断特性。

可被存储在各块的第一页中的一些流特性包括:

·流id。

·数据的期望生存期(诸如数据被认为是热的还是冷的)。

·流打开(当针对该流首次记录流特性时)的流时间戳。这可有助于在不同的流特性重用流id之后在具有相同流id的当前流数据与过期流数据之间区分。

·块分配至该流的块分配时间戳。

·有序性(相同的流中的请求是否有序的指示)。

·典型的i/o大小。

·流的期望容量(可为不确定或未知)。

·带宽需求,流的位速率。

·延时要求。

·隔离级别(i/o决定):流是否需要通过通道、管芯、平面或块级别将其数据与其它数据隔离。

如上所述,一种可能的流特性是在各个块被分配至流以供用户写入时记录的“块分配时间戳”。当块中的数据在用户写入后首次被进行垃圾收集时,数据的生存期(目前为止)可以被计算为记录的块分配时间戳与当前时间之间的时间差。如果目前为止的该生存期超过(当前)流的期望生存期,则数据可潜在地被重新分类到具有更长期望生存期的不同流。随后可通过记录针对垃圾收集写入将块分配到具有特定的期望生存期的流的时间戳以及可能还记录被垃圾收集进入该块的数据的目前为止的适当的生存期来扩展该处理。

随着流特性随时间变化和流id被重用,流id和流时间戳的组合可以用作垃圾收集过程中关联类似数据的限定符。当(通过比较流时间戳)发现针对现已过期的流id存储了垃圾收集数据时,可基于流特性将这些数据存储到一个(或多个中的一个)通用流中。可替换地,基于在擦除块的第一页中存储的流特性与当前流的流特性的比较,可以将这些数据映射到最适合的流。

方法3:

另一种选择是,基于正被进行垃圾收集的数据的特定流特性(如上永久存储)与可用擦除块的损耗(程序擦除周期)的比较,优选地选择一个擦除块分配至给定流用于垃圾收集。

例如,当选择用于分配至给定流的擦除块时,ssd可选择其损耗(擦除周期)与特定流的相对期望生存期特性最佳匹配的擦除块。例如,可将具有相对低擦除次数的擦除块分配至具有热数据(短期望生存期)的流,这里的热指写入频率。类似地,可将具有相对高擦除次数的擦除块分配至具有冷数据(长期望生存期)的流。这样,各个块的损耗随着时间而趋于平衡。

图1示出了根据本发明构思的实施例的可支持垃圾收集多流化方法的固态驱动器(ssd)的机器。在图1中,示出了机器105。机器105可以是任何期望的机器,包括(但不限于)台式或笔记本计算机、服务器(独立服务器或机架服务器)或任何可从本发明构思的实施例中受益的其它装置。机器105还可包括专用便携式计算装置、平板计算机、智能电话和其他计算装置。机器105可以运行任何期望的应用:数据库应用是一个很好的示例,但本发明构思的实施例可扩展至任何期望的应用。

机器105不管其具体形式如何都可以包括处理器110、存储器115和存储装置120。处理器110可为任何种类的处理器:例如,intelxeon、celeron、itanium或atom处理器、amdopteron处理器、arm处理器等。虽然图1显示了单个处理器,但是机器105可包括任意数量的处理器,其中每一个可为单核或多核处理器。存储器115可以是任何种类的存储器(诸如闪速存储器、动态随机存取存储器(dram)、静态随机存取存储器(sram)、永久性随机存取存储器、铁电随机存储器(fram))或非易失性随机存取存储器(nvram)(诸如磁阻随机存取存储器(mram)等)。存储器115也可为不同的存储器类型的任意期望的组合。存储器115可由存储器控制器125控制,也可以是机器105的一部分。

存储装置120可为执行垃圾收集的任何种类的存储装置。虽然本发明构思的实施例可能关注ssd,但是本发明构思的实施例也可应用于其他形式的存储:例如,瓦式(shingled)硬盘驱动器。存储装置120可由可驻留在存储器115中的装置驱动器130控制。

图2示出了图1的机器105的额外细节。参考图2,通常,机器105包括一个或多个处理器110,其可包括存储器控制器125和时钟205,其可用于协调机器105的各组件的操作。处理器110也可耦合至存储器115,例如,其可包括随机存取存储器(ram)、只读存储器(rom)或其它状态保持介质。处理器110也可耦合至存储装置120以及网络连接器210,其可为例如以太网连接器或无线连接器。处理器110还可连接至总线215,在其它组件中,可通过输入/输出引擎225管理的用户接口220和输入/输出接口端口可附接至总线215。

图3示出了向图1的ssd120发送输入/输出(i/o)请求的图1的机器105。在图3中,示出机器105将写请求305发送至ssd120。写请求305可包括数据310和可由机器105分配的流id315。注意,流id315可由发起写请求305的应用分配,或者可以由机器105使用其自己的自动流化形式分配:本发明构思的实施例无关如何将流id315分配至写请求305。机器105也被显示为发送读请求320和325(其中ssd120被显示为发送数据330和335作为响应)和写请求340。未显示读请求320和325以及写请求340的细节:读请求320和325是常规读请求,写请求340可类似于写请求305。虽然图3示出机器105发送两个写请求305和340以及两个读请求320和325,但是本发明构思的实施例可扩展至任意数量的读请求和写请求,并且读请求和写请求的数量不同。

图3示出了在主机机器105上分配流id315的本发明构思的实施例。在本发明构思的其它实施例中,主机机器105可发送请求305和340而不附加流id315,而将其留给ssd120中的自动流化机制以将流分配给数据。

图4示出了图1的ssd120的细节。在图4中,ssd120可包括主机接口逻辑405、ssd控制器410和各种闪速存储器芯片415-1至415-8,可将储器芯片415-1至415-8规划至各个沟道420-1至420-4中。主机接口逻辑405可管理图1的ssd120与机器105之间的通信。ssd控制器410可管理闪速存储器芯片415-1至415-8上的读写操作以及垃圾收集操作。

ssd控制器410可包括闪存转换层425和垃圾收集逻辑430以执行这些管理中的一些。闪存转换层425可执行将图1的机器105所用的逻辑块地址(lba)转换为存储在ssd120中的数据的物理块地址(pba)的常规功能。垃圾收集逻辑430可执行ssd120上的垃圾收集:垃圾收集逻辑430可识别应该进行垃圾收集处理的擦除块,对这些擦除块中剩余的任何有效页编程,以及随后擦除所述擦除块中的页,从而释放这些页以供重用。

为支持垃圾收集逻辑430的操作,ssd控制器410还可包括流逻辑435和再流化器逻辑440。流逻辑435可管理已被写入到ssd120上的数据的流特性,并且再流化器逻辑440可在有效页作为垃圾收集的一部分编程时识别可向其分配有效页的新的流。在本发明构思的实施例中,图1的主机机器105不为写请求(例如,图3的写请求305)提供流id(例如,图3的流id315),ssd控制器410还可包括管理写请求的自动流分配的自动流逻辑445。自动流逻辑445可确定可被分配至数据以帮助ssd120将数据存储在合适的块中的诸如图3的流id315的流id。

虽然图4示出的ssd120包括规划至四个通道420-1至420-7中的八个闪速存储器芯片415-1至415-6,但是本发明构思的实施例可支持规划至任意数量的通道的任意数量的闪速存储器芯片。

在图4中,各种逻辑——主机接口逻辑405、垃圾收集逻辑430、流逻辑435和再流化器逻辑440——可按照任何所需的方式实施。逻辑可以在定制硬件中实现,或者利用在ssd120中的合适处理器(其反过来可以是专用于存储装置中的定制处理器,或者可在例如图1的机器105中找到的通用中央处理单元)上运行的软件(诸如固件)来实现。如果作为软件实现,则逻辑可存储在ssd120中的合适存储(图4中未示出)中。此外,各个逻辑可以独立于其他逻辑实现:一些逻辑可以在硬件中实现,而其他逻辑可在软件中实现,其组合可以是任何期望的。

诸如ssd120的闪速存储器通常被划分为页,页是数据可被读或写入的最小单位(但是任何单个i/o请求中包括的数据量可能跨越多个页)。这些页组成块(其可继而组成超块)。因此,当数据被写入时,机器105发送包含将被写入一页(和可能的多页)的所有数据以及与该数据关联的lba的写请求(诸如图3的写请求305)。随后从可用的页中选择一页或多页,并将数据写入选择的页。闪存转换层425随后被更新以识别存储数据的具体的物理块地址(pba):该pba与提供的lba关联。类似地,当数据被读取时,发送包括将被检索的lba的读取请求(如图3的读请求320)。向闪存转换层425咨询以确定对应于该lba的pba,并且数据随后被检索和返回。

当应用使用完数据时,应用可以指示闪速存储器删除数据(或使数据无效)。当ssd120接收到用于使特定lba处的数据无效的请求时,向闪存转换层425咨询以确定对应于该lba的pba。随后含有pba的页被无效,从而在执行垃圾收集时可擦除该页。

闪速存储器支持更新数据:也就是说,改变存储在特定页中的数据。但是闪速存储器可能不会被新的数据覆写,就像传统的硬盘驱动器一样。作为替代,原始页被无效,更新后的数据被写入ssd120上的新页。闪存转换层425随后被更新以将新pba与原lba关联。

与通常对页操作的i/o请求不同,垃圾收集是在块级别执行的。当一个块被擦除时,该块中的所有页都被擦除。因此,如果选择用于垃圾收集的块包含一些有效数据,则在擦除该块之前,需要将所述有效数据复制到ssd120中的另一页中。(一些ssd在超块(如上所述,是一组块)上执行垃圾收集,但除了一次擦除不止一块的事实以外,对单独的块还是超块执行垃圾收集之间的差异不明显。)

从以上描述可以看出,ssd120上的页具有三种状态之一:空闲(可写的)、有效(包含正被使用的数据)或无效(包含不再被使用但尚未擦除的数据)(与这些状态所使用的确切名称不相关)。理想情况下,当选择用于垃圾收集的块时,该块中的所有页都处于无效状态,这意味着没有必要将有效数据编程到新页。但实际上,在执行垃圾收集之前,不一定要等到块没有有效页为止。例如,考虑每个块包含至少一个有效页但没有空闲页的情况。在这种情况下,ssd将由于其页未存储有效数据但不能写入新数据或者甚至不能将有效数据从一页复制至另一页而卡住。(事实上,这种情况可通过ssd保留一些块来克服,以在释放无效页的同时存储有效数据。)

图5示出了如何在图1的ssd120中执行垃圾收集。在图5中,显示了闪速存储器芯片415-1中的存储,但图5同样适用于图1的ssd120中的任何其他闪速存储器芯片,或者甚至更普遍适用于图1的ssd120(而不是看更低级别的硬件实施)。

在图5中,闪速存储器芯片415-1被示出为分为块505、510、515、520和525。图5所示的块505-525中的每一个包括四页,但本发明构思的实施例可支持包括任意数量的页的任意数量的块(但是每块通常包括相同数量的页)。块505包含四页有效数据,因此对于垃圾收集来说是一个糟糕的选择。块510包含三个有效页和一个无效页,也是垃圾收集的一个糟糕选择(但比块505好,因为在块510中至少可以释放一个无效页)。块515只包含无效页,因此是垃圾收集的理想候选(没有需要编程的有效数据)。

然而,(针对本发明构思的实施例的目的)块520是最有趣的块。块520包含三页无效数据和一页有效数据530。因此,块520是垃圾收集的良好候选(尽管无可否认不如块515好,因为需要对有效页530进行编程处理)。问题是把有效页530放在哪里。有效页530可以简单地编程至任何可用的空闲页中,如块525中的一个空闲页,如箭头535所示。但是基于关于写入有效页530的流的信息,其他块可以是更好的选择。

图6示出了可存储在图1的ssd120中的流的流特性的细节。可跟踪和存储的流特性605的示例包括:

·流id315,其标识包括数据的流。

·数据的期望生存期610。期望生存期610可以用时间单位来衡量(例如,预期数据在被无效之前将在图1的ssd120上存储10秒),或者用数据是“热”还是“冷”来衡量,“热”意味着数据具有短生存期,“冷”意味着数据具有长生存期。根据需要,期望生存期610也可按照“热”或“冷”的程度来衡量数据的寿命。

·流打开(针对该流首次记录流特性时)的流时间戳615。也就是说,流时间戳615可至少相对于图1的机器105的当前使用指明图1的机器105首先开始将数据写入该流的时间。例如,运行在图1的机器105上的应用可开始将数据写入特定的流id。当应用终止时,流被有效地“关闭”。然后,在图1的机器105上运行的另一应用可开始使用该流id。除了流id315外,图1的ssd120可通过使用流时间戳615对使用相同流id的不同“流”之间进行区分。

·块被分配至该流的块分配时间戳620。也就是说,块分配时间戳620可指明选择特定块以存储用于该流的数据的时间。如果需要,也可以用页分配时间戳620替换块分配时间戳620,但是这样增加了需要存储的数据量(因为各个页都需要它自己的流特性)。块分配时间戳620和流时间戳615的组合可用于确定流特性605是否描述仍在使用的流。例如,如果块分配时间戳620在流时间戳615之前,则图1的ssd120知道流id315已由于该块被分配至流而被重新分配。(不幸的是,逆结论并不一定准确:即使块分配时间戳620在流时间戳615之后,流也可由于流特性605已经产生而再打开。)

·有序性625(相同的流中的请求是否有序的指示)。有序访问可有助于优化如何存储和检索数据,并可暗示数据何时将无效。

·典型的i/o大小630。例如,典型的i/o大小630可表示数据通常一次不止一页地写入或读取,这可有助于优化如何存储数据。

·服务质量(qos)需求635,诸如用于流的i/o请求中使用的带宽,或通过流写入或读取的数据的延时要求。

·隔离级别640(用于i/o决定),它可以指示流是否需要通过通道、管芯、平面或块级别将其数据与其它数据隔离。隔离级别640可有助于优化如何在图1的ssd120上存储数据。

在本发明构思的一些实施例中,可将流特性605作为图1的ssd120上的元数据进行存储。例如,对于块(诸如图5的块505-525),可保留一页来存储流特性605。在本发明构思的实施例中,流特性605可作为流页645存储为图1的ssd120上的块中的页。如果用于不止一个流的数据被存储在图1的ssd120上的块中,则流页645的一部分可将所述块中的页的标识符与同该页关联的流的映射存储在例如流页645中的表中。在流页645中存储页标识符与流id的映射能够快速确定用于在页中写入数据的流,继而能够快速确定该流的流特性605。(当然,流页645可针对各页单独地存储流特性605,而不包括此附加的映射层。但是,如果块包含来自任何给定流的不止一页数据(这很可能),则该块中的每页直接存储流特性605可导致冗余信息被存储在流页645中)。

图7示出了图4的闪存转换层425中的逻辑块地址-物理块地址表。在图7中,示出了lba-pba表705。lba-pba表705示为将lba710-1与pba715-1配对,以及将lba710-2与pba715-2配对。虽然图7示出的lba-pba表705仅包括两对lba/pba,但是本发明构思的实施例可支持任意对lba/pba。

lba-pba表705可被闪存转换层常规使用以(基于物理地址)确定可(通过读请求,诸如图3的读请求320和325)找到应用请求的数据的页。但lba-pba表705也可反向使用:以确定与pba关联的lba。例如,考虑有效页(诸如图5的有效页530),其需要在垃圾收集过程中进行编程。给定图5的有效页530,图1的ssd120可确定图5的有效页530的pba。随后可利用lba-pba表705将该pba映射至lba。给定lba,图1的ssd120随后可确定关于用于写入有效页530的流的信息,如以下参照图8的描述。

图8示出了关于图4的流逻辑435的细节。在图8中,流逻辑435可包括逻辑地址-流id表805。逻辑地址-流id表805可以将lba与写入所述数据的流的id关联。因此,例如,逻辑地址-流id表805将lba810-1与流id815-1配对,并将lba810-2与流id815-2配对。虽然图8示出的逻辑地址-流id表805仅包括两对lba/流id,但是本发明构思的实施例可支持任意对lba/流id。因此,给定图5的有效页530的lba(如上参照图7所述),图1的ssd120可使用逻辑地址-流id表805来确定与图5的有效页530中的数据关联的流id。该流id随后可被图4的再流化器逻辑440使用以选择用于对图5的有效页530编程的新的块。

可替换地,作为存储逻辑地址-流id表805的替代,流逻辑435可包括块体-流id表820。块体-流id表820提供了识别用于写入图5的有效页530的流的替代形式。给定特定lba,可确定块体。例如,如果各块体的大小是1mb,则可从lba删除20个低位,以确定块体。然后,可利用块体确定流id。如上所述,如果各块体的大小为1mb,并且各流id为4位,那么对于图1的ssd120中的每1tb数据存储而言,块体-流id表820所需的总存储仅为4kb。在本发明构思的其他实施例中,因为块体大小不同并且每个流id所需的位的数量不同,所以块体-流id表820的存储需求可不同。

如以上参照图6所述,图6的流特性605可存储在图6的流页645中。如果各块被分配给不同的流,那么一旦块被分配给流,图6的流页645就可被写入块。但是,在本发明构思的一些实施例中,来自多个流的页可以写入单个块。在这种情况下,当第一页被写入块时,可能不知道所有相关的流特性。在这种情况下,可以使用缓存器825。

缓存器825可以存储图6的流页645,直到数据写入块的所有不同流已知为止。在本发明构思的该实施例中,图6的流页645可存储用于多个流的图6的多个流特性605。图6的流页645还可针对块中的各页存储识别这些页面所起源的流的信息。一旦与该块相关的所有流特性已知,图6的流页645就可从缓存器825被写入所述块中的一页。本发明构思的实施例可支持将图6的流页645写入所述块中的任何页:第一页、最后一页或中间的任何页。

图9示出了关于图4的再流化器逻辑440的细节。在图9中,再流化器逻辑440可使用流信息(图6的流id315或图6的流特性605)以选择对图5的有效页530编程的合适块。如果图5的有效页530起源的流仍然打开,则再流化器逻辑440可仅选择分配至该流的块来为图5的有效页530编程。另一方面,如果图5的有效页530起源的流关闭(并且可能被重用),则再流化器逻辑440可使用图6的流特性605来识别与写有图5的有效页530的流具有相似属性的打开流。在这两种情况下,都希望将图5的有效页530写入包含具有类似特征的其他数据的块中。

虽然传统的硬盘驱动器可几乎无限地被写和重写,但闪速存储器中的块可被写和擦除的次数往往存在有限的限制。因此,闪速存储器装置可确定块的损耗级别,并试图将数据写入已被写和擦除较少次数的页。本发明构思的实施例在选择在何处对图5的有效页530编程的过程中还可考虑图1的ssd120中的块的损耗级别。

图4的再流化器逻辑440还可包括损耗级别确定器905。损耗级别确定器905可确定在图1的ssd120中的各块的损耗级别。然后,再流化器逻辑440可将图6的流特性605和各块的损耗级别计算在内。再流化器逻辑440可将热数据(即,具有短期望生存期的数据)写入至低损耗级别的块,并且将冷数据(即,具有长期望生存期的数据)写入至高损耗级别的块。这样,再流化器逻辑440可以尝试使图1的ssd120中的块上的损耗平衡。

图10a-图10c示出了根据本发明构思的实施例的将数据写入至图1的ssd120并存储流信息的示例过程的流程图。在图10a中,在方框1005,图1的ssd120可从图1的机器105接收作为图3的写请求305的一部分的图3的数据310和图3的流id315。在方框1010,图1的ssd120可选择将图3的数据310作为一页(诸如图5的有效页530)写入其中的图5的块505-525。在方框1015,图1的ssd120可将图3的数据310写入至选择的块中的选择的页。

在这一点上,根据使用本发明构思的哪个实施例,存在不同的选择。在本发明构思的一个实施例中,在方框1020中,图8的流逻辑435可更新逻辑地址-流id表805或块体-流id表820,以将逻辑地址(直接地或通过块体间接地)映射到图3的流id315,在这之后处理结束。

在本发明构思的其它实施例中,图6的流页645可被存储在选择的块中。在这样的实施例中,在方框1025(图10b),图8的流逻辑435可确定图6的流特性605是否被立即写入图6的流页645,或者确定图6的流特性605是否将被缓存在图8的缓存器825中。如果图6的流特性605将被立即写入选择的块中的图6的流页645,则在方框1030,图8的流逻辑435可选择图5的块505-525中的其中将要写入图6的流特性605的一页,并且在方框1035,图8的流逻辑435可将图6的流特性605写入至图5的块505-525中的图6的流页645。在图6的流特性605被立即写入至图5的块505-525中的本发明构思的实施例中,图5的块505-525中的所有页存储与相同的流关联的数据,因此不需要将单独的页映射至单独的流。但如果图5的块505-525有望存储与不止一个流关联的数据,则可在将页-流映射写入至图5的块505-525时将其存储在图6的流页645中。例如,当图5的块505-525被首先分配为存储数据时,它可被分配为存储与多个流关联的数据,并且可在分配时知道这个事实。在这种情况下,可如方框1035中所述地将图6的流页645立即存储在图5的块505-525中,并且对于数据被存储在图5的块505-525中的所有流而言,图6的流页645可存储图6的流特性。

另一方面,如果图8的流逻辑435将图6的流特性605缓存在图8的缓存器825中,然后在方框1040(图10c),图8的流逻辑435可保留图5的块505-525中的一页以存储图6的流页645。在方框1045,图8的缓存器825可存储图6的流特性605直至具有待写入图5的块505-525的数据的所有流已被写入块为止。在方框1050,图8的流逻辑435可随后将所述页映射至如图8的缓存器825中存储的图6的流页645中的流。

在方框1055,图8的流逻辑435可检查以确定图5的块505-525是否被充满。如果不是,那么处理可返回图10a的方框1005,以从图1的机器105接收下一请求。否则,在方框1060,图8的流逻辑435可将如图8的缓存器825中存储的图6的流页645写入至图5的块505-525,作为图6的流页645(在保留页中),然后处理结束。

图11示出了根据本发明构思的实施例的当在图1的ssd120上执行垃圾收集和对图5的有效页530编程时使用存储的流信息的示例过程的流程图。在图11中,在方框1105,图4的垃圾收集逻辑430可识别图5的擦除块520。在方框1110,图4的垃圾收集逻辑430可识别图5的块520中的图5的有效页530。在方框1115,图4的流逻辑435可针对图5的有效页530识别图6的流特性605。

在方框1120,图9的损耗级别确定器905可确定图1的ssd120中的图5的块520-525的损耗级别。图9的损耗级别确定器905可通过访问跟踪图5的块505-525的编程和擦除周期次数的计数器来操作。可省略方框1120,如虚线箭头1125所示。

在方框1130,图4的再流化器逻辑440可使用图6的流特性605和图5的块520-525的损耗级别(如果需要),以选择其中对图5的有效页530编程的图5的新块525。在方框1135,图4的垃圾收集逻辑430随后可将图5的有效页530编程至图5的选择的新块525中。

图12示出了根据本发明构思的实施例的确定在垃圾收集期间用于正被编程的图1的ssd120中的图5的有效页530的流标识符(id)的示例过程的流程图。在图12中,在方框1205,图7的闪存转换层425可使用lba-pba表705以将图5的有效页530的物理地址映射至lba。如果图8的流逻辑435使用逻辑地址-流id表805,则在方框1210,图8的流逻辑435可使用逻辑地址-流id表805来确定与lba关联的图3的流id315。否则,在方框1215,图8的流逻辑435可将lba映射到块体,并在方框1220,图8的流逻辑435可使用块体-流id表820来确定与块体关联的图3的流id315。

图13示出了根据本发明构思的实施例的在垃圾收集期间从用于对图1的ssd120中的图5的有效页530编程的图6的流页645中读取图6的流特性605的示例过程的流程图。在图13中,在方框1305,图4的流逻辑435可从图5的块520中读取图6的流页645。在方框1310,图4的流逻辑435可确定哪个流与图5的有效页530关联。在方框1315,图4的流逻辑435可从图6的流页645中确定用于图5的有效页530的图6的流特性605。

在图10a-图13中,示出了本发明构思的一些实施例。但是,本领域技术人员应该认识到,通过改变方框的次序,通过省略方框,或通过包括附图中未示出的联系,也可以实现本发明构思的其它实施例。无论是否明确描述,对流程图的所有这些改变都被认为是本发明构思的实施例。

下面的讨论旨在对其中可实施本发明构思的特定方面的合适的一台或多台机器提供简短的概括性描述。所述一台或多台机器至少可以部分地通过常规输入装置(如键盘、鼠标等)的输入来控制,以及通过从另一台机器接收到的指令、与虚拟现实(vr)环境的交互、生物特征反馈或其它输入信号来控制。如本文所用,术语“机器”旨在广义地涵盖单机、一台虚拟机或按照通信连接的机器的系统、多台虚拟机或一起操作的装置。示例性机器包括诸如个人计算机、工作站、服务器、便携式计算机、手持装置、电话、平板等的计算装置,以及诸如私人或公共交通工具(如汽车、火车、出租车等)的运输装置。

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

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

本发明构思的实施例可包括一种有形的、非暂时性机器可读介质,其包括可由一个或多个处理器执行的指令,所述指令包括执行本文所述的本发明构思的要素的指令。

在参考示出的实施例描述和示出本发明构思的原理之后,应该认识到,示出的实施例可以在不偏离这些原理的情况下在排列方式和细节方面进行修改,并且可以以任何期望的方式组合。并且,尽管前面的讨论着重于特定实施例,但也考虑了其他构造。具体地说,即使在本文中使用诸如“根据本发明构思的实施例”之类的表达式,这些短语也意味着一般的参照性实施例的可能方式,并且不旨在将本发明构思限于特定的实施例构造。如本文所用,这些术语可涉及可组合其它实施例的相同或不同的实施例。

上述示出性实施例不被构造为限制本发明构思。虽然已经描述了一些实施例,但本领域的技术人员应该很容易理解,在不脱离本公开的新颖性教导和优点的情况下,这些实施例中的许多修改都是可能的。因此,所有这些修改都旨在被包括在如权利要求限定的本发明构思的范围内。

本发明构思的实施例可无限制地延伸至以下声明:

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

用于数据的存储;

主机接口逻辑,其用于从主机机器接收输入/输出(i/o)请求;以及

ssd控制器,其响应于所述i/o请求来管理从所述存储中读数据或者将数据写入所述存储,所述ssd控制器包括:

闪存转换层,其用于将i/o请求中的逻辑地址转换为存储中的物理地址;

垃圾收集逻辑,其用于在擦除块上执行垃圾收集,所述擦除块包括含有效数据的有效页;

流逻辑,其管理在i/o请求中写入到所述存储的有效数据的流特性;以及

再流化器逻辑,其响应于有效数据的流特性将有效页分配至新块。

声明2、包括根据声明1所述的ssd的本发明构思的实施例,其中:

流逻辑包括用于将与有效数据关联的逻辑地址映射至流id的逻辑块地址-流标识符(id)表;以及

再流化器逻辑操作以响应于流id将所述有效页分配至新块。

声明3、包括根据声明2所述的ssd的本发明构思的实施例,其中,逻辑块地址-流id表包括将关于与有效数据关联的逻辑地址的块体映射至流id的块体-流id表。

声明4、包括根据声明1所述的ssd的本发明构思的实施例,其中,再流化器逻辑操作以读取擦除块中的流页中的流特性。

声明5、包括根据声明1所述的ssd的本发明构思的实施例,其中,流特性包括流id、有效页的期望生存期、流分配时间戳、用于擦除块的块分配时间戳、有序性指示符、典型i/o大小、流id标识的流的服务质量(qos)需求和要求的隔离级别中的至少一个。

声明6、包括根据声明1所述的ssd的本发明构思的实施例,其中,流逻辑包括缓存器,在擦除块被充满之前,所述缓存器存储与流id关联的流特性。

声明7、包括根据声明6所述的ssd的本发明构思的实施例,其中,缓存器操作以针对擦除块中的页存储与多个流id关联的多个流特性。

声明8、包括根据声明7所述的ssd的本发明构思的实施例,其中,流页将针对擦除块中的页映射至所述多个流id中的至少一个。

声明9、包括根据声明1所述的ssd的本发明构思的实施例,其中:

再流化器逻辑包括用于确定多个新块的多个损耗级别的损耗级别确定器;并且

再流化器逻辑操作以响应于有效数据的流特性和所述多个新块的所述多个损耗级别将所述有效页分配至新块。

声明10、本发明构思的实施例包括一种方法,其包括以下步骤:

识别用于垃圾收集的固态驱动器(ssd)中的擦除块;

识别擦除块中的含有效数据的有效页;

确定有效页的流特性,所述流特性存储在ssd上;以及

利用所述流特性将有效页编程至ssd中的新块。

声明11、包括根据声明10所述的方法的本发明构思的实施例,其中:

确定有效页的流特性,所述流特性存储在ssd上的步骤包括:

将有效页的物理地址映射至逻辑地址;以及

将逻辑地址映射至流标识符(id);并且

利用所述流特性将有效页编程至ssd中的新块的步骤包括:利用流id将有效页编程至ssd中的新块。

声明12、包括根据声明11所述的方法的本发明构思的实施例,其中:

将有效页的物理地址映射至逻辑地址的步骤包括:利用闪存转换表将有效页的物理地址映射至逻辑地址;并且

将逻辑地址映射至流id的步骤包括:利用逻辑块地址-流id表将逻辑地址映射至流id。

声明13、包括根据声明11所述的方法的本发明构思的实施例,其中:

将有效页的物理地址映射至逻辑地址的步骤包括:利用闪存转换表将有效页的物理地址映射至逻辑地址;并且

将逻辑地址映射至流id的步骤包括:

将逻辑地址映射至块体;以及

利用块体-流id表将块体映射至流id。

声明14、包括根据声明13所述的方法的本发明构思的实施例,其中,将逻辑地址映射至块体的步骤包括:利用逻辑地址中的一组最高有效位确定块体。

声明15、包括根据声明11所述的方法的本发明构思的实施例,其中,利用流id将有效页编程至ssd中的新块的步骤包括:将具有有效页的流id提供至再流化器逻辑,以选择ssd中的新块。

声明16、包括根据声明10所述的方法的本发明构思的实施例,其中确定有效页的流特性,所述流特性存储在ssd上的步骤包括:从擦除块中的流页中读取流特性。

声明17、包括根据声明16所述的方法的本发明构思的实施例,其中,流特性包括流id、有效页的期望生存期、流分配时间戳、用于擦除块的块分配时间戳、有序性指示符、典型输入/输出(i/o)大小、流id标识的流的服务质量(qos)需求和要求的隔离级别中的至少一个。

声明18、包括根据声明16所述的方法的本发明构思的实施例,其中,在将有效页写入块的同一时间左右将流页写入擦除块。

声明19、包括根据声明16所述的方法的本发明构思的实施例,其中,利用所述流特性将有效页编程至ssd中的新块的步骤包括:将具有有效页的流特性提供至再流化器逻辑,以选择ssd中的新块。

声明20、包括根据声明10所述的方法的本发明构思的实施例,其中,利用所述流特性将有效页编程至ssd中的新块的步骤包括:

确定多个块的多个损耗级别;以及

响应于所述多个块的所述多个损耗级别和流特性选择新块。

声明21、包括根据声明20所述的方法的本发明构思的实施例,其中,响应于所述多个块的所述多个损耗级别和流特性选择新块的步骤包括:

在新块的对应的损耗级别高的情况下为新块选择长生存期的数据;以及

在新块的对应的损耗级别低的情况下为新块选择短生存期的数据。

声明22、本发明构思的实施例包括一种方法,包括以下步骤:

从主机机器接收数据;

利用用于所述数据的流id选择用于写入数据的块;

将数据写入所述块中的有效页中;以及

存储与用于所述数据的流id关联的流特性。

声明23、包括根据声明22所述的方法的本发明构思的实施例,其中,从主机机器接收数据的步骤包括:从主机机器接收数据和流id。

声明24、包括根据声明22所述的方法的本发明构思的实施例,其中,选择用于写入数据的块的步骤包括:利用自动流逻辑产生用于所述数据的流id。

声明25、包括根据声明22所述的方法的本发明构思的实施例,其中,存储与用于所述数据的流id关联的流特性的步骤包括:在逻辑块地址-流id表中将流id与同有效页关联的逻辑地址关联。

声明26、包括根据声明25所述的方法的本发明构思的实施例,其中,在逻辑块地址-流id表中将流id与同有效页关联的逻辑地址关联的步骤包括:在块体-流id表中将流id与同有效页关联的块体关联。

声明27、包括根据声明22所述的方法的本发明构思的实施例,其中,存储与用于所述数据的流id关联的流特性的步骤包括:将流页写入至所述块,所述流页包括与流id关联的流特性。

声明28、包括根据声明27所述的方法的本发明构思的实施例,其中,流特性包括流id、有效页的期望生存期、流分配时间戳、用于擦除块的块分配时间戳、有序性指示符、典型输入/输出(i/o)大小、流id标识的流的服务质量(qos)需求和要求的隔离级别中的至少一个。

声明29、包括根据声明27所述的方法的本发明构思的实施例,其中:

选择用于写入数据的块的步骤包括:在所述块中保留所述流页;并且

将流页写入至所述块的步骤包括:

对流页进行缓存,直至所述块被充满为止;以及

当所述块被充满时将流页写入至所述块。

声明30、包括根据声明29所述的方法的本发明构思的实施例,其中,对流页进行缓存,直至所述块被充满为止的步骤包括:缓存与用于块中的页的多个流id关联的多个流特性。

声明31、包括根据声明30所述的方法的本发明构思的实施例,其中,当所述块被充满时将流页写入至所述块的步骤包括:在流页中将所述块中的页映射至所述多个流id中的至少一个。

声明32、本发明构思的实施例包括一种制品,其包括非暂时性存储介质,所述非暂时性存储介质上存储有指令,当该指令被机器执行时,能够:

识别用于垃圾收集的固态驱动器(ssd)中的擦除块;

识别擦除块中的含有效数据的有效页;

确定有效页的流特性,所述流特性存储在ssd上;以及

利用所述流特性将有效页编程至ssd中的新块。

声明33、包括根据声明32所述的制品的本发明构思的实施例,其中:

确定有效页的流特性,所述流特性存储在ssd上的步骤包括:

将有效页的物理地址映射至逻辑地址;以及

将逻辑地址映射至流标识符(id);并且

利用所述流特性将有效页编程至ssd中的新块的步骤包括:利用流id将有效页编程至ssd中的新块。

声明34、包括根据声明33所述的制品的本发明构思的实施例,其中:

将有效页的物理地址映射至逻辑地址的步骤包括:利用闪存转换表将有效页的物理地址映射至逻辑地址;并且

将逻辑地址映射至流id的步骤包括:利用逻辑块地址-流id表将逻辑地址映射至流id。

声明35、包括根据声明33所述的制品的本发明构思的实施例,其中:

将有效页的物理地址映射至逻辑地址的步骤包括:利用闪存转换表将有效页的物理地址映射至逻辑地址;并且

将逻辑地址映射至流id的步骤包括:

将逻辑地址映射至块体;和

利用块体-流id表将块体映射至流id。

声明36、包括根据声明35所述的制品的本发明构思的实施例,其中,将逻辑地址映射至块体的步骤包括:利用逻辑地址中的一组最高有效位确定块体。

声明37、包括根据声明33所述的制品的本发明构思的实施例,其中,利用流id将有效页编程至ssd中的新块的步骤包括:将具有有效页的流id提供至再流化器逻辑,以选择ssd中的新块。

声明38、包括根据声明32所述的制品的本发明构思的实施例,其中,确定有效页的流特性,所述流特性存储在ssd上的步骤包括:从擦除块中的流页中读取流特性。

声明39、包括根据声明38所述的制品的本发明构思的实施例,其中,流特性包括流id、有效页的期望生存期、流分配时间戳、用于擦除块的块分配时间戳、有序性指示符、典型输入/输出(i/o)大小、流id标识的流的服务质量(qos)需求和要求的隔离级别中的至少一个。

声明40、包括根据声明38所述的制品的本发明构思的实施例,其中,在将有效页写入块的同一时间左右将流页写入至擦除块。

声明41、包括根据声明38所述的制品的本发明构思的实施例,其中,利用所述流特性将有效页编程至ssd中的新块的步骤包括:将具有有效页的流特性提供至再流化器逻辑,以选择ssd中的新块。

声明42、包括根据声明32所述的制品的本发明构思的实施例,其中,利用所述流特性将有效页编程至ssd中的新块的步骤包括:

确定多个块的多个损耗级别;以及

响应于所述多个块的所述多个损耗级别和流特性选择新块。

声明43、包括根据声明42所述的制品的本发明构思的实施例,其中,响应于所述多个块的所述多个损耗级别和流特性选择新块的步骤包括:

在新块的对应的损耗级别高的情况下为新块选择长生存期的数据;以及

在新块的对应的损耗级别低的情况下为新块选择短生存期的数据。

声明44、本发明构思的实施例包括一种制品,其包括非暂时性存储介质,该非暂时性存储介质上存储有指令,当该指令被机器执行时,能够:

从主机机器接收数据;

利用用于所述数据的流id选择用于写入数据的块;

将数据写入所述块中的有效页中;以及

存储与用于所述数据的流id关联的流特性。

声明45、包括根据声明44所述的制品的本发明构思的实施例,其中,从主机机器接收数据的步骤包括:从主机机器接收数据和流id。

声明46、包括根据声明42所述的制品的本发明构思的实施例,其中,选择用于写入数据的块的步骤包括:利用自动流逻辑产生用于所述数据的流id。

声明47、包括根据声明44所述的制品的本发明构思的实施例,其中,存储与用于所述数据的流id关联的流特性的步骤包括:在逻辑块地址-流id表中将流id与同有效页关联的逻辑地址关联。

声明48、包括根据声明47所述的制品的本发明构思的实施例,其中,在逻辑块地址-流id表中将流id与同有效页关联的逻辑地址关联的步骤包括:在块体-流id表中将流id与同有效页关联的块体关联。

声明49、包括根据声明44所述的制品的本发明构思的实施例,其中,存储与用于所述数据的流id关联的流特性的步骤包括:将流页写入至所述块,所述流页包括与流id关联的流特性。

声明50、包括根据声明49所述的制品的本发明构思的实施例,其中,流特性包括流id、有效页的期望生存期、流分配时间戳、用于擦除块的块分配时间戳、有序性指示符、典型输入/输出(i/o)大小、流id标识的流的服务质量(qos)需求和要求的隔离级别中的至少一个。

声明51、包括根据声明49所述的制品的本发明构思的实施例,其中:

选择用于写入数据的块的步骤包括在所述块中保留所述流页;并且

将流页写入至所述块的步骤包括:

对流页进行缓存,直至所述块被充满为止;以及

当所述块被充满时将流页写入至所述块。

声明52、包括根据声明51所述的制品的本发明构思的实施例,其中,对流页进行缓存,直至所述块被充满为止的步骤包括:缓存与用于块中的页的多个流id关联的多个流特性。

声明53、包括根据声明52所述的制品的本发明构思的实施例,其中,当所述块被充满时将流页写入至所述块的步骤包括:在流页中将所述块中的页映射至所述多个流id中的至少一个。

因此,鉴于对本文所述的实施例的各种排列,这篇详细描述和所附材料仅是示出性的,并且不应被视为限制本发明构思的范围。因此,所要求保护的本发明构思包括可落入权利要求及其等同物的范围和精神内的所有修改。

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