DMA (Direct Memory Access)

I. I/O로 인한 성능 감소 방지, DMA

DMA(Direct Memory Access) 개념

I/O로 인한 성능 감소 방지 위해 CPU 개입 없이 I/O 장치와 기억장치 간 직접 데이터 전송 방식

DMA I/O와 Direct I/O 환경 비교

DMA I/ODirect I/O(DMA 미사용)
– DMA 기반 Data 처리 중 CPU는 다른 프로세스 처리– Data I/O 처리 시 완료까지 작업 중지, CPU 대기 필요

II. DMA 구성도/구성요소 및 동작모드

DMA 구성도/구성요소

구성도구성요소설명
direct memory access에 대한 이미지 검색결과주소 레지스터– I/O 장치 주소
데이터 레지스터– 데이터 버퍼
계수 레지스터– 전송 Data 수
컨트롤 레지스터– 전송 모드
제어 회로– 신호 발생 회로
  • DMA 전송 위한 중앙처리장치 버스 신호와 레지스터로 구성

DMA 동작 모드

구분개념도설명
Cycle

Stealing

(Word)

– Word 단위 데이터 전송

– DMAC와 CPU 동시 BUS

요청 시 DMA 우선권

Burst

Transfer

(Block)

– Block 단위 데이터 전송

– 여러 메모리 워드로 구성

– Block 전송 시 BUS독점

  • CPU가 시스템 미사용 시 DMA가 BUS 사용하는 Interleave DMA 모드도 존재

III. DMA 동작 순서 및 주요 구성요소

DMA 동작 순서

DMA ControllerDMA 동작 순서

DMA 주요 구성요소

구분구성요소설명
명령어– DMA Select(DS)

– Register Select(RS)

– 주소 버스로 DS, RS enable하여 DMA Register 선택
– BUS Request(BR)– DMAC를 통해 버스 요청

– add/data 버스 제어권 양도

– BUS Grant(BG)– BR에 따른 상태 변경 후 DMA BUS 서용 가능 알림
레지

스터

– Address Register– 메모리의 접근 주소 저장

– Work 전송 후 Increment

– Word Count Register– 전송할 블록 Word 수 저장

– Work 전송 후 Decrement

– Control Register– 레지스터 동작 모드 설정

– Burst Mode, Cycle Stealing

IV. 채널제어 방식(DMA와 비교)

채널제어 방식 개념

  • 여러 장치가 연결되는 채널 제어기에 입출력 명령을 전달하여 중앙처리장치 개입없이 입출력을 수행
  • DMA 한계 극복, 여러 Block I/O 처리, 전용 프로세서(IOP)

채널제어 방식 제어 과정

구분제어 과정과정 설명
연결 방식– 고정 연결 채널제어기– 여러 개의 입출력장치가 하나의 제어기에 고정 연결
– 가변 연결 채널제어기– 모든 입출력장치는 여러 개의 채널제어기에 접속, 동시 작업
동작 과정① 입출력정보/명령 전달– 중앙처리장치가 채널 제어기에 입출력 정보 및 명령 전달
② 입출력 수행– 채널 제어기는 주기억장치와 입출력 장치 간 입출력 수행
③ 인터럽트 신호 전송– 입출력 완료 시 채널제어기는 중앙처리장치에 인터럽트 전송

V. DMA와 채널제어 방식 비교

항목DMA채널제어
처리 단위– 하나의 Instruction에 하나의 Block I/O– 하나의 Instruction에 여러 Block I/O 처리
메모리– 기억장치 필요– 로컬 메모리 기반 데이터 블록 저장
활용– 소형 컴퓨터 – PC, 태블릿 등– 대형 컴퓨터

– 대용량 서버

  • DMA와 채널제어 방식은 모두 중앙처리장치(CPU) 개입없이 I/O를 수행하며, DMA는 PC, 채널 제어방식은 대형 서버에서 주요 사용

콘텐츠 사용 시 출처 표기 부탁 드리고, 궁금한 점이나 의견은 댓글 남겨주세요^^