首页> 中国专利> 用于将数据高速缓存在固态存储设备上的装置、系统和方法

用于将数据高速缓存在固态存储设备上的装置、系统和方法

摘要

本发明公开了一种用于将数据用固态存储设备来高速缓存的装置、系统和方法。该固态存储设备维护与在固态存储设备上进行的高速缓存操作以及固态存储设备的存储操作有关的元数据。所述元数据指示高速缓冲存储器中的有效数据以及关于非易失性高速缓冲存储器中已存储在后备存储器中的数据的信息。备份引擎通过非易失性高速缓存设备中的单元来运行并且将有效数据备份到后备存储器中。在疏导操作期间,疏导器确定数据是否有效和数据是否可丢弃。可在疏导操作期间删除有效且可丢弃的数据。该疏导器也可确定数据是否为冷数据,以确定是否可从高速缓存设备中删除数据。该高速缓存设备可向客户端提供与后备存储器具有相同大小的逻辑空间。该高速缓存设备可对客户端透明。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-08-10

    专利权人的姓名或者名称、地址的变更 IPC(主分类):G06F9/06 变更前: 变更后: 申请日:20100908

    专利权人的姓名或者名称、地址的变更

  • 2016-08-10

    专利权的转移 IPC(主分类):G06F9/06 登记生效日:20160721 变更前: 变更后: 申请日:20100908

    专利申请权、专利权的转移

  • 2016-07-20

    专利权的转移 IPC(主分类):G06F9/06 登记生效日:20160701 变更前: 变更后: 申请日:20100908

    专利申请权、专利权的转移

  • 2016-03-23

    授权

    授权

  • 2014-08-20

    专利申请权的转移 IPC(主分类):G06F9/06 变更前: 变更后: 登记生效日:20140730 申请日:20100908

    专利申请权、专利权的转移

  • 2012-11-21

    实质审查的生效 IPC(主分类):G06F9/06 申请日:20100908

    实质审查的生效

  • 2012-09-26

    公开

    公开

查看全部

说明书

技术领域

本发明涉及将数据高速缓存在固态存储设备上,并且具体涉及维 护与高速缓冲存储器以及用于管理高速缓冲存储器且进行疏导操作 的固态存储设备有关的元数据。

背景技术

高速缓存设备为用于使数据更迅速地存取在系统中的存储设备。 高速缓冲存储器可通过减少将所述数据用于高速缓冲存储器中的操 作的输入/输出(I/O)时间来显著地提高系统性能。一般来讲,高速缓 冲存储器在相比于高速缓存设备具有更大存储容量、但具有更慢I/O 时间的另一个存储设备之前实施。可充分理解高速缓冲存储器的有益 效果,并且已在范围从CPU中的高速缓冲存储器到存储区域网络 (SAN)中的高速缓冲存储器的各种环境和规模下有利地实施了高速 缓冲存储器。

高速缓冲存储器的性质也可根据环境变化;例如,在单个计算机 (诸如桌上型电脑或膝上型电脑)中,高速缓冲存储器可在易失性存 储器,诸如静态随机存取存储器(SRAM)、动态随机存取存储器 (DRAM)或其它中实施。目前,高速缓存疏导是无效的,因为其与其 它存储器管理操作分离。

发明内容

固态存储设备可作为非易失性后备存储器的非易失性高速缓存 设备来操作。固态存储设备可对采用由固态存储设备提供的逻辑空间 的客户端透明。在一些实施方案中,固态存储设备可被配置为向客户 端提供与后备存储器的物理大小相同的逻辑大小,使得固态存储设备 向客户端提供与后备存储器具有相同大小的逻辑存储空间,而与固态 存储设备的物理存储大小无关。作为另外一种选择或除此之外,固态 存储设备可向客户端提供超出固态存储设备和后备存储器的物理存 储容量的逻辑地址空间。

固态存储设备可维护与在固态存储设备上进行的高速缓存操作 和存储操作有关的元数据。存储元数据可包括但不限于与在固态存储 设备上进行的顺序存储操作有关的元数据(例如所述设备上的客户端 逻辑地址与存储单元之间的关联数据(associations)、存储日志元数据 等)、与顺序存储操作有关的维护操作(例如存储恢复、无用单元收 集、错误校正等)、存储介质的状态(例如耗损均衡性、可靠性、完 整性等)等。存储元数据可包括将包括有效数据的存储单元与包括无 效数据的存储单元进行区分的有效性指示符。存储单元可指固态存储 设备上的任何可寻址存储位置。

固态存储设备可将数据高速缓存在固态存储设备的存储单元中。 高速缓存元数据可包括与存储在固态存储设备上的高速缓冲存储器 有关的元数据、在固态存储设备上进行的高速缓存操作(例如存取模 式等)、高速缓存管理(例如高速缓存清除和/或保留策略、高速缓存 属性、高速缓存指令等)等。高速缓存元数据可包括识别可丢弃的数 据的可丢弃性指示符。可丢弃数据可为已备份(例如存储)在后备存 储器上的高速缓存数据。

由固态存储设备维护的元数据可包括高速缓存条目,这些高速缓 存条目可表示高速缓存在所述设备上的数据(例如高速缓存在固态存 储设备的存储单元中的数据)。高速缓存条目可在识别数据在固态存 储设备上的存储位置时,将(存储客户端的)逻辑地址与一个或多个 存储位置(例如存储单元)关联;高速缓存条目可提供客户端逻辑地 址与固态存储设备存储位置(例如存储单元)之间的索引或映射。在 一些实施方案中,高速缓存条目可具有可变大小,并因此可引用固态 存储设备上的存储单元的一部分、单个存储单元和/或多个存储单元。 例如,第一高速缓存条目可包括单个存储单元上的第一数据量(例如 单个存储单元的一部分上的256字节),但第二高速缓存条目可包括 多个存储单元上的不同的第二数据量(例如多个存储单元或虚拟存储 单元上的4千字节)。

高速缓存条目可通过逻辑地址来索引,该逻辑地址响应于客户端 存储请求可能能够快速有效地访问高速缓存条目。高速缓存条目可用 于存储(和/或引用)共享元数据,包括与固态存储设备的顺序存储 操作以及高速缓冲存储器相关的元数据。例如,固态存储设备的疏导 器(如下所述)可存取与高速缓冲存储器有关的元数据,以有效地进 行存储恢复和/或维护操作。类似地,在固态存储设备上操作和/或结 合固态存储设备操作的高速缓存管理器(如下所述)可存取元数据, 以有效地管理高速缓冲存储器(例如做出与高速缓存清除和/或保留 等有关的高速缓存策略决策)。在一些实施方案中,固态存储设备可 提供可使元数据的部分暴露于存储客户端的存储接口(或通常为“接 口”)。通过使用所述接口,存储客户端可配置固态存储设备(例如, 设置高速缓存属性、高速缓存指令,发出TRIM命令等)。另外,所 述接口可通过其来暴露“稀疏”或“精简配置”逻辑地址空间,这无 需冗余地址转换层便可使存储客户端与固态存储设备进行交互(例如 在完整的64位地址空间内)。

在一些实施方案中,备份引擎可被配置为将高速缓存在固态存储 设备上的数据备份到后备存储器中。当存储在后备存储器上时,与所 述数据关联(例如与高速缓存条目和/或相应存储单元关联)的元数 据可被更新以表明所述数据可丢弃。备份引擎可按时间顺序(从最旧 至最新)循环遍历固态存储设备的存储单元。遍历可通过由固态存储 设备维护的共享元数据(例如存储单元的倒排索引和/或顺序指示符) 来激活。备份引擎的操作可被存储元数据告知;例如,备份引擎可忽 略元数据指示为无效的与高速缓存条目关联(和/或关联存储单元中) 的数据(例如数据由于恢复操作、连续写入、修改等已被移动至不同 的存储位置)。

在一些实施方案中,备份引擎以较低优先级运行(例如作为后台 进程或操作)。如果需要,备份引擎可被配置为以较高优先级运行。 例如,元数据可指示固态存储设备的物理存储容量、目标占用率、最 大占用率和/或当前占用率。在当前占用率超出阈值(例如超出目标 占用率、最大占用率或某个其它阈值)时,后台引擎可被配置为以较 高优先级运行。

存储恢复和维护操作可类似地被元数据告知。例如,被配置为恢 复固态存储设备的存储分区的疏导器进程可使用元数据来优先化(例 如在当前占用率超出阈值时,提高优先级)。疏导器在进行其数据恢 复操作时,可存取与高速缓冲存储器相关的元数据。例如,疏导器可 根据元数据来选择用于恢复的存储分区,可使用元数据来选择待保留 的存储分区中的存储单元(例如移动至不同的存储分区)等。

因此,在一些实施方案中,一种用于将数据高速缓存在固态存储 设备上的方法可包括:维护与在固态存储设备上进行的高速缓存操作 和固态存储设备的存储操作有关的元数据;存取所述元数据以管理固 态存储设备的存储操作;并且存取所述元数据以管理存储在固态存储 设备上的高速缓冲存储器。可将与高速缓存操作有关的元数据和与存 储操作有关的元数据存储在共享数据结构中。

所述元数据可包括识别已存储在后备存储器上的存储单元的可 丢弃性指示符,并且所述指示符可用于选择用于恢复的存储分区。高 速缓存清除元数据(例如冷、热、温等)可用于选择用于恢复的存储 分区和/或确定是否应当保留经选择进行恢复的存储分区中的存储单 元。所述元数据可与高速缓存条目的逻辑地址关联,因此当相应数据 的存储位置在固态存储设备上发生变化时,该元数据仍可与高速缓存 条目关联。

与高速缓冲存储器有关的元数据(例如共享高速缓存元数据)可 用于管理固态存储设备的顺序存储操作,诸如存储分区恢复、无用单 元收集、错误管理、顺序存储(例如基于日志的存储操作)等。与顺 序存储操作有关的元数据(例如共享存储元数据)可用于管理高速缓 冲存储器。例如,高速缓存操作诸如备份、高速缓存清除、占用、高 速缓存数据移动等可被共享的存储元数据告知。

所述元数据可包括多个高速缓存条目,每个高速缓存条目均将逻 辑地址与固态存储设备上包括高速缓存条目的数据的存储单元关联。 可使用高速缓存条目来处理客户端存储请求。如果特定逻辑地址的高 速缓存条目存在于所述元数据中,则相应的数据可在固态存储设备上 可用;否则,该数据可能不可用(并且可能发生高速高速缓存缺失)。 可迅速有效地处理客户端存储请求,因为高速缓存条目可通过逻辑地 址(例如在B树数据结构中)来索引。所述元数据可用于确定固态 存储设备的当前占用率。客户端条目可响应于高速缓存和/或存储操 作来修改。当存储接近的逻辑地址时,可合并相应的高速缓存条目, 这可减少必须搜索的条目的数量,从而找到特定逻辑地址。类似地, 当删除逻辑地址时,可(或不可)分解相应的高速缓存条目。高速缓 存条目可具有可变大小,并因此可包括单个逻辑地址、一系列逻辑地 址、一组逻辑地址等。

在本说明书中通篇对特征、优点或类似的术语的参考并未暗示可 通过本发明来实现的所有特征和优点均应当包括或包括在本发明的 任何单个实施方案中。相反,应当将涉及这些特征和优点的术语理解 为意指,结合实施方案描述的具体特征、优点或特性包括在本发明的 至少一些实施方案中。因此,在本说明书中通篇讨论的特征和优点及 类似的术语可能(但未必)涉及相同的实施方案。

此外,可以任何适当的方式将本发明的所述特征、优点和特性结 合在一个或多个实施方案中。相关领域的技术人员将认识到,本发明 可在无需具体实施方案的一个或多个具体特征或优点的情况下实施。 在其它情况中,可在一些实施方案中看到可能不存在于本发明的所有 实施方案中的其它特征和优点。

本发明的这些特征和优点通过以下说明和所附权利要求将变得 更加显而易见,或者可通过本发明的实施来了解,如下所述。

附图说明

为了易于理解本发明的优点,将通过参考在附图中示出的具体实 施方案对本发明进行以上简述的更具体说明。理解到这些图仅描述了 本发明的典型实施方案并因此不被视为对其范围进行限制,从而将通 过采用附图对本发明进行其它特定和详细的描述和解释,其中:

图1为示出了包括被配置为高速缓存数据的固态存储设备的系 统的示例性实施方案的示意性框图;

图2为示出了包括提供逻辑存储空间的固态存储设备的系统的 示例性实施方案的示意性框图,所述逻辑存储空间与由后备存储器提 供的物理空间具有相同大小;

图3为示出了高速缓存管理装置的一个实施方案的示意性框图;

图4为示出了文件系统、用作高速缓冲存储器的固态存储设备和 用作后备存储器的硬盘驱动器之间的写入期间的交互的示例性实施 方案的示意性框图;

图5为示出了文件系统、用作高速缓冲存储器的固态存储设备和 用作后备存储器的硬盘驱动器之间的读取期间的交互的示例性实施 方案的示意性框图;

图6为示出了用于配置固态存储设备的方法的另一个实施方案 的示意性流程图;

图7为示出了用于处理固态存储设备上的读取内容的方法的示 例性实施方案的示意性流程图;

图8为示出了用于处理固态存储设备上的写入内容的方法的示 例性实施方案的示意性流程图;

图9A为示出了在固态存储设备的单元上操作的备份引擎的示例 性实施方案的示意性框图;

图9B为示出了在固态存储设备的单元上操作的备份引擎的示例 性实施方案的示意性框图;

图10为示出了用于疏导固态存储设备中的单元的方法的示例性 实施方案的示意性流程图;

图11为用于维护共享元数据的示例性数据结构的示意性框图;

图12为用于将数据高速缓存在固态存储设备上的方法的一个实 施方案的流程图;

图13为用于将数据高速缓存在固态存储设备上的方法的另一个 实施方案的流程图;

图14为用于将数据高速缓存在固态存储设备上的方法的另一个 实施方案的流程图;

图15为用于将数据高速缓存在固态存储设备上的方法的另一个 实施方案的流程图;并且

图16为用于将数据高速缓存在固态存储设备上的方法的另一个 实施方案的流程图。

具体实施方式

本说明书中描述的许多功能单元已被标记为模块,以便更具体地 强调其实施独立性。例如,模块可作为包括定制VLSI电路或门阵列、 现货半导体(诸如逻辑片、晶体管)或其它分立元件的硬件电路来实 施。模块也可在可编程硬件设备诸如现场可编程门阵列、可编程阵列 逻辑、可编程逻辑设备等中实施。

模块也可在软件中实施以通过各种类型的处理器来执行。可执行 代码的识别模块可例如包括计算机指令的一个或多个物理块或逻辑 块,其可例如以对象、程序或功能来组织。然而,识别模块的可执行 文件无需物理地设置在一起,但可包括存储在不同位置中的不同指 令,这些指令在逻辑地接合在一起时包括所述模块并且实现该模块的 所述目的。

实际上,可执行代码的模块可为单指令或多指令,并且甚至可分 布在若干不同代码段上、不同程序之间和整个若干存储设备上。类似 地,模块内的操作数据可在本文中得以识别和示出,并且可以任何适 当的形式体现并组织在任何适当类型的数据结构内。所述操作数据可 被收集成单个数据集,或者可分布在不同位置(包括不同的存储设备) 上,并且可至少部分地仅作为电子信号存在于系统或网络上。如果模 块或模块的部分在软件中实施,则软件部分存储在一个或多个计算机 可读介质上。

在本说明书中通篇对“一个实施方案”或类似的术语的参考意指, 结合实施方案描述的特定特征、结构或特性包括在本发明的至少一个 实施方案中。因此,在本说明书中通篇出现的短语“在一个实施方案 中”和类似的术语可能(但未必)均涉及相同的实施方案。

所提及的计算机可读介质可采用能够将机器可读指令存储在数 字处理装置上的任何形式。计算机可读介质可通过传输线、光盘、数 字视频光盘、磁带、贝努里技术驱动、磁盘、穿孔卡、闪速存储器、 集成电路或其它数字处理装置存储设备来体现。

此外,可以任何适当的方式将本发明的所述特征、结构或特性结 合在一个或多个实施方案中。在以下说明中,提供了许多具体细节, 诸如编程、软件模块、用户选择、网络交易、数据库查询、数据库结 构、硬件模块、硬件电路、硬件芯片等的实例,以提供对本发明的实 施方案的充分理解。然而,相关领域的技术人员将认识到,本发明可 在无需所述具体细节中的一个或多个的情况下实施,或者可通过其它 方法、部件、材料等来实施。在其它情况中,未详细示出或描述所熟 知的结构、材料或操作,以避免模糊本发明的各方面。

通常将本文中包括的示意性流程图作为逻辑流程图来阐述。因 此,所描述的顺序和标记步骤表示所提出方法的一个实施方案。可以 设想在功能、逻辑或效果上与所示方法的一个或多个步骤或其部分等 效的其它步骤和方法。另外,提供了所采用的格式和符号以解释所述 方法的逻辑步骤,但应理解这些格式和符号不旨在限制所述方法的范 围。虽然各种箭头类型和线条类型可用于各流程图中,但应理解其不 旨在限制相应方法的范围。实际上,一些箭头或其它连接符可用于仅 指示所述方法的逻辑流程。例如,箭头可指示所述方法的列举步骤之 间的未指定期限的等待或监测期。另外,进行特定方法的顺序可能会 或可能不会严格符合所示出的相应步骤的顺序。

如本文所用,元数据可指与固态存储设备的操作有关的任何数 据。因此,元数据可指高速缓存元数据和/或存储元数据。在一些实 施方案中,固态存储设备可被配置为维护包括高速缓存元数据和/或 存储元数据的共享数据结构。所述数据结构可通过高速缓存管理器、 疏导器和/或其它管理模块来存取,这些设备可使用元数据来有效地 管理固态存储设备的高速缓存、存储和/或维护操作(例如疏导)。

如本文所用,高速缓存元数据可指与存储在固态存储设备上的高 速缓冲存储器和/或在固态存储设备上进行的高速缓存操作有关的任 何数据。高速缓存元数据可包括但不限于:识别已备份在后备存储器 上的高速缓存条目存储单元的可丢弃性指示符、高速缓存清除元数 据、高速缓存属性(例如PIN、BLACKLIST)、高速缓存指令(例如 Flush)等。例如,高速缓存清除元数据可包括数据存取模式,诸如 最近最少使用的模式、存取频率等。高速缓存清除元数据可用于做出 关于特定高速缓存条目的高速缓存清除决策。例如,高速缓存清除元 数据可用于识别“热”、“温”和/或冷等高速缓存条目。冷高速缓存 条目可为用于清除的候选物,但可保留“热”条目。高速缓存清除元 数据也可包括高速缓存属性,诸如PIN、BLACKLIST等,这些高速 缓存属性可用于管理高速缓存操作(例如,PIN指令可防止数据从固 态存储设备中清除)。类似地,高速缓存清除元数据可响应于高速缓 存指令,诸如“FLUSH”指令,以从高速缓冲存储器中刷新或清除高速 缓存条目。

如本文所用,存储元数据可指与固态存储设备的固态存储介质和 /或在固态存储设备上进行的存储操作有关的任何数据。存储元数据 可包括但不限于:识别固态存储设备上的有效和/或无效数据的有效 性指示符、向存储单元查找提供有效逻辑地址的正向索引元数据、向 逻辑地址查找提供有效存储单元的反向索引元数据、占用元数据(例 如存储在固态存储设备上的数据、占用率阈值等)、存储介质状态(例 如耗损均衡性、可靠性、出错率等)、顺序存储元数据(例如存入等) 等。

如本文所用,存储单元可指用于将数据存储在固态存储设备上的 任何位置。因此,存储单元可包括固态存储元件的块、包括多个固态 存储元件上的块或其部分的虚拟块、页面、包括多个固态存储元件的 页面或其部分的虚拟页面、存储分区、虚拟存储分区、擦除块、虚拟 擦除块等。

存储单元可为存储分区的一部分。如本文所用,存储分区可指固 态存储设备的可擦除分区。因此,存储分区可指固态存储元件的擦除 块、包括多个固态存储元件上的存储分区或其部分的虚拟擦除块等。

在一些实施方案中,高速缓冲存储器可包括多个“高速缓存条 目”。高速缓存条目可包括逻辑地址(或一系列逻辑地址,所述一系 列的逻辑地址可包括有序地址、无序地址、连续地址和不连续地址) 和一个或多个存储单元,所述存储单元上对应于逻辑地址的数据存储 在固态存储设备上。高速缓存条目的数据可存储在存储单元、单个存 储单元和/或多个存储单元的一部分上。高速缓存条目可具有可变大 小。如上所述,高速缓存条目可与客户端的逻辑地址关联。逻辑地址 与相应高速缓存条目之间的关联数据可通过固态存储设备114(例如 在元数据117中)来维护。高速缓存条目的数据可存储在固态存储设 备的存储单元(例如页面、虚拟页面、擦除块和/或擦除块)内。或 者,高速缓存条目的数据可穿过存储边界(例如存储在多个页面、虚 拟页面、擦除块和/或虚拟擦除块上)。

由固态存储设备维护的元数据可包括多个高速缓存条目,每个高 速缓存条目均将逻辑地址与固态存储设备上的相应存储单元关联。这 些关联数据可在映像或索引(称为“正向映像”或“正向索引”)中 得以维护。如本文所用,正向映像或正向索引(或通常为索引)可指 能够将高速缓存条目的逻辑地址(例如来自客户端的逻辑块地址)与 固态存储设备的存储单元关联的任何数据结构。在一些实施方案中, 所述索引可包括树数据结构,诸如B树等。树数据结构可包括通过 逻辑地址或一组逻辑地址(例如作为范围和/或长度)来索引的高速 缓存条目。因此,所述索引可称为范围B树或(通常为B树)。以下 结合图11描述了包括多个高速缓存条目的数据结构的实例。

正向索引可用于确定对应于逻辑地址的数据是否存储在固态存 储设备上。例如,如果与所述地址关联的节点位于所述索引中,则该 地址的有效数据在固态存储设备上可用;否则,如果无节点存在于所 述索引中,则对应于逻辑地址的数据不会存储在固态存储设备上。

所述元数据还可包括倒排索引,该倒排索引可通过其物理地址来 索引存储单元(与正向映像中通过逻辑地址进行的索引相反)。因此, 倒排索引可快速有效地查找特定存储单元和/或提供穿过固态存储设 备的物理地址空间的顺序遍历。在一些实施方案中,倒排索引可链接 至与正向索引相同的节点(叶节点)(例如,倒排索引可反映正向索 引,不同的是叶节点通过与逻辑地址相反的物理地址来索引)。或者, 倒排索引可包括单独的数据结构,诸如树、映像、阵列、表、位映像 等。在一些实施方案中,倒排索引可提供存储单元与存储单元的元数 据之间的关联数据,诸如有效性指示符、可丢弃性指示符(例如,存 储单元的数据是否已存储在后备存储器上)、存储单元耗损均衡性、 出错率、存取模式等。

如本文所用,高速缓存清除元数据可指用于做出高速缓存清除 (或保留)决策的元数据。高速缓存清除元数据可与高速缓存条目关 联,并因此可通过逻辑地址来索引,这与固态存储设备上的特定存储 位置相反。尽管数据的物理存储位置发生变化(例如由于顺序存储操 作的原因),但这也可使高速缓存清除元数据得到维护。高速缓存清 除元数据可识别“热”、“温”和/或“冷”高速缓存条目。如本文所 用,“热”、“温”和/或“冷”数据可指相对于其它数据而言具有特定 存取和/或使用模式、物理空间关系的数据(换句话讲,一组数据的 “温度”可通过相对于高速缓冲存储器中使用的其它数据而言物理地 位于介质上或逻辑地位于逻辑地址空间中的数据来确定或可受这些 数据的密切影响)。例如,“热”或“温”数据可指最近已存取和/或 已以特定频率存取的数据(如高速缓存清除元数据所指示)。另一方 面,“冷”数据可指未以特定频率在特定时间阈值内存取的数据等(也 如高速缓存清除元数据所指示)。本领域中已知的各种不同技术和/或 数据存取模式可用于识别“热”、“温”和/或“冷”数据,其中的任 何数据均可根据本公开的教导来实施。另外,高速缓存清除元数据可 包括高速缓存属性和/或指令。高速缓存属性可告知高速缓存管理; 例如,“PIN”高速缓存指令可防止特定高速缓存条目从固态存储设备 中清除,并且“BLACKLIST”属性和/或“FLUSH”指令可防止数据保留 在高速缓冲存储器中。

在一些实施方案中,固态存储设备可按顺序存储数据。如本文所 用,顺序存储可指其中数据存储在一个或多个追加点处的异地存储方 案。因此,当修改(或鉴于某种其它原因而重新存储)存储在固态存 储设备上的数据时,可将这些数据存储在固态存储设备的不同存储单 元上(例如,与重新写入原来存储所述数据的相同存储单元上相反)。

顺序存储器也可指用于通过固态存储设备来维护存储元数据(例 如基于日志的存储)的机构。存储元数据可使在固态存储设备上进行 的存储操作的顺序得以重构或重放。存储元数据可包括存储分区时间 戳、顺序指示符、包标题、正向和/或倒排索引等。例如,当对应于 第一逻辑地址的数据存储在固态存储设备上时,可维护存入数据。所 述元数据可包括在上文公开的正向索引(例如B树)中索引数据。 例如,可将对应于逻辑地址的高速缓存条目添加至以下索引中,该索 引可被配置为引用固态存储设备上的存储单元,所述存储单元包括对 应于逻辑地址的数据。如上所述,逻辑地址可包括地址和长度或范围, 和/或可包括一组逻辑地址。当客户端(或其它实体)修改数据时, 可将修改的数据按顺序(例如“异地”)存储在固态存储设备上。因 此,包括与逻辑地址关联的有效数据的存储单元可能会改变。可更新 高速缓存条目以反映新存储单元,而旧存储单元可能无效(例如在倒 排索引或其它数据结构中)。存储操作的此顺序可采用正向映像、存 储在固态存储设备上的顺序指示符和/或其它存储元数据(例如倒排 索引等)进行重放。其它顺序存储操作可包括但不限于:存储分区恢 复、无用单元收集、错误管理、虚拟存储管理、顺序存储(例如基于 日志的存储操作)等。如本文所用,顺序存储操作可指上述任何存储 操作。

图1示出了系统100的一个实施方案,系统100包括客户端 110a-c、被配置为作为高速缓冲存储器来操作的固态存储设备114、 通信总线116以及后备存储器118。系统100可为存储区域网络 (“SAN”)、网络附加存储(“NAS”),或客户端110a-c和后备存储器118 及固态存储设备114的其它配置。客户端110a-c为对存储在后备存储 器110中的数据进行存取的计算设备。客户端110a-c可为个人计算机, 诸如桌上型电脑、工作站、服务器或其它特定类型的计算设备。作为 另外一种选择或除此之外,客户端110a-c可包括在计算设备,诸如 操作系统(OS)、文件系统(FS)、网络服务器、数据库服务器等上操作 的进程或服务。

固态存储设备114可被配置为向客户端110a-c和/或后备存储器 118提供高速缓存服务。将固态存储设备114用作高速缓冲存储器可 提供许多不同的有益效果。例如,客户端110a-c从固态存储设备114 读取并写入固态存储设备114的存取时间可能小于客户端110a-c直接 从后备存储器118读取数据/将数据写入后备存储器118的存取时间, 固态存储设备114使客户端110a-c更迅速地存取数据。在一些实施方 案中,固态存储设备114可向客户端110a-c提供逻辑接口,该逻辑接 口可包括超出固态存储设备114的物理存储容量的逻辑地址空间。所 述逻辑地址空间可对应于后备存储器118的物理存储容量,这可使客 户端与固态存储设备114进行透明交互(例如,好似客户端在直接访 问后备存储器118)。作为另外一种选择或除此之外,固态存储设备 114可提供超出固态存储设备114和后备存储器118的物理存储容量 的逻辑地址空间(例如“稀疏”或“精简”逻辑地址空间)。所述逻 辑地址空间可包括64位地址空间、32位地址空间或客户端110a-c采 用的另一种寻址方案。

固态存储设备114可采用逻辑到物理索引以将客户端110a-c的逻 辑地址映射到固态存储设备114上的存储单元,这可删除由客户端 110a-c实施的冗余转换层,简化客户端110a-c对存储设备114和118 的访问,和/或向客户端110a-c提供灵活的存储基础结构(例如“稀 疏”或“精简配置”存储服务)。

固态存储设备114可包括固态存储控制器115,其可被配置为维 护与存储在固态存储设备114上的高速缓冲存储器有关(和/或与设 备114上的高速缓存操作有关)的元数据117,以及与在固态存储设 备114进行的存储操作有关的存储元数据、固态存储设备114上的存 1储单元的状态等。所述元数据可包括有效性映像和可丢弃性映像。 有效性映像可识别固态存储设备114的存储单元,所述存储单元包括 有效数据(与客户端110a-c的逻辑地址关联的最新数据)。因此,有 效性映像可包括上述正向索引。无效性映像可来源于有效性映像(例 如未位于有效性映像中的所有存储单元可被识别为包括无效数据)和 /或可在单独的数据结构(诸如倒排索引等)中得以维护。可丢弃性 映像可识别已存储在后备存储器118上的高速缓存条目存储单元。

固态存储设备114和/或控制器115可包括高速缓存管理装置 130,其可响应于客户端存储请求而使用元数据来识别高速缓存条目。 在一些实施方案中,高速缓存管理装置130可采用装置驱动程序(例 如Linux装置驱动程序)来实施。

虽然图1示出了一种固态存储设备114,但系统100的其它实施 方案可包括用作客户端110a-c的高速缓冲存储器的多种固态存储设 备114。在一些实施方案中,高速缓存管理装置130可在所述系统中 的每个固态存储设备114上实施。在其它实施方案中,高速缓存管理 装置130可分布在系统100中的整个固态存储设备114上。

固态存储设备114用作后备存储器118的高速缓冲存储器。在一 些实施方案中,固态存储设备114和后备存储器118通过通信总线116 连接。通信总线116可为局部通信总线(例如计算机系统的通信总 线)、分布式总线、局域网(“LAN”)、广域网(“WAN”)或其它类型的通 信网络,或者可采用各种协议来实施。在一些实施方案中,固态存储 设备114直接附接至后备存储器118。固态存储设备114和后备存储 器118也可通过总线连接。

固态存储设备114可被配置为用作基本上与后备存储器118同时 查看数据存取请求的后备高速缓冲存储器。在其它实施方案中,固态 存储设备114被配置为用作在后备存储器118之前查看数据存取请求 的搁置高速缓冲存储器。在一些实施方案中,如果固态存储设备114 为搁置高速缓冲存储器,则固态存储设备114将数据存取请求传到后 备存储器118,其前提是固态存储设备114上的试图存取为缺失。固 态存储设备114也可作为回写高速缓冲存储器来实施。在一些实施方 案中,当前高速缓存模式可用于由固态存储设备114维护的元数据 中。高速缓存模式可通过客户端110a-c经由存储接口、改进的存储 接口等进行改变。元数据还可指示高速缓存属性(诸如PIN、 BLACKLIST等)和/或高速缓存指令(例如FLUSH)。高速缓存属性 和/或指令可存储在由固态存储设备114维护的元数据中,以供高速 缓存管理装置130和/或固态存储控制器115存取。

