본문 바로가기

용어 정리

DMA(Direct Memory Access)

DMA란

CPU의 개입 없이 주변 장치들이 메모리에 직접 접근하여 읽거나 쓸 수 있도록 하는 기능이다.

 

DMA 사용 이유

주변장치의 데이터를 사용하기 위해서는 그 데이터가 반드시 RAM에 저장되어야 한다. 그리고 이때 반드시 CPU의 개입이 필요한데, 그 이유는 RAM에 접근하기 위한 주소를 CPU가 생성하기 때문이다.

그림1은 DMA를 사용하지 않는 기존의 PIO(Programmed Input/Output)방식으로 주변장치에서 데이터를 읽고 쓰기 위해서 CPU가 RAM과의 데이터 전송을 지속한다. 따라서 이 방식에서 CPU는 데이터 처리가 끝날 때까지 다른 일을 할 수 없다.

반면에 그림2는 아래와 같은 프로세스를 거칩니다.

1) RAM에 I/O 장치의 데이터가 필요할 때 CPU는 전송 크기, 대상 주소 및 기타 중요한 정보와 함께 DMA 요청을 DMA 컨트롤러에 신호로 보냅니다.  

2) DMA 컨트롤러는 시스템 버스가 비어 있는 동안 데이터를 전송하며 RAM 주소 자체를 생성한다.

3) 전송이 완료되면 CPU 인터럽트가 생성됩니다.

 

결론적으로 DMA는 CPU가 해야 할 주변장치와의 데이터 전송을 대신함으로써, CPU는 다른 일을 자유롭게 할 수 있습니다.


<참고 자료>

https://ksk-developer.tistory.com/40

 

개발자도 알면 좋은 DMA(direct memory access)

기존에도 DMA?하면 direct memory access인 것은 알았지만 뭐하는지는 알지 못했는데 lucene을 공부하면서 mmap에 대해 좀 더 자세히 알게 되었고 그러다가 zero copy까지 공부하게 되었는데 거기서 DMA의 역

ksk-developer.tistory.com

https://kkhipp.tistory.com/168

 

DMA(Direct Memory Access)란? (+PIO, 채널제어방식)

입출력 제어 방식은 크게 4가지가 있습니다. 1. 프로그램에 의한 I/O (CPU 개입 O) 2. 인터럽트에 의한 I/O (CPU 개입 O) 3. DMA에 의한 I/O (CPU 개입 X) 4. 채널에 의한 I/O (CPU 개입 X) 이제 DMA에 대해서 알아

kkhipp.tistory.com

 

'용어 정리' 카테고리의 다른 글

ADC  (1) 2023.11.18
RS-485 통신  (1) 2023.11.18
클럭과 주파수  (1) 2023.11.18
동기(Synchronous)와 비동기(Asynchronous) 방식  (0) 2023.11.17
Baud rate과 Bit rate  (0) 2023.11.16