Snoop Filter Scalability

JP2025506032AActive Publication Date: 2025-03-05NUMASCALE AS
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
JP2024547429
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2022-02-10
Filing Date
2023-02-09
Publication Date
2025-03-05
Estimated Expiration
2043-02-09

Smart Images

  • Figure 2025506032000001_ABST
    Figure 2025506032000001_ABST
Patent Text Reader

Abstract

The present invention relates to a snoop filter device, a node controller, a multi-component computer system, a computer-implemented method, a data processing system, and a computer-readable storage medium that are intended to enable improved tracking of a scalable number of cache elements in a multiprocessor system, including scaling of the snoop filter device according to the number of cache elements that it is desired to track.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present disclosure relates to a snoop filter device, a node controller, a multi-component computer system, a computer-implemented method, a data processing system, and a computer-readable storage medium that are intended to enable improved tracking of a scalable number of cache elements in a multiprocessor system. [Background technology]

[0002] Maintaining cache coherence efficiently is a primary requirement for obtaining high performance shared memory multiprocessor systems.

[0003] A shared memory multiprocessor system typically includes one or more shared main memory agents in addition to a set of local memory agents, called cache agents or simply caches. A cache agent may belong to a local processor or node of a processor, and is characterized by high speed and small size compared to main memory. Storing data in a local cache agent, for example belonging to a working set of a local CPU, can significantly improve the overall performance of the multiprocessor system, since frequently used data in the working set can be accessed more quickly by the local CPU.

[0004] Having a set of local cache agents, each of which holds data locally, can lead to problems regarding how to maintain cache coherence: if a CPU modifies a cache line in a local cache agent, for example via a write operation, other cache agents that hold copies of the same cache line will not see this write operation and their copies of the cache line will become stale. These stale cache lines can then be defined as stale.

[0005] Various techniques and procedures have been implemented to obtain cache coherence, i.e., to eliminate stale data, including the implementation of various cache coherence protocols, such as the MSI, MESI, and MOESI protocols, as well as various cache coherence mechanisms, including directory-based cache coherence mechanisms as well as snoopy bus-based methods.

[0006] A snoopy bus-based method typically involves a so-called snooper, which snoops transactions being communicated, e.g., via a bus, through one or more connections between various agents in the multiprocessor system, and updates a local cache accordingly. The snooper may belong to a node controller, a cache agent, or a cache element, and the connections may be performed between various agents in the computer system, including cache agents, cache nodes, cache elements, CPUs, etc. Whenever a transaction that modifies a cache line is being communicated, the snooper snoops this transaction, checks whether any of its respective agents holds a copy of this cache line, and modifies the cache line according to the transaction communicated via the bus.

[0007] The primary mechanism for achieving cache coherence is currently directory-based. Directory-based cache coherence means managing the cache using a directory instead of a snoopy method due to the poor scalability of the snoopy mechanism due to the use of broadcasts. Directory-based coherence avoids broadcasts by storing information about the status of addresses in a "directory." A directory entry for a cache line contains information about the status of the cache line in all caches. Caches retrieve information from the directory when needed, and cache coherence is maintained by point-to-point messages between caches (rather than by a broadcast mechanism).

[0008] To improve the efficiency of snoopy-based and directory-based cache coherence mechanisms, the concept of a snoop filter has been developed. A snoop filter is a directory-based structure that maintains information about the coherence state of a set of cache lines stored in a cache. In a multiprocessor system, a snoop filter may, for example, monitor bus traffic and filter out transactions on the bus that are not related to cache lines stored in its associated cache element. This results in the snooper performing lookups that consume less power and time, thus improving the efficiency of the snoopy-based cache coherence mechanism.

[0009] A snoop filter is generally constructed to maintain information in a series of entries, where each entry includes a tag and one or more additional bits associated with the associated tag. While the tag is a unique identifier for a cache line, the additional bits may indicate, for example, the state of the cache line identified by the tag. The additional bits may, by way of example, constitute one or more presence vectors, each of which includes information regarding whether the cache line identified by the tag is stored in the cache, and optionally, where or in which cache element within the cache the cache line is stored.

