CN104769591B - 分布式节点之间的存储器共享 - Google Patents

分布式节点之间的存储器共享 Download PDF

Info

Publication number
CN104769591B
CN104769591B CN201380057680.4A CN201380057680A CN104769591B CN 104769591 B CN104769591 B CN 104769591B CN 201380057680 A CN201380057680 A CN 201380057680A CN 104769591 B CN104769591 B CN 104769591B
Authority
CN
China
Prior art keywords
node
memory
processor
data
main memory
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
CN201380057680.4A
Other languages
English (en)
Other versions
CN104769591A (zh
Inventor
P·N·洛文斯坦因
J·G·约翰逊
A·凯瑟噶玛
Z·拉多维奇
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.)
Oracle International Corp
Original Assignee
Oracle International Corp
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 Oracle International Corp filed Critical Oracle International Corp
Publication of CN104769591A publication Critical patent/CN104769591A/zh
Application granted granted Critical
Publication of CN104769591B publication Critical patent/CN104769591B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/082Associative directories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7885Runtime interface, e.g. data exchange, runtime control
    • G06F15/7889Reconfigurable logic implemented as a co-processor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2237Vectors, bitmaps or matrices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • G06F16/2456Join operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24561Intermediate data storage techniques for performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/24569Query processing with adaptation to specific hardware, e.g. adapted for using GPUs or SSDs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/14Multichannel or multilink protocols
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

公开了一种用于使得分布式系统中的节点能够共享一个或多个存储器部分的方法和设备。主节点使其主存储器的一部分可用于共享,一个或多个共享者节点在其自己的主存储器中镜像主节点的主存储器的该共享部分。为了维护存储器一致性,实现存储器一致性协议。根据该协议,俘获以共享者节点的镜像存储器部分为目标的加载指令和存储指令,并且俘获以主节点的共享存储器部分为目标的存储指令。通过该协议,有效数据从主节点获得,并且更新传播到主节点。因此,没有“脏”数据在共享者节点之间传送。结果,一个节点的故障将不会使另一个节点发生故障或者整个系统发生故障。

Description

