인터럽트-구동 I/O
- 인터럽트 매커니즘을 이용하여 CPU와 I/O 장치간의 상호작용이 처리되는 방식
동작 순서
- CPU가 I/O 제어기에게 명령을 보낸다. 그런 다음에 CPU는 다른 작업을 수행한다.
- 제어기는 I/O 명령을 이용하여 I/O 장치를 제어한다.
- I/O 장치가 명령 수행을 완료하면, 제어기는 CPU로 인터럽트 신호를 보낸다.
- CPU는 인터럽트 신호를 받는 즉시 원래의 프로그램으로 돌아와서 다음 작업을 계속한다.
- 앞의 과정에서 2, 3번이 진행되는 동안 CPU는 다른 프로그램을 수행할 수 있다.
- I/O 장치의 속도가 느린 경우에도 CPU 시간이 낭비되지 않는다.
CPU가 프린터로 데이터를 출력하는 과정
- CPU가 데이터와 프린트 명령을 프린트 제어기로 보낸다.
- 그 데이터의 프린트가 종료되면, 프린트 제어기는 .CPU로 인터럽트 요구 신호를 보낸다.
- 만약 프린트할 내용이 남아 있다면, CPU는 다음에 프린트할 데이터를 준비하여 1번부터 반복한다.
이 과정은 원하는 모든 데이터들의 프린트를 마칠 때까지 반복한다.
- 여러 종류의 I/O 장치들이 접속되어 있는 컴퓨터 시스템에서 CPU가 그들을 이용하여 데이터 입력 혹은 출력 동작들을 연속적으로 수행한다고 가정하면, 각 I/O 장치의 제어기는 I/O 동작의 수행이 종료되는 즉시 CPU로 인터럽트 신호를 보낸다. 그런 경우 CPU는 인터럽트를 보낸 제어기를 확인할 수 있어야 그에 대한 적절한 처리를 할 수 있다. 또한, 두 개 이상의 I/O 제어기들이 동시에 인터럽트 신호를 발생한 경우에 어느 제어기에 대한 서비스부터 처리할 것인지도 결정할 수 있어야 한다.
인터럽트를 발생할 수 있는 I/O 장치들이 여러 개가 존재하는 시스템에서 그러한 문제들을 해결하는 방법
- 다중 인터럽트(nultiple interrupt) 방식
- 데이지-체인(daisy-chain) 방식
- 소프트웨어 폴링(software polling)방식
다중 인터럽트 방식
- 각 I/O 제어기와 CPU 사이에 별도의 인터럽트 요구(interrupt request INTR) 신호 선과 인터럽트 확인(interrupt acknowledge:INTA) 신호 선이 한 개씩 존재한다.
- 여기서 INTA 신호는 CPU가 I/O 장치로부터 인터럽트 요구를 인식했다는 것을 알려주는 신호이다.
- 네 개의 I/O 장치들이 제어기를 통하여 CPU와 접속되는 시스템에서 네 개의 INTR 선과 네 개의 INTA 선이 필요하다.
- CPU가 각 I/O 제어기로부터 인터럽트 요구를 받았을 때, 즉시 응답할 수 있는 상태라면 해당 인터럽트 확인 신호를 보내준다.
ex) I/O 제어기2가 인터럽트를 요구하는 경우 동작 수행 순서
- I/O 제어기2가 INTR2 신호를 세트한다.
- CPU는 INTA2 신호를 세트함으로써 그 제어기에게 인터럽트 요구를 인식하였음을 알리고, 인터럽트를 위한 서비스를 시작한다.
- I/O 제어기2는 INTR2 신호를 해제(0으로 리셋)한다.
- CPU도 INTA2 신호를 해제한다.
만약 두 개 혹은 그 이상의 I/O 장치들이 동시에 인터럽트 요구 신호들을 보낸다면?
- 각 I/O 장치에 대하여 우선순위를 정하고, 더 높은 우선 순위를 가진 장치의 인터럽트 요구부터 확인 신호를 보내고 서비스 한다.
- ex) CPU와 가장 가까이 위치한 I/O 제어기1의 우선순위가 가장높고, I/O 제어기4의 우선순위가 가장 낮은 것으로 정할 수 있다.
이 방법의 장점
- 각 I/O 장치가 별도의 인터럽트 선을 가지고 있기 때문에 CPU가 인터럽트를 요구한 장치를 쉽게 찾아낼 수 있다.
이 방법의 단점
- 각 I/O 장치에 대하여 두 개씩의 신호 선들이 필요하므로 하드웨어가 복잡해지고, 접속 가능한 I/O 장치들의 수가 그 신호들을 위해 할당되는 CPU 칩의 핀(pin) 수에 의해 제한된다.
인터럽트 플래그
- CPU가 인터럽트를 처리할 수 있는 상태인지 혹ㅇ은 아닌지를 알려주는 상태 비트
- CPU가 어떤 인터럽트 요구에 대한 서비스를 시작하는 순간에 인터럽트를 인터럽트 불가능 상태로 세트한다면, 그 요구에 대한 서비스를 처리하는 동안에는 다른 인터럽트 요구가 들어오더라도 응답하지 않도록 할 수 있다.
- 만약 그러한 상태로 세트하지 않은 경우 더 높은 우선순위를 가진 인터럽트 요구가 들어온다면, 현재의 서비스 처리를 중단하고 새로운 인터럽트에 대하여 응답해야 한다.
데이지-체인 방식
- I/O 제어기들은 한 개의 INTR 선을 공유한다. 그리고 CPU 로부터 발생되는 INTA 출력 선은 가장 가까이 위치한 I/O 제어기1의 인터럽트 확인 입력(AI1) 선으로 연결된다.
- 제어기1의 인터럽트 확인 출력(AO1)선은 다음에 위치한 I/O 제어기의 AI2로 연결되고, AO2는 AI3로 AO3는 AI4로 직렬 연결되는데, 그 형태가 마치 데이지 꽃들을 연속적으로 연결한 모습과 같아서 데이지-체인 방식이라고 부른다.
- 만약 다섯 번째 I/O 장치가 있다면, AO4는 그 제어기의 AI 입력으로 연결될 것이다.
- 이 구성에서 어떤 순간에 하나 혹은 그 이상의 I/O 인터럽트 요구를 보낸다면, INTR 선이 세트된다. 그러면 CPU는 즉시 INTA 신호를 세트하는데, 그 신호는 첫 번째 I/O 제어기로 보내진다. 만약 그 제어기가 인터럽트를 요구한 상태라면, 즉시 데이터 버스를 통하여 자신의 식별(ID) 번호를 CPU로 보낸다.
- 이 번호는 인터럽트 벡터라고 불린다.
인터럽트 벡터
- 인터럽트를 요구한 I/O 장치의 식별(ID) 번호로서, 해당 장치를 위한 인터럽트 처리 루틴의 시작 주소를 찾는데 사용된다.
- 만약 첫 번째 I/O 제어기가 인터럽트를 요구한 상태가 아니라면, 그 제어기는 확인 신호를 AO1을 통하여 두 번째 제어기로 통과시킨다. 이러한 확인 신호의 전달 과정은 실제 인터럽트를 요구한 제어기를 도달할 때까지 계속된다.
- 결과적으로 이 방식에서는 INTA 신호가 연결된 순서가 우선순위를 나타내며, PCU와 가까이 위치한 I/O 제어기1의 우선순위가 가장 높고, I/O 제어기 4가 가장 낮다.
- 만약 여러 개의 I/O 장치들이 동시에 인터럽트 요구를 보낸다면, INTA 신호는 그들 중에서 우선순위가 가장 높은 장치에 의해 먼저 인식된다. 그에 따라 그 장치에 대한 인터럽트 서비스가 이루어지지만, 그 동안에도 아직 서비스 받지 못한 I/O 장치들에 의하여 INTR 선은 여전히 세트된 상태로 있다. CPU는 그 장치에 대한 서비스를 완료한 다음에 다시 INTA 신호를 세트하게 되며, 다른 장치들은 그 때까지 계속 기다려야 한다.
이 방식의 장점
- 이 방식은 신호 선의 수가 적기 때문에 하드웨어가 간단하다.
이 방식의 단점
- 많은 수의 I/O 장치들이 접속된 시스템에서는 우선순위가 낮은 장치들이 서비스를 받지 못하고 매우 오랫동안 기다리게 된다.
소프트웨어 폴링 방식
- 한 개의 TEST I/O 선이 CPU와ㅏ 모든 제어기들 사이에 연결된다.
- 각 제어기 내에는 해당 I/O 장치의 인터럽트 요구 상태를 가리키는 인터럽트 플래그가 있는데, TEST I/O 신호는 그 플래그의 상태를 검사하는데 사용된다.
- 이 방식에서도 인터럽트 요구(INTR) 선은 모든 I/O 제어기들에 의해 공통으로 사용된다. 어떤 I/O 장치가 인터럽트 요구를 발생하면, 해당 제어기 내에 있는 인터럽트 플래그가 세트됨과 동시에 공통 INTR 신호가 세트된다.
그러면, CPU는 즉시 다음과 같은 검사 과정을 수행한다.
- 먼저 TEST I/O 선을 이용하여 첫 번째 I/O 제어기의 인터럽트 플래그가 세트되어 있는 지 검사한다. 만약 세트되어 있다면, 검사 과정은 완료되는 것이다.
- 만약 그 플래그가 세트되어 있지 않다면, PCU는 인터럽트를 요구한 장치를 찾을 때까지 검사 과정을 모든 제어기들에 대하여 차례대로 수행한다.
- 이 과정에서 검사하는 순서가 I/O 장치들의 우선순위를 나타낸다.
- 인터럽트를 요구한 I/O 장치를 확인하면, CPU는 그 장치를 위한 인터럽트 서비스 루틴으로 분기하여 서비스를 수행한다.
- 이 방법은 인터럽트를 요구한 장치를 찾아내는 과정에서 마이크로프로그램을 이용하기 때문에 소프트웨어 폴링 방식이라고 불린다.
이 방식의 장점
- 하드웨어가 간단하다
이 방식의 단점
- 검사를 위한 시간이 많이 걸린다.
Reference
컴퓨터 구조론 개정 5판
07장 시스템 버스, I/O 및 인터럽트
7.1 시스템 버스 시스템 버스 : 컴퓨터 시스템의 구성 요소들을 상호 연결해주는 중심 통로 7.1.1 시스템 버스의 조직 버스 : 구성 요소들간에 교환할 각종 정보들을 전송하는 선들로 구성 시스템
velog.io
'CS > 컴퓨터 구조론' 카테고리의 다른 글
컴퓨터 구조론 8장 [고성능 컴퓨터시스템 구조 / 병렬처리의 개념 및 필요성, 병렬처리의 단위] (0) | 2025.04.22 |
---|---|
컴퓨터 구조론 7장 [시스템 버스, I/O 및 인터럽트/DMA를 이용한 I/O] (0) | 2025.04.21 |
컴퓨터 구조론 7장 [시스템 버스, I/O 및 인터럽트 / I/O 장치의 접속] (0) | 2025.04.21 |
컴퓨터 구조론 7장 [시스템 버스, I/O 및 인터럽트 / 버스 중재] (0) | 2025.04.19 |
컴퓨터 구조론 6장 [보조저장장치-플래시메모리와 SSD] (0) | 2025.04.08 |