28.4.4. Descriptor Processing with Prefetcher Enabled
The DMA descriptors specify data transfers to be performed. With the Prefetcher core, a descriptor is stored in memory and accessed by the Prefetcher core through its descriptor write and descriptor read Avalon-MM host. The mSGDMA has an internal FIFO to store descriptors read from memory. This FIFO is located in the dispatcher’s core. The descriptors must be initialized and aligned on a descriptor read/write data width boundary. The Prefetcher core relies on a cleared Owned by Hardware bit to stop processing. When the owned by Hardware bit is 1, the Prefetcher core goes ahead to process the descriptor. When the Owned by Hardware bit is 0, the Prefetcher core does not process the current descriptor and assumes the linked list has ended or the next descriptor linked list is not yet ready.
Each time a descriptor has been processed, the mSGDMA IP updates the Actual Byte Transferred, Status and Control fields of the descriptor in host memory (descriptor write back). Sideband information is also written back when Expose response port to enable sideband support parameter is enabled. The Owned by Hardware bit in the descriptor control field is cleared by the IP during descriptor write back. Refer to mSGDMA Programming Model to know more about recommended ways to set up the Prefetcher core, building and updating the descriptor list.
Prefetcher performs descriptor write back to the same memory address where it fetched for the descriptor. In order for the Prefetcher to know which memory addresses to perform descriptor write back, the next descriptor pointer information will need to be buffered in Prefetcher core. This information is taken out from the buffer each time a response is received from dispatcher. The buffer depth is configurable through the descriptor FIFO depth parameter. This buffer depth will be similar to descriptor FIFO depth in dispatcher core.