分布式节点之间的存储器共享
优先权声明
本申请要求2013年3月14日提交的、标题为“Memory Sharing AcrossDistributed Nodes”、序列号为13/828,555的美国申请的优先权,该申请要求2012年10月2日提交的、标题为“Techniques For Accelerating Database Operations”、序列号为61/709,142的美国临时申请的权益。这些申请的全部内容通过引用并入本文。
技术领域
本公开总地涉及计算系统,更具体地讲,涉及一种用于使得存储器能够在分布式节点之间共享的方法和设备。
背景技术
可通过互联网或者通过公司网络获得的许多功能和服务由一个或多个分布式计算节点集群提供。例如,用于运行大型业务的数据库可以由在形成集群的多个分布式计算节点上运行的多个数据库服务器维护,并且通过这些数据库服务器变得可用。使用计算节点集群提供功能或服务可以产生若干个优点。例如,就集群而言,添加另一个节点来提高系统的容量以满足增长的需求是相对容易的。集群还使得可以在各个节点之间均衡负荷,以使得如果一个节点变得负担过重,则工作可以分配给其他节点。另外,集群使得可以容忍故障,以使得如果一个或多个节点发生故障,功能或服务仍然可用。由于这些原因和其他原因,大型关键任务服务通常由一个或多个分布式节点集群提供。
集群中的节点通常需要彼此交换/共享信息。例如,为了使节点一起工作以进行一个或多个事务、均衡负荷、实现故障预防和恢复等,这个信息共享可能是必要的。通常,集群中的节点使用请求-响应消息传送模型来彼此共享信息。不幸的是,现有的消息传送模型中的许多模型需要大量开销,并且施加相当数量的延迟。具体地讲,一个节点上的客户端线程通常需要唤醒另一个节点上的线程,以便使请求得到服务。这个唤醒可能需要在队列中等待,并且与上下文切换有延迟。因此,现有的消息传送模型效率低下,并且缩放性不好。结果,对于大型、甚至较小型分布式节点系统,需要改进的信息共享机制,以便使得分布式节点能够彼此更高效率地、更有效地交换/共享信息。
附图说明
图1是在其中可以实现本发明的一个实施例的样例分布式节点系统的框图。
图2例示根据本发明的一个实施例的一些节点既充当主节点、又充当共享者节点的例子。
图3例示根据本发明的一个实施例的在初始化处理期间可以创建的存储器结构和索引结构的例子。
图4示出例示根据本发明的一个实施例的在从存储器位置加载数据时共享者节点执行的操作的操作流程图。
图5示出例示根据本发明的一个实施例的在将数据存储到存储器位置时共享者节点执行的操作的操作流程图。
图6示出例示根据本发明的一个实施例的在将更新数据传播到主节点时共享者节点执行的操作的操作流程图。
图7示出例示根据本发明的一个实施例的在将数据存储到存储器位置时主节点执行的操作的操作流程图。
具体实施方式
概述
根据本发明的一个实施例,提供了一种用于使得分布式节点系统中的节点能够与一个或多个其他的节点共享它们的主存储器的一个或多个部分的方法和设备。与另一个节点共享主存储器的一部分意指,节点(在本文中被称为“主”节点)使其主存储器的一部分可用于共享,另一个节点(在本文中被称为“共享者节点”)在其自己的主存储器中镜像主节点的主存储器的该部分。实际上,共享者节点在其自己的主存储器的一部分(共享者节点的主存储器的该部分在本文中将被称为共享者节点的主存储器的镜像部分)中维护主节点的共享存储器部分的内容的副本。多于一个的共享者节点可以镜像主节点的共享存储器部分。通过该共享布置,共享者节点可以通过简单地访问其自己的主存储器的镜像部分来访问主节点的共享存储器部分的内容(假定镜像存储器部分中的内容当前是有效的)。因此,该布置使得信息能够以较少的开销和较短的延迟在主节点与共享者节点(一个或多个)之间共享。因此,使得信息共享更有效率并且更加有效。
因为共享者节点在其镜像存储器部分中维护主节点的共享存储器部分的内容的副本,并且因为这些内容可以由主节点或共享者节点更新,所以存在各组内容不同步的可能性。为了确保在分布式节点系统上维持数据一致性,在节点之间实现存储器一致性协议。在一个实施例中,至少部分通过俘获以共享者节点之一的镜像存储器部分为目标的加载指令和存储指令并且俘获以主节点的共享存储器部分为目标的存储指令来实现存储器一致性协议。
共享者节点加载
在一个实施例中,共享者节点可以如下执行从在其主存储器的镜像部分内的存储器位置的加载。一开始,共享者节点中的处理器执行与特定执行线程有关的一组程序指令。该组程序指令可以包括从在共享者节点的主存储器的镜像部分内的特定存储器位置加载数据的加载指令。当处理器执行加载指令时,它检查与所述特定存储器位置相关联的有效性指示符以确定当前存储在所述特定存储器位置中的数据是否是有效的。如果有效性指示符指示有效,则处理器像平常那样从所述特定存储器位置加载数据。然而,如果有效性指示符指示无效,则处理器使加载指令俘获,这使处理器暂停执行与所述特定线程有关的所述一组指令,并且开始执行一组俘获处理指令。
在执行俘获(trap)处理指令时,处理器使用于所述特定存储器位置的有效数据从主节点的主存储器的共享存储器部分中的相应存储器位置获得。作为该处理的一部分,处理器可以使目录条目被访问和锁定,所述目录条目存储在主节点的主存储器中,并且与主节点的主存储器中的相应存储器位置相关联。在从主节点获得有效数据之后,将它存储到共享者节点的特定存储器位置中。
在一个实施例中,共享者节点可以维护存储缓冲器。该存储缓冲器(将在后面的章节中作详细说明)可以包含意图存储到主节点的主存储器中的相应存储器位置中的、但是尚未传播到主节点的更新数据。如果存储缓冲器包含用于相应存储器位置的这样的更新数据,则处理器将该更新数据存储到该特定存储器位置中(指出:该更新数据保留在存储缓冲器中,以使得它最后将传播到主节点)。结果,所述特定存储器位置中的数据将既反映从主节点获得的有效数据,又反映来自存储缓冲器的更新数据。
另外,处理器将与所述特定存储器位置相关联的有效性指示符设置为有效以指示所述特定存储器位置中的数据现在是有效的。此外,处理器可以使与主节点的主存储器中的相应存储器位置相关联的目录条目被更新以指示共享者节点现在是该相应存储器位置的有效的共享者。此外,处理器可以使目录条目解锁。
其后,处理器终止执行俘获处理指令,并且重新开始执行与所述特定执行线程有关的所述一组程序指令。在一个实施例中,处理器通过再次执行以所述特定存储器位置为目标的加载指令来重新开始执行。这次,因为与所述特定存储器位置相关联的有效性指示符被设置为有效,所以加载操作应导致数据从该特定存储器位置加载。
共享者节点存储
在一个实施例中,共享者节点可以如下执行到在其主存储器的镜像部分内的存储器位置的存储。一开始,共享者节点中的处理器执行与特定执行线程有关的一组程序指令。该组程序指令可以包括将更新数据存储到在共享者节点的主存储器的镜像部分内的特定存储器位置的存储指令。当处理器执行存储指令时,它确定所述特定存储器位置是可写位置。在一个实施例中,在初始化期间,共享者节点的主存储器的镜像部分内的所有存储器位置都被设置为只读。因此,该确定将导致否定,这将使存储指令俘获。这继而使处理器暂停执行与所述特定线程有关的所述一组指令,并且开始执行一组俘获处理指令。
在执行俘获处理指令时,处理器将更新数据存储到共享者的节点上的存储缓冲器。该更新数据在某一时刻(除共享者节点发生故障以外)将从存储缓冲器检索,并且传播到主节点以存储到主节点的主存储器的共享部分中的、与共享者节点的主存储器的镜像部分中的特定存储器位置相应的相应存储器位置中。实际上,将更新数据存储到存储缓冲器的操作使更新数据最后传播到主节点。在一个实施例中,如果存储缓冲器已经包含现有的送往主节点的主存储器的相应存储器位置的一组更新数据,则处理器将新的更新数据与现有的更新数据合并以产生一组合并的更新数据。
除了将更新数据存储到存储缓冲器中之外,处理器还可以使更新数据存储到共享者节点的主存储器的镜像部分中的特定存储器位置中。在一个实施例中,为了这样做,处理器确定与所述特定存储器位置相关联的有效性指示符是否指示当前存储在所述特定存储器位置中的数据是有效的。如果有效性指示符指示有效,则处理器将更新数据存储到所述特定存储器位置中。否则,更新数据不存储到所述特定存储器位置中。
其后,处理器终止执行俘获处理指令,并且重新开始执行与所述特定执行线程有关的所述一组程序指令。在一个实施例中,处理器在存储指令之后的指令处重新开始执行。因为更新数据已经被存储(如果它完全被存储)到所述特定存储器位置,则无需再次执行存储指令。事实上,再次执行存储指令可能不是可取的,因为它可能再次导致俘获。指出:如果处理器具有执行存储指令并且忽略只读属性的能力,则存储指令可以被再次执行。
在某一时刻,共享者节点上的、执行与执行线程有关的一组指令的处理器将从存储缓冲器检索更新数据,并且将它传播到主节点。该处理器可以是与将更新数据存储到存储缓冲器中的处理器相同或不同的处理器。该执行线程可以是与包含将更新数据存储到特定存储器位置中的存储指令的线程相同或不同的线程。
在执行该执行线程的指令时,处理器可能遇到一组更新传播指令。在执行该组更新传播指令时,处理器可以如下进行操作。一开始,处理器从存储缓冲器中的条目检索更新数据(或合并的更新数据)。在一个实施例中,在该条目中存储指示该更新数据被送往主节点的主存储器的共享存储器部分中的相应存储器位置的信息。为了将更新数据传播到主节点,处理器可以使存储在主节点的主存储器中的、与主节点的主存储器中的相应存储器位置相关联的目录条目被锁定。处理器还可以使目录条目的内容的副本从主节点获得。
在一个实施例中,目录条目包含指示共享者节点当前是否是相应存储器位置的有效共享者的信息。当前有效的共享者可以包括当前的共享者节点(即,试图将更新数据传播到主节点的共享者节点)以及一个或多个其他的共享者节点。所述其他的共享者节点中的每个均在其主存储器中具有与主节点的共享存储器部分中的相应存储器位置相应的镜像存储器位置。在一个实施例中,因为主节点的主存储器中的相应存储器位置中的数据即将被更新,所以处理器使其他共享者节点中的每个的镜像存储器位置中的数据失效(例如,通过使与每个镜像存储器位置相关联的有效性指示符被设置为无效)。这样做防止了其他共享者节点使用无效的数据。处理器还可以使目录条目的内容的副本被更新为不再指示其他共享者节点是主节点的主存储器中的相应存储器位置的有效共享者。
另外,处理器使更新数据传播到主节点并且存储到主节点的主存储器的共享存储器部分中的相应存储器位置中。此外,处理器可以使目录条目的更新内容存储到主节点上的目录条目中,并且使该目录条目被解锁。更进一步,处理器从存储缓冲器移除更新数据。更新数据到主节点的传播如此完成。
主节点加载和存储
在一个实施例中,主节点可以以与它从任何其他的存储器位置加载的方式相同的方式执行从在其主存储器的共享存储器部分内的存储器位置的加载。在一个实施例中,假定主节点的主存储器的共享存储器部分中的数据总是有效的;因此,无需俘获该加载指令或者提供任何特殊处理。
在一个实施例中,主节点可以如下执行到在其主存储器的共享存储器位置内的存储器位置的存储。一开始,主节点上的处理器执行与特定执行线程有关的一组程序指令。该组程序指令可以包括将更新数据存储到在主节点的主存储器的共享部分内的特定存储器位置的存储指令。当处理器执行存储指令时,它确定所述特定存储器位置是否是可写位置。在一个实施例中,在初始化期间,主节点的主存储器的共享部分内的所有存储器位置都被设置为只读。因此,该确定将导致否定,这将使存储指令俘获。这继而使处理器暂停执行与所述特定线程有关的所述一组指令,并且开始执行一组俘获处理指令。
在执行俘获处理指令时,处理器可以访问并且锁定存储在主节点的主存储器中的、与所述特定存储器位置相关联的目录条目。在一个实施例中,该目录条目包含指示共享者节点是否是所述特定存储器位置的当前有效共享者的信息。这些共享者节点中的每个均在其主存储器中具有与主节点的主存储器的共享部分中的所述特定存储器位置相应的镜像存储器位置。在一个实施例中,因为所述特定存储器位置中的数据即将被更新,所以处理器使这些共享者节点中的每个的镜像存储器位置中的数据失效(例如,通过使与每个镜像存储器位置相关联的有效性指示符被设置为无效)。这防止共享者节点使用无效的数据。处理器还可以更新目录条目,以使得目录条目不再指示共享者节点为所述特定存储器位置的有效共享者。
另外,处理器将更新数据存储到所述特定存储器位置中。此外,处理器可以解锁目录条目。其后,处理器终止执行俘获处理指令,并且在存储指令之后的指令处重新开始执行与所述特定执行线程有关的所述一组程序指令。因为更新数据已经被存储到所述特定存储器位置中,所以无需再次执行存储指令。
故障遏制
以上阐述的存储器一致性协议确保在分布式节点系统中的所有节点之间维持存储器一致性。该存储器一致性协议具有另外的可取性质,即,节点故障被遏制到节点。也就是说,一个节点的故障将不使另一个节点或整个系统发生故障。以上概述告知,有效数据从主节点获得,并且更新传播到主节点。没有“脏”数据(尚未传播到主节点的修改的数据)从共享者节点传送到共享者节点。因为如此,如果节点发生故障,所丢失的全部是:该节点对于其是主节点的数据;以及该节点做出的尚未传播到主节点的任何更新。其他节点做出的更新没有丢失。因此,一个节点的故障将不会使另一个节点发生故障或者整个系统发生故障。以上存储器一致性协议的这个故障遏制性质(以及其他性质)使它成为在分布式节点系统中实现提供关键任务或其他重要功能和服务的可取的协议。
样例系统
参照图1,示出了在其中可以实现本发明的一个实施例的样例分布式节点系统100的框图。如所示,系统100包括节点1 102(1)、节点2 102(2)和节点3 102(3)。应指出,仅仅为了例示说明的目的,示出了三个节点。为了本发明的目的,系统100可以具有任何期望数量的节点。为了参照的目的,类似的元件将使用相同的标号来引用。例如,标号102用于这些节点中的每个。当概括地提及节点时,将使用该标号。当期望提及特定节点时,将使用另外的索引。例如,当提及节点2时,将使用标号102(2)。该约定也将用于其他元件。
在一个实施例中,各种节点102可以是在地理上分布的。因此,为了使得节点102能够彼此进行通信,可以提供网络104。为了本发明的目的,网络104可以是使得能够在节点102之间进行通信的任何类型的机制,包括,但不限于,简单的有线互连、交换结构、包交换网络、以太网网络、IP网络、LAN、WAN、互联网、无线网络等。
每个节点102可以包括一个或多个处理器106、主存储器108和储存器112。可以例如是持久储存器(诸如硬盘驱动器、闪存等)的储存器112可以存储操作系统114和一个或多个应用程序118。操作系统114可以包括一组或多组俘获处理指令116。这些俘获处理指令116可以包括加载和存储俘获处理指令(将在后面的章节中作进一步的讨论),这些指令被执行来实现本文中所描述的存储器一致性协议的一部分。所述一个或多个应用程序118可以包括更新传播指令(也将在后面的章节中作进一步的讨论),这些指令被执行来使更新数据从共享者节点的存储缓冲器传播到主节点。在一个实施例中,更新传播指令帮助实现存储器一致性协议的其他部分。更新传播指令可以是被所述一个或多个应用程序118调用以将数据更新传播到主节点的应用程序编程接口(API)的一部分。如果期望如此,则更新传播指令除了在所述一个或多个应用程序118或API中之外,或者代替在所述一个或多个应用程序118或API中,可以合并到操作系统114中。在操作期间,操作系统114和应用程序118可以加载到主存储器108中。在主存储器108中时,操作系统114和应用程序118中的指令可以被所述一个或多个处理器106执行以实现本文中所描述的存储器一致性协议以及提供其他功能。在一个实施例中,每个节点102可以是能够支持多线程处理的对称多处理计算(SMP)节点。
在一个实施例中,每个处理器106包括用于确定加载或存储指令是否应俘获的电路系统。具体地讲,每个处理器106包括用于确定何时执行从主存储器108中的存储器位置的加载、与该存储器位置相关联的有效性指示符是指示有效、还是无效的电路系统。如果有效性指示符指示无效,则该电路系统使加载指令俘获。此外,每个处理器106包括用于确定何时执行到主存储器108中的存储器位置的存储、该存储器位置是否可写的电路系统。如果存储器位置不可写(即,只读),则该电路系统使存储指令俘获。如果加载或存储指令俘获,则执行加载或存储指令的处理器106暂停执行当前的(与特定执行线程有关的)一组指令,并且开始执行适当的一组俘获处理指令116。在俘获被处理之后,处理器106重新开始执行与所述特定执行线程有关的指令。在一个实施例中,处理器106的指令俘获功能用于促成节点102之间的存储器共享以及促成本文中所描述的数据一致性协议的实现。
节点102的主存储器108包括多个存储器位置。为了本发明的目的,存储器位置可以是任何的期望大小。例如,存储器位置可以如单个数据字那么小,或者如页面那么大,或者更大。存储器位置可以使用物理地址来访问。该物理地址可以通过地址转换表而映射到一个或多个虚拟地址。如果被设置地足够大,存储器位置可以包含足以跨越多个虚拟地址的数据。在这样的情况下,几个虚拟地址可以映射到同一物理地址(即,同一存储器位置),不同的虚拟地址映射到该存储器位置内的不同偏移。在一个实施例中,存储器位置的容量可以大于存储数据所需的容量。也就是说,存储器位置所具有的位可以多于存储数据所需的位。额外的一个位或多个位可以用于存储与存储器位置相关联的有效性指示符。因此,在一个实施例中,与存储器位置相关联的有效性指示符存储在该存储器位置本身内。然而,这不是必需的。如果期望如此,则与存储器位置相关联的有效性指示符可以存储在别处。如以上所指出的,在一个实施例中,该有效性指示符可以用于确定是否俘获加载指令、以及是否将一组更新数据存储到存储器位置中。
除了已经描述的元件之外,每个节点102还可以包括硬件协处理器110。在一个实施例中,各个节点102上的协处理器110彼此通过网络104进行交互以促成节点102之间的存储器共享以及促成本文中所描述的存储器一致性协议的实现。给定协处理器110,节点102上的处理器106没有必要执行专用于执行实现存储器共享所需的任务的线程。因此,协处理器110释放处理器资源。
为了本发明的目的,协处理器110可以采取任何的期望形式。例如,协处理器110可以是被硬连线来提供某一组功能的一组硬件元件,包括逻辑元件。可替代地,协处理器110可以是具有被配置为提供某一组功能的元件(包括逻辑元件)的驱动器(例如,ASIC、FPGA等)。作为进一步的替代方案,协处理器可以具有使得它能够执行产生一种或多种功能的指令的处理核心。这些形式和其他形式在本发明的范围内。在以上讨论中,协处理器110被描述为硬件组件。不过,应指出,这不是必需的。如果期望如此,则协处理器110的功能可以通过使处理器106中的一个或多个执行产生这些功能的指令来实现。虽然这不是如硬件实现那样高效率的实现,但是它是可能的一种实现。所有这样的实现都在本发明的范围内。在后面的章节中用作例子的特定实施例中,协处理器110采取对从处理器106接收的指令或命令做出响应的硬件协处理器的形式。在后面的章节中将描述根据本发明的一个实施例的协处理器110的操作,包括协处理器110与处理器106进行交互以及彼此进行交互的方式。
在系统100中,节点102可以使其主存储器108的一部分可用于与其他节点102共享。当节点102使其主存储器108的一部分可用于共享时,它充当该存储器部分的主节点。如果另一个节点102希望与主节点共享该存储器部分,则该另一个节点102在其自己的主存储器108中镜像该存储器部分。在这样的情况下,该另一个节点102充当该存储器部分的共享者节点。在一个实施例中,节点102可以使其主存储器108的一部分可用于共享,并且可以镜像主存储器108的可供另一个节点102用于共享的一部分。因此,节点102可以既充当主节点(对于它可用于共享的存储器部分而言),又可以充当共享者节点(对于它从另一个节点镜像的存储器部分而言)。图2中示出了这的例子。
在图2中,节点2 102(2)使其主存储器108(2)的部分202可用于与其他节点共享。该共享存储器部分202被节点1和3镜像;因此,节点1 102(1)在其主存储器108(1)中具有镜像共享存储器部分202的镜像存储器部分204(1),节点3 102(3)在其主存储器108(3)中具有镜像共享存储器部分202的镜像存储器部分204(3)。在该布置中,节点2 102(2)充当共享存储器部分202的主节点,节点1和3充当共享存储器部分202的共享者节点。
另外,节点1 102(1)使其主存储器108(1)的部分212可用于与其他节点共享。该共享存储器部分212被节点2和3镜像;因此,节点2 102(2)在其主存储器108(2)中具有镜像共享存储器部分212的镜像存储器部分214(2),节点3 102(3)在其主存储器108(3)中具有镜像共享存储器部分212的镜像存储器部分214(3)。在该布置中,节点1 102(1)充当共享存储器部分212的主节点,节点2和3充当共享存储器部分212的共享者节点。因此,如该例子所示,节点102可以既充当主节点,又可以充当共享者节点。为了本发明的目的,节点102可以充当任何数量(零个或多个)存储器部分的主节点,并且可以充当任何数量(零个或多个)存储器部分的共享者节点。
样例操作
在知晓了以上概述和系统描述后,现在将描述根据本发明的一个实施例的系统的样例操作。
初始化
为了使系统100中的各个节点102为共享存储器做好准备,对节点102进行初始化。在一个实施例中,可以以下述方式对节点102进行初始化。节点102可以充当一个或多个存储器部分的主节点,和/或一个或多个存储器部分的共享者节点,或者根本不参与存储器共享。根据节点102决定做什么,它可以执行下列操作中的一些、全部,或者不执行下列任何一个操作。
主节点
在初始化期间,软件(例如,操作系统114、应用程序118中的一个或多个等)由节点102上的处理器106中的一个或多个执行。根据该软件的控制,节点102确定它是否希望使其主存储器108的任何部分可用于共享。如果它希望,则它将充当该共享存储器部分的主节点。
在使其主存储器108的一部分可用于共享时,主节点102确定它希望共享的虚拟地址的范围(这些虚拟地址在本文中将被称为共享虚拟地址)。节点102然后在其主存储器108中分配足以存储整个共享虚拟地址范围的数据的物理存储器。这个分配的物理存储器将用作主节点的主存储器108的、主节点102愿意与其他节点共享的存储器部分(该存储器部分在本文中将被称为共享存储器部分)。共享存储器部分包括多个存储器位置。如前面所指出的,存储器位置可以具有任何的期望大小。每个存储器位置具有相关联的物理地址。共享虚拟地址映射到共享存储器部分中的存储器位置的物理地址,并且该映射存储在地址转换表中。如果存储器位置大得足以包含用于多个共享虚拟地址的数据,则所述多个共享虚拟地址可以以不同的偏移映射到同一物理地址。为了简单起见,下面将不进一步提及偏移。每个共享虚拟地址将仅被认为映射到一个物理地址,理解这样的映射可以涉及偏移的使用。
在一个实施例中,地址转换表中的与共享虚拟地址之一相应的每个条目被标记为只读。这将使所有的以映射到共享虚拟地址的存储器位置为目标的存储指令俘获。另外,与共享存储器部分中的所有的存储器位置相关联的有效性指示符被设置为有效(回忆,在一个实施例中,每个存储器位置具有相关联的有效性指示符,并且每个与存储器位置相关联的有效性指示符存储在该存储器位置内)。将这些有效性指示符设置为有效的操作将使所有的以共享存储器部分内的存储器位置为目标的加载指令不俘获。
另外,主节点102在其主存储器108中分配用于存储目录结构的物理存储器。该目录结构包括关于共享存储器部分中的存储器位置中的每个的目录条目。换句话说,共享存储器部分中的存储器位置中的每个在目录结构中具有相关联的目录条目。分配用于目录结构的物理存储器包括一个或多个存储器位置,每个存储器位置具有物理地址。这些存储器位置用于存储目录条目;因此,每个目录条目映射到这些存储器位置之一的物理地址。如果存储器位置大得足以存储多个目录条目,则所述多个目录条目可以以不同的偏移映射到同一物理地址。为了简单起见,下面将不进一步提及偏移。每个目录条目将仅被认为映射到一个物理地址,理解这样的映射可以涉及偏移的使用。
在一个实施例中,与共享存储器部分中的存储器位置相关联的目录条目包括关于该存储器位置的共享和锁定信息。具体地讲,目录条目具有指示哪个/哪些节点102(如果有的话)当前是共享存储器部分中的存储器位置的有效共享者的信息。如在后面的章节中将进一步讨论的,该信息用于在节点102之间维持存储器一致性。此外,目录条目指示该目录条目当前是否被锁定。在一个实施例中,只有当与共享存储器部分中的存储器位置相关联的目录条目被锁定时,数据才可以从该存储器位置加载或者存储到该存储器位置。这帮助维持数据完整性。在初始化期间,将每个目录条目初始化为指示它未被锁定并且共享存储器部分中的与该目录条目相关联的存储器位置当前不存在有效共享者。
此外,节点102对于所有的共享虚拟地址创建索引结构。该索引结构使得与共享虚拟地址有关的信息能够被快速地、容易地访问。在一个实施例中,对于主节点102使其可用于共享的每个共享虚拟地址,索引结构包括指示主节点的主存储器108中的、其中存储与该共享虚拟地址相关联的目录条目的存储器位置的物理地址的信息(指出:每个目录条目与共享存储器部分中的存储器位置相关联,并且每个共享虚拟地址映射到共享存储器部分中的存储器位置之一;因此,每个共享虚拟地址与目录条目之一相关联)。如下面将描述的,以后可以将额外的信息添加到该索引结构。
在以上操作被执行之后,主节点102广播向其他节点102通知它愿意共享其主存储器的一部分的信息。作为该广播的一部分,主节点102可以提供其节点标识符以及共享虚拟地址的地址范围。另外,它可以对于每个共享虚拟地址提供:(a)主节点的主存储器108的共享存储器部分中的、共享虚拟地址所映射的存储器位置的物理地址;以及(b)主节点的主存储器108中的、其中存储与共享虚拟地址相关联的目录条目的存储器位置的物理地址。该信息将被一个或多个共享者节点102用于在其自己的主存储器中镜像主节点的主存储器108的共享存储器部分。
共享者节点
在初始化期间,根据软件控制,节点102可以接收主节点所广播的、指示愿意共享主节点的主存储器的一部分的信息。响应于该信息,节点102可以决定是否共享主节点的主存储器的该部分。如果节点102决定共享主节点的主存储器的该部分,则它将充当该共享存储器部分的共享者节点。
为了共享主节点的主存储器的共享存储器位置,共享者节点102记录主节点所广播的共享虚拟地址的地址范围。共享者节点102可以选择使用与共享虚拟地址相同的虚拟地址,或者使用映射到共享虚拟地址的不同的一组虚拟地址。在以下讨论中,举例来说,将假定共享者节点102使用与主节点所广播的共享虚拟地址相同的虚拟地址。
共享者节点102在其主存储器108中分配足以存储用于整个共享虚拟地址范围的数据的物理存储器。这个分配的物理存储器将用作共享者节点的主存储器108的、用于镜像主节点的主存储器的共享存储器部分的存储器部分(共享者节点的主存储器的该存储器部分在本文中将被称为镜像存储器部分)。镜像存储器部分包括多个存储器位置。在一个实施例中,这些存储器位置的大小与主节点的主存储器的共享存储器部分中的存储器位置相同。每个存储器位置具有相关联的物理地址。共享虚拟地址映射到镜像存储器部分中的存储器位置的物理地址,并且该映射存储在地址转换表中。如果存储器位置大得足以包含多个共享虚拟地址的数据,则所述多个共享虚拟地址可以以不同的偏移映射到同一物理地址。为了简单起见,下面将不进一步提及偏移。每个共享虚拟地址将仅被认为映射到一个物理地址,理解这样的映射可以涉及偏移的使用。
在一个实施例中,地址转换表中的与共享虚拟地址之一相应的每个条目被标记为只读。这将使所有的以映射到共享虚拟地址的存储器位置为目标的存储指令俘获。另外,与镜像存储器部分中的所有的存储器位置相关联的有效性指示符被设置为无效。将这些有效性指示符设置为无效的操作将使所有的以镜像存储器部分中的存储器位置为目标的加载指令一开始就被俘获。
在一个实施例中,共享者节点102还在其主存储器108中分配用于存储缓冲器的一些物理存储器。如在后面的章节中将进一步讨论的,该存储缓冲器用于存储意图存储到主节点的共享存储器部分中的存储器位置中的、但是尚未传播到主节点的数据更新。
另外,共享者节点102对于所有的共享虚拟地址创建索引结构。该索引结构使得与共享虚拟地址有关的信息能够被快速地、容易地访问。在一个实施例中,对于每个共享虚拟地址,索引结构包括:(a)哪个节点是该共享虚拟地址的主节点的指示;(b)主节点的主存储器的共享存储器部分中的、共享虚拟地址所映射的存储器位置的物理地址;以及(c)主节点的主存储器中的、其中存储与共享虚拟地址相关联的目录条目的存储器位置的物理地址。该信息全部事先被主节点广播。如下面将描述的,以后可以将额外的信息添加到该索引结构。
此外,共享者节点102向其他节点广播通知这些其他节点它现在共享主节点的主存储器的共享存储器部分的信息。作为该广播的一部分,共享者节点102可以提供其节点标识符。另外,共享者节点102可以对于它正与主节点共享的每个共享虚拟地址提供共享者节点的镜像存储器部分中的、该共享虚拟地址所映射的存储器位置的物理地址。如下面将描述的,该信息将被主节点和其他共享者节点用于更新用于共享虚拟地址的索引结构。
主节点和共享者节点
根据软件控制,节点102,不管它是充当主节点、还是共享者节点,都监听另一个节点所广播的、指示该另一个节点正在与主节点共享某些虚拟地址的信息。使用该信息,节点102更新先前对于共享虚拟地址创建的索引结构。
例如,假设主节点使共享虚拟地址SVA1可用于共享。假设共享者节点广播它正在共享该虚拟地址。包括在该广播中的是共享者节点的节点标识符、以及共享者节点的主存储器的镜像存储器部分中的、共享虚拟地址所映射的存储器位置的物理地址。通过该信息,主节点现在知道共享者节点正在共享SVA1,并且主节点还知道共享者节点的镜像存储器部分中的、其中存储用于SVA1的数据的存储器位置的物理地址。主节点用关于SVA1的这个信息更新其用于共享虚拟地址的索引结构。
类似地,假设共享者节点正在共享主节点使其可用于共享的共享虚拟地址SVA1。进一步假设另一个共享者节点广播它也在共享该虚拟地址。包括在该广播中的是该另一个共享者节点的节点标识符、以及该另一个共享者节点的主存储器的镜像存储器部分中的、共享虚拟地址所映射的存储器位置的物理地址。通过该信息,第一共享者节点现在知道该另一个共享者节点也在共享SVA1,并且第一共享者节点还知道该另一个共享者节点的镜像存储器部分中的、其中存储用于SVA1的数据的存储器位置的物理地址。第一共享者节点用关于SVA1的这个信息更新其用于共享虚拟地址的索引结构。
示例
为了例示初始化处理的样例结果,现在将参照图3中所示的例子。在图3中,节点2102(2)充当主节点,节点1 102(1)和3 102(3)充当共享者节点。充当主节点,节点2 102(2)使其主存储器108(2)的共享存储器部分302可用于共享。节点2 102(2)在其主存储器108(2)中还具有目录结构304,该目录结构304包含关于共享存储器部分302中的每个存储器位置的目录条目。充当共享者节点,节点1 102(1)在其主存储器108(1)中具有镜像节点2 102(2)的共享存储器部分302的镜像存储器部分312(1)。节点1 102(1)在其主存储器108(1)中还具有存储缓冲器318(1),该存储缓冲器318(1)用于存储意图存储在节点2 102(2)的共享存储器部分302中的存储器位置中的、但是尚未传播到节点2 102(1)的更新数据。类似地,充当共享者节点,节点3 102(3)在其主存储器108(3)中具有镜像节点2 102(2)的共享存储器部分302的镜像存储器部分312(3)。节点3 102(3)在其主存储器108(3)中还具有存储缓冲器318(3),该存储缓冲器318(3)用于存储意图存储在节点2 102(2)的共享存储器部分302中的存储器位置中的、但是尚未传播到节点2 102(1)的更新数据。
节点2 102(2)的共享存储器部分302包括存储器位置306。该存储器位置306具有映射到共享虚拟地址SVA1的物理地址HNPA。该存储器位置306在目录结构304中具有相关联的目录条目308。该目录条目308具有物理地址DEPA。
存储器位置306在共享者节点1 102(1)的镜像存储器部分312(1)中具有相应的存储器位置316(1)。相应的存储器位置316(1)具有物理地址SNPA(1),该物理地址SNPA(1)也映射到共享虚拟地址SVA1。因此,在该例子中,共享虚拟地址SVA1在共享者节点3 102(3)的镜像存储器部分312(3)中也具有相应的存储器位置316(3)。相应的存储器位置316(3)具有物理地址SNPA(3)102(3),该物理地址SNPA(3)映射到共享虚拟地址SVA1。因此,在该例子中,共享虚拟地址SVA1对于存储器位置306和316(3)又是共用的。
如前面所指出的,每个节点102对于所有的共享虚拟地址创建索引结构。图3示出了各个节点102可以对于共享虚拟地址SVA1创建的索引结构的部分。类似的索引结构部分可以对于其他共享虚拟地址中的每个创建。对于主节点2 102(2),用于SVA1的索引结构部分320(2)可以包括与SVA1所映射的存储器位置306相关联的目录条目308的物理地址DEPA。索引结构部分302(2)还可以包括关于正在共享SVA1的节点的信息。因为节点1 102(1)和节点3 102(3)在当前例子中共享SVA1,所以索引结构部分302(2)可以包括节点1 102(2)的节点标识符、以及节点1 102(1)上的SVA1所映射的存储器位置316(1)的物理地址SNPA(1)。索引结构部分302(2)还可以包括节点3 102(3)的节点标识符、以及节点3 102(3)上的SVA1所映射的存储器位置316(3)的物理地址SNPA(3)。当节点1 102(1)和节点3 102(3)决定共享节点2 102(2)的共享存储器部分302时,该信息被节点1 102(1)和节点3 102(3)广播。
对于共享节点1 102(1),用于SVA1的索引结构部分320(1)可以包括与主节点102(2)有关的信息。该信息可以包括节点2 102(2)的节点标识符以指示节点2是SVA1的主节点。该信息还可以包括主节点2 102(2)上的SVA1所映射的存储器位置306的物理地址HNPA。该信息还可以包括主节点2 102(2)上的与SVA1所映射的存储器位置306相关联的目录条目308的物理地址DEPA。当主节点2 102(2)决定使共享存储器部分302可用于共享时,该信息全部被主节点2 102(2)广播。另外,用于SVA1的索引结构部分320(1)可以包括关于其他共享节点的信息。因为节点3 102(3)也共享SVA1,所以索引结构部分302(1)可以包括节点3102(3)的节点标识符、以及节点3 102(3)上的SVA1所映射的存储器位置316(3)的物理地址SNPA(3)。当节点3 102(3)决定共享节点2 102(2)的共享存储器部分302时,该信息被节点3102(3)广播。
为了使例子完整,对于共享者节点3 102(3),用于SVA1的索引结构部分320(3)可以包括与主节点102(2)有关的信息。该信息可以包括节点2 102(2)的节点标识符以指示节点2是SVA1的主节点。该信息还可以包括主节点2 102(2)上的SVA1所映射的存储器位置306的物理地址HNPA。该信息还可以包括主节点2 102(2)上的与SVA1所映射的存储器位置306相关联的目录条目308的物理地址DEPA。当主节点2 102(2)决定使共享存储器部分302可用于共享时,该信息全部被主节点2 102(2)广播。另外,关于SVA1的索引结构部分320(3)可以包括关于其他共享节点的信息。因为节点1 102(1)也共享SVA1,所以索引结构部分302(3)可以包括节点1 102(1)的节点标识符、以及节点1 102(1)上的SVA1所映射的存储器位置316(1)的物理地址SNPA(1)。当节点1 102(1)决定共享节点2 102(2)的共享存储器部分302时,该信息被节点1 102(1)广播。
常规操作
以上讨论描述了根据本发明的一个实施例可以如何初始化系统100中的节点102。在节点102被初始化之后,它们准备好了实现下述存储器共享和存储器一致性协议。在以下描述中,将分别对共享者节点和主节点描述操作。节点所执行的操作将取决于当该节点对存储器位置执行加载或存储操作时该节点是充当主节点、还是共享者节点。为了为讨论提供一些上下文,下面将参照图1中所示的系统和图3中所示的例子。为了以下讨论的目的,将假定节点1 102(1)是对其执行加载操作和存储操作的共享者节点,节点2 102(2)是主节点。节点3102(3)将被假定是额外的共享者节点。
共享者节点加载
在常规操作期间,共享者节点1 102(1)上的处理器106(1)(参见图1)中的至少一个执行与特定执行线程有关的一组程序指令(例如,操作系统114(1)、应用程序118(1)之一等)。该组程序指令可以包括从节点1的主存储器108(1)中的特定存储器位置加载数据的加载指令。为了以下讨论的目的,将假定加载指令以节点1的主存储器108(1)的镜像部分312(1)中的存储器位置316(1)(参加图3)为目标,共享虚拟地址SVA1映射到存储器位置316(1)。当处理器106(1)执行(图4中所示的流程图的方框404)加载指令时,它检查与存储器位置316(1)相关联的有效性指示符以确定(图4的方框408)当前存储在存储器位置316(1)中的数据是否有效。回忆,在一个实施例中,与存储器位置相关联的有效性指示符采取存储在该存储器位置内的一个或多个位的形式。如果有效性指示符指示有效,则处理器106(1)像平常那样从存储器位置316(1)加载(图4的方框412)数据,并且继续执行(图4的方框416)与所述特定线程有关的指令。然而,如果有效性指示符指示无效,则处理器106(1)使加载指令俘获(图4的方框420)。当加载指令俘获时,处理器106(1)暂停执行与所述特定线程有关的所述一组指令,并且开始执行一组俘获处理指令116(1)。
在执行俘获处理指令时,处理器106(1)可以执行下列操作。一开始,处理器106(1)使(图4的方框424)用于存储器位置316(1)的有效数据从主节点2 102(2)的主存储器108(2)的共享存储器部分302中的相应存储器位置306获得。处理器106(1)还可以使有效数据存储到存储器位置316(1)中。在一个实施例中,处理器106(1)可以使有效数据以下列方式获得和存储。
一开始,处理器106(1)针对存储器位置316(1)所映射的共享虚拟地址SVA1访问索引结构部分320(1)(图3)。给定该索引结构部分320(1),处理器106(1)知道:(a)节点2 102(2)是SVA1的主节点;(b)HNPA是主节点的主存储器中的与存储器位置316(1)相应存储器位置306的物理地址;以及(c)DEPA是主节点102(2)的主存储器108(2)中的、其中存储与相应存储器位置306相关联的目录条目308的物理地址。
在一个实施例中,处理器106(1)将一个或多个指令发送到节点1102(1)上的协处理器110(1),这些指令指示协处理器110(1)锁定节点2102(2)上的目录条目308,获得存储在目录条目308中的内容,获得存储在节点2 102(2)上的相应存储器位置306中的有效数据,并且将该有效数据存储到节点1 102(1)上的存储器位置316(1)中。作为所述一个或多个指令的一部分,处理器106(1)可以将下列内容提供给协处理器110(1):节点2 102(2)的节点标识符、节点2 102(2)上的目录条目308的物理地址DEPA、节点2 102(2)上的相应存储器位置306的物理地址HNPA、以及节点1 102(1)上的存储器位置316(1)的物理地址SNPA(1)。
响应于所述一个或多个指令,协处理器110(1)与节点2 102(2)上的协处理器110(2)进行通信和交互,以使节点2 102(2)上的协处理器110(2)访问目录条目308、锁定目录条目308、将目录条目308的内容的副本提供给协处理器110(1),访问相应存储器位置306,并且将存储在相应存储器位置306中的有效数据的副本提供给协处理器110(1)。作为该交互的一部分,协处理器110(1)可以将目录条目308的物理地址DEPA以及相应存储器位置306的物理地址HNPA提供给协处理器110(2)。节点1 102(1)上的协处理器110(1)其后将有效数据存储到节点1 102(1)上的存储器位置316(1)中,并且将目录条目308的内容提供给处理器106(1)。
在有效数据存储到存储器位置316(1)中之后,在一个实施例中,处理器106(1)检查节点1 102(1)上的存储缓冲器318(1)的内容以确定(图4的方框428)存储缓冲器318(1)是否包含任何更新数据,这些更新数据意图存储到主节点102(2)的相应存储器位置306中,但是尚未传播到主节点102(2)。处理器106(1)可以例如通过在存储缓冲器318(1)中查找指示该条目中的更新数据被送往SVA1的条目来这样做。如果存储缓冲器318(1)包含意图用于相应的存储器位置306的这样的更新数据,则处理器106(1)将更新数据存储(图4的方框432)到存储器位置316(1)中(指出:更新数据保留在存储缓冲器318(1)中,以使得它最后将传播到主节点102(2))。结果,存储器位置316(1)中的数据将既反映来自相应存储器位置306的有效数据,又反映来自存储缓冲器318(1)的更新数据。
其后,处理器106(1)将与存储器位置316(1)相关联的有效性指示符更新(图4的方框436)为有效。另外,处理器106(1)使(图4的方框440)目录条目308更新和解锁。处理器106(1)可以通过下述方式来这样做,即,将其关于目录条目308的内容的副本更新为包括节点1的标识符以指示节点1 102(1)现在是相应存储器位置306的有效共享者。此外,处理器106(1)可以将指示协处理器110(1)更新和解锁节点2 102(2)上的目录条目308的一个或多个指令发送到协处理器110(1)。作为所述一个或多个指令的一部分,处理器106(1)可以将下列内容提供给协处理器110(1):节点2 102(2)的节点标识符、节点2 102(2)上的目录条目308的物理地址DEPA、以及目录条目308的更新内容。
响应于所述一个或多个指令,协处理器110(1)与节点2 102(2)上的协处理器110(2)进行通信和交互,以使节点2 102(2)上的协处理器110(2)访问目录条目308、更新其中的内容、并且解锁目录条目308。作为该交互的一部分,协处理器110(1)可以将目录条目308的物理地址DEPA和目录条目308的更新内容提供给节点2 102(2)上的协处理器110(2)。
在将指示协处理器110(1)更新和解锁目录条目308的所述一个或多个指令发送到协处理器110(1)之后(在一个实施例中,处理器106(1)不等待协处理器110(1)与协处理器110(2)进行交互),处理器106(1)终止执行俘获处理指令116(1),并且重新开始(图4的方框444)执行与所述特定执行线程有关的所述一组程序指令。当重新开始执行该组程序指令时,处理器106(1)再次执行从存储器位置316(1)加载数据的加载指令。这次,因为与存储器位置316(1)相关联的有效性指示符被设置为有效,所以加载操作应导致数据被成功加载。根据本发明的一个实施例,以所描述的方式,共享者节点可以对从在镜像存储器部分内的存储器位置的加载进行处理。
替代实施例
在上述实施例中,处理器106(1)使用于存储器位置316(1)的有效数据首先从相应存储器位置306获得,然后用来自存储缓冲器的更新数据更新该有效数据。作为替代方案,处理器106(1)可以首先从存储缓冲器318(1)获得更新数据并且将它传播到节点2 102(1)的存储器位置306,然后从存储器位置306获得有效数据(将在后面的章节中描述可以将更新数据传播到主节点102(2)的方式)。通过该方法,从存储器位置306获得的有效数据将已经反映了来自存储缓冲器318(1)的更新数据;因此,处理器106(1)无需对有效数据执行任何更新。
此外,在以上实施例中,目录条目308的内容从主节点102(2)传递到共享者节点102(1),被共享者节点102(1)更新,然后被传回到主节点102(2)。作为替代方案,目录条目308的内容可以停留在主节点102(2)处,并且这些内容可以被主节点102(2)更新。例如,共享者节点102(1)上的处理器106(1)可以将指示协处理器110(1)执行下述步骤的一个或多个指令发送到协处理器110(1):更新目录条目308的内容以指示共享者节点102(1)现在是相应存储器位置306的有效共享者;并且解锁目录条目308。作为响应,协处理器110(1)可以与节点2 102(2)上的协处理器110(2)进行通信和交互,以使节点2 102(2)上的协处理器110(2)访问目录条目308、更新内容以指示共享者节点102(1)现在是相应存储器位置306的有效共享者、并且解锁目录条目308。
这些替代方法和其他替代方法在本发明的范围内。
共享者节点存储
在常规操作期间,共享者节点1 102(1)上的一个或多个处理器106(1)可以执行与特定执行线程有关的一组程序指令(例如,操作系统114(1)、应用程序118(1)中的一个或多个等),这些程序指令包括将更新数据存储到节点1的主存储器108(1)中的特定存储器位置的存储指令。存储指令可以以在节点1的主存储器108(1)的镜像存储器部分312(1)内的存储器位置为目标。为了以下讨论的目的,将假定存储指令以共享虚拟地址SVA1所映射的存储器位置316(1)为目标。当处理器106(1)执行(图5中所示的流程图的方框504)存储指令时,它确定目标存储器位置316(1)是否是可写位置。在一个实施例中,处理器106(1)通过查阅将虚拟地址映射到物理地址的地址转换表来做出该确定。如果地址转换表中的与用于存储器位置316(1)的SVA1/SNPA(1)映射相应的条目指示存储器位置316(1)是可写的,则存储操作可以像平常那样继续进行。然而,如果地址转换表条目指示存储器位置316(1)不是可写的(例如,只读),则在一个实施例中,处理器106(1)使存储指令俘获(图5的方框508)。从前面的讨论回忆,在初始化期间,共享者节点的镜像存储器部分中的所有存储器位置使它们的地址转换表条目设置为只读。因此,该存储指令将导致俘获。事实上,在一个实施例中,所有的以镜像存储器部分312(1)内的存储器位置为目标的存储指令都将导致俘获。当存储指令俘获时,处理器106(1)暂停执行与所述特定线程有关的所述一组指令,并且开始执行俘获一组处理指令116(1)。在一个实施例中,作为从所述特定线程到俘获处理指令的转变的一部分,处理器106(1)获得该特定线程的线程标识符以及意图用于存储器位置316(1)的更新数据。
在执行俘获处理指令时,处理器106(1)可以执行下列操作。一开始,处理器106(1)针对存储器位置316(1)所映射的共享虚拟地址SVA1访问索引结构部分320(1)。从该索引结构部分320(1)中的信息,处理器106(1)知道:(a)节点2 102(2)是SVA1的主节点;以及(b)HNPA是主节点的主存储器中的与存储器位置316(1)相应存储器位置306的物理地址。因此,在这种情况下,处理器106(1)知道它充当共享者节点。既然如此,处理器106(1)知道它应使(图5的方框512)意图用于存储器位置316(1)的更新数据最后传播到节点2 102(2)上的存储器位置306。在一个实施例中,处理器106(1)通过将更新数据存储到节点1 102(1)上的存储缓冲器318(1)来使更新数据最后传播到节点2 102(2)上的存储器位置306。
为了这样做,在一个实施例中,处理器106(1)确定存储缓冲器318(1)当前是否包含任何现有的送往节点2 102(2)上的存储器位置306的更新数据(处理器106(1)可以例如通过在存储缓冲器318(1)中查找具有与其相关联的SVA1的条目来做出该确定)。如果找到这样的条目,则处理器106(1)锁定该条目,将该条目中的现有的更新数据与意图用于存储器位置316(1)的新的更新数据合并,并且解锁该条目。另一方面,如果存储缓冲器318(1)当前不包含任何现有的送往节点2 102(2)的存储器位置306的更新数据,则处理器106(1)将条目添加到存储缓冲器318(1)。该条目可以包括更新数据、该更新数据送往节点2 102(2)的存储器位置306的指示(该指示可以包括,例如,SVA1)、以及可选地,包含存储操作的特定线程的线程标识符。该线程标识符使得存储缓冲器318(1)中的与某一线程相关联的所有条目都可以被容易地识别。
另外,在一个实施例中,处理器106(1)确定(图5的方框516)与存储器位置316(1)相关联的有效性指示符是否被设置为有效。如果是,则处理器106(1)将更新数据存储(图5的方框520)到存储器位置316(1)。否则,更新数据不被存储到存储器位置316(1)中。
其后,处理器106(1)终止执行俘获处理指令116(1),并且在存储指令之后的指令处重新开始(图5的方框524)执行与所述特定执行线程有关的所述一组程序指令。因为更新数据已经被存储(如果它完全被存储)到存储器位置316(1)中,所以无需再次执行存储指令。根据本发明的一个实施例,以所描述的方式,共享者节点可以对到在镜像存储器部分内的存储器位置的存储进行处理。
更新传播
以上讨论描述了当存储指令俘获时所执行的操作。这些操作仅仅是数据更新处理的一部分。为了完成该处理,存储在存储缓冲器318(1)中的更新数据在某一时刻传播到主节点102(2)。在一个实施例中,这通过使共享者节点1 102(1)上的一个或多个处理器106(1)执行一组更新传播指令来实现。这些更新传播指令可以是包括存储指令的指令的一部分,或者它们可以是单独的一组指令的一部分。更新传播指令可以作为与存储指令相同线程的一部分执行,或者作为不同线程的一部分执行。执行更新传播指令的处理器106(1)可以是执行存储指令的同一处理器,或者它可以是不同的处理器。事实上,在一个实施例中,执行更新传播指令的处理器可以是协处理器110(1)。因此,为了更新传播指令的目的,协处理器110(1)可以被看作处理器。在以下讨论中,将假定,举例来说,更新传播指令由节点1102(1)上的处理器106(1)中的一个处理器106(1)执行,该处理器106(1)可以是或者可以不是执行存储指令的同一处理器。
在执行更新传播指令时,处理器106(1)可以执行下列操作。一开始,处理器106(1)选择存储缓冲器318(1)中的条目之一。该选择可以例如随机地、顺序地、基于某一次序(例如,先进先出、后进先出等)、基于存储在该条目中的线性标识符、或者基于任何其他的期望标准来进行。举例来说,将假定,选定的条目是包含来自前面讨论的存储指令的、送往节点2102(2)的存储器位置306的更新数据的一个条目。处理器106(1)锁定选定的条目并且检索(图6中所示的流程图的方框604)存储在该条目中的信息,该信息可以包括更新数据以及该更新数据送往节点2 102(2)的存储器位置306的指示符(该指示符可以包括,例如,SVA1)。处理器106(1)然后可以针对SVA1访问索引结构部分320(1)。从该索引结构部分320(1)中的信息,处理器106(1)知道:(a)节点2 102(2)是SVA1的主节点;(b)HNPA是主节点的主存储器108(2)中的存储器位置306的物理地址,存储器位置306是更新数据的预期目的地;以及(c)DEPA是主节点102(2)的主存储器108(2)中的、其中存储与存储器位置306相关联的目录条目308的物理地址。
使用该信息,处理器106(1)使(图6的方框608)目录条目308被锁定并且其中所包含的内容被获得。在一个实施例中,处理器106(1)通过将指示节点1 102(1)上的协处理器110(1)锁定节点2 102(2)上的目录条目308并且获得存储在其中的内容的一个或多个指令发送到协处理器110(1)来这样做。作为所述一个或多个指令的一部分,处理器106(1)可以将节点2 102(2)的节点标识符以及节点2 102(2)上的目录条目308的物理地址DEPA提供给协处理器110(1)。
响应于所述一个或多个指令,协处理器110(1)与节点2 102(2)上的协处理器110(2)进行通信和交互,以使节点2 102(2)上的协处理器110(2)访问目录条目308、锁定目录条目308、并且将目录条目308的内容的副本提供给协处理器110(1)。作为该交互的一部分,协处理器110(1)可以将目录条目308的物理地址DEPA提供给协处理器110(2)。节点1 102(1)上的协处理器110(1)其后使目录条目308的内容可供处理器106(1)使用。
如前面所指出的,目录条目308包括关于它所关联的存储器位置306的共享信息。该共享信息指示哪个/哪些节点当前是存储器位置306的有效共享者。举例来说,将假定目录条目308指示节点3 102(3)当前是存储器位置306的有效共享者。这意味着节点3 102(3)在其主存储器108(3)中具有镜像存储器位置306的镜像存储器位置316(3),并且与存储器位置316(3)相关联的有效性指示符当前被设置为有效。因为主节点102(2)的存储器位置306中的数据即将被更新,所以节点3102(3)的镜像存储器位置316(3)中的数据即将变为无效。为了防止节点3 102(3)使用无效数据,在一个实施例中,处理器106(1)使(图6的方框612)节点3 102(3)的镜像存储器位置316(3)中的数据失效。
处理器106(1)可以通过从索引结构部分320(1)获得节点3 102(3)的节点标识符以及节点3 102(3)上的镜像存储器位置316(3)的物理地址SNPA(3)来这样做。处理器106(1)然后可以将指示节点1 102(1)的协处理器110(1)使节点3 102(3)的存储器位置316(3)中的数据失效的一个或多个指令发送到协处理器110(1)。作为所述一个或多个指令的一部分,处理器106(1)可以将节点3 102(3)的节点标识符以及节点3102(3)上的存储器位置316(3)的物理地址SNPA(3)提供给协处理器110(1)。
响应于所述一个或多个指令,协处理器110(1)与节点3 102(3)上的协处理器110(3)进行通信和交互,以使节点3 102(3)上的协处理器110(3)访问存储器位置316(3)并且将与存储器位置316(3)相关联的有效性指示符设置为无效。作为该交互的一部分,协处理器110(1)可以将存储器位置316(3)的物理地址SNPA(3)提供给节点3 102(3)上的协处理器110(3)。处理器106(1)可以对于目录条目308指示其为存储器位置306的有效共享者的每个共享者节点重复以上失效处理。在这样做了之后,处理器106(1)可以更新(图6的方框616)其关于目录条目308的副本,以使得目录条目308不再指示任何共享者节点(可能除了共享者节点1 102(2)之外)为存储器位置306的有效共享者。
除了以上操作之外,处理器106(1)使(图6的方框620)用于存储器位置306的更新数据传播到节点2 102(2)并且目录条目308被更新和解锁。处理器106(1)可以通过将指示协处理器110(1)将更新数据存储到节点2 102(2)的存储器位置306中并且更新和解锁节点2 102(2)上的目录条目308的一个或多个指令发送到协处理器110(1)来这样做。作为所述一个或多个指令的一部分,处理器106(1)可以将下列内容提供给协处理器110(1):节点2102(2)的节点标识符、节点2 102(2)上的存储器位置306的物理地址HNPA、将存储到存储器位置306的更新数据、节点2 102(2)上的目录条目308的物理地址DEPA、以及用于目录条目308的更新内容。
响应于所述一个或多个指令,协处理器110(1)与节点2 102(2)上的协处理器110(2)进行通信和交互,以使节点2 102(2)上的协处理器110(2)访问存储器位置306、将更新数据存储到存储器位置306中、访问目录条目308、更新目录条目308的内容、并且解锁目录条目308。作为该交互的一部分,协处理器110(1)可以将下列内容提供给节点2102(2)上的协处理器110(2):存储器位置306的物理地址HNPA、用于存储器位置306的更新数据、目录条目308的物理地址DEPA、以及用于目录条目308的更新内容。
在更新数据传播到主节点2 102(2)之后,处理器106(1)从存储缓冲器318(1)移除(图6的方框624)选定的条目。处理器106(1)然后可以循环回到604以从存储缓冲器318(1)选择另一个条目并且重复以上处理。根据本发明的一个实施例,以所描述的方式,更新数据可以从共享者节点传播到主节点。
替代实施例
在上述用于执行共享者节点存储的实施例中,来自存储指令的更新数据不立刻传播到主节点102(2)的存储器位置306。相反,更新数据首先存储到存储缓冲器318(1)中,然后通过执行更新传播指令来传播到主节点102(2)。作为替代方案,每次存储指令被俘获时,俘获处理指令可以使来自存储指令的更新数据立刻传播到主节点(该方法可以被称为“迫使全部存储到主节点”方法)。根据这样的方法,将不需要存储缓冲器。此外,将不需要单独的一组更新传播指令。相反,更新数据到主节点的传播将根据俘获处理指令的控制来执行。
为了例示可以如何根据本发明的一个实施例实现“迫使全部存储到主节点”方法,将参照以上俘获以存储器位置316(1)为目标的存储指令的例子。在执行俘获处理指令时,处理器106(1)使来自存储指令的更新数据传播到主节点102(2)并且存储到相应存储器位置306中。这可以以与以上结合更新传播指令描述的方式类似的方式进行。另外,处理器106(1)可以在本地执行几个操作之一。在“自失效”选项下,处理器106(1)可以将与存储器位置316(1)相关联的有效性指示符设置为无效。这样做将使当前存储在存储器位置316(1)中的数据失效,并且在下一次加载指令以存储器位置316(1)为目标时,使俘获发生。在“非自失效”选项下,处理器106(1)可以检查与存储器位置316(1)相关联的有效性指示符。如果有效性指示符指示有效,则处理器106(1)将来自存储指令的更新数据存储到存储器位置316(1)中。否则,处理器106(1)将不更新存储器位置316(1)中的数据。其后,处理器106(1)终止执行俘获处理指令116(1),并且重新开始执行包括存储指令的一组程序指令。在一个实施例中,程序指令的执行在存储指令之后的指令处重新开始。
这些替代方法和其他替代方案在本发明的范围内。
主节点加载和存储
在一个实施例中,主节点102(2)可以以与它从任何其他存储器位置加载的方式相同的方式执行从在其主存储器108(2)的共享存储器部分302内的存储器位置的加载。在一个实施例中,共享存储器部分302内的存储器位置中的数据被假定为总是有效的(回忆,在初始化期间,与共享存储器部分302内的所有存储器位置相关联的有效性指示符被设置为有效)。因此,无需在主节点102(2)中俘获这些加载指令。
然而,主节点执行的存储指令可能被俘获。现在将描述根据本发明的一个实施例的主节点可以处理存储指令的方式。在常规操作期间,主节点2 102(2)上的一个或多个处理器106(2)可以执行与特定执行线程有关的一组程序指令(例如,操作系统114(2)、应用程序118(2)中的一个或多个等),该组程序指令包括将更新数据存储到节点2的主存储器108(2)中的特定存储器位置中的存储指令。存储指令可以以在节点2的主存储器108(2)的共享存储器部分302内的存储器位置为目标。为了以下讨论的目的,将假定存储指令以存储器位置306为目标,存储器位置306具有共享虚拟地址SVA1所映射的HNPA的物理地址。
当处理器106(2)执行(图7中所示的流程图的方框704)存储指令时,它确定目标存储器位置306是否是可写位置。在一个实施例中,处理器106(2)通过查阅将虚拟地址映射到物理地址的地址转换表来做出该确定。如果地址转换表中的与用于存储器位置306的SVA1/HNPA映射相应的条目指示存储器位置306是可写的,则存储操作可以像平常那样继续进行。然而,如果该地址转换表条目指示存储器位置306是不可写的(例如,只读),则在一个实施例中,处理器106(2)使存储指令俘获(图7的方框708)。从前面的讨论回忆,在初始化期间,主节点的共享存储器部分中的所有存储器位置都使它们的地址转换表条目设置为只读。因此,该存储指令将导致俘获。事实上,在一个实施例中,所有的以共享存储器部分302内的存储器位置为目标的存储指令都将导致俘获。当存储指令俘获时,处理器106(2)暂停执行与所述特定线程有关的所述一组指令,并且开始执行一组俘获处理指令116(2)。在一个实施例中,作为从所述特定线程到俘获处理指令的转变的一部分,处理器106(2)获得意图用于存储器位置306的更新数据。
在执行俘获处理指令时,处理器106(2)可以执行下列操作。一开始,处理器106(2)针对存储器位置306所映射的共享虚拟地址SVA1访问索引结构部分320(2)。从该索引结构部分320(2)中的信息,处理器106(2)可以看出没有主节点被识别;因此,在这种情况下,它知道它充当主节点。处理器106(2)还从索引结构部分320(2)知道与存储器位置306相关联的目录条目308的物理地址是DEPA。使用该物理地址,处理器106(2)访问(图7的方框712)目录条目308,锁定目录条目308,并且读取其内容。
从目录条目308的内容,处理器106(2)确定哪个/哪些节点(如果有的话)当前是存储器位置306的有效共享者。举例来说,将假定,目录条目308指示节点1 102(1)和节点3102(3)当前是存储器位置306的有效共享者。这意味着节点1 102(1)在其主存储器108(1)中具有镜像存储器位置306的镜像存储器位置316(1),并且与存储器位置316(1)相关联的有效性指示符当前被设置为有效。还意味着,节点3 102(3)在其主存储器108(3)中具有镜像存储器位置306的镜像存储器位置316(3),并且与存储器位置316(3)相关联的有效性指示符当前被设置为有效。因为存储器位置306中的数据即将被更新,所以存储器位置316(1)和316(3)中的数据即将变为无效。为了防止节点1 102(1)和节点3 102(3)使用无效数据,在一个实施例中,处理器106(2)使(图7的方框716)存储器位置316(1)和316(3)中的数据无效。
处理器106(2)可以通过从索引结构部分320(2)获得节点1 102(1)的节点标识符以及节点1 102(1)的镜像存储器位置316(1)的物理地址SNPA(1)来这样做。处理器106(2)然后可以将指示节点2 102(2)上的协处理器110(2)使节点1 102(1)的存储器位置316(1)中的数据失效的一个或多个指令发送到协处理器110(2)。作为所述一个或多个指令的一部分,处理器106(2)可以将节点1 102(1)的节点标识符以及节点1 102(1)上的存储器位置316(1)的物理地址SNPA(1)提供给协处理器110(2)。
响应于所述一个或多个指令,协处理器110(2)与节点1 102(1)上的协处理器110(1)进行通信和交互,以使节点1 102(1)上的协处理器110(1)访问存储器位置316(1)并且将与存储器位置316(1)相关联的有效性指示符设置为无效。作为该交互的一部分,协处理器110(2)可以将存储器位置316(1)的物理地址SNPA(1)提供给节点1 102(1)上的协处理器110(1)。
处理器106(2)还可以从索引结构部分320(2)获得节点3 102(3)的节点标识符以及节点3 102(3)上的存储器位置316(3)的物理地址SNPA(3)。处理器106(2)然后可以将指示节点2 102(2)上的协处理器110(2)使节点3 102(3)上的存储器位置316(3)中的数据失效的一个或多个指令发送到协处理器110(2)。作为所述一个或多个指令的一部分,处理器106(2)可以将节点3 102(3)的节点标识符以及节点3 102(3)上的存储器位置316(3)的物理地址SNPA(3)提供给协处理器110(2)。
响应于所述一个或多个指令,协处理器110(2)与节点3 102(3)上的协处理器110(3)进行通信和交互,以使节点3 102(3)上的协处理器110(3)访问存储器位置316(3)并且将与存储器位置316(3)相关联的有效性指示符设置为无效。作为该交互的一部分,协处理器110(2)可以将存储器位置316(3)的物理地址SNPA(3)提供给节点3 102(3)上的协处理器110(3)。
处理器106(2)可以对于目录条目308指示其为存储器位置306的有效共享者的每个共享者节点重复以上失效处理。在这样做了之后,处理器106(2)更新(图7的方框720)目录条目308,以使得目录条目308不再指示任何共享者节点为存储器位置306的有效共享者。
除了以上操作之外,处理器106(2)将更新数据存储(图7的方框724)到存储器位置306中,并且解锁(图7的方框728)目录条目308。其后,处理器106(2)终止执行俘获处理指令116(2),并且在存储指令之后的指令处重新开始(图7的方框732)执行与所述特定执行线程有关的所述一组程序指令。因为更新数据已经被存储到存储器位置306中,所以无需再次执行存储指令。根据本发明的一个实施例,以所描述的方式,主节点可以对到在共享存储器部分内的存储器位置的存储进行处理。
替代实施例
在上述实施例中,处理器106(2)在俘获处理指令116(2)的指导下使共享者节点102(1)和102(3)的镜像存储器位置316(1)和316(3)中的数据失效。也是处理器106(2)在俘获处理指令116(2)的指导下使目录条目308中的信息更新为不再指示节点1 102(1)和节点3 102(3)为存储器位置306的有效共享者。作为替代方案,在俘获处理指令116(2)的指导下,处理器106(2)可以仅将更新数据存储到存储器位置306中,并且将指示存储器位置306中的数据已经被更新的一些信息存储到缓冲器(未示出)中。执行一组失效指令的处理器(同一处理器或不同的处理器)可以在以后的一个时刻访问存储在缓冲器中的信息,并且继续使共享者节点102(1)和102(3)的镜像存储器位置316(1)和316(3)中的数据失效,并且使目录条目308中的信息更新为不再指示节点1 102(1)和节点3 102(3)为存储器位置306的有效共享者。该替代方法和其他替代方案在本发明的范围内。
此刻,应指出,尽管已经参照特定的实施例描述了本发明,但是本发明不应被解释为限于此。在不脱离本发明的精神的情况下,本领域的普通技术人员可以在具有本公开的益处的情况下进行各种修改。因此,本发明不应由用于例示本发明的特定实施例限制,而是应仅由所发表的权利要求书的范围限制。