后备存储器118可向客户端110a-c提供存储,客户端110a-c从 后备存储器118读取数据并将数据写入后备存储器118。后备存储器 118可包括一个或多个非易失性存储设备,诸如固态存储器、硬盘驱 动器、磁带、一些其它非易失性数据存储介质或前述实例的组合。在 一些实施方案中,后备存储器118或后备存储器118中的至少某些存 储介质可具有低于固态存储设备114的访问和/或吞吐量性能。

在一些实施方案中,系统100在计算设备内实施。例如,固态存 储设备114可附接至计算设备(诸如桌上型电脑)的主板,并且用作 后备存储器118(即硬盘驱动器)的高速缓冲存储器。计算设备的CPU 可使用固态存储设备114来读取和写入数据,并且利用固态存储设备 114的较快读取/写入时间(与后备存储器118相比)。在一些实施方 案中,系统100也包括附加固态存储设备114。例如,系统100可采 用多层高速缓冲存储器,其具有以高速高速缓存层次结构组织的多个 固态存储设备114。

图2示出了系统200的一个实施方案,系统200示出了由固态存 储设备114提供的逻辑和物理存储空间。系统200示出了作为系统 200的部件的文件系统210。文件系统210为在物理计算设备上操作 的逻辑实体。在一些实施方案中,文件系统210可在图1的客户端 110a-c之一上实施。文件系统210存储和组织计算机文件以及系统 200中的数据。在许多实施方案中,文件系统210将存储块组织到文 件和目录中,并且追踪属于所述文件的块。虽然图2示出了文件系统 210,但本公开不限于该方面且可结合本领域中已知的任何存储客户 端使用,这些存储客户端包括但不限于:数据库、服务器(例如网络 服务器、存储服务器等)、应用程序、用户等。

在一些实施方案中,后备存储器118提供了物理存储空间,其上 的数据实际上通过文件系统210来存储。后备存储器118可提供的空 间量可根据系统200而大不相同;台式计算机通常为500GB,而分布 式存储系统(诸如存储区域网络(SAN))中可提供太字节(“TB”)或拍 字节(“PB”)的后备存储器118。通常,后备存储器118由为块存储设 备的存储设备构成;然而,其它类型的后备存储设备可用于后备存储 器118中。

固态存储设备114可具有预定物理存储容量。在一些实施方案 中,固态存储设备114可逻辑和/或物理分区,使得固态存储设备114 的物理空间的一部分专门用作后备存储器118的高速缓冲存储器,并 且固态存储设备114的一部分被配置为作为存储器(例如后备存储器 118的一部分,或其它存储服务)来操作。例如,可将固态存储设备 114格式化,使得200GB的物理空间专门用作高速缓冲存储器,而剩 余的120GB被视为后备存储器118的一部分。

在一些实施方案中,固态存储设备114向文件系统210提供与后 备存储器118的物理空间具有相同大小的高速缓存逻辑空间220,而 与固态存储设备114的物理大小无关。例如,可将固态存储设备114 格式化至与后备存储器118具有相同大小。在典型实施方案中,后备 存储器118的物理存储容量(例如1PB)大于固态存储设备114的物 理存储容量(例如80GB)。

在一些实施方案中,固态存储设备114可向文件系统210提供大 于后备存储器118(以及固态存储设备114本身)的物理空间的逻辑 地址空间220。用户可能能够将物理空间添加至后备存储器118,而 无需改变高速缓存逻辑空间220的大小。固态存储设备114可采用正 向映像来维护设备114和/或后备存储器118中的逻辑地址与“稀疏” 或“精简配置”存储单元之间的关联数据,如上所述。在一些实施方 案中,当固态存储设备114和/或后备存储器118的占用率超出阈值 时,固态存储设备114可被配置为请求附加存储空间(例如附加后备 存储器118)。固态存储设备114可提供接口,客户端(例如文件系 统210)通过该接口可发出查询以确定固态存储设备114、后备存储 器118的实际物理容量;剩余存储容量;当前占用率(例如当前存储 在固态存储设备上的有效数据量)等。所述接口还可提供对客户端(例 如文件系统210)的调用,以请求存储容量、保留存储容量等。

在一些实施方案中,固态存储设备114可根据后备存储器118的 改变的物理存储来对高速缓存逻辑空间220的大小进行动态调整。例 如,如果将新存储设备添加至后备存储器118中,则固态存储设备 114可动态增加向文件系统210提供的高速缓存逻辑空间220的大小。

在一些实施方案中,固态存储设备114可对文件系统210透明。 文件系统210可能仅可查看通过固态存储设备114向其提供的高速缓 存逻辑空间220。在一些实施方案中,固态存储设备114用作后备存 储器118的控制器。因此,文件系统210将数据存取事件(诸如读取 和写入请求)指向通过固态存储设备114向其提供的高速缓存逻辑空 间220。文件系统210可能未意识到,其处理的固态存储设备114不 具有与高速缓存逻辑空间220一样大的物理存储空间。在一些实施方 案中,固态存储设备114在RAID配置中将数据分段到后备存储器 118。在一些实施方案中,固态存储设备114在RAID配置中可配置 有其它固态存储设备。

因此,固态存储设备114可采用稀疏映射的64位地址空间。在 一些实施方案中,当文件系统210请求数据(例如读取请求)并向所 请求的数据提供地址(诸如逻辑块地址或LBA)时,固态存储设备 114(和/或控制器115)可在由固态存储设备114维护的元数据117 (一种索引,诸如上述正向索引)中查找该地址,并且如果与逻辑地 址关联的数据在固态存储设备114上可用,则在相应存储单元上启动 读取。如果所述数据未位于指定地址和/或逻辑地址未位于索引中, 则固态存储设备114可产生错误。该错误可被解释为高速高速缓存缺 失,这可通过从后备存储器118读取所请求的数据并将该数据高速缓 存在一个或多个存储单元中的固态存储设备114来处理。高速高速缓 存缺失还可包括更新元数据以引用逻辑地址(例如将叶节点添加至索 引中)等。

在其中固态存储设备114提供大于固态存储设备114的物理空间 的高速缓存逻辑空间220的实施方案中,高速缓存管理装置130管理 固态存储设备114以确保固态存储设备114不超出其物理存储容量。 以下描述了在固态存储设备114提供较大的逻辑空间220时用于管理 固态存储设备114的物理存储容量的示例性方法。

在此类实施方案中,固态存储设备114可对文件系统210和寻求 访问后备存储器118的其它实体透明。管理固态存储设备114并寻找 数据的复杂性可从文件系统210中隐藏。因此,文件系统210可能无 需在固态存储设备114中检查待读取或写入固态存储设备114而非写 入后备存储器118的数据。相反,文件系统210仅将数据存取在高速 缓存逻辑空间220中,高速缓存逻辑空间220由固态存储设备114提 供并且使得固态存储设备114透明地确定处理数据的最有效方式。构 成高速缓存逻辑空间220的物理存储布置(即固态存储设备114及其 与后备存储器118的关系)可从文件系统210中隐藏。另外,通过使 固态存储设备114对数据高速缓存进行管理,高速缓存管理装置130 可采用由固态存储设备114维护的元数据117来做出关于高速缓存维 护的智能选择,所述元数据通常不可用于文件系统210。

图3示出了包括疏导器310和高速缓存管理装置130的固态存储 控制器115的示例性实施方案。固态存储控制器115可耦合(例如直 接经由总线或其它通信管道)至固态存储介质320。固态存储介质320 可经由局部通信总线、网络总线、网络接线等耦合至控制器115。在 一些实施方案中,固态存储设备114和/或控制器115可通信地耦合 至多个固态存储介质320。固态存储介质320可包括可成排设置的一 个或多个固态存储元件(未示出)。固态存储控制器115可能能够并 行存取所述排中的一个或多个和/或固态存储设备114可包括多个固 态存储控制器115。

在描述的实施方案中,高速缓存管理装置130包括高速缓存控制 器312和备份引擎314。疏导器310和高速缓存管理装置130可访问 元数据117,元数据117尤其可包括存储元数据316(其可包括有效 性映像)和存储元数据318(其可包括可丢弃性映像)。疏导器310 和/或高速缓存管理装置130可作为固件、软件、硬件或它们的某种 组合来实施。如图3所示,疏导器310和高速缓存管理装置130可在 固态存储控制器115上实施。然而,本公开不限于该方面。例如,在 一些实施方案中,疏导器310和/或高速缓存管理装置130可采用单 独的控制器、处理器、FPGA等来实施。作为另外一种选择或除此之 外,固态存储控制器115、疏导器310和/或高速缓存管理装置130可 作为在固态存储设备114上操作的一个或多个驱动器来实施。

疏导器310移动存储在固态存储介质320上的数据以作为维护操 作的一部分,这些维护操作诸如存储分区恢复(例如擦除块恢复)、 数据刷新操作、数据错误校正、错误处理等。疏导器310可以对文件 系统210和后备存储器118透明的方式移动固态存储介质320中的存 储单元之间的数据。例如,疏导器310可对作为固态存储设备114来 操作的固态存储设备中的数据进行无用单元收集操作,以便收回固态 存储设备114上的存储空间。疏导器310也可对在固态存储设备114 中严重碎片化的文件消除碎化。2007年12月6日提交的名称为 “Apparatus,System,and Method for Storage Space Recovery in  Solid-state Storage”的美国专利申请号11/952,101(David Flynn等)描 述了示例性疏导操作,该专利据此全文以引用方式并入。类似地,疏 导器310可移动数据以便保护该数据免受读取干扰和/或作为耗损均 衡操作的一部分。本领域的技术人员将意识到鉴于数据维护和空间维 护目的而可能需要移动存储设备内的数据的其它疏导操作。与疏导器 的操作有关的元数据,诸如经选择进行恢复的存储分区、有效性映像、 存储分区出错率、存储分区耗损均衡性、存取模式等可在元数据117 中(例如在存储元数据316中)得以维护。元数据117(例如存储元 数据316)还可包括索引,所述索引包括由存储客户端提供的逻辑地 址与固态存储介质320上的存储单元之间的关联数据,与所述逻辑地 址有关的有效数据存储在固态存储介质320上。如上所述,所述索引 可包括B树,其包括通过逻辑地址来索引的长度和/或范围编码节点。

高速缓存控制器312协调存储客户端(诸如客户端110a-c、文件 系统210或其它)与关于固态存储设备114的后备存储器118之间的 数据交换。在一些实施方案中,高速缓存控制器312负责维护指定何 时和如何将数据从固态存储设备114中清除的清除策略。在一些实施 方案中,清除策略尤其可基于高速缓存清除元数据,该元数据可包括 数据存取模式(例如数据是否为“热”、“温”、“冷”等数据)。清除 元数据可对应于上次存取时间(最近最少使用的时间)、存取频率、 高速缓存条目大小与存取时间和/或存取频率的比率等。

在一些实施方案中,高速缓存清除元数据可包括可用于做出清除 决策的高速缓存属性和/或指令。例如,PIN高速缓存属性可使关联数 据保留在高速缓冲存储器中,即使该数据为“冷”数据。高速缓存指 令(例如FLUSH指令)可使指定高速缓存条目从固态存储设备114 中刷新。高速缓存属性和/或指令可通过存储客户端(例如客户端 110a-c)经由接口来提供。例如,固态存储设备114可提供接口,客 户端通过该接口可指定数据保留在高速缓冲存储器(例如PIN属性) 中,从该高速缓冲存储器中删除(例如BLACKLIST或FLUSH)等。 在一些实施方案中,高速缓存清除决策可基于存储元数据316。如上 所述,存储元数据316可包括将高速缓存条目与固态存储设备114上 的相应存储单元关联的正向映像,每个高速缓存条目均包括相应逻辑 地址(或逻辑地址组或范围)。索引可用于维护存取模式元数据与相 应逻辑地址之间的关联数据(例如,树索引中的计数可追踪某些节点、 边或叶的访问频率,以及操作类型(读取、写入、剪裁))。甚至在基 础数据被移动至固态存储设备上时,也可保留这些关联数据(例如, 在存储分区恢复操作期间响应于修改,从第一存储单元移动至第二存 储单元等)。因此,在做出清除决策时,高速缓存控制器312(或其 它实体)可存取存储元数据316以获得相关存取模式元数据。

在一些实施方案中,高速缓存清除策略可基于空间和/或时间接 近性。空间接近性假定逻辑地址为“热”地址,则空间上接近的逻辑 地址也可能为“热”地址(即使尚未对其进行存取)。高速缓存条目 之间的“空间局部性”可在存储元数据316中得以维护(例如使用索 引或正向映像)。如上所述,存储元数据316的正向索引可将逻辑地 址与固态存储设备114的物理存储单元关联。所述逻辑地址可任意地 映射到存储单元,并由于异地写入和其它顺序存储操作,数据的物理 位置可随时间改变。因此,一同采用存储单元寻址来确定逻辑接近性 可能不可行。高速缓存控制器312(或其它实体)可存取存储元数据 316,以识别用于做出清除决策的空间接近性(例如在逻辑地址空间 中空间上接近“热”数据的数据可能次优选地被清除,而空间上不接 近“热”数据的数据可能更优选地被清除)。

在一些实施方案中,固态存储控制器115配置有在用于支持高速 缓存的固态存储设备114上可用的最大物理存储空间量。管理员(或 其它实体)在配置固态存储设备114时可提供该信息。在其它实施方 案中,高速缓存控制器312独自发现最大存储空间量(例如通过识别 固态存储设备114的物理存储容量)。最大占用率(和由此获得的阈 值)可随时间改变。例如,固态存储设备114的某些存储位置可变得 不可靠和/或失效,这可减少设备114的物理存储容量。因此可降低 最大占用率。在一些实施方案中,这些减少可对客户端透明(例如, 固态存储设备114可继续进行操作和/或向客户端提供相同的逻辑地 址空间)。或者,发出告知客户端(例如客户端110a-c)存储容量减 少的通知。类似地,固态存储设备114的物理存储容量可能增加(例 如,在添加附加固态存储介质时)。占用率阈值可根据附加存储容量 来调整。

使用最大占用率信息,高速缓存控制器312可获得指定最大数据 量的最大占用率阈值,高速缓存管理装置130可将该最大数据量高速 缓存在固态存储设备114中。在一些实施方案中,最大占用率阈值未 采用所有可用物理容量,相反可保留固态存储设备114的物理容量的 一部分,以进行维护操作,诸如对损坏或不可靠的存储单元进行的存 储空间恢复和/或代替。在一些实施方案中,高速缓存控制器312(或 其它实体)可动态确定最大占用率阈值。最大占用率阈值可基于元数 据117,诸如数据存取模式等。例如,如果固态存储设备114包括大 量“热”数据(如果将这些数据清除,可能会引起后续高速高速缓存 缺失),则可动态减小占用率阈值。反之,如果固态存储设备114包 括可清除且具有较低的后续高速高速缓存缺失概率的大量“冷”数据, 则可增加最大占用率阈值。作为另外一种选择或除此之外,固态存储 设备114可被配置为追踪元数据117中的高速缓存性能,以启发式地 确定理想阈值。例如,最近清除的高速缓存条目的较高高速高速缓存 缺失率可表明需要附加高速高速缓存空间(或应当调整高速缓存清除 策略)等。或者,如果高速高速缓存缺失率较低,则可减小阈值,并 且可鉴于其它目的来采用固态存储设备的过量存储空间(例如作为另 一个后备存储器的高速缓冲存储器、作为存储空间等)。