[0010] A snoop filter may be incorporated into a node controller that may be connected to a variable number of cache elements. For a node controller to function when connected to different numbers of cache elements, the node controller needs to be able to track a variable number of cache elements with a snoop filter. This has traditionally been accomplished in two ways: by scaling the presence vector of each snoop filter entry according to the number of cache elements being tracked, or by having each presence vector represent multiple cache elements.

[0011] Scaling approaches that involve scaling the presence vector suffer from the drawbacks of being limited in the amount of scaling that can be performed and of the loss of addressability of each snoop filter entry as a result of scaling the presence vector, while having each presence vector represent more than one cache element suffers from a significant loss in precision of how accurately the snoop filter can track cache elements.

[0012] SUMMARY OF THE PRESENT EMBODIMENT It is an object of the present invention to improve the structure of the snoop filter to allow improved tracking of a variable number of cache elements. Summary of the Invention

[0013] In a first aspect, the present invention provides a snoop filter device organized to track a variable number C of cache elements, the snoop filter device comprising: i a first cache element that is connected to the first cache element and configured to connect to the first cache element when the first cache element is connected to the first cache element; f The snoop filter instances are configured to be organized by grouping the initial snoop filter instances into m final snoop filter instances, each of which has i Sets of pieces and n per set i Using storage locations, L i M i ·n i So that n is equal to i Way set associative method (n i -way set associative manner) i snoop filter storage locations, each final snoop filter instance having m f Sets of pieces and n per set f Using storage locations, L f M f ·n f so that n is equal to f L organized in a way set associative manner f snoop filter storage locations, each snoop filter storage location configured to store a tag identifying a cache line that can be stored in the cache element, and to store P presence vectors, each presence vector including information regarding the presence of a cache line identified by the tag, f m f ·n f is the product S i m i ·n i is equal to S f i And S​f is equal to C / P.

[0014] According to one embodiment of the present invention, each cache line includes a cache line address including a predetermined tag and a predetermined k-bit cache line index, and any snoop filter instance of the snoop filter device may include: k >m f For a given k-bit cache line index, the lowest or highest log 2 (m f ) bit.

[0015] According to another embodiment of the invention, P≦16.

[0016] According to yet another embodiment of the invention, P=1 or P=2.

[0017] According to yet another embodiment of the present invention, S f ≧2, and S f Each snoop filter instance among the final snoop filter instances is configured to store the same tag in one of its storage locations, and each of the storage locations of the snoop filter device that store the same tag is configured to store a different presence vector.

[0018] According to yet another embodiment of the present invention, each snoop filter storage location is mapped to one cache element.

[0019] According to yet another embodiment of the invention, each presence vector comprises a number of presence bits, the number of presence bits being equal to the number of bits required to write the cache element identifier plus one additional bit.

[0020] According to yet another embodiment of the invention, each presence vector consists of one presence bit.

[0021] In a second aspect of the invention, the present invention provides a node controller including a snoop filter device according to the first aspect of the invention.

[0022] In a third aspect, the present invention provides a multi-component computer system including C cache elements and a snoop filter device connected to the C cache elements, or a node controller, the snoop filter device of the node controller being connected to the C cache elements.

[0023] In a fourth aspect of the present invention, the present invention provides a computer-implemented method, comprising: f m f ·n f The product S i m i ·n i is equal to S f The method includes organizing a snoop filter device according to a first aspect of the invention such that C / P is equal to C / P.

[0024] In a fifth aspect, the present invention provides a data processing system comprising means for performing a computer implemented method.

[0025] In a sixth aspect, the present invention provides a computer readable storage medium comprising instructions which, when executed by a computer system, cause the computer system to perform a computer implemented method.

[0026] Other advantageous features will become apparent from the appended claims. [Brief description of the drawings]

[0027] In order that the present invention may be more readily understood, the following detailed description makes reference to the accompanying drawings, in which:

