직접 메모리 접근

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색

직접 메모리 접근(直接 - 接近, Direct Memory Access, DMA)는 주변장치들(하드디스크, 그래픽 카드, 네트워크 카드, 사운드 카드 등)이 메모리에 직접 접근하여 읽거나 쓸 수 있도록 하는 기능으로서, 컴퓨터 내부의 버스가 지원하는 기능이다. 대개의 경우에 메모리의 일정 부분이 DMA에 사용될 영역으로 지정되며, DMA가 지원되면 중앙처리장치가 데이터 전송에 관여하지 않아도 되므로 컴퓨터 성능이 좋아진다.

한편, PIO는 DMA의 반대개념으로써, 장치들 사이에 전송되는 모든 데이터가 중앙처리장치를 거쳐가는 방식이다. DMA는 PIO의 단점을 보완하기 위해 고안된 기능이다.

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

DMA는 과거 IBM의 특허 기술이었다(현재는 특허권 소멸).

[편집]

ISA 버스 표준에서는 DMA를 위해 메모리를 최대 16MB까지 지정할 수 있다. EISA와 MCA 표준은 (32비트 주소지정이 가능하다는 전제 하에) 전체범위의 메모리 주소에 액세스를 허용한다. PCI는 CPU가 PCI 콘트롤러에 입출력제어를 위임하는 버스 마스터링을 사용하여 DMA를 지원한다. 방식에는 폴링(polling), 인터럽트(INT)방식이 있다.

같이 보기[편집]