CN102084331A - 在多处理器/多线程环境下协调存储请求的装置、系统和方法 - Google Patents

在多处理器/多线程环境下协调存储请求的装置、系统和方法 Download PDF

Info

Publication number
CN102084331A
CN102084331A CN2009801211435A CN200980121143A CN102084331A CN 102084331 A CN102084331 A CN 102084331A CN 2009801211435 A CN2009801211435 A CN 2009801211435A CN 200980121143 A CN200980121143 A CN 200980121143A CN 102084331 A CN102084331 A CN 102084331A
Authority
CN
China
Prior art keywords
data
module
index
invalid
storage
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.)
Pending
Application number
CN2009801211435A
Other languages
English (en)
Inventor
大卫·弗林
迈克尔·扎佩
乔纳森·撒切尔
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.)
Fusion IO LLC
Original Assignee
Fusion IO LLC
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 Fusion IO LLC filed Critical Fusion IO LLC
Publication of CN102084331A publication Critical patent/CN102084331A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了在多处理器/多线程环境下协调存储请求的装置、系统和方法。附加/无效模块1202从第一存储请求生成第一附加数据存储命令并从第二存储请求生成第二附加数据存储命令,在第一存储请求之后接收第二存储请求。存储请求用第一和第二数据覆盖现有数据,第一和第二数据具有至少一部分重叠数据。附加/无效模块1202通过将正被覆盖的数据标记为无效更新索引。重组模块1204基于第一数据更新索引并基于第二数据更新索引。组织被更新的索引以指示第二数据比第一数据更符合当前情况,而不考处理的顺序。这些模块阻止对索引的访问,直到这些模块已经完成更新索引。

Description