最大占用率阈值可例如为由固态存储设备114提供的存储量与 软件占用的存储量或固态存储设备114使用和存储在其上的其它数 据之差。在其它实施方案中,最大占用率阈值可为可用于固态存储设 备114中的存储量的某个百分比。在一些实施方案中,根据性能标准 诸如服务质量(QOS)属性等,通过固态存储设备114来确定最大占用 率阈值。可根据要求、工作优先级或管理控制来动态修改最大占用率 阈值。其它标准也可用于调整、调谐或以其它方式改变最大占用率阈 值。在一些实施方案中,固态存储设备114可提供可设置占用率阈值 的接口。作为另外一种选择或除此之外,所述接口可允许客户端设置 可确定最大占用率阈值的一个或多个高速缓存属性和/或指令(例如 QOS、PIN、BLACKLIST等)。

在一些实施方案中,高速缓存控制器312查询元数据117以确定 固态存储设备114上可用的剩余物理存储容量,从而确保固态存储设 备114未超出最大占用率阈值。高速缓存控制器312(或其它模块) 可在每次将数据插入固态存储设备114之前使用元数据117来确定剩 余物理容量。在其它实施方案中,高速缓存控制器312可根据固态存 储设备114中保留的物理存储容量以不同频率进行该确定。例如,如 果固态存储设备114可使其物理存储容量中超过一半的容量可用,则 高速缓存控制器312在每次插入之前可能不会查询剩余物理存储容 量;高速缓存控制器312相反可在进行确定之前等待直到已进行一定 数量的高速缓存插入。随着固态存储设备114日益变满,确定剩余物 理存储容量的查询的频率可增加至高速缓存控制器312在每次插入 固态存储设备114之前查询的点。

在一些实施方案中,一旦固态存储设备114达到如通过最大占用 率阈值限定的最大占用率,则高速缓存控制器312防止对固态存储设 备114进行任何高速缓存插入,直到附加存储容量可用。高速缓存控 制器312可允许对固态存储设备114中的数据进行读取,甚至在固态 存储设备114达到最大占用率时。固态存储设备114由此可确保固态 存储设备114未过满,并且为存储在固态存储设备114内的数据提供 保护。

在一些实施方案中,高速缓存控制器312也限定了限定固态存储 设备114上使用的物理存储容量的目标占用率阈值。在一些实施方案 中,一旦固态存储设备114已达到目标占用率阈值,则高速缓存控制 器312可采取动作来提高将数据从固态存储设备114中清除的速率。 在一些实施方案中,一旦达到目标占用率阈值,则高速缓存管理装置 130仅开始将数据从固态存储设备114中清除。在其它实施方案中, 当达到目标占用率阈值时,高速缓存控制器312可提高备份引擎314 的优先级(例如,配置备份引擎314以作为前台进程来操作,或以其 它方式增加分配给备份引擎314的优先级和/或相对带宽)。在此类实 施方案中,备份引擎314作为后台进程来操作(例如,通过向备份引 擎314提供较低优先级或较低带宽分配),直到达到目标占用率阈值。 当前物理存储容量、阈值等可在元数据117中得以维护,以供高速缓 存控制器312和/或疏导器310存取。

如上所述,元数据117可包括存储元数据316,存储元数据316 可包括有效性映像。如本文所用,映像可指将唯一键的集合与各个值 关联的任何关联数据结构。在映像中查找唯一键可返回关联值。有效 性映像可将固态存储设备114的存储单元与有效性指示符关联,所述 有效性指示符指定与该单元关联的数据为有效或无效数据。有效性指 示符可为有效性映像中的位,其中一种状态表示有效数据而另一种状 态表示无效数据。有效性映像316可为位映像、表、列表或本领域中 已知的其它数据结构。例如,有效性映像可为适于管理极大且可能群 体稀疏的域(诸如地址空间)的数据结构,其包括仅有效或无效存储 单元(和/或存储单元组或范围)的表示。例如,有效性映像可包括 包括有效数据的各存储单元的条目的稀疏数组。无效性可来源于有效 性映像(如果位置不位于有效性映像中,则位置为无效)或反之亦然。

固态存储设备114的单元或存储单元可指固态存储介质320上的 可寻址的物理存储单元。在一些实施方案中,元数据117可维护逻辑 块地址(LBA)与存储单元具有一比一的比例;即一个LBA可与一个 存储单元或单元关联。作为另外一种选择或除此之外,LBA(或索引 节点)可与存储单元的长度或范围关联。在一些实施方案中,存储单 元为通过固态存储介质320中的物理块地址(“PBA”)寻址的物理块, 固态存储介质320可包括闪速存储器或其它非易失性存储介质。在另 一个实施方案中,存储单元可指硬盘驱动器上的柱面磁头扇区 (“CHS”)位置。存储单元的性质可根据固态存储设备114使用的特定 存储介质而变化。固态存储设备114可同时支持多种类型的存储单 元。

在有效性映像316中标记为有效且与固态存储设备114的存储单 元关联的数据可保留在固态存储设备114上,而与无效单元关联的数 据(经标记和/或推断)可从固态存储设备114中删除。无效存储单 元可为存储分区收回过程(例如无用单元收集)中用于删除的候选物。 待恢复的存储分区中的有效数据可通过将有效数据写入固态存储设 备114的其它存储分区而保留在固态存储设备114上。

高速缓存元数据316可包括可丢弃性映像,其可包括位映像、表、 列表或本领域中已知的其它数据结构。可丢弃性映像可将固态存储设 备114的存储单元与可丢弃性指示符关联,所述可丢弃性指示符指定 与该单元关联的数据是否可丢弃或不可丢弃。如果与所述单元关联的 数据已存储在后备存储器118中,则其为可丢弃数据。如果与所述单 元关联的数据未存储在后备存储器118中,则其通常不可丢弃。

在图3的实例中,存储元数据316和高速缓存元数据318在相同 的数据结构(元数据117)中实施。例如,有效性映像和可丢弃性映 像可在单个映像中实施,其中一位表示有效性并且二位表示可丢弃 性。然而,在一些实施方案中,存储和高速缓存元数据316和318可 作为单独的数据结构来实施。在此类实施方案中,一个数据结构的单 次读取可确定特定存储单元的有效性状态和可丢弃性状态。例如,有 效性指示符可为组合映像的一列,并且可丢弃性指示符可为组合映像 的另一列。

高速缓存管理装置130可包括备份引擎314,备份引擎314可被 配置为使用元数据117来识别高速缓存条目以备份在后备存储器118 上。备份引擎314可使在存储元数据316中标记为有效并且在高速缓 存元数据318中标记为不可丢弃的存储单元存储在后备存储器118 上。后备存储器118存储所述数据,使得可将其从后备存储器118中 正确地检索出来。例如,备份引擎314可使用元数据117来识别标记 为有效和不可丢弃的存储单元。与所述单元关联的数据可包括LBA 和对应于该LBA的数据(如存储在固态存储介质320上)。备份引擎 314可读取所述数据并且使该数据存储在后备存储器118上。因此, 对于LBA而言,指向后备存储器118的未来读取请求正确地接收与 该LBA关联的数据。在确定所述数据已成功存储在后备存储器118 上之后,备份引擎314可将存储单元标记为可丢弃。

在一些实施方案中,备份引擎314作为固态存储设备114上的后 台进程来操作。因此,备份引擎314可以低优先级运行并且仅消耗固 态存储设备114上的备用周期和带宽。在一些实施方案中,高速缓存 控制器312可提高备份引擎314的优先级或以其它方式将备份引擎 314移动到前台中。在一些实施方案中,当固态存储设备114达到目 标占用率阈值时,高速缓存控制器312提高备份引擎314的优先级。 当固态存储设备114接近最大占用阈值时,高速缓存控制器312还可 提高高速缓存控制器312的优先级。在一些实施方案中,一旦固态存 储设备114达到最大占用阈值,则高速缓存控制器312向备份引擎 314提供最高优先级,其前提是固态存储设备114中不存在标记为可 丢弃的单元,或者在固态存储设备114中标记为可丢弃的单元不充 足。

在一些实施方案中,备份引擎314从固态存储设备114中与最早 的数据关联的单元开始并且通过固态存储设备114中的单元按时间 顺序进行备份操作,如结合图9更详细地讨论。如上所述,备份引擎 314可能不会备份与在元数据117中标记为无效的存储单元关联的数 据,而与相应的可丢弃性指示符的状态无关。一旦与存储单元关联的 数据存储在后备存储器118中,则备份引擎314更新元数据117以将 可丢弃性指示符从不可丢弃改变为可丢弃。在改变可丢弃性指示符之 前,备份引擎314可等待后备存储器118来确认所述数据已成功存储 在后备存储器118中。在一些实施方案中,备份引擎314可向疏导器 310指示固态存储设备114的特定存储区已被备份且可丢弃。在相关 实施方案中,备份引擎314可向疏导器310指示该存储区的寿命,从 而能够使疏导器310收回该存储区,而无需任何进一步的数据移动。

元数据117可包括指示符(例如日志)以追踪固态存储设备114 的存储单元中的数据的存储时间。所述元数据可包括将数据写入特定 存储单元和/或从特定存储单元读取数据时的指示符。2007年12月6 日提交的名称为“Apparatus,System,and Method for Managing Data  Using a Data Pipeline”的美国专利申请No.11/952,091(David Flynn等 人)描述了一种将数据连续地存储在固态存储设备内的方法,该专利 据此以引用方式并入。在该设备中,将数据存储在存储单元中的顺序 可在大多数情况下来源于存储设备中数据的顺序,从而与那些存储单 元关联的数据的存储时间也是如此。在其中固态存储设备114连续地 存储数据的实施方案中(如上述申请所述),高速缓存控制器312可 根据将所述单元存储在固态存储设备114中的顺序和/或与存储单元 的存储分区关联的顺序指示符来获得关于数据的存储时间的信息。在 此实施方案中,高速缓存管理装置130可获得或估算数据的存储时 间,而不会在内存和计算上产生维护单独的日志以追踪写入时间的关 联费用。

在一些实施方案中,元数据117可用于追踪固态存储设备114的 特定单元中的数据的读取次数。元数据117也可包括发出那些读取时 的指示符。该元数据117可通过固态存储控制器115、疏导器310或 固态存储设备114的其它进程来维护。高速缓存控制器312可存取元 数据117以追踪特定存储单元的上次读取的发出时间(确定最近最少 使用的存储单元)。作为另外一种选择或除此之外,高速缓存控制器 312可使用元数据117来追踪存储单元的存取模式,并且考虑存取频 率或时限以确定特定单元是否包含热或冷数据。

图4示出了存储客户端(例如文件系统210)、用作高速缓存设 备的固态存储设备114和用作后备存储器118的硬盘驱动器之间的交 互的示例性实施方案。所述系统上的其它变型以及其它介质也可在替 代实施方案中实施。

当文件系统210使数据存储在永久性存储器中(例如作为文件) 时,其通常会确定待使用的一个或多个适当的LBA。文件系统210 可从不具有与其关联的数据的可用LBA的池中选择LBA。例如,当 文件系统210写入数据D时,文件系统选择LBA,诸如数据D的LBA 0。文件系统将数据D写入用作固态存储设备114的固态存储设备。 在一些实施方案中,如上所述,文件系统210与由固态存储设备114 提供的逻辑空间进行交互,并且未意识到存在固态存储设备114。

所述固态存储设备具有被初始化和备用的存储单元402。固态存 储设备114可存储将LBA与固态存储设备114上的存储单元关联的 元数据。存储单元402在固态存储设备114上可寻址;在一些实施方 案中,存储单元402的地址为物理块地址(“PBA”)。在特定实施方案 中,LBA与PBA在固态存储设备114中存在一对一映射。

在元数据117中,存储单元402可与有效性指示符(由“有效” 列表示)和可丢弃性指示符(由“丢弃”列表示)关联。在一些实施 方案中,所述元数据可为“稀疏”元数据,其仅包括存在有效数据的条 目。因此,有效性指示符可通过其包括在元数据117中来推断(例如 如果LBA和/或存储单元位于该元数据中,则存储单元包括有效数据; 否则,存储单元包括无效数据)。在一些实施方案中,存储单元402 可通过将存储单元402的物理地址(例如PBA)用作键(例如在上 述倒排索引中)来映射到有效性指示符和可丢弃性指示符。

当固态存储设备114从文件系统210接收写入请求时,固态存储 设备114选择将存储该请求中引用的数据的初始化单元(诸如存储单 元402)。所述请求可包括所述数据,可包括所述数据的一部分和/或 可基本上不含所述数据。如上所述,可根据顺序写入机构来选择存储 单元402。例如,元数据117可维护引用“下一个”可用存储单元的 一个或多个追加点(未示出)。因为数据被写入固态存储设备114, 所以追加点可按顺序递增至固态存储设备114的下一个存储单元。该 顺序写入尤其可提供耗损均衡有益效果并且可降低写入放大率。

固态存储设备114将存储请求的数据(例如逻辑地址LBA 0和数 据D)存储在选定的存储单元402中,并因此更新元数据117。更新 元数据117可包括更新索引410以将LBA 0与存储单元402的引用(例 如物理地址)关联。所述更新可包括将叶节点添加至B树或其它正 向映像数据结构。所述条目可通过LBA(LBA 0)来索引,以能够快速 有效地将LBA与存储单元关联。

更新元数据117还可包括设置存储单元402的有效性和可丢弃性 指示符。在图4中,这些操作以“SSD事件的添加行”列表示,该列 显示了逻辑地址LBA 0,其与数据“D”(在正向和/或倒排索引中)关 联,并且将存储单元402的有效性指示符设置为“1”(例如有效)且 将可丢弃性指示符设置为“0”(不可丢弃)。可丢弃性指示符被设置为 “0”(不可丢弃),因为数据D尚未被备份到后备存储器(例如硬盘驱 动器)中,并且在未将数据D备份到硬盘驱动器的情况下将其从固 态存储设备114中删除会导致数据丢失和/或损坏。

如图4所示,客户端(例如文件系统210)可修改数据D。更新 的数据可由D’表示。所述更新可包括文件系统210(或某个其它实体) 修改数据D(或进行对数据D进行修改的另一个操作)。文件系统210 可发出存储请求,以将修改的数据D’存储在LBA 0。在一些实施方 案中,文件系统210意识到存在固态存储设备114(非透明性高速缓 冲存储器);在其它实施方案中,文件系统210未意识到固态存储设 备114,并且更新请求通过固态存储设备114透明地处理。

响应于存储请求,固态存储设备114可将修改的数据D’按顺序 写入固态存储介质。如上所述,顺序存储可包括将修改的数据D’“异 地”存储在固态存储设备的不同存储单元。顺序写入尤其可提供耗损 均衡有益效果,并且可降低写入放大率(例如,将修改的数据D’存 储在相同存储单元402上可能需要擦除存储单元402的存储分区并且 连同该存储分区上的其它有效数据一起写入D’)。

存储修改的数据D’可包括固态存储设备114选择“下一个”存 储单元(存储单元404)以存储修改的数据D’。可根据上述顺序存储 机构进行选择(例如可为一个或多个追加点上的“下一个”存储单元)。 可更新与存储分区402有关的元数据117,以表明该数据不再有效, 并且可丢弃(或处于无关状态)。可更新将逻辑地址与存储单元关联 的元数据117,以将LBA0与选定的存储分区404关联。另外,可更 新与选定的存储单元404有关的元数据,以表明存储单元404包括有 效的不可丢弃数据。图4示出了更新1的数据D’被写入存储单元404, 并且如前所述,有效性指示符被更改以表明单元404中的数据D’为 有效和不可丢弃数据。

疏导器310可在某个点查看单元402的有效性指示符,设法将其 设置为无效,并且对单元402进行无用单元收集操作(GC 1)。无用单 元收集操作可使存储单元402回到初始化状态,此时单元402可再次 用于存储数据。

