CN104769591B - 分布式节点之间的存储器共享 - Google Patents
分布式节点之间的存储器共享 Download PDFInfo
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 822
- 238000000034 method Methods 0.000 claims abstract description 122
- 238000003860 storage Methods 0.000 claims description 96
- 230000008569 process Effects 0.000 claims description 78
- 239000012536 storage buffer Substances 0.000 claims description 65
- 238000012545 processing Methods 0.000 claims description 60
- 238000013500 data storage Methods 0.000 claims description 26
- 230000004044 response Effects 0.000 claims description 14
- 239000000872 buffer Substances 0.000 claims description 12
- 238000013507 mapping Methods 0.000 claims description 11
- 230000003993 interaction Effects 0.000 claims description 8
- 230000000644 propagated effect Effects 0.000 claims description 8
- 230000000694 effects Effects 0.000 claims description 7
- 230000005055 memory storage Effects 0.000 claims 3
- 238000012423 maintenance Methods 0.000 abstract 1
- UXDAWVUDZLBBAM-UHFFFAOYSA-N n,n-diethylbenzeneacetamide Chemical compound CCN(CC)C(=O)CC1=CC=CC=C1 UXDAWVUDZLBBAM-UHFFFAOYSA-N 0.000 description 15
- 238000000151 deposition Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 10
- 238000013519 translation Methods 0.000 description 9
- 238000009826 distribution Methods 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 4
- 230000014759 maintenance of location Effects 0.000 description 3
- 230000004888 barrier function Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 235000013399 edible fruits Nutrition 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30065—Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/082—Associative directories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1466—Key-lock mechanism
- G06F12/1475—Key-lock mechanism in a virtual system, e.g. with translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/362—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7885—Runtime interface, e.g. data exchange, runtime control
- G06F15/7889—Reconfigurable logic implemented as a co-processor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2237—Vectors, bitmaps or matrices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24561—Intermediate data storage techniques for performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/24569—Query processing with adaptation to specific hardware, e.g. adapted for using GPUs or SSDs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/273—Asynchronous replication or reconciliation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6209—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
- G06F9/381—Loop buffering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/14—Multichannel or multilink protocols
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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所述的第二节点,
其中,所述第二节点还包括一组失效指令,所述失效指令可以是与所述特定执行线程有关的所述一组程序指令的一部分,或者与所述一组程序指令分离;
其中,所述俘获处理指令在被第一处理器执行时将进一步使第一处理器:
将指示第二主存储器的第二存储器位置中的数据已经被更新的信息存储到缓冲器中;并且
其中,所述一组失效指令在被第一处理器或第二节点上的另一处理器执行时将使第一处理器或另一个处理器:
从所述缓冲器检索所述信息;
访问并且锁定与第二主存储器的第二存储器位置相关联的目录条目,其中,所述目录条目中的信息指示第一节点当前是第二主存储器的第二存储器位置的有效共享者;
使当前存储在第一主存储器的第一存储器位置中的数据失效;
更新所述目录条目中的所述信息,以使得所述信息不再指示第一节点为第二主存储器的第二存储器位置的有效共享者;以及
解锁所述目录条目。
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)
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)
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)
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 |
-
2013
- 2013-02-26 US US13/778,009 patent/US9063974B2/en active Active
- 2013-02-26 US US13/778,013 patent/US9292569B2/en active Active
- 2013-02-27 US US13/778,307 patent/US9158810B2/en active Active
- 2013-03-07 US US13/789,524 patent/US9251272B2/en active Active
- 2013-03-14 US US13/828,555 patent/US10223116B2/en active Active
- 2013-03-15 US US13/838,542 patent/US9400821B2/en active Active
- 2013-03-15 US US13/839,525 patent/US9372813B2/en active Active
- 2013-06-14 CN CN201380049301.7A patent/CN104662534B/zh active Active
- 2013-06-14 EP EP13733171.6A patent/EP2904513B1/en active Active
- 2013-06-14 WO PCT/US2013/045881 patent/WO2014055138A1/en active Application Filing
- 2013-06-14 EP EP13734557.5A patent/EP2904514B1/en active Active
- 2013-06-14 CN CN201380049816.7A patent/CN104662538B/zh active Active
- 2013-06-14 JP JP2015534471A patent/JP6320393B2/ja active Active
- 2013-06-14 CN CN201810434459.0A patent/CN108664596B/zh active Active
- 2013-06-14 WO PCT/US2013/045873 patent/WO2014055137A1/en active Application Filing
- 2013-06-27 EP EP13737064.9A patent/EP2904515B1/en active Active
- 2013-06-27 CN CN201380051875.8A patent/CN104704491B/zh active Active
- 2013-06-27 WO PCT/US2013/048110 patent/WO2014055145A1/en active Application Filing
- 2013-06-27 ES ES13737064T patent/ES2880268T3/es active Active
- 2013-07-22 US US13/947,674 patent/US9557997B2/en active Active
- 2013-09-30 WO PCT/US2013/062718 patent/WO2014055443A1/en active Application Filing
- 2013-09-30 CN CN201380057680.4A patent/CN104769591B/zh active Active
- 2013-09-30 EP EP13777395.8A patent/EP2904521B1/en active Active
- 2013-10-01 EP EP13777400.6A patent/EP2904499B1/en active Active
- 2013-10-01 CN CN201380057937.6A patent/CN104769561B/zh active Active
- 2013-10-01 CN CN201380051672.9A patent/CN104756091B/zh active Active
- 2013-10-01 WO PCT/US2013/062880 patent/WO2014055526A1/en active Application Filing
- 2013-10-01 EP EP13783718.3A patent/EP2904500B1/en active Active
- 2013-10-01 WO PCT/US2013/062859 patent/WO2014055512A1/en active Application Filing
-
2015
- 2015-05-11 US US14/709,302 patent/US9542443B2/en active Active
- 2015-12-10 US US14/964,805 patent/US10055224B2/en active Active
Patent Citations (2)
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
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 |