최종 수정 : 25.1.9
인터럽트를 이용한 입출력
1. 인터럽트 구동 입출력 (interrupt driven I/O)
프로그램에 의한 입출력방식은 CPU가 항상 플래그를 체크하기 때문에 CPU의 시간 낭비를 가져온다. 이러한 단점을 보완한 방식이 인터럽트를 이용한 데이터 전송방식이다. 즉, CPU는 항상 플래그를 체크하는 것이 아니라 인터페이스 장치가 데이터 전송이 필요하면 CPU에 인터럽트를 발생시키는 방식이다. CPU는 다른 일을 수행하다가 인터럽트가 발생하면 실행 중인 프로그램을 중지하고 복귀 주소를 스택에 저장한 다음 인터럽트 서비스 루틴으로 이동하여, 입출력 데이터 전송을 처리한다. 처리를 완료하면 CPU는 인터럽트 이전의 상태로 복귀하여 중단했던 프로그램을 수행한다. 인터럽트에 의한 입출력 방식은 CPU가 시간을 낭비하지 않고 효율적으로 사용할 수 있게 한다.
2. 다중 인터럽트 선을 사용하는 방식
CPU에 1개의 인터럽트 신호만이 아니라 여러 개의 입출력 제어기에서 인터럽트 신호를 발생하는 경우를 다중 인터럽트라 한다. 다중 인터럽트를 필요한 방식의 장점은 각 입출력장치가 각각의 인터럽트 신호선을 가지고 있기 때문에 CPU는 인터럽트를 요구한 장치를 알 수 있다.
만약에 입출력장치들이 동시에 인터럽트 요구신호를 보낸다면 CPU는 정해진 우선순위로 우선순위가 높은 장치로부터 차례대로 인터럽트를 처리한다. CPU가 어떤 인터럽트 서비스를 수행 중에는 인터럽트 플래그(interrupt flag)는 불가능(disable) 상태가 되고, 레벨이 같은 인터럽트가 밸생하면 응답하지 않는다. 그러나 수행하고 있는 인터럽트보다 높은 우선순위를 가진 인터럽트가 발생하면 현재의 프로그램을 중단하고 우선순위가 높은 인터럽트를 수행한 후에 다시 복귀하여 중단했던 인터럽트를 수행한다.
3. 데이지 체인(daisy chain) 방식
인터럽트 요구선(INTR)이 단일회선으로 CPU에 연결되어 있어서 인터럽트 승인신호선(INTA)은 가장 가까운 입출력 제어기에 출력된다. 인터럽트를 요청하지 않았으면 차례로 다음 입출력 제억로 넘어가면서 인터럽트를 요청한 장치가 인터럽트 승인신호를 얻게 된다.
1개의 인터럽트 요청 회선에는 여러 개의 인터럽트 발생 장치가 우선순위가 높은 순서부터 좌측에서 우측으로 직렬 연결되어 있다. 인터럽트 요청 회선은 모든 장치에 공통이다. 어떤 장치가 요청신호를 보내면 CPU는 인터럽트 인정 신호(INTACK)로 응답한다. 이 신호는 우선순위가 가장 높은 PI에 연결되어 있고 해당 장치가 인터럽트를 요청하지 않았으면 PO를 통하여 다음 순위인 장치인 PI로 입력된다. 이 장치가 인터럽트를 요청했으면 PO의 출력을 0으로 하고 인터럽트 벡터 주소를 데이터버스에 실어 CPU에 보낸다. 여기서 벡터 주소란 각 장치의 고유 번호이다. 따라서 데이지 체인 방식은 우선순위를 포함한 회로이다.
인터럽트 벡터주소
☞ 인터럽트를 우선순위별로 관리하고 처리할 인터럽트가 하나 이상일 때 큐에 저장하는 역할을 하는 인터럽트 핸들러가 위치한 기억장소를 말한다.
4. 소프트웨어 폴링software polling) 방식
데이지 체인 우선순위 인터럽트 방식처럼 인터럽트 요구선은 공통으로 연결되어 있고 인터럽트를 요구한 장치를 찾는 방법으로 TEST 신호선을 사용한다. I/O 장치들의 우선순위는 프로그램을 이용하여 쉽게 변경할 수 있다. 인터럽트를 요구한 장치를 확인하면 CPU는 그 장치를 위한 서비스 루틴으로 분기하여 서비스를 수행한다. 이 방식은 하드웨어는 간단하지만 시간이 많이 걸리는 단점이 있다.
참고
독학사 교재
'CS 공부 > 컴퓨터 구조' 카테고리의 다른 글
컴퓨터 성능평가 (0) | 2025.01.10 |
---|---|
DMA를 이용한 입출력 (0) | 2025.01.10 |
입출력장치 주소지정 (0) | 2025.01.09 |
입출력장치 제어 (0) | 2025.01.09 |
시스템버스 (0) | 2025.01.09 |
댓글