在多处理器/多线程环境下协调存储请求的装置、系统和方法
相关申请的交叉引用
本申请是下述申请的部分继续申请并要求其优先权:David Flynn等人于2008年4月6日提交的题为“Apparatus,System,and Method for Coordinating Storage Requests in a Multi-Processor/Multi-Thread Environment”美国专利申请号12/08,435,通过引用将该申请并入本文中。
技术领域
本发明涉及并行处理,具体地,涉及协调从多处理器或多线程发送到数据存储设备的存储请求。
背景技术
传统的数据存储设备(例如磁盘驱动器、光盘驱动器等)通常作为随机存取设备运行以存储数据。随机存取通常能够在同一时间内存取序列中的任意元素。这不同于顺序存取,在顺序存取中,数据被顺序地存储且被顺序地访问,从而基于数据的位置,存取时间显著不同。例如,用于存储数据的磁带就是一种顺序存取设备。存取一个数据元素可能耗费不同的时间,这是由于一个数据元素的位置可能离读取头的位置近,而且必须使磁带前进或后退才能到达第二个数据元素,因此,存取另一个数据元素可能消耗更多的时间。
由于在随机存取设备中存取每个数据元素的时间需要大约一致,因此,随机存取设备(如存储芯片、磁盘驱动器或固态存储器)作为随机存取设备运行。由于数据存取的可预测性和效率,随机存取是可取的。一些设备(如存储芯片)既支持随机读取又支持随机写入,随机写入通常支持用更新的数据覆盖数据的功能。一些设备(如闪存)支持随机读取但在数据能够被写入区域之前需要擦除存储器的整个区域(例如:擦除模块或擦除区域)。
通常,文件系统利用初级命令与随机存取存储设备通信。文件系统管理数据的位置。初级命令通常包括命令中的物理地址和数据长度以存储或访问数据。随机存取存储设备中的数据通常可以在读-修改-写操作中更新,其中在特定地址的数据被读取、修改,然后被写入与其存储位置相同的位置。
通常,数据存储设备被多个设备访问。通常文件服务器管理对数据存储设备的访问并协调涉及共有数据的请求。对于典型的随机存取数据存储设备而言,一旦文件服务器提交了存储请求,文件服务器通常必须等待请求完成,然后才发送另一存储请求以确保数据以适当的顺序写入。由于数据存储设备完成特定的存储请求需要消耗相对长的时间,因此处理时间可能被相对地延长。
一些数据存储设备顺序地存储数据,而数据存储设备的数据存取时间大约一致。例如,在一些固态存储设备(如闪存)中,数据被顺序地存储。类似于其他随机存取设备,固态存储设备的数据存取时间完全不一致。使用传统的文件服务器或其他数据管理系统以为顺序存储设备协调来自不同设备的请求影响性能。例如,在读-修改-写操作期间,修正的数据并不被写回到同一位置,反而被顺序地存储。当文件服务器管理更新时,文件服务器必须等待整个更新进程完成,才服务对同一文件或对象的另一数据请求。当元数据(例如存储在目录中的元数据)和映射被锁定而附加进程完成更新时,其他进程或线程可被锁定在外,以阻止访问元数据。这种更新包括等待顺序存储设备返回数据被顺序地存储的物理地址。
在并行计算环境中,等待数据存储设备完成存储请求是无效率的,这是因为并行处理器可能在等待单线程存储处理完成的过程中中断。对于实施基于日志的初级存储进程的顺序存储系统而言,需要的是一种允许并行地执行许多线程或进程的最佳完成途径。
发明内容
从上述讨论可知,显然存在一种需求:即使在存储请求与公共文件或对象有关时,也允许数据存储设备交错地处理存储请求从而多处理器或多线程能够并行地完成存储请求的不同部分的装置、系统和方法。有利地是,这种装置、系统和方法将提升在多处理器、多线程环境下的性能,同时确保修正的数据基于存储请求到达的顺序反映恰当的更新顺序。
响应于现有技术的现状,具体地,响应于现有技术中未被当前可用的并行处理系统所完全解决的问题和需要,本发明被开发出来。因此,本发明被开发以提供一种用于在多处理器和多线程之间协调存储请求的装置、系统和方法,其克服了现有技术中的上述全部或大部分缺点。
协调存储请求的装置具有多个配置为功能性地执行下述必要步骤的模块:协调访问单个数据段的两个存储请求的服务。在所述的实施方式中,这些模块包括附加/无效模块和重组模块。
附加/无效模块响应于第一存储请求的接收生成第一附加数据存储命令。第一存储请求包括用第一数据覆盖现有数据的请求。现有数据是存储在数据存储设备上的数据段的一部分。该附加/无效模块响应于第二存储请求的接收生成第二附加数据存储命令。第二存储请求包括用第二数据覆盖数据段的现有数据的请求。第一和第二数据至少包括将以相同的偏移量存储在数据段内的重叠数据的至少一部分。在第一存储请求之后接收第二存储请求。该附加/无效模块响应于第一存储请求通过将数据段的数据标记为无效来更新索引。标记为无效的数据包括正被第一数据替换的数据。该附加/无效模块响应于第二存储请求通过将数据段的数据标记为无效来更新索引。标记为无效的数据包括正被第二数据替换的数据。
重组模块基于第一数据更新索引并基于第二数据更新索引。当在基于第二数据更新索引之前基于第一数据索引更新索引时或在基于第一数据更新索引之前基于第二数据更新索引时,组织被更新的索引以指示第二数据比第一数据更符合当前情况。附加/无效模块阻止对索引的访问,直到附加/无效模块已经完成更新索引,并且重组模块阻止对索引的访问,直到重组模块已经完成更新索引。
在一种实施方式中,该装置包括数据位置更新模块,用于利用数据存储设备存储第一数据的第一物理位置更新索引。数据位置模块还利用数据存储设备存储第二数据的第二物理位置更新索引。从数据存储设备接收数据存储设备存储第一和第二数据的物理位置。当在基于第二物理位置更新索引之前基于第一物理位置更新索引时或在基于第一物理位置更新索引之前基于第二物理位置更新索引时,组织被更新的索引以指示第二物理位置比第一物理位置更符合当前情况。数据位置更新模块阻止对索引的访问,直到数据位置模块已经完成更新索引。
在另一种实施方式中,附加/无效模块处理存储请求发生在重组模块的处理之前,并且重组模块处理存储请求发生在数据位置模块的处理之前。在另一种实施方式中,附加/无效模块、重组模块或数据位置更新模块处理第一存储请求发生在附加/无效模块、重组模块或数据位置更新模块处理第二存储请求之前或之后。
在一种实施方式中,在两个或多个线程内执行附加/无效模块、重组模块和数据位置更新模块中的每一个的例程,附加/无效模块、重组模块和数据位置更新模块的每个例程阻止对索引的访问,直到附加/无效模块、重组模块或数据位置更新模块已经完成更新索引。在另一种实施方式中,在并行操作的两个或多个处理器上执行附加/无效模块、重组模块和数据位置更新模块中的每一个的例程,附加/无效模块、重组模块和数据位置更新模块的每个例程阻止对索引的访问,直到附加/无效模块、重组模块或数据位置更新模块已经完成更新索引。
在一种实施方式中,该装置包括读取模块,用于响应于包括读取请求的存储请求读取数据段的至少一部分。在该实施方式中,该装置还包括读取延迟模块,用于推迟服务所请求的读取,直到第一存储请求由附加/无效模块、重组模块和数据位置更新模块服务。在又一种实施方式中,在第一存储请求之后,在第二存储请求之前,该装置接收到读取数据段的至少一部分的存储请求,并且读取延迟模块推迟服务读取请求,直到第一和第二存储请求都由附加/无效模块、重组模块和数据位置更新模块服务。
在一种实施方式中,该装置包括序列编号模块,用于将序列号与存储请求关联。分配的序列号表示该装置接收存储请求的顺序。重组模块利用分配给第一存储请求和第二存储请求中的每一个的序列号组织索引以指示第二数据比第一数据更符合当前情况。在另一种实施方式中,组织索引以指示第二数据比第一数据更符合当前情况包括利用第二数据更新索引的映射到重叠数据的一部分,并且如果重组模块在基于第一数据更新索引之前基于第二数据更新索引,则保留到第二数据的映射。
在另一种实施方式中,附加/无效模块接收三个或更多覆盖数据段的现有数据的存储请求,重组模块基于存储请求到达的顺序利用存储请求的数据组织索引,而不考虑重组模块利用存储请求的数据更新索引的顺序。在另一种实施方式中,索引还被分割为两个或多个区域,并且当附加/无效模块和重组模块中的一个或多个的额外的例程在服务涉及第二区域的存储请求时阻止对索引的第二区域的访问时,涉及索引的第一区域的存储请求被服务。在另一种实施方式中,第一存储请求发送自第一客户端,第二存储请求发送自第二客户端。
在一种实施方式中,响应于第一存储请求通过将数据段被替换的数据标记为无效更新索引还包括标记位图的一个或多个位。位图中的位对应于数据存储设备中由第一数据和第二数据替换的数据段的数据所驻留的一个或多个位置。在另一种实施方式中,响应于第一存储请求通过将数据段被替换的数据标记为无效更新索引还包括暂时地将整个数据段标记为无效,直到重组模块基于第一数据和第二数据更新索引,并且随后更新索引以指示数据段除了被替换的数据之外的数据有效。在又一种实施方式中,响应于第一存储请求通过将数据段被替换的数据标记为无效更新索引还包括生成表,该表指示数据段被第一数据和第二数据替换的部分为无效,并指示数据段未被第一数据和第二数据替换的部分为有效。
在一种实施方式中,在基本上没有数据的情况下接收第一存储请求和/或第二存储请求。在另一种实施方式中,在基本上没有数据的情况下将第一附加数据存储命令和/或第二附加数据存储命令发送到数据存储设备。在另一种实施方式中,存储请求和附加数据存储命令中的至少一个初始化直接存储器存取(DMA)进程或远程直接存储器存取(RDMA)进程以将数据段的数据转移到数据存储设备。
本发明也提供了一种系统以协调存储请求,该系统可由数据存储设备和控制数据存储设备的存储控制器实施。具体地,在一种实施方式中,存储控制器包括附加/无效模块和重组模块。
附加/无效模块响应于第一存储请求的接收生成第一附加数据存储命令。第一存储请求包括用第一数据覆盖现有数据的请求。现有数据是存储在数据存储设备上的数据段的一部分。该附加/无效模块响应于第二存储请求的接收生成第二附加数据存储命令。第二存储请求包括用第二数据覆盖数据段的现有数据的请求。第一和第二数据至少包括将以相同的偏移量存储在数据段内的重叠数据的至少一部分。在第一存储请求之后接收第二存储请求。该附加/无效模块响应于第一存储请求通过将数据段的数据标记为无效来更新索引。标记为无效的数据包括正被第一数据替换的数据。该附加/无效模块响应于第二存储请求通过将数据段的数据标记为无效来更新索引。标记为无效的数据包括正被第二数据替换的数据。
重组模块基于第一数据更新索引并基于第二数据更新索引。当在基于第二数据更新索引之前基于第一数据索引更新索引时或在基于第一数据更新索引之前基于第二数据更新索引时,组织被更新的索引以指示第二数据比第一数据更符合当前情况。附加/无效模块阻止对索引的访问,直到附加/无效模块已经完成更新索引,并且重组模块阻止对索引的访问,直到重组模块已经完成更新索引。
在一种实施方式中,数据存储设备是固态存储设备。在另一种实施方式中,第一存储请求和第二存储请求接收自分离的请求设备,其中请求设备可以是客户端或服务器。在另一种实施方式中,至少一个请求设备是客户端,附加/无效模块和重组模块独立于客户端运行。在另一种实施方式中,该系统包括服务器,并且存储控制器位于服务器内。
本发明也提供了一种协调存储请求的方法。在公开的实施方式中,该方法包括执行上文中相对于所述装置和系统的功能所必须的步骤。在一种实施方式中,该方法包括响应于第一存储请求的接收生成第一附加数据存储命令,以用第一数据覆盖存储在数据存储设备上的数据段的现有数据。该方法包括响应于第二存储请求的接收生成第二附加数据存储命令,以包括用第二数据覆盖数据段的现有数据。第一和第二数据至少包括将以相同的偏移量存储在数据段内的重叠数据的至少一部分,在第一存储请求之后接收第二存储请求。
该方法包括响应于第一存储请求通过将数据段的数据标记为无效来更新索引,标记为无效的数据包括正被第一数据替换的数据。该方法包括响应于第二存储请求通过将数据段的数据标记为无效来更新索引,标记为无效的数据包括正被第二数据替换的数据。在一种实施方式中,对索引的访问被阻止,直到为第一存储请求或第二存储请求生成附加数据存储命令且通过将数据段的数据标记为无效为第一存储请求和第二存储请求中的一个更新了索引。
该方法包括基于第一数据更新索引和基于第二数据更新索引。当在基于第二数据更新索引之前基于第一数据索引更新索引时或在基于第一数据更新索引之前基于第二数据更新索引时,组织被更新的索引以指示第二数据比第一数据更符合当前情况。对索引的访问被阻止,直到基于第一数据和第二数据中的一个更新索引。
本说明书全文所提到的特征、优点或者类似措辞并不意味着可利用本发明实现的所有的特征和优点应该或本来就包含在本发明的任一单独的实施方式中。更确切地,涉及特征和优点的措辞被理解为意味着:与实施方式一起描述的特定的特征、优点或者特点包括在本发明的至少一种实施方式中。因此,在本说明书全文中,关于特征、优点和类似措辞的讨论可(但未必)涉及同一种实施方式。
此外,描述的本发明的特征、优点和特点可采用任何合适的方式与一个或多个实施方式结合。相关领域的技术人员可意识到本发明可在不具备特定实施方式的一个或多个具体特征或优点的情况下被实施。在其他例子中,可意识到附加特征和优点可出现在某些实施方式中,而不是在本发明的所有实施方式中都出现。
通过下面的说明和附加的权利要求,本发明的这些特征和优点将变得更加充分的显而易见,或者可以通过按下文所阐述的本发明的实践而获悉。
附图说明
为了更容易地理解本发明的优点,将参考附图中示出的具体实例方式详细说明上文中简述的本发明的实施方式。应当理解,这些附图仅描绘了本发明的典型实施方式,因此不能将其理解为对本发明的限制,将结合附图具体且详细地描述和解释本发明,附图中:
图1是示出了根据本发明的将存储请求转换为附加数据命令的系统的一种实施方式的示意性框图;
图2是示出了根据本发明的将存储请求转换为附加数据命令的装置的一种实施方式的示意性框图;
图3是示出了根据本发明的将存储请求转换为附加数据命令的替换装置的一种实施方式的示意性框图;
图4是示出了根据本发明的将存储请求转换为附加数据命令的方法的一种实施方式的示意性流程图;
图5是示出了根据本发明的将存储请求转换为附加数据命令的另一种方法的一种实施方式的示意性流程图;
图6是根据本发明的将存储请求转换为附加数据命令的实例的示意性框图;
图7是根据本发明的用于有效地映射虚拟地址和物理地址的装置的一种实施方式的示意性框图;
图8是根据本发明的用于有效地映射虚拟地址和物理地址的装置的另一种实施方式的示意性框图;
图9是根据本发明的用于有效地映射虚拟地址和物理地址的方法的一种实施方式的示意性流程图;
图10是根据本发明的用于有效地映射虚拟地址和物理地址的方法的另一种实施方式的示意性流程图;
图11是根据本发明的正向映射和反向映射的实例的示意性框图;
图12是示出了根据本发明的用于协调存储请求的装置的一种实施方式的示意性框图;
图13是示出了根据本发明的用于协调存储请求的装置的另一种实施方式的示意性框图;
图14是示出了根据本发明的用于协调存储请求的方法的一种实施方式的示意性流程图;
图15是示出了根据本发明的用于协调存储请求的方法的另一种实施方式的示意性流程图;
图16A是示出了根据本发明的用于协调存储请求的装置的实例的示意性框图的第一部分;
图16B是示出了根据本发明的用于协调存储请求的装置的实例的示意性框图的第二部分;
图16C是示出了根据本发明的用于协调存储请求的装置的实例的示意性框图的第三部分。
具体实施方式
本说明书全文所提到的“一种实施方式”、“实施方式”或类似的措辞意味着与实施方式一起描述的特定的特征、结构或特点包括在本发明的至少一种实施方式中。因此,在本说明书全文中,短语“在一种实施方式中”、“在实施方式中”及类似措辞的出现可(但未必)涉及同一实施方式。
此外,描述的本发明的特征、结构或特点可以以任何合适的方式合并在一种或多种实施方式中。在下文的说明中,提供了大量的具体细节以全面理解本发明的实施方式,所述具体细节比如编程、软件模块、用户选择、网络事务、数据库查询、数据库结构、硬件模块、硬件电路、硬件芯片等等的实例。然而,相关技术领域的技术人员可认识到:本发明在可在不具备一个或多个具体细节的情况下被实施,或者本发明可结合其他方法、组件、材料等实施。在其他例子中,并没有显示或描述公知的结构、材料或操作以使本发明变得清晰。
一般而言,此处所包括的示意性流程图作为逻辑流程图示出。同样的,描述的顺序和所标记的步骤表明了所示出的方法的一种实施方式。可以设想在功能上、逻辑上或效果上与所示方法的一个或多个步骤或其部分相同的其他步骤和方法。此外,所用的格式和符号是用于解释方法的逻辑步骤并且不应理解为是对该方法的限制。尽管在流程图中可使用不同的箭头类型和直线类型,但是不应将其理解为对相应方法的限制。事实上,一些箭头或其他连接符可用于仅指示方法的逻辑流程。例如,箭头可指示在所示方法所列举的步骤之间不明确的时间阶段的等待或监视期。此外,特定方法的顺序可以(但未必)严格遵照所示出的相应步骤的顺序。
图1是示出了根据本发明的将存储请求转换为附加数据命令并有效地映射物理地址和虚拟地址的系统100的一种实施方式的示意性框图。系统100包括存储设备102,存储设备102包括存储控制器104和数据存储设备106。存储设备102位于通过计算机网络112连接到一个或多个客户端110的服务器108内。
在一种实施方式中,系统100包括具有存储控制器104和数据存储设备106的存储设备102。存储控制器104和数据存储设备106可被包括在同一箱体中,该同一箱体为存储设备102。在另一种实施方式中,存储控制器104和数据存储设备106是分离的。存储控制器104通常控制对数据存储设备106的数据存储访问。在一种实施方式中,数据存储设备106能够使得对数据存储设备106上的所有数据的访问次数基本上相当。例如,数据存储设备106可以是固态存储设备,例如闪存、纳米随机存取存储器(nano RAM或NRAM)、磁阻RAM(MRAM)、动态RAM(DRAM)、相变RAM(PRAM)等。数据存储设备106也以是硬盘驱动器、光盘(CD)驱动器、光驱动器和类似设备。
尽管在图1中数据存储设备106被示为单个存储设备,但数据存储设备106可以包括两个或多个存储设备。数据存储设备106可被配置为独立驱动器冗余阵列(RAID)、磁盘簇(JBOD)和类似设备。数据存储设备106可与一个或多个数据存储设备106(例如固态存储器)一起配置为高性能、短期存储器,也可与一个或多个数据存储设备106(例如硬盘驱动器)一起配置为低性能、长期存储器。在这种实施方式中,存储控制器104可管理不同类型的数据存储设备106。本领域技术人员会意识到其他类型和配置的数据存储设备106。
存储控制器104可控制一个或多个数据存储设备106而且可以是RAID控制器、用于存储区域网络(SAN)的控制器等等。存储控制器104可包括一个或多个子控制器。存储控制器104可与数据存储设备106集成或分离,并且存储控制器104可以集成在一起或者是分布式的。例如,存储控制器104的一部分可以是主控制器,而存储控制器104其他部分可以是子控制器或从控制器。主控制器可以是与轮流控制数据存储设备106的其他子控制器通信的设备,或者可以是控制从控制器和数据存储设备106的主控制器。本领域技术人员会认识到具有其他形式和功能的存储控制器104。
在一种实施方式中,存储设备102包括在服务器108中。在不同的实施方式中,存储控制器104或数据存储设备106或二者都可位于服务器108的外部。服务器108可连接到存储控制器104,或者存储控制器104可通过系统总线连接到数据存储设备106,系统总线例如外围组件互连快速(PCI-e)总线、串行高级技术附件(串行ATA)总线或类似总线。在另一种实施方式中,固态存储设备102位于服务器108或存储设备102外部,并可以通过通用串行总线(USB)、电气和电子工程师学会(IEEE)1394总线(FireWire)等连接。在其他实施方式中,存储设备102连接到服务器108,或者存储控制器104利用外围组件互连(PCI)快速总线使用外部电子或光总线扩展或联网方案连接到数据存储设备106,联网方案例如以太网、光纤通道、无限带宽、或PCI快速高级交换(PCIe-AS)及其类似。本领域技术人员会认识到其他各种可能的连接方法。
替换地,服务器108也可以是个人计算机、膝上型计算机、主计算机、工作站、电子设备等。服务器108可包括客户端110或通过计算机网络112连接到客户端110。系统100可包括任意数量的计算机、客户端110、计算机网络112或其他电子设备,只要系统100能够将存储请求传输到存储设备102。客户端110可以是运行在服务器108或另一台计算机或电子设备上的程序。客户端110也可以是个人计算机、膝上型计算机、主计算机、工作站、电子设备等。本领域技术人员会认识到能够将存储请求发送到存储设备102的系统100的其他组件和配置。
图2示出了根据本发明的将存储请求转换为附加数据命令的装置200的一种实施方式的示意性框图。装置200包括存储请求接收器模块202、翻译模块204和映射模块206,下文将描述这些模块。在图2中,装置200被示出为位于存储控制器104中,但模块202、204、206中的全部或部分可位于存储控制器104的外部而且可分布在系统100的不同组件中。
装置200包括从请求设备接收存储请求的存储请求接收器模块202。在一种实施方式中,请求设备是服务器108。在另一种实施方式中,请求设备是客户端110。请求设备可以是能够发送存储请求的任何设备。
存储请求包括将文件或对象的数据段存储在数据存储设备106上的请求。存储请求可以是对象请求、文件请求、逻辑块存储请求及类似请求。存储请求包括数据段的一个或多个源参数。源参数包括文件或对象的虚拟地址,数据段的数据来源于所述虚拟地址。通常,虚拟地址是文件或对象的标识符。虚拟地址可以是连接到存储设备102的文件系统已知的文件名、对象名或其他标识符。
在逻辑地址与逻辑地址空间和虚拟地址与虚拟地址空间之间做出区别。在此文本中,虚拟地址空间拟包含间接编址的最大可能范围。如本文所用的,虚拟地址空间可同时包括:一个或多个虚拟地址空间、一个或多个逻辑地址空间、一个或多个存储空间、一个或多个逻辑块地址空间、一个或多个混合块地址空间等等。
例如,客户端可以运行多个虚拟操作系统。在这种实施方式中,每个虚拟操作系统可具有虚拟存储空间。每一个虚拟存储空间可以根据设备的虚拟地址空间和虚拟-物理映射被映射到存储在存储设备中的数据。在另一个实例中,若干客户端中的对象可以以多对一的关系独立地映射到相同的存储数据,该相同的存储数据称为具有对客户端的唯一虚拟地址的共享数据。尽管此处的实例示出了一对一的关系,但方法、装置和系统将支持多对一、一对多、甚至是多对多的虚拟-物理的地址映射。
通过支持识别、地址、长度和元数据转换中的广泛间接性,虚拟-物理映射方法将支持稀疏编址(物理地址空间的过量供应)、瘦供给(thin provisioning)、虚拟分区和数据转换(例如压缩、加密)。
此处,作为一种约定,虚拟ID唯一地标识在客户端的虚拟空间内存储的数据实体。虚拟地址更具体地编址虚拟实体的数据。例如,虚拟地址可包括虚拟ID和在数据集内的偏移量。在另一实例中,虚拟地址可包括虚拟ID和虚拟实体内的索引,其中索引可以是非统一的(例如,长度不同)记录结构中的记录。
在一种实施方式中,装置200仿真逻辑块存储设备,源参数包括一个或多个逻辑块地址,其中,请求设备通过存储请求请求数据段以将其存储。在该实施方式中,虚拟地址可包括逻辑块地址。例如,如果存储请求是逻辑块存储请求,请求设备可指定数据段将要存储在数据存储设备106中的位置。逻辑块地址可包括诸如RAID群组号、数据存储设备标识符、分区、柱面号、扇区、偏移量等的信息。本领域技术人员会认识到可包括在逻辑块地址中的其他元素。
存储请求可包括将数据段存储在不止一个位置上的请求,或者存储请求可包括将数据段的某些部分存储在不止一个位置上的请求,从而存储请求可包括不止一个逻辑块地址。当存储请求包括逻辑块地址时,存储请求通常也包括对应于一个或多个逻辑块地址的一个或多个偏移量和数据长度。偏移量和数据长度可暗示逻辑块是否具有固定尺寸。通常,偏移量是指数据段开始进入文件或对象有多远,通常从文件或对象的形头起算。数据长度通常包括存储设备将有多大容量被与逻辑块地址关联的数据段或数据段的部分占据。通常,将以可被存储控制器104和数据存储设备106识别的一些单位表示偏移量和数据长度。例如,偏移量和数据长度可以表示为字节、块、扇区或其他用于分割数据存储设备106的单位。本领域技术人员会认识到用于全部或部分数据段的偏移量和数据长度的其他表示方法。
系统100包括将存储请求翻译为一条或多条存储命令的翻译模块204,其中至少一条存储命令是附加数据存储命令。每条附加数据存储命令指令数据存储设备106将创建自数据段的数据和一个或多个源参数存储在一个或多个附加点上。源参数与数据一起存储,而且至少一个源参数是虚拟地址。
优选地,数据存储设备106将数据存储为数据包。数据包包括数据段的数据和数据包包头。在一种实施方式中,数据包包头包括源参数。在另一种实施方式中,源参数与数据同时存储。例如,数据可顺序地存储在数据存储设备的一个位置上的附加点中,而源参数同时顺序地存储在数据存储设备中的另一位置中。在该实施方式中,源参数和数据存储的顺序可用于在读操作或数据和源参数被检索的其他操作期间配对数据和源参数。
在一种实施方式中,数据存储设备106通过下述操作顺序地存储数据(或数据包):将数据存储在页、分区或其他指定区域中;将附加点移动到紧随先前存储的数据末端的下一个可用地址;将数据存储在附加点,再次将附加点移动到紧随先前存储的数据末端的下一个可用地址等等。数据存储在页、分区等中,直到页或分区满为止,然后附加点移动,数据存储在另一页、分区等等。附加点可以响应于具体请求由存储设备102独立地移动。
顺序存储数据对于固态存储设备来说是尤其有益的,这是因为其甚至允许分布式的数据以防止出现比其他地址写入更频繁的热点或热地址。由于顺序存储数据省去了搜寻时间、省去了读-修改-写操作和相关擦除操作并由此增加了固态存储设备的数据可靠性和有效寿命,因此,顺序存储数据对于固态存储设备来说是尤其有益。由于常规固态存储设备对存储在固态存储设备中任意位置的数据的读取访问时间基本上相同,固态存储设备中的顺序存储也通常不会不利地影响读取访问时间。这种特性允许数据存储设备106仿真随机存取设备以有效地消除由于写入搜寻次数而产生的恢复时间,并增加了固态存储设备106的可靠性和有效寿命,而不会不利地影响读取性能。
顺序存储对于数据存储设备106也可具有其他好处。顺序存储相对于存取时间的益处在下述文献中有全面的描述:题为“Apparatus,System,and Method for Managing Commands of Solid-State Storage Using Bank Interleave”的美国专利申请号11/952,095;和题为“Apparatus,System,and Method for Storage Space Recovery In Solid-State Storage”的美国专利申请号11/952,101(下文中的“存储空间恢复申请”),两项申请均由David Flynn等人于2007年12月6日提交,通过引用将所述文献并入本文。
一个明显益处是:通过顺序地存储数据以及将源参数与数据一起(在包头或同时)存储,数据存储设备106成为了日志存储设备。通常,日志存储设备记录数据存储的序列或顺序,从而如果第一数据包在第二数据包之后存储,这种存储顺序是已知的并且可以是确定的。
在一种实施方式中,将要存储数据的附加点独立于环境。鉴于数据被顺序地存储,附加点可由存储设备保持,从而与存储请求一起接收的数据可以存储在数据存储日志中的下一个可用的物理地址。对于该附加点来说,没有外部环境。这意味着,数据并不根据与客户端的明确或隐藏关系存储在设备的不同物理区域中。例如,第一客户端可利用第一分区访问设备,而第二客户端利用第二分区访问设备。在虚拟编址方案中,这些分区是严格的逻辑构造。在两个不同的分区中用于两个客户端的数据仍然被顺序地附加。这样,设备不限制开放文件的数量,并由此不限制能够同时访问设备的客户端的数量。额外益处是:存储空间的使用效率最优,而且自然地支持提供增加容量使用率(如瘦供给)的存储方法。
通常,附加点被设置为紧随先前存储的数据或数据包之后的地址,但在其他实施方式中,附加点可以设置在页、擦除块、分区等的起始地址上,可以设置在紧随不可用地址的块之后,等等。在一种实施方式中,数据存储设备106保持附加点的地址,翻译模块204仅创建指令数据存储设备106将数据存储在附加点上的附加数据存储命令。一旦存储了数据,数据存储设备106然后向映射模块206或另一设备或模块报告数据存储的物理地址。在另一种实施方式中,翻译模块204得知或保持附加点在数据存储设备106中的物理地址并且利用附加点的物理地址创建附加数据存储命令。
在一种实施方式中,表示在当前擦除区域被写满之后将要被写入的下一擦除区域(或擦除块)的附加点或擦除区域指针可预先排队且由数据存储设备106或翻译模块204从队列中取出。在另一种实施方式中,附加点(擦除区域指针)根据设定的模式从子区域移动到子区域。设定的模式可包括区域序列信息。
附加数据存储命令通常是将数据存储在附加点的命令。数据创建自数据段,通常,数据段的数据跨越数据段。翻译模块204可创建一个或多个附加数据存储命令。例如,如果数据段分解而且数据的不止一个部分存储在非连续位置,可能会需要不止一个的附加数据存储命令。在另一种实施方式中,单个附加数据存储命令能够将数据段存储在多个、非连续位置。
数据段的数据可来自不同的源。在一种实施方式中,数据是来自新的先前并没有存储在数据存储设备106上的文件的数据。在另一种实施方式中,数据段的数据已从数据存储设备106中读取,而且已在将数据再次作为数据包存储在数据存储设备106中之前被修正。在另一种实施方式中,数据段的数据来自在存储恢复(垃圾收集)操作中恢复的另一擦除区域(例如擦除块)、页、分区等。在该实施方式中,数据可以是在恢复擦除区域以用于将来的数据存储之前从选定的擦除区域移动而来的有效数据。在另一种实施方式中,数据是索引数据或映射数据,索引数据或映射数据被存储用来保护索引或映射。本领域技术人员会认识到可位于由存储请求接收器模块202接收的数据段中的其他数据。
在不同的实施方式中,翻译模块204创建与存储请求有关的其他命令。例如,翻译模块204可创建集附加点命令、读取命令、擦除命令、复位命令、移动命令、同步命令、清洗命令、读取控制登记命令、修正控制登记命令、程序页命令、在擦除块上指令的擦除命令、转移命令列表命令、请求状态命令及类似命令。通常,其他命令增补附加数据存储命令以服务存储请求。本领域技术人员会认识到其他可以由翻译模块204创建以服务存储请求的相关命令和命令序列。
在一种实施方式中,存储请求接收器模块202所接收的存储请求是在基本上没有数据的情况下接收的。在这种情况下,存储请求是请求转移数据的请求,并且实质上不包括数据。在另一种实施方式中,附加数据存储命令在基本上没有数据的情况下被传输到数据存储设备106。在这种情况下,附加数据存储命令是转移数据的命令,并且实质上不包括数据。在又一种实施方式中,源参数包括主机或客户端110内的一个或多个物理存储地址,作为存储请求的结果,数据段从该物理存储地址被读取。在这种实施方式中,翻译模块204创建的存储请求或命令(例如附加数据存储命令)初始化或请求直接存储器存取(DMA)或远程直接存储器存取(RDMA)进程以将数据段的数据转移到数据存储设备106。例如,DMA进程可由附加数据存储命令初始化为从客户端110到数据存储设备106内的某个位置的DMA数据。本领域技术人员会意识到初始化或请求DMA或RDMA进程的其他方法。
在典型的DMA或RDMA进程中,数据存储设备106在写入操作中从主机的存储器中取出数据并在读取操作中将数据推入主机。这样做是有利的,因为主机不需要知道数据将要被存储在数据存储设备10的哪个位置。主机可以仅告知存储设备102取出将要被写入的数据的位置或者数据将要被存储以供读取的位置。
装置200包括映射模块206,映射模块206将数据段的一个或多个源参数映射到数据存储设备106中的一个或多个位置,其中数据存储设备106附加了数据段的数据和源参数。源参数可包括与数据段、设备标识符、分区标识符、数据段的一个或多个数据包的长度、存储请求之前或之后数据段在主机的存储器中所处的一个或多个存储位置、一个或多个存储位置中的一个或多个长度的数据、数据段的属性、数据段的元数据、数据段的控制参数等相关联的虚拟标识符。
有利地,数据段的源参数到存储数据段的数据的物理位置之间的映射允许装置200利用数据存储设备106仿真随机存取设备,数据在数据存储设备106顺序地存储。这样是有利的,因为具有装置200的存储设备102或存储控制器104能够连接成随机存取设备并且能够接收对象请求、文件请求和逻辑块存储请求,而不会对这些请求予以区分。装置200平等地处理来自不同请求的数据,即实质上以与虚拟地址相同的方式映射在存储请求中接收到的逻辑块地址。换言之,在逻辑块存储请求中接收的逻辑块地址、数据长度等可以成为将要被映射到数据请求的数据在数据存储设备106中的存储位置的物理地址的虚拟地址。
图3是示出了根据本发明的将存储请求转换为附加数据命令的替换装置300的一种实施方式的示意性框图。装置300包括存储请求接收器模块202、翻译模块204和映射模块206,这些模块基本上类似于上文中相对于图2的装置200描述的模块。装置300包括存储响应接收器模块302、响应传输模块304、压缩模块306、索引重建模块308、命令重新排序模块310、请求重新排序模块312和垃圾收集模块314,下文将描述这些模块。装置300在图3中示为位于存储控制器104中,但模块202、204、206、302-314中的一部分可以位于存储控制器104的外部而且可分布在系统100的不同元件中。此外,装置300的模块202-206、302-314可独立于客户端110运行。
在一种实施方式中,装置300包括从数据存储设备106接收一个或多个存储命令响应的存储响应接收器模块302。存储命令响应包括数据存储设备106附加数据段的数据的一个或多个位置。在这种实施方式中,数据存储设备106存储数据的位置对于装置300来说可以是未知的,直到数据存储设备106响应并指示数据附加的位置。当直到数据存储设备106存储数据之后数据存储设备106附加数据的物理位置才是已知的时,映射模块206从数据存储设备106(通常来自于一个或多个存储命令响应)接收数据存储设备106附加数据段的数据的一个或多个位置。在另一种实施方式中,如上所述,翻译模块204跟踪或管理数据段的数据存储的物理地址,映射模块206可从翻译模块204接收数据存储的位置的物理地址。
在另一种实施方式中,装置300包括将存储请求响应发到请求设备的响应传输模块304。存储请求响应包括关于存储请求的执行的信息。例如,存储请求响应可指示存储请求已成功执行或其他状态信息。在另一种实施方式中,存储请求响应包括指示数据和相关联的源参数所存储的位置。如果装置300正在仿真随机存取设备,这种实施方式可以是不可取的。在一种实施方式中,响应传输模块304在存储响应接收器模块302接收存储命令响应之后发送存储请求响应,该存储命令响应指示数据段的所有数据和相关联的源参数已成功存储在数据存储设备106上。在另一种实施方式中,响应传输模块304独立于存储命令响应的接收而发送存储请求响应。本领域技术人员会意识到在存储请求中发送的其他信息和发送响应的时机。
在一种实施方式中,装置300包括在存储在数据存储设备106上之前压缩附加数据存储命令的数据以形成数据的压缩模块306。通常,压缩模块306改变数据段的部分数据(或数据包)的数据长度。这影响了数据存储的位置和后续的附加点。在这种情况下,每个附加点可以是未知的,直到压缩之后。当使用压缩时,数据存储设备106或压缩模块306下游的一些模块通常跟踪附加点和数据存储设备106上的数据的物理位置,并且等待直到数据被压缩以确定数据(或数据包)的一部分和后续的附加点的数据长度。一旦得知附加点且压缩了数据,数据长度和位置(可以是物理地址的形式)可以被回报给映射模块206。在一种实施方式中,压缩模块306将压缩信息与所压缩的数据一起存储,通常存储在用于数据的数据包头中。本领域技术人员会认识到在数据存储设备106存储之前的压缩的其他特点和结果。
在另一种实施方式中,装置300包括索引重建模块308,索引重建模块308利用一个或多个源参数和数据段的数据在数据存储设备106上的物理位置重建映射模块206为数据段创建的映射。为了提升存取速度,索引通常存储在快速、非易失性存储器中(例如DRAM),快速、非易失性存储器容易由于电力故障、系统复位等丢失。将源参数与数据一起存储在顺序存储设备在顺序日志内创建了非易失性数据记录,索引重建模块308利用顺序日志重新创建源参数和物理地址以及数据长度之间的索引映射。
源参数可以存储在包头、数据包内的特定位置或者存储在数据包的尾端。通常,源参数存储在数据包的包头中。数据长度通常存储在数据包头内,从而如果索引或映射不可用,也可以顺序地搜索数据。在一种实施方式中,索引重建模块308在数据存储设备106的整个区域(例如页或擦除块)中跟踪,以重建包括用于数据段的映射的索引。
有利地是,数据在数据存储设备106上的物理存储位置和与数据一起存储的源参数包括主要的虚拟-物理映射。映射模块206所创建的映射包括次要虚拟-物理。次要虚拟-物理映射通常存储在RAM中,从而如果由于失去电力、发生故障或者其他原因,映射模块206所创建的映射失效时,主要虚拟-物理映射可用于重建次要虚拟-物理映射。
例如,索引重建模块308在数据存储设备106中查看位于数据的页的起始处的数据包头。索引重建模块308读取第一数据包的物理地址,然后读取包头中的源参数(包括数据长度)。然后,索引重建模块308将数据包中的源参数映射到数据包的物理地址和数据长度。索引重建模块308随后利用数据长度移动到下一数据包。索引重建模块308然后重复重建在页中的所有数据包中跟踪的进程以构建次要虚拟-物理映射。因此,数据存储设备106是可用于重建索引的顺序日志,该索引包括物理地址和源参数(例如虚拟标识符、偏移量、逻辑块地址、源物理长度等)之间的映射。
在一种实施方式中,索引被周期性地检查,或者在特定的时间点或以特定的状态存储在非易失性存储器中。每页何时被数据填充的顺序由带内保持,并且该顺序与检查点相互联系。如果索引不可用,对应于最近的检查点的最近索引可被检索。随后,可通过重放始于在检查点之后保存数据包的位置的日志来将索引提到当前。索引重建模块308可以通过下述方法同步:从存储在检查点之后的数据包到最新存储的数据包顺序地在数据包中跟踪以将索引更新到当前状态。有利地是,索引重建模块308允许有效和快速地恢复被检查的索引。
在一种实施方式中,装置300包括用于修正两个或多个未完成的附加数据存储命令的执行序列的命令重新排序模块310。命令重新排序模块310以一种更有效的方式有利于序列命令。在一种实施方式中,读取命令可被推迟,直到同一数据段的写入命令完成。在另一种实施方式中,支持多通道的存储设备102可允许当第一通道繁忙时其预定的命令推迟,并允许其他通道的其他命令继续执行,直到第一通道可用。在另一种实施方式中,当存储请求接收器模块202接收两个或多个存储请求时,装置300包括重新排列服务存储请求的顺序的请求重新排序模块312。命令重新排序模块310和请求重新排序模块312以一种更有效的方式有利于序列命令和请求。
在另一种实施方式中,装置300包括垃圾收集模块314,垃圾收集模块314在将存储区域返回给数据存储设备106的可用空间的池以用于后续的数据存储之前,从数据存储设备106的被标识为恢复的存储区域移动有效数据,并从存储区域中擦除无效数据。在该实施方式中,映射模块206将数据存储设备106中的一个或多个位置的有效数据的源参数的映射更新为数据存储设备106附加有效数据和关联的源参数的新位置。在一种实施方式中,可按与其他存储请求相同的方式从选定为恢复的区域中移动有效数据。
图4是示出了根据本发明的将存储请求转换为附加数据命令的方法400的一种实施方式的示意性流程图。方法400开始,在步骤402,存储请求接收器模块202从请求设备(例如客户端110或服务器108)接收存储请求。存储请求包括将文件或对象的数据段存储在数据存储设备106上的请求。存储请求可包括一个或多个用于数据段的源参数,数据段至少包括一个或多个逻辑块地址(在该地址处,存储请求请求存储数据段)和一个或多个相应于一个或多个逻辑块地址的数据长度。
在步骤404,翻译模块204将存储请求翻译为一条或多条存储命令。至少一条存储命令是附加数据存储命令。每条附加数据存储命令指令数据存储设备106将数据段的数据存储在一个或多个附加点上。附加点是数据存储设备106中的位置,其是数据存储设备106上最新存储的数据段之后的下一个地址。如果翻译模块204将数据段分割为不止一个段,则通常不止一个数据附加命令被创建。如果源自数据段的数据不适于页、擦除块等的末端的附加点,这样做可能是需要的。第二附加点可被设置在另一页、擦除块等的起始位置处。
在步骤406,映射模块206将数据段的一个或多个源参数映射为数据存储设备106的一个或多个位置,在该位置处,数据存储设备106附加数据段的数据,方法400结束。通常,映射是允许将来存取数据的索引的一部分。通过将数据的物理位置和数据长度映射到源参数,装置200能够仿真随机存取设备,同时将数据顺序地存储在数据存储设备106上。
图5是示出了根据本发明的将存储请求转换为附加数据命令的另一种方法500的一种实施方式的示意性流程图。方法500开始,在步骤502,存储请求接收器模块202从请求设备(例如客户端110或服务器108)接收存储请求。在步骤504,翻译模块204将存储请求翻译为一条或多条存储命令,其中至少一条存储命令是附加数据存储命令。同样地,每条附加数据存储命令指令数据存储设备106将数据段的数据存储在一个或多个附加点上。
在步骤506,压缩模块306将关于数据段的一条或多条附加数据存储命令的数据压缩成压缩数据,并且在步骤508,数据存储设备106响应于附加数据存储命令存储压缩数据。在步骤510,存储响应接收器模块302从数据存储设备106接收一个或多个存储命令响应。存储命令响应包括数据存储设备106附加数据段的数据的一个或多个位置。在步骤512,基于作为存储命令响应的一部分接收的存储位置,映射模块206将数据段的一个或多个源参数映射到数据存储设备106中的一个或多个位置,在这些位置,数据存储设备106附加数据段的数据,方法500结束。通常,压缩数据使得在存储数据之后将源参数映射到存储位置成为必须,这是因为压缩通常会改变数据的数据长度。
图6是根据本发明的将存储请求转换为附加数据命令的实例600的示意性框图。实例600仅展示了用于将存储请求转换为附加数据存储命令的装置200、装置300的一种实施方式,并不试图以任何方式成为限制。本领域技术人员会认识到,有不同于图6的实例600的许多方法实施本发明。
实例600可表示请求设备指令存储设备102将数据段存储在特定物理地址处的逻辑块存储请求。请求设备(如客户端110或服务器108)初始化存储请求以从源数据存储设备写入数据。来自源数据存储设备的数据602的一部分与存储在数据602的一部分内的数据段606一起被描述。在这种情况下,数据段606拟被存储于存储设备102的扇区1、偏移量5和数据长度为8的物理地址上。在一种实施方式中,请求设备制定存储请求608并将存储请求608发送到存储设备102,存储请求608包括具有源参数的包头,源参数包括逻辑块地址和数据长度。
为简便起见,实例600假设数据段606的数据未被压缩。在实例600中,数据段606的数据长度为8,并且在当前页616内有用于数据包的空间,用于长度为5的数据包的数据正在被存储在当前页616中。在这个例子中,翻译模块204确定数据段606不适于当前数据所存储的当前页616的末端并从数据段606创建两条附加数据存储命令614以存储两个数据包。数据1 610和数据2 612。
数据当前所存储的页616包括有效数据618。在其他页中可包括有效或无效数据。一条附加数据存储命令614将数据1 610存储在附加点1 620中,附加点1 620紧随数据最新存储的位置622。数据包数据1 610随后存储在当前页616的末端,如624所示。
第二附加数据存储命令614将数据2 612存储在数据将要被存储的下一页626上。在一种实施方式中,下一页626位于不同于数据1 610所存储的页616的擦除块中。在这种实施方式中,存储在附加点1 620的数据可流到下一页,而不需要必须在下一页的起始处设置新的附加点,除非下一页626位于另一擦除块中。在另一种实施方式中,下一页626是邻近数据1 610所存储的页616的页,或者在某种程序上是逻辑上的下一页,但是新的附加点2 630需要位于下一页626的起始处。本领域技术人员会认识到何时第二附加点630被要求继续存储数据。下一页626不包括有效数据628,这是由于下一页626已被擦除或存储空间恢复进程已经确定下一页626中不再有有效数据。第二附加数据存储命令614将数据包数据2 612存储在附加点2 630上,如632所示。
该实例600表明了数据段606分离的情况,数据段606分离是由于创建自数据段606的数据包610、612落在了页616的边界上,在其他情况下,数据段606的数据可存储在一起或者可以分离为三个或更多个数据包。在其他情况下,压缩模块306将数据段606的数据压缩以形成一个或多个数据包610、612。
图7是根据本发明的用于有效地映射虚拟地址和物理地址的装置700的一种实施方式的示意性框图。装置700包括正向映射模块702、反向映射模块704和存储空间恢复模块706,下文将描述这些模块。正向映射模块702、反向映射模块704和存储空间恢复模块706中的一个或多个的至少一部分位于下述设备的一个或多个中:发送存储请求的请求设备、数据存储设备106、存储控制器104、以及与请求设备、数据存储设备106和存储控制器104分离的计算设备。
在一种实施方式中,正向映射模块702和反向映射模块704与映射模块206结合起来工作。正向映射模块702和反向映射模块704可以是映射模块206的一部分,或者与映射模块206分离但一起工作。
装置700包括使用正向映射以识别数据段的数据的一个或多个物理地址的正向映射模块702。通过数据段的一个或多个虚拟地址识别物理地址,虚拟地址在发送到数据存储设备106的存储请求中识别。例如,存储请求可包括读取存储在数据存储设备106中的数据的请求。读取数据的存储请求包括与存储在数据存储设备106上的数据相关联的虚拟地址或虚拟标识符。读取请求可包括文件的虚拟地址,数据段源于该文件,这可以解释为,读取请求是读取与虚拟地址相关联的整个数据段的请求。
在另一实例中,读取请求包括读取请求中所请求的数据的虚拟地址以及偏移量和虚拟地址。例如,如果数据段是20个块,读取请求可包括16块的偏移量(即,始于20个块中的第16个块)和5的数据长度,从而读取请求读取数据段的最后5个块。读取请求也可在请求中包括偏移量和数据长度以读取整个数据段或从数据段的起始处读取。其他请求也可包括在存储请求中,例如状态请求。存储请求的其他类型和其他形式也被考虑在本发明的范围内并且能够被本领域技术人员所认识到。
装置700包括正向映射,该正向映射将一个或多个虚拟地址映射到存储在数据存储设备106中的数据的一个或多个物理地址。虚拟地址对应于与存储在数据存储设备106中的数据有关的一个或多个数据段。通常,一个或多个虚拟地址包括虚拟地址空间内的离散地址,其中虚拟地址通常稀疏地位于虚拟地址空间。对于数据段的虚拟地址来说,数据长度信息也可与虚拟地址关联且也可以包括在正向映射中。通常,数据长度对应于数据段的大小。结合虚拟地址和与虚拟地址有关的数据长度信息可用于帮助读取数据段内的特定部分。
通常,用于识别存储的数据的虚拟地址表示可能位于名字空间或可能的虚拟地址范围内的极少量虚拟地址。搜索这种稀疏构成的空间可能是繁琐的。出于这个原因,正向映射通常是有助于快速遍历正向映射以基于虚拟地址找出物理地址的数据结构。例如,正向映射可包括B-树、内容可寻址存储器(CAM)、二进制树、哈希表或有助于快速搜索稀疏构成的空间或范围的其他数据结构。通过使用快速搜索稀疏构成的名字空间的正向映射,装置700提供了从虚拟地址确定一个或多个物理地址的有效方式。
当正向映射可被优化(或至少被设计)以快速地从虚拟地址确定物理地址时,通常,不必为了在数据存储设备106的特定区域内定位所有数据而优化正向。出于该原因,装置700包括使用反向映射以从物理地址确定数据段的虚拟地址的反向映射模块704。反向映射用于将一个或多个物理地址映射到一个或多个虚拟地址,并且能够被反向映射模块704或其他进程使用以从物理地址确定虚拟地址。反向映射是有利地将数据存储设备106映射到擦除区域,从而反向映射的一部分跨越数据存储设备106的在存储空间恢复操作中一起擦除的擦除区域。存储空间恢复操作(或垃圾收集操作)恢复擦除区域以用于进一步的数据存储。通过利用擦除区域组织反向映射,存储空间恢复模块706能够有效地识别用于存储空间恢复的擦除区域并识别有效数据。下文将更详细地描述存储空间恢复模块706。
反向映射中的物理地址与正向映射关联或链接到正向映射,从而如果在正向映射中虚拟地址A映射到物理地址B,则在反向映射中,物理地址B映射到虚拟地址A。在一种实施方式中,正向映射包括链接到反向映射中的条目的物理地址。在另一种实施方式中,正向映射包括指向反向映射中的物理地址的指针或一些其他的中间链表、表等。本领域技术人员会认识到将物理地址链接到正向映射和反向映射的其他方法。
在一种实施方式中,反向映射包括一个或多个源参数。源参数通常与存储请求一起被接收并至少包括一个或多个虚拟地址。源参数也可包括与数据段的数据相关联的数据长度,数据段与存储请求一起被接收。在另一种实施方式中,反向映射不包括虚拟地址或数据长度形式的源参数,且源参数与存储在数据存储设备106上的数据段的数据一起存储。在该实施方式中,源参数可从反向映射中的引到与数据一起存储的源参数的物理地址被找出。换言之,反向映射可使用主要虚拟-物理映射,而不使用次要逻辑-物理映射。
将源参数与数据一起存储在顺序存储设备中是有利的,这是因为存储在数据存储设备106中的数据成为了能够被回放以重建正向和反向映射的日志。这是由于以下事实:与存储请求被接收的时间相匹配的顺序存储数据,并由此,源数据执行双重职能;重建正向和反向映射,并从物理地址确定虚拟地址。
装置700包括存储空间恢复模块706,存储空间恢复模块706在恢复擦除区域的操作之前利用反向映射识别擦除区域中的有效数据。在恢复操作之前,所识别的有效数据被移动到另一个擦除区域。通过利用擦除区域组织反向映射,存储空间恢复模块706能够扫描反向映射中对应于擦除区域的那部分以快速地识别有效数据或确定擦除区域中的有效数据的数量。擦除区域可包括一起擦除的擦除块、固定数量的页等。可组织反向映射,从而一旦扫描到特定擦除区域的条目,就得知了擦除区域的内容。
通过利用擦除区域组织反向映射,相比于搜索B-树、二进制树或其他用于虚拟-物理地址搜索的类似结构,搜索擦除区域的内容更加有效。搜索B-树、二进制树等形式的正向映射是繁琐的,这是因为B-树、二进制树等必须频繁地被全面搜索以识别擦除区域的所有有效数据。反向可包括表、数据库或其他允许进入擦除区域的将要被存储的数据以有助于擦除区域的数据的操作的结构。
在一种实施方式中,正向映射和反向映射独立于组织数据用于发送存储请求的请求设备的文件结构、名字空间、目录等,请求设备例如运行在服务器108或客户端110中的文件服务器或客户端。通过维持与请求设备的任何文件服务器分离的正向映射和反向映射,装置700能够仿真像存储请求所请求的那样存储数据的随机存取、逻辑块存储设备。
正向映射和反向映射的使用允许装置700看起来像是将数据存储在存储请求所指令的特定位置,而实际上将数据顺序地存储在数据存储设备106。有利地是,装置700通过仿真逻辑块存储而实际上顺序地存储数据,克服了随机存储对固态存储器(例如闪存)所产生的问题。装置700也允许灵活性,这是由于一个存储请求可以是逻辑块存储请求,而第二存储请求可以是对象存储请求、文件存储请求等。保持请求设备对文件结构、名字空间等的独立性在装置700可以服务的存储请求的类型方面提供了极大的灵活性。
图8是根据本发明的用于有效地映射虚拟地址和物理地址的装置800的另一种实施方式的示意性框图。装置800包括正向映射模块702、反向映射模块704和存储空间恢复模块706,这些模块与上文中相对于图7的装置200描述的基本相同。装置800还包括映射重建模块802、检查点模块804、映射同步模块806、无效模块808和映射更新模块810,将在下文中描述这些模块。
装置800包括映射重建模块802,映射重建模块802利用与数据一起存储的源参数重建正向映射和反向映射。当数据在数据存储设备106上顺序地存储时,通过跟踪擦除区域或擦除块在数据存储设备106中填充顺序和将源参数与数据一起存储,数据存储设备106成为顺序日志。映射重建模块802通过顺序地读取存储在数据存储设备106上的数据包回放日志。每个物理地址和数据包长度与每个数据包中的源参数成对,以重建正向和反向映射。
在另一种实施方式中,装置800包括检查点模块804,检查点模块804存储与正向映射和反向映射相关的信息,其中检查点是与数据存储设备的时间点或状态点有关的检查点。存储的信息足以将正向映射和反向映射恢复到相对于检查点的状态。例如,存储的信息可包括将正向和反向映射连同一些指示状态或时间检查点的标识符存储在非易失性存储器中,例如存储在数据存储设备中。
例如,时间戳可以与检查点信息一起存储。然后,时间戳可以与数据存储设备106中位置相互关联,其中数据包当前在该位置正在被存储在检查点中。在另一实例中,状态信息与检查点信息一起存储,状态点信息例如数据存储设备106正在存储数据的位置。本领域技术人员会认识到可由检查点模块804存储以将正向和反向映射恢复为检查点的其他检查点信息。
在另一种实施方式中,装置800包括映射同步模块806,映射同步模块806通过顺序地应用源参数和物理地址将正向映射和反向映射从相对于检查点的状态更新到当前状态。应用的源参数与顺序存储在检查点之后的数据一起存储。物理地址源于数据存储设备106上的数据的位置。
有利地是,映射同步模块806从检查点(而不是从起始处开始恢复)将正向和反向映射恢复到当前状态,并回放数据存储设备106的所有内容。映射同步模块806使用检查点到达紧随检查点之后存储的数据包,然后从该点到当前状态(在该状态下,数据包当前正被存储在数据存储设备106上)回放数据包。映射同步模块806通常比映射重建模块802消耗更少的时间来恢复正向和反向映射。
在一种实施方式中,正向和反向映射存储在数据存储设备106上,而正向和反向映射的另一个集被创建以映射存储的正向和反向映射。例如,数据包可存储在第一存储通道中,而用于存储的数据包的正向和反向映射可作为数据存储在第二存储通道中;第二存储通道上的用于数据的正向和反向映射可以作为数据存储在第三存储通道上,依此类推。这种递归的进程可根据需要为额外的正向和反向映射继续。存储通道可以位于单个数据存储设备106或位于分离的数据存储设备106。
装置800包括无效模块808,无效模块808在反向映射中标记数据的条目,该条目指示由其引用的数据响应于导致数据被无效的操作而无效。无效模块808可作为删除请求、读-修改-写请求及类似请求的结果标记条目无效。反向映射包括一些类型的无效标记或标签,无效标记或标签可由无效模块808改变以指示与反向映射中的条目关联的数据是无效的。例如,反向映射可包括一个由无效模块808在数据无效时设定的位。
在一种实施方式中,反向映射包括用于存储在数据存储设备106的有效数据和无效数据的信息,正向映射包括用于存储在数据存储设备106上的有效数据的信息。由于反向映射对于存储空间恢复操作来说是有用的,指示擦除块中的哪些数据为无效的信息包括在反向映射中。通过在反向映射中维持指示无效数据的信息,在一种实施方式中,正向映射仅需要维持有关于存储在数据存储设备106上的有效数据的信息,由此提升了正向查找的效率和速度。
随后,存储空间恢复模块706可使用无效标记通过下述方法确定擦除区域中的无效数据的数量:扫描用于擦除区域的反向映射以相对于擦除区域的存储容量确定无效数据的数量。然后,存储空间恢复模块706可使用擦除区域中的无效数据的确定数量来选择恢复的擦除区域。通过扫描若干擦除区域甚至是全部可用的擦除区域,存储空间恢复模块706可以使用选择标准(例如擦除区域中无效数据的最高量)以选择恢复的擦除区域。
在一种实施方式中,一旦擦除区域被选定为恢复,存储空间恢复模块706可随后将有效数据从选定的擦除区域写入数据存储设备106中的新位置。通常,该新位置位于当前正在顺序地存储数据的擦除区域的页中。存储空间恢复模块706可利用数据管道写入有效数据,正如由David Flynn等人于2007年12月6日提交的申请号为11,952,091,题为“Apparatus,System,and Method for Managing Data Using a Data Pipeline”美国专利申请中所述的,通过引用将该文献并入本文中。
在一种实施方式中,存储空间恢复模块706还更新反向映射以指示写入新位置的有效数据在选定的擦除区域中为无效,并且基于写入新位置的有效数据更新正向和反向映射。在另一种实施方式中,存储空间恢复模块706与映射更新模块810(下文将对其描述)协同作用以更新正向和反向映射。
在优选实施方式中,存储空间恢复模块706相对于与存储请求和其他命令相关联的数据存储和检索自主地运行。包括在存储空间恢复模块706中的存储空间恢复操作在上文中引用的存储空间恢复申请有更详细的描述。
在一种实施方式中,装置800包括映射更新模块810,映射更新模块810响应于数据存储设备106被改变的内容更新正向映射和/或反向映射。在又一种实施方式中,基于数据存储设备存储数据的位置,映射更新模块810从数据存储设备接收将所存储数据的物理地址链接到虚拟地址的信息。在该实施方式中,存储数据包的位置可以是不可用的,直到数据存储设备106存储了数据包。
例如,来自数据段的数据被压缩以形成数据包,每个数据包的大小可以是未知的,直到压缩之后。数据存储设备106顺序地存储数据,一旦数据包被压缩和存储,附加被设定到存储的数据包之后的位置,下一数据包被存储。一旦得知附加点,数据存储设备106随后发回对应于存储下一数据包的附加点的物理地址的报告。映射更新模块810使用所报告的存储的数据包的物理地址和关联的数据长度更新正向和反向映射。本领域技术人员会认识到映射更新模块810的其他实施方式以基于存储在数据存储设备106上的数据的物理地址和关联的数据长度更新正向和反向映射。
图9是根据本发明的用于有效地映射虚拟地址和物理地址的方法900的一种实施方式的示意性流程图。方法900开始,在步骤902,正向映射模块702使用正向映射识别数据段的数据的一个或多个物理地址。从数据段的一个或多个虚拟地址识别物理地址,在指令数据存储设备106的存储请求中识别数据段。正向映射包括一个或多个虚拟地址到数据存储设备106中存储的数据的一个或多个物理地址之间的映射。虚拟地址是虚拟地址空间内的离散地址,其中虚拟地址稀疏地位于虚拟地址空间。
在步骤904,反向映射模块704使用反向映射从物理地址确定数据段的虚拟地址。反向映射将一个或多个物理地址映射到一个或多个虚拟地址。反向映射中的物理地址也利用指针、链接等与正向映射相关联。反向映射中的虚拟地址对应于与存储在数据存储设备106上的数据相关的一个或多个数据段。反向映射也将数据存储设备映射到擦除区域,从而反向映射的一部分跨越擦除区域。数据存储设备106的擦除区域在存储空间恢复操作中被一起擦除。存储空间恢复操为将来存储数据恢复擦除区域。
在步骤906,存储空间恢复模块706在恢复擦除区域的操作之前使用反向映射识别擦除区域中的有效数据,方法900结束。存储空间恢复模块706或其他与存储空间恢复关联的模块在恢复操作之前将识别的有效数据移动到另一擦除区域。注意到方法900的步骤902、904、906平行示出,这是因为步骤902、904、906可以以任意顺序独立地实施。
图10是根据本发明的用于有效地映射虚拟地址和物理地址的方法1000的另一种实施方式的示意性流程图。方法1000开始,在步骤1002,存储空间恢复模块706通过下述方法确定擦除区域中的有效数据的数量:扫描用于擦除区域的反向映射以确定有效数据相对于擦除区域的存储容量的数量。在步骤1004,存储空间恢复模块706确定是否要计算另一擦除区域。如果在步骤1004,存储空间恢复模块706确定要计算另一擦除区域,存储空间恢复模块706为下一擦除区域确定有效数据的量。
如果在步骤1004,存储空间恢复模块706确定不计算另一擦除区域,则在步骤1006,存储空间恢复模块706通过利用选择标准选择恢复的擦除区域,选择标准可包括利用擦除区域中的无效数据的数量。在步骤1008,存储空间恢复模块706识别选定的擦除区域中的有效数据并在步骤1010中,将有效数据移动到当前写入数据的擦除区域中。在步骤1012,映射更新模块810随后更新正向和反向映射以表明有效数据已被写入数据存储设备106中的另一位置。
在一种实施方式中,在步骤1014,存储空间恢复模块706擦除选定的擦除区域并将选定的存储区域标记为可用于数据存储,方法1000结束。在另一种实施方式中,一旦存储空间恢复模块706将选定的擦除区域中的所有有效数据写入另一位置,在步骤1014,存储空间恢复模块706将选定的存储区域标记为可用于数据存储,而不需要擦除。
图11是根据本发明的正向映射和反向映射的实例的示意性框图。通常,装置700和800接收存储请求,例如读取和编址的存储请求。例如,装置700和800可接收逻辑块存储请求1102以开始读取读取地址182并读取3个块。通常,正向映射1104将逻辑块地址存储为与其他虚拟地址在一起的虚拟地址,从而正向映射模块702使用正向映射1104从存储请求1102的值为182的虚拟地址识别物理地址。在该实例中,为简便起见,仅示出了数字的虚拟地址,但本领域技术人员会认识到正向映射1104中可使用和表示的任意虚拟地址。在其他实施方式中,正向映射1104可包括字母-数字字符、十六进制字符及类似字符。
在该实例中,正向映射1104是简单的B-树。在其他实施方式中,正向映射1104可以是内容可寻址存储器(CAM)、二进制树、哈希表或本领域内技术人员所知的其他数据结构。在该实施方式中,B-树包括可包括两个虚拟地址的节点(例如根节点1108)。每个虚拟地址可以是值域。例如,虚拟地址可以是具有值域(例如偏移量和长度)的虚拟标识符的形式,或者可表示利用第一和最后地址或位置的值域。
单个虚拟地址包括在特定节点(例如根节点1108)中时,如果被搜索的虚拟地址1106小于节点的虚拟地址,搜索会继续沿着定向边1110往下到达节点1108的左边。如果被搜索的虚拟地址1106与当前节点1108匹配(即,位于在节点中识别的值域内),搜索停止,并且在当前节点1108的指针、链接、物理地址等被识别。如果被搜索的虚拟地址1106大于当前节点1108的值域,搜索会继续沿着定向边1112往下到达当前节点1108的右边。当节点包括两个虚拟地址,并且被搜索的虚拟地址1106落入节点的所列的虚拟地址之间时,搜索继续沿着中间定向边(未示出)往下到达具有落入当前节点1108的两个虚拟地址之间的虚拟地址的节点。搜索继续沿着B-树往下进行,直到定位了期望的虚拟地址或者确定了B-树中不存在所搜索的虚拟地址1106。
在图11所示出的实例中,正向映射模块702从根节点1108开始搜索值为182的虚拟地址1106。由于搜索的虚拟地址1106小于根节点的虚拟地址(2005-212),正向映射模块702向下沿着定向边1110往下搜索到达下一节点1114的左边。搜索的值为182的虚拟地址1106大于存储在下一节点1114的虚拟地址(072-083),所以正向映射模块702向下沿着定向边1116从节点1114的右边往下搜索到达下一节点1118。在该实例中,下一节点1118包括178-192的虚拟地址,从而所搜索的值为182的虚拟地址1106与节点1118的值为178-192的虚拟地址匹配,这是因为所搜索的值为182的虚拟地址1106落入到节点1118的值域178-192内。
一旦正向映射模块702确定了正向映射1104中的匹配,正向映射模块702将在节点1118内找到的或与节点1118链接的物理地址返回。在所述实例中,由正向映射模块702识别为包含所搜索的虚拟地址1106的节点1118包括映射到反向映射1122中的条目1120的链接“f”。
在所述实施方式中,对于反向映射1122中的每个条目1120(表示为表中的行)而言,反向映射1122包括条目ID 1124、物理地址1126、与存储在数据存储设备106的物理地址1126上的数据(在这种情况下,数据被压缩)相关联的数据长度1128、有效标签1130、虚拟地址1132(可选)、与虚拟地址1132相关联的数据长度1134(可选)和其他杂项数据1136。反向映射1122被组织到擦除块(擦除区域)中。在该实例中,对应于选定的节点1118的条目1120位于擦除块n 1138中。擦除块n 1138在擦除块n-1 1140之后,擦除块n 1138之后是擦除块n+1 1142(擦除块n-1和擦除块n+1中的内容未示出)。擦除块可以是包括预定数量的页的一些擦除区域。擦除区域是数据存储设备106上在存储恢复操作中被一起擦除的区域。
条目ID 1124被示出为是反向映射1122的一部分,条目ID 1124可以是地址、虚拟链接或将反向映射1122中的条目链接到正向映射1104中的节点的其他手段。物理地址1126是数据存储设备106中对应于所搜索的虚拟地址1106的数据所驻留的地址。与物理地址1126关联的数据长度1128识别存储在物理地址1126上的数据包的长度。(为简便起见,物理地址1126和数据长度1128可被一起称为目标参数1144,虚拟地址1132和关联的数据长度可被称为源参数1146)。在这个实例中,目标参数1144的数据长度1120不同于源参数1146的数据长度1134,在一种实施方式中,在存储之前压缩存储在数据存储设备106上的数据包。对于与条目1120关联的数据,数据可被高度压缩,从64个块压缩成1个块。
有效标签1130指示映射到条目1120的数据是否有效。在这种情况下,与条目1120关联的数据是有效的,在图11中,其在条目1120的行中被表示为“Y”。通常,反向映射1122既跟踪有效数据又跟踪无效数据,正向映射1104跟踪有效数据。在该实例中,条目“c”1148表示与条目1148关联的数据无效。注意到正向映射1104不包括虚拟地址。通常,反向映射1122保持无效数据的条目,从而能够在存储恢复操作中快速地区别有效数据和无效数据。
为了方便,所述反向映射1122包括源参数1146,但反向映射1122可以(但未必)包括源参数1146。例如,如果源参数1146与数据一起存储(可能位于存储数据的包头),反向映射1122可通过包括与数据关联的物理地址1126间接地识别虚拟地址,而可以从存储的数据中识别源参数1146。本领域技术人员会认识到何时将源参数1146存储在反向映射1122是有利的。
反向映射1122也可包括其他杂项数据1136,例如文件名、对象名、源数据等。本领域技术人员会认识到在反向映射1122中有用的其他信息。尽管物理地址1126在反向映射1122中示出,但在其他实施方式中,物理地址1126或其他目标参数1144可被包括在其他位置中,例如可被包括下述位置:正向映射1104、中间表或数据结构等等。
通常,反向映射1122由擦除块或擦除区域设置,从而遍历与擦除块(如擦除块n 1138)关联的映射的一部分允许存储空间恢复模块706识别擦除块1138中的有效数据并计算擦除块1138中有效数据的数量(或相反地,无效数据的量)。由于索引可被优化用于搜索和存储恢复操作,将索引设置到正向映射1104和反向映射1122中是有利的,其中正向映射1104能够被快速地搜索以从虚拟地址1106识别物理地址1126,反向映射1122能够被快速地搜索以识别擦除块1138中的有效数据及其数量。本领域技术人员会认识到具有正向映射1104和反向映射1122的索引的其他好处。
图12是示出了根据本发明的用于协调存储请求的装置1200的一种实施方式的示意性框图。装置1200包括具有附加/无效模块1202和重组模块1204的存储控制器104,这将在下文描述。附加/无效模块1202和重组模块1204中的一个或多个的至少一部分位于下述设备中的一个或多个中:发送存储请求的请求设备、数据存储设备106、存储控制器104和与请求设备、数据存储设备106和存储控制器104分离的计算设备。
装置1200包括附加/无效模块1202,附加/无效模块1202响应于第一存储请求的接收生成第一附加数据存储命令,并响应于第二存储请求的接收生成第二附加数据存储命令。从一个或多个请求设备接收第一和第二存储请求。请求设备可以是服务器108或客户端110,客户端110可以位于服务器108上,或者通过计算机网络112与服务器108通信。
第一存储请求包括用第一数据覆盖数据段的现有数据的请求。数据段存储在数据存储设备106上。第二存储请求包括用第二数据覆盖相同数据段的现有数据的请求。第一和第二数据包括将以相同的偏移量存储在数据段内的重叠数据的至少一部分,在第一存储请求之后接收第二存储请求。
附加/无效模块1202还响应于第一存储请求通过将数据段的数据标记为无效来更新索引。标记为无效的数据是正被第一数据替换的数据。附加/无效模块1202也响应于第二存储请求通过将数据段的数据标记为无效来更新索引,其中,标记为无效的数据是正被第二数据替换的数据。在一种实施方式中,附加/无效模块1202通过更新反向映射1122来更新索引。在一种实施方式中,附加/无效模块1202更新反向映射1122以指示数据段无效。在另一种实施方式中,附加/无效模块1202仅将对应于第一数据或第二数据的数据标记为无效。这可能需要修正正向映射1104和反向映射1122,这将在下文中详细描述。
在另一种实施方式中,将数据段的数据标记为无效可包括生成表,该表指示数据段的正被第一数据和第二数据替换的部分是无效的,该表还指示数据段中未被替换的部分仍然是有效的。该表可被重组模块1204在更新索引的过程中使用,而不需要将整个数据段标记为无效。
装置1200包括重组模块1204,重组模块1204基于第一数据更新索引并基于第二数据更新索引,其中,组织被更新的索引以指示第二数据比第一数据更符合当前情况。在基于第一数据更新索引(在基于第二数据更新索引之前)之时或基于第二数据更新索引(在基于第一数据更新索引之前)之时保持索引的这种组织。
在一种实施方式中,组织索引以指示对于重叠数据来说第二数据比第一数据更符合当前情况包括在用于重叠数据的索引中保持指针、链接等,不考虑更新的顺序,重叠数据对应于第二数据。例如,如果源数据段包括由3’的第一数据和3”的第二数据覆盖的块3,在更新之后,不论索引是否在第一数据之前用第二数据更新,索引都指向3”,反之亦然。在下文对图16的描述中提供了进一步的解释。
通常,组织索引以指示第二数据比第一数据更符合当前情况可包括利用第二数据更新索引中映射到重叠数据的一部分,以及甚至在重组模块1204基于第二数据(在基于第一数据更新索引之前)更新索引的情况下,保留到第二数据的映射。
当附加/无效模块1202更新索引时,附加/无效模块1202阻止通过另一进程访问索引以确保数据完整性。例如,如果附加/无效模块1202正在基于第一数据更新索引,附加/无效模块1202阻止重组模块1204或附加/无效模块1202的另一例程基于第二数据更新索引。通过在索引更新时阻止对索引的访问(即锁定索引),装置1200支持多处理器或多线程运行的装置的模块1202和1204的多重运行。注意到尽管上文中讨论了两个存储请求,本发明可同样地应用到同时处理三个或更多个存储请求的情形。
图13是示出了根据本发明的用于协调存储请求的装置1300的另一种实施方式的示意性框图。装置1300包括附加/无效模块1202和重组模块1204,这两个模块基本上类似于结合图12的装置1200所描述的。装置1300还包括数据位置模块1302、读取模块1304、读取延迟模块1306、序列编号模块1308,将在下文中描述这些模块。图示中,装置1300的模块1202、1204、1302-1308位于存储控制器104中,但模块1202、1204、1302-1308的全部或部分可包括在数据存储设备106、客户端110、服务器108或其他设备或其他位置中。
在一种实施方式中,装置1300包括数据位置模块1302,数据位置更新模块1302利用数据存储设备106存储第一数据的第一物理地址更新索引,还利用数据存储设备106存储第二数据的第二物理地址更新索引。装置1300接收数据存储设备106存储第一数据和从数据存储设备106接收第二数据的物理位置。如上所述,数据存储设备106顺序地存储数据,为给定的数据包存储数据的位置可以是未知的,直到存储了先前的数据包。
组织所更新的索引以指示第二物理位置比第一物理位置更符合当前情况,而不考虑索引是基于第一物理位置被更新(在基于第二物理位置更新之前),还是基于第二物理位置被更新(在基于第一物理位置更新之前)。例如,如果第一数据的重叠部分响应于第一存储请求存储在地址1中,而第二数据的重叠部分存储地址2中,则数据位置模块1302为索引中相对于重叠数据的部分将地址2存储在索引中。如果在为第一数据更新之前,为第二数据更新索引,则索引为重叠数据维持地址2,而不是用地址1替换地址2。
数据位置更新模块1302阻止通过数据位置模块1302或其他模块(例如附加/无效模块1202或重组模块1204)的另一例程访问索引,直到数据位置模块1302完成更新索引。在数据位置模块1302更新索引之时阻止对索引的访问增加了数据的可靠性。
通常,在重组模块1204处理存储请求之前,附加/无效模块1202处理特定存储请求,并且在数据位置模块1302处理存储请求之前,重组模块1204处理存储请求。然而,一旦确定两个存储请求到达的顺序,附加/无效模块1202的例程处理第二存储请求可发生在附加/无效模块1202的另一例程处理第一存储请求之前。同样地,重组模块1204处理第二存储请求可发生在附加/无效模块1202或重组模块1204的另一例程处理第一存储请求之前。
类似地,数据位置模块1302的例程处理第二存储请求可发生在附加/无效模块1202、重组模块1204或数据位置模块1302的另一例程处理第一存储请求之前。本发明的这种特征允许异步和独立的多处理器和/或多线程地处理存储请求。在模块1202、1204、1302的另一例程更新索引和基于到达的顺序而不是处理的顺序组织索引时,阻止对模块1202、1204和1302的访问有助于通过多处理器或多线程并行地处理存储请求。
装置1300包括反向的读取模块1304,读取模块1304响应于包括读取请求的存储请求读取数据段的至少一部分。读取请求必须与导致修正数据段的存储请求协调,从而装置1300也包括读取延迟模块1306,读取延迟模块1306推迟服务所请求的读取操作,直到第一存储请求由附加/无效模块1202、重组模块1204和数据位置更新模块1302服务。读取延迟模块1306通过在更新数据段的内容时或在更新映射到数据段的索引时阻止读取操作保持数据的完整性。
在一种实施方式中,当在请求覆盖数据段的至少一部分的第一存储请求之后,但在同样请求覆盖数据的至少一部分的第二存储请求之前接收到读取数据段的读取请求时,读取延迟模块1306推迟服务读取请求,直到第一和第二存储请求都已由附加/无效模块1202、重组模块1204和数据位置更新模块1302服务。在这种实施方式中,读取延迟模块1306允许基于第二数据存储请求更新数据段,从而读取模块1304将读取数据段的最新版本。
在一种实施方式中,装置1300包括序列编号模块1308,序列编号模块1308将序列号与存储请求关联,其中分配的序列号表示装置1300接收存储请求的顺序。序列号有助于组织索引,从而索引反映出:基于第二存储请求的更新发生在基于第一存储请求的更新之前。在这种实施方式中,重组模块1204组织索引以利用分配给第一存储请求和第二存储请求中的每一个的序列号指示第二数据比第一数据更符合当前情况。同样地,数据位置模块1302也组织索引以指示第二数据比第一数据更符合当前情况。序列号可以是时间戳、连续的数字或其他任何可被用于识别一个序列号先于另一个序列号的机制。本领域技术人员会认识到序列号的其他形式。
在一种实施方式中,在更新索引时,附加/无效模块1202、重组模块1204或数据位置模块1302不阻止访问整个索引。索引可被分割成两个或多个区域。例如,一个区域可涉及数据存储设备106的一个区域,而索引的另一个区域可涉及数据存储设备106的另一个区域。在该实施方式中,当服务涉及索引的第一区域的存储请求时,附加/无效模块1202、重组模块1204或数据位置模块1302的额外的例程可服务涉及第二区域的第二存储请求。在另一种实施方式中,索引可被分割以创建多个可独立运行的虚拟地址区域。索引的区域可以是分支、次分支,甚至是节点,只要在更新区域时限制对区域的访问不影响同时更新的其他分区的数据完整性。
在一种实施方式中,第一和第二存储请求与将要替换数据段的至少一部分的数据一起接收。在另一种实施方式中,同时接收第一和第二存储请求中的一个或两个,而没有数据。此外,可将相应的附加数据存储请求在没有数据的情况下发送到数据存储设备106。例如,存储请求可不包括数据且可以初始化直接存储器存取(DMA)进程和远程直接存储器存取(RDMA)进程以将数据段的数据转移到数据存储设备106。同样地,发送到数据存储设备106的附加数据存储命令可指令数据存储设备106建立DMA或RDMA进程以转移数据。装置1200、1300具有足够的灵活性以处理具有数据一个存储请求、是恢复进程的一部分的另一存储请求和建立DMA和RDMA操作的又一存储请求。
本发明公开了附加/无效模块1202、重组模块1204和数据位置更新模块1302的例程是如何处理大约在同一时间接收到的影响单个数据段的请求,本领域技术人员会认识到附加/无效模块1202、重组模块1204、数据位置更新模块1302可处理其他影响单个数据段的不同部分的多种存储请求,也可处理影响两个或多个分离的数据段的存储请求。
图14是示出了根据本发明的用于协调存储请求的方法1400的一种实施方式的示意性流程图。方法1400开始,在步骤1402,装置1200接收第一存储请求。在步骤1404,装置1200接收第二存储请求。第一和第二存储请求通过覆盖数据段的至少一部分影响单个数据段。此外,第一和第二数据请求覆盖数据段为第一和第二存储请求所共有的至少一个重叠部分。
在步骤1406,附加/无效模块1202的例程生成第一附加数据存储命令以用第一数据覆盖数据段的至少一部分。在步骤1408,附加/无效模块1202的例程还生成第二附加数据存储命令以用第二数据覆盖数据段的至少一部分。在步骤1410,附加/无效模块1202的正在服务第一数据请求的例程通过无效数据段中被第一数据替换的数据更新索引。在步骤1412,附加/无效模块1202的正在服务第二数据请求的例程通过无效数据段中被第二数据替换的数据也更新索引。
在步骤1414,重组模块1204的例程基于第一数据更新索引。在步骤1416,重组模块1204的例程还基于第二数据更新索引,方法1400结束。当附加/无效模块1202或重组模块1204的任意例程更新索引时,模块1202、1204的其他例程被阻止访问索引。
与附加/无效模块1202和重组模块1204的例程有关的步骤1406-1416的顺序仅仅是一种实施方式。步骤1406-1416的其他顺序是可能的而且是本发明的重要特征,只要在重组模块1204服务第一存储请求之前,附加/无效模块1202服务第一存储请求,而且在重组模块1204服务第二存储请求之前,附加/无效模块1202服务第二存储请求。例如,附加/无效模块1202的例程和重组模块1204的例程可以在附加/无效模块1202的另一例程服务第一存储请求之前服务第二存储请求。在下文中,相对于图16所示出的实例更详细地论述了服务存储请求的可能顺序。
图15是示出了根据本发明的用于协调存储请求的方法1500的一种实施方式的示意性流程图。方法1500是为协调上述的客户端110、存储控制器104或装置1200、1300的其他位置以及数据存储设备106中的存储请求而采取的步骤的实例。注意到方法1500描述了三个设备中的动作,方法1500不意图暗示本发明需要跨越不止一个设备,也不意图暗示模块必须按图12和13所示定位。
本发明可以在存储控制器104或与数据存储设备106的存储控制器104通信的其他单个设备中实施,也可包括客户端110、服务器108等中的驱动器的一部分。通常,客户端110和数据存储设备106中所示的动作独立于本发明,而且仅被用于展示一般在客户端110和数据存储设备106中发生了什么以发送存储请求和响应于存储请求而存储数据。
尽管方法1500描绘了单个客户端110,但通常,具有多个客户端110,而且每个客户端110通过存储控制器104的一个或多个的例程访问数据存储设备106。在步骤1502,客户端110初始化客户端之间的锁之时,方法1500开始,该锁与其他客户端110协调数据的写入,从而使得图示的客户端110是在特定时间发送具有写入请求的存储请求的唯一客户端110。写入请求可以是写入新数据的请求,或者是替换或修正现有数据段的请求。在服务写入新数据的写入请求时阻止对索引的访问是重要的,因此本发明在下述情况下特别有用:替换或修正现有数据段以确保在出现两个或多个修正/替换相同数据段的请求时的数据完整性。在该实施方式中,一旦客户端之间的锁就位以确保来自不止一个客户端110的写入请求的同步性,则在步骤1504,客户端110将写入请求发送到存储控制器104。在另一种实施方式中,未利用客户端之间的同步性,而且存储请求没有预定的顺序。在所述的实施方式中,写入请求基本不具有数据并初始化DMA进程以将数据从客户端110或其他位置转移到数据存储设备106。
在步骤1506,附加/无效模块1202随后通过“锁定”索引阻止对索引的多重访问。在步骤1508,序列模块1308随后获取序列号并将序列号与写入请求关联。在步骤1510,附加/无效模块1202基于写入请求创建附加数据存储命令。附加数据存储命令包括分配的序列号并涉及数据段中由写入请求要求覆盖的数据。然后,在步骤1511,附加/无效模块1202或存储控制器104内的其他模块将附加数据存储命令和序列号一起发送到数据存储设备106。附加数据存储命令包括初始化DMA进程的命令,以将数据从客户端110或其他位置转移到数据存储设备106。
此外,在步骤1512,附加/无效模块1202通过将现有数据标记为无效更新索引。现有数据是数据段的一部分的数据,并且将要被写入请求中引用的数据替换。随后,在步骤1514,附加/无效模块1202释放索引中的块,从而使得可以服务其他写入请求。此外,在步骤1515,客户端110解锁写入请求的发送,从而另一客户端110能够将写入请求发送给存储控制器104。在一种实施方式中,附加/无效模块1202暂时地无效整个数据段,直到索引被更新。在索引被更新之后,数据段的未被写入请求影响的部分被标记为有效。在另一种实施方式中,附加/无效模块1202仅无效索引的与被覆盖的数据相关联的部分。
注意到并行地示出了创建附加数据存储命令(步骤1510)和无效数据(步骤1513)。在另一种实施方式中,在无效数据(步骤1512)和在索引中释放锁(步骤1514)之后,附加/无效模块1202创建附加数据存储命令(步骤1510)。在优选实施方式中,数据存储设备106以序列号的顺序存储数据包。在一种实施方式中,通过将序列号与附加数据存储命令关联(步骤1511),附加/无效模块1202可独立于无效数据(步骤1512)和解锁索引(步骤1512)创建附加数据存储命令(步骤1510)。
一旦数据存储设备106接收到附加命令和序列号,在步骤1516,数据存储设备106初始化DMA进程以将与写入请求关联的数据转移到数据存储设备106。在步骤1518,数据存储设备106还阻止读取将要被存储的该数据并在步骤1520处理接收的数据。处理数据可能包括在首部加包头、压缩数据、加密数据、创建纠错码(ECC)等。尽管只示出了单重DMA转移,但处理也可包括多重DMA转移。随后,数据存储设备106完成用于与序列号关联的附加数据存储命令的DMA,然后在步骤1524,数据存储设备106完成附加数据存储命令。
在其他实施方式中,除创建附加数据存储命令之外,附加/无效模块1202还创建与写入请求关联的其他命令,并将命令与序列号关联。然后,存储控制器104发送命令,其中序列号附加到每个命令上。随后在步骤1524中,数据存储设备106完成与序列号关联的所有命令。本领域技术人员会认识到可生成用于服务写入请求的、与写入请求相关联的其他命令。一旦数据存储设备106处理了通过DMA接收的数据(步骤1520),数据存储设备106存储数据(步骤1526)并解除对读取数据的阻止(步骤1528)。注意到数据的存储(步骤1526)是可能比其他进程消耗更多时间的进程。在优选实施方式中,存储控制器104在数据被存储时将处理许多其他存储请求。
在附加/无效模块1202解锁索引(步骤1514)之后,重组模块1204锁定索引(步骤1530)并在步骤1532中基于请求写入的数据相对于从客户端110接收的写入请求更新索引。随后在步骤1534,重组模块1204解锁索引。一旦被解锁,索引可被附加/无效模块1202和重组模块1204的其他例程访问。在一种实施方式中,作为对附加/无效模块1202解锁索引(步骤1514)和重组模块1204重新锁定索引(步骤1530)的替代,索引在附加/无效模块1202的无效过程和重组模块1204的索引更新过程中保持锁定状态。
一旦在步骤1524中,数据存储设备106完成与序列号关联的命令,则在步骤1536中,数据存储设备106发送数据存储设备106存储关联的数据(步骤1526)的一个或多个物理地址。在一种实施方式中,一起发送命令完成1524与序列号1536。在优选实施方式中,与命令完成1524一起被发送的序列号1536与最初发送给数据存储设备106的序列号1511相同。在步骤1538中,数据位置模块1302锁定索引并在步骤1540中更新索引以指向数据存储设备106在步骤1526中存储数据的位置。在该实施方式中,附加/无效模块1202清除关联的数据段的无效标志。在另一种实施方式中,附加/无效模块1202无效与写入请求相关联的整个数据段,而数据位置模块1302清除数据中未受写入请求影响的无效标志。随后在步骤1542中,数据位置模块1302解锁索引,在步骤1544中,存储控制器104完成写入请求并将确认发送到客户端110。然后在步骤1546中,客户端110接收并处理确认,方法1500结束。
在一种实施方式中,每次索引被锁定(步骤1506、1530、1538),整个索引被锁定。在另一种实施方式中,仅索引的一个部分被锁定。例如,分支可以被锁定,或者甚至是对应于数据段的节点被锁定。
图16(包括图16A、16B和16C)是示出了根据本发明的用于协调存储请求的装置1200、1300的实例1600的示意性框图。在实例1600中,原始状态的数据段1602被假定为基于先前的存储数据段的写入请求而存储在数据存储设备106上。同样在该实例中,装置1200、1300从两个客户端110接收两个存储请求:客户端A发送请求1而客户端B发送请求2。两个存储请求都试图覆盖数据段的一部分。来自客户端A的请求1的接收早于来自客户端B的请求2的接收。
接收请求的时间序列1604被示为表示如果存储控制器104将数据存储设备106仿真为随机存储设备,客户端110如何感知到对数据段的改变。数据段的原始状态1602包括五个标号为1-5的块。原始状态1602的块被示为不具有断面线。客户端A发送与修正块2和块3的第一数据相关联的请求1。第一数据1606分别将块2和块3中的新数据示出为2’和3’。具有第一数据1606的块被示为具有水平断面线。客户端A发送与修正块3和块4的第二数据相关联的请求2。第二数据1608分别将块3和块4中的新数据示出为3”和4”。具有第二数据1608的块被示为具有从左上到右下的斜断面线。最终状态1610被示出,其中,第一数据和第二数据覆盖块2、3和4。
特别值得注意地是,在最终状态1610中,块3包括第二数据3”。这是由于请求2在请求1之后到达。由于对于请求1来说,请求2在时间上居第二位,所以请求2被认为是比请求1更符合当前情况。实例1600描述了为数据段更新索引的若干情况,从而索引的最终状态在每种情况下都是一样的,而且第二数据比第一数据更符合当前情况。
在实例1600中,一旦接收了数据,则将其在三个步骤内处理。首先,附加/无效模块1202的例程无效数据段中将要被写入请求的数据替换的数据。其次,索引被假设为具有B-树、二进制树或类似结构形式的正向映射1104,重组模块1204的例程通过重组树更新索引。最后,数据位置模块1302使用数据存储设备106存储数据的一个或多个位置更新索引。例如,数据位置模块1302可更新反向映射1122。用于请求A的这三个动作被示为A1、A2、A3。用于请求B的这三个动作被示为B1、B2、B3。在另一种实施方式中,步骤A1和A2可结合成单个步骤。类似的,A2和A3可以结合。重新布置和结合步骤或步骤中执行的进程符合本发明的广泛范围。
实例1600描述了10个不同序列(S1-S10)的树基于与请求A和请求B相关联的动作的不同组合而更新树的状态。注意到全部10个可能的序列的最终状态是一样的,这正是所期望的结果。序列S1-S10全部开始于步骤A1。这假设在请求1被接收之后,附加/无效模块1202马上为来自客户端A的请求1分配序列号并无效数据。在另一种实施方式中,分配序列号和无效数据是分开进行的。在这种实施方式中,来自客户端A的请求1的接收早于来自客户端B的请求2的接收,附加/无效模块1202的一个或多个例程最初基于到达的顺序将序列号分配给每个请求,由于每个请求具有分配的序列号,可推迟在步骤A1中为无效数据而进行的处理,可首先处理B1以无效数据。在这种情况下,B1先于A1(未示出)的额外序列的最终状态将与序列S1-S10所示出的最终状态相同。
第一序列S1描述了树中表示数据段的块1-5的节点的原始状态。(注意到表示原始状态的节点不具有断面线以与在图的上部示出的块的原始状态相匹配)。节点示出了1-5(1:5)的范围,对应于处于原始状态1602的块1-5。序列S1的第一步是为了使附加/无效模块1202无效数据段的节点。这在步骤A1中描述,其中节点被示出为无效,并且节点下的字母A指示请求A正在被服务以无效数据。无效的范围以从右上到左下的断面线示出,节点下的字母指示哪个请求无效数据。
为简便起见,注意到在实例1600示出的序列S1-S10中,整个范围1-5被示为无效。然而,在优选实施方式中,只有被请求影响的块才被无效。在无效进程期间,附加/无效模块1202锁定索引的全部或部分。
如A2所示,序列S1的第二步是为了使重组模块1204重组树以分裂块2和3,这将指向2’和3’。在这个步骤中,块1、4和5的锁被释放,且数据在原始状态下保持可为读取进行访问。块2和3在树的中间节点中被示为无效。如A3所示,序列S1的第三步是为了使数据位置模块1302基于块2’和3’存储在数据存储设备106的位置而更新树。这被描述为显示新块2’和3’的中间节点和具有水平断面线的节点,具有水平断面线的节点对应于在步骤A3结束时块的最终状态,如上述的完成客户端A的更新1606。这可以通过将正向映射1104的节点中的指针更新为指向反向映射1122中的一个或多个条目来实现,其中,反向映射1122中的条目具有第一数据的物理地址。在这种情况下,反向映射1122具有用于2’和3’的物理地址。
如B1所示,序列S1的第四步是为了使附加/无效模块1202的例程无效树中将要被第二数据3”和4”覆盖的节点。在这种情况下,第二节点(2’:3’)和第三节点(4:5)被影响,所以这两个节点被描述为无效(从右到左的断面线)。如B2所示,序列S1的第五步是为了使重组模块1204重组这两个节点以形成指向2’的节点、指向3”:4”的节点和指向块5的节点。指向3”:4”的节点被示为无效。
如B3所示,序列S1的第六步对应于数据位置模块1302的例程利用数据存储设备106存储块3”和4”的位置的物理地址信息更新索引。此时,表示3”和4”的节点被示为处于最终状态,并用从左到右的断面线表示。步骤B3表明树中表示处于最终状态的块1-5的部分,其中块1和5未被修正。块2表明,其已被第一数据2’更新,块3和4表明,它们已被第二数据3”和4”更新。注意到块3恰当地与第二数据3”一起示出,不管处理的顺序如何,描述的全部序列S1-S10的最终状态都是一样的。
序列S2与序列S1相同,除了交换步骤A3和B1的处理顺序。在步骤B1,服务请求B的重组模块1204的例程无效指向块3和4的两个节点。在步骤A3,服务请求A的数据位置模块1302的例程利用2’和3’存储的位置更新索引,但第二节点(2”:3”)和第三节点(4:5)保持无效,这是因为服务请求B的重组模块1204的例程还未从第二和第三节点中分离出3和4。一旦重组模块1204重组了节点以包括指向3”:4”且离开指向2’的节点和指向5的节点,指向2’和5的节点处于最终状态。在步骤B3(与序列S1的步骤B3相同)之后,序列S2的节点处于最终状态并与序列S1的最终状态相匹配。
图16B和图16C中示出的序列S3-S10完成类似序列S1和S2的过程和分析,除了将步骤重新排序。注意在在所有的序列S1-S10中,最终状态都是相同的。有利地是,本发明允许多处理器或多线程操作以访问存储在公共数据存储设备106上的相同数据段或在数据存储设备106的阵列中被条带化的数据段。有利地是,本发明允许多处理器或多线程操作以使完成服务多重服务请求的时间不同,而同时保持数据的完整性。尽管示出了两个存储请求,但本发明也可应用到当前访问相同数据段的三个或更多个同时的存储请求。本领域技术人员会认识到本发明的其他好处和实施装置1200、1300的模块1202、1204、1302-1308其他方法。
本发明可采用其他指定形式实施而不脱离本发明的宗旨或本质特点。描述的实施方式在各个方面被视为仅仅是示例性而不是限制性的。因此,本发明的范围由附属的权利要求确定,而不是由上述说明书确定。在本发明的权利要求的含义和等同范围内的所有改变被包含在本发明的保护范围内。

