Dynamic extension of cache coherency listen filter entries

By using a hybrid snooping filter technique, additional SFT entries are dynamically allocated and combined with precise and imprecise tracking modes, the problem of excessive snooping in multiprocessor systems is solved, memory access latency and power consumption are reduced, and hardware area is optimized.

CN121002489APending Publication Date: 2025-11-21MICROSOFT TECHNOLOGY LICENSING LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202480027669.1
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-05-30
Filing Date
2024-05-16
Publication Date
2025-11-21

AI Technical Summary

Technical Problem

In multiprocessor systems, existing technologies suffer from problems such as increased memory access latency, interconnect bandwidth consumption, and energy waste due to over-sniffing, especially when multiple agents share cache data. Exact sniffing filters have large areas, while inaccurate sniffing filters sniff frequently.

Method used

A hybrid snooping filter technique is employed, which reduces over-snooping by storing n agent IDs in the basic SFT entry and dynamically allocating additional SFT entries when more than n agents share cogran, combining precise and imprecise tracking modes.

Benefits of technology

It effectively reduces excessive snooping, lowers memory access latency and power consumption, optimizes hardware area, and improves the efficiency of cache consistency management.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN121002489A_ABST
    Figure CN121002489A_ABST
Patent Text Reader

Abstract

The disclosed method generates a base listen filter (SFT) entry for a coherency particle (cogram) in a proxy cache. The method comprises the following steps: determining the number of agents for storing copies of cogran; comparing a number of agents that store a copy of the cogran with a number of a plurality of agent IDs tracked in a trace information field of the base SFT entry; and in response to determining that the number of agents holding the copy of the cogram is greater than the number of the plurality of agent IDs tracked in the trace information field of the base SFT entry, selecting a second SFT entry as an additional SFT entry configured to store part of a trace vector, where each bit of the trace vector indicates a cache validity state of the cogram of the related agent.
Need to check novelty before this filing date? Find Prior Art

Description

Background Technology

[0001] Processor-based devices may include multiple processing elements (PEs) (e.g., processor cores as a non-limiting example), each PE providing one or more local caches for storing frequently accessed data. Because multiple PEs of a processor-based device can share memory resources (such as system memory), multiple copies of shared data read from a given memory address can coexist in both system memory and the PE's local cache. Therefore, to ensure that all PEs have a consistent view of the shared data, processor-based devices provide support for cache coherency protocols, enabling local changes to shared data within one PE to be propagated to other PEs. Summary of the Invention

[0002] The described technique provides a method comprising: generating a base listener filter (SFT) entry for a cogran consistency granule in an agent cache, the base SFT entry including a tracking_information field configured to track multiple agent IDs, each agent ID identifying an agent holding a copy of the cogran; determining the number of agents holding cogran copies; comparing the number of agents holding cogran copies with the number of multiple agent IDs tracked in the tracking_information field of the base SFT entry; and, in response to determining that the number of agents holding cogran copies is greater than the number of multiple agent IDs tracked in the tracking_information field of the base SFT entry, selecting a second SFT entry as an additional SFT entry, wherein the additional SFT entry is configured to store a portion of a tracking vector, wherein each bit of the tracking vector indicates the cache validity status of the cogran for the relevant agent.

[0003] This summary is provided to introduce, in a simplified form, some concepts further described in the detailed embodiments below. This summary is not intended to identify key or essential features of the claimed subject matter, nor is it intended to limit the scope of the claimed subject matter.

[0004] This article also describes and narrates other implementation methods. Attached Figure Description

[0005] Figure 1 The diagram illustrates how a system uses a listener filter to provide cache consistency.

[0006] Figure 2 The illustration shows an example structure of a listening filter entry that implements the techniques disclosed herein.

[0007] Figure 3The illustration shows an example tracing pattern for logical SFT entries in the cache coherence system disclosed in this paper.

[0008] Figure 4 The illustration shows example values ​​for the tracking information field of the logical SFT entry in the cache coherence system disclosed in this paper.

[0009] Figure 5 The illustration shows example values ​​for the entry-state field of a logical SFT entry in the cache consistency system disclosed in this paper.

[0010] Figure 6 The illustration shows an example operation for an SFT lookup of a cogran group.

[0011] Figure 7 The diagram illustrates an example operation for determining which operation flow to choose for an SFT update.

[0012] Figure 8 The illustration shows an example operation when the agent newly captures a cogran copy that is not currently being tracked by SFT.

[0013] Figure 9 The illustration shows an example operation when the agent newly captures a cogran copy currently being tracked by SFT.

[0014] Figure 10 The illustration shows an example operation when the agent communicates that it is evicting cogran from its own cache.

[0015] Figure 11 The illustration shows an example operation where the proxy might need exclusive access to cogran.

[0016] Figure 12 The illustration shows an example system that can be used to implement the high-latency query optimization system disclosed in this paper. Detailed Implementation

[0017] The implementation disclosed herein presents a multiprocessor system employing hardware (HW) to enforce cache coherency. When an agent (such as a CPU, GPU, etc.) wants to access a memory location, the HW automatically determines whether another agent currently holds a copy of that memory location. If the access is a read and the memory location is cached by another agent, the system memory may be outdated; in this case, the access must be completed by retrieving the data from the other agent's cache. If the access is a write, typically a copy of another cached item must first be written back to system memory. The memory block that maintains the HW-enforced cache coherency is called a cogran, and the system can match its cogran size to the cache line size.

[0018] In some implementations, the system may maintain a list of which agents currently cache which cograns. In other implementations, instead of maintaining a centralized consistency directory, all agents are queried during the processing of a requested memory access to determine if any agent holds a copy of the cogran in its cache. This query is often referred to as snooping. Over-snooping occurs when an agent is snooped to search for a cogran in its cache and that agent does not currently hold a copy of the cogran. This snooping is functionally useless and unnecessarily interferes with the agent. The system disclosed herein reveals an advantageous implementation using a Snoop Filter (SFT) to help reduce over-snooping. This implementation reduces the costs of over-snooping, including the latency added by memory accesses, interconnect bandwidth consumption without functional benefit, and energy wasted performing unnecessary cache lookups at the over-snooped agent. A snoop filter can be thought of as a higher-level, inclusive, set-associative cache that has no data and whose purpose is to track the entire set of cograns held by the lower-level cache(s) that need to maintain cache consistency.

