CN114741334A - 通用单级对象存储器地址空间 - Google Patents
通用单级对象存储器地址空间 Download PDFInfo
- Publication number
- CN114741334A CN114741334A CN202111497351.4A CN202111497351A CN114741334A CN 114741334 A CN114741334 A CN 114741334A CN 202111497351 A CN202111497351 A CN 202111497351A CN 114741334 A CN114741334 A CN 114741334A
- Authority
- CN
- China
- Prior art keywords
- memory
- hardware
- objects
- fabric
- based processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- 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
-
- 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
-
- 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
-
- 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/10—Address translation
-
- 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/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及通用单级对象存储器地址空间,提供了对象存储器结构及其基于硬件的处理节点以及在对象存储器结构中存储并管理存储器对象的方法。该处理节点包括存储器模块,其中:由存储器模块的硬件通过对象名称空间在存储器层本机地创建每个存储器对象;在没有I/O指令的情况下使用单个存储器引用指令来存取每个存储器对象;基于每个存储器对象的元数据在存储器层管理每个存储器对象,而没有持久存储体和临时存储器的区分且没有本地位置和远程位置的区分;临时存储器和持久存储体的物理寻址是在每个存储器对象内管理的,每个存储器对象是通过对象名称空间按对象名称存取的,而没有持久存储体和临时存储器的区分或没有本地位置或远程位置的区分。
Description
本申请是申请日为2016年1月20日、申请号为201680015733.X(国际申请号为PCT/US2016/014013)、发明名称为“基于对象的存储器结构”的发明专利申请的分案申请。
相关申请的交叉引用
本申请要求Frank等人于2015年1月20提交的题为“Infinite Memory FabricArchitecture”的美国临时申请No.62/105,482在35USC 119(e)下的权益,其全部公开内容通过引用并入本文用于所有目的。
本申请还涉及以下共同未决和共同转让的美国专利申请:
同时由Frank提交的题为“Trans-Cloud Object Based Memory”的美国专利申请No._______(代理人案卷号097704-0967320(000110US));
同时由Frank提交的题为“Universal Single Level Object Memory AddressSpace”的美国专利申请No._______(代理人案卷号097704-0967321(000120US));
同时由Frank提交的题为“Object Memory Fabric Performance Acceleration”的美国专利申请No._______(代理人案卷号097704-0967322(000130US));
同时由Frank提交的题为“Distributed Index for Fault Tolerance ObjectMemory Fabric”的美国专利申请No._______(代理人案卷号097704-0967323(000200US));
同时由Frank提交的题为“Implementation of an Object Memory CentricCloud”的美国专利申请No._______(代理人案卷号097704-0967324(000210US));
同时由Frank提交的题为“Managing Metadata in an Object Memory Fabric”的美国专利申请No._______(代理人案卷号097704-0967325(000220US));
同时由Frank提交的题为“Utilization of a Distributed Index to ProvideObject Memory Fabric Coherency”的美国专利申请No._______(代理人案卷号097704-0967326(000230US));
同时由Frank提交的题为“Object Memory Data Flow Instruction Execution”的美国专利申请No._______(代理人案卷号097704-0967327(000300US));
同时由Frank提交的题为“Object Memory Data Flow Triggers”的美国专利申请No._______(代理人案卷号097704-0967329(000310US));以及
同时由Frank提交的题为“Object Memory Instruction Set”的美国专利申请No._______(代理人案卷号097704-0967328(000320US)),其每一个的全部公开内容通过引用并入本文用于所有目的。
背景技术
本发明的实施例总体上涉及方法和系统,其用于改善结构(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)引起的并行度。因此,需要改善的方法和系统,用以管理处理、存储器和存储体,从而显著地改善处理节点的性能。
发明内容
本发明的实施例提供了用于管理处理、存储器、存储体、网络和云计算的系统和方法,以显著地改善处理节点的效率和性能。本文所述的实施例可以实现基于对象的存储器,其在存储器层而不是在应用层中管理存储器内的对象。即是说,可以在存储器中本机地实现并管理对象及相关联的属性,允许对象存储器系统提供增加的功能而无需任何软件,并通过动态地管理对象特性来增加性能,对象特性包括但不限于持续性、位置和处理。对象属性也可以传播到更高的应用级。
根据一个实施例,对象存储器结构的基于硬件的处理节点可以包括存储并管理一个或多个存储器对象的存储器模块。每个存储器对象可以在所述存储器模块内本机地创建,可以在没有输入/输出(I/O)指令的情况下使用单个存储器引用指令来存取,且可以由所述存储器模块在单个存储器层管理。所述存储器模块还可以动态地管理所述一个或多个存储器对象的属性。所述一个或多个存储器对象的属性可以包括持续性、位置或处理中的一个或多个。所述存储器模块还可以将每个存储器对象的属性传播到应用级。所述对象存储器结构可以包括多个基于硬件的处理节点。在这些情况下,每个存储器对象和每个存储器对象的属性可以被保持在所述对象存储器结构中的所述多个节点中的任何一个或多个上。管理所述存储器对象可以包括,当所述存储器对象在节点之间移动、拆分或复制时,保持所述存储器对象和所述存储器对象的属性。
在一些情况下,所述基于硬件的处理节点可以包括双列直插存储器模块(DIMM)卡。例如,所述基于硬件的处理节点可以包括商品服务器,且所述存储器模块可以包括安装在所述商品服务器内的双列直插存储器模块(DIMM)卡。通信接口也可以与对象存储器结构耦合。例如,所述通信接口包括外围部件高速互连(PCI-e)卡。在其他情况下,所述基于硬件的处理节点可以包括移动计算装置。在又一示例中,所述基于硬件的处理节点可以包括单个芯片。
根据一个实施例,一种对象存储器结构可以包括多个基于硬件的处理节点。每个基于硬件的处理节点可以包括存储并管理一个或多个存储器对象的一个或多个存储器模块,其中每个存储器对象在所述存储器模块内本机地创建,在没有输入/输出(I/O)指令的情况下使用单个存储器引用指令来存取每个存储器对象,并且每个存储器对象由所述存储器模块在单个存储器层管理。每个基于硬件的处理节点还可以包括节点路由器,其与所述节点的一个或多个存储器模块中的每一个通信地耦合,且适于在所述节点的一个或多个存储器模块之间路由存储器对象或存储器对象的部分。所述对象存储器结构还可以包括一个或多个节点间路由器,其与每个节点路由器通信地耦合,其中所述对象存储器结构的多个节点中的每一个与所述节点间路由器中的至少一个通信地耦合,并且适于在所述多个节点之间路由存储器对象或存储器对象的部分。
在这样的对象存储器结构中,每个存储器模块可以动态地管理其中的一个或多个存储器对象的属性,并将每个存储器对象的属性传播到应用级。所述一个或多个存储器对象的属性可以包括持续性、位置或处理中的一个或多个。每个存储器对象和每个存储器对象的属性可以被保持在所述对象存储器结构中的所述多个节点中的任何一个或多个上,且管理所述存储器对象可以包括,当所述存储器对象在节点之间移动、拆分或复制时,保持所述存储器对象和所述存储器对象的属性。在一些实施方式中,至少一个基于硬件的处理节点可以包括商品服务器,所述商品服务器的一个或多个存储器模块可以包括安装在所述商品服务器内的至少一个双列直插存储器模块(DIMM)卡。在这些情况下,所述通信接口可以包括外围部件高速互连(PCI-e)卡。附加地或替代地,至少一个基于硬件的处理节点可以包括移动计算装置、单个芯片,和/或其他形式因子。
根据又一实施例,一种在对象存储器结构中存储并管理一个或多个存储器对象的方法可以包括,在所述对象存储器结构的基于硬件的处理节点的存储器模块内本机地创建每个存储器对象,在没有输入/输出(I/O)指令的情况下使用单个存储器引用指令来存取每个存储器对象,以及在单个存储器层管理所述存储器模块内的每个存储器对象。可以在所述存储器模块内动态地管理所述一个或多个存储器对象的属性,并将其传播到应用级。所述一个或多个存储器对象的属性可以包括持续性、位置或处理中的一个或多个。所述对象存储器结构可以包括多个基于硬件的处理节点,其中每个存储器对象和每个存储器对象的属性被保持在所述对象存储器结构中的所述多个节点中的任何一个或多个上。管理所述存储器对象可以包括,当所述存储器对象在节点之间移动、拆分或复制时,保持所述存储器对象和所述存储器对象的属性。
附图说明
图1是示出了现有技术的商品服务器和网络部件内的分离数据存储体、存储器、处理、网络和云计算的示例的框图。
图2是示出了可以实现本发明的各种实施例示范性分布式系统的部件的框图。
图3是示出了可以实现本发明的实施例的示范性计算机系统的框图。
图4是示出了根据本发明的一个实施例的示范性对象存储器结构架构的框图。
图5是示出了根据本发明的一个实施例的示范性存储器结构对象存储器的框图。
图6是示出了根据本发明的一个实施例的示范性对象存储器动态和物理组织的框图。
具体实施方式
在下面的描述中,为了解释的目的,阐述了许多具体细节,以便提供对本发明的各种实施例的透彻的理解。然而,对于本领域技术人员显而易见的是,可以在没有这些具体细节中的一些的情况下实施本发明的实施例。在其他情况下,公知的结构和装置以框图形式示出。
接下来的描述仅提供示范性实施例,并不意图限制本公开的范围、适用性或配置。相反,对示范性实施例的接下来的描述将为本领域技术人员提供能够实现示范性实施例的描述。应当理解,在不脱离如所附权利要求中阐述的本发明的精神和范围的情况下,可以对元件的功能和布置进行各种改变。
在以下描述中给出具体细节以提供对实施例的透彻理解。然而,本领域普通技术人员将理解,可以在没有这些具体细节的情况下实践实施例。例如,电路、系统、网络、过程和其他部件可以以框图形式被示出为部件,以免不必要的细节使实施例变得模糊。在其他情况下,可以示出公知的电路、过程、算法、结构和技术,而不需要不必要的细节,以免使实施例变得模糊。
另外,应当注意,各个实施例可以被描述为过程,其被绘示为流程表、流程图、数据流程图、结构图或框图。尽管流程图可能将操作描述为顺序过程,但是许多操作可以并行或同时执行。此外,可以重新布置操作的顺序。过程在其操作完成后终止,但是可以具有图中未包括的附加步骤。过程可以对应于方法、功能、程序、子例程、子程序等。当过程对应于功能时,其终止可以对应于函数返回到调用函数或主函数。
术语“机器可读介质”包括但不限于便携式或固定存储装置、光学存储装置,无线信道、以及能够存储、包含或携带(多个)指令和/或数据的各种其他介质。代码段或机器可执行的指令可以表示过程、功能、子程序、程序、例程、子例程、模块、软件包、类或指令、数据结构、或程序语句的任何组合。通过传递和/或接收信息、数据、实参、形参或存储器内容,代码段可以耦合到另一代码段或硬件电路。信息、实参、形参、数据等可以经由任何合适的手段传递、转发或传输,包括存储器共享、消息传递、令牌传递、网络传输等。为了清楚起见,现在限定本文所使用的各种其他术语。
虚拟存储器是一种存储器管理技术,其为每个软件进程提供存储器与虚拟地址空间一样大的错觉。操作系统结合不同程度的硬件,将物理存储器管理为虚拟地址空间的高速缓存,其位于辅助存储体中,并可通过输入/输出指令存取。虚拟存储器与文件系统分离,但是可以与其交互。
单级存储是虚拟存储器的扩展,其中没有文件,仅有使用虚拟存储器技术映射到进程的地址空间的持久对象或段。计算系统的整个存储体被认为是段和段内的地址。因此,至少有三个单独的地址空间被软件管理,即物理存储器地址/节点、虚拟地址/进程、以及辅助存储体地址/磁盘。
对象存储体是指存储体的单元(被称为对象)的组织方式。每个对象包含容器,其包含三件事物:实际数据;可扩展元数据;以及全局唯一的标识符,本文称为对象地址。对象的元数据用于限定关于数据的情景信息、以及如何使用和管理数据(包括与其他对象的关系)。
对象地址空间由软件在存储装置、节点和网络上进行管理,以在不知道其物理位置的情况下查找对象。对象存储体与虚拟存储器和单级存储分离,但是可以通过软件互操作。
块存储体由均匀大小的数据块组成,具有基于物理位置的地址,且没有元数据。
网络地址是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)的并行应用。交互可以在相应的邻域中自成一体。
在前面的描述中,为了说明的目的,以特定顺序描述了方法。应当理解,在替代实施例中,可以以与所描述的顺序不同的顺序执行方法。还应当理解,上述方法可以由硬件部件执行,或者可以体现在机器可执行指令的序列中,其可以用于引起机器(例如用指令编程的逻辑电路或通用或专用处理器)来执行方法。这些机器可执行指令可以存储在一个或多个机器可读介质上,例如CD-ROM或其他类型的光盘、软盘、ROM、RAM、EPROM、EEPROM、磁盘或光卡,闪存存储器、或其他适用于存储电子指令的机器可读介质的类型。替代地,方法可以由硬件或软件的组合来执行。
虽然本文已经详细描述了本发明的说明性和目前优选的实施例,但是应当理解,本发明的构思可以以各种其他方式实施和使用,并且所附权利要求旨在被解释为包括这样的变型,除了受现有技术的限制以外。
Claims (28)
1.一种对象存储器结构的基于硬件的处理节点,所述基于硬件的处理节点包括:
存储器模块,包括安装在所述基于硬件的处理节点中的硬件部件,所述存储器模块存储并管理一个或多个存储器对象,每个存储器对象包括与该存储器对象相关联的一个或多个属性、该存储器对象所存储的应用数据、可扩展元数据以及所述对象存储器结构的名称空间中的全局唯一的对象名称,其中:
由所述存储器模块的硬件,通过所述对象存储器结构的名称空间,在所述存储器模块的存储器层本机地创建每个存储器对象,
由在所述基于硬件的处理节点上执行的应用在没有所述应用的输入/输出(I/O)指令的情况下,通过所述存储器模块的硬件,使用单个存储器引用指令来存取每个存储器对象,
由所述存储器模块的硬件,通过所述对象存储器结构的名称空间,基于每个存储器对象的元数据,在所述存储器模块的存储器层管理每个存储器对象,而没有持久存储体和临时存储器的区分并且没有存储器对象在存储器结构上的本地位置和远程位置的区分,所述元数据限定关于所述存储器对象的数据的情景信息、所述存储器对象的使用和管理、与其他存储器对象的关系和所述存储器对象的一个或多个触发器,以及
所述对象存储器结构的临时存储器和持久存储体两者的物理寻址是在每个存储器对象内管理的,并且每个存储器对象是通过所述对象存储器结构的名称空间按对象名称存取的,而没有持久存储体和临时存储器的区分或者没有所述存储器结构上的本地位置或远程位置的区分。
2.如权利要求1所述的基于硬件的处理节点,其中,所述存储器模块通过所述一个或多个存储器对象没有区分地管理存储体和存储器两者。
3.如权利要求2所述的基于硬件的处理节点,其中,通过所述一个或多个存储器对象没有区分地管理存储体和存储器两者包括:将所述一个或多个存储器对象中的全部作为存储器进行管理,而不管底层物理存储介质。
4.如权利要求1所述的基于硬件的处理节点,其中,所述对象存储器结构包括多个基于硬件的处理节点,并且其中,所述一个或多个存储器对象是通过所述对象存储器结构的对象名称空间而跨所述对象存储器结构进行存取和管理的。
5.如权利要求4所述的基于硬件的处理节点,其中,每个存储器对象和每个存储器对象的属性被保持在所述对象存储器结构中的所述多个节点中的任何一个或多个上,其中,管理所述存储器对象包括:当所述存储器对象在节点之间被移动、拆分或复制时,保持所述存储器对象和所述存储器对象的属性。
6.如权利要求1所述的基于硬件的处理节点,其中,所述对象名称空间不受由所述一个或多个存储器对象管理的物理地址的限制。
7.如权利要求1所述的基于硬件的处理节点,其中,所述基于硬件的处理节点包括双列直插存储器模块(DIMM)卡。
8.如权利要求1所述的基于硬件的处理节点,其中,所述基于硬件的处理节点包括商品服务器,且其中,所述存储器模块包括安装在所述商品服务器内的双列直插存储器模块(DIMM)卡。
9.如权利要求8所述的基于硬件的处理节点,还包括与所述对象存储器结构耦合的通信接口。
10.如权利要求9所述的基于硬件的处理节点,其中,所述通信接口包括外围部件高速互连(PCI-e)卡。
11.如权利要求1所述的基于硬件的处理节点,其中,所述基于硬件的处理节点包括移动计算装置。
12.如权利要求1所述的基于硬件的处理节点,其中,所述基于硬件的处理节点包括单个芯片。
13.一种对象存储器结构,包括:
多个基于硬件的处理节点,每个基于硬件的处理节点包括:
一个或多个存储器模块,每个存储器模块包括安装在所述基于硬件的处理节点中的硬件部件,每个存储器模块存储并管理一个或多个存储器对象,每个存储器对象包括与该存储器对象相关联的一个或多个属性、该存储器对象所存储的应用数据、可扩展元数据以及所述对象存储器结构的名称空间中的全局唯一的对象名称,其中:由至少一个存储器模块的硬件,通过所述对象存储器结构的名称空间,在所述存储器模块的存储器层本机地创建每个存储器对象;由在所述基于硬件的处理节点中的任何基于硬件的处理节点上执行的应用在没有所述应用的输入/输出(I/O)指令的情况下,通过所述存储器模块的硬件,使用单个存储器引用指令来存取每个存储器对象;由所述存储器模块的硬件,通过所述对象存储器结构的名称空间,基于每个存储器对象的元数据,在所述存储器模块的存储器层管理每个存储器对象,而没有持久存储体和临时存储器的区分并且没有存储器对象在存储器结构上的本地位置和远程位置的区分,所述元数据限定关于所述存储器对象的数据的情景信息、所述存储器对象的使用和管理、与其他存储器对象的关系和所述存储器对象的一个或多个触发器;以及所述对象存储器结构的临时存储器和持久存储体两者的物理寻址是在每个存储器对象内管理的,并且每个存储器对象是通过所述对象存储器结构的名称空间按对象名称存取的,而没有持久存储体和临时存储器的区分或者没有所述存储器结构上的本地位置或远程位置的区分,以及
节点路由器,其与所述节点的一个或多个存储器模块中的每一个通信地耦合,并且适于在所述节点的一个或多个存储器模块之间路由存储器对象或存储器对象的部分;以及
一个或多个节点间路由器,其与每个节点路由器通信地耦合,其中所述对象存储器结构的多个节点中的每一个与所述节点间路由器中的至少一个通信地耦合,并且适于在所述多个节点之间路由存储器对象或存储器对象的部分。
14.如权利要求13所述的对象存储器结构,其中,所述存储器模块通过所述一个或多个存储器对象没有区分地管理存储体和存储器两者。
15.如权利要求14所述的对象存储器结构,其中,通过所述一个或多个存储器对象没有区分地管理存储体和存储器两者包括:将所述一个或多个存储器对象中的全部作为存储器进行管理,而不管底层物理存储介质。
16.如权利要求13所述的对象存储器结构,其中,所述一个或多个存储器对象是通过所述对象存储器结构的对象名称空间而跨所述对象存储器结构进行存取和管理的。
17.如权利要求16所述的对象存储器结构,其中,每个存储器对象和每个存储器对象的属性被保持在所述对象存储器结构中的所述多个节点中的任何一个或多个上,其中,管理所述存储器对象包括:当所述存储器对象在节点之间被移动、拆分或复制时,保持所述存储器对象和所述存储器对象的属性。
18.如权利要求13所述的对象存储器结构,其中,所述对象名称空间不受由所述一个或多个存储器对象管理的物理地址的限制。
19.如权利要求12所述的对象存储器结构,其中,所述基于硬件的处理节点包括商品服务器,并且其中,所述商品服务器的一个或多个存储器模块包括安装在所述商品服务器内的至少一个双列直插存储器模块(DIMM)卡。
20.如权利要求13所述的对象存储器结构,其中,所述通信接口包括外围部件高速互连(PCI-e)卡。
21.如权利要求13所述的对象存储器结构,其中,至少一个基于硬件的处理节点包括移动计算装置。
22.如权利要求13所述的对象存储器结构,其中,至少一个基于硬件的处理节点包括单个芯片。
23.一种在对象存储器结构中存储并管理一个或多个存储器对象的方法,所述方法包括:
通过所述对象存储器结构的名称空间,在所述对象存储器结构的基于硬件的处理节点的存储器模块的硬件内,在所述存储器模块的存储器层本机地创建每个存储器对象,每个存储器对象包括与该存储器对象相关联的一个或多个属性、该存储器对象所存储的应用数据、可扩展元数据以及所述对象存储器结构的名称空间中的全局唯一的对象名称;
由所述存储器模块的硬件,通过所述对象存储器结构的名称空间,基于每个存储器对象的元数据,在所述存储器模块的存储器层管理每个存储器对象,而没有持久存储体和临时存储器的区分并且没有存储器对象在存储器结构上的本地位置和远程位置的区分,所述元数据限定关于所述存储器对象的数据的情景信息、所述存储器对象的使用和管理、与其他存储器对象的关系和所述存储器对象的一个或多个触发器,其中,由应用在没有所述应用的输入/输出(I/O)指令的情况下,通过所述存储器模块的硬件,使用单个存储器引用指令来存取每个存储器对象;以及
在每个存储器对象内管理所述对象存储器结构的临时存储器和持久存储体两者的物理寻址,并且每个存储器对象是通过所述对象存储器结构的名称空间按对象名称存取的,而没有持久存储体和临时存储器的区分或者没有所述存储器结构上的本地位置或远程位置的区分。
24.如权利要求23所述的方法,其中,所述存储器模块通过所述一个或多个存储器对象没有区分地管理存储体和存储器两者。
25.如权利要求24所述的方法,其中,通过所述一个或多个存储器对象没有区分地管理存储体和存储器两者包括:将所述一个或多个存储器对象中的全部作为存储器进行管理,而不管底层物理存储介质。
26.如权利要求23所述的方法,其中,所述对象存储器结构包括多个基于硬件的处理节点,并且其中,所述一个或多个存储器对象是通过所述对象存储器结构的对象名称空间而跨所述对象存储器结构进行存取和管理的。
27.如权利要求26所述的方法,其中,每个存储器对象和每个存储器对象的属性被保持在所述对象存储器结构中的所述多个节点中的任何一个或多个上,其中,管理所述存储器对象包括:当所述存储器对象在节点之间被移动、拆分或复制时,保持所述存储器对象和所述存储器对象的属性。
28.如权利要求23所述的方法,其中,所述对象名称空间不受由所述一个或多个存储器对象管理的物理地址的限制。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562105482P | 2015-01-20 | 2015-01-20 | |
US62/105,482 | 2015-01-20 | ||
PCT/US2016/014013 WO2016118559A1 (en) | 2015-01-20 | 2016-01-20 | Object based memory fabric |
CN201680015733.XA CN107533517B (zh) | 2015-01-20 | 2016-01-20 | 基于对象的存储器结构 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680015733.XA Division CN107533517B (zh) | 2015-01-20 | 2016-01-20 | 基于对象的存储器结构 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114741334A true CN114741334A (zh) | 2022-07-12 |
Family
ID=56407941
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111497351.4A Pending CN114741334A (zh) | 2015-01-20 | 2016-01-20 | 通用单级对象存储器地址空间 |
CN201680015733.XA Active CN107533517B (zh) | 2015-01-20 | 2016-01-20 | 基于对象的存储器结构 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680015733.XA Active CN107533517B (zh) | 2015-01-20 | 2016-01-20 | 基于对象的存储器结构 |
Country Status (5)
Country | Link |
---|---|
US (4) | US20160210077A1 (zh) |
EP (1) | EP3248105B1 (zh) |
CN (2) | CN114741334A (zh) |
CA (1) | CA2974382C (zh) |
WO (4) | WO2016118564A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112214424B (zh) | 2015-01-20 | 2024-04-05 | 乌尔特拉塔有限责任公司 | 对象存储器结构、处理节点、存储器对象存储和管理方法 |
US11782601B2 (en) | 2015-01-20 | 2023-10-10 | Ultrata, Llc | Object memory instruction set |
US9886210B2 (en) | 2015-06-09 | 2018-02-06 | Ultrata, Llc | Infinite memory fabric hardware implementation with router |
US10698628B2 (en) | 2015-06-09 | 2020-06-30 | Ultrata, Llc | Infinite memory fabric hardware implementation with memory |
US9971542B2 (en) | 2015-06-09 | 2018-05-15 | Ultrata, Llc | Infinite memory fabric streams and APIs |
WO2017100288A1 (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 |
CA3006773A1 (en) | 2015-12-08 | 2017-06-15 | Ultrata, Llc | Memory fabric software implementation |
US10241676B2 (en) | 2015-12-08 | 2019-03-26 | Ultrata, Llc | Memory fabric software implementation |
US10277677B2 (en) | 2016-09-12 | 2019-04-30 | Intel Corporation | Mechanism for disaggregated storage class memory over fabric |
US10417733B2 (en) | 2017-05-24 | 2019-09-17 | Samsung Electronics Co., Ltd. | System and method for machine learning with NVMe-of ethernet SSD chassis with embedded GPU in SSD form factor |
JP6956574B2 (ja) * | 2017-09-08 | 2021-11-02 | キヤノン株式会社 | 画像処理装置、プログラムおよび方法 |
CN110110004B (zh) * | 2018-01-30 | 2023-05-30 | 腾讯科技(深圳)有限公司 | 一种数据操作方法、装置和存储介质 |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5664207A (en) * | 1994-12-16 | 1997-09-02 | Xcellenet, Inc. | Systems and methods for automatically sharing information among remote/mobile nodes |
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 |
US20050273571A1 (en) * | 2004-06-02 | 2005-12-08 | Lyon Thomas L | Distributed virtual multiprocessor |
US8713295B2 (en) * | 2004-07-12 | 2014-04-29 | Oracle International Corporation | Fabric-backplane enterprise servers with pluggable I/O sub-system |
WO2006015245A2 (en) * | 2004-07-29 | 2006-02-09 | Modius, Inc. | Universal configurable device gateway |
US7539821B2 (en) * | 2004-12-28 | 2009-05-26 | Sap Ag | First in first out eviction implementation |
US7200023B2 (en) * | 2005-05-12 | 2007-04-03 | International Business Machines Corporation | Dual-edged DIMM to support memory expansion |
WO2006135999A1 (en) * | 2005-06-24 | 2006-12-28 | Research In Motion Limited | System and method for managing memory in a mobile device |
CN100367727C (zh) * | 2005-07-26 | 2008-02-06 | 华中科技大学 | 一种可扩展的基于对象的存储系统及其控制方法 |
KR100825721B1 (ko) * | 2005-12-08 | 2008-04-29 | 한국전자통신연구원 | 객체 기반 스토리지 시스템에서 사용자 파일 관리자 내의시간 기반 캐쉬 일관성 유지 시스템 및 방법 |
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 |
US20080154986A1 (en) * | 2006-12-22 | 2008-06-26 | Storage Technology Corporation | System and Method for Compression of Data Objects in a Data Storage System |
US9575889B2 (en) * | 2008-07-03 | 2017-02-21 | Hewlett Packard Enterprise Development Lp | Memory server |
JP5153539B2 (ja) * | 2008-09-22 | 2013-02-27 | 株式会社日立製作所 | メモリ管理方法およびその方法を用いるコンピュータ |
US8392661B1 (en) * | 2009-09-21 | 2013-03-05 | Tilera Corporation | Managing cache coherence |
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 |
US8346934B2 (en) * | 2010-01-05 | 2013-01-01 | Hitachi, Ltd. | Method for executing migration between virtual servers and server system used for the same |
US8244978B2 (en) * | 2010-02-17 | 2012-08-14 | Advanced Micro Devices, Inc. | IOMMU architected TLB support |
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 |
US8589650B2 (en) * | 2010-05-17 | 2013-11-19 | Texas Instruments Incorporated | Dynamically configurable memory system |
US20120102453A1 (en) * | 2010-10-21 | 2012-04-26 | Microsoft Corporation | Multi-dimensional objects |
US20120331243A1 (en) * | 2011-06-24 | 2012-12-27 | International Business Machines Corporation | Remote Direct Memory Access ('RDMA') In A Parallel Computer |
US8738868B2 (en) * | 2011-08-23 | 2014-05-27 | Vmware, Inc. | Cooperative memory resource management for virtualized computing devices |
US8844032B2 (en) * | 2012-03-02 | 2014-09-23 | Sri International | Method and system for application-based policy monitoring and enforcement on a mobile device |
US9558351B2 (en) * | 2012-05-22 | 2017-01-31 | Xockets, Inc. | Processing structured and unstructured data using offload processors |
US20140137019A1 (en) * | 2012-11-14 | 2014-05-15 | Apple Inc. | Object connection |
US9384037B2 (en) * | 2013-03-14 | 2016-07-05 | Intel Corporation | Memory object reference count management with improved scalability |
US9432344B2 (en) * | 2013-03-15 | 2016-08-30 | Low Gravity Innovation, Inc. | Secure storage and sharing of user objects |
US9756128B2 (en) * | 2013-04-17 | 2017-09-05 | Apeiron Data Systems | Switched direct attached shared storage architecture |
US10592475B1 (en) * | 2013-12-27 | 2020-03-17 | Amazon Technologies, Inc. | Consistent data storage in distributed computing systems |
US9703768B1 (en) * | 2014-09-30 | 2017-07-11 | EMC IP Holding Company LLC | Object metadata query |
-
2016
- 2016-01-20 WO PCT/US2016/014024 patent/WO2016118564A1/en active Application Filing
- 2016-01-20 WO PCT/US2016/014013 patent/WO2016118559A1/en active Application Filing
- 2016-01-20 US US15/001,332 patent/US20160210077A1/en not_active Abandoned
- 2016-01-20 WO PCT/US2016/014021 patent/WO2016118563A1/en active Application Filing
- 2016-01-20 CN CN202111497351.4A patent/CN114741334A/zh active Pending
- 2016-01-20 EP EP16740628.9A patent/EP3248105B1/en active Active
- 2016-01-20 US US15/001,320 patent/US20160210076A1/en not_active Abandoned
- 2016-01-20 CA CA2974382A patent/CA2974382C/en active Active
- 2016-01-20 US US15/001,340 patent/US20160210078A1/en not_active Abandoned
- 2016-01-20 CN CN201680015733.XA patent/CN107533517B/zh active Active
- 2016-01-20 WO PCT/US2016/014018 patent/WO2016118561A1/en active Application Filing
- 2016-01-20 US US15/001,343 patent/US20160210079A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20160210076A1 (en) | 2016-07-21 |
WO2016118559A1 (en) | 2016-07-28 |
CN107533517A (zh) | 2018-01-02 |
US20160210079A1 (en) | 2016-07-21 |
CA2974382C (en) | 2023-09-26 |
US20160210077A1 (en) | 2016-07-21 |
US20160210078A1 (en) | 2016-07-21 |
CA2974382A1 (en) | 2016-07-28 |
CN107533517B (zh) | 2021-12-21 |
WO2016118564A1 (en) | 2016-07-28 |
EP3248105A1 (en) | 2017-11-29 |
WO2016118561A1 (en) | 2016-07-28 |
WO2016118563A1 (en) | 2016-07-28 |
EP3248105A4 (en) | 2018-10-17 |
EP3248105B1 (en) | 2023-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107533517B (zh) | 基于对象的存储器结构 | |
US11126350B2 (en) | Utilization of a distributed index to provide object memory fabric coherency | |
CN107533457B (zh) | 对象存储器数据流指令执行 | |
CN113282236A (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 |