[0028] [Figure 1a] 1 is a schematic diagram of a snoop filter device including Si initial snoop filter instances, each including Li snoop filter storage locations; [Figure 1b] 1 is a schematic diagram of a snoop filter device connectable to C cache elements. [Figure 2a] 1 is a schematic diagram of a snoop filter device in which Si initial snoop filter instances are organized into Sf final snoop filter instances, each final snoop filter instance being organized in an n-way set associative manner. [Figure 2b] 1 is a schematic diagram of a snoop filter device in which Si initial snoop filter instances are organized into Sf final snoop filter instances, each final snoop filter instance being organized in an n-way set associative manner. [Figure 2c] 1 is a schematic diagram of a snoop filter device in which Si initial snoop filter instances are organized into Sf final snoop filter instances, each final snoop filter instance being organized in an n-way set associative manner. [Diagram 3] 1 is a schematic diagram of a presence vector including multiple bits and a presence vector including one bit. [Figure 4] 10 illustrates generally that a tag for a given cache line address may be stored in a set of snoop filter instances indicated by at least a portion of a k-bit index for the given cache line address. [Diagram 5] 2 is a schematic diagram of a snoop filter storage location according to the present invention configured to store tags identifying cache lines that can be stored in a cache element and to store P presence vectors; [Figure 6] 1 is a schematic diagram of a snoop filter device including S snoop filter instances, each of which stores a tag, tag A. [Figure 7] 1 is a schematic diagram of a snoop filter device including multiple snoop filter instances, with tags, tags A, B, and Z, stored in each of the snoop filter instances. [Figure 8] 1 is a schematic diagram of a snoop filter instance in which each snoop filter storage location maps to one cache element. [Figure 9] FIG. 1 is a schematic diagram of a presence vector that includes a number of presence bits sufficient to explicitly represent a cache identifier, and one occupancy bit. [Figure 10] 1 illustrates a node controller including a snoop filter device. [Figure 11] 1 illustrates a node controller including a snoop filter device. [Figure 12] 1 illustrates a multi-component computer system that includes C cache elements and a snoop filter device connected to the C cache elements. [Figure 13] Illustrated is a multi-component computer system including C cache elements and a node controller including a snoop filter device, the node controller being connected to the C cache elements. [Figure 14] 1 illustrates a computer-implemented method according to the present invention. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0029] In the following, exemplary embodiments as well as general embodiments of the present invention will be described. Reference will be made to the attached drawings, which are numbered as possible. It should be noted, however, that the drawings are merely exemplary embodiments, and that other features and embodiments may well fall within the scope of the present invention as described.

[0030] The present invention relates to a snoop filter device, a node controller, a multi-component computer system, a computer-implemented method, a data processing system, and a computer-readable storage medium that are intended to enable improved tracking of a variable number of cache elements in a multiprocessor system.

[0031] In a first aspect, the present invention provides a snoop filter device arranged to track a variable number C of cache elements, where the snoop filter device is connectable, directly or indirectly, to the C cache elements.

[0032] Figure 1a shows the S i 1 illustrates a schematic of a snoop filter device including initial snoop filter instances. i is a real positive integer, where each initial snoop filter instance is i Contains snoop filter storage locations. i The snoop filter storage locations are organized in an n-way set associative manner, meaning that the snoop filter device follows an entry placement policy similar to a set associative cache. An n-way set associative configuration means that each initial snoop filter instance is organized in n of the storage locations, as illustrated in FIG. i m i This means that it can be imagined as a matrix, where m i is the number of sets, and n i is the number of storage locations per set. i In other words, it can be said that,is the number of ways, and therefore, each initial snoop filter instance has,n, i The total number of storage locations in each initial snoop filter instance is L i According to the present invention, L i m i ×n iEqual to the storage location of

[0033] FIG. 1b illustrates a snoop filter device connectable to C cache elements, where C is a real positive integer. The connection may be a direct connection, e.g., via a bus, or an indirect connection, e.g., via a component such as a router, node controller, etc. C may be, e.g., a real positive integer that is a power of 2, but in principle can be any real positive number. The snoop filter device is configured in accordance with the present invention to be organized when connected to C cache elements. The organization is accomplished by organizing the initial snoop filter instances together into a single cache element, S. f This is accomplished by grouping the snoop filters into 2 final snoop filter instances, for example x ·S f =S i、 For x={1,2,3,...}, the result is S f S i Therefore, the snoop filter device stores the initial snoop filter instance together with S f It may be said that the snoop filter device herein is configured to group the initial snoop filter instances together into S final snoop filter instances. f It will be appreciated that the snoop filter device may be considered to be specifically adapted to group the initial snoop filter instances together into S final snoop filter instances. fThe initial snoop filter instances may be grouped together by another agent, e.g., a CPU or a node controller, which may be considered to be specifically adapted to group the initial snoop filter instances into final snoop filter instances. The grouping of the initial snoop filter instances may be implemented by programming the snoop filter device, or an agent operating the snoop filter device, to perform the grouping, e.g., at a software or hardware level. Organization, in the context of the present invention, is considered an equivalent term to reorganization, and these two terms may be used interchangeably herein.

