입출력 시스템 구성 요소
입출력 시스템에 의해서 컴퓨터는 외부 데이터를 CPU나 기억장치로 불러들이기(입력)도 하고, 반대로 외부로 내보내기(출력)도 한다. 입출력 시스템은 "입출력장치", "입출력장치 제어기", "입출력장치 인터페이스", "입출력 제어기", "입출력버스"로 구성되어 있다.
- `입출력장치`: 사용자와 컴퓨터 시스템의 인터페이스로, 사용자는 입력장치를 이용하여 컴퓨터 시스템에 프로그램과 데이터를 제공하고 컴퓨터 시스템은 처리한 결과를 출력장치를 통해 사용자에게 제공한다.
- `입출력장치 제어기`: 입출력장치를 구동시키는 작업을 수행하는 기기로, 아날로그 회로를 포함한다.
- `입출력장치 인터페이스`: 입력장치에서 입력된 디지털 형태의 데이터와 컴퓨터 시스템 내에 있는 중앙처리장치나 주기억장치 내에서 다루는 형태의 데이터의 차이를 해결하는 것이 "입력장치 인터페이스", 중앙처리장치나 주기억장치 내에서 다루는 형태의 데이터와 출력장치가 출력하기 위하여 다루는 데이터의 차이를 해결하는 것이 "출력장치 인터페이스"이다.
- `입출력 제어기`: 입출력장치 인터페이스와 컴퓨터 시스템 사이에 데이터의 전송을 제어하는 장치이다.
- `입출력버스`: 입출력장치 인터페이스와 컴퓨터 시스템 사이에 있는 데이터 전달 경로이다.
비동기 입출력 데이터 전송
2개의 독립된 장치가 버스를 이용해 정보를 전달할 때는 장치 사이의 공통적인 전송 규칙을 따라야 한다. 전송 규칙은 "동기식 전송"과 "비동기식 전송"으로 분류된다.
- `동기식 전송`: 서로 독립적인 2개의 장치가 같은 클록 신호에 따라 데이터 전송이 일어나는 것
- `비동기식 전송`: 독립적인 장치가 각각의 고유한 클록 신호에 따라 데이터 전송이 일어나는 것
대부분의 장치는 비동기식 전송 방식을 따르는데, 두 장치 간의 데이터 전송을 하려면 데이터 전송 시점을 알리기 위한 제어 신호가 교환되어야 한다. 비동기 데이터 전송 방식을 위한 제어 신호 교환 방식으로는 "스트로브 제어 방식(Strobe Control)"과 "핸드셰이킹 방식(Handshaking)"이 있다.
스트로브 제어 방식 (Strobe Control)
스트로브 제어(Strobe) 방식은 송신자와 수신자가 데이터 전송을 동기화하기 위해 특정 신호(스트로브 신호)를 사용한다. 데이터 전송의 시간을 맞추기 위해 데이터 전송회선 이외에 하나의 제어회선을 더 가진다. 또 하나의 제어회선을 통해 송신 측이나 수신 측에서 데이터를 전송할 때 제어 신호를 보낸다. 스트로브 제어 방식의 데이터 전송은 다음과 같은 순서로 이루어진다.
- `송신 측`: 데이터를 버스에 올려놓는다. 스트로브 신호를 활성화하여 데이터가 준비되었음을 알린다.
- `수신 측`: 스트로브 신호를 감지하고 데이터 버스에서 데이터를 읽어들인다. 데이터를 읽은 후 스트로브 신호가 비활성화될 때까지 대기한다.
그리고 마지막으로 송신 측은 스트로브 신호를 비활성화하여 데이터 전송이 완료되었음을 알린다. 그리고 수신 측은 다음 데이터를 받을 준비한다.
핸드셰이킹 방식 (Handshaking)
핸드셰이킹(Handshaking) 방식은 송신자와 수신자가 데이터를 주고받기 전에 서로의 준비 상태를 확인하기 위해 "제어 신호(요청/응답 신호)"를 주고받으며 동기화를 맞추는 방법이다. 핸드셰이킹 방식의 데이터 전송은 송신자와 수신자 간의 상호 동작으로 이루어진다.
- 송신자가 데이터를 준비한 뒤 `Request 신호`를 활성화하여 데이터를 보낼 준비가 되었음을 알린다.
- 수신자는 `Request 신호`를 감지한 뒤, 데이터를 받을 준비가 되면 `Acknowledge 신호`를 활성화하여 송신자에게 준비 상태를 알린다.
- 송신자는 `Acknowledge 신호`를 확인한 후 데이터를 전송한다.
- 데이터 전송이 완료되면 송신자는 `Request 신호`를 비활성한다.
- 수신자는 `Request 신호`가 비활성화된 것을 확인하고 데이터를 안전하게 받은 후 `Acknowledge 신호`를 비활성화한다.
- 이후, 송신자와 수신자는 다음 데이터 전송을 위한 준비를 한다.
입출력 제어 방식
입출력 동작시간은 전체 데이터 처리시간에 큰 비중을 차지하기에 입출력장치가 효율적으로 동작하도록 제어하는 것이 중요하다. 입출력을 제어하는 방식은 "중앙처리장치에 의한 제어 방식", "DMA 제어 방식", "채널에 의한 제어 방식"으로 분류된다.
중앙처리장치에 의한 제어 방식
중앙처리장치(CPU)가 입출력 제어기 역할을 하는 방식으로, 입출력에 필요한 작업을 중앙처리장치가 하도록 하는 것이다. 이 방식은 간단한 입출력 제어기의 기능만 포함한다. 중앙처리장치에 의한 제어방식은 "프로그램에 의한 입출력"과 "인터럽트에 의한 입출력"으로 나뉜다.
프로그램에 의한 입출력 방식
프로그램에 의한 입출력 방식은 CPU가 직접 입출력 장치를 제어하며, 장치의 상태를 지속적으로 확인(Polling)하여 데이터 입출력 작업을 수행하는 방식이다. CPU는 입출력 장치의 레지스터를 읽거나 쓰는 명령을 실행한다. 동작 방식은 다음과 같다.
- CPU가 입출력 장치의 상태 레지스터를 확인한다.
- 입출력 장치가 준비 상태인지 확인(Polling)한다.
- 장치가 준비되면 데이터를 입출력 장치로 전송하거나 장치로부터 데이터를 읽어온다.
- 작업이 끝날 때까지 CPU는 계속 기다리며 처리한다.
이러한 방식에는 "설계가 간단하며 구현이 쉽고 입출력 장치를 CPU가 완전히 제어하므로 오류 발생 가능성이 낮다"는 장점이 있으나, 비효율적이고 속도가 느리다는 단점이 있다.
인터럽트에 의한 입출력 방식
인터럽트에 의한 입출력 방식은 입출력 장치가 작업 준비가 되었을 때 인터럽트 신호를 통해 CPU에 알림으로써 입출력 작업을 수행하는 방식이다. CPU는 입출력 작업 동안 다른 작업을 수행할 수 있다. 동작 방식은 다음과 같다.
- CPU는 입출력 요청을 보낸 뒤 다른 작업을 수행한다.
- 입출력 장치가 작업 준비가 완료되면 인터럽트 신호를 CPU에 보낸다.
- CPU는 현재 실행 중인 작업을 멈추고 인터럽트를 처리한다.
- 입출력 처리가 끝난 후, CPU는 멈췄던 작업으로 복귀한다.
이러한 방식에는 "효율성 높고 응답 시간이 빠르며, 멀티태스킹이 가능하다"는 장점이 존재하며, 반대로 "설계가 복잡하고 인터럽트 오버헤드 문제가 발생할 수 있다"는 단점이 있다.
DMA 제어 방식 (Direct Memory Access)
DMA 제어 방식은 중앙처리장치의 개입 없이 직접 주기억장치에 접근하여 입출력을 수행하는 방식이다. DMA 제어 방식의 동작 방식은 다음과 같다.
- DMA 제어기가 주기억장치에 접근하기 위해 중앙처리장치에 주기억장치 사이클을 요청한다.
- 메모리 사이클 요청 신호를 받은 중앙처리장치는 현재 명령어의 수행을 마친 후 주기억장치 사이클 허용 신호를 보낸다.
- 주소 버스, 데이터 버스, 읽기/쓰기 제어 라인에 대한 사용권을 받은 DMA 제어기는 중앙처리장치 개입 없이 데이터 전송을 수행한다.
- 데이터 전송을 마치면 중앙처리장치에 인터럽트 신호를 보내어 버스 제어권을 다시 중앙처리장치로 넘긴다.
DMA 제어기를 통해 데이터를 전송하는 경우 "DMA 대량 전송 방식"과 "사이클 스틸 방식"을 사용한다.
- `DMA 대량 전송 방식`: DMA 제어기가 주기억장치 버스 제어권을 가지는 동안, 여러 개의 워드로 구성된 블록이 지속적으로 전송되는 방식
- `사이클 스틸 방식`: DMA 제어기가 중앙처리장치로부터 주기억장치의 사이클을 뺏어서 사용하는 방법으로, DMA 제어기가 메모리에 직접 접근하여 데이터를 전송할 때, CPU의 버스 사용 시간을 잠시 차단(Steal)하여 필요한 만큼의 데이터를 처리하는 입출력 방식이다.
채널에 의한 제어 방식
채널에 의한 제어 방식은 채널이라는 일종의 입출력 프로세서를 이용하여 입출력 작업을 전담하게 하는 방식이다. 채널(Channel)은 입출력장치와 주기억장치 사이의 데이터 전송을 위한 통로를 제공하며, 또한 산술/논리/분기 등의 연산 작업도 수행한다.
중앙처리장치는 채널이 입출력을 시작하도록 지시하고 채널이 일을 수행하면 중앙처리장치와는 독립적으로 동작한다. 이로 인해 채널의 사용은 중앙처리장치의 효율을 증가시키지만, 하드웨어 비용 또한 증가하게 한다.
연결 형태에 따른 분류
주기억장치와 채널 제어기의 연결 형태에 따라 분류하면 다음과 같다.
- `고정 연결 채널 제어기`: 여러 개의 입출력장치가 하나의 채널 제어기에 고정적으로 연결된 시스템
- `가변 연결 채널 제어기`: 크로스바 형태로 연결된 시스템
채널의 종류
채널의 종류에 따라 분류하면 다음과 같다.
- `선택기 채널`: 입출력이 실제로 일어나고 있을 때, 채널 제어기가 임의의 시점에서 한 입출력장치의 전용인 것처럼 운영되는 채널
- `멀티플렉서 채널`: 입출력장치들이 채널을 시분할 공유하여 입출력하도록 연결한 채널