본문 바로가기

C.E/OS

I/O Structure - DMA Structure

DMA(Direct Memory Access) structure

 

주변장치의 데이터는 Device controller에 의해 Local buffer로 이동한다.

 

그러나 전송할 데이터가 많은 경우, 많은 양의 데이터의 이동으로 인한 부담이 커지게 된다.

 

Device controller가 데이터의 한 블록을 이동시키는데 이 과정에서 DMA로 인해

 

 CPU의 개입이 필요없게 된다. CPU에서는 데이터 이동이 완료되었다는 단 한번의 Interrupt만 발생한다.

 

데이터가 전송되는 동안 CPU는 다른 작업을 수행할 수 있게 되어 효율성이 높아진다.

 

근데 만일 CPU와 DMA가 동시에 버스를 사용하고자 할 떄 속도가 느린 DMA는

 

속도가 빠른 CPU에게 밀려 계속 버스를 사용할 수 없는 starvarion상태에 빠지게 된다.

 

그래서 CPU가 DMA에게 버스의 사용권을 양보하는데 이를 Cycle Stealing이라고 한다.

 

1. DMAC(DMA Controller)가 Memory Cycle Request 신호를 요청

 

2. CPU는 요청을 받으면 메모리의 다음 사이클을 제공(CPU는 한 사이클 동안 대기 상태)

 

Cycle Stealing을 통해서 DMA가 기아상태에 빠지는 것을 막을 수 있다. 하지만

 

DMA는 Cycle Stealing을 위해 한번, 그리고 데이터의 전송을 위해 한번. 이렇게

 

데이터를 전송할 때 마다 시스템 버스를 두번이용하게 된다.