[0034] S f Each of the final snoop filter instances is, in accordance with the present invention, f snoop filter storage locations, where L f The snoop filter storage locations are f With respect to the initial snoop filter instances, the latter means that after grouping the initial snoop filter instances, the snoop filter device follows an entry placement policy similar to a set-associative cache. f 1 illustrates a final snoop filter instance that is organized in a way set associative manner. f A wayset-associative organization means that each final snoop filter instance is associated with n storage locations. f m f This means that it can be imagined as a matrix, where m f is the number of sets, and n f is the number of storage locations per set. f In other words, it can be said that,is the number of ways, and therefore, each final snoop filter instance has,n, f The total number of storage locations in each final snoop filter instance is L fAccording to the present invention, L f m i ×n i The total number of storage locations is equal to the total number of storage locations in the

[0035] Any snoop filter instance, whether it is an initial snoop filter instance or a final snoop filter instance, is mapped directly or to an exact value n i , n f and m i、 m f It will be appreciated by those skilled in the art that the snoop filter device may be considered to be fully associatively structured in a set-associative manner based on n. This structure means that the snoop filter device may follow entry placement policies similar to a fully associative cache, a direct-mapped cache, or a set-associative cache, respectively. As an example, example1 is equal to 1, and m example1 where n is the number of storage locations in the snoop filter instance. example1 Another example is a n-way set associative snoop filter instance. example2 is equal to the number of storage locations in the snoop filter instance, and m example2 n is fully associative when is equal to 1 example2 A way set associative snoop filter instance.

[0036] Any snoop filter instance, whether initial or final, can be considered to have the same functionality as a general snoop filter in accordance with the present invention. A general snoop filter can be considered here as an independent snoop filter, e.g., a snoop filter that includes only one instance. A directory of snoop filter instances can be considered to include storage locations of the snoop filter instances in accordance with any embodiment of the present invention. Each snoop filter instance is configured to operate in parallel with any other snoop filter instances, e.g., synchronously or asynchronously.

[0037] It will be understood by those skilled in the art that the storage location of any snoop filter instance, whether initial or final, can be considered to constitute a registry. The registry can be considered to be configured to store multiple snoop filter entries, one entry per storage location, as a result. An entry can be considered to be information stored in a storage location.

[0038] Figure 5 illustrates a schematic of a snoop filter storage location according to the invention, configured to store a tag identifying a cache line that can be stored in a cache element and to store P presence vectors. Item a) of Figure 5 illustrates the storage of one presence vector in an entry, item b) of Figure 5 illustrates the storage of two presence vectors in an entry, and item c) of Figure 5 illustrates the storage of 16 presence vectors in an entry. Tags and presence vectors stored in the same storage location of a snoop filter instance may be considered to be associated with each other according to any embodiment of the invention.

[0039] A presence vector can be simply interpreted as at least one bit containing information on whether a cache line identified by a tag stored in the same storage location as the presence vector is present in a given cache element. The presence vector can further contain an identifier for the cache line. Figure 3 is a schematic diagram of a presence vector, where item a in Figure 3 contains one bit and item b in Figure 3 contains multiple bits. The number of presence vectors P in each storage location is a constant according to the present invention. In other words, P does not change due to reorganization of the snoop filter device, i.e., P does not increase or decrease by C. The number P can be selected, for example, at the time of manufacturing the snoop filter device or can be selected at the time of configuration of the snoop filter device, for example, during a reboot operation.

[0040] The number of presence vectors P that can be stored in each snoop filter storage location, in accordance with the present invention, is a real positive integer, e.g., a real positive integer that is a power of 2. The number of presence vectors P that can be stored in each snoop filter storage location, in accordance with one embodiment of the present invention, is less than or equal to 16. P may be equal to 1, or alternatively may be equal to 2. Figure 5 illustrates three example snoop filter entries, one for P=1, one for P=2, and one for P=16.

[0041] A tag, in the context of the present invention, may be considered as a unique identifier of a cache line and is typically included as at least a portion of a cache line address. The cache line address may further include any one or more of an index, an offset, a flag bit, any number of state bits, and the like. A cache line address or a portion of a cache line address together with a cache block may constitute a cache line. In other words, a cache line includes at least a cache block and optionally includes at least a portion of a cache line address. A tag may be considered to be associated with the cache line it identifies according to any embodiment of the present invention.

[0042] The snoop filter device may include, for example, 2 x ·S f =S i、 Let us consider the initial snoop filter instances S together, such that x={1,2,3,...}. f The snoop filter instance in the center of FIG. 2a is configured to organize the snoop filter into 2S f =S i This reduces the number of sets, so 2m i =m f The rightmost snoop filter instance has a x ·S f =S i where x=2, resulting in 4S f =S i and therefore 4m i =m f In the center of Fig. 2b, each set of final snoop filter instances contains twice as many entries, i.e., n f =2n i and therefore m i =m f and 2S f =S i In the rightmost figure, n f =4ni and 4S f =S i In other words, the snoop filter device can be considered to be organized from an initial snoop filter organization to a final snoop filter organization. Thus, the initial snoop filter organization is determined by the parameter S i , m i , and n i while the final snoop filter composition can be defined by the parameter S f , m f , and n f As a result of grouping the initial snoop filter instances into multiple final snoop filter instances, a final snoop filter instance S f The number of initial snoop filter instances S i However, the number of storage locations in the snoop filter device is less than the number of i =m i ×n i =L f =m f ×n f Therefore, the organization of the snoop filter devices remains the same as the product S f m f ·n f S i m i ·n i is made equal to

[0043] Each snoop filter instance of the snoop filter device, be it an initial snoop filter instance or a final snoop filter instance, may store any respective predefined tag in up to one of its storage locations in accordance with the present invention. Since the storage location that stores the predefined tag also stores P other presence vectors, i.e., P presence vectors associated with the predefined tag, each snoop filter instance consequently holds information regarding the presence of a cache line identified by the predefined tag in P distinct cache elements. In other words, it can be said that each snoop filter instance may track P distinct cache elements for each tag. The snoop filter device may store S i Pieces or S f Since it contains snoop filter instances, the entire snoop filter device is therefore P·S i,f Each snoop filter instance may maintain information regarding the presence of a given cache line identified by a given tag in separate cache elements. Thus, each snoop filter instance may store a P·S i,f Each separate cache element may be tracked.

[0044] A storage location of one snoop filter instance may store a given tag that is also stored in a storage location of another snoop filter instance. Entries in two different instances, each containing the same tag, may further contain different presence vectors. Thus, a snoop filter device according to the present invention may track more cache elements that store cache lines identified by a single tag, compared to a conventional snoop filter device. FIG. 6 is a schematic diagram of a snoop filter device including S snoop filter instances, each of which stores a tag, tag A. Tag A is now associated with two separate presence vectors for each snoop filter instance, meaning that the snoop filter device may track up to 2·S cache elements in which cache lines identified by tag A are stored. FIG. 7 is a schematic diagram of a snoop filter device including multiple snoop filter instances, each of which stores separate tags, tags A, B, and Z. It can be seen in FIG. 7 that the number of cache elements that a snoop filter device can track may depend on the number of presence vectors at each storage location.

[0045] If P is a constant, the snoop filter device, in accordance with the present invention, i In other words, a snoop filter instance may store, for each tag, information about the presence of a given cache line identified by a given tag in P·S distinct cache elements. i It can be said that the snoop filter device can track up to P·S distinct cache elements through grouping of snoop filter instances. i The cache may be organized to track a separate cache element for each tag, which is less than S. f i ​The snoop filter device is organized into snoop filter instances, resulting in a maximum P·S for each tag. f <P·S i A snoop filter device according to the present invention can therefore track a variable number C of cache elements. i Fewer cache elements C example The snoop filter device installed as a component in a computing system including example According to the number of P·S f =C example Or at least P·S f <C example <P·S i The initial snoop filter instances may be grouped to organize the snoop filters such that: S = 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 , 32 , 33 , 34 , 35 , 36 , 37 , 38 , 39 , 40 , 41 , 42 , 43 , 44 , 45 , 46 , 47 , 48 , 50 , 51 , 52 , 53 , 54 , 55 , 66 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 90 , 91 , 92 , 93 , 94 , 95 , 96 , 97 , 98 , 99 , 100 , 110 , 120 , 130 , 140 , 150 , 160 , 170 , 180 , 19 ... f can be determined in accordance with the present invention from the number C of cache elements connected to the snoop filter device and the number P of presence vectors in each storage location. f is S f =C / P.

[0046] The snoop filter device according to the present invention is connectable to multiple cache elements C. Each cache element can further be considered to include multiple cache agents, and the cache elements as a whole can be referred to as agents, i.e., for example, proxy agents. A cache element can be interpreted in the context of the present invention as any collection of cache agents. A cache element can be interpreted, for example, to include any number of cache agents, for example, an integer number of cache agents, or a fractional number of cache agents. Thus, an example cache element can be half a cache agent, one cache agent, two cache agents, one whole cache agent and half another cache agent, etc. The cache agents in each cache element can be connected to the snoop filter device directly, collectively, or a combination of directly and collectively. It will be understood by those skilled in the art that any cache element can be considered to be any physical cache unit, part of a physical cache unit, or a group of cache units uniquely identified by a cache identifier. Thus, a cache identifier is an identifier for a cache element according to the present invention.

[0047] 9 is a schematic diagram of presence vectors including any number of presence bits, e.g., where the number of presence bits in each presence vector is sufficient to explicitly represent a cache identifier. A presence vector may additionally or alternatively include one occupancy bit. The occupancy bit may be set to true if a cache line identified by a tag associated with the presence vector is present in the cache element represented by the cache identifier, and may be set to false if the cache line is not present.

[0048] FIG. 8 is a schematic diagram of a snoop filter instance in which each snoop filter storage location is mapped to one cache element. Each snoop filter storage location of a snoop filter device may be mapped to one cache element according to any embodiment of the present invention. This mapping means that any one snoop filter storage location may track only the cache element to which it is mapped. Any one snoop filter storage location may, in other words, only contain information related to the cache line stored in the cache element to which the snoop filter storage location is mapped. Thus, each snoop filter storage location can be said to be bijectively mapped to one cache element. As a result, a snoop filter storage location that stores a given tag may indicate that the cache element to which the snoop filter storage location is mapped holds a copy of the cache line identified by that tag. As a result, the same snoop filter storage location may not contain any information about the part of the cache element, e.g., a particular cache agent, that holds a copy of the cache line. The same snoop filter storage location may not contain information regarding the presence of cache lines in other cache elements in the system. Each snoop filter storage location of a snoop filter device may be considered to be configured to be each mapped to one cache element according to any embodiment of the present invention. Multiple snoop filter storage locations may each be mapped to the same cache element. This means that a snoop filter device may utilize multiple snoop filter storage locations to track multiple cache lines in one cache element.

[0049] According to an embodiment of the present invention, the snoop filter device is designed such that each snoop filter storage location is implicitly mapped to one cache element. Each snoop filter storage location is then implicitly mapped to one cache element via a storage location in a snoop filter instance. This mapping may be by hardware, firmware integration, and / or software integration. As a result, the presence bits constituting the presence vector do not need to explicitly represent a cache identifier for a cache element. The number of presence bits per presence vector may be one bit indicating whether the cache element identified by the cache identifier holds a copy of a particular cache line. A presence bit of one is set to true if the cache line identified by the tag associated with said presence bit is present in the cache element to which the storage location of the presence bit is mapped, and is set to false if the cache line is not present.

[0050] Each storage location of the snoop filter device is configured to store snoop filter entries of the same format in accordance with the present invention. The format of a snoop filter entry is determined by what type of storage location element the entry comprises and by the number of bits assigned to each storage location element. Examples of such storage location elements are a tag, one or more presence vectors, one or more state bits, etc. The format of a snoop filter entry is also determined by the number of bits assigned to each storage location element, e.g., the number of tag bits and the number of presence bits per presence vector. Thus, two snoop filter entries of the same format comprise the same type of storage location elements with the same number of bits assigned to each storage location element. Figure 3 illustrates a snoop filter entry that includes one presence vector, where the presence vector includes multiple bits (Figure 3a) and the presence vector consists of one bit (Figure 3b).

[0051] A snoop filter device can be considered as a device that monitors data traffic and keeps track of the coherency state of data blocks belonging to various cache lines. The monitored data traffic can include information in the form of at least a portion of a cache line address, for example, information that a particular cache line has been modified. The cache line address can include a tag and a k-bit index, where at least a portion of the k bits are used to determine / index which set in the set associative snoop filter instance contains an entry with the tag attached to, i.e. associated with, the index. A tag belonging to a particular cache line address can then only be stored as part of an entry in the set of the set associative snoop filter instance indicated by the index of that cache line address. Thus, a cache line can be associated with a set in the instance, in other words, via the index of its cache line address.

[0052] A cache line address may include a tag and a k-bit index, as illustrated in FIG. 4, where at least a portion of the k-bit index is used to determine / index which set within the snoop filter instance contains an entry that holds the tag attached to, i.e., associated with, the index. For example, an 8-bit index can index 256 different sets, while a 4-bit index indexes 16 different sets. In some cases, for example, as illustrated in FIG. 4, a cache line may be 256 different sets. k >m i,f This means that the largest index of a cache line address may point to a set that does not exist in the snoop filter instance. Therefore, any snoop filter instance of the snoop filter device may have a k-bit index of 2 k >m i,fThen, we define the tag associated with the k-bit index as the lowest or highest log 2 (m i,f ) bits. The length of the index k may be determined by various system parameters, such as the associativity of various agents, e.g., cache elements or snoop filter agents. The degree of associativity here refers to the value of n for an n-way set associative agent. A direct mapped agent has associativity n=1, as previously described, an agent that is 2-way set associative has associativity n=2, an agent that is 4-way set associative has associativity n=4, and so on.

[0053] The snoop filter device may be implemented with an initial number S i A snoop filter device may be manufactured with an initial number of snoop filter instances. This initial number of snoop filter instances may be implemented, for example, in hardware or software, and determines the maximum number of snoop filter instances that the snoop filter device may include. An example of such a snoop filter device is an ASIC-based snoop filter device manufactured with an initial number of physically implemented instances. The initial number of snoop filter instances may be any power of two, for example, 8, 16, 32, 64, or 128.

[0054] The snoop filter device may be driven by a separate unit, e.g., a node controller or CPU, in accordance with one embodiment of the present invention. This unit may be configured to operate the initial snoop filter instances completely independently, or to operate a group of two or more final snoop filter instances simultaneously as if they were one instance. The unit driving the snoop filter device may be configured to use S to track the maximum number of cache elements. iEach of the initial snoop filter instances can be operated independently. Since each snoop filter instance can track P cache elements per tag, the maximum number of cache elements that the snoop filter device can track is C max In this case, C max =P·S i Maximum C max If it is desirable to track a smaller number of cache elements, the unit driving the snoop filter device may group multiple initial snoop filter instances into a larger final, i.e. valid, instance. The grouping of snoop filter instances may be done in practice, for example, through address interleaving.

[0055] As an example, the snoop filter device may include m i sets and n per set in each initial instance i With an initial number S of storage locations i The initial snoop filter instance can be designed with S i , m i , and n i Here, can be any positive integer, for example, S i =2 g where g={1,2,...} and m i =2 h where h={0,1,2,...} and n i =2 j where j={0,1,2,...}. The snoop filter device, as described herein, max is configured to track cache elements, where C max =P·S i The snoop filter device groups multiple initial snoop filter instances together to achieve <C max For example, S iUsing a snoop filter device designed with initial snoop filter instances, C = C max If it is desired to track S / 2 cache elements, the snoop filter device, or the components driving the snoop filter device, may, for example, group two initial snoop filter instances together. In the latter case, the snoop filter device may f =S i This results in n / 2 final snoop filter instances. f and m f is the formula S f m f ·n f =S i m i ·n i This is determined according to m f ×n f =2m i ×n f For example, m f =m i If n f =2 n i or n f =n i If m f =2 m i It is.

[0056] S i , m i , and n i may each be any positive integer, e.g., S i =2 g where g={1,2,...} and m i =2 h where h={0,1,2,...} and n i =2 j where j={0,1,2,...}. m i can be, for example, on the order of hundreds, thousands, or tens of thousands. i can be, for example, on the order of hundreds, thousands, or tens of thousands. imay be equal to 8, 16, 32, 64, 128, or 256, for example.

