IP Library Granted Patent US 6,877,030
Granted Patent B2
US 6,877,030 · App. 10/084,088 · Granted Apr 5, 2005

Method and system for cache coherence in DSM multiprocessor system without growth of the sharing vector

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 6,877,030
App. No.
10/084,088
Granted
Apr 5, 2005
Kind
B2
Abstract

The present invention is directed to a method and a system for maintaining cache coherence in a distributed shared memory (DSM) multiprocessor system. The method begins with a receiving of a shared access request by a receiving node, where the receiving node is an arbitrary node having at least one main memory unit containing information desired to be accessed. Then, the method determines whether the shared access request originates from a local node or from a remote node. When the shared access request originates from a local node, the shared access request is processed as a shared access request. If the shared access request is granted, a sharing vector is generated or updated to reflect the sharing local node(s). When the shared access request originates from a remote node, the shared access request is converted to an exclusive access request and the sharing vector is replaced with a pointer to the requesting remote node. This limits the potential size of the sharing vector according to the local nodes.

Claims (120)

1. A method for cache coherence in a distributed shared memory (DSM) multiprocessor system comprising:

(1) receiving a shared access request for information;

(2) determining whether the shared access request originates from a local node or from a remote node;

(3) processing the shared access request as an exclusive access request when the shared access request originates from the remote node; and

(4) processing the shared access request when the shared access request originates from the local node.

2. The method of claim 1 , wherein said step of determining whether the shared access request originates from the local node or the remote node further comprises determining a memory location where the information is stored.

3. The method of claim 1 , wherein said step of processing the shared access request as an exclusive access request further comprises transmitting an invalidate instruction to other local or remote nodes to eliminate copies of the requested information from other local or remote nodes.

4. The method of claim 1 , wherein said step of determining whether the shared access request originates from the local node or the remote node further comprises comparing upper bits of an address of a shared access requestor with upper bits of an address of a receiving node.

5. The method of claim 4 , wherein said step of processing the shared access request as the exclusive access request further comprises converting the shared access request to the exclusive access request if the upper bits of the address of the shared access requestor match the upper bits of the address of the receiving node.

6. The method of claim 1 , wherein said step of determining whether the shared access request originates from the local node or the remote node further comprises comparing an address of a shared access requestor with a table of addresses stored by a receiving node.

7. The method of claim 6 , wherein said step of processing the shared access request as the exclusive access request further comprises converting the shared access request to the exclusive access request if the address of the shared access requestor matches at least one address in the table of addresses stored by the receiving node.

8. The method of claim 1 , wherein the method further comprises:

(5) eliminating copies of the requested information from other local or remote nodes when the shared access request is converted to the exclusive access request;

(6) storing a pointer to a shared access requestor, a location associated with the shared access request or where the requested information is cached, when the shared access request is remotely originated;

(7) determining whether the shared access request is valid;

(8) terminating an exclusive access when the exclusive access request is no longer valid; and

(9) returning information requested by the shared access request to cache.

9. The method of claim 1 , wherein a shared access request from a remote node has been processed as an exclusive access request, the method further comprising:

(5) receiving a subsequent shared access request from the local node at a receiving node;

(6) transmitting an invalidate instruction from the receiving node to the remote node, when the local node transmits the shared access request;

(7) terminating an exclusive access of the remote node; and

(8) processing the shared access request of the local node as the exclusive access request.

10. The method of claim 9 , wherein step (6) further comprises comparing upper bits of an address of a shared access requestor of the local node with upper bits of the address of the receiving node.

11. The method of claim 10 , wherein step (8) further comprises converting the shared access request of the local node to the exclusive access request if the upper bits of the address of the shared access requestor of the local node match the upper bits of the address of the receiving node.

12. The method of claim 9 , wherein step (6) of transmitting another invalidate instruction further comprises comparing upper bits of an address of the shared access request of the local node with a table of addresses stored by the receiving node.

13. The method of claim 12 , wherein step (8) further comprises converting the shared access request of the local node to the exclusive access request if the address of the shared access request of the local node matches at least one address in the table of addresses stored by the receiving node.

14. The method of claim 9 , wherein the method further comprises:

(9) storing a pointer to the shared access requestor of the local node;

(10) determining whether the shared access request of the local node is valid;

(11) terminating the exclusive access request of the local node when the exclusive access request is no longer valid; and,

(12) returning information requested by the shared access request of the local node to cache.

15. A method for cache coherence in a distributed shared memory (DSM) multiprocessor system having a directory-based protocol comprising:

(1) receiving a shared access request for information by a receiving node;

(2) determining whether the shared access request originates from a local node or from a remote node;

(3) processing the shared access request as an exclusive access request when the shared access request originates from the remote node;

(4) processing the shared access request when the shared access request originates from the local node;

(5) transmitting an invalidate instruction to other local or remote nodes to eliminate copies of the requested information from the other local or remote nodes;

(6) eliminating copies of the requested information from other local or remote nodes once the shared access request is converted to the exclusive access request;

(7) storing a pointer to a shared access requestor when the shared access request is remotely originated;

(8) determining whether the shared access request is valid;

(9) terminating an exclusive status when the exclusive access request is no longer valid; and

(10) returning information requested by the shared access request to cache.

16. The method of claim 15 , wherein step (2) further comprises comparing upper bits of an address of the shared access requestor with upper bits of an address of the receiving node.

17. The method of claim 16 , wherein step (3) further comprises converting the shared access request to the exclusive access request if the upper bits of the address of the shared access requestor match the upper bits of the address of the receiving node.

18. The method of claim 15 , wherein step (2) further comprises comparing address of the shared access requestor with a table of addresses stored by the receiving node.

19. The method of claim 18 , wherein step (3) further comprises converting the shared access request to the exclusive access request if the address of the shared access requestor matches at least one address in the table of addresses stored by the receiving node.

20. The method of claim 15 , wherein the method further comprises:

(11) receiving a shared access request from the local node;

(12) transmitting an invalidate instruction from the receiving node to the remote node, when the local node transmits the shared access request;

(13) terminating the exclusive access of the remote node;

(14) processing the shared access request of the local node as the exclusive access request.

21. The method of claim 20 , wherein step (12) further comprises comparing upper bits of an address of the shared access requestor of the local node with upper bits of the address of the receiving node.

22. The method of claim 21 , wherein step (14) further comprises converting the shared access request of the local node to the exclusive access request if the upper bits of the address of the shared access requestor of the local node match the upper bits of the address of the receiving node.

23. The method of claim 20 , wherein step (12) further comprises comparing upper bits of an address of the shared access requestor of the local node with a table of addresses stored by the receiving node.

24. The method of claim 23 , wherein step (14) further comprises converting the shared access requestor of the local node to the exclusive access request if the address of the shared access requestor of the local node matches at least one address in the table of addresses stored by the receiving node.

25. The method of claim 20 , wherein the method further comprises:

(15) storing a pointer to the shared access requestor of the local node;

(16) determining whether the shared access request of the local node is valid;

(17) terminating an exclusive access of the local node when the exclusive access request is no longer valid; and,

(18) returning information requested by the shared access request of the local node to cache.

26. A method for cache coherence in a distributed shared memory (DSM) multiprocessor system comprising:

(1) receiving a first shared access request by a receiving node, wherein the receiving node contains shared information;

(2) receiving a second shared access request by the receiving node;

(3) processing one of a first and a second shared access requestor as an exclusive access request; and

(4) transmitting an invalidate instruction to other of the first and the second shared access requestor.

27. The method of claim 26 , wherein step (3) further comprises

(5) determining whether one of the first and the second shared access requestor originates from a local node or a remote node;

(6) processing the first shared access requestor as the exclusive access request when the first shared access request originates from the remote node;

(7) transmitting the invalidate instruction to the second shared access requestor.

28. The method of claim 26 , wherein step (3) further comprises:

(5) determining whether one of the first and the second shared access requestors originates from a local node or a remote node;

(6) processing the second shared access request as the exclusive access request when the first shared access request originates from the remote node;

