스물두줄

컴퓨터시스템응용기술사 · 개념서 · 컴퓨터 구조 및 운영체제

DMA

설명 영상 DMA 설명 영상 · 2:28

왜 배우는가: DMA는 CPU가 데이터 복사에 묶이지 않도록 I/O 장치와 주기억장치 사이 전송을 하드웨어가 맡게 하는 기법이다. 고속 디스크·네트워크·GPU가 늘면서 CPU 부하와 전송 병목을 줄이는 핵심 기술이 되었다. 시험에서는 Programmed I/O와의 비교, 전송 모드, SG-DMA·RDMA 같은 확장 기법이 반복해 출제된다.

출제 이력: 제137회 2교시 6번, 제123회 4교시 1번

1. 한 줄 정의와 핵심 키워드

답안 첫 줄에 쓸 정의:

DMA는 CPU 개입 없이 I/O 장치와 주기억장치 사이에서 DMA 제어기가 데이터를 직접 전송하는 방식이다.

핵심 키워드

  • DMA 제어기(DMA Controller): 전송 주소·길이·방향을 받아 버스를 직접 사용하는 전용 하드웨어다.
  • 사이클 스틸링(Cycle Stealing): CPU 명령 실행 사이에 버스 사이클을 한 단위씩 빌려 쓰는 방식이다.
  • 버스 요구·허가(BR·BG): 버스 사용권을 요청(Bus Request)하고 허가(Bus Grant)받는 신호다.
  • Programmed I/O: CPU가 상태를 폴링하고 데이터를 한 워드씩 옮기는 방식이다.
  • 인터럽트 구동 I/O: 장치가 완료 시 CPU에 인터럽트를 거는 방식이다.
  • Scatter-Gather: 비연속 메모리 영역을 한 번의 DMA 트랜잭션으로 처리하는 방식이다.
  • RDMA: 운영체제를 거치지 않고 원격 노드 메모리에 직접 접근하는 방식이다.
  • 주소·카운터 레지스터: DMA 제어기가 전송 시작 주소와 남은 워드 수를 기억하는 레지스터다.

2. 개념 풀이

쉬운 말로 하면, 큰 데이터를 옮길 때 CPU가 직접 한 워드씩 나르지 않고 옮기는 일을 전담하는 장치에 맡기는 것이다. CPU는 시작할 때 명령만 내리고, 끝나면 인터럽트로 결과를 받는다.

정식 정의는 다음과 같다. DMA(Direct Memory Access)는 중앙처리장치의 개입 없이 입출력 장치와 기억장치 사이에 데이터 전송을 수행하는 메커니즘이다. CPU는 DMA 제어기에 I/O 장치의 주소, 연산 지정자, 기억장치 시작 주소, 전송할 데이터 단어 수를 담은 명령을 보낸다.

핵심 용어를 풀면 다음과 같다. DMA 제어기는 주소 레지스터, 데이터 레지스터, 카운터 레지스터, 제어 회로로 이루어진다. 주소 레지스터는 I/O 장치 주소를, 카운터 레지스터는 남은 전송량을 저장한다.

사이클 스틸링은 DMA가 시스템 버스를 쓸 때마다 CPU의 버스 사이클을 잠깐 빌려 쓰는 동작을 가리킨다. 한 번에 한 단위씩만 전송하고 버스를 CPU에 돌려주므로 CPU 정지 시간이 짧다.

버스 요구·허가(BR·BG) 신호는 DMA 제어기와 CPU 사이의 버스 중재 신호다. DMA 제어기가 BR을 내면 CPU는 현재 사이클이 끝나는 즉시 BG로 허가한다.

3. 등장 배경과 필요성

Programmed I/O는 구현이 단순하지만 전송 한 단위마다 CPU가 상태를 확인하고 데이터를 옮겨야 한다. 장치가 빨라질수록 CPU 대부분이 폴링과 복사에 쓰이는 문제가 생긴다.

인터럽트 구동 I/O는 완료 시점에만 CPU가 개입하므로 폴링보다 낫다. 그러나 데이터가 여전히 CPU 레지스터를 거쳐 메모리로 옮겨지므로, 블록 단위 대량 전송에서는 CPU 시간이 크게 소모된다. 이 한계가 DMA가 등장한 직접적 배경이다.

또 I/O 장치는 시스템 버스에 직접 붙지 않고 제어기를 거친다. 장치마다 전송 속도, 데이터 형식, 길이가 달라 제어기가 타이밍과 버퍼링을 맡아야 하기 때문이다. DMA는 이 제어기 기능을 확장해 메모리 접근까지 맡은 것으로 볼 수 있다.

이어지는 내용

로그인하면 하루 5페이지까지 무료로 전체를 읽을 수 있습니다.

앱에서 이 단원 읽기