CN107533518B - 用于容错对象存储器结构的分布式索引 - Google Patents
用于容错对象存储器结构的分布式索引 Download PDFInfo
- Publication number
- CN107533518B CN107533518B CN201680015942.4A CN201680015942A CN107533518B CN 107533518 B CN107533518 B CN 107533518B CN 201680015942 A CN201680015942 A CN 201680015942A CN 107533518 B CN107533518 B CN 107533518B
- Authority
- CN
- China
- Prior art keywords
- memory
- node
- objects
- router
- memory module
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/0623—Address space extension for memory modules
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0837—Cache consistency protocols with software control, e.g. non-cacheable data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/25—Using a specific main memory architecture
- G06F2212/254—Distributed memory
- G06F2212/2542—Non-uniform memory access [NUMA] architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/601—Reconfiguration of cache memory
- G06F2212/6012—Reconfiguration of cache memory of operating mode, e.g. cache mode or local memory mode
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Signal Processing (AREA)
Abstract
本发明的实施例提供了用于管理处理、存储器、存储体、网络和云计算的***和方法,以显著地改善处理节点的效率和性能。实施例可以实现对象存储器结构,其包括存储存储器对象的对象存储器模块,所述存储器对象在对象存储器模块内本地创建,且可以在存储器层管理。存储器模块对象目录可以索引对象存储器模块内的所有存储器对象。通信地耦合对象存储器模块的对象路由器的分层结构均可以包括路由器对象目录,其索引包含在分层结构中的对象路由器下的对象存储器模块中的所有存储器对象和部分。对象路由器的分层结构可以聚合地表现作为通信地耦合到所有的对象存储器模块的单个对象目录,并基于路由器对象目录来处理请求。
Description
相关申请的交叉引用
本申请要求Frank等人于2015年1月20提交的题为“Infinite Memory FabricData Types and Metadata Architecture”的美国临时申请No.62/105,602在35 USC 119(e)下的权益,其全部公开内容通过引用并入本文用于所有目的。
本申请还涉及以下共同未决和共同转让的美国专利申请:
由Frank于2016年1月20日提交的题为“Object Based Memory Fabric”的美国专利申请No.15/001,320;
由Frank于2016年1月20日提交的题为“Trans-Cloud Object Based Memory”的美国专利申请No.15/001,322;
由Frank于2016年1月20日提交的题为“Universal Single Level Object MemoryAddress Space”的美国专利申请No.15/001,340;
由Frank于2016年1月20日提交的题为“Object Memory Fabric PerformanceAcceleration”的美国专利申请No.15/001,343;
由Frank于2016年1月20日提交的题为“Implementation of an Object MemoryCentric Cloud”的美国专利申请No.15/001,494;
由Frank于2016年1月20日提交的题为“Managing Meta-Data in an ObjectMemory Fabric”的美国专利申请No.15/001,524;
由Frank于2016年1月20日提交的题为“Utilization of a Distributed Indexto Provide Object Memory Fabric Coherency”的美国专利申请No.15/001,652;
由Frank于2016年1月20日提交的题为“Object Memory Data Flow InstructionExecution”的美国专利申请No.15/001,366;
由Frank于2016年1月20日提交的题为“Object Memory Data Flow Trigger”的美国专利申请No.15/001,490;以及
由Frank于2016年1月20日提交的题为“Object Memory Instruction Set”的美国专利申请No.15/001,526,其每一个的全部公开内容通过引用并入本文用于所有目的。
背景技术
本发明的实施例总体上涉及方法和***,其用于改善结构(fabric)中的处理节点的性能,且更具体地,涉及改变管理处理(processing)、存储器(memory)、存储体(storage)、网络和云计算的方式,以显著地改善商品硬件的效率和性能。
随着数据以及其上执行的过程的大小和复杂性不断增加,计算机硬件面临着满足这些需求的挑战。来自现有服务器、网络和存储体供应商的当前商品硬件和软件解决方案无法满足云计算和大数据环境的需求。这至少部分地是由于这些***管理处理、存储器和存储体的方式。具体地,在目前的***中,处理与存储器分离,存储器进而与存储体分离,处理、存储器和存储体中的每一个单独地由软件管理。每个服务器和其他计算装置(本文称为节点)进而通过物理计算机网络与其他节点分离,它们单独地由软件管理,且进而,与每个节点相关联的单独的处理、存储器和存储体由该节点上的软件管理。
图1是示出了现有技术的商品服务器和网络部件内的分离数据存储体、存储器和处理的示例的框图。该示例示出了***100,其中商品服务器105和110经由本领域中已知的物理网络115和网络软件155彼此通信地耦合。本领域中还已知,服务器均可以执行任何种类的任何数量的一个或多个应用120a、120b、120c。本领域中已知,使用存储在物理存储体150中的数据来在服务器105和110的处理器(未示出)和存储器(未示出)上执行每个应用120a、120b、120c。服务器105和110中的每一个保持映射应用120a、120b、120c所使用的数据的位置的目录125。此外,每个服务器为每个执行中的应用120a、120b、120c实现软件堆栈,所述软件堆栈包括数据的应用表示130、数据库表示135、文件***表示140、以及存储体表示145。
虽然有效,但存在三个原因,使得这些来自现有的服务器、网络和存储体供应商的当前的商品硬件和软件解决方案的实现无法满足云计算和大数据环境日益增长的需求。这些实现的缺点的一个原因在于其复杂性。软件堆栈必须就位,且每个应用必须管理存储体、存储器和处理的分离,以及应用并行服务器资源。每个应用必须权衡算法并行性、数据组织和数据移动,这对于正确性来说是非常有挑战性的,更不用说考虑性能和经济性。这往往导致在应用中实施更多批量定向解决方案,而不是大多数企业所偏好的集成实时解决方案。此外,在这种实现中的存储体、存储器和处理的分离也为软件堆栈的每一层寻找、移动和存取数据块造成显著的低效率,这是由于所需的指令执行、以及软件堆栈每一层的延迟和层之间的延迟。另外,这种低效率限制了经济规模的可能性,并且限制了除了最为平行的算法之外的所有算法的数据大小。后者的原因是服务器(处理器或线程)可以交互的效率限制了由于阿姆达尔定律(Amdahl's law)引起的并行度。因此,需要改善的方法和***,用以管理处理、存储器和存储体,从而显著地改善处理节点的性能。
发明内容
本发明的实施例提供用于管理处理、存储器和存储器的***和方法,以显著地改善处理节点的性能。某些实施例可以包括对象存储器结构分布式对象存储器和索引。使用分布式索引,单独的节点可以在每个对象的基础上索引本地对象和对象的块。对象存储器结构分布式对象存储器和索引的某些实施例可以至少部分地基于在胖树分层网络的顶部覆盖独立本地索引函数。
在一个方面,公开了一种对象存储器结构。对象存储器结构可以包括多个对象存储器模块,每个对象存储器模块包括存储一个或多个存储器对象的对象存储体、存储器对象元数据、以及存储器模块对象目录。每个存储器对象和/或存储器对象的部分可以在对象存储器模块内本地创建,且可以由对象存储器模块在存储器层管理。存储器模块对象目录可以索引对象存储器模块内的所有存储器对象和/或存储器对象的部分。对象存储器结构可以包括对象路由器的分层结构,其通信地耦合多个对象存储器模块。对象路由器的分层结构的每个对象路由器可以包括路由器对象目录。路由器对象目录可以索引沿着源于对象路由器的分层结构中的下降线(a line of descent)、包含在对象路由器下的对象存储器模块中的所有存储器对象和/或存储器对象的部分。至少部分地基于路由器对象目录,对象路由器的分层结构适于聚合地表现为通信地耦合到所有的对象存储器模块的单个对象目录,且适于至少部分地基于所述路由器对象目录来处理请求。
对象路由器的分层结构可以根据分层树网络进行操作。沿着源于对象路由器的分层结构中的下降线、在对象路由器下的对象存储器模块包括朝向分层树网络的叶直接通信耦合到相应的对象路由器的对象存储器模块。朝向分层树网络的叶可以对应于远离分层树网络的根的对象路由器与分层树网络的叶处的对象存储器模块之间的最直接的路径。
聚合地表现为通信地耦合到所有的对象存储器模块的单个对象目录以及处理请求可以包括:响应于请求中的每个请求,对象路由器中的至少一个使用相应的路由器对象目录来查找对应于所述请求的对象,以及:在识别所述对象的引用在相应的路由器对象目录中之后,将所述对象转发到分层结构中的叶;在识别所述对象的引用不在相应的路由器对象目录中之后,将第一请求转发到所述分层结构中的根。
请求中的至少一个可以从应用层接收。每个对象存储器模块还可以包括索引本地存储器对象的对象索引树。对象索引树可以包括节点块和叶块,其每一个由类型属性区分,其中叶块中的一个或多个指向持久存储器和/或更高速存储器中的本地存储器对象的位置。对象索引树可以包括指向每个本地存储器对象的每个对象索引树的指针,其中每个本地存储器对象的每个对象索引树在块的基础上索引本地呈现给本地存储器对象的存储器对象数据和存储器对象元数据。每个对象索引树可以包括节点块和叶块,其每一个由类型属性区分,其中叶块中的一个或多个指向持久存储器和/或更高速存储器中的存储器对象数据和存储器对象元数据的位置。适于聚合地表现为单个对象目录的对象路由器的分层结构可以用于跨越多个对象存储器模块中的数个对象存储器模块来管理至少一个存储器对象,其中所述数个对象存储器模块中的单个对象存储器模块没有存储至少一个存储器对象的所有的块所需的存储空间。
在另一方面,公开了一种基于硬件的处理节点。所述基于硬件的处理节点可以包括对象存储器模块,其包括存储一个或多个存储器对象的对象存储体、存储器对象元数据、以及存储器模块对象目录。每个存储器对象和/或存储器对象的部分可以在对象存储器模块内本地创建,且可以由对象存储器模块在存储器层管理。存储器模块对象目录可以索引对象存储器模块内的所有存储器对象和/或存储器对象的部分。对象存储器模块可以至少部分地基于一个或多个对象目录来处理一个或多个请求。
处理一个或多个请求可以包括:处理对应于一个或多个请求中的第一请求的对象标识符;确定所述一个或多个存储器对象中的至少一个对象是否对应于所述对象标识符,并在确定所述一个或多个存储器对象中的至少一个确实对应于所述对象标识符之后,至少部分地基于所述至少一个对象生成对所述第一请求的响应。对象路由器可以通信地耦合到对象存储器模块,其在确定所述一个或多个存储器对象中的至少一个对象不对应于所述对象标识符之后,将第一请求路由到附加节点。将所述第一请求路由到所述附加节点可以是至少部分地基于所述对象路由器确定所述存储器对象的位置对应于所述对象标识符。将所述第一请求路由到所述附加节点可以是至少部分地基于所述对象路由器确定对应于所述对象标识符的存储器对象的位置是未知的。可以朝向根节点引导所述第一请求。在将所述第一请求路由到所述附加节点之后,所述存储器模块可以至少部分地基于从所述附加节点接收的响应来生成对所述第一请求的响应。所述对象存储器模块还可以包括索引本地存储器对象的对象索引树。所述对象索引树可以包括节点块和叶块,其每一个由类型属性区分,其中所述叶块中的一个或多个指向持久存储器和/或更高速存储器中的本地存储器对象的位置。所述对象索引树可以包括指向每个本地存储器对象的每个对象索引树的指针,其中每个本地存储器对象的每个对象索引树在块的基础上索引本地呈现给所述本地存储器对象的存储器对象数据和存储器对象元数据。每个对象索引树可以包括节点块和叶块,其每一个由类型属性区分,其中所述叶块中的一个或多个指向持久存储器和/或更高速存储器中的存储器对象数据和存储器对象元数据的位置。可以从应用层接收所述一个或多个请求中的至少一个。可以从一个或多个附加节点接收所述一个或多个请求中的至少一个。节点可以配置为利用一组算法来可操作地耦合到一个或多个附加节点,以作为一组节点来操作且独立于该组节点的规模,其中该组节点操作为使得该组节点的所有存储器对象可由该组节点中的任何节点访问。
在又一方面中,公开了一种存储并管理对象存储器结构中的一个或多个存储器对象的方法。所述方法可以包括以下中的任何一个或组合。一个或多个存储器对象、存储器对象元数据和存储器模块对象目录可以存储在对象存储器模块的对象存储体中。每个存储器对象和/或存储器对象的部分可以在对象存储器模块内本地创建,且可以由对象存储器模块在存储器层管理。存储器模块对象目录可以索引对象存储器模块内的所有存储器对象和/或存储器对象的部分。对象存储器模块可以至少部分地基于所述一个或多个对象目录来处理一个或多个请求。
处理一个或多个请求可以包括:处理对应于所述一个或多个请求的第一请求的对象标识符;确定所述一个或多个存储器对象中的至少一个对象是否对应于所述对象标识符;以及在确定所述一个或多个存储器对象中的至少一个对象确实对应于所述对象标识符时,至少部分地基于所述至少一个对象来生成对第一请求的响应。处理一个或多个请求可以包括,在确定所述一个或多个存储器对象中的至少一个对象不对应于所述对象标识符时,通过通信地耦合到所述对象存储器模块的对象路由器将所述第一请求路由到附加节点。
附图说明
图1是示出了现有技术的商品服务器和网络部件内的分离数据存储体、存储器和处理的示例的框图。
图2是示出了可以实现本发明的各种实施例示范性分布式***的部件的框图。
图3是示出了可以实现本发明的实施例的示范性计算机***的框图。
图4是示出了根据本发明的一个实施例的示范性无限对象存储器结构(对象存储器结构)架构的框图。
图5是示出了根据本发明的一个实施例的示范性对象存储器结构对象存储器的框图。
图6是示出了根据本发明的一个实施例的示范性对象存储器动态和物理组织的框图。
图7是示出了根据本发明的一个实施例的对象存储器的对象存储器结构分层结构的方面的框图,其使工作集本地化,并允许几乎无限的可扩展性。
图8是示出了根据本发明的一个实施例的对象地址空间、虚拟地址和物理地址之间的示例关系的方面的框图。
图9是示出了根据本发明的一个实施例的对象大小和对象地址空间指针之间的示例关系的方面的框图。
图10是示出了根据本发明的一个实施例的示例对象存储器结构分布式对象存储器和索引结构的方面的框图。
图11示出了根据本发明的一个实施例的完全在对象存储器内执行的对象存储器命中情况的方面。
图12示出了根据本发明的一个实施例的对象存储器未命中情况以及对象存储器和对象索引的分布式性质的方面。
图13是示出了根据本发明的一个实施例的、鉴于对象存储器结构分布式对象存储器和索引结构的叶级对象存储器的示例的方面的框图。
图14是示出了根据本发明的一个实施例的对象存储器结构路由器对象索引结构的示例的方面的框图。
图15A和图15B是示出了据本发明的一个实施例的包括节点索引树结构和叶索引树的示例索引树结构的方面的框图。
图16是示出了根据本发明的一个实施例的示例物理存储器组织的方面的框图。
图17A是示出了根据本发明的一个实施例的示例对象寻址的方面的框图。
图17B是示出了根据本发明的一个实施例的示例对象存储器结构指针和块寻址的方面的框图。
图18是示出了根据本发明的一个实施例的示例对象元数据的方面的框图。
图19是示出了根据本发明的一个实施例的示例微线程模型的方面的框图。
图20是示出了根据本发明的一个实施例的代码、帧和对象的示例关系的方面的框图。
图21是示出了根据本发明的一个实施例的微线程并发性的示例的方面的框图。
具体实施方式
在下面的描述中,为了解释的目的,阐述了许多具体细节,以便提供对本发明的各种实施例的透彻的理解。然而,对于本领域技术人员显而易见的是,可以在没有这些具体细节中的一些的情况下实施本发明的实施例。在其他情况下,公知的结构和装置以框图形式示出。
接下来的描述仅提供示范性实施例,并不意图限制本公开的范围、适用性或配置。相反,对示范性实施例的接下来的描述将为本领域技术人员提供能够实现示范性实施例的描述。应当理解,在不脱离如所附权利要求中阐述的本发明的范围的情况下,可以对元件的功能和布置进行各种改变。
在以下描述中给出具体细节以提供对实施例的透彻理解。然而,本领域普通技术人员将理解,可以在没有这些具体细节的情况下实践实施例。例如,电路、***、网络、过程和其他部件可以以框图形式被示出为部件,以免不必要的细节使实施例变得模糊。在其他情况下,可以示出公知的电路、过程、算法、结构和技术,而不需要不必要的细节,以免使实施例变得模糊。
另外,应当注意,各个实施例可以被描述为过程,其被绘示为流程表、流程图、数据流程图、结构图或框图。尽管流程图可能将操作描述为顺序过程,但是许多操作可以并行或同时执行。此外,可以重新布置操作的顺序。过程在其操作完成后终止,但是可以具有图中未包括的附加步骤。过程可以对应于方法、功能、程序、子例程、子程序等。当过程对应于功能时,其终止可以对应于函数返回到调用函数或主函数。
术语“机器可读介质”包括但不限于便携式或固定存储装置、光学存储装置,无线信道、以及能够存储、包含或携带(多个)指令和/或数据的各种其他介质。代码段或机器可执行的指令可以表示过程、功能、子程序、程序、例程、子例程、模块、软件包、类或指令、数据结构、或程序语句的任何组合。通过传递和/或接收信息、数据、实参、形参或存储器内容,代码段可以耦合到另一代码段或硬件电路。信息、实参、形参、数据等可以经由任何合适的手段传递、转发或传输,包括存储器共享、消息传递、令牌传递、网络传输等。为了清楚起见,现在限定本文所使用的各种其他术语。
虚拟存储器是一种存储器管理技术,其为每个软件进程提供存储器与虚拟地址空间一样大的错觉。操作***结合不同程度的硬件,将物理存储器管理为虚拟地址空间的高速缓存,其位于辅助存储体中,并可通过输入/输出指令存取。虚拟存储器与文件***分离,但是可以与其交互。
单级存储是虚拟存储器的扩展,其中没有文件,仅有使用虚拟存储器技术映射到进程的地址空间的持久对象或段。计算***的整个存储体被认为是段和段内的地址。因此,至少有三个单独的地址空间被软件管理,即物理存储器地址/节点、虚拟地址/进程、以及辅助存储体地址/磁盘。
对象存储体是指存储体的单元(被称为对象)的组织方式。每个对象包含容器,其包含三件事物:实际数据;可扩展元数据;以及全局唯一的标识符,本文称为对象地址。对象的元数据用于限定关于数据的情景信息、以及如何使用和管理数据(包括与其他对象的关系)。
对象地址空间由软件在存储装置、节点和网络上进行管理,以在不知道其物理位置的情况下查找对象。对象存储体与虚拟存储器和单级存储分离,但是可以通过软件互操作。
块存储体由均匀大小的数据块组成,具有基于物理位置的地址,且没有元数据。
网络地址是IP网络内的与物理位置相关联的节点的物理地址。
节点或处理节点是由共享物理存储器描绘的计算的物理单元,所述共享物理存储器由节点内的任何处理器寻址。
对象存储器是由处理器存储器引用指令作为存储器直接存取的对象存储,且不需要隐式或显示软件或者输入/输出指令。对象能力直接在对象存储器内提供,以通过存储器引用指令进行处理。
对象存储器结构将对象存储器模块和节点连接到单个对象存储器中,在这种情况下,在硬件中,通过对象数据、元数据和对象地址的直接管理,任何对象对于任何对象存储器模块是本地的。
对象路由器基于对象地址在对象存储器结构中路由对象或对象的部分。这与基于网络地址将数据分组转发到网络的适当部分的常规路由器不同。
实施例可以由硬件、软件、固件、中间件、微代码、硬件描述语言或其任何组合来实现。当以软件、固件、中间件或微代码来实现时,用于执行必要任务的程序代码或代码段可以存储在机器可读介质中。(多个)处理器可以执行必要的任务。
本发明的实施例提供了用于管理处理、存储器、存储体、网络和云计算的***和方法,以显著地改善处理节点的效率和性能。本文所述的实施例可以以硬件部件的集合来实现,其通过打破当今的商品解决方案中的处理、存储器、存储体和网络之间的人为区别,实质上改变了管理处理、存储器和存储体、网络和云计算的方式,以显著地改善商品硬件的效率和性能。例如,硬件元件可以包括标准格式存储器模块,例如(DIMM)和一个或多个对象路由器的集合。存储器模块可以被添加到诸如服务器节点的商品或“现成”硬件,并作为该节点内的大数据加速器。对象路由器可以用于互连与存储器模块适配的两个或更多个服务器或其他节点,并帮助跨越这些不同的服务器管理处理、存储器和存储体。节点可以物理上相距很近或甚远。这些硬件部件可以一起与商品服务器或其他类型的计算节点以任何组合来一起使用,以实现本文所述的实施例。
根据一个实施例,这样的硬件部件可以实现基于对象的存储器,其在存储器层而不是在应用层中管理存储器内的对象。即是说,对象和相关联的属性在存储器中本机地实现和管理,允许对象存储器提供增加的功能,而无需任何软件,且通过动态地管理对象特性(包括但不限于,持续性、位置和处理)增加了性能。对象属性也可以传播到更高的应用级。
这样的硬件部件也可以通过在对象内进行实现和管理,来消除存储器(临时)和存储体(持久)之间的区别。这些部件可以通过透明地管理对象(或对象的部分)的位置来消除本地和远程存储器之间的区别,因此所有对象都同时对于所有节点显现为本地的。这些部件还可以通过对象的方法来消除处理和存储器之间的区别,以将处理置于存储器本身内。
根据一个实施例,这样的硬件部件可以消除由地址大小施加的商品服务器的存储器空间的典型大小限制。相反,可以在存储器对象本身内管理物理寻址,并且进而可以通过对象名称空间来存取和管理对象。
本文所述的实施例可以通过减少或消除通常与存储器管理、存储体管理、网络和数据目录相关联的开销(overhead)来提供透明和动态的性能加速,特别是对于大数据或其他存储器密集型应用。相反,在存储器级对存储器对象的管理可以显著地缩短存储器和存储体之间、以及存储器和处理之间的通路,从而消除其每一个之间的相关开销。下面将参考附图描述本发明实施例的各种附加细节。
图2是可以实现本发明的各种实施例的示范性分布式***的部件的框图。在示出的实施例中,分布式***200包括一个或多个客户端计算装置202、204、206和208,其配置为在一个或多个网络210上执行或操作客户端应用,例如Web浏览器、专用客户端、等等。服务器212可以经由网络210与远程客户端计算装置202、204、206和208通信地耦合。
在各种实施例中,服务器212可以适于运行由***的一个或多个部件提供的一个或多个服务或软件应用。在一些实施例中,这些服务可以作为基于Web或云服务或软件即服务(SaaS)模式提供给客户端计算装置202、204、206、和/或208的用户。操作客户端计算装置202、204、206、和/或208的用户可以进而利用一个或多个客户端应用来与服务器212交互,以利用由这些部件提供的服务。为了清楚起见,应当注意,服务器212和数据库214、216可以对应于上文参考图1所述的服务器105。网络210可以是物理网络115的部分或扩展。还应当理解,可以存在任何数量的客户端计算装置202、204、206、208和服务器212,其每一个具有一个或多个数据库214、216。
在图中绘示的配置中,***200的软件部件218、220和222被示出为在服务器212上实现。在其他实施例中,***200的一个或多个部件和/或由这些部件提供的服务也可以由客户端计算装置202、204、206、和/或208中的一个或多个来实现。操作客户端计算装置的用户则可以利用一个或多个客户端应用来使用由这些部件提供的服务。这些部件可以以硬件、固件、软件或其组合来实现。应当理解,不同于分布式***200的各种不同的***配置是可能的。因此,图中所示的实施例是用于实现***的实施例的分布式***的一个示例,而非意在限制。
客户端计算装置202、204、206、和/或208可以是便携式手持装置(例如,蜂窝电话、计算平板、个人数字助理(PDA))或可穿戴装置(例如,Google头戴式显示器),其运行诸如Microsoft Windows的软件,和/或各种移动操作***,例如iOS、Windows Phone、Android、BlackBerry 10、Palm OS、等等,且可被互联网、电子邮件、短信息服务(SMS)、或其他允许的通信协议使能。客户端计算装置可以是通用个人计算机,例如包括个人计算机和/或膝上计算机,其运行各种版本的MicrosoftApple和/或Linux操作***。客户端计算装置可以是工作站计算机,其运行各种可商购的或类UNIX操作***中的任一个,包括但不限于各种GNU/Linux操作***,例如Google Chrome OS。替代地或附加地,客户端计算装置202、204、206和208可以是任何其他电子装置,例如轻薄客户端电脑、支持互联网的游戏***(例如,Microsoft Xbox游戏控制台,具有或不具有手势输入装置),和/或能够通过(多个)网络210通信的个人消息装置。
尽管示范性分布式***200被示出为具有四个客户端计算装置,但可以支持任何数量的客户端计算装置。其他装置(例如具有传感器的装置等)可以与服务器212交互。
分布式***200中的(多个)网络210可以是本领域技术人员所熟悉的任何类型的网络,其可以支持使用各种可商购的协议中的任一个(包括但不限于TCP/IP(传输控制协议/互联网协议)、SNA(***网络架构)、IPX(互联网分组交换)、AppleTalk、等等)的数据通信。仅作为示例,(多个)网络210可以是局域网(LAN),例如基于以太网、令牌环和/或诸如此类的局域网。(多个)网络210可以是广域网和互联网。其可以包括虚拟网络、包括但不限于虚拟专用网络(VPN)、内部网、外部网、公共交换电话网络(PSTN)、红外网络、无线网络(例如,在任何电气与电子工程师协会(IEEE)802.11协议套件、和/或任何其他无线协议下操作的网络);和/或这些和/或其他网络的任何组合。这些网络的元件可以具有任意距离,即可以是远程或共同定位的。软件定义网络(SDN)可以通过非智能(dumb)路由器和在服务器上运行的软件的组合来实现。
服务器212可以由以下组成:一个或多个通用计算机、专用服务器计算机(例如包括个人计算机(PC)服务器、服务器、中等服务器、大型计算机、机架安装式服务器、等等)、服务器场、服务器集群、或任何其他合适的布置和/或组合。在各种实施例中,服务器212可以适于运行前述公开中描述的一个或多个服务或软件应用。例如,服务器212可以对应于执行根据本公开的实施例的上述处理的服务器。
服务器212可以运行的操作***包括上述中的任一个,以及任何可商购的服务器操作***。服务器212还可以运行各种附加的服务器应用和/或中间层应用中的任一个,包括超文本传输协议(HTTP)服务器、文件传输协议(FTP)服务器、公共网关接口(CGI)服务器、服务器、数据库服务器、等等。示范性数据库服务器包括但不限于可从Oracle、Microsoft、Sybase、国际商业机器(IBM)等商购的那些。
在一些实施方式中,服务器212可以包括一个或多个应用,以分析和整合从客户端计算装置202、204、206和208接收的数据馈送和/或事件更新。作为示例,数据馈送和/或事件更新可以包括但不限于馈送、更新、或从一个或多个第三方信息源和连续数据流接收的实时更新,其可以包括与传感器数据应用、财务收报机、网络性能测量工具(例如网络监控和流量管理应用)、点击流分析工具、汽车交通监控等相关的实时事件。服务器212还可以包括一个或多个一个或多个应用,以经由客户端计算装置202、204、206和208的一个或多个显示装置来显示数据馈送和/或实时事件。
分布式***200还可以包括一个或多个数据库214和216。数据库214和216可以驻留在各种位置。作为示例,数据库214和216中的一个或多个可以驻留在非暂时性存储介质上,其相对于服务器212是本地的(和/或驻留在服务器212中)。替代地,数据库214和216可以远离服务器212,且经由基于网络或专用的连接与服务器212通信。在一组实施例中,数据库214和216可以驻留在存储区域网络(SAN)中。类似地,按照需要,用于执行归属于服务器212的功能的任何必需文件可以本地存储在服务器212和/远程地存储。在一组实施例中,数据库214和216可以包括关系数据库,其适于响应于命令(例如,MySQL-格式的命令)来储存、更新或取回数据。附加地或替代地,服务器212可以提供并支持对非结构化数据的大数据处理,包括但不限于Hadoop处理、NoSQL数据库、图形数据库等。在又一实施方式中,服务器212可以执行非数据库类型的大数据应用,包括但不限于机器学习。
图3是可以实现本发明的实施例的示范性计算机***的框图。***300可以用于实现上述计算机***中的任一个。如图所示,计算机***300包括处理单元304,其经由总线子***302与多个***子***通信。这些***子***可以包括处理加速单元306、I/O子***308、存储体子***318和通信子***324。存储体子***318包括有形计算机可读存储介质322和***存储器310。
总线子***302提供了使得计算机***300的各种部件和子***按预期相互通信的机制。尽管总线子***302被示意性地示出为单个总线,但总线子***的替代实施例可以利用多个总线。总线子***302可以是若干类型的总线结构中的任一个,包括存储器总线或存储器控制器、***总线、以及使用各种总线架构中的任一个的本地总线。例如,这样的架构可以包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)本地总线、***部件互连(PCI)总线、其可以实现为以IEEE P1386.1标准制造的夹层总线、或PCI增强(PCIe)总线。
处理单元304,其可以实现为一个或多个集成电路(例如,常规微处理器或微控制器),控制计算机***300的操作。一个或多个处理器可以包括在处理单元304中。这些处理器可以包括单核或多核处理器。在某些实施例中,处理单元304可以实现为一个或多个独立的处理单元332和/或334,在每个处理单元中包括单核或多核处理器。在其他实施例中,处理单元304也可以实现为通过将两个双核处理器集成到单个芯片中而形成的四核处理单元。
在各种实施例中,处理单元304可以响应于程序代码执行各种程序,并且可以保持多个并发执行的程序或进程。在任何给定的时间,要执行的程序代码的一些或全部可以驻留在(多个)处理器304和/或存储体子***318中。通过适当的编程,(多个)处理器304可以提供上述各种功能。计算机***300可以附加地包括处理加速单元306,其可以包括数字信号处理器(DSP)、专用处理器、和/或诸如此类。
I/O子***308可以包括用户界面输入装置和用户界面输出装置。用户界面输入装置可以包括键盘、诸如鼠标或轨迹球的指点装置、并入显示器中的触摸板或触摸屏、滚轮、点击轮、转盘、按钮、开关、小键盘、具有语音命令识别***的音频输入装置、麦克风、或其他类型的输入装置。用户界面输入装置可以例如包括运动感测和/或手势识别装置,例如Microsoft运动传感器,其允许用户通过使用手势和口说命令的自然用户接口控制输入装置(例如Microsoft360游戏控制器)和与该输入装置交互。用户界面输入装置还可以包括眼部动作识别装置,例如Google眨眼检测器,其检测来自用户的眼部活动(例如,在拍摄照片和/或进行菜单选择时的“眨眼”),并将眼部动作转换为到输入装置(例如,Google)的输入。此外,用户界面输入装置可以包括语音识别感测装置,其允许用户通过语音命令与语音识别***(例如,导航器)交互。
用户界面输入装置可以包括但不限于,三维(3D)鼠标、操作杆或指点杆、游戏手柄和图形平板、以及音频/视频装置,诸如扬声器、数码相机、数字摄像机、便携式媒体播放器、网络摄像机、图像扫描仪、指纹扫描仪、条形码读取器、3D扫描仪、3D打印机、激光测距仪和眼睛注视跟踪装置。此外,用户界面输入装置可以例如包括医学成像输入装置,例如计算机断层扫描、磁共振成像、位置发射断层摄影、医学超声检查装置。用户界面输入装置还可以例如包括音频输入装置,例如MIDI键盘、数字乐器、等等。
用户界面输出装置可以包括显示子***、指示灯、或非视觉显示器,例如音频输出装置等。显示子***可以是阴极射线管(CRT)、平板装置(例如使用液晶显示器(LCD)或等离子显示器的平板装置)、投影装置、触摸屏、等等。通常,使用术语“输出装置”旨在包括用于从计算机***300向用户或其他计算机输出信息的所有可能类型的装置和机构。例如,用户界面输出装置可以包括但不限于各种显示装置,其可视地传递文本、图形、以及音频/视频信息,例如监控器、打印机、扬声器、耳机、汽车导航***、绘图仪、语音输出装置、以及调制解调器。
计算机***300可以包括存储体子***318,其包括被示出为目前位于***存储器310内的软件元件。***存储器310可以存储可在处理单元304上加载并执行的程序指令,以及在执行这些程序期间产生的数据。
根据计算机***300的配置和类型,***存储器310可以是易失性的(例如随机存取存储器(RAM))和/或非易失性的(例如只读存储器(ROM)、闪存存储器、等等)。RAM通常包含数据和/或程序模块,其可由处理单元304立即存取和/或正在由处理单元304操作和执行。在一些情况下,***存储器310可以包括一个或多个双数据速率四代(DDR4)双列直插存储器模块(DIMM)。在一些实施方式中,***存储器310可以包括多种不同类型的存储器,例如静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)。在一些实施方式中,基本输入/输出***(BIOS)通常可以存储在ROM中,BIOS包含基本例程,其有助于例如在启动期间在计算机***300内的元件之间传递信息。作为示例而非限制,***存储器310还示出了应用程序312,其可以包括客户端应用、Web浏览器、中间层应用、关系数据库管理***(RDBMS)等、程序数据314、以及操作***316。作为示例,操作***316可以包括各种版本的MicrosoftApple和/或Linux操作***、各种可商购的或类UNIX操作***(包括但不限于GNU/Linux操作***、GoogleOS、等等)和/或移动操作***,例如iOS、手机、OS、10OS、以及OS操作***。
存储体子***318还可以提供有形的计算机可读取存储介质,用于存储提供一些实施例的功能的基本编程和数据结构。当由处理器执行时提供上述功能的软件(程序、代码模块、指令)可以存储在存储体子***318中。这些软件模块或指令可以由处理单元304执行。存储体子***318还可以提供用于存储根据本发明使用的数据的存储库(repository)。
存储体子***300还可以包括计算机可读存储介质读取器320,其可以进一步连接到计算机可读取存储介质322。一起且可选地与***存储器310结合,计算机可读取存储介质322可以全面地表示远程、本地、固定、和/或可移除存储装置加上存储介质,用于暂时地和/或更加永久地包含、存储、传输和取回计算机可读信息。
包含代码、或代码的部分的计算机可读取存储介质322可以包括本领域已知或使用的任何合适的介质,包括存储介质和通信介质,例如但不限于,易失性和非易失性、可移除和不可移除介质,其以任何方法或技术实现以存储和/或传输信息。这可以包括有形的计算机可读取存储介质,例如RAM、ROM、电可擦除可编程ROM(EEPROM)、闪存存储器或其他存储器技术、CD-ROM、数字通用盘(DVD)、或其他光学存储体、磁带盒、磁带、磁盘存储体或其他磁存储装置、或其他有形的计算机可读取介质。这也可以包括无形的计算机可读介质,例如数字信号、数据传输、或可以用于传输期望的信息且可以由计算***300存取的任何其他介质。
作为示例,计算机可读取存储介质322可以包括从不可移除、非易失性磁介质读取或向其写入的硬盘驱动器,从可移除、非易失性磁盘读取或向其写入的磁盘驱动器,从可移除、非易失性光盘(例如,CD ROM、DVD和盘,或其他光学介质)读取或向其写入的光盘驱动器。计算机可读取存储介质322可以包括但不限于,驱动器、闪存存储器卡、通用总线(USB)闪存驱动器、安全数字(SD)卡、DVD盘、数字视频带、等等。计算机可读取存储介质322还可以包括基于非易失性存储器的固态驱动器(SSD)、例如基于闪存存储器的SSD、企业闪存驱动器、固态ROM等;基于易失性存储器的SSD,例如固态RAM、动态RAM、静态RAM、基于DRAM的SSD、磁致电阻RAM(MRAM)SSD、以及使用DRAM和基于闪存存储器的SSD的组合的混合SSD。盘驱动器及其相关联的计算机可读介质可以提供计算机***300的计算机可读指令、数据结构、程序模块和其他数据的非易失性存储。
通信子***324提供与其他计算机***和网络的接口。通信子***324用作计算机***300从其他***接收数据并向其发送数据的接口。例如,通信子***324可以允许计算机***300经由互联网连接到一个或多个装置。在一些实施例中,通信子***324可以包括射频(RF)收发器部件,用于存取无线语音和/或数据网络(例如,使用蜂窝电话技术、高级数据网络技术,例如3G、4G或全球演进增强数据速率(EDGE)、WiFi(IEEE 802.11系列标准或其他移动通信技术)、或其任何组合)、全球定位***(GPS)接收器部件、和/或其他部件。在一些实施例中,作为无线接口的替代或附加,通信子***324可以提供有线网络连接(例如,以太网)。在一些情况下,通信子***324可以整体或部分地实现为一个或多个PCIe卡。
在一些实施例中,通信子***324还可以代表可能使用计算机***300的一个或多个用户接收结构化和/或非结构化的数据馈送326、事件流328、事件更新330等形式的输入通信。
作为示例,通信子***324可以配置为从社交网络和/或其他通信服务(例如,馈送、更新、诸如丰富站点摘要(RSS)馈送的web馈送)的用户实时地接收数据馈送326,和/或从一个或多个第三方信息源接收实时更新。
此外,通信子***324还可以配置接收连续数据流形式的数据,其可以包括实时事件的事件流328和/或事件更新330,其本质上可以是连续或无界的,没有明确的结束。生成连续数据的应用的例子可以例如包括传感器数据应用、财务收报机、网络性能测量工具(例如,网络监控和流量管理应用)、点击流分析工具、汽车交通监控、等等。
通信子***324还可以配置为输出结构化和/或未结构化的数据馈送326,事件流328、事件更新330等到一个或多个数据库,所述数据库可以与耦合到计算机***300的一个或多个流数据源计算机通信。
计算机***300可以是各种类型的中一个,包括手持便携式装置(例如,蜂窝电话、计算平板、PDA)、可穿戴装置(例如,Google头戴式显示器)、PC、工作站、主机、资讯站(kiosk)、服务器机架、或任何其他数据处理***。
由于计算机和网络的不断变化的性质,图中所绘示的计算机***300的描述仅旨在作为具体示例。与图中所示的***相比,具有更多或更少部件的许多其他配置是可能的。例如,也可以使用定制的硬件和/或特定的元件可以以硬件、固件、软件(包括小程序)、或组合来实现。另外,可以采用到其他计算装置(例如网络输入/输出装置的连接。基于本文所提供的公开和教导,本领域技术人员将理解实现各种实施例的其他方式和/或方法。
如上面所介绍的,本发明的实施例提供了用于管理处理、存储器、存储体、网络和云计算的***和方法,以显著地改善处理节点的效率和性能,处理节点例如是上述服务器或其他计算机或计算装置中的任一个。本文所述的实施例可以实现为硬件部件的集合,其通过打破当今的商品解决方案中的处理、存储器、存储体、网络和云之间的人为区别,实质上改变了管理处理、存储器和存储体、网络和云计算的方式,以显著地改善商品硬件的性能。例如,硬件元件可以包括标准格式存储器模块,例如双列直插存储器模块(DIMM),其可以被添加到上述计算机***中的任一个。例如,存储器模块可以被添加到诸如服务器节点的商品或“现成”硬件,并作为该节点内的大数据加速器。部件也可以包括一个或多个对象路由器。对象路由器可以例如包括与存储器模块和一个或多个外部对象路由器(例如,机架安装路由器)一起添加到服务器节点的PCIe卡。对象路由器可以用于互连两个或更多个服务器或与存储器模块适配的其他节点,并有助于在这些不同的服务器上管理处理、存储器和存储体,对象路由器可以基于对象地址来转发对象或对象的部分,并参与对象存储器结构中的操作。这些硬件部件可以与商品服务器或其他类型的计算节点以任何组合方式一起使用,以实现对象存储器结构架构。
图4是示出了根据本发明的一个实施例的示范性对象存储器结构架构的框图。如这里所示,架构400包括支持任何数量的应用410a-g的对象存储器结构405。如将在下面更详细地描述的,该对象存储器结构405可以包括任何数量的处理节点,例如已经安装了本文所述的一个或多个存储器模块的一个或多个服务器。这些节点可以通过本文所述的一个或多个内部和/或外部对象路由器来互连。尽管被描述为包括一个或多个服务器,应当注意,对象存储器结构405的处理节点可以包括任何数量的各种不同的计算机和/或计算装置,其适于在本文所述的对象存储器结构405内操作。
根据一个实施例,对象存储器结构405提供基于对象的存储器,其在存储器层而不是在应用层中管理对象存储器结构405的节点的存储器内的存储器对象。即是说,对象和相关联的属性可以在对象存储器结构405的节点中本机地实现和管理,以提供增加的功能而无需任何软件,并通过动态地管理对象特性(包括但不限于,持续性、位置和处理)来增加效率和性能。对象属性也可以传播到应用410a-g。对象存储器结构405的存储器对象可用于消除由地址大小施加在商品服务器或其他节点的存储器空间上的典型尺寸约束。相反,物理寻址可以在存储器对象本身内进行管理,且对象可以进而通过对象名称空间被存取和管理。对象存储器结构405的存储器对象也可以通过在对象内实现和管理,来消除存储器(临时)和存储体(持久)之间的区别。对象存储器结构405也可以通过透明地管理对象(或对象的部分)的位置来消除本地和远程存储器之间的区别,因此所有对象都同时对于所有节点显现为本地的。存储器对象还可以通过对象的方法来消除处理和存储器之间的区别,以将处理置于存储器本身内。换言之,本发明的实施例提供了结合计算和存储以及存储和计算的单级存储器,直接且从而消除了在这些级上通信的多级软件开销以及移动待处理的数据的人为开销。
按照这些方式,通过减少或消除通常与***和应用软件层上的存储器管理、存储体管理、网络、数据目录和数据缓冲器相关联的开销,本文所述的对象存储器结构405的实施例及其部件可以提供透明且动态的性能加速,特别是对于大数据或其他存储器密集型应用。相反,存储器对象在存储器级的管理可以显著缩短存储器体和存储器之间以及存储器和处理之间的通路,从而消除其每一个之间的相关的开销。
实施例提供了一致的、基于硬件的、无限的存储器,其作为存储器对象来管理,具有存储器中加速的性能,跨越所有节点,且在所有节点上可扩展。这允许基于对象和结束应用的透明动态性能加速。使用根据本发明的实施例的架构,应用和***软件可以被视为与单个标准服务器一样和简单,但是附加地允许存储器结构对象捕获启发式(heuristics)。实施例提供多维度的加速性能,包括本地加速。根据一个实施例,与存储器对象相关联的对象存储器结构元数据可以包括触发器,其使得对象存储器结构架构能够本地化,且在使用前将数据移动到快速DRAM存储器。触发器可以是使得存储器***能够基于存储器存取执行任意功能的基本概括。各种实施例还可以包括指令集,其可以基于在与每个存储器对象相关联的元数据中限定的触发器来提供对象存储器结构的唯一指令模型,其支持核心操作和优化,并允许在IMF内以高度并行的方式更高效地执行应用程序的存储器密集部分。
实施例还可以通过将少量的存储器引用替换为复杂应用、存储体和网络堆栈来减少软件路径长度。当在本发明的实施例下,存储器和存储体可直接作为存储器寻址时,可以实现这一点。实施例可以附加地提供高级别存储器操作的加速性能。对于许多情况,对象存储器结构架构的实施例可以消除将数据移动到处理器并移回到存储器的需要(其对于具有三个或更多级别的高速缓存的目前的现代处理器来说是非常低效的)。
图5是示出了根据本发明的一个实施例的示范性存储器结构对象存储器的框图。更具体地,该示例示出了可以如何组织存储器结构对象存储器的应用视图。存储器结构对象地址空间500可以是128位线性地址空间,在这种情况下,对象ID对应于可寻址对象的开始。对象510可以是从212到264字节的可变大小。由于对象存储体是以每个块为基础分配,地址空间500可以在对象内或跨对象高效地稀疏地利用。对象空间500的大小必须足够大,使得不需要垃圾回收,且能够使不相交的***容易地组合。
与每个对象510相关联的对象元数据505可以相对于对象地址空间500是透明的,且可以利用对象存储器结构来管理对象和对象内的块,且可以通过对象存储器结构的应用程序接口(API)由应用515a-g以适当的权限进行存取。该API为应用提供了设定和保持对象存储器结构的功能,例如通过使用修改的Linux libc函数库。通过少量的额外的工作,例如SQL数据库或图形数据库的应用可以利用API来创建存储器对象,并提供和/或扩展对象元数据,以允许对象存储器结构更好地管理对象。对象元数据505可以包括对象方法,其通过动态的基于对象的处理、分发和并行化来实现性能优化。元数据可以使得每个对象具有可定义的安全策略,并在对象内存取封装。
根据本发明的实施例,应用515a-g现在可以存取捕获其工作和/或持久数据的单个对象(例如App0 515a),或者多个对象用于更好的粒度(例如App1 515b)。应用也可以共享对象。根据这些实施例的对象存储器500可以通过物理组织(其将在下面参考图6更详细地描述)和对象存储器动态的组合在物理上实现这种强力的简单应用视图。一般来说,对象存储器500可以组织为分布式分层结构,其为对象存储体和应用程序515a-g创建分层邻域。对象存储器动态交互并利用分层组织来动态地创建对象的局域变量(locals)以及在对象上操作的应用(对象方法)。由于对象方法可以与存储器对象相关联,当对象在存储器结构上迁移和复制时,对象方法自然地获得了对象大小所保证的增加的并行性。结合对象动态的分层结构可以基于对象方法的大小和动态进一步创建邻域的邻域。
图6是示出了根据本发明的一个实施例的示范性对象存储器动态和物理组织的框图。如该示例所示,上述对象存储器结构600可以包括任何数量的处理节点605和610,其经由一个或多个外部对象路由器615通信地耦合。节点605和610中的每一个还可以包括内部对象路由器620以及一个或多个存储器模块。每个存储器模块625可以包括支持任何数量的应用515a-g的节点对象存储器635。一般来说,存储器模块625、节点对象路由器620和节点间对象路由器615可以共享相对于对象存储器635的共同功能及其索引。换言之,底层设计对象可以在所有三者中重新使用,提供除了通过示例描述的那些实施方式之外的适合于各种不同形式因素和类型中的任何一种的硬件的通用设计。
更具体地,节点可以包括单个节点对象路由器620以及一个或多个存储器模块625和630。根据一个实施例,节点605可以包括商品或“现成”服务器,存储器模块625可以包括诸如双列直插存储器模块(DIMM)卡的标准格式存储器卡,且节点对象路由器620可以类似地包括诸如***部件高速互连(PCIe)卡的标准格式卡。节点对象路由器620可以实现覆盖在相同节点605内的存储器模块625和630的(多个)对象存储器635内被保持的对象/块的对象索引。存储器模块625和630中的每一个可以保持对象内的实际对象和块、对应的对象元数据、以及覆盖当前本地存储在该存储器模块的对象的对象索引。存储器模块625和630中的每一个可以按以下方式独立地管理DRAM存储器(快速且相对昂贵)和闪存存储器(不那么快,但是便宜得多),即,使得节点605的处理器(未示出)认为存在闪存数量的快速DRAM。存储器模块625和630以及节点对象路由器620可以通过以与其他索引相同的方式实现的空闲存储体索引来管理空闲存储体。存储器模块625和630可以由处理器高速缓存和处理器存储器引用指令通过标准DDR存储器总线直接存取。按照这种方式,存储器模块625和630的存储器对象可以仅使用常规存储器引用指令来存取,而无需用隐式或显式的输入/输出(I/O)指令。
每个节点625的对象存储器635内的对象可以通过对象存储器结构API(未示出)来创建并保持。节点对象路由器620可以通过libc函数库的修改的对象存储器结构版本和对象存储器结构驱动器(未示出)与API通信。然后,节点对象路由器620可以根据需要更新本地对象索引,朝向根(root)(即朝向节点间对象路由器615)发送命令,并与适当的存储器模块625或630进行通信,以在本地完成API命令。存储器模块625或630可以将管理请求传送回可以适当地处理它们的节点对象路由器620。
根据一个实施例,节点对象路由器620的内部架构可以非常类似于存储器模块625,差异与路由功能相关,例如管理节点存储器对象索引、以及向或者从存储器模块625和630及节点间对象路由器615路由适合的分组。即是说,节点对象路由器620可以具有附加的路由功能,但是不需要实际存储存储器对象。
节点间对象路由器615可以被认为类似于IP路由器。然而,第一个差异在于使用的寻址模型。IP路由器在每个节点使用固定的静态地址,并基于目的IP地址路由到固定的物理节点。然而,对象存储器结构600的节点间对象路由器615利用存储器结构对象地址(OA),其指定对象和对象的具体块。对象和块可以动态地驻留在任何节点处。节点间对象路由器615可以基于对象和块的(多个)动态位置路由OA分组,并且实时动态地追踪对象/块位置。第二个差异在于,对象路由器可以实现对象存储器结构分布式协议,其提供对象/块位置和对象功能的动态性质,例如包括但不限于触发器。节点间对象路由器615可以实现为节点对象路由器620的扩大版本,具有增加的对象索引存储容量、处理速率和总路由带宽。另外,节点间对象路由器615可以连接到多个节点对象路由器和/或多个其他节点间对象路由器,而不是连接到单个PCIe或其他总线或通道以连接到存储器模块。根据一个实施例,节点对象路由器620可以通过PCIe上的直接存储器存取和节点605的存储器总线(未示出)与存储器模块625和630通信。不同的节点605和610的节点对象路由器可以进而通过高速网络(未示出)与一个或多个节点间对象路由器615连接,高速网络例如是使用通过标准IP隧道传输的若干层的千兆位以太网协议或对象存储器结构协议的25/100GE光纤。多个节点间对象路由器可以与相同的网络连接。
在操作中,存储器结构对象存储器可以通过物理组织和对象存储器动态的组合实现上文参考图4和5所述的其强力的简单应用视图。根据一个实施例且如参考图5所介绍的,存储器结构对象存储器可以组织为分布式分层结构,其形成对象存储体和应用515a-g的分层邻域。节点对象路由器可以保持追踪哪个对象或对象的部分对于邻域是本地的。实际的对象存储器可以位于靠近应用515a-g和存储器结构对象方法的节点605或610上。
同样如上文所介绍的,对象存储器动态可以交互并利用分层组织来动态地创建对象的局域变量以及在对象上操作的应用(对象方法)。由于对象方法可以与对象相关联,当对象在节点上迁移和复制时,对象方法自然地获得了对象大小所保证的增加的并行性。结合对象动态的该对象分层结构可以进而基于对象方法的大小和动态创建邻域的邻域。
例如,App0 515a跨越单个级别的对象存储器结构邻域(在这种情况下是节点605)内的多个存储器模625和630。对象移动可以停留在该邻域和其节点对象路由器620内,而无需任何其他通信链路或路由器。沿着分层限定的邻域的自组织性质从性能和最小带宽的角度提供了效率。在另一示例中,App1(Al)515b可以具有相同的特性但是在不同的邻域中,即,在节点610中。App2(A2)515c可以是跨两级分层邻域(即,节点605和610)的并行应用。交互可以在相应的邻域中自成一体。
如上所述,某些实施例可以包括数据类型和元数据架构,某些实施例还可以包括促进本发明的多个优点的数据类型和元数据架构。关于架构,以下描述公开了以下各方面:对象存储器结构地址空间;对象存储器结构相干的对象地址空间;对象存储器结构分布式对象存储器和索引;对象存储器结构索引;对象存储器结构对象;以及扩展的指令执行模型。各种实施例可以包括这些方面中的任何一个或组合。
图7是示出了根据本发明的一个实施例的对象存储器的对象存储器结构分层结构的方面的框图,其将工作集本地化,且允许几乎无限的可扩展性。如本文所公开的,某些实施例可以包括允许对象存储器结构动态地操作以提供对象存储器应用视图的核心组织和数据类型。核心组织和数据类型有助于***的类分形特性,其允许***以与规模无关的方式表现相同。在绘示的示例中,本文所公开的对象存储器结构700可以包括任何数量的处理节点705和710,其经由一个或多个外部对象路由器通信地耦合到更高的级别,外部对象路由器例如是对象路由器715,其可以进而耦合到一个或多个更高级别的对象路由器。
具体地,***可以是由节点(从叶节点到(多个)根节点)构建的胖树。根据某些实施例,每个节点可以仅理解其范围是否包含对象,并且基于是否将请求/响应路由到根或叶。将这些节点放在一起使得***能够动态地扩展到任何容量,而不影响任何节点的操作或视点。在一些实施例中,叶节点可以是由标准存储器芯片构建的DIMM,加上在FPGA内实现的对象存储器结构700。在一些实施例中,标准存储器芯片可以具有嵌入的对象存储器结构700。在各种实施例中,实施方式可以具有远程节点,例如移动电话、无人机、汽车、物联网部件、和/或诸如此类。
为了促进对象存储器结构700的各种有利性质,某些实施例可以采用相干对象存储器结构地址空间。下面的表1标识了根据本公开的某些实施例的地址空间的各个方面的非限制性示例。根据某些实施例,连接到单个对象存储器结构700的本地或分布的所有节点可以被认为是单个***环境的一部分。如表1所示,对象存储器结构700可以提供相干的对象地址空间。在一些实施例中,可以提供128位对象地址空间。然而,其他实施例是可能的。大型对象地址空间有几个原因,包括以下内容。对象地址空间直接唯一地进行寻址,并管理对象存储器结构***内的所有节点上的所有存储器、存储体,并为对象存储器结构***之外的常规存储体提供唯一的地址。对象地址空间可以允许地址被使用一次,而永不进行垃圾回收,这是主要的效率。对象地址空间可以允许区分分配地址空间和分配存储体。换言之,对象地址空间可以稀疏地用作具有简单性、性能和灵活性的有效技术。
如表1进一步所示,对象存储器结构700可以直接支持每个进程的虚拟地址空间和物理地址空间。通过一些实施例,每个进程的虚拟地址空间和物理地址空间可以与x86-64架构兼容。在某些实施例中,单个虚拟地址空间的跨度可能在Linux OS的单个实例中,并且可能通常与单个节点重合。对象存储器结构700可以允许相同的虚拟地址空间跨越多于单个节点。物理地址空间可以是实际物理存储器寻址(例如,在一些实施例中,在x86-64节点内)。
图8是示出了根据本公开的某些实施例的对象地址空间805、虚拟地址810和物理地址815之间的示例关系800的框图。对于对象地址空间805,单个对象的大小可以在范围内变化。作为示例而非限制,单个对象的大小范围可以从2兆字节(221)到16PB(264)。其他范围是可能的。在一些实施例中,在对象存储器结构700中,对象地址空间805可以在对象粒度的基础上分配。在一些实施例中,存储体可以在4k字节块的基础上(例如,块806、807)分配。因此,在一些实施例中,对象地址空间块806、807可以对应于x86-64架构内的4k字节页面大小。当创建对象地址空间805时,只能存在地址空间和对象元数据。当以每个块为基础分配存储体时,可以有存储在对象的对应的块中的数据。可以以稀疏或非稀疏方式分配块存储体,并预先分配和/或按需分配。例如,在一些实施例中,软件可以使用对象作为哈希函数,并且只为有效的哈希分配物理存储体。
参考图8的示例,在节点820、825内,其在一些实施例中可以是常规服务器,可以在与虚拟地址810对应的动态基础上分配对应于物理地址815的物理页面。由于对象存储器结构700实际上通过对象存储器结构DIMM提供节点820、825内的物理存储器,当分配虚拟地址段811、812、813、814时,也可以创建对应于特定段811、812、813、814的对象地址空间805对象。这使得节点820、825上的相同或不同的虚拟地址810寻找或访问相同的对象。对象内的块/页面在节点820、825内所位于的实际物理地址815可以在节点820,825内或上对于应用软件透明地随时间变化。
对象存储器结构700的某些实施例可以提供关键优点:对象存储器结构700的实施例可以提供集成的寻址、具有透明不变指针的对象(不需要旋转(swizzle))、以及跨节点访问大地址空间的方法—某些实施例与x84-64、Linux和应用兼容。通常,***具有许多不同的地址(例如,对于具有单独的地址空间、扇区、柱面、物理磁盘、数据库***、文件***、等等的存储器地址),这需要显著的软件开销,以在不同的地址层之间转换、缓冲及移动对象和块。使用集成寻址来寻址对象、及对象内的块以及使用对象命名空间,通过实现跨所有节点/***不变的单级寻址而消除了软件层。在足够大的地址空间的情况下,一个地址***与特定数据库应用程序和一起工作的所有这些***并不是不变的。
因此,节点可以包括存储器模块,其可以存储并管理一个或多个存储器对象,其中至少部分地基于在每个对象基础上使用单级对象寻址方案分配的对象地址空间,用一个或多个存储器对象中的每一个来管理存储器和存储体的物理地址。节点可以配置为利用该对象寻址方案来可操作地耦合到一个或多个附加节点,以作为对象存储器结构的一组节点来操作,其中该组节点操作以使得该组节点的所有存储器对象至少部分地基于该对象寻址方案而可访问,该对象寻址方案为所述一个或多个存储器对象限定不变的对象地址,所述对象地址相对于存储器模块内的一个或多个存储器对象的物理存储器存储位置和存储位置变化且跨越与对象存储器结构相接的所有模块是不变的。相应地,不管对象是否在单个服务器中,对象地址在模块内以及跨越对象存储器结构相接的所有模块是不变的。即使对象可以存储在任何或所有模块上,对象地址仍然是不变的,无论当前或将要把对象存储在哪个物理存储器位置。以下提供某些实施例的细节,其可以通过对象地址空间和对象地址空间指针提供这样的优点。
对象存储器结构700的某些实施例可以支持多种各种指针格式。图9是示出了根据本公开的某些实施例的对象大小905和对象地址空间指针910之间的示例关系900的框图。下面的表1表2标识了根据本公开的某些实施例的对象地址空间指针910的方面的非限制性示例。如表1表2所示,一些示例实施例可以支持三种指针格式。对象地址空间格式可以是对象存储器结构本地128位格式,并且可以为对象内的任何对象和偏移提供具有完全可寻址性的单个指针。对象存储器结构700可以支持附加的格式,例如,64位格式的两种附加格式,以允许与x86-64虚拟存储器和虚拟地址的直接兼容性。一旦通过对象存储器结构API(在一些实施例中,可以在Linux libc函数库中对应用程序透明地处理)建立对象存储器结构对象和虚拟地址段之间的关系,标准x86linux程序可以直接引用对象(x86段)内的数据,高效且透明地利用x86-64寻址机制。
表1表2和下面的表3标识了根据本公开的某些实施例的对象地址空间指针相对于对象大小的方面的非限制性示例。对象地址空间的实施例可以支持多个段大小,例如,如表1表2和下面的表3所示的从221到264的六个段大小。对象大小对应于x86-64虚拟存储器段和大页面大小。对象可以从模0对象大小边界开始。对象地址空间指针910可以分解为ObjStart和ObjOffset字段,其大小取决于对象大小,如下面的示例所示。ObjStart字段对应于对象的对象地址空间开始,也对应于ObjectID。ObjOffset是从零到(ObjectSize-1)的范围中的无符号值,指定对象内的偏移。对象元数据可以指定对象地址空间指针910的对象大小和对象存储器结构解释。任意大小和稀疏度的对象都可以仅通过为对象内的感兴趣块分配存储体来指定。
由于大部分应用的性质及对象存储器结构700的对象性质,大多数寻址可以相对于对象。在一些实施例中,所有对象存储器结构地址指针格式可以由处理器本地存储和加载。在一些实施例中,对象相对和对象虚拟地址可以直接使用x86-64寻址模式。对象虚拟地址指针可以是或包括在x86-64段和对应的对象存储器结构对象内工作的进程虚拟地址。对象存储器结构对象地址空间可以通过使用对象虚拟地址作为对象偏移来计算。对象相对指针可以是或包括到x86-64虚拟地址段的偏移,因此基准加索引寻址模式完美地运行。对象存储器结构对象地址空间可以通过使用对象相对作为对象偏移来计算。下面的表3标识了根据本公开的某些实施例的从作为对象大小的函数的对象虚拟地址或对象相对指针生成128位对象地址空间的细节的非限制性示例。
如本文所公开的,某些实施例可以包括对象存储器结构分布式对象存储器和索引。使用分布式索引,各个节点可以在每个对象的基础上索引本地对象和对象的块。对象存储器结构分布式对象存储器和索引的某些实施例可以至少部分地基于细胞自动机和胖树的交叉点概念。具有实时动态索引的现有的分布式硬件和软件***使用两种方法:集中式索引或分布式单一概念索引。对象存储器结构的实施例可以使用在胖树分层网络之上覆盖独立的本地索引函数的新方法。
图10是示出根据本公开的某些实施例的示例对象存储器结构分布式对象存储器和索引结构1000的框图。结构1000的叶处是任何数量的处理节点1005和1010对象存储器1035。这些对象存储器1035均可以具有描述当前本地存储在对象存储器1035中的对象和对象的部分的对象索引。一些对象存储器1035(其在一些实施例中可以是单个节点内的DDR4-DIMM接口兼容卡)与对象存储器结构节点对象索引1040逻辑连接。对象存储器结构节点对象索引1040均可以具有描述当前本地存储和/或当前存储在对象存储器1035中的对象和对象的部分的对象索引。在一些实施例中,对象存储器结构节点对象索引1040可以实例化为PCIe卡。通过一些实施例,对象存储器结构对象存储器DDR4-DIMM和对象存储器结构节点对象索引PCIe卡可以通过PCIe和存储器总线进行通信。
在一些实施例中,除了对象存储器结构节点对象索引1040跟踪所连接的任何对象存储器1035内的所有对象和对象的部分,并将对象和对象的部分映射到特定对象存储器1035,对象存储器结构节点对象索引1040的工作方式与对象存储器1035内的对象索引相似。树中的下一个级别是可由对象存储器结构路由器提供的节点对象路由器对象索引1020,所述对象存储器结构路由器对其所连接的所有对象存储器结构节点对象索引1040执行相同的对象索引功能。节点对象路由器对象索引1020均可以具有描述当前本地存储在在较低级别(例如,1040、1035)中的对象和对象的部分的对象索引。因此,根据一些实施例,路由器模块可以具有目录和路由器功能,而存储器模块可以具有目录和路由器功能,以及存储存储器对象的存储器功能。然而,其他实施例是可能的,并且在替代实施例中,路由器模块可以附加地具有存储存储器对象的存储器功能。
可由结构1000示出的模式可以继续到更高级的节点间对象路由器对象索引1015,对象路由器对象索引1015可以由对其所连接的所有对象存储器结构节点对象索引、等等,一直到树的根,执行相同的对象索引功能的对象存储器结构路由器提供。因此,在某些实施例中,每个对象索引和每个级别可以独立地执行相同的功能,但是将对象索引和级别聚合为树形网络可以提供具有很大可扩展性的实时动态分布式索引,其有效地跟踪和本地化存储器对象和块。附加的属性可以是,树、分布式索引和高速缓存的组合使得能够显著地降低带宽要求。这可以由对象存储器结构路由器描绘为叶(在这种情况中向下)的分层指示的邻域来说明。随着限定的分层结构的级别的增加,聚合对象存储器高速缓存能力也随之增加。因此,当应用工作集适配在给定级别的聚合容量内时,在朝向根的级别上的带宽要求可以变为零。
如本文所公开的,每个处理节点配置为利用一组算法来可操作地耦合到一个或多个附加处理节点,以独立于该组处理节点的规模作为一组处理节点来操作。该组节点可以操作,使得该组节点的所有存储器对象可由该组处理节点的任何节点访问。在处理节点,对象存储器模块可以存储并管理存储器对象(其每一个在其中本地实例化且在存储器层被管理)、以及对象目录(其在每个对象的基础上索引存储器对象及其块)。存储器模块可以至少部分地基于一个或多个对象目录来处理请求,该请求可以从应用层接收。在一些情况下,可以从一个或多个附加处理节点接收请求。响应于请求,给定的存储器模块可以处理对应于给定请求的对象标识符,且可以确定存储器模块是否具有被请求的对象数据。如果存储器模块具有被请求的对象数据,则存储器模块可以至少部分地基于被请求的对象数据来生成对该请求的响应。如果存储器模块没有被请求的对象数据,则对象路由模块可以将第一请求路由到树中的另一节点。请求的路由可以至少部分地基于对象路由模块响应于该请求而做出关于对象数据的位置的确定。如果对象路由模块至少部分地基于对象路由模块的目录功能来识别位置,则对象路由模块可以向该位置(即,具有被请求的对象数据的较低级别的节点)向下路由该请求。然而,如果对象路由模块确定位置是未知的,则对象路由模块可以将该请求路由到根节点(即,到一个或多个更高级的对象路由器—节点间对象路由器),以进一步在每个级别进行确定,直到被请求的对象被定位、访问并返回到原始的存储器模块。
另外,如本文所公开的,可以针对对象元数据中的对象和/或对象内的块来限定触发器。基于对象的触发器可以预测将需要什么操作,并且可以通过提前执行操作来提供加速。当节点接收到指定对象的请求(例如,使用128位对象地址)时,节点使用对象目录来确定节点是否具有对象的任何部分。如果是这样,则对象目录指向每个-对象树(一个单独的树,其大小基于对象的大小),其可以用于本地定位感兴趣的块。可以存在附加的触发元数据,其中针对特定的感兴趣块,当块被传送到/通过存储器模块时,其指示以预定义的方式来解释特定的地址。触发器可以相对于对象内的一个或多个数据块在每个块的基础上指定一个或多个预定义的硬件和/或软件动作(例如,获取特定地址、运行更复杂的触发程序、执行预获取、计算这其它三个块、并向软件发送信号、等等)。触发器可以对应于硬件方式,来随着对象流过对象存储器结构的任何存储器模块、在需要这样的动作之前动态地移动数据和/或执行其他动作。相应地,当具有一个或多个触发器的特定存储器对象位于相应的存储器模块,并且作为处理一个或多个其他请求的相应的存储器模块的一部分被访问时,可以实现这样的动作。
图11和图12是示出了根据本公开的某些实施例的在对象索引的分布式性质如何与对象存储器结构协议分层操作和互操作的逻辑层面上的示例的框图。对象存储器结构协议分层的某些实施例可能与常规分层通信协议类似,但具有重要差异。通信协议可以基本上是无状态的,但是对象存储器结构协议的实施例可以保持对象状态并直接实现分布式和并行执行,而不需要任何集中协调。
图11示出了根据本公开的某些实施例的完全在对象存储器1135内执行的对象存储器命中情况1100。对象存储器1135可以接收处理器请求1105或后台触发器活动1106。对象存储器1135可以基于处理器物理地址来管理作为高速缓存1130的本地DRAM存储器。最常见的情况可能是被请求的物理地址存在,并且它立即被返回到处理器,如1110所示。对象存储器1135可以使用触发器将数据从较慢的闪存存储器透明地移动到快速DRAM存储器中,如1115所示。
对于未命中的情况1115或后台触发器活动1106,一些实施例可以包括以下中的一个或组合。在一些实施例中,对象存储器结构对象地址可以从物理地址生成,如块1140所示。对象索引可以从对象地址空间生成本地闪存存储器中的位置,如块1145所示。对象索引查找可以通过两种方法加速:(1)用于索引查找的基于硬件的辅助;以及(2)对象索引查找的结果在本地高速缓存。对象存储器结构高速缓存一致性可以用于确定本地状态是否足以满足预期的操作,如块1150所示。基于索引,可以执行查找以确定对象和/或对象内的块是否是本地的,如块1155所示。在命中的情况1160下,可以传送对应于请求1105或触发器活动1106的数据,如1165所示。并且,在一些实施例中,当缓存状态足够时,可以做出将块高速缓存到DRAM中的决定。
图12示出了根据本公开的某些实施例的对象存储器未命中的情况1200以及对象存储器和对象索引的分布性质。对象存储器1235可以经历前面描述的步骤,但是路由/决定阶段125可以确定对象和/或块是否是本地的。结果,算法可以涉及请求朝向根向上遍历1270树,直到找到对象/块。可以遍历任何数量的级别和对应的节点元素,直到找到对象/块。在一些实施例中,在沿着路径的每个步骤中,可以遵循相同或相似的过程步骤来独立地确定路径上的下一步。不需要中央协调。另外,如果本文所公开的,对象存储器结构API和触发器通常在叶中执行,但可以在任何索引以分布式方式执行。
作为简化示例,在所示的情况下,请求从对应于对象存储器1235的对象存储器结构节点对象索引1240向上遍历1270到对象路由器1220。对象路由器1220及其对象路由器对象索引可以将请求对象/块识别为朝向对象存储器结构节点对象索引1241从分支向下。因此,在对象路由器1220的索引,请求可以然后朝向可供给对象/块的(多个)叶路由1275。在示出的示例中,对象存储器1236可以供给对象/块。在对象存储器1236,可以执行存储器访问/高速缓存1241(其可以包括对于执行的命中情况的之前描述的过程步骤),且对象/块可以返回1280到原始请求叶1235以进行最终返回1290。再次地,在一些实施例中,在沿着路径的每个步骤,可以遵循相同或相似的过程步骤来独立地确定路径上的下一步。例如,原始请求叶1235可以执行对于命中情况的之前描述的过程步骤1285,然后返回1290请求的数据。
如本文所公开的,单个对象存储器结构索引结构的操作、对象存储器结构索引结构可以基于相同的树实施方式的若干层。使用树结构的某些实施例可以在对象存储器结构内具有若干用途,如下表4所描述。然而,各种其他实施例是可能的。
图13是示出了根据本公开的某些实施例的鉴于对象存储器结构分布式对象存储器和索引结构的叶级对象存储器结构1300的示例的框图。在一些实施例中,叶级对象存储器结构1300可以包括一组嵌套的B树。根树可以是对象索引树(OIT)1305,其可以索引本地存在的对象。对象索引树1305的索引可以是对象存储器结构对象地址,因为对象从对象大小模零开始。对于每个对象(该对象至少有本地存储在对象存储器内的单个块),可以有一个对象索引树1305。
对象索引树1305可以向每个对象索引树(POIT)1310中的一个或多个提供一个或多个指针(例如,本地指针)。例如,每个本地对象可能有每个对象索引树1310。每个对象索引树1310可以索引对象元数据和属于本地存在的对象的块。每个对象索引树1310叶指向DRAM 1315和闪存1320中的对应的元数据和块(例如,基于对象内的偏移)。特定块的叶可以指向DRAM 1315和闪存1320,例如在叶1325的情况下。对象元数据和数据的组织在本文中进一步公开。
所用的树结构可以是友好地写入时复制(COW)的修改的B树。COW是一种优化策略,其在大多数数据未被修改情况下,可以使多个任务高效地共享信息,而无需复制所有存储体。COW将修改的块存储在新的位置,其适用于闪存存储器和高速缓存。在某些实施例中,所用的树结构可以类似于开源Linux文件***btrfs的树结构,主要区别在于对于单个对象/存储器空间的利用、硬件加速、以及之前所述的独立本地索引的聚合能力。通过利用B树的多个层,可以有更高程度的共享和更少的波动变化。应用(例如文件***和数据库存储管理器)可以利用这种基础的高效机制进行更高级别的操作。
图14是示出根据本公开的某些实施例的对象存储器结构路由器对象索引结构1400的示例的框图。通过一些实施例,对象存储器结构路由器对象索引和节点对象索引可以对每个对象使用对象索引树1405和每个对象索引树1410的几乎相同的结构。对象索引树1405可以索引本地存在的对象。对象索引树1405中所述的每个对象可以具有每个对象索引树1410。每个对象索引树1410可以索引本地存在的块和段。
对象存储器结构路由器对象索引和节点对象索引可以索引存在于树结构1400内的子项1415中的对象和对象内的块,即(多个)子路由器或叶对象存储器。每个对象索引树1410中的叶内的条目具有表示对象内的多个块的能力。由于对象的块可能倾向于自然地聚集在一起,并且由于后台管理,每个对象趋向于在更靠近树根的对象索引中被更加紧凑地表示。对象索引树1405和每个对象索引树1410可以允许在对象和块级上实现重复复制,这是由于多个叶可以指向相同的块,例如如同叶1425和1430中的情况。索引写入时复制(COW)支持允许例如仅修改对象的待更新的块。
图15A和15B是根据本公开的某些实施例的索引树结构的非限制性示例的框图,其包括节点索引树结构1500和叶索引树1550。索引树字段的各个方面的进一步非限制性示例在下表5中标识。其他实施例是可能的。单独的索引树可以包括节点块和叶块。每个节点或叶块可以基于类型和大小包括可变数量的条目。类型指定节点块、叶和/或叶块、节点的类型。
大小独立地指定LPointer和Index Val(或对象偏移)的大小。在平衡的树内,单个块可以指向所有节点块或所有叶块。为了传递最高性能,树可能会变得不平衡,例如在通过树的所有路径的级别的数量是等同的情况下。节点块和叶块可以提供字段来支持不平衡的树。后台活动可能会重新平衡作为其他后台操作一部分的树。例如,OIT中的内部节点(非叶)可以包括LPointer和NValue字段。NValue可以包括对象大小和Object ID。Object ID需要107(128-21)位来指定最小的可能对象。每个LPointer可以指向内部节点或叶节点的下一个级别。LPointer可能需要足够的位来表示其本地存储体中的所有块(大约32位表示16TB)。对于POIT中的节点,NValue可以由基于对象大小的对象偏移组成。对象大小可以在NSize字段内进行编码。大小字段可以使得节点能够基于使用来保有最大数量的LPointer和NValue字段。索引树根节点可以存储在多个闪存装置上的多个位置,以实现OIT的可靠的冷启动。树根块更新可以在镜像之间交替,以提供磨损均衡。
默认情况下,每个POIT Leaf条目可以指向单个块的位置(例如,4k字节)。POITLeaf OM条目和POIT Leaf路由器(POIT Leaf Router)条目可以包含一个字段,以允许支持超出单个块的支持,从而通过能够匹配持久存储体的页面大小,实现更加压缩的索引树、导致更高的索引树性能和更高的持久存储性能。
节点和叶可以通过在每个4k块的开始处的类型字段来区分。NNize字段可以编码节点内的NValue字段的大小,并且LSize字段可以编码叶内的LValue字段的大小。LPointer字段的大小可以由固定用于单个装置(例如,RDIMM、节点路由器、或路由器)的本地存储体的物理寻址确定。LPointer可以仅在单个装置中有效,而不是跨装置有效。LPointer可以指定相应的块是否存储在持久存储器(例如,闪存)或更高速存储器(例如DRAM)中。存储在DRAM中的块也可以具有在持久存储器内分配的存储体,从而存在两个条目,以指示块、节点或叶的两个存储位置。在单个块类型内,所有NValue和/或LValue字段可以是单个大小。
OIT节点可以包括几个节点级字段(类型(Type)、NSize和LParent)以及包括OIT节点(OIT Node)条目或OIT叶(OIT Leaf)条目的条目。由于索引树有时可以不平衡,节点可以包括节点和叶条目两者。POIT节点可以包括一个或多个节点级字段(例如,Type、NSize和/或LParent)以及包括OIT叶条目的条目。OIT叶类型可以通过otype字段来区分。OTI Leaf(对象索引表叶)可以指向指定对象块和对象元数据的POIT(每个对象索引表)的头部。OITLeaf R可以指向POIT的远端头部。这可以用于引用跨越网络驻留在远程装置上的对象。该叶可以使远程装置能够管理对象。
POIT Leaf类型可以由ptype字段区分。POIT Leaf OM可以指向对象存储器的块或元数据。Object offset字段可以比位数大一位,以指定特定对象大小的偏移,从而指定元数据。例如,对于221的对象大小,可能需要10个位(9加1位)。实施方式可以选择以二进制补码(two's complement)形式(符号形式,第一块元数据为-1)表示偏移,或者以二进制反码(one's complement)表示,其中附加位表示元数据(元数据的第一块由1表示,元数据位设定)。
POIT Leaf Remote可以指向远离本地DIMM的对象存储器的块或元数据。这可以用于通过流包接口引用跨越网络驻留在远程装置上的块。例如,该装置可以是移动装置。该叶可以使得对象存储器结构硬件能够在块的基础上对于远程装置来管理一致性。
POIT Leaf Router可以在节点对象路由器和节点间对象路由器内使用,以用于为最多16个下游节点中的每一个指定对应的对象存储器结构块对象地址的状态。如果在节点对象路由器内,则在一些实施例中最多可以指定16个DIMM(或在其他实施例中更多)。如果在节点间对象路由器内,则在一些实施例中可以指定多达16个(在其他实施例中更多)下游路由器或节点对象路由器(例如,服务器节点)。块对象地址可以基于有效的状态组合存在于一个或多个下游装置中。
索引查找、索引COW更新和索引高速缓存可以在对象存储器、节点对象索引和对象存储器结构路由器中的对象存储器结构硬件中得到直接支持。除了对象存储器结构索引的节点格式之外,还可以支持应用定义的索引。这些可以通过对象存储器结构API进行初始化。应用定义的索引的优点可以是可以支持基于对象存储器结构硬件的索引查找、COW更新、索引高速缓存和并行性。
各种实施例可以提供后台操作和垃圾回收。由于对象存储器结构内的每个DIMM和路由器可以在本地保持其自己的目录和存储体,可以在本地且独立地完成后台操作和垃圾收集。每个DIMM或路由器可以具有用于存储索引树和数据块的存储器分层结构,其可以包括片上高速缓存、快速存储器(例如,DDR4或HMC DRAM)、以及其可以管理的较慢的非易失性存储器(例如,闪存)、以及索引树。
分层结构内的每个级别可以执行以下操作:(1)树平衡,以优化查找时间;(2)引用计数和老化,以确定何时块在不同存储体之间移动;(3)分层结构的每个本地级别的自由列表更新,以及保持本地分层结构的主要级别的填充水平参数;(4)将周期性填充水平递送到分层结构的下一级,以使得能够在本地服务器上的DIMM之间和对象存储器结构分层结构的级别之间实现存储体的负载平衡;(5)如果路由器,则在子节点之间进行负载平衡。
对象存储器结构可以使用块引用计数来指示访问的相对频率。较高的值可以指示随时间更频繁地使用、较低的值指示较不频率的使用。当块引用计数与持久存储器中的块相关联时,具有最低值的块可以是移动到具有更多可用空间的另一个DIMM或节点的候选。每当块被加速到易失性存储器中时,引用计数可以增加。如果该值不在易失性存储器中,低频率后台扫描可以递减该值,如果该值在易失性存储器中,则可以递增该值。可以预期,扫描算法可以随时间演变为基于递增量或递减量或引用值,从而提供适当的滞后。频繁加速到或存在于易失性存储器中的块可以具有较高的引用计数值。
当块引用计数与易失性存储器中的块相关联时,具有最低值的块可以是移回另一个DIMM或节点内的持久存储器或存储器的候选者。当块移动到易失性存储器中时,可以基于启动移动的指令或用例来初始化引用计数。例如,需求未命中可以将值设置为中点,并且推测性提取(speculative fetch)可以将其设置为四分之一点。单次使用可能会将其设置为低于四分之一点。适度的频率后台扫描可能会使得引用值递减。因此,需求提取可以在初始时被加权高于推测性提取。如果没有使用推测性提取,则可能会迅速降低到可能首先被替换的较低引用值。单次使用可以被加权较低,以作为比其他块更早的替代候选者。因此,单次使用和推测性块可能不会替代其他频繁访问的块。
图16是示出根据本公开的某些实施例的示例物理存储器组织1600的方面的框图。对象存储器结构可以提供多种访问对象和块的方法。例如,直接方法可以基于对象存储器结构或装置中的执行单元,所述执行单元可以直接生成完整的128位存储器结构地址,其可以具有完整的直接访问。
相关联的方法可以考虑具有有限虚拟地址和物理地址空间的常规服务器。对象存储器结构可以提供API,来动态地将对象(例如,段)和块(例如,页面)与较大的对象存储器结构128位存储器结构地址相关联。由AssocObj和AssocBlk操作提供的关联可以被与标准处理器存储器管理相接的对象存储器结构驱动器(例如,Linux驱动器)和对象存储器结构***库(Syslib)使用,以使对象存储器结构能够对操作***和应用表现为透明的。对象存储器结构可以提供:(a)将处理器段及其虚拟地址的范围与对象存储器结构对象相关联的API,从而确保无缝指针和虚拟寻址兼容性;(b)将虚拟地址空间的页面和对应的对象存储器结构块与对象存储器结构DIMM内的本地物理存储器的页面/块相关联的API(这可以确保处理器存储器管理和物理寻址兼容性);和/或(c)划分为标准常规服务器DIMM插槽的本地物理存储器,每个DIMM插槽具有512GB(239字节)。在每个槽的基础上,如下图所示,对象存储器结构可以保留由已经与对应的物理地址相关联的每个块的对象存储器结构地址的物理地址索引的附加目录,如下图所示。
图16是示出根据本公开的某些实施例的示例物理存储器组织1600的框图。用于物理存储器1630的物理存储器目录1605可以包括:对象存储器结构对象块地址1610;对象大小1615;引用计数1620;修改的字段1625,其可以指示块是否相对于持久存储器被修改;和/或写使能(write enable)1630,其可以指示本地块高速缓存状态是否足以进行写入。例如,如果高速缓存状态是复制,则写入可能被阻止,对象存储器结构将可能具有足够的状态以进行写入。在基于引导的对象存储器结构DIMM SPD(串行存在检测)配置上,物理地址范围可以由***BIOS分配给每一个。
图17A是根据本公开的某些实施例的示例对象寻址1700的框图。图17B是示出了根据本公开的某些实施例的对象存储器结构指针和块寻址1750的示例方面的框图。对象存储器结构对象1705可以包括对象数据1710和元数据1715,两者在一些实施例中被划分为4k块作为存储分配的一个单元,由对象存储器结构地址空间1720引用。对象起始地址可以是ObjectID 1755。数据1710可以作为自ObjectID 1755的正偏移来访问。最大的偏移可以基于ObjectSize 1760。
对象元数据1715可以作为自ObjectStart 1725(ObjectID)的负偏移来访问。元数据1715也可以由对象地址空间1720的顶部1/16中的对象存储器结构地址引用。特定对象元数据的起始可以是2128-2124+ObjStart/16。该布置可以使得POIT能够紧凑地表示元数据1715,且使得元数据1715具有对象地址空间,从而可以像数据一样一致地管理它。尽管可以为对象数据1710和元数据1715分配完整的对象地址空间,但是可以以块为基础来稀疏地分配存储体。在最低限度上,在一些实施例中,对象1705具有为元数据1715的第一块分配的单个存储块。对象访问权限可以通过对象存储器结构文件***ACL等来确定。由于对象存储器结构以4k块为单位管理对象,所以对象存储器结构对象存储器中的寻址是被称为块对象地址1765(BOA)的块地址,其对应于对象地址空间[127:12]。BOA[11:0]可以由ObjectSize(BOA[7:0])和对象元数据指示(BOA[2:0])的对象存储器使用。
图18是示出了根据本公开的某些实施例的对象元数据1805的示例方面1800的框图。下面的表6表示每个某些实施例的元数据1805的第一块1810的元数据。在一些实施例中,元数据1805的第一块1810可以保有如图所示的对象的元数据。
***定义的元数据可以包括任何与Linux相关的数据,以便跨服务器无缝地协调某些对象的使用。应用定义的元数据可以包括来自文件***或数据库存储管理器的应用相关的数据,以实现由应用管理的对象之间的搜索和/或关系。
对于具有少量触发器的对象,基础触发器可以存储在第一块内;否则,触发器B树根可以引用对应的对象的元数据扩展区域。触发器B树叶可以指定基础触发器。基础触发器可以是单个触发器动作。当需要大于单个动作时,可以调用触发程序。触发程序被调用时,它们可能驻留在扩展区域中。远程对象表可以指定可以通过扩展指令集从该对象可访问的对象。
某些实施例可以提供扩展指令执行模型。扩展执行模型的一个目标可以是提供轻量级的动态机制来提供存储器和执行并行性。动态机制实现了数据流执行方法,使得能够将高度的并行性与对象的部分的访问延迟的变化的容限相结合。工作可以基于实际的依赖关系来完成,而不是单个访问延迟耽搁计算。
各种实施方案可以包括以下的一种或组合。负载和存储器引用可以是拆分事务,具有单独的请求和响应,使得线程和存储器路径在整个事务期间不被利用。每个线程和执行单元能够在接收到响应之前向对象存储器结构(本地和远程)发出多个负载。对象存储器结构可以是处理来自多个源的多个请求和响应的流水线,从而可以充分利用存储器资源。执行单元能够以与发出请求不同的顺序来接受响应。执行单元可以切换到不同的线程以被完全利用。对象存储器结构可以实现策略以动态地确定何时移动对象或对象的部分,而不是移动线程或创建线程。
图19是示出了根据本公开的某些实施例的示例性微线程模型1900的各方面的框图。线程可以是执行的基本单元。线程可以至少部分地通过指令指针(IP)和帧指针(FP)来定义。指令指针可以指定正在执行的当前指令。帧指针可以指定线程的当前执行状态的位置。
线程可以包括多个微线程。在所示的示例中,线程1905包括微线程1906和1907。然而,线程可以包括更多数量的微线程。特定线程的微线程可以共享相同的帧指针,但具有不同的指令指针。在所示的示例中,帧指针1905-1和1905-2指定相同的位置,但指令指针1910和1911指定不同的指令。
微线程的一个目的可以是通过启用多个异步待机存储器操作来启用数据流,如在线程内的操作。微线程可以由叉(fork)指令的版本创建,并且可以由加入指令重新加入。扩展指令集可以通过对自帧指针的偏移执行操作,来将帧指针作为堆栈或寄存器集合的顶部处理。负载和存储指令可以在帧和对象之间移动数据。
图20是示出根据本公开的某些实施例的代码、帧和对象的示例关系2000的各方面的框图。具体地,图20说明了如何通过帧2010引用对象数据2005。缺省值可以用于负载和存储指令,以在本地范围内引用对象2005。通过访问控制和安全策略,可以以安全的方式给出对超出本地范围的对象2005的访问。一旦给出了这种访问权限,就可以以相同的效率访问本地和非本地范围内的对象2005。对象存储器结构通过鼓励高效的对象封装来鼓励强大的安全性。通过共享帧,微线程提供了非常轻量级的机制,来实现动态和数据流存储器和执行并行性,例如,大约10-20微线程或以上的量级。多线程实现了几乎无限的基于存储器的并行性。
图21是示出根据本公开的某些实施例的微线程并发性2100的示例的方面的框图。具体地,图21示出了对几个随机位置的值求和的简单示例的并行数据流并发性。根据本公开的某些实施例,串行版本2105和并行版本2110是并列的。并行版本2110几乎可以快n倍,因为负载是并行重叠的。
再次参考图20,该方法可以以动态方式扩展到交互式和递归方法。现在可以在没有使用预取、以最小的局部性的情况下,实现提前预取的优点。当创建对象时,单个默认线程2015(单个微线程2020被创建)可以正在等待从默认线程2015的开始消息开始。默认线程2015然后可以使用线程创建微线程,或使用叉指令的版本来创建新线程。
在一些实施示例中,指令指针和帧指针两者可以被限制到扩展元数据区域1815,扩展元数据区域1815从块2开始并延伸到段大小(SegSize)/16。随着对象的数量、对象大小和对象容量的增加,线程和微线程并行性可以增加。由于线程和微线程可以与对象绑定,随着对象移动和分配,线程和微线程也可以这样。对象存储器结构的实施例可以具有将对象或对象的部分移动到线程或将线程分配到(多个)对象的动态选择。这可以通过由扩展执行模型实现的封装对象方法来促进。
在前面的描述中,为了说明的目的,以特定顺序描述了方法。应当理解,在替代实施例中,可以以与所描述的顺序不同的顺序执行方法。还应当理解,上述方法可以由硬件部件执行,或者可以体现在机器可执行指令的序列中,其可以用于引起机器(例如用指令编程的逻辑电路或通用或专用处理器)来执行方法。这些机器可执行指令可以存储在一个或多个机器可读介质上,例如CD-ROM或其他类型的光盘、软盘、ROM、RAM、EPROM、EEPROM、磁盘或光卡,闪存存储器、或其他适用于存储电子指令的机器可读介质的类型。替代地,方法可以由硬件或软件的组合来执行。
虽然本文已经详细描述了本发明的说明性和目前优选的实施例,但是应当理解,本发明的构思可以以各种其他方式实施和使用,并且所附权利要求旨在被解释为包括这样的变型,除了受现有技术的限制以外。
Claims (23)
1.一种对象存储器结构,包括:
多个对象存储器模块,每个对象存储器模块包括存储一个或多个存储器对象的对象存储体、存储器对象元数据、以及存储器模块对象目录,其中:
每个存储器对象和/或存储器对象的部分在所述对象存储器模块内本地创建,并在存储器层由所述对象存储器模块管理;以及
所述存储器模块对象目录索引所述对象存储器模块内的所有存储器对象和/或存储器对象的部分,其中每个对象存储器模块还包括索引本地存储器对象的对象索引树,其中所述对象索引树包括节点块和叶块,其每一个由类型属性区分,其中所述叶块中的一个或多个指向持久存储器和/或更高速存储器中的本地存储器对象的位置;以及
对象路由器的分层结构,其通信地耦合所述多个对象存储器模块,其中:
对象路由器的所述分层结构的每个对象路由器包括路由器对象目录,其中所述路由器对象目录索引沿着源于所述对象路由器的分层结构中的下降线、包含在所述对象路由器下的所述对象存储器模块中的所有存储器对象和/或存储器对象的部分;以及
至少部分地基于所述路由器对象目录,对象路由器的所述分层结构适于聚合地表现为通信地耦合到所有的对象存储器模块的单个对象目录,且适于至少部分地基于所述路由器对象目录来处理请求。
2.如权利要求1所述的对象存储器结构,其中对象路由器的所述分层结构根据分层树网络进行操作。
3.如权利要求2所述的对象存储器结构,其中沿着源于所述对象路由器的分层结构中的所述下降线、在所述对象路由器下的所述对象存储器模块包括朝向分层树网络的叶直接通信耦合到相应的对象路由器的对象存储器模块。
4.如权利要求3所述的对象存储器结构,其中朝向所述分层树网络的叶对应于远离所述分层树网络的根的对象路由器与所述分层树网络的叶处的对象存储器模块之间的最直接的路径。
5.如权利要求1所述的对象存储器结构,其中聚合地表现为通信地耦合到所有的对象存储器模块的单个对象目录并处理所述请求包括:
响应于所述请求中的每个请求,所述对象路由器中的至少一个使用相应的路由器对象目录来查找对应于所述请求的对象,以及:
在识别所述对象的引用在相应的路由器对象目录中之后,将所述对象转发到所述分层结构中的叶;
在识别所述对象的引用不在相应的路由器对象目录中之后,将第一请求转发到所述分层结构中的根。
6.如权利要求1所述的对象存储器结构,其中从应用层接收所述请求中的至少一个。
7.如权利要求1所述的对象存储器结构,其中所述对象索引树包括指向每个本地存储器对象的每个对象索引树的指针,其中每个本地存储器对象的每个对象索引树在块的基础上索引本地呈现给所述本地存储器对象的存储器对象数据和存储器对象元数据。
8.如权利要求7所述的对象存储器结构,其中每个对象索引树包括节点块和叶块,其每一个由类型属性区分,其中所述叶块中的一个或多个指向持久存储器和/或更高速存储器中的存储器对象数据和存储器对象元数据的位置。
9.如权利要求1所述的对象存储器结构,其中适于聚合地表现为单个对象目录的对象路由器的所述分层结构用于跨越所述多个对象存储器模块中的数个对象存储器模块来管理至少一个存储器对象,其中所述数个对象存储器模块的单个对象存储器模块没有存储所述至少一个存储器对象的所有的块所需的存储空间。
10.一种基于硬件的处理节点,包括:
对象存储器模块,其包括存储一个或多个存储器对象的对象存储体、存储器对象元数据、以及存储器模块对象目录,其中:
每个存储器对象和/或存储器对象的部分在所述对象存储器模块内本地创建,并由对象存储器模块在存储器层管理;并且
所述存储器模块对象目录在对象索引树中索引所述对象存储器模块内的所有存储器对象和/或存储器对象的部分,所述对象索引树包括节点块和叶块,其每一个由类型属性区分,其中所述叶块中的一个或多个指向对象存储器模块中的本地存储器对象的位置;并且
所述对象存储器模块至少部分地基于所述一个或多个对象目录来处理一个或多个请求。
11.如权利要求10所述的基于硬件的处理节点,其中处理所述一个或多个请求包括:
处理对应于所述一个或多个请求中的第一请求的对象标识符;
确定所述一个或多个存储器对象中的至少一个对象是否对应于所述对象标识符;并且
在确定所述一个或多个存储器对象中的至少一个对象确实对应于所述对象标识符之后,至少部分地基于所述至少一个对象生成对所述第一请求的响应。
12.如权利要求11所述的基于硬件的处理节点,还包括:
通信地耦合到所述对象存储器模块的对象路由器,其在确定所述一个或多个存储器对象中的至少一个对象不对应于所述对象标识符之后,将所述第一请求路由到附加节点。
13.如权利要求12所述的基于硬件的处理节点,其中将所述第一请求路由到所述附加节点是至少部分地基于所述对象路由器确定所述存储器对象的位置对应于所述对象标识符。
14.如权利要求12所述的基于硬件的处理节点,其中:
将所述第一请求路由到所述附加节点是至少部分地基于所述对象路由器确定对应于所述对象标识符的存储器对象的位置是未知的;以及
朝向根节点引导所述第一请求。
15.如权利要求12所述的基于硬件的处理节点,在将所述第一请求路由到所述附加节点之后,所述存储器模块至少部分地基于从所述附加节点接收的响应来生成对所述第一请求的响应。
16.如权利要求10所述的基于硬件的处理节点,其中所述对象索引树包括指向每个本地存储器对象的每个对象索引树的指针,其中每个本地存储器对象的每个对象索引树在块的基础上索引本地呈现给所述本地存储器对象的存储器对象数据和存储器对象元数据。
17.如权利要求16所述的基于硬件的处理节点,其中每个对象索引树包括节点块和叶块,其每一个由类型属性区分,其中所述叶块中的一个或多个指向持久存储器和/或更高速存储器中的存储器对象数据和存储器对象元数据的位置。
18.如权利要求10所述的基于硬件的处理节点,其中从应用层接收所述一个或多个请求中的至少一个。
19.如权利要求10所述的基于硬件的处理节点,其中从一个或多个附加节点接收所述一个或多个请求中的至少一个。
20.如权利要求10所述的基于硬件的处理节点,其中所述节点配置为利用一组算法来可操作地耦合到一个或多个附加节点,以作为一组节点来操作且独立于该组节点的规模,其中该组节点操作为使得该组节点的所有存储器对象可由该组节点中的任何节点访问。
21.一种存储并管理对象存储器结构中的一个或多个存储器对象的方法,所述方法包括:
在对象存储器模块的对象存储体中存储一个或多个存储器对象、存储器对象元数据、以及存储器模块对象目录,其中:
每个存储器对象和/或存储器对象的部分在所述对象存储器模块内本地创建,且由所述对象存储器模块在存储器层管理;以及
所述存储器模块对象目录在对象索引树中索引所述对象存储器模块内的所有存储器对象和/或存储器对象的部分,所述对象索引树包括节点块和叶块,其每一个由类型属性区分,其中所述叶块中的一个或多个指向对象存储器模块中的本地存储器对象的位置;以及
对象存储器模块至少部分地基于所述一个或多个对象目录来处理一个或多个请求。
22.如权利要求21所述的方法,其中处理所述一个或多个请求包括:
处理对应于所述一个或多个请求的第一请求的对象标识符;
确定所述一个或多个存储器对象中的至少一个对象是否对应于所述对象标识符;以及
在确定所述一个或多个存储器对象中的至少一个对象确实对应于所述对象标识符之后,至少部分地基于所述至少一个对象来生成对所述第一请求的响应。
23.如权利要求22所述的方法,其中处理所述一个或多个请求包括:
在确定所述一个或多个存储器对象中的至少一个对象不对应于所述对象标识符之后,通过通信地耦合到所述对象存储器模块的对象路由器将所述第一请求路由到附加节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010856998.0A CN112214424B (zh) | 2015-01-20 | 2016-01-20 | 对象存储器结构、处理节点、存储器对象存储和管理方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562105602P | 2015-01-20 | 2015-01-20 | |
US62/105,602 | 2015-01-20 | ||
PCT/US2016/014099 WO2016118607A1 (en) | 2015-01-20 | 2016-01-20 | Distributed index for fault tolerant object memory fabric |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010856998.0A Division CN112214424B (zh) | 2015-01-20 | 2016-01-20 | 对象存储器结构、处理节点、存储器对象存储和管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107533518A CN107533518A (zh) | 2018-01-02 |
CN107533518B true CN107533518B (zh) | 2020-09-18 |
Family
ID=56407928
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680015942.4A Active CN107533518B (zh) | 2015-01-20 | 2016-01-20 | 用于容错对象存储器结构的分布式索引 |
CN202010856998.0A Active CN112214424B (zh) | 2015-01-20 | 2016-01-20 | 对象存储器结构、处理节点、存储器对象存储和管理方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010856998.0A Active CN112214424B (zh) | 2015-01-20 | 2016-01-20 | 对象存储器结构、处理节点、存储器对象存储和管理方法 |
Country Status (5)
Country | Link |
---|---|
US (9) | US11755201B2 (zh) |
EP (2) | EP3248106A4 (zh) |
CN (2) | CN107533518B (zh) |
CA (1) | CA2974394C (zh) |
WO (4) | WO2016118627A1 (zh) |
Families Citing this family (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107533518B (zh) | 2015-01-20 | 2020-09-18 | 乌尔特拉塔有限责任公司 | 用于容错对象存储器结构的分布式索引 |
WO2016118624A1 (en) | 2015-01-20 | 2016-07-28 | Ultrata Llc | Object memory instruction set |
US9886210B2 (en) | 2015-06-09 | 2018-02-06 | Ultrata, Llc | Infinite memory fabric hardware implementation with router |
US9971542B2 (en) | 2015-06-09 | 2018-05-15 | Ultrata, Llc | Infinite memory fabric streams and APIs |
US10698628B2 (en) | 2015-06-09 | 2020-06-30 | Ultrata, Llc | Infinite memory fabric hardware implementation with memory |
US9811276B1 (en) * | 2015-09-24 | 2017-11-07 | EMC IP Holding Company LLC | Archiving memory in memory centric architecture |
CN108885604B (zh) | 2015-12-08 | 2022-04-12 | 乌尔特拉塔有限责任公司 | 存储器结构软件实现方案 |
CA3006776A1 (en) | 2015-12-08 | 2017-06-15 | Ultrata, Llc. | Memory fabric operations and coherency using fault tolerant objects |
US10235063B2 (en) | 2015-12-08 | 2019-03-19 | Ultrata, Llc | Memory fabric operations and coherency using fault tolerant objects |
US10241676B2 (en) | 2015-12-08 | 2019-03-26 | Ultrata, Llc | Memory fabric software implementation |
US10089761B2 (en) * | 2016-04-29 | 2018-10-02 | Hewlett Packard Enterprise Development Lp | Graph processing using a shared memory |
WO2018075042A1 (en) * | 2016-10-20 | 2018-04-26 | Hitachi, Ltd. | Data storage system, process, and computer program for de-duplication of distributed data in a scalable cluster system |
WO2018075041A1 (en) * | 2016-10-20 | 2018-04-26 | Hitachi, Ltd. | Data storage system and process for providing distributed storage in a scalable cluster system and computer program for such data storage system |
US10430085B2 (en) * | 2016-11-08 | 2019-10-01 | Micron Technology, Inc. | Memory operations on data |
US11249961B2 (en) | 2017-06-30 | 2022-02-15 | Microsoft Technology Licensing, Llc | Online schema change of range-partitioned index in a distributed storage system |
US11487734B2 (en) * | 2017-06-30 | 2022-11-01 | Microsoft Technology Licensing, Llc | Staging anchor trees for improved concurrency and performance in page range index management |
US10565126B2 (en) * | 2017-07-14 | 2020-02-18 | Arm Limited | Method and apparatus for two-layer copy-on-write |
US10817472B2 (en) | 2017-10-23 | 2020-10-27 | Dropbox, Inc. | Storage organization system with associated storage utilization values |
US10866963B2 (en) | 2017-12-28 | 2020-12-15 | Dropbox, Inc. | File system authentication |
US20190245924A1 (en) * | 2018-02-06 | 2019-08-08 | Alibaba Group Holding Limited | Three-stage cost-efficient disaggregation for high-performance computation, high-capacity storage with online expansion flexibility |
US11275587B2 (en) | 2018-05-02 | 2022-03-15 | Micron Technology, Inc. | Static identifications in object-based memory access |
CN109302711B (zh) * | 2018-08-24 | 2021-08-13 | 西安电子科技大学 | 可重构Fat-Tree混合数据中心网络的节能部署方法 |
US20200073822A1 (en) * | 2018-08-30 | 2020-03-05 | Micron Technology, Inc. | Security Configuration for Memory Address Translation from Object Specific Virtual Address Spaces to a Physical Address Space |
US11914726B2 (en) | 2018-08-30 | 2024-02-27 | Micron Technology, Inc. | Access control for processor registers based on execution domains |
US10915465B2 (en) | 2018-08-30 | 2021-02-09 | Micron Technology, Inc. | Memory configured to store predefined set of domain registers for instructions being executed in computer processors |
US11481241B2 (en) | 2018-08-30 | 2022-10-25 | Micron Technology, Inc. | Virtual machine register in a computer processor |
US11182507B2 (en) | 2018-08-30 | 2021-11-23 | Micron Technology, Inc. | Domain crossing in executing instructions in computer processors |
US11500665B2 (en) | 2018-08-30 | 2022-11-15 | Micron Technology, Inc. | Dynamic configuration of a computer processor based on the presence of a hypervisor |
US10915457B2 (en) | 2018-08-30 | 2021-02-09 | Micron Technology, Inc. | Memory access control through permissions specified in page table entries for execution domains |
US10942863B2 (en) | 2018-08-30 | 2021-03-09 | Micron Technology, Inc. | Security configurations in page table entries for execution domains using a sandbox application operation |
US11544069B2 (en) | 2018-10-25 | 2023-01-03 | Micron Technology, Inc. | Universal pointers for data exchange in a computer system having independent processors |
CN109684236A (zh) * | 2018-12-25 | 2019-04-26 | 广东浪潮大数据研究有限公司 | 一种数据写缓存控制方法、装置、电子设备和存储介质 |
CN109885550B (zh) * | 2018-12-28 | 2022-09-13 | 安徽维德工业自动化有限公司 | 一种基于全联通路由层的文件存储*** |
CN110851658B (zh) * | 2019-10-12 | 2023-05-05 | 天津大学 | 树形索引数据结构、内容存储池、路由器及树形索引方法 |
US11531619B2 (en) * | 2019-12-17 | 2022-12-20 | Meta Platforms, Inc. | High bandwidth memory system with crossbar switch for dynamically programmable distribution scheme |
CN111459914B (zh) * | 2020-03-31 | 2023-09-05 | 北京金山云网络技术有限公司 | 分布式图数据库的优化方法、装置和电子设备 |
CN114077619A (zh) * | 2020-08-20 | 2022-02-22 | 北京字节跳动网络技术有限公司 | 数据查询方法、装置、电子设备和存储介质 |
US11544197B2 (en) | 2020-09-18 | 2023-01-03 | Alibaba Group Holding Limited | Random-access performance for persistent memory |
US11989432B2 (en) * | 2020-10-29 | 2024-05-21 | EMC IP Holding Company LLC | Rebuilding space accounting counters in mapping layer of storage appliances |
CN113449155B (zh) * | 2021-07-16 | 2024-02-27 | 百度在线网络技术(北京)有限公司 | 用于特征表示处理的方法、装置、设备和介质 |
CN115277454B (zh) * | 2022-07-28 | 2023-10-24 | 中国人民解放军国防科技大学 | 用于分布式深度学习训练的聚合通信方法 |
CN115994145B (zh) * | 2023-02-09 | 2023-08-22 | 中国证券登记结算有限责任公司 | 一种处理数据的方法和装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1698035A (zh) * | 2003-03-19 | 2005-11-16 | 索尼株式会社 | 数据存储装置、更新数据存储装置中的管理信息的方法和计算机程序 |
Family Cites Families (231)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4326247A (en) * | 1978-09-25 | 1982-04-20 | Motorola, Inc. | Architecture for data processor |
US4736317A (en) * | 1985-07-17 | 1988-04-05 | Syracuse University | Microprogram-coupled multiple-microprocessor module with 32-bit byte width formed of 8-bit byte width microprocessors |
US5297279A (en) * | 1990-05-30 | 1994-03-22 | Texas Instruments Incorporated | System and method for database management supporting object-oriented programming |
WO1995009392A1 (en) * | 1993-09-27 | 1995-04-06 | Giga Operations Corporation | Implementation of a selected instruction set cpu in programmable hardware |
US5581765A (en) | 1994-08-30 | 1996-12-03 | International Business Machines Corporation | System for combining a global object identifier with a local object address in a single object pointer |
US5664207A (en) | 1994-12-16 | 1997-09-02 | Xcellenet, Inc. | Systems and methods for automatically sharing information among remote/mobile nodes |
KR100584964B1 (ko) | 1996-01-24 | 2006-05-29 | 선 마이크로시스템즈 인코퍼레이티드 | 스택 메모리 구조에서의 캐싱 장치 |
US5781906A (en) | 1996-06-06 | 1998-07-14 | International Business Machines Corporation | System and method for construction of a data structure for indexing multidimensional objects |
US5889954A (en) | 1996-12-20 | 1999-03-30 | Ericsson Inc. | Network manager providing advanced interconnection capability |
US5859849A (en) | 1997-05-06 | 1999-01-12 | Motorola Inc. | Modular switch element for shared memory switch fabric |
US6115790A (en) | 1997-08-29 | 2000-09-05 | Silicon Graphics, Inc. | System, method and computer program product for organizing page caches |
US6332165B1 (en) | 1997-09-05 | 2001-12-18 | Sun Microsystems, Inc. | Multiprocessor computer system employing a mechanism for routing communication traffic through a cluster node having a slice of memory directed for pass through transactions |
US6366876B1 (en) | 1997-09-29 | 2002-04-02 | Sun Microsystems, Inc. | Method and apparatus for assessing compatibility between platforms and applications |
US6804766B1 (en) * | 1997-11-12 | 2004-10-12 | Hewlett-Packard Development Company, L.P. | Method for managing pages of a designated memory object according to selected memory management policies |
US5987468A (en) | 1997-12-12 | 1999-11-16 | Hitachi America Ltd. | Structure and method for efficient parallel high-dimensional similarity join |
US6480927B1 (en) | 1997-12-31 | 2002-11-12 | Unisys Corporation | High-performance modular memory system with crossbar connections |
US6560403B1 (en) * | 1998-01-30 | 2003-05-06 | Victor Company Of Japan, Ltd. | Signal encoding apparatus, audio data transmitting method, audio data recording method, audio data decoding method and audio disc |
US6230151B1 (en) | 1998-04-16 | 2001-05-08 | International Business Machines Corporation | Parallel classification for data mining in a shared-memory multiprocessor system |
US9361243B2 (en) * | 1998-07-31 | 2016-06-07 | Kom Networks Inc. | Method and system for providing restricted access to a storage medium |
WO2000028437A1 (en) | 1998-11-06 | 2000-05-18 | Lumen | Directory protocol based data storage |
US6470436B1 (en) | 1998-12-01 | 2002-10-22 | Fast-Chip, Inc. | Eliminating memory fragmentation and garbage collection from the process of managing dynamically allocated memory |
WO2000074305A2 (en) | 1999-05-14 | 2000-12-07 | Dunti Corporation | Method for routing in hierarchical networks |
US6470344B1 (en) | 1999-05-29 | 2002-10-22 | Oracle Corporation | Buffering a hierarchical index of multi-dimensional data |
US6587874B1 (en) | 1999-06-29 | 2003-07-01 | Cisco Technology, Inc. | Directory assisted autoinstall of network devices |
US6804786B1 (en) | 1999-09-10 | 2004-10-12 | Canon Kabushiki Kaisha | User customizable secure access token and multiple level portable interface |
US6477620B1 (en) | 1999-12-20 | 2002-11-05 | Unisys Corporation | Cache-level return data by-pass system for a hierarchical memory |
US6421769B1 (en) | 1999-12-30 | 2002-07-16 | Intel Corporation | Efficient memory management for channel drivers in next generation I/O system |
WO2001063486A2 (en) * | 2000-02-24 | 2001-08-30 | Findbase, L.L.C. | Method and system for extracting, analyzing, storing, comparing and reporting on data stored in web and/or other network repositories and apparatus to detect, prevent and obfuscate information removal from information servers |
US7080382B2 (en) * | 2000-02-25 | 2006-07-18 | Oracle International Corporation | Accessing shorter-duration instances of activatable objects based on object references stored in longer-duration memory |
AU2001243275B2 (en) | 2000-02-29 | 2006-09-14 | Benjamin D. Baker | Intelligence driven paging process for a chat room |
US6651163B1 (en) * | 2000-03-08 | 2003-11-18 | Advanced Micro Devices, Inc. | Exception handling with reduced overhead in a multithreaded multiprocessing system |
US6957230B2 (en) | 2000-11-30 | 2005-10-18 | Microsoft Corporation | Dynamically generating multiple hierarchies of inter-object relationships based on object attribute values |
US6941417B1 (en) | 2000-12-15 | 2005-09-06 | Shahram Abdollahi-Alibeik | High-speed low-power CAM-based search engine |
US6647466B2 (en) | 2001-01-25 | 2003-11-11 | Hewlett-Packard Development Company, L.P. | Method and apparatus for adaptively bypassing one or more levels of a cache hierarchy |
WO2002061737A2 (en) | 2001-01-29 | 2002-08-08 | Snap Appliance Inc. | Dynamically distributed file system |
US20040205740A1 (en) | 2001-03-29 | 2004-10-14 | Lavery Daniel M. | Method for collection of memory reference information and memory disambiguation |
US6839822B2 (en) * | 2001-10-29 | 2005-01-04 | Sun Microsystems, Inc. | Memory-block coalescing based on run-time demand monitoring |
EP1367778A1 (en) * | 2002-05-31 | 2003-12-03 | Fujitsu Siemens Computers, LLC | Networked computer system and method using dual bi-directional communication rings |
JP3851228B2 (ja) | 2002-06-14 | 2006-11-29 | 松下電器産業株式会社 | プロセッサ、プログラム変換装置及びプログラム変換方法、並びにコンピュータプログラム |
US8612404B2 (en) * | 2002-07-30 | 2013-12-17 | Stored Iq, Inc. | Harvesting file system metsdata |
US20040133590A1 (en) | 2002-08-08 | 2004-07-08 | Henderson Alex E. | Tree data structure with range-specifying keys and associated methods and apparatuses |
US7178132B2 (en) | 2002-10-23 | 2007-02-13 | Microsoft Corporation | Forward walking through binary code to determine offsets for stack walking |
US20080008202A1 (en) | 2002-10-31 | 2008-01-10 | Terrell William C | Router with routing processors and methods for virtualization |
US7457822B1 (en) * | 2002-11-01 | 2008-11-25 | Bluearc Uk Limited | Apparatus and method for hardware-based file system |
US20060041731A1 (en) * | 2002-11-07 | 2006-02-23 | Robert Jochemsen | Method and device for persistent-memory mangement |
KR100918733B1 (ko) | 2003-01-30 | 2009-09-24 | 삼성전자주식회사 | 포워딩정보를 동적으로 관리하는 분산구조라우터 및 그방법 |
US7587422B2 (en) | 2003-04-24 | 2009-09-08 | Neopath Networks, Inc. | Transparent file replication using namespace replication |
US20050004924A1 (en) | 2003-04-29 | 2005-01-06 | Adrian Baldwin | Control of access to databases |
US7512638B2 (en) | 2003-08-21 | 2009-03-31 | Microsoft Corporation | Systems and methods for providing conflict handling for peer-to-peer synchronization of units of information manageable by a hardware/software interface system |
US7617510B2 (en) | 2003-09-05 | 2009-11-10 | Microsoft Corporation | Media network using set-top boxes as nodes |
US7865485B2 (en) | 2003-09-23 | 2011-01-04 | Emc Corporation | Multi-threaded write interface and methods for increasing the single file read and write throughput of a file server |
US7630282B2 (en) * | 2003-09-30 | 2009-12-08 | Victor Company Of Japan, Ltd. | Disk for audio data, reproduction apparatus, and method of recording/reproducing audio data |
US20050102670A1 (en) | 2003-10-21 | 2005-05-12 | Bretl Robert F. | Shared object memory with object management for multiple virtual machines |
US7155444B2 (en) | 2003-10-23 | 2006-12-26 | Microsoft Corporation | Promotion and demotion techniques to facilitate file property management between object systems |
US7149858B1 (en) * | 2003-10-31 | 2006-12-12 | Veritas Operating Corporation | Synchronous replication for system and data security |
US7620630B2 (en) | 2003-11-12 | 2009-11-17 | Oliver Lloyd Pty Ltd | Directory system |
US7333993B2 (en) | 2003-11-25 | 2008-02-19 | Network Appliance, Inc. | Adaptive file readahead technique for multiple read streams |
US7188128B1 (en) | 2003-12-12 | 2007-03-06 | Veritas Operating Corporation | File system and methods for performing file create and open operations with efficient storage allocation |
US7657706B2 (en) | 2003-12-18 | 2010-02-02 | Cisco Technology, Inc. | High speed memory and input/output processor subsystem for efficiently allocating and using high-speed memory and slower-speed memory |
KR100600862B1 (ko) | 2004-01-30 | 2006-07-14 | 김선권 | 인터넷상의 정보자원에 대한 접근 경로를 체계적으로수집하고 검색하는 방법, 및 이 방법을 실행할 수 있는컴퓨터 프로그램을 수록한 기록매체 |
US20050240748A1 (en) * | 2004-04-27 | 2005-10-27 | Yoder Michael E | Locality-aware interface for kernal dynamic memory |
US7251663B1 (en) | 2004-04-30 | 2007-07-31 | Network Appliance, Inc. | Method and apparatus for determining if stored memory range overlaps key memory ranges where the memory address space is organized in a tree form and partition elements for storing key memory ranges |
US20050273571A1 (en) | 2004-06-02 | 2005-12-08 | Lyon Thomas L | Distributed virtual multiprocessor |
US7278122B2 (en) * | 2004-06-24 | 2007-10-02 | Ftl Systems, Inc. | Hardware/software design tool and language specification mechanism enabling efficient technology retargeting and optimization |
US8713295B2 (en) | 2004-07-12 | 2014-04-29 | Oracle International Corporation | Fabric-backplane enterprise servers with pluggable I/O sub-system |
US7386566B2 (en) | 2004-07-15 | 2008-06-10 | Microsoft Corporation | External metadata processing |
WO2006015245A2 (en) | 2004-07-29 | 2006-02-09 | Modius, Inc. | Universal configurable device gateway |
US7769974B2 (en) * | 2004-09-10 | 2010-08-03 | Microsoft Corporation | Increasing data locality of recently accessed resources |
US7350048B1 (en) | 2004-10-28 | 2008-03-25 | Sun Microsystems, Inc. | Memory system topology |
US7467272B2 (en) | 2004-12-16 | 2008-12-16 | International Business Machines Corporation | Write protection of subroutine return addresses |
US7694065B2 (en) | 2004-12-28 | 2010-04-06 | Sap Ag | Distributed cache architecture |
US7539821B2 (en) | 2004-12-28 | 2009-05-26 | Sap Ag | First in first out eviction implementation |
US7315871B2 (en) | 2005-01-19 | 2008-01-01 | International Business Machines Inc. Corporation | Method, system and program product for interning invariant data objects in dynamic space constrained systems |
US20060174089A1 (en) * | 2005-02-01 | 2006-08-03 | International Business Machines Corporation | Method and apparatus for embedding wide instruction words in a fixed-length instruction set architecture |
US9104315B2 (en) * | 2005-02-04 | 2015-08-11 | Sandisk Technologies Inc. | Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage |
US7689784B2 (en) * | 2005-03-18 | 2010-03-30 | Sony Computer Entertainment Inc. | Methods and apparatus for dynamic linking program overlay |
US7287114B2 (en) | 2005-05-10 | 2007-10-23 | Intel Corporation | Simulating multiple virtual channels in switched fabric networks |
US7200023B2 (en) | 2005-05-12 | 2007-04-03 | International Business Machines Corporation | Dual-edged DIMM to support memory expansion |
US8089795B2 (en) | 2006-02-09 | 2012-01-03 | Google Inc. | Memory module with memory stack and interface with enhanced capabilities |
SG162825A1 (en) | 2005-06-24 | 2010-07-29 | Research In Motion Ltd | System and method for managing memory in a mobile device |
US9171585B2 (en) * | 2005-06-24 | 2015-10-27 | Google Inc. | Configurable memory circuit system and method |
US7689602B1 (en) | 2005-07-20 | 2010-03-30 | Bakbone Software, Inc. | Method of creating hierarchical indices for a distributed object system |
CN100367727C (zh) | 2005-07-26 | 2008-02-06 | 华中科技大学 | 一种可扩展的基于对象的存储***及其控制方法 |
US7421566B2 (en) * | 2005-08-12 | 2008-09-02 | International Business Machines Corporation | Implementing instruction set architectures with non-contiguous register file specifiers |
US20070038984A1 (en) * | 2005-08-12 | 2007-02-15 | Gschwind Michael K | Methods for generating code for an architecture encoding an extended register specification |
US7917474B2 (en) | 2005-10-21 | 2011-03-29 | Isilon Systems, Inc. | Systems and methods for accessing and updating distributed data |
US7804769B1 (en) | 2005-12-01 | 2010-09-28 | Juniper Networks, Inc. | Non-stop forwarding in a multi-chassis router |
US7710872B2 (en) | 2005-12-14 | 2010-05-04 | Cisco Technology, Inc. | Technique for enabling traffic engineering on CE-CE paths across a provider network |
US7716180B2 (en) * | 2005-12-29 | 2010-05-11 | Amazon Technologies, Inc. | Distributed storage system with web services client interface |
US7778972B1 (en) | 2005-12-29 | 2010-08-17 | Amazon Technologies, Inc. | Dynamic object replication within a distributed storage system |
US9002795B2 (en) | 2006-01-26 | 2015-04-07 | Seagate Technology Llc | Object-based data storage device |
US7584332B2 (en) * | 2006-02-17 | 2009-09-01 | University Of Notre Dame Du Lac | Computer systems with lightweight multi-threaded architectures |
GB0605383D0 (en) | 2006-03-17 | 2006-04-26 | Williams Paul N | Processing system |
US8423954B2 (en) | 2006-03-31 | 2013-04-16 | Sap Ag | Interactive container of development components and solutions |
US20070245111A1 (en) | 2006-04-18 | 2007-10-18 | International Business Machines Corporation | Methods, systems, and computer program products for managing temporary storage |
CN101467149A (zh) * | 2006-06-30 | 2009-06-24 | 电子地图北美公司 | 具有可变压缩的自适应索引 |
US7472249B2 (en) * | 2006-06-30 | 2008-12-30 | Sun Microsystems, Inc. | Kernel memory free algorithm |
US8165111B2 (en) | 2006-07-25 | 2012-04-24 | PSIMAST, Inc | Telecommunication and computing platforms with serial packet switched integrated memory access technology |
US20080189251A1 (en) | 2006-08-25 | 2008-08-07 | Jeremy Branscome | Processing elements of a hardware accelerated reconfigurable processor for accelerating database operations and queries |
US7853755B1 (en) * | 2006-09-29 | 2010-12-14 | Tilera Corporation | Caching in multicore and multiprocessor architectures |
US7647471B2 (en) | 2006-11-17 | 2010-01-12 | Sun Microsystems, Inc. | Method and system for collective file access using an mmap (memory-mapped file) |
WO2008070191A2 (en) * | 2006-12-06 | 2008-06-12 | Fusion Multisystems, Inc. (Dba Fusion-Io) | Apparatus, system, and method for a reconfigurable baseboard management controller |
US8151082B2 (en) | 2007-12-06 | 2012-04-03 | Fusion-Io, Inc. | Apparatus, system, and method for converting a storage request into an append data storage command |
US20080163183A1 (en) | 2006-12-29 | 2008-07-03 | Zhiyuan Li | Methods and apparatus to provide parameterized offloading on multiprocessor architectures |
US20080209406A1 (en) | 2007-02-27 | 2008-08-28 | Novell, Inc. | History-based call stack construction |
US8001539B2 (en) * | 2007-02-28 | 2011-08-16 | Jds Uniphase Corporation | Historical data management |
US8706914B2 (en) | 2007-04-23 | 2014-04-22 | David D. Duchesneau | Computing infrastructure |
US20090006831A1 (en) | 2007-06-30 | 2009-01-01 | Wah Yiu Kwong | Methods and apparatuses for configuring add-on hardware to a computing platform |
US7730278B2 (en) * | 2007-07-12 | 2010-06-01 | Oracle America, Inc. | Chunk-specific executable code for chunked java object heaps |
US7716449B2 (en) * | 2007-07-12 | 2010-05-11 | Oracle America, Inc. | Efficient chunked java object heaps |
US9824006B2 (en) | 2007-08-13 | 2017-11-21 | Digital Kiva, Inc. | Apparatus and system for object-based storage solid-state device |
US8200850B2 (en) | 2007-11-11 | 2012-06-12 | Weed Instrument, Inc. | Method, apparatus and computer program product for ring network communication |
US8195912B2 (en) | 2007-12-06 | 2012-06-05 | Fusion-io, Inc | Apparatus, system, and method for efficient mapping of virtual and physical addresses |
US8069311B2 (en) | 2007-12-28 | 2011-11-29 | Intel Corporation | Methods for prefetching data in a memory storage structure |
US8484307B2 (en) | 2008-02-01 | 2013-07-09 | International Business Machines Corporation | Host fabric interface (HFI) to perform global shared memory (GSM) operations |
US8250308B2 (en) | 2008-02-15 | 2012-08-21 | International Business Machines Corporation | Cache coherency protocol with built in avoidance for conflicting responses |
US8018729B2 (en) | 2008-02-19 | 2011-09-13 | Lsi Corporation | Method and housing for memory module including battery backup |
EP2096564B1 (en) | 2008-02-29 | 2018-08-08 | Euroclear SA/NV | Improvements relating to handling and processing of massive numbers of processing instructions in real time |
KR20090096942A (ko) | 2008-03-10 | 2009-09-15 | 이필승 | 스틸그레이팅 |
US8219564B1 (en) * | 2008-04-29 | 2012-07-10 | Netapp, Inc. | Two-dimensional indexes for quick multiple attribute search in a catalog system |
US9619295B1 (en) | 2008-05-21 | 2017-04-11 | Qualcomm Incorporated | Distributed system for application processing |
US8775718B2 (en) * | 2008-05-23 | 2014-07-08 | Netapp, Inc. | Use of RDMA to access non-volatile solid-state memory in a network storage system |
US7885967B2 (en) | 2008-05-30 | 2011-02-08 | Red Hat, Inc. | Management of large dynamic tables |
US8943271B2 (en) | 2008-06-12 | 2015-01-27 | Microsoft Corporation | Distributed cache arrangement |
US8060692B2 (en) | 2008-06-27 | 2011-11-15 | Intel Corporation | Memory controller using time-staggered lockstep sub-channels with buffered memory |
CN102150147A (zh) | 2008-07-03 | 2011-08-10 | 惠普开发有限公司 | 存储器服务器 |
US8412878B2 (en) | 2008-07-14 | 2013-04-02 | Marvell World Trade Ltd. | Combined mobile device and solid state disk with a shared memory architecture |
FR2934447A1 (fr) | 2008-07-23 | 2010-01-29 | France Telecom | Procede de communication entre une pluralite de noeuds, les noeuds etant organises suivant un anneau |
JP5153539B2 (ja) | 2008-09-22 | 2013-02-27 | 株式会社日立製作所 | メモリ管理方法およびその方法を用いるコンピュータ |
US8277645B2 (en) | 2008-12-17 | 2012-10-02 | Jarvis Jr Ernest | Automatic retractable screen system for storm drain inlets |
US8572036B2 (en) | 2008-12-18 | 2013-10-29 | Datalight, Incorporated | Method and apparatus for fault-tolerant memory management |
US8140555B2 (en) | 2009-04-30 | 2012-03-20 | International Business Machines Corporation | Apparatus, system, and method for dynamically defining inductive relationships between objects in a content management system |
BRPI1013794A8 (pt) * | 2009-06-26 | 2017-10-10 | Simplivity Corp | Método de adaptar um processo de indexação de acesso uniforme com uma memória de acesso não uniforme e sistema de computador |
KR20120068765A (ko) * | 2009-07-17 | 2012-06-27 | 가부시끼가이샤 도시바 | 메모리 관리 장치 |
US8918623B2 (en) * | 2009-08-04 | 2014-12-23 | International Business Machines Corporation | Implementing instruction set architectures with non-contiguous register file specifiers |
US9122579B2 (en) * | 2010-01-06 | 2015-09-01 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for a storage layer |
US9063825B1 (en) | 2009-09-21 | 2015-06-23 | Tilera Corporation | Memory controller load balancing with configurable striping domains |
US20110103391A1 (en) | 2009-10-30 | 2011-05-05 | Smooth-Stone, Inc. C/O Barry Evans | System and method for high-performance, low-power data center interconnect fabric |
US9648102B1 (en) | 2012-12-27 | 2017-05-09 | Iii Holdings 2, Llc | Memcached server functionality in a cluster of data processing nodes |
US8751533B1 (en) | 2009-11-25 | 2014-06-10 | Netapp, Inc. | Method and system for transparently migrating storage objects between nodes in a clustered storage system |
US8832154B1 (en) * | 2009-12-08 | 2014-09-09 | Netapp, Inc. | Object location service for network-based content repository |
US8484259B1 (en) | 2009-12-08 | 2013-07-09 | Netapp, Inc. | Metadata subsystem for a distributed object store in a network storage system |
US8949529B2 (en) | 2009-12-30 | 2015-02-03 | International Business Machines Corporation | Customizing function behavior based on cache and scheduling parameters of a memory argument |
WO2011083505A1 (en) | 2010-01-05 | 2011-07-14 | Hitachi, Ltd. | Method and server system for testing and executing migration between virtual servers |
US8244978B2 (en) | 2010-02-17 | 2012-08-14 | Advanced Micro Devices, Inc. | IOMMU architected TLB support |
US8402547B2 (en) | 2010-03-14 | 2013-03-19 | Virtual Forge GmbH | Apparatus and method for detecting, prioritizing and fixing security defects and compliance violations in SAP® ABAP™ code |
US9047351B2 (en) * | 2010-04-12 | 2015-06-02 | Sandisk Enterprise Ip Llc | Cluster of processing nodes with distributed global flash memory using commodity server technology |
DE102011002325A1 (de) * | 2010-05-07 | 2011-11-10 | Maxim Integrated Products, Inc. | Einrichtung mit vertikalem und/oder horizontalem Cachespeicher und in einem Kodierer und/oder Dekodierer verwendete Verfahren |
US8589650B2 (en) * | 2010-05-17 | 2013-11-19 | Texas Instruments Incorporated | Dynamically configurable memory system |
US8321487B1 (en) | 2010-06-30 | 2012-11-27 | Emc Corporation | Recovery of directory information |
US9165015B2 (en) | 2010-07-29 | 2015-10-20 | International Business Machines Corporation | Scalable and user friendly file virtualization for hierarchical storage |
US8392368B1 (en) | 2010-08-27 | 2013-03-05 | Disney Enterprises, Inc. | System and method for distributing and accessing files in a distributed storage system |
US8515915B2 (en) * | 2010-09-24 | 2013-08-20 | Hitachi Data Systems Corporation | System and method for enhancing availability of a distributed object storage system during a partial database outage |
US20120102453A1 (en) | 2010-10-21 | 2012-04-26 | Microsoft Corporation | Multi-dimensional objects |
US8650165B2 (en) | 2010-11-03 | 2014-02-11 | Netapp, Inc. | System and method for managing data policies on application objects |
US8904120B1 (en) * | 2010-12-15 | 2014-12-02 | Netapp Inc. | Segmented fingerprint datastore and scaling a fingerprint datastore in de-duplication environments |
US8898119B2 (en) * | 2010-12-15 | 2014-11-25 | Netapp, Inc. | Fingerprints datastore and stale fingerprint removal in de-duplication environments |
US9317637B2 (en) | 2011-01-14 | 2016-04-19 | International Business Machines Corporation | Distributed hardware device simulation |
US20130060556A1 (en) * | 2011-07-18 | 2013-03-07 | Et International, Inc. | Systems and methods of runtime system function acceleration for cmp design |
US8812450B1 (en) | 2011-04-29 | 2014-08-19 | Netapp, Inc. | Systems and methods for instantaneous cloning |
US20120331243A1 (en) | 2011-06-24 | 2012-12-27 | International Business Machines Corporation | Remote Direct Memory Access ('RDMA') In A Parallel Computer |
US9417823B2 (en) | 2011-07-12 | 2016-08-16 | Violin Memory Inc. | Memory system management |
US8943313B2 (en) | 2011-07-19 | 2015-01-27 | Elwha Llc | Fine-grained security in federated data sets |
US8670273B2 (en) * | 2011-08-05 | 2014-03-11 | Micron Technology, Inc. | Methods for program verifying a memory cell and memory devices configured to perform the same |
US8738868B2 (en) | 2011-08-23 | 2014-05-27 | Vmware, Inc. | Cooperative memory resource management for virtualized computing devices |
US8615745B2 (en) | 2011-10-03 | 2013-12-24 | International Business Machines Corporation | Compiling code for an enhanced application binary interface (ABI) with decode time instruction optimization |
EP2771721A4 (en) | 2011-10-28 | 2017-03-29 | The Regents of The University of California | Multiple-core computer processor for reverse time migration |
US9063939B2 (en) * | 2011-11-03 | 2015-06-23 | Zettaset, Inc. | Distributed storage medium management for heterogeneous storage media in high availability clusters |
US10061534B2 (en) | 2011-12-01 | 2018-08-28 | Intel Corporation | Hardware based memory migration and resilvering |
US8706847B2 (en) | 2012-02-09 | 2014-04-22 | International Business Machines Corporation | Initiating a collective operation in a parallel computer |
US20140081924A1 (en) | 2012-02-09 | 2014-03-20 | Netapp, Inc. | Identification of data objects stored on clustered logical data containers |
US8844036B2 (en) | 2012-03-02 | 2014-09-23 | Sri International | Method and system for application-based policy monitoring and enforcement on a mobile device |
US9043567B1 (en) * | 2012-03-28 | 2015-05-26 | Netapp, Inc. | Methods and systems for replicating an expandable storage volume |
US9069710B1 (en) | 2012-03-28 | 2015-06-30 | Netapp, Inc. | Methods and systems for replicating an expandable storage volume |
US9286472B2 (en) | 2012-05-22 | 2016-03-15 | Xockets, Inc. | Efficient packet handling, redirection, and inspection using offload processors |
US9280788B2 (en) * | 2012-06-13 | 2016-03-08 | Oracle International Corporation | Information retrieval and navigation using a semantic layer |
US9449068B2 (en) * | 2012-06-13 | 2016-09-20 | Oracle International Corporation | Information retrieval and navigation using a semantic layer and dynamic objects |
US9134981B2 (en) * | 2012-06-22 | 2015-09-15 | Altera Corporation | OpenCL compilation |
US9378071B2 (en) * | 2012-06-23 | 2016-06-28 | Pmda Services Pty Ltd | Computing device for state transitions of recursive state machines and a computer-implemented method for the definition, design and deployment of domain recursive state machines for computing devices of that type |
US9111081B2 (en) | 2012-06-26 | 2015-08-18 | International Business Machines Corporation | Remote direct memory access authentication of a device |
US9390055B2 (en) * | 2012-07-17 | 2016-07-12 | Coho Data, Inc. | Systems, methods and devices for integrating end-host and network resources in distributed memory |
KR101492603B1 (ko) * | 2012-07-25 | 2015-02-12 | 모글루(주) | 전자문서 제작 시스템과 그 제어 방법 |
US9164892B2 (en) | 2012-07-30 | 2015-10-20 | Empire Technology Development Llc | Writing data to solid state drives |
US8768977B2 (en) * | 2012-07-31 | 2014-07-01 | Hewlett-Packard Development Company, L.P. | Data management using writeable snapshots in multi-versioned distributed B-trees |
US20150063349A1 (en) | 2012-08-30 | 2015-03-05 | Shahab Ardalan | Programmable switching engine with storage, analytic and processing capabilities |
US8938559B2 (en) | 2012-10-05 | 2015-01-20 | National Instruments Corporation | Isochronous data transfer between memory-mapped domains of a memory-mapped fabric |
US20140137019A1 (en) | 2012-11-14 | 2014-05-15 | Apple Inc. | Object connection |
US9325711B2 (en) * | 2012-12-11 | 2016-04-26 | Servmax, Inc. | Apparatus and data processing systems for accessing an object |
US9037898B2 (en) | 2012-12-18 | 2015-05-19 | International Business Machines Corporation | Communication channel failover in a high performance computing (HPC) network |
CN103095687B (zh) | 2012-12-19 | 2015-08-26 | 华为技术有限公司 | 元数据处理方法及装置 |
US20150370721A1 (en) * | 2013-01-31 | 2015-12-24 | Hewlett-Packard Development Company, L.P. | Mapping mechanism for large shared address spaces |
US9552288B2 (en) * | 2013-02-08 | 2017-01-24 | Seagate Technology Llc | Multi-tiered memory with different metadata levels |
US9405688B2 (en) | 2013-03-05 | 2016-08-02 | Intel Corporation | Method, apparatus, system for handling address conflicts in a distributed memory fabric architecture |
US9495468B2 (en) * | 2013-03-12 | 2016-11-15 | Vulcan Technologies, Llc | Methods and systems for aggregating and presenting large data sets |
CN105190565B (zh) | 2013-03-14 | 2019-01-18 | 英特尔公司 | 具有改进的可扩展性的存储器对象引用计数管理 |
US9756128B2 (en) | 2013-04-17 | 2017-09-05 | Apeiron Data Systems | Switched direct attached shared storage architecture |
US9195542B2 (en) | 2013-04-29 | 2015-11-24 | Amazon Technologies, Inc. | Selectively persisting application program data from system memory to non-volatile data storage |
US9075557B2 (en) * | 2013-05-15 | 2015-07-07 | SanDisk Technologies, Inc. | Virtual channel for data transfers between devices |
EP2863308B1 (en) * | 2013-06-19 | 2018-08-08 | Hitachi, Ltd. | Decentralized distributed computing system |
US9304896B2 (en) | 2013-08-05 | 2016-04-05 | Iii Holdings 2, Llc | Remote memory ring buffers in a cluster of data processing nodes |
US9825857B2 (en) | 2013-11-05 | 2017-11-21 | Cisco Technology, Inc. | Method for increasing Layer-3 longest prefix match scale |
US20150124306A1 (en) | 2013-11-06 | 2015-05-07 | Lehigh University | Ultrathin nanostructured metals for highly transmissive plasmonic subtractive color filters |
US9141676B2 (en) | 2013-12-02 | 2015-09-22 | Rakuten Usa, Inc. | Systems and methods of modeling object networks |
US9372752B2 (en) | 2013-12-27 | 2016-06-21 | Intel Corporation | Assisted coherent shared memory |
US10592475B1 (en) | 2013-12-27 | 2020-03-17 | Amazon Technologies, Inc. | Consistent data storage in distributed computing systems |
US9547657B2 (en) | 2014-02-18 | 2017-01-17 | Black Duck Software, Inc. | Methods and systems for efficient comparison of file sets |
US9734063B2 (en) | 2014-02-27 | 2017-08-15 | École Polytechnique Fédérale De Lausanne (Epfl) | Scale-out non-uniform memory access |
US9524302B2 (en) | 2014-03-05 | 2016-12-20 | Scality, S.A. | Distributed consistent database implementation within an object store |
US10387449B2 (en) * | 2014-05-30 | 2019-08-20 | Hitachi Vantara Corporation | Metadata favored replication in active topologies |
US8868825B1 (en) | 2014-07-02 | 2014-10-21 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of a non-volatile solid-state storage |
KR200475383Y1 (ko) | 2014-07-02 | 2014-11-27 | 주식회사 새온누리그린테크 | 오물 및 악취 차단 기능을 갖는 그레이팅 |
US9805080B2 (en) | 2014-08-22 | 2017-10-31 | Xcalar, Inc. | Data driven relational algorithm formation for execution against big data |
US9875121B2 (en) | 2014-09-17 | 2018-01-23 | International Business Machines Corporation | API server |
US9703768B1 (en) | 2014-09-30 | 2017-07-11 | EMC IP Holding Company LLC | Object metadata query |
US9858140B2 (en) * | 2014-11-03 | 2018-01-02 | Intel Corporation | Memory corruption detection |
US10049112B2 (en) | 2014-11-10 | 2018-08-14 | Business Objects Software Ltd. | System and method for monitoring of database data |
US9710421B2 (en) | 2014-12-12 | 2017-07-18 | Intel Corporation | Peripheral component interconnect express (PCIe) card having multiple PCIe connectors |
US10025669B2 (en) * | 2014-12-23 | 2018-07-17 | Nuvoton Technology Corporation | Maintaining data-set coherency in non-volatile memory across power interruptions |
WO2016118559A1 (en) | 2015-01-20 | 2016-07-28 | Ultrata Llc | Object based memory fabric |
WO2016118624A1 (en) | 2015-01-20 | 2016-07-28 | Ultrata Llc | Object memory instruction set |
CN107533518B (zh) | 2015-01-20 | 2020-09-18 | 乌尔特拉塔有限责任公司 | 用于容错对象存储器结构的分布式索引 |
US9747108B2 (en) * | 2015-03-27 | 2017-08-29 | Intel Corporation | User-level fork and join processors, methods, systems, and instructions |
US9880769B2 (en) | 2015-06-05 | 2018-01-30 | Microsoft Technology Licensing, Llc. | Streaming joins in constrained memory environments |
US9971542B2 (en) * | 2015-06-09 | 2018-05-15 | Ultrata, Llc | Infinite memory fabric streams and APIs |
US10698628B2 (en) | 2015-06-09 | 2020-06-30 | Ultrata, Llc | Infinite memory fabric hardware implementation with memory |
US9886210B2 (en) | 2015-06-09 | 2018-02-06 | Ultrata, Llc | Infinite memory fabric hardware implementation with router |
US9881040B2 (en) * | 2015-08-20 | 2018-01-30 | Vmware, Inc. | Tracking data of virtual disk snapshots using tree data structures |
US10241676B2 (en) | 2015-12-08 | 2019-03-26 | Ultrata, Llc | Memory fabric software implementation |
CN108885604B (zh) | 2015-12-08 | 2022-04-12 | 乌尔特拉塔有限责任公司 | 存储器结构软件实现方案 |
US10235063B2 (en) | 2015-12-08 | 2019-03-19 | Ultrata, Llc | Memory fabric operations and coherency using fault tolerant objects |
CA3006776A1 (en) | 2015-12-08 | 2017-06-15 | Ultrata, Llc. | Memory fabric operations and coherency using fault tolerant objects |
-
2016
- 2016-01-20 CN CN201680015942.4A patent/CN107533518B/zh active Active
- 2016-01-20 EP EP16740661.0A patent/EP3248106A4/en not_active Ceased
- 2016-01-20 WO PCT/US2016/014130 patent/WO2016118627A1/en active Application Filing
- 2016-01-20 US US15/001,494 patent/US11755201B2/en active Active
- 2016-01-20 US US15/001,524 patent/US11755202B2/en active Active
- 2016-01-20 WO PCT/US2016/014099 patent/WO2016118607A1/en active Application Filing
- 2016-01-20 US US15/001,451 patent/US9971506B2/en active Active
- 2016-01-20 WO PCT/US2016/014074 patent/WO2016118591A1/en active Application Filing
- 2016-01-20 CN CN202010856998.0A patent/CN112214424B/zh active Active
- 2016-01-20 EP EP21198300.2A patent/EP3998526A1/en not_active Withdrawn
- 2016-01-20 CA CA2974394A patent/CA2974394C/en active Active
- 2016-01-20 US US15/001,652 patent/US9965185B2/en active Active
- 2016-01-20 WO PCT/US2016/014135 patent/WO2016118630A1/en active Application Filing
-
2018
- 2018-03-28 US US15/938,061 patent/US10452268B2/en active Active
- 2018-04-06 US US15/946,918 patent/US10768814B2/en active Active
-
2019
- 2019-09-11 US US16/567,474 patent/US11126350B2/en active Active
-
2020
- 2020-08-06 US US16/986,978 patent/US11573699B2/en active Active
-
2021
- 2021-08-16 US US17/403,468 patent/US11775171B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1698035A (zh) * | 2003-03-19 | 2005-11-16 | 索尼株式会社 | 数据存储装置、更新数据存储装置中的管理信息的方法和计算机程序 |
Also Published As
Publication number | Publication date |
---|---|
CA2974394A1 (en) | 2016-07-28 |
WO2016118630A1 (en) | 2016-07-28 |
WO2016118591A1 (en) | 2016-07-28 |
US20160210053A1 (en) | 2016-07-21 |
CA2974394C (en) | 2023-09-05 |
US11755202B2 (en) | 2023-09-12 |
US11775171B2 (en) | 2023-10-03 |
EP3998526A1 (en) | 2022-05-18 |
US11755201B2 (en) | 2023-09-12 |
CN107533518A (zh) | 2018-01-02 |
US9965185B2 (en) | 2018-05-08 |
US20160210082A1 (en) | 2016-07-21 |
CN112214424B (zh) | 2024-04-05 |
US11126350B2 (en) | 2021-09-21 |
US20220137818A1 (en) | 2022-05-05 |
US20200004423A1 (en) | 2020-01-02 |
US20180217755A1 (en) | 2018-08-02 |
US20160210238A1 (en) | 2016-07-21 |
EP3248106A4 (en) | 2018-09-12 |
WO2016118607A1 (en) | 2016-07-28 |
US20180225046A1 (en) | 2018-08-09 |
WO2016118627A1 (en) | 2016-07-28 |
US10452268B2 (en) | 2019-10-22 |
US10768814B2 (en) | 2020-09-08 |
US11573699B2 (en) | 2023-02-07 |
US20160210054A1 (en) | 2016-07-21 |
US20200363956A1 (en) | 2020-11-19 |
EP3248106A1 (en) | 2017-11-29 |
US9971506B2 (en) | 2018-05-15 |
CN112214424A (zh) | 2021-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11775171B2 (en) | Utilization of a distributed index to provide object memory fabric coherency | |
CN107533457B (zh) | 对象存储器数据流指令执行 | |
CN107924371B (zh) | 带有路由器的无限存储器结构硬件实现方案 | |
CN108431774B (zh) | 无限存储器结构流和api | |
CN108885607B (zh) | 使用容错对象的存储器结构操作和一致性 | |
CN108885604B (zh) | 存储器结构软件实现方案 | |
CN107533517B (zh) | 基于对象的存储器结构 | |
WO2016200655A1 (en) | Infinite memory fabric hardware implementation with memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |