The original DMA controller was designed to expect streaming data - that is, once data was received from the source it would start writing to the destination. This could lead to starving the downstream channel while waiting for the rest of the data for the current burst. These changes will wait for the data buffer to contain at least enough data for the entire burst before starting to send it.
Collateral (docs, reports, design examples, case IDs):
Description
The original DMA controller was designed to expect streaming data - that is, once data was received from the source it would start writing to the destination. This could lead to starving the downstream channel while waiting for the rest of the data for the current burst. These changes will wait for the data buffer to contain at least enough data for the entire burst before starting to send it.
Collateral (docs, reports, design examples, case IDs):
none
Tests added:
none
Tests run:
N6001: Tested in hw: anr, boardtest, cholesky, cholesky_inv, decompress, merge-sort, mvdr-beamforming, double-buffering (> 100x), gzip (576MB file, >100x), simple-host-streaming, buffered-host-streaming, zero-copy-data-transfer, explicit-data-movement. D5005: Test in hw: anr, boardtest, cholesky, cholesky-inv, decompress, merge-sort, mvdr, double-buffering, gzip (manual gunzip is successful), shs, bhs, zcdt, edm.