IP Library Granted Patent US 7,715,400
Granted Patent B1
US 7,715,400 · App. 11/740,432 · Granted May 11, 2010

Node identification for distributed shared memory system

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,715,400
App. No.
11/740,432
Granted
May 11, 2010
Kind
B1
Abstract

An example embodiment of the present invention provides processes relating to a connection/communication protocol and a memory-addressing scheme for a distributed shared memory system. In the example embodiment, a logical node identifier comprises bits in the physical memory addresses used by the distributed shared memory system. Processes in the embodiment include logical node identifiers in packets which conform to the protocol and which are stored in a connection control block in local memory. By matching the logical node identifiers in a packet against the logical node identifiers in the connection control block, the processes ensure reliable delivery of packet data. Further, in the example embodiment, the logical node identifiers are used to create a virtual server consisting of multiple nodes in the distributed shared memory system.

Claims (47)

1. A method, comprising:

receiving, at a distributed memory logic circuit of a first node, data for a packet destined to a distributed memory logic circuit of a second node, wherein the first and second nodes are connected by a network switch fabric and are parts of a distributed shared memory system, and wherein the data for the packet includes a physical memory address in which one or more bits in the address comprise a destination logical node identifier for the second node;

using the destination logical node identifier as an index into a connection control block to locate an entry for a connection between the first and second nodes, wherein the connection control block is stored in a local memory on the first node;

building a packet in a format of a connection and communication protocol using the data, the destination logical node identifier, and a logical node identifier for the first node, wherein the logical node identifier for the first node is included in the connection control block entry;

adding, to the packet, a header that includes a switch fabric address for the second node, wherein the switch fabric address is identified in the located entry of the connection control block; and

transmitting the packet on a link to the switch fabric.

2. A method as in claim 1 , wherein the distributed shared memory system is a cache coherent non-uniform memory access system.

3. A method as in claim 1 , wherein the distributed memory logic circuit in the first node sets the destination logical node identifier to zero if the destination logical node identifier in the physical memory address equals the logical node identifier for the first node.

4. A method, comprising:

receiving, at a distributed memory logic circuit of a first node, a packet from a distributed memory logic circuit of a second node, wherein the packet includes a source logical node identifier and wherein the first and second nodes are connected by a network switch fabric and are parts of a distributed shared memory system;

determining whether a destination switch fabric address included in the packet matches a switch fabric address for the first node;

using the source logical node identifier as an index into a connection control block to locate an entry for the a connection between the first and second nodes, wherein the connection control block is stored in a local memory on the first node;

determining whether a destination logical node identifier included in the packet matches a logical node identifier for the first node, wherein the logical node identifier for the first node is identified in the located entry of the connection control block; and

accepting data in the packet for further processing by the first node.

5. The method of claim 4 , wherein the packet is discarded if the destination switch fabric address included in the packet does not match the switch fabric address for the first node.

6. The method of claim 4 , wherein the packet is discarded if the destination logical node identifier does not match the logical node identifier for the first node identified in the located entry of the connection control block.

7. The method of claim 4 , wherein the distributed shared memory system is a cache coherent non-uniform memory access system.

8. A distributed memory logic circuit encoded with executable logic, the logic when executed operable to:

receive, at the distributed memory logic circuit of a first node, data for a packet destined to a distributed memory logic circuit of a second node, wherein the first and second nodes are connected by a network switch fabric and are parts of a distributed shared memory system, and wherein the data for the packet includes a physical memory address in which one or more bits in the address comprise a destination logical node identifier for the second node;

use the destination logical node identifier as an index into a connection control block to locate an entry for a connection between the first and second nodes, wherein the connection control block is stored in a local memory on the first node;

build a packet in a format of a connection and communication protocol using the data, the destination logical node identifier, and a logical node identifier for the first node, wherein the logical node identifier for the first node is included in the connection control block entry;

add, to the packet, a header that includes a switch fabric address for the second node, wherein the switch fabric address is identified in the located entry of the connection control block; and

transmit the packet on a link to the switch fabric.

9. The distributed memory logic circuit of in claim 8 , wherein the distributed shared memory system is a cache coherent non-uniform memory access system.

10. The distributed memory logic circuit of claim 8 , wherein the distributed memory logic circuit of the first node sets the destination logical node identifier to zero if the destination logical node identifier in the physical memory address equals the logical node identifier for the first node.