图4还示出了对单元404中的数据D’进行备份操作(BU 1)的固态 存储设备114。在一些实施方案中,备份引擎314进行所述备份。备 份引擎314使数据D’以逻辑地址LBA 0和数据值D’存储在硬盘驱动 器中。备份引擎314可将通过数据D’来寻址LBA 0的写入请求发送 至硬盘驱动器。在一些实施方案中,备份引擎314等待以下确认,在 将丢弃性指示符从不可丢弃改变为可丢弃(设置为“1”)之前,硬盘 驱动器已将D’成功保存在LBA 0。硬盘驱动器可在LBA与数据D’ 的物理地址(例如LBA 0与特定CHS)之间进行其自身的内部关联。

在一些实施方案中,以对文件系统透明的方式进行备份操作;即, 文件系统未意识到数据D’现位于固态存储设备114和硬盘驱动器中。 类似地,可对文件系统进行透明的疏导操作,诸如GC 1。

图4示出了由文件系统210(或其它实体)针对LBA 0生成的附 加更新2,该更新将数据改变为D”。如同单元402,作为响应,固态 存储设备114将单元404在元数据117中标记为无效。因为单元404 被识别为无效,所以可丢弃性指示符可能会或可能不会改变;并且与 可丢弃性指示符的状态无关,因为疏导器310将对单元404进行无用 单元收集(在GC 2示出),并且单元404连同有效性映像和可丢弃性 映像中的条目将被初始化使得单元404可再次用于存储新数据。

更新2也使LBA 0和数据D”按顺序写入新单元406,这如上所 述将有效性指示符设置为有效。因为数据D”未被移动至硬盘驱动器 且未以其它方式存在于硬盘驱动器中,所以将可丢弃性指示符设置为 不可丢弃。更新2还可包括修改元数据117的索引410,以将LBA 0 与存储单元406关联。一旦备份引擎314将数据D”刷新至硬盘驱动 器(如同所示)(BU2),则将可丢弃性指示符改变为可丢弃。

文件系统也可向用作固态存储设备114的固态存储设备发出 TRIM命令。TRIM命令使文件系统向固态存储设备(诸如固态存储 设备114)告知不再使用的数据存储单元(逻辑块地址)。这确保了 固态存储设备114知道在使用的存储单元和未使用的存储单元,并且 确保了固态存储设备未保留文件系统知道不再需要和/或为无效的数 据。目前将TRIM命令说明作为由技术委员会T13引导的AT嵌入式 (“ATA”)接口标准的一部分而标准化。

如图4所示,在一些实施方案中,文件系统确定删除与LBA 0 (诸如文本文件)关联的数据D”并将LBA 0添加至可用池。文件系 统(或其它实体)可将包括TRIM命令的存储请求发送至固态存储设 备114。固态存储设备114接收TRIM命令,并且在一些实施方案中, 通过无效SSD事件进行响应,该无效SSD事件将保存数据的受影响 单元(诸如单元406)标记为无效。然后,固态存储设备114可在稍 后的时间执行无用单元收集操作GC 3,从而恢复单元406以备将来 使用。TRIM还可包括更新元数据117的索引410以删除LBA 0的条 目(例如将表示LBA 0的叶节点从B树中删除)。

在一些实施方案中,用作固态存储设备114的固态存储设备可能 不支持TRIM。在一些实施方案中,固态存储设备114和后备存储器 118均可支持TRIM。在此类实施方案中,固态存储设备114可执行 TRIM命令,然后将TRIM命令传至后备存储器118,如图4所示。 在其它实施方案中,固态存储设备114和后备存储器118之一可支持 TRIM,而另一个则不支持。在此类实施方案中,固态存储设备114 和后备存储器118可被配置来使得其忽略TRIM命令。在其它实施方 案中,支持TRIM的设备可执行TRIM命令并从另一个中隐藏TRIM 命令。

在相关实施方案中,固态存储设备114可维护后备存储器118中 的LBA已被剪裁的指示符,并且利用该信息来正确响应于客户端文 件系统,即使HDD不支持TRIM。因此,例如,即使剪裁的LBA的 数据仍然存在于硬盘驱动器上,试图将数据以剪裁的LBA存取在硬 盘驱动器上的操作也会受固态存储设备114阻碍。固态存储设备114 也可重写或以其它方式处理与HDD上的LBA有关的数据,以确保 所述数据不可恢复。固态存储设备114可从文件系统和HDD的角度 透明地进行这些操作。

图5示出了处理读取存取请求的系统的一个实例。如图5所示, 文件系统可能已分配LBA 1来保存数据A并且已存储该数据。图5 示出了数据A与硬盘驱动器中的LBA 1关联,但不存在于固态存储 设备114中。文件系统210发出LBA 1处的数据读取。在一些实施方 案中,固态存储设备114接收读取请求,并且确定与LBA 1关联的数 据A未存储在固态存储设备114中(这被解释为缺失,如图5所示)。 在一些实施方案中,固态存储设备114通过试图在与LBA 1关联的单 元上读取数据来确定数据A不存在于固态存储设备114中。固态存 储设备114可例如试图使用元数据117(具体地讲,索引410)来存 取LBA 1。如果LBA 1在索引410中无条目,则固态存储设备114 可产生可被解释为高速高速缓存缺失的错误。因为元数据117可通过 LBA(在B树数据结构中)来索引,所以可迅速有效地进行该确定。

响应于高速高速缓存缺失,固态存储设备114将读取请求重新指 向存取LBA 1处的数据A的硬盘驱动器。从硬盘驱动器中检索数据 A并且使数据A返回到文件系统210。固态存储设备114的高速缓存 控制器312也执行注入SSD事件(注入1),以将数据A连同逻辑地 址LBA 1一起存储在选定的存储单元502中。固态存储设备114可更 新元数据117,以将索引410中的LBA 1与存储单元502关联。

如图5所示,响应于读取2,固态存储设备114从单元502中检 索数据A,因为读取2为高速高速缓存命中。固态存储设备114使数 据A返回到文件系统210以作为对读取请求2的响应。固态存储设 备114可迅速有效地确定对应于LBA 1的数据在固态存储设备114 上可用,并且使用元数据117(索引410)来识别包括所述数据的存 储单元502。

当数据A存储在单元502中以作为注入1操作的一部分时,固 态存储设备114将有效性指示符设置为有效并且还将可丢弃性指示 符设置为可丢弃,以反映数据A已正确地存储在硬盘驱动器中的LBA 1中并与该LBA 1关联。因此,可将数据A从固态存储设备114中删 除,而不会造成数据损坏。例如,在固态存储设备114上操作的高速 缓存管理装置可应用清除策略并确定应当清除数据A(例如根据存取 模式、疏导考虑因素等)。因为可丢弃性指示符在元数据117中被设 置为“1”,所以可进行清除,而无需在清除之前在单元502上备份。

图5还示出了发出更新1的文件系统210,更新1将与LBA 1关 联的数据从A改变为A’。如前所述,固态存储设备114使用无效性 映像将单元502标记为无效,并且疏导器310进行无用单元收集操作 GC 1以初始化单元502使得其可供将来使用。另外,固态存储设备 114将LBA 1和数据A’存储在新单元504中,并且将无效性指示符设 置为有效且将可丢弃性指示符设置为不可丢弃。可更新元数据117的 索引410,以将LBA 1与存储单元504关联,如上所述。固态存储设 备114在备份操作BU 1期间将数据A’存储至硬盘驱动器并且将可丢 弃性指示符设置为可丢弃。

图5还示出了在清除SSD事件(清除1)中从固态存储设备114 中清除的数据A’。在一些实施方案中,清除1操作对文件系统透明。 固态存储设备114可清除数据A’,其前提是高速缓存控制器312确定 该数据已变冷;例如,文件系统210在预定时段可能未读取数据A’。 在一些实施方案中,高速缓存控制器312通过将有效性指示符设置为 无效来清除数据A’。所述清除还可包括删除索引410中LBA 1与存 储单元504之间的关联。所述删除可表明LBA 1的数据A’不再存储 在固态存储设备114上。

然后,固态存储设备114可对单元504进行无用单元收集,以将 单元504设置回初始化状态。在其它实施方案中,固态存储设备114 直接对单元504进行无用单元收集以作为清除进程的一部分,而非将 单元504置于在清除1处示出的中间状态。在其它实施方案中,即使 数据A’被标记为有效,疏导器310也会清除数据A’以作为疏导操作 的一部分,如以下更详细地讨论。

图6示出了用于配置存储设备以作为固态存储设备114来操作用 于后备存储器118中的方法600的一些实施方案。在一些实施方案中, 方法600的步骤可与特定机器部件,诸如固态存储设备、固态存储介 质、通信接口、处理器、存储器等相关。被配置为使机器实施方法 600的机器可读指令可存储在非瞬时性机器可读存储介质上,诸如非 易失性存储器、磁盘、光学介质等。

在一些实施方案中,客户端110a-c通过文件服务器210与固态 存储设备114通信。然而,本公开不限于该方面,并且客户端110a-c 可直接地和/或通过其它进程或实体(诸如数据库服务器、网络服务 器、存储协议等)与固态存储设备114通信。方法600从用户使固态 存储设备114可用于系统100中602和使后备存储器118可用于系统 100中604开始。

在一些实施方案中,在步骤606,固态存储设备可被配置为提供 与后备存储器118具有相同物理存储容量的逻辑地址空间。如果后备 存储器118具有比固态存储设备114的物理存储容量大的物理存储容 量,则固态存储设备114可被配置为支持稀疏编址,使得固态存储设 备114可提供大于固态存储设备114上的物理可用空间的逻辑地址空 间。例如,固态存储设备114可通过FUSION_SPARSEFS_SUPPORT 标志集来构建。在一些实施方案中,步骤606的配置可包括固态存储 设备,该固态存储设备提供超出固态存储设备114和后备存储器118 的物理存储容量的逻辑地址空间。

在步骤608,通过使固态存储设备114和后备存储器118存在于 所述系统中,固态存储设备114可被配置用作后备存储器118的高速 缓冲存储器。方法600也可包括设置最大占用率阈值610,最大占用 率阈值限定了可用作高速缓冲存储器的固态存储设备114上的最大 物理空间量。外部实体(例如管理员)可将最大占用率阈值提供给固 态存储设备114,或者高速缓存管理装置130可确定其本身的适当阈 值。

在步骤612,可如上所述来设置固态存储设备114的目标占用率 阈值(例如通过实体和/或固态存储设备114),然后方法600结束。 在一些实施方案中,高速缓存管理装置130试图将固态存储设备114 中的占用率保持在目标占用率阈值以下。高速缓存管理装置130可通 过在固态存储设备114超出目标占用率阈值时开始高速缓存清除做 到这点。

图7示出了用于将数据高速缓存在固态存储设备上的方法700的 示例性实施方案。如上所述,方法700的步骤可与特定机器部件相关 和/或可采用存储在非瞬时性机器可读存储介质上的机器可读指令来 实施。

方法700从固态存储设备114接收包括数据地址(诸如LBA) 的读取请求702开始。在步骤704,方法700确定与所述地址关联的 数据在固态存储设备114上是否可用。可使用由固态存储设备维护的 元数据117来进行该确定;具体地讲,使用包括逻辑地址与关联存储 单元之间的关联数据的索引来进行。如果所述地址存在于所述索引 中,则方法700可确定所述数据可用,并且该流程可继续至步骤706; 否则,该流程可继续至步骤710。

在步骤706,所请求的数据可存取在一个或多个存储单元上。所 述存储单元可在上述索引中识别。在步骤708,可更新与存储操作有 关的元数据,以反映数据存取。所述元数据可用于识别存取模式,诸 如“热”和/或“冷”逻辑地址,确定存取时间等。在一些实施方案 中,存储元数据可存取在疏导器310中以进行存储分区恢复操作和/ 或可存取在高速缓存管理装置130中以管理高速缓存操作(例如确定 清除策略)。然后可结束该流程。

在步骤710,方法700将读取请求重新指向后备存储器118中的 地址。高速缓存控制器312读取数据并使该数据返回到生成读取请求 的实体712。

高速缓存控制器312也将所述数据插入固态存储设备114中714 并将该数据与指定地址(在索引或其它元数据中)关联。在一些实施 方案中,按顺序和/或根据结合图8描述的写入方法写入所述数据。 在一些实施方案中,如果固态存储设备114中不存在未使用的存储单 元,则高速缓存控制器312不会将所述数据插入固态存储设备114中。

高速缓存控制器312也可更新元数据(索引),使得未来读取请 求可从固态存储设备114中检索所述数据,直到所述数据从固态存储 设备114中删除。另外,高速缓存控制器312更新元数据117,以表 明包括所述数据的存储单元有效且可丢弃。步骤716还可包括高速缓 存控制器312更新存入元数据,以指示将所述数据插入固态存储设备 114中的时间,然后方法700结束。在其它实施方案中,固态存储设 备114可按顺序存储数据,并且数据的存储时间由其在固态存储设备 114内的位置获得。

图8示出了用于将数据高速缓存在固态存储设备上的方法800的 示例性实施方案。如上所述,方法800的步骤可与特定机器部件相关 和/或可采用存储在非瞬时性机器可读存储介质上的机器可读指令来 实施。

高速缓存管理装置130可将固态存储设备114配置为回写式高速 缓冲存储器,其中数据首先被客户端写入固态存储设备114,然后被 移动至后备存储器118。方法800从高速缓存管理装置130接收写入 请求802开始。写入请求可引用待存储在永久性存储器中的数据。所 述请求可包括所述数据和/或可基本上不含所述数据。写入请求可与 逻辑地址(例如LBA)关联。

高速缓存控制器312确定是否存在在固态存储设备114上可用的 空间804。高速缓存控制器312进行该检查,以确保固态存储设备114 不超出其最大容量阈值。在一些实施方案中,高速缓存控制器312在 将数据写入固态存储设备114之前进行确定804。在其它实施方案中, 如上所述,确定804的频率不同。

所述确定可包括存取由固态存储设备114维护的元数据。所述元 数据可包括将逻辑块地址与存储单元关联的索引。被有效数据占用的 存储单元可能不可用于存储,而未被有效数据占用的存储单元可能可 用。所述元数据还可包括可将固态存储设备114的存储单元与相应有 效性/可丢弃性指示符关联的倒排索引。无效和/或可丢弃的存储单元 可被视为可用于存储。

如果存在可用于固态存储设备114的空间,则高速缓存控制器 312将所述数据写入固态存储设备114的单元并将该单元标记为不可 丢弃806。步骤806的写入可包括顺序存储操作,如上所述。顺序写 入可包括选择存储单元来存储所述数据(例如使用追加点或其它顺序 指示符),在选定的存储单元上写入所述数据,更新固态存储设备114 的元数据以将写入请求的逻辑地址与选定的存储单元关联等。

然后,备份引擎314可将所述数据备份到后备存储器118中使得 所述数据存储在后备存储器118中808。将存储单元备份可包括更新 固态存储设备的元数据,以表明这些存储单元可丢弃。备份引擎314 可以选定的优先级操作,因此可等待直到有利时机后才使所述数据备 份到后备存储器118中808。在步骤808之后,可结束方法800。

如果固态存储设备114上的数据不存在空间,则高速缓存管理装 置130暂停写入请求810,直到高速缓存管理装置130可为固态存储 设备114中的数据留出空间。在其它实施方案中,一旦在固态存储设 备114中产生足够的空间,则高速缓存管理装置130可使所述数据写 入后备存储器118,并且进行致使所述数据插入固态存储设备114的 读取操作。