Claims (48)

1.一种在包括第一节点和第二节点的分布式系统中执行的方法,其中,所述第一节点具有第一主存储器,所述第二节点具有第二主存储器,所述方法由所述第一节点执行,所述方法包括:
将第一主存储器中的第一存储器位置中的一个或多个存储器地址映射到第二主存储器中的第二存储器位置中的一个或多个存储器地址;
由所述第一节点上的处理器执行从第一主存储器的第一存储器位置加载数据的加载指令,其中,所述加载指令是与特定执行线程有关的一组程序指令的一部分;
其中,执行所述加载指令包括由所述处理器确定第一存储器位置中的数据是否是有效的;
响应于确定第一存储器位置中的数据是无效的,使所述加载指令俘获,这使所述处理器暂停执行所述一组程序指令,并且开始执行一组俘获处理指令;
由所述处理器执行所述一组俘获处理指令,其中,执行所述一组俘获处理指令使得:
从第二主存储器的第二存储器位置获得有效数据并且将所述有效数据存储到第一主存储器的第一存储器位置中;以及
将有效性指示符更新为指示第一存储器位置中的数据是有效的;以及
由所述处理器重新开始执行所述一组程序指令。
2.根据权利要求1所述的方法,其中,所述第一节点包括协处理器,并且其中,使有效数据从第二主存储器的第二存储器位置获得并且存储到第一主存储器的第一存储器位置中包括:
所述处理器将一个或多个指令提供给所述协处理器,使得所述协处理器从第二主存储器的第二存储器位置获得有效数据并且将所述有效数据存储到第一主存储器的第一存储器位置中。
3.根据权利要求1所述的方法,其中,所述第一节点包括第一协处理器,所述第二节点包括第二协处理器,并且其中,使有效数据从第二主存储器的第二存储器位置获得并且存储到第一主存储器的第一存储器位置中包括:
所述处理器将一个或多个指令提供给第一协处理器,使得第一协处理器通过与第二协处理器的交互从第二主存储器的第二存储器位置获得有效数据并且将所述有效数据存储到第一主存储器的第一存储器位置中。
4.根据权利要求1所述的方法,其中:
在执行所述一组俘获处理指令时,所述处理器进一步使:
与第二节点的第二主存储器的第二存储器位置相关联的目录条目被锁定,其中,所述目录条目存储在第二节点上;
所述目录条目中的信息更新为指示第一节点是第二主存储器的第二存储器位置的有效共享者;以及
所述目录条目被解锁。
5.根据权利要求1所述的方法,其中:
在执行所述一组俘获处理指令时,所述处理器进一步使:
更新数据从第一节点上的存储缓冲器获得,其中,所述更新数据意图存储在第二节点的第二主存储器的第二存储器位置中,但是尚未传播到第二节点;以及
所述更新数据被存储到第一主存储器的第一存储器位置中。
6.根据权利要求1所述的方法,其中:
在执行所述一组俘获处理指令时,在使所述有效数据从第二主存储器的第二存储器位置获得并且存储到第一主存储器的第一存储器位置中之前,所述处理器使:
更新数据从第一节点上的存储缓冲器获得,其中,所述更新数据意图存储在第二节点的第二主存储器的第二存储器位置中,但是尚未传播到第二节点;以及
所述更新数据传播到第二节点并且存储到第二主存储器的第二存储器位置内以产生表示有效数据的更新的一组数据。
7.一种在包括第一节点和第二节点的分布式系统中执行的方法,其中,所述第一节点具有第一主存储器,所述第二节点具有第二主存储器,所述方法由所述第一节点执行,所述方法包括:
将第一主存储器中的第一存储器位置中的一个或多个存储器地址映射到第二主存储器中的第二存储器位置中的一个或多个存储器地址;
由所述第一节点上的第一处理器执行将更新数据存储到第一主存储器的第一存储器位置中的存储指令,其中,所述存储指令是与特定执行线程有关的一组程序指令的一部分;
使所述存储指令俘获,这使第一处理器暂停执行所述一组程序指令并且开始执行一组俘获处理指令;
由所述处理器执行所述一组俘获处理指令,其中,执行所述一组俘获处理指令使得:
基于所述映射,将所述更新数据传播到第二节点以存储在第二主存储器的第二存储器位置内;以及
由所述第一处理器重新开始执行所述一组程序指令。
8.根据权利要求7所述的方法,
其中,所述方法还包括:
在执行所述一组俘获处理指令时,所述第一处理器:
将所述更新数据存储到第一主存储器的第一存储器位置中;并且
其中,使所述更新数据传播到第二节点包括:
将所述更新数据存储到存储缓冲器中以供传播到第二节点。
9.根据权利要求7所述的方法,
其中,使所述更新数据传播到第二节点包括:
将所述更新数据存储到存储缓冲器中以供传播到第二节点。
10.根据权利要求9所述的方法,
其中,将所述更新数据存储到存储缓冲器中以供传播到第二节点包括:
确定所述存储缓冲器是否包含目的地为第二主存储器的第二存储器位置的现有的更新数据;以及
响应于确定所述存储缓冲器包含目的地为第二主存储器的第二存储器位置的现有的更新数据,将所述更新数据与所述存储缓冲器中的现有的更新数据合并。
11.根据权利要求9所述的方法,还包括:
在重新开始执行所述一组程序指令之后,以及在执行所述一组程序指令时,所述第一处理器:
从所述存储缓冲器检索所述更新数据;以及
使所述更新数据传播到第二节点并且存储在第二主存储器的第二存储器位置内。
12.根据权利要求9所述的方法,还包括:
第二处理器从所述存储缓冲器检索所述更新数据;并且
所述第二处理器使所述更新数据传播到第二节点并且存储在第二主存储器的第二存储器位置内;
其中,所述第二处理器能够为第一处理器或第一节点上的另一个处理器。
13.根据权利要求12所述的方法,其中,所述第一节点包括第一协处理器,所述第二节点包括第二协处理器,并且其中,使所述更新数据传播到第二节点并且存储在第二主存储器的第二存储器位置内包括:
所述第二处理器将一个或多个指令提供给第一协处理器,使得第一协处理器与第二协处理器进行交互以使所述更新数据传播到第二节点并且存储在第二主存储器的第二存储器位置内。
14.根据权利要求9所述的方法,所述分布式系统还包括第三节点,其中,所述第三节点具有第三主存储器,其中,所述第二主存储器中的第二存储器位置也镜像在第三主存储器中的第三存储器位置中,并且其中,所述方法还包括:
第二处理器从所述存储缓冲器检索所述更新数据;并且
所述第二处理器使:
所述更新数据传播到第二节点并且存储在第二主存储器的第二存储器位置内;以及
当前存储在第三节点的第三主存储器的第三存储器位置中的数据失效;
其中,所述第二处理器能够为第一处理器或第一节点上的另一个处理器。
15.根据权利要求14所述的方法,其中,所述第一节点包括第一协处理器,所述第三节点包括第二协处理器,并且其中,使当前存储在第三节点的第三主存储器的第三存储器位置中的数据失效包括:
所述第二处理器将一个或多个指令提供给第一协处理器,使得第一处理器与第二协处理器进行交互以使当前存储在第三主存储器的第三存储器位置中的数据失效。
16.根据权利要求9所述的方法,还包括:
第二处理器从所述存储缓冲器检索所述更新数据;并且
所述第二处理器使:
与第二主存储器的第二存储器位置相关联的目录条目被锁定,其中,所述目录条目存储在第二节点上;和
所述更新数据传播到第二节点并且存储在第二主存储器的第二存储器位置内;以及
所述目录条目被解锁;
其中,所述第二处理器能够为第一处理器或第一节点上的另一个处理器。
17.根据权利要求9所述的方法,其中,所述分布式系统还包括第三节点,其中,所述第三节点具有第三主存储器,其中,所述第二主存储器中的第二存储器位置也镜像在第三主存储器中的第三存储器位置,并且其中,所述方法还包括:
第二处理器从所述存储缓冲器检索所述更新数据;并且
所述第二处理器使:
与第二主存储器的第二存储器位置相关联的目录条目被锁定,其中,所述目录条目存储在第二节点上,并且其中,所述目录条目中的信息指示第三节点当前是第二主存储器的第二存储器位置的有效共享者;
所述更新数据传播到第二节点并且存储在第二主存储器的第二存储器位置内;
存储在第三节点的第三主存储器的第三存储器位置中的数据失效;
所述目录条目中的信息更新为使得所述信息不再指示第三节点为第二主存储器的第二存储器位置的有效共享者;以及
所述目录条目被解锁;
其中,所述第二处理器能够为第一处理器或第一节点上的另一个处理器。
18.根据权利要求7所述的方法,
其中,所述方法还包括:
在执行所述一组俘获处理指令时,所述第一处理器:
将所述更新数据存储到第一主存储器的第一存储器位置中;并且
其中,使所述更新数据传播到第二节点包括:
使所述更新数据传播到第二节点并且存储在第二主存储器的第二存储器位置内。
19.根据权利要求7所述的方法,
其中,所述方法还包括:
在执行所述一组俘获处理指令时,所述第一处理器:
使当前存储在第一主存储器的第一存储器位置中的数据失效;并且
其中,使所述更新数据传播到第二节点包括:
使所述更新数据传播到第二节点并且存储在第二主存储器的第二存储器位置内。
20.一种用于在分布式计算系统中使用的第一节点,所述第一节点包括:
第一主存储器,其中,所述第一主存储器中的第一存储器位置中的一个或多个存储器地址被映射到所述分布式计算系统的第二节点上的第二主存储器中的第二存储器位置中的一个或多个存储器地址;
一组俘获处理指令;和
包括第一处理器的一个或多个处理器,所述第一处理器可操作为执行从第一主存储器的第一存储器位置加载数据的加载指令,其中,所述加载指令是与特定执行线程有关的一组程序指令的一部分,并且其中执行所述加载指令包括确定第一主存储器的第一存储器位置中的数据是否是有效的,并且响应于确定第一主存储器的第一存储器位置中的数据是无效的,使所述加载指令俘获,这将使第一处理器暂停执行所述一组程序指令,并且开始执行所述一组俘获处理指令;并且
其中,所述一组俘获处理指令在被第一处理器执行时将使得第一处理器:
基于所述映射使得有效数据从第二主存储器的第二存储器位置获得并且存储到第一主存储器的第一存储器位置中;以及
使得有效性指示符更新为指示第一存储器位置中的数据是有效的;以及
使得所述一组程序指令的执行重新开始。
21.根据权利要求20所述的第一节点,
其中,所述第一节点还包括第一协处理器;并且
其中,所述一组俘获处理指令在被第一处理器执行时通过将一个或多个指令提供给第一协处理器来使得第一处理器从第二主存储器的第二存储器位置获得有效数据并且将其存储到第一主存储器的第一存储器位置中;并且
其中,所述第一协处理器可操作为通过经由与第二节点上的第二协处理器的交互从第二主存储器的第二存储器位置获得有效数据,并且将所述有效数据存储到第一主存储器的第一存储器位置中来响应所述一个或多个指令。
22.根据权利要求20所述的第一节点,其中,所述一组俘获处理指令在被第一处理器执行时使第一处理器进一步使得:
与第二节点的第二主存储器的第二存储器相关联的目录条目被锁定,其中,所述目录条目存储在第二节点上;
所述目录条目中的信息更新为指示第一节点是第二主存储器的第二存储器位置的有效共享者;以及
所述目录条目被解锁。
23.根据权利要求20所述的第一节点,
其中,所述第一节点还包括存储缓冲器;并且
其中,所述一组俘获处理指令在被第一处理器执行时将使第一处理器进一步使得:
更新数据从所述存储缓冲器获得,其中,所述更新数据意图存储在第二节点的第二主存储器的第二存储器位置中,但是尚未传播到第二节点;和
所述更新数据存储到第一主存储器的第一存储器位置中。
24.根据权利要求20所述的第一节点,
其中,所述第一节点还包括存储缓冲器;并且
其中,所述一组俘获处理指令在被第一处理器执行时,在使有效数据从第二主存储器的第二存储器位置获得并且存储到第一主存储器的第一存储器位置中之前,将使第一处理器使得:
更新数据从所述存储缓冲器获得,其中,所述更新数据意图存储在第二节点的第二主存储器的第二存储器位置中,但是尚未传播到第二节点;以及
所述更新数据传播到第二节点并且存储在第二主存储器的第二存储器位置内以产生表示有效数据的更新的一组数据。
25.一种用于在分布式计算系统中使用的第一节点,所述第一节点包括:
第一主存储器,其中,所述第一主储存器中的第一存储器位置中的一个或多个存储器地址被映射到所述分布式计算系统的第二节点上的第二主存储器中的第二存储器位置中的一个或多个存储器地址;
一组俘获处理指令;和
包括第一处理器的一个或多个处理器,所述第一处理器可操作为执行存储指令以将更新数据存储到第一主存储器的第一存储器位置中,其中,所述存储指令是与特定执行线程有关的一组程序指令的一部分,并且其中,所述第一处理器包括电路系统,所述电路系统可操作为使所述存储指令俘获,这将使第一处理器暂停执行所述一组程序指令并且开始执行所述一组俘获处理指令;并且
其中,所述一组俘获处理指令在被第一处理器执行时将使第一处理器:
基于所述映射使所述更新数据传播到第二节点以存储在第二主存储器的第二存储器位置内;和
重新开始执行所述一组程序指令。
26.根据权利要求25所述的第一节点,
其中,所述第一节点还包括存储缓冲器;
其中,所述俘获处理指令在被第一处理器执行时将进一步使第一处理器:
将所述更新数据存储到第一主存储器的第一存储器位置中;并且
其中,所述俘获处理指令在被第一处理器执行时将使第一处理器通过将所述更新数据存储到所述存储缓冲器中以供传播到第二节点来使所述更新数据传播到第二节点。
27.根据权利要求25所述的第一节点,
其中,所述第一节点还包括存储缓冲器;并且
其中,所述俘获处理指令在被第一处理器执行时将使第一处理器通过将所述更新数据存储到所述存储缓冲器中以供传播到第二节点来使所述更新数据传播到第二节点。
28.根据权利要求27所述的第一节点,
其中,将所述更新数据存储到所述存储缓冲器中以供传播到第二节点包括:
确定所述存储缓冲器是否包含目的地为第二主存储器的第二存储器位置的现有的更新数据;以及
响应于确定所述存储缓冲器包含目的地为第二主存储器的第二存储器位置的现有的更新数据,将所述更新数据与所述存储缓冲器中的现有的更新数据合并。
29.根据权利要求27所述的第一节点,
其中,所述第一节点还包括一组更新传播指令,所述更新传播指令能够是与所述特定执行线程有关的所述一组程序指令的一部分,或者与所述一组程序指令分离;
其中,所述一组更新传播指令在被第一处理器或第一节点上的另一个处理器执行时将使第一处理器或另一个处理器:
从所述存储缓冲器检索所述更新数据;以及
使所述更新数据传播到第二节点并且存储在第二主存储器的第二存储器位置内。
30.根据权利要求27所述的第一节点,
其中,所述第一节点还包括第一协处理器;
其中,所述第一节点还包括一组更新传播指令,所述更新传播指令能够是与所述特定执行线程有关的所述一组程序指令的一部分,或者与所述一组程序指令分离;
其中,所述一组更新传播指令在被第一处理器或第一节点上的另一个处理器执行时将使第一处理器或另一个处理器:
从所述存储缓冲器检索所述更新数据;
将一个或多个指令提供给第一协处理器,使得第一协处理器将所述更新数据传播到第二节点并且使得所述更新数据存储在第二节点的第二主存储器的第二存储器位置中;并且
其中,所述第一协处理器可操作为通过与第二节点上的第二协处理器进行交互以使所述更新数据传播到第二节点并且存储在第二主存储器的第二存储器位置内来对所述一个或多个指令做出响应。
31.根据权利要求27所述的第一节点,
其中,所述第二节点的第二主存储器中的第二存储器位置也镜像在第三节点的第三存储器中的第三存储器位置中;
其中,所述第一节点还包括一组更新传播指令,所述更新传播指令可以是与所述特定执行线程有关的所述一组程序指令的一部分,或者与所述一组程序指令分离;
其中,所述一组更新传播指令在被第一处理器或第一节点上的另一个处理器执行时将使第一处理器或另一个处理器:
从所述存储缓冲器检索所述更新数据;以及
使得:
所述更新数据传播到第二节点并且存储在第二主存储器的第二存储器位置内;以及
当前存储在第三节点的第三主存储器的第三存储器位置中的数据失效。
32.根据权利要求27所述的第一节点,
其中,所述第二节点的第二主存储器中的第二存储器位置也镜像在第三节点的第三主存储器中的第三存储器位置中;
其中,所述第一节点还包括第一协处理器;
其中,所述第一节点还包括一组更新传播指令,所述更新传播指令能够是与所述特定执行线程有关的所述一组程序指令的一部分,或者与所述一组程序指令分离;
其中,所述一组更新传播指令在被第一处理器或第一节点上的另一个处理器执行时将使第一处理器或另一个处理器:
从所述存储缓冲器检索所述更新数据;
使所述更新数据传播到第二节点并且存储在第二主存储器的
第二存储器位置内;以及
将一个或多个指令提供给第一协处理器,使得第一协处理器使当前存储在第三节点的第三主存储器的第三存储器位置中的数据失效;并且
其中,所述第一协处理器可操作为通过与第三节点上的第二协处理器进行交互以使当前存储在第三节点的第三主存储器的第三存储器位置中的数据失效来对所述一个或多个指令做出响应。
33.根据权利要求27所述的第一节点,
其中,所述第一节点还包括一组更新传播指令,所述更新传播指令能够是与所述特定执行线程有关的所述一组程序指令的一部分,或者与所述一组程序指令分离;
其中,所述一组更新传播指令在被第一处理器或第一节点上的另一个处理器执行时将使第一处理器或另一个处理器:
从所述存储缓冲器检索所述更新数据;并且
使得:
与第二节点的第二主存储器的第二存储器位置相关联的目录条目被锁定,其中,所述目录条目存储在第二节点上;
所述更新数据传播到第二节点并且存储在第二主存储器的第二存储器位置内;以及
所述目录条目被解锁。
34.根据权利要求27所述的第一节点,
其中,所述第二节点的第二主存储器中的第二存储器位置也镜像在第三节点的第三主存储器中的第三存储器位置中;
其中,所述第一节点还包括一组更新传播指令,所述更新传播指令能够是与所述特定执行线程有关的所述一组程序指令的一部分,或者与所述一组程序指令分离;
其中,所述一组更新传播指令在被第一处理器或第一节点上的另一个处理器执行时将使第一处理器或另一个处理器:
从所述存储缓冲器检索所述更新数据;并且
使得:
与第二节点的第二主存储器的第二存储器位置相关联的目录条目被锁定,其中,所述目录条目存储在第二节点上,并且其中,所述目录条目中的信息指示第三节点当前是第二主存储器的第二存储器位置的有效共享者;
所述更新数据传播到第二节点并且存储在第二主存储器的第二存储器位置内;
当前存储在第三节点的第三主存储器的第三存储器位置中的数据失效;
所述目录条目中的信息更新为使得所述信息不再指示第三节点为第二主存储器的第二存储器位置的有效共享者;以及
所述目录条目被解锁。
35.根据权利要求25所述的第一节点,
其中,所述俘获处理指令在被第一处理器执行时将进一步使得第一处理器:
将所述更新数据存储到第一主存储器的第一存储器位置中;并且
其中,所述俘获处理指令在被第一处理器执行时将使得第一处理器通过使得所述更新数据传播到第二节点并且存储在第二主存储器的第二存储器位置内来使所述更新数据传播到第二节点。
36.根据权利要求25所述的第一节点,
其中,所述俘获处理指令在被第一处理器执行时将进一步使第一处理器:
使得当前存储在第一主存储器的第一存储器位置中的数据失效;并且
其中,所述俘获处理指令在被第一处理器执行时将使第一处理器通过使所述更新数据传播到第二节点并且存储在第二主存储器的第二存储器位置内来使所述更新数据传播到第二节点。
37.一种在包括第一节点和第二节点的分布式系统中执行的方法,其中,所述第一节点具有第一主存储器,所述第二节点具有第二主存储器,所述方法由所述第二节点执行,所述方法包括:
将第一主存储器中的第一存储器位置中的一个或多个存储器地址映射到第二主存储器中的第二存储器位置中的一个或多个存储器地址;
由所述第二节点上的第一处理器执行将更新数据存储到第二主存储器的第二存储器位置中的存储指令,其中,所述存储指令是与特定执行线程有关的一组程序指令的一部分;
使所述存储指令俘获,这使第一处理器暂停执行所述一组程序指令并且开始执行一组俘获处理指令;
由所述第一处理器执行所述一组俘获处理指令,其中,执行所述一组俘获处理指令包括:
基于所述映射,将所述更新数据存储到第二主存储器的第二存储器位置中;以及
由所述第一处理器重新开始执行所述一组程序指令。
38.根据权利要求37所述的方法,还包括:
在执行所述一组俘获处理指令时,所述第一处理器:
使当前存储在第一主存储器的第一存储器位置中的数据失效。
39.根据权利要求37所述的方法,还包括:
在执行所述一组俘获处理指令时,所述第一处理器:
在将所述更新数据存储到第二主存储器的第二存储器位置中之前,访问并且锁定与第二主存储器的第二存储器位置相关联的目录条目;以及
在将所述更新数据存储到第二主存储器的第二存储器位置中之后,解锁所述目录条目。
40.根据权利要求37所述的方法,还包括:
在执行所述一组俘获处理指令时,所述第一处理器:
在将所述更新数据存储到第二主存储器的第二存储器位置中之前,访问并且锁定与第二主存储器的第二存储器位置相关联的目录条目,其中,所述目录条目中的信息指示第一节点当前是第二主存储器的第二存储器位置的有效共享者;
使当前存储在第一主存储器的第一存储器位置中的数据失效;
更新所述目录条目中的所述信息,以使得所述信息不再指示第一节点为第二主存储器的第二存储器位置的有效共享者;和
在将所述更新数据存储到第二主存储器的第二存储器位置中之后,解锁所述目录条目。
41.根据权利要求37所述的方法,还包括:
在执行所述一组俘获处理指令时,所述第一处理器:
将指示第二主存储器的第二存储器位置中的数据已经被更新的信息存储到缓冲器中;
第二处理器从所述缓冲器检索所述信息;并且
所述第二处理器使当前存储在第一主存储器的第一存储器位置中的数据失效;
其中,所述第二处理器能够为第一处理器或第二节点上的另一个处理器。
42.根据权利要求37所述的方法,还包括:
在执行所述一组俘获处理指令时,所述第一处理器:
将指示第二主存储器的第二存储器位置中的数据已经被更新的信息存储到缓冲器中;
第二处理器从所述缓冲器检索所述信息;
所述第二处理器访问并且锁定与第二主存储器的第二存储器位置相关联的目录条目,其中,所述目录条目中的信息指示第一节点当前是第二主存储器的第二存储器位置的有效共享者;
所述第二处理器使当前存储在第一主存储器的第一存储器位置中的数据失效;
所述第二处理器更新所述目录条目中的所述信息,以使得所述信息不再指示第一节点为第二主存储器的第二存储器位置的有效共享者;并且
所述第二处理器解锁所述目录条目;
其中,所述第二处理器能够为第一处理器或第二节点上的另一个处理器。
43.一种用于在包括第一节点和第二节点的分布式计算系统中使用的第二节点,所述第二节点包括:
第二主存储器,其中,所述第二主存储器中的第二存储器位置中的一个或多个存储器地址被映射到在第一节点上的第一主存储器中的第一存储器位置中的一个或多个存储器地址;
一组俘获处理指令;以及
包括第一处理器的一个或多个处理器,所述第一处理器可操作为执行将更新数据存储到第二主存储器的第二存储器位置中的存储指令,其中,所述存储指令是与特定执行线程有关的一组程序指令的一部分,并且其中,所述第一处理器包括电路系统,所述电路系统可操作为使所述存储指令俘获,这使第一处理器暂停执行所述一组程序指令并且开始执行所述一组俘获处理指令;并且
其中,所述一组俘获处理指令在被第一处理器执行时将使第一处理器:
基于所述映射将所述更新数据存储到第二主存储器的第二存储器位置中;以及
重新开始执行所述一组程序指令。
44.根据权利要求43所述的第二节点,
其中,所述俘获处理指令在被第一处理器执行时将进一步使第一处理器:
使当前存储在第一主存储器的第一存储器位置中的数据失效。
45.根据权利要求43所述的第二节点,
其中,所述俘获处理指令在被第一处理器执行时将进一步使第一处理器:
在将所述更新数据存储到第二主存储器的第二存储器位置中之前,访问并且锁定与第二主存储器的第二存储器位置相关联的目录条目;以及
在将所述更新数据存储到第二主存储器的第二存储器位置中之后,解锁所述目录条目。
46.根据权利要求43所述的第二节点,
其中,所述俘获处理指令在被第一处理器执行时将进一步使第一处理器:
在将所述更新数据存储到第二主存储器的第二存储器位置中之前,访问并且锁定与第二主存储器的第二存储器位置相关联的目录条目,其中,所述目录条目中的信息指示第一节点当前是第二主存储器的第二存储器位置的有效共享者;
使当前存储在第一主存储器的第一存储器位置中的数据失效;
更新所述目录条目中的所述信息,以使得所述信息不再指示第一节点为第二主存储器的第二存储器位置的有效共享者;以及
在将所述更新数据存储到第二主存储器的第二存储器位置中之后,解锁所述目录条目。
47.根据权利要求43所述的第二节点,
其中,所述第二节点还包括一组失效指令,所述失效指令能够是与所述特定执行线程有关的所述一组程序指令的一部分,或者与所述一组程序指令分离;
其中,所述俘获处理指令在被第一处理器执行时将进一步使第一处理器:
将指示第二主存储器的第二存储器位置中的数据已经被更新的信息存储到缓冲器中;并且
其中,所述一组失效指令在被第一处理器或第二节点上的另一处理器执行时将使第一处理器或另一个处理器:
从所述缓冲器检索所述信息;以及
使当前存储在第一主存储器的第一存储器位置中的数据失效。
48.根据权利要求43所述的第二节点,
其中,所述第二节点还包括一组失效指令,所述失效指令可以是与所述特定执行线程有关的所述一组程序指令的一部分,或者与所述一组程序指令分离;
其中,所述俘获处理指令在被第一处理器执行时将进一步使第一处理器:
将指示第二主存储器的第二存储器位置中的数据已经被更新的信息存储到缓冲器中;并且
其中,所述一组失效指令在被第一处理器或第二节点上的另一处理器执行时将使第一处理器或另一个处理器:
从所述缓冲器检索所述信息;
访问并且锁定与第二主存储器的第二存储器位置相关联的目录条目,其中,所述目录条目中的信息指示第一节点当前是第二主存储器的第二存储器位置的有效共享者;
使当前存储在第一主存储器的第一存储器位置中的数据失效;
更新所述目录条目中的所述信息,以使得所述信息不再指示第一节点为第二主存储器的第二存储器位置的有效共享者;以及
解锁所述目录条目。
CN201380057680.4A 2012-10-02 2013-09-30 分布式节点之间的存储器共享 Active CN104769591B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261709142P 2012-10-02 2012-10-02
US61/709,142 2012-10-02
US13/828,555 US10223116B2 (en) 2012-10-02 2013-03-14 Memory sharing across distributed nodes
US13/828,555 2013-03-14
PCT/US2013/062718 WO2014055443A1 (en) 2012-10-02 2013-09-30 Memory sharing across distributed nodes