(7) transmitting the invalidate instruction to the first shared access requestor.

29. The method of claim 26 , wherein the method further comprises processing as the shared access request to one of the first and the second shared access request when the other of the first and the second shared access originates from a local node.

30. The method of claim 26 , wherein the method further comprises invalidating an exclusive access of one of the first and the second shared access request originating from a remote node when the other of the first and the second shared access request originates from a local node.

31. The method of claim 30 , wherein said invalidating step further comprises:

(5) comparing upper bits of an address of one of the first and the second access requestors with upper bits of the address of the receiving node;

(6) processing one of the first and the second shared access request as the exclusive access request if the upper bits of the address of one of the first and the second shared access requestors match the upper bits of the address of the receiving node.

32. The method of claim 30 , wherein said invalidating step further comprises:

(5) comparing upper bits of an address of one of the first and the second access requestors with a table of addresses stored by the receiving node;

(6) processing one of the first and the second shared access request as the exclusive access request if the upper bits of the address of one of the first and the second shared access requestors match the table of addresses stored by the receiving node.

33. The method of claim 32 , wherein the method further comprises:

(7) storing a pointer to one of the first and the second shared access requestors;

(8) determining whether the one of the first and the second shared access request is valid;

(9) terminating an exclusive access of one of the first and the second shared access requestors when one of the first and the second shared access request is no longer valid; and,

(10) returning information requested by one of the first and the second shared access requestors to cache.

34. A system for maintaining cache coherency in a distributed shared memory (DSM) multiprocessor systems, comprising:

a plurality of processing nodes, wherein each said node is attached to at least one central processing unit (CPU) and a memory unit;

at least one receiving node for receiving a shared access request;

a means for determining whether said shared access request originates from said local node or from said remote node;

a plurality of shared memory vectors, wherein each said shared memory vector defines either said local node requesting information sharing from said receiving node or said remote node requesting information sharing from said receiving node;

an exclusive memory access pointer, wherein said exclusive memory access pointer points to said remote node in the DSM multiprocessor system that has been granted an exclusive access to information in said receiving node;

a storage unit for storing said exclusive memory access pointer; and,

a deleting means for eliminating said exclusive memory access pointer, when said exclusive memory access pointer becomes invalid.

35. The system of claim 34 , wherein the system operates using directory-based protocol environment.

36. The system of claim 34 , wherein said deleting means further comprises a means for transmitting of an invalidate instruction to other said processing nodes once said exclusive memory access pointer points to said remote node in the DSM multiprocessor system.

37. The system of claim 34 , wherein the system further comprises a means for transmitting another invalidate instruction to said remote node when said receiving node has received said shared access request from said local node, whereby an address of said local node matches an address of said receiving node.

38. A system for maintaining cache coherency using a directory-based protocol environment in a distributed shared memory (DSM) multiprocessor systems, comprising:

a plurality of processing nodes, wherein each said node is attached to at least one central processing unit (CPU) and a memory unit;

at least one receiving node for receiving a shared access request;

a means for determining whether said shared access request originates from said local node or from said remote node;

a plurality of shared memory vectors, wherein each said shared memory vector defines either said local node requesting information sharing from said receiving node or said remote node requesting information sharing from said receiving node;

an exclusive memory access pointer, wherein said exclusive memory access pointer points to said remote node in the DSM multiprocessor system that has been granted an exclusive access to information in said receiving node;

a means for transmitting an invalidate instruction to other said processing nodes once said exclusive memory access pointer points to said remote node in the DSM multiprocessor system;

a storage unit for storing said exclusive memory access pointer; and,

a deleting means for eliminating said exclusive memory access pointer, when said exclusive memory access pointer becomes invalid.

39. A system for maintaining cache coherency using a directory-based protocol environment in a distributed shared memory (DSM) multiprocessor systems, comprising:

a means for receiving a shared access request for information;

a means for determining whether the shared access request originates from a local node or from a remote node;

a means for processing the shared access request as an exclusive access request when the shared access request originates from the remote node;