[0057] 10 and 11 illustrate a node controller including a snoop filter device. The node controller may be configured to drive the snoop filter device and to group initial snoop filter instances in the snoop filter device into final snoop filter instances. The snoop filter device may then be connected to C cache elements via the node controller.

[0058] Figure 12 illustrates a multi-component computer system including C cache elements and a snoop filter device connected to the C cache elements. Figure 13 illustrates a multi-component computer system including C cache elements and a node controller including a snoop filter device, the node controller connected to the C cache elements.

[0059] FIG. 14 illustrates a computer-implemented method including organizing a snoop filter device according to a first aspect of the present invention, where the snoop filter device is connected to C cache elements, and a product S f m f ·n f The product S i m i ·n i is equal to S fis equal to C / P. The computer-implemented method may be performed by any suitable means, as will be appreciated by those skilled in the art. The suitable means here may be a CPU, a group of CPUs, a node controller, or other suitable means. The computer-implemented method may be stored as a series of executable instructions on a computer-readable storage medium, installed for example on a node controller, as shown diagrammatically in Figures 10 and 11. The instructions may be executed by a computer system, or a component of a computer system, for example a CPU, a group of CPUs, or a node controller. Execution of the instructions enables the computer system to perform the computer-implemented method.

Claims

1. 1. A snoop filter device arranged to track a variable number C of cache elements, comprising: The snoop filter device is i number of initial snoop filter instances; the snoop filter device is connectable to C cache elements; When the snoop filter device is connected to the C cache elements, the initial snoop filter instance is generated together with S f configured to organize the snoop filters into final snoop filter instances; Each initial snoop filter instance is i Sets of pieces and n per set i Using storage locations, L i M i ・n i so that n is equal to i L organized using the wayset associative method i snoop filter storage locations; Each final snoop filter instance is f Sets of pieces and n per set f Using storage locations, L f M f ・n f so that n is equal to f L organized using the wayset associative method f snoop filter storage locations; each snoop filter storage location is configured to store a tag identifying a cache line that can be stored in the cache element and to store P presence vectors, each presence vector containing information regarding the presence of the cache line identified by the tag; Product S f ・m f ・n f The product S i ・m i ・n i is equal to S f <S i And S f A snoop filter device where C / P is equal to the snoop filter device.

2. each cache line includes a cache line address including a predetermined tag and a predetermined k-bit cache line index; Any snoop filter instance of the snoop filter device may include k >m f , the lowest or highest logarithm of the given k-bit cache line index 2 (m f 3. A snoop filter device as claimed in claim 1 or 2, configured to store the predetermined tag in a set indicated by a .

3. 3. The snoop filter device of claim 1, wherein P≦16.

4. The snoop filter device of claim 4 , wherein P=1 or P=2.

5. S f ≧2, The S f each snoop filter instance among the final snoop filter instances is configured to store the same tag in one of its storage locations; A snoop filter device according to any preceding claim, wherein each of the storage locations of the snoop filter device that store the same tag is configured to store a different presence vector.

6. A snoop filter device according to any preceding claim, wherein each snoop filter storage location is mapped to one cache element.

7. 7. A snoop filter device as claimed in claim 1, wherein each presence vector comprises a number of presence bits, the number of presence bits being equal to the number of bits required to write a cache element identifier plus one additional bit.

8. A snoop filter device according to any preceding claim, wherein each presence vector consists of one presence bit.

9. A node controller comprising the snoop filter device according to any one of claims 1 to 8.

10. A multi-component computer system, C cache elements; A snoop filter device according to any one of claims 1 to 8 connected to the C cache elements; 10. The node controller of claim 9, wherein the snoop filter device of the node controller is connected to the C cache elements; and 1. A multi-component computer system comprising:

11. 1. A computer-implemented method comprising: A computer implemented method comprising the steps of: a) organizing a snoop filter device according to any one of claims 1 to 8.

12. 12. A data processing system comprising means for performing the computer-implemented method of claim 11.

13. 12. A computer readable storage medium containing instructions that, when executed by a computer system, cause the computer system to perform the computer implemented method of claim 11.

Citation Information

Patent Citations

  • Snoop filter built-in address decoder

    JP2009169877A

  • Hybrid precise and non-precise cache snoop filtering

    JP2021533464A

  • Snoop Filter Device

    JP2022526041A

  • Snoop filter device

    WO2020197404A1

  • JP2009310414A