Publications (2)

Publication Number Publication Date
CN104769591A CN104769591A (zh) 2015-07-08
CN104769591B true CN104769591B (zh) 2018-08-03

Family

ID=50386190

Family Applications (7)

Application Number Title Priority Date Filing Date
CN201380049301.7A Active CN104662534B (zh) 2012-10-02 2013-06-14 用于表扫描加速的硬件
CN201380049816.7A Active CN104662538B (zh) 2012-10-02 2013-06-14 半连接加速
CN201810434459.0A Active CN108664596B (zh) 2012-10-02 2013-06-14 用于表扫描加速的硬件
CN201380051875.8A Active CN104704491B (zh) 2012-10-02 2013-06-27 用于集群内通信的硬件消息队列
CN201380057680.4A Active CN104769591B (zh) 2012-10-02 2013-09-30 分布式节点之间的存储器共享
CN201380057937.6A Active CN104769561B (zh) 2012-10-02 2013-10-01 能够实现不同物理域地址空间的节点间的聚类的存储总线协议
CN201380051672.9A Active CN104756091B (zh) 2012-10-02 2013-10-01 基于远程密钥的存储器缓冲区访问控制机制

Family Applications Before (4)

Application Number Title Priority Date Filing Date
CN201380049301.7A Active CN104662534B (zh) 2012-10-02 2013-06-14 用于表扫描加速的硬件
CN201380049816.7A Active CN104662538B (zh) 2012-10-02 2013-06-14 半连接加速
CN201810434459.0A Active CN108664596B (zh) 2012-10-02 2013-06-14 用于表扫描加速的硬件
CN201380051875.8A Active CN104704491B (zh) 2012-10-02 2013-06-27 用于集群内通信的硬件消息队列

