본문 바로가기
하드웨어

직접 메모리 접근(Direct Memory Access, DMA)란 무엇인가?

by bantomak 2024. 1. 30.

직접 메모리 접근(Direct Memory Access, DMA)이란?

특정 하드웨어 하위 시스템이 CPU의 개입 없이 독립적으로 메인 시스템 메모리에 접근할 수 있도록 하는 기능이다.

 

주변장치의 데이터는 장치 컨트롤러에 의해 로컬 버퍼로 이동한다. 그러나 전송할 데이터가 많은 경우, 많은 양의 데이터의 이동으로 인해 부담이 커지는데 이러한 문제를 해결하기 위해 DMA를 이용한다. 장치 컨트롤러가 데이터의 한 블록을 이동시키는데 이 과정에서 DMA로 인해 CPU의 개입이 필요 없게 된다. CPU에서는 데이터 이동이 완료되었다는 단 한 번의 인터럽트만이 발생한다. 데이터가 전송되는 동안 CPU는 다른 작업을 수행할 수 있게 되어 효율성이 높아진다.

 

디스크 드라이브 컨트롤러, 그래픽 카드, 네트워크 카드(NIC), 사운드 카드를 포함한 많은 하드웨어 시스템이 DMA를 사용한다. DMA는 멀티 코어 프로세서의 칩 내부 데이터 전송에도 쓰인다. 메모리 간 복사 또는 데이터 이동에도 쓰일 수 있다.

 

 

DMA가 직접 메모리에 복사해 주는 작업까지 하고 작업이 완료되면 CPU에게 인터럽트를 거는 방식으로 작업이 완료된 것을 알린다. 결과적으로 인터럽트 횟수를 낮춘다.

 

가상 메모리를 거치지 않고 NIC Local Buffer에서 바로 복사된다.

 

참고 사이트

 

IOCP와 DMA

  IOCP에 관련 개념을 보면, 학부시절 컴퓨터구조 및 논리회로설계 수업을 들었을 때가 생각난다....

blog.naver.com

 

 

서버 모델 - 윈도우 IOCP

IOCP : Input/Ouptput Completion Port : Proactor 방식의 고성능 I/O Notification Model로 asynchronous I/O 지원 : Windows OS가 직접 효율적인 스레드 풀링 제공으로 context switching을 줄임 : Overlapped I/O를 확장 시킨 개념으

dev-ahn.tistory.com

댓글