11. A distributed memory logic circuit encoded with executable logic, the logic when executed operable to:

receive, at the distributed memory logic circuit of a first node, a packet from a distributed memory logic circuit of a second node, wherein the packet includes a source logical node identifier and wherein the first and second nodes are connected by a network switch fabric and are parts of a distributed shared memory system;

determine whether a destination switch fabric address included in the packet matches a switch fabric address for the first node;

use the source logical node identifier as an index into a connection control block to locate an entry for a connection between the first and second nodes, wherein the connection control block is stored in a local memory on the first node;

determine whether a destination logical node identifier included in the packet matches a logical node identifier for the first node, wherein the logical node identifier for the first node is identified in the located entry of the connection control block; and

accept data in the packet for further processing by the first node.

12. The distributed memory logic circuit of claim 11 , wherein the packet is discarded if the destination switch fabric address included in the packet does not match the switch fabric address for the first node.

13. The distributed memory logic circuit of claim 11 , wherein the packet is discarded if the destination logical node identifier does not match the logical node identifier for the first node identified in the located entry of the connection control block.

14. The distributed memory logic circuit of claim 11 , wherein the distributed shared memory system is a cache coherent non-uniform memory access system.

15. A system comprising:

two or more nodes in a distributed shared memory system connected by a network switch fabric; and wherein each of the two or more nodes comprises one or more processors, local memory and a distributed memory logic circuit,

wherein the distributed memory logic circuit is encoded with executable logic, the logic

when executed operable to

receive, at the distributed memory logic circuit of a local node, data for a packet destined to a distributed memory logic circuit of a remote node of the two or more nodes in the distributed shared memory system, wherein the data for the packet includes a physical memory address in which one or more bits in the address comprise a destination logical node identifier for the remote node,

use the destination logical node identifier as an index into a connection control block to locate an entry for a connection between the local and remote node, wherein the connection control block is stored in local memory on the local node,

build a packet a format of a connection and communication protocol using the data, the destination logical node identifier, and a logical node identifier for the local node, wherein the logical node identifier for the local node is included in the connection control block entry,

add, to the packet, a header that includes a switch fabric address for the remote node, wherein the switch fabric address is identified in the located entry of the connection control block,

transmit the packet on a link to the network switch fabric,

receive, at the distributed memory logic circuit of the local node, a second packet from a distributed memory logic circuit of the remote node or another remote node of the two or more nodes in the distributed shared memory system, wherein the second packet includes a source logical node identifier,

determine whether a destination switch fabric address included in the second packet matches a switch fabric address for the local node,

use the source logical node identifier as an index into the connection control block to locate an entry for a connection between the local and remote node, determine whether a destination logical node identifier included in the second packet matches a logical node identifier for the local node, wherein the logical node identifier for the local node is identified in the located entry of the connection control block, and

accept data in the packet for further processing by the local node.

Assignments (5)
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME PREVIOUSLY RECORDED AT REEL: 037575 FRAME: 0812. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Apr 25, 2016
From: INTELLECTUAL VENTURES HOLDING 80 LLC
To: INTELLECTUAL VENTURES HOLDING 81 LLC
Reel/Frame 038516/0869 →
MERGER Recorded Jan 25, 2016
From: INTELLECTUAL VENTURES HOLDING 80 LLC
To: INTELLECTUAL VENTURES FUND 81 LLC
Reel/Frame 037575/0812 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TYPOGRAPHICAL ERROR IN NAME OF ASSIGNEE PREVIOUSLY RECORDED ON REEL 019216 FRAME 0945. ASSIGNOR(S) HEREBY CONFIRMS THE 3 LEAF NETWORKS. Recorded May 2, 2012
From: KRAKIRIAN, SHAHE HAGOP; AKKAWI, ISAM
To: 3LEAF SYSTEMS, INC.
Reel/Frame 028146/0559 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 18, 2011
From: FLORIDA STATE UNIVERSITY FOUNDATION, INCORPORATED
To: INTELLECTUAL VENTURES HOLDING 80 LLC
Reel/Frame 027261/0664 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 13, 2011
From: FUTUREWEI TECHNOLOGIES, INC.
To: THE FLORIDA STATE UNIVERSITY FOUNDATION, INC.
Reel/Frame 026586/0232 →