DMA(Direct Memory Access)는 CPU 개입 없이 주변 장치가 메모리에 직접 읽고 쓰는 기법이다. I/O 전송 중 CPU를 해방시켜 다른 작업을 처리할 수 있게 하며, 대용량 데이터 전송 성능을 크게 향상시킨다.
동작 원리
[CPU 없이 직접 전송]
1. CPU: DMA 컨트롤러에 전송 요청
(소스 주소, 목적지 주소, 크기 설정)
2. DMA 컨트롤러: 버스 마스터 획득
3. 장치 → 메모리 직접 전송 (CPU 불필요)
4. 전송 완료 → CPU에 인터럽트
[전통 방식 비교]
CPU 방식: CPU → 장치 레지스터 읽기 → 메모리 쓰기 (반복)
DMA 방식: CPU는 설정만 하고 전송 중 다른 작업 수행
DMA 모드
| 모드 | 설명 |
|---|
| Burst Mode | 전체 블록 한 번에 전송, CPU 버스 독점 |
| Cycle Stealing | CPU 사이클 틈틈이 전송 |
| Transparent Mode | CPU가 버스 사용 안 할 때만 전송 |
IOMMU
DMA 보안 문제: 장치가 임의 물리 주소 접근 가능
IOMMU: DMA 주소를 가상화해 허가된 범위만 접근 가능
→ Thunderbolt DMA 공격 방지, VM 격리
활용
- •네트워크 카드 패킷 수신 (RDMA)
- •디스크 I/O (NVMe, SATA DMA)
- •GPU 메모리 전송
- •음성/영상 스트리밍
관련 개념