Packetization overhead affects the amount of data that can move through the NoC data paths. Some flits transport data while others carry protocol related information such as the transaction address or the packet response.
The following figure shows the packet types and the overhead incurred for each type. The NoC packet domain data paths are all 128 bits (16 bytes) wide. Each read request consumes one header flit in the request path and n data flits in the response path. (a) shows this.
A write request has one header flit and n data flits. For example, a 64-byte transfer that aligns with the burst start consumes five data path flits (one header flit and four data flits). The write response consumes one flit in the response path. (b) shows this.
If the AXI request is less than the chop size (minimum of 256 bytes or interleave granularity in the case of interleaved memory channels), the transfer ends early. Unused flits are available for another command.
A data path with bandwidth X GBytes/sec of raw bandwidth has (n/n+1) X Gbytes/sec of bandwidth where n is the burst length. Use the QoS tab of the NoC GUI under advanced features to set the burst length. To minimize overhead, select a burst length such that (burst length X data width in Bytes = chop size).
Each write request generates one response flit. Note that the NoC NMU has a default chop size of 256 bytes, or interleave granularity if smaller. A write request can get chopped into multiple write bursts, each with a write response. The NMU handles coalescing the responses so the original AXI write bursts only see one write response.
For a full duplex NoC link sending a mix of read and write requests in one direction and receiving responses, extra flits are generated. This degrades the peak bandwidth.
The following figure shows an example. It shows the request and response paths of one physical link, with the order of flits sent over each physical link in each direction.
This example shows 64B packets with a 50/50 read/write mix. For this traffic mix and packet size there are groups of six flits in the request path. These six flits are one read request flit, one write request header flit, and four write data flits.
In the response path, there are four read data response flits and one write response flit. There is also one dead cycle. This is because this traffic mix involves a 50/50 mix between read and write data. That is, the read and write bandwidth are the same. With this mix, there are five response flits for every six request flits. The request path is the bottleneck (the response path has some spare capacity).
| Bytes per Transaction/Frequency | 0/100 (%Rd/%Wr) |
30/70 | 50/50 | 70/30 | 100/0 |
|---|---|---|---|---|---|
| 32B@1000 MHz | 0/10.67 | 4.0/9.33 | 8.0/8.0 | 13.17/5.65 | 16.0/0 |
| 64B@1000 MHz | 0/12.8 | 5.05/11.79 | 10.67/10.67 | 14.45/6.19 | 16.0/0 |
| 256B@1000 MHz | 0/15.06 | 6.30/14.69 | 14.22/14.22 | 15.58/6.68 | 16.0/0 |