Family Applications After (2)

Application Number Title Priority Date Filing Date
CN201380057937.6A Active CN104769561B (zh) 2012-10-02 2013-10-01 能够实现不同物理域地址空间的节点间的聚类的存储总线协议
CN201380051672.9A Active CN104756091B (zh) 2012-10-02 2013-10-01 基于远程密钥的存储器缓冲区访问控制机制

Country Status (6)

Country Link
US (10) US9063974B2 (zh)
EP (6) EP2904513B1 (zh)
JP (1) JP6320393B2 (zh)
CN (7) CN104662534B (zh)
ES (1) ES2880268T3 (zh)
WO (6) WO2014055138A1 (zh)

Families Citing this family (131)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
WO2013001582A1 (en) * 2011-06-30 2013-01-03 Hitachi, Ltd. Computer system and access restriction method
US9792117B2 (en) 2011-12-08 2017-10-17 Oracle International Corporation Loading values from a value vector into subregisters of a single instruction multiple data register
US9697174B2 (en) 2011-12-08 2017-07-04 Oracle International Corporation Efficient hardware instructions for processing bit vectors for single instruction multiple data processors
US9342314B2 (en) 2011-12-08 2016-05-17 Oracle International Corporation Efficient hardware instructions for single instruction multiple data processors
EP2788902B1 (en) 2011-12-08 2019-04-17 Oracle International Corporation Techniques for more efficient usage of memory-to-cpu bandwidth
US10534606B2 (en) 2011-12-08 2020-01-14 Oracle International Corporation Run-length encoding decompression
US10157060B2 (en) 2011-12-29 2018-12-18 Intel Corporation Method, device and system for control signaling in a data path module of a data stream processing engine
US9087095B2 (en) * 2012-06-21 2015-07-21 International Business Machines Corporation Processing columns in a database accelerator while preserving row-based architecture
US9122873B2 (en) 2012-09-14 2015-09-01 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9063974B2 (en) * 2012-10-02 2015-06-23 Oracle International Corporation Hardware for table scan acceleration
US10102028B2 (en) 2013-03-12 2018-10-16 Sas Institute Inc. Delivery acknowledgment in event stream processing
US9679084B2 (en) 2013-03-14 2017-06-13 Oracle International Corporation Memory sharing across distributed nodes
CN104981814B (zh) * 2013-03-15 2018-08-14 英特尔公司 安全协处理器引导性能
US10108539B2 (en) * 2013-06-13 2018-10-23 International Business Machines Corporation Allocation of distributed data structures
WO2015015727A1 (ja) * 2013-07-30 2015-02-05 日本電気株式会社 ストレージ装置、データアクセス方法およびプログラム記録媒体
US9836519B2 (en) 2013-09-20 2017-12-05 Oracle International Corporation Densely grouping dimensional data
US9990398B2 (en) * 2013-09-20 2018-06-05 Oracle International Corporation Inferring dimensional metadata from content of a query
US9740718B2 (en) 2013-09-20 2017-08-22 Oracle International Corporation Aggregating dimensional data using dense containers
US9378232B2 (en) 2013-09-21 2016-06-28 Oracle International Corporation Framework for numa affinitized parallel query on in-memory objects within the RDBMS
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
US10558569B2 (en) * 2013-10-31 2020-02-11 Hewlett Packard Enterprise Development Lp Cache controller for non-volatile memory
US20150161678A1 (en) * 2013-12-05 2015-06-11 Turn Inc. Dynamic ordering of online advertisement software steps
US9313029B2 (en) * 2013-12-15 2016-04-12 Cavium, Inc. Virtualized network interface for remote direct memory access over converged ethernet
US9306916B2 (en) * 2013-12-25 2016-04-05 Cavium, Inc. System and a method for a remote direct memory access over converged ethernet
US9898414B2 (en) 2014-03-28 2018-02-20 Oracle International Corporation Memory corruption detection support for distributed shared memory applications
DE102014207476A1 (de) * 2014-04-17 2015-10-22 Robert Bosch Gmbh Verfahren zur Auswahl einer von mehreren Warteschlangen
US9715345B2 (en) * 2014-04-25 2017-07-25 Micron Technology, Inc. Apparatuses and methods for memory management
US10838893B2 (en) * 2014-05-30 2020-11-17 Apple Inc. Methods for mitigating system interrupts for an electronic device
US9122651B1 (en) 2014-06-06 2015-09-01 Sas Institute Inc. Computer system to support failover in an event stream processing system
US9356986B2 (en) * 2014-08-08 2016-05-31 Sas Institute Inc. Distributed stream processing
US10230531B2 (en) * 2014-10-23 2019-03-12 Hewlett Packard Enterprise Development Lp Admissions control of a device
US10715332B2 (en) 2014-10-30 2020-07-14 Hewlett Packard Enterprise Development Lp Encryption for transactions in a memory fabric
WO2016068941A1 (en) 2014-10-30 2016-05-06 Hewlett Packard Enterprise Development Lp Secure transactions in a memory fabric
US9678812B2 (en) 2014-12-22 2017-06-13 International Business Machines Corporation Addressing for inter-thread push communication
US9766890B2 (en) * 2014-12-23 2017-09-19 International Business Machines Corporation Non-serialized push instruction for pushing a message payload from a sending thread to a receiving thread
US10255336B2 (en) 2015-05-07 2019-04-09 Datometry, Inc. Method and system for transparent interoperability between applications and data management systems
US9749319B2 (en) 2015-05-20 2017-08-29 Google Inc. Address validation using signatures
US11449452B2 (en) 2015-05-21 2022-09-20 Goldman Sachs & Co. LLC General-purpose parallel computing architecture
JP6816027B2 (ja) * 2015-05-21 2021-01-20 ゴールドマン サックス アンド カンパニー エルエルシー 多目的の並列処理アーキテクチャ
US10025822B2 (en) 2015-05-29 2018-07-17 Oracle International Corporation Optimizing execution plans for in-memory-aware joins
US10594779B2 (en) 2015-08-27 2020-03-17 Datometry, Inc. Method and system for workload management for data management systems
US9990308B2 (en) 2015-08-31 2018-06-05 Oracle International Corporation Selective data compression for in-memory databases
JP6515771B2 (ja) * 2015-10-07 2019-05-22 富士通コネクテッドテクノロジーズ株式会社 並列処理装置及び並列処理方法
US9823871B2 (en) 2015-10-09 2017-11-21 Oracle International Corporation Performance of coprocessor assisted memset() through heterogeneous computing
US10642831B2 (en) 2015-10-23 2020-05-05 Oracle International Corporation Static data caching for queries with a clause that requires multiple iterations to execute
US10678792B2 (en) 2015-10-23 2020-06-09 Oracle International Corporation Parallel execution of queries with a recursive clause
US10783142B2 (en) 2015-10-23 2020-09-22 Oracle International Corporation Efficient data retrieval in staged use of in-memory cursor duration temporary tables
CN105426271B (zh) * 2015-12-22 2018-09-21 华为技术有限公司 对分布式存储系统的锁管理的方法和装置
US10146681B2 (en) 2015-12-24 2018-12-04 Intel Corporation Non-uniform memory access latency adaptations to achieve bandwidth quality of service
CN105677812A (zh) * 2015-12-31 2016-06-15 华为技术有限公司 一种数据查询方法及数据查询装置
US10061832B2 (en) 2016-11-28 2018-08-28 Oracle International Corporation Database tuple-encoding-aware data partitioning in a direct memory access engine
US10061714B2 (en) 2016-03-18 2018-08-28 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multicore processors
US10402425B2 (en) 2016-03-18 2019-09-03 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multi-core processors
US10055358B2 (en) 2016-03-18 2018-08-21 Oracle International Corporation Run length encoding aware direct memory access filtering engine for scratchpad enabled multicore processors
US10599488B2 (en) 2016-06-29 2020-03-24 Oracle International Corporation Multi-purpose events for notification and sequence control in multi-core processor systems
US10853125B2 (en) * 2016-08-19 2020-12-01 Oracle International Corporation Resource efficient acceleration of datastream analytics processing using an analytics accelerator
CN106354480B (zh) * 2016-08-24 2019-01-29 长沙中部芯空微电子研究所有限公司 一种mpp型异构高速mcu系统
US10380058B2 (en) 2016-09-06 2019-08-13 Oracle International Corporation Processor core to coprocessor interface with FIFO semantics
US10558659B2 (en) 2016-09-16 2020-02-11 Oracle International Corporation Techniques for dictionary based join and aggregation
US10402168B2 (en) 2016-10-01 2019-09-03 Intel Corporation Low energy consumption mantissa multiplication for floating point multiply-add operations
US10783102B2 (en) 2016-10-11 2020-09-22 Oracle International Corporation Dynamically configurable high performance database-aware hash engine
US10459859B2 (en) 2016-11-28 2019-10-29 Oracle International Corporation Multicast copy ring for database direct memory access filtering engine
US10176114B2 (en) 2016-11-28 2019-01-08 Oracle International Corporation Row identification number generation in database direct memory access engine
US10725947B2 (en) 2016-11-29 2020-07-28 Oracle International Corporation Bit vector gather row count calculation and handling in direct memory access engine
US10416999B2 (en) 2016-12-30 2019-09-17 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10558575B2 (en) 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10572376B2 (en) 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
US10474375B2 (en) 2016-12-30 2019-11-12 Intel Corporation Runtime address disambiguation in acceleration hardware
US10606487B2 (en) * 2017-03-17 2020-03-31 International Business Machines Corporation Partitioned memory with locally aggregated copy pools
US20180373760A1 (en) * 2017-06-23 2018-12-27 Xilinx, Inc. Parallel compute offload to database accelerator
US10467183B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods for pipelined runtime services in a spatial array
US10387319B2 (en) 2017-07-01 2019-08-20 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
US10469397B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods with configurable network-based dataflow operator circuits
US10445234B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10445451B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US10515049B1 (en) 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
CN107835203B (zh) * 2017-08-09 2020-07-10 平安壹钱包电子商务有限公司 消息分组投递的方法、装置、存储介质及终端
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US10496574B2 (en) 2017-09-28 2019-12-03 Intel Corporation Processors, methods, and systems for a memory fence in a configurable spatial accelerator
US11086876B2 (en) 2017-09-29 2021-08-10 Oracle International Corporation Storing derived summaries on persistent memory of a storage device
US10380063B2 (en) 2017-09-30 2019-08-13 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator
US10445098B2 (en) * 2017-09-30 2019-10-15 Intel Corporation Processors and methods for privileged configuration in a spatial array
US10664396B2 (en) * 2017-10-04 2020-05-26 Intel Corporation Systems, methods and apparatus for fabric delta merge operations to enhance NVMeoF stream writes
CN107766526B (zh) * 2017-10-26 2020-04-28 中国人民银行清算总中心 数据库访问方法、装置及系统
CN107886692B (zh) * 2017-10-30 2020-08-25 皖西学院 一种生物工程用传感器LoRa无线网络通讯系统
US10452547B2 (en) 2017-12-29 2019-10-22 Oracle International Corporation Fault-tolerant cache coherence over a lossy network
US10467139B2 (en) 2017-12-29 2019-11-05 Oracle International Corporation Fault-tolerant cache coherence over a lossy network
US10417175B2 (en) 2017-12-30 2019-09-17 Intel Corporation Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
US10565134B2 (en) 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast in a configurable spatial accelerator
US10445250B2 (en) 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with a configurable spatial accelerator
CN110110004B (zh) * 2018-01-30 2023-05-30 腾讯科技(深圳)有限公司 一种数据操作方法、装置和存储介质
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10564980B2 (en) 2018-04-03 2020-02-18 Intel Corporation Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator
US10649777B2 (en) * 2018-05-14 2020-05-12 International Business Machines Corporation Hardware-based data prefetching based on loop-unrolled instructions
CN108776934B (zh) * 2018-05-15 2022-06-07 中国平安人寿保险股份有限公司 分布式数据计算方法、装置、计算机设备及可读存储介质
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US10459866B1 (en) 2018-06-30 2019-10-29 Intel Corporation Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator
EP3846026A4 (en) * 2018-09-21 2021-11-03 Huawei Technologies Co., Ltd. DATA EXTRACTION PROCESS AND DEVICE
CN111399905B (zh) * 2019-01-02 2022-08-16 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
JP7146611B2 (ja) * 2018-12-18 2022-10-04 株式会社日立製作所 カラムストアデータベースシステム及びデータベース処理高速化方法
US11436213B1 (en) 2018-12-19 2022-09-06 Datometry, Inc. Analysis of database query logs
US11294869B1 (en) 2018-12-19 2022-04-05 Datometry, Inc. Expressing complexity of migration to a database candidate
US11403282B1 (en) 2018-12-20 2022-08-02 Datometry, Inc. Unbatching database queries for migration to a different database
US10678724B1 (en) 2018-12-29 2020-06-09 Intel Corporation Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US10965536B2 (en) 2019-03-30 2021-03-30 Intel Corporation Methods and apparatus to insert buffers in a dataflow graph
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US11029927B2 (en) 2019-03-30 2021-06-08 Intel Corporation Methods and apparatus to detect and annotate backedges in a dataflow graph
WO2020214757A1 (en) * 2019-04-17 2020-10-22 John Rankin Virtual memory pool within a network which is accessible from multiple platforms
CN110113395B (zh) * 2019-04-19 2021-11-09 新华三云计算技术有限公司 共享文件系统维护方法及装置
WO2020243244A1 (en) 2019-05-28 2020-12-03 John Rankin Supporting a virtual memory area at a remote computing machine
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
EP4004758A1 (en) * 2019-07-31 2022-06-01 Sindice Limited t/a Siren Semantic caching of semi-join operators in shared-nothing and log-structured databases
US11222018B2 (en) 2019-09-09 2022-01-11 Oracle International Corporation Cache conscious techniques for generation of quasi-dense grouping codes of compressed columnar data in relational database systems
US20210109974A1 (en) * 2019-10-13 2021-04-15 Thoughtspot, Inc. Query Execution On Compressed In-Memory Data
CN111061760B (zh) * 2019-10-30 2020-12-15 中科驭数(北京)科技有限公司 关系型数据库管理系统中的窗口聚合方法、查询方法及装置
US11907713B2 (en) 2019-12-28 2024-02-20 Intel Corporation Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator
US11755355B2 (en) 2020-11-25 2023-09-12 Nxp Usa, Inc. Systems and methods for assigning domain identifiers to remote peripheral devices using a hypervisor
US20220166762A1 (en) * 2020-11-25 2022-05-26 Microsoft Technology Licensing, Llc Integrated circuit for obtaining enhanced privileges for a network-based resource and performing actions in accordance therewith
US20220382760A1 (en) * 2021-06-01 2022-12-01 Alibaba Singapore Holding Private Limited High-performance key-value store
US11755427B2 (en) 2021-06-01 2023-09-12 Alibaba Singapore Holding Private Limited Fast recovery and replication of key-value stores
US11741073B2 (en) 2021-06-01 2023-08-29 Alibaba Singapore Holding Private Limited Granularly timestamped concurrency control for key-value store
US11829291B2 (en) 2021-06-01 2023-11-28 Alibaba Singapore Holding Private Limited Garbage collection of tree structure with page mappings
CN113342480B (zh) * 2021-06-23 2022-02-22 海光信息技术股份有限公司 一种事务处理系统、事务处理方法及主机系统
CN113420033B (zh) * 2021-08-17 2021-12-07 北京奥星贝斯科技有限公司 分布式数据库的表数据查询方法、表数据查询装置及系统
US20230205935A1 (en) * 2021-12-28 2023-06-29 Ati Technologies Ulc Software assisted acceleration in cryptographic queue processing
US11927634B2 (en) 2022-04-01 2024-03-12 Samsung Electronics Co., Ltd Systems and methods for database scan acceleration

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102112962A (zh) * 2008-07-31 2011-06-29 微软公司 用于大规模数据存储的高效的基于列的数据编码
CN102171695A (zh) * 2008-10-05 2011-08-31 微软公司 用于基于列的数据编码的结构的查询的高效大规模联接