在暂停写入请求810之后,高速缓存管理装置130可确定在固态 存储设备114中是否存在标记为可丢弃和/或无效(使用元数据117) 的存储单元812。所述检查还可包括评估有效/可丢弃元数据的“无关” 状态。在一些实施方案中,可保留不可丢弃存储单元,即使这些单元 被标记为无效(例如可保留以进行快照、备份等)。如果存在可丢弃 存储单元,则在一些实施方案中,高速缓存管理装置130查找可丢弃 单元并将其从固态存储设备114中清除820,并且返回以确定空间在 固态存储设备114上是否可用804。高速缓存控制器312可例如将可 丢弃的所有单元标记为无效。在另一个实施方案中,疏导器310可疏 导固态存储设备114,而无需将数据保存在标记为可丢弃的单元中。 如果在清除之后,固态存储设备114上存在空间,则将所述数据存储 在固态存储设备114中。

如果固态存储设备114中不存在可丢弃存储单元,则高速缓存管 理装置130可在高速缓冲存储器中查找在可丢弃性映像中标记为不 可丢弃的存储单元814并且将所述单元备份到后备存储器118中816。 在一些实施方案中,高速缓存管理装置130通过提高备份引擎314的 优先级来做到这点。一旦所述数据被移动至后备存储器118,则高速 缓存管理装置130更新元数据117以将所述单元标记为可丢弃818, 并且查找可丢弃单元并将其从固态存储设备114中清除820。高速缓 存管理装置130返回并再次确定空间在固态存储设备114上是否可用 804以写入所述数据。

图9a示出了对固态存储设备114的存储单元914至926进行备 份操作的备份引擎314的示例性实施方案。图9a示出了各自具有关 联的有效性指示符930a-g和可丢弃性指示符940a-g的存储单元914 至单元926。有效性指示符930a-g和可丢弃性指示符940a-g通过数 据结构(诸如包括高速缓存条目与存储单元的关联数据的映像)与相 应单元914-926关联。图9a示出了处于初始状态的单元,并且图9b 示出了在备份引擎314穿过单元914-926时的单元。

在一些实施方案中,按顺序写入单元914至926中的数据;在此 实施方案中,单元914至926在固态存储设备114上具有递增的物理 地址。例如,单元914可具有物理地址“0”,单元916可具有物理地 址“1”等。如果按顺序写入数据,则该数据被写入最低可用物理地址 处。当文件系统开始将数据“A”写入固态存储设备114时,其通过物 理地址0将数据“A”写入单元914,然后通过物理地址1将下一个数 据“B”写入单元916等。

在此类实施方案中,固态存储设备114上数据的物理组织可被用 作指示最早数据和最新数据的日志。例如,也许可以认为写入单元 914的数据早于写入单元920的数据。在其它实施方案中,日志为完 全地指定固态存储设备114中的数据相对于固态存储设备114中的其 它数据的存储时间(即通过使用时间戳)的数据结构,或以上两种情 况。在一些实施方案中,固态存储设备114上数据的物理组织结合日 志使用,以确定固态存储设备114中的单元的寿命。

如图9b所示,在一些实施方案中,备份引擎314通过将数据刷 新至后备存储器118来开始将数据备份在固态存储设备114中。在一 些实施方案中,备份引擎314从固态存储设备114中的最早数据开始 并且按时间顺序穿过固态存储设备114中的存储单元914-926,直到 其达到最当前的存储单元。在一些实施方案中,备份引擎314通过以 下步骤做到这点:按顺序穿过固态存储设备114中的存储单元 914-926,将一个单元中的数据备份到后备存储器118中,然后使物 理地址递增以移动至下一个单元。在其它实施方案中,备份引擎314 通过引用由固态存储设备114维护的元数据(例如倒排索引和/或日 志数据结构)按时间顺序穿过单元914-926。例如,备份引擎314可 从倒排索引或日志中的单元条目开始,将数据备份,移动至下一个条 目,并且继续如此直到读取整个日志,此时备份引擎314可返回到结 构的开始。

在一些实施方案中,备份引擎314首先使用元数据(例如倒排索 引或日志)来确定特定单元914-926的数据是否有效或无效,所述元 数据可包括有效性指示符930a-g,如上所述。如果有效性指示符 930a-g被设置为无效,则备份引擎314可选择不将所述数据备份在单 元914-926中。例如,如图9b所示,备份引擎314可从单元914,即 固态存储设备114中的最早单元开始,查看有效性指示符930a,并且 看到该有效性指示符被设置为无效。因为有效性指示符930a被设置 为无效,所以备份引擎314移动至下一个单元916,而无需备份与单 元914关联的数据A。因为可丢弃性指示符940a在单元914被视为 无效时未开始发挥作用,所以可丢弃性指示符940a可表示为“无关”; 即,当无效性指示符指示所述数据为无效时,该可丢弃性指示符的状 态与备份引擎314无关。

在图9b中,备份引擎314然后将有数据B的单元916存储在后 备存储器118中。有效性指示符指示数据B仍然有效。在一些实施方 案中,在确定数据B为有效之后,备份引擎314然后查看可丢弃性 指示符940b以确定数据B是否已备份到后备存储器118中。如果可 丢弃性指示符940b被设置为可丢弃,则备份引擎314移动至下一个 单元918,而无需将数据B存储在后备存储器118中,因为数据B已 存储在后备存储器118中。

如果可丢弃性指示符940b被设置为不可丢弃,则备份引擎314 可将数据B存储在后备存储器118中。在一些实施方案中,备份引擎 314针对数据B启动指向后备存储器118的写入请求。在一些实施方 案中,如前所述,所述数据包括该数据和与该数据关联的LBA。在 此类实施方案中,备份引擎314可从单元916中的数据中提取LBA 并且请求将数据写入后备存储器118中的该LBA。

图9a示出了单元916中的数据B最初为不可丢弃。当数据B被 写入后备存储器118时,备份引擎314更新元数据以将可丢弃性指示 符940b改变为可丢弃(图9b中的“1”),如图9b所示。在一些实施 方案中,备份引擎314等待后备存储器118确认,在改变可丢弃性指 示符之前,数据B已成功备份。在一些实施方案中,如果备份引擎 314在某个时段内未接收到确认,则备份引擎314进行重试以将所述 数据保存至后备存储器118。当数据B成功备份到后备存储器118中 并且可丢弃性指示符940b被设置为可丢弃时,备份引擎314移动至 固态存储设备114中的下一个单元,诸如单元918。

如上所述,备份引擎314可确定单元918中的数据C为无效, 并因此继续移动,而无需将数据C备份。然后,备份引擎314可将 数据D备份在单元920中并且将可丢弃性指示符940d改变为可丢弃。

在某些情况下,备份引擎314可能会遇到有标记为有效和可丢弃 的数据C的单元,诸如单元924。如果可丢弃性指示符940f被设置 为可丢弃(表明数据C已备份),则备份引擎314可移动至下一个单 元,而无需将数据C备份。

在一些实施方案中,备份引擎314继续扫描固态存储设备114中 的单元914-926。在其它实施方案中,备份引擎314完成对固态存储 设备114中的单元914-926的循环遍历并且在开始第二次迭代之前等 待一段时间。在一些实施方案中,备份引擎314用作固态存储设备 114上的后台进程并且在备用周期(是否CPU周期、总线周期或其它) 可用时操作。也可向备份引擎314提供设定时间表;例如,管理员可 配置固态存储设备114,使得备份引擎314在某个时间(例如在流量 低的夜间)进行备份操作。

在一些实施方案中,备份引擎314将搜寻有效性和可丢弃性指示 符以确定需采取动作的情况,并且将资源可用时待执行的备份活动和 命令排队。例如,备份引擎314可查看图9的逻辑,但实际上未执行 任何命令;相反,备份引擎314可确定特定单元可能需要的动作,将 那些动作添加至列表,并且移动至下一个单元。这样,备份引擎314 可在其抓取固态存储设备114上的单元和关联映像时编译动作列表。 另一个进程可从上述列表中异步拉出动作和/或命令并且将其执行。

备份引擎314可根据与所述存储单元关联的元数据117使备份操 作优先化。例如,元数据117可指示包括不可丢弃数据的存储单元具 有高耗损均衡性和/或高出错率。根据元数据117,备份引擎314可提 高所识别存储单元的备份的优先级。提高所述优先级可包括在队列前 面插入备份操作,跳过不可丢弃存储单元的其它备份等。

在一些实施方案中,如上所述,高速缓存控制器312可提高备份 引擎314的操作的优先级。例如,高速缓存控制器312可向备份引擎 314提供最高优先级,其前提是固态存储设备114已满并且固态存储 设备114中不存在标记为可丢弃的单元914-926(或单元914-926不 够)。在一些实施方案中,当固态存储设备114开始填充并且固态存 储设备114上的可用存储空间减少时,高速缓存控制器312可逐步提 高备份引擎314的优先级。

在一些实施方案中,可在有利时机调用备份引擎314,以补充时 间备份进程。备份引擎314可被配置为按时间顺序穿过固态存储设备 114中将可用的单元,以在有利时机从顺序中调用。例如,当数据被 读取且备份资源可用时,固态存储设备114可调用备份引擎314以将 该数据备份在一个或多个单元中。读取可通过存取所述数据的客户端 来启动。读取可通过疏导器310来启动,同时进行无用单元收集,擦 除数据,从损坏或失效的块中恢复数据,或进行其它疏导操作。

读取可通过重复数据删除进程来启动。读取也可通过RAID重建 或渐进RAID操作来启动,如2007年12月6日提交的名称为 “Apparatus,System,and Method for Reliable,High Performance Storage  of Data with Progressive RAID”的美国专利申请No.11/952,115(David  Flynn等)中所描述,该申请据此全文以引用方式并入。备份引擎314 可结合其它进程来运行以减少系统开销。本领域的技术人员将认识到 有可能用于启动备份的其它进程。

备份引擎314也可通过疏导器310来调用。在一些实施方案中, 疏导器310调用备份引擎314以释放存储分区(例如固态存储设备 114的擦除块)。例如,疏导器310可存取元数据117以确定特定存 储分区包含大量不可丢弃数据并且这些数据为冷数据。疏导器310可 调用备份引擎314来备份特定擦除块的单元,然后疏导该擦除块,以 将新的可丢弃单元视为好似它们无效,从而释放固态存储设备114上 的空间。

图10示出了使用与高速缓存操作有关的元数据来进行疏导的疏 导器310的方法1000的示例性实施方案。如上所述,方法800的步 骤可与特定机器部件相关和/或可采用存储在非瞬时性机器可读存储 介质上的机器可读指令来实施。

疏导器310可进行所述操作以执行图10中列出的决策,或者可 调用其它程序或进程来卸载这些操作中的一些或全部。方法1000从 疏导器310访问存储分区以进行疏导操作1002开始。在一些实施方 案中,疏导操作可为无用单元收集操作。在其它实施方案中,疏导操 作可为数据移动(由于读取或写入干扰)、消除碎化、刷新或其它数 据疏导操作。在一些实施方案中,在访问存储分区以进行疏导操作时, 疏导器310使用元数据(例如有效性指示符)来确定固态存储设备 114的哪些存储单元包含有效数据1004。在存储分区恢复操作中,被 识别为在有效性映像中包含无效数据的那些存储单元中的数据未移 动至新擦除块。因此,当初始化擦除块(例如写入所有页面的时间为 1s)时,将无效数据擦除。

然后,疏导器310存取元数据117以识别包含有效数据的存储单 元是否包含可丢弃数据1006(例如使用可丢弃性映像)。在一些实施 方案中,将被疏导器310确定为不可丢弃的那些单元移动至新存储分 区1010以作为疏导操作的一部分,然后方法1000结束。疏导器310 最初可将有效和不可丢弃数据移动至缓冲区,以准备将所述数据移动 至新存储分区。在一些实施方案中,疏导器310也可调用备份引擎 314以将所述数据备份在这些单元中,使得所述单元可丢弃。在一些 实施方案中,疏导器310可调用备份引擎314并且暂停疏导操作直到 备份引擎314将所述数据移动至后备存储器118。然后,疏导器310 可在完成备份操作之后恢复操作,并且将新的可丢弃单元视为可丢弃 数据。

如果疏导器310确定特定单元可丢弃1006,则疏导器310可进 行关于与可丢弃单元关联的数据是否可清除(例如为冷数据)的确定 1008。可通过高速缓存管理装置130尤其使用与在固态存储设备114 上进行的存储操作有关的元数据(诸如存取模式、频率等)来进行该 确定。如果疏导器310确定所述数据可清除1008,则疏导器310不 会将该数据移动至新擦除块1012,然后方法1000结束。如果疏导器 310确定所述数据不为冷数据1008,则疏导器310将该数据移动至新 擦除块1010,然后方法1010结束。

在一些实施方案中,疏导器310可假定已备份并由此将可丢弃性 指示符设置为可丢弃的所有单元均为冷单元。在此类实施方案中,在 疏导操作期间未移动将可丢弃性指示符设置为可丢弃的所有单元。此 实施方案可使疏导器310积极地收回固态存储设备114中的空间,并 且在固态存储设备114处于或接近最大容量时可特别有用。另外,在 其中备份引擎314按时间顺序进行备份操作的实施方案中,可以合理 地假设到,至少从写入角度来看,被标记为可丢弃的单元包含冷数据, 因为较早的数据比较新的数据更可能被标记为可丢弃。

在其它实施方案中,疏导器310可使用元数据117来进行关于各 存储单元是否可清除(按照高速缓存管理装置130的高速缓存策略 等)的确定。在一些实施方案中,疏导器310进行关于各存储单元的 可清除性确定并且类似地处理一组连续的单元。例如,与逻辑地址范 围(例如索引或B树中的特定节点)关联的一组存储单元可作为一 组来清除(或保留)。疏导器310可执行确定可清除性所需的指令, 可咨询另一个实体(诸如高速缓存控制器312)关于哪些单元包含冷 数据。

在一些实施方案中,高速缓存控制器312可存取与存储操作有关 的元数据,以确定包含冷数据的存储单元和包含温数据的存储单元。 在一些实施方案中,元数据117包括读取日志(或时间戳)以追踪存 储单元(或逻辑地址)上的读取以及存储单元中的写入,并且在确定 所述单元中的数据是否为冷数据中也考虑了这些读取。高速缓存控制 器312可将位于日志开端的任何数据视为冷数据,并且一旦该数据被 备份到后备存储器118中,则可将其清除。

在一些实施方案中,高速缓存控制器312未将数据视为冷数据, 直到达到目标占用率阈值。因此,虽然固态存储设备114的已使用存 储低于目标占用率阈值,但高速缓存控制器312可选择不从固态存储 设备114中清除任何数据。在此类实施方案中,备份引擎314仍然可 对数据进行备份操作;然而,高速缓存控制器312可指示疏导器310 以将使可丢弃性指示符设置为可丢弃的数据视为非冷数据,直到达到 目标占用率阈值。一旦达到目标占用率阈值,则高速缓存控制器312 可指示疏导器310来处理将可丢弃性指示符设置为可丢弃的数据。

在一些实施方案中,高速缓存控制器312可具有用于确定数据是 否为冷数据的多个标准。例如,高速缓存控制器312可将早于某个时 段(例如4小时)的任何数据视为冷数据和用于清除的候选物,而与 固态存储设备114的占用率无关。一旦达到目标占用率阈值,则高速 缓存控制器312也可具有用于将数据指定为冷数据的新规则,如上所 述。

在一些实施方案中,高速缓存控制器312根据参数来动态修改关 于将哪些数据视为冷数据的规则。例如,高速缓存控制器312可以知 道存在高写入工作量的时间,并且通过增加被视为冷数据的数据量 (由此清除)来准备固态存储设备114,从而释放固态存储设备114 上的空间。高速缓存控制器312可在每天结束时排空固态存储设备 114,使得每天均以空的固态存储设备114开始。

