Hard Processor System Technical Reference Manual: Agilex™ 5 SoCs

ID 814346
Date 4/01/2024
Public
Document Table of Contents

5.1.6.2.10. Memory Cache Access Arbitration

The following are the typical memory arbitration accesses:
  1. Descriptor memory cache write (descriptor read from system memory)
  2. Descriptor memory cache read (prefetched descriptor read)
  3. TSO memory cache write (TSO header read from system memory)
  4. TSO header memory cache read (memory cache read)

The memory access requests 1. and 2. are issued by all TX and RX DMA channels. The memory access requests 2. and 3. are issued by all TX DMA channel with TSO enabled.

The memory arbitration policy (arbitration occurs every clock cycle) is as follows:
  • Memory access requests 1. and 3. are mutually exclusive requests as the source of the data is system memory and only one request can be serviced in any clock cycle.
  • Memory access requests 1. and 3. have higher priority over memory access requests 2. and 4. so that transactions on data bus is not held or blocked.
  • The arbitration between memory access requests 2. and 4. is controlled by Bit[5], TMRP field of the DMA_mode register. When this bit is 0, memory access request 2. has the higher priority over 4. When this bit is 1, then memory access request 4. has the priority over 3.
  • Memory access request 2. can arrive from both TX and RX DMAs. The arbitration between TX and RX DMA for descriptor memory read is controlled by Bit[4], TDRP field of the DMA_Mode register. When this bit is 0, the RX DMA requests have priority over TX DMA requests. When this bit is 1, TX DMA requests have priority over RX DMA requests. If the requests arrive from multiple TX DMAs or multiple RX DMAs, the higher DMA channel gets the priority over lower DMA channels.
  • Memory access request 4. can arrive from multiple TX DMAs. The higher DMA channel has priority over lower DMA channels.

Because the descriptor cache is housed in a separate memory, separate arbiters are present. This arbitration occurs every clock cycle. One arbitrates between 1. and 2. while the other is responsible for arbitration between 3. and 4. The rules for each arbiter remain the same as explained.