Intel Acceleration Stack for Intel® Xeon® CPU with FPGAs Core Cache Interface (CCI-P) Reference Manual

ID 683193
Date 11/04/2019
Public
Document Table of Contents

1.3.5. MMIO Accesses to I/O Memory

The CCI-P defines MMIO read and write requests for accessing the AFU register file. MMIO requests are routed from the CPU to the AFU over a single PCIe channel.

MMIO Reads

The AFU receives an MMIO read request over pck_cp2af_sRx.c0. The CCI-P asserts mmioRdValid and drives the MMIO read request on hdr. The c0_ReqMmioHdr structure provides a convenient mapping from a flat bit-vector to MMIO request fields – {address, length, tid}.

The AFU drives an MMIO read response over pck_af2cp_sTx.c2. The AFU asserts mmioRdValid and drives the response header and data on hdr and data, respectively. The AFU is expected to return the request tid with the corresponding response it used to associate the response with request.

The following list describes key attributes of a CCI-P MMIO read request:
  • Data lengths supported are 4 bytes and 8 bytes
  • Response length must match the request length. For example, it is illegal to return two 4-byte responses to an 8-byte MMIO read request
  • Maximum number of outstanding MMIO read requests is limited to 64
  • MMIO reads to undefined AFU registers should still return a response

MMIO Writes

The AFU receives an MMIO write request over pck_cp2af_sRx.c0. The CCI-P asserts mmioWrValid and drives the MMIO write request header and data on hdr and data, respectively. The c0_ReqMmioHdr structure provides a convenient mapping from a flat bit-vector to MMIO request fields – {address, length, tid}. The MMIO write request is posted and no response is expected from the AFU.

The data lengths supported are 4 bytes, 8 bytes, and 64 bytes.

Note: Not supported on all Intel® Xeon® platforms.

Implementation Note for all MMIO Accesses

The following is a list of important considerations when designing an AFU MMIO register file:
  • It is mandatory for the AFU to support 8-byte accesses in order to implement the DFH.
  • Support for 4-byte MMIO accesses is optional. The AFU developer can coordinate with the software application developer to avoid 4-byte accesses.
  • The AFU can accept MMIO requests as they arrive, consecutively, without any delays.
  • Unaligned MMIO accesses results in an error. The software application developer must ensure that the MMIO address is aligned to the request length. For example: 8-byte MMIO request byte address should be a multiple of 8, which means byte address[2:0] should be 0.