직접 메모리 접근(直接 - 接近, direct memory access, DMA)은 특정 하드웨어 하위 시스템이 CPU와 독립적으로 메인 시스템 메모리에 접근할 수 있게 해주는 컴퓨터 시스템의 기능이다. DMA가 없는 경우, CPU가 프로그래밍된 입출력을 사용할 때 읽기 또는 쓰기 작업 전체시간 동안 CPU가 완전히 점유되어 작업을 수행할 수 없다. DMA를 사용하는 경우, CPU는 먼저 전송을 시작한 후 전송이 진행되는 동안 다른 작업을 수행하고, 작업이 완료되면 DMA 컨트롤러(DMAC)로부터 인터럽트를 수신한다. 이 기능은 CPU가 데이터 전송속도를 따라가지 못하거나 비교적 느린 I/O 데이터 전송을 기다리는 동안 작업을 수행할 때 유용하다. 한편, PIO는 DMA의 반대개념으로서, 장치들 사이에 전송되는 모든 데이터가 중앙처리장치를 거쳐가는 방식이다. DMA는 PIO의 단점을 보완하기 위해 고안된 기능이다. 주변장치의 데이터는 장치 컨트롤러에 의해 로컬 버퍼로 이동한다. 그러나 전송할 데이터가 많은 경우, 많은 양의 데이터의 이동으로 인한 부담이 커지는데 이러한 문제를 해결하기 위해 DMA를 이용한다. 장치 컨트롤러가 데이터의 한 블록을 이동시키는데 이 과정에서 DMA로 인해 CPU의 개입이 필요없게 된다. CPU에서는 데이터 이동이 완료되었다는 단 한 번의 인터럽트만 발생한다. 데이터가 전송되는 동안 CPU는 다른 작업을 수행할 수 있게 되어 효율성이 높아진다. 디스크 드라이브 컨트롤러, 그래픽 카드, 네트워크 카드, 사운드 카드를 포함한 많은 하드웨어 시스템이 DMA를 사용한다. DMA는 멀티 코어 프로세서의 칩 내부 데이터 전송에도 쓰인다. DMA는 메모리 간 복사 또는 데이터 이동에도 쓰일 수 있다. DMA는 과거 IBM의 특허 기술이었다(현재는 특허권 소멸).
로그인 후 정보를 보완할 수 있습니다.
로그인 후 댓글을 작성할 수 있습니다.
아직 댓글이 없습니다. 첫 댓글을 남겨보세요!