Memory sharing across distributed nodes
First Claim
1. A first node for use in a distributed computing system, the first node comprising:
- a first main memory, wherein a first memory location in the first main memory is usable to mirror a second memory location in a second main memory on a second node of the distributed computing system, wherein said first memory location stores first data that includes a first data value;
one or more sets of program instructions; and
one or more processors;
where the one or more sets of program instructions, when executed by the one or more processors, would cause the one or more processors to perform the operations of;
loading said first data value from the first memory location of the first main memory;
determining whether the first data value is the same as a special data value, wherein the special data value is a predetermined value that is used to indicate invalid data; and
in response to a determination that the first data value is the same as the special data value;
causing valid data to store in place of said first data in the first memory location of the first main memory to be obtained from the second memory location of the second main memory.
1 Assignment
0 Petitions
Accused Products
Abstract
A method and apparatus are disclosed for enabling nodes in a distributed system to share one or more memory portions. A home node makes a portion of its main memory available for sharing, and one or more sharer nodes mirrors that shared portion of the home node'"'"'s main memory in its own main memory. To maintain memory coherency, a memory coherence protocol is implemented. Under this protocol, a special data value is used to indicate that data in a mirrored memory location is not valid. This enables a sharer node to know when to obtain valid data from a home node. With this protocol, valid data is obtained from the home node and updates are propagated to the home node. Thus, no “dirty” data is transferred between sharer nodes. Consequently, the failure of one node will not cause the failure of another node or the failure of the entire system.
25 Citations
39 Claims
-
1. A first node for use in a distributed computing system, the first node comprising:
-
a first main memory, wherein a first memory location in the first main memory is usable to mirror a second memory location in a second main memory on a second node of the distributed computing system, wherein said first memory location stores first data that includes a first data value; one or more sets of program instructions; and one or more processors; where the one or more sets of program instructions, when executed by the one or more processors, would cause the one or more processors to perform the operations of; loading said first data value from the first memory location of the first main memory; determining whether the first data value is the same as a special data value, wherein the special data value is a predetermined value that is used to indicate invalid data; and in response to a determination that the first data value is the same as the special data value; causing valid data to store in place of said first data in the first memory location of the first main memory to be obtained from the second memory location of the second main memory. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A first node for use in a distributed computing system, the first node comprising:
-
a first main memory, wherein a first memory location in the first main memory is usable to mirror a second memory location in a second main memory on a second node of the distributed computing system, wherein said first memory location stores first data that includes a first data value; a store buffer; one or more sets of program instructions; and one or more processors; where the one or more sets of program instructions, when executed by the one or more processors, would cause the one or more processors to perform the operations of; loading said first data value from the first memory location of the first main memory; determining whether the first data value is the same as a special data value, wherein the special data value is a predetermined value that is used to indicate invalid data; in response to a determination that the first data value is not the same as the special data value, storing updated data into the first memory location of the first main memory; in response to a determination that the first data value is the same as the special data value, foregoing storing the updated data into the first memory location of the first main memory; and storing the updated data into the store buffer for eventual propagation to the second node to be stored within the second memory location of the second main memory. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19)
-
-
20. A second node for use in a distributed computing system comprising a first node and the second node, the second node comprising:
-
a second main memory, wherein a second memory location in the second main memory is usable to be mirrored in a first memory location in a first main memory on the first node; one or more sets of program instructions; and one or more processors; wherein the one or more sets of program instructions, when executed by the one or more processors, would cause the one or more processors to perform the operations of; storing updated data into the second memory location of the second memory; and causing data currently stored in the first memory location of the first main memory to be a predetermined special data value, wherein the special data value is used to indicate invalid data. - View Dependent Claims (21, 22, 23, 24, 25)
-
-
26. A method comprising:
-
loading said first data value from a first memory location of a first main memory on a first node of a distributed computing system, wherein the first memory location in the first main memory is usable to mirror a second memory location in a second main memory on a second node of the distributed computing system, wherein said first memory location stores first data that includes a first data value; determining whether the first data value is the same as a special data value, wherein the special data value is a predetermined value that is used to indicate invalid data; and in response to a determination that the first data value is the same as the special data value; causing valid data to store in place of said first data in the first memory location of the first main memory to be obtained from the second memory location of the second main memory. - View Dependent Claims (27, 28, 29, 30)
-
-
31. A method comprising:
-
loading a first data value from a first memory location of a first main memory on a first node of a distributed computing system, wherein the first memory location in the first main memory is usable to mirror a second memory location in a second main memory on a second node of the distributed computing system, wherein said first memory location stores first data that includes a first data value; determining whether the first data value is the same as a special data value, wherein the special data value is a predetermined value that is used to indicate invalid data; in response to a determination that the first data value is not the same as the special data value, storing updated data into the first memory location of the first main memory; in response to a determination that the first data value is the same as the special data value, foregoing storing the updated data into the first memory location of the first main memory; and storing the updated data into a store buffer of the first node for eventual propagation to the second node to be stored within the second memory location of the second main memory. - View Dependent Claims (32, 33, 34, 35)
-
-
36. A method comprising:
-
storing updated data into a second memory location of a second main memory on a second node of a distributed computing system, wherein the second memory location in the second main memory is usable to be mirrored in a first memory location in a first main memory on a first node; and causing data currently stored in the first memory location of the first main memory to be a predetermined special data value, wherein the special data value is used to indicate invalid data. - View Dependent Claims (37, 38, 39)
-
Specification