A DMA device prefetches descriptors into a descriptor prefetch buffer. The
size of descriptor prefetch buffer holds an appropriate number of
descriptors for a given latency environment. To support a linked list of
descriptors, the DMA engine prefetches descriptors based on the
assumption that they are sequential in memory and discards any
descriptors that are found to violate this assumption. The DMA engine
seeks to keep the descriptor prefetch buffer full by requesting multiple
descriptors per transaction whenever possible. The bus engine fetches
these descriptors from system memory and writes them to the prefetch
buffer. The DMA engine may also use an aggressive prefetch where the bus
engine requests the maximum number of descriptors that the buffer will
support whenever there is any space in the descriptor prefetch buffer.
The DMA device discards any remaining descriptors that cannot be stored.