Family Cites Families (136)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE34052E (en) 1984-05-31 1992-09-01 International Business Machines Corporation Data processing system with CPU register to register data transfers overlapped with data transfer to and from main storage
US4817140A (en) 1986-11-05 1989-03-28 International Business Machines Corp. Software protection system using a single-key cryptosystem, a hardware-based authorization system and a secure coprocessor
US5133053A (en) * 1987-02-13 1992-07-21 International Business Machines Corporation Interprocess communication queue location transparency
US5604899A (en) 1990-05-21 1997-02-18 Financial Systems Technology Pty. Ltd. Data relationships processor with unlimited expansion capability
US5423010A (en) 1992-01-24 1995-06-06 C-Cube Microsystems Structure and method for packing and unpacking a stream of N-bit data to and from a stream of N-bit data words
US5483624A (en) * 1992-03-27 1996-01-09 Monarch Marking Systems, Inc. Programmable hand held labeler
JPH0619785A (ja) * 1992-03-27 1994-01-28 Matsushita Electric Ind Co Ltd 分散共有仮想メモリーとその構成方法
EP0629960B1 (en) 1993-06-17 2000-05-24 Sun Microsystems, Inc. Extendible file system
US5581705A (en) * 1993-12-13 1996-12-03 Cray Research, Inc. Messaging facility with hardware tail pointer and software implemented head pointer message queue for distributed memory massively parallel processing system
US5564056A (en) * 1994-03-01 1996-10-08 Intel Corporation Method and apparatus for zero extension and bit shifting to preserve register parameters in a microprocessor utilizing register renaming
DE19515020A1 (de) * 1994-07-01 1996-01-04 Hewlett Packard Co Verfahren und Vorrichtung zum Optimieren von Abfragen mit Gruppieren-nach-Operatoren
JP3518034B2 (ja) 1995-03-30 2004-04-12 三菱電機株式会社 ソート方法並びにソート処理装置並びにデータ処理装置
US5684977A (en) 1995-03-31 1997-11-04 Sun Microsystems, Inc. Writeback cancellation processing system for use in a packet switched cache coherent multiprocessor system
CA2146171C (en) 1995-04-03 2000-01-11 Bernhard Schiefer Method for estimating cardinalities for query processing in a relational database management system
KR0175499B1 (ko) 1996-09-11 1999-04-01 양승택 다중태그 구조의 계층 상호연결망에서의 브로드캐스트 전송방법
JPH10154160A (ja) * 1996-09-25 1998-06-09 Sharp Corp 並列データ検索処理装置
US6148377A (en) 1996-11-22 2000-11-14 Mangosoft Corporation Shared memory computer networks
JPH10232788A (ja) * 1996-12-17 1998-09-02 Fujitsu Ltd 信号処理装置及びソフトウェア
US6151688A (en) 1997-02-21 2000-11-21 Novell, Inc. Resource management in a clustered computer system
US5822748A (en) * 1997-02-28 1998-10-13 Oracle Corporation Group by and distinct sort elimination using cost-based optimization
US6047081A (en) 1997-10-24 2000-04-04 Imation Corp. Image processing software system having configurable communication pipelines
US6292705B1 (en) 1998-09-29 2001-09-18 Conexant Systems, Inc. Method and apparatus for address transfers, system serialization, and centralized cache and transaction control, in a symetric multiprocessor system
US20010049780A1 (en) 1998-03-27 2001-12-06 Shreekant Thakkar Method and apparatus for performing integer operations in response to a result of a floating point operation
US6230240B1 (en) 1998-06-23 2001-05-08 Hewlett-Packard Company Storage management system and auto-RAID transaction manager for coherent memory map across hot plug interface
WO2000008552A1 (en) 1998-08-06 2000-02-17 Koninklijke Philips Electronics N.V. Data processor and method of processing data
JP3583657B2 (ja) * 1998-09-30 2004-11-04 株式会社東芝 中継装置及び通信装置
US6633891B1 (en) 1998-11-24 2003-10-14 Oracle International Corporation Managing replacement of data in a cache on a node based on caches of other nodes
US6434545B1 (en) * 1998-12-16 2002-08-13 Microsoft Corporation Graphical query analyzer
JP2000261674A (ja) 1999-03-09 2000-09-22 Fujitsu Ltd 画像伸長装置
US6295571B1 (en) 1999-03-19 2001-09-25 Times N Systems, Inc. Shared memory apparatus and method for multiprocessor systems
US6826522B1 (en) 1999-06-21 2004-11-30 Pts Corporation Methods and apparatus for improved efficiency in pipeline simulation and emulation
US6349310B1 (en) * 1999-07-06 2002-02-19 Compaq Computer Corporation Database management system and method for accessing rows in a partitioned table
US6671797B1 (en) 2000-02-18 2003-12-30 Texas Instruments Incorporated Microprocessor with expand instruction for forming a mask from one bit
US6697919B2 (en) 2000-06-10 2004-02-24 Hewlett-Packard Development Company, L.P. System and method for limited fanout daisy chaining of cache invalidation requests in a shared-memory multiprocessor system
US7383424B1 (en) * 2000-06-15 2008-06-03 Hewlett-Packard Development Company, L.P. Computer architecture containing processor and decoupled coprocessor
WO2002019125A1 (en) 2000-08-14 2002-03-07 Lee Jae Hak The multi-functional pda
US6898693B1 (en) * 2000-11-02 2005-05-24 Intel Corporation Hardware loops
US6917987B2 (en) * 2001-03-26 2005-07-12 Intel Corporation Methodology and mechanism for remote key validation for NGIO/InfiniBand™ applications
US6745174B2 (en) 2001-03-29 2004-06-01 Hewlett-Packard Development Company, L.P. Method of executing before-triggers in an active database
US7013353B2 (en) 2001-03-30 2006-03-14 Intel Corporation Host-fabric adapter having an efficient multi-tasking pipelined instruction execution micro-controller subsystem
US20020188830A1 (en) 2001-06-01 2002-12-12 Brian Boles Bit replacement and extraction instructions
US6789143B2 (en) 2001-09-24 2004-09-07 International Business Machines Corporation Infiniband work and completion queue management via head and tail circular buffers with indirect work queue entries
US6748499B2 (en) * 2001-11-15 2004-06-08 International Business Machines Corporation Sharing memory tables between host channel adapters
US6854032B2 (en) 2001-12-04 2005-02-08 Sun Microsystems, Inc. System for accessing a region of memory using remote address translation and using a memory window table and a memory region table
US6757790B2 (en) 2002-02-19 2004-06-29 Emc Corporation Distributed, scalable data storage facility with cache memory
JP2003308334A (ja) * 2002-04-15 2003-10-31 Nippon Telegr & Teleph Corp <Ntt> 情報検索方法及び装置、情報検索プログラム、情報検索プログラムを記録した記録媒体
US7249118B2 (en) 2002-05-17 2007-07-24 Aleri, Inc. Database system and methods
US7197647B1 (en) 2002-09-30 2007-03-27 Carnegie Mellon University Method of securing programmable logic configuration data
US6842848B2 (en) 2002-10-11 2005-01-11 Sandbridge Technologies, Inc. Method and apparatus for token triggered multithreading
US20060098649A1 (en) * 2004-11-10 2006-05-11 Trusted Network Technologies, Inc. System, apparatuses, methods, and computer-readable media for determining security realm identity before permitting network connection
US7730292B2 (en) 2003-03-31 2010-06-01 Hewlett-Packard Development Company, L.P. Parallel subword instructions for directing results to selected subword locations of data processor result register
US20040260182A1 (en) 2003-06-23 2004-12-23 Zuluaga Andres F. Intraluminal spectroscope with wall contacting probe
US7006021B1 (en) * 2003-06-27 2006-02-28 Cypress Semiconductor Corp. Low power serializer circuit and method
US7047252B2 (en) 2003-12-02 2006-05-16 Oracle International Corporation Complex computation across heterogenous computer systems
US7664938B1 (en) 2004-01-07 2010-02-16 Xambala Corporation Semantic processor systems and methods
US7698552B2 (en) * 2004-06-03 2010-04-13 Intel Corporation Launching a secure kernel in a multiprocessor system
JP2006004274A (ja) * 2004-06-18 2006-01-05 Nippon Telegr & Teleph Corp <Ntt> 対話処理装置、対話処理方法及び対話処理プログラム
US7516121B2 (en) * 2004-06-23 2009-04-07 Oracle International Corporation Efficient evaluation of queries using translation
US20060075236A1 (en) * 2004-09-30 2006-04-06 Marek James A Method and apparatus for high assurance processing
US20060095690A1 (en) 2004-10-29 2006-05-04 International Business Machines Corporation System, method, and storage medium for shared key index space for memory regions
US7814104B2 (en) 2005-05-04 2010-10-12 Oracle International Corporation Techniques for partition pruning
US7725595B1 (en) * 2005-05-24 2010-05-25 The United States Of America As Represented By The Secretary Of The Navy Embedded communications system and method
US7877379B2 (en) * 2005-09-30 2011-01-25 Oracle International Corporation Delaying evaluation of expensive expressions in a query
US8817029B2 (en) 2005-10-26 2014-08-26 Via Technologies, Inc. GPU pipeline synchronization and control system and method
GB0524720D0 (en) * 2005-12-05 2006-01-11 Imec Inter Uni Micro Electr Ultra low power ASIP architecture II
US7861060B1 (en) 2005-12-15 2010-12-28 Nvidia Corporation Parallel data processing systems and methods using cooperative thread arrays and thread identifier values to determine processing behavior
US8024797B2 (en) * 2005-12-21 2011-09-20 Intel Corporation Method, apparatus and system for performing access control and intrusion detection on encrypted data
US8255922B1 (en) 2006-01-09 2012-08-28 Oracle America, Inc. Mechanism for enabling multiple processes to share physical memory
US8049760B2 (en) 2006-02-06 2011-11-01 Via Technologies, Inc. System and method for vector computations in arithmetic logic units (ALUs)
US20080010417A1 (en) * 2006-04-28 2008-01-10 Zeffer Hakan E Read/Write Permission Bit Support for Efficient Hardware to Software Handover
US7509460B2 (en) * 2006-05-04 2009-03-24 Sun Microsystems, Inc. DRAM remote access cache in local memory in a distributed shared memory system
US7783862B2 (en) 2006-08-07 2010-08-24 International Characters, Inc. Method and apparatus for an inductive doubling architecture
US20080065835A1 (en) * 2006-09-11 2008-03-13 Sun Microsystems, Inc. Offloading operations for maintaining data coherence across a plurality of nodes
US8533216B2 (en) 2006-10-30 2013-09-10 Teradata Us, Inc. Database system workload management method and system
US7660793B2 (en) 2006-11-13 2010-02-09 Exegy Incorporated Method and system for high performance integration, processing and searching of structured and unstructured data using coprocessors
EP2092419B1 (en) * 2006-11-13 2020-01-01 IP Reservoir, LLC Method and system for high performance data metatagging and data indexing using coprocessors
US20080162876A1 (en) 2006-12-28 2008-07-03 International Business Machines Corporation dedicated hardware processor for structured query language (sql) transactions
US8504791B2 (en) 2007-01-26 2013-08-06 Hicamp Systems, Inc. Hierarchical immutable content-addressable memory coprocessor
US7792822B2 (en) * 2007-03-02 2010-09-07 Microsoft Corporation Systems and methods for modeling partitioned tables as logical indexes
US7769729B2 (en) 2007-05-21 2010-08-03 Sap Ag Block compression of tables with repeated values
US8032499B2 (en) 2007-05-21 2011-10-04 Sap Ag Compression of tables based on occurrence of values
US20090037700A1 (en) 2007-07-30 2009-02-05 Clear Falls Pty Ltd Method and system for reactively assigning computational threads of control between processors
US7882210B2 (en) 2007-08-02 2011-02-01 Sap Ag Dynamic agent formation for efficient data provisioning
US8269838B2 (en) * 2007-09-05 2012-09-18 Tohoku University Solid-state image sensor and imaging device
US8543534B2 (en) 2007-09-11 2013-09-24 Oracle International Corporation Concurrency in event processing networks for event server
EP2040180B1 (en) 2007-09-24 2019-01-16 Hasso-Plattner-Institut für Digital Engineering gGmbH ETL-less zero-redundancy system and method for reporting OLTP data
CN100495404C (zh) * 2007-11-22 2009-06-03 中国人民解放军国防科学技术大学 基于流处理的生物序列数据库搜索多层次加速方法
US7991794B2 (en) 2007-12-18 2011-08-02 Oracle International Corporation Pipelining operations involving DML and query
CN101227689B (zh) * 2007-12-27 2011-01-19 华为技术有限公司 信息上报方法及装置
US7769726B2 (en) 2007-12-31 2010-08-03 Sap, Ag Method for verification of data and metadata in a data repository
US8258952B2 (en) * 2008-03-14 2012-09-04 The Invention Science Fund I, Llc System for treating at least one plant including a treatment apparatus and an electronic tag interrogator
US8732386B2 (en) 2008-03-20 2014-05-20 Sandisk Enterprise IP LLC. Sharing data fabric for coherent-distributed caching of multi-node shared-distributed flash memory
US8229945B2 (en) 2008-03-20 2012-07-24 Schooner Information Technology, Inc. Scalable database management software on a cluster of nodes using a shared-distributed flash memory
US20090289861A1 (en) * 2008-05-20 2009-11-26 Infineon Technologies Ag Radio frequency communication devices and methods
JP2010003266A (ja) * 2008-06-23 2010-01-07 Nippon Telegr & Teleph Corp <Ntt> クエリ生成装置及び方法及びプログラム及びコンピュータ読取可能な記録媒体
US8271564B2 (en) * 2008-07-14 2012-09-18 Symbol Technologies, Inc. Lookup table arrangement and related management method for accommodating concurrent processors
US8626725B2 (en) * 2008-07-31 2014-01-07 Microsoft Corporation Efficient large-scale processing of column based data encoded structures
US8275815B2 (en) 2008-08-25 2012-09-25 International Business Machines Corporation Transactional processing for clustered file systems
US8725707B2 (en) 2009-03-26 2014-05-13 Hewlett-Packard Development Company, L.P. Data continuous SQL process
US8935223B2 (en) 2009-04-30 2015-01-13 Oracle International Corporation Structure of hierarchical compressed data structure for tabular data
US8285709B2 (en) 2009-05-12 2012-10-09 Teradata Us, Inc. High-concurrency query operator and method
US9304767B2 (en) * 2009-06-02 2016-04-05 Oracle America, Inc. Single cycle data movement between general purpose and floating-point registers
US8789173B2 (en) * 2009-09-03 2014-07-22 Juniper Networks, Inc. Protecting against distributed network flood attacks
US8356185B2 (en) * 2009-10-08 2013-01-15 Oracle America, Inc. Apparatus and method for local operand bypassing for cryptographic instructions
US8832142B2 (en) 2010-08-30 2014-09-09 Oracle International Corporation Query and exadata support for hybrid columnar compressed data
US8868508B2 (en) * 2010-02-09 2014-10-21 Google Inc. Storage of data in a distributed storage system
US8270967B1 (en) * 2010-02-09 2012-09-18 Sprint Spectrum, L.P. Overriding a most-recently-used (MRU) table for system acquisition
US8856593B2 (en) 2010-04-12 2014-10-07 Sandisk Enterprise Ip Llc Failure recovery using consensus replication in a distributed flash memory system
US8516268B2 (en) 2010-08-23 2013-08-20 Raytheon Company Secure field-programmable gate array (FPGA) architecture
CN101944077B (zh) * 2010-09-02 2011-10-19 东莞市泰斗微电子科技有限公司 一种主处理器和协处理器之间的通讯接口及其控制方法
CN201804331U (zh) * 2010-09-21 2011-04-20 北京同有飞骥科技股份有限公司 一种基于协处理器的重复数据删除系统
US8260803B2 (en) * 2010-09-23 2012-09-04 Hewlett-Packard Development Company, L.P. System and method for data stream processing
US8938644B2 (en) 2010-12-03 2015-01-20 Teradata Us, Inc. Query execution plan revision for error recovery
US8972746B2 (en) 2010-12-17 2015-03-03 Intel Corporation Technique for supporting multiple secure enclaves
FR2969156B1 (fr) 2010-12-21 2013-02-08 Chryso Polymere comportant une fonction hydrolysable utilisable comme fluidifiant
US8996463B2 (en) 2012-07-26 2015-03-31 Mongodb, Inc. Aggregation framework system architecture and method
US8666970B2 (en) * 2011-01-20 2014-03-04 Accenture Global Services Limited Query plan enhancement
JP5971635B2 (ja) * 2011-01-25 2016-08-17 エヌエックスピー カナダ インコーポレイテッド ベクトルユニット共有の装置および方法
US20120303633A1 (en) 2011-05-26 2012-11-29 International Business Machines Corporation Systems and methods for querying column oriented databases
CN102184365B (zh) * 2011-06-07 2013-05-29 郑州信大捷安信息技术股份有限公司 基于SoC芯片外部数据安全存储系统及存取控制方法
US8756363B2 (en) 2011-07-07 2014-06-17 Oracle International Corporation Efficient storage of memory version data
US8572441B2 (en) 2011-08-05 2013-10-29 Oracle International Corporation Maximizing encodings of version control bits for memory corruption detection
US8601473B1 (en) 2011-08-10 2013-12-03 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment
US9792117B2 (en) 2011-12-08 2017-10-17 Oracle International Corporation Loading values from a value vector into subregisters of a single instruction multiple data register
US9342314B2 (en) 2011-12-08 2016-05-17 Oracle International Corporation Efficient hardware instructions for single instruction multiple data processors
EP2788902B1 (en) 2011-12-08 2019-04-17 Oracle International Corporation Techniques for more efficient usage of memory-to-cpu bandwidth
US9697174B2 (en) 2011-12-08 2017-07-04 Oracle International Corporation Efficient hardware instructions for processing bit vectors for single instruction multiple data processors
CN104126166A (zh) 2011-12-23 2014-10-29 英特尔公司 用于执行使用掩码的向量打包一元编码的系统、装置和方法
US9454507B2 (en) 2011-12-23 2016-09-27 Intel Corporation Systems, apparatuses, and methods for performing a conversion of a writemask register to a list of index values in a vector register
WO2014033606A2 (en) 2012-08-31 2014-03-06 Pradeep Varma Systems and methods of memory and access management
US9063974B2 (en) 2012-10-02 2015-06-23 Oracle International Corporation Hardware for table scan acceleration
US8930316B2 (en) 2012-10-15 2015-01-06 Oracle International Corporation System and method for providing partition persistent state consistency in a distributed data grid
US9043559B2 (en) 2012-10-23 2015-05-26 Oracle International Corporation Block memory engine with memory corruption detection
US9244829B2 (en) * 2012-12-20 2016-01-26 Oracle International Corporation Method and system for efficient memory region deallocation
US9471590B2 (en) * 2013-02-12 2016-10-18 Atlantis Computing, Inc. Method and apparatus for replicating virtual machine images using deduplication metadata
US9898414B2 (en) 2014-03-28 2018-02-20 Oracle International Corporation Memory corruption detection support for distributed shared memory applications

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102112962A (zh) * 2008-07-31 2011-06-29 微软公司 用于大规模数据存储的高效的基于列的数据编码
CN102171695A (zh) * 2008-10-05 2011-08-31 微软公司 用于基于列的数据编码的结构的查询的高效大规模联接

