DMA
DMA(Direct Memory Access)는 기억 장치 간 I/O만을 전문으로 담당하여 CPU 대신 데이터 I/O 작업을 수행하는 방식과 그것을 수행하는 집적 회로를 가리킨다.
초기의 낮은 CPU 성능로 인해 CPU가 직접 개입하는 Programmed I/O 방식으로는 컴퓨터가 충분한 성능을 낼 수 없었기 때문에(I/O 대기 시간동안 CPU가 아무것도 못한다) 이를 보조하여 CPU가 직접 개입하지 않고 DMA에 전송 방향, 전송할 데이터 크기 등의 기억 장치 간 데이터 복사를 통한 R/W 작업 사항을 지시하면 DMA가 세팅에 따른 3가지 모드 중 하나로 데이터를 여러 바이트로 이루어진 블록 단위로 복사한다.
- 버스트 모드(Burst Mode): 전체 데이터 블럭을 분할하지 않고 한번에 보낸다. 이때 DMA가 데이터 블록을 전부 목적지로 전송하기 전까지 시스템의 I/O 버스를 CPU 대신 일정 부분 점유하며 절대 CPU에게 I/O 버스 제어권을 돌려주지 않는다.
- 사이클 스틸링 모드(Cycle Stealing Mode): 사이클마다 명령 수신과 데이터 전송을 교대로 반복하며 분할한다. 그렇기 때문에 CPU와 DMA가 교대로 시스템 I/O 버스를 점유한다.
- 투명 모드(Transparent Mode): DMA의 은닉 데이터 전송 모드라고도 하며 CPU가 시스템 I/O 버스를 점유하지 않는 시간에만 DMA가 블록 단위 데이터 전송을 한다. CPU의 I/O 성능 저하가 가장 적으나 DMA가 가장 적은 수준의 성능을 발휘한다.
캐시가 항상 주기억장치와 동기화되지 않는 점을 고려했을 때 CPU의 개입 없이 데이터를 읽고 쓰는 DMA는 CPU의 캐시 일관성을 해칠 수 있다.
DMA는 일반적으로 제어 레지스터, 데이터 레지스터, 주소 레지스터, 워드 카운터 레지스터, 인터페이스 회로로 구성된다. 그리고 ISA, PCI, AHB 등의 데이터 통신 규격들은 DMA 인터페이스와의 상호작용을 위한 메모리 공간을 따로 예약한다.