Claims (25)

1.一种协调存储请求的装置,该装置包括:
附加/无效模块,用于响应于第一存储请求的接收生成第一附加数据存储命令,第一存储请求包括用第一数据覆盖存储在数据存储设备上的数据段的现有数据的请求,该附加/无效模块还用于响应于第二存储请求的接收生成第二附加数据存储命令,第二存储请求包括用第二数据覆盖数据段的现有数据的请求,第一数据和第二数据至少包括将以相同的偏移量存储在数据段内的重叠数据的至少一部分,在第一存储请求之后接收第二存储请求,该附加/无效模块还用于响应于第一存储请求通过将数据段的数据标记为无效来更新索引,标记为无效的数据包括正被第一数据替换的数据,该附加/无效模块还用于响应于第二存储请求通过将数据段的数据标记为无效来更新索引,标记为无效的数据包括正被第二数据替换的数据;及
重组模块,用于基于第一数据更新索引并基于第二数据更新索引,其中,当在基于第二数据更新索引之前基于第一数据索引更新索引时或在基于第一数据更新索引之前基于第二数据更新索引时,组织被更新的索引以指示第二数据比第一数据更符合当前情况,
其中,附加/无效模块阻止对索引的访问,直到附加/无效模块已经完成更新索引,并且重组模块阻止对索引的访问,直到重组模块已经完成更新索引。
2.如权利要求1所述的装置,还包括数据位置更新模块,用于利用指示数据存储设备存储第一数据的第一物理位置更新索引,并利用指示数据存储设备存储第二数据的第二物理位置更新索引,从数据存储设备接收数据存储设备存储第一数据和第二数据的物理位置,其中,当在基于第二物理位置更新索引之前基于第一物理位置更新索引时或在基于第一物理位置更新索引之前基于第二物理位置更新索引时,组织被更新的索引以指示第二物理位置比第一物理位置更符合当前情况,并且数据位置更新模块阻止对索引的访问,直到数据位置模块已经完成更新索引。
3.如权利要求2所述的装置,其中,附加/无效模块处理存储请求发生在重组模块的处理之前,并且重组模块处理存储请求发生在数据位置模块的处理之前。
4.如权利要求3所述的装置,其中附加/无效模块、重组模块和数据位置更新模块中任一个处理的第一存储请求发生在附加/无效模块、重组模块和数据位置更新模块中任一个处理第二存储请求之前或之后。
5.如权利要求2所述的装置,其中,在两个或多个线程内执行附加/无效模块、重组模块和数据位置更新模块中的每一个的例程,其中,附加/无效模块、重组模块和数据位置更新模块的每个例程阻止对索引的访问,直到附加/无效模块、重组模块或数据位置更新模块已经完成更新索引。
6.如权利要求2所述的装置,其中,在两个或多个并行工作的处理器上执行附加/无效模块、重组模块和数据位置更新模块中的每一个的例程,其中,附加/无效模块、重组模块和数据位置更新模块的每个例程阻止对索引的访问,直到附加/无效模块、重组模块或数据位置更新模块已经完成更新索引。
7.如权利要求2所述的装置,其中,还包括读取模块,用于响应于包括读取请求的存储请求读取数据段的至少一部分,该装置还包括读取延迟模块,用于推迟服务所请求的读取,直到第一存储请求已由附加/无效模块、重组模块和数据位置更新模块服务。
8.如权利要求7所述的装置,其中,在第一存储请求之后,在第二存储请求之前,该装置接收到读取数据段的至少一部分的存储请求,其中,读取延迟模块推迟服务读取请求,直到第一和第二存储请求都已由附加/无效模块、重组模块和数据位置更新模块服务。
9.如权利要求1所述的装置,还包括序列编号模块,用于将序列号与存储请求关联,分配的序列号表示该装置接收存储请求的顺序,并且重组模块利用分配给第一存储请求和第二存储请求中的每一个的序列号组织索引以指示第二数据比第一数据更符合当前情况。
10.如权利要求1所述的装置,其中,组织索引以指示第二数据比第一数据更符合当前情况包括利用第二数据更新索引的映射到重叠数据的一部分,并且如果重组模块在基于第一数据更新索引之前基于第二数据更新索引,则保留到第二数据的映射。
11.如权利要求1所述的装置,其中,附加/无效模块接收三个或更多覆盖数据段的现有数据的存储请求,重组模块基于存储请求到达的顺序利用存储请求的数据组织索引,而不考虑重组模块利用存储请求的数据更新索引的顺序。
12.如权利要求1所述的装置,其中,索引还被分割为两个或多个区域,并且当附加/无效模块和重组模块中的一个或多个的额外的例程在阻止对索引的第二区域的访问时,涉及索引的第一区域的存储请求被服务,其中当附加/无效模块和重组模块中的一个或多个的额外的例程在服务涉及第二区域的存储请求时,阻止对索引的第二区域的访问。
13.如权利要求1所述的装置,其中,第一存储请求发送自第一客户端,第二存储请求发送自第二客户端。
14.如权利要求1所述的装置,其中,响应于第一存储请求通过将数据段被替换的数据标记为无效更新索引,还包括标记位图的一个或多个位,位图中的位对应于数据存储设备中由第一数据和第二数据替换的数据段的数据所驻留的一个或多个位置。
15.如权利要求1所述的装置,其中,响应于第一存储请求通过将数据段被替换的数据标记为无效更新索引,还包括暂时地将整个数据段标记为无效直到重组模块基于第一数据和第二数据更新索引,并且随后更新索引以指示数据段除了被替换的数据之外的数据有效。
16.如权利要求1所述的装置,其中,响应于第一存储请求通过将数据段被替换的数据标记为无效更新索引还包括生成表,该表指示数据段被第一数据和第二数据替换的部分为无效,并指示数据段未被第一数据和第二数据替换的部分为有效。
17.如权利要求1所述的装置,其中,在基本上没有数据的情况下接收第一存储请求和第二存储请求中的一个或多个。
18.如权利要求1所述的装置,其中,在基本上没有数据的情况下将第一附加数据存储命令和第二附加数据存储命令中的一个或多个发送到数据存储设备。
19.如权利要求1所述的装置,其中,存储请求和附加数据存储命令中的至少一个初始化直接存储器存取(DMA)进程或远程直接存储器存取(RDMA)进程以将数据段的数据转移到数据存储设备。
20.一种协调存储请求的系统,该系统包括:
数据存储设备;和
控制数据存储设备的存储控制器,该存储控制器包括:
附加/无效模块,用于响应于第一存储请求的接收生成第一附加数据存储命令以用第一数据覆盖存储在数据存储设备上的数据段的现有数据,该附加/无效模块还用于响应于第二存储请求的接收生成第二附加数据存储命令以用第二数据覆盖数据段的现有数据的请求,第一数据和第二数据至少包括将以相同的偏移量存储在数据段内的重叠数据的至少一部分,在第一存储请求之后接收第二存储请求,该附加/无效模块还用于响应于第一存储请求通过将数据段的数据标记为无效来更新索引,标记为无效的数据包括正被第一数据替换的数据,该附加/无效模块还用于响应于第二存储请求通过将数据段的数据标记为无效来更新索引,标记为无效的数据包括正被第二数据替换的数据;及
重组模块,用于基于第一数据更新索引并基于第二数据更新索引,其中,当在基于第二数据更新索引之前基于第一数据索引更新索引时或在基于第一数据更新索引之前基于第二数据更新索引时,组织被更新的索引以指示第二数据比第一数据更符合当前情况;
其中,附加/无效模块阻止对索引的访问,直到附加/无效模块已经完成更新索引,并且重组模块阻止对索引的访问,直到重组模块已经完成更新索引。
21.如权利要求20所述的系统,其中,数据存储设备包括固态存储设备。
22.如权利要求20所述的系统,其中,第一存储请求和第二存储请求接收自分离的请求设备,其中分离的请求设备包括客户端和服务器中的一个或多个。
23.如权利要求22所述的系统,其中,至少一个请求设备包括客户端,附加/无效模块和重组模块独立于客户端运行。
24.如权利要求20所述的系统,还包括服务器,其中,存储控制器位于服务器内。
25.一种包括计算机可读媒体的计算机程序制品,该计算机可读媒体具有计算机可用的程序代码,可执行该程序代码以实现协调存储请求的操作,该计算机程序制品的操作包括:
响应于第一存储请求的接收生成第一附加数据存储命令,以用第一数据覆盖存储在数据存储设备上的数据段的现有数据;
响应于第二存储请求的接收生成第二附加数据存储命令,以用第二数据覆盖数据段的现有数据,第一和第二数据至少包括将以相同的偏移量存储在数据段内的重叠数据的至少一部分,在第一存储请求之后接收第二存储请求;
响应于第一存储请求通过将数据段的数据标记为无效来更新索引,其中,标记为无效的数据包括正被第一数据替换的数据;
响应于第二存储请求通过将数据段的数据标记为无效来更新索引,其中,标记为无效的数据包括正被第二数据替换的数据,
其中,对索引的访问被阻止,直到为第一存储请求和第二存储请求中的一个生成了附加数据存储命令且通过将数据段的数据标记为无效为第一存储请求和第二存储请求中的一个更新了索引;
基于第一数据更新索引;及
基于第二数据更新索引,其中,当在基于第二数据更新索引之前基于第一数据索引更新索引时或在基于第一数据更新索引之前基于第二数据更新索引时,组织被更新的索引以指示第二数据比第一数据更符合当前情况,
其中,对索引的访问被阻止,直到基于第一数据和第二数据中的一个更新了索引。
CN2009801211435A 2008-04-06 2009-04-06 在多处理器/多线程环境下协调存储请求的装置、系统和方法 Pending CN102084331A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/098,435 2008-04-06
US12/098,435 US7836226B2 (en) 2007-12-06 2008-04-06 Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
PCT/US2009/039618 WO2009126557A1 (en) 2008-04-06 2009-04-06 Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment

Publications (1)

Publication Number Publication Date
CN102084331A true CN102084331A (zh) 2011-06-01

Family

ID=40762259

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009801211435A Pending CN102084331A (zh) 2008-04-06 2009-04-06 在多处理器/多线程环境下协调存储请求的装置、系统和方法

Country Status (6)

Country Link
US (5) US7836226B2 (zh)
EP (1) EP2286327A1 (zh)
JP (1) JP2011521315A (zh)
KR (1) KR20110048486A (zh)
CN (1) CN102084331A (zh)
WO (1) WO2009126557A1 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104679446A (zh) * 2013-08-16 2015-06-03 Lsi公司 用于使用经分割快闪转变层的方法及设备
CN105830039A (zh) * 2013-12-17 2016-08-03 日本电气株式会社 写入信息存储设备、方法和记录介质
CN110286858A (zh) * 2019-06-26 2019-09-27 北京奇艺世纪科技有限公司 一种数据处理方法及相关设备
CN111274175A (zh) * 2020-01-15 2020-06-12 杭州华冲科技有限公司 一种基于数据乒乓填充的dma工作方法
CN111324300A (zh) * 2018-12-14 2020-06-23 爱思开海力士有限公司 控制器以及控制器的操作方法
CN112365904A (zh) * 2020-11-16 2021-02-12 深圳市天视通技术有限公司 一种延长报警录像存储时间的方法、装置、设备及介质

