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

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

Info

Publication number
CN102696010B
CN102696010B CN201080050301.5A CN201080050301A CN102696010B CN 102696010 B CN102696010 B CN 102696010B CN 201080050301 A CN201080050301 A CN 201080050301A CN 102696010 B CN102696010 B CN 102696010B
Authority
CN
China
Prior art keywords
data
storage device
cache
solid storage
metadata
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201080050301.5A
Other languages
English (en)
Other versions
CN102696010A (zh
Inventor
大卫·弗林
约翰·斯特拉瑟
乔纳森·希尔达
大卫·阿特基森
迈克尔·戴普
乔舒亚·奥纳
凯文·B·维戈尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SanDisk Technologies LLC
Original Assignee
INTELLIGENT IP Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by INTELLIGENT IP Inc filed Critical INTELLIGENT IP Inc
Publication of CN102696010A publication Critical patent/CN102696010A/zh
Application granted granted Critical
Publication of CN102696010B publication Critical patent/CN102696010B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

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

Description

用于将数据高速缓存在固态存储设备上的装置、系统和方法
技术领域
本发明涉及将数据高速缓存在固态存储设备上,并且具体涉及维护与高速缓冲存储器以及用于管理高速缓冲存储器且进行疏导操作的固态存储设备有关的元数据。
背景技术
高速缓存设备为用于使数据更迅速地存取在系统中的存储设备。高速缓冲存储器可通过减少将所述数据用于高速缓冲存储器中的操作的输入/输出(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,andMethodforStorageSpaceRecoveryinSolid-stateStorage”的美国专利申请号11/952,101(DavidFlynn等)描述了示例性疏导操作,该专利据此全文以引用方式并入。类似地,疏导器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,andMethodforManagingDataUsingaDataPipeline”的美国专利申请No.11/952,091(DavidFlynn等人)描述了一种将数据连续地存储在固态存储设备内的方法,该专利据此以引用方式并入。在该设备中,将数据存储在存储单元中的顺序可在大多数情况下来源于存储设备中数据的顺序,从而与那些存储单元关联的数据的存储时间也是如此。在其中固态存储设备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的LBA0。文件系统将数据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将存储请求的数据(例如逻辑地址LBA0和数据D)存储在选定的存储单元402中,并因此更新元数据117。更新元数据117可包括更新索引410以将LBA0与存储单元402的引用(例如物理地址)关联。所述更新可包括将叶节点添加至B树或其它正向映像数据结构。所述条目可通过LBA(LBA0)来索引,以能够快速有效地将LBA与存储单元关联。
更新元数据117还可包括设置存储单元402的有效性和可丢弃性指示符。在图4中,这些操作以“SSD事件的添加行”列表示,该列显示了逻辑地址LBA0,其与数据“D”(在正向和/或倒排索引中)关联,并且将存储单元402的有效性指示符设置为“1”(例如有效)且将可丢弃性指示符设置为“0”(不可丢弃)。可丢弃性指示符被设置为“0”(不可丢弃),因为数据D尚未被备份到后备存储器(例如硬盘驱动器)中,并且在未将数据D备份到硬盘驱动器的情况下将其从固态存储设备114中删除会导致数据丢失和/或损坏。
如图4所示,客户端(例如文件系统210)可修改数据D。更新的数据可由D’表示。所述更新可包括文件系统210(或某个其它实体)修改数据D(或进行对数据D进行修改的另一个操作)。文件系统210可发出存储请求,以将修改的数据D’存储在LBA0。在一些实施方案中,文件系统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进行无用单元收集操作(GC1)。无用单元收集操作可使存储单元402回到初始化状态,此时单元402可再次用于存储数据。
图4还示出了对单元404中的数据D’进行备份操作(BU1)的固态存储设备114。在一些实施方案中,备份引擎314进行所述备份。备份引擎314使数据D’以逻辑地址LBA0和数据值D’存储在硬盘驱动器中。备份引擎314可将通过数据D’来寻址LBA0的写入请求发送至硬盘驱动器。在一些实施方案中,备份引擎314等待以下确认,在将丢弃性指示符从不可丢弃改变为可丢弃(设置为“1”)之前,硬盘驱动器已将D’成功保存在LBA0。硬盘驱动器可在LBA与数据D’的物理地址(例如LBA0与特定CHS)之间进行其自身的内部关联。
在一些实施方案中,以对文件系统透明的方式进行备份操作;即,文件系统未意识到数据D’现位于固态存储设备114和硬盘驱动器中。类似地,可对文件系统进行透明的疏导操作,诸如GC1。
图4示出了由文件系统210(或其它实体)针对LBA0生成的附加更新2,该更新将数据改变为D”。如同单元402,作为响应,固态存储设备114将单元404在元数据117中标记为无效。因为单元404被识别为无效,所以可丢弃性指示符可能会或可能不会改变;并且与可丢弃性指示符的状态无关,因为疏导器310将对单元404进行无用单元收集(在GC2示出),并且单元404连同有效性映像和可丢弃性映像中的条目将被初始化使得单元404可再次用于存储新数据。
更新2也使LBA0和数据D”按顺序写入新单元406,这如上所述将有效性指示符设置为有效。因为数据D”未被移动至硬盘驱动器且未以其它方式存在于硬盘驱动器中,所以将可丢弃性指示符设置为不可丢弃。更新2还可包括修改元数据117的索引410,以将LBA0与存储单元406关联。一旦备份引擎314将数据D”刷新至硬盘驱动器(如同所示)(BU2),则将可丢弃性指示符改变为可丢弃。
文件系统也可向用作固态存储设备114的固态存储设备发出TRIM命令。TRIM命令使文件系统向固态存储设备(诸如固态存储设备114)告知不再使用的数据存储单元(逻辑块地址)。这确保了固态存储设备114知道在使用的存储单元和未使用的存储单元,并且确保了固态存储设备未保留文件系统知道不再需要和/或为无效的数据。目前将TRIM命令说明作为由技术委员会T13引导的AT嵌入式(“ATA”)接口标准的一部分而标准化。
如图4所示,在一些实施方案中,文件系统确定删除与LBA0(诸如文本文件)关联的数据D”并将LBA0添加至可用池。文件系统(或其它实体)可将包括TRIM命令的存储请求发送至固态存储设备114。固态存储设备114接收TRIM命令,并且在一些实施方案中,通过无效SSD事件进行响应,该无效SSD事件将保存数据的受影响单元(诸如单元406)标记为无效。然后,固态存储设备114可在稍后的时间执行无用单元收集操作GC3,从而恢复单元406以备将来使用。TRIM还可包括更新元数据117的索引410以删除LBA0的条目(例如将表示LBA0的叶节点从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所示,文件系统可能已分配LBA1来保存数据A并且已存储该数据。图5示出了数据A与硬盘驱动器中的LBA1关联,但不存在于固态存储设备114中。文件系统210发出LBA1处的数据读取。在一些实施方案中,固态存储设备114接收读取请求,并且确定与LBA1关联的数据A未存储在固态存储设备114中(这被解释为缺失,如图5所示)。在一些实施方案中,固态存储设备114通过试图在与LBA1关联的单元上读取数据来确定数据A不存在于固态存储设备114中。固态存储设备114可例如试图使用元数据117(具体地讲,索引410)来存取LBA1。如果LBA1在索引410中无条目,则固态存储设备114可产生可被解释为高速高速缓存缺失的错误。因为元数据117可通过LBA(在B树数据结构中)来索引,所以可迅速有效地进行该确定。
响应于高速高速缓存缺失,固态存储设备114将读取请求重新指向存取LBA1处的数据A的硬盘驱动器。从硬盘驱动器中检索数据A并且使数据A返回到文件系统210。固态存储设备114的高速缓存控制器312也执行注入SSD事件(注入1),以将数据A连同逻辑地址LBA1一起存储在选定的存储单元502中。固态存储设备114可更新元数据117,以将索引410中的LBA1与存储单元502关联。
如图5所示,响应于读取2,固态存储设备114从单元502中检索数据A,因为读取2为高速高速缓存命中。固态存储设备114使数据A返回到文件系统210以作为对读取请求2的响应。固态存储设备114可迅速有效地确定对应于LBA1的数据在固态存储设备114上可用,并且使用元数据117(索引410)来识别包括所述数据的存储单元502。
当数据A存储在单元502中以作为注入1操作的一部分时,固态存储设备114将有效性指示符设置为有效并且还将可丢弃性指示符设置为可丢弃,以反映数据A已正确地存储在硬盘驱动器中的LBA1中并与该LBA1关联。因此,可将数据A从固态存储设备114中删除,而不会造成数据损坏。例如,在固态存储设备114上操作的高速缓存管理装置可应用清除策略并确定应当清除数据A(例如根据存取模式、疏导考虑因素等)。因为可丢弃性指示符在元数据117中被设置为“1”,所以可进行清除,而无需在清除之前在单元502上备份。
图5还示出了发出更新1的文件系统210,更新1将与LBA1关联的数据从A改变为A’。如前所述,固态存储设备114使用无效性映像将单元502标记为无效,并且疏导器310进行无用单元收集操作GC1以初始化单元502使得其可供将来使用。另外,固态存储设备114将LBA1和数据A’存储在新单元504中,并且将无效性指示符设置为有效且将可丢弃性指示符设置为不可丢弃。可更新元数据117的索引410,以将LBA1与存储单元504关联,如上所述。固态存储设备114在备份操作BU1期间将数据A’存储至硬盘驱动器并且将可丢弃性指示符设置为可丢弃。
图5还示出了在清除SSD事件(清除1)中从固态存储设备114中清除的数据A’。在一些实施方案中,清除1操作对文件系统透明。固态存储设备114可清除数据A’,其前提是高速缓存控制器312确定该数据已变冷;例如,文件系统210在预定时段可能未读取数据A’。在一些实施方案中,高速缓存控制器312通过将有效性指示符设置为无效来清除数据A’。所述清除还可包括删除索引410中LBA1与存储单元504之间的关联。所述删除可表明LBA1的数据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,andMethodforReliable,HighPerformanceStorageofDatawithProgressiveRAID”的美国专利申请No.11/952,115(DavidFlynn等)中所描述,该申请据此全文以引用方式并入。备份引擎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位于擦除块n1138中。擦除块n1138在擦除块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通过存储分区(例如擦除块)或擦除区域来设置,以便遍历与擦除块(例如擦除块n1138)关联的映像的一部分,从而有效地做出存储恢复和/或刷新决策。将索引设置在可迅速搜索以识别物理地址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、磁盘、磁带、磁存储器、光存储器、闪速存储器或其它非瞬时性机器可读存储介质。
上述说明提供了许多具体细节,以充分理解本文所述的实施方案。然而,本领域的技术人员将认识到,可省略所述具体细节中的一个或多个,或者可采用其它方法、部件或材料。在一些情况下,未详细示出或描述操作。
虽然已示出和描述了本公开的具体实施方案和应用,但应当理解本公开不限于本文所公开的精确配置和部件。在不脱离本公开的精神和范围的情况下,可在本公开的方法和系统的布置、操作和细节中进行对本领域的技术人员显而易见的各种修改、改变和变型。

Claims (33)

1.一种用于将数据高速缓存在固态存储设备上的方法,所述方法包括:
由被配置为管理所述固态存储设备的存储控制器,通过使用索引来维护逻辑地址空间,其中,所述索引被配置为:
a)将存储在所述固态存储设备上的数据的逻辑地址映射至所述固态存储设备的存储单元,以及
b)对于高速缓存在所述固态存储设备上的后备存储器的数据,将与该后备存储器的所述数据相对应的逻辑标识符映射至所述固态存储设备的存储单元,其中,所述逻辑地址空间大于所述固态存储设备的物理地址空间;并且
存取由所述存储控制器维护的与在所述固态存储设备上进行的存储操作有关的元数据,以管理高速缓存在所述固态存储设备上的所述后备存储器的数据。
2.根据权利要求1所述的方法,所述方法还包括存取由所述存储控制器维护的与在所述固态存储设备上进行的高速缓存操作有关的元数据,以管理对所述固态存储设备的存储分区的疏导操作,其中与高速缓存操作有关的所述元数据和与存储操作有关的所述元数据存储在共享数据结构中。
3.根据权利要求1所述的方法,其中所述元数据包括识别所述固态存储设备的已存储在后备存储器上的存储单元的可丢弃性指示符,所述方法还包括:
使用所述可丢弃性指示符来选择用于恢复的存储分区。
4.根据权利要求3所述的方法,所述方法还包括:
使用所述元数据来识别选定的存储分区中的不可丢弃存储单元;并且
使所述不可丢弃存储单元的数据存储在所述固态存储设备的不同存储分区上。
5.根据权利要求2所述的方法,所述方法还包括使用与所述高速缓存操作有关的元数据来选择用于恢复的存储分区。
6.根据权利要求2所述的方法,所述方法还包括:
识别与高速缓存操作有关的元数据指示应当保留在所述固态存储设备上的高速缓存条目的可丢弃存储单元;
在恢复操作中使所述识别的可丢弃存储单元存储在所述固态存储设备的不同存储分区上。
7.根据权利要求1所述的方法,所述方法还包括:
在与高速缓存操作有关的元数据中存取高速缓存属性;并且
使用所述高速缓存属性来选择所述固态存储设备的用于恢复的存储分区。
8.根据权利要求1所述的方法,还包括:
接收包括与第一高速缓存条目关联的逻辑地址的存储请求,所述第一高速缓存条目引用所述固态存储设备的第一存储分区中的存储单元;
将所述存储请求的数据存储在所述固态存储设备的第二存储分区的存储单元中;并且
更新所述元数据,以将所述高速缓存条目与所述第二存储分区中的所述存储单元关联,指示所述第一存储分区中的所述存储单元为无效,并且指示所述第二存储分区中的所述存储单元为不可丢弃。
9.根据权利要求1所述的方法,还包括:
将数据存储在所述固态存储设备的第一存储单元上,所述数据对应于与所述元数据中的第二高速缓存条目的逻辑地址接近的第一逻辑地址;并且
修改所述第二高速缓存条目,以包括所述第一逻辑地址并且引用所述第一存储单元。
10.根据权利要求1所述的方法,其中所述固态存储设备可通信地耦合至所述后备存储器,所述方法还包括:
提供包括所述后备存储器的容量的逻辑地址空间;
使用与所述存储操作有关的元数据来确定所述固态存储设备的当前占用率;并且
当所述当前占用率超出目标占用率阈值时,提高被配置为使不可丢弃存储单元存储在所述后备存储器上的备份引擎的优先级。
11.根据权利要求1所述的方法,还包括:
提供超出所述后备存储器的逻辑地址空间的逻辑地址空间;
识别与在所述后备存储器的所述逻辑地址空间的范围之外的逻辑地址关联的存储请求;并且
维护与所述逻辑地址关联的高速缓存条目的存储单元的不可丢弃指示符。
12.根据权利要求1所述的方法,所述方法还包括:
接收存储请求,所述存储请求引用与所述元数据中的第一高速缓存条目关联的第一逻辑地址和与所述元数据中的高速缓存条目不关联的第二逻辑地址;并且
通过将存储在所述固态存储设备上并对应于所述第一高速缓存条目的数据与从所述后备存储器中读取的数据结合来处理所述请求。
13.根据权利要求12所述的方法,还包括将高速缓存条目添加至与所述固态存储设备的存储单元关联的所述元数据,所述存储单元包括从所述后备存储器中读取的所述数据。
14.根据权利要求12所述的方法,还包括修改所述元数据,以包括包括所述第二逻辑地址的高速缓存条目并且引用包括从所述后备存储器中读取的所述数据的存储单元。
15.根据权利要求12所述的方法,其中所述存储请求的数据是不连续的。
16.一种用于将数据高速缓存在包括多个存储分区的固态存储设备上的装置,所述装置包括:
存储控制器,其被配置为将与后备存储器相对应的高速缓存数据按顺序存储在固态存储设备上;以及
高速缓存控制器,其被配置为维护与按顺序存储在所述固态存储设备上的与所述后备存储器相对应的所述高速缓存数据有关的高速缓存元数据,其中所述高速缓存元数据包括被配置为识别存储在所述固态存储设备上的已备份到所述后备存储器的数据的可丢弃性指示符;
其中,所述存储控制器被配置为通过使用所述可丢弃性指示符来选择所述固态存储设备的用于存储恢复操作的存储分区,其中所选择的存储分区包括备份到所述后备存储器的数据。
17.根据权利要求16所述的装置,其中所述存储控制器还被配置为存取所述高速缓存元数据以识别被选择用于所述存储恢复操作的存储分区的存储单元,其中该存储单元包括与所述后备存储器相对应的能被清除的数据。
18.根据权利要求16所述的装置,其中所述存储分区是基于与存储在所述存储分区的各个存储单元内的数据相对应的可丢弃性指示符来选择的。
19.根据权利要求16所述的装置,其中所述高速缓存元数据包括识别待保留在所述固态存储设备上的高速缓存条目的高速缓存元数据,其中所述存储控制器还被配置为存取所述高速缓存元数据以在经选择用于恢复的存储分区中识别与待保留在所述固态存储设备上的高速缓存条目关联的可丢弃存储单元,并且将所述识别的可丢弃存储单元存储在所述固态存储设备的不同存储分区上。
20.一种用于将数据高速缓存在固态存储设备上的方法,包括:
由存储控制器在所述固态存储设备上进行的一个或多个顺序存储操作中,将数据按顺序存储在所述固态存储设备上;
由所述存储控制器维护与所述固态存储设备的存储单元的耗损均衡性和所述固态存储设备的存储单元的可靠性中的一个或多个有关的存储元数据,所述存储元数据包括将存储元数据与所述固态存储设备的存储单元关联的倒排索引;并且
存取所述存储元数据,以基于所述存储元数据所表示的所述存储单元的耗损均衡性和所述存储单元的可靠性中的一个或多个,管理包括高速缓存在所述固态存储设备的所述存储单元上的后备存储器的数据的高速缓存条目。
21.根据权利要求20所述的方法,其中管理所述高速缓存条目包括根据所述存储元数据来选择用于清除的高速缓存条目,所述存储元数据指示包括所述高速缓存条目的数据的存储单元具有高耗损量、所述存储单元具有低耗损量和所述存储单元为不可靠中的一种。
22.根据权利要求20所述的方法,其中管理所述高速缓存条目包括根据所述存储元数据使存储在所述固态存储设备的第一存储单元上的高速缓存条目的数据存储在所述固态存储设备的第二存储单元上,所述存储元数据指示所述存储分区具有高耗损量、所述存储分区具有低耗损量和所述存储分区为不可靠中的一种。
23.根据权利要求20所述的方法,其中管理所述高速缓存条目包括根据所述存储元数据使存储在固态存储设备上的存储单元存储在后备存储器上,所述存储元数据指示所述存储分区具有高耗损量、所述存储分区具有低耗损量和所述存储分区为不可靠中的一种。
24.一种用于将数据高速缓存在固态存储设备上的方法,包括:
维护包括多个高速缓存条目的元数据,每个所述高速缓存条目均与逻辑地址关联并且引用固态存储设备上的可变数量的存储单元,所述存储单元包括所述高速缓存条目的数据,其中通过逻辑地址在所述元数据中索引所述高速缓存条目;
接收客户端存储请求,所述客户端存储请求包括逻辑地址;并且
使用所述高速缓存条目和所述逻辑地址来确定与所述客户端存储请求有关的数据是否存储在所述固态存储设备上。
25.根据权利要求24所述的方法,其中确定包括使用一组客户端逻辑地址中的一个或多个将所述组客户端逻辑地址与选定的可变大小的高速缓存条目比较。
26.根据权利要求24所述的方法,其中响应于与所述客户端存储请求有关的数据未存储在所述固态存储设备上,所述方法还包括:
将对应于所述客户端存储请求的数据存储在所述固态存储设备的一个或多个存储单元中;并且
创建索引到所述客户端逻辑地址的新高速缓存条目,以表示所述可变大小的高速缓存条目。
27.根据权利要求24所述的方法,其中响应于与所述客户端存储请求有关的数据未存储在所述固态存储设备上,所述方法还包括:
将对应于所述客户端存储请求的数据存储在所述固态存储设备的存储单元上;并且
修改高速缓存条目以引用所述客户端存储请求的所述逻辑地址和所述存储单元。
28.根据权利要求27所述的方法,其中修改所述高速缓存条目还包括:
将所述高速缓存条目与所述元数据中的第二高速缓存条目合并,通过将所述高速缓存条目与所述第二高速缓存条目的所述逻辑地址和所述第二高速缓存条目的存储单元关联,所述第二高速缓存条目与在逻辑地址空间内接近所述客户端存储请求的所述逻辑地址的逻辑地址关联。
29.根据权利要求24所述的方法,其中所述客户端存储请求包括删除存储在所述固态存储设备上的数据,所述方法还包括删除与所述客户端存储请求中引用的所述数据关联的高速缓存条目并且将与所述高速缓存条目关联的存储单元标记为无效。
30.根据权利要求29所述的方法,其中所述客户端存储请求包括删除存储在所述固态存储设备上的数据,所述方法还包括:将高速缓存条目分解成一个或多个高速缓存条目,所述一个或多个高速缓存条目省略对包括所述客户端存储请求中引用的数据的存储单元的引用。
31.根据权利要求24所述的方法,其中所述存储请求引用第一逻辑地址和非连续的第二逻辑地址处的数据,所述方法还包括:
识别第一高速缓存条目,所述第一高速缓存条目引用包括对应于所述第一逻辑地址的数据的存储单元;
识别第二高速缓存条目,所述第二高速缓存条目引用包括对应于所述第二逻辑地址的数据的存储单元;并且
响应于所述客户端存储请求,提供通过所述第一高速缓存条目和所述第二高速缓存条目引用的所述存储单元的数据。
32.根据权利要求24所述的方法,还包括:
访问包括所述固态存储设备的存储分区与客户端逻辑地址之间的关联数据的倒排索引;并且
使用所述倒排索引来提供所述固态存储设备的可用存储容量的指示。
33.一种使机器将数据高速缓存在固态存储设备上的方法,所述方法包括:
维护与在所述固态存储设备上进行的高速缓存操作和所述固态存储设备的存储操作有关的共享元数据,其中该元数据包括索引,该索引被配置为:
a)将存储在所述固态存储设备上的数据的逻辑地址映射至所述固态存储设备的存储单元,以及
b)对于高速缓存在所述固态存储设备上的后备存储器的数据,将该后备存储器的所述数据相对应的逻辑标识符映射至所述固态存储设备的存储单元;
存取所述元数据以管理所述固态存储设备的存储操作,所述存储操作包括使用与所述高速缓存操作有关的所述元数据来选择所述固态存储设备的用于恢复的存储分区;并且
存取所述元数据以管理存储在所述固态存储设备上的高速缓冲存储器,其中管理所述高速缓冲存储器包括使用与所述存储分区的耗损均衡性和所述存储分区的可靠性中的一个或多个有关的所述元数据来选择所述固态存储设备的存储单元以备份到后备存储器中。
CN201080050301.5A 2009-09-08 2010-09-08 用于将数据高速缓存在固态存储设备上的装置、系统和方法 Active CN102696010B (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US24057309P 2009-09-08 2009-09-08
US61/240,573 2009-09-08
US24096609P 2009-09-09 2009-09-09
US61/240,966 2009-09-09
US37327110P 2010-08-12 2010-08-12
US61/373,271 2010-08-12
PCT/US2010/048174 WO2011031796A2 (en) 2009-09-08 2010-09-08 Apparatus, system, and method for caching data on a solid-state storage device

Publications (2)

Publication Number Publication Date
CN102696010A CN102696010A (zh) 2012-09-26
CN102696010B true CN102696010B (zh) 2016-03-23

Family

ID=43731599

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080050301.5A Active CN102696010B (zh) 2009-09-08 2010-09-08 用于将数据高速缓存在固态存储设备上的装置、系统和方法

Country Status (6)

Country Link
US (1) US8719501B2 (zh)
EP (1) EP2476055B1 (zh)
JP (1) JP5999645B2 (zh)
KR (1) KR101717644B1 (zh)
CN (1) CN102696010B (zh)
WO (1) WO2011031796A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107436727A (zh) * 2016-05-26 2017-12-05 中兴通讯股份有限公司 精简卷的存储空间管理方法和装置

Families Citing this family (218)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102193854A (zh) * 2010-03-02 2011-09-21 鸿富锦精密工业(深圳)有限公司 存储设备及其存储容量指示方法
US8712984B2 (en) 2010-03-04 2014-04-29 Microsoft Corporation Buffer pool extension for database server
US9235531B2 (en) 2010-03-04 2016-01-12 Microsoft Technology Licensing, Llc Multi-level buffer pool extensions
US8819208B2 (en) 2010-03-05 2014-08-26 Solidfire, Inc. Data deletion in a distributed data storage system
US8458417B2 (en) * 2010-03-10 2013-06-04 Seagate Technology Llc Garbage collection in a storage device
US9063728B2 (en) * 2010-03-17 2015-06-23 Apple Inc. Systems and methods for handling hibernation data
US9183134B2 (en) 2010-04-22 2015-11-10 Seagate Technology Llc Data segregation in a storage device
WO2011153478A2 (en) * 2010-06-04 2011-12-08 Flashsoft Corporation Cache management and acceleration of storage media
US8959284B1 (en) 2010-06-28 2015-02-17 Western Digital Technologies, Inc. Disk drive steering write data to write cache based on workload
US9058280B1 (en) 2010-08-13 2015-06-16 Western Digital Technologies, Inc. Hybrid drive migrating data from disk to non-volatile semiconductor memory based on accumulated access time
US9268499B1 (en) 2010-08-13 2016-02-23 Western Digital Technologies, Inc. Hybrid drive migrating high workload data from disk to non-volatile semiconductor memory
US8386717B1 (en) * 2010-09-08 2013-02-26 Symantec Corporation Method and apparatus to free up cache memory space with a pseudo least recently used scheme
US9575973B2 (en) * 2010-11-05 2017-02-21 Atc Logistics & Electronics, Inc. System and method for systematically removing customer personal information from an electronic device
US8966184B2 (en) 2011-01-31 2015-02-24 Intelligent Intellectual Property Holdings 2, LLC. Apparatus, system, and method for managing eviction of data
CN102651009B (zh) * 2011-02-28 2014-09-24 国际商业机器公司 一种存储系统中检索数据的方法和设备
US8756474B2 (en) * 2011-03-21 2014-06-17 Denso International America, Inc. Method for initiating a refresh operation in a solid-state nonvolatile memory device
KR101467939B1 (ko) 2011-04-26 2014-12-02 엘에스아이 코포레이션 비휘발성 저장부에 대한 가변 오버­프로비저닝
US9176864B2 (en) 2011-05-17 2015-11-03 SanDisk Technologies, Inc. Non-volatile memory and method having block management with hot/cold data sorting
US9141528B2 (en) 2011-05-17 2015-09-22 Sandisk Technologies Inc. Tracking and handling of super-hot data in non-volatile memory systems
US8868828B2 (en) 2011-05-24 2014-10-21 International Business Machines Corporation Implementing storage adapter performance optimization with cache data/directory mirroring
US8886881B2 (en) 2011-05-24 2014-11-11 International Business Machines Corporation Implementing storage adapter performance optimization with parity update footprint mirroring
US8793462B2 (en) 2011-05-24 2014-07-29 International Business Machines Corporation Implementing storage adapter performance optimization with enhanced resource pool allocation
US8656213B2 (en) * 2011-05-24 2014-02-18 International Business Machines Corporation Implementing storage adapter performance optimization with chained hardware operations and error recovery firmware path
US20120311271A1 (en) * 2011-06-06 2012-12-06 Sanrad, Ltd. Read Cache Device and Methods Thereof for Accelerating Access to Data in a Storage Area Network
US9417894B1 (en) 2011-06-15 2016-08-16 Ryft Systems, Inc. Methods and apparatus for a tablet computer system incorporating a reprogrammable circuit module
US20120324143A1 (en) 2011-06-15 2012-12-20 Data Design Corporation Methods and apparatus for data access by a reprogrammable circuit module
US8949508B2 (en) * 2011-07-18 2015-02-03 Apple Inc. Non-volatile temporary data handling
US8874994B2 (en) 2011-07-22 2014-10-28 Sandisk Technologies Inc. Systems and methods of storing data
US9323659B2 (en) 2011-08-12 2016-04-26 Sandisk Enterprise Ip Llc Cache management including solid state device virtualization
US8719619B2 (en) 2011-09-20 2014-05-06 International Business Machines Corporation Performance enhancement technique for raids under rebuild
US9092316B2 (en) 2011-10-28 2015-07-28 International Business Machines Corporation Methods and storage devices for managing write operations
US9268701B1 (en) * 2011-11-21 2016-02-23 Western Digital Technologies, Inc. Caching of data in data storage systems by managing the size of read and write cache based on a measurement of cache reliability
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
WO2013098463A1 (en) * 2011-12-29 2013-07-04 Nokia Corporation Method for erasing data entity in memory module
US10353637B1 (en) * 2011-12-30 2019-07-16 EMC IP Holding Company LLC Managing data storage
US9251052B2 (en) 2012-01-12 2016-02-02 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for profiling a non-volatile cache having a logical-to-physical translation layer
US10102117B2 (en) * 2012-01-12 2018-10-16 Sandisk Technologies Llc Systems and methods for cache and storage device coordination
US9767032B2 (en) 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
US9053029B2 (en) * 2012-02-06 2015-06-09 Empire Technology Development Llc Multicore computer system with cache use based adaptive scheduling
US8892811B2 (en) 2012-03-01 2014-11-18 Avago Technologies General Ip (Singapore) Pte. Ltd. Reducing write amplification in a flash memory
US20130238851A1 (en) * 2012-03-07 2013-09-12 Netapp, Inc. Hybrid storage aggregate block tracking
CN102662606B (zh) * 2012-03-12 2015-07-08 记忆科技(深圳)有限公司 Raid配置信息的处理方法和raid控制器
US8554963B1 (en) 2012-03-23 2013-10-08 DSSD, Inc. Storage system with multicast DMA and unified address space
US9104684B2 (en) 2012-04-04 2015-08-11 International Business Machines Corporation Cache handling in a database system
US20140047210A1 (en) * 2012-08-08 2014-02-13 Lsi Corporation Trim mechanism using multi-level mapping in a solid-state media
US9684670B2 (en) * 2012-06-13 2017-06-20 Microsoft Technology Licensing, Llc Moving shared files
CN102789368B (zh) * 2012-06-21 2015-10-21 记忆科技(深圳)有限公司 一种固态硬盘及其数据管理方法、系统
US9141544B2 (en) * 2012-06-26 2015-09-22 Qualcomm Incorporated Cache memory with write through, no allocate mode
US9442858B2 (en) * 2012-07-13 2016-09-13 Ianywhere Solutions, Inc. Solid state drives as a persistent cache for database systems
US9274963B2 (en) * 2012-07-20 2016-03-01 International Business Machines Corporation Cache replacement for shared memory caches
US9811414B2 (en) * 2012-07-25 2017-11-07 Silicon Motion Inc. Method for managing data stored in flash memory and associated memory device and controller
TWI485560B (zh) * 2012-08-31 2015-05-21 Ibm 資料分析系統、快取裝置、與資料處理方法
US10095705B2 (en) 2012-09-24 2018-10-09 Microsoft Technology Licensing, Llc Integrated data retention policy for solid state and asymmetric access
US9286219B1 (en) * 2012-09-28 2016-03-15 Emc Corporation System and method for cache management
US9092364B2 (en) 2012-10-04 2015-07-28 International Business Machines Corporation Implementing storage adapter performance control
US9251067B1 (en) 2012-11-01 2016-02-02 Western Digital Technologies, Inc. High speed trim command processing in a solid state drive
US20140129758A1 (en) * 2012-11-06 2014-05-08 Spansion Llc Wear leveling in flash memory devices with trim commands
US8959281B1 (en) * 2012-11-09 2015-02-17 Western Digital Technologies, Inc. Data management for a storage device
CN102999401B (zh) * 2012-11-30 2015-04-29 华为技术有限公司 一种平均备份数据的方法和装置
US9146688B2 (en) 2012-12-05 2015-09-29 SanDisk Technologies, Inc. Advanced groomer for storage array
US9417999B2 (en) * 2012-12-17 2016-08-16 International Business Machines Corporation Write peformance in solid state storage by recognizing copy source to target operations and only storing updates instead of entire block
US9430376B2 (en) * 2012-12-26 2016-08-30 Western Digital Technologies, Inc. Priority-based garbage collection for data storage systems
CN103797770B (zh) * 2012-12-31 2015-12-02 华为技术有限公司 一种共享存储资源的方法和系统
CN103503414B (zh) 2012-12-31 2016-03-09 华为技术有限公司 一种计算存储融合的集群系统
US9367469B2 (en) * 2013-01-31 2016-06-14 Hitachi, Ltd. Storage system and cache control method
US9239682B2 (en) * 2013-02-27 2016-01-19 Vmware, Inc. I/O hint framework for Server Flash Cache
US20140258591A1 (en) * 2013-03-07 2014-09-11 Kabushiki Kaisha Toshiba Data storage and retrieval in a hybrid drive
US9552432B1 (en) * 2013-03-14 2017-01-24 EMC IP Holding Company LLC Lightweight appliance for content retrieval
US20140281124A1 (en) * 2013-03-14 2014-09-18 Bryan E. Veal System and method for caching a storage medium
US9165009B1 (en) * 2013-03-14 2015-10-20 Emc Corporation Lightweight appliance for content storage
WO2014142969A1 (en) * 2013-03-15 2014-09-18 Intel Corporation Object liveness tracking for use in processing device cache
US10180951B2 (en) 2013-03-15 2019-01-15 Amazon Technologies, Inc. Place snapshots
US9858052B2 (en) * 2013-03-21 2018-01-02 Razer (Asia-Pacific) Pte. Ltd. Decentralized operating system
KR102025240B1 (ko) 2013-04-01 2019-11-04 삼성전자주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
TW201441817A (zh) * 2013-04-23 2014-11-01 Hon Hai Prec Ind Co Ltd 資料緩存系統及方法
CN104216796B (zh) * 2013-06-04 2018-02-09 北京联想核芯科技有限公司 一种数据备份、恢复方法及电子设备
US9645920B2 (en) * 2013-06-25 2017-05-09 Marvell World Trade Ltd. Adaptive cache memory controller
US20150019822A1 (en) * 2013-07-11 2015-01-15 Lsi Corporation System for Maintaining Dirty Cache Coherency Across Reboot of a Node
US20150032982A1 (en) * 2013-07-26 2015-01-29 Fusion-Io, Inc. Systems and methods for storage consistency
US9141176B1 (en) 2013-07-29 2015-09-22 Western Digital Technologies, Inc. Power management for data storage device
WO2015015727A1 (ja) * 2013-07-30 2015-02-05 日本電気株式会社 ストレージ装置、データアクセス方法およびプログラム記録媒体
CN103440207B (zh) * 2013-07-31 2017-02-22 北京智谷睿拓技术服务有限公司 缓存方法及装置
CN103473184B (zh) * 2013-08-01 2016-08-10 记忆科技(深圳)有限公司 文件系统的缓存方法及系统
US9070379B2 (en) 2013-08-28 2015-06-30 Western Digital Technologies, Inc. Data migration for data storage device
GB201315435D0 (en) 2013-08-30 2013-10-16 Ibm Cache management in a computerized system
US9984000B2 (en) * 2013-09-06 2018-05-29 Lyve Minds, Inc. Electronic device data distribution
US9268502B2 (en) * 2013-09-16 2016-02-23 Netapp, Inc. Dense tree volume metadata organization
KR102116702B1 (ko) 2013-09-27 2020-05-29 삼성전자 주식회사 데이터 미러링 제어 장치 및 방법
US10019352B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for adaptive reserve storage
US8917471B1 (en) 2013-10-29 2014-12-23 Western Digital Technologies, Inc. Power management for data storage device
JP6299169B2 (ja) 2013-11-14 2018-03-28 富士通株式会社 ストレージ装置、ストレージ装置の制御方法、及びストレージ装置の制御プログラム
KR102103543B1 (ko) * 2013-11-28 2020-05-29 삼성전자 주식회사 내부 하드웨어 필터를 포함하는 일체형 데이터 저장 장치, 이의 동작 방법, 및 상기 데이터 저장 장치를 포함하는 시스템
US9436606B2 (en) * 2014-01-02 2016-09-06 Qualcomm Incorporated System and method to defragment a memory
US9208086B1 (en) * 2014-01-09 2015-12-08 Pure Storage, Inc. Using frequency domain to prioritize storage of metadata in a cache
US9323615B2 (en) * 2014-01-31 2016-04-26 Google Inc. Efficient data reads from distributed storage systems
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
CN104881333B (zh) * 2014-02-27 2018-03-20 国际商业机器公司 一种存储系统及其使用的方法
US9646012B1 (en) * 2014-03-06 2017-05-09 Veritas Technologies Llc Caching temporary data in solid state storage devices
US10019323B1 (en) * 2014-03-25 2018-07-10 EMC IP Holding Company LLC Method and system for container data recovery in a storage system
US10108622B2 (en) 2014-03-26 2018-10-23 International Business Machines Corporation Autonomic regulation of a volatile database table attribute
KR102318478B1 (ko) 2014-04-21 2021-10-27 삼성전자주식회사 스토리지 컨트롤러, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법
US10296240B2 (en) 2014-04-28 2019-05-21 Hewlett Packard Enterprise Development Lp Cache management
US9798728B2 (en) 2014-07-24 2017-10-24 Netapp, Inc. System performing data deduplication using a dense tree data structure
US10114576B2 (en) * 2014-07-24 2018-10-30 Sandisk Technologies Llc Storage device metadata synchronization
US10678880B2 (en) * 2014-08-07 2020-06-09 Greenman Gaming Limited Digital key distribution mechanism
US9244858B1 (en) * 2014-08-25 2016-01-26 Sandisk Technologies Inc. System and method of separating read intensive addresses from non-read intensive addresses
US10133511B2 (en) 2014-09-12 2018-11-20 Netapp, Inc Optimized segment cleaning technique
US9671960B2 (en) 2014-09-12 2017-06-06 Netapp, Inc. Rate matching technique for balancing segment cleaning and I/O workload
US10152412B2 (en) * 2014-09-23 2018-12-11 Oracle International Corporation Smart flash cache logger
US10650027B2 (en) * 2014-11-05 2020-05-12 International Business Machines Corporation Access accelerator for active HBase database regions
US9836229B2 (en) 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
US9619158B2 (en) 2014-12-17 2017-04-11 International Business Machines Corporation Two-level hierarchical log structured array architecture with minimized write amplification
US9606734B2 (en) 2014-12-22 2017-03-28 International Business Machines Corporation Two-level hierarchical log structured array architecture using coordinated garbage collection for flash arrays
KR102368071B1 (ko) 2014-12-29 2022-02-25 삼성전자주식회사 레이드 스토리지 시스템에서의 스트라이프 재구성 방법 및 이를 적용한 가비지 컬렉션 동작 방법 및 레이드 스토리지 시스템
US9542328B2 (en) 2015-01-26 2017-01-10 International Business Machines Corporation Dynamically controlling a file system write cache
US9892045B1 (en) * 2015-01-30 2018-02-13 EMC IP Holding Company LLC Methods to select segments of an evicted cache unit for reinsertion into the cache
US9921963B1 (en) * 2015-01-30 2018-03-20 EMC IP Holding Company LLC Method to decrease computation for cache eviction using deferred calculations
US9720835B1 (en) * 2015-01-30 2017-08-01 EMC IP Holding Company LLC Methods to efficiently implement coarse granularity cache eviction based on segment deletion hints
US9892044B1 (en) * 2015-01-30 2018-02-13 EMC IP Holding Company LLC Methods to efficiently implement coarse granularity cache eviction
US9720601B2 (en) 2015-02-11 2017-08-01 Netapp, Inc. Load balancing technique for a storage array
KR101643087B1 (ko) * 2015-03-06 2016-07-26 한양대학교 산학협력단 메모리 제어 방법 및 메모리 제어 장치
US9762460B2 (en) 2015-03-24 2017-09-12 Netapp, Inc. Providing continuous context for operational information of a storage system
US9710317B2 (en) 2015-03-30 2017-07-18 Netapp, Inc. Methods to identify, handle and recover from suspect SSDS in a clustered flash array
US10146616B1 (en) 2015-03-31 2018-12-04 EMC IP Holding Company LLC Cache based recovery of corrupted or missing data
US9483408B1 (en) * 2015-04-09 2016-11-01 International Business Machines Corporation Deferred metadata initialization
CN104765656A (zh) * 2015-04-23 2015-07-08 浪潮电子信息产业股份有限公司 一种冷数据的备份方法及装置
US9811462B2 (en) * 2015-04-30 2017-11-07 Toshiba Memory Corporation Memory system executing garbage collection
KR102397582B1 (ko) * 2015-06-22 2022-05-13 삼성전자주식회사 데이터 저장 장치, 이를 포함하는 데이터 처리 시스템, 및 이의 작동 방법
KR20170001235A (ko) * 2015-06-26 2017-01-04 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US9652405B1 (en) * 2015-06-30 2017-05-16 EMC IP Holding Company LLC Persistence of page access heuristics in a memory centric architecture
JP6334824B2 (ja) * 2015-07-16 2018-05-30 東芝メモリ株式会社 メモリコントローラ、情報処理装置および処理装置
US9740566B2 (en) 2015-07-31 2017-08-22 Netapp, Inc. Snapshot creation workflow
CN105045685A (zh) * 2015-08-04 2015-11-11 浪潮电子信息产业股份有限公司 缓存数据的备份方法及装置、缓存数据的恢复方法及装置
KR20170051563A (ko) * 2015-10-29 2017-05-12 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US9817757B2 (en) * 2015-11-17 2017-11-14 International Business Machines Corporation Scalable metadata management in a multi-grained caching framework
US9965390B2 (en) * 2015-11-17 2018-05-08 International Business Machines Corporation Reducing defragmentation in a multi-grained writeback cache
US9971692B2 (en) 2015-11-17 2018-05-15 International Business Machines Corporation Supporting concurrent operations at fine granularity in a caching framework
US9916249B2 (en) * 2015-11-17 2018-03-13 International Business Machines Corporation Space allocation in a multi-grained writeback cache
US10095595B2 (en) * 2015-11-17 2018-10-09 International Business Machines Corporation Instant recovery in a multi-grained caching framework
US10108547B2 (en) 2016-01-06 2018-10-23 Netapp, Inc. High performance and memory efficient metadata caching
US10402101B2 (en) 2016-01-07 2019-09-03 Red Hat, Inc. System and method for using persistent memory to accelerate write performance
US20170220476A1 (en) * 2016-01-29 2017-08-03 Netapp, Inc. Systems and Methods for Data Caching in Storage Array Systems
US10001924B2 (en) 2016-03-07 2018-06-19 HGST Netherlands B.V. Efficient and dynamically sized reverse map to handle variable size data
US10437521B2 (en) * 2016-03-25 2019-10-08 Netapp, Inc. Consistent method of indexing file system information
US10191850B2 (en) * 2016-03-31 2019-01-29 Qualcomm Incorporated Providing memory bandwidth compression using multiple last-level cache (LLC) lines in a central processing unit (CPU)-based system
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
US10178152B2 (en) 2016-04-29 2019-01-08 Splunk Inc. Central repository for storing configuration files of a distributed computer system
TWI615705B (zh) * 2016-05-31 2018-02-21 瑞昱半導體股份有限公司 於電腦系統中重置記憶體的方法
US10996989B2 (en) 2016-06-13 2021-05-04 International Business Machines Corporation Flexible optimized data handling in systems with multiple memories
US10754772B2 (en) * 2016-06-14 2020-08-25 Sap Se Reclamation of in-memory database memory resources
US10430081B2 (en) * 2016-06-28 2019-10-01 Netapp, Inc. Methods for minimizing fragmentation in SSD within a storage system and devices thereof
US10739996B1 (en) * 2016-07-18 2020-08-11 Seagate Technology Llc Enhanced garbage collection
US10540098B2 (en) 2016-07-19 2020-01-21 Sap Se Workload-aware page management for in-memory databases in hybrid main memory systems
US10452539B2 (en) 2016-07-19 2019-10-22 Sap Se Simulator for enterprise-scale simulations on hybrid main memory systems
US10783146B2 (en) 2016-07-19 2020-09-22 Sap Se Join operations in hybrid main memory systems
US10474557B2 (en) 2016-07-19 2019-11-12 Sap Se Source code profiling for line-level latency and energy consumption estimation
US10437798B2 (en) 2016-07-19 2019-10-08 Sap Se Full system simulator and memory-aware splay tree for in-memory databases in hybrid memory systems
US11977484B2 (en) 2016-07-19 2024-05-07 Sap Se Adapting in-memory database in hybrid memory systems and operating system interface
US10698732B2 (en) * 2016-07-19 2020-06-30 Sap Se Page ranking in operating system virtual pages in hybrid memory systems
US10387127B2 (en) 2016-07-19 2019-08-20 Sap Se Detecting sequential access data and random access data for placement on hybrid main memory for in-memory databases
US10791172B2 (en) 2016-07-22 2020-09-29 Tinker Pte. Ltd. Systems and methods for interacting with nearby people and devices
US20180052779A1 (en) * 2016-08-19 2018-02-22 Advanced Micro Devices, Inc. Data cache region prefetcher
US10204045B2 (en) 2016-08-30 2019-02-12 International Business Machines Corporation Data file handling in a volatile memory
US10061524B2 (en) * 2016-09-01 2018-08-28 International Business Machines Corporation Wear-leveling of memory devices
US10176090B2 (en) 2016-09-15 2019-01-08 Qualcomm Incorporated Providing memory bandwidth compression using adaptive compression in central processing unit (CPU)-based systems
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
CN106528608B (zh) * 2016-09-27 2022-07-01 中国电力科学研究院 一种云架构下的电网gis数据冷热存储方法和系统
US10540102B2 (en) * 2016-09-30 2020-01-21 Amazon Technologies, Inc. Physical media aware spacially coupled journaling and replay
CN106502592A (zh) * 2016-10-26 2017-03-15 郑州云海信息技术有限公司 固态硬盘缓存块回收方法及系统
US10402345B2 (en) * 2016-10-28 2019-09-03 Intel Corporation Deferred discard in tile-based rendering
US10592115B1 (en) * 2016-11-30 2020-03-17 EMC IP Holding Company LLC Cache management system and method
US10162756B2 (en) * 2017-01-18 2018-12-25 Intel Corporation Memory-efficient last level cache architecture
US10635581B2 (en) 2017-01-20 2020-04-28 Seagate Technology Llc Hybrid drive garbage collection
US10740251B2 (en) * 2017-01-20 2020-08-11 Seagate Technology Llc Hybrid drive translation layer
US10430285B2 (en) * 2017-02-17 2019-10-01 International Business Machines Corporation Backing up metadata
US9998147B1 (en) * 2017-02-27 2018-06-12 International Business Machines Corporation Method for using write intents in a distributed storage network
US10650885B2 (en) 2017-03-07 2020-05-12 Alibaba Group Holding Limited Extending flash storage lifespan and data quality with data retention protection
CN108664214B (zh) * 2017-03-31 2023-05-16 北京忆恒创源科技股份有限公司 用于固态存储设备的分布式缓存的掉电处理方法与装置
CN108733584B (zh) * 2017-04-17 2022-07-19 伊姆西Ip控股有限责任公司 用于优化数据缓存的方法和设备
US10474587B1 (en) 2017-04-27 2019-11-12 EMC IP Holding Company LLC Smart weighted container data cache eviction
US10423533B1 (en) * 2017-04-28 2019-09-24 EMC IP Holding Company LLC Filtered data cache eviction
US10657069B2 (en) 2017-05-15 2020-05-19 Seagate Technology Llc Fine-grained cache operations on data volumes
CN107221351B (zh) * 2017-05-27 2020-06-02 华中科技大学 一种固态盘系统中纠错码的优化处理方法及其应用
US10915527B2 (en) * 2017-06-07 2021-02-09 International Business Machines Corporation Parallel search of a partitioned data set extended (PDSE) in parallel
US20190012259A1 (en) * 2017-07-06 2019-01-10 Futurewei Technologies, Inc. Lba eviction in pcm media
US11010379B2 (en) 2017-08-15 2021-05-18 Sap Se Increasing performance of in-memory databases using re-ordered query execution plans
US10681137B2 (en) * 2017-12-22 2020-06-09 Samsung Electronics Co., Ltd. System and method for network-attached storage devices
CN110058964B (zh) * 2018-01-18 2023-05-02 伊姆西Ip控股有限责任公司 数据恢复方法、数据恢复系统和计算机可读介质
US10705969B2 (en) * 2018-01-19 2020-07-07 Samsung Electronics Co., Ltd. Dedupe DRAM cache
WO2019155241A1 (en) * 2018-02-12 2019-08-15 Google Llc Caching using machine learned predictions
CN109213450B (zh) * 2018-09-10 2021-08-31 郑州云海信息技术有限公司 一种基于闪存阵列的关联元数据删除方法、装置及设备
CN109408496A (zh) * 2018-09-18 2019-03-01 沈文策 一种减少数据冗余的方法及装置
US10831378B2 (en) * 2018-09-24 2020-11-10 International Business Machines Corporation Optimizing data access in a DSN memory for wear leveling
US10564864B1 (en) 2018-10-04 2020-02-18 Dell Products L.P. Method for estimating data retention time in a solid state drive
US10949346B2 (en) 2018-11-08 2021-03-16 International Business Machines Corporation Data flush of a persistent memory cache or buffer
US11232039B2 (en) * 2018-12-10 2022-01-25 Advanced Micro Devices, Inc. Cache for storing regions of data
CN110046132B (zh) * 2019-04-15 2022-04-22 苏州浪潮智能科技有限公司 一种元数据请求处理方法、装置、设备及可读存储介质
US11163500B2 (en) * 2019-04-26 2021-11-02 International Business Machines Corporation Caching files in a directory
US11068455B2 (en) * 2019-04-26 2021-07-20 EMC IP Holding Company LLC Mapper tree with super leaf nodes
US11494338B2 (en) 2019-04-26 2022-11-08 International Business Machines Corporation Caching files in a directory
US11036594B1 (en) 2019-07-25 2021-06-15 Jetstream Software Inc. Disaster recovery systems and methods with low recovery point objectives
CN112306378B (zh) * 2019-08-01 2024-04-09 兆易创新科技集团股份有限公司 用户数据搬移的恢复方法、装置、电子设备及存储介质
CN111026331A (zh) * 2019-11-28 2020-04-17 深信服科技股份有限公司 请求响应方法、装置、设备及计算机可读存储介质
CN114443277A (zh) * 2020-10-31 2022-05-06 华为终端有限公司 内存管理方法、装置、电子设备以及计算机可读存储介质
US11409599B2 (en) * 2020-12-04 2022-08-09 Micron Technology, Inc. Managing probabilistic data integrity scans in workloads with localized read patterns
US11467737B2 (en) 2020-12-04 2022-10-11 Micron Technology, Inc. Reducing probabilistic data integrity scan collisions
US11699498B2 (en) 2020-12-04 2023-07-11 Micron Technology, Inc. Managing probabilistic data integrity scan intervals
US11609857B2 (en) 2020-12-04 2023-03-21 Micron Technology, Inc. Identification and caching of frequent read disturb aggressors
CN113111014B (zh) * 2021-04-07 2023-01-06 山东英信计算机技术有限公司 缓存中非热点数据的清理方法、装置、设备及存储介质
US11481134B1 (en) * 2021-05-24 2022-10-25 Sap Se Adaptive caching for hybrid columnar databases with heterogeneous page sizes
US11656792B2 (en) * 2021-06-29 2023-05-23 International Business Machines Corporation Mirroring data in write caches of a controller of a non-volatile memory
US11494303B1 (en) 2021-09-29 2022-11-08 EMC IP Holding Company LLC Data storage system with adaptive, memory-efficient cache flushing structure
CN113868192B (zh) * 2021-12-03 2022-04-08 深圳市杉岩数据技术有限公司 一种数据存储设备、方法与分布式数据存储系统
US11934706B2 (en) * 2021-12-22 2024-03-19 Western Digital Technologies, Inc. Smart relocation scan optimization
CN114579596B (zh) * 2022-05-06 2022-09-06 达而观数据(成都)有限公司 一种实时更新搜索引擎索引数据的方法及系统
CN115480697A (zh) * 2022-07-29 2022-12-16 天翼云科技有限公司 数据处理方法、装置、计算机设备及存储介质
CN116303586B (zh) * 2022-12-09 2024-01-30 中电云计算技术有限公司 一种基于多级b+tree的元数据缓存淘汰方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101025712A (zh) * 2006-02-24 2007-08-29 三星电子株式会社 使用非易失性存储器的存储设备及其映射信息恢复方法
CN101059752A (zh) * 2006-04-21 2007-10-24 株式会社东芝 使用非易失性高速缓存的存储装置及其控制方法

Family Cites Families (341)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4571674A (en) 1982-09-27 1986-02-18 International Business Machines Corporation Peripheral storage system having multiple data transfer rates
US5247658A (en) 1989-10-31 1993-09-21 Microsoft Corporation Method and system for traversing linked list record based upon write-once predetermined bit value of secondary pointers
US5261068A (en) 1990-05-25 1993-11-09 Dell Usa L.P. Dual path memory retrieval system for an interleaved dynamic RAM memory unit
US5193184A (en) * 1990-06-18 1993-03-09 Storage Technology Corporation Deleted data file space release system for a dynamically mapped virtual data storage subsystem
US5307497A (en) 1990-06-25 1994-04-26 International Business Machines Corp. Disk operating system loadable from read only memory using installable file system interface
US5291496A (en) 1990-10-18 1994-03-01 The United States Of America As Represented By The United States Department Of Energy Fault-tolerant corrector/detector chip for high-speed data processing
US5325509A (en) 1991-03-05 1994-06-28 Zitel Corporation Method of operating a cache memory including determining desirability of cache ahead or cache behind based on a number of available I/O operations
US5438671A (en) 1991-07-19 1995-08-01 Dell U.S.A., L.P. Method and system for transferring compressed bytes of information between separate hard disk drive units
US5313475A (en) 1991-10-31 1994-05-17 International Business Machines Corporation ECC function with self-contained high performance partial write or read/modify/write and parity look-ahead interface scheme
US5469555A (en) 1991-12-19 1995-11-21 Opti, Inc. Adaptive write-back method and apparatus wherein the cache system operates in a combination of write-back and write-through modes for a cache-based microprocessor system
US6256642B1 (en) * 1992-01-29 2001-07-03 Microsoft Corporation Method and system for file system management using a flash-erasable, programmable, read-only memory
US5596736A (en) 1992-07-22 1997-01-21 Fujitsu Limited Data transfers to a backing store of a dynamically mapped data storage system in which data has nonsequential logical addresses
US5416915A (en) 1992-12-11 1995-05-16 International Business Machines Corporation Method and system for minimizing seek affinity and enhancing write sensitivity in a DASD array
US5845329A (en) 1993-01-29 1998-12-01 Sanyo Electric Co., Ltd. Parallel computer
JPH06243042A (ja) * 1993-02-19 1994-09-02 Hitachi Ltd 記憶制御装置
JP2856621B2 (ja) * 1993-02-24 1999-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
JP2784440B2 (ja) 1993-04-14 1998-08-06 インターナショナル・ビジネス・マシーンズ・コーポレイション データ・ページの転送制御方法
CA2121852A1 (en) 1993-04-29 1994-10-30 Larry T. Jost Disk meshing and flexible storage mapping with enhanced flexible caching
US5499354A (en) 1993-05-19 1996-03-12 International Business Machines Corporation Method and means for dynamic cache management by variable space and time binding and rebinding of cache extents to DASD cylinders
US5682497A (en) * 1993-09-28 1997-10-28 Intel Corporation Managing file structures for a flash memory file system in a computer
US5535399A (en) * 1993-09-30 1996-07-09 Quantum Corporation Solid state disk drive unit having on-board backup non-volatile memory
US5809527A (en) 1993-12-23 1998-09-15 Unisys Corporation Outboard file cache system
JPH086854A (ja) 1993-12-23 1996-01-12 Unisys Corp アウトボードファイルキャッシュ外部処理コンプレックス
US5559988A (en) 1993-12-30 1996-09-24 Intel Corporation Method and circuitry for queuing snooping, prioritizing and suspending commands
US5553261A (en) * 1994-04-01 1996-09-03 Intel Corporation Method of performing clean-up of a solid state disk while executing a read command
US5603001A (en) 1994-05-09 1997-02-11 Kabushiki Kaisha Toshiba Semiconductor disk system having a plurality of flash memories
US5696917A (en) * 1994-06-03 1997-12-09 Intel Corporation Method and apparatus for performing burst read operations in an asynchronous nonvolatile memory
US5504882A (en) 1994-06-20 1996-04-02 International Business Machines Corporation Fault tolerant data storage subsystem employing hierarchically arranged controllers
DE19540915A1 (de) 1994-11-10 1996-05-15 Raymond Engineering Redundante Anordnung von Festkörper-Speicherbausteinen
US6170047B1 (en) 1994-11-16 2001-01-02 Interactive Silicon, Inc. System and method for managing system memory and/or non-volatile memory using a memory controller with integrated compression and decompression capabilities
US6002411A (en) 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
US5586291A (en) 1994-12-23 1996-12-17 Emc Corporation Disk controller with volatile and non-volatile cache memories
US5651133A (en) * 1995-02-01 1997-07-22 Hewlett-Packard Company Methods for avoiding over-commitment of virtual capacity in a redundant hierarchic data storage system
US5701434A (en) 1995-03-16 1997-12-23 Hitachi, Ltd. Interleave memory controller with a common access queue
WO1996032685A1 (en) * 1995-04-11 1996-10-17 Kinetech, Inc. Identifying data in a data processing system
US5682499A (en) * 1995-06-06 1997-10-28 International Business Machines Corporation Directory rebuild method and apparatus for maintaining and rebuilding directory information for compressed data on direct access storage device (DASD)
EP0747825B1 (en) 1995-06-06 2001-09-19 Hewlett-Packard Company, A Delaware Corporation SDRAM data allocation system and method
US5845313A (en) 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
US6978342B1 (en) 1995-07-31 2005-12-20 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US6757800B1 (en) 1995-07-31 2004-06-29 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5930815A (en) 1995-07-31 1999-07-27 Lexar Media, Inc. Moving sequential sectors within a block of information in a flash memory mass storage architecture
US6801979B1 (en) 1995-07-31 2004-10-05 Lexar Media, Inc. Method and apparatus for memory control circuit
US6081878A (en) 1997-03-31 2000-06-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5907856A (en) 1995-07-31 1999-05-25 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US6728851B1 (en) * 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5838614A (en) 1995-07-31 1998-11-17 Lexar Microsystems, Inc. Identification and verification of a sector within a block of mass storage flash memory
US8171203B2 (en) 1995-07-31 2012-05-01 Micron Technology, Inc. Faster write operations to nonvolatile memory using FSInfo sector manipulation
US5754563A (en) 1995-09-11 1998-05-19 Ecc Technologies, Inc. Byte-parallel system for implementing reed-solomon error-correcting codes
US6014724A (en) * 1995-10-27 2000-01-11 Scm Microsystems (U.S.) Inc. Flash translation layer block indication map revision system and method
US6330688B1 (en) 1995-10-31 2001-12-11 Intel Corporation On chip error correction for devices in a solid state drive
US5734861A (en) 1995-12-12 1998-03-31 International Business Machines Corporation Log-structured disk array with garbage collection regrouping of tracks to preserve seek affinity
US5787486A (en) 1995-12-15 1998-07-28 International Business Machines Corporation Bus protocol for locked cycle cache hit
US5757567A (en) * 1996-02-08 1998-05-26 International Business Machines Corporation Method and apparatus for servo control with high efficiency gray code for servo track ID
US6385710B1 (en) 1996-02-23 2002-05-07 Sun Microsystems, Inc. Multiple-mode external cache subsystem
US5960462A (en) 1996-09-26 1999-09-28 Intel Corporation Method and apparatus for analyzing a main memory configuration to program a memory controller
US5754567A (en) 1996-10-15 1998-05-19 Micron Quantum Devices, Inc. Write reduction in flash memory systems through ECC usage
TW349196B (en) 1996-10-18 1999-01-01 Ibm Cached synchronous DRAM architecture having a mode register programmable cache policy
JPH10154101A (ja) 1996-11-26 1998-06-09 Toshiba Corp データ記憶システム及び同システムに適用するキャッシュ制御方法
US6279069B1 (en) 1996-12-26 2001-08-21 Intel Corporation Interface for flash EEPROM memory arrays
US5802602A (en) * 1997-01-17 1998-09-01 Intel Corporation Method and apparatus for performing reads of related data from a set-associative cache memory
US6073232A (en) 1997-02-25 2000-06-06 International Business Machines Corporation Method for minimizing a computer's initial program load time after a system reset or a power-on using non-volatile storage
US5961660A (en) 1997-03-03 1999-10-05 International Business Machines Corporation Method and apparatus for optimizing ECC memory performance
JP3459868B2 (ja) 1997-05-16 2003-10-27 日本電気株式会社 メモリ障害時におけるグループ入れ替え方式
US6418478B1 (en) 1997-10-30 2002-07-09 Commvault Systems, Inc. Pipelined high speed data transfer mechanism
US6567889B1 (en) 1997-12-19 2003-05-20 Lsi Logic Corporation Apparatus and method to provide virtual solid state disk in cache memory in a storage controller
US6101601A (en) 1998-04-20 2000-08-08 International Business Machines Corporation Method and apparatus for hibernation within a distributed data processing system
US5957158A (en) * 1998-05-11 1999-09-28 Automatic Switch Company Visual position indicator
US6185654B1 (en) 1998-07-17 2001-02-06 Compaq Computer Corporation Phantom resource memory address mapping system
US6507911B1 (en) * 1998-07-22 2003-01-14 Entrust Technologies Limited System and method for securely deleting plaintext data
US6209088B1 (en) 1998-09-21 2001-03-27 Microsoft Corporation Computer hibernation implemented by a computer operating system
US7233977B2 (en) * 1998-12-18 2007-06-19 Emc Corporation Messaging mechanism employing mailboxes for inter processor communications
US6629112B1 (en) * 1998-12-31 2003-09-30 Nortel Networks Limited Resource management for CORBA-based applications
US6412080B1 (en) 1999-02-23 2002-06-25 Microsoft Corporation Lightweight persistent storage system for flash memory devices
JP2000259525A (ja) 1999-03-10 2000-09-22 Nec Corp 通信プロトコルにおける応答返却方法および通信制御装置
US6141249A (en) 1999-04-01 2000-10-31 Lexar Media, Inc. Organization of blocks within a nonvolatile memory unit to effectively decrease sector write operation time
KR100330164B1 (ko) * 1999-04-27 2002-03-28 윤종용 무효 블록들을 가지는 복수의 플래시 메모리들을 동시에 프로그램하는 방법
US7194740B1 (en) * 1999-05-28 2007-03-20 Oracle International Corporation System for extending an addressable range of memory
US7934074B2 (en) * 1999-08-04 2011-04-26 Super Talent Electronics Flash module with plane-interleaved sequential writes to restricted-write flash chips
US7660941B2 (en) * 2003-09-10 2010-02-09 Super Talent Electronics, Inc. Two-level RAM lookup table for block and page allocation and wear-leveling in limited-write flash-memories
US6336174B1 (en) * 1999-08-09 2002-01-01 Maxtor Corporation Hardware assisted memory backup system and method
KR100577380B1 (ko) 1999-09-29 2006-05-09 삼성전자주식회사 플래시 메모리와 그 제어 방법
WO2001031512A2 (en) 1999-10-25 2001-05-03 Infolibria, Inc. Fast indexing of web objects
DE60004463D1 (de) 1999-10-25 2003-09-18 Sun Microsystems Inc Speichersystem mit Unterstützung von Dateistufenzugriffen und Blockstufenzugriffen
US8171204B2 (en) * 2000-01-06 2012-05-01 Super Talent Electronics, Inc. Intelligent solid-state non-volatile memory device (NVMD) system with multi-level caching of multiple channels
US8452912B2 (en) * 2007-10-11 2013-05-28 Super Talent Electronics, Inc. Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read
US6671757B1 (en) 2000-01-26 2003-12-30 Fusionone, Inc. Data transfer and synchronization system
US6785785B2 (en) 2000-01-25 2004-08-31 Hewlett-Packard Development Company, L.P. Method for supporting multi-level stripping of non-homogeneous memory to maximize concurrency
US6240040B1 (en) 2000-03-15 2001-05-29 Advanced Micro Devices, Inc. Multiple bank simultaneous operation for a flash memory
US7089391B2 (en) 2000-04-14 2006-08-08 Quickshift, Inc. Managing a codec engine for memory compression/decompression operations using a data movement engine
US6523102B1 (en) 2000-04-14 2003-02-18 Interactive Silicon, Inc. Parallel compression/decompression system and method for implementation of in-memory compressed cache improving storage density and access speed for industry standard memory subsystems and in-line memory modules
US6675349B1 (en) 2000-05-11 2004-01-06 International Business Machines Corporation Error correction coding of data blocks with included parity bits
US6779094B2 (en) * 2000-06-19 2004-08-17 Storage Technology Corporation Apparatus and method for instant copy of data by writing new data to an additional physical storage area
US6804755B2 (en) 2000-06-19 2004-10-12 Storage Technology Corporation Apparatus and method for performing an instant copy of data based on a dynamically changeable virtual mapping scheme
US6912537B2 (en) 2000-06-20 2005-06-28 Storage Technology Corporation Dynamically changeable virtual mapping scheme
JP3951918B2 (ja) 2000-06-23 2007-08-01 インテル・コーポレーション 不揮発性キャッシュ
US6813686B1 (en) 2000-06-27 2004-11-02 Emc Corporation Method and apparatus for identifying logical volumes in multiple element computer storage domains
US6981070B1 (en) 2000-07-12 2005-12-27 Shun Hang Luk Network storage device having solid-state non-volatile memory
US6658438B1 (en) 2000-08-14 2003-12-02 Matrix Semiconductor, Inc. Method for deleting stored digital data from write-once memory device
US6404647B1 (en) 2000-08-24 2002-06-11 Hewlett-Packard Co. Solid-state mass memory storage device
US6883079B1 (en) 2000-09-01 2005-04-19 Maxtor Corporation Method and apparatus for using data compression as a means of increasing buffer bandwidth
US6625685B1 (en) 2000-09-20 2003-09-23 Broadcom Corporation Memory controller with programmable configuration
US7039727B2 (en) 2000-10-17 2006-05-02 Microsoft Corporation System and method for controlling mass storage class digital imaging devices
US6779088B1 (en) 2000-10-24 2004-08-17 International Business Machines Corporation Virtual uncompressed cache size control in compressed memory systems
US6549987B1 (en) * 2000-11-16 2003-04-15 Intel Corporation Cache structure for storing variable length data
US20020167945A1 (en) * 2000-11-22 2002-11-14 Yeshik Shin Method and system for packet ordering based on packet type
US20020069317A1 (en) 2000-12-01 2002-06-06 Chow Yan Chiew E-RAID system and method of operating the same
US6976060B2 (en) 2000-12-05 2005-12-13 Agami Sytems, Inc. Symmetric shared file storage system
US20020103819A1 (en) 2000-12-12 2002-08-01 Fresher Information Corporation Technique for stabilizing data in a non-log based information storage and retrieval system
US7013376B2 (en) 2000-12-20 2006-03-14 Hewlett-Packard Development Company, L.P. Method and system for data block sparing in a solid-state storage device
KR100365725B1 (ko) * 2000-12-27 2002-12-26 한국전자통신연구원 플래시 메모리를 이용한 파일 시스템에서 등급별 지움정책 및 오류 복구 방법
KR100708475B1 (ko) 2001-01-08 2007-04-18 삼성전자주식회사 펑쳐링된 패리티심벌을 복원하는 터보디코더용 프리디코더 및 터보코드의 복원방법
JP4818812B2 (ja) 2006-05-31 2011-11-16 株式会社日立製作所 フラッシュメモリストレージシステム
US6516380B2 (en) 2001-02-05 2003-02-04 International Business Machines Corporation System and method for a log-based non-volatile write cache in a storage controller
AU2002305315A1 (en) 2001-05-08 2002-11-18 International Business Machines Corporation 8b/10b encoding and decoding for high speed applications
US6731447B2 (en) 2001-06-04 2004-05-04 Xerox Corporation Secure data file erasure
JP4256600B2 (ja) 2001-06-19 2009-04-22 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
US6839808B2 (en) 2001-07-06 2005-01-04 Juniper Networks, Inc. Processing cluster having multiple compute engines and shared tier one caches
US6785776B2 (en) 2001-07-26 2004-08-31 International Business Machines Corporation DMA exclusive cache state providing a fully pipelined input/output DMA write mechanism
US7275135B2 (en) * 2001-08-31 2007-09-25 Intel Corporation Hardware updated metadata for non-volatile mass storage cache
US20030061296A1 (en) 2001-09-24 2003-03-27 International Business Machines Corporation Memory semantic storage I/O
US6938133B2 (en) 2001-09-28 2005-08-30 Hewlett-Packard Development Company, L.P. Memory latency and bandwidth optimizations
GB0123416D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
US6892264B2 (en) 2001-10-05 2005-05-10 International Business Machines Corporation Storage area network methods and apparatus for associating a logical identification with a physical identification
US20030093741A1 (en) 2001-11-14 2003-05-15 Cenk Argon Parallel decoder for product codes
US6715046B1 (en) 2001-11-29 2004-03-30 Cisco Technology, Inc. Method and apparatus for reading from and writing to storage using acknowledged phases of sets of data
US7173929B1 (en) 2001-12-10 2007-02-06 Incipient, Inc. Fast path for performing data operations
US7013379B1 (en) 2001-12-10 2006-03-14 Incipient, Inc. I/O primitives
JP4061272B2 (ja) * 2002-01-09 2008-03-12 株式会社ルネサステクノロジ メモリシステム及びメモリカード
TWI257085B (en) * 2002-01-21 2006-06-21 Koninkl Philips Electronics Nv Method of encoding and decoding
JP4154893B2 (ja) 2002-01-23 2008-09-24 株式会社日立製作所 ネットワークストレージ仮想化方法
US20030145230A1 (en) 2002-01-31 2003-07-31 Huimin Chiu System for exchanging data utilizing remote direct memory access
US6871257B2 (en) * 2002-02-22 2005-03-22 Sandisk Corporation Pipelined parallel programming operation in a non-volatile memory system
US7533214B2 (en) * 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
US7085879B2 (en) * 2002-02-27 2006-08-01 Microsoft Corporation Dynamic data structures for tracking data stored in a flash memory device
US7010662B2 (en) 2002-02-27 2006-03-07 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
JP2003281071A (ja) 2002-03-20 2003-10-03 Seiko Epson Corp データ転送制御装置、電子機器及びデータ転送制御方法
JP4050548B2 (ja) 2002-04-18 2008-02-20 株式会社ルネサステクノロジ 半導体記憶装置
US7043599B1 (en) 2002-06-20 2006-05-09 Rambus Inc. Dynamic memory supporting simultaneous refresh and data-access transactions
US7562089B2 (en) 2002-06-26 2009-07-14 Seagate Technology Llc Systems and methods for storing information to allow users to manage files
US7082495B2 (en) 2002-06-27 2006-07-25 Microsoft Corporation Method and apparatus to reduce power consumption and improve read/write performance of hard disk drives using non-volatile memory
JP4001516B2 (ja) 2002-07-05 2007-10-31 富士通株式会社 縮退制御装置及び方法
US7051152B1 (en) 2002-08-07 2006-05-23 Nvidia Corporation Method and system of improving disk access time by compression
KR100505638B1 (ko) 2002-08-28 2005-08-03 삼성전자주식회사 워킹 콘텍스트 저장 및 복구 장치 및 방법
US7340566B2 (en) 2002-10-21 2008-03-04 Microsoft Corporation System and method for initializing a memory device from block oriented NAND flash
US7171536B2 (en) * 2002-10-28 2007-01-30 Sandisk Corporation Unusable block management within a non-volatile memory system
US7035974B2 (en) * 2002-11-06 2006-04-25 Synology Inc. RAID-5 disk having cache memory implemented using non-volatile RAM
US6996676B2 (en) 2002-11-14 2006-02-07 International Business Machines Corporation System and method for implementing an adaptive replacement cache policy
US7093101B2 (en) * 2002-11-21 2006-08-15 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
US7121639B2 (en) 2002-12-02 2006-10-17 Silverbrook Research Pty Ltd Data rate equalisation to account for relatively different printhead widths
US6957158B1 (en) * 2002-12-23 2005-10-18 Power Measurement Ltd. High density random access memory in an intelligent electric device
KR100502608B1 (ko) 2002-12-24 2005-07-20 한국전자통신연구원 계산이 간단한 저밀도 패리티 검사 부호를 위한 메시지 전달 복호기
US20040148360A1 (en) 2003-01-24 2004-07-29 Hewlett-Packard Development Company Communication-link-attached persistent memory device
US6959369B1 (en) * 2003-03-06 2005-10-25 International Business Machines Corporation Method, system, and program for data backup
US7076723B2 (en) 2003-03-14 2006-07-11 Quantum Corporation Error correction codes
US8041878B2 (en) 2003-03-19 2011-10-18 Samsung Electronics Co., Ltd. Flash file system
US7197657B1 (en) 2003-04-03 2007-03-27 Advanced Micro Devices, Inc. BMC-hosted real-time clock and non-volatile RAM replacement
US7610348B2 (en) 2003-05-07 2009-10-27 International Business Machines Distributed file serving architecture system with metadata storage virtualization and data access at the data server connection speed
JP2004348818A (ja) 2003-05-20 2004-12-09 Sharp Corp 半導体記憶装置の書込制御方法及びシステム並びに携帯電子機器
US7243203B2 (en) 2003-06-13 2007-07-10 Sandisk 3D Llc Pipeline circuit for low latency memory
US7047366B1 (en) 2003-06-17 2006-05-16 Emc Corporation QOS feature knobs
US20040268359A1 (en) 2003-06-27 2004-12-30 Hanes David H. Computer-readable medium, method and computer system for processing input/output requests
US7149947B1 (en) 2003-09-04 2006-12-12 Emc Corporation Method of and system for validating an error correction code and parity information associated with a data word
US7483974B2 (en) 2003-09-24 2009-01-27 Intel Corporation Virtual management controller to coordinate processing blade management in a blade server environment
US7487235B2 (en) 2003-09-24 2009-02-03 Dell Products L.P. Dynamically varying a raid cache policy in order to optimize throughput
US7173852B2 (en) * 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
US7337201B1 (en) 2003-10-08 2008-02-26 Sun Microsystems, Inc. System and method to increase memory allocation efficiency
TWI238325B (en) 2003-10-09 2005-08-21 Quanta Comp Inc Apparatus of remote server console redirection
US7096321B2 (en) 2003-10-21 2006-08-22 International Business Machines Corporation Method and system for a cache replacement technique with adaptive skipping
WO2005065084A2 (en) 2003-11-13 2005-07-21 Commvault Systems, Inc. System and method for providing encryption in pipelined storage operations in a storage network
WO2005050453A1 (ja) 2003-11-18 2005-06-02 Matsushita Electric Industrial Co., Ltd. ファイル記録装置
US7350127B2 (en) 2003-12-12 2008-03-25 Hewlett-Packard Development Company, L.P. Error correction method and system
US20050149819A1 (en) 2003-12-15 2005-07-07 Daewoo Electronics Corporation Three-dimensional error correction method
US7500000B2 (en) 2003-12-17 2009-03-03 International Business Machines Corporation Method and system for assigning or creating a resource
US20050149618A1 (en) 2003-12-23 2005-07-07 Mobile Action Technology Inc. System and method of transmitting electronic files over to a mobile phone
US7631138B2 (en) 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7328307B2 (en) * 2004-01-22 2008-02-05 Tquist, Llc Method and apparatus for improving update performance of non-uniform access time persistent storage media
US7356651B2 (en) 2004-01-30 2008-04-08 Piurata Technologies, Llc Data-aware cache state machine
US7305520B2 (en) 2004-01-30 2007-12-04 Hewlett-Packard Development Company, L.P. Storage system with capability to allocate virtual storage segments among a plurality of controllers
KR100526190B1 (ko) * 2004-02-06 2005-11-03 삼성전자주식회사 플래시 메모리의 재사상 방법
US7130957B2 (en) 2004-02-10 2006-10-31 Sun Microsystems, Inc. Storage system structure for storing relational cache metadata
US7130956B2 (en) * 2004-02-10 2006-10-31 Sun Microsystems, Inc. Storage system including hierarchical cache metadata
US7231590B2 (en) 2004-02-11 2007-06-12 Microsoft Corporation Method and apparatus for visually emphasizing numerical data contained within an electronic document
JP2005250938A (ja) 2004-03-05 2005-09-15 Hitachi Ltd 記憶制御システム及び方法
US7281192B2 (en) 2004-04-05 2007-10-09 Broadcom Corporation LDPC (Low Density Parity Check) coded signal decoding using parallel and simultaneous bit node and check node processing
US7725628B1 (en) 2004-04-20 2010-05-25 Lexar Media, Inc. Direct secondary device interface by a host
US20050240713A1 (en) 2004-04-22 2005-10-27 V-Da Technology Flash memory device with ATA/ATAPI/SCSI or proprietary programming interface on PCI express
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7360015B2 (en) 2004-05-04 2008-04-15 Intel Corporation Preventing storage of streaming accesses in a cache
US7386663B2 (en) 2004-05-13 2008-06-10 Cousins Robert E Transaction-based storage system and method that uses variable sized objects to store data
US7512830B2 (en) 2004-05-14 2009-03-31 International Business Machines Corporation Management module failover across multiple blade center chassis
US20050257017A1 (en) 2004-05-14 2005-11-17 Hideki Yagi Method and apparatus to erase hidden memory in a memory card
US7831561B2 (en) 2004-05-18 2010-11-09 Oracle International Corporation Automated disk-oriented backups
US7590522B2 (en) 2004-06-14 2009-09-15 Hewlett-Packard Development Company, L.P. Virtual mass storage device for server management information
US7231497B2 (en) * 2004-06-15 2007-06-12 Intel Corporation Merging write-back and write-through cache policies
US7447847B2 (en) 2004-07-19 2008-11-04 Micron Technology, Inc. Memory device trims
US7395384B2 (en) * 2004-07-21 2008-07-01 Sandisk Corproation Method and apparatus for maintaining data on non-volatile memory systems
US7203815B2 (en) 2004-07-30 2007-04-10 International Business Machines Corporation Multi-level page cache for enhanced file system performance via read ahead
US8407396B2 (en) 2004-07-30 2013-03-26 Hewlett-Packard Development Company, L.P. Providing block data access for an operating system using solid-state memory
US7664239B2 (en) * 2004-08-09 2010-02-16 Cox Communications, Inc. Methods and computer-readable media for managing and configuring options for the real-time notification and disposition of voice services in a cable services network
US7398348B2 (en) * 2004-08-24 2008-07-08 Sandisk 3D Llc Method and apparatus for using a one-time or few-time programmable memory with a host device designed for erasable/rewritable memory
EP1786205A1 (en) 2004-08-30 2007-05-16 Matsushita Electric Industrial Co., Ltd. Recorder
US20060075057A1 (en) 2004-08-30 2006-04-06 International Business Machines Corporation Remote direct memory access system and method
JP4648674B2 (ja) 2004-10-01 2011-03-09 株式会社日立製作所 記憶制御装置、記憶制御システム及び記憶制御方法
US7603532B2 (en) 2004-10-15 2009-10-13 Netapp, Inc. System and method for reclaiming unused space from a thinly provisioned data container
US8131969B2 (en) 2004-10-20 2012-03-06 Seagate Technology Llc Updating system configuration information
JP2006127028A (ja) 2004-10-27 2006-05-18 Hitachi Ltd 記憶システム及び記憶制御装置
US7310711B2 (en) 2004-10-29 2007-12-18 Hitachi Global Storage Technologies Netherlands B.V. Hard disk drive with support for atomic transactions
US7873782B2 (en) * 2004-11-05 2011-01-18 Data Robotics, Inc. Filesystem-aware block storage system, apparatus, and method
US20060106968A1 (en) 2004-11-15 2006-05-18 Wooi Teoh Gary C Intelligent platform management bus switch system
JP2008523468A (ja) 2004-12-06 2008-07-03 テイアック エアロスペース テクノロジーズ インコーポレイテッド 不揮発記録媒体消去システム及び方法
US8074041B2 (en) 2004-12-09 2011-12-06 International Business Machines Corporation Apparatus, system, and method for managing storage space allocation
US7581118B2 (en) 2004-12-14 2009-08-25 Netapp, Inc. Disk sanitization using encryption
US7487320B2 (en) 2004-12-15 2009-02-03 International Business Machines Corporation Apparatus and system for dynamically allocating main memory among a plurality of applications
KR100684887B1 (ko) 2005-02-04 2007-02-20 삼성전자주식회사 플래시 메모리를 포함한 데이터 저장 장치 및 그것의 머지방법
US20060136657A1 (en) 2004-12-22 2006-06-22 Intel Corporation Embedding a filesystem into a non-volatile device
US20060143396A1 (en) 2004-12-29 2006-06-29 Mason Cabot Method for programmer-controlled cache line eviction policy
US7246195B2 (en) 2004-12-30 2007-07-17 Intel Corporation Data storage management for flash memory devices
KR100621631B1 (ko) 2005-01-11 2006-09-13 삼성전자주식회사 반도체 디스크 제어 장치
US9104315B2 (en) 2005-02-04 2015-08-11 Sandisk Technologies Inc. Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
US20060184719A1 (en) 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
US20060190552A1 (en) 2005-02-24 2006-08-24 Henze Richard H Data retention system with a plurality of access protocols
US7254686B2 (en) * 2005-03-31 2007-08-07 International Business Machines Corporation Switching between mirrored and non-mirrored volumes
US7620773B2 (en) 2005-04-15 2009-11-17 Microsoft Corporation In-line non volatile memory disk read cache and write buffer
US20060236061A1 (en) 2005-04-18 2006-10-19 Creek Path Systems Systems and methods for adaptively deriving storage policy and configuration rules
US7130960B1 (en) * 2005-04-21 2006-10-31 Hitachi, Ltd. System and method for managing disk space in a thin-provisioned storage subsystem
US20060265636A1 (en) 2005-05-19 2006-11-23 Klaus Hummler Optimized testing of on-chip error correction circuit
US7457910B2 (en) 2005-06-29 2008-11-25 Sandisk Corproation Method and system for managing partitions in a storage device
US7716387B2 (en) 2005-07-14 2010-05-11 Canon Kabushiki Kaisha Memory control apparatus and method
US7409489B2 (en) 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
US7552271B2 (en) 2005-08-03 2009-06-23 Sandisk Corporation Nonvolatile memory with block management
US7480766B2 (en) * 2005-08-03 2009-01-20 Sandisk Corporation Interfacing systems operating through a logical address space and on a direct data file basis
KR100739722B1 (ko) 2005-08-20 2007-07-13 삼성전자주식회사 플래시 메모리 관리 방법 및 플래시 메모리 시스템
US7580287B2 (en) 2005-09-01 2009-08-25 Micron Technology, Inc. Program and read trim setting
JP5008845B2 (ja) 2005-09-01 2012-08-22 株式会社日立製作所 ストレージシステムとストレージ装置及びその制御方法
US20070061508A1 (en) 2005-09-13 2007-03-15 Quantum Corporation Data storage cartridge with built-in tamper-resistant clock
US7437510B2 (en) 2005-09-30 2008-10-14 Intel Corporation Instruction-assisted cache management for efficient use of cache and memory
US7529905B2 (en) * 2005-10-13 2009-05-05 Sandisk Corporation Method of storing transformed units of data in a memory system having fixed sized storage blocks
US7516267B2 (en) * 2005-11-03 2009-04-07 Intel Corporation Recovering from a non-volatile memory failure
US7739472B2 (en) 2005-11-22 2010-06-15 Sandisk Corporation Memory system for legacy hosts
US7366808B2 (en) 2005-11-23 2008-04-29 Hitachi, Ltd. System, method and apparatus for multiple-protocol-accessible OSD storage subsystem
US7526614B2 (en) * 2005-11-30 2009-04-28 Red Hat, Inc. Method for tuning a cache
US8112513B2 (en) 2005-11-30 2012-02-07 Microsoft Corporation Multi-user display proxy server
US7877540B2 (en) 2005-12-13 2011-01-25 Sandisk Corporation Logically-addressed file storage methods
JP4807063B2 (ja) * 2005-12-20 2011-11-02 ソニー株式会社 復号装置、制御方法、およびプログラム
US20070143567A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Methods for data alignment in non-volatile memories with a directly mapped file storage system
US20070156998A1 (en) 2005-12-21 2007-07-05 Gorobets Sergey A Methods for memory allocation in non-volatile memories with a directly mapped file storage system
US7747837B2 (en) 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
US20070143560A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with memory allocation for a directly mapped file storage system
US20070143566A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with data alignment in a directly mapped file storage system
US7831783B2 (en) 2005-12-22 2010-11-09 Honeywell International Inc. Effective wear-leveling and concurrent reclamation method for embedded linear flash file systems
KR100755700B1 (ko) * 2005-12-27 2007-09-05 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 관리방법
US20070150663A1 (en) 2005-12-27 2007-06-28 Abraham Mendelson Device, system and method of multi-state cache coherence scheme
EP1990727A4 (en) 2006-02-27 2009-08-05 Fujitsu Ltd CACHE CONTROL DEVICE AND CACHE CONTROL PROGRAM
US20070208790A1 (en) 2006-03-06 2007-09-06 Reuter James M Distributed data-storage system
US7840398B2 (en) 2006-03-28 2010-11-23 Intel Corporation Techniques for unified management communication for virtualization systems
US20070245217A1 (en) * 2006-03-28 2007-10-18 Stmicroelectronics S.R.L. Low-density parity check decoding
US20070233937A1 (en) * 2006-03-31 2007-10-04 Coulson Richard L Reliability of write operations to a non-volatile memory
US7395377B2 (en) 2006-04-20 2008-07-01 International Business Machines Corporation Method and system for adaptive back-off and advance for non-volatile storage (NVS) occupancy level management
US7636829B2 (en) 2006-05-02 2009-12-22 Intel Corporation System and method for allocating and deallocating memory within transactional code
US20070261030A1 (en) 2006-05-04 2007-11-08 Gaurav Wadhwa Method and system for tracking and prioritizing applications
US20070271468A1 (en) 2006-05-05 2007-11-22 Mckenney Paul E Method and Apparatus for Maintaining Data Integrity When Switching Between Different Data Protection Methods
JP4681505B2 (ja) 2006-05-23 2011-05-11 株式会社日立製作所 計算機システム、管理計算機及びプログラム配布方法
US8307148B2 (en) 2006-06-23 2012-11-06 Microsoft Corporation Flash management techniques
US7853958B2 (en) 2006-06-28 2010-12-14 Intel Corporation Virtual machine monitor management from a management service processor in the host processing platform
US7970989B2 (en) * 2006-06-30 2011-06-28 Intel Corporation Write ordering on disk cached platforms
US7721059B2 (en) * 2006-07-06 2010-05-18 Nokia Corporation Performance optimization in solid-state media
US20080052377A1 (en) 2006-07-11 2008-02-28 Robert Light Web-Based User-Dependent Customer Service Interaction with Co-Browsing
US7594144B2 (en) 2006-08-14 2009-09-22 International Business Machines Corporation Handling fatal computer hardware errors
US20080043769A1 (en) 2006-08-16 2008-02-21 Tyan Computer Corporation Clustering system and system management architecture thereof
US7676625B2 (en) * 2006-08-23 2010-03-09 Sun Microsystems, Inc. Cross-coupled peripheral component interconnect express switch
JP4932390B2 (ja) 2006-08-31 2012-05-16 株式会社日立製作所 仮想化システム及び領域割当て制御方法
US7870306B2 (en) 2006-08-31 2011-01-11 Cisco Technology, Inc. Shared memory message switch and cache
JP4452261B2 (ja) * 2006-09-12 2010-04-21 株式会社日立製作所 ストレージシステムの論理ボリューム管理方法、論理ボリューム管理プログラム、及びストレージシステム
JP4942446B2 (ja) * 2006-10-11 2012-05-30 株式会社日立製作所 ストレージ装置及びその制御方法
KR100771519B1 (ko) 2006-10-23 2007-10-30 삼성전자주식회사 플래시 메모리를 포함한 메모리 시스템 및 그것의 머지방법
US7685178B2 (en) 2006-10-31 2010-03-23 Netapp, Inc. System and method for examining client generated content stored on a data container exported by a storage system
US20080120469A1 (en) 2006-11-22 2008-05-22 International Business Machines Corporation Systems and Arrangements for Cache Management
US7904647B2 (en) * 2006-11-27 2011-03-08 Lsi Corporation System for optimizing the performance and reliability of a storage controller cache offload circuit
US7783830B2 (en) * 2006-11-29 2010-08-24 Seagate Technology Llc Solid state device pattern for non-solid state storage media
JP4923990B2 (ja) 2006-12-04 2012-04-25 株式会社日立製作所 フェイルオーバ方法、およびその計算機システム。
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
KR20090102789A (ko) * 2006-12-06 2009-09-30 퓨전 멀티시스템즈, 인크.(디비에이 퓨전-아이오) 프로그레시브 raid를 이용한 데이터 저장 장치, 시스템 및 방법
US8151082B2 (en) * 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
US9104599B2 (en) * 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
TW200825762A (en) 2006-12-06 2008-06-16 Inventec Corp Apparatus and method for computer management
US20080140737A1 (en) 2006-12-08 2008-06-12 Apple Computer, Inc. Dynamic memory management
US20080140918A1 (en) 2006-12-11 2008-06-12 Pantas Sutardja Hybrid non-volatile solid state memory system
US7930425B2 (en) 2006-12-11 2011-04-19 International Business Machines Corporation Method of effectively establishing and maintaining communication linkages with a network interface controller
US7660911B2 (en) 2006-12-20 2010-02-09 Smart Modular Technologies, Inc. Block-based data striping to flash memory
US7913051B1 (en) * 2006-12-22 2011-03-22 Emc Corporation Methods and apparatus for increasing the storage capacity of a zone of a storage system
JP4813385B2 (ja) * 2007-01-29 2011-11-09 株式会社日立製作所 ストレージシステムの複数の論理リソースを制御する制御装置
US20080201535A1 (en) * 2007-02-21 2008-08-21 Hitachi, Ltd. Method and Apparatus for Provisioning Storage Volumes
US20080205286A1 (en) 2007-02-26 2008-08-28 Inventec Corporation Test system using local loop to establish connection to baseboard management control and method therefor
US20080229046A1 (en) * 2007-03-13 2008-09-18 Microsoft Corporation Unified support for solid state storage
US20080229045A1 (en) 2007-03-16 2008-09-18 Lsi Logic Corporation Storage system provisioning architecture
US9152349B2 (en) * 2007-03-23 2015-10-06 Emc Corporation Automated information life-cycle management with thin provisioning
US8135900B2 (en) * 2007-03-28 2012-03-13 Kabushiki Kaisha Toshiba Integrated memory management and memory management method
US20080243966A1 (en) 2007-04-02 2008-10-02 Croisettier Ramanakumari M System and method for managing temporary storage space of a database management system
US8429677B2 (en) 2007-04-19 2013-04-23 Microsoft Corporation Composite solid state drive identification and optimization technologies
US9207876B2 (en) 2007-04-19 2015-12-08 Microsoft Technology Licensing, Llc Remove-on-delete technologies for solid state drive optimization
US7853759B2 (en) 2007-04-23 2010-12-14 Microsoft Corporation Hints model for optimization of storage devices connected to host and write optimization schema for storage devices
JP2008276646A (ja) * 2007-05-02 2008-11-13 Hitachi Ltd ストレージ装置及びストレージ装置におけるデータの管理方法
US8195806B2 (en) * 2007-07-16 2012-06-05 International Business Machines Corporation Managing remote host visibility in a proxy server environment
US20090070526A1 (en) 2007-09-12 2009-03-12 Tetrick R Scott Using explicit disk block cacheability attributes to enhance i/o caching efficiency
US7873803B2 (en) * 2007-09-25 2011-01-18 Sandisk Corporation Nonvolatile memory with self recovery
TWI366828B (en) * 2007-09-27 2012-06-21 Phison Electronics Corp Wear leveling method and controller using the same
US7934072B2 (en) * 2007-09-28 2011-04-26 Lenovo (Singapore) Pte. Ltd. Solid state storage reclamation apparatus and method
CA2704537C (en) * 2007-11-05 2015-10-13 Nokia Siemens Networks Oy Buffer status reporting apparatus, system, and method
JP2009122850A (ja) 2007-11-13 2009-06-04 Toshiba Corp ブロックデバイス制御装置及びアクセス範囲管理方法
US8131927B2 (en) * 2007-11-30 2012-03-06 Hitachi, Ltd. Fast accessible compressed thin provisioning volume
US8195912B2 (en) * 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
US8239611B2 (en) * 2007-12-28 2012-08-07 Spansion Llc Relocating data in a memory device
JP2009181314A (ja) * 2008-01-30 2009-08-13 Toshiba Corp 情報記録装置およびその制御方法
KR101086855B1 (ko) * 2008-03-10 2011-11-25 주식회사 팍스디스크 고속 동작하는 반도체 스토리지 시스템 및 그 제어 방법
US8051243B2 (en) 2008-04-30 2011-11-01 Hitachi, Ltd. Free space utilization in tiered storage systems
US20090276654A1 (en) 2008-05-02 2009-11-05 International Business Machines Corporation Systems and methods for implementing fault tolerant data processing services
JP5159421B2 (ja) 2008-05-14 2013-03-06 株式会社日立製作所 ストレージシステム及び管理装置を用いたストレージシステムの管理方法
US8775718B2 (en) 2008-05-23 2014-07-08 Netapp, Inc. Use of RDMA to access non-volatile solid-state memory in a network storage system
US8554983B2 (en) 2008-05-27 2013-10-08 Micron Technology, Inc. Devices and methods for operating a solid state drive
US8127076B2 (en) 2008-06-06 2012-02-28 Pivot3 Method and system for placement of data on a storage device
US7917803B2 (en) * 2008-06-17 2011-03-29 Seagate Technology Llc Data conflict resolution for solid-state memory devices
US8843691B2 (en) 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US8135907B2 (en) 2008-06-30 2012-03-13 Oracle America, Inc. Method and system for managing wear-level aware file systems
JP5242264B2 (ja) 2008-07-07 2013-07-24 株式会社東芝 データ制御装置、ストレージシステムおよびプログラム
US20100017556A1 (en) * 2008-07-19 2010-01-21 Nanostar Corporationm U.S.A. Non-volatile memory storage system with two-stage controller architecture
KR101086857B1 (ko) * 2008-07-25 2011-11-25 주식회사 팍스디스크 데이터 머지를 수행하는 반도체 스토리지 시스템의 제어 방법
US7941591B2 (en) * 2008-07-28 2011-05-10 CacheIQ, Inc. Flash DIMM in a standalone cache appliance system and methodology
JP5216463B2 (ja) * 2008-07-30 2013-06-19 株式会社日立製作所 ストレージ装置、その記憶領域管理方法及びフラッシュメモリパッケージ
US8417928B2 (en) * 2008-09-24 2013-04-09 Marvell International Ltd. Turbo boot systems and methods for subsequent booting from a captured data stored in a non-volatile semiconductor memory
US8205063B2 (en) 2008-12-30 2012-06-19 Sandisk Technologies Inc. Dynamic mapping of logical ranges to write blocks
US8347041B2 (en) * 2009-01-02 2013-01-01 Lsi Corporation System and method to preserve and recover unwritten data present in data cache of a disk subsystem across power outages
US20100235597A1 (en) 2009-03-10 2010-09-16 Hiroshi Arakawa Method and apparatus for conversion between conventional volumes and thin provisioning with automated tier management
US20100262773A1 (en) 2009-04-08 2010-10-14 Google Inc. Data striping in a flash memory data storage device
US20100262979A1 (en) 2009-04-08 2010-10-14 Google Inc. Circular command queues for communication between a host and a data storage device
US8447918B2 (en) 2009-04-08 2013-05-21 Google Inc. Garbage collection for failure prediction and repartitioning
US8214610B2 (en) * 2009-07-15 2012-07-03 Lsi Corporation Managing backup device metadata in a high availability disk subsystem
US8516219B2 (en) 2009-07-24 2013-08-20 Apple Inc. Index cache tree
US7856528B1 (en) 2009-08-11 2010-12-21 Texas Memory Systems, Inc. Method and apparatus for protecting data using variable size page stripes in a FLASH-based storage system
US8688894B2 (en) * 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101025712A (zh) * 2006-02-24 2007-08-29 三星电子株式会社 使用非易失性存储器的存储设备及其映射信息恢复方法
CN101059752A (zh) * 2006-04-21 2007-10-24 株式会社东芝 使用非易失性高速缓存的存储装置及其控制方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107436727A (zh) * 2016-05-26 2017-12-05 中兴通讯股份有限公司 精简卷的存储空间管理方法和装置

Also Published As

Publication number Publication date
JP2013504142A (ja) 2013-02-04
EP2476055A4 (en) 2013-07-24
WO2011031796A3 (en) 2011-06-30
KR101717644B1 (ko) 2017-03-27
KR20120090965A (ko) 2012-08-17
EP2476055A2 (en) 2012-07-18
US8719501B2 (en) 2014-05-06
JP5999645B2 (ja) 2016-10-05
US20110066808A1 (en) 2011-03-17
EP2476055B1 (en) 2020-01-22
CN102696010A (zh) 2012-09-26
WO2011031796A2 (en) 2011-03-17

Similar Documents

Publication Publication Date Title
CN102696010B (zh) 用于将数据高速缓存在固态存储设备上的装置、系统和方法
US11010102B2 (en) Caching of metadata for deduplicated luns
US9836355B2 (en) Reconstruction of dense tree volume metadata state across crash recovery
CN101743546B (zh) 用于提供快照的文件系统的分层存储管理
US9152684B2 (en) Snapshots and clones of volumes in a storage system
US9690694B2 (en) Apparatus, system, and method for an address translation layer
US10339132B2 (en) Flow control technique for EOS system
US20170024140A1 (en) Storage system and method for metadata management in non-volatile memory
US20140082310A1 (en) Method and apparatus of storage tier and cache management
US20150142817A1 (en) Dense tree volume metadata update logging and checkpointing
US20140279941A1 (en) Managing Multiple Sets of Metadata
WO2012106362A2 (en) Apparatus, system, and method for managing eviction of data
US9021222B1 (en) Managing incremental cache backup and restore
US20130332656A1 (en) File system for maintaining data versions in solid state memory
WO2012116369A2 (en) Apparatus, system, and method for managing contents of a cache
KR101475483B1 (ko) 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 장치 및 방법
US8478727B2 (en) Storage system and control method for the same
KR101017067B1 (ko) 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법
Lee et al. An efficient index buffer management scheme for implementing a B-tree on NAND flash memory
WO2012021847A2 (en) Apparatus, system and method for caching data
US8898423B1 (en) High performance caching architecture for data storage systems
CN108664217A (zh) 一种降低固态盘存储系统写性能抖动的缓存方法及系统
CN109002400A (zh) 一种内容感知型计算机缓存管理系统及方法
KR101153688B1 (ko) 데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 낸드 플래시 메모리 시스템
US7203939B2 (en) Dense allocation for data storage

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: CAIZHI INTELLECTUAL PROPERTY RIGHTS HOLDING COMPAN

Free format text: FORMER OWNER: FUSION MULTISYSTEMS INC

Effective date: 20140730

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20140730

Address after: Delaware

Applicant after: Intellectual property holding company (2)

Address before: Utah, USA

Applicant before: Fusion-io, Inc.

C14 Grant of patent or utility model
GR01 Patent grant
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20160701

Address after: Luxemburg, Grand Duchy of Luxemburg

Patentee after: Longitude Business Flash Memory Co.

Address before: Luxemburg, Grand Duchy of Luxemburg

Patentee before: PS12 Lukesike Co.

Effective date of registration: 20160701

Address after: Luxemburg, Grand Duchy of Luxemburg

Patentee after: PS12 Lukesike Co.

Address before: Delaware

Patentee before: Intellectual property holding company (2)

C41 Transfer of patent application or patent right or utility model
C56 Change in the name or address of the patentee
CP01 Change in the name or title of a patent holder

Address after: Texas, USA

Patentee after: SANDISK TECHNOLOGIES LLC

Address before: Texas, USA

Patentee before: SANDISK TECHNOLOGIES Inc.

TR01 Transfer of patent right

Effective date of registration: 20160721

Address after: Texas, USA

Patentee after: SANDISK TECHNOLOGIES Inc.

Address before: Luxemburg, Grand Duchy of Luxemburg

Patentee before: Longitude Business Flash Memory Co.