중앙 처리장치 내에서 수행할 데이터를 보조기억장치에서 주기억장치 내로 기억시키는 입력 동작과 수행한 결과를 주 기억장치에서 보조기억장치인 출력 매체로 이동시키는 출력 동작을 수행하는데 필요한 장치를 입출력 장치라고 한다. 입출력 장치는 주기억장치에 비하여 동작 속도가 느리며 정보 처리 단위가 다르고 컴퓨터에 비해서 오 동작이 많다.
입출력 장치로는 입력장치와 출력장치를 모두 의미하는 것으로서 대부분의 입력장치가 동시에 출력장치로도 사용이 가능하다. 동시 사용이 가능한 입출력장치로서는 자기 드럼, 자기 테이프 자기 디스크, 콘솔, 마이크로필름, 광디스크 등이 있으며 입력장치만으로 사용되는 것은 카드 판독기, 카드 편치, 종이테이프 판독기, 키보드. 마우스, 스캐너, 라이트 펜 등이 있으며 출력 장치만으로 사용되는 것은 디스플레이 장치, 프린터, XY 플로터, 영상 표시 장치 등이 있다.
입출력장치와 중앙처리장치 사이에서 자료를 자유롭게 전송하기 위해서 필요한 것이 입출력 인터페이스이다.
• 주변장치와 중앙처리장치의 동작 방식이 다른 것을 해결
• 주변장치와 중앙처리장치의 전송속도의 차이를 해결
• 주변장치와 중앙처리장치의 워드 형식의 차이를 해결
• 다른 주변장치의 동작을 방해하지 않도록 한다.
8.1.2 입출력 장치 지정 방식
입출력 인터페이스가 실행하는 명령어는 주변장치를 활성화하는 제어 커맨드, 주변장치 내의 여러 가지 상태를 테스트하기 위한 테스트 커맨드, 데이터 입력을 위한 데이터 입력 커맨드, 마지막으로 데이터를 출력하기 위한 데이터 출력 커맨드 등이 있다. 이러한 명령어는 메모리에 저장되었다가 사용되는데 이러한 커맨드를 Read, Write 하는 방식에 따라서 격리형 입출력과 메모리 맵형 입출력으로 나누어 볼 수도 있다.
8.1.3 비동기식 데이터 전송
두 개의 독립된 장치 사이의 비동기적인 데이터 전송을 이루기 위해서는 데이터가 전송될 시각을 알리기 위하여 두 장치 사이에 제어 신호가 교환되어야 한다. 이렇게 제어 신호를 교환하는 방식으로는 스트로브 제어(Strobe Control)에 의한 방법과 핸드셰이킹(Handshaking)에 의한 방법이 있다.
8.1.4 전송 모드
CPU가 입출력장치로부터 데이터를 전송하고자 할 때 CPU는 직접 입출력 명령어를 실행하여 임시로 데이터를 주고받는 일은 거의 없으며 대부분의 이러한 작업은 메모리를 통해서 이루어진다. 컴퓨터와 입출력장치 사이의 데이터 전송은 다음과 같이 여러 가지 모드로 나누어진다.
(1) 프로그램된 입출력
(2) 인터럽트에 의한 입출력
(3) DMA에 의한 입출력
8.2 인터럽트
컴퓨터가 명령어를 수행 중일 때 예기치 않는 응급 사태가 발생할 경우를 인터럽트라고 한다.
인터럽트가 걸리면 CPU는 현재 하던 일을 마치고 필요한 각종의 정보를 저장한 후에 인터럽트 처리를 위한 인터럽트 서비스 루틴과 인터럽트 처리 루틴을 실행시켜 인터럽트를 처리한다. 인터럽트가 처리되면 메모리에 저장해 놓은 정보를 가져다가 다시 작업을 계속 수행하게 된다. 인터럽트는 어떤 상황에서 걸리는가에 따라서 여러 가지로 나누어진다.
(1) 외부 인터럽트
(2) 내부 인터럽트
(3) 감시프로그램 호출 인터럽트
(4) 소프트웨어 인터럽트
(5) 입출력 인터럽트
8.2.1 소프트웨어와 하드웨어 인터럽트
소프트웨어적인 방법으로는 폴링(Polling)이 있는데 이 방법은 별도의 하드웨어가 필요 없어 전체 하드웨어의 가격이 저렴하고, 인터럽트의 우선순위를 변경할 수 있는 등의 유연성이 있으나 처리 시간이 늦다는 단점을 갖고 있다. 그리고 하드웨어적인 방법에는 데이지 체인(Daisy Chain)과 병렬 우선순위(Parallel Priority)가 있으며 이 방법은 처리 속도는 빠르나 유연성이 적고 하드웨어 가격이 비싸다는 단점을 갖고 있다.
(1) 폴링(Polling)
모든 인터럽트는 우선순위가 정해져 있다. 그리고 동시에 여러 개의 인터럽트가 걸리면 이 우선순위에 의해서 처리하게 된다. 이 경우에 소프트웨어적으로 우선순위가 높은 인터럽트를 알아내는 방법이다. 이 방법에서는 모든 인터럽트를 위한 공통의 서비스 프로그램을 갖고 있다.
이 프로그램은 인터럽트가 발생하였을 경우 가장 우선순위가 높은 인터럽트의 소스부터 차례로 검사하여 그중 가장 우선순위가 높은 소스를 찾아내어 이에 해당하는 서비스 루틴을 수행한다. 단점은 모든 입출력장치를 조사하는데 너무 많은 시간이 걸린다는 것이다.
(2) 데이지 체인(Daisy Chain)
데이지체인은 인터럽트를 하드웨어적인 방법으로 해결하는 것으로 직렬이다. 모든 장치들을 직렬로 연결한다. 연결할 때 우선순위가 가장 높은 장치부터 연결하여 항상 우선순위가 높은 장치부터 처리되도록 한다. 어느 장치에서 인터럽트를 걸면 INT 신호가 활성화된다. 그러면 CPU는 하던 일을 중지하고 인터럽트 처리를 위해 INTACK 신호를 활성화하여 우선순위가 높은 입력장치부터 검사해 나간다. 검사 결과 인터럽트를 걸지 않았으면 Po를 활성화해서 그다음 장치의 Pi를 활성화하여 다음 장치를 검사하도록 하고, 인터럽트를 걸었다면 VAD 신호를 활성화하여 인터럽트 처리한다.
(3) 병렬 인터럽트(Parallel Interrupt)
이 방법은 인터럽트를 하드웨어적인 방법으로 해결하는 것으로 병렬이다. 즉 인터럽트를 발생하는 모든 장치는 우선순위 인코더에 연결된다. 동작은 어느 입출력 장치가 인터럽트를 걸면 자신보다 우선 순위가 사용하지 않을 때는 직접 사용하고 자신 보다 우선순위가 낮은 것을 '0'으로 매스크 시켜서 사용을 못 하도록 한다.
'컴퓨터 구조' 카테고리의 다른 글
병렬처리 컴퓨터 (0) | 2022.12.28 |
---|---|
입력 및 출력 - 인터럽트 서비스 루틴 (0) | 2022.12.28 |
기억 장치 - 메모리 (0) | 2022.12.27 |
프로세스 - 인터럽트 처리 과정 (0) | 2022.12.27 |
프로세스 - 중앙처리 장치 (CPU) (0) | 2022.12.27 |
댓글