인터럽트-구동 I/O 방식과 프로그램 이용한 I/O 방식 모두 CPU 가 직접 개입해야 함
주기억장치 데이터를 I/O 쓰기할 시 CPU가 주기억장치로부터 데이터를 한 개씩 읽어서 내부 레지스터에 적재한 다음 I/O 로 내보내고 I/O 명령도 보내야 함
- 직접 기억 장치 액세스 (DMA)
CPU 개입 없이 I/O 장치와 기억장치 간의 데이터 전송을 수행하는 매커니즘
- DMA 제어기
DMA(Direct Memory Access) 동작을 지원하는 하드웨어 모듈
DMA 동작을 수행하기 위해 시스템 버스 통하여 주 기억장치를 사이클 스틸링 방식으로 액세스 함
CPU 는 DMA 제어기에 I/O 장치의 주소, 연산 지정자, 데이터가 읽혀지거나 쓰여질 주기억장치 영역의 시작주소, 전송될 데이터 단어들의 개수를 보낸 뒤 다른 일 계속 하며 개입하지 않음
데이터 블록 전송 시 처리 시간이 길어지기 때문에 데이터를 한 번에 한 개씩 이동시킨 뒤 시스템 버스를 CPU 에 되돌려줌
- 내부 구조
I/O 장치를 저장하는 주소 레지스터, 데이터 버퍼 역할을 하는 데이터 레지스터, 전송될 데이터 수를 저장하는 카운트 레지스터, 각종 제어신호들을 발생하거나 받아들이기 위한 제어 회로 등이 있음
레지스터 별로 각각의 주소를 할당받음
- 사이클 스틸링
CPU가 시스템 버스를 사용하지 않는 동안 DMA 제어기가 버스를 사용하는 것
- I/O 프로세서
I/O 장치들의 동작을 제어하며 DMA 동작도 지원하는 프로세서
여러 종류와 속도르 가진 I/O 장치들의 접속 처리와 내부 기억장치를 이용한 대용량 데이터 버퍼링이 가능함
I/O 제어기를 시스템 버스에 직접 접속하지 않고 DMA 제어기에 접속할 때 사용함