2008. 10. 3. 20:36

DMA에 대한 고찰


우선 DMA에 대한 자세한 설명은 생략하겠다.

DMA는 시스템버스를 통하여 데이터 교환이 이루어지는데 그것은 곧 CPU와 같은 버스를 이용하겠다는

의미이다. 하드웨어쪽에서 데이터 교환을 위해 CPU에게 버스 사용권에 대해 허락요청을 하게되고

상황에 따라 grant를 해주면 DMA를 수행하게 되는 것이다.

( 언밀히 말하자만 CPU가 허락을 해주는 것은 아니다. 버스를 관장하는 아비터가 grant를 해준다.)

 그리고 요청한다고 무조건 허락해주는 것은 아니다. 어떠한 환경이냐에 따라 다르겠지만

멀티미디어 장비라고 했을 때 어떠한 영상을 뿌려주는 것이 주 임무이기 때문에 cpu에서의 일보다는

하드웨어의 요청이 먼저일수 있을 것이다. 즉 어떠한 임베디드 환경이냐에 따라 요청에 따른 grant여부가

달라진다는 것이다.

그리고 보통 데이터교환이 모두 이루어 지고나서 사용권을 넘겨 준다고 오해할 수도 있는데. 그것도

잘못된 것이라 할 수 있다. 각 임베디드 시스템에 따라 데이터를 주고 받는 단위가 있는데 그 단위로

한꺼번에 계속하여 다 받는 것이 아니라 한 단위를 받고 나서 다시 grant요청을 한다고 보면 되겠다.

 

내 생각을 좀 더 더하자면 만약 두 단위씩 주고 받는다고 한다면 차라리 그 두 단위의 양을 단위로 하면

두번 받지 않고 한번에 받을 수 있지 않을까 생각되는데 또 어떻게 보면 어떠한 환경에 의해서

한꺼번에 한단위로 읽어 오는게 무리가 있을 수도 있지 않을까 생각된다.

 
ps. 현철형~~짱!!!ㅋㅋ