[0019] An imprecise snooping filter is a filter that tracks whether a particular agent has cached cogran at a given point in time. This SFT is smaller than other types of SFTs, but the lack of precision means that when a snooping request is needed, all consistency caches in the system must be snooped. This lack of precision also means that the SFT typically loses the ability to detect when cogran has been evicted from all consistency caches.

[0020] Exact SFT filters can use vectors to precisely track which agents have cached copies of a cogran. Exact SFT requires a relatively large area to implement because it tracks a large number of states, with each agent requiring 1 bit to track each cogran. In this implementation, when an agent obtains a copy of a cogran to write to its cache, it sets the corresponding vector bit in the agent's SFT entry for that cogran. When the agent later evicts that cogran, its corresponding vector bit in the SFT entry for that cogran is cleared. This has several advantages over inaccurate SFT: (a) only the exact agents that need to be listened to are listened to; (b) the listening scope can be further reduced over time because agents evict cograns from their caches, and the SFT is updated accordingly (this only applies when an agent communicates eviction to the SFT).

[0021] In a hybrid implementation of SFT, precise tracking (often 2 to 3) of agents can be achieved by recording the agent ID (AID) in the SFT cogran tracking entry. The AID can be a unique identifier for each agent tracked by the SFT. For example, the AID can be an encoding of the SFT vector location where the agent should be set. Alternatively, the AID can be the agent's interconnect address—the ID the interconnect uses to send messages to that agent. When >(n) agents have cached copies of the cogran, SFT switches from AID tracking to imprecise tracking. When the hybrid implementation is in AID tracking mode, there is no oversniffing because the SFT entry knows exactly which agents to listen to. On the other hand, when the hybrid implementation is in imprecise tracking mode, the SFT entry indicates that all agents need to be listened to if the cogran is currently held or tracked by the SFT. When the system has many consistent agents (e.g., 128), this approach uses less HW than precise vector SFT—recording (n) AIDs (n small enough) requires fewer state bits than recording a large vector.

[0022] In systems with many consistent agents (e.g., 128), oversniffing due to imprecise tracking is very costly in terms of consumed structure bandwidth and wasted energy. Furthermore, the large SFT required for precise tracking is very expensive in terms of area, which also leads to increased propagation distance for sniffing (and other) messages. The workload of many agents sharing data structures or instruction pages can quickly exhaust the precise AID tracking capabilities of a hybrid approach and may lead to more frequent use of imprecise tracking mode. While a certain degree of oversniffing is tolerable, the sniffing filter management itself incurs oversniffing overhead because various imprecise tracking modes typically cannot recover to precise tracking when a cogran is evicted. Specifically, when a sniffing filter cannot know which cograns are no longer cached by any agent, it may send "filter refresh" sniffs more frequently to free up space in the SFT itself to accommodate newly tracked cograns.

[0023] Figure 1An implementation of a cache coherence system 100 using a sniffing filter is disclosed, which improves upon one or more of the above implementations. Specifically, the cache coherence system 100 can be implemented on a multi-core architecture including multiple central processing unit (CPU) cores 102 and 104, a graphics processing unit (GPU) 106, one or more input / output (I / O) agents 108, serialization points (PoS) 110, and memory 114. While this example illustrates two CPU cores and one GPU, it is to be understood that any number of CPU cores and CPUs can be used without departing from the scope of this disclosure. Examples of I / O agents 108 include, but are not limited to, Industry Standard Architecture (ISA) devices, Peripheral Component Interconnect (PCI) devices, PCI-X devices, High Speed ​​PCI devices, Universal Serial Bus (USB) devices, Advanced Technology Attachment (ATA) devices, Small Computer System Interface (SCSI) devices, and InfiniBand devices.

[0024] Processing unit cores 102, 104, 106, and I / O agents 108 can be referred to as agents 102-108, each referenced by an agent ID (AID). These agents 102-108 can have multiple levels of internal caches, such as L1, L2, and L3 caches. When agents 102-108 cache cograns in their internal caches, a listener filter (SFT) 150 can track these cograns and which of the agents 102-108 have cached each cogran. Any of the agents 102-108 can issue cogran or non-cogran requests, and the PoS 110 uses the listener filter 150 to ensure the serialization of memory access requests to provide memory consistency.

[0025] For example, PoS 110 receives a consistency request 120 from CPU 102. In response to the consistency request 120, PoS 110 issues a listen command 122 to CPU core 104, GPU 106, and I / O agent 108. CPU core 104, GPU 106, and I / O agent 108 can provide the requested consistency information back to PoS 110. When sending listen 122, PoS 110 references SFT 150.

[0026] SFT 150a illustrates an example implementation of SFT 150. SFT 150a includes data structures for tracking addresses and (multiple) proxies 102-108 that have obtained a copy of each cogran currently cached by proxies 102-108. As indicated by n-array 154, SFT 150a can be an n-way filter. Listener filter 150a can include an array of entries 152, the contents of which will be further described below. Each entry in entry 152 can include a tag field, such as... Figure 2 The label field 218 disclosed herein is used to store the label portion that identifies the physical address (PA) of the cogran. For example, for a cogran size of 64 bytes, and an SFT as a 16-way group-associative SFT, bits 15:6 of the PA can be used to select an SFT group, and bits 47:16 of the PA can be stored as a label in the label field 218 of the SFT entry 152. When SFT 150a needs to perform a lookup to see if the PA of the cogran exists in SFT 150a, it uses PA[15:6] to select one of the 16 groups. Subsequently, for the selected group, SFT 150a can compare 156 PA[47:16] with the label values ​​stored in the label field 218 of the 16 SFT entries 152 in the selected group. If a match is found in the label field 218 of any of the 16 SFT entries in the selected group, then its path (e.g., path 5) is currently tracking the cogran being looked up.

[0027] In the implementation of SFT 150a disclosed herein, logical entry 152 can be configured to store in the underlying SFT entry 162. n One proxy ID (AID), and more than n In the case of multiple agents sharing cogran, an additional 164 SFT entries are dynamically allocated in the SFT group. For example, in one implementation, nIt can be three (3), such that the base SFT entry 162 is configured to store 3 AIDs, and additional SFT entries 164 are dynamically allocated if the cogran is shared by more than 3 agents. Additionally, when additional SFT entries 164 are dynamically allocated, the base SFT entry 162a can store a portion of the SFT entry's tracking vector, while the additional SFT entry 164 can store the remaining portion of the SFT entry's tracking vector. Here, the tracking vector includes multiple validity bits, where the length of the tracking vector is the maximum number of agents 102-108 that can obtain the cogran corresponding to the tag field of the SFT entry. Therefore, there is a 1:1 correspondence between each agent instance and each bit of the tracking vector. In one implementation, the tracking vector can have 128 bits, thereby tracking 128 agents 102-108 for the cogran corresponding to the tag field of the SFT entry. Each validity bit can take a valid or invalid value to indicate the validity of the cogran for the agent identified by the validity bit. Cache validity status .