Also Published As

Publication number Publication date
CN104662538A (zh) 2015-05-27
EP2904521B1 (en) 2018-10-24
CN104769561A (zh) 2015-07-08
US20140095805A1 (en) 2014-04-03
US20140095748A1 (en) 2014-04-03
JP2015535999A (ja) 2015-12-17
EP2904514B1 (en) 2020-03-25
US10055224B2 (en) 2018-08-21
US20150261871A1 (en) 2015-09-17
CN104662538B (zh) 2018-05-18
CN104756091A (zh) 2015-07-01
EP2904515A1 (en) 2015-08-12
WO2014055137A1 (en) 2014-04-10
WO2014055443A1 (en) 2014-04-10
US10223116B2 (en) 2019-03-05
US9063974B2 (en) 2015-06-23
US20140095651A1 (en) 2014-04-03
US9372813B2 (en) 2016-06-21
CN104756091B (zh) 2018-02-23
EP2904499A1 (en) 2015-08-12
EP2904513A1 (en) 2015-08-12
CN104704491A (zh) 2015-06-10
JP6320393B2 (ja) 2018-05-09
US9251272B2 (en) 2016-02-02
US20140096145A1 (en) 2014-04-03
US9542443B2 (en) 2017-01-10
US20140095468A1 (en) 2014-04-03
EP2904515B1 (en) 2021-05-12
EP2904513B1 (en) 2021-04-07
CN108664596B (zh) 2021-07-27
US9158810B2 (en) 2015-10-13
US9292569B2 (en) 2016-03-22
WO2014055138A1 (en) 2014-04-10
US20140095534A1 (en) 2014-04-03
EP2904521A1 (en) 2015-08-12
CN104662534B (zh) 2018-05-25
EP2904500B1 (en) 2020-08-19
WO2014055145A1 (en) 2014-04-10
EP2904500A1 (en) 2015-08-12
WO2014055512A1 (en) 2014-04-10
EP2904499B1 (en) 2020-04-22
US20160098364A1 (en) 2016-04-07
US20150026434A1 (en) 2015-01-22
US9400821B2 (en) 2016-07-26
US20140095810A1 (en) 2014-04-03
CN108664596A (zh) 2018-10-16
ES2880268T3 (es) 2021-11-24
CN104704491B (zh) 2018-04-10
CN104769591A (zh) 2015-07-08
CN104769561B (zh) 2018-01-12
EP2904514A1 (en) 2015-08-12
WO2014055526A1 (en) 2014-04-10
US9557997B2 (en) 2017-01-31
CN104662534A (zh) 2015-05-27

