This section provides an overview of CCIX modes of operation along with transaction flows. The following figure shows the transaction flow overview for the three CCIX agents in the CPM.
The CCIX utilizes the traditional VC0 path for programming the user kernels (control path operations) and address translation services (ATS) to enable shared virtual memory paradigms where user kernels work directly with virtual addresses. This is depicted by the outbound PCIe requests (for example, ATS requests) and inbound PCIe requests (for example, register programming in user kernel) paths. Using CIPS GUI to Configure CPM-CCIX provides an overview of Vivado Control, Interfaces, and Processing System (CIPS) configuration options for various agents and modes in the CPM.
CCIX agent types supported are:
- Request Agent
- A request agent (RA) is a CCIX agent that is the source of the read and write transactions. Each of the CCIX RAs might have one or more internal initiators or acceleration functions (AF). With regards to transaction flow, user kernels (implemented in programmable logic) issue read or write requests (outbound CCIX requests) and remote home agent issues snoops (shown as inbound snoops).
- Home Agent
- A home agent (HA) is a CCIX agent that manages coherency and access to memory for a given address range. An HA manages coherency by sending snoop transactions to the required RA when a cache state change is required for a cache line. Each CCIX home agent acts as a Point of Coherency (PoC) and Point of Serialization (PoS) for a given address. With regards to transaction flow, remote-RA (on the host end) issues read or write requests (inbound CCIX requests) and if local RA (with kernel in programmable logic) is also enabled, requests to local memory (CCIX requests to locally homed memory) are seen.
- Slave Agent
- CCIX enables expanding system memory to include memory attached to an external CCIX device. When a home agent resides on a separate chip, the resulting new architectural component (expansion memory) is referred to as a slave agent (SA). An SA is never accessed directly by an RA. An RA always accesses an HA, which in turn accesses the SA. In terms of transaction flow, this always receives memory requests from remote-HA (inbound CCIX requests).
As there are two integrated controllers for PCI Express, each agent can be supported in a single-port or dual-port configuration. A higher bandwidth connectivity between two CCIX devices can be achieved by aggregating multiple CCIX ports; this is referred to as port aggregation. Port aggregation is supported in dual-port configuration.