[0028] For example, a valid value for the validity bit can indicate that the agent 102-108 corresponding to that validity bit has cached the cogran corresponding to the tag field of the SFT entry in its private cache, referred to as the agent's efficient Cache validity status On the other hand, an invalid value for the validity bit indicates that the agent 102-108 corresponding to that validity bit did not cache the cogran corresponding to the tag field of the SFT entry in its private cache, referred to as the invalidation of agent 102-108. Invalid cache validity status The following text is for reference only. Figure 4 Further description of the tracking vector and validity bit values.

[0029] Specifically, the base SFT entry 162a stores the state information of the SFT entry, and the additional SFT entry 164 can provide the base SFT entry 162a with the state information contained in the base SFT entry 162a. n In addition to the AID, there is additional storage required for fine-grained tracking of additional agents (e.g., 128 agents) when widely sharing cogran. In other words, a logical SFT entry in SFT 150a can include a base SFT entry 162 (capable of tracking up to...). n (A single AID) or a combination of a basic SFT entry 162a and an additional SFT entry 164 (capable of tracking each agent in the system that may be consistently cached as cogran).

[0030] When a logical SFT entry comprises only one base SFT entry 162, the entry_state field 166 of SFT entry 162 can be IDLE or SEARCHABLE, and the tracking_mode field 168 of SFT entry 162 can be one of NA (if entry_state = IDLE), AID, or IMPRECISE. On the other hand, when a logical SFT entry comprises a combination of a base SFT entry 162a and an additional SFT entry 164, the entry_state field 166 of the base SFT entry 162a can be changed to SEARCHABLE, and the tracking_mode field 168 of the base SFT entry 162a can be changed to VECTOR. In this case, the entry_state field 166 of the additional SFT entry 164 is set to EXTRA, and the tracking_mode field 168 of the additional SFT entry 164 is set to NA.

[0031] The following text is in Figure 2 Further detailed illustrations are provided of the basic SFT entries 162 and 162a, as well as the detailed structure of the additional SFT entry 164. The implementation of SFT entry 152 disclosed herein allows the cache coherence system 100 to take advantage of the fact that most cogran will not be cached by more than a few agents 104-108 simultaneously.

[0032] Figure 2 The diagram illustrates the structure of a logic eavesdropping filter entry 200 that implements the technology disclosed herein. Specifically, the logic eavesdropping filter entry 200 can be configured to store in the underlying SFT entry 262. n One proxy ID (AID), and more than n In the case of multiple agents sharing cogran, additional SFT entries 264 are dynamically allocated in the SFT group. For example, in one implementation, n It can be three (3), such that the base SFT entry 262 is configured to store 3 AIDs, and in the case that cogran is shared by more than 3 agents, the additional SFT entry 264 is dynamically allocated. Additionally, when the additional SFT entry 264 is dynamically allocated, the base SFT entry 262a may store a portion of the tracking vector of the SFT entry, while the additional SFT entry 264 may store the remaining portion of the tracking vector of the SFT entry.

[0033] The basic SFT entry 262 may include an entry_state field 214, which can be set to IDLE or SEARCHABLE. The tracking_mode field 216 can be one of NA (if entry_state = IDLE), AID, or IMPRECISE. Additionally, the basic SFT entry 262 may include a tag field 218 and a miscellaneous field 220. The tracking_info field 222 may include three AIDs, and the ECC field 224 may store error correction code bits.

[0034] The base entry 262a is configured for SFT hit determination and may store a portion of the SFT entry's tracking vector. Specifically, the entry_status field 214a may be set to SEARCHABLE, and the tracking_mode field 216a may be set to VECTOR. Additionally, the base SFT entry 262a may include a tag field 218a, a miscellaneous field 220a, and an extra_entry field 221. The tracking_information field 222a may include a portion of the SFT entry's tracking vector, and the ECC field 224a may store error correction code bits. If the logical SFT entry 200 to which the base SFT entry 262a belongs has an extra entry, the extra_entry field 221 indicates which other SFT physical entry has been assigned as an extra entry to that logical SFT entry 200. In one implementation, the extra_entry field 221 exists even when the logical SFT entry 200 has no associated extra entries. In the alternative implementation, when the implementation of logical SFT entry 200 hardcodes each physical underlying SFT entry (which other physical entry has been pre-assigned as an additional entry to the physical underlying SFT entry when the state of logical SFT entry 200 indicates that it has additional entries), the additional_entry field 221 does not exist. It can be determined that logical SFT entry 200 has additional entries when the entry_state 214 / 214a of logical SFT entry 200 is set to SEARCHABLE and its tracking_mode 216 / 216a is set to VECTOR.

[0035] The entry_state field 214b of the additional SFT entry 264 can be set to EXTRA, and its tracking_mode field is (not applicable) NA. The remainder of the tracking vector of the SFT entry can be stored in the tracking_vector field 230. The ECC field 224b can store the error correction code bits.

[0036] Therefore, logical SFT entry 200 is either (a) simply the base SFT entry 262 when it has no associated additional SFT entry, or (b) a combination of base SFT entry 262a and its associated additional SFT entry 264. Base SFT entry 262 participates in the SFT lookup because it contains a cogran tag, which is compared with the tag bits of the physical address (PA) of the cogran to determine if the lookup is hit in the SFT. For example, for a 64-byte cogran traced in a 16-way SFT, the tag bits of the cogran's PA could be PA[47:16], which can be compared with the tag field of SFT entry 262. On the other hand, additional SFT entry 264 can be associated with a base SFT entry, such as base SFT entry 262a, and may contain proxy tracing information for that base SFT entry. Additional SFT entry 264 may not store the cogran address and therefore does not participate in the SFT lookup address comparison.