Families Citing this family (130)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8037285B1 (en) 2005-09-28 2011-10-11 Oracle America, Inc. Trace unit
US8024522B1 (en) 2005-09-28 2011-09-20 Oracle America, Inc. Memory ordering queue/versioning cache circuit
US8032710B1 (en) 2005-09-28 2011-10-04 Oracle America, Inc. System and method for ensuring coherency in trace execution
US7877630B1 (en) 2005-09-28 2011-01-25 Oracle America, Inc. Trace based rollback of a speculatively updated cache
US8019944B1 (en) 2005-09-28 2011-09-13 Oracle America, Inc. Checking for a memory ordering violation after a speculative cache write
US7987342B1 (en) 2005-09-28 2011-07-26 Oracle America, Inc. Trace unit with a decoder, a basic-block cache, a multi-block cache, and sequencer
US8370576B1 (en) 2005-09-28 2013-02-05 Oracle America, Inc. Cache rollback acceleration via a bank based versioning cache ciruit
US8499293B1 (en) 2005-09-28 2013-07-30 Oracle America, Inc. Symbolic renaming optimization of a trace
US7870369B1 (en) 2005-09-28 2011-01-11 Oracle America, Inc. Abort prioritization in a trace-based processor
US7546420B1 (en) 2005-09-28 2009-06-09 Sun Microsystems, Inc. Efficient trace cache management during self-modifying code processing
US7953961B1 (en) 2005-09-28 2011-05-31 Oracle America, Inc. Trace unit with an op path from a decoder (bypass mode) and from a basic-block builder
US7949854B1 (en) 2005-09-28 2011-05-24 Oracle America, Inc. Trace unit with a trace builder
US7937564B1 (en) 2005-09-28 2011-05-03 Oracle America, Inc. Emit vector optimization of a trace
US7779307B1 (en) * 2005-09-28 2010-08-17 Oracle America, Inc. Memory ordering queue tightly coupled with a versioning cache circuit
US7966479B1 (en) 2005-09-28 2011-06-21 Oracle America, Inc. Concurrent vs. low power branch prediction
US8015359B1 (en) 2005-09-28 2011-09-06 Oracle America, Inc. Method and system for utilizing a common structure for trace verification and maintaining coherency in an instruction processing circuit
US8051247B1 (en) 2005-09-28 2011-11-01 Oracle America, Inc. Trace based deallocation of entries in a versioning cache circuit
US8010745B1 (en) 2006-09-27 2011-08-30 Oracle America, Inc. Rolling back a speculative update of a non-modifiable cache line
US8370609B1 (en) 2006-09-27 2013-02-05 Oracle America, Inc. Data cache rollbacks for failed speculative traces with memory operations
KR20090102789A (ko) 2006-12-06 2009-09-30 퓨전 멀티시스템즈, 인크.(디비에이 퓨전-아이오) 프로그레시브 raid를 이용한 데이터 저장 장치, 시스템 및 방법
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US8255373B2 (en) * 2008-10-24 2012-08-28 Microsoft Corporation Atomic multiple modification of data in a distributed storage system
JP5241550B2 (ja) * 2009-02-12 2013-07-17 株式会社日立製作所 ファイル入出力方法
CN102473188B (zh) * 2009-07-27 2015-02-11 国际商业机器公司 用于转换存储的逻辑数据对象的方法和系统
US10177934B1 (en) 2009-09-04 2019-01-08 Amazon Technologies, Inc. Firmware updates inaccessible to guests
US9565207B1 (en) 2009-09-04 2017-02-07 Amazon Technologies, Inc. Firmware updates from an external channel
US8214653B1 (en) 2009-09-04 2012-07-03 Amazon Technologies, Inc. Secured firmware updates
US8887144B1 (en) 2009-09-04 2014-11-11 Amazon Technologies, Inc. Firmware updates during limited time period
US8102881B1 (en) 2009-09-08 2012-01-24 Amazon Technologies, Inc. Streamlined guest networking in a virtualized environment
US8601170B1 (en) 2009-09-08 2013-12-03 Amazon Technologies, Inc. Managing firmware update attempts
US8971538B1 (en) 2009-09-08 2015-03-03 Amazon Technologies, Inc. Firmware validation from an external channel
US8601222B2 (en) 2010-05-13 2013-12-03 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
US8300641B1 (en) 2009-09-09 2012-10-30 Amazon Technologies, Inc. Leveraging physical network interface functionality for packet processing
US8640220B1 (en) 2009-09-09 2014-01-28 Amazon Technologies, Inc. Co-operative secure packet management
US8959611B1 (en) 2009-09-09 2015-02-17 Amazon Technologies, Inc. Secure packet management for bare metal access
US8155146B1 (en) * 2009-09-09 2012-04-10 Amazon Technologies, Inc. Stateless packet segmentation and processing
US8381264B1 (en) 2009-09-10 2013-02-19 Amazon Technologies, Inc. Managing hardware reboot and reset in shared environments
EP2598996B1 (en) 2010-07-28 2019-07-10 SanDisk Technologies LLC Apparatus, system, and method for conditional and atomic storage operations
US9170740B2 (en) * 2010-08-06 2015-10-27 Netapp, Inc. System and method for providing implicit unmaps in thinly provisioned virtual tape library systems
US8850114B2 (en) 2010-09-07 2014-09-30 Daniel L Rosenband Storage array controller for flash-based storage devices
US8428087B1 (en) 2010-09-17 2013-04-23 Amazon Technologies, Inc. Framework for stateless packet tunneling
US9684590B2 (en) 2010-10-25 2017-06-20 Seagate Technology Llc Storing corresponding data units in a common storage unit
US9104326B2 (en) 2010-11-15 2015-08-11 Emc Corporation Scalable block data storage using content addressing
US9569320B2 (en) 2010-12-01 2017-02-14 Seagate Technology Llc Non-volatile memory program failure recovery via redundant arrays
US8589406B2 (en) * 2011-03-03 2013-11-19 Hewlett-Packard Development Company, L.P. Deduplication while rebuilding indexes
US8462780B2 (en) 2011-03-30 2013-06-11 Amazon Technologies, Inc. Offload device-based stateless packet processing
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
US20120324143A1 (en) 2011-06-15 2012-12-20 Data Design Corporation Methods and apparatus for data access by a reprogrammable circuit module
US9417894B1 (en) 2011-06-15 2016-08-16 Ryft Systems, Inc. Methods and apparatus for a tablet computer system incorporating a reprogrammable circuit module
US8966172B2 (en) 2011-11-15 2015-02-24 Pavilion Data Systems, Inc. Processor agnostic data storage in a PCIE based shared storage enviroment
US9251086B2 (en) * 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US9652182B2 (en) 2012-01-31 2017-05-16 Pavilion Data Systems, Inc. Shareable virtual non-volatile storage device for a server
US8682922B2 (en) * 2012-03-20 2014-03-25 Schlumberger Technology Corporation Method and system for accessing a virtual seismic cube
US9003162B2 (en) * 2012-06-20 2015-04-07 Microsoft Technology Licensing, Llc Structuring storage based on latch-free B-trees
GB2503470B (en) * 2012-06-27 2014-08-13 Nordic Semiconductor Asa Memory protection
CN103677754A (zh) * 2012-09-21 2014-03-26 国际商业机器公司 用于优化应用程序的并行构建的方法和系统
JP6005533B2 (ja) * 2013-01-17 2016-10-12 株式会社東芝 記憶装置および記憶方法
US9489297B2 (en) 2013-01-21 2016-11-08 Sandisk Technologies Llc Pregroomer for storage array
US9329991B2 (en) * 2013-01-22 2016-05-03 Seagate Technology Llc Translation layer partitioned between host and controller
US9122587B2 (en) * 2013-03-06 2015-09-01 Seagate Technology Llc Self recovery in a solid state drive
US11966355B2 (en) * 2013-03-10 2024-04-23 Mellanox Technologies, Ltd. Network adapter with a common queue for both networking and data manipulation work requests
US9342256B2 (en) 2013-03-14 2016-05-17 SanDisk Technologies, Inc. Epoch based storage management for a storage device
JP6089890B2 (ja) * 2013-03-29 2017-03-08 富士通株式会社 ストレージ制御装置、ストレージ制御装置の制御方法およびストレージ制御装置の制御プログラム
US9519591B2 (en) 2013-06-22 2016-12-13 Microsoft Technology Licensing, Llc Latch-free, log-structured storage for multiple access methods
US9986028B2 (en) * 2013-07-08 2018-05-29 Intel Corporation Techniques to replicate data between storage servers
US9418131B1 (en) 2013-09-24 2016-08-16 Emc Corporation Synchronization of volumes
US9378106B1 (en) 2013-09-26 2016-06-28 Emc Corporation Hash-based replication
US9037822B1 (en) 2013-09-26 2015-05-19 Emc Corporation Hierarchical volume tree
US9208162B1 (en) 2013-09-26 2015-12-08 Emc Corporation Generating a short hash handle
JP2015162002A (ja) * 2014-02-26 2015-09-07 富士通株式会社 記憶制御装置、記憶制御方法および記憶制御プログラム
US9442941B1 (en) 2014-03-28 2016-09-13 Emc Corporation Data structure for hash digest metadata component
US9367398B1 (en) 2014-03-28 2016-06-14 Emc Corporation Backing up journal data to a memory of another node
US9342465B1 (en) 2014-03-31 2016-05-17 Emc Corporation Encrypting data in a flash-based contents-addressable block device
US9606870B1 (en) 2014-03-31 2017-03-28 EMC IP Holding Company LLC Data reduction techniques in a flash-based key/value cluster storage
US9423956B2 (en) * 2014-04-29 2016-08-23 Vmware, Inc. Emulating a stretched storage device using a shared storage device
US9442811B2 (en) 2014-04-29 2016-09-13 Vmware, Inc. Emulating a stretched storage device using a shared replicated storage device
US10127244B2 (en) * 2014-06-04 2018-11-13 Harris Corporation Systems and methods for dynamic data storage
US9396243B1 (en) 2014-06-27 2016-07-19 Emc Corporation Hash-based replication using short hash handle and identity bit
US9514211B2 (en) 2014-07-20 2016-12-06 Microsoft Technology Licensing, Llc High throughput data modifications using blind update operations
US10073649B2 (en) * 2014-07-24 2018-09-11 Hewlett Packard Enterprise Development Lp Storing metadata
US10025843B1 (en) 2014-09-24 2018-07-17 EMC IP Holding Company LLC Adjusting consistency groups during asynchronous replication
US9304889B1 (en) 2014-09-24 2016-04-05 Emc Corporation Suspending data replication
US9740632B1 (en) 2014-09-25 2017-08-22 EMC IP Holding Company LLC Snapshot efficiency
US10200472B2 (en) * 2014-10-06 2019-02-05 Intel Corporation Coordination for one-sided memory access in a partitioned global address space
US9712619B2 (en) 2014-11-04 2017-07-18 Pavilion Data Systems, Inc. Virtual non-volatile memory express drive
US9565269B2 (en) 2014-11-04 2017-02-07 Pavilion Data Systems, Inc. Non-volatile memory express over ethernet
KR102131650B1 (ko) * 2014-12-23 2020-07-09 한국전자통신연구원 데이터 처리 장치 및 방법
US11829333B2 (en) * 2015-05-08 2023-11-28 Chicago Mercantile Exchange Inc. Thread safe lock-free concurrent write operations for use with multi-threaded in-line logging
US9792248B2 (en) 2015-06-02 2017-10-17 Microsoft Technology Licensing, Llc Fast read/write between networked computers via RDMA-based RPC requests
US10725963B2 (en) 2015-09-12 2020-07-28 Microsoft Technology Licensing, Llc Distributed lock-free RDMA-based memory allocation and de-allocation
CN105282244B (zh) * 2015-09-29 2018-10-02 华为技术有限公司 一种数据处理方法、装置、服务器及控制器
US10713210B2 (en) 2015-10-13 2020-07-14 Microsoft Technology Licensing, Llc Distributed self-directed lock-free RDMA-based B-tree key-value manager
US9933954B2 (en) * 2015-10-19 2018-04-03 Nxp Usa, Inc. Partitioned memory having pipeline writes
US10291739B2 (en) * 2015-11-19 2019-05-14 Dell Products L.P. Systems and methods for tracking of cache sector status
US10375167B2 (en) 2015-11-20 2019-08-06 Microsoft Technology Licensing, Llc Low latency RDMA-based distributed storage
US10152527B1 (en) 2015-12-28 2018-12-11 EMC IP Holding Company LLC Increment resynchronization in hash-based replication
US10176216B2 (en) * 2016-02-01 2019-01-08 International Business Machines Corporation Verifying data consistency
US10310951B1 (en) 2016-03-22 2019-06-04 EMC IP Holding Company LLC Storage system asynchronous data replication cycle trigger with empty cycle detection
US10324635B1 (en) 2016-03-22 2019-06-18 EMC IP Holding Company LLC Adaptive compression for data replication in a storage system
US10095428B1 (en) 2016-03-30 2018-10-09 EMC IP Holding Company LLC Live migration of a tree of replicas in a storage system
US9959073B1 (en) 2016-03-30 2018-05-01 EMC IP Holding Company LLC Detection of host connectivity for data migration in a storage system
US9959063B1 (en) 2016-03-30 2018-05-01 EMC IP Holding Company LLC Parallel migration of multiple consistency groups in a storage system
US10565058B1 (en) 2016-03-30 2020-02-18 EMC IP Holding Company LLC Adaptive hash-based data replication in a storage system
US10296250B2 (en) * 2016-06-08 2019-05-21 Intel Corporation Method and apparatus for improving performance of sequential logging in a storage device
US10152232B1 (en) 2016-06-29 2018-12-11 EMC IP Holding Company LLC Low-impact application-level performance monitoring with minimal and automatically upgradable instrumentation in a storage system
US10083067B1 (en) 2016-06-29 2018-09-25 EMC IP Holding Company LLC Thread management in a storage system
US10013200B1 (en) 2016-06-29 2018-07-03 EMC IP Holding Company LLC Early compression prediction in a storage system with granular block sizes
US10048874B1 (en) 2016-06-29 2018-08-14 EMC IP Holding Company LLC Flow control with a dynamic window in a storage system with latency guarantees
US9858151B1 (en) * 2016-10-03 2018-01-02 International Business Machines Corporation Replaying processing of a restarted application
CN106776823B (zh) * 2016-11-25 2018-12-07 华为技术有限公司 一种时序数据管理方法、设备和装置
US11269888B1 (en) * 2016-11-28 2022-03-08 Amazon Technologies, Inc. Archival data storage for structured data
US10963183B2 (en) * 2017-03-20 2021-03-30 Intel Corporation Technologies for fine-grained completion tracking of memory buffer accesses
US10547683B2 (en) * 2017-06-26 2020-01-28 Christopher Squires Object based storage systems that utilize direct memory access
US10637846B2 (en) * 2017-08-30 2020-04-28 Capital One Services, Llc System and method for cloud-based analytics
US11733873B2 (en) 2017-12-01 2023-08-22 Micron Technology, Inc. Wear leveling in solid state drives
US10846955B2 (en) 2018-03-16 2020-11-24 Micron Technology, Inc. Black box data recorder for autonomous driving vehicle
US11094148B2 (en) 2018-06-18 2021-08-17 Micron Technology, Inc. Downloading system memory data in response to event detection
JP7175658B2 (ja) * 2018-07-25 2022-11-21 キヤノン株式会社 映像配信装置、配信方法及びプログラム
US10901847B2 (en) * 2018-07-31 2021-01-26 EMC IP Holding Company LLC Maintaining logical to physical address mapping during in place sector rebuild
US10852965B2 (en) * 2018-10-30 2020-12-01 EMC IP Holding Company LLC Write folding mechanism using reusable shared striping in a storage system
US11782605B2 (en) * 2018-11-29 2023-10-10 Micron Technology, Inc. Wear leveling for non-volatile memory using data write counters
US10936213B2 (en) * 2019-03-13 2021-03-02 Micron Technology, Inc. Techniques for secure writes by non-privileged users
US11079970B2 (en) * 2019-04-22 2021-08-03 Quantum Corporation Storage array supporting multi-thread access
KR102251869B1 (ko) * 2019-05-24 2021-05-12 서강대학교 산학협력단 파일 시스템 및 이를 이용한 단일 파일 쓰기 병렬화 방법
KR20200143871A (ko) * 2019-06-17 2020-12-28 삼성전자주식회사 스토리지를 포함하는 전자 장치 및 그의 스토리지 이용 방법
US11748020B2 (en) 2020-02-28 2023-09-05 Nebuon, Inc. Reestablishing redundancy in redundant storage
US11429543B2 (en) * 2020-10-22 2022-08-30 Micron Technology, Inc. Managed NAND flash memory region control against endurance hacking
US11847100B2 (en) 2020-11-19 2023-12-19 Alibaba Group Holding Limited Distributed file system servicing random-access operations
WO2022225576A1 (en) * 2021-07-20 2022-10-27 Futurewei Technologies, Inc. Rdma append verb
US20240103969A1 (en) * 2022-09-16 2024-03-28 Netapp, Inc. Data storage system drive utilization

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1397887A (zh) * 2001-08-15 2003-02-19 智慧第一公司 一种将储存数据重新导向的虚拟集合高速缓存
CN1542815A (zh) * 2003-02-27 2004-11-03 ������������ʽ���� 记录装置、文件管理方法、文件管理方法程序及记录介质
US20060059326A1 (en) * 2002-11-21 2006-03-16 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device

