DMA(Direct Memory Access) 요약
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
인프라/DevOps/보안
대상자
시스템 설계자, 하드웨어 엔지니어, 운영체제 개발자
난이도: 중간 (컴퓨터 구조 기초 지식 필요)
핵심 요약
- DMA는 CPU 개입 없이 I/O 장치와 메모리 간 직접 데이터 전송을 가능하게 하는 하드웨어 기술
- DMA 컨트롤러가 데이터 전송 관리, CPU는 명령만 전달 후 대기
- Burst Mode, Cycle Stealing Mode, Transparent Mode 등 3가지 주요 전송 방식 존재
섹션별 세부 요약
- 구조
- DMA 컨트롤러는 메모리와 I/O 장치 간 데이터 이동을 독립적으로 관리
- CPU는 명령 전달 후 다른 작업 수행 가능
- 전송 완료 시 인터럽트를 통해 CPU에 알림
- 동작 과정
- CPU가 DMA 컨트롤러에 "주소, 크기, 방향" 명령 전달
- DMA 컨트롤러가 디바이스와 메모리 간 직접 데이터 전송
- 전송 완료 시 CPU에 인터럽트 발생
- 전송 방식
- Burst Mode: 블록 단위 전송 (빠름, 버스 독점)
- Cycle Stealing Mode: CPU와 DMA가 번갈아 버스 사용
- Transparent Mode: CPU가 사용하지 않을 때만 DMA 사용
- 장점/단점
- 장점: CPU 부하 감소, 데이터 전송 속도 향상
- 단점: 하드웨어 복잡성 증가, 버스 경합 가능성
- 활용 분야
- 저장장치(디스크 ↔ 메모리), 그래픽 처리(GPU ↔ 메모리), 오디오 처리, 네트워크(NIC ↔ 메모리)
- CPU vs DMA 비교
| 항목 | CPU 방식 | DMA 방식 |
|---|---|---|
| 처리 방식 | CPU 직접 이동 | DMA 컨트롤러 전담 |
| CPU 개입 | 지속 필요 | 명령만 전달 |
| 속도 | 느림 | 빠름 |
- DMA 컨트롤러 위치
- 과거: 외부 DMA 컨트롤러 칩(예: Intel 8237)
- 현대: CPU 칩셋(Southbridge/PCH) 또는 SoC 내부 통합
결론
DMA는 하드웨어와 운영체제 설계 시 핵심 기술로, 인터럽트, 버스 관리, 메모리 매핑과 연계하여 시스템 성능을 극대화합니다. 현대 시스템에서는 SoC 내부 통합이 일반적이며, Burst Mode는 고속 전송을 위해 주로 사용됩니다.