IP Library Granted Patent US 7,669,013
Granted Patent B2
US 7,669,013 · App. 11/828,439 · Granted Feb 23, 2010

Directory for multi-node coherent bus

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,669,013
App. No.
11/828,439
Granted
Feb 23, 2010
Kind
B2
Abstract

A method for maintaining cache coherency for a multi-node system using a specialized bridge which allows for fewer forward progress dependencies. A look-up of a local node directory is performed if a request received at a multi-node bridge of the local node is a system request. If a directory entry indicates that data specified in the request has a local owner or local destination, the request is forwarded to the local node. If the local node determines that the request is a local request, a look-up of the local node directory is performed. If the directory entry indicates that data specified in the request has a local owner and local destination, the coherency of the data on the local node is resolved and a transfer of the request data is performed if required. Otherwise, the request is forwarded to all remote nodes in the multi-node system.

Claims (52)

1. A computer implemented method for maintaining cache coherency in a multi-node system, the computer implemented method comprising:

responsive to receiving a request at a multi-node bridge of a local node, performing a look-up of a directory in the local node if the request is a system request;

if an entry in the directory of the local node indicates that data specified in the request has a local owner or the request has a local destination, forwarding the request to the local node;

determining, at the local node, whether the request is a local request or a system request;

responsive to the local node determining that the request is a local request, performing a look-up of the directory in the local node;

if the entry in the directory of the local node indicates that data specified in the request has a local owner and the request has a local destination, resolving coherency of the data on the local node and performing a transfer of the data specified in the request if a data transfer is required; and

if the entry in the directory of the local node indicates that data specified in the request does not have a local owner or the request does not have a local destination, forwarding the request to all remote nodes in the multi-node system.

2. The computer implemented method of claim 1 , further comprising:

responsive to resolving coherency of the data on the local node, determining if the request is a system request;

if the request is a system request, determining if the request has a remote destination or a local owner;

if the data specified in the request has a remote destination or a local owner, returning the request to a remote node which originated the request; and

if the data specified in the request does not have a remote destination and does not have a local owner, updating the directory of the local node to indicate that the request is not locally owned and returning the request to the remote node which originated the request.

3. The computer implemented method of claim 2 , further comprising:

responsive to receiving the returned request at the remote node, checking ownership information and destination information in the request to determine, at that remote node, if the request has a local owner and a local destination;

if the request does not have a local owner or a local destination, performing a transfer of the data specified in the request if a data transfer is required; and

if the request has a local owner and a local destination, updating the directory of the remote node to indicate that the request is owned by the local node and performing a transfer of the data specified in the request if a data transfer is required.

4. The computer implemented method of claim 1 , wherein resolving coherency of the data on the local node includes snooping all devices on the local node, determining whether any snoopers have a modified copy of the data, generating a castout, and ensuring the castout reaches its destination node.

5. The computer implemented method of claim 1 , wherein a local request is a request originating from a local owner.

6. The computer implemented method of claim 1 , wherein a system request is a request originating from a remote owner, and wherein the request originating from the remote owner is a consequence of a multi-node bridge on the remote node forwarding the request to all other nodes in the multi-node system.

7. The computer implemented method of claim 1 , wherein the directory in the local node includes entries for local memory space held by local caches.

8. The computer implemented method of claim 1 , wherein the directory in the local node includes entries for remote memory spaces held only by local caches.

9. The computer implemented method of claim 1 , wherein the look-up of the directory is performed for all local and all system requests.

10. The computer implemented method of claim 1 , wherein the look-up of the directory is not performed for any system requests.

11. A data processing system for maintaining cache coherency in a multi-node system, the data processing system comprising:

a bus;

a storage device connected to the bus, wherein the storage device contains computer usable code;

at least one managed device connected to the bus;

a communications unit connected to the bus; and

a processing unit connected to the bus, wherein the processing unit executes the computer usable code to perform, in response to receiving a request at a multi-node bridge of a local node, a look-up of a directory in the local node if the request is a system request; if an entry in the directory of the local node indicates that data specified in the request has a local owner or the request has a local destination, forward the request to the local node; determine, at the local node, whether the request is a local request or a system request; perform a look-up of the directory in the local node in response to the local node determining that the request is a local request; if the entry in the directory of the local node indicates that data specified in the request has a local owner and the request has a local destination, resolve coherency of the data on the local node and perform a transfer of the data specified in the request if a data transfer is required; and if the entry in the directory of the local node indicates that data specified in the request does not have a local owner or the request does not have a local destination, forward the request to all remote nodes in the multi-node system.