[0037] Figure 3 The illustration shows an example tracing mode 300 for a logical SFT entry in the cache coherence system disclosed herein. As illustrated, each logical SFT entry independently switches between three tracing modes, namely: AID, VECTOR, and IMPRECISE, depending on the real-time conditions and its configuration settings. At allocation, the entry begins in AID mode 302. If the ability to add new AIDs to its tracing is exhausted, the logical SFT entry switches to either vector mode 304 or imprecise mode 306. If a logical SFT entry switches to vector mode 304, the logical SFT entry also takes one entry from any other entry in the same group as an additional SFT entry. While in the illustrated implementation, vector mode is an exact tracing mode where each bit represents a single AID, in alternative implementations, vector mode can be an imprecise mode where each bit represents a set of multiple predefined AIDs.

[0038] Figure 4An example value of the trace_information field 400 of the logical SFT entry of the cache coherence system disclosed herein is illustrated. The trace_information field 400 can store trace information about the AIDs traced by the SFT entry. Specifically, in AID mode, the width of the trace_information field 402 can include three AIDs, each with a width of 13 bits, of which 12 bits are used to identify the AID and 1 bit is used to indicate whether the AID is currently valid. As illustrated herein, in AID mode, the trace_information field 402 includes AID (0) 404 and its validity bit 406, AID (1) 408 and its validity bit 410, and AID (2) 412 and its validity bit 414. In vector mode, the 128 bits of the trace_information field 416 are divided such that the first 39 bits of the trace vector are stored in the trace_vector_LO field 418 in the base entry 262a, while the remaining bits of the vector are stored in the trace_vector_HI field 420 in the additional entry 264. In this implementation, SFT requires each agent being tracked to have a unique validity bit in the tracking information, which maps to a specific vector bit position. Therefore, for example, the tracking vector LO field 418 can have 39 validity bits 422-424, and the tracking vector HI field 418 can have 89 validity bits 426-428. Thus, for example, if the value of validity bit 15 is valid, it indicates that the agent corresponding to validity bit 15... Valid cache validity status This indicates that the agent has cached the cogran corresponding to the tag field of the SFT entry. On the other hand, if the value of validity bit 22 is invalid, it indicates that the agent corresponding to validity bit 22... Invalid cache validity status This indicates that the agent has not yet cached the cogran corresponding to the tag field of the SFT entry.

[0039] Figure 5 The illustration shows the value of the entry_state field 500 for the logical SFT entry of the cache coherence system disclosed herein. Specifically, the implementation disclosed herein includes additional states for the entry_state field 500 of the physical SFT entry. Specifically, the physical SFT entry has an IDLE state 502, a SEARCHABLE state 504, and an EXTRA state 506. The IDLE state 502 indicates whether the SFT entry is idle or not. The SEARCHABLE state 504 indicates that a tag generated based on a portion of the physical address of the cogran is stored in the SFT entry; this tag can be used to search whether the cogran is being tracked by the SFT (which may require comparison to see if the SFT lookup hits). The EXTRA state 506 indicates that the physical entry is in use and contains useful information, but it does not contain the address used for lookup comparison operations.

[0040] Specifically, in IDLE state 502, a physical entry can be used to assign a new cogran as a base SFT entry, and the physical entry can be used as an additional entry for a base SFT entry. In SEARCHABLE state 504, a physical entry cannot be used to assign a new cogran, nor can it be used as an additional entry for any base entry. Furthermore, in this state, a physical entry may contain information that can be used to determine whether the SFT stores a cogran. Finally, during additional state 506, a physical entry cannot be used to assign a new cogran, nor can it be used as an additional entry for any base entry, and the physical entry may contain some or all of the tracking information representing its associated base entry.

[0041] Figure 6 The diagram illustrates operation 600 of an SFT lookup for a set of cograns. One or more operations in operation 600 can be performed by hardware, firmware, or software. Specifically, these operations are for situations where an agent wants to access the cogran and needs to check the SFT to see if a listener operation is required. When performing an SFT lookup on a target cogran, the group of physical SFT entries that can hold the target cogran is checked. Specifically, operation 604 reads the group of physical SFT entries that can hold the target cogran. Operation 606 selects the first physical SFT entry from the group of physical SFT entries. Operation 608 determines whether the state of the selected physical SFT entry is either IDLE or EXTRA. If the state of the selected physical SFT entry is either IDLE or EXTRA, the physical entry is skipped because it is not a base SFT entry. If the state of the physical entry is set to SEARCHABLE, operation 612 compares the label of the physical entry with the label portion of the target cogran address.

[0042] When the label of a physical entry is compared with the address of the target cogran and a matching logical SFT entry is found, a lookup hit is indicated. In this case, the matching logical SFT entry is the base SFT entry. Operation 618 then checks the tracking_mode field of the base SFT entry (i.e., the matched logical entry) to determine if the logical SFT entry includes additional physical entries. Specifically, if the tracking_mode is set to VECTOR, then the logical SFT entry includes additional physical entries, and operation 620 checks the "Extra_Entries" field of the matched logical SFT entry to determine which physical entry in the group has been designated as an extra entry of the SFT base entry of that logical SFT entry. On the other hand, if the tracking_mode of the base SFT entry is not set to VECTOR, operation 622 determines that the matched physical SFT entry is the only physical SFT entry that includes the matched logical SFT entry.

[0043] If operation 608 determines that the selected physical SFT entry is in either IDLE or EXTRA state, then operation 610 determines whether all entries in the target group have been checked. If not, operation 616 selects the next entry in the target group. Otherwise, operation 614 determines that no matching SFT entry was found through the search of the target list.

