Topic

DMA(Direct Memory Access)

JackerLab 2025. 4. 2. 13:00
728x90
반응형

개요

DMA(Direct Memory Access)는 CPU의 직접 개입 없이, 주변장치가 메인 메모리와 데이터를 직접 전송할 수 있도록 해주는 기능입니다. 하드디스크, 사운드카드, 그래픽카드, 네트워크 인터페이스 등 고속 데이터 입출력이 필요한 장치에서 효율적으로 사용되며, 시스템의 전체 성능을 향상시키는 핵심 아키텍처 기술입니다. 본 글에서는 DMA의 개념, 동작 원리, 구성 요소, 유형, 실무 적용 사례 등을 종합적으로 설명합니다.


1. 개념 및 정의

DMA는 입출력 장치와 메인 메모리 간의 데이터 전송을 CPU가 아닌 **DMA 컨트롤러(DMA Controller)**가 직접 처리하는 방식입니다. CPU는 전송 요청만 한 후, 실제 데이터 이동은 DMA 컨트롤러가 수행하므로, CPU는 다른 연산에 집중할 수 있게 됩니다.


2. 동작 원리

단계 설명
1단계 CPU가 DMA 컨트롤러에 데이터 전송 요청(주소, 크기 등) 전달
2단계 DMA 컨트롤러가 버스 제어권 요청 (버스 중재)
3단계 버스 권한 획득 후, 주변장치 ↔ 메모리 간 직접 데이터 전송 수행
4단계 전송 완료 후 인터럽트로 CPU에 알림

이 과정을 통해 CPU 개입 없이 데이터 전송이 이루어지며, 입출력 지연이 줄어들고 시스템 효율이 향상됩니다.


3. DMA의 구성 요소

구성 요소 역할 설명
DMA Controller 전송 제어 주소, 전송 크기, 방향 설정 및 관리
Memory Bus 데이터 전송 경로 메모리 ↔ 장치 간 데이터 흐름 담당
I/O Device 데이터 송수신 주체 디스크, 네트워크 카드, 오디오 등
Interrupt Logic 전송 완료 알림 CPU에 인터럽트 전송하여 종료 처리

현대 시스템에서는 마더보드에 DMA 기능이 통합되거나, 장치 내 DMA 엔진이 포함되어 있습니다.


4. DMA 전송 모드 유형

유형 설명 사용 예시
Burst Mode 데이터를 연속적으로 한 번에 전송 블록 전송에 효율적 (디스크 I/O)
Cycle Stealing 한 사이클마다 한 단어씩 전송, CPU와 교대로 사용 CPU 영향 최소화 필요 시
Block Mode 일정 블록 크기 단위로 버스 독점 대용량 전송 (영상, 오디오 스트리밍)
Demand Mode 주변장치가 요청 시마다 전송 실시간 센서, 오디오 장치 등

전송 모드는 응용 시나리오와 버스 사용률에 따라 적절히 선택되어야 합니다.


5. CPU 기반 I/O 방식과의 비교

항목 CPU 기반 방식 DMA 방식
데이터 제어 CPU가 직접 수행 DMA 컨트롤러 수행
CPU 사용률 높음 낮음
전송 속도 느림 빠름 (버스 독점 시)
효율성 낮음 (CPU 낭비 발생) 높음 (병렬 처리 가능)

DMA는 고속 입출력이 필요한 시스템에 필수적인 구조입니다.


6. 실무 활용 사례

분야 설명 예시
운영체제 블록 디바이스 드라이버에서 DMA 사용 디스크 ↔ 메모리 간 직접 전송
임베디드 시스템 마이크로컨트롤러 내 DMA 엔진 활용 센서값 실시간 수집 후 버퍼 저장
네트워크 통신 패킷 데이터의 메모리 직접 쓰기 NIC ↔ 메모리 간 zero-copy 전송
그래픽 처리 GPU와 메모리 간 고속 전송 VRAM ↔ DRAM 간 전송 최적화

DMA는 실시간 시스템, 고성능 컴퓨팅, 저전력 시스템 등 다양한 분야에서 활용됩니다.


7. 결론

DMA는 CPU의 개입 없이도 빠르고 효율적인 데이터 전송을 가능하게 하는 중요한 컴퓨터 구조 기술입니다. 시스템 자원의 병목을 줄이고, CPU의 처리 능력을 극대화하는 데 기여하며, 고속 디바이스와의 연동이 중요한 현대 시스템에서 반드시 고려해야 할 아키텍처 요소입니다.

728x90
반응형

'Topic' 카테고리의 다른 글

GPIO(General Purpose Input/Output)  (0) 2025.04.02
SSD vs HDD  (2) 2025.04.02
DRAM vs SRAM  (0) 2025.04.02
페이지 교체 알고리즘(Page Replacement Algorithms)  (0) 2025.04.02
가상 메모리(Virtual Memory)  (0) 2025.04.02