Learning
토픽 66 / 85·파일 시스템, I/O, 시스템 구조

DMA (Direct Memory Access)

DMA (Direct Memory Access)

CPU 개입 없이 하드웨어 장치가 메모리에 직접 접근하여 데이터를 전송하는 기술로, I/O 장치와 메모리 간 대량 데이터 전송 시 CPU 부담을 줄이고 성능을 향상

목적: CPU 부담 감소, I/O 성능 향상, 동시 처리, 대량 데이터 전송

특징: CPU 우회, 하드웨어 제어, 블록 전송, 인터럽트 완료 통지, 버스 마스터링

구성요소: DMA 컨트롤러(DMAC), 소스 주소, 목적지 주소, 전송 크기, 채널

동작 과정: ① CPU가 DMAC에 전송 설정(소스, 목적지, 크기) → ② CPU는 다른 작업 수행 → ③ DMAC가 버스 마스터로 메모리-장치 간 직접 전송 → ④ 전송 완료 시 인터럽트 발생 → ⑤ CPU가 완료 처리

버스 마스터링: DMA가 시스템 버스 제어권 획득, CPU는 버스 대기

DMA 모드

  • Burst Mode: 전송 완료까지 버스 점유, 빠름, CPU 블록
  • Cycle Stealing: CPU와 버스 공유, 한 사이클씩 전송, 느림, CPU 방해 적음
  • Transparent Mode: CPU가 버스 사용 안 할 때만 전송, 가장 느림

채널: 여러 장치 동시 DMA, 채널당 독립 전송, 다채널 DMAC

장점: CPU 효율 향상, 빠른 I/O, 대량 전송 효율, 동시 처리

단점: 하드웨어 비용, 버스 경쟁, 캐시 일관성 문제, 복잡도

적용사례: 디스크 I/O(SATA, NVMe), 네트워크(NIC DMA), 그래픽(GPU), 오디오, USB

비교: DMA(직접/CPU절약/빠름) vs Programmed I/O(CPU개입/느림) vs Interrupt-driven I/O(중간)

연관: 인터럽트, I/O, 디스크, 네트워크, 캐시 일관성