Configurable snoop filters for cache coherent systems
AssigneeArteris, Inc.
InventorsCraig Stephen Forrest, David A. Kruckemyer
Life of this patent
Estimating the term…
Abstract
A cache coherent system includes a directory with more than one snoop filter, each of which stores information in a different set of snoop filter entries. Each snoop filter is associated with a subset of all caching agents within the system. Each snoop filter uses an algorithm chosen for best performance on the caching agents associated with the snoop filter. The number of snoop filter entries in each snoop filter is primarily chosen based on the caching capacity of just the caching agents associated with the snoop filter. The type of information stored in each snoop filter entry of each snoop filter is chosen to meet the desired filtering function of the specific snoop filter.
Claims14
A system comprising:
- set of snoop filters;
- a first coherent caching agent, with a first variant of a characteristic, in communication with the set of snoop filters;
- a second coherent caching agent, with a second variant of the characteristic, in communication with the set of snoop filters;
- a first snoop filter selected from the set of snoop filters for storing information in a first set of snoop filter entries;
- and
- a second snoop filter selected from the set of snoop filters for storing information in a second set of snoop filter entries,
- wherein the first coherent caching agent is associated with the first snoop filter such that the first snoop filter only tracks cache lines actively in-use by the first coherent caching agent and the second coherent caching agent is associated with the second snoop filter such that the second snoop filter only tracks cache lines actively in-use by the second coherent caching agent,
- wherein a first filter entry selected from the first set of snoop filter entries, the first filter entry stores a valid bit, owner pointer bits, and presence vector bits,
- wherein a second filter entry selected from the second set of snoop filter entries, the second filter entry store presence vector bits and no valid bit and no owner pointer bits, and
- wherein validity for the second filter entry is determined by logically ORing the second filter entry's presence vector bits.
An end-user product comprising:
- a set of snoop filters;
- a first coherent caching agent, with a first variant of a characteristic, in communication with the set of snoop filters;
- a second coherent caching agent, with a second variant of the characteristic, in communication with the set of snoop filters;
- a first snoop filter within the set of snoop filters arranged to store information in a first set of snoop filter entries;
- and
- a second snoop filter within the set of snoop filters arranged to store information in a second set of snoop filter entries,
- wherein the first coherent caching agent is associated with the first snoop filter such that the first snoop filter only tracks cache lines actively in-use by the first coherent caching agent and the second coherent caching agent is associated with the second snoop filter such that the second snoop filter only tracks cache lines actively in-use by the second coherent caching agent,
- wherein a first filter entry selected from the first set of snoop filter entries, the first filter entry stores a valid bit, owner pointer bits, and presence vector bits,
- wherein a second filter entry selected from the second set of snoop filter entries, the second filter entry store presence vector bits and no valid bit and no owner pointer bits, and
- wherein validity for the second filter entry is determined by logically ORing the second filter entry's presence vector bits.
A method of allocating snoop filter entry storage to a plurality of snoop filters in a system with a plurality of coherent caching agents, the method comprising the steps of:
- associating a first set of coherent caching agents with a first snoop filter;
- associating a second set of coherent caching agents with a second snoop filter;
- allocating a first number of snoop filter entries to the first snoop filter such that the first snoop filter only tracks cache lines actively in-use by the first coherent caching agent;
- and
- allocating a second number of snoop filter entries to the second snoop filter such that the second snoop filter only tracks cache lines actively in-use by the second coherent caching agent,
- wherein the first number of snoop filter entries and the second number of snoop filter entries are different
- wherein a first filter entry selected from the first number of snoop filter entries, the first filter entry stores a valid bit, owner pointer bits, and presence vector bits,
- wherein a second filter entry selected from the second number of snoop filter entries, the second filter entry store presence vector bits and no valid bit and no owner pointer bits, and
- wherein validity for the second filter entry is determined by logically ORing the second filter entry's presence vector bits.
Dependencies are inferred from the claim text.