[0044] Figure 7 The diagram illustrates operation 700, which determines which operation flow to select for an SFT update. Specifically, for SFT access, operation 700 determines whether to assign an entry (in... Figure 8 (further illustration), adding an agent to the tracking of existing entries (in...) Figure 9 (further illustration), or remove the agent from the tracking of existing entries (in...) Figure 10 (Further illustration). As shown in the figure, operation 700 is implemented for situations where one of the following three conditions is known to be true for the agent and therefore an SFT update is required: (a) the agent is accessing a cogran that is not currently being tracked by the SFT but needs to be tracked, (b) the agent is caching a new cogran that is currently being tracked by the SFT, and (c) it is known that the agent has evicted a copy of the cogran that is currently being tracked by the SFT.

[0045] Operation 704 determines whether an agent needs to be added or removed from the SFT. If no agent needs to be added, operation 706 uses the "entryUpdateSubtract" procedure to remove the agent from the tracking of existing entries (in... Figure 10(Further illustration below). If an agent needs to be added, operation 708 determines whether the SFT is currently tracking cogran. If so, operation 710 uses the "entryUpdateAdd" procedure to add the agent to the tracking of the existing entry (in... Figure 9 (Further illustration). If not, operation 712 uses the "entryAllocate" procedure to allocate entries (in... Figure 8 (Further illustration in the middle).

[0046] Figure 8 The diagram illustrates operation 800 when the agent newly captures a copy of a cogran that is not currently being tracked by the SFT. When the SFT first needs to add a new cogran to its tracking, it needs to determine if there are any available entries in the SFT that can accept the new cogran. Operation 804 determines if the SFT has available entries for adding the new cogran. If the SFT has space to accommodate the new cogran, operation 806 selects one of these available entries to add the new cogran.

[0047] If the SFT does not have an available entry for adding a new cogran, it needs to free up space in the SFT to accommodate the new cogran by selecting the sacrifice logic entry to be removed and then sending a "filter refresh" listener to all agents that may hold a copy of the old cogran indicated by that entry (old = evicted cogran). In this case, operation 808 selects the sacrifice entry in the SFT, and operation 810 sends a "filter refresh" listener to all agents that may hold a copy of the cogran held by the sacrifice entry.

[0048] Once the SFT determines which physical entry will be allocated the new cogran and that entry is available, the SFT sets the entry's entry_state to SEARCHABLE and the entry's tracking_mode to AID. At this point, only a single agent holds a consistent copy of the cogran in its cache. Therefore, operation 812 sets the mode of the selected entry to AID (whether it's the entry selected in operation 806 or the sacrificed entry selected in operation 808). Operation 814 records the cogran's address and the AID to be tracked into the selected entry.

[0049] Figure 9The diagram illustrates operation 900 for a scenario where a new agent caches a copy of a cogran currently being tracked by an SFT. Specifically, operation 900 is activated when an SFT needs to add an agent to an existing logical SFT entry that is already tracking a cogran that the agent is holding in its cache. Operation 904 determines whether the tracking_mode of the existing logical entry is set to AID. If not, operation 906 determines whether the base entry of the logical SFT entry has its tracking_mode set to "IMPRECISE". If yes, operation 908 adds the new AID to the imprecise tracking by updating the base entry to account for the new AID to be tracked. If the tracking_mode of the base entry of the logical SFT entry is not set to "IMPRECISE", the tracking_mode of the logical SFT entry is set to VECTOR. In this case, operation 910 sets the tracking vector bit position for the new AID. Specifically, this vector bit may be located in the base entry or an additional entry, depending on how the HW configures the vector bits and which AID is being added to the entry.

[0050] If operation 904 determines that the tracking mode of an existing logical entry is set to AID, then operation 912 determines whether the underlying SFT entry can record an additional AID to its tracking information, or whether there is space in the tracking information field available to record the additional AID. If so, then operation 914 adds the AID of the new agent to the tracking information field of the underlying entry.

[0051] If operation 912 determines that the underlying SFT entry cannot record additional AIDs in its tracking information, then operation 915 determines whether dynamic addition of additional entries is enabled. For example, operation 915 may check the "Additional Entries" field of the SFT entry to determine whether dynamic addition of additional entries is enabled. If such dynamic addition is not enabled, then operation 930 updates the tracking mode of the SFT entry to IMPRECISE. Subsequently, operation 932 updates the inaccurate tracking for any currently tracked AIDs.

[0052] If operation 915 determines that the base SFT entry can accommodate additional entries, then operation 916 updates the tracking mode of the base entry to VECTOR. Operation 918 determines whether the SFT has available entries for adding the new cogran. If the SFT has space to accommodate the new cogran, then operation 920 selects one of these available entries to add the new cogran.

[0053] If the SFT does not have an available entry for adding a new cogran, it needs to free up space in the SFT to accommodate the new cogran by selecting the sacrifice logic entry to be removed and then sending a "filter refresh" listener to all agents that may hold a copy of the old cogran indicated by that entry (old = evicted cogran). In this case, operation 934 selects the sacrifice entry in the SFT, and operation 936 sends a "filter refresh" listener to all agents that may hold a copy of the cogran held by the sacrifice entry.

[0054] Once a physical entry is selected, operation 922 sets its entry status to EXTRA, and operation 924 records the position of the additional entry in the base entry. Subsequently, operation 926 sets the tracking vector bit position in the additional entry for any currently tracked AID, and operation 928 sets the tracking vector bit position in the additional entry for new agents.

[0055] Figure 10 The diagram illustrates operation 1000 for a scenario where an existing logical SFT entry needs to be updated to remove an agent from its tracking, i.e., the agent is known to have abandoned its copy of cogran. Operation 1004 determines whether the underlying SFT entry has its tracking_mode field set to AID. If so, operation 1006 further determines whether the AID to be removed from the underlying SFT entry is the only remaining AID of the underlying SFT entry. If the AID to be removed from the underlying SFT entry is the only remaining AID of the underlying SFT entry, then a logical SFT entry is no longer needed to track cogran because there are no remaining cached copies tracked by the SFT. Therefore, operation 1010 changes the entry_status field of the underlying SFT entry to IDLE. If the AID to be removed from the underlying SFT entry is not the only remaining AID in the underlying SFT entry, then operation 1012 removes the AID from the tracking_information of the underlying SFT entry. For example, the VLD subfield bit corresponding to the AID to be removed in the tracking_information is cleared.

[0056] If operation 1004 determines that the Tracking_Mode field of the underlying SFT entry is not set to AID, then operation 1008 determines whether the Tracking_Mode field of the underlying SFT entry is set to "VECTOR". If the Tracking_Mode field of the underlying SFT entry is not set to "VECTOR", then operation 1016 determines that the Tracking_Mode is set to IMPRECISE. In this case, if necessary, the Tracking_Information field is updated to reflect the removal of AID from the tracking of the logical entry.

[0057] On the other hand, if the Tracking_Mode field of the underlying SFT entry is set to "VECTOR", operation 1014 clears the vector bits corresponding to the AID of the agent expelled from cogran. Then, operation 1018 determines whether more vector bits are still set. If no more vector bits are set, operation 1020 changes the state of the extra_state field of the underlying SFT entry to IDLE, and operation 1022 changes the state of the extra_state field of the underlying SFT entry to IDLE.

[0058] Figure 11 The diagram illustrates operation 1100 for a scenario where a broker requests exclusive access to cogran, invalidating all other cached copies (e.g., so the broker can update its cogran copy in a manner that preserves cache consistency). Specifically, operation 1100 is performed when the SFT is already tracking the cogran when the broker requests such exclusive access. Operation 1104 determines whether the broker is requesting invalidation of all other cached copies. If so, operation 1106 determines whether the logical SFT entry has an associated additional entry. If the logical SFT entry has an associated additional entry, operation 1108 sets the entry_status field of the additional entry to IDLE, as it is no longer needed to track any other brokers.

[0059] If the logical SFT entry has no associated additional entries, operation 1110 sets the tracking_pattern field of the base entry to AID. Then, operation 1112 clears all agent tracking information from the base SFT entry. Then, operation 1114 records the AID of the agent requesting exclusive access in the base SFT entry.

[0060] The cache consistency system disclosed in this paper maintains an exact track of any number of agents caching cograns simultaneously. Therefore, the amount of over-sniffing is reduced when an access to a cogran triggers a sniff. Furthermore, the exact track allows selection from known cogran sharers when a sniff needs to be sent to any sharer to obtain a copy of the cogran. When an agent is evicted from the cogran cache, the SFT can update to reflect this. Finally, when the last sharer is evicted, the entry can be proactively released. This facilitates the selection of a sacrifice entry the next time the SFT needs to allocate new cograns, as there are already available entries to use. Additionally, this improves the selection of sacrifice entries because if / when the SFT needs to sacrifice an active entry, the filter refresh sniff it sends can be directed only to the agents that need to receive it, rather than being broadcast to all agents.

[0061] For example, to track 128 agents, the implementation disclosed herein allows the size of the physical SFT entry to be reduced from 184 bits (as might be required in alternative implementations) to 100 bits, thereby reducing the bit count by approximately 46%.

[0062] Figure 12 The illustration shows an example system 1200 that can be used to implement the high-latency query optimization system disclosed herein. This system is used to implement the described techniques. Figure 12 Example hardware and operating environments include computing devices such as general-purpose computing devices in the form of computers, mobile phones, personal data assistants (PDAs), tablet computers, smartwatches, game controllers, or other types of computing devices. Figure 12 In some implementations, for example, computer 20 includes a processing unit 21, system memory 22, and a system bus 23, which operatively couples various system components, including system memory 22, to the processing unit 21. There may be only one or more processing units 21, thus the processor of computer 20 may include a single central processing unit (CPU) or multiple processing units (often referred to as a parallel processing environment). Computer 20 may be a conventional computer, a distributed computer, or any other type of computer; implementations of this disclosure are not limited thereto.

[0063] System bus 23 can be any of several types of bus architectures, including memory bus or memory controller, peripheral bus, switching architecture, point-to-point connection, and local bus using any of the various bus architectures. System memory 22 can also be simply referred to as memory and includes read-only memory (ROM) 24 and random access memory (RAM) 25. Basic input / output system (BIOS) 26, containing basic routines that facilitate the transfer of information between components within computer system 20 (such as during startup), is stored in ROM 24. Computer 20 also includes: hard disk drive 27 for reading and writing to a hard disk (not shown); disk drive 28 for reading or writing to a removable disk 29; and optical disk drive 30 for reading or writing to a removable optical disk 31, such as a CD-ROM, DVD, or other optical media.

[0064] Computer 20 can be used to implement the high-latency query optimization system disclosed herein. In one implementation, a frequency unwrapping module (including instructions for unwrapping frequencies based at least in part on sampled reflection modulation signals) can be stored in the memory of computer 20, such as read-only memory (ROM) 24 and random access memory (RAM) 25.

[0065] Furthermore, the instructions stored in the memory of computer 20 can be used for... Figures 6-11One or more operations disclosed herein are used to generate the transformation matrix. Similarly, instructions stored in the memory of computer 20 can also be used to implement... Figures 6-11 One or more operations. The memory of computer 20 may also be one or more instructions to implement the high-latency query optimization system disclosed herein.

[0066] Hard disk drive 27, disk drive 28, and optical disk drive 30 are connected to system bus 23 via hard disk drive interface 32, disk drive interface 33, and optical disk drive interface 34, respectively. The drives and their associated tangible computer-readable media provide non-volatile storage for computer-readable instructions, data structures, program modules, and other data to computer 20. Those skilled in the art will understand that any type of tangible computer-readable media can be used in the example operating environment.

[0067] Many program modules can be stored on a hard disk, disk 29, optical disk 31, ROM 24, or RAM 25, including an operating system 35, one or more applications 36, other program modules 37, and program data 38. Users can generate prompts on the personal computer 20 using input devices such as a keyboard 40 and a pointing device 42. Other input devices (not shown) may include a microphone (e.g., for voice input), a camera (e.g., for a Natural User Interface (NUI)), a joystick, a game controller, a satellite dish, a scanner, etc. These and other input devices are typically connected to the processing unit 21 via a serial port interface 46 coupled to the system bus 23, but may also be connected via other interfaces such as a parallel port, a game port, or a Universal Serial Bus (USB). A monitor 47 or other type of display device is also connected to the system bus 23 via an interface such as a video adapter 48. In addition to the monitor, the computer typically includes other peripheral output devices (not shown), such as speakers and printers.

[0068] Computer 20 can operate in a networked environment using logical connections to one or more remote computers, such as remote computer 49. These logical connections are implemented through communication devices coupled to or part of computer 20; these implementations are not limited to a particular type of communication device. Remote computer 49 can be another computer, server, router, network PC, client, peer device, or other common network node, and typically includes many or all of the elements described above with respect to computer 20. Figure 12 The logical connections described include local area networks (LAN) 51 and wide area networks (WAN) 52. This networking environment is common in office networks, enterprise-wide computer networks, intranets, and the Internet (all of which are network types).

[0069] When used in a LAN networking environment, computer 20 is connected to local area network 51 via a network interface or adapter 53, which is a communication device. When used in a WAN networking environment, computer 20 typically includes a modem 54, a network adapter (a communication device), or any other type of communication device for establishing communication over a wide area network 52. The modem 54, which may be built-in or external, is connected to system bus 23 via serial port interface 46. In a networked environment, the program engine depicted relative to personal computer 20 or parts thereof may be stored in a remote memory storage device. It should be understood that the network connection shown is an example, and other communication devices may be used to establish communication links between computers.

[0070] In the example implementation, software or firmware instructions for the cache consistency system 1210 can be stored in system memory 22 and / or storage device 29 or 31 and processed by processing unit 21. High-latency query optimization system operations and data can be stored in system memory 22 and / or storage device 29 or 31 as persistent data storage.

[0071] Compared to tangible computer-readable storage media, intangible computer-readable communication signals can embody computer-readable instructions, data structures, program modules, or other data residing in modulated data signals, such as carrier waves or other signal transmission mechanisms. The term "modulated data signal" refers to a signal whose one or more characteristics are set or altered in a manner that encodes information within the signal. By way of example, and not limitation, intangible communication signals include wired media (such as wired networks or direct wired connections) and wireless media (such as acoustic, RF, infrared, and other wireless media).

[0072] Some embodiments of the high-latency query optimization system may include an article of writing. The article of writing may include a tangible storage medium for storing logic. Examples of storage media may include one or more types of computer-readable storage media capable of storing electronic data, including volatile or non-volatile memory, removable or non-removable memory, erasable or non-erasable memory, writable or rewritable memory, etc. Examples of logic may include various software elements, such as software components, programs, applications, computer programs, application programs, system programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, methods, procedures, software interfaces, application programming interfaces (APIs), instruction sets, computational code, computer code, code segments, computer code segments, words, values, symbols, or any combination thereof. For example, in one embodiment, the article of writing may store executable computer program instructions that, when executed by a computer, cause the computer to perform methods and / or operations according to the described embodiments. Executable computer program instructions may include any suitable type of code, such as source code, compiled code, interpreted code, executable code, static code, dynamic code, etc. Executable computer program instructions can be implemented according to predefined computer languages, methods, or syntaxes to instruct a computer to perform specific functions. These instructions can be implemented using any suitable high-level, low-level, object-oriented, visual, compiled, and / or interpreted programming languages.

[0073] The high-latency query optimization system disclosed herein can include various tangible computer-readable storage media and intangible computer-readable communication signals. Tangible computer-readable storage devices can be embodied by any available medium accessible to the high-latency query optimization system disclosed herein, and include volatile and non-volatile storage media, removable and non-removable storage media. Tangible computer-readable storage media do not include intangible and transient communication signals, and include volatile and non-volatile, removable and non-removable storage media implemented in any method or technology for storing information such as computer-readable instructions, data structures, program modules or other data. Tangible computer-readable storage media include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technologies, CDROM, digital versatile disc (DVD) or other optical disc storage devices, magnetic cartridges, magnetic tapes, disk storage devices or other magnetic storage devices, or any other tangible medium that can be used to store desired information and is accessible by the high-latency query optimization system disclosed herein. Compared to tangible computer-readable storage media, intangible computer-readable communication signals can embody computer-readable instructions, data structures, program modules, or other data residing in modulated data signals, such as carrier waves or other signal transmission mechanisms. The term "modulated data signal" refers to a signal whose one or more characteristics are set or altered in a manner that encodes information within it. By way of example, and not limitation, intangible communication signals include signals moving through wired media (such as wired networks or direct wired connections) and signals moving through wireless media (such as acoustic, RF, infrared, and other wireless media).

[0074] The implementation of the technology disclosed herein provides a method comprising: generating a base listener filter (SFT) entry for a cogran consistency granule in a proxy cache, the base SFT entry including a trace_information field configured to track multiple proxy IDs, each proxy ID identifying a proxy holding a copy of the cogran; determining the number of proxies holding copies of the cogran; and generating an additional SFT entry in response to determining that the number of proxies holding copies of the cogran is greater than the number of proxy IDs tracked in the trace_information field of the base SFT entry, wherein the additional SFT entry is configured to store a portion of a trace vector, wherein each bit of the trace vector indicates the cache validity status of the cogran for the relevant proxy.

[0075] In an alternative implementation, the technology disclosed herein provides a system including a memory, one or more processor units, and a cache coherence system stored in the memory and executable by the one or more processor units. The cache coherence system encodes computer-executable instructions on the memory to execute a computer process on the one or more processor units. This computer process includes: generating a base listener filter (SFT) entry for a coherence granule (cogran) in an agent cache. The base SFT entry includes a trace_information field configured to track multiple agent IDs, each agent ID identifying an agent holding a copy of the cogran; determining the number of agents holding copies of the cogran; comparing the number of agents holding copies of the cogran with the number of multiple agent IDs tracked in the trace_information field of the base SFT entry; and, in response to determining that the number of agents holding copies of the cogran is greater than the number of multiple agent IDs tracked in the trace_information field of the base SFT entry, selecting a second SFT entry as an additional SFT entry, wherein the additional SFT entry is configured to store a portion of a trace vector, where each bit of the trace vector indicates the cache validity status of the cogran for the relevant agent.

[0076] In another implementation, the technology disclosed herein includes one or more physically manufactured computer-readable storage media that encode computer-executable instructions to execute a computer process on a computer system, the computer process comprising: generating a basic listener filter (SFT) entry for a cogran in an agent cache, the basic SFT entry including a trace_information field configured to track a plurality of agent IDs, each agent ID identifying an agent holding a copy of the cogran; determining the number of agents holding copies of the cogran; comparing the number of agents holding copies of the cogran with the number of the plurality of agent IDs tracked in the trace_information field of the basic SFT entry; and, in response to determining that the number of agents holding copies of the cogran is greater than the number of the plurality of agent IDs tracked in the trace_information field of the basic SFT entry, selecting a second SFT entry as an additional SFT entry, wherein the additional SFT entry is configured to store a portion of a trace vector, wherein each bit of the trace vector indicates the cache validity status of the cogran for the relevant agent.

[0077] The implementations described herein are implemented as logical steps in one or more computer systems. Logical operations can be implemented as (1) a processor-implemented sequence of steps executed in one or more computer systems and (2) interconnected machines or circuit modules within one or more computer systems. The choice of implementation depends on the performance requirements of the computer system utilized. Accordingly, the logical operations constituting the implementations described herein can be referred to differently as operations, steps, objects, or modules. Furthermore, it should be understood that logical operations can be performed in any order unless expressly stated otherwise in the claims or a specific order is inherently required. The foregoing specification, examples, and data, along with the appendix, provide a complete description of the structure and use of exemplary implementations.

Claims

1. A method comprising: generating a base snoop filter (SFT (150a) (150)) entry for a coherence granule in a proxy cache, the base SFT (150a) (150) entry (162a) (162) (262a) (262) including a tracking information field configured to track a plurality of proxy IDs, each proxy ID identifying a proxy storing a copy of the coherence granule; determining a number of proxies holding the copy of the coherence granule; comparing the number of proxies holding the copy of the coherence granule to a number of the plurality of proxy IDs tracked in the tracking information field of the base SFT (150a) (150) entry (162a) (162) (262a) (262); and in response to determining that the number of proxies holding the copy of the coherence granule is greater than the number of the plurality of proxy IDs tracked in the tracking information field of the base SFT (150a) (150) entry (162a) (162) (262a) (262), selecting a second SFT (150a) (150) entry (162a) (162) as an extra SFT (150a) (150) entry (162a) (162) (264) (164), wherein the extra SFT (150a) (150) entry (162a) (162) (264) (164) is configured to store a portion of a tracking vector, wherein each bit (414) of the tracking vector indicates a cache validity state for the coherence granule with respect to an associated proxy.

2. The method of claim 1, wherein the extra SFT entry is configured to store a high order portion of a tracking vector. storing a low order portion of the tracking vector in the tracking information field of the base SFT entry.

3. The method of claim 2, further comprising: in response to determining that the number of proxies holding the copy of the coherence granule is greater than the number of the plurality of proxy IDs tracked in the tracking information field of the base SFT entry, adding an extra entry field to the base SFT entry and setting the value of the extra entry field to the second entry selected as the extra SFT entry.

4. The method of claim 1, further comprising: selecting a pre-assigned physical entry as the extra SFT entry for the base SFT entry.

5. The method of claim 1, wherein selecting the second SFT entry as an additional SFT entry further comprises:

6. The method of claim 1, further comprising: in response to generating the extra SFT entry, setting a state of a tracking mode field of the base SFT entry to vector.

7. The method of claim 1, wherein a tracking mode field of a logical SFT entry toggles between one of AID, inexact, and vector states, wherein the logical SFT entry includes the base SFT entry and the extra SFT entry.

8. One or more physically manufactured computer-readable storage media encoded with computer-executable instructions for executing, on a computer system (1200), a computer process comprising: ​ generating a base snoop filter (SFT (150a) (150)) entry for a coherence granule in a proxy cache, the base SFT (150a) (150) entry (162a) (162) (262a) (262) including a tracking information field configured to track a number of proxy IDs, each proxy ID identifying a proxy holding a copy of the coherence granule; determining a number of proxies holding the copy of the coherence granule; comparing the number of proxies holding the copy of the coherence granule to a number of the number of proxy IDs tracked in the tracking information field of the base SFT (150a) (150) entry (162a) (162) (262a) (262); and responsive to determining that the number of proxies holding the copy of the coherence granule is greater than the number of the number of proxy IDs tracked in the tracking information field of the base SFT (150a) (150) entry (162a) (162) (262a) (262), selecting a second SFT (150a) (150) entry (162a) (162) as an extra SFT (150a) (150) entry (162a) (162) (264) (164), wherein the extra SFT (150a) (150) entry (162a) (162) (264) (164) is configured to store a portion of a tracking vector, wherein each bit (414) of the tracking vector indicates a cache validity state for the coherence granule with respect to an associated proxy.

9. The one or more physically manufactured computer-readable storage media of claim 8, wherein the extra SFT entry is configured to store a high-order portion of a tracking vector.

10. The one or more physically manufactured computer-readable storage media of claim 9, wherein the computer process further comprises: storing a low-order portion of the tracking vector in the tracking information field of the base SFT entry.

11. The one or more physically manufactured computer-readable storage media of claim 8, wherein the computer process further comprises, responsive to determining that the number of proxies holding the copy of the coherence granule is greater than the number of the number of proxy IDs tracked in the tracking information field of the base SFT entry, adding an extra entry field to the base SFT entry and setting the value of the extra entry field to the second entry selected as the extra SFT entry.

12. The one or more physically manufactured computer-readable storage media of claim 8, wherein selecting the second SFT entry as an extra SFT entry further comprises selecting a pre-assigned physical entry as the extra SFT entry for the base SFT entry.

13. The one or more physically manufactured computer-readable storage media of claim 8, wherein the computer process further comprises, responsive to generating the extra SFT entry, setting a state of a tracking mode field of the base SFT entry to vector.

14. The one or more physically manufactured computer-readable storage media of claim 8, wherein a tracking mode field of a logical SFT entry toggles between one of an AID, imprecise, and a vector state, wherein the logical SFT entry comprises the base SFT entry and the additional SFT entry.

15. A system (1200) comprising: a memory (114); one or more processor units; and a cache coherency system (1200) (1210) (100) stored in the memory (114) and executable by the one or more processor units, the cache coherency system (1200) (1210) (100) encoding computer-executable instructions on the memory (114) for executing a computer process on the one or more processor units, the computer process comprising: generating a base snoop filter (SFT (150a) (150)) entry for a coherence granule in a proxy cache, the base SFT (150a) (150) entry (162a) (162) (262a) (262) including a tracking information field configured to track a plurality of proxy IDs, each proxy ID identifying a proxy holding a copy of the coherence granule; determining a number of proxies holding the copy of the coherence granule; comparing the number of proxies holding the copy of the coherence granule to a number of the plurality of proxy IDs tracked in the tracking information field of the base SFT (150a) (150) entry (162a) (162) (262a) (262); and responsive to determining that the number of proxies holding the copy of the coherence granule is greater than the number of the plurality of proxy IDs tracked in the tracking information field of the base SFT (150a) (150) entry (162a) (162) (262a) (262), selecting a second SFT (150a) (150) entry (162a) (162) as an additional SFT (150a) (150) entry (162a) (162) (264) (164), wherein the additional SFT (150a) (150) entry (162a) (162) (264) (164) is configured to store a portion of a tracking vector, wherein each bit (414) of the tracking vector indicates a cache validity state of the coherence granule for an associated proxy.

16. The system of claim 15, wherein the additional SFT entry is configured to store a high-order portion of a tracking vector. storing a low-order portion of the tracking vector in the tracking information field of the base SFT entry.

17. The system of claim 15, wherein the computer process further comprises: ​ 18. The system of claim 16, wherein the computer process further comprises: in response to determining that the number of agents that saved a copy of the consistent granule is greater than the number of agent IDs tracked in the tracking information field of the base SFT entry, adding an extra entry field to the base SFT entry and setting the value of the extra entry field to the second entry selected as the extra SFT entry.

19. The system of claim 16, wherein selecting the second SFT entry as an additional SFT entry further comprises: selecting a pre-assigned physical entry as the extra SFT entry for the base SFT entry.

20. The system of claim 15, wherein a tracking mode field of a logical SFT entry toggles between one of an AID, inexact, and a vector state, wherein the logical SFT entry comprises the base SFT entry and the extra SFT entry.