CN102084332B - 将存储请求转换为附加数据存储命令的装置、系统和方法 - Google Patents

将存储请求转换为附加数据存储命令的装置、系统和方法 Download PDF

Info

Publication number
CN102084332B
CN102084332B CN200980121161.3A CN200980121161A CN102084332B CN 102084332 B CN102084332 B CN 102084332B CN 200980121161 A CN200980121161 A CN 200980121161A CN 102084332 B CN102084332 B CN 102084332B
Authority
CN
China
Prior art keywords
data
module
storage
resource request
storage resource
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN200980121161.3A
Other languages
English (en)
Other versions
CN102084332A (zh
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.)
Fio Semiconductor Technology Co ltd
Original Assignee
INTELLIGENT IP Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by INTELLIGENT IP Inc filed Critical INTELLIGENT IP Inc
Publication of CN102084332A publication Critical patent/CN102084332A/zh
Application granted granted Critical
Publication of CN102084332B publication Critical patent/CN102084332B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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/0661Format or protocol conversion arrangements
    • 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/0674Disk device
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • HELECTRICITY
    • H05ELECTRIC TECHNIQUES NOT OTHERWISE PROVIDED FOR
    • H05KPRINTED CIRCUITS; CASINGS OR CONSTRUCTIONAL DETAILS OF ELECTRIC APPARATUS; MANUFACTURE OF ASSEMBLAGES OF ELECTRICAL COMPONENTS
    • H05K7/00Constructional details common to different types of electric apparatus
    • H05K7/14Mounting supporting structure in casing or on frame or rack
    • H05K7/1438Back panels or connecting means therefor; Terminals; Coding means to avoid wrong insertion
    • H05K7/1439Back panel mother boards
    • H05K7/1444Complex or three-dimensional-arrangements; Stepped or dual mother boards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1014Compression, i.e. RAID systems with parity using compression techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Abstract

本发明公开了一种将存储请求转换为附加数据存储命令的装置、系统和方法。存储请求接收器模块(202)从请求设备接收存储请求(608)。存储请求(608)用于将数据段(606)存储在数据存储设备(106)上,数据段(606)包括用于数据段(606)的源参数。翻译模块(204)将存储请求(608)翻译为存储命令。至少一条存储命令包括附加数据存储命令(614),其指令数据存储设备(106)将数据段(606)的数据和具有包括虚拟地址的数据的源参数存储在一个或多个附加点(620,630)上。映射模块(206)将数据段(606)的源参数映射到数据存储设备(106)附加数据段(606)的数据包和源参数的位置。

Description