Similar Documents

Publication Publication Date Title
CN104769591B (zh) 分布式节点之间的存储器共享
US10474636B2 (en) Block allocation for low latency file systems
CN106537863B (zh) 用于并发地处理网络分组的方法和设备
CA2517156C (en) System and method for dynamic ordering in a network processor
US10140312B2 (en) Low latency distributed storage service
WO2019231689A1 (en) Multi-protocol cloud storage for big data and analytics
US20190392053A1 (en) Hierarchical namespace with strong consistency and horizontal scalability
CN108369507A (zh) 用于使用存储器中处理来处理指令的方法和设备
CN110447021A (zh) 用于在数据中心之间维持元数据和数据的一致性的方法、装置和系统
US20200336455A1 (en) Hierarchical namespace service with distributed name resolution caching and synchronization
CN106294870B (zh) 基于对象的分布式云存储方法
JP7389793B2 (ja) 分散型異種ストレージシステムにおけるデータ一貫性のリアルタイムチェックのための方法、デバイス、およびシステム
US9679084B2 (en) Memory sharing across distributed nodes
CN105138678A (zh) 一种地图瓦片数据的读取、分发方法及读取、分发系统
CN109614220A (zh) 一种多核系统处理器和数据更新方法
CN112162846B (zh) 事务处理方法、设备及计算机可读存储介质
US11023291B2 (en) Synchronization between processes in a coordination namespace
CN113449065A (zh) 一种面向数据删重的去中心化存储方法及存储装置
De la Rocha et al. Hierarchical consensus: A horizontal scaling framework for blockchains
CN112104504B (zh) 一种大规模资源访问的事务管理框架、设计方法及云平台
Ailijiang et al. Efficient distributed coordination at wan-scale
Huang et al. RS-store: RDMA-enabled skiplist-based key-value store for efficient range query
CN116436962A (zh) 面向dfs的全局聚合命名空间下跨计算节点的持久性缓存方法和装置
CN107896248B (zh) 一种基于客户端通信的并行文件系统应用方法
Sharma et al. A load balanced directory for distributed shared memory objects

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant