Method and system for handling exclusive fetch requests for shared cache lines

The inclusion of status indications in exclusive fetch requests in cache systems optimizes cache line handling, reducing unnecessary invalidations and improving processing efficiency in computing environments.

JP2026500125APending Publication Date: 2026-01-06INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025531130
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2022-12-15
Filing Date
2023-11-23
Publication Date
2026-01-06

AI Technical Summary

Technical Problem

Existing cache systems in computing environments face inefficiencies in handling exclusive fetch requests for shared cache lines, leading to unnecessary cache line invalidations and increased processing costs due to retries and resource conflicts.

Method used

A computer program product that includes status indications in exclusive fetch requests, allowing nodes to determine whether the manager node has accepted or rejected the request, thereby reducing unnecessary cache line invalidations by deciding on cache line handling based on these indications.

Benefits of technology

This approach reduces the number of cache line invalidations, saving processing cycles and minimizing system memory accesses by optimizing cache line management in computing environments.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2026500125000001_ABST
    Figure 2026500125000001_ABST
Patent Text Reader

Abstract

A method and system for processing an exclusive fetch request for a shared cache line is provided. A node of a computing environment receives an exclusive fetch request for a cache line that is shared by at least the node and a manager node of the computing environment. The exclusive fetch request includes state instructions regarding the manager node's processing of the exclusive fetch request. The node processes the exclusive fetch request based on the state instructions included in the exclusive fetch request regarding the manager node's processing of the exclusive fetch request.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] One or more aspects relate generally to facilitating processing within a computing environment, and more particularly to improving caching within a computing environment.

[0002] To improve memory access, many computing environments use cache systems in which recently accessed data is stored in a cache that is closer to the node accessing the cache than to the system memory. In one example, each node of multiple nodes in a computing environment has a cache, and cache lines may be shared between nodes in that read-only copies of the cache line may reside in multiple caches of multiple nodes.

[0003] When a node requests a cacheline that is present in the cache of at least one other node, the manager node for that cacheline is responsible for responding to the request. The request for the cacheline may be read-only, allowing multiple nodes to fetch the line for read purposes, or an exclusive fetch, allowing only one node to fetch the line for update purposes.

[0004] An exclusive fetch of a cacheline is considered successful if it is accepted by the manager node as well as other non-manager nodes. If a node is busy with a different fetch to the same cacheline or lacks resources to service the fetch, it will reject the exclusive fetch and the exclusive fetch must be retried. This process will be improved to improve the overall process within the computing environment. Summary of the Invention

[0005] Shortcomings of the prior art are overcome and additional advantages are provided through the provision of a computer program product to facilitate processing within a computing environment. The computer program product includes one or more computer-readable storage media and program instructions collectively stored on one or more computer-readable storage media for performing a method. The method comprises a node of the computing environment obtaining an exclusive fetch request for a cache line shared by at least the node and a manager node of the computing environment. The exclusive fetch request includes state instructions regarding processing of the exclusive fetch request by the manager node. The node processes the exclusive fetch request based on the state instructions included in the exclusive fetch request regarding processing of the exclusive fetch request by the manager node.

[0006] By including a state indication in the exclusive fetch request, the node can decide how to handle the request. For example, the node can accept the request based on the state indication and therefore invalidate its copy of the cache line; or the node can reject the request based on the state indication and therefore not invalidate its copy of the cache line. This facilitates processing by performing cache line invalidation in selected circumstances, such as based on the state indication, rather than invalidating every time the exclusive fetch request is rebroadcast. This reduces the number of cache line invalidations, thereby allowing copies of the cache line to be protected.

[0007] In one embodiment, the status indication includes an acceptance indicator that indicates whether the manager node has accepted the exclusive fetch request. This facilitates processing by indicating to the node when the manager node has accepted the exclusive fetch request. Thus, the node can also accept the exclusive fetch request and invalidate its copy of the cache line, rather than invalidating each time the exclusive fetch is retried. This saves processing cycles and reduces system memory accesses.

[0008] In one embodiment, the status indication further includes a rejection indicator that indicates whether the manager node rejected the exclusive fetch request. This facilitates processing by indicating to the node when the manager node rejected the exclusive fetch request, so that the node can also reject the exclusive fetch request and not invalidate its copy of the cache line. This facilitates processing by reducing the number of times a node invalidates a cache line.

[0009] In one embodiment, the status indication includes a denial indicator that indicates whether the manager node has denied the exclusive fetch request. This facilitates processing by indicating to the node when the manager node has denied the exclusive fetch request, so that the node can also deny the exclusive fetch request and not invalidate its copy of the cache line. This facilitates processing by reducing the number of times a node invalidates a cache line.

[0010] In one embodiment, the rejection indicator also indicates the reason for rejecting the exclusive fetch request. This facilitates processing by indicating to the node when the manager node rejected the exclusive fetch request for a selected reason, so the node can decide to reject the exclusive fetch request and not invalidate its copy of the cache line. This facilitates processing by reducing the number of times a node invalidates a cache line.

[0011] In one embodiment, the process includes determining, based on the denial indicator, that the manager node has denied the exclusive fetch request for a selected reason. Based on determining that the manager node has denied the exclusive fetch request for the selected reason, the node denies the exclusive fetch request. Using the denial indicator provided with the exclusive fetch request, the node can determine how to handle the request. For example, the node can deny the request based on the denial indicator and therefore not invalidate copies of the cache line. This facilitates processing by not performing cache line invalidation in certain situations, such as based on a manager node's denial of the exclusive fetch request for a selected reason. This reduces the number of cache line invalidations, thereby allowing copies of the cache line to be protected.

[0012] In one embodiment, the process includes determining, based on the state indication, that the manager node has denied the exclusive fetch request. Based on determining that the manager node has denied the exclusive fetch request, the node denies the exclusive fetch request. Using the state indication provided with the exclusive fetch request, the node can determine how to handle the request. For example, the node can deny the request based on the state indication indicating that the manager node has denied the exclusive fetch request and therefore not invalidate copies of the cache line. This facilitates processing by not performing cache line invalidations in certain situations, such as based on denial of the exclusive fetch request by the manager node. This reduces the number of cache line invalidations, thereby allowing copies of the cache line to be protected.

[0013] In one embodiment, a computing environment includes multiple nodes that receive an exclusive fetch request. The denial is performed by the multiple nodes that receive the exclusive fetch request based on determining that a manager node has denied the exclusive fetch request. Using a status indication provided with the exclusive fetch request, the nodes can determine how to handle the request. For example, the nodes can deny the request based on a status indication indicating that a manager node has denied the exclusive fetch request, and therefore not invalidate their cache line copies. This facilitates processing by not invalidating cache line copies in certain situations, such as based on a manager node's denial of the exclusive fetch request. This reduces the number of cache line invalidations, thereby protecting cache line copies.

[0014] In one embodiment, the process includes determining, based on the state indication, that the manager node has accepted the exclusive fetch request. Based on determining that the manager node has accepted the exclusive fetch request, the node accepts the exclusive fetch request. By using the state indication to determine that the manager node has accepted the exclusive fetch request, the node can also accept the exclusive fetch request and invalidate its copy of the cache line, rather than invalidating each time the exclusive fetch is retried. This saves processing cycles and reduces system memory accesses.

[0015] In one embodiment, the computing environment includes multiple levels of manager nodes, and the state indication on which processing is based is the state indication of a selected manager node on a selected level of the multiple levels. By including an appropriate state indication in the exclusive fetch request, the node can decide how to process the request. For example, the node can accept the request based on the state indication and therefore invalidate its copy of the cache line; or the node can reject the request based on the state indication and therefore not invalidate its copy of the cache line. This facilitates processing by performing cache line invalidation in selected circumstances, such as based on the state indication, rather than invalidating every time the exclusive fetch request is rebroadcast. This reduces the number of cache line invalidations, thereby allowing cache line copies to be protected.

[0016] Computer-implemented methods and systems relating to one or more aspects are also described and claimed herein. Additionally, services relating to one or more aspects may also be described and claimed herein.

[0017] Additional features and advantages are realized through the techniques described herein. Other embodiments and aspects are described in detail herein and are considered a part of the claimed aspects. [Brief explanation of the drawings]

[0018] One or more aspects are particularly pointed out and distinctly claimed as examples in the claims at the end of this specification. The foregoing and other objects, features, and advantages of one or more aspects will be apparent from the following detailed description taken in conjunction with the accompanying drawings. [Figure 1] 1 illustrates one example of a computing environment that incorporates and uses one or more aspects of the present invention. [Figure 2] 2 illustrates an example of further details of the processor set of FIG. 1 in accordance with one or more aspects of the present invention. [Figure 3] 2 illustrates an example of a sub-module of the shared cache line protection module of FIG. 1 in accordance with one or more aspects of the present invention. [Figure 4] 1 illustrates an example of a broadcast process in accordance with one or more aspects of the present invention. [Figure 5] 1 illustrates an example of a non-intervention manager node process in accordance with one or more aspects of the present invention. [Figure 6] 10 illustrates another example of uninterrupted manager node processing in accordance with one or more aspects of the present invention. [Figure 7A] 1 pictorially illustrates an example of shared cache line protection in accordance with one or more aspects of the present invention; [Figure 7B] 1 pictorially illustrates an example of shared cache line protection in accordance with one or more aspects of the present invention; [Figure 7C] 1 pictorially illustrates an example of shared cache line protection in accordance with one or more aspects of the present invention; [Figure 7D] 1 pictorially illustrates an example of shared cache line protection in accordance with one or more aspects of the present invention; [Figure 7E] 1 pictorially illustrates an example of shared cache line protection in accordance with one or more aspects of the present invention; [Figure 7F] 1 pictorially illustrates an example of shared cache line protection in accordance with one or more aspects of the present invention; [Figure 8] 10 pictorially illustrates another example of shared cache line protection, in accordance with one or more aspects of the present invention; DETAILED DESCRIPTION OF THE INVENTION

[0019] According to one or more aspects of the present invention, capabilities are provided for facilitating processing within a computing environment. In one or more aspects, the capabilities include improving cache utilization, and in particular, the handling of exclusive fetch requests for cache lines within the cache. In one or more aspects, the capabilities include protecting shared cache lines from unnecessary invalidation based on denied exclusive fetch requests.

[0020] One or more aspects of the present invention may be incorporated into, executed by, and / or used by a computing environment. By way of example, the computing environment may be of various architectures and types, including, but not limited to, personal computing, client-server, distributed, virtual, emulated, partitioned, non-partitioned, cloud-based, quantum, grid, time-sharing, cluster, peer-to-peer, wearable, mobile, having one node or multiple nodes, having one processor or multiple processors, and / or any other type of environment and / or configuration capable of executing a process (or multiple processes) that, for example, handles exclusive fetch requests for shared cache lines so that unnecessary invalidation of copies of the cache lines is reduced, and / or performing one or more other aspects of the present invention. Aspects of the present invention are not limited to a particular architecture or environment.

[0021] Various aspects of the present disclosure are described through text, flowcharts, block diagrams of computer systems, and / or block diagrams of machine logic included in computer program product (CPP) embodiments. For any flowchart, depending on the technology involved, operations may be performed in an order different from that shown in a given flowchart. For example, again depending on the technology involved, two operations shown in successive flowchart blocks may be performed in reverse order, as a single integrated step, simultaneously, or in an at least partially overlapping manner.

[0022] A computer program product embodiment ("CPP embodiment" or "CPP") is a term used in this disclosure to describe any set of one or more storage media (also referred to as "media"), collectively contained in one or more storage devices, that collectively contain machine-readable code corresponding to instructions and / or data for performing the computer operations specified in a given CPP claim. A "storage device" is any tangible device that can hold and store instructions for use by a computer processor. The computer-readable storage medium may be, but is not limited to, an electronic storage medium, a magnetic storage medium, an optical storage medium, an electromagnetic storage medium, a semiconductor storage medium, a mechanical storage medium, or any suitable combination of the foregoing. Some known types of storage devices that include these media include diskettes, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), compact disc read-only memory (CD-ROM), digital versatile disk (DVD), memory stick, floppy disk, mechanically encoded devices (such as punch cards or pits / lands formed on a major surface of a disk), or any suitable combination of the foregoing. Computer-readable storage media, as the term is used in this disclosure, is not to be construed as storage in the form of transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide, light pulses passing through fiber optic cables, electrical signals transmitted through wires, and / or other transmission media.As will be appreciated by those skilled in the art, data is typically moved at some infrequent time during the normal operation of a storage device, such as during access, defragmentation, or garbage collection, but this does not make the storage device temporary because the data is not temporary while it is stored.

[0023] An example computing environment for implementing, incorporating, and / or using one or more aspects of the present invention is described with reference to Figure 1. In one example, computing environment 100 includes an example environment for execution of at least a portion of computer code involved in implementing the methodology of the present invention, such as shared cache line protection code or module 150. In addition to block 150, computing environment 100 includes, for example, computer 101, wide area network (WAN) 102, end user device (EUD) 103, remote server 104, public cloud 105, and private cloud 106. In this embodiment, computer 101 includes processor set 110 (including processing circuitry 120 and cache 121), communications fabric 111, volatile memory 112, persistent storage 113 (including operating system 122 and block 150, as identified above), peripheral device set 114 (including a user interface (UI), device set 123, storage 124, and Internet of Things (IoT) sensor set 125), and network module 115. The remote server 104 includes a remote database 130. The public cloud 105 includes a gateway 140, a cloud orchestration module 141, a set of host physical machines 142, a set of virtual machines 143, and a set of containers 144.

[0024] Computer 101 may take the form of a desktop computer, a laptop computer, a tablet computer, a smartphone, a smartwatch or other wearable computer, a mainframe computer, a quantum computer, or any other form of computer or mobile device now known or later developed that is capable of executing programs, accessing a network, or querying a database, such as remote database 130. As is well understood in the field of computer technology, and depending on the technology, execution of a computer-implemented method may be distributed among multiple computers and / or multiple locations. However, in this presentation of computing environment 100, to keep the presentation as concise as possible, the detailed discussion focuses on a single computer, specifically computer 101. Although computer 101 is not shown in FIG. 1 within a cloud, it may be located within a cloud. However, computer 101 is not required to reside within a cloud except to any extent expressly indicated.

[0025] Processor set 110 includes one or more computer processors of any type now known or to be developed in the future. Processing circuitry 120 may be distributed across multiple packages, e.g., multiple tailored integrated circuit chips. Processing circuitry 120 may implement multiple processor threads and / or multiple processor cores. Cache 121 is memory located within the processor chip package and is typically used for data or code that should be available for fast access by threads or cores executing on processor set 110. Cache memory is typically organized into multiple levels depending on relative proximity to the processing circuitry. Alternatively, some or all caches for a processor set may be located “off-chip.” In some computing environments, processor set 110 may be designed to operate with qubits and perform quantum computing.

[0026] Computer-readable program instructions are typically loaded onto computer 101 and cause processor set 110 of computer 101 to execute a series of operational steps, thereby enabling a computer-implemented method, such that the instructions so executed instantiate the methods specified in the computer-implemented method flowcharts and / or descriptions contained herein (collectively referred to as the "methods of the present invention"). These computer-readable program instructions are stored in various types of computer-readable storage media, such as cache 121 and other storage media discussed below. The program instructions and associated data are accessed by processor set 110 to control and direct the execution of the methods of the present invention. In computing environment 100, at least some of the instructions for executing the methods of the present invention may be stored in block 150 within persistent storage 113.

[0027] Communications fabric 111 is the signal-conducting pathway that allows various components of computer 101 to communicate with one another. Typically, this fabric is made up of switches and conductive pathways, such as switches and conductive pathways that make up buses, bridges, physical input / output ports, and the like. Other types of signal communication pathways may be used, such as fiber optic communication pathways and / or wireless communication pathways.

[0028] Volatile memory 112 may be any type of volatile memory now known or later developed. Examples include dynamic random access memory (RAM) or static RAM. Typically, volatile memory is characterized by random access, although this is not required unless expressly stated. In computer 101, volatile memory 112 is located in a single package and is internal to computer 101; however, alternatively or additionally, volatile memory may be distributed across multiple packages and / or located external to computer 101.

[0029] Persistent storage 113 is any form of non-volatile storage for a computer, now known or later developed. The non-volatility of this storage means that stored data is maintained regardless of whether power is supplied to computer 101 and / or to persistent storage 113 directly. Persistent storage 113 can be read-only memory (ROM), but typically at least a portion of persistent storage allows data to be written, data to be deleted, and data to be rewritten. Some well-known forms of persistent storage include magnetic disks and solid-state storage devices. Operating system 122 can take several forms, including various known proprietary operating systems or open-source Portable Operating System Interface-type operating systems that employ a kernel. The code contained in block 150 typically includes at least some of the computer code involved in performing the methods of the present invention.

[0030] The peripheral device set 114 includes a set of peripheral devices of the computer 101. Data communication connections between the peripheral devices and other components of the computer 101 can be implemented in various ways, such as Bluetooth connections, Near-Field Communication (NFC) connections, connections made by cable (such as a universal serial bus (USB)-type cable), insertion-type connections (e.g., a secure digital (SD) card), connections made through a local area communication network, and even connections made through a wide area network such as the Internet. In various embodiments, the UI device set 123 can include components such as a display screen, speakers, microphones, wearable devices (such as goggles and smartwatches), keyboards, mice, printers, touchpads, game controllers, and haptic devices. The storage 124 can be external storage, such as an external hard drive, or insertable storage, such as an SD card. The storage 124 can be persistent and / or volatile. In some embodiments, the storage 124 can take the form of a quantum computing storage device for storing data in the form of qubits. In embodiments where computer 101 is required to have a large amount of storage (e.g., computer 101 stores and manages a large database locally), then this storage may be provided by a peripheral storage device designed to store very large amounts of data, such as a storage area network (SAN) shared by multiple, geographically distributed computers. IoT sensor set 125 consists of sensors that can be used in Internet of Things applications. For example, one sensor may be a thermometer and another sensor may be a motion detector.

[0031] Network module 115 is a collection of computer software, hardware, and firmware that enables computer 101 to communicate with other computers over WAN 102. Network module 115 may include hardware such as a modem or Wi-Fi® signal transceiver, software for packetizing and / or depacketizing data for communication network transmission, and / or web browser software for communicating data over the Internet. In some embodiments, the network control and network forwarding functions of network module 115 are performed on the same physical hardware device. In other embodiments (e.g., embodiments utilizing Software-Defined Networking (SDN)), the control and forwarding functions of network module 115 are performed on physically separate devices, such that the control function manages multiple different network hardware devices. Computer-readable program instructions for implementing the methods of the present invention may be downloaded to computer 101 from an external computer or external storage device, typically through a network adapter card or network interface included in network module 115.

[0032] WAN 102 is any wide area network (e.g., the Internet) capable of communicating computer data over non-local distances using any technology for communicating computer data now known or later developed. In some embodiments, WAN 102 may be replaced and / or supplemented by a local area network (LAN) designed to communicate data between devices located in a local area, such as a Wi-Fi network. WANs and / or LANs typically include copper transmission cables, optical fiber transmissions, wireless transmissions, and computer hardware such as routers, firewalls, switches, gateway computers, and edge servers.

[0033] End-user device (EUD) 103 is any computer system used and controlled by an end user (e.g., a customer of the enterprise operating computer 101) and may take any of the forms described above in connection with computer 101. EUD 103 typically receives useful and useful data from the operation of computer 101. For example, in the hypothetical case where computer 101 is designed to provide recommendations to the end user, the recommendations would typically be communicated from computer 101's network module 115 over WAN 102 to EUD 103. In this manner, EUD 103 can display or otherwise present the recommendations to the end user. In some embodiments, EUD 103 may be a client device, such as a thin client, a heavy client, a mainframe computer, a desktop computer, and the like.

[0034] Remote server 104 is any computer system that provides at least some data and / or functionality to computer 101. Remote server 104 may be controlled and used by the same entity that operates computer 101. Remote server 104 represents a machine that collects and stores useful and useful data for use by other computers, such as computer 101. For example, in the hypothetical case where computer 101 is designed and programmed to provide recommendations based on past data, then this past data may be provided to computer 101 from remote database 130 of remote server 104.

[0035] A public cloud 105 is any computer system available for use by multiple entities that provides on-demand availability of computer system resources and / or other computer capabilities, particularly data storage (cloud storage) and computing power, without direct active management by users. Cloud computing typically leverages resource sharing to achieve coherence and economies of scale. Direct active management of public cloud 105 computing resources is performed by computer hardware and / or software in cloud orchestration module 141. The computing resources provided by public cloud 105 are typically implemented by virtual computing environments running on various computers comprising host physical machine set 142, which is the universe of physical computers within and / or available in public cloud 105. Virtual computing environments (VCEs) typically take the form of virtual machines from virtual machine set 143 and / or containers from container set 144. It is understood that these VCEs are stored as images and can be transferred among and between various physical machine hosts, either as images or after instantiation of the VCEs. Cloud orchestration module 141 manages the transfer and storage of images, deploys new instantiations of VCE, and manages active instantiations of VCE deployments. Gateway 140 is a collection of computer software, hardware, and firmware that enables public cloud 105 to communicate over WAN 102.

[0036] Some further description of virtualized computing environments (VCEs) is now provided. A VCE can be stored as an "image." A new, active instance of a VCE can be instantiated from an image. Two well-known types of VCEs are virtual machines and containers. A container is a VCE that uses operating system-level virtualization. This refers to a feature of an operating system in which the kernel allows the existence of multiple isolated user space instances, called containers. These isolated user space instances typically behave as actual computers from the perspective of programs running within them. A computer program running on a typical operating system can utilize all of the computer's resources, such as connected devices, files and folders, network shares, CPU power, and quantifiable hardware capabilities. However, a program running inside a container can only use the contents of the container and of the devices assigned to the container; this feature is known as containerization.

[0037] Private cloud 106 is similar to public cloud 105, except that its computing resources are available only for use by a single enterprise. While private cloud 106 is shown in communication with WAN 102, in other embodiments, the private cloud may be completely disconnected from the Internet and accessible only through a local / private network. A hybrid cloud is a composite of multiple clouds of different types (e.g., private, community, or public cloud types), often each implemented by a different vendor. While each of the multiple clouds remains a separate, discrete entity, the larger hybrid cloud architecture is bound together by standardized or proprietary technologies that enable orchestration, management, and / or data / application portability between the constituent clouds. In this embodiment, both public cloud 105 and private cloud 106 are part of a larger hybrid cloud.

[0038] The computing environment described above is merely one example of a computing environment that may incorporate, execute, and / or use one or more aspects of the present invention. Other examples are possible. For example, in one or more embodiments, one or more of the components / modules of FIG. 1 are not included in the computing environment and / or are not used for one or more aspects of the present invention. Furthermore, in one or more embodiments, additional and / or other components / modules may be used. Other variations are possible.

[0039] Further details of an example processor set (e.g., processor set 110) are described with reference to FIG. 2. In one example, the processor set (e.g., processor set 110) includes multiple nodes 200, where each node is, for example, a core or central processing unit of a processor of the processor set (e.g., processor set 110). In one example, each node is coupled to a cache, such as cache 210, used to store data accessed by the node. As an example, each cache may be part of cache 121 of FIG. 1. In one example, the caches may be interconnected.

[0040] In one example, a cache (e.g., cache 210) includes multiple cache lines (e.g., cache lines 220), where a cache line is a unit of data transferred between the cache and main memory (e.g., volatile memory 112; persistent storage 113; etc.). A cache line (e.g., cache line 220) is typically fixed in size and may range in size from 16 to 256 bytes. While the size range is provided as an example, cache lines may have additional and / or fewer bytes than the examples provided herein. In another example, cache lines may have variable sizes. Many variations are possible.

[0041] A cache line, such as cache line 220, may be shared in that a read-only copy of the cache line may be fetched from memory (e.g., volatile memory 112; persistent storage 113; etc.) and stored in multiple caches (e.g., cache 210) in multiple nodes (e.g., node 200). When a cache line is to be updated, an exclusive fetch is performed in which one node of the multiple nodes obtains permission to modify the cache line in one of the caches. Corresponding cache lines in the other caches are invalidated. This provides data protection, ensuring that the most up-to-date copies of the data are used by nodes that share the cache line.

[0042] In one example, for a given request for a cacheline, one of the nodes of the plurality of nodes is a requesting node (e.g., a read-only fetch node, an exclusive fetch node) that requests access to the cacheline (e.g., read-only, exclusive); one of the nodes is a manager node (which may also be referred to herein as an intervening manager node, an intervention manager, or a manager) that is responsible for responding to the request; and one or more of the nodes are non-manager nodes (which may also be referred to herein as a non-intervening manager node, a non-intervening manager, or a non-manager). In one example, the responsibilities or status of a particular node change, for example, based on the processing of a given cacheline request and / or based on other cacheline requests. In one example, for example, a requesting node becomes a manager node based on receiving authority to execute a request. Other examples are possible, including an example in which responsibilities as a manager node do not change based on receiving authority to execute a request. Many examples are possible.

[0043] In one example, upon a node becoming a manager node, an indication is placed in the cache directory, e.g., in the cache directory entry corresponding to the cache line, or elsewhere, indicating that the node is the current manager node.

[0044] For a given cacheline request, for example, if it is an exclusive fetch request, for the exclusive fetch to succeed, the exclusive fetch will be accepted by the manager node as well as the non-manager node. Based on a node, such as a non-manager node, accepting the request, the non-manager node invalidates its copy of the given cacheline. If a node is busy with a different fetch to the same cacheline or lacks resources to service the fetch, the node will reject the exclusive fetch. For example, if a manager node rejects or does not accept an exclusive fetch request, the exclusive fetch will fail, potentially resulting in unnecessary invalidations by other nodes. For example, an exclusive fetch to a conflicting cacheline may cause the non-manager node to invalidate its copy of the cacheline without the exclusive fetch being accepted by the manager node. The non-manager node may still want to retain its read-only copy and therefore re-fetch the cacheline, further increasing conflicts. The increased contention reduces the likelihood that an exclusive fetch will succeed on a retry. Therefore, one or more unnecessary invalidations may be performed before the exclusive fetch request is successful. These are considered unnecessary because the exclusive fetch request was not granted or failed, and therefore the corresponding cache line did not need to be invalidated.

[0045] To reduce unnecessary invalidation of cache lines in non-manager nodes, according to one aspect of the present invention, cache line invalidation is performed based on a specific event, such as the acceptance of an exclusive fetch request by a manager node. One or more invalidations are avoided until the exclusive fetch is expected to be successfully executed. Thus, if an exclusive fetch request has already been rejected by a manager node, as many copies of the conflicting cache line as possible are preserved. For example, non-manager nodes reject exclusive fetch requests rejected by a manager node until the exclusive fetch request is accepted by the manager node. This reduces processing costs and memory access delays, and improves processing speed.

[0046] To protect a shared cache line from one or more unnecessary invalidations, a shared cache line protection module (e.g., shared cache line protection module 150) is used in accordance with one or more aspects of the present invention. The shared cache line protection module (e.g., shared cache line protection module 150) includes code or instructions used to perform shared cache line protection operations in accordance with one or more aspects of the present invention. The shared cache line protection module (e.g., shared cache line protection module 150), in one example, includes various sub-modules that are used to perform the operations. The sub-modules are, for example, computer-readable program code (e.g., instructions) in a computer-readable medium, for example, storage (e.g., storage 124, persistent storage 113, cache 121, other storage). The computer-readable medium is part of a computer program product, which may be executed by and / or using one or more computers, such as computer 101; one or more servers, such as remote server 104; one or more processors or nodes, such as a processor or node of processor set 110; and / or processing circuitry, such as processing circuitry 120 of processor set 110; etc. Additional and / or other computers, servers, processors, nodes, and / or processing circuitry may be used to execute one or more of the sub-modules and / or portions thereof. Many examples are possible.

[0047] One example of shared cacheline protection module 150 is described with reference to Figure 3. In one example, shared cacheline protection module 150 includes a broadcast sub-module 300 used to broadcast exclusive fetch requests to multiple nodes; a non-intervention manager node processing sub-module 310 (also referred to herein as a non-manager node) used to process exclusive fetch requests; and an extended non-intervention manager node processing sub-module 320 used to further process exclusive fetch requests. In one or more aspects of the invention, additional, fewer, and / or other sub-modules may be provided and / or used.

[0048] In one example, the shared cacheline protection module 150 includes one or more sub-modules (e.g., sub-modules 300-320) used during shared cacheline protection processing, as further described with reference to FIGS. 4-6. In one example, FIG. 4 illustrates one example of broadcasted exclusive fetch request processing in accordance with one or more aspects of the present invention; FIG. 5 illustrates one example of a non-manager process that processes a broadcasted exclusive fetch request in accordance with one or more aspects of the present invention; and FIG. 6 illustrates another example of a non-manager process that processes a broadcasted exclusive fetch request in accordance with one or more aspects of the present invention. In one or more examples described with reference to FIGS. 4-6 (and FIGS. 7A-7F and 8), the manager nodes are referred to as intervening manager nodes, and the non-manager nodes are referred to as non-intervening manager nodes. However, other examples of manager / non-manager nodes may be used.

[0049] Each process, in one or more examples, is executed by one or more of a computer (e.g., computer 101, another computer, etc.), a server (e.g., remote server 104, another server), a node (e.g., of processor set 110 or another processor set), a processor, and / or processing circuitry, etc. While exemplary computers, servers, nodes, processors, and / or processing circuitry are provided, additional, fewer, and / or other computers, servers, nodes, processors, and / or processing circuitry may be used for each of the shared cache line protection operations and / or processes. Various options are possible.

[0050] Referring initially to FIG. 4 , in one example, a shared cacheline protection process includes a broadcast process 400 in which, for example, an exclusive fetch request for a cacheline is broadcast 410 from a node (e.g., a requesting node, referred to herein as an FEx (fetch exclusive) node) among the plurality of nodes sharing the cacheline. According to one aspect of the invention, the exclusive fetch request includes a status indication indicating whether a manager node among the plurality of nodes sharing the cacheline has accepted or rejected the exclusive fetch request. In this particular example, the status indications include a manager rejection indicator (also referred to herein as an intervention manager (IM) rejection (REJ) indicator) and a manager acceptance indicator (also referred to herein as an intervention manager (IM) acceptance indicator), each set to an initial value (e.g., 0). However, in other examples, there may be additional, fewer, and / or other indicators and / or status indications indicating whether a manager node (e.g., an intervention manager node) has accepted or rejected the request. Additionally, one or more indicators may be used to provide additional acceptance or rejection information and / or other information. Many variations are possible.

[0051] In one example, based on the broadcast, process 400 determines 420 whether the intervention manager node has accepted the exclusive fetch. For example, the intervention manager node accepts the request if the intervention manager node is not busy with another request for the cacheline. If the intervention manager node is busy with another request for the cacheline, it rejects the request. The acceptance / rejection is obtained by the process (e.g., by a signal, indicator, condition code, return code, etc.).

[0052] If the process 400 determines that the intervention manager node has rejected the request, at least one status indicator is set. As an example, the process 400 sets 430 the intervention manager reject indicator to a selected value such as 1 indicating that the request was rejected by the intervention manager node, and the intervention manager accept indicator remains or is reset to another selected value, for example 0, indicating that the exclusive request was not accepted by the intervention manager node. The exclusive fetch is rebroadcast 430 to nodes including the intervention manager node with the updated indicator, and processing continues at query 420.

[0053] If, at inquiry 420, process 400 determines that the exclusive fetch request was accepted by the intervening manager node, process 400 determines 440 whether an unintervened manager node rejected the exclusive fetch request. If process 400 determines that an unintervened manager node rejected the exclusive fetch request, the exclusive fetch is rebroadcast 450 with at least one indicator (e.g., intervening manager accepted) set to a selected value, such as 1, and processing continues at inquiry 440. If process 400 determines 440 that the exclusive fetch was not rejected by an unintervened manager node, broadcast processing is complete 460. If the exclusive fetch is accepted, the requesting node may update the cache line, causing other copies of the cache line to be invalidated.

[0054] One example of processing a received exclusive fetch request by an uninterrupted manager node is described with reference to Figure 5. In one example, an uninterrupted manager process 500 obtains 510 (e.g., receives, provides, fetches, etc.) a remote exclusive fetch request. For example, it receives a broadcast request from a node requesting an exclusive fetch, the request including a state indication of the intervention manager node (e.g., IM accepted and / or IM rejected).

[0055] Based on obtaining the request, process 500 determines 520 whether the exclusive fetch request, for example, includes an indication that the intervention manager node accepted the exclusive fetch request. In one example, this determination is made by checking an acceptance indicator included in the request. If the acceptance indicator is set to a selected value, such as 1, the intervention manager node accepted the request. If the intervention manager node accepted the request, the non-intervention manager node accepts 530 the request and therefore invalidates its copy of the cache line. However, if the intervention manager node did not accept the request, process 500 further checks 540 whether the intervention manager node rejected the request. In one example, this determination is made by checking a rejection indicator included in the request. If the rejection indicator is set to a selected value, such as 1, the intervention manager node rejected the request. If the intervention manager node rejected the request, the non-intervention manager node rejects 550 the request and does not invalidate its copy of the cache line. Otherwise, in one example, the non-intervening manager node accepts 530 the request and invalidates its copy of the cache line.

[0056] Another example of processing a received exclusive fetch request by a non-intervention manager node is described with reference to FIG. 6. In this example, a computing environment includes multiple levels or ranges of intervention manager authority. For example, a chip holding a node may have an intervention manager authority and a drawer including the chip and the system. As an example, an intervention manager authority is established for a fetched cacheline and associated with at least one node that holds the cacheline. Thus, a node on the chip may have chip-level intervention manager authority for the selected cacheline, a node in the drawer may have drawer-level intervention manager authority for the selected cacheline, a node in the system may have system-level intervention manager authority for the selected cacheline, and a node on the processor may have node-level (e.g., lowest-level) intervention manager authority for the selected cacheline. A node may hold one or more levels of intervention manager authority for the selected cacheline, and the selected cacheline may have one or more intervention manager authorities associated with it (assigned to one or more nodes). As an example, the one or more authorities are indicated in a directory for the cacheline.

[0057] In one example, a system node is considered to have the highest authority, referred to as the global intervention manager (GIM). In this example, an exclusive fetch request indicates whether it has been accepted or rejected by the highest intervention manager authority. Furthermore, an exclusive fetch request seeks out the intervention manager of its current scope before moving up in scope. As an example, a node with an intervention manager level lower than the current scope of the exclusive fetch request may follow the behavior of a non-intervention manager node or perform no special behavior. An example of a lower intervention manager is a chip intervention manager node on a different chip than the chip on which the exclusive fetch request originated. Other examples are possible. An intervention manager node that matches the current scope of the exclusive fetch request does not reject the exclusive fetch request based on its intervention manager rejection instructions. These nodes may either disable themselves or demote themselves to a non-intervention manager copy, depending on design details. For example, the chip intervention manager on the home chip of an exclusive fetch request will not reject the exclusive fetch request indefinitely because it will never get a chance to find a top-level intervention manager node in a higher scope.

[0058] In one example, the non-intervention manager / subordinate intervention manager process 600 obtains 610 (e.g., receives, provides, fetches, etc.) a remote exclusive fetch request. For example, it receives a broadcast request from a node requesting an exclusive fetch, the request including a state indication of the intervention manager node. In this example, the state indication is of an intervention manager at a selected level or scope (e.g., top level or global level), including, for example, GIM accepted and / or GIM rejected.

[0059] Based on receiving the request, process 600 determines 620 whether the node receiving the request is an intervention manager node. This determination is made, for example, by checking the cache directory entry for the requested cacheline, which indicates the intervention manager for the cacheline. If the node is an intervention manager node, process 600 further determines 630 whether the exclusive fetch request is from a scope for which this intervention manager node has authority. This is determined, for example, by information in the exclusive fetch request that indicates where in the system the request originated and based on its own directory state for the cacheline. If the exclusive fetch request is from a scope for which this intervention manager node has authority, the intervention manager node accepts 640 the request and invalidates its copy of the cacheline.

[0060] In one example, if the node is not an intervention manager node 620 or the exclusive fetch request is not from a scope for which this intervention manager node has authority 630, the process 600 determines 650, for example, whether the exclusive fetch request includes an indication that a global intervention manager (e.g., the highest-authority intervention manager in a nested or multiple levels of intervention managers) has accepted the exclusive fetch request. In one example, this determination is made by checking a GIM acceptance indicator included in the request. If the acceptance indicator is set to a selected value, such as 1, the global intervention manager accepted the request. If the global intervention manager accepted the request, the non-intervention manager node or subordinate intervention manager node accepts 660 the request and invalidates its copy of the cache line. However, if the global intervention manager node did not accept the request, the process 600 further checks 670 whether the global intervention manager node rejected the request. In one example, this determination is made by checking a GIM rejection indicator included in the request. If the reject indicator is set to a selected value, such as 1, the global intervention manager node rejected the request. If the global intervention manager node rejected the request, the non-intervention manager node or subordinate intervention manager node rejects 680 the request and does not invalidate its copy of the cache line. Otherwise, the non-intervention manager node or subordinate intervention manager node accepts 660 the request and invalidates its copy of the cache line.

[0061] One example of a pictorial illustration of aspects of the present invention is described with reference to Figures 7A-7F. Referring initially to Figure 7A, a computing environment 700 includes multiple nodes, including, for example, node 702 broadcasting an exclusive fetch (FEx) request, multiple nodes 704-708 that are non-intervention manager nodes at the time of the broadcast, node 710 requesting read-only fetch (RO Fth) access to the cacheline, and node 712 that is an intervention manager node responsible for accepting / rejecting requests for the cacheline, including exclusive and read-only fetch requests, at the time of the broadcast. In this example, the exclusive fetch request is broadcast 720 with an intervention manager reject indicator set to a selected value, e.g., 0, indicating that the intervention manager has not rejected the request, and an intervention manager accept indicator set to a selected value, e.g., 0, indicating that the intervention manager has not yet accepted the request. With such instructions, in this example, nodes 704-708 accept the exclusive fetch request and invalidate (INV) their copies of the cache line, as shown to the right of the arrows. Further, in this example, node 712, acting as an intervention manager node, accepts node 710's read-only fetch request and therefore rejects the exclusive fetch request. In one example, based on accepting the read-only fetch request, node 712 downgrades to a non-intervention manager node 712 (e.g., by changing the manager instruction in its cache directory entry for the cache line), also shown to the right of the arrows, and node 710 becomes an intervention manager node 710 (e.g., by changing the manager instruction in its cache directory entry for the cache line).

[0062] Because the exclusive fetch was not accepted by the intervention manager node, it is rebroadcast. In one example, referring to FIG. 7B , node 702 rebroadcasts an exclusive fetch request in which the intervention manager reject indicator is set to a selected value, such as 1, indicating that the intervention manager rejected the request, and the intervention manager accept indicator is set to a selected value, such as 0, indicating that the intervention manager did not accept the request. Further, in this example, based on the previous broadcast ( FIG. 7A ), nodes 704 and 708 continue to hold invalidated copies of the cacheline, node 710 is an intervention manager node, and node 712 remains a non-intervention manager node. Additionally, node 706, which previously invalidated its copy of the cacheline based on its previous acceptance of an exclusive fetch request, is requesting a read-only fetch copy of the cacheline. Based on the request, the exclusive fetch is again denied by the intervention manager node (e.g., intervention manager node 710), which accepts the read-only request by node 706. Thus, as shown to the right of the arrows, in one example, intervention manager node 710 becomes a non-intervention manager node and node 706 becomes an intervention manager node.

[0063] Again, because the exclusive fetch was not accepted by the intervention manager node, it is rebroadcast. In one example, referring to FIG. 7C , node 702 rebroadcasts an exclusive fetch request in which the intervention manager reject indicator is set to a selected value, such as 1, indicating that the intervention manager rejected the request, and the intervention manager accept indicator is set to a selected value, such as 0, indicating that the intervention manager did not accept the request. Further, in this example, based on the previous broadcast, node 704 continues to hold an invalidated copy of the cacheline, node 706 is an intervention manager node, and nodes 710 and 712 remain non-intervention manager nodes. Additionally, node 708, which previously invalidated its copy of the cacheline based on its previous acceptance of an exclusive fetch request, is requesting a read-only fetch copy of the cacheline. Based on the request, the exclusive fetch is rejected by intervention manager node 706, which accepts the read-only request by node 708. Thus, as shown to the right of the arrows, the intervention manager node 706 becomes a non-intervention manager node and node 708 becomes an intervention manager node.

[0064] Again, because the exclusive fetch was not accepted by the intervention manager node, it is rebroadcast. In one example, referring to FIG. 7D , node 702 rebroadcasts an exclusive fetch request in which the intervention manager reject indicator is set to a selected value, such as 1, indicating that the intervention manager rejected the request, and the intervention manager accept indicator is set to a selected value, such as 0, indicating that the intervention manager did not accept the request. Further, in this example, based on the previous broadcast ( FIG. 7C ), node 708 is an intervention manager node, and nodes 706, 710, and 712 remain non-intervention manager nodes. Additionally, node 704, which previously invalidated its copy of the cache line based on its previous acceptance of an exclusive fetch request, is requesting a read-only fetch copy of the cache line. Based on the request, the exclusive fetch is rejected by intervention manager node 708, which accepts the read-only request by node 704. Thus, as shown to the right of the arrow, the intervention manager node 708 becomes a non-intervention manager node and node 704 becomes an intervention manager node.

[0065] Again, because the exclusive fetch was not accepted by the intervention manager node, it is rebroadcast. In one example, referring to FIG. 7E, node 702 rebroadcasts the exclusive fetch request, in which the intervention manager reject indicator is set to a selected value, such as 1, indicating that the intervention manager rejected the request, and the intervention manager accept indicator is set to a selected value, such as 0, indicating that the intervention manager did not accept the request. Further, in this example, based on the previous broadcast (FIG. 7D), node 704 is an intervention manager node, and nodes 706, 708, 710, and 712 are non-intervention manager nodes. Based on the exclusive fetch request and the absence of contention on the line (e.g., no node is requesting the cache line), the exclusive fetch request is accepted by intervention manager node 704. Thus, as shown to the right of the arrow, intervention manager node 704 invalidates its copy of the cache line and becomes a non-intervention manager node, and node 702 acquires intervention manager node authority for the exclusive fetch.

[0066] Based on the above, the exclusive fetch is rebroadcast. In one example, referring to Figure 7F, the intervention manager node 702, which currently has authority for the exclusive fetch, broadcasts an exclusive fetch request with an intervention manager acceptance indicator set to a selected value, such as 1, indicating that the intervention manager has accepted the request. Based on the broadcast, the broadcasting node 702 becomes the intervention manager node, node 704 continues to hold an invalid copy of the cache line, and the non-intervention manager nodes 706-712 invalidate their copies of the cache line.

[0067] Another example of broadcasting is shown in FIG. 8. In this example, a computing environment 800 has multiple nodes, including a broadcast node 802, that broadcasts an exclusive fetch for a cacheline, in which the intervention manager reject indicator is set to a selected value, such as 0, indicating that the intervention manager is not rejecting the request. The multiple nodes further include four non-intervention manager nodes 804-810 and an intervention manager node 812. In this example, there is no contention for the cacheline, so intervention manager node 812 accepts the broadcast and invalidates its cached copies of the cacheline, as shown to the right of the arrow. Furthermore, node 802 becomes the intervention manager node and can obtain the exclusive fetch. Other nodes (e.g., nodes 804-810) also accept the exclusive fetch request and invalidate their copies of the cacheline.

[0068] One example of the ability to protect shared cache lines from unnecessary invalidation is described herein. In one or more aspects, when an exclusive fetch of a cache line is denied by an intervening manager node, as many copies of the conflicting cache line as possible are preserved. In one example, no special action is taken on the initial broadcast of the exclusive fetch because it is unknown at this point whether the line is in conflict. However, upon rebroadcast of the exclusive fetch, non-intervening manager nodes will deny the exclusive fetch request and therefore not invalidate their copies of the cache line until the exclusive fetch request is accepted by the intervening manager node.

