Previous | Next --- Slide 24 of 35
Back to Lecture Thumbnails
rojo

From my understanding such a scenario is handled by DMA (Direct Memory Access) controller. Since no computation is performed, the DMA is assigned the job of moving the data from source to destination which does not involve the processor. The DMA performs this job and interrupts (conveys) to the processor that the job is complete. Meanwhile the processor can do useful work by executing another thread while DMA is at work.

iZac

@rojo I believe this is not an example of DMA. As mentioned in the next slide, this method (developed at CMU) helps copying data within memory, thus eliminating the need for data movement outside DRAM. Precharge and activation of the two rows are enough to do the bulk copy.

BigFish

@iZac Agree, when memcpy is called, maybe there is actually DMA here. But I think the main issue here is an optimization by DRAM to avoid copying data out of memory and copy back again. Instead, it simply load the row into row buffer and write back to destination row in memory.

vrazdan

I may be wrong, but I thought DMA is more-so involved when two independent pieces of hw want to send large amounts of data between themselves, and not as much as one HW component moving data around inside itself. So in this case it wouldn't be a DMA transfer.

haodongl

@vrazdan good point! Data is transferred inside Memory in this case so DMA is not used.