SILENT INVALID STATE TRANSITION HANDLING IN AN SMP ENVIRONMENT

Information

  • Patent Application
  • 20070294484
  • Publication Number
    20070294484
  • Date Filed
    June 19, 2006
    18 years ago
  • Date Published
    December 20, 2007
    17 years ago
Abstract
Embodiments of the invention address deficiencies of the art in respect to cache coherency management and provide a novel and non-obvious method, system and apparatus for silent invalid state transition handling in an SMP environment. In one embodiment of the invention, a cache coherency method can be provided. The cache coherency method can include identifying an invalid state transition for a cache line in a local node, evicting a corresponding cache directory entry for the cache line, forwarding an invalid state transition notification to a node controller for a home node for the cache line in order for the home node to evict a corresponding cache directory entry for the cache line, and relinquishing ownership of the cache line to the home node.
Description

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

The accompanying drawings, which are incorporated in and constitute part of this specification, illustrate embodiments of the invention and together with the description, serve to explain the principles of the invention. The embodiments illustrated herein are presently preferred, it being understood, however, that the invention is not limited to the precise arrangements and instrumentalities shown, wherein:



FIG. 1 is a schematic illustration of an SMP system configured for silent invalid state transition handling; and,



FIGS. 2A and 2B, taken together, are a flow chart illustrating a process for silent invalid state transition handling in an SMP environment.





DETAILED DESCRIPTION OF THE INVENTION

Embodiments of the invention provide a method, system and computer program product for silent invalid state transition handling in an SMP environment. In accordance with an embodiment of the present invention, whenever a cache line in cache of a local node of an SMP system transitions to an invalid state, the node controller for the local node can notify the node controller for the home node of the cache line. In response, both node controllers can evict the cache line from respective directories. In this way, in a subsequent request for the cache line no latencies will arise from detecting a silent state transition for the requested cache line. Furthermore, the directories for the respective node controllers will not needlessly store entries for the invalid cache line.


In further illustration, FIG. 1 is a schematic illustration of an SMP system configured for silent invalid state transition handling. An SMP system 100 can include one or more processor nodes 160, each of the processor nodes 160 including one or more processors 110 coupled to one another over a central processing unit (CPU) bus and coordinated to execute instructions as provided by a hosted operating system or application logic (not shown). Each of the nodes 160 can include a node controller 120 and each node controller 120 can include firmware logic including program code enabled to decode control information and address information for access requests issue by one or more of the processors 110 in the node 160, or by other devices coupled to the node 160. Notably, the SMP system 100 can implement the MESI protocol for cache coherency.


Each node controller 120 can be coupled to a corresponding cache directory 130 and a corresponding shared cache directory 140. The local cache directory 130 can include directory listings for cache lines disposed locally irrespective of whether the corresponding node 160 is a home node or a local node for the cache lines. The shared cache directory 140, in contrast, can include a directory of cache lines disposed locally where the corresponding node 160 is a home node for the cache lines.


Notably, invalid state transition logic 200 can be coupled to each node controller 120. The invalid state transition logic 200 can include program code enabled to receive a notification of an invalid state transition for a particular cache line from a processor 110 in the node 160. The program code further can be enabled to broadcast the state transition to other coupled node controllers 120. Each of the node controllers 120, upon receiving notification of an invalid state transition for a cache line, can eject the cache line from respective ones of the local cache directory 130 and shared cache directory 140 as the case may be.


In more particular illustration of the operation of the invalid state transition logic, FIGS. 2A and 2B, taken together, are a flow chart illustrating a process for silent invalid state transition handling in an SMP environment. Considering first the process shown in FIG. 2A, beginning in block 210 a state change notification can be received in respect to a particular cache line. The state change notification can be issued by a processor with a node acting as a local node for the cache line, and received by a corresponding node controller for the node.


Responsive to receiving the state change notification, in block 220 the node controller can evict the cache line from the local cache directory for the node. Thereafter, in block 230 a notification can be forwarded to the node controller for the home node of the cache line. In this regard, the notification can be forwarded directly to the node controller for the home node of the cache line, or the notification can be broadcast to all node controllers in the SMP system thereby assuring that the home node receives the notification without maintaining an awareness of the identity for any one home node for a cache line.


It is to be noted, however, that a copy of the cache line can be selectively retained by the node controller for a local node rather than relinquishing ownership to the home node where an inadvertent invalid state transition has been detected. In particular, recognizing that particular command types often give rise to the invalid state transition such as a bus read partial (BRP), the detection of the command type can cause the retention of a copy of the cache line without relinquishing ownership to the home node in order to achieve faster processing speed for a subsequent request for the cache line in the local node.


Turning now to FIG. 2B, in block 240 a node controller for home node can receive a notification from a node controller for a local node that an invalid state transition has occurred for a cache line and that the cache line is no longer valid in the local node domain. In response, in block 250 the node controller for the home node of the cache line can evict an entry for the cache line from the shared cache directory. In this way, when a processor seeks a copy of the cache line, all local caching agents will respond with a clean snoop response and the requesting processor will retrieve a copy of the cache line from the cache of the home node.


The embodiments of the invention can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements. In a preferred embodiment, the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, and the like. Furthermore, the invention can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system.


For the purposes of this description, a computer-usable or computer readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk-read only memory (CD-ROM), compact disk-read/write (CD-R/W) and DVD.


A data processing system suitable for storing and/or executing program code will include at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution. Input/output or I/O devices (including but not limited to keyboards, displays, pointing devices, etc.) can be coupled to the system either directly or through intervening I/O controllers. Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modem and Ethernet cards are just a few of the currently available types of network adapters.

Claims
  • 1. A cache coherency method comprising: identifying an invalid state transition for a cache line in a local node;evicting a corresponding cache directory entry for the cache line;forwarding an invalid state transition notification to a node controller for a home node for the cache line in order for the home node to evict a corresponding cache directory entry for the cache line; and,relinquishing ownership of the cache line to the home node.
  • 2. The method of claim 1, further comprising: detecting a particular command type giving rise to the invalid state transition; and,retaining a copy of the cache line in the local node.
  • 3. The method of claim 2, wherein detecting a particular command type giving rise to the invalid state transition, comprises detecting a bus request partial (BRP) command type giving rise to the invalid state transition.
  • 4. The method of claim 1, wherein evicting a corresponding cache directory entry for the cache line, comprises evicting a corresponding local cache directory entry for the cache line.
  • 5. The method of claim 1, wherein forwarding an invalid state transition notification to a node controller for a home node for the cache line in order for the home node to evict a corresponding cache directory entry for the cache line, comprises forwarding an invalid state transition notification to a node controller for a home node for the cache line in order for the home node to evict a corresponding shared cache directory entry for the cache line.
  • 6. A symmetric multiprocessing (SMP) system comprising: a plurality of nodes, each of the nodes comprising a node controller and a plurality of processors cross-coupled to one another;at least one cache directory coupled to each node controller; and,invalid state transition logic coupled to each node controller, the invalid state transition logic comprising program code enabled to identify an invalid state transition for a cache line in a local node, to evict a corresponding cache directory entry for the cache line, and to forward an invalid state transition notification to a node controller for a home node for the cache line in order for the home node to evict a corresponding cache directory entry for the cache line.
  • 7. The SMP system of claim 6, wherein the at least one cache directory comprises at least one of a local cache directory and a shared cache directory.
  • 8. The SMP system of claim 6, wherein the SMP system implements the Modified Exclusive Shared Invalid (MESI) cache coherency protocol.
  • 9. A computer program product comprising a computer usable medium embodying computer usable program code for cache coherency, the computer program product comprising: computer usable program code for identifying an invalid state transition for a cache line in a local node;computer usable program code for evicting a corresponding cache directory entry for the cache line;computer usable program code for forwarding an invalid state transition notification to a node controller for a home node for the cache line in order for the home node to evict a corresponding cache directory entry for the cache line; and,computer usable program code for relinquishing ownership of the cache line to the home node.
  • 10. The computer program product of claim 9, further comprising: computer usable program code for detecting a particular command type giving rise to the invalid state transition; and,computer usable program code for retaining a copy of the cache line in the local node.
  • 11. The computer program product of claim 10, wherein the computer usable program code for detecting a particular command type giving rise to the invalid state transition, comprises computer usable program code for detecting a bus request partial (BRP) command type giving rise to the invalid state transition.
  • 12. The computer program product of claim 9, wherein the computer usable program code for evicting a corresponding cache directory entry for the cache line, comprises computer usable program code for evicting a corresponding local cache directory entry for the cache line.
  • 13. The computer program product of claim 9, wherein the computer usable program code for forwarding an invalid state transition notification to a node controller for a home node for the cache line in order for the home node to evict a corresponding cache directory entry for the cache line, comprises computer usable program code for forwarding an invalid state transition notification to a node controller for a home node for the cache line in order for the home node to evict a corresponding shared cache directory entry for the cache line.