将存储请求转换为附加数据存储命令的装置、系统和方法
相关申请的交叉引用
本申请是下述申请的部分继续申请并要求其优先权:David Flynn等人于2008年4月6日提交的题为“Apparatus,System,and Method for Converting aStorage Request into an Append Data Storage Command”美国专利申请号12/098,433,其通过援引并入本文。
技术领域
本发明涉及数据的存储,并且更具体地,涉及将对数据存储设备的存储请求转换为附加数据存储命令。
背景技术
传统的数据存储设备(例如磁盘驱动器、光盘驱动器等)通常作为随机存取设备运行以存储数据。随机存取通常能够在同一时间内存取序列中的任意元素。这不同于顺序存取,在顺序存取中,数据被顺序地存储且被顺序地访问,从而基于数据的位置,存取时间显著不同。例如,用于存储数据的磁带就是一种顺序存取设备。存取一个数据元素可能耗费不同的时间,这是由于一个数据元素的位置可能离读取头的位置近,而且必须使磁带前进或后退才能到达第二个数据元素,因此,存取另一个数据元素可能消耗更多的时间。由于在随机存取设备中存取每个数据元素的时间需要大约一致,因此,随机存取设备(如存储芯片、磁盘驱动器或固态存储器)作为随机存取设备运行。由于数据存取的可预测性和效率,随机存取是可取的。一些设备(如存储芯片)既支持随机读取又支持随机写入,随机写入通常支持用更新的数据覆盖数据的功能。一些设备(如闪存)支持随机读取,但在数据能够被写入区域之前需要擦除存储器的整个区域(例如:擦除模块或擦除区域)。
通常,文件系统利用初级命令与随机存取存储设备通信。文件系统管理数据的位置。初级命令通常包括命令中的物理地址和数据长度以存储或访问数据。随机存取存储设备中的数据通常可以读-修改-写操作中的更新,其中在特定地址的数据被读取、修改,然后被写入与其存储位置相同的位置。
虽然随机存取设备的概念是可取的,但随机存取可能在某些类型的数据存储中产生问题。例如,随机存取可能造成存储设备中的某些位置比其他位置使用得更多。就这方面而言,随机存取可能在闪存中是有害的,这是因为闪存中的每个存储单元通常仅能使用一定的次数,然后必须对其进行修复,或者存储单元变得不可靠。
发明内容
从上述讨论可知,显然存在对于将存储请求转换为附加数据存储命令的装置、系统和方法的需要。有利地是,这种装置、系统和方法会提供顺序存储的益处,例如甚至是数据的分布性、减少写入时间等等,而同时仿真随机存取。所述装置、系统和方法也允许存储设备仿真随机存取设备,随机存取设备由于其为磁盘驱动器,因而允许文件系统与存储设备相互作用,而不必得知存储设备运行为流模式、顺序的写入存储设备。
响应于现有技术的现状,具体地,响应于现有技术中未被当前可用的数据存储方法所完全解决的问题和需要,本发明被开发出来。因此,本发明被开发以提供一种将存储请求转换为附加数据存储命令的装置、系统和方法,其克服了现有技术中的上述全部或大部分缺点。
将存储请求转换为附加数据存储命令的装置具有配置为功能性的执行下述必要步骤的多个模块:接收存储数据段的存储请求、将存储请求翻译为一条或多条附加数据存储命令和将数据段的存储参数映射到存储创建自数据段的数据的一个或多个位置。在所描述的实施方式中,这些模块包括存储请求接收器模块,用于从请求设备接收存储请求。存储请求用于将文件或对象的数据段存储在数据存储设备上。该存储请求包括一个或多个用于数据段的源参数。源参数包括虚拟地址,其中,虚拟地址不限于逻辑块地址。
该装置包括翻译模块,用于将存储请求翻译成一条或多条存储命令。至少一条存储命令包括附加数据存储命令。每条附加数据存储命令指令数据存储设备将数据段的数据和一个或多个源参数存储在一个或多个附加点上。将一个或多个源参数与数据一起存储,至少一个源参数是虚拟地址。该装置包括映射模块,用于将数据段的一个或多个源参数映射到数据存储设备中的一个或多个位置,数据存储设备在所述一个或多个位置上附加数据段的数据和源参数。
在一种实施方式中,将一个或多个源参数与数据一起存储包括:同时地存储数据和源参数。在另一种实施方式中,将一个或多个源参数与数据一起存储包括:除存储虚拟地址以外,存储一个或多个源参数。在再一种实施方式中,数据被存储为数据包,并且将一个或多个源参数与数据一起存储包括:将源参数存储在数据包包头中。数据包包头与数据包的数据一起存储。
在一种实施方式中,数据在数据存储设备的区域内被顺序地存储,该装置包括存储区域的序列信息,该序列信息相对于何时将数据写入其他区域而识别何时将数据写入该区域。用于装置的存储日志包括区域的序列信息和数据在每个区域中存储的序列。可从区域内的相对位置隐含得出数据存储的序列。在一种实施方式中,翻译模块位于数据存储设备的外部并通过计算机网络将一条或多条附加数据存储命令发送到数据存储设备。
在另一种实施方式中,数据段的数据的物理位置以及与数据存储在一起的源参数包括主要虚拟-物理映射,并且映射模块创建的映射包括次要虚拟-物理映射。在该实施方式中,次要虚拟-物理映射可以是主要映射的变换,该变换用于提升查找性能和效率。在又一种实施方式中,装置包括索引重建模块,用于重建映射模块为数据段创建的次要虚拟-物理映射。索引重建模块使用主要虚拟-物理映射通过利用与数据段的数据一起存储的一个或多个源参数或利用数据存储设备上的存储数据段的数据的物理位置来重建映射。
在一种实施方式中,装置包括存储响应接收器模块,用于从数据存储设备接收一个或多个存储命令响应。数据存储响应包括数据存储设备附加数据段的数据和关联的源参数的一个或多个位置。在该实施方式中,映射模块从一个或多个存储命令响应接收数据存储设备附加数据段的数据和关联的源参数的一个或多个位置。在又一种实施方式中,翻译模块还包括在一条或多条附加数据存储命令中的每一个中的一个或多个附加点的位置,映射模块从翻译模块接收数据存储设备附加数据段的数据的一个或多个位置。
在一种实施方式中,将要存储数据的附加点独立于环境。在又一种实施方式中,附加点是先前存储在数据存储设备上的数据结束之后能够将数据存储在数据存储设备上的下一个位置。在另一种实施方式中,数据顺序地存储在数据存储设备上,从而数据段的每个数据包存储在新的附加点上。在另一种实施方式中,该装置仿真像存储请求所指令的那样存储数据的随机存取、逻辑块存储设备,从而数据段的虚拟地址包括逻辑块地址。在又一种实施方式中,除逻辑块地址之外,源参数还包括虚拟标识符。虚拟标识符识别数据段的文件或对象。
在一种实施方式中,装置包括压缩模块,用于在将数据存储在数据存储设备上之前压缩附加数据存储命令的数据,其中附加数据存储命令与数据段关联。在另一种实施方式中,压缩信息与所压缩的数据一起存储。在另一种实施方式中,每条附加数据存储命令还包括将要与数据段的一个或多个数据包一起被存储的一个或多个源参数。
在一种实施方式中,装置包括命令重新排序模块,用于修正执行两个或多个未完成的附加数据存储命令的序列。在另一种实施方式中,存储请求接收器模块接收两个或多个存储请求,该装置还包括请求重新排序模块,用于重新排列服务两个或多个存储请求的顺序。
在一种实施方式中,存储请求接收器模块在基本上没有数据的情况下接收存储请求。在另一种实施方式中,附加数据存储命在基本上没有数据的情况下被发送给数据存储设备。在另一种实施方式中,一个或多个源参数包括下述各项中的至少一项:与数据段关联的虚拟标识符、设备标识符、分区标识符、数据段的一个或多个数据包和长度、存储请求之前或之后数据段在主机的存储器中所处的一个或多个存储位置、一个或多个存储位置中的一个或多个长度的数据、数据段的属性、数据段的元数据、数据段的控制参数。
在一种实施方式中,源参数包括一个或多个物理存储地址,数据段作为存储请求的结果从所述物理存储地址被读取。在另一种实施方式中,存储请求和一条或多条附加数据存储命令中的至少一个初始化直接存储器存取(DMA)进程或远程直接存储器存取(RDMA)进程,以将数据段的数据转移到数据存储设备。在另一种实施方式中,存储请求接收器模块、翻译模块、存储命令传输模块和映射模块中的一个或多个的至少一部分位于下述设备中的一个或多个内:请求设备、数据存储设备、存储设备控制器以及与请求设备、数据存储设备和存储设备控制器分离的计算设备。
在一种实施方式中,装置包括垃圾收集模块,用于在将存储区域返回给数据存储设备内的可用空间的池以用于后续的数据存储之前,从数据存储设备中识别为恢复的存储区域移动有效数据和关联的源参数,并且从存储区域中擦除数据。在该实施方式中,垃圾收集模块运行为异步后台进程。在该实施方式中,映射模块将有效数据的一个或多个源参数重新映射到数据存储设备附加有效数据和关联的源参数的一个或多个新位置。
在一种实施方式中,一条或多条附加存储命令可以包括下列命令中的一种或多种:集附加点命令、读取命令、擦除命令、复位命令、移动命令、同步命令、清洗命令、读取控制登记命令、修正控制登记命令、程序页命令、擦除命令、转移命令列表命令、请求状态命令。在另一种实施方式中,装置包括响应传输模块,用于将存储请求响应发送给请求设备,存储请求响应包括与存储请求的执行有关的信息。
本发明也提供了一种将存储请求转换为附加数据存储命令的系统。该系统可由数据存储设备和控制数据存储设备的存储控制器实施。具体地,在一种实施方式中,该系统包括存储请求接收器模块,用于从请求设备接收存储请求。存储请求用于将文件或对象的数据段存储在数据存储设备上。该存储请求包括一个或多个用于数据段的源参数。源参数包括虚拟地址,其中虚拟地址不限示逻辑块地址。
该系统包括翻译模块,用于将存储请求翻译成一条或多条存储命令。至少一条存储命令包括附加数据存储命令。每条附加数据存储命令指令数据存储设备将数据段的数据和一个或多个源参数存储在一个或多个附加点上。将一个或多个源参数与数据一起存储,至少一个源参数是虚拟地址。该系统包括映射模块,用于将数据段的一个或多个源参数映射到数据存储设备中的一个或多个位置,数据存储设备在所述一个或多个位置上附加数据段的数据和源参数。
在一种实施方式中,请求设备是通过计算机网络与存储控制器通信的客户端。在另一种实施方式中,存储请求接收器模块、翻译模块、存储命令传输模块和映射模块中的一个或多个独立于客户端运行。在另一种实施方式中,该系统包括服务器,存储控制器位于服务器内。在又一种实施方式中,数据存储设备是固态存储设备,其中数据段的一个或多个数据包存储在固态存储器中。
本发明也提供了一种将存储请求转换为附加数据存储命令的方法。在公开的实施方式中,该方法基本上包括执行上文中相对于所述装置和系统的功能所必须的步骤。在一种实施方式中,该方法包括从请求设备接收存储请求。存储请求是将文件或对象的数据段存储在数据存储设备上的请求。存储请求包括用于数据段的一个或多个源参数。源参数包括虚拟地址,其中,虚拟地址不限于逻辑块地址。
该方法包括将存储请求翻译成一条或多条存储命令。至少一条存储命令包括附加数据存储命令。每条附加数据存储命令指令数据存储设备将数据段的数据和一个或多个源参数存储在附加点上。将一个或多个源参数与数据一起存储,至少一个源参数是虚拟地址。该方法包括将数据段的一个或多个源参数映射到数据存储设备中的一个或多个位置,数据存储设备在所述一个或多个位置上附加数据段的数据和源参数。
本说明书全文所提到的特征、优点或者类似措辞并不意味着可利用本发明实现的所有的特征和优点应该或本来就包含在本发明的任一单独的实施方式中。更确切地,涉及特征和优点的措辞被理解为意味着:与实施方式一起描述的特定的特征、优点或者特点包括在本发明的至少一种实施方式中。因此,在本说明书全文中,关于特征、优点和类似措辞的讨论可(但未必)涉及同一种实施方式。
此外,描述的本发明的特征、优点和特点可采用任何合适的方式与一个或多个实施方式结合。相关领域的技术人员可意识到本发明可在不具备特定实施方式的一个或多个具体特征或优点的情况下被实施。在其他例子中,可意识到附加特征和优点可出现在某些实施方式中,而不是在本发明的所有实施方式中都出现。
通过下面的说明和附加的权利要求,本发明的这些特征和优点将变得更加充分的显而易见,或者可以通过按下文所阐述的本发明的实践而获悉。
附图说明
为了更容易地理解本发明的优点,将参考附图中示出的具体实例方式详细说明上文中简述的本发明的实施方式。应当理解,这些附图仅描绘了本发明的典型实施方式,因此不能将其理解为对本发明的限制,将结合附图具体且详细地描述和解释本发明,附图中:
图1是示出了根据本发明的将存储请求转换为附加数据命令的系统的一种实施方式的示意性框图;
图2是示出了根据本发明的将存储请求转换为附加数据命令的装置的一种实施方式的示意性框图;
图3是示出了根据本发明的将存储请求转换为附加数据命令的替换装置的一种实施方式的示意性框图;
图4是示出了根据本发明的将存储请求转换为附加数据命令的方法的一种实施方式的示意性流程图;
图5是示出了根据本发明的将存储请求转换为附加数据命令的另一种方法的一种实施方式的示意性流程图;
图6是根据本发明的将存储请求转换为附加数据命令的实例的示意性框图;
图7是根据本发明的用于有效地映射虚拟地址和物理地址的装置的一种实施方式的示意性框图;
图8是根据本发明的用于有效地映射虚拟地址和物理地址的装置的另一种实施方式的示意性框图;
图9是根据本发明的用于有效地映射虚拟地址和物理地址的方法的一种实施方式的示意性流程图;
图10是根据本发明的用于有效地映射虚拟地址和物理地址的方法的另一种实施方式的示意性流程图;
图11是根据本发明的正向映射和反向映射的实例的示意性框图;
图12是示出了根据本发明的用于协调存储请求的装置的一种实施方式的示意性框图;
图13是示出了根据本发明的用于协调存储请求的装置的另一种实施方式的示意性框图;
图14是示出了根据本发明的用于协调存储请求的方法的一种实施方式的示意性流程图;
图15是示出了根据本发明的用于协调存储请求的方法的另一种实施方式的示意性流程图;
图16A是示出了根据本发明的用于协调存储请求的装置的实例的示意性框图的第一部分;
图16B是示出了根据本发明的用于协调存储请求的装置的实例的示意性框图的第二部分;
图16C是示出了根据本发明的用于协调存储请求的装置的实例的示意性框图的第三部分。
具体实施方式
为了更显著地强调功能性单元运行的独立性,在本说明书中描述的许多功能性单元已被标示为模块。例如,模块可作为硬件电路来实施,所述硬件电路包括自定义VLSI电路、门阵列或成品半导体(例如逻辑芯片、晶体管或其他分立元件)。模块也可在可编程硬件设备(如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备或类似设备)内实施。
模块还可在由不同类型的处理器运行的软件中实施。例如,可执行代码的识别模块可以包括一个或多个计算机指令物理块或逻辑块,该计算机指令被作为对象、程序或函数来组织。然而,识别模块的可执行文件不必在物理上位于一起,但是可包括存储在不同位置的不同命令,当这些命令在逻辑上连接在一起时,所述命令包括所述模块并实现所述模块的指定目标。
当然,可执行代码的模块可以为一个或许多指令,并且甚至可以分布在若干不同的代码段中、分布在不同的程序中并可分布在多个存储设备中。类似地,可以在此在模块内识别并示出运算数据,并且可以以任何合适的形式体现所述运算数据并在任意合适类型的数据结构中组织所述运算数据。所述运算数据可作为单数据集收集,或者可以分布在不同的位置(包括不同的存储设备),并且可在系统或网络中至少部分地仅作为电信号存在。当模块或模块的部分在软件中实施时,软件部分被存储在一个或多个计算机可读媒体上。
本说明书全文所提到的“一种实施方式”、“实施方式”或类似的措辞意味着与实施方式一起描述的特定的特征、结构或特点包括在本发明的至少一种实施方式中。因此,在本说明书全文中,短语“在一种实施方式中”、“在实施方式中”及类似措辞的出现可(但未必都)涉及同一实施方式。
提及的计算机可读媒介可采取任何能够在数字处理装置上存储机器可读指令的形式。计算机可读媒介可通过下述设备体现:传输线、光盘、数字视频光盘、磁带、伯努利驱动器、磁盘、穿孔卡、闪存、集成电路或其他数字处理装置存储设备。
此外,描述的本发明的特征、结构或特点可以以任何合适的方式合并在一种或多种实施方式中。在下文的说明中,提供了大量的具体细节以全面理解本发明的实施方式,所述具体细节比如编程、软件模块、用户选择、网络事务、数据库查询、数据库结构、硬件模块、硬件电路、硬件芯片等等的实例。然而,相关技术领域的技术人员可认识到:本发明在可在不具备一个或多个具体细节的情况下被实施,或者本发明可结合其他方法、组件、材料等实施。在其他例子中,并没有显示或描述公知的结构、材料或操作以使本发明变得清晰。
一般而言,此处所包括的示意性流程图作为逻辑流程图示出。同样的,描述的顺序和所标记的步骤表明了所示出的方法的一种实施方式。可以设想在功能上、逻辑上或效果上与所示方法的一个或多个步骤或其部分相同的其他步骤和方法。此外,所用的格式和符号是用于解释方法的逻辑步骤并且不应理解为是对该方法的限制。尽管在流程图中可使用不同的箭头类型和直线类型,但是不应将其理解为对相应方法的范围的限制。事实上,一些箭头或其他连接符可用于仅指示方法的逻辑流程。例如,箭头可指示在所示方法所列举的步骤之间的不明确的时间阶段的等待或监视期。此外,特定方法的顺序可以(但未必)严格遵照所示出的相应步骤的顺序。
图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的文件系统已知的文件名、对象名或其他标识符。
在逻辑地址与逻辑地址空间和虚拟地址与虚拟地址空间之间做出区别。在此文本中,虚拟地址空间拟包含间接编址的最大可能范围。如本文所用的,虚拟地址空间可同时包括:一个或多个虚拟地址空间、一个或多个逻辑地址空间、一个或多个存储空间、一个或多个逻辑块地址空间、一个或多个混合块地址空间等等。
例如,客户端可以运行多个虚拟操作系统。在这种实施方式中,每个虚拟操作系统可具有虚拟存储空间。每一个虚拟存储空间可以根据设备的虚拟地址空间和虚拟-物理映射被映射到存储在存储设备中的数据。在另一个实例中,若干客户端中的对象可以以多对一的关系独立地映射到相同的存储数据,该相同的存储数据称为具有对客户端的唯一虚拟地址的共享数据。尽管此处的实例示出了一对一的关系,但方法、装置和系统将支持多对一、一对多、甚至是多对多的虚拟-物理的地址映射。
通过支持识别、地址、长度和元数据转换中的广泛间接性,虚拟-物理映射方法将支持稀疏编址(物理地址空间的过量供应)、瘦供给(thinprovisioning)、虚拟分区和数据转换(例如压缩、加密)。
此处,作为一种约定,虚拟ID唯一地标识在客户端的虚拟空间内存储的数据实体。虚拟地址更具体地编址虚拟实体的数据。例如,虚拟地址可包括虚拟ID和在数据集内的偏移量。在另一实例中,虚拟地址可包括虚拟ID和虚拟实体内的索引,其中索引可以是非统一的(例如,长度不同)记录结构中的记录。
在一种实施方式中,装置200仿真逻辑块存储设备,源参数包括一个或多个逻辑块地址,其中,请求设备通过存储请求请求数据段以将其存储。在该实施方式中,虚拟地址可包括逻辑块地址。例如,如果存储请求是逻辑块存储请求,请求设备可指定数据段将要存储在数据存储设备106中的位置。逻辑块地址可包括诸如RAID群组号、数据存储设备标识符、分区、柱面号、扇区、偏移量等的信息。本领域技术人员会认识到可包括在逻辑块地址中的其他元素。
存储请求可包括将数据段存储在不止一个位置上的请求,或者存储请求可包括将数据段的某些部分存储在不止一个位置上的请求,从而存储请求可包括不止一个逻辑块地址。当存储请求包括逻辑块地址时,存储请求通常也包括对应于一个或多个逻辑块地址的一个或多个偏移量和数据长度。偏移量和数据长度可暗示逻辑块是否具有固定尺寸。通常,偏移量是指数据段开始进入文件或对象有多远,通常从文件或对象的形头起算。数据长度通常包括存储设备将有多大容量被与逻辑块地址关联的数据段或数据段的部分占据。通常,将以可被存储控制器104和数据存储设备106识别的一些单位表示偏移量和数据长度。例如,偏移量和数据长度可以表示为字节、块、扇区或其他用于分割数据存储设备106的单位。本领域技术人员会认识到用于全部或部分数据段的偏移量和数据长度的其他表示方法。
系统100包括将存储请求翻译为一条或多条存储命令的翻译模块204,其中至少一条存储命令是附加数据存储命令。每条附加数据存储命令指令数据存储设备106将创建自数据段的数据和一个或多个源参数存储在一个或多个附加点上。源参数与数据一起存储,而且至少一个源参数是虚拟地址。
优选地,数据存储设备106将数据存储为数据包。数据包包括数据段的数据和数据包包头。在一种实施方式中,数据包包头包括源参数。在另一种实施方式中,源参数与数据同时存储。例如,数据可顺序地存储在数据存储设备106的一个位置上的附加点中,而源参数同时顺序地存储在数据存储设备106中的另一位置中。在该实施方式中,源参数和数据存储的顺序可用于在读操作或数据和源参数被检索的其他操作期间配对数据和源参数。
在一种实施方式中,数据存储设备106通过下述操作顺序地存储数据(或数据包):将数据存储在页、分区或其他指定区域中;将附加点移动到紧随先前存储的数据末端的下一个可用地址;将数据存储在附加点,再次将附加点移动到紧随先前存储的数据末端的下一个可用地址等等。数据存储在页、分区等中,直到页或分区满为止,然后附加点移动,数据存储在另一页、分区等等。附加点可以响应于具体请求由存储设备102独立地移动。
顺序存储数据对于固态存储设备来说是尤其有益的,这是因为其甚至允许分布式的数据以防止出现比其他地址写入更频繁的热点或热地址。由于顺序存储数据省去了搜寻时间、省去了读-修改-写操作和相关擦除操作并由此增加了固态存储设备的数据可靠性和有效寿命,因此,顺序存储数据对于固态存储设备来说是尤其有益。由于常规固态存储设备对存储在固态存储设备中任意位置的数据的读取访问时间基本上相同,固态存储设备中的顺序存储也通常不会不利地影响读取访问时间。这种特性允许数据存储设备106仿真随机存取设备以有效地消除由于写入搜寻次数而产生的恢复时间,并增加了数据存储设备106的可靠性和有效寿命,而不会不利地影响读取性能。
顺序存储对于数据存储设备106也可具有其他好处。顺序存储相对于存取时间的益处在下述文献中有全面的描述:题为“Apparatus,System,andMethod for Managing Commands of Solid-State Storage Using Bank Interleave”的美国专利申请号11/952,095;和题为“Apparatus,System,and Method forStorage 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在写入操作中从主机的存储器中取出数据并在读取操作中将数据推入主机。这样做是有利的,因为主机不需要知道数据将要被存储在数据存储设备106的哪个位置。主机可以仅告知存储设备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以存储两个数据包。数据1610和数据2612。
数据当前所存储的页616包括有效数据618。在其他页中可包括有效或无效数据。一条附加数据存储命令614将数据1610存储在附加点1620中,附加点1620紧随数据最新存储的位置622。数据包数据1610随后存储在当前页616的末端,如624所示。
第二附加数据存储命令614将数据2612存储在数据将要被存储的下一页626上。在一种实施方式中,下一页626位于不同于数据1610所存储的页616的擦除块中。在这种实施方式中,存储在附加点1620的数据可流到下一页,而不需要必须在下一页的起始处设置新的附加点,除非下一页626位于另一擦除块中。在另一种实施方式中,下一页626是邻近数据1610所存储的页616的页,或者在某种程序上是逻辑上的下一页,但是新的附加点2630需要位于下一页626的起始处。本领域技术人员会认识到何时第二附加点630被要求继续存储数据。下一页626不包括有效数据628,这是由于下一页626已被擦除或存储空间恢复进程已经确定下一页626中不再有有效数据。第二附加数据存储命令614将数据包数据2612存储在附加点2630上,如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中。
例如,时间戳可以与检查点信息一起存储。然后,时间戳可以与数据存储设备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 Methodfor Managing Data Using a Data Pipeline”美国专利申请中所述的,通过引用将该文献并入本文中。
在一种实施方式中,存储空间恢复模块706还更新反向映射以指示写入新位置的有效数据在选定的擦除区域中为无效,并且基于写入新位置的有效数据更新正向和反向映射。在另一种实施方式中,存储空间恢复模块706与映射更新模块810(下文将对其描述)协同作用以更新正向和反向映射。
在优选实施方式中,存储空间恢复模块706相对于与存储请求和其他命令相关联的数据存储和检索自主地运行。包括在存储空间恢复模块706中的存储空间恢复操作在上文中引用的存储空间恢复申请有更详细的描述。
在一种实施方式中,装置800包括映射更新模块810,映射更新模块810响应于数据存储设备106被改变的内容更新正向映射和/或反向映射。在又一种实施方式中,基于数据存储设备106存储数据的位置,映射更新模块810从数据存储设备106接收将所存储数据的物理地址链接到虚拟地址的信息。在该实施方式中,存储数据包的位置可以是不可用的,直到数据存储设备106存储了数据包。
例如,来自数据段的数据被压缩以形成数据包,每个数据包的大小可以是未知的,直到压缩之后。数据存储设备106顺序地存储数据,一旦数据包被压缩和存储,附加被设定到存储的数据包之后的位置,下一数据包被存储。一旦得知附加点,数据存储设备106随后发回对应于存储下一数据包的附加点的物理地址的报告。映射更新模块810使用所报告的存储的数据包的物理地址和关联的数据长度更新正向和反向映射。本领域技术人员会认识到映射更新模块810的其他实施方式以基于存储在数据存储设备106上的数据的物理地址和关联的数据长度更新正向和反向映射。
图9是根据本发明的用于有效地映射虚拟地址和物理地址的方法900的一种实施方式的示意性流程图。方法900开始,在步骤902,正向映射模块702使用正向映射识别数据段的数据的一个或多个物理地址。从数据段的一个或多个虚拟地址识别物理地址,在指令数据存储设备106的存储请求中识别数据段。正向映射包括一个或多个虚拟地址到数据存储设备106中存储的数据的一个或多个物理地址之间的映射。虚拟地址是虚拟地址空间内的离散地址,其中虚拟地址稀疏地位于虚拟地址空间。
在步骤904,反向映射模块704使用反向映射从物理地址确定数据段的虚拟地址。反向映射将一个或多个物理地址映射到一个或多个虚拟地址。反向映射中的物理地址也利用指针、链接等与正向映射相关联。反向映射中的虚拟地址对应于与存储在数据存储设备106上的数据相关的一个或多个数据段。反向映射也将数据存储设备106映射到擦除区域,从而反向映射的一部分跨越擦除区域。数据存储设备106的擦除区域在存储空间恢复操作中被一起擦除。存储空间恢复操为将来存储数据恢复擦除区域。
在步骤906,存储空间恢复模块706在恢复擦除区域的操作之前使用反向映射识别擦除区域中的有效数据,方法900结束。存储空间恢复模块706或其他与存储空间恢复关联的模块在恢复操作之前将识别的有效数据移动到另一擦除区域。注意到方法900的步骤902、904、906平行示出,这是因为步骤902、904、906可以以任意顺序独立地实施。
图10是根据本发明的用于有效地映射虚拟地址和物理地址的方法1000的另一种实施方式的示意性流程图。方法1000开始,在步骤1002,存储空间恢复模块706通过下述方法确定擦除区域中的有效数据的数量:扫描用于擦除区域的反向映射以确定有效数据相对于擦除区域的存储容量的数量。在步骤1004,存储空间恢复模块706确定是否要计算另一擦除区域。如果在步骤1004,存储空间恢复模块706确定要计算另一擦除区域,那么在步骤1002,存储空间恢复模块706为下一擦除区域确定有效数据的量。
如果在步骤1004,存储空间恢复模块706确定不计算另一擦除区域,则在步骤1006,存储空间恢复模块706通过利用选择标准选择恢复的擦除区域,选择标准可包括利用擦除区域中的无效数据的数量。在步骤1008,存储空间恢复模块706识别选定的擦除区域中的有效数据并在步骤1010中,将有效数据移动到当前写入数据的擦除区域中。在步骤1012,映射更新模块810随后更新正向和反向映射以表明有效数据已被写入数据存储设备106中的另一位置。
在一种实施方式中,在步骤1014,存储空间恢复模块706擦除选定的擦除区域并将选定的存储区域标记为可用于数据存储,方法1000结束。在另一种实施方式中,一旦在步骤1010,存储空间恢复模块706将选定的擦除区域中的所有有效数据写入另一位置,在步骤1014,存储空间恢复模块706将选定的存储区域标记为可用于数据存储,而不需要擦除。
图11是根据本发明的正向映射1104和反向映射1122的实例的示意性框图。通常,装置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小于根节点1108的虚拟地址205-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包括条目ID1124、物理地址1126、与存储在数据存储设备106的物理地址1126上的数据(在这种情况下,数据被压缩)相关联的数据长度1128、有效标签1130、虚拟地址1132(可选)、与虚拟地址1132相关联的数据长度1134(可选)和其他杂项数据1136。反向映射1122被组织到擦除块(擦除区域)中。在该实例中,对应于选定的节点1118的条目1120位于擦除块n1138中。擦除块n1138在擦除块n-11140之后,擦除块n1138之后是擦除块n+11142(擦除块n-1和擦除块n+1中的内容未示出)。擦除块可以是包括预定数量的页的一些擦除区域。擦除区域是数据存储设备106上在存储恢复操作中被一起擦除的区域。
条目ID1124被示出为是反向映射1122的一部分,条目ID1124可以是地址、虚拟链接或将反向映射1122中的条目链接到正向映射1104中的节点的其他手段。物理地址1126是数据存储设备106中对应于所搜索的虚拟地址1106的数据所驻留的地址。与物理地址1126关联的数据长度1128识别存储在物理地址1126上的数据包的长度。(为简便起见,物理地址1126和数据长度1128可被一起称为目标参数1144,虚拟地址1132和关联的数据长度可被称为源参数1146)。在这个实例中,目标参数1144的数据长度1128不同于源参数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由擦除块或擦除区域设置,从而遍历与擦除块(如擦除块n1138)关联的映射的一部分允许存储空间恢复模块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支持多处理器或多线程运行的装置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)和解锁索引(步骤1514)创建附加数据存储命令(步骤1510)。
一旦数据存储设备106接收到附加命令和序列号,在步骤1516,数据存储设备106初始化DMA进程以将与写入请求关联的数据转移到数据存储设备106。在步骤1518,数据存储设备106还阻止读取将要被存储的该数据并在步骤1520处理接收的数据。处理数据可能包括在首部加包头、压缩数据、加密数据、创建纠错码(ECC)等。尽管只示出了单重DMA转移,但处理也可包括多重DMA转移。随后,在步骤1522,数据存储设备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 (29)

