IP Library Granted Patent US 9,558,138
Granted Patent B2
US 9,558,138 · App. 14/313,922 · Granted Jan 31, 2017

Computing system with unified storage, processing, and network switch fabrics and method for making and using the same

Inventor: Daniel Davies (Palo Alto, CA)
Assignee: Palo Alto Research Center Incorporated
G06F13/4022G06F13/22
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 9,558,138
App. No.
14/313,922
Granted
Jan 31, 2017
Kind
B2
Abstract

A system and method for making and using a computing system with unified storage, processing, and network switch fabrics are provided. Processing nodes, either physical or virtual, are associated with intra-module ports, inter-module ports, and local storage spaces. A plurality of processing nodes are linked through intra-module ports to form processing modules. A plurality of the processing modules are further connected through inter-module ports to form the computing system. Several inter-module connection schemes are described, each of which can be adapted to use with existing network packet routing algorithms. Each processing node need only to keep track of the states of its directly connected neighbors, obviating the need for a high-speed connection to the rest processing nodes within the system. As a result, dedicated network switching equipment is not needed and network capacity grows naturally as processing nodes are added.

Claims (51)

1. A computing system with a unified storage, processing and network switching fabrics, comprising:

a plurality of processing nodes;

a plurality of intra-module ports, each of the intra-module ports is associated with one of the processing nodes;

a plurality of inter-module ports; each of the inter-module ports is associated with one of the processing nodes;

a plurality of processing modules each comprising at least one of the processing nodes, each processing node is connected to all remaining ones of the processing nodes within the module in which that processing node is comprised, to form an intra-module network; and

an inter-module network comprising at least one connection between one of the inter-module ports on one of the processing modules to another one of the inter-module ports on another one of the processing modules, wherein the inter-module network comprises connections provided according to the method of connecting an inter-module port P on the processing modules (2 P *N+1) through (2 P *N+2 P-1 ) to a further inter-module port P on the processing modules (2 P *N+2 P-1 +1) through (2 P *N+ 2 P ), respectively, where N is [0, 1, . . . , (M/2 P ) −1], and P is [1, 2, . . . , P ], wherein the number of the processing modules is M and each of the processing modules has at least P inter-module ports.

2. A system according to claim 1 , wherein the intra-module connection network comprises at least one of:

a bus, a ring, a star, a mesh, and a crossbar switch.

3. A system according to claim 1 , wherein the processing nodes each comprise at least one of:

a physical node and a virtual node.

4. A system according to claim 1 , wherein the processing nodes each comprise at least one of:

a processing element, a memory controller, a memory, a storage controller, a storage device, and interfaces to intra-module and inter-module ports.

5. A system according to claim 1 , further comprising:

a further inter-module network comprising a series of linearly connected processing modules with the beginning and the end of the series further linked to each other to form a ring, using two inter-module ports from each of the connected processing modules.

6. A system according to claim 5 , further comprising:

a connection between two non-adjacent processing modules on the ring, via one inter-module port located on one of the two processing modules and not used for the linear connection, to another inter-module port located on the other of the two non-adjacent processing modules and not used for the linear connection.

7. A system according to claim 5 , further comprises at least one of:

a connection between a processing module N on the ring to processing a module N+S on the ring, by connecting one unused inter-module port on the processing module N to another unused inter-module port on the processing module N+S, wherein M is the number of the processing modules on the ring, S is an integer divisor of M, N is [x, x+S, . . . , x+(M−S), increment by S], and x is [1, 2, . . . , S−1];

a connection between a processing module N on the ring to processing a module N+S−1 on the ring, by connecting one unused inter-module port on the processing module N to another unused inter-module port on the processing module N+S−1, wherein M is the number of the processing modules on the ring, S is an integer divisor of M, N is [x, x+S, . . . , x+(M−S), increment by S], x is [1, 2, . . . , S−1]; and

a connection between a processing module N on the ring to a processing module N+S−r on the ring, by connecting one unused inter-module port on the processing module N to another unused inter-module port on the processing module N+S−r, wherein M is the number of the processing modules on the ring, S is an integer divisor of M, N is [x, x+S, . . . , x+(M−S), increment by S], x is [1, 2, . . . , S−1], and r is [2, 3, . . . , S−1].

8. A system according to claim 1 , further comprising:

a transmission module to transfer data packet from one of the processing nodes to another one of the processing nodes through the established inter-module connection.

9. A system according to claim 8 , further comprising:

a monitoring module measuring the data packet traffic pattern; and

a modification module to amend the established inter-module connection based upon the packet traffic pattern.

10. A method of making or using a computer system with a unified storage, processing and network switching fabrics, comprising the steps of:

providing a plurality of processing modules, each comprising a plurality of processing nodes, each processing node is connected to all remaining ones of the processing nodes within the module in which that processing node is comprised, to form an intra-module connection;

providing, for at least one of the processing nodes, an inter-module port;

for each of the inter-module ports, determining, for the purpose of making an inter-module connection, another one of the processing nodes in the processing module different from the processing module in which that processing node is comprised; and

establishing the inter-module connection based upon the determination by establishing the inter-module connection between the processing modules, wherein the number of the processing modules is M and each of the processing modules has at least P inter-module ports, connecting a port P on the processing modules (2 P *N+1) through (2 P *N+2 P-1 ) to a further port P on the processing modules (2 P *N+2 P-1 +1) through (2 P *N+2), respectively, where N is [0, 1, . . . , (M/2 P )−1], and P is [1, 2, . . . , P].

11. A method according to claim 10 , further comprising the step of:

forming the intra-module connection via at least of a bus, a ring, a star, a mesh, and a crossbar switch.

12. A method according to claim 10 , further comprising the step of:

providing each of the processing nodes as one of a physical node and a virtual node.

13. A method according to claim 10 , wherein each of the processing nodes comprises at least one of a processing element, a memory controller, a memory, a storage controller, a storage device, and interfaces to intra-module and inter-module ports.

14. A method according to claim 10 , further comprising the steps of:

establishing a further inter-module connection, comprising:

linearly connecting a series of the remaining processing modules; and

connecting the beginning and the end of the series to form a ring;

wherein the connections are provided using two inter-module ports from each of the connected processing modules.

15. A method according to claim 14 , further comprising the step of:

connecting one unused inter-module port on one of the processing modules on the ring to another unused inter-module port on another, non-adjacent processing module on the ring.

16. A method according to claim 14 , further comprising at least one of the steps of:

providing a connection between a processing module N on the ring to a processing module N+S on the ring, by connecting one unused inter-module port on the processing module N to another unused inter-module port on the processing module N+S, wherein M is the number of the processing modules on the ring, S is an integer divisor of M, N is [x, x+S, . . . , x+(M−S), increment by S], and x is [1, 2, . . . , S−1];

providing a connection between a processing module N on the ring to a processing module N+S−1 on the ring, by connecting one unused inter-module port on the processing module N to another unused inter-module port on the processing module N+S−1, wherein M is the number of the processing modules on the ring, S is an integer divisor of M, N is [x, x+S, . . . , x+(M−S), increment by S], and x is [1, 2, . . . , S−1]; and

providing a connection between a processing module N on the ring to a processing module N+S−r on the ring, by connecting one unused inter-module port on the processing module N to another unused inter-module port on the processing module N+S−r, wherein M is the number of the processing modules on the ring, S is an integer divisor of M, N is [x, x+S, . . . , x+(M−S), increment by S], x is [1, 2, . . . , S−1], and r is [2, 3, . . . , S−1].

17. A method according to claim 10 , further comprising the step of:

transferring a data packet from one of the processing nodes to another one of the processing nodes through the established inter-module connection.

18. A method according to claim 17 , further comprising the steps of:

measuring the data packet traffic pattern; and

amending the established inter-module connection based upon the packet traffic pattern.

Assignments (8)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 14, 2025
From: XEROX CORPORATION
To: GENESEE VALLEY INNOVATIONS, LLC
Reel/Frame 073562/0677 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS RECORDED AT RF 064760/0389 Recorded Feb 13, 2024
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: XEROX CORPORATION
Reel/Frame 068261/0001 →
SECURITY INTEREST Recorded Feb 13, 2024
From: XEROX CORPORATION
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 066741/0001 →
SECURITY INTEREST Recorded Nov 20, 2023
From: XEROX CORPORATION
To: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 065628/0019 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVAL OF US PATENTS 9356603, 10026651, 10626048 AND INCLUSION OF US PATENT 7167871 PREVIOUSLY RECORDED ON REEL 064038 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jun 28, 2023
From: PALO ALTO RESEARCH CENTER INCORPORATED
To: XEROX CORPORATION
Reel/Frame 064161/0001 →
SECURITY INTEREST Recorded Jun 22, 2023
From: XEROX CORPORATION
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 064760/0389 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 20, 2023
From: PALO ALTO RESEARCH CENTER INCORPORATED
To: XEROX CORPORATION
Reel/Frame 064038/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 24, 2014
From: DAVIES, DANIEL
To: PALO ALTO RESEARCH CENTER INCORPORATED
Reel/Frame 033171/0287 →
Continuity (1)
Related Publication 20150370740A1 · Dec 24, 2015