在一些实施方案中,高速缓存控制器312可指示备份引擎314将 存储单元的数据备份到后备存储器118中(只有当该单元的数据为冷 数据时)。高速缓存控制器312可采用与如上所述的那些类似的方法 来确定冷数据。在此实施方案中,疏导器310可假定将可丢弃性指示 符设置为可丢弃的所有单元均为冷单元。

在一些实施方案中,来自不止一个存储单元的数据将成为逻辑数 据单元的一部分。这些逻辑-存储单元关联数据可在元数据117中(例 如在正向和/或倒排索引中)得以维护。例如,特定文件可能过大而 不能存储在单个存储单元中;因此,该文件可存储在多个存储单元中, 其中固态存储设备114中的存储单元各自对应于唯一的存储单元 LBA。如果高速缓存控制器312可访问描述环境信息(诸如映像)的 元数据,其中该环境信息指定LBA中的数据如何相关(由此指定各 单元中的数据如何相关),则备份引擎314和高速缓存控制器312可 以逻辑级来操作,以能够进行更有效的操作。

例如,备份引擎314可备份特定单元的数据,确定固态存储设备 114中是否存在将作为同一逻辑数据单元的一部分的内容保存的附加 存储单元,并且同样备份那些存储单元。类似地,如果疏导器310确 定特定存储单元包含有效、可丢弃和冷的数据,则疏导器310可使用 环境信息来确定包含关联数据的其它单元。在一些实施方案中,疏导 器310确保包含关联数据的存储单元也已备份并且将无效性指示符 设置为无效。如果所述存储单元尚未备份,则疏导器310可调用备份 引擎314将所述数据备份在关联单元中。

在一些实施方案中,固态存储设备114可能未访问使高速缓存管 理装置130明确地确定固态存储设备114的各存储单元中的数据之间 存在关联的环境信息。在一些实施方案中,高速缓存控制器312根据 元数据117(例如存储元数据316,诸如顺序存储日志)做出关于哪 些单元构成一体的智能推测。例如,高速缓存控制器312可假定连续 写入的一组存储单元构成逻辑数据单元,诸如文件。类似地,高速缓 存控制器312可假定一起持续读取的一组单元构成逻辑数据单元。然 后,高速缓存控制器312可指示备份引擎314和疏导器310将该组单 元视为逻辑数据单元,如上所述。在相关实施方案中,通常一起存取 的多个文件和数据集可逻辑关联并且通过固态存储设备114作为一 组来操作。

在一些实施方案中,一旦高速缓存控制器312确定一组单元保存 了构成逻辑数据单元的数据,则高速缓存控制器对备份引擎314进行 管理,以确保所述单元一起备份。这些单元无需连续存储在固态存储 设备114中。当以流提供数据时,多个硬盘驱动器和后备存储器118 中的其它介质可更有效地读取该数据;因此,高速缓存控制器312可 使固态存储设备114将所述数据从构成逻辑数据单元的单元中流向 硬盘驱动器。类似地,高速缓存控制器312响应于高速高速缓存缺失 可从后备存储器118中以流来接收数据。

图11为包括共享元数据的示例性数据结构的示意性框图。索引 1104可包括树(或其它数据结构),其包括多个高速缓存条目(例如 节点1108、1114、1116等)。索引1104中的每个高速缓存条目均可 将逻辑地址(或者逻辑地址范围或组)与固态存储设备(例如存储单 元)上的一个或多个存储位置关联。存储单元可通过地址1117(例 如,如条目1114中所述)或某个其它标识符来识别。索引1104中的 高速缓存条目可具有可变长度,使得单个条目(例如条目1114)可 引用一组逻辑地址、逻辑地址范围等。这些逻辑地址可为连续的(例 如072-083)。其它条目(诸如1118)可包括一组不连续的逻辑地 址(例如逻辑地址454-477和535-598)。因此,索引1104可用于表 示大小可变的高速缓存条目(例如,与固态存储设备114上包括任意 一组或一系列逻辑地址的数据的一个或多个存储单元相对应的高速 缓存条目)。

如图11所示,高速缓存条目可通过逻辑地址(使用边,诸如边 1110)来索引,这可能能够实现快速有效的查找。包括逻辑地址“182” 的高速缓存条目的示例性搜索可按如下进行。可在根高速缓存条目处 启动搜索,该根高速缓存条目在图11的实例中为高速缓存条目1108。 在单个逻辑地址(或地址范围)包括在特定高速缓存条目诸如根高速 缓存条目1108中的情况下,如果搜索的逻辑地址(“182”)低于高速缓 存条目1108的逻辑地址,则搜索可沿着定向边1110向下继续进行至 高速缓存条目1108的左边。如果搜索的逻辑地址(“182”)与当前高速 缓存条目1108(例如位于高速缓存条目1108的范围内)匹配,则成 功终止搜索,同时识别当前高速缓存条目1108。如果搜索的逻辑地 址1106大于当前节点1108的范围,则搜索沿着定向边1112向下继 续进行至当前高速缓存条目1108的右边。如果高速缓存条目包括两 个逻辑地址或地址范围(例如,如条目1118所示的不连续的一组) 并且搜索的逻辑地址(“82”)介于列出的虚拟地址之间,则搜索沿着 中心定向边(未示出)向下继续进行至具有介于当前节点1108的两 个逻辑地址之间的逻辑地址的条目。搜索沿着索引1104向下继续进 行,直到识别高速缓存条目或达到叶高速缓存条目,然后搜索失败。 在图11的实例中,搜索成功终止于匹配的高速缓存条目1116处(例 如,高速缓存条目1116包括搜索的逻辑地址“182”)。

虽然在图11的实例中,索引1104采用由逻辑地址索引的B树数 据结构来实施,但在其它实施方案中,索引1104可采用内容可寻址 存储器(“CAM”)、二叉树、散列表或本领域中已知的其它数据结构来 实施。

索引1104中的每个高速缓存条目均可将一个或多个逻辑地址与 固态存储设备114的相应存储单元关联。例如,条目1114可将逻辑 地址范围072-083与存储单元95-106关联。本领域的技术人员将认 识到,所述存储单元的物理地址可存储在索引1104中或可为固态存 储介质的一个或多个存储结构中的偏移。如上所述,条目1114的存 储单元可由于对基础数据的修改(例如由于修改、恢复操作等)而改 变。高速缓存条目还可包括和/或引用元数据1119,元数据1119可包 括高速缓存清除元数据(例如高速缓存条目存取模式)、高速缓存条 目存储时间、大小、高速缓存属性、高速缓存指令、存储元数据(例 如存储单元1117的地址)等。因为元数据1119与通过逻辑地址(例 如地址1115)来索引的高速缓存条目关联,所以元数据1119可与高 速缓存条目1114关联,而与对基础数据的存储位置的改变(例如对 存储单元地址1117的改变)无关。

索引1104可用于有效地确定固态存储设备114是否包括客户端 存储请求中引用的数据和/或识别该数据在设备114上的位置。例如, 固态存储设备114可接收特定逻辑地址的存储请求1102。所述请求 可指向后备存储器,或者可指向固态存储设备114。请求1102可指 定逻辑地址和长度(例如从逻辑地址074开始,请求3个数据单元)。 或者,请求1102可包括一组逻辑地址、逻辑地址范围(连续或不连 续的)等。

固态存储设备114可采用搜索操作来确定与所请求的逻辑地址 相对应的高速缓存条目是否可用于索引1104中,如上所述。如果包 括所请求的逻辑地址的高速缓存条目存在于索引1104中,则固态存 储设备114包括所请求的数据(高速高速缓存命中);否则,发生高 速高速缓存缺失。

在图11所示的实例中,对应于存储请求1102的高速缓存条目存 在于索引1104(高速缓存条目1114)中,因此发生高速高速缓存命 中。为了处理所述请求,可从高速缓存条目114中识别的存储单元 1117读取数据并且将该数据返回到始发者或所述请求。如果发生高 速高速缓存缺失(例如,所述请求引用不存在于索引1104中的逻辑 地址),则固态存储设备114可从后备存储器118读取数据,将该数 据存储在固态存储设备114上的一个或多个存储单元中,并且在索引 1104中创建新高速缓存条目。新高速缓存条目可根据其逻辑地址来 索引,并且可引用包括所述数据的存储单元。

如果高速高速缓存缺失引用与已存在于索引1104中的高速缓存 条目接近的逻辑地址(例如引用地址084-088),则可进行合并操作。 在合并操作中,现有高速缓存条目可与一个或多个其它高速缓存条目 “合并”。例如,逻辑地址084-088的新高速缓存条目可与条目1114 合并。所述合并可包括修改高速缓存条目的逻辑地址1115以包括新 地址(例如072-088)和/或可修改存储单元1117以包括存储写入数 据的存储单元。

当发生部分高速高速缓存缺失时,可进行类似的操作。当索引 1104包括所请求的数据的一部分而非全部时,可能发生部分高速高 速缓存缺失。例如,存储请求1102可请求地址078-088。在这种情况 下,条目1114可引用所请求的数据的一部分,而非所述数据的全部。 为了处理所述请求,固态存储单元可读取在固态存储设备上可用的数 据(例如直至逻辑地址083),并且通过后备存储器118存取剩余(例 如缺失)的数据。从后备存储器读取的数据可存储在固态存储设备 114上并且作为单独的高速缓存条目包括在索引1104中和/或包括在 高速缓存条目1114内。

虽然示出了索引1104中的高速缓存条目包括对存储单元地址 (例如地址1117)的引用,但本公开不限于该方面。在其它实施方 案中,所述高速缓存条目包括对存储单元的引用或与其的间接连接。 例如,所述高速缓存条目可包括存储单元标识符(或对倒排索引1122 的引用)。

图11的元数据还可包括反向映像1122,反向映像1122可识别包 括与所述高速缓存条目的逻辑地址关联的数据的存储单元。反向映像 1122可将存储单元与元数据,诸如有效性指示符1130、可丢弃性指 示符1132和/或其它元数据1136关联(如下所述)。在一些实施方案 中,存储单元地址1126和/或长度1128可明确地包括在反向映像1122 中。或者,存储单元地址1126和/或数据长度1128可通过反向映像 1122中条目(例如1120)的位置来推断,因此可能无需地址1126和 /或数据长度1128。在一些实施方案中,反向映像1122可任选地包括 对逻辑地址1134的引用。逻辑地址引用1134可使存取反向映像1122 的实体迅速地存取与关联于存储单元的逻辑实体有关的元数据(例如 索引1104中的特定高速缓存条目)。

元数据1136可包括但不限于与在存储单元上进行的顺序存储操 作有关的元数据。例如,元数据1136可包括可指示存储单元的存储 顺序(例如以及存储单元的“寿命”等)的顺序指示符(例如时间戳)。 所述元数据还可包括与存储介质有关的元数据,诸如耗损均衡性、可 靠性、出错率、干扰状态等。如上所述,存储元数据可用于有效地实 施高速缓存管理操作,诸如高速缓存清除决策、高速缓存数据移动(例 如,如果“热”高速缓存条目的数据存储在可靠性较低的存储单元中) 等。

反向映像1122可根据固态存储设备114的存储分区(例如擦除 块)来组织。在该实例中,对应于高速缓存条目1118的条目1120位 于擦除块n 1138中。擦除块n 1138在擦除块n-11140之后,而在擦 除块n+11142之前(未示出擦除块n-1和n+1的内容)。擦除块可包 括预定数量的存储单元。擦除块可指固态存储设备114中在存储恢复 操作中一起擦除的区域。

有效性和/或可丢弃性元数据1130和1132可通过高速缓存管理 备份进程和疏导器(例如存储恢复和维护)来共享。备份进程可采用 反向映像1122以按时间顺序(从最旧至最新)循环遍历存储单元。 备份进程可将有效和不可丢弃(如元数据1130和1132所指示)的存 储单元备份到后备存储器中。备份进程可使用元数据1136来使备份 优先化;例如,备份引擎可提高存储在不可靠、具有高耗损量等的存 储单元上的数据的备份优先级,如元数据1136所指示。

类似地,疏导器可使用元数据1130、1132和/或1136来进行顺 序存储操作。例如,当恢复存储分区时,可能需要疏导器来将有效数 据保留(例如重写)至下一个存储分区。然而,如果可丢弃性指示符 1132指示所述数据可丢弃,则疏导器可选择恢复该数据,这可使得 疏导器更有效地操作(例如降低写入放大率)。作为另外一种选择或 除此之外,疏导器可使用逻辑地址1134的关联数据来存取高速缓存 元数据(例如元数据1119),从而识别应当在存储分区恢复操作期间 保留在固态存储设备上的存储单元(根据元数据1119,保留可丢弃 数据,如果其为“热”数据)。疏导器可使用高速缓存元数据(例如 元数据1119)以用于其它目的,包括但不限于:进行数据刷新操作、 进行数据移动(例如,将“热”数据从不可靠的存储单元移动至另一 个存储单元)等。

通常,反向映像1122通过存储分区(例如擦除块)或擦除区域 来设置,以便遍历与擦除块(例如擦除块n 1138)关联的映像的一部 分,从而有效地做出存储恢复和/或刷新决策。将索引设置在可迅速 搜索以识别物理地址1126与虚拟地址1106的正向映像1104中并且 将索引设置在可迅速搜索以识别擦除块1138中的有效数据和有效数 据量的反向映像1122中是有利的,因为可优化反向映像1122以进行 搜索和存储恢复操作。本领域的技术人员将通过索引1104和反向映 像1122认识到索引的其它有益效果。

图12为用于将数据高速缓存在固态存储设备上的方法的一个实 施方案的流程图。如上所述,方法1200的步骤可与特定机器部件相 关和/或可采用存储在非瞬时性机器可读存储介质上的机器可读指令 来实施。

在步骤1210,可初始化固态存储设备以供使用。所述初始化可 包括向固态存储设备(例如固态存储设备114),诸如通信接口(例 如总线、网络等)分配资源,分配易失性存储器,访问固态存储介质 等。所述初始化还可包括初始化共享元数据数据结构,诸如以上结合 图11描述的数据结构,识别后备存储器设备(例如后备存储器118) 和/或向一个或多个客户端(例如客户端110a-c)提供存储接口。

在步骤1220,固态存储设备可处理来自一个或多个客户端的存 储请求。所述存储请求可指向后备存储器(当固态存储设备被配置为 透明地高速缓存数据时)和/或可指向固态存储设备本身。

在步骤1230,固态存储设备可维护与所述存储请求有关的共享 元数据(例如元数据117)。所述共享元数据可包括与在固态存储设 备上进行的存储操作和/或固态存储介质有关的存储元数据(例如元 数据316)。因此,所述存储元数据可包括逻辑地址与固态存储单元 之间的关联数据、有效性映像、存储收回元数据(例如耗损均衡性、 可靠性、追加点等)等。

在步骤1230维护的共享元数据还可包括与存储在固态存储设备 上的高速缓冲存储器有关(例如与在固态存储设备上进行的高速缓存 操作有关)的高速缓存元数据。所述高速缓存元数据可将逻辑地址共 享到存储元数据的存储单元索引。因此,所述共享元数据可包括具有 多个高速缓存条目的索引(例如索引1104),每个高速缓存条目均将 逻辑地址与固态存储设备的一个或多个存储单元关联。所述高速缓存 元数据还可包括高速缓存清除元数据,诸如数据存取模式、高速缓存 属性、高速缓存指令等(例如存储在图11的元数据1119中)。在步 骤1230维护的元数据可包括索引(例如图11的索引1104)和/或倒 排索引(例如图11的倒排索引1122)。

在步骤1240,方法1200可存取共享元数据以对固态存储设备进 行存储操作。顺序存储操作可包括但不限于:进行顺序(例如异地) 存储操作,维护逻辑-存储单元关联数据,维护存储单元有效性指示 符,选择用于恢复的存储分区(例如无用单元收集),确定固态存储 设备的当前占用率,在存储分区恢复操作期间选择要保留的存储单元 等。

在步骤1260,方法1200可存取共享元数据以管理存储在固态存 储设备上的高速缓冲存储器。管理高速缓冲存储器可包括但不限于: 将存储分区备份到后备存储器中,维护高速缓存清除元数据,选择用 于清除的高速缓存条目等。

图13为用于将数据高速缓存在固态存储设备上的方法1300的流 程图。如上所述,方法1200的步骤可与特定机器部件相关和/或可采 用存储在非瞬时性机器可读存储介质上的机器可读指令来实施。

在步骤1310、1320和1330,方法1300可被初始化,处理存储 请求并且维护共享元数据,如上所述。

在步骤1340,方法1300可存取共享元数据以管理固态存储设备 的顺序存储操作。

在步骤1342,方法1300可使用高速缓存元数据以选择用于恢复 的存储分区。步骤1342可包括存取高速缓存元数据,该高速缓存元 数据识别已存储在后备存储器上的存储单元(例如可丢弃存储单元)。 存储分区的选择可基于待保留在存储设备(例如重写至另一个存储位 置)上的存储分区中的有效数据阈值。可使用可丢弃性指示符来确定 有效数据量;如果存储单元为有效且可丢弃,则可在恢复操作期间将 该存储单元擦除,而不会丢失和/或损坏数据。

步骤1342还可包括存取高速缓存元数据,以确定存储单元是否 与应当保留在固态存储设备上的高速缓存条目关联(例如根据清除策 略或其它元数据)。例如,如果高速缓存条目为“热”条目(如果删 除,可能会导致高速高速缓存缺失),则可在恢复操作期间保留该存 储单元,即使其被识别为可丢弃。

在步骤1344,方法1300可对选定的存储分区进行恢复操作。该 恢复操作可存取高速缓存元数据(在共享元数据中)以进行恢复操作。 该恢复操作可包括识别所述存储分区上的不可丢弃存储单元(使用高 速缓存元数据),并且使识别的存储单元存储在另一个存储分区上和/ 或使这些不可丢弃存储单元存储在后备存储器上。所述操作还可包括 存取元数据,以识别与应当保留在固态存储设备上的高速缓存条目关 联的存储单元(例如根据与这些高速缓存条目关联的高速缓存清除元 数据)。识别的存储单元可存储在固态存储设备的另一个存储分区上。

在步骤1346,方法1300可进行数据疏导操作以刷新和/或管理存 储单元(数据疏导操作也可包括存储恢复操作,如上结合步骤1342 和1344所述)。该疏导操作可存取与高速缓存操作有关的共享元数 据。例如,该疏导操作可识别与“热”高速缓存条目或具有特定高速 缓存属性(诸如“PIN”属性)的高速缓存条目关联的存储单元(例如 使用高速缓存清除元数据)、不可丢弃的存储单元等。该疏导操作也 可参考存储元数据,以根据存储分区耗损均衡性、可靠性(例如出错 率)、读取干扰、寿命等来确定存储单元是否应当被移动至另一个存 储分区。

在步骤1360,方法1300可存取共享元数据以管理存储在固态存 储设备上的高速缓冲存储器。

在步骤1362,方法1300可选择存储单元以存储在后备存储器上。 所述选择可基于写入存储单元的时间顺序(从最旧至最新),这可通 过使用与在固态存储设备上进行的存储操作的顺序有关的存储元数 据来确定。在一些实施方案中,所述选择可基于高速缓存清除元数据 (例如存取模式,诸如存取频率等)。根据使用情况,可能不选择具 有高修改率的高速缓冲存储器来进行备份,以便优化带宽的使用和进 行备份的潜在成本。步骤1362的选择可包括存取有效性指示符;可 能不会备份标记为无效的数据,而与其存储时间和/或可丢弃性指示 符无关。

在一些实施方案中,步骤1362可包括使备份操作优先化。所述 优先化可基于存储元数据,诸如存储分区耗损均衡性、可靠性、占用 率等。例如,可将存储在不可靠(或高耗损)的存储分区(如存储元 数据所指示)上的存储单元备份在存储在更可靠(或低耗损)的存储 分区上的存储单元之前。

在步骤1364,方法1300可尤其根据存储元数据来使存储分区的 备份操作优先化。所述存储元数据可用于确定固态存储设备的当前占 用率。备份操作的优先级可根据当前占用率来确定。当占用率较低(与 占用率阈值相比)时,备份可被配置为在后台中进行。当占用率较高 时,可提高备份操作的优先级(例如移动至前台中)。

在步骤1366,方法1300可使用共享元数据(例如存储元数据) 来识别用于清除的高速缓存条目。如上所述,高速缓存条目可与可包 括存取模式、高速缓存属性、高速缓存指令等的高速缓存清除元数据 关联。该元数据可与高速缓存条目数据有关。然而,由于顺序存储操 作(例如异地写入等)的性质,可能会丢失存储单元与高速缓存元数 据之间的关联数据(例如当物理存储位置改变时)。然而,存储元数 据可维护逻辑-存储单元关联数据(图11的高速缓存条目),这可保 留高速缓存条目与其关联高速缓存清除元数据之间的关联数据,而与 基础顺序存储操作(例如对高速缓存数据的物理地址的改变)无关。 在另一个实施方案中,存储元数据可维护逻辑-存储分区关联数据(图 11的高速缓存条目),这可保留高速缓存条目与其关联高速缓存清除 元数据之间的关联数据,而与基础顺序存储操作(例如对高速缓存数 据的物理地址的改变)无关。

步骤1366的识别可存取其它类型的存储元数据。例如,与存储 在更可靠的存储分区上的类似条目相比,存储在高损耗和/或不可靠 的存储分区上的高速缓存条目可优选地被清除等。

在步骤1368,方法1300可使用共享元数据(例如存储元数据) 来进行高速缓存维护操作。高速缓存维护操作可包括识别“热”高速 缓存条目,并且使用存储元数据使“热”高速缓存条目移动至固态存 储设备的另一个存储分区。所述移动可鉴于耗损均衡目的来进行,以 防止过度读取干扰等。可根据维护相关存储统计数据(例如读取计数、 存储时间等)的存储元数据来进行选择,所述存储统计数据在存储单 元、存储分区、虚拟存储分区或其它粒度级别处维护。

步骤1368的高速缓存维护操作还可包括移动具有一定寿命和/或 未备份(例如为不可丢弃)的存储单元。不可丢弃的存储单元未存储 在后备存储器上,因此如果丢失,可导致数据丢失和/或损坏。这些 存储单元可从不可靠和/或高损耗存储分区中移动,以防止这种丢失。 类似地,不可丢弃存储单元可从“热”存储条目的近侧移动,以防止 读取干扰或其它条件引起的错误。

图14为用于将数据高速缓存在固态存储设备上的方法1400的流 程图。如上所述,方法1400的步骤可与特定机器部件相关和/或可采 用存储在非瞬时性机器可读存储介质上的机器可读指令来实施。

在步骤1410、1420和1430,方法1400可被初始化,处理存储 请求并且维护共享元数据,如上所述。所述共享元数据可包括多个高 速缓存条目,每个高速缓存条目均将逻辑地址与包括高速缓存条目的 数据的一个或多个存储单元关联。在一些实施方案中,所述元数据可 包括正向索引,诸如图11中示出的B树数据结构。

在步骤1440,方法1400可接收特定逻辑地址处的数据请求。

在步骤1450,方法1400可确定对应于特定逻辑地址的数据是否 存储在固态存储设备上。在一些实施方案中,步骤1450可包括搜索 共享元数据的正向索引。如果包括特定逻辑地址的高速缓存条目存在 于所述正向索引中,则方法1400可确定数据可用,并且流程可在步 骤1460处继续进行;否则,流程可在步骤1470处继续进行。

在步骤1460,可处理存储请求。处理存储请求可包括存取在步 骤1450处识别的高速缓存条目,以确定包括所请求的数据的一个或 多个存储单元。可读取这些存储单元,并且所得数据可返回到请求程 序中。

在步骤1470,可能发生高速高速缓存缺失。高速高速缓存缺失 可通过将对应于特定逻辑地址的数据存取在另一个数据存储器(诸如 后备存储器118)中来处理。

在步骤1472,所述数据可按顺序存储在固态存储设备上。在步 骤1474,可更新元数据以表明该数据在固态存储设备上可用,并且 在步骤1476,可向请求程序提供所述数据。

步骤1474可包括将新高速缓存条目添加至元数据。新高速缓存 条目可将特定逻辑地址与包括从后备存储器中读取的数据的存储单 元关联。

在一些实施方案中,步骤1474可包括更新现有高速缓存条目。 特定逻辑地址可接近所述元数据中的逻辑地址。因此,并非添加单独 的新高速缓存条目,而是可更新现有高速缓存条目,以包括特定逻辑 地址并且引用包括从后备存储器中读取的数据的存储单元。如果特定 逻辑地址介于两个或更多个现有高速缓存条目之间(例如填补高速缓 存条目之间的间隙),则步骤1474的更新可包括合并这些高速缓存条 目,以包括新的范围(例如原始高速缓存条目的逻辑地址和该特定逻 辑地址),并且引用原始存储单元和包括从后备存储器中读取的数据 的存储单元。

在一些实施方案中,高速缓存条目可包括所请求的数据的一部 分,而非所述数据的全部。在这种情况下,在步骤1470和1472,方 法1400仅可读取和存储数据的缺失部分。在步骤1474,可添加新高 速缓存条目以将特定逻辑地址与包括从后备存储器中读取的数据的 存储单元关联。或者,步骤1474可包括更新现有高速缓存条目,如 上所述。

图15为用于将数据高速缓存在固态存储设备上的方法1500的一 个实施方案的流程图。如上所述,方法1500的步骤可与特定机器部 件相关和/或可采用存储在非瞬时性机器可读存储介质上的机器可读 指令来实施。

在步骤1510、1520和1530,方法1500可被初始化,处理存储 请求并且维护共享元数据,如上所述。在步骤1540,方法1500可接 收存储请求,以删除存储在固态存储设备上的数据。所述请求可通过 逻辑地址来引用数据。

在步骤1550,方法1500可确定对应于逻辑地址的数据是否存储 在固态存储设备上,如上结合图14所述。

在步骤1560,该方法可将所述数据从固态存储设备中删除。删 除所述数据可包括从元数据中删除与逻辑地址关联的高速缓存条目 和/或使该高速缓存条目的存储单元无效。如果所述高速缓存条目包 括待保留在固态存储设备上的数据,则可将其更新以将该高速缓存条 目与删除的逻辑地址和/或无效的存储单元取消关联。所述取消关联 可包括分解高速缓存条目,如上所述。步骤1560可响应于TRIM命 令进行(例如通过方法1500经由存储接口发出)等。

在步骤1570,可将存储请求传至后备存储器,以使后备存储器 删除数据。

图16为用于将数据高速缓存在固态存储设备上的方法1600的一 个实施方案的流程图。如上所述,方法1600的步骤可与特定机器部 件相关和/或可采用存储在非瞬时性机器可读存储介质上的机器可读 指令来实施。

在步骤1610、1620和1630,方法1600可被初始化,处理存储 请求并且维护共享元数据,如上所述。在步骤1630处维护的元数据 可包括将逻辑地址与固态存储设备的存储单元关联的正向索引。所述 元数据还可包括有效性和/或可丢弃性元数据。

在步骤1640,可使用共享元数据117(例如存储元数据316)来 计算固态存储设备的最大占用率。存储元数据316可包括与固态存储 介质有关的元数据,诸如出错率、可靠性、耗损均衡性等。存储元数 据316可包括不再可用(由于不可接受的出错率或其它条件)的存储 分区或存储单元的指示符。可通过从原始最大占用率(例如物理存储 容量或其系数)中减去不可用存储分区来计算固态存储设备的最大占 用率。随着存储单元由于损耗或其它错误条件而变得不可用,高速缓 存数据可用的物理存储空间可类似地随时间改变。尽管由于不可用存 储分区和/或存储单元的原因,可用物理存储容量减少,但固态存储 设备可继续作为高速缓冲存储器来操作(提供相同大小或类似大小的 逻辑地址空间)。可用物理存储容量的这种减少可继续存在,直到固 态存储设备对高速缓存数据不再具有可用物理容量并且输入/输出速 率类似于直接存取后备存储器的那些速率。

在步骤1650,可使用共享元数据117来计算固态存储设备的当 前占用率。在一些实施方案中,当前占用率可被计算为包括固态存储 设备上的所有有效数据。有效数据可通过遍历正向索引(例如图11 的索引1104)来识别。或者,更积极的计算可包括仅计算有效的不 可丢弃存储单元。在这种情况下,方法1600可假定可丢弃存储单元 可从固态存储设备中删除,而不会造成数据丢失,并因此可被视为可 用存储空间。

在步骤1660,方法1600可向请求程序诸如备份引擎、疏导器、 高速缓存管理器等提供最大占用率和/或当前占用率。

在一些实施方案中,方法1600可提供超出后备存储器的地址空 间的逻辑地址空间。在步骤1670,方法1600可处理与在后备存储器 的逻辑地址范围之外的逻辑地址关联的存储请求。固态存储设备可处 理将数据存储在固态存储设备上的请求。然而,所述数据可能未被备 份到后备存储器中(因为其地址在后备存储器的逻辑地址的范围之 外)。因此,与所述逻辑地址关联的高速缓存条目的存储单元可被标 记为不可丢弃,并且可保持不可丢弃直到附加逻辑或物理后备存储容 量可用时。在一些实施方案中,步骤1670可包括请求附加后备存储 器和/或发出已超出逻辑存储空间的通知。

在本说明书中通篇对“一些实施方案”或“一个实施方案”的参 考意指,结合实施方案描述的特定特征、结构或特性包括在本发明的 至少一个实施方案中。因此,在整个本说明书的各个地方中出现的短 语“在一个实施方案中”或“在一些实施方案中”未必均涉及相同的 实施方案。此外,一个″实施方案″可为一种系统、设备、制品、方法 和/或进程。

短语“连接至”、“网络连接”和“与...通信”、“通信地耦合至” 是指两个或更多个实体之间的任何形式的交互,包括机械、电气、磁 性和电磁交互。两个部件可彼此连接,即使它们彼此并未进行直接物 理接触并且即使这两个部件之间可能存在中间设备。

可与本文所公开的实施方案一起使用的一些基础结构已经可用, 这些基础结构诸如通用处理器、程序设计工具和技术、非瞬时性计算 机和/或机器可读存储介质以及通信网络和接口。计算设备诸如IED 和/或监控设备可包括处理器,诸如微处理器、微控制器、逻辑电路 等。处理器可包括专用处理设备,诸如ASIC、PAL、PLA、PLD、FPGA 或其它处理设备。计算设备也可包括计算机可读存储介质,诸如非易 失性存储器、静态RAM、动态RAM、ROM、CD-ROM、磁盘、磁 带、磁存储器、光存储器、闪速存储器或其它非瞬时性机器可读存储 介质。

上述说明提供了许多具体细节,以充分理解本文所述的实施方 案。然而,本领域的技术人员将认识到,可省略所述具体细节中的一 个或多个,或者可采用其它方法、部件或材料。在一些情况下,未详 细示出或描述操作。

虽然已示出和描述了本公开的具体实施方案和应用,但应当理解 本公开不限于本文所公开的精确配置和部件。在不脱离本公开的精神 和范围的情况下,可在本公开的方法和系统的布置、操作和细节中进 行对本领域的技术人员显而易见的各种修改、改变和变型。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号