[0069] In one example, upon the initial broadcast of the exclusive fetch request, at least most (and possibly all) of the non-intervening manager nodes that received the initial broadcast will invalidate their copies of the requested cache line (some may be out of resources). However, according to one or more aspects of the present invention, upon rebroadcast, the non-intervening manager nodes (i.e., their conflicting cache lines) are protected from invalidation based on the denial of the exclusive fetch by the intervening manager node. Because the line is under contention, new non-intervening manager nodes are created after the initial broadcast of the exclusive fetch request (e.g., their copies of the line are fetched in read-only mode). Without one or more aspects of the present invention, these non-intervening manager nodes (e.g., their copies of the cache line) would be repeatedly invalidated by retries of the exclusive fetch. These nodes would need to refetch the line, further increasing contention and reducing the likelihood that the exclusive fetch would be accepted by the intervening manager. However, in accordance with one or more aspects of the present invention, these unintervention manager nodes will not accept the exclusive fetch request until a predefined event, e.g., an exclusive fetch request, is accepted by an intervening manager node. When the predefined event occurs, e.g., an exclusive fetch request is accepted by an intervening manager node, the unintervention manager nodes accept the exclusive fetch request and then invalidate their copies of the cache line.

[0070] In one or more aspects, the exclusive fetch request to be broadcast to multiple nodes of the computing environment includes state information about the exclusive fetch request. For example, the state information illustratively indicates whether the exclusive fetch request was accepted by the intervention manager node, whether it was rejected by the intervention manager node, or neither. The unintervention manager nodes use this information to decide whether to accept or reject the exclusive fetch request. If the exclusive fetch request is rejected by the intervention manager node, the unintervention manager nodes also reject the exclusive fetch request (at least until it is accepted by the intervention manager node). If the exclusive fetch request is accepted by the intervention manager node, the unintervention manager nodes may accept the exclusive fetch request and then invalidate their copies of the requested line.

[0071] In one or more aspects, the denial indication may be further refined to indicate denial in selected circumstances (e.g., if the intervention manager node was busy for the target line of the exclusive fetch), except, as an example, if the denial by the intervention manager node was due to a lack of resources to service the request.

[0072] In one or more aspects, protection is extended to computing environments with multiple scopes of intervention manager authority.

[0073] In one or more aspects, processing within a computing environment is facilitated. A node of the computing environment obtains an exclusive fetch request for a cache line shared by at least the node and a manager node of the computing environment. The exclusive fetch request includes a state indication regarding processing of the exclusive fetch request by the manager node. The node processes the exclusive fetch request based on the state indication included in the exclusive fetch request regarding processing of the exclusive fetch request by the manager node.

[0074] By including a state indication in the exclusive fetch request, the node can decide how to handle the request. For example, the node can accept the request based on the state indication and therefore invalidate its copy of the cache line; or the node can reject the request based on the state indication and therefore not invalidate its copy of the cache line. This facilitates processing by performing cache line invalidation in selected circumstances, such as based on the state indication, rather than invalidating every time the exclusive fetch request is rebroadcast. This reduces the number of cache line invalidations, thereby allowing copies of the cache line to be protected.

[0075] In one embodiment, the status indication includes an acceptance indicator that indicates whether the manager node has accepted the exclusive fetch request. This facilitates processing by indicating to the node when the manager node has accepted the exclusive fetch request. Thus, the node can also accept the exclusive fetch request and invalidate its copy of the cache line, rather than invalidating each time the exclusive fetch is retried. This saves processing cycles and reduces system memory accesses.

[0076] In one embodiment, the status indication further includes a rejection indicator that indicates whether the manager node rejected the exclusive fetch request. This facilitates processing by indicating to the node when the manager node rejected the exclusive fetch request, so that the node can also reject the exclusive fetch request and not invalidate its copy of the cache line. This facilitates processing by reducing the number of times a node invalidates a cache line.

[0077] In one embodiment, the status indication includes a denial indicator that indicates whether the manager node has denied the exclusive fetch request. This facilitates processing by indicating to the node when the manager node has denied the exclusive fetch request, so that the node can also deny the exclusive fetch request and not invalidate its copy of the cache line. This facilitates processing by reducing the number of times a node invalidates a cache line.

[0078] In one embodiment, the rejection indicator also indicates the reason for rejecting the exclusive fetch request. This facilitates processing by indicating to the node when the manager node rejected the exclusive fetch request for a selected reason, so the node can decide to reject the exclusive fetch request and not invalidate its copy of the cache line. This facilitates processing by reducing the number of times a node invalidates a cache line.

[0079] In one embodiment, the process includes determining, based on the denial indicator, that the manager node has denied the exclusive fetch request for a selected reason. Based on determining that the manager node has denied the exclusive fetch request for the selected reason, the node denies the exclusive fetch request. Using the denial indicator provided with the exclusive fetch request, the node can determine how to handle the request. For example, the node can deny the request based on the denial indicator and therefore not invalidate copies of the cache line. This facilitates processing by not performing cache line invalidation in certain situations, such as based on a manager node's denial of the exclusive fetch request for a selected reason. This reduces the number of cache line invalidations, thereby allowing copies of the cache line to be protected.

[0080] In one embodiment, the process includes determining, based on the state indication, that the manager node has denied the exclusive fetch request. Based on determining that the manager node has denied the exclusive fetch request, the node denies the exclusive fetch request. Using the state indication provided with the exclusive fetch request, the node can determine how to handle the request. For example, the node can deny the request based on the state indication indicating that the manager node has denied the exclusive fetch request and therefore not invalidate copies of the cache line. This facilitates processing by not performing cache line invalidations in certain situations, such as based on denial of the exclusive fetch request by the manager node. This reduces the number of cache line invalidations, thereby allowing copies of the cache line to be protected.

[0081] In one embodiment, a computing environment includes multiple nodes that receive an exclusive fetch request. The denial is performed by the multiple nodes that receive the exclusive fetch request based on determining that a manager node has denied the exclusive fetch request. Using a status indication provided with the exclusive fetch request, the nodes can determine how to handle the request. For example, the nodes can deny the request based on a status indication indicating that a manager node has denied the exclusive fetch request, and therefore not invalidate their cache line copies. This facilitates processing by not invalidating cache line copies in certain situations, such as based on a manager node's denial of the exclusive fetch request. This reduces the number of cache line invalidations, thereby protecting cache line copies.

[0082] In one embodiment, the process includes determining, based on the state indication, that the manager node has accepted the exclusive fetch request. Based on determining that the manager node has accepted the exclusive fetch request, the node accepts the exclusive fetch request. By using the state indication to determine that the manager node has accepted the exclusive fetch request, the node can also accept the exclusive fetch request and invalidate its copy of the cache line, rather than invalidating each time the exclusive fetch is retried. This saves processing cycles and reduces system memory accesses.

[0083] In one embodiment, the computing environment includes multiple levels of manager nodes, and the state indication on which processing is based is the state indication of a selected manager node on a selected level of the multiple levels. By including an appropriate state indication in the exclusive fetch request, the node can decide how to process the request. For example, the node can accept the request based on the state indication and therefore invalidate its copy of the cache line; or the node can reject the request based on the state indication and therefore not invalidate its copy of the cache line. This facilitates processing by performing cache line invalidation in selected circumstances, such as based on the state indication, rather than invalidating every time the exclusive fetch request is rebroadcast. This reduces the number of cache line invalidations, thereby allowing cache line copies to be protected.

[0084] While various examples have been provided herein, other examples / embodiments are possible. For example, other situations may be provided for selective rejection. Furthermore, additional, fewer, and / or other nodes may receive the broadcast than those described herein. Additionally, the exclusive fetch request may include additional, fewer, and / or other indicators than those described herein, and / or the indicators may provide additional information. Many variations are possible.

[0085] One or more aspects of the present invention relate to computer technology and facilitate processing within a computer and improve its performance. For example, cache invalidation is reduced, memory accesses and computer resource usage are reduced, and processing and / or processing speed within a processor / computer / computing environment is improved. Processing within a processor, computer system, and / or computing environment is improved.

[0086] Other aspects, variations, and / or embodiments are possible.

[0087] In addition to the above, one or more aspects may be provided, offered, deployed, managed, serviced, etc. by a service provider offering to manage a customer environment. For example, a service provider may create, maintain, support, etc. computer code and / or computer infrastructure that implements one or more aspects for one or more customers. In return, the service provider may receive payments from the customer based, by way of example, on a subscription and / or commission agreement. Additionally or alternatively, the service provider may receive payments from the sale of advertising content to one or more third parties.

[0088] In one aspect, an application may be deployed to perform one or more embodiments. As one example, deploying an application includes providing a computer infrastructure operable to perform one or more embodiments.

[0089] In a further aspect, a computing infrastructure is deployed that includes computer-readable code integrated into a computing system, where the code in combination with the computing system is capable of performing one or more embodiments.

[0090] In yet a further aspect, a process for integrating a computing infrastructure may be provided, comprising integrating computer-readable code into a computer system including a computer-readable medium, wherein the computer medium includes one or more embodiments, and the code combined with the computer system is capable of performing one or more embodiments.

[0091] Although various embodiments are described above, these are merely examples. For example, other indicators and / or broadcast requests may be used. Many variations are possible.

[0092] Various aspects and embodiments are described herein. Moreover, many variations are possible without departing from the scope of the present invention. It should be noted that, unless otherwise contradictory, each aspect or feature described and / or claimed herein, and variations thereof, may be combined with any other aspect or feature.

[0093] The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting. As used herein, the singular forms "a," "an," and "the" are intended to include the plural forms as well, unless the context clearly dictates otherwise. It will be further understood that, as used herein, the terms "comprise" and / or "comprising" specify the presence of stated features, integers, steps, operations, elements, and / or components, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof.

[0094] Corresponding structure, materials, acts, and equivalents of all means- or step-plus-function elements in the following claims are intended to include, where applicable, any structure, material, or act for performing a function in combination with other claimed elements as specifically claimed. The description of one or more embodiments has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the disclosed form. Many modifications and variations will be apparent to those skilled in the art. The embodiments have been chosen and described to best explain various aspects and practical applications, and to enable others skilled in the art to understand various embodiments with various modifications as suitable for the particular use contemplated.

Claims

1. 1. A computer program product for facilitating processing within a computing environment, comprising: One or more computer-readable storage media and program instructions collectively stored on the one or more computer-readable storage media for performing a method, the method comprising: a node of the computing environment obtaining an exclusive fetch request for a cache line shared by at least the node and a manager node of the computing environment, the exclusive fetch request including a state indication regarding processing of the exclusive fetch request by the manager node; and the node processing the exclusive fetch request based on the state indication included in the exclusive fetch request regarding the manager node's processing of the exclusive fetch request.

1. A computer program product comprising:

2. The computer program product of claim 1 , wherein the status indication includes an acceptance indicator that indicates whether the manager node has accepted the exclusive fetch request.

3. The computer program product of claim 2 , wherein the status indication further comprises a denial indicator that indicates whether the manager node denied the exclusive fetch request.

4. The computer program product of claim 1 , wherein the status indication includes a denial indicator that indicates whether the manager node denied the exclusive fetch request.

5. The computer program product of claim 4 , wherein the denial indicator further indicates a reason why the exclusive fetch request was denied.

6. The process comprises: determining, based on the denial indicator, that the manager node denied the exclusive fetch request for a selected reason; and denying the exclusive fetch request based on the node determining that the manager node denied the exclusive fetch request for the selected reason.

6. The computer program product of claim 5, comprising:

7. The process comprises: determining, based on the status indication, that the manager node has denied the exclusive fetch request; and the node rejecting the exclusive fetch request based on determining that the manager node rejected the exclusive fetch request.

10. The computer program product of claim 1, comprising:

8. 8. The computer program product of claim 7, wherein the computing environment includes a plurality of nodes that receive the exclusive fetch request, and wherein the denial is performed by the plurality of nodes that receive the exclusive fetch request based on determining that the manager node has denied the exclusive fetch request.

9. The process comprises: determining, based on the status indication, that the manager node has accepted the exclusive fetch request; and the node accepting the exclusive fetch request based on determining that the manager node has accepted the exclusive fetch request.

10. The computer program product of claim 1, comprising:

10. 2. The computer program product of claim 1, wherein the computing environment includes multiple levels of manager nodes, and the state indication on which the processing is based is the state indication of a selected manager node on a selected level of the multiple levels.

11. 1. A computer system for facilitating processing within a computing environment, comprising: memory; and a processor in communication with the memory wherein the computer system is configured to execute a method, the method comprising: a node of the computing environment obtaining an exclusive fetch request for a cache line shared by at least the node and a manager node of the computing environment, the exclusive fetch request including a state indication regarding processing of the exclusive fetch request by the manager node; and the node processing the exclusive fetch request based on the state indication included in the exclusive fetch request regarding the manager node's processing of the exclusive fetch request. A computer system comprising:

12. 12. The computer system of claim 11, wherein the status indication includes an acceptance indicator that indicates whether the manager node has accepted the exclusive fetch request.

13. 12. The computer system of claim 11, wherein the status indication includes a denial indicator that indicates whether the manager node denied the exclusive fetch request.

14. The process comprises: determining, based on the status indication, that the manager node has denied the exclusive fetch request; and the node rejecting the exclusive fetch request based on determining that the manager node rejected the exclusive fetch request.

12. The computer system of claim 11, comprising:

15. The process comprises: determining, based on the status indication, that the manager node has accepted the exclusive fetch request; and the node accepting the exclusive fetch request based on determining that the manager node has accepted the exclusive fetch request.

12. The computer system of claim 11, comprising:

16. 1. A computer-implemented method for facilitating processing in a computing environment, comprising: a node of the computing environment obtaining an exclusive fetch request for a cache line shared by at least the node and a manager node of the computing environment, the exclusive fetch request including a state indication regarding processing of the exclusive fetch request by the manager node; and the node processing the exclusive fetch request based on the state indication included in the exclusive fetch request regarding the manager node's processing of the exclusive fetch request.

1. A computer-implemented method comprising:

17. 17. The computer-implemented method of claim 16, wherein the status indication includes an acceptance indicator that indicates whether the manager node has accepted the exclusive fetch request.

18. 17. The computer-implemented method of claim 16, wherein the status indication includes a rejection indicator that indicates whether the manager node rejected the exclusive fetch request.

19. The process comprises: determining, based on the status indication, that the manager node has denied the exclusive fetch request; and the node rejecting the exclusive fetch request based on determining that the manager node rejected the exclusive fetch request.

17. The computer-implemented method of claim 16, comprising:

20. The process comprises: determining, based on the status indication, that the manager node has accepted the exclusive fetch request; and the node accepting the exclusive fetch request based on determining that the manager node has accepted the exclusive fetch request.

17. The computer-implemented method of claim 16, comprising: