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.10. Byte Enable Memory Request ( Intel® FPGA PAC D5005)

To achieve fine control of write data so that only specific bytes of data are written to host memory, use the byte enable mode. Listed below are the characteristics of byte enable memory requests:
  • Byte enable memory requests use a byte-invariant little endianness scheme. This means that:
    • For any single or multi-byte element in a data structure, the element uses the same contiguous bytes of memory, specified by the byte_start and byte_len header fields.
    • Write data is positioned in the data field at the offset where it is stored within the cache line. The first data bit written is bit byte_start*8.
  • byte_start specifies the byte index, where the least significant byte is 0 (pck_af2cp_sTx.c1.data[7:0]), and the most significant byte is 63 (pck_af2cp_sTx.c1.data[511:504])
  • byte_len specifies the number of bytes to be included in a byte-enabled memory write transaction. The byte length extends the write data towards the most significant byte.
  • Byte enable memory requests must operate with cache length (cl_len) set to 0 (a 1 CL memory write request).
  • The length cannot extend past byte 63 of pck_af2cp_sTx.c1.data. The maximum allowable byte length can be represented by the following equations:
    • If byte_start is 0:
      • MAX_BYTE_LEN = 63
    • If byte_start is not 0:
      • MAX_BYTE_LEN = 64 – byte_start
The following table is an example of how the channel 1 request header (pck_af2cp_sTx.c1.hdr) indexes bytes in byte enable mode. In this example, the AFU designer is writing bytes [20:4] (pck_af2cp_sTx.c1.data[167:32]) of the data word 0xAAAABBBBCCCCDDDDE to bytes [20:4] of the host memory at address 0xFFF00.
  Bit Index Width (bits) Field Value
Header 79:74 6 byte_len 0x11
73:72 2 vc_sel eVC_VA (0x0)
71 1 sop=1 1
70 1 (CL/byte) 0:CL, 1:byte 1
69:68 2 cl_len 0
67:64 4 req_type eREQ_WRLINE_I (0x0)
63:58 6 byte_start 0x4
57:18 40 address 0xFFF00
17:16 2 0x0
15:0 16 mdata 0x0
Data 512 Data 0xAAAABBBBCCCCDDDDE
Figure 15. Host memory at address 0xFFF00. This figure shows the value in host memory before and after a write.