DMA (Direct Memory Access)
컴퓨터 시스템에서는 CPU가 메모리와 입출력(I/O) 장치 간의 데이터 이동을 직접 관리하는 경우가 많습니다. 그러나 매번 CPU가 데이터를 옮기느라 시간을 낭비하면, 다른 중요한 작업을 처리할 시간이 줄어들게 되는데요. 이를 해결하기 위한 기술이 바로 DMA(Direct Memory Access) 입니다.
DMA란?
DMA(Direct Memory Access)는 CPU를 거치지 않고, 입출력 장치가 메모리와 직접 데이터를 주고받을 수 있도록 하는 메커니즘입니다. 이때 DMA 컨트롤러라는 전용 하드웨어 장치가 메모리-입출력 장치 간 데이터 전송 작업을 CPU로부터 위임받아 대신 수행하게 되는데요. 이를 통해 CPU의 개입 없이 데이터 전송이 가능해지기 때문에, CPU는 보다 중요한 계산이나 제어 작업에 집중할 수 있게 됩니다.
- 기본 개념
- 입출력 장치가 메모리와 직접 통신
- 목적
- CPU의 개입을 최소화함으로써 시스템 성능 향상
- 주요 장치
- 디스크, 네트워크 카드, 그래픽 카드 등 대용량 데이터를 다루는 입출력 장치들
DMA의 필요성
만약 CPU가 모든 데이터 전송을 직접 처리해야 한다면, 작은 데이터 조각 하나를 이동할 때마다 다음 과정을 반복해야 합니다:
- CPU가 I/O 장치로부터 데이터를 읽음
- CPU가 데이터를 메모리에 씀
이런 느리고 반복적인 작업을 매번 CPU가 직접 처리하게 되면, CPU가 병목 지점이 되어 전체 시스템 성능이 크게 떨어지게 되는데요. DMA는 이 과정에서 CPU를 해방시켜, 대량의 데이터 전송을 효율적으로 처리할 수 있게 합니다.
DMA의 동작 방식
- CPU가 DMA 컨트롤러에게 작업을 지시한다
- 반복적이며 가치가 낮은 데이터 복사 작업에 대해 하청을 주는 것
- 예시) 메모리 A 위치에서 디스크로 1MB 복사해라
- DMA 컨트롤러가 메모리와 I/O 장치 간 데이터 전송을 직접 수행한다
- 전송이 완료되면, DMA 컨트롤러가 CPU에 인터럽트를 발생시켜 완료를 알립니다.
이를 통해 CPU는 시작과 완료만 관리하고, 전송 중에는 자유롭게 다른 작업을 수행할 수 있게 됩니다.
DMA 사용 시의 이점과 주의사항
- 이점
- CPU 부하 감소
- 데이터 전송 속도 증가
- 시스템 전체 성능 향상
- 주의사항
- DMA 전송 중 메모리 접근 충돌이 발생할 수 있음 (이를 막기 위해 메모리 버스 제어나 동기화가 필요)
- 버스 대역폭을 공유하므로, 과도한 DMA 사용은 오히려 CPU 작업을 방해할 수 있음
마치면서
DMA는 CPU를 데이터 전송 작업에서 해방시켜, 전체 시스템의 효율성을 높이는 핵심 기술입니다. 특히 디스크 읽기/쓰기나 네트워크 통신같은 대량의 데이터를 빠르게 주고받아야 하는 상황에서 필수적으로 사용되는데요. 이는 오늘날 컴퓨터 아키텍처에서 빼놓을 수 없는 중요한 개념입니다.
'크래프톤 정글 > CS기초(키워드, 개념정리)' 카테고리의 다른 글
[CS기초] 7주차 개념 정리 (0) | 2025.04.29 |
---|---|
[CS기초] 이더넷(Ethernet) (0) | 2025.04.28 |
[CS기초] 시스템 콜(System Call) (0) | 2025.04.28 |
[CS기초] Demand-Zero Memory (0) | 2025.04.28 |
[CS기초] Implicit Free List vs Explicit Free List (0) | 2025.04.28 |