DMA 설명 영상
DMA는 CPU 개입 없이 I/O 장치와 주기억장치 사이에서 데이터를 직접 전송하는 방식이다. CPU는 주소와 개수, 방향만 설정하고 DMA 제어기가 버스를 직접 쓰며 블록을 옮긴다. 전송이 끝나면 DMA 제어기가 CPU에 인터럽트를 보내 완료를 알린다. DMA 제어…
주요 장면
대본
DMA의 정의
DMA는 CPU 개입 없이 I/O 장치와 주기억장치 사이에서 데이터를 직접 전송하는 방식이다.
CPU는 주소와 개수, 방향만 설정하고 DMA 제어기가 버스를 직접 쓰며 블록을 옮긴다.
전송이 끝나면 DMA 제어기가 CPU에 인터럽트를 보내 완료를 알린다.
구성요소와 버스 요청·허가
DMA 제어기는 주소 레지스터, 카운터 레지스터, 데이터 레지스터, 제어 회로로 이루어진다.
주소 레지스터는 메모리 주소를, 카운터 레지스터는 남은 전송량을 저장한다.
DMA 제어기가 BR로 버스를 요청하면, CPU는 현재 사이클이 끝난 뒤 BG로 허가한다.
전송 모드 비교
DMA 전송은 버스를 점유하는 방식에 따라 세 가지 모드로 나뉜다.
버스트 모드는 블록 전체 동안 버스를 점유하고, 사이클 스틸링은 워드마다 버스를 돌려준다.
요구 전송 모드는 장치가 데이터를 준비했을 때만 버스를 쓴다.
시험에서는 세 모드의 버스 점유 단위와 CPU 영향을 함께 비교한다.
전송 시간 계산
블록 전송 시간은 전송 단어 수와 한 단어의 버스 전송 시간을 곱해 구한다.
T = N × t_bus 에서 N은 전송 단어 수, t_bus는 한 단어를 버스로 보내는 시간이다.
N이 1,024 워드, t_bus가 100 ns인 경우를 생각해 보자.
직접 풀어 보자.
고급 기법
비연속 메모리 영역을 하나의 전송으로 묶는 기법이 SG-DMA다.
RDMA는 원격 노드 메모리에 OS와 CPU를 거치지 않고 직접 접근한다.
장치의 DMA 주소는 IOMMU로 변환하고 접근 권한을 제한해 보호한다.
정리와 흔한 실수
정리한다. DMA는 CPU가 전송을 설정하면 블록을 직접 옮기는 방식이다.
버스트 모드는 블록 전체 동안, 사이클 스틸링은 워드 단위로 버스를 쓴다.
DMA가 CPU를 완전히 배제한다고 쓰면 감점된다. 설정과 완료 인터럽트는 CPU가 맡는다.
RDMA는 완료 통지 방식을 따로 설계해야 한다는 점도 기억한다.