컴퓨터와 입·출력장치 사이의 데이터 전송은 여러 가지 모드로 나누어지는데, CPU를 중간 경로로 이용하여 데이터를 입·출력하는 것과 CPU를 거치지 않고 메모리와 직접 입·출력하는 것들로 구분된다.
제어방식 | CPU 관여 여부 | 특징 |
---|---|---|
Program에 의한 I/O | O | 가장 원시적인 방식 |
Interrupt에 의한 I/O | O | 가장 원시적인 방식 |
DMA에 의한 I/O | X | 소형컴퓨터에서 이용 |
Channel에 의한 I/O | X | 대형컴퓨터에서 이용 |
Programmed I/O 방식은 원하는 I/O가 완료되었는지의 여부를 검사하기 위해서 CPU가 상태 Flag를 계속 조사하여 I/O가 완료되었으면 메모리 데이터 레지스터(MDR)와 누산기(AC) 사이의 자료전송도 CPU가 직접 처리하는 I/O 방식이다.
Interrupt I/O 방식은 입·출력을 하기 위해 CPU가 계속 Flag를 검사하지 않고, 데이터를 전송할 준비가 되면 입·출력 인터페이스가 CPU에게 인터럽트 신호를 보내 입·출력이 이루어지는 방식이다.
DMA는 입·출력장치가 직접 주기억장치를 접근(Access)하여 Data Block을 입·출력하는 방식으로, 입·출력 전송이 CPU의 레지스터를 경유하지 않고 수행된다.
Interrupt | Cycle Steal |
---|---|
수행하고 있던 Program은 정지되지만, 인터럽트 처리 루틴의 명령을 실행하기 위하여 CPU는 수행 상태에 있게 된다. | CPU가 내부적으로 명령어를 해독하거나 연산을 수행하는 등 시스템 버스를 사용하지 않는 시간 동안에만 시스템 버스를 사용하기 때문에 CPU는 메모리 참조가 필요 없는 오퍼레이션을 계속 수행할 수 있지만 주기억장치에 접근할 수는 없다. |
주기억장치 사이클이 정지되지 않는다. | 주기억장치 사이클의 한 주기가 정지된다. |
CPU의 상태 보존이 필요하다. | CPU의 상태 보존이 필요 없다. |
◈ 데이터 채널(DMA 제어기)과 CPU가 주기억장치를 동시에 Access할 때 우선순위를 데이터 채널에게 주는 방식이다.
◈ Cycle Steal은 한 번에 한 데이터 워드를 전송하고 버스의 제어를 CPU에게 돌려준다.
◈ Cycle Steal을 이용하면 입·출력 자료의 전송을 빠르게 처리해 주는 장점이 있다.
◈ Cycle Steal 시 중앙처리장치는 메모리 참조가 필요 없는 오퍼레이션을 계속 수행한다.
Channel은 I/O를 위한 특별한 명령어를 I/O 프로세서에게 수행토록 하여 CPU 관여 없이 주기억장치와 입·출력장치 사이에서 입·출력을 제어하는 입·출력 전용 프로세서(IOP)이다. DMA 제어기의 한계를 극복하기 위하여 고안된 방식이다. 채널은 DMA 방법으로 입·출력을 수행하므로 DMA의 확장된 개념으로 볼 수 있다.