우선 DMA에 대한 자세한 설명은 생략하겠다.
DMA는 시스템버스를 통하여 데이터 교환이 이루어지는데 그것은 곧 CPU와 같은 버스를 이용하겠다는
의미이다. 하드웨어쪽에서 데이터 교환을 위해 CPU에게 버스 사용권에 대해 허락요청을 하게되고
상황에 따라 grant를 해주면 DMA를 수행하게 되는 것이다.
( 언밀히 말하자만 CPU가 허락을 해주는 것은 아니다. 버스를 관장하는 아비터가 grant를 해준다.)
그리고 요청한다고 무조건 허락해주는 것은 아니다. 어떠한 환경이냐에 따라 다르겠지만
멀티미디어 장비라고 했을 때 어떠한 영상을 뿌려주는 것이 주 임무이기 때문에 cpu에서의 일보다는
하드웨어의 요청이 먼저일수 있을 것이다. 즉 어떠한 임베디드 환경이냐에 따라 요청에 따른 grant여부가
달라진다는 것이다.
그리고 보통 데이터교환이 모두 이루어 지고나서 사용권을 넘겨 준다고 오해할 수도 있는데. 그것도
잘못된 것이라 할 수 있다. 각 임베디드 시스템에 따라 데이터를 주고 받는 단위가 있는데 그 단위로
한꺼번에 계속하여 다 받는 것이 아니라 한 단위를 받고 나서 다시 grant요청을 한다고 보면 되겠다.
내 생각을 좀 더 더하자면 만약 두 단위씩 주고 받는다고 한다면 차라리 그 두 단위의 양을 단위로 하면
두번 받지 않고 한번에 받을 수 있지 않을까 생각되는데 또 어떻게 보면 어떠한 환경에 의해서
한꺼번에 한단위로 읽어 오는게 무리가 있을 수도 있지 않을까 생각된다.
ps. 현철형~~짱!!!ㅋㅋ