Family Cites Families (710)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB123416A (en) 1918-02-28 1919-02-27 John Buchanan Composite Valve for all Classes of Internal Combustion Engines.
US2765207A (en) 1954-10-18 1956-10-02 Swing A Way Mfg Company Pivotally mounted enclosure for can opener
US2835964A (en) 1956-07-27 1958-05-27 Fusarc Ltd Manipulators for supporting work for welding or other operations
US4571674A (en) 1982-09-27 1986-02-18 International Business Machines Corporation Peripheral storage system having multiple data transfer rates
US4980861A (en) 1987-01-16 1990-12-25 Microchip Technology Incorporated NAND stack ROM
JPH02105730A (ja) 1988-10-14 1990-04-18 Sony Corp データ記録方法
JPH02148235A (ja) * 1988-11-30 1990-06-07 Toshiba Corp データ退避方式
US5359726A (en) 1988-12-22 1994-10-25 Thomas Michael E Ferroelectric storage device used in place of a rotating disk drive unit in a computer system
US5394531A (en) 1989-04-03 1995-02-28 International Business Machines Corporation Dynamic storage allocation system for a prioritized cache
US7190617B1 (en) 1989-04-13 2007-03-13 Sandisk Corporation Flash EEprom system
US5371885A (en) 1989-08-29 1994-12-06 Microsoft Corporation High performance file system
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
US5111463A (en) 1989-11-09 1992-05-05 Exabyte Corporation Error correction method and apparatus
US5197130A (en) 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
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
US5544347A (en) 1990-09-24 1996-08-06 Emc Corporation Data storage system controlled remote data mirroring with respectively maintained data indices
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
GB2251324B (en) 1990-12-31 1995-05-10 Intel Corp File structure for a non-volatile semiconductor memory
US5274799A (en) 1991-01-04 1993-12-28 Array Technology Corporation Storage device array architecture with copyback cache
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
US5465355A (en) 1991-09-04 1995-11-07 International Business Machines Corporation Establishing and restoring paths in a data processing I/O system
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
US5323489A (en) 1991-11-14 1994-06-21 Bird Peter L Method and apparatus employing lookahead to reduce memory bank contention for decoupled operand references
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
JP3058743B2 (ja) 1992-01-21 2000-07-04 株式会社日立製作所 ディスクアレイ制御装置
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
US5381528A (en) 1992-10-15 1995-01-10 Maxtor Corporation Demand allocation of read/write buffer partitions favoring sequential read cache
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
US5459850A (en) 1993-02-19 1995-10-17 Conner Peripherals, Inc. Flash solid state drive that emulates a disk drive and stores variable length and fixed lenth data blocks
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
US5479638A (en) 1993-03-26 1995-12-26 Cirrus Logic, Inc. Flash memory mass storage architecture incorporation wear leveling technique
US5388083A (en) 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
US5485595A (en) 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
US6078520A (en) 1993-04-08 2000-06-20 Hitachi, Ltd. Flash memory control method and information processing system therewith
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
US5765207A (en) 1993-06-22 1998-06-09 International Business Machines Corporation Recursive hardware state machine
US5592641A (en) 1993-06-30 1997-01-07 Intel Corporation Method and device for selectively locking write access to blocks in a memory array using write protect inputs and block enabled status
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 アウトボードファイルキャッシュ外部処理コンプレックス
GB9326499D0 (en) 1993-12-24 1994-03-02 Deas Alexander R Flash memory system with arbitrary block size
US5559988A (en) 1993-12-30 1996-09-24 Intel Corporation Method and circuitry for queuing snooping, prioritizing and suspending commands
US5379304A (en) 1994-01-28 1995-01-03 International Business Machines Corporation Method and structure for providing error correction code and parity for each byte on SIMM's
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
IT1274925B (it) 1994-09-21 1997-07-29 Texas Instruments Italia Spa Architettura di memoria per dischi a stato solido
US5845331A (en) 1994-09-28 1998-12-01 Massachusetts Institute Of Technology Memory system including guarded pointers
JPH08153014A (ja) 1994-11-30 1996-06-11 Hitachi Ltd クライアントサーバシステム
DE19540915A1 (de) 1994-11-10 1996-05-15 Raymond Engineering Redundante Anordnung von Festkörper-Speicherbausteinen
US6002411A (en) 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
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
US5586291A (en) 1994-12-23 1996-12-17 Emc Corporation Disk controller with volatile and non-volatile cache memories
US5541886A (en) 1994-12-27 1996-07-30 Intel Corporation Method and apparatus for storing control information in multi-bit non-volatile memory arrays
US5566315A (en) 1994-12-30 1996-10-15 Storage Technology Corporation Process of predicting and controlling the use of cache memory in a computer system
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
US5745671A (en) 1995-02-28 1998-04-28 International Business Machines Corporation Data storage system with localized XOR function
US5701434A (en) 1995-03-16 1997-12-23 Hitachi, Ltd. Interleave memory controller with a common access queue
US5742787A (en) 1995-04-10 1998-04-21 Intel Corporation Hardware reset of a write state machine for flash memory
EP0747825B1 (en) 1995-06-06 2001-09-19 Hewlett-Packard Company, A Delaware Corporation SDRAM data allocation system and method
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)
JP3732869B2 (ja) 1995-06-07 2006-01-11 株式会社日立製作所 外部記憶装置
JPH096706A (ja) 1995-06-22 1997-01-10 Hitachi Ltd 疎結合計算機システム
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
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
US6801979B1 (en) 1995-07-31 2004-10-05 Lexar Media, Inc. Method and apparatus for memory control circuit
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
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
US8171203B2 (en) 1995-07-31 2012-05-01 Micron Technology, Inc. Faster write operations to nonvolatile memory using FSInfo sector manipulation
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
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
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
US5754563A (en) 1995-09-11 1998-05-19 Ecc Technologies, Inc. Byte-parallel system for implementing reed-solomon error-correcting codes
US5835935A (en) 1995-09-13 1998-11-10 Lexar Media, Inc. Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory
US5799200A (en) 1995-09-28 1998-08-25 Emc Corporation Power failure responsive apparatus and method having a shadow dram, a flash ROM, an auxiliary battery, and a controller
US5933847A (en) 1995-09-28 1999-08-03 Canon Kabushiki Kaisha Selecting erase method based on type of power supply for flash EEPROM
US5893138A (en) 1995-10-02 1999-04-06 International Business Machines Corporation System and method for improving channel hardware performance for an array controller
US6470405B2 (en) 1995-10-19 2002-10-22 Rambus Inc. Protocol for communication with dynamic memory
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
US5758118A (en) 1995-12-08 1998-05-26 International Business Machines Corporation Methods and data storage devices for RAID expansion by on-line addition of new DASDs
US6745292B1 (en) 1995-12-08 2004-06-01 Ncr Corporation Apparatus and method for selectively allocating cache lines in a partitioned cache shared by multiprocessors
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
JPH09198336A (ja) 1996-01-22 1997-07-31 Nec Corp 二次記憶装置への遠隔アクセス方法
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
US5835964A (en) 1996-04-29 1998-11-10 Microsoft Corporation Virtual memory system with hardware TLB and unmapped software TLB updated from mapped task address maps using unmapped kernel address map
US5805501A (en) 1996-05-22 1998-09-08 Macronix International Co., Ltd. Flash memory device with multiple checkpoint erase suspend logic
US5922080A (en) 1996-05-29 1999-07-13 Compaq Computer Corporation, Inc. Method and apparatus for performing error detection and correction with memory devices
US6424872B1 (en) 1996-08-23 2002-07-23 Fieldbus Foundation Block oriented control system
US5996054A (en) 1996-09-12 1999-11-30 Veritas Software Corp. Efficient virtualized mapping space for log device data storage system
US6201739B1 (en) 1996-09-20 2001-03-13 Intel Corporation Nonvolatile writeable memory with preemption pin
US5798968A (en) 1996-09-24 1998-08-25 Sandisk Corporation Plane decode/virtual sector architecture
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
US5890192A (en) 1996-11-05 1999-03-30 Sandisk Corporation Concurrent write of multiple chunks of data into multiple subarrays of flash EEPROM
US5822759A (en) 1996-11-22 1998-10-13 Versant Object Technology Cache system
JPH10154101A (ja) 1996-11-26 1998-06-09 Toshiba Corp データ記憶システム及び同システムに適用するキャッシュ制御方法
US5867430A (en) 1996-12-20 1999-02-02 Advanced Micro Devices Inc Bank architecture for a non-volatile memory enabling simultaneous reading and writing
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
JPH10301719A (ja) 1997-04-28 1998-11-13 Yamaha Corp ディスクアレイ装置及びそれを用いた情報処理システム
JP3459868B2 (ja) 1997-05-16 2003-10-27 日本電気株式会社 メモリ障害時におけるグループ入れ替え方式
US6578113B2 (en) 1997-06-02 2003-06-10 At&T Corp. Method for cache validation for proxy caches
US6092158A (en) 1997-06-13 2000-07-18 Intel Corporation Method and apparatus for arbitrating between command streams
US6047334A (en) 1997-06-17 2000-04-04 Intel Corporation System for delaying dequeue of commands received prior to fence command until commands received before fence command are ordered for execution in a fixed sequence
US6044438A (en) 1997-07-10 2000-03-28 International Business Machiness Corporation Memory controller for controlling memory accesses across networks in distributed shared memory processing systems
US5893086A (en) 1997-07-11 1999-04-06 International Business Machines Corporation Parallel file system and method with extensible hashing
US6000006A (en) 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
US6418478B1 (en) 1997-10-30 2002-07-09 Commvault Systems, Inc. Pipelined high speed data transfer mechanism
US6061678A (en) 1997-10-31 2000-05-09 Oracle Corporation Approach for managing access to large objects in database systems using large object indexes
US6334173B1 (en) 1997-11-17 2001-12-25 Hyundai Electronics Industries Co. Ltd. Combined cache with main memory and a control method thereof
US6237059B1 (en) 1997-11-26 2001-05-22 Compaq Computer Corporation Method for estimating statistics of properties of memory system interactions among contexts in a computer system
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
US6374336B1 (en) 1997-12-24 2002-04-16 Avid Technology, Inc. Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner
US6415373B1 (en) 1997-12-24 2002-07-02 Avid Technology, Inc. Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner
US6725331B1 (en) 1998-01-07 2004-04-20 Emc Corporation Method and apparatus for managing the dynamic assignment resources in a data storage system
WO1999040516A1 (en) 1998-02-04 1999-08-12 Hitachi, Ltd. Disk cache control method, disk array device, and storage device
US6115793A (en) * 1998-02-11 2000-09-05 Ati Technologies, Inc. Mapping logical cache indexes to physical cache indexes to reduce thrashing and increase cache size
US7200623B2 (en) * 1998-11-24 2007-04-03 Oracle International Corp. Methods to perform disk writes in a distributed shared disk system needing consistency across failures
US5969986A (en) 1998-06-23 1999-10-19 Invox Technology High-bandwidth read and write architectures for non-volatile memories
US6170042B1 (en) 1998-02-24 2001-01-02 Seagate Technology Llc Disc drive data storage system and method for dynamically scheduling queued commands
US6295577B1 (en) 1998-02-24 2001-09-25 Seagate Technology Llc Disc storage system having a non-volatile cache to store write data in the event of a power failure
US6170063B1 (en) 1998-03-07 2001-01-02 Hewlett-Packard Company Method for performing atomic, concurrent read and write operations on multiple storage devices
US6467022B1 (en) 1998-04-16 2002-10-15 International Business Machines Corporation Extending adapter memory with solid state disks in JBOD and RAID environments
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
US6061511A (en) 1998-06-12 2000-05-09 Ikos Systems, Inc. Reconstruction engine for a hardware circuit emulator
JP2000020490A (ja) 1998-07-01 2000-01-21 Fujitsu Ltd 遠隔手続き呼出し機構またはオブジェクトリクエストブローカ機構を有する計算機、データ転送方法、および転送方法記憶媒体
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
US6353878B1 (en) 1998-08-13 2002-03-05 Emc Corporation Remote control of backup media in a secondary storage subsystem through access to a primary storage subsystem
US6269382B1 (en) 1998-08-31 2001-07-31 Microsoft Corporation Systems and methods for migration and recall of data from local and remote storage
US6209088B1 (en) 1998-09-21 2001-03-27 Microsoft Corporation Computer hibernation implemented by a computer operating system
US7043568B1 (en) 1998-11-12 2006-05-09 Klingman Edwin E Configuration selection for USB device controller
US7310718B1 (en) 1998-11-25 2007-12-18 Sun Microsystems, Inc. Method for enabling comprehensive profiling of garbage-collected memory systems
US6470436B1 (en) 1998-12-01 2002-10-22 Fast-Chip, Inc. Eliminating memory fragmentation and garbage collection from the process of managing dynamically allocated memory
US7233977B2 (en) 1998-12-18 2007-06-19 Emc Corporation Messaging mechanism employing mailboxes for inter processor communications
US6189078B1 (en) 1998-12-22 2001-02-13 Unisys Corporation System and method for increasing data transfer throughput for cache purge transactions using multiple data response indicators to maintain processor consistency
US6629112B1 (en) 1998-12-31 2003-09-30 Nortel Networks Limited Resource management for CORBA-based applications
GB9903490D0 (en) 1999-02-17 1999-04-07 Memory Corp Plc Memory system
US6795890B1 (en) 1999-02-19 2004-09-21 Mitsubishi Denki Kabushiki Kaisha Data storage method, and data processing device using an erasure block buffer and write buffer for writing and erasing data in memory
US6571312B1 (en) 1999-02-19 2003-05-27 Mitsubishi Denki Kabushiki Kaisha Data storage method and data processing device using an erasure block buffer and write buffer for writing and erasing data in memory
US6412080B1 (en) 1999-02-23 2002-06-25 Microsoft Corporation Lightweight persistent storage system for flash memory devices
MY122279A (en) 1999-03-03 2006-04-29 Sony Corp Nonvolatile memory and nonvolatile memory reproducing apparatus
US6535869B1 (en) 1999-03-23 2003-03-18 International Business Machines Corporation Increasing efficiency of indexing random-access files composed of fixed-length data blocks by embedding a file index therein
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
US6105076A (en) 1999-04-23 2000-08-15 International Business Machines Corporation Method, system, and program for performing data transfer operations on user data
KR100330164B1 (ko) 1999-04-27 2002-03-28 윤종용 무효 블록들을 가지는 복수의 플래시 메모리들을 동시에 프로그램하는 방법
US6849480B1 (en) 1999-05-07 2005-02-01 Seagate Technology Llc Surface mount IC stacking method and device
US7194740B1 (en) 1999-05-28 2007-03-20 Oracle International Corporation System for extending an addressable range of memory
JP4106811B2 (ja) 1999-06-10 2008-06-25 富士通株式会社 半導体記憶装置及び電子装置
US6557084B2 (en) * 1999-07-13 2003-04-29 International Business Machines Corporation Apparatus and method to improve performance of reads from and writes to shared memory locations
US20040230710A1 (en) 1999-07-27 2004-11-18 Inline Connection Corporation System and method of automatic installation of computer peripherals
EP1073064A1 (en) 1999-07-30 2001-01-31 STMicroelectronics S.r.l. Non-volatile memory with the functional capability of simultaneous modification of the contents and burst mode read or page mode read
US7620769B2 (en) 2000-01-06 2009-11-17 Super Talent Electronics, Inc. Recycling partially-stale flash blocks using a sliding window for multi-level-cell (MLC) flash memory
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
US7934074B2 (en) 1999-08-04 2011-04-26 Super Talent Electronics Flash module with plane-interleaved sequential writes to restricted-write flash chips
US7889544B2 (en) 2004-04-05 2011-02-15 Super Talent Electronics, Inc. High-speed controller for phase-change memory peripheral device
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 삼성전자주식회사 플래시 메모리와 그 제어 방법
US6742078B1 (en) 1999-10-05 2004-05-25 Feiya Technology Corp. Management, data link structure and calculating method for flash memory
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
US6278633B1 (en) 1999-11-05 2001-08-21 Multi Level Memory Technology High bandwidth flash memory that selects programming parameters according to measurements of previous programming operations
US6684274B1 (en) 1999-11-09 2004-01-27 Sun Microsystems, Inc. Host bus adapter based scalable performance storage architecture
US20020049883A1 (en) 1999-11-29 2002-04-25 Eric Schneider System and method for restoring a computer system after a failure
DE19961499A1 (de) 1999-12-20 2001-07-05 Ericsson Telefon Ab L M Caching von Objekten in Platten-gestützten Datenbanken
US20050204187A1 (en) 2004-03-11 2005-09-15 Lee Charles C. System and method for managing blocks in flash memory
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
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
TW504694B (en) 2000-01-12 2002-10-01 Hitachi Ltd Non-volatile semiconductor memory device and semiconductor disk device
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
US6671757B1 (en) 2000-01-26 2003-12-30 Fusionone, Inc. Data transfer and synchronization system
EP1128267A1 (en) 2000-02-25 2001-08-29 Hewlett-Packard Company, A Delaware Corporation Disk storage system having redundant solid state data storage devices
EP1130516A1 (en) 2000-03-01 2001-09-05 Hewlett-Packard Company, A Delaware Corporation Address mapping in solid state storage device
US6240040B1 (en) 2000-03-15 2001-05-29 Advanced Micro Devices, Inc. Multiple bank simultaneous operation for a flash memory
US6587937B1 (en) 2000-03-31 2003-07-01 Rockwell Collins, Inc. Multiple virtual machine system with efficient cache memory design
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
JP2001297316A (ja) 2000-04-14 2001-10-26 Mitsubishi Electric Corp メモリカード及びその制御方法
US7089391B2 (en) 2000-04-14 2006-08-08 Quickshift, Inc. Managing a codec engine for memory compression/decompression operations using a data movement engine
KR100399034B1 (ko) 2000-05-02 2003-09-22 한국과학기술원 효율적 메모리 셀 어레이 관리 방법
US6675349B1 (en) 2000-05-11 2004-01-06 International Business Machines Corporation Error correction coding of data blocks with included parity bits
JP4771615B2 (ja) 2000-06-02 2011-09-14 コンパック インフォメーション テクノロジーズ グループ リミテッド パートナーシップ 仮想記憶システム
US6532527B2 (en) 2000-06-19 2003-03-11 Storage Technology Corporation Using current recovery mechanisms to implement dynamic mapping operations
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
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
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
US6859824B1 (en) 2000-06-30 2005-02-22 Hitachi, Ltd. Storage system connected to a data network with data integrity
US6981070B1 (en) 2000-07-12 2005-12-27 Shun Hang Luk Network storage device having solid-state non-volatile memory
US6567307B1 (en) 2000-07-21 2003-05-20 Lexar Media, Inc. Block management for mass storage
US7167944B1 (en) 2000-07-21 2007-01-23 Lexar Media, Inc. Block management for mass storage
US6675318B1 (en) 2000-07-25 2004-01-06 Sun Microsystems, Inc. Two-dimensional storage array with prompt parity in one dimension and delayed parity in a second dimension
US6883044B1 (en) 2000-07-28 2005-04-19 Micron Technology, Inc. Synchronous flash memory with simultaneous access to one or more banks
US7085445B2 (en) 2000-08-04 2006-08-01 Seungug Koh Micro-opto-electro-mechanical waveguide switches
US6658438B1 (en) 2000-08-14 2003-12-02 Matrix Semiconductor, Inc. Method for deleting stored digital data from write-once memory device
JP3671138B2 (ja) 2000-08-17 2005-07-13 ジャパンコンポジット株式会社 通気性防水被覆構造体、およびその施工方法
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
WO2002023795A1 (en) 2000-09-11 2002-03-21 Zhang Jinglong F A method and apparatus employing one-way transforms
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
US7248691B1 (en) 2000-10-31 2007-07-24 Microsoft Corporation Hashing using multiple sub-hashes
US20020167945A1 (en) 2000-11-22 2002-11-14 Yeshik Shin Method and system for packet ordering based on packet type
JP4216457B2 (ja) 2000-11-30 2009-01-28 富士通マイクロエレクトロニクス株式会社 半導体記憶装置及び半導体装置
US6564288B2 (en) 2000-11-30 2003-05-13 Hewlett-Packard Company Memory controller with temperature sensors
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
US7020739B2 (en) 2000-12-06 2006-03-28 Tdk Corporation Memory controller, flash memory system having memory controller and method for controlling flash memory device
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
US6938252B2 (en) 2000-12-14 2005-08-30 International Business Machines Corporation Hardware-assisted method for scheduling threads using data cache locality
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
US7107480B1 (en) 2000-12-22 2006-09-12 Simpletech, Inc. System and method for preventing data corruption in solid-state memory devices after a power failure
KR100365725B1 (ko) 2000-12-27 2002-12-26 한국전자통신연구원 플래시 메모리를 이용한 파일 시스템에서 등급별 지움정책 및 오류 복구 방법
KR100708475B1 (ko) 2001-01-08 2007-04-18 삼성전자주식회사 펑쳐링된 패리티심벌을 복원하는 터보디코더용 프리디코더 및 터보코드의 복원방법
US6763424B2 (en) 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
JP4818812B2 (ja) 2006-05-31 2011-11-16 株式会社日立製作所 フラッシュメモリストレージシステム
US6862692B2 (en) 2001-01-29 2005-03-01 Adaptec, Inc. Dynamic redistribution of parity groups
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
US6606690B2 (en) 2001-02-20 2003-08-12 Hewlett-Packard Development Company, L.P. System and method for accessing a storage area network as network attached storage
US20040233910A1 (en) 2001-02-23 2004-11-25 Wen-Shyen Chen Storage area network using a data communication protocol
US6802023B2 (en) 2001-03-15 2004-10-05 Hewlett-Packard Development Company, L.P. Redundant controller data storage system having hot insertion system and method
AU2002305315A1 (en) 2001-05-08 2002-11-18 International Business Machines Corporation 8b/10b encoding and decoding for high speed applications
US6684301B1 (en) * 2001-05-31 2004-01-27 Lsi Logic Corporation Out of order execution memory access request FIFO
US6731447B2 (en) 2001-06-04 2004-05-04 Xerox Corporation Secure data file erasure
US6876656B2 (en) 2001-06-15 2005-04-05 Broadcom Corporation Switch assisted frame aliasing for storage virtualization
US7107430B2 (en) 2001-06-19 2006-09-12 Massachusetts Institute Of Technology Mechanism to reduce the cost of forwarding pointer aliasing
JP4256600B2 (ja) 2001-06-19 2009-04-22 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP2003006041A (ja) 2001-06-20 2003-01-10 Hitachi Ltd 半導体装置
US6839808B2 (en) 2001-07-06 2005-01-04 Juniper Networks, Inc. Processing cluster having multiple compute engines and shared tier one caches
US7036068B2 (en) 2001-07-25 2006-04-25 Hewlett-Packard Development Company, L.P. Error correction coding and decoding in a solid-state storage device
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
JP4156817B2 (ja) 2001-07-27 2008-09-24 株式会社日立製作所 記憶装置システム
US7275135B2 (en) 2001-08-31 2007-09-25 Intel Corporation Hardware updated metadata for non-volatile mass storage cache
US6735546B2 (en) 2001-08-31 2004-05-11 Matrix Semiconductor, Inc. Memory device and method for temperature-based control over write and/or read operations
US6760805B2 (en) 2001-09-05 2004-07-06 M-Systems Flash Disk Pioneers Ltd. Flash management system for large page size
US7177197B2 (en) 2001-09-17 2007-02-13 Sandisk Corporation Latched programming of memory and method
KR100437610B1 (ko) 2001-09-20 2004-06-30 주식회사 하이닉스반도체 정상 모드와 부분 어레이 셀프 리프레쉬 모드를 갖는저전력 반도체 메모리 장치
US20030061296A1 (en) 2001-09-24 2003-03-27 International Business Machines Corporation Memory semantic storage I/O
GB0123416D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
GB0123415D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
US6938133B2 (en) 2001-09-28 2005-08-30 Hewlett-Packard Development Company, L.P. Memory latency and bandwidth optimizations
US6823417B2 (en) 2001-10-01 2004-11-23 Hewlett-Packard Development Company, L.P. Memory controller for memory card manages file allocation table
US7000063B2 (en) 2001-10-05 2006-02-14 Matrix Semiconductor, Inc. Write-many memory device and method for limiting a number of writes to the write-many memory device
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
US6515909B1 (en) 2001-10-05 2003-02-04 Micron Technology Inc. Flash memory device with a variable erase pulse
US6643181B2 (en) 2001-10-24 2003-11-04 Saifun Semiconductors Ltd. Method for erasing a memory cell
US6552955B1 (en) 2001-10-30 2003-04-22 Mitsubishi Denki Kabushiki Kaisha Semiconductor memory device with reduced power consumption
US6710901B2 (en) 2001-11-02 2004-03-23 Canadian Production Promotion Group Inc. Method and apparatus for two-photon, volumetric spatially resolved holographic data storage in photosensitive glass
US20030093741A1 (en) 2001-11-14 2003-05-15 Cenk Argon Parallel decoder for product codes
US6754800B2 (en) 2001-11-14 2004-06-22 Sun Microsystems, Inc. Methods and apparatus for implementing host-based object storage schemes
US6977847B2 (en) 2001-11-23 2005-12-20 M-Systems Flash Disk Pioneers Ltd. Detecting partially erased units in flash devices
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
US6883068B2 (en) 2001-12-17 2005-04-19 Sun Microsystems, Inc. Methods and apparatus for implementing a chche replacement scheme
US7548975B2 (en) 2002-01-09 2009-06-16 Cisco Technology, Inc. Methods and apparatus for implementing virtualization of storage within a storage area network through a virtual enclosure
US7036043B2 (en) 2001-12-28 2006-04-25 Storage Technology Corporation Data management with virtual recovery mapping and backward moves
US6839819B2 (en) 2001-12-28 2005-01-04 Storage Technology Corporation Data management appliance
US6697076B1 (en) 2001-12-31 2004-02-24 Apple Computer, Inc. Method and apparatus for address re-mapping
US6925573B2 (en) 2002-01-02 2005-08-02 Intel Corporation Method and apparatus to manage use of system power within a given specification
US6785078B2 (en) 2002-01-04 2004-08-31 International Business Machines Corporation Concurrent read and write access to simulated sequential data of a removable random access data storage medium
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
US6839826B2 (en) 2002-02-06 2005-01-04 Sandisk Corporation Memory device with pointer structure to map logical to physical addresses
US6748504B2 (en) 2002-02-15 2004-06-08 International Business Machines Corporation Deferred copy-on-write of a snapshot
US6871257B2 (en) 2002-02-22 2005-03-22 Sandisk Corporation Pipelined parallel programming operation in a non-volatile memory system
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
US7533214B2 (en) 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
US20030163633A1 (en) 2002-02-27 2003-08-28 Aasheim Jered Donald System and method for achieving uniform wear levels in a flash memory device
US7197567B1 (en) 2002-02-28 2007-03-27 Cisco Technology, Inc. Devices, softwares and methods for enabling SIP devices to operate in H.323 networks and H.323 devices to operate in sip networks
JP2003281071A (ja) 2002-03-20 2003-10-03 Seiko Epson Corp データ転送制御装置、電子機器及びデータ転送制御方法
US7010663B2 (en) 2002-03-22 2006-03-07 Sun Microsystems, Inc. Method and system for dividing a plurality of existing volumes of storage into a plurality of virtual logical units of storage
JP4050548B2 (ja) 2002-04-18 2008-02-20 株式会社ルネサステクノロジ 半導体記憶装置
US6707748B2 (en) 2002-05-07 2004-03-16 Ritek Corporation Back up power embodied non-volatile memory device
US7149857B2 (en) 2002-05-14 2006-12-12 Micron Technology, Inc. Out of order DRAM sequencer
US20030229689A1 (en) 2002-06-06 2003-12-11 Microsoft Corporation Method and system for managing stored data on a computer network
US7043599B1 (en) 2002-06-20 2006-05-09 Rambus Inc. Dynamic memory supporting simultaneous refresh and data-access transactions
US6894931B2 (en) 2002-06-20 2005-05-17 Kabushiki Kaisha Toshiba Nonvolatile semiconductor memory device
US7562089B2 (en) 2002-06-26 2009-07-14 Seagate Technology Llc Systems and methods for storing information to allow users to manage files
JP2004030438A (ja) 2002-06-27 2004-01-29 Renesas Technology Corp マイクロコンピュータ
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
US7043610B2 (en) 2002-08-19 2006-05-09 Aristos Logic Corporation System and method for maintaining cache coherency without external controller intervention
JP2004086295A (ja) 2002-08-23 2004-03-18 Megawin Technology Co Ltd Nand型フラッシュメモリディスク装置及び論理アドレス検出の方法
KR100505638B1 (ko) 2002-08-28 2005-08-03 삼성전자주식회사 워킹 콘텍스트 저장 및 복구 장치 및 방법
US7103731B2 (en) 2002-08-29 2006-09-05 International Business Machines Corporation Method, system, and program for moving data among storage units
US7882081B2 (en) 2002-08-30 2011-02-01 Netapp, Inc. Optimized disk repository for the storage and retrieval of mostly sequential data
US7051174B2 (en) 2002-09-24 2006-05-23 International Business Machines Corporation Method, system, and program for restoring data in cache
US20040064558A1 (en) 2002-09-26 2004-04-01 Hitachi Ltd. Resource distribution management method over inter-networks
JP4130615B2 (ja) 2003-07-02 2008-08-06 株式会社日立製作所 ストレージ装置を有するネットワークにおける障害情報管理方法及び管理サーバ
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
JP3929872B2 (ja) 2002-10-30 2007-06-13 株式会社東芝 キャッシュメモリ、プロセッサ及びキャッシュ制御方法
US7415565B2 (en) 2002-10-31 2008-08-19 Ring Technology Enterprises, Llc Methods and systems for a storage system with a program-controlled switch for routing data
JP4199519B2 (ja) 2002-11-05 2008-12-17 パナソニック株式会社 メモリ管理装置及びメモリ管理方法
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
US6845053B2 (en) 2002-11-15 2005-01-18 Micron Technology, Inc. Power throughput adjustment in flash memory
CN100550155C (zh) 2002-11-18 2009-10-14 松下电器产业株式会社 纠错、纠错编码、数据再现及数据记录的方法及其电路
US6836434B2 (en) 2002-11-21 2004-12-28 Micron Technology, Inc. Mode selection in a flash memory device
JP2004171411A (ja) 2002-11-21 2004-06-17 Hitachi Global Storage Technologies Netherlands Bv データ記憶装置及びバッファメモリの管理方法
US7121639B2 (en) 2002-12-02 2006-10-17 Silverbrook Research Pty Ltd Data rate equalisation to account for relatively different printhead widths
US6922754B2 (en) 2002-12-09 2005-07-26 Infabric Technologies, Inc. Data-aware data flow manager
US7552192B2 (en) * 2002-12-18 2009-06-23 Ronnie Gerome Carmichael Massively parallel computer network-utilizing MPACT and multipoint parallel server (MPAS) technologies
KR100680626B1 (ko) 2002-12-20 2007-02-09 인터내셔널 비지네스 머신즈 코포레이션 비신뢰 서버 환경에서 san 관리용 보안 시스템 및 방법
US6849905B2 (en) 2002-12-23 2005-02-01 Matrix Semiconductor, Inc. Semiconductor device with localized charge storage dielectric and method of making same
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 한국전자통신연구원 계산이 간단한 저밀도 패리티 검사 부호를 위한 메시지 전달 복호기
EP1435576B1 (en) 2003-01-03 2013-03-20 Austria Card Plastikkarten und Ausweissysteme GmbH Method and apparatus for block-oriented memory management provided in smart card controllers
US6816917B2 (en) 2003-01-15 2004-11-09 Hewlett-Packard Development Company, L.P. Storage system with LUN virtualization
US7664909B2 (en) 2003-04-18 2010-02-16 Nextio, Inc. Method and apparatus for a shared I/O serial ATA controller
US7698483B2 (en) * 2003-01-21 2010-04-13 Nextio, Inc. Switching apparatus and method for link initialization in a shared I/O environment
US20040148360A1 (en) 2003-01-24 2004-07-29 Hewlett-Packard Development Company Communication-link-attached persistent memory device
US7107419B1 (en) * 2003-02-14 2006-09-12 Google Inc. Systems and methods for performing record append operations
US7181569B2 (en) 2003-02-26 2007-02-20 International Business Machines Corporation Method, system, and article of manufacture for writing on sequential storage media
US7526598B2 (en) 2003-03-03 2009-04-28 Sandisk Il, Ltd. Efficient flash memory device driver
US6959369B1 (en) 2003-03-06 2005-10-25 International Business Machines Corporation Method, system, and program for data backup
EP1607868A4 (en) 2003-03-10 2009-04-22 Sharp Kk DATA PROCESSING DEVICE, DATA PROCESSING PROGRAM AND RECORDING MEDIUM
US7076723B2 (en) 2003-03-14 2006-07-11 Quantum Corporation Error correction codes
JP2004278439A (ja) 2003-03-17 2004-10-07 Toshiba Kyaria Kk 流体機械
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
JP2004310621A (ja) 2003-04-10 2004-11-04 Hitachi Ltd 記憶装置システムにおけるファイルアクセス方法及びファイルアクセスのためのプログラム
CN100342377C (zh) * 2003-04-16 2007-10-10 华为技术有限公司 一种提高数据处理效率的方法
US7334064B2 (en) 2003-04-23 2008-02-19 Dot Hill Systems Corporation Application server blade for embedded storage appliance
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 半導体記憶装置の書込制御方法及びシステム並びに携帯電子機器
US7320100B2 (en) 2003-05-20 2008-01-15 Cray Inc. Apparatus and method for memory with bit swapping on the fly and testing
US7412449B2 (en) 2003-05-23 2008-08-12 Sap Aktiengesellschaft File object storage and retrieval using hashing techniques
US7454555B2 (en) 2003-06-12 2008-11-18 Rambus Inc. Apparatus and method including a memory device having multiple sets of memory banks with duplicated data emulating a fast access time, fixed latency memory device
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
US7237141B2 (en) 2003-06-19 2007-06-26 Lsi Corporation Method for recovering data from a redundant storage object
US20040268359A1 (en) 2003-06-27 2004-12-30 Hanes David H. Computer-readable medium, method and computer system for processing input/output requests
US7275098B1 (en) 2003-06-27 2007-09-25 Emc Corporation Methods and apparatus for administering software modules in a storage area network management application
US7373514B2 (en) 2003-07-23 2008-05-13 Intel Corporation High-performance hashing system
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
US20050055495A1 (en) 2003-09-05 2005-03-10 Nokia Corporation Memory wear leveling
US7487235B2 (en) 2003-09-24 2009-02-03 Dell Products L.P. Dynamically varying a raid cache policy in order to optimize throughput
US7483974B2 (en) 2003-09-24 2009-01-27 Intel Corporation Virtual management controller to coordinate processing blade management in a blade server environment
US20050091215A1 (en) 2003-09-29 2005-04-28 Chandra Tushar D. Technique for provisioning storage for servers in an on-demand environment
IES20030722A2 (en) * 2003-10-01 2005-04-06 Yqa Now Ltd A data storage device
US7173852B2 (en) 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
JP4492084B2 (ja) 2003-10-07 2010-06-30 株式会社日立製作所 ストレージパス制御方法
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
US7127560B2 (en) 2003-10-14 2006-10-24 International Business Machines Corporation Method of dynamically controlling cache size
US7096321B2 (en) 2003-10-21 2006-08-22 International Business Machines Corporation Method and system for a cache replacement technique with adaptive skipping
US7143240B2 (en) 2003-10-31 2006-11-28 International Business Machines Corporation System and method for providing a cost-adaptive cache
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. ファイル記録装置
US20050114595A1 (en) 2003-11-26 2005-05-26 Veritas Operating Corporation System and method for emulating operating system metadata to provide cross-platform access to storage volumes
US7162571B2 (en) 2003-12-09 2007-01-09 Emc Corporation Methods and apparatus for parsing a content address to facilitate selection of a physical storage location in a data storage system
US8892821B2 (en) 2003-12-10 2014-11-18 International Business Machines Corporation Method and system for thread-based memory speculation in a memory subsystem of a data processing system
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
US7418490B1 (en) 2003-12-29 2008-08-26 Sun Microsystems, Inc. System using multiple sets of device management policies for managing network devices connected on different network interfaces
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
US20050154786A1 (en) 2004-01-09 2005-07-14 International Business Machines Corporation Ordering updates in remote copying of data
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
US7042664B2 (en) 2004-01-26 2006-05-09 Seagate Technology Llc Method and system for host programmable data storage device self-testing
JP4477365B2 (ja) 2004-01-29 2010-06-09 株式会社日立製作所 複数インタフェースを有する記憶装置、および、その記憶装置の制御方法
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
US7356651B2 (en) 2004-01-30 2008-04-08 Piurata Technologies, Llc Data-aware cache state machine
US7064994B1 (en) 2004-01-30 2006-06-20 Sun Microsystems, Inc. Dynamic memory throttling for power and thermal limitations
US7389465B2 (en) 2004-01-30 2008-06-17 Micron Technology, Inc. Error detection and correction scheme for a memory device
US7130956B2 (en) 2004-02-10 2006-10-31 Sun Microsystems, Inc. Storage system including hierarchical cache metadata
US7130957B2 (en) 2004-02-10 2006-10-31 Sun Microsystems, Inc. Storage system structure for storing relational 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 記憶制御システム及び方法
US7260695B2 (en) 2004-03-05 2007-08-21 International Business Machines Corporation Scanning modified data during power loss
US20080082736A1 (en) 2004-03-11 2008-04-03 Chow David Q Managing bad blocks in various flash memory cells for electronic data flash card
JP2005316951A (ja) 2004-03-30 2005-11-10 Seiko Epson Corp 情報端末、情報処理システム、及び、これらの制御方法
JP2005293774A (ja) 2004-04-02 2005-10-20 Hitachi Global Storage Technologies Netherlands Bv ディスク装置の制御方法
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
EP1745394B1 (en) 2004-04-26 2009-07-15 Storewiz, Inc. Method and system for compression of files for storage and operation on compressed files
US7412614B2 (en) 2004-04-29 2008-08-12 Hewlett-Packard Development Company, L.P. Power management using a pre-determined thermal characteristic of a memory module
US7370163B2 (en) 2004-05-03 2008-05-06 Gemini Storage Adaptive cache engine for storage area network including systems and methods related thereto
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
US20050257017A1 (en) 2004-05-14 2005-11-17 Hideki Yagi Method and apparatus to erase hidden memory in a memory card
US7512830B2 (en) 2004-05-14 2009-03-31 International Business Machines Corporation Management module failover across multiple blade center chassis
US7831561B2 (en) 2004-05-18 2010-11-09 Oracle International Corporation Automated disk-oriented backups
US20050262150A1 (en) 2004-05-21 2005-11-24 Computer Associates Think, Inc. Object-based storage
JP2005339198A (ja) 2004-05-27 2005-12-08 Internatl Business Mach Corp <Ibm> キャッシュヒット率推定装置、キャッシュヒット率推定方法、プログラム及び記録媒体
US7009889B2 (en) 2004-05-28 2006-03-07 Sandisk Corporation Comprehensive erase verification for non-volatile memory
US7590522B2 (en) 2004-06-14 2009-09-15 Hewlett-Packard Development Company, L.P. Virtual mass storage device for server management information
US7290116B1 (en) 2004-06-30 2007-10-30 Sun Microsystems, Inc. Level 2 cache index hashing to avoid hot spots
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
US9264384B1 (en) 2004-07-22 2016-02-16 Oracle International Corporation Resource virtualization mechanism including virtual host bus adapters
US20060020616A1 (en) 2004-07-22 2006-01-26 Geoffrey Hardy Indexing operational logs in a distributed processing system
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
JP4315876B2 (ja) 2004-08-17 2009-08-19 富士通株式会社 ファイル管理プログラム、ファイル管理方法、及びファイル管理装置
US7477570B2 (en) 2004-08-20 2009-01-13 Micron Technology, Inc. Sequential access memory with system and method
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
US20060047926A1 (en) 2004-08-25 2006-03-02 Zheng Calvin G Managing multiple snapshot copies of data
US20060075057A1 (en) 2004-08-30 2006-04-06 International Business Machines Corporation Remote direct memory access system and method
JP4646574B2 (ja) 2004-08-30 2011-03-09 株式会社日立製作所 データ処理システム
EP1786205A1 (en) 2004-08-30 2007-05-16 Matsushita Electric Industrial Co., Ltd. Recorder
US7650453B2 (en) * 2004-09-16 2010-01-19 Nec Corporation Information processing apparatus having multiple processing units sharing multiple resources
US7062624B2 (en) 2004-09-29 2006-06-13 Hitachi, Ltd. Method for managing volume groups considering storage tiers
US7444493B2 (en) 2004-09-30 2008-10-28 Intel Corporation Address translation for input/output devices using hierarchical translation tables
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
US7328317B2 (en) 2004-10-21 2008-02-05 International Business Machines Corporation Memory controller and method for optimized read/modify/write performance
US7565569B2 (en) 2004-10-22 2009-07-21 International Business Machines Corporation Data protection in a mass storage system
JP2006127028A (ja) 2004-10-27 2006-05-18 Hitachi Ltd 記憶システム及び記憶制御装置
ITMI20042072A1 (it) 2004-10-29 2005-01-29 St Microelectronics Srl Dispositivo di memoria flsh dotato di interfaccia di comunicazione low pin count
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
JP5055125B2 (ja) 2004-11-05 2012-10-24 ドロボ, インコーポレイテッド 種々のサイズの格納デバイスを許容する動的にアップグレード可能な故障許容格納システムおよび方法
US7441067B2 (en) 2004-11-15 2008-10-21 Sandisk Corporation Cyclic flash memory wear leveling
US20060106968A1 (en) 2004-11-15 2006-05-18 Wooi Teoh Gary C Intelligent platform management bus switch system
US7337277B2 (en) 2004-11-18 2008-02-26 International Business Machines Corporation Apparatus, system, and method for flushing cache data
US8595459B2 (en) 2004-11-29 2013-11-26 Rambus Inc. Micro-threaded memory
JP2008523468A (ja) 2004-12-06 2008-07-03 テイアック エアロスペース テクノロジーズ インコーポレイテッド 不揮発記録媒体消去システム及び方法
US8156281B1 (en) 2004-12-07 2012-04-10 Oracle America, Inc. Data storage system and method using storage profiles to define and modify storage pools
US8074041B2 (en) 2004-12-09 2011-12-06 International Business Machines Corporation Apparatus, system, and method for managing storage space allocation
US8495266B2 (en) * 2004-12-10 2013-07-23 Hewlett-Packard Development Company, L.P. Distributed lock
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
US7366826B2 (en) 2004-12-16 2008-04-29 Sandisk Corporation Non-volatile memory and method with multi-stream update tracking
KR100662256B1 (ko) * 2004-12-20 2006-12-28 한국전자통신연구원 낮은 프로세스 점유율을 가지는 객체기반 스토리지 장치및 그 제어 방법
US7409473B2 (en) 2004-12-21 2008-08-05 Sandisk Corporation Off-chip data relocation
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
US7441081B2 (en) 2004-12-29 2008-10-21 Lsi Corporation Write-back caching for disk drives
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 삼성전자주식회사 반도체 디스크 제어 장치
US20060159456A1 (en) 2005-01-18 2006-07-20 Fujitsu Limited System and method for conserving resources in an optical storage area network
US7689599B1 (en) 2005-01-31 2010-03-30 Symantec Operating Corporation Repair of inconsistencies between data and metadata stored on a temporal volume using transaction log replay
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
US20060184718A1 (en) 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
US7426649B2 (en) 2005-02-09 2008-09-16 International Business Machines Corporation Power management via DIMM read operation limiter
EP1851861A2 (en) 2005-02-14 2007-11-07 Koninklijke Philips Electronics N.V. Block interleaving with memory table of reduced size
US20060184736A1 (en) 2005-02-17 2006-08-17 Benhase Michael T Apparatus, system, and method for storing modified data
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
US7457166B2 (en) 2005-03-31 2008-11-25 Sandisk Corporation Erase voltage manipulation in non-volatile memory for controlled shifts in threshold voltage
US7522457B2 (en) 2005-03-31 2009-04-21 Sandisk Corporation Systems for erase voltage manipulation in non-volatile memory for controlled shifts in threshold voltage
US7486564B2 (en) 2005-03-31 2009-02-03 Sandisk Corporation Soft programming non-volatile memory utilizing individual verification and additional soft programming of subsets of memory cells
US7463521B2 (en) 2005-04-01 2008-12-09 Sandisk Corporation Method for non-volatile memory with managed execution of cached data
US7451344B1 (en) 2005-04-08 2008-11-11 Western Digital Technologies, Inc. Optimizing order of error recovery steps in a disk drive
US7702928B2 (en) 2005-04-08 2010-04-20 Hewlett-Packard Development Company, L.P. Memory module with on-board power-consumption monitoring
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
US8452929B2 (en) 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
US7620741B2 (en) * 2005-04-22 2009-11-17 Sun Microsystems, Inc. Proxy-based device sharing
US7702873B2 (en) 2005-04-25 2010-04-20 Network Appliance, Inc. Managing common storage by allowing delayed allocation of storage after reclaiming reclaimable space in a logical volume
US7523546B2 (en) 2005-05-04 2009-04-28 Nokia Corporation Method for manufacturing a composite layer for an electronic device
US20060265636A1 (en) 2005-05-19 2006-11-23 Klaus Hummler Optimized testing of on-chip error correction circuit
US7752381B2 (en) 2005-05-24 2010-07-06 Micron Technology, Inc. Version based non-volatile memory translation layer
US7444526B2 (en) 2005-06-16 2008-10-28 International Business Machines Corporation Performance conserving method for reducing power consumption in a server system
US7930589B2 (en) 2005-06-17 2011-04-19 Analog Devices, Inc. Interrupt-responsive non-volatile memory system and method
US7590796B2 (en) 2006-07-31 2009-09-15 Metaram, Inc. System and method for power management in memory systems
US20080082763A1 (en) 2006-10-02 2008-04-03 Metaram, Inc. Apparatus and method for power management of memory circuits by a system or component thereof
US7743217B2 (en) 2005-06-29 2010-06-22 Stmicroelectronics S.A. Cache consistency in a multiprocessor system with shared memory
US7457910B2 (en) 2005-06-29 2008-11-25 Sandisk Corproation Method and system for managing partitions in a storage device
US7797479B2 (en) 2005-06-30 2010-09-14 Intel Corporation Technique to write to a non-volatile memory
US7774542B2 (en) 2005-07-06 2010-08-10 Ji Zhang System and method for adaptive operation of storage capacities of RAID systems
US7716387B2 (en) 2005-07-14 2010-05-11 Canon Kabushiki Kaisha Memory control apparatus and method
US7895398B2 (en) 2005-07-19 2011-02-22 Dell Products L.P. System and method for dynamically adjusting the caching characteristics for each logical unit of a storage array
JP5162846B2 (ja) 2005-07-29 2013-03-13 ソニー株式会社 記憶装置、コンピュータシステム、および記憶システム
US7409489B2 (en) 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
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
US7552271B2 (en) 2005-08-03 2009-06-23 Sandisk Corporation Nonvolatile memory with block management
US8417915B2 (en) 2005-08-05 2013-04-09 Arm Limited Alias management within a virtually indexed and physically tagged cache memory
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 株式会社日立製作所 ストレージシステムとストレージ装置及びその制御方法
US7970015B2 (en) 2005-09-12 2011-06-28 Hob Gmbh & Co. Kg Method for transmitting a message by compressed data transmission between a sender and a receiver via a data network
US20070061508A1 (en) 2005-09-13 2007-03-15 Quantum Corporation Data storage cartridge with built-in tamper-resistant clock
US7523378B2 (en) 2005-09-23 2009-04-21 Intel Corporation Techniques to determine integrity of information
KR100734629B1 (ko) 2005-09-28 2007-07-03 한국전자통신연구원 부분 캐싱 방법 및 이를 이용한 적응형 콘텐츠 전송 방법
US7437510B2 (en) 2005-09-30 2008-10-14 Intel Corporation Instruction-assisted cache management for efficient use of cache and memory
US7652922B2 (en) 2005-09-30 2010-01-26 Mosaid Technologies Incorporated Multiple independent serial link 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
US7634585B2 (en) 2005-11-04 2009-12-15 Sandisk Corporation In-line cache using nonvolatile memory between host and disk device
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
US7376034B2 (en) 2005-12-15 2008-05-20 Stec, Inc. Parallel data storage system
JP4807063B2 (ja) 2005-12-20 2011-11-02 ソニー株式会社 復号装置、制御方法、およびプログラム
US20070143566A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with data alignment in a directly mapped file storage system
US7793068B2 (en) * 2005-12-21 2010-09-07 Sandisk Corporation Dual mode access for non-volatile storage devices
US7747837B2 (en) 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
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
US20070143560A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with memory allocation for a directly mapped file storage system
US20070143561A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Methods for adaptive file data handling in non-volatile memories with 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
US7673111B2 (en) 2005-12-23 2010-03-02 Intel Corporation Memory system with both single and consolidated commands
US20070150663A1 (en) 2005-12-27 2007-06-28 Abraham Mendelson Device, system and method of multi-state cache coherence scheme
US7793059B2 (en) 2006-01-18 2010-09-07 Apple Inc. Interleaving policies for flash memory
KR100746225B1 (ko) 2006-02-13 2007-08-03 삼성전자주식회사 반도체 메모리 장치 및 이를 구비한 메모리 시스템
KR100781520B1 (ko) 2006-02-24 2007-12-03 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 이를위한 맵핑 정보 복구 방법
EP1990727A4 (en) 2006-02-27 2009-08-05 Fujitsu Ltd CACHE CONTROL DEVICE AND CACHE CONTROL PROGRAM
KR20070089460A (ko) 2006-02-28 2007-08-31 삼성전자주식회사 우선 순위에 따른 비휘발성 메모리의 연산 처리 장치 및방법
JP2007233903A (ja) 2006-03-03 2007-09-13 Hitachi Ltd 記憶制御装置及び記憶制御装置のデータ回復方法
US7747925B2 (en) 2006-03-06 2010-06-29 Fujifilm Corporation Apparatus and method for error correction code striping
US20070208790A1 (en) 2006-03-06 2007-09-06 Reuter James M Distributed data-storage system
US20070245217A1 (en) 2006-03-28 2007-10-18 Stmicroelectronics S.R.L. Low-density parity check decoding
US7562180B2 (en) 2006-03-28 2009-07-14 Nokia Corporation Method and device for reduced read latency of non-volatile memory
US7840398B2 (en) 2006-03-28 2010-11-23 Intel Corporation Techniques for unified management communication for virtualization systems
US7551492B2 (en) 2006-03-29 2009-06-23 Mosaid Technologies, Inc. Non-volatile semiconductor memory with page erase
KR101341286B1 (ko) 2006-03-30 2013-12-12 실리콘 이미지, 인크. 멀티-포트 메모리 디바이스의 포트간 통신
US7831778B2 (en) 2006-03-30 2010-11-09 Silicon Image, Inc. Shared nonvolatile memory architecture
US20070233937A1 (en) 2006-03-31 2007-10-04 Coulson Richard L Reliability of write operations to a non-volatile memory
US7676628B1 (en) 2006-03-31 2010-03-09 Emc Corporation Methods, systems, and computer program products for providing access to shared storage by computing grids and clusters with large numbers of nodes
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
US7653778B2 (en) 2006-05-08 2010-01-26 Siliconsystems, Inc. Systems and methods for measuring the useful life of solid-state storage devices
US20070271495A1 (en) 2006-05-18 2007-11-22 Ian Shaeffer System to detect and identify errors in control information, read data and/or write data
JP4681505B2 (ja) 2006-05-23 2011-05-11 株式会社日立製作所 計算機システム、管理計算機及びプログラム配布方法
US8453147B2 (en) 2006-06-05 2013-05-28 Cisco Technology, Inc. Techniques for reducing thread overhead for systems with multiple multi-threaded processors
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
US7810013B2 (en) 2006-06-30 2010-10-05 Intel Corporation Memory device that reflects back error detection signals
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
US7395390B2 (en) 2006-07-12 2008-07-01 Inventec Corporation System for backing up cache memory in a double backup server structure
US7783956B2 (en) 2006-07-12 2010-08-24 Cronera Systems Incorporated Data recorder
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
KR101128234B1 (ko) 2006-08-23 2012-03-23 엘지전자 주식회사 메모리 접근 제어 장치 및 방법
US7500078B2 (en) 2006-08-25 2009-03-03 Dell Products L.P. Thermal control of memory modules using proximity information
US7788513B2 (en) 2006-08-29 2010-08-31 Hewlett-Packard Development Company, L.P. Method of reducing power consumption of a computing system by evacuating selective platform memory components thereof
US7870306B2 (en) 2006-08-31 2011-01-11 Cisco Technology, Inc. Shared memory message switch and cache
JP4932390B2 (ja) 2006-08-31 2012-05-16 株式会社日立製作所 仮想化システム及び領域割当て制御方法
JP4452261B2 (ja) 2006-09-12 2010-04-21 株式会社日立製作所 ストレージシステムの論理ボリューム管理方法、論理ボリューム管理プログラム、及びストレージシステム
US8806116B2 (en) 2008-02-12 2014-08-12 Virident Systems, Inc. Memory modules for two-dimensional main memory
US7573744B2 (en) 2006-09-29 2009-08-11 Kabushiki Kaisha Toshiba Semiconductor memory device having different capacity areas
US7630225B2 (en) 2006-09-29 2009-12-08 Sandisk Corporation Apparatus combining once-writeable and rewriteable information storage to support data processing
US7752412B2 (en) * 2006-09-29 2010-07-06 Sandisk Corporation Methods of managing file allocation table information
JP4942446B2 (ja) 2006-10-11 2012-05-30 株式会社日立製作所 ストレージ装置及びその制御方法
US7499338B2 (en) 2006-10-13 2009-03-03 Sandisk Corporation Partitioned soft programming in non-volatile memory
US7535766B2 (en) 2006-10-13 2009-05-19 Sandisk Corporation Systems for partitioned soft programming in non-volatile memory
US7495954B2 (en) 2006-10-13 2009-02-24 Sandisk Corporation Method for partitioned erase and erase verification to compensate for capacitive coupling effects in non-volatile memory
US7499317B2 (en) 2006-10-13 2009-03-03 Sandisk Corporation System for partitioned erase and erase verification in a non-volatile memory to compensate for capacitive coupling
US9465823B2 (en) 2006-10-19 2016-10-11 Oracle International Corporation System and method for data de-duplication
KR100771519B1 (ko) 2006-10-23 2007-10-30 삼성전자주식회사 플래시 메모리를 포함한 메모리 시스템 및 그것의 머지방법
JP4437489B2 (ja) 2006-10-25 2010-03-24 株式会社日立製作所 揮発性キャッシュメモリと不揮発性メモリとを備えたストレージシステム
US7822887B2 (en) * 2006-10-27 2010-10-26 Stec, Inc. Multi-channel solid-state storage system
US7958280B2 (en) 2006-10-27 2011-06-07 Stec, Inc. Parallel data transfer in solid-state storage
US8122196B2 (en) 2006-10-30 2012-02-21 Netapp, Inc. System and procedure for rapid decompression and/or decryption of securely stored data
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
US20080109647A1 (en) 2006-11-07 2008-05-08 Lee Merrill Gavens Memory controllers for performing resilient firmware upgrades to a functioning memory
US7567462B2 (en) 2006-11-16 2009-07-28 Micron Technology, Inc. Method and system for selectively limiting peak power consumption during programming or erase of non-volatile memory devices
US20080120469A1 (en) 2006-11-22 2008-05-22 International Business Machines Corporation Systems and Arrangements for Cache Management
CN100530070C (zh) 2006-11-24 2009-08-19 骆建军 基于flash的硬盘
US7904647B2 (en) 2006-11-27 2011-03-08 Lsi Corporation System for optimizing the performance and reliability of a storage controller cache offload circuit
US7924648B2 (en) 2006-11-28 2011-04-12 Anobit Technologies Ltd. Memory power and performance management
US7783830B2 (en) 2006-11-29 2010-08-24 Seagate Technology Llc Solid state device pattern for non-solid state storage media
US8595573B2 (en) 2006-12-03 2013-11-26 Apple Inc. Automatic defect management in memory devices
JP4923990B2 (ja) 2006-12-04 2012-04-25 株式会社日立製作所 フェイルオーバ方法、およびその計算機システム。
US8443134B2 (en) 2006-12-06 2013-05-14 Fusion-Io, Inc. Apparatus, system, and method for graceful cache device degradation
US9104599B2 (en) 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
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
TW200825762A (en) 2006-12-06 2008-06-16 Inventec Corp Apparatus and method for computer management
US8489817B2 (en) 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
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
US20080140737A1 (en) 2006-12-08 2008-06-12 Apple Computer, Inc. Dynamic memory management
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
US20080140918A1 (en) 2006-12-11 2008-06-12 Pantas Sutardja Hybrid non-volatile solid state memory system
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
US20080155051A1 (en) 2006-12-23 2008-06-26 Simpletech, Inc. Direct file transfer system and method for a computer network
KR100811274B1 (ko) 2006-12-28 2008-03-07 주식회사 하이닉스반도체 낸드형 플래쉬 메모리소자의 데이터 소거방법
JP4813385B2 (ja) 2007-01-29 2011-11-09 株式会社日立製作所 ストレージシステムの複数の論理リソースを制御する制御装置
US20080183968A1 (en) 2007-01-30 2008-07-31 Chi-Ting Huang Computer system having cache system directly connected to nonvolatile storage device and method thereof
KR100817087B1 (ko) 2007-02-13 2008-03-27 삼성전자주식회사 플래시 메모리를 구비하는 스토리지 장치에서의 버퍼 캐시운용 방법
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
WO2008111058A2 (en) 2007-03-12 2008-09-18 Anobit Technologies Ltd. Adaptive estimation of memory cell read thresholds
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
US7908501B2 (en) 2007-03-23 2011-03-15 Silicon Image, Inc. Progressive power control of a multi-port memory device
US8135900B2 (en) 2007-03-28 2012-03-13 Kabushiki Kaisha Toshiba Integrated memory management and memory management method
US20080244181A1 (en) 2007-03-30 2008-10-02 Michael Walz Dynamic run-time cache size management
JP2008250961A (ja) 2007-03-30 2008-10-16 Nec Corp 記憶媒体の制御装置、データ記憶装置、データ記憶システム、方法、及び制御プログラム
US20080243966A1 (en) 2007-04-02 2008-10-02 Croisettier Ramanakumari M System and method for managing temporary storage space of a database management system
US9207876B2 (en) 2007-04-19 2015-12-08 Microsoft Technology Licensing, Llc Remove-on-delete technologies for solid state drive optimization
US8429677B2 (en) 2007-04-19 2013-04-23 Microsoft Corporation Composite solid state drive identification and optimization technologies
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
US7606079B2 (en) 2007-04-25 2009-10-20 Sandisk Corporation Reducing power consumption during read operations in non-volatile storage
JP2008276646A (ja) 2007-05-02 2008-11-13 Hitachi Ltd ストレージ装置及びストレージ装置におけるデータの管理方法
US8028198B2 (en) 2007-07-30 2011-09-27 Micron Technology, Inc. Devices, methods, and apparatuses for detection, sensing, and reporting functionality for semiconductor memory
US8850154B2 (en) 2007-09-11 2014-09-30 2236008 Ontario Inc. Processing system having memory partitioning
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
US7773413B2 (en) 2007-10-08 2010-08-10 Anobit Technologies Ltd. Reliable data storage in analog memory cells in the presence of temperature variations
TWI578330B (zh) 2007-10-09 2017-04-11 A-Data Technology Co Ltd Solid state semiconductor storage device with temperature control function and control method thereof
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
US8001334B2 (en) 2007-12-06 2011-08-16 Silicon Image, Inc. Bank sharing and refresh in a shared multi-port memory device
US8195912B2 (en) 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US9727452B2 (en) 2007-12-14 2017-08-08 Virident Systems, Llc Distributing metadata across multiple different disruption regions within an asymmetric memory system
US8239611B2 (en) 2007-12-28 2012-08-07 Spansion Llc Relocating data in a memory device
US20090216944A1 (en) 2008-02-22 2009-08-27 International Business Machines Corporation Efficient validation of writes for protection against dropped writes
KR101086855B1 (ko) 2008-03-10 2011-11-25 주식회사 팍스디스크 고속 동작하는 반도체 스토리지 시스템 및 그 제어 방법
US8175528B2 (en) 2008-03-18 2012-05-08 Spansion Llc Wireless mass storage flash memory
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 株式会社日立製作所 ストレージ装置、その記憶領域管理方法及びフラッシュメモリパッケージ
US8209439B2 (en) 2008-08-25 2012-06-26 Sandisk Il Ltd. Managing multiple concurrent operations with various priority levels in a local storage device
US8914567B2 (en) 2008-09-15 2014-12-16 Vmware, Inc. Storage management system for virtual machines
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
US8327066B2 (en) 2008-09-30 2012-12-04 Samsung Electronics Co., Ltd. Method of managing a solid state drive, associated systems and implementations
US7777652B2 (en) 2008-10-29 2010-08-17 Silicon Image, Inc. Coding system for memory systems employing high-speed serial links
US8407427B2 (en) 2008-10-29 2013-03-26 Silicon Image, Inc. Method and system for improving serial port memory communication latency and reliability
US8645641B2 (en) 2008-12-17 2014-02-04 Seagate Technology Llc Intelligent storage device controller
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
WO2010090745A1 (en) 2009-02-06 2010-08-12 Osr Open Systems Resources, Inc. Methods and systems for data storage
US8032708B2 (en) 2009-02-11 2011-10-04 Oracle America, Inc. Method and system for caching data in a storgae system
US8296628B2 (en) 2009-03-06 2012-10-23 Texas Instruments Incorporated Data path read/write sequencing for reduced power consumption
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
US20100251076A1 (en) 2009-03-27 2010-09-30 Chao-Yi Wu Storage controller having soft decoder included therein, related storage control method thereof and system using the same
US20100262979A1 (en) 2009-04-08 2010-10-14 Google Inc. Circular command queues for communication between a host and a data storage device
US20100262773A1 (en) 2009-04-08 2010-10-14 Google Inc. Data striping in a flash memory data storage device
US8447918B2 (en) 2009-04-08 2013-05-21 Google Inc. Garbage collection for failure prediction and repartitioning
US8214663B2 (en) 2009-04-15 2012-07-03 International Business Machines Corporation Using power proxies combined with on-chip actuators to meet a defined power target
US8402069B2 (en) 2009-05-04 2013-03-19 Microsoft Corporation Use of delete notifications by file systems and applications to release storage space
US8095738B2 (en) 2009-06-15 2012-01-10 International Business Machines Corporation Differential caching mechanism based on media I/O speed
US20100332871A1 (en) 2009-06-30 2010-12-30 International Buisness Machines Corporation Capping power consumption in a data storage system
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
US20110029728A1 (en) 2009-07-28 2011-02-03 Lsi Corporation Methods and apparatus for reducing input/output operations in a raid storage system
JP5265023B2 (ja) 2009-08-04 2013-08-14 株式会社日立製作所 ストレージシステム及びその制御方法
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
US8560765B2 (en) 2009-09-08 2013-10-15 Lsi Corporation Systems and methods for variable level use of a multi-level flash memory
US8289801B2 (en) 2009-09-09 2012-10-16 Fusion-Io, Inc. Apparatus, system, and method for power reduction management in a storage device
KR101644125B1 (ko) 2009-09-22 2016-07-29 삼성전자주식회사 비휘발성 메모리를 이용한 로깅 최적화 장치 및 방법
CA2680601C (en) 2009-10-16 2010-11-02 Ibm Canada Limited - Ibm Canada Limitee Managing multiple speculative assist threads at differing cache levels
US9753847B2 (en) 2009-10-27 2017-09-05 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
US8327106B2 (en) 2009-11-16 2012-12-04 International Business Machines Corporation Selective device access control
WO2011094454A2 (en) 2010-01-27 2011-08-04 Fusion-Io, Inc. Apparatus, system, and method for determining a read voltage threshold for solid-state storage media
US8478945B2 (en) 2010-02-01 2013-07-02 International Business Machines Corporation Dynamic management of destage tasks in a storage controller
US8850113B2 (en) 2010-02-27 2014-09-30 Cleversafe, Inc. Data migration between a raid memory and a dispersed storage network memory
US8712984B2 (en) 2010-03-04 2014-04-29 Microsoft Corporation Buffer pool extension for database server
US8438361B2 (en) 2010-03-10 2013-05-07 Seagate Technology Llc Logical block storage in a storage device
US8130551B2 (en) 2010-03-31 2012-03-06 Sandisk Technologies Inc. Extra dummy erase pulses after shallow erase-verify to avoid sensing deep erased threshold voltage
EP2574215A2 (en) 2010-04-06 2013-04-03 D. Naddor Hd barcode
US8463846B2 (en) 2010-05-06 2013-06-11 Cdnetworks Co., Ltd. File bundling for cache servers of content delivery networks
US20110314071A1 (en) 2010-06-17 2011-12-22 Openwave Systems Inc. Metadata-based data access and control
US8452911B2 (en) 2010-09-30 2013-05-28 Sandisk Technologies Inc. Synchronized maintenance operations in a multi-bank storage system
US10558705B2 (en) 2010-10-20 2020-02-11 Microsoft Technology Licensing, Llc Low RAM space, high-throughput persistent key-value store using secondary memory
US8990538B2 (en) 2010-11-05 2015-03-24 Microsoft Corporation Managing memory with limited write cycles in heterogeneous memory systems
US8364888B2 (en) 2011-02-03 2013-01-29 Stec, Inc. Erase-suspend system and method
US9779038B2 (en) 2013-01-31 2017-10-03 Apple Inc. Efficient suspend-resume operation in memory devices

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1397887A (zh) * 2001-08-15 2003-02-19 智慧第一公司 一种将储存数据重新导向的虚拟集合高速缓存
US20060059326A1 (en) * 2002-11-21 2006-03-16 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
CN1542815A (zh) * 2003-02-27 2004-11-03 ������������ʽ���� 记录装置、文件管理方法、文件管理方法程序及记录介质

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104679446A (zh) * 2013-08-16 2015-06-03 Lsi公司 用于使用经分割快闪转变层的方法及设备
CN104679446B (zh) * 2013-08-16 2017-10-03 Lsi公司 用于使用经分割快闪转变层的方法及设备
CN105830039A (zh) * 2013-12-17 2016-08-03 日本电气株式会社 写入信息存储设备、方法和记录介质
CN111324300A (zh) * 2018-12-14 2020-06-23 爱思开海力士有限公司 控制器以及控制器的操作方法
CN111324300B (zh) * 2018-12-14 2023-08-01 爱思开海力士有限公司 控制器以及控制器的操作方法
CN110286858A (zh) * 2019-06-26 2019-09-27 北京奇艺世纪科技有限公司 一种数据处理方法及相关设备
CN111274175A (zh) * 2020-01-15 2020-06-12 杭州华冲科技有限公司 一种基于数据乒乓填充的dma工作方法
CN112365904A (zh) * 2020-11-16 2021-02-12 深圳市天视通技术有限公司 一种延长报警录像存储时间的方法、装置、设备及介质
CN112365904B (zh) * 2020-11-16 2021-08-10 深圳市天视通技术有限公司 一种延长报警录像存储时间的方法、装置、设备及介质

Also Published As

Publication number Publication date
US7836226B2 (en) 2010-11-16
JP2011521315A (ja) 2011-07-21
US20110029496A1 (en) 2011-02-03
EP2286327A1 (en) 2011-02-23
US9170754B2 (en) 2015-10-27
US20120210021A1 (en) 2012-08-16
US20160018991A1 (en) 2016-01-21
KR20110048486A (ko) 2011-05-11
US20090222596A1 (en) 2009-09-03
WO2009126557A1 (en) 2009-10-15
US8046500B2 (en) 2011-10-25
US8205015B2 (en) 2012-06-19
US9600184B2 (en) 2017-03-21
US20120005443A1 (en) 2012-01-05

Similar Documents

Publication Publication Date Title
CN102084331A (zh) 在多处理器/多线程环境下协调存储请求的装置、系统和方法
CN102084332B (zh) 将存储请求转换为附加数据存储命令的装置、系统和方法
CN102084330A (zh) 用于有效地映射虚拟地址和物理地址的装置、系统和方法
CN102084360A (zh) 用于确认从数据存储设备读取正确的数据段的装置、系统和方法
CN101501623B (zh) 感知文件系统的块存储系统、装置和方法
CN101689131B (zh) 用于共享的、前端、分布式raid的装置、系统和方法
JP5055125B2 (ja) 種々のサイズの格納デバイスを許容する動的にアップグレード可能な故障許容格納システムおよび方法
CN102598020B (zh) 用于改进的数据去重的装置、系统及方法
CN101147119B (zh) 快闪存储器中的直接数据文件存储实施技术
CN101622606B (zh) 用于作为大容量、非易失性存储器的高速缓存的固态存储器的装置、系统和方法
CN102662795A (zh) 一种分布式存储系统中元数据容错恢复方法
CN103098034A (zh) 用于条件和原子存储操作的装置、系统和方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20110601