What's the point of DMA in embedded CPU's?
The long and short is that DMA allows the CPU to effectively behave at its native speed, while the peripherals can effectively behave at their native speed. Most of the numbers in the example are made up. 

Let's compare two options to periodically collect data from an ADC:


You can set the ADC as part of an interrupt (periodic or otherwise)
You can create a buffer, and tell the DMA to transfer ADC readings to the buffer. 


Let's transfer 1000 samples from the ADC to RAM.

Using option 1: For every sample there is


12 cycles are spent entering interrupt 
read adc(s)
store in ram
12 cycles are spent exiting interrupt


Let's pretend this interrupt function is 76 instructions, the whole routine is 100 instructions long, assuming single cycle execution (best case). That means option 1 will spend 100,000 cycles of CPU time executing.

Option 2: DMA is configured to collect 1000 samples of ADC. Let's assume the ADC has a hardware trigger from a timer counter.


ADC and DMA transfer 1000 samples data in to ram
DMA interrupts your CPU after 1000 samples
12 cycles are spent entering interrupt
Code happens (let's say it tells the DMA to overwrite the RAM)
12 cycles are spent exiting interrupt


Pretending the whole interrupt (with entry and exit overhead) is 100 single-cycle instructions. Using DMA, you only spend 100 cycles to save the same 1000 samples. 

Now, each time the DMA accesses the bus, yes, there might be a dispute between CPU and DMA. The CPU may even be forced to wait for the DMA to finish up. But waiting for the DMA to finish is much much shorter than locking the CPU in to servicing the ADC. If the CPU core clock is 2x Bus clock, then the CPU might waste a few core cycles waiting for the DMA to finish. This means that your effective execution time of the transfer is between 1000 (assuming CPU never waits)and 9000 cycles. Still WAY better than the 100,000 cycles.