The Acquire channel is used to intiate coherence protocol transactions in order to gain access to a cache block's data with certain permissions enabled.
uncore.Acquire with an extra field stating its source id
Appends the port index of the arbiter to the client_xact_id
Stores the client-side coherence information, such as permissions on the data and whether the data is dirty.
This version of TileLinkIO does not contain network headers.
Concrete client-side arbiter that appends the arbiter's port id to client_xact_id
A port to convert uncore.ClientTileLinkIO.
Directionality of message channel.
Directionality of message channel.
This version of UncachedTileLinkIO does not contain network headers.
Concrete uncached client-side arbiter that appends the arbiter's port id to client_xact_id
Base class to represent coherence information in clients and managers
The entire CoherencePolicy API consists of the following three traits: HasCustomTileLinkMessageTypes, used to define custom messages HasClientSideCoherencePolicy, for client coherence agents HasManagerSideCoherencePolicy, for manager coherence agents
The Finish channel is used to provide a global ordering of transactions in networks that do not guarantee point-to-point ordering of messages.
A helper module that automatically issues uncore.Finish messages in repsonse to uncore.Grant that it receives from a manager and forwards to a client
The Grant channel is used to refill data or grant permissions requested of the manager agent via an uncore.Acquire message.
uncore.Grant with an extra field stating its destination
Address of a cache block.
The id of a client source or destination.
This API contains all functions required for client coherence agents.
This API defines the custom, coherence-policy-defined message types, as opposed to the built-in ones found in tilelink.
Utility trait containing wiring functions to keep track of how many data beats have been sent or recieved over a particular uncore.TileLinkChannel or pair of channels.
This API contains all functions required for manager coherence agents.
Manager-side transaction id.
Sub-block address or beat id of multi-beat data
A single beat of cache block data
HierarchicalMetadata is used in a cache in a multi-level memory hierarchy that is a manager with respect to some inner caches and a client with respect to some outer cache.
A simple protocol with only three Client states.
A protocol with four Client states.
A simple protocol with only two Client states.
A protocol with only three Client states.
Stores manager-side information about the status of a cache block, including whether it has any known sharers.
This version of TileLinkIO does not contain network headers, but every channel does include an extra client_id subbundle.
A port to convert uncore.ManagerTileLinkIO.
Directionality of message channel.
Uses the client_xact_id as is (assumes it has been set to port index)
The Probe channel is used to force clients to release data or cede permissions on a cache block.
uncore.Probe with an extra field stating its destination id
The Release channel is used to release data or permission back to the manager in response to uncore.Probe messages.
uncore.Release with an extra field stating its source id
Used to track metadata for transactions where multiple secondary misses have been merged and handled by a single transaction tracker.
Utility functions for constructing TileLinkIO arbiters
Base trait for all TileLink channels
Struct for describing per-channel queue depths
Optionally enqueues each uncore.TileLinkChannel individually
Complete IO definition for coherent TileLink, including networking headers
Abstract base case for any Arbiters that have cached TileLinkIOs
Utility trait for building Modules and Bundles that use TileLink parameters
Complete IO definition for incoherent TileLink, including networking headers
Abstract base case for any Arbiters that have UncachedTileLinkIOs
Overwrites some default client_xact_id with the port idx
Contains definitions of the the built-in Acquire types and a factory for uncore.Acquire
Factories for ClientMetadata, including on reset
Get a single beat of data from the outer memory hierarchy
Get a whole cache block of data from the outer memory hierarchy
Prefetch a cache block into the next-outermost level of the memory hierarchy with read permissions.
Contains definitions of the the built-in grant types and factories for uncore.Grant and uncore.GrantToDst
Factories for HierarchicalMetadata, including on reset
Identifies the TLId of the inner network in a hierarchical cache controller
Factories for ManagerMetadata, including on reset
Identifies the TLId of the outer network in a hierarchical cache controller
Contains factories for uncore.Probe and uncore.ProbeToDst
Put a single beat of data into the outer memory hierarchy
Perform an atomic memory operation in the next-outermost level of the memory hierarchy
Put a whole cache block of data into the outer memory hierarchy
Prefetch a cache block into the next-outermost level of the memory hierarchy with write permissions.
Contains a uncore.Release factory
Width of cache block addresses
Coherency policy used to define custom mesage types
Number of data beats per cache block
Width of data beats
Unique name per TileLink network
Maximum number of unique outstanding transactions per client
Maximum number of clients multiplexed onto a single port
Maximum number of unique outstanding transactions per manager
Number of client agents that do not cache data and use built-in uncore.Acquire types
Number of client agents that cache data and use custom uncore.Acquire types
Number of client agents
Number of manager agents
Whether the underlying physical network preserved point-to-point ordering of messages
Utilities for safely wrapping a *UncachedTileLink by pinning probe.