1.一种用于顺序存储数据的装置,该装置包括:
存储请求接收器模块,用于从请求设备接收存储请求,该存储请求包括用于数据段的一个或多个源参数,源参数包括虚拟地址;
翻译模块,用于将存储请求翻译成一条或多条附加数据存储命令,每条附加数据存储命令指令固态数据存储设备将数据段的数据顺序地存储在能够用于重建索引的顺序日志的一个或多个附加点上,索引包括物理地址和源参数之间的映射;及
映射模块,用于将数据段的一个或多个源参数映射到固态数据存储设备上的一个或多个位置,其中固态数据存储设备在所述一个或多个位置上附加数据段的数据和源参数;
索引重建模块,用于从存储在检查点之后的数据包到最新存储的数据包顺序地在数据包中跟踪以将索引更新到当前状态。
2.如权利要求1所述的装置,其中,每条附加数据存储命令指令固态数据存储设备将数据段的数据与一个或多个源参数一起存储在一个或多个附加点。
3.如权利要求2所述的装置,其中,将一个或多个源参数与数据一起存储包括:除存储虚拟地址以外,存储一个或多个源参数。
4.如权利要求2所述的装置,其中,数据被存储为数据包,并且将一个或多个源参数与数据一起存储包括:将源参数存储在数据包包头中,数据包包头与数据包的数据一起存储。
5.如权利要求1所述的装置,还包括垃圾收集模块,用于恢复固态数据存储设备的擦除区域,其中映射模块将有效数据的一个或多个源参数重新映射到固态数据存储设备附加有效数据和关联的源参数的一个或多个新位置。
6.如权利要求1所述的装置,其中,所述装置将数据段顺序地存储在固态数据存储设备的区域内,其中所述装置还存储该区域的序列信息,该序列信息相对于何时将数据写入其他区域而识别何时将数据写入该区域。
7.如权利要求1所述的装置,其中,翻译模块位于固态数据存储设备的外部并通过计算机网络将一条或多条附加数据存储命令发送到固态数据存储设备。
8.如权利要求1所述的装置,还包括存储响应接收器模块,用于从固态数据存储设备接收一个或多个存储命令响应,数据存储响应包括固态数据存储设备附加数据段的数据和关联的源参数的一个或多个位置,其中,映射模块从一个或多个存储命令响应接收固态数据存储设备附加数据段的数据和关联的源参数的一个或多个位置。
9.如权利要求1所述的装置,其中,翻译模块还包括存储有在一条或多条附加数据存储命令中的每一个中的一个或多个附加点的位置的存储部,映射模块从翻译模块接收固态数据存储设备附加数据段的数据的一个或多个位置。
10.如权利要求1所述的装置,其中,该装置像存储请求所指令的那样仿真存储数据的随机存取、逻辑块存储设备,其中数据段的虚拟地址包括逻辑块地址。
11.如权利要求10所述的装置,其中,除逻辑块地址之外,源参数还包括虚拟标识符,虚拟标识符识别数据段的文件或对象。
12.如权利要求1所述的装置,还包括压缩模块,用于在将数据存储在固态数据存储设备上之前压缩附加数据存储命令的数据,附加数据存储命令与数据段关联。
13.如权利要求12所述的装置,其中,压缩信息与所压缩的数据一起存储。
14.如权利要求1所述的装置,还包括命令重新排序模块,用于修正执行两个或多个未完成的附加数据存储命令的序列。
15.如权利要求1所述的装置,其中,存储请求接收器模块接收两个或多个存储请求,所述的装置还包括请求重新排序模块,用于重新排列服务两个或多个存储请求的序列。
16.如权利要求1所述的装置,其中,存储请求接收器模块在没有数据的情况下接收存储请求。
17.如权利要求1所述的装置,其中,附加数据存储命令在没有数据的情况下被发送给固态数据存储设备。
18.如权利要求1所述的装置,其中,一个或多个源参数还包括下述各项中的至少一项:与数据段关联的虚拟标识符、设备标识符、分区标识符、数据段的一个或多个数据包的长度、存储请求之前或之后数据段在主机的存储器中所处的一个或多个存储位置、一个或多个存储位置中的一个或多个长度的数据、数据段的属性、数据段的元数据和数据段的控制参数。
19.如权利要求1所述的装置,其中,源参数包括一个或多个物理存储地址,数据段作为存储请求的结果从所述物理存储地址被读取。
20.如权利要求19所述的装置,其中,存储请求和一条或多条附加数据存储命令中的至少一个初始化直接存储器存取(DMA)进程或远程直接存储器存取(RDMA)进程以将数据段的数据转移到固态数据存储设备。
21.如权利要求1所述的装置,其中,存储请求接收器模块、翻译模块、存储命令传输模块和映射模块中的一个或多个的至少一部分位于下述设备中的一个或多个内:请求设备、固态数据存储设备、存储设备控制器以及与请求设备、固态数据存储设备和存储设备控制器分离的计算设备。
22.如权利要求1所述的装置,其中,一条或多条附加数据存储命令还包括下列命令中的一种或多种:集附加点命令、读取命令、擦除命令、复位命令、移动命令、同步命令、清洗命令、读取控制登记命令、修正控制登记命令、程序页命令、擦除命令、转移命令列表命令和请求状态命令。
23.如权利要求1所述的装置,还包括响应传输模块,用于将存储请求响应发送给请求设备,存储请求响应包括与存储请求的执行有关的信息。
24.一种用于顺序存储数据的系统,该系统包括:
数据存储设备;和
连接至数据存储设备的存储控制器,其中存储控制器配置成包括:
存储请求接收器模块,用于从请求设备接收存储请求,以将文件或对象的数据段存储在数据存储设备上,其中该存储请求包括用于数据段的一个或多个源参数;
翻译模块,用于将存储请求翻译成一条或多条存储命令,至少一条存储命令包括附加数据存储命令,每条附加数据存储命令指令数据存储设备将数据段的数据顺序地存储在能够用于重建索引的顺序日志的一个或多个附加点上,索引包括物理地址和源参数之间的映射;及
映射模块,用于将数据段的一个或多个源参数映射到数据存储设备中的一个或多个位置,数据存储设备在所述一个或多个位置上附加数据段的数据;
索引重建模块,用于从存储在检查点之后的数据包到最新存储的数据包顺序地在数据包中跟踪以将索引更新到当前状态。
25.如权利要求24所述的系统,其中,存储控制器配置成通过计算机网络连接至请求设备。
26.如权利要求25所述的系统,其中,每条附加数据存储命令指令数据存储设备来在附加点上存储一个或多个源参数和数据。
27.如权利要求24所述的系统,还包括服务器,其中存储控制器位于服务器内。
28.如权利要求24所述的系统,其中,数据存储设备包括固态存储设备,其中数据段的数据作为一个或多个数据包存储在固态存储设备中。
29.一种用于顺序存储数据的方法,所述方法包括:
从请求设备接收存储请求,以将数据段存储在数据存储设备上,其中存储请求包括虚拟地址;
将存储请求翻译成一条或多条存储命令,至少一条存储命令包括附加数据存储命令,每条附加数据存储命令指令数据存储设备将数据段的数据顺序地存储在能够用于重建索引的顺序日志的一个或多个附加点上,索引包括物理地址和源参数之间的映射;
将虚拟地址映射到数据存储设备中的一个或多个位置,数据存储设备在所述一个或多个位置上附加数据段的数据;
由索引重建模块从存储在检查点之后的数据包到最新存储的数据包顺序地在数据包中跟踪以将索引更新到当前状态。
CN200980121161.3A 2008-04-06 2009-04-06 将存储请求转换为附加数据存储命令的装置、系统和方法 Active CN102084332B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/098,433 US8151082B2 (en) 2007-12-06 2008-04-06 Apparatus, system, and method for converting a storage request into an append data storage command
US12/098,433 2008-04-06
PCT/US2009/039673 WO2009126581A1 (en) 2008-04-06 2009-04-06 Apparatus, system, and method for converting a storage request into an append data storage command

