입출력 제어방식

나블리·2021년 4월 18일
0

컴퓨터와 입·출력장치 사이의 데이터 전송은 여러 가지 모드로 나누어지는데, CPU를 중간 경로로 이용하여 데이터를 입·출력하는 것과 CPU를 거치지 않고 메모리와 직접 입·출력하는 것들로 구분된다.

입출력 제어방식의 종류

제어방식CPU 관여 여부특징
Program에 의한 I/OO가장 원시적인 방식
Interrupt에 의한 I/OO가장 원시적인 방식
DMA에 의한 I/OX소형컴퓨터에서 이용
Channel에 의한 I/OX대형컴퓨터에서 이용

Program에 의한 I/O

Programmed I/O 방식은 원하는 I/O가 완료되었는지의 여부를 검사하기 위해서 CPU가 상태 Flag를 계속 조사하여 I/O가 완료되었으면 메모리 데이터 레지스터(MDR)와 누산기(AC) 사이의 자료전송도 CPU가 직접 처리하는 I/O 방식이다.

  • 입·출력에 필요한 대부분의 일을 CPU가 해주므로 인터페이스는 MDR, Flag, 장치번호 디코더로만 구성하면 된다.
  • 입출력 작업을 수행할 때 CPU가 입출력 작업에 관여한다.
  • I/O 작업 시 CPU는 계속 I/O 작업에 관여해야 하기 때문에 다른 작업을 할 수 없다는 단점이 있다.

Interrupt I/O

Interrupt I/O 방식은 입·출력을 하기 위해 CPU가 계속 Flag를 검사하지 않고, 데이터를 전송할 준비가 되면 입·출력 인터페이스가 CPU에게 인터럽트 신호를 보내 입·출력이 이루어지는 방식이다.

  • 입·출력 인터페이스는 CPU에게 인터럽트 신호를 보내 입·출력이 있음을 알린다.
  • CPU는 작업을 수행하던 중 입·출력 인터럽트가 발생하면 수행중인 프로그램을 중단하고 입·출력을 처리한 후 원래의 작업으로 돌아와 작업을 계속 수행한다.
  • CPU가 계속 Flag를 검사하지 않아도 되기 때문에 Programmed I/O보다 효율적이다.
  • 대량의 자료 전송 시 CPU의 부담을 증가시킨다.

DMA(Direct Memory Access)에 의한 I/O

DMA는 입·출력장치가 직접 주기억장치를 접근(Access)하여 Data Block을 입·출력하는 방식으로, 입·출력 전송이 CPU의 레지스터를 경유하지 않고 수행된다.

  • CPU는 I/O에 필요한 정보를 DMA 제어기에 알려서 I/O 동작을 개시시킨 후 I/O 동작에 더 이상 간섭하지 않고 다른 프로그램을 할당하여 수행한다.
  • DMA 방식은 입·출력 자료 전송 시 CPU를 거치지 않기 때문에 CPU의 부담이 없어 보다 빠른 데이터의 전송이 가능하다.
  • DMA는 블록으로 대용량의 데이터를 전송할 수 있다.
  • DMA는 Cycle Steal 방식을 이용하여 데이터를 전송한다. (cycle steal: DMA제어기가 한 번에 한 데이터 워드를 전송하고 버스의 제어기를 CPU에게 돌려주는 방법)
  • CPU와 DMA 제어기는 메모리와 버스를 공유한다.
  • CPU에서는 DMA 제어기에게 입출력 장치의 주소, 주기억장치의 주소, DMA를 시작하는 명령, 입출력 데이터의 양, 입출력 명령을 전송한다.
  • DMA는 인터페이스 회로, 주소 레지수터, 워드 카운터 레지스터, 제어 레지스터, 데이터 레지스터로 구성한다.
  • 전송 작업을 수행하는 순서는 버스 사용 요청 => 버스 사용 허가 => 데이터 전송 => 인터럽트 순이다.

Cycle steal 구체적 설명

InterruptCycle Steal
수행하고 있던 Program은 정지되지만, 인터럽트 처리 루틴의 명령을 실행하기 위하여 CPU는 수행 상태에 있게 된다.CPU가 내부적으로 명령어를 해독하거나 연산을 수행하는 등 시스템 버스를 사용하지 않는 시간 동안에만 시스템 버스를 사용하기 때문에 CPU는 메모리 참조가 필요 없는 오퍼레이션을 계속 수행할 수 있지만 주기억장치에 접근할 수는 없다.
주기억장치 사이클이 정지되지 않는다.주기억장치 사이클의 한 주기가 정지된다.
CPU의 상태 보존이 필요하다.CPU의 상태 보존이 필요 없다.

◈ 데이터 채널(DMA 제어기)과 CPU가 주기억장치를 동시에 Access할 때 우선순위를 데이터 채널에게 주는 방식이다.
◈ Cycle Steal은 한 번에 한 데이터 워드를 전송하고 버스의 제어를 CPU에게 돌려준다.
◈ Cycle Steal을 이용하면 입·출력 자료의 전송을 빠르게 처리해 주는 장점이 있다.
◈ Cycle Steal 시 중앙처리장치는 메모리 참조가 필요 없는 오퍼레이션을 계속 수행한다.

Channel에 의한 I/O

Channel은 I/O를 위한 특별한 명령어를 I/O 프로세서에게 수행토록 하여 CPU 관여 없이 주기억장치와 입·출력장치 사이에서 입·출력을 제어하는 입·출력 전용 프로세서(IOP)이다. DMA 제어기의 한계를 극복하기 위하여 고안된 방식이다. 채널은 DMA 방법으로 입·출력을 수행하므로 DMA의 확장된 개념으로 볼 수 있다.

  • 채널 제어기는 채널 명령어로 작성된 채널 프로그램을 해독하고 실행하여 입·출력동작을 처리한다.
  • 채널은 CPU로부터 입·출력 전송을 위한 명령어를 받으면 CPU와는 독립적으로 동작하여 입·출력을 완료한다.
  • 채널은 주기억장치에 기억되어 있는 채널 프로그램의 수행과 자료의 전송을 위하여 주기억장치에 직접 접근한다.
  • I/O 장치는 제어장치를 통해 채널과 연결된다.
  • I/O 채널은 CPU의 I/O 명령을 수행하지 않고 I/O 채널 내의 특수목적 명령을 수행한다.
    채널은 CPU와 인터럽트로 통신한다.

0개의 댓글