[CS] DMA란?

이상윤·2022년 10월 5일
0

CS

목록 보기
1/2

DMA란

Direct Memory Access의 약자로 주변장치(I/O device)들이 메모리(RAM)에 직접 접근하는 방식이다.

DMA방식과 대조되는 방식으로는 아래와 같다.

  1. Programmed I/O (PIO)
  2. Interrupt Initiated I/O

두 방식모두 CPU의 개입이 필요한 방식이다.

1. Programmed I/O

이 방식에서는 CPU가 주변장치(I/O device)에 대한 지속적인 모니터링을 요구한다.
I/O device가 전송 준비가 될 때까지 Loop를 돌며 확인하기 때문에
CPU를 불필요하게 'Busy'하게 만들고 CPU 주기를 낭비하게 만든다.

Programmed I/O keeps the processor(CPU) busy needlessly and leads to wastage of the CPU cycles.

이는 Interrupt Initiated I/O 방식에 의해 극복 가능하다.

2. Interrupt Initiated I/O

앞선 방식에서는 I/O device의 상태를 계속 확인하였지만
이 방식에서는 device가 available 상태일 때, interrupt를 발생시킨다.
interrupt가 발생하기전 까지는 CPU는 다른 작업을 처리할 수 있다.
interrupt가 발생했다면, CPU는 처리중이던 작업을 일시중지하고 I/O작업을 수행한 뒤 원래 수행하던 작업으로 되돌아 간다.

There is no need for the CPU to stay in the loop as the interrupt command interrupts the CPU when the device is ready for the data transfer.
Thus, the CPU cycles are not wasted.

3. DMA

DMA방식에서는 DMAC(DMA Controller)가 추가 된다.
device에서 메모리에 전송되는 과정은 DMA 컨트롤러가 관여한다.
CPU는 이 I/O과정에 대해 개입하지 않으므로, 이 동안에 다른 작업을 수행할 수 있다.
DMA 컨트롤러는 작업 완료시 CPU에 interrupt를 발생시켜 작업이 완료되었음을 알린다.

The DMA Controller takes over the buses to manage the transfer directly between the I/O devices and the memory unit.

DMA는 아래 4가지 리소스를 필요로 한다.

  • I/O address
  • Memory address
  • Interrupt request numbers (IRQ)
  • DMA channels

3-1. Burst-Mode

burst 모드는 모든 데이터가 전송될때 까지 read, write를 반복한다.
DMA Mode중에서 가장 빠른 방법이다.

이 방식의 문제점은 burst mode 동안에는 CPU는 system bus를 이용할 수 없다는 점이다.
따라서 Data의 size가 크다면 CPU는 모든 Data가 전송될 때까지 System bus를 이용할 수 없다.

3-2. Cycle-stealing-Mode

cycle-stealing 모드는 데이터 전송을 1 word씩 하게 된다.
저속 입출력 장치에 Burst-Mode사용하게 되면 bus 독점시간이 길어져 문제가 생긴다.
따라서 cycle-stealing 모드는 이를 방지한다.
CPU가 System Bus를 사용하다가 1 Word 전송이 준비되면 System Bus의 사용권한을
DMAC에게 되돌려 준다.

사진 출처 : 사진출처링크

0개의 댓글