DMA는 말 그대로 CPU 타임을 아끼게 해준다. 요약하자면 다음과 같이 응용된다. 칩마다 조금 다름
이렇게 하면 4단계의 수행만으로 복사에 대해서 CPU은 don't care 상태이다. 복사가 끝나면 DMA 인터럽트를 통해서 끝났음을 알려준다.
다음의 경우는 일반적인 DMA 복사의 경우이다.
0--------------f
****************
****************
****************
****************
****************
****************
****************
****************
.
.
.
.
****************
****************
0x3000:0000 - 0x3000:4000 까지의 연속 복사이다. 이 경우는 DMA가 월등히 빠르고 CPU 타임을 아껴준다.
다음의 경우를 보자. 블럭복사이다.
0--------------f
----------------
----------------
----------------
----****--------
----****--------
----****--------
----****--------
----------------
----------------
.
.
.
.
----------------
----------------
이런 경우는 연속적인 부분이 짧다. 따라서 DMA 셋업을 4회나 수행해야 한다. DMA에 의해서 버는 CPU타임은 적은 반면에 DMA 셋업 오버헤딩이 더 클 수도 있다.
따라서 수 바이트의 작은 메모리 복사를 빈번하게 하는 경우 DMA는 오히려 독이 될 수도 있다. 대표적인 경우가 프레임버퍼 - 비디오램 복사문제이다.
이 경우는 DMA를 쓰지 않아야 하는 경우가 많다. 비디오 처리를 고속화 하기 위해서 칩레벨의 명령어로서 블럭 트랜스퍼를 지원한다면 다음과 같이 될 것이다. 2D 가속기가 하는 일이다.
역시 4단계의 수행만으로 끝난다.