a means for processing the shared access request when the shared access request originates from the local node.

40. A system for maintaining cache coherency using a directory-based protocol environment in a distributed shared memory (DSM) multiprocessor systems, comprising:

a means for receiving a shared access request for information by a receiving node;

a means for determining whether the shared access request originates from a local node or from a remote node, wherein said local node is physically proximate to said receiving node, wherein said remote node is physically distant from said receiving node;

a means for processing said access request differently depending on whether said access request originates from said local node or from said remote node.

41. A computer program product comprising a computer useable medium having computer logic stored therein, said computer program logic enabling a computer system to maintain cache coherency in a distributed shared memory (DSM) system, wherein said computer program logic comprises:

a first function that enables the computer to receive a shared access request for information;

a second function that enables the computer to determine whether the shared access request originates from a local node or from a remote node;

a third function that enables the computer to process the shared access request as an exclusive access request when the shared access request originates from the remote node; and

a fourth function that enables the computer to process the shared access request when the shared access request originates from the local node.

Assignments (13)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 4, 2017
From: SILICON GRAPHICS INTERNATIONAL CORP.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 044128/0149 →
RELEASE OF SECURITY INTEREST Recorded Nov 2, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC., AS AGENT
To: SILICON GRAPHICS INTERNATIONAL CORP.
Reel/Frame 040545/0362 →
ORDER. . . AUTHORIZING THE SALE OF ALL OR SUBSTANTIALLY ALL OF THE ASSETS OF THE DEBTORS FREE AND CLEAR OF ALL LIENS, CLAIMS, ENCUMBRANCES, AND INTERESTS. Recorded Jul 25, 2016
From: WELLS FARGO FOOTHILL CAPITAL, INC.
To: SILICON GRAPHICS INC.
Reel/Frame 039461/0418 →
ORDER. . .AUTHORIZING THE SALE OF ALL OR SUBSTANTIALLY ALL OF THE ASSETS OF THE DEBTORS FREE AND CLEAR OF ALL LIENS, CLAIMS, ENCUMBRANCES, AND INTERESTS. Recorded Jul 25, 2016
From: MORGAN STANLEY & CO., INCORPORATED
To: SILICON GRAPHICS, INC.
Reel/Frame 039461/0713 →
SECURITY INTEREST Recorded Mar 13, 2015
From: SILICON GRAPHICS INTERNATIONAL CORP.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 035200/0722 →
CHANGE OF NAME Recorded Apr 18, 2014
From: SILICON GRAPHICS INTERNATIONAL, INC.
To: SGI INTERNATIONAL, INC.
Reel/Frame 032714/0230 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 18, 2014
From: SILICON GRAPHICS, INC.
To: SILICON GRAPHICS INTERNATIONAL, INC.
Reel/Frame 032714/0032 →
MERGER Recorded Apr 18, 2014
From: SGI INTERNATIONAL, INC.
To: SILICON GRAPHICS INTERNATIONAL CORP.
Reel/Frame 032714/0427 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 16, 2012
From: SILICON GRAPHICS, INC. ET AL.; SGI INTERNATIONAL, INC.
To: SILICON GRAPHICS INTERNATIONAL, CORP.
Reel/Frame 027727/0086 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 18, 2007
From: GENERAL ELECTRIC CAPITAL CORPORATION
To: MORGAN STANLEY & CO., INCORPORATED
Reel/Frame 019995/0895 →
SECURITY INTEREST Recorded Oct 24, 2006
From: SILICON GRAPHICS, INC.
To: GENERAL ELECTRIC CAPITAL CORPORATION
Reel/Frame 018545/0777 →
SECURITY AGREEMENT Recorded Aug 19, 2005
From: SILICON GRAPHICS, INC. AND SILICON GRAPHICS FEDERAL, INC. (EACH A DELAWARE CORPORATION)
To: WELLS FARGO FOOTHILL CAPITAL, INC.
Reel/Frame 016871/0809 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 28, 2002
From: DENEROFF, MARTIN M.
To: SILICON GRAPHICS, INC.
Reel/Frame 012642/0630 →