Chapter 10. Interrupt
10.1 Interrupt의 필요성 Interrupt가 발생하는 경우 1) 정전 혹은 자료 전달 과정에서 오류 발생과 같은 컴퓨터 자체 내에서의 기계적인 문제 2) 보호된 기억 공간에 접근 혹은 불법적인 Instruction 수행 등과 같은 프로그램 상의 문제 3) 컴퓨터 Operater의 의도적인 중단 4) 입출력과 같은 주변 장치들의 조작에 중앙 처리장치의 기능이 요청되는 경우
1) 정전 시 프로그램의 수행 도중 정전 시 그때까지의 처리 결과 보존 전원 회복 후에 나머지 수행 가능 2) 입출력 시 - 중앙 처리 장치와 주변 장치 사이의 속도 차이 - 입력 필요 시 중앙 처리 장치는 입력 장치에 원하는 정보를 읽도록 요청한 후 수행 가능한 Instruction 수행 - 원하는 정보가 준비되면 입력 장치가 인터럽트 요청 - 중앙 처리 장치와 입출력 장치의 병행 동작으로 하드웨어 운영 효율 증대
10.2 인터럽트 동작 원리와 체제 * 인터럽트 체제의 기본 요소 - 중앙 처리 장치로 들어오는 인터럽트 요청 신호 - 인터럽트 처리 기능 - 인터럽트 취급 루틴 - 이들을 일정한 동작 원리에 의해 활용하는 기능 - 인터럽트 우선 순위 체제 : 진보된 인터럽트 체제
* 인터럽트 처리 방법 1) 인터럽트 발생 장치로부터 인터럽트 요청 2) 현재 수행중인 프로그램 상태를 안전한 장소에 기억 3) 인터럽트 원인을 찾은 후 인터럽트 취급 루틴 수행 4) 인터럽트에 대한 조치 5) 인터럽트 당한 프로그램의 상태를 복구하여 수행 계속
10.2.1 인터럽트 요청 및 처리 단일 회선 인터럽트 체제 인터럽트 요청 회선 CPU 장치인터페이스 장치인터페이스 입출력장치
신호를 모두 논리적으로 합하여 단일 회선으로 중앙 처리 장치 에 연결 - 인터럽트 요청이 가능한 모든 장치들로부터의 인터럽트 요청 신호를 모두 논리적으로 합하여 단일 회선으로 중앙 처리 장치 에 연결 - 인터럽트 처리 속도가 늦다. - 인터럽트 요청이 두 개 이상 동시에 발생했을 경우 뒤쪽의 장비는 인터럽트 처리가 항상 늦어진다.
10.3 다중회선 인터럽트 체제 모든 장치들과 중앙처리장치 사이에 고유의 인터럽트 요청 선이 존재한다. 요청선과 CPU 사이에 제어회로 삽입 장점 : 인터럽트 반응과 처리가 빠르다. 단점 : 회선이 복잡해진다.
CPU 장치인터페이스 장치인터페이스 입출력장치
10.4 혼합체제 단일회선 방식과 다중회선 방식을 혼합한 것으로 많은 수의 장치를 연결할 때 사용한다.
* 인터럽트 당한 프로그램의 상태 보존 - 프로그램의 상태 프로그램이 사용한 모든 레지스터의 상태와 다음에 수행할 인스트럭션의 주소를 기억하고 있는 PC의 상태 - 실제로는 인터럽트 취급 루틴에서 그 내용이 변경되는 레지스터만 인터럽트 취급 루틴 수행 이전에 보존 - PC는 반드시 보존해야 하며, 하드웨어에 의해 특정 기억장소나 레지스터 Stack에 저장
* 인터럽트 처리 순서 1) 인터럽트 요청 2) PC보관 (0번지) 3) 인터럽트 처리 루틴으로 점프 4) 인터럽트 원인 판별 5) 원인에 따라 인터럽트 취급 루틴 수행
소프트웨어 방식을 위한 인터페이스 구조
- IR (Interrupt Request) 플래그 해당 인터페이스가 인터럽트를 요청하였는가의 여부를 나타내는 플래그 - D (Done) 플래그 해당 인터페이스에 연결된 장치가 인터페이스로 하여금 인터럽트를 요청할 준비가 되어 있는가를 나타내는 플래그
- 폴링 (polling) 어떤 장치가 인터럽트를 요청하면 인터럽트 처리 루틴에서는 각 장치의 D플래그를 시험하는 인스트럭션을 수행하여 인터럽트를 요청한 장치 판별 * 폴링에 의한 인터럽트 처리 - 일정한 순서로 각 장치의 D플래그를 시험하여 최초로 D = 1 인 장치를 인터럽트의 원인으로 판단 - 인터럽트 취급이 시작되면 IR와 D를 0으로 만든다.
하드웨어 방식 (벡터 인터럽트 방식) * 장치 번호 버스 (device code bus) -인터럽트를 요청한 장치가 자기의 장치 번호를 중앙 처리 장치에 알리는데 사용 1) CPU에 인터럽트 요청 신호를 보낸다. (IR =1) 2) CPU는 하드웨어에의해 인터럽트 인정신호 (INTACK : Interrupt acknowledge)를 내보낸다. 3) 인터럽트를 요청한 장치 인터페이스는 INTACK신호에 의해 장치번호를 전송한다. 4) CPU가 인터럽트 요청 장치를 식별하여 인터럽트를 받아들이면 IR = 0 으로 한다.
* 인터럽트 반응 시간 (interrupt response time) - 인터럽트 요청 신호를 발생한 후부터 해당 인터럽트 취급 루틴의 수행이 시작될 때까지의 시간 - 하드웨어에 의한 방식이 빠르다. - 적당한 반응속도를 위해 인터럽트 체제에 필요한 하드웨어, 소프트웨어, 필요한 기억공간 등의 절충이 필요하다.
10.5 우선 순위 체제 근착 우선 (last-come first serve) 형식 가장 최근에 인터럽트를 요청한 장치가 우선 선착 우선 (first-come first-serve) 형식 가장 먼저 인터럽트를 요청한 장치가 웅선
1) 인터럽트 우선 순위 부과 - 인터럽트 요청 가능한 장치들을 유사성에 따라 몇 개의 군으로 분류 - 각 장치가 요구하는 인터럽트의 중요성 혹은 응급성에 근거하여 우선 순위 부과
2) 인터럽트 우선 순위의 예 high - 정전 혹은 기계의 잘못으로 발생하는 오류 ▲ - 프로그램의 연산자나 주소 지정 방식의 잘못에 기인하는 인터럽트 ▼ - 조작원으로부터의 인터럽트 low - 입출력 장치로부터의 인터럽트
3) 주변 장치 속도가 느린 장치 (예 : 키보드)에는 낮은 등급 속도가 빠른 장치(예 : 디스크)에는 높은 등급 부과
4) 우선 순위 체제를 위해 필요한 기능 - 각 장치에 우선 순위를 부과하는 기능 - 인터럽트 요청 시 그 장치의 우선 순위 등급 판별 기능 - 인터럽트를 요청한 모든 장치들 중에서 우선 순위가 가장 높은 장치의 인터럽트를 취급하도록 하는 기능 인터럽트의 취급 중 그 보다 낮은 순위의 인터럽트를 방지하는 기능
5) 인터럽트 마스크 (interrupt mask) - ID(Interrupt Disable) 플래그 사용 - ID = 1 이면 그 장치는 인터럽트 요청 불가 - 높은 우선 순위의 장치가 인터럽트를 요청하면 그 보다 낮은 순위의 장치들 의 ID를 0으로 하여 인터럽트를 요청할 수 없게 한다.
- 우선 순위는 프로그램에서 결정하므로 융통성이 있다. 6) 소프트웨어에 의한 우선 순위 체제의 특징 - 우선 순위는 프로그램에서 결정하므로 융통성이 있다. - 우선 순위의 결정을 위한 하드웨어가 없으므로 경제적이다. - 인터럽트 반응 속도가 느리다.
- 인터럽트 요청 체인 (interrupt request chain) 7) 하드웨어에 의한 우선 순위 설정 방법 - 인터럽트 요청 체인 (interrupt request chain) 우선 순위 등급이 높은 장치가 인터럽트 요청을 할 때 등급이 낮은 장치로부터 요청을 할 수 없도록 한다. - 인터럽트 우선 순위 체인 (interrupt priority chain) 장치들이 인터럽트 요청 신호를 내보낸 후 장치 번호를 장치 번호 버스에 나타나도록 할 때 가장 우선 순위가 높은 장치만이 장치 번호 버스를 사용하도록 한다.
8) 인터럽트 요청 체인
- 인터럽트 요청 신호 발생시 폴링의 순서는 인터럽트 요청 체인에서 설정한 우선 순위대로 해야 하며 인터럽트 처리 중에는 낮은 우선순위의 장치들은 인터럽트 마스크를 통하여 인터럽트 요청을 하지 못하게 한다. - 인터럽트 우선 순위 체인 체제는 인터럽트 요청 체인보다 인터럽트 반응 속도가 빠른 잇점이 있지만 추가적인 하드웨어가 필요하므로 비용이 크다.
9) 다중 회선 체제에서의 우선 순위 C : 2bit register 현재 취급중인 인터럽트의 우선 순위 등급 우선 순위 등급이 가장 높은 것 Q : 현재 다른 것에 의해 인터럽트 처리가 지연되고 있는 프로그램의 우선 순위
인터럽트 요청에 대한 반응