12. The data processing system of claim 11 , wherein the processing unit executes the computer usable code to determine if the request is a system request in response to resolving coherency of the data on the local node; if the request is a system request, determine if the request has a remote destination or a local owner; if the data specified in the request has a remote destination or a local owner, return the request to a remote node which originated the request; and if the data specified in the request does not have a remote destination and does not have a local owner, update the directory of the local node to indicate that the request is not locally owned and return the request to the remote node which originated the request.

13. The data processing system of claim 12 , wherein the processing unit executes the computer usable code to check ownership information and destination information in the request in response to receiving the returned request at the remote node to determine, at that remote node, if the request has a local owner and a local destination; if the request does not have a local owner or a local destination, perform a transfer of the data specified in the request if a data transfer is required; and if the request has a local owner and a local destination, update the directory of the remote node to indicate that the request is owned by the local node and perform a transfer of the data specified in the request if a data transfer is required.

14. A computer program product for maintaining cache coherency in a multi-node system, the computer program product comprising:

a computer usable medium having computer usable program code tangibly embodied thereon, the computer usable program code comprising:

computer usable program code for performing, in response to receiving a request at a multi-node bridge of a local node, a look-up of a directory in the local node if the request is a system request;

computer usable program code for forwarding the request to the local node if an entry in the directory of the local node indicates that data specified in the request has a local owner or the request has a local destination;

computer usable program code for determining, at the local node, whether the request is a local request or a system request;

computer usable program code for performing a look-up of the directory in the local node in response to the local node determining that the request is a local request;

computer usable program code for resolving coherency of the data on the local node if the entry in the directory of the local node indicates that data specified in the request has a local owner and the request has a local destination and performing a transfer of the data specified in the request if a data transfer is required; and

computer usable program code for forwarding the request to all remote nodes in the multi-node system if the entry in the directory of the local node indicates that data specified in the request does not have a local owner or the request does not have a local destination.

15. The computer program product of claim 14 , further comprising:

computer usable program code for determining if the request is a system request in response to resolving coherency of the data on the local node;

computer usable program code for determining, if the request is a system request, if the request has a remote destination or a local owner;

computer usable program code for returning the request to a remote node which originated the request if the data specified in the request has a remote destination or a local owner; and

computer usable program code for updating the directory of the local node if the data specified in the request does not have a remote destination and does not have a local owner to indicate that the request is not locally owned and returning the request to the remote node which originated the request.

16. The computer program product of claim 15 , further comprising:

computer usable program code for checking ownership information and destination information in the request in response to receiving the returned request at the remote node to determine, at that remote node, if the request has a local owner and a local destination;

computer usable program code for performing a transfer of the data specified in the request if a data transfer is required if the request does not have a local owner or a local destination; and

computer usable program code for updating the directory of the remote node if the request has a local owner and a local destination to indicate that the request is owned by the local node and performing a transfer of the data specified in the request if a data transfer is required.

17. The computer program product of claim 14 , wherein the directory in the local node includes entries for local memory space held by local caches.

18. The computer program product of claim 14 , wherein the directory in the local node includes entries for remote memory spaces held only by local caches.

19. The computer program product of claim 14 , wherein the look-up of the directory is performed for all local and all system requests.

20. The computer program product of claim 14 , wherein the look-up of the directory is not performed for any system requests.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 3, 2024
From: BEIJING PIANRUOJINGHONG TECHNOLOGY CO., LTD.
To: BEIJING ZITIAO NETWORK TECHNOLOGY CO., LTD.
Reel/Frame 066565/0952 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 4, 2023
From: AWEMANE LTD.
To: BEIJING PIANRUOJINGHONG TECHNOLOGY CO., LTD.
Reel/Frame 064501/0498 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 2, 2021
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: AWEMANE LTD.
Reel/Frame 057991/0960 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 26, 2007
From: CARPENTER, GARY DALE; CLARK, SCOTT DOUGLAS; DRERUP, BERNARD CHARLES; HOOVER, RUSSELL DEAN; JOHNS, CHARLES RAY; KROLAK, DAVID JOHN; SRINIVASAN, PRASANNA; TRUONG, THUONG QUANG
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 019611/0373 →