View Single Post
Old 29 June 2017, 20:54   #260
Registered User
Join Date: Jun 2010
Location: PL
Posts: 1,653
Short: Meynaf is right,
Long: DMA can provide time deterministic response for time critical event which is usually beyond capabilities of the modern CPU's (unless special CPU's design) nowadays DMA are usually provided with basic data processing (so they can be considered as special case CPU) - they can even assist decoding for modern video codecs such as H.264 or detect particular bitstream errors (classical examples are DMA channels frequently called FDMA - Flexible DMA in modern multimedia players SoC's).
With clever (proper) system design - DMA may use cycles wasted by CPU or may use available bus time significantly more efficient than CPU.
General CPU usually perform code with lot of conditional cases where DMA is usually block oriented wit relatively simple data flow (without conditional or conditional are highly limited - error detection etc).
DMA can be emulated by CPU but usually at a cost of additional cycles.
Bus access is always problem as such you need good architectural design for any concurrent access arbitration (so good bus arbiter is crucial from overall system performance perspective).
Good illustration for this is general trend in modern CPU's (those with long queue length) is to avoid interrupts in a favor of pooling...
pandy71 is offline  
Page generated in 0.03909 seconds with 10 queries