CN107533457B - 对象存储器数据流指令执行 - Google Patents

对象存储器数据流指令执行 Download PDF

Info

Publication number
CN107533457B
CN107533457B CN201680016481.2A CN201680016481A CN107533457B CN 107533457 B CN107533457 B CN 107533457B CN 201680016481 A CN201680016481 A CN 201680016481A CN 107533457 B CN107533457 B CN 107533457B
Authority
CN
China
Prior art keywords
memory
hardware
fabric
instructions
objects
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201680016481.2A
Other languages
English (en)
Other versions
CN107533457A (zh
Inventor
S.弗兰克
L.里巴克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ultrata LLC
Original Assignee
Ultrata LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ultrata LLC filed Critical Ultrata LLC
Priority to CN202110697593.1A priority Critical patent/CN113704141A/zh
Publication of CN107533457A publication Critical patent/CN107533457A/zh
Application granted granted Critical
Publication of CN107533457B publication Critical patent/CN107533457B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0824Distributed directories, e.g. linked lists of caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0837Cache consistency protocols with software control, e.g. non-cacheable data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • G06F2212/2542Non-uniform memory access [NUMA] architecture

Abstract

本发明的实施例提供了用于管理处理、存储器、存储体、网络和云计算的系统和方法,以显著地改善处理节点的效率和性能。更具体地,本发明的实施例涉及对象存储器结构的指令集。该对象存储器结构指令集可以用于基于存储器对象的元数据中定义的触发器来提供唯一的指令模型。该模型表示动态数据流的执行方法,其中基于存储器对象的实际相关性执行进程。这提供了高度的存储器和执行并行性,这进而又提供了存储器对象之间的存取延迟的变化的容限。在该模型中,基于数据存取来执行和管理指令序列。这些序列可以是任意长度,但短序列更高效并提供更大的并行性。

Description

对象存储器数据流指令执行
相关申请的交叉引用
本申请要求Frank等人于2015年1月20提交的题为“Infinite Memory FabricInstruction Set”的美国临时申请No.62/105,549在35USC 119(e)下的权益,其全部公开内容通过引用并入本文用于所有目的。
本申请还涉及以下共同未决和共同转让的美国专利申请:
同时由Frank提交的题为“Object Based Memory Fabric”的美国专利申请No.15/001,320(代理人案卷号097704-0967319(000100US));
同时由Frank提交的题为“Trans-Cloud Object Based Memory”的美国专利申请No.15/001,332(代理人案卷号097704-0967320(000110US));
同时由Frank提交的题为“Universal Single Level Object Memory AddressSpace”的美国专利申请No.15/001,340(代理人案卷号097704-0967321(000120US));
同时由Frank提交的题为“Object Memory Fabric Performance Acceleration”的美国专利申请No.15/001,343(代理人案卷号097704-0967322(000130US));
同时由Frank提交的题为“Distributed Index for Fault Tolerance ObjectMemory Fabric”的美国专利申请No.15/001,451(代理人案卷号097704-0967323(000200US));
同时由Frank提交的题为“Implementation of an Object Memory CentricCloud”的美国专利申请No.15/001,494(代理人案卷号097704-0967324(000210US));
同时由Frank提交的题为“Managing MetaData in an Object Memory Fabric”的美国专利申请No.15/001,524(代理人案卷号097704-0967325(000220US));
同时由Frank提交的题为“Utilization of a Distributed Index to ProvideObject Memory Fabric Coherency”的美国专利申请No.15/001,652(代理人案卷号097704-0967326(000230US));
同时由Frank提交的题为“Object Memory Data Flow Trigger”的美国专利申请No.15/001,490(代理人案卷号097704-0967329(000310US));以及
同时由Frank提交的题为“Object Memory Instruction Set”的美国专利申请No.15/001,526(代理人案卷号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)指令的情况下,使用单个存储器引用指令来存取每个存储器对象,且可以由所述存储器模块在单个存储器层使用为每个存储器对象定义的元数据集并根据存储器数据流模型来管理每个存储器对象。可以基于对所述存储器对象中的一个或多个存储器对象的数据存取来执行和管理指令序列。所述指令序列可以在所述对象元数据中定义,且所述对象元数据可以对于每个存储器对象是本地的。
所述对象存储器结构可以包括多个基于硬件的处理节点,且每个存储器对象和每个存储器对象的元数据可以被保持在所述对象存储器结构中的多个节点的任何一个或多个上。在这样的情况下,根据所述存储器数据流模型管理所述存储器对象可以包括,当所述存储器对象在节点之间移动、拆分或复制时,执行对于每个存储器对象是本地的所述指令序列。每个指令序列可以具有对应的线程状态,且其中每个指令序列的线程状态存储在所述存储器对象的元数据中。可以基于所述存储器对象的实际相关性(dependency)执行并管理指令序列。
在一些情况下,所述基于硬件的处理节点可以包括双列直插存储器模块(DIMM)卡。例如,所述基于硬件的处理节点可以包括商品服务器,且所述存储器模块可以包括安装在所述商品服务器内的双列直插存储器模块(DIMM)卡。通信接口也可以与所述对象存储器结构耦合。例如,所述通信接口包括外围部件互连高速(PCI-e)卡。在其他情况下,所述基于硬件的处理节点可以包括移动计算装置。在又一实施例中,所述基于硬件的处理节点可以包括单个芯片。
根据一个实施例,一种对象存储器结构可以包括多个基于硬件的处理节点。每个基于硬件的处理节点可以包括存储并管理一个或多个存储器对象的一个或多个存储器模块,其中每个存储器对象在所述存储器模块内本地创建,在没有输入/输出(I/O)指令的情况下,使用单个存储器引用指令来存取每个存储器对象,并且每个存储器对象由所述存储器模块在单个存储器层使用为每个存储器对象定义的元数据集并根据存储器数据流模型来管理。每个基于硬件的处理节点还可以包括节点路由器,其与所述节点的一个或多个存储器模块中的每一个通信地耦合,且适于在所述节点的一个或多个存储器模块之间路由存储器对象或存储器对象的部分。所述对象存储器结构还可以包括一个或多个节点间路由器,其与每个节点路由器通信地耦合,其中所述对象存储器结构的多个节点中的每一个与所述节点间路由器中的至少一个通信地耦合,且适于在所述多个节点之间路由存储器对象或存储器对象的部分。
在这样的对象存储器结构中,可以基于对所述存储器对象中的一个或多个存储器对象的数据存取来执行和管理指令序列。所述指令序列可以在所述对象元数据中定义,且所述对象元数据可以对于每个存储器对象是本地的。每个存储器对象和每个存储器对象的元数据被保持在所述对象存储器结构中的多个节点的任何一个或多个上,且根据所述存储器数据流模型管理所述存储器对象可以包括,当所述存储器对象在节点之间移动、拆分或复制时,执行对于每个存储器对象是本地的所述指令序列。每个指令序列可以具有对应的线程状态,且每个指令序列的线程状态可以存储在所述存储器对象的元数据中。也可以基于所述存储器对象的实际相关性执行并管理指令序列。在一些实施方式中,至少一个基于硬件的处理节点可以包括商品服务器,且所述商品服务器的一个或多个存储器模块可以包括安装在所述商品服务器内的至少一个双列直插存储器模块(DIMM)卡。在这样的情况下,通信接口可以包括外围部件互连高速(PCI-e)卡。附加地或替代地,至少一个基于硬件的处理节点可以包括移动计算装置、单个芯片、和/或其他形式因子。
根据又一实施例,一种用于存储并管理对象存储器结构中的一个或多个存储器对象的方法可以包括:在所述对象存储器结构的基于硬件的处理节点的存储器模块内本地创建每个存储器对象,在没有输入/输出(I/O)指令的情况下,使用单个存储器引用指令存取每个存储器对象,以及在单个存储器层使用为每个存储器对象定义的元数据集并根据存储器数据流模型来管理所述存储器模块内的每个存储器对象。可以基于对所述存储器对象中的一个或多个存储器对象的数据的存取来执行和管理指令序列。所述指令序列可以在所述对象元数据中定义,且所述对象元数据可以对于每个存储器对象是本地的。所述对象存储器结构可以包括多个基于硬件的处理节点,且每个存储器对象和每个存储器对象的元数据可以被保持在所述对象存储器结构中的多个节点的任何一个或多个上。根据所述存储器数据流模型管理所述存储器对象可以包括,当所述存储器对象在节点之间移动、拆分或复制时,执行对于每个存储器对象是本地的所述指令序列。每个指令序列可以具有对应的线程状态,且每个指令序列的线程状态可以存储在所述存储器对象的元数据中。也可以基于所述存储器对象的实际相关性执行并管理指令序列。
附图说明
图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可以是便携式手持装置(例如,
Figure BDA0001410705450000111
蜂窝电话、
Figure BDA0001410705450000112
计算平板、个人数字助理(PDA))或可穿戴装置(例如,Google
Figure BDA0001410705450000113
头戴式显示器),其运行诸如Microsoft Windows
Figure BDA0001410705450000114
的软件,和/或各种移动操作系统,例如iOS、Windows Phone、Android、BlackBerry 10、Palm OS、等等,且可被互联网、电子邮件、短信息服务(SMS)、
Figure BDA0001410705450000115
或其他允许的通信协议使能。客户端计算装置可以是通用个人计算机,例如包括个人计算机和/或膝上计算机,其运行各种版本的Microsoft
Figure BDA0001410705450000116
Apple
Figure BDA0001410705450000117
和/或Linux操作系统。客户端计算装置可以是工作站计算机,其运行各种可商购的
Figure BDA0001410705450000118
或类UNIX操作系统中的任一个,包括但不限于各种GNU/Linux操作系统,例如Google Chrome OS。替代地或附加地,客户端计算装置202、204、206和208可以是任何其他电子装置,例如轻薄客户端电脑、支持互联网的游戏系统(例如,Microsoft Xbox游戏控制台,具有或不具有
Figure BDA0001410705450000119
手势输入装置),和/或能够通过(多个)网络210通信的个人消息装置。
尽管示范性分布式系统200被示出为具有四个客户端计算装置,但可以支持任何数量的客户端计算装置。其他装置(例如具有传感器的装置等)可以与服务器212交互。
分布式系统200中的(多个)网络210可以是本领域技术人员所熟悉的任何类型的网络,其可以支持使用各种可商购的协议中的任一个(包括但不限于TCP/IP(传输控制协议/互联网协议)、SNA(系统网络架构)、IPX(互联网分组交换)、AppleTalk、等等)的数据通信。仅作为示例,(多个)网络210可以是局域网(LAN),例如基于以太网、令牌环和/或诸如此类的局域网。(多个)网络210可以是广域网和互联网。其可以包括虚拟网络、包括但不限于虚拟专用网络(VPN)、内部网、外部网、公共交换电话网络(PSTN)、红外网络、无线网络(例如,在任何电气与电子工程师协会(IEEE)802.11协议套件、
Figure BDA00014107054500001110
和/或任何其他无线协议下操作的网络);和/或这些和/或其他网络的任何组合。这些网络的元件可以具有任意距离,即可以是远程或共同定位的。软件定义网络(SDN)可以通过非智能(dumb)路由器和在服务器上运行的软件的组合来实现。
服务器212可以由以下组成:一个或多个通用计算机、专用服务器计算机(例如包括个人计算机(PC)服务器、
Figure BDA00014107054500001111
服务器、中等服务器、大型计算机、机架安装式服务器、等等)、服务器场、服务器集群、或任何其他合适的布置和/或组合。在各种实施例中,服务器212可以适于运行前述公开中描述的一个或多个服务或软件应用。例如,服务器212可以对应于执行根据本公开的实施例的上述处理的服务器。
服务器212可以运行的操作系统包括上述中的任一个,以及任何可商购的服务器操作系统。服务器212还可以运行各种附加的服务器应用和/或中间层应用中的任一个,包括超文本传输协议(HTTP)服务器、文件传输协议(FTP)服务器、公共网关接口(CGI)服务器、
Figure BDA0001410705450000121
服务器、数据库服务器、等等。示范性数据库服务器包括但不限于可从Oracle、Microsoft、Sybase、国际商业机器(IBM)等商购的那些。
在一些实施方式中,服务器212可以包括一个或多个应用,以分析和整合从客户端计算装置202、204、206和208接收的数据馈送和/或事件更新。作为示例,数据馈送和/或事件更新可以包括但不限于
Figure BDA0001410705450000122
馈送、
Figure BDA0001410705450000123
更新、或从一个或多个第三方信息源和连续数据流接收的实时更新,其可以包括与传感器数据应用、财务收报机、网络性能测量工具(例如网络监控和流量管理应用)、点击流分析工具、汽车交通监控等相关的实时事件。服务器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
Figure BDA0001410705450000131
运动传感器,其允许用户通过使用手势和口说命令的自然用户接口控制输入装置(例如Microsoft
Figure BDA0001410705450000141
360游戏控制器)和与该输入装置交互。用户界面输入装置还可以包括眼部动作识别装置,例如Google
Figure BDA0001410705450000142
眨眼检测器,其检测来自用户的眼部活动(例如,在拍摄照片和/或进行菜单选择时的“眨眼”),并将眼部动作转换为到输入装置(例如,Google
Figure BDA0001410705450000143
)的输入。此外,用户界面输入装置可以包括语音识别感测装置,其允许用户通过语音命令与语音识别系统(例如,
Figure BDA0001410705450000144
导航器)交互。
用户界面输入装置可以包括但不限于,三维(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可以包括各种版本的Microsoft
Figure BDA0001410705450000151
Apple
Figure BDA0001410705450000152
和/或Linux操作系统、各种可商购的
Figure BDA0001410705450000153
或类UNIX操作系统(包括但不限于GNU/Linux操作系统、Google
Figure BDA0001410705450000154
OS、等等)和/或移动操作系统,例如iOS、
Figure BDA0001410705450000155
手机、
Figure BDA0001410705450000156
OS、
Figure BDA0001410705450000157
10OS、以及
Figure BDA0001410705450000158
OS操作系统。
存储体子系统318还可以提供有形的计算机可读取存储介质,用于存储提供一些实施例的功能的基本编程和数据结构。当由处理器执行时提供上述功能的软件(程序、代码模块、指令)可以存储在存储体子系统318中。这些软件模块或指令可以由处理单元304执行。存储体子系统318还可以提供用于存储根据本发明使用的数据的存储库(repository)。
存储体子系统300还可以包括计算机可读存储介质读取器320,其可以进一步连接到计算机可读取存储介质322。一起且可选地与系统存储器310结合,计算机可读取存储介质322可以全面地表示远程、本地、固定、和/或可移除存储装置加上存储介质,用于暂时地和/或更加永久地包含、存储、传输和取回计算机可读信息。
包含代码、或代码的部分的计算机可读取存储介质322可以包括本领域已知或使用的任何合适的介质,包括存储介质和通信介质,例如但不限于,易失性和非易失性、可移除和不可移除介质,其以任何方法或技术实现以存储和/或传输信息。这可以包括有形的计算机可读取存储介质,例如RAM、ROM、电可擦除可编程ROM(EEPROM)、闪存存储器或其他存储器技术、CD-ROM、数字通用盘(DVD)、或其他光学存储体、磁带盒、磁带、磁盘存储体或其他磁存储装置、或其他有形的计算机可读取介质。这也可以包括无形的计算机可读介质,例如数字信号、数据传输、或可以用于传输期望的信息且可以由计算系统300存取的任何其他介质。
作为示例,计算机可读取存储介质322可以包括从不可移除、非易失性磁介质读取或向其写入的硬盘驱动器,从可移除、非易失性磁盘读取或向其写入的磁盘驱动器,从可移除、非易失性光盘(例如,CD ROM、DVD和
Figure BDA0001410705450000161
盘,或其他光学介质)读取或向其写入的光盘驱动器。计算机可读取存储介质322可以包括但不限于,
Figure BDA0001410705450000162
驱动器、闪存存储器卡、通用总线(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可以配置为从社交网络和/或其他通信服务(例如,
Figure BDA0001410705450000163
馈送、
Figure BDA0001410705450000164
更新、诸如丰富站点摘要(RSS)馈送的web馈送)的用户实时地接收数据馈送326,和/或从一个或多个第三方信息源接收实时更新。
此外,通信子系统324还可以配置接收连续数据流形式的数据,其可以包括实时事件的事件流328和/或事件更新330,其本质上可以是连续或无界的,没有明确的结束。生成连续数据的应用的例子可以例如包括传感器数据应用、财务收报机、网络性能测量工具(例如,网络监控和流量管理应用)、点击流分析工具、汽车交通监控、等等。
通信子系统324还可以配置为输出结构化和/或未结构化的数据馈送326,事件流328、事件更新330等到一个或多个数据库,所述数据库可以与耦合到计算机系统300的一个或多个流数据源计算机通信。
计算机系统300可以是各种类型的中一个,包括手持便携式装置(例如,
Figure BDA0001410705450000171
蜂窝电话、
Figure BDA0001410705450000172
计算平板、PDA)、可穿戴装置(例如,Google
Figure BDA0001410705450000173
头戴式显示器)、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节点内)。
Figure BDA0001410705450000241
图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寻址机制。
Figure BDA0001410705450000261
Figure BDA0001410705450000271
下面的表3标识了根据本公开的某些实施例的对象地址空间指针相对于对象大小的方面的非限制性示例。对象地址空间的实施例可以支持多个段大小,例如,如下面的表3所示的从221到264的六个段大小。对象大小对应于x86-64虚拟存储器段和大页面大小。对象可以从模0对象大小边界开始。对象地址空间指针910可以分解为ObjStart和ObjOffset字段,其大小取决于对象大小,如下面的示例所示。ObjStart字段对应于对象的对象地址空间开始,也对应于ObjectID。ObjOffset是从零到(ObjectSize-1)的范围中的无符号值,指定对象内的偏移。对象元数据可以指定对象地址空间指针910的对象大小和对象存储器结构解释。任意大小和稀疏度的对象都可以仅通过为对象内的感兴趣块分配存储体来指定。
由于大部分应用的性质及对象存储器结构700的对象性质,大多数寻址可以相对于对象。在一些实施例中,所有对象存储器结构地址指针格式可以由处理器本地存储和加载。在一些实施例中,对象相对和对象虚拟地址可以直接使用x86-64寻址模式。对象虚拟地址指针可以是或包括在x86-64段和对应的对象存储器结构对象内工作的进程虚拟地址。对象存储器结构对象地址空间可以通过使用对象虚拟地址作为对象偏移来计算。对象相对指针可以是或包括到x86-64虚拟地址段的偏移,因此基准加索引寻址模式完美地运行。对象存储器结构对象地址空间可以通过使用对象相对作为对象偏移来计算。下面的表3标识了根据本公开的某些实施例的从作为对象大小的函数的对象虚拟地址或对象相对指针生成128位对象地址空间的细节的非限制性示例。
Figure BDA0001410705450000272
Figure BDA0001410705450000281
如本文所公开的,某些实施例可以包括对象存储器结构分布式对象存储器和索引。使用分布式索引,各个节点可以在每个对象的基础上索引本地对象和对象的块。对象存储器结构分布式对象存储器和索引的某些实施例可以至少部分地基于细胞自动机和胖树的交叉点概念。具有实时动态索引的现有的分布式硬件和软件系统使用两种方法:集中式索引或分布式单一概念索引。对象存储器结构的实施例可以使用在胖树分层网络之上覆盖独立的本地索引函数的新方法。
图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所描述。然而,各种其他实施例是可能的。
Figure BDA0001410705450000321
图13是示出了根据本公开的某些实施例的鉴于对象存储器结构分布式对象存储器和索引结构的叶级对象存储器结构1300的示例的框图。在一些实施例中,叶级对象存储器结构1300可以包括一组嵌套的B树。根树可以是对象索引树(OIT)1305,其可以索引本地存在的对象。对象索引树1305的索引可以是对象存储器结构对象地址,因为对象从对象大小模零开始。对于每个对象(该对象至少有本地存储在对象存储器内的单个块),可以有一个对象索引树1305。
对象索引树1305可以向每个对象索引树(POIT)1310中的一个或多个提供一个或多个指针(例如,本地指针)。例如,每个本地对象可能有每个对象索引树1310。每个对象索引树1310可以索引对象元数据和属于本地存在的对象的块。每个对象索引树1310叶指向DRAM 1315和闪存1320中的对应的元数据和块(例如,基于对象内的偏移)。特定块的叶可以指向DRAM1315和闪存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中标识。其他实施例是可能的。单独的索引树可以包括节点块和叶块。每个节点或叶块可以基于类型和大小包括可变数量的条目。类型指定节点块、叶和/或叶块、节点的类型。
Figure BDA0001410705450000331
Figure BDA0001410705450000341
Figure BDA0001410705450000351
大小独立地指定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可以保有如图所示的对象的元数据。
Figure BDA0001410705450000391
Figure BDA0001410705450000401
系统定义的元数据可以包括任何与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。随着对象的数量、对象大小和对象容量的增加,线程和微线程并行性可以增加。由于线程和微线程可以与对象绑定,随着对象移动和分配,线程和微线程也可以这样。对象存储器结构的实施例可以具有将对象或对象的部分移动到线程或将线程分配到(多个)对象的动态选择。这可以通过由扩展执行模型实现的封装对象方法来促进。
如上面进一步指出的,本发明的实施例还可以包括对象存储器结构指令集,其可以基于支持核心操作和优化的触发来提供唯一的指令模型,并且允许在对象存储器结构内以高度并行的方式更高效地执行应用的存储器密集部分。
对象存储器结构指令集可以由于几个特性而为数据使能的(date-enabling)。首先,通过由常规处理器、对象存储器结构活动、另一序列或显式对象存储器结构API调用进行的数据存取,可以灵活地触发指令序列。第二,序列可以是任意长度,但是短序列可以更高效。第三,对象存储器结构指令集可以具有高度多线程的存储器规模。第四,对象存储器结构指令集可以为常规处理器提供高效的共线程。
本发明的实施例包括两类指令。第一类指令是触发器指令。触发器指令包括基于对特定对象地址(OA)的引用的单个指令和动作。触发器指令可以调用扩展指令。第二类指令是扩展指令。扩展指令定义了从API调用到完整的高级软件功能的任意并行功能。在对指令集模型进行讨论之后,将依次讨论这两类指令。如前所述,在没有触发器之外的情景下,触发器指令实现高效的单用途内存相关功能。
使用上面定义的元数据和触发器可以实现基于存储器数据流的执行模型。该模型可以表示动态数据流执行方法,其中基于存储器对象的实际相关性(dependency)来执行进程。这提供了高度的存储器和执行并行性,这进而又提供了存储器对象之间的访问延迟的变化的容限。在这个模型中,指令序列是基于数据存取执行和管理的。这些序列可以是任意长度,但短序列更高效并且提供更大的并行性。
扩展指令集实现高效、高度线程化的存储器中执行。指令集以几种方式获得效率。首先,指令集可以包括直接对象地址处理和生成,而不需要复杂地址转换的开销和软件层来管理不同的地址空间。第二,指令集可以包括直接对象认证,没有可以基于安全第三方认证软件设置的运行时开销。第三,指令集可以包括对象相关的存储器计算。例如,随着对象移动,计算可以与它们一起移动。第四,指令集可以包括基于规模和活动的动态和透明的并行性。第五,指令集可以包括可以对象存储器结构操作,其可以使用集成存储器指令集来实现,使得存储器行为可以针对应用需求而定制。第六,指令集可以处理存储器中的存储器密集型计算目录的功能。这包括在存储器被触摸时添加操作。可能的操作可以包括但不限于搜索、图像/信号处理、加密和压缩。与常规处理器的低效交互显著地减少。
扩展指令功能可以针对存储器密集型计算,其主要用于存储器引用以及基于这些引用的简单操作,所述存储器引用用于大于高速缓存或主存储器的感兴趣的大小问题。一些示例可以包括但不限于:
-从常规处理器定义API宏。
-定义对象存储器结构的分层部件之间的交互流。每个部件可以使用核心指令序列集来实现对象存储器结构功能。
-用于宏的短序列,来加速诸如BFS(广度优先搜索)等关键应用内核。BFS是搜索图形的核心策略,被图形数据库和图形应用大量使用。例如,BFS用于各种各样的问题空间,以找到最短或最佳路径。其为一个代表性的算法,它说明了分析大规模图形的挑战,即无局部性,因为图形大于高速缓存和主存储器,几乎所有的工作都是通过存储器引用。在BFS的情况下,本文所述的扩展指令能力与线程耦合,通过线程的递归实例来处理几乎整个BFS,以基于图形大小和可用节点搜索邻接列表。高度并行的直接存储器中处理和高级存储器操作可以减少软件路径长度。当结合上述对象存储器结构能力以使所有数据在存储器中并使其在使用之前进行本地化时,每个节点的性能和效率显著地增加。
-完整的层功能,例如:
用于分层文件系统的存储引擎,其构建在平面对象存储器的顶部上。存储引擎例如从对象内存储、处理和取回适当的(多个)对象和信息。对于MySQL,对象可能是表。对于文件系统,对象可以是文件或目录。对于图形数据库,对象可以是图形,且信息可以由顶点和边缘组成。
支持的运算符可以例如是基于对象的类型(文件、图形、SQL等)。
用于例如MySQL的结构化数据库的存储引擎
用于例如图形数据库的非结构化数据的存储引擎
用于NoSQL键值存储的存储引擎
-完整应用:文件系统、例如MySQL的结构化数据库、例如图形数据库的非结构化数据、或NoSQL键值存储
-用户可编程。
根据一个实施例,基准触发器可以基于对特定OA的引用来调用单个触发器动作。每个OA可以有一个基准触发器。当需要大于一个动作时,可以使用TrigFunction基准触发器调用触发器程序。基准触发器可以由以下表7所包含的指令组成。
Figure BDA0001410705450000441
如上所述,触发器指令集可以包括基于指定的触发器条件和动作在指定的对象偏移处获取在指针中指定的块。触发器指令二级制格式可以表示为:
Trigger PtrType TrigType TrigAction RefPolicy ObjOffset
触发器指令集的操作数的示例集合包含在下面的表8-12中。
Figure BDA0001410705450000442
Figure BDA0001410705450000451
Figure BDA0001410705450000452
Figure BDA0001410705450000453
Figure BDA0001410705450000454
Figure BDA0001410705450000461
Figure BDA0001410705450000462
如上所述,TrigFunction(或TriggerFunct)指令集可以包括在指定的数据对象偏移和指定的触发器条件时,从指定的元数据偏移开始执行触发器程序。TriggerFunct可以实现比待执行的单个触发器指令更复杂的序列。TrigFunct指令二进制格式可以表示为:
TrigFunct PtrType TrigType MetaDataOffset ObjOffset
触发器指令集的操作数的示例集合包含在下面的表13-16中。
Figure BDA0001410705450000463
Figure BDA0001410705450000471
Figure BDA0001410705450000472
Figure BDA0001410705450000473
Figure BDA0001410705450000474
根据一个实施例,扩展指令可以以3种格式的64位字块解释,包括短(每个字2个指令)、长(每个字单个指令)和保留。
Figure BDA0001410705450000475
Figure BDA0001410705450000481
一般来说,触发器与扩展指令集的组合可用于定义任意并行的功能,例如:直接对象地址处理和生成,而不需要复杂地址转换的开销和软件层来管理不同的地址空间;直接对象认证,没有可以基于安全第三方认证软件设置的运行时开销;对象相关的存储器计算,其中当对象在节点之间移动时,计算可以与它们一起移动;以及基于规模和活动的动态且透明的并行性。这些指令分为三个概念类:存储器引用,包括负载、存储和特殊存储器结构指令;控制流,包括叉(fork)、加入(join)和分支(branch);以及运行,包括算术和比较指令。
存储器引用指令的不同类型的列表如下表18所示。
Figure BDA0001410705450000482
Figure BDA0001410705450000491
可以在对象存储器结构内使用pull指令,作为将指定的块复制或移动到(例如本地)存储体的请求。在由src_offset指定的对象偏移处由src_oid指定的对象中的4k字节块操作数可以按照由priority指定的优先级以pull_state指定的状态来请求。数据可以随后通过push指令移动。Pull指令二进制格式可以表示为:
Figure BDA0001410705450000492
Figure BDA0001410705450000501
Pull指令集的示例操作数集合包含在下表19-23中。
Figure BDA0001410705450000502
Figure BDA0001410705450000503
表21.src_off-源对象偏移
描述
指定自线程帧指针的无符号偏移,以读取对应于对象偏移的源操作数
Figure BDA0001410705450000504
Figure BDA0001410705450000511
Figure BDA0001410705450000512
Figure BDA0001410705450000521
可以使用Push指令,以将指定的块从本体存储体复制或移动到远程位置。在由src_offset指定的对象偏移处由src_oid指定的对象中的4k字节块操作数可以按照由priority指定的优先级以pull_state指定的状态来请求。数据可以在前由pull指令请求。Push指令二进制格式可以表示为:
Figure BDA0001410705450000522
Push指令集的示例操作数集合包含在下表24-28中。
Figure BDA0001410705450000523
Figure BDA0001410705450000524
表26.src_off-源对象偏移
描述
指定自线程帧指针的无符号偏移,以读取对应于对象偏移的源操作数
Figure BDA0001410705450000525
Figure BDA0001410705450000531
Figure BDA0001410705450000532
Figure BDA0001410705450000541
PushAck或Ack指令可用于确认与Push相关联的块已经在一个或多个位置被接受。在由src_offset指定的对象偏移处由src_oid指定的对象中的4k字节块操作数可以被确认。Ack指令二进制格式可以表示如下:
Figure BDA0001410705450000542
Push指令集的示例操作数集合包含在下表29-31中。
Figure BDA0001410705450000543
Figure BDA0001410705450000551
表31.src_off-源对象偏移
描述
指定自线程帧指针的无符号偏移,以读取对应于对象偏移的源操作数
Load指令集包括在由src_offset指定的对象偏移处由src_oid指定的对象中的osize操作数。src_offset可以从由dst_fp指定的帧指针写入到字偏移。Load指令忽略空状态。
Figure BDA0001410705450000552
Load指令集的示例操作数集合包含在下表32-36中。
Figure BDA0001410705450000553
Figure BDA0001410705450000561
Figure BDA0001410705450000562
Figure BDA0001410705450000563
表35.Src_off-源对象偏移
描述
指定自线程帧指针的无符号偏移,以读取对应于对象偏移的源操作数
表36.dst_fp-自帧指针的目标偏移
描述
指定自线程帧指针的无符号偏移,以写入源操作数
Store指令集包括由src_fp指定的字,可以截断为由osize指定的大小,且可以存储在dst_offst的位移处由dst_oid指定的对象中。例如,仅存储ssize字节。Store指令忽略空状态。Store指令二进制格式可以表示为:
Figure BDA0001410705450000564
Figure BDA0001410705450000571
Store指令集的示例操作数集合包含在下表37-41中。
Figure BDA0001410705450000572
Figure BDA0001410705450000573
Figure BDA0001410705450000574
表40.dst_off-源对象偏移
描述
指定自线程帧指针的无符号偏移,以读取对应于对象偏移的源操作数
表41.src_fp-自帧指针的目标偏移
描述
指定自线程帧指针的无符号偏移,以读取源操作数
ReadPA指令通过本地存储器模块的物理地址读取64字节。由src_pa指定的对象中的操作数可以从由dst_fp指定的帧指针写入到字偏移。ReadPA指令二进制格式可以表示为:
Figure BDA0001410705450000581
ReadPA指令集的示例操作数集合包含在下表42-44中。
Figure BDA0001410705450000582
表43.src_pa-源物理地址
描述
指定对于当前节点/服务器来说是本地的物理地址
表44.dst_fp-自帧指针的目标偏移
描述
指定自线程帧指针的无符号偏移,以写入源操作数
WritePA指令通过本地存储器模块的物理地址写入64字节。由src_fp指定的64字节存储在由dst_pa指定的物理地址中。ReadPA指令二进制格式可以表示为:
Figure BDA0001410705450000583
WritePA指令集的示例操作数集合包含在下表45-47中。
Figure BDA0001410705450000591
表46.dst_pa-目的物理地址
描述
指定对于当前节点/服务器来说是本地的物理地址
表47.src_fp–源帧指针
描述
指定自线程帧指针的无符号偏移,以读取源操作数
对象存储器结构对象内的每个字都可以包括表示空(empty)或全(full)状态的状态。空状态在概念上意味着对应的字的值已被清空。全状态在概念上意味着对应的字的值已被填充。某些指令可以使用这种状态,以不可分割地确保只有一个线程可以读取或写入该字。空指令可以类似于负载来操作,如下表48所示。
Figure BDA0001410705450000592
在由src_offset指定的对象偏移处由src_oid指定的对象中的osize操作数可以写入从由dst_fp指定的帧指针写入到字偏移。空指令二进制格式可以表示为:
Figure BDA0001410705450000601
Empty指令集示例操作数集合包含在下表49-52中。
Figure BDA0001410705450000602
Figure BDA0001410705450000603
表51.src_off-源对象偏移
描述
指定自线程帧指针的无符号偏移,以读取对应于对象偏移的源操作数
表52.dst_fp-自帧指针的目标偏移
描述
指定自线程帧指针的无符号偏移,以写入源操作数
对象存储器结构对象内的每个字都可以包括表示空或全状态的状态。空状态在概念上意味着对应的字的值已被清空。全状态在概念上意味着对应的字的值已被填充。某些指令可以使用这种状态,以不可分割地确保只有一个线程可以读取或写入该字。Fill指令二进制格式可以表示为:
Figure BDA0001410705450000604
Figure BDA0001410705450000611
Fill指令的操作类似于store,如下表53所示。
Figure BDA0001410705450000612
由src_fp指定的字可以存储在dst_offst的位移处由dst_oid指定的对象中。仅储存ssize字节。Store忽略空状态。Fill指令集的示例操作数集合包含在下表54-57中。
Figure BDA0001410705450000613
Figure BDA0001410705450000614
表56.dst_off-源对象偏移
描述
指定自线程帧指针的无符号偏移,以读取对应于对象偏移的源操作数
表57.src_fp-自帧指针的目标偏移
描述
指定自线程帧指针的无符号偏移,以读取源操作数
Pointer指令集可以向对象存储器结构指定ptr_type的指针可以位于由src_offset指定的对象偏移处的由scrod指定的对象中。该信息可以由对象存储器结构利用,用于预阶段的数据移动。Pointer指令二进制格式可以表示为:
Figure BDA0001410705450000621
Pointer指令集示例操作数集合包含在下表58-61中。
Figure BDA0001410705450000622
Figure BDA0001410705450000623
Figure BDA0001410705450000624
Figure BDA0001410705450000631
表61.src_off-源对象偏移
描述
指定自线程帧指针的无符号偏移,以读取对应于对象偏移的源操作数
Prefetch Pointer Chain指令集可以基于由src_oid指定的对象中的策略指定的策略,在由src_offset_st到src_offset_end指定的范围中。在由src_offset指定的对象偏移处由src_oid指定的对象中的osize操作数可以从由dst_fp指定的帧指针写入到字偏移。Load忽略空状态。PrePtrChn指令二进制格式可以表示为:
Figure BDA0001410705450000632
Prefetch Pointer Chain指令集示例操作数集合包含在下表62-66中。
Figure BDA0001410705450000633
Figure BDA0001410705450000641
Figure BDA0001410705450000642
Figure BDA0001410705450000643
表65.src_off_st源对象偏移
描述
指定自线程帧指针的无符号偏移,以读取对应于对象偏移的源操作数
表66.src_off_end自帧指针的目标偏移
描述
指定自线程帧指针的无符号偏移,以读取对应于结束对象偏移的源操作数
Scan and Set Empty or Full指令集可以通过指定的策略在由src_offset指定的偏移处的由src_oid指定的对象中初始化。Scan可用于进行广度优先或深度优先搜索,并且清空或填充下一个可用位置。ScanEF指令二进制格式可以表示为:
Figure BDA0001410705450000644
Scan and Set Empty or Full指令集的示例操作数集合包含在下表67-71中。
Figure BDA0001410705450000651
Figure BDA0001410705450000652
Figure BDA0001410705450000653
Figure BDA0001410705450000661
表70.src_off-源对象偏移
描述
指定自线程帧指针的无符号偏移,以读取对应于对象偏移的源操作数
Figure BDA0001410705450000662
Create指令集包括指定的ObjSize的对象存储器结构对象,其具有OA的对象ID以及DataInit和Type的初始化参数。没有数据块存储体可以分配,并且可以分配用于第一元数据块的存储体。Create指令的二进制格式可以表示为:
Create Type Redundancy ObjSize OID
Create指令集的示例操作数集合包含在下表72-75中。
Figure BDA0001410705450000663
Figure BDA0001410705450000664
Figure BDA0001410705450000671
表74.Objsize-对象大小
描述
指定对象大小
表75.Oid-对象ID
描述
对象存储器结构对象ID,其也是对象的起始地址
CopyObj指令集包括将由SOID指定的源对象复制到由DOID指定的目标对象。如果DOID是大于SOID的对象,则超出SOID大小的所有DOID块被复制为未分配。如果SOID是大于DOID的对象,则复制结束于DOID大小。CopyObj指令二进制格式可以表示为:
CopyObj Ctype SOID DOID
CopyObj指令集的示例操作数集合包含在表76-78中。
Figure BDA0001410705450000672
表77.SOID-源对象ID
描述
对象存储器结构对象ID,其为复制的源。
表78.DOID-目标对象ID
描述
对象存储器结构目标ID,其为复制的目标
CopyBlk指令集包括将从SourceObjectAddress(SOA)开始的cnum个源块复制到从DestinationObjectAddress(DOA)开始的目标。如果cnum块延伸超出与SOA相关联的对象大小,则未定义的块被复制为未分配的。CopyBlk指令二进制格式可以表示为:
CopyBlk ctype cnum SOA DOA
CopBlk指令集的示例操作数集合包含在下表79-82中。
Figure BDA0001410705450000681
Figure BDA0001410705450000682
Figure BDA0001410705450000691
表81.SOA-源对象存储器结构块对象地址
描述
对象存储器结构块对象地址,其为复制的源
表82.DOA-目标对象存储器结构块对象地址
描述
对象存储器结构块对象地址,其为复制的目标
Allocate指令集包括存储到由OID指定的对象。Allocate指令二进制格式可以表示为:
Allocate init ASize OID
Allocate指令集的示例操作数集合包含在下表83-85中。
Figure BDA0001410705450000692
Figure BDA0001410705450000693
Figure BDA0001410705450000701
表85.OID-对象ID
描述
对象存储器结构对象ID,为其分配存储体
Deallocate指令集包括存储从OA开始的cnum个块。如果deallocation到达对象的末尾,则操作终止。Deallocate指令二进制格式可以表示为:
Deallocate cnum OA
Deallocate指令集的示例操作数集合包含在下表86和87中。
表86.Cnum-复制的块的数量
描述
指定解除分配的块的数量
表87.OA-对象地址
描述
对象存储器结构块对象地址,其为解除分配的起始块编号
Destroy指令集包括完全删除对应于由OID指定的对象的所有数据和元数据。Destroy指令二进制格式可以表示为:
Destroy OID
Destroy指令集的示例操作数集合包含在下表88中。
表88.OID-对象ID
描述
待删除的对象的对象ID
Persist指令集包括存留指定的OID的任何修改的块。Persist指令二进制格式可以表示为:
Persist OID
Persist指令集的示例操作数集合包含在下表89中。
表89.OID-对象ID
描述
待存留的对象的对象ID
AssocObj指令集包括与将对象OID与VaSegment和ProcessID相关联,将OID与VaSegment相关联使得ObjectRelative和ObjectVA地址能够被对象存储器结构正确地访问。AssocObj指令二进制格式可以表示为:
AssocObj OID ProcessID VaSegment
AssocObj指令集的示例操作数集合包含在下表90-92中。
表90.OID-对象ID
描述
待关联的对象的对象ID
表91.ProcessID-进程ID
描述
与VaSegment相关联的进程ID
表92.OID-对象ID
描述
待关联的对象的对象ID
DeAssocObj指令集包括将对象OID与VaSegment和ProcessID解关联。如果ProcessID和VaSegment与以前和OID相关联的ProcessID和VaSegment不匹配,则可以返回错误。DeAssocObj指令二进制格式可以表示为:
DeAssocObj OID ProcessID VaSegment
DeAssocObj指令集的示例操作数集合包含在下表93-95中。
表93.OID-对象ID
描述
待解关联的对象的对象ID
表94.ProcessID-进程ID
描述
与VaSegment相关联的进程ID
表95.OID-对象ID
描述
待解关联的对象的对象ID
AssocBlk指令集包括将块OA与本地物理地址PA相关联。这允许对象存储器将对象存储器结构块与PA块相关联,以用于本地处理器访问。AssocBlk指令二进制格式可以表示为:
AssocBlk place OA PA LS[15:00]
AssocBlk指令集的示例操作数集合包含在下表96-99中。
Figure BDA0001410705450000721
Figure BDA0001410705450000731
表97.OA-对象存储器结构块对象地址
描述
待关联的对象的对象ID
表98.PA-物理块地址
描述
待关联的块的本地物理块地址
Figure BDA0001410705450000732
DeAssocBlk指令集包括将块OA与本地物理地址PA解关联。然后该OA将不再可以从本地PA访问。DeAssocBlk指令二进制格式可以表示为:
DeAssocBlk OA PA
DeAssocBlk指令集的示例操作数集合包含在下表100和101中。
表100.OA-对象存储器结构块对象地址
描述
待解关联的对象的对象ID
表101.PA-物理块地址
描述
待解关联的块的本地物理块地址。对应于封装报头内的操作数2
OpenObj指令集包括在咨询的基础上以由TypeFetch和CacheMode指定的方式高速缓存由OID指定的对象。OpenObj指令二进制格式可以表示为:
OpenObj TypeFetch CacheMode OID
OpenObj指令集的示例操作数集合包含在下表102-104中。
表102.OID-对象ID
描述
待关联的对象的对象ID
Figure BDA0001410705450000741
Figure BDA0001410705450000751
Figure BDA0001410705450000752
OpenBlk指令集包括以由TypeFetch和CacheMode指定的方式高速缓存由OID指定的(多个)块。当其超出对象的末端时,预取终止。OpenBlk指令二进制格式可以表示为:
OpenBlk TypeFetch CacheMode OID
OpenBlk指令集的示例操作数集合包含在下表105-107中。
表105.OID-对象ID
描述
待关联的对象的对象ID
Figure BDA0001410705450000761
Figure BDA0001410705450000762
Control Flow(短指令格式)指令集的示例操作数集合包含在下表108中。
Figure BDA0001410705450000763
Figure BDA0001410705450000771
fork指令集提供了创建新的线程或微线程的指令机制。fork指定用于新创建的线程的新指令指针(NIP)和新帧指针。在fork指令结束时,执行指令的线程(或微线程)以及新线程(例如微线程)以fork_count(计数)递增1来运行。如果新的FP与老FP没有关系,其可以被视为新线程,或以其他方式被视为新微线程。fork指令二进制格式可以表示为:
Figure BDA0001410705450000772
Fork指令集的示例操作数集合包含在下表109-113中。
Figure BDA0001410705450000773
Figure BDA0001410705450000781
Figure BDA0001410705450000782
Figure BDA0001410705450000783
Figure BDA0001410705450000784
Join是创建新线程或微线程的指令机制。join指令集使得微线程能够退出。Join指令递减fork_count(计数),且fork_count大于零,则没有进一步的动作。如果fork_count为零,则表示执行join的微线程是该fork_count的最后一个生成的微线程,并且以由FP指定的FP在下一个顺序指令中继续执行。Join指令二进制格式可以表示为:
Figure BDA0001410705450000785
Join指令集的示例操作数集合包含在下表114-117中。
Figure BDA0001410705450000791
Figure BDA0001410705450000792
Figure BDA0001410705450000793
Figure BDA0001410705450000794
branch指令集允许添加分支或其他常规指令。Branch指令二进制格式可以表示为:
Figure BDA0001410705450000801
Execute(短指令格式)指令集的示例操作数集合包含在下表118中。
Figure BDA0001410705450000802
在前面的描述中,为了说明的目的,以特定顺序描述了方法。应当理解,在替代实施例中,可以以与所描述的顺序不同的顺序执行方法。还应当理解,上述方法可以由硬件部件执行,或者可以体现在机器可执行指令的序列中,其可以用于引起机器(例如用指令编程的逻辑电路或通用或专用处理器)来执行方法。这些机器可执行指令可以存储在一个或多个机器可读介质上,例如CD-ROM或其他类型的光盘、软盘、ROM、RAM、EPROM、EEPROM、磁盘或光卡,闪存存储器、或其他适用于存储电子指令的机器可读介质的类型。替代地,方法可以由硬件或软件的组合来执行。
虽然本文已经详细描述了本发明的说明性和目前优选的实施例,但是应当理解,本发明的构思可以以各种其他方式实施和使用,并且所附权利要求旨在被解释为包括这样的变型,除了受现有技术的限制以外。

Claims (30)

1.一种存储器结构的基于硬件的处理节点,所述基于硬件的处理节点包括:
存储器模块,包括在所述基于硬件的处理节点中安装的硬件组件,所述存储器模块存储并管理所述存储器模块的硬件层处的一个或多个存储器对象,其中:
基于对于每一个存储器对象定义的元数据,使用提供对象存储器结构指令模型的指令集的指令,经由所述存储器结构的对象名称空间,在所述存储器模块的硬件层本地创建每个存储器对象,
在没有通过应用的额外的、明确的输入/输出(I/O)指令的情况下,使用所述指令集的存储器引用指令,经由所述存储器结构的所述对象名称空间,通过在所述基于硬件的处理节点上在软件层执行的所述应用来存取每个存储器对象,并且
使用对于每一个存储器对象定义的元数据,根据对象存储器结构指令模型并基于在所述元数据中定义的对于每一个存储器对象的一个或多个可执行触发指令,在持久存储和临时存储之间没有区别的情况下,且在存储器结构上存储器对象的本地和远程位置之间没有区别的情况下,每个存储器对象由所述存储器模块在所述存储器模块的硬件层经由所述存储器结构的对象名称空间和指令集来管理,其中定义每一个可执行触发指令的元数据关于定义了可执行触发指令的所述存储器对象内的一个或多个数据块,定义要在每个块的基础上、在所述存储器模块的所述硬件层执行的一个或多个预定义的动作。
2.如权利要求1所述的基于硬件的处理节点,其中基于对所述存储器对象中的一个或多个存储器对象的数据存取来执行和管理指令序列。
3.如权利要求2所述的基于硬件的处理节点,其中所述指令序列在所述对象元数据中定义,且其中所述对象元数据对每个存储器对象是本地的。
4.如权利要求3所述的基于硬件的处理节点,其中所述对象存储器结构包括多个基于硬件的处理节点,其中每个存储器对象和每个存储器对象的元数据被保持在所述对象存储器结构中的多个节点的任何一个或多个上,且其中根据所述存储器数据流模型管理所述存储器对象包括,当所述存储器对象在节点之间移动、拆分或复制时,执行对于每个存储器对象是本地的所述指令序列。
5.如权利要求3所述的基于硬件的处理节点,其中每个指令序列具有对应的线程状态,且其中每个指令序列的线程状态存储在所述存储器对象的元数据中。
6.如权利要求2所述的基于硬件的处理节点,其中基于所述存储器对象的实际相关性进一步执行并管理指令序列。
7.如权利要求1所述的基于硬件的处理节点,其中所述基于硬件的处理节点包括双列直插存储器模块(DIMM)卡。
8.如权利要求1所述的基于硬件的处理节点,其中所述基于硬件的处理节点包括商品服务器,且其中所述存储器模块包括安装在所述商品服务器内的双列直插存储器模块(DIMM)卡。
9.如权利要求8所述的基于硬件的处理节点,还包括与所述对象存储器结构耦合的通信接口。
10.如权利要求9所述的基于硬件的处理节点,其中所述通信接口包括外围部件互连高速(PCI-e)卡。
11.如权利要求1所述的基于硬件的处理节点,其中所述基于硬件的处理节点包括移动计算装置。
12.如权利要求1所述的基于硬件的处理节点,其中所述基于硬件的处理节点包括单个芯片。
13.一种对象存储器结构,包括:
多个基于硬件的处理节点,每个基于硬件的处理节点包括:
一个或多个存储器模块,包括在所述基于硬件的处理节点中安装的硬件组件,所述存储器模块存储并管理所述存储器模块的硬件层处的一个或多个存储器对象,其中基于对于每一个存储器对象定义的元数据,使用提供对象存储器结构指令模型的指令集的指令,经由所述存储器结构的对象名称空间,在所述存储器模块的硬件层本地创建每个存储器对象,在没有通过应用的额外的、明确的输入/输出(I/O)指令的情况下,使用所述指令集的存储器引用指令,经由所述存储器结构的所述对象名称空间,通过在所述基于硬件的处理节点上在软件层执行的所述应用来存取每个存储器对象,并且使用对于每一个存储器对象定义的元数据,根据对象存储器结构指令模型并基于在所述元数据中定义的对于每一个存储器对象的一个或多个可执行触发指令,在持久存储和临时存储之间没有区别的情况下,且在存储器结构上存储器对象的本地和远程位置之间没有区别的情况下,每个存储器对象由所述存储器模块在所述存储器模块的硬件层经由所述存储器结构的对象名称空间和指令集来管理,其中定义每一个可执行触发指令的元数据关于定义了可执行触发指令的所述存储器对象内的一个或多个数据块,定义要在每个块的基础上、在所述存储器模块的所述硬件层执行的一个或多个预定义的动作以及
节点路由器,其与所述节点的一个或多个存储器模块中的每一个通信地耦合,且适于在所述节点的一个或多个存储器模块之间路由存储器对象或存储器对象的部分;以及一个或多个节点间路由器,其与每个节点路由器通信地耦合,
其中所述对象存储器结构的多个节点中的每一个与所述节点间路由器中的至少一个通信地耦合,且适于在所述多个节点之间路由存储器对象或存储器对象的部分。
14.如权利要求13所述的对象存储器结构,其中基于对所述存储器对象中的一个或多个存储器对象的数据存取来执行和管理指令序列。
15.如权利要求14所述的对象存储器结构,其中所述指令序列在所述对象元数据中定义,且其中所述对象元数据对于每个存储器对象是本地的。
16.如权利要求15所述的对象存储器结构,其中每个存储器对象和每个存储器对象的元数据被保持在所述对象存储器结构中的多个节点的任何一个或多个上,且其中根据所述存储器数据流模型管理所述存储器对象包括,当所述存储器对象在节点之间移动、拆分或复制时,执行对于每个存储器对象是本地的所述指令序列。
17.如权利要求15所述的对象存储器结构,其中每个指令序列具有对应的线程状态,且其中每个指令序列的线程状态存储在所述存储器对象的元数据中。
18.如权利要求14所述的对象存储器结构,其中基于所述存储器对象的实际相关性进一步执行并管理指令序列。
19.如权利要求13所述的对象存储器结构,其中所述基于硬件的处理节点包括双列直插存储器模块(DIMM)卡。
20.如权利要求13所述的对象存储器结构,其中所述基于硬件的处理节点包括商品服务器,且其中所述存储器模块包括安装在所述商品服务器内的双列直插存储器模块(DIMM)卡。
21.如权利要求20所述的对象存储器结构,还包括与所述对象存储器结构耦合的通信接口。
22.如权利要求21所述的对象存储器结构,其中所述通信接口包括外围部件互连高速(PCI-e)卡。
23.如权利要求13所述的对象存储器结构,其中所述基于硬件的处理节点包括移动计算装置。
24.如权利要求13所述的对象存储器结构,其中所述基于硬件的处理节点包括单个芯片。
25.一种用于存储并管理对象存储器结构中的一个或多个存储器对象的方法,所述方法包括:
基于对于每一个存储器对象定义的元数据,使用提供对象存储器结构指令模型的指令集的指令,经由所述存储器结构的对象名称空间,在所述对象存储器结构的基于硬件的处理节点的存储器模块的硬件层本地创建每个存储器对象;
在没有通过应用的额外的、明确的输入/输出(I/O)指令的情况下,使用所述指令集的存储器引用指令,经由所述存储器结构的所述对象名称空间,通过在所述基于硬件的处理节点上在软件层执行的所述应用来存取每个存储器对象;以及
使用对于每一个存储器对象定义的元数据,根据对象存储器结构指令模型并基于在所述元数据中定义的对于每一个存储器对象的一个或多个可执行触发指令,在持久存储和临时存储之间没有区别的情况下,且在存储器结构上存储器对象的本地和远程位置之间没有区别的情况下,每个存储器对象由所述存储器模块在所述存储器模块的硬件层经由所述存储器结构的对象名称空间和指令集来管理,其中定义每一个可执行触发指令的元数据关于定义了可执行触发指令的所述存储器对象内的一个或多个数据块,定义要在每个块的基础上、在所述存储器模块的硬件层执行的一个或多个预定义的动作。
26.如权利要求25所述的方法,其中基于对所述存储器对象中的一个或多个存储器对象的数据的存取来执行和管理指令序列。
27.如权利要求26所述的方法,其中所述指令序列在所述对象元数据中定义,且其中所述对象元数据对于每个存储器对象是本地的。
28.如权利要求27所述的方法,其中所述对象存储器结构包括多个基于硬件的处理节点,其中每个存储器对象和每个存储器对象的元数据被保持在所述对象存储器结构中的多个节点的任何一个或多个上,且其中根据所述存储器数据流模型管理所述存储器对象包括,当所述存储器对象在节点之间移动、拆分或复制时,执行对于每个存储器对象是本地的所述指令序列。
29.如权利要求27所述的方法,其中每个指令序列具有对应的线程状态,且其中每个指令序列的线程状态存储在所述存储器对象的元数据中。
30.如权利要求26所述的方法,其中基于所述存储器对象的实际相关性进一步执行并管理指令序列。
CN201680016481.2A 2015-01-20 2016-01-20 对象存储器数据流指令执行 Active CN107533457B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110697593.1A CN113704141A (zh) 2015-01-20 2016-01-20 对象存储器数据流指令执行

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201562105549P 2015-01-20 2015-01-20
US62/105,549 2015-01-20
PCT/US2016/014113 WO2016118615A1 (en) 2015-01-20 2016-01-20 Object memory data flow instruction execution

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202110697593.1A Division CN113704141A (zh) 2015-01-20 2016-01-20 对象存储器数据流指令执行

Publications (2)

Publication Number Publication Date
CN107533457A CN107533457A (zh) 2018-01-02
CN107533457B true CN107533457B (zh) 2021-07-06

Family

ID=56407923

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201680016481.2A Active CN107533457B (zh) 2015-01-20 2016-01-20 对象存储器数据流指令执行
CN202110697593.1A Pending CN113704141A (zh) 2015-01-20 2016-01-20 对象存储器数据流指令执行

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202110697593.1A Pending CN113704141A (zh) 2015-01-20 2016-01-20 对象存储器数据流指令执行

Country Status (5)

Country Link
US (4) US11579774B2 (zh)
EP (2) EP3248097B1 (zh)
CN (2) CN107533457B (zh)
CA (1) CA2974360C (zh)
WO (3) WO2016118615A1 (zh)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016118615A1 (en) 2015-01-20 2016-07-28 Ultrata Llc Object memory data flow instruction execution
US11755202B2 (en) 2015-01-20 2023-09-12 Ultrata, Llc Managing meta-data in an object memory fabric
EP3451197B1 (en) * 2015-05-13 2021-08-25 Huawei Technologies Co., Ltd. System and method for creating selective snapshots of a database
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
US20170060924A1 (en) * 2015-08-26 2017-03-02 Exablox Corporation B-Tree Based Data Model for File Systems
US10241676B2 (en) 2015-12-08 2019-03-26 Ultrata, Llc Memory fabric software implementation
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
WO2017100281A1 (en) 2015-12-08 2017-06-15 Ultrata, Llc Memory fabric software implementation
US10324722B2 (en) 2016-06-24 2019-06-18 Hewlett Packard Enterprise Development Lp Global capabilities transferrable across node boundaries
US20180004393A1 (en) * 2016-07-01 2018-01-04 Autodesk, Inc. Three dimensional visual programming interface for a network of devices
CN107885671B (zh) * 2016-09-30 2021-09-14 华为技术有限公司 一种非易失性内存的持久化方法和计算设备
US10558440B2 (en) * 2017-02-02 2020-02-11 Cisco Technology, Inc. Tightly integrated accelerator functions
US11082523B2 (en) * 2017-02-09 2021-08-03 International Business Machines Corporation System, method and computer program product for a distributed virtual address space
US10402336B2 (en) * 2017-03-31 2019-09-03 Intel Corporation System, apparatus and method for overriding of non-locality-based instruction handling
US10303615B2 (en) 2017-06-16 2019-05-28 Hewlett Packard Enterprise Development Lp Matching pointers across levels of a memory hierarchy
US10908820B2 (en) 2017-09-14 2021-02-02 Samsung Electronics Co., Ltd. Host-based and client-based command scheduling in large bandwidth memory systems
CN110392084B (zh) * 2018-04-20 2022-02-15 伊姆西Ip控股有限责任公司 在分布式系统中管理地址的方法、设备和计算机程序产品
US11954220B2 (en) 2018-05-21 2024-04-09 Pure Storage, Inc. Data protection for container storage
GB2574231B (en) * 2018-05-31 2020-12-30 Advanced Risc Mach Ltd An apparatus and method for triggering action performance
CN113592166B (zh) * 2018-08-27 2023-12-19 北京百度网讯科技有限公司 用于图检索的方法、设备、存储介质和程序产品
US10831394B2 (en) * 2018-08-27 2020-11-10 International Business Machines Corporation Live upgrade of storage device driver using shim application
US10599598B1 (en) * 2018-09-18 2020-03-24 Hewlett Packard Enterprise Development Lp PCIe write request acknowledgment
WO2020165659A2 (en) 2019-02-12 2020-08-20 Samsung Electronics Co., Ltd. Systems and methods for streaming storage device content
US10789015B2 (en) * 2019-03-01 2020-09-29 Micron Technology, Inc. Background operations in memory
US10942665B2 (en) 2019-05-10 2021-03-09 International Business Machines Corporation Efficient move and copy
US11625269B1 (en) * 2021-03-31 2023-04-11 Amazon Technologies, Inc. Scheduling for locality of reference to memory
CN113641243B (zh) * 2021-08-18 2022-03-18 江西科技学院 可穿戴设备的交互式手势识别方法、系统及可穿戴设备
US11310342B1 (en) * 2021-10-22 2022-04-19 CTRL IQ, Inc. Systems and methods for optimizing a software allocation to shared resources based on a dynamic mapping of resource relationships

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102460376A (zh) * 2009-06-26 2012-05-16 英特尔公司 无约束事务存储器(utm)系统的优化

Family Cites Families (222)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US1059247A (en) 1912-05-15 1913-04-15 Ulysses G White Airship.
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
AU5550194A (en) * 1993-09-27 1995-04-18 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
JP3634379B2 (ja) * 1996-01-24 2005-03-30 サン・マイクロシステムズ・インコーポレイテッド スタックキャッシングのための方法及び装置
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
DE69819927D1 (de) 1997-09-05 2003-12-24 Sun Microsystems Inc Nachschlagtabelle und verfahren zur datenspeicherung darin
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
AU2344000A (en) 1998-11-06 2000-05-29 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
AU4851400A (en) 1999-05-14 2000-12-18 Dunti Corporation Relative hierarchical communication network having distributed routing across modular switches with packetized security codes, parity switching, and priority transmission schemes
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
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
EP1364308A2 (en) 2000-02-24 2003-11-26 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
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
AU2002242026A1 (en) 2001-01-29 2002-08-12 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
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
JP2006518492A (ja) * 2002-11-07 2006-08-10 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 永久メモリ管理方法及び永久メモリ管理装置
KR100918733B1 (ko) * 2003-01-30 2009-09-24 삼성전자주식회사 포워딩정보를 동적으로 관리하는 분산구조라우터 및 그방법
JP2004280752A (ja) 2003-03-19 2004-10-07 Sony Corp データ記憶装置、およびデータ記憶装置における管理情報更新方法、並びにコンピュータ・プログラム
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
US9171585B2 (en) 2005-06-24 2015-10-27 Google Inc. Configurable memory circuit system and method
US8089795B2 (en) 2006-02-09 2012-01-03 Google Inc. Memory module with memory stack and interface with enhanced capabilities
EP1904929B1 (en) 2005-06-24 2014-11-26 BlackBerry Limited System and method for managing memory in a mobile device
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
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
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
US7805575B1 (en) * 2006-09-29 2010-09-28 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)
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
US8019940B2 (en) 2006-12-06 2011-09-13 Fusion-Io, Inc. Apparatus, system, and method for a front-end, distributed raid
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
US7716449B2 (en) * 2007-07-12 2010-05-11 Oracle America, Inc. Efficient chunked java object heaps
US7730278B2 (en) 2007-07-12 2010-06-01 Oracle America, Inc. Chunk-specific executable code for 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
US8775373B1 (en) 2008-05-21 2014-07-08 Translattice, Inc. Deleting content in a distributed computing environment
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
US9575889B2 (en) * 2008-07-03 2017-02-21 Hewlett Packard Enterprise Development Lp Memory server
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
US20100333116A1 (en) * 2009-06-30 2010-12-30 Anand Prahlad Cloud gateway system for managing data storage to cloud storage sites
CN101620526B (zh) * 2009-07-03 2011-06-15 中国人民解放军国防科学技术大学 一种减少流处理器片上指令存储器资源消耗的方法
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
US8799624B1 (en) * 2009-09-21 2014-08-05 Tilera Corporation Configurable device interfaces
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
US8484259B1 (en) * 2009-12-08 2013-07-09 Netapp, Inc. Metadata subsystem for a distributed object store in a network storage system
US8832154B1 (en) 2009-12-08 2014-09-09 Netapp, Inc. Object location service for network-based content repository
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
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
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
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
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
US10078593B2 (en) 2011-10-28 2018-09-18 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
CN103959253B (zh) 2011-12-01 2018-07-17 英特尔公司 基于硬件的存储器迁移和重新同步方法及系统
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
US9069710B1 (en) 2012-03-28 2015-06-30 Netapp, Inc. Methods and systems for replicating an expandable storage volume
US9043567B1 (en) * 2012-03-28 2015-05-26 Netapp, Inc. Methods and systems for replicating an expandable storage volume
US20140165196A1 (en) * 2012-05-22 2014-06-12 Xockets IP, LLC 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
WO2013190416A2 (en) * 2012-06-23 2013-12-27 Pmda Services Pty Ltd A 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 모글루(주) 전자문서 제작 시스템과 그 제어 방법
KR101621788B1 (ko) * 2012-07-30 2016-05-17 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 Ssd에 데이터 기록
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
US9384037B2 (en) 2013-03-14 2016-07-05 Intel Corporation Memory object reference count management with improved scalability
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
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
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
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 주식회사 새온누리그린테크 오물 및 악취 차단 기능을 갖는 그레이팅
US9805079B2 (en) 2014-08-22 2017-10-31 Xcalar, Inc. Executing constant time relational queries against structured and semi-structured 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
WO2016118615A1 (en) 2015-01-20 2016-07-28 Ultrata Llc Object memory data flow instruction execution
US20160210077A1 (en) 2015-01-20 2016-07-21 Ultrata Llc Trans-cloud object based memory
US11755202B2 (en) 2015-01-20 2023-09-12 Ultrata, Llc Managing meta-data in an object memory fabric
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
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
WO2017100281A1 (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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102460376A (zh) * 2009-06-26 2012-05-16 英特尔公司 无约束事务存储器(utm)系统的优化

Also Published As

Publication number Publication date
US11768602B2 (en) 2023-09-26
EP3248097B1 (en) 2022-02-09
US11086521B2 (en) 2021-08-10
US20220100370A1 (en) 2022-03-31
CA2974360A1 (en) 2016-07-28
WO2016118620A1 (en) 2016-07-28
WO2016118615A1 (en) 2016-07-28
EP3248097A1 (en) 2017-11-29
CN107533457A (zh) 2018-01-02
EP3248097A4 (en) 2018-09-19
CN113704141A (zh) 2021-11-26
US20160210075A1 (en) 2016-07-21
US11782601B2 (en) 2023-10-10
CA2974360C (en) 2023-10-03
US20160210048A1 (en) 2016-07-21
US11579774B2 (en) 2023-02-14
WO2016118624A1 (en) 2016-07-28
EP4012548A1 (en) 2022-06-15
US20160210080A1 (en) 2016-07-21

Similar Documents

Publication Publication Date Title
CN107533457B (zh) 对象存储器数据流指令执行
US11775171B2 (en) Utilization of a distributed index to provide object memory fabric coherency
CN107924371B (zh) 带有路由器的无限存储器结构硬件实现方案
CN108431774B (zh) 无限存储器结构流和api
CN108885607B (zh) 使用容错对象的存储器结构操作和一致性
CN108885604B (zh) 存储器结构软件实现方案

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