Publications (2)

Publication Number Publication Date
CN102084332A CN102084332A (zh) 2011-06-01
CN102084332B true CN102084332B (zh) 2015-01-07

Family

ID=40722854

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980121161.3A Active CN102084332B (zh) 2008-04-06 2009-04-06 将存储请求转换为附加数据存储命令的装置、系统和方法

Country Status (6)

Country Link
US (2) US8151082B2 (zh)
EP (1) EP2271978B1 (zh)
JP (1) JP5431453B2 (zh)
KR (2) KR101628675B1 (zh)
CN (1) CN102084332B (zh)
WO (1) WO2009126581A1 (zh)

Families Citing this family (318)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8443134B2 (en) 2006-12-06 2013-05-14 Fusion-Io, Inc. Apparatus, system, and method for graceful cache device degradation
US8719501B2 (en) * 2009-09-08 2014-05-06 Fusion-Io Apparatus, system, and method for caching data on a solid-state storage device
US8489817B2 (en) 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
US8706968B2 (en) 2007-12-06 2014-04-22 Fusion-Io, Inc. Apparatus, system, and method for redundant write caching
US8296337B2 (en) 2006-12-06 2012-10-23 Fusion-Io, Inc. Apparatus, system, and method for managing data from a requesting device with an empty data token directive
US9104599B2 (en) 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
CN101178933B (zh) * 2007-12-05 2010-07-28 苏州壹世通科技有限公司 一种闪存阵列装置
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
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
US9208108B2 (en) * 2008-12-19 2015-12-08 Nvidia Corporation Method and system for improved flash controller commands selection
US8732350B2 (en) * 2008-12-19 2014-05-20 Nvidia Corporation Method and system for improving direct memory access offload
US8694750B2 (en) * 2008-12-19 2014-04-08 Nvidia Corporation Method and system for data structure management
US8055816B2 (en) * 2009-04-09 2011-11-08 Micron Technology, Inc. Memory controllers, memory systems, solid state drives and methods for processing a number of commands
US8468293B2 (en) 2009-07-24 2013-06-18 Apple Inc. Restore index page
US9218349B2 (en) * 2009-07-27 2015-12-22 International Business Machines Corporation Method and system for transformation of logical data objects for storage
WO2011021237A1 (en) * 2009-08-20 2011-02-24 Hitachi,Ltd. Storage subsystem and its data processing method
WO2011024239A1 (en) * 2009-08-31 2011-03-03 Hitachi, Ltd. Storage system having plurality of flash packages
US9223514B2 (en) 2009-09-09 2015-12-29 SanDisk Technologies, Inc. Erase suspend/resume for memory
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
EP2476039B1 (en) 2009-09-09 2016-10-26 SanDisk Technologies LLC Apparatus, system, and method for power reduction management in a storage device
JP5518197B2 (ja) * 2009-09-09 2014-06-11 フュージョン−アイオー・インコーポレーテッド ストレージを割り当てるための装置、システム、および方法
US8683293B2 (en) * 2009-12-16 2014-03-25 Nvidia Corporation Method and system for fast two bit error correction
US20110161553A1 (en) * 2009-12-30 2011-06-30 Nvidia Corporation Memory device wear-leveling techniques
US9594675B2 (en) * 2009-12-31 2017-03-14 Nvidia Corporation Virtualization of chip enables
JP5066209B2 (ja) 2010-03-18 2012-11-07 株式会社東芝 コントローラ、データ記憶装置、及びプログラム
US9582431B2 (en) * 2010-03-22 2017-02-28 Seagate Technology Llc Storage address space to NVM address, span, and length mapping/converting
US9507827B1 (en) * 2010-03-25 2016-11-29 Excalibur Ip, Llc Encoding and accessing position data
US8577986B2 (en) 2010-04-02 2013-11-05 Microsoft Corporation Mapping RDMA semantics to high speed storage
WO2011143628A2 (en) 2010-05-13 2011-11-17 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
US8725934B2 (en) 2011-12-22 2014-05-13 Fusion-Io, Inc. Methods and appratuses for atomic storage operations
WO2012016089A2 (en) 2010-07-28 2012-02-02 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
US8850114B2 (en) 2010-09-07 2014-09-30 Daniel L Rosenband Storage array controller for flash-based storage devices
US8984216B2 (en) 2010-09-09 2015-03-17 Fusion-Io, Llc Apparatus, system, and method for managing lifetime of a storage device
JPWO2012039143A1 (ja) * 2010-09-21 2014-02-03 三菱電機株式会社 Dmaコントローラ及びデータ読出装置
US9465728B2 (en) 2010-11-03 2016-10-11 Nvidia Corporation Memory controller adaptable to multiple memory devices
US9208071B2 (en) 2010-12-13 2015-12-08 SanDisk Technologies, Inc. Apparatus, system, and method for accessing memory
US10817421B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent data structures
US10817502B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent memory management
US9218278B2 (en) 2010-12-13 2015-12-22 SanDisk Technologies, Inc. Auto-commit memory
US20120239860A1 (en) 2010-12-17 2012-09-20 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US9092337B2 (en) 2011-01-31 2015-07-28 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for managing eviction of data
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
US9201677B2 (en) 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
US9141527B2 (en) 2011-02-25 2015-09-22 Intelligent Intellectual Property Holdings 2 Llc Managing cache pools
US9563555B2 (en) 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
WO2012129191A2 (en) 2011-03-18 2012-09-27 Fusion-Io, Inc. Logical interfaces for contextual storage
US9298550B2 (en) * 2011-05-09 2016-03-29 Cleversafe, Inc. Assigning a dispersed storage network address range in a maintenance free storage container
WO2012168960A1 (en) * 2011-06-07 2012-12-13 Hitachi, Ltd. Semiconductor storage apparatus and method of controlling semiconductor storage apparatus
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
CN102882699B (zh) * 2011-07-14 2015-07-29 华为技术有限公司 边缘节点的分配方法和装置及边缘节点控制器
CN102916902B (zh) * 2011-08-03 2017-09-15 南京中兴软件有限责任公司 数据存储方法及装置
US8700834B2 (en) * 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
JP5816303B2 (ja) * 2011-09-13 2015-11-18 株式会社日立製作所 フラッシュメモリを含むストレージシステム、及び記憶制御方法
US8593866B2 (en) 2011-11-11 2013-11-26 Sandisk Technologies Inc. Systems and methods for operating multi-bank nonvolatile memory
US8966172B2 (en) 2011-11-15 2015-02-24 Pavilion Data Systems, Inc. Processor agnostic data storage in a PCIE based shared storage enviroment
US20130238900A1 (en) 2011-12-12 2013-09-12 Cleversafe, Inc. Dispersed storage network secure hierarchical file directory
US9430286B2 (en) 2011-12-12 2016-08-30 International Business Machines Corporation Authorizing distributed task processing in a distributed storage network
US10176045B2 (en) 2011-12-12 2019-01-08 International Business Machines Corporation Internet based shared memory in a distributed computing system
US8898542B2 (en) * 2011-12-12 2014-11-25 Cleversafe, Inc. Executing partial tasks in a distributed storage and task network
US10133662B2 (en) 2012-06-29 2018-11-20 Sandisk Technologies Llc Systems, methods, and interfaces for managing persistent data of atomic storage operations
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
KR101888074B1 (ko) * 2012-01-09 2018-08-13 삼성전자주식회사 저장 장치 및 불휘발성 메모리 장치, 그리고 그것의 동작 방법
US9767032B2 (en) 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
US10359972B2 (en) 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
US9652182B2 (en) 2012-01-31 2017-05-16 Pavilion Data Systems, Inc. Shareable virtual non-volatile storage device for a server
US9020912B1 (en) * 2012-02-20 2015-04-28 F5 Networks, Inc. Methods for accessing data in a compressed file system and devices thereof
US9053008B1 (en) 2012-03-26 2015-06-09 Western Digital Technologies, Inc. Systems and methods for providing inline parameter service in data storage devices
US8918392B1 (en) * 2012-03-29 2014-12-23 Amazon Technologies, Inc. Data storage mapping and management
US8935203B1 (en) 2012-03-29 2015-01-13 Amazon Technologies, Inc. Environment-sensitive distributed data management
US8832234B1 (en) 2012-03-29 2014-09-09 Amazon Technologies, Inc. Distributed data storage controller
US8930364B1 (en) 2012-03-29 2015-01-06 Amazon Technologies, Inc. Intelligent data integration
US10142417B2 (en) * 2012-04-17 2018-11-27 Nimbix, Inc. System and method for managing heterogeneous data for cloud computing applications
US9973566B2 (en) 2013-11-17 2018-05-15 Nimbix, Inc. Dynamic creation and execution of containerized applications in cloud computing
US8775576B2 (en) 2012-04-17 2014-07-08 Nimbix, Inc. Reconfigurable cloud computing
CN104321759B (zh) * 2012-05-25 2018-03-13 华为技术有限公司 高速分布存储器系统中的多客户端多存储器控制方法和设备
CN103455280B (zh) * 2012-05-31 2016-12-14 国际商业机器公司 用于执行存储器复制的方法和系统
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
US10509776B2 (en) 2012-09-24 2019-12-17 Sandisk Technologies Llc Time sequence data management
US10318495B2 (en) 2012-09-24 2019-06-11 Sandisk Technologies Llc Snapshots for a non-volatile device
US9329991B2 (en) 2013-01-22 2016-05-03 Seagate Technology Llc Translation layer partitioned between host and controller
WO2014118822A1 (en) * 2013-01-31 2014-08-07 Hitachi, Ltd. Storage system and cache control method
KR101628436B1 (ko) * 2013-02-01 2016-06-09 단국대학교 산학협력단 가상 머신의 데이터 처리 방법
US9158667B2 (en) 2013-03-04 2015-10-13 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
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
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
US10558561B2 (en) 2013-04-16 2020-02-11 Sandisk Technologies Llc Systems and methods for storage metadata management
US10102144B2 (en) 2013-04-16 2018-10-16 Sandisk Technologies Llc Systems, methods and interfaces for data virtualization
US9143403B2 (en) * 2013-06-19 2015-09-22 Hewlett-Packard Development Company, L.P. Autonomous metric tracking and adjustment
US8964496B2 (en) 2013-07-26 2015-02-24 Micron Technology, Inc. Apparatuses and methods for performing compare operations using sensing circuitry
US9842128B2 (en) 2013-08-01 2017-12-12 Sandisk Technologies Llc Systems and methods for atomic storage operations
US8971124B1 (en) 2013-08-08 2015-03-03 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US10223208B2 (en) 2013-08-13 2019-03-05 Sandisk Technologies Llc Annotated atomic write
US9153305B2 (en) 2013-08-30 2015-10-06 Micron Technology, Inc. Independently addressable memory array address spaces
US9019785B2 (en) 2013-09-19 2015-04-28 Micron Technology, Inc. Data shifting via a number of isolation devices
US10019320B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for distributed atomic storage operations
US9449675B2 (en) 2013-10-31 2016-09-20 Micron Technology, Inc. Apparatuses and methods for identifying an extremum value stored in an array of memory cells
US9430191B2 (en) 2013-11-08 2016-08-30 Micron Technology, Inc. Division operations for memory
US10073630B2 (en) 2013-11-08 2018-09-11 Sandisk Technologies Llc Systems and methods for log coordination
US9213600B2 (en) 2013-11-11 2015-12-15 Seagate Technology Llc Dynamic per-decoder control of log likelihood ratio and decoding parameters
US9442944B2 (en) * 2013-11-12 2016-09-13 Dropbox, Inc. Content item purging
KR102252419B1 (ko) * 2014-01-09 2021-05-14 한국전자통신연구원 플래시 메모리 장치를 위한 주소변환 시스템 및 그 방법
US9934856B2 (en) 2014-03-31 2018-04-03 Micron Technology, Inc. Apparatuses and methods for comparing data patterns in memory
US10382540B2 (en) 2014-05-29 2019-08-13 Sandisk Technologies Llc Synchronizing storage state information
US9910787B2 (en) 2014-06-05 2018-03-06 Micron Technology, Inc. Virtual address table
US9711207B2 (en) 2014-06-05 2017-07-18 Micron Technology, Inc. Performing logical operations using sensing circuitry
US9449674B2 (en) 2014-06-05 2016-09-20 Micron Technology, Inc. Performing logical operations using sensing circuitry
US10074407B2 (en) 2014-06-05 2018-09-11 Micron Technology, Inc. Apparatuses and methods for performing invert operations using sensing circuitry
US9830999B2 (en) 2014-06-05 2017-11-28 Micron Technology, Inc. Comparison operations in memory
US9711206B2 (en) 2014-06-05 2017-07-18 Micron Technology, Inc. Performing logical operations using sensing circuitry
US9786335B2 (en) 2014-06-05 2017-10-10 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US9704540B2 (en) 2014-06-05 2017-07-11 Micron Technology, Inc. Apparatuses and methods for parity determination using sensing circuitry
JP2015230611A (ja) * 2014-06-05 2015-12-21 富士通株式会社 電子デバイス及び電子デバイスの制御方法
US9779019B2 (en) 2014-06-05 2017-10-03 Micron Technology, Inc. Data storage layout
US9496023B2 (en) 2014-06-05 2016-11-15 Micron Technology, Inc. Comparison operations on logical representations of values in memory
US9455020B2 (en) 2014-06-05 2016-09-27 Micron Technology, Inc. Apparatuses and methods for performing an exclusive or operation using sensing circuitry
US10514982B2 (en) * 2014-08-21 2019-12-24 Datrium, Inc. Alternate storage arrangement in a distributed data storage system with key-based addressing
US9298647B2 (en) 2014-08-25 2016-03-29 HGST Netherlands B.V. Method and apparatus to generate zero content over garbage data when encryption parameters are changed
US10068652B2 (en) 2014-09-03 2018-09-04 Micron Technology, Inc. Apparatuses and methods for determining population count
US9847110B2 (en) 2014-09-03 2017-12-19 Micron Technology, Inc. Apparatuses and methods for storing a data value in multiple columns of an array corresponding to digits of a vector
US9904515B2 (en) 2014-09-03 2018-02-27 Micron Technology, Inc. Multiplication operations in memory
US9589602B2 (en) 2014-09-03 2017-03-07 Micron Technology, Inc. Comparison operations in memory
US9898252B2 (en) 2014-09-03 2018-02-20 Micron Technology, Inc. Multiplication operations in memory
US9740607B2 (en) 2014-09-03 2017-08-22 Micron Technology, Inc. Swap operations in memory
US9747961B2 (en) 2014-09-03 2017-08-29 Micron Technology, Inc. Division operations in memory
US9836218B2 (en) 2014-10-03 2017-12-05 Micron Technology, Inc. Computing reduction and prefix sum operations in memory
US9940026B2 (en) 2014-10-03 2018-04-10 Micron Technology, Inc. Multidimensional contiguous memory allocation
US10163467B2 (en) 2014-10-16 2018-12-25 Micron Technology, Inc. Multiple endianness compatibility
CN105900061B (zh) * 2014-10-22 2018-01-16 华为技术有限公司 对象存储系统中的业务流控制方法、控制器和系统
US10147480B2 (en) 2014-10-24 2018-12-04 Micron Technology, Inc. Sort operation in memory
US9779784B2 (en) 2014-10-29 2017-10-03 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
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
US10073635B2 (en) 2014-12-01 2018-09-11 Micron Technology, Inc. Multiple endianness compatibility
US9747960B2 (en) 2014-12-01 2017-08-29 Micron Technology, Inc. Apparatuses and methods for converting a mask to an index
US10061590B2 (en) 2015-01-07 2018-08-28 Micron Technology, Inc. Generating and executing a control flow
US10032493B2 (en) 2015-01-07 2018-07-24 Micron Technology, Inc. Longest element length determination in memory
US11782601B2 (en) 2015-01-20 2023-10-10 Ultrata, Llc Object memory instruction set
EP3248106A4 (en) 2015-01-20 2018-09-12 Ultrata LLC Distributed index for fault tolerant object memory fabric
CN107533517B (zh) * 2015-01-20 2021-12-21 乌尔特拉塔有限责任公司 基于对象的存储器结构
US10423339B2 (en) * 2015-02-02 2019-09-24 Western Digital Technologies, Inc. Logical block address mapping for hard disk drives
US9583163B2 (en) 2015-02-03 2017-02-28 Micron Technology, Inc. Loop structure for operations in memory
EP3254286B1 (en) 2015-02-06 2019-09-11 Micron Technology, INC. Apparatuses and methods for parallel writing to multiple memory device locations
EP3254287A4 (en) 2015-02-06 2018-08-08 Micron Technology, INC. Apparatuses and methods for memory device as a store for program instructions
WO2016126472A1 (en) 2015-02-06 2016-08-11 Micron Technology, Inc. Apparatuses and methods for scatter and gather
US9946607B2 (en) 2015-03-04 2018-04-17 Sandisk Technologies Llc Systems and methods for storage error management
KR101614650B1 (ko) 2015-03-05 2016-04-21 홍익대학교 산학협력단 컴퓨팅 장치의 실행파일 실행방법 및 이를 위한 컴퓨팅 장치
US10522212B2 (en) 2015-03-10 2019-12-31 Micron Technology, Inc. Apparatuses and methods for shift decisions
US9898253B2 (en) 2015-03-11 2018-02-20 Micron Technology, Inc. Division operations on variable length elements in memory
US9741399B2 (en) 2015-03-11 2017-08-22 Micron Technology, Inc. Data shift by elements of a vector in memory
EP3268965A4 (en) 2015-03-12 2018-10-03 Micron Technology, INC. Apparatuses and methods for data movement
US10146537B2 (en) 2015-03-13 2018-12-04 Micron Technology, Inc. Vector population count determination in memory
US10049054B2 (en) 2015-04-01 2018-08-14 Micron Technology, Inc. Virtual register file
US10140104B2 (en) 2015-04-14 2018-11-27 Micron Technology, Inc. Target architecture determination
US9959923B2 (en) 2015-04-16 2018-05-01 Micron Technology, Inc. Apparatuses and methods to reverse data stored in memory
US9946461B2 (en) * 2015-05-15 2018-04-17 ScaleFlux, Inc. In-flash immutable object processing
US10073786B2 (en) 2015-05-28 2018-09-11 Micron Technology, Inc. Apparatuses and methods for compute enabled cache
US9886210B2 (en) 2015-06-09 2018-02-06 Ultrata, Llc Infinite memory fabric hardware implementation with router
US10698628B2 (en) 2015-06-09 2020-06-30 Ultrata, Llc Infinite memory fabric hardware implementation with memory
US9971542B2 (en) 2015-06-09 2018-05-15 Ultrata, Llc Infinite memory fabric streams and APIs
US9704541B2 (en) 2015-06-12 2017-07-11 Micron Technology, Inc. Simulating access lines
US9921777B2 (en) 2015-06-22 2018-03-20 Micron Technology, Inc. Apparatuses and methods for data transfer from sensing circuitry to a controller
US10089023B2 (en) 2015-06-23 2018-10-02 Western Digital Technologies, Inc. Data management for object based storage
US9996479B2 (en) 2015-08-17 2018-06-12 Micron Technology, Inc. Encryption of executables in computational memory
US9870322B2 (en) 2015-11-12 2018-01-16 International Business Machines Corporation Memory mapping for object-based storage devices
CN105515855B (zh) * 2015-12-04 2018-10-30 浪潮(北京)电子信息产业有限公司 一种云存储系统中直接纠删的日志回放优化方法及装置
US10241676B2 (en) 2015-12-08 2019-03-26 Ultrata, Llc Memory fabric software implementation
US10235063B2 (en) 2015-12-08 2019-03-19 Ultrata, Llc Memory fabric operations and coherency using fault tolerant objects
WO2017100292A1 (en) 2015-12-08 2017-06-15 Ultrata, Llc. Object memory interfaces across shared links
WO2017100281A1 (en) 2015-12-08 2017-06-15 Ultrata, Llc Memory fabric software implementation
US9905276B2 (en) 2015-12-21 2018-02-27 Micron Technology, Inc. Control of sensing components in association with performing operations
CN105677250B (zh) * 2016-01-04 2019-07-12 北京百度网讯科技有限公司 对象存储系统中的对象数据的更新方法和更新装置
US9952925B2 (en) 2016-01-06 2018-04-24 Micron Technology, Inc. Error code calculation on sensing circuitry
US10048888B2 (en) 2016-02-10 2018-08-14 Micron Technology, Inc. Apparatuses and methods for partitioned parallel data movement
US9892767B2 (en) 2016-02-12 2018-02-13 Micron Technology, Inc. Data gathering in memory
US9971541B2 (en) 2016-02-17 2018-05-15 Micron Technology, Inc. Apparatuses and methods for data movement
US10956439B2 (en) 2016-02-19 2021-03-23 Micron Technology, Inc. Data transfer with a bit vector operation device
US9899070B2 (en) 2016-02-19 2018-02-20 Micron Technology, Inc. Modified decode for corner turn
KR102533389B1 (ko) * 2016-02-24 2023-05-17 삼성전자주식회사 장치 수명을 향상시키는 데이터 저장 장치 및 이를 포함하는 raid 시스템
US9697876B1 (en) 2016-03-01 2017-07-04 Micron Technology, Inc. Vertical bit vector shift in memory
US9997232B2 (en) 2016-03-10 2018-06-12 Micron Technology, Inc. Processing in memory (PIM) capable memory device having sensing circuitry performing logic operations
US10262721B2 (en) 2016-03-10 2019-04-16 Micron Technology, Inc. Apparatuses and methods for cache invalidate
US10379772B2 (en) 2016-03-16 2019-08-13 Micron Technology, Inc. Apparatuses and methods for operations using compressed and decompressed data
US9910637B2 (en) 2016-03-17 2018-03-06 Micron Technology, Inc. Signed division in memory
US10120740B2 (en) 2016-03-22 2018-11-06 Micron Technology, Inc. Apparatus and methods for debugging on a memory device
US11074988B2 (en) 2016-03-22 2021-07-27 Micron Technology, Inc. Apparatus and methods for debugging on a host and memory device
US10388393B2 (en) 2016-03-22 2019-08-20 Micron Technology, Inc. Apparatus and methods for debugging on a host and memory device
US10474581B2 (en) 2016-03-25 2019-11-12 Micron Technology, Inc. Apparatuses and methods for cache operations
US10977033B2 (en) 2016-03-25 2021-04-13 Micron Technology, Inc. Mask patterns generated in memory from seed vectors
US10074416B2 (en) 2016-03-28 2018-09-11 Micron Technology, Inc. Apparatuses and methods for data movement
US10430244B2 (en) 2016-03-28 2019-10-01 Micron Technology, Inc. Apparatuses and methods to determine timing of operations
US10453502B2 (en) 2016-04-04 2019-10-22 Micron Technology, Inc. Memory bank power coordination including concurrently performing a memory operation in a selected number of memory regions
US10607665B2 (en) 2016-04-07 2020-03-31 Micron Technology, Inc. Span mask generation
US9818459B2 (en) 2016-04-19 2017-11-14 Micron Technology, Inc. Invert operations using sensing circuitry
US10153008B2 (en) 2016-04-20 2018-12-11 Micron Technology, Inc. Apparatuses and methods for performing corner turn operations using sensing circuitry
US9659605B1 (en) 2016-04-20 2017-05-23 Micron Technology, Inc. Apparatuses and methods for performing corner turn operations using sensing circuitry
US10042608B2 (en) 2016-05-11 2018-08-07 Micron Technology, Inc. Signed division in memory
US9659610B1 (en) 2016-05-18 2017-05-23 Micron Technology, Inc. Apparatuses and methods for shifting data
US10049707B2 (en) 2016-06-03 2018-08-14 Micron Technology, Inc. Shifting data
US10387046B2 (en) 2016-06-22 2019-08-20 Micron Technology, Inc. Bank to bank data transfer
US10037785B2 (en) 2016-07-08 2018-07-31 Micron Technology, Inc. Scan chain operation in sensing circuitry
US10388360B2 (en) 2016-07-19 2019-08-20 Micron Technology, Inc. Utilization of data stored in an edge section of an array
US10733089B2 (en) 2016-07-20 2020-08-04 Micron Technology, Inc. Apparatuses and methods for write address tracking
US10387299B2 (en) 2016-07-20 2019-08-20 Micron Technology, Inc. Apparatuses and methods for transferring data
US9972367B2 (en) 2016-07-21 2018-05-15 Micron Technology, Inc. Shifting data in sensing circuitry
US9767864B1 (en) 2016-07-21 2017-09-19 Micron Technology, Inc. Apparatuses and methods for storing a data value in a sensing circuitry element
US10303632B2 (en) 2016-07-26 2019-05-28 Micron Technology, Inc. Accessing status information
US10468087B2 (en) 2016-07-28 2019-11-05 Micron Technology, Inc. Apparatuses and methods for operations in a self-refresh state
US9990181B2 (en) 2016-08-03 2018-06-05 Micron Technology, Inc. Apparatuses and methods for random number generation
US11029951B2 (en) 2016-08-15 2021-06-08 Micron Technology, Inc. Smallest or largest value element determination
US10606587B2 (en) 2016-08-24 2020-03-31 Micron Technology, Inc. Apparatus and methods related to microcode instructions indicating instruction types
US10466928B2 (en) 2016-09-15 2019-11-05 Micron Technology, Inc. Updating a register in memory
KR102611638B1 (ko) 2016-09-27 2023-12-08 삼성전자주식회사 스토리지 장치의 동작 방법 및 스토리지 장치를 포함하는 데이터 저장 시스템
US10387058B2 (en) 2016-09-29 2019-08-20 Micron Technology, Inc. Apparatuses and methods to change data category values
US10235207B2 (en) 2016-09-30 2019-03-19 Nimbix, Inc. Method and system for preemptible coprocessing
US10014034B2 (en) 2016-10-06 2018-07-03 Micron Technology, Inc. Shifting data in sensing circuitry
US10529409B2 (en) 2016-10-13 2020-01-07 Micron Technology, Inc. Apparatuses and methods to perform logical operations using sensing circuitry
US9805772B1 (en) 2016-10-20 2017-10-31 Micron Technology, Inc. Apparatuses and methods to selectively perform logical operations
CN207637499U (zh) 2016-11-08 2018-07-20 美光科技公司 用于形成在存储器单元阵列上方的计算组件的设备
US10423353B2 (en) 2016-11-11 2019-09-24 Micron Technology, Inc. Apparatuses and methods for memory alignment
US9761300B1 (en) 2016-11-22 2017-09-12 Micron Technology, Inc. Data shift apparatuses and methods
US10853262B2 (en) 2016-11-29 2020-12-01 Arm Limited Memory address translation using stored key entries
US10394454B2 (en) * 2017-01-13 2019-08-27 Arm Limited Partitioning of memory system resources or performance monitoring
CN108345427B (zh) * 2017-01-25 2020-09-04 杭州海康威视数字技术股份有限公司 一种硬盘数据存储方法及装置
US10402340B2 (en) 2017-02-21 2019-09-03 Micron Technology, Inc. Memory array page table walk
US10268389B2 (en) 2017-02-22 2019-04-23 Micron Technology, Inc. Apparatuses and methods for in-memory operations
US10403352B2 (en) 2017-02-22 2019-09-03 Micron Technology, Inc. Apparatuses and methods for compute in data path
US10838899B2 (en) 2017-03-21 2020-11-17 Micron Technology, Inc. Apparatuses and methods for in-memory data switching networks
US10185674B2 (en) 2017-03-22 2019-01-22 Micron Technology, Inc. Apparatus and methods for in data path compute operations
US11222260B2 (en) 2017-03-22 2022-01-11 Micron Technology, Inc. Apparatuses and methods for operating neural networks
US10049721B1 (en) 2017-03-27 2018-08-14 Micron Technology, Inc. Apparatuses and methods for in-memory operations
US10043570B1 (en) 2017-04-17 2018-08-07 Micron Technology, Inc. Signed element compare in memory
US10147467B2 (en) 2017-04-17 2018-12-04 Micron Technology, Inc. Element value comparison in memory
US9997212B1 (en) 2017-04-24 2018-06-12 Micron Technology, Inc. Accessing data in memory
US10942843B2 (en) 2017-04-25 2021-03-09 Micron Technology, Inc. Storing data elements of different lengths in respective adjacent rows or columns according to memory shapes
US10769035B2 (en) * 2017-04-28 2020-09-08 International Business Machines Corporation Key-value index recovery by log feed caching
US10236038B2 (en) 2017-05-15 2019-03-19 Micron Technology, Inc. Bank to bank data transfer
US10068664B1 (en) 2017-05-19 2018-09-04 Micron Technology, Inc. Column repair in memory
US10013197B1 (en) 2017-06-01 2018-07-03 Micron Technology, Inc. Shift skip
US10152271B1 (en) 2017-06-07 2018-12-11 Micron Technology, Inc. Data replication
US10262701B2 (en) 2017-06-07 2019-04-16 Micron Technology, Inc. Data transfer between subarrays in memory
US10152422B1 (en) 2017-06-13 2018-12-11 Seagate Technology Llc Page-based method for optimizing cache metadata updates
CN107247674B (zh) 2017-06-16 2020-07-31 深圳市万普拉斯科技有限公司 内存块类型处理方法、装置、电子设备及可读存储介质
US10318168B2 (en) 2017-06-19 2019-06-11 Micron Technology, Inc. Apparatuses and methods for simultaneous in data path compute operations
US10547683B2 (en) * 2017-06-26 2020-01-28 Christopher Squires Object based storage systems that utilize direct memory access
US10162005B1 (en) 2017-08-09 2018-12-25 Micron Technology, Inc. Scan chain operations
US10534553B2 (en) 2017-08-30 2020-01-14 Micron Technology, Inc. Memory array accessibility
US10741239B2 (en) 2017-08-31 2020-08-11 Micron Technology, Inc. Processing in memory device including a row address strobe manager
US10346092B2 (en) 2017-08-31 2019-07-09 Micron Technology, Inc. Apparatuses and methods for in-memory operations using timing circuitry
US10416927B2 (en) 2017-08-31 2019-09-17 Micron Technology, Inc. Processing in memory
US20190095340A1 (en) * 2017-09-28 2019-03-28 Hewlett Packard Enterprise Development Lp Discontiguous storage and contiguous retrieval of logically partitioned data
US10379948B2 (en) 2017-10-02 2019-08-13 Western Digital Technologies, Inc. Redundancy coding stripe based on internal addresses of storage devices
US10474528B2 (en) 2017-10-02 2019-11-12 Western Digital Technologies, Inc. Redundancy coding stripe based on coordinated internal address scheme across multiple devices
CN107888657B (zh) * 2017-10-11 2020-11-06 上海交通大学 低延迟分布式存储系统
US10409739B2 (en) 2017-10-24 2019-09-10 Micron Technology, Inc. Command selection policy
US10929308B2 (en) * 2017-11-22 2021-02-23 Arm Limited Performing maintenance operations
US10831673B2 (en) 2017-11-22 2020-11-10 Arm Limited Memory address translation
US10866904B2 (en) 2017-11-22 2020-12-15 Arm Limited Data storage for multiple data types
US10522210B2 (en) 2017-12-14 2019-12-31 Micron Technology, Inc. Apparatuses and methods for subarray addressing
US10332586B1 (en) 2017-12-19 2019-06-25 Micron Technology, Inc. Apparatuses and methods for subrow addressing
US10614875B2 (en) 2018-01-30 2020-04-07 Micron Technology, Inc. Logical operations using memory cells
US11194477B2 (en) 2018-01-31 2021-12-07 Micron Technology, Inc. Determination of a match between data values stored by three or more arrays
US10437557B2 (en) 2018-01-31 2019-10-08 Micron Technology, Inc. Determination of a match between data values stored by several arrays
US10725696B2 (en) 2018-04-12 2020-07-28 Micron Technology, Inc. Command selection policy with read priority
US10440341B1 (en) 2018-06-07 2019-10-08 Micron Technology, Inc. Image processor formed in an array of memory cells
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US10725941B2 (en) 2018-06-30 2020-07-28 Western Digital Technologies, Inc. Multi-device storage system with hosted services on peer storage devices
US10409511B1 (en) 2018-06-30 2019-09-10 Western Digital Technologies, Inc. Multi-device storage system with distributed read/write processing
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
US10649843B2 (en) 2018-08-03 2020-05-12 Western Digital Technologies, Inc. Storage systems with peer data scrub
US10592144B2 (en) 2018-08-03 2020-03-17 Western Digital Technologies, Inc. Storage system fabric with multichannel compute complex
US10901848B2 (en) 2018-08-03 2021-01-26 Western Digital Technologies, Inc. Storage systems with peer data recovery
US10831603B2 (en) 2018-08-03 2020-11-10 Western Digital Technologies, Inc. Rebuild assist using failed storage device
US10824526B2 (en) 2018-08-03 2020-11-03 Western Digital Technologies, Inc. Using failed storage device in peer-to-peer storage system to perform storage-centric task
US10877810B2 (en) 2018-09-29 2020-12-29 Western Digital Technologies, Inc. Object storage system with metadata operation priority processing
US10956071B2 (en) * 2018-10-01 2021-03-23 Western Digital Technologies, Inc. Container key value store for data storage devices
US10769071B2 (en) 2018-10-10 2020-09-08 Micron Technology, Inc. Coherent memory access
US11175915B2 (en) 2018-10-10 2021-11-16 Micron Technology, Inc. Vector registers implemented in memory
US10483978B1 (en) 2018-10-16 2019-11-19 Micron Technology, Inc. Memory device processing
CN109597571B (zh) * 2018-11-15 2022-02-15 金蝶软件(中国)有限公司 数据存储方法、数据读取方法、装置和计算机设备
CN109656474B (zh) * 2018-11-15 2022-02-15 金蝶软件(中国)有限公司 数据存储方法、装置、计算机设备和存储介质
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US11184446B2 (en) 2018-12-05 2021-11-23 Micron Technology, Inc. Methods and apparatus for incentivizing participation in fog networks
KR20200076923A (ko) * 2018-12-20 2020-06-30 에스케이하이닉스 주식회사 저장 장치, 컨트롤러 및 저장 장치의 동작 방법
US11182258B2 (en) 2019-01-04 2021-11-23 Western Digital Technologies, Inc. Data rebuild using dynamic peer work allocation
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US10867655B1 (en) 2019-07-08 2020-12-15 Micron Technology, Inc. Methods and apparatus for dynamically adjusting performance of partitioned memory
US11360768B2 (en) 2019-08-14 2022-06-14 Micron Technolgy, Inc. Bit string operations in memory
CN111181760B (zh) * 2019-09-02 2021-10-08 腾讯科技(深圳)有限公司 网络故障探测方法、装置、计算机可读介质及电子设备
EP3769228B1 (en) * 2019-11-06 2022-06-08 Alipay (Hangzhou) Information Technology Co., Ltd. Consenus of shared blockchain data storage based on error correction code
US11016905B1 (en) 2019-11-13 2021-05-25 Western Digital Technologies, Inc. Storage class memory access
US11449577B2 (en) 2019-11-20 2022-09-20 Micron Technology, Inc. Methods and apparatus for performing video processing matrix operations within a memory array
US11853385B2 (en) 2019-12-05 2023-12-26 Micron Technology, Inc. Methods and apparatus for performing diversity matrix operations within a memory array
US11089141B2 (en) * 2020-01-08 2021-08-10 Bank Of America Corporation Method and system for data prioritization communication
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11249921B2 (en) 2020-05-06 2022-02-15 Western Digital Technologies, Inc. Page modification encoding and caching
CN114026548A (zh) * 2020-05-28 2022-02-08 华为技术有限公司 直接内存访问的方法和系统
WO2021239230A1 (en) * 2020-05-28 2021-12-02 Huawei Technologies Co., Ltd. Method and system for direct memory access
US11262919B2 (en) * 2020-06-05 2022-03-01 Vmware, Inc. Efficient segment cleaning employing remapping of data blocks in log-structured file systems of distributed data systems
US11507544B2 (en) 2020-06-05 2022-11-22 Vmware, Inc. Efficient erasure-coded storage in distributed data systems
US11263146B2 (en) * 2020-06-05 2022-03-01 Vmware, Inc. Efficient accessing methods for bypassing second layer mapping of data blocks in file systems of distributed data systems
US11334497B2 (en) * 2020-06-05 2022-05-17 Vmware, Inc. Efficient segment cleaning employing local copying of data blocks in log-structured file systems of distributed data systems
US11227641B1 (en) 2020-07-21 2022-01-18 Micron Technology, Inc. Arithmetic operations in memory
US11636069B2 (en) 2020-07-24 2023-04-25 Capital Thought Holdings L.L.C. Data storage system and method
US11468017B2 (en) 2020-07-24 2022-10-11 Capital Thought Holdings L.L.C. Data storage system and method
KR20220042673A (ko) 2020-09-28 2022-04-05 에스케이하이닉스 주식회사 컨트롤러, 컨트롤러의 동작 방법, 및 이를 포함하는 메모리 시스템
CN112350947B (zh) * 2020-10-23 2022-07-29 杭州迪普信息技术有限公司 一种报文匹配决策树的更新方法及装置
US11749335B2 (en) * 2020-11-03 2023-09-05 Jianzhong Bi Host and its memory module and memory controller
US11847100B2 (en) 2020-11-19 2023-12-19 Alibaba Group Holding Limited Distributed file system servicing random-access operations
US11392497B1 (en) * 2020-11-25 2022-07-19 Amazon Technologies, Inc. Low latency access to data sets using shared data set portions
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
CN112925568B (zh) * 2021-03-28 2022-07-26 杭州迪普信息技术有限公司 模块间数据传输方法及控制装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6779045B2 (en) * 2001-03-21 2004-08-17 Intel Corporation System and apparatus for increasing the number of operations per transmission for a media management system
US7155559B1 (en) * 2000-08-25 2006-12-26 Lexar Media, Inc. Flash memory architecture with separate storage of overhead and user data

Family Cites Families (134)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4290105A (en) 1979-04-02 1981-09-15 American Newspaper Publishers Association Method and apparatus for testing membership in a set through hash coding with allowable errors
NL8201847A (nl) 1982-05-06 1983-12-01 Philips Nv Inrichting voor het beschermen tegen onbevoegd uitlezen van in een geheugen te memoriseren programmawoorden.
US7190617B1 (en) 1989-04-13 2007-03-13 Sandisk Corporation Flash EEprom system
US5544347A (en) 1990-09-24 1996-08-06 Emc Corporation Data storage system controlled remote data mirroring with respectively maintained data indices
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
US5325523A (en) * 1991-04-10 1994-06-28 International Business Machines Corporation Method for deleting objects from library resident optical disks by accumulating pending delete requests
US5481708A (en) 1992-06-05 1996-01-02 Borland International, Inc. System and methods for optimizing object-oriented compilations
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
JP2784440B2 (ja) 1993-04-14 1998-08-06 インターナショナル・ビジネス・マシーンズ・コーポレイション データ・ページの転送制御方法
US5504882A (en) 1994-06-20 1996-04-02 International Business Machines Corporation Fault tolerant data storage subsystem employing hierarchically arranged controllers
JP3732869B2 (ja) 1995-06-07 2006-01-11 株式会社日立製作所 外部記憶装置
US5754563A (en) 1995-09-11 1998-05-19 Ecc Technologies, Inc. Byte-parallel system for implementing reed-solomon error-correcting codes
GB2291991A (en) * 1995-09-27 1996-02-07 Memory Corp Plc Disk drive emulation with a block-erasable memory
JP3363292B2 (ja) 1995-10-12 2003-01-08 株式会社日立製作所 データベース管理システム
US5778070A (en) 1996-06-28 1998-07-07 Intel Corporation Method and apparatus for protecting flash memory
US6424872B1 (en) 1996-08-23 2002-07-23 Fieldbus Foundation Block oriented control system
US6038619A (en) * 1997-05-29 2000-03-14 International Business Machines Corporation Disk drive initiated data transfers responsive to sequential or near sequential read or write requests
US6311256B2 (en) * 1997-06-30 2001-10-30 Emc Corporation Command insertion and reordering at the same storage controller
US5893086A (en) 1997-07-11 1999-04-06 International Business Machines Corporation Parallel file system and method with extensible hashing
US6298401B1 (en) 1997-08-11 2001-10-02 Seagate Technology Llc Object oriented storage device having a disc drive controller providing an interface exposing methods which are invoked to access objects stored in a storage media
JPH1185589A (ja) * 1997-09-12 1999-03-30 Toshiba Corp 情報記憶装置および同装置に適用される管理データ再構築方法
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
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
US6725331B1 (en) 1998-01-07 2004-04-20 Emc Corporation Method and apparatus for managing the dynamic assignment resources in a data storage system
US6112319A (en) 1998-02-20 2000-08-29 Micron Electronics, Inc. Method and system for verifying the accuracy of stored data
US6170063B1 (en) 1998-03-07 2001-01-02 Hewlett-Packard Company Method for performing atomic, concurrent read and write operations on multiple storage devices
US6157963A (en) 1998-03-24 2000-12-05 Lsi Logic Corp. System controller with plurality of memory queues for prioritized scheduling of I/O requests from priority assigned clients
WO1999050850A1 (en) 1998-04-01 1999-10-07 Hewlett-Packard Company Data storage apparatus and methods
JP2000047891A (ja) * 1998-05-29 2000-02-18 Toshiba Corp 計算機システムにおける入出力制御装置及び同システムにおける入出力制御方法並びに同方法がプログラムされ記憶された記憶媒体
US6883063B2 (en) 1998-06-30 2005-04-19 Emc Corporation Method and apparatus for initializing logical objects in a data storage system
US6374266B1 (en) 1998-07-28 2002-04-16 Ralph Shnelvar Method and apparatus for storing information in a data processing system
JP2000122814A (ja) 1998-10-15 2000-04-28 Hitachi Ltd 拡張型ネットワーク接続二次記憶方法及び装置
US7043568B1 (en) 1998-11-12 2006-05-09 Klingman Edwin E Configuration selection for USB device controller
US6601151B1 (en) * 1999-02-08 2003-07-29 Sun Microsystems, Inc. Apparatus and method for handling memory access requests in a data processing system
US6347341B1 (en) 1999-02-22 2002-02-12 International Business Machines Corporation Computer program product used for exchange and transfer of data having a siga vector and utilizing a queued direct input-output device
EP1729304B1 (en) * 1999-04-01 2012-10-17 Lexar Media, Inc. Space management for managing high capacity nonvolatile memory
US6535949B1 (en) * 1999-04-19 2003-03-18 Research In Motion Limited Portable electronic device having a log-structured file system in flash memory
US6105076A (en) 1999-04-23 2000-08-15 International Business Machines Corporation Method, system, and program for performing data transfer operations on user data
US6341289B1 (en) 1999-05-06 2002-01-22 International Business Machines Corporation Object identity and partitioning for user defined extents
WO2001031512A2 (en) 1999-10-25 2001-05-03 Infolibria, Inc. Fast indexing of web objects
US6405201B1 (en) 1999-12-02 2002-06-11 Sun Microsystems, Inc. Method and apparatus for reducing network traffic for remote file append operations
US20060161725A1 (en) * 2005-01-20 2006-07-20 Lee Charles C Multiple function flash memory system
US6779080B2 (en) 2000-01-11 2004-08-17 International Business Machines Corporation Serial data storage system with automatically adjusted data protection to implement worm media with limited overwrite allowing write appending
US6823398B1 (en) 2000-03-31 2004-11-23 Dphi Acquisitions, Inc. File system management embedded in a storage device
US6643748B1 (en) 2000-04-20 2003-11-04 Microsoft Corporation Programmatic masking of storage units
US6697797B1 (en) * 2000-04-28 2004-02-24 Micro Data Base Systems, Inc. Method and apparatus for tracking data in a database, employing last-known location registers
US6404647B1 (en) 2000-08-24 2002-06-11 Hewlett-Packard Co. Solid-state mass memory storage device
GB0022670D0 (en) * 2000-09-15 2000-11-01 Astrazeneca Ab Molecules
US7039727B2 (en) 2000-10-17 2006-05-02 Microsoft Corporation System and method for controlling mass storage class digital imaging devices
SE0004736D0 (sv) 2000-12-20 2000-12-20 Ericsson Telefon Ab L M Mapping system and method
US20020156973A1 (en) 2001-01-29 2002-10-24 Ulrich Thomas R. Enhanced disk array
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
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
US6823417B2 (en) * 2001-10-01 2004-11-23 Hewlett-Packard Development Company, L.P. Memory controller for memory card manages file allocation table
US6754800B2 (en) 2001-11-14 2004-06-22 Sun Microsystems, Inc. Methods and apparatus for implementing host-based object storage schemes
US6839819B2 (en) 2001-12-28 2005-01-04 Storage Technology Corporation Data management appliance
US6850969B2 (en) 2002-03-27 2005-02-01 International Business Machined Corporation Lock-free file system
US7013364B2 (en) 2002-05-27 2006-03-14 Hitachi, Ltd. Storage subsystem having plural storage systems and storage selector for selecting one of the storage systems to process an access request
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
US7051152B1 (en) 2002-08-07 2006-05-23 Nvidia Corporation Method and system of improving disk access time by compression
US7882081B2 (en) 2002-08-30 2011-02-01 Netapp, Inc. Optimized disk repository for the storage and retrieval of mostly sequential data
US20040054867A1 (en) 2002-09-13 2004-03-18 Paulus Stravers Translation lookaside buffer
US7340566B2 (en) 2002-10-21 2008-03-04 Microsoft Corporation System and method for initializing a memory device from block oriented NAND flash
US6996676B2 (en) 2002-11-14 2006-02-07 International Business Machines Corporation System and method for implementing an adaptive replacement cache policy
US20040098544A1 (en) 2002-11-15 2004-05-20 Gaither Blaine D. Method and apparatus for managing a memory system
US7093101B2 (en) * 2002-11-21 2006-08-15 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
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
JP2004227098A (ja) 2003-01-20 2004-08-12 Hitachi Ltd 記憶デバイス制御装置の制御方法、及び記憶デバイス制御装置
US7107419B1 (en) 2003-02-14 2006-09-12 Google Inc. Systems and methods for performing record append operations
US7065618B1 (en) 2003-02-14 2006-06-20 Google Inc. Leasing scheme for data-modifying operations
EP1607868A4 (en) 2003-03-10 2009-04-22 Sharp Kk DATA PROCESSING DEVICE, DATA PROCESSING PROGRAM AND RECORDING MEDIUM
US8041878B2 (en) 2003-03-19 2011-10-18 Samsung Electronics Co., Ltd. Flash file system
JP2004310621A (ja) 2003-04-10 2004-11-04 Hitachi Ltd 記憶装置システムにおけるファイルアクセス方法及びファイルアクセスのためのプログラム
US7412449B2 (en) 2003-05-23 2008-08-12 Sap Aktiengesellschaft File object storage and retrieval using hashing techniques
US7263607B2 (en) 2003-06-12 2007-08-28 Microsoft Corporation Categorizing electronic messages based on trust between electronic messaging entities
US7243203B2 (en) 2003-06-13 2007-07-10 Sandisk 3D Llc Pipeline circuit for low latency memory
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
US7373514B2 (en) 2003-07-23 2008-05-13 Intel Corporation High-performance hashing system
US7096321B2 (en) 2003-10-21 2006-08-22 International Business Machines Corporation Method and system for a cache replacement technique with adaptive skipping
US7412583B2 (en) 2003-11-14 2008-08-12 International Business Machines Corporation Virtual incremental storage method
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
US7822790B2 (en) 2003-12-23 2010-10-26 International Business Machines Corporation Relative positioning and access of memory objects
US7464100B2 (en) * 2003-12-24 2008-12-09 Sap Ag Reorganization-free mapping of objects in databases using a mapping chain
JP4401788B2 (ja) 2004-01-06 2010-01-20 株式会社日立製作所 ストレージ制御装置
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
US7720864B1 (en) * 2004-03-25 2010-05-18 Symantec Operating Corporation Expiration of access tokens for quiescing a distributed system
JP2005293774A (ja) 2004-04-02 2005-10-20 Hitachi Global Storage Technologies Netherlands Bv ディスク装置の制御方法
JP4168003B2 (ja) * 2004-04-09 2008-10-22 日立マクセル株式会社 複数の情報記録媒体への情報記録方法および複数の記録媒体からの情報の再生方法
US7788460B2 (en) 2004-04-13 2010-08-31 Intel Corporation Defragmenting objects in a storage medium
US7224545B2 (en) 2004-04-15 2007-05-29 Quantum Corporation Methods and systems for overwrite protected storage media
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
US7523343B2 (en) * 2004-04-30 2009-04-21 Microsoft Corporation Real-time file system repairs
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
WO2005114374A2 (en) 2004-05-21 2005-12-01 Computer Associates Think, Inc. Object-based storage
US7386890B2 (en) 2004-06-30 2008-06-10 Intel Corporation Method and apparatus to preserve a hash value of an executable module
US7386700B2 (en) * 2004-07-30 2008-06-10 Sandisk Il Ltd Virtual-to-physical address translation in a flash file system
JP4315876B2 (ja) 2004-08-17 2009-08-19 富士通株式会社 ファイル管理プログラム、ファイル管理方法、及びファイル管理装置
US20060075057A1 (en) 2004-08-30 2006-04-06 International Business Machines Corporation Remote direct memory access system and method
KR100645058B1 (ko) 2004-11-03 2006-11-10 삼성전자주식회사 데이터 신뢰성을 향상시킬 수 있는 메모리 관리 기법
AU2005304792B2 (en) 2004-11-05 2010-07-08 Drobo, Inc. Storage system condition indicator and method
US7778984B2 (en) 2004-11-19 2010-08-17 Microsoft Corporation System and method for a distributed object store
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
JP3810425B2 (ja) 2004-12-16 2006-08-16 松下電器産業株式会社 改竄検出用データ生成方法、および改竄検出方法及び装置
KR100662256B1 (ko) * 2004-12-20 2006-12-28 한국전자통신연구원 낮은 프로세스 점유율을 가지는 객체기반 스토리지 장치및 그 제어 방법
US7254672B1 (en) 2004-12-30 2007-08-07 Storage Technology Corporation Translation device driver for translating between disk device driver and tape device driver commands
US7620773B2 (en) 2005-04-15 2009-11-17 Microsoft Corporation In-line non volatile memory disk read cache and write buffer
JP2006331158A (ja) 2005-05-27 2006-12-07 Hitachi Ltd ストレージシステム
JP3976764B2 (ja) * 2005-06-16 2007-09-19 株式会社ルネサステクノロジ 半導体ディスク装置
US7590799B2 (en) * 2005-06-16 2009-09-15 Seagate Technology Llc OSD deterministic object fragmentation optimization in a disc drive
US7533330B2 (en) 2005-06-27 2009-05-12 Seagate Technology Llc Redundancy for storage data structures
US20070028051A1 (en) 2005-08-01 2007-02-01 Arm Limited Time and power reduction in cache accesses
US7984084B2 (en) 2005-08-03 2011-07-19 SanDisk Technologies, Inc. Non-volatile memory with scheduled reclaim operations
US7552271B2 (en) 2005-08-03 2009-06-23 Sandisk Corporation Nonvolatile memory with block management
KR100739722B1 (ko) * 2005-08-20 2007-07-13 삼성전자주식회사 플래시 메모리 관리 방법 및 플래시 메모리 시스템
JP5008845B2 (ja) 2005-09-01 2012-08-22 株式会社日立製作所 ストレージシステムとストレージ装置及びその制御方法
US7934049B2 (en) 2005-09-14 2011-04-26 Sandisk Corporation Methods used in a secure yet flexible system architecture for secure devices with flash mass storage memory
US7979394B2 (en) * 2005-09-20 2011-07-12 Teradata Us, Inc. Method of managing storage and retrieval of data objects
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
US20070100893A1 (en) 2005-10-31 2007-05-03 Sigmatel, Inc. System and method for accessing data from a memory device
US7366808B2 (en) 2005-11-23 2008-04-29 Hitachi, Ltd. System, method and apparatus for multiple-protocol-accessible OSD storage subsystem
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
KR100746033B1 (ko) 2006-02-17 2007-08-06 삼성전자주식회사 무결성 측정 장치 및 방법
US20070233937A1 (en) 2006-03-31 2007-10-04 Coulson Richard L Reliability of write operations to a non-volatile memory
US8453147B2 (en) 2006-06-05 2013-05-28 Cisco Technology, Inc. Techniques for reducing thread overhead for systems with multiple multi-threaded processors
US8250316B2 (en) * 2006-06-06 2012-08-21 Seagate Technology Llc Write caching random data and sequential data simultaneously
US8307148B2 (en) 2006-06-23 2012-11-06 Microsoft Corporation Flash management techniques
US7650458B2 (en) * 2006-06-23 2010-01-19 Microsoft Corporation Flash memory driver
US7519830B2 (en) 2006-08-03 2009-04-14 Motorola, Inc. Secure storage of data
US20080077767A1 (en) 2006-09-27 2008-03-27 Khosravi Hormuzd M Method and apparatus for secure page swapping in virtual memory systems
US8161353B2 (en) 2007-12-06 2012-04-17 Fusion-Io, Inc. Apparatus, system, and method for validating that a correct data segment is read from a data storage device
EP4028322B1 (en) 2019-09-09 2024-03-27 Wärtsilä Norway AS Marine vessel propeller, propeller blade and method for installing the marine vessel propeller

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7155559B1 (en) * 2000-08-25 2006-12-26 Lexar Media, Inc. Flash memory architecture with separate storage of overhead and user data
US6779045B2 (en) * 2001-03-21 2004-08-17 Intel Corporation System and apparatus for increasing the number of operations per transmission for a media management system

