CS/컴퓨터 구조론

컴퓨터 구조론 7장 [시스템 버스, I/O 및 인터럽트 /인터럽트를 이용한 I/O]

devrabbit22 2025. 4. 21. 22:04

인터럽트-구동 I/O

  • 인터럽트 매커니즘을 이용하여 CPU와 I/O 장치간의 상호작용이 처리되는 방식

동작 순서

  1. CPU가 I/O 제어기에게 명령을 보낸다. 그런 다음에 CPU는 다른 작업을 수행한다.
  2. 제어기는 I/O 명령을 이용하여 I/O 장치를 제어한다.
  3. I/O 장치가 명령 수행을 완료하면, 제어기는 CPU로 인터럽트 신호를 보낸다.
  4. CPU는 인터럽트 신호를 받는 즉시 원래의 프로그램으로 돌아와서 다음 작업을 계속한다.

인터럽트-구동 I/O 방식을 이용한 프린터 출력 흐름도

  • 앞의 과정에서 2, 3번이 진행되는 동안 CPU는 다른 프로그램을 수행할 수 있다.
  • I/O 장치의 속도가 느린 경우에도 CPU 시간이 낭비되지 않는다.

CPU가 프린터로 데이터를 출력하는 과정

  1. CPU가 데이터와 프린트 명령을 프린트 제어기로 보낸다.
  2. 그 데이터의 프린트가 종료되면, 프린트 제어기는 .CPU로 인터럽트 요구 신호를 보낸다.
  3. 만약 프린트할 내용이 남아 있다면, 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가 인터럽트를 요구하는 경우 동작 수행 순서

  1. I/O 제어기2가 INTR2 신호를 세트한다.
  2. CPU는 INTA2 신호를 세트함으로써 그 제어기에게 인터럽트 요구를 인식하였음을 알리고, 인터럽트를 위한 서비스를 시작한다.
  3. I/O 제어기2는 INTR2 신호를 해제(0으로 리셋)한다.
  4. 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판

https://velog.io/@chocaprio/07%EC%9E%A5-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EB%B2%84%EC%8A%A4-IO-%EB%B0%8F-%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8#74-%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-io

 

07장 시스템 버스, I/O 및 인터럽트

7.1 시스템 버스 시스템 버스 : 컴퓨터 시스템의 구성 요소들을 상호 연결해주는 중심 통로 7.1.1 시스템 버스의 조직 버스 : 구성 요소들간에 교환할 각종 정보들을 전송하는 선들로 구성 시스템

velog.io