Also Published As

Publication number Publication date
EP2271978B1 (en) 2015-10-21
KR101628675B1 (ko) 2016-06-09
CN102084332A (zh) 2011-06-01
US8151082B2 (en) 2012-04-03
KR101804034B1 (ko) 2017-12-01
US20090150605A1 (en) 2009-06-11
KR20110039418A (ko) 2011-04-18
US20130205114A1 (en) 2013-08-08
WO2009126581A1 (en) 2009-10-15
JP2011517820A (ja) 2011-06-16
KR20160007669A (ko) 2016-01-20
JP5431453B2 (ja) 2014-03-05
EP2271978A1 (en) 2011-01-12

Similar Documents

Publication Publication Date Title
CN102084332B (zh) 将存储请求转换为附加数据存储命令的装置、系统和方法
CN102084331A (zh) 在多处理器/多线程环境下协调存储请求的装置、系统和方法
CN102084330A (zh) 用于有效地映射虚拟地址和物理地址的装置、系统和方法
CN102084360A (zh) 用于确认从数据存储设备读取正确的数据段的装置、系统和方法
CN101622606B (zh) 用于作为大容量、非易失性存储器的高速缓存的固态存储器的装置、系统和方法
CN101501623B (zh) 感知文件系统的块存储系统、装置和方法
CN101689131B (zh) 用于共享的、前端、分布式raid的装置、系统和方法
CN104699420A (zh) 允许各种规模存储装置的动态可扩展和可收缩的容错存储系统和方法
CN101095115A (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
ASS Succession or assignment of patent right

Free format text: FORMER OWNER: DAVID FLYNN MICHAEL ZAPPE JOHN STRASSER JONATHAN THATCHER

Effective date: 20131206

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

Effective date of registration: 20131206

Address after: Utah, USA

Applicant after: FUSION-IO, Inc.

Address before: Utah, USA

Applicant before: Fusion-io, Inc.

Applicant before: David Flynn

Applicant before: Michael Zappe

Applicant before: Strasser John

Applicant before: Jonathan Thatcher

ASS Succession or assignment of patent right

Owner name: CAIZHI INTELLECTUAL PROPERTY RIGHTS HOLDING COMPAN

Free format text: FORMER OWNER: FUSION MULTISYSTEMS INC

Effective date: 20140804

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

Effective date of registration: 20140804

Address after: Delaware

Applicant after: Intellectual property holding company (2)

Address before: Utah, USA

Applicant before: Fusion-io, Inc.

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

Effective date of registration: 20160627

Address after: Luxemburg, Grand Duchy of Luxemburg

Patentee after: Longitude Business Flash Memory Co.

Address before: Luxemburg, Grand Duchy of Luxemburg

Patentee before: PS12 Lukesike Co.

Effective date of registration: 20160627

Address after: Luxemburg, Grand Duchy of Luxemburg

Patentee after: PS12 Lukesike Co.

Address before: Delaware

Patentee before: Intellectual property holding company (2)

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20190702

Address after: Texas, USA

Patentee after: FIO Semiconductor Technology Co.,Ltd.

Address before: Luxemburg, Grand Duchy of Luxemburg

Patentee before: Longitude Business Flash Memory Co.