[ 04-3 명령어 사이클과 인터럽트 ]
[ 1 ] 명령어 사이클
1. 설명
주기. 명령어가 실행되는 일정한 주기
명령어들을 처리하는 정형화된 과정이 반복되는 주기
(또는 정형화된 명령어 처리과정의 반복흐름의 주기)
2. 명령어 사이클의 세부주기
- 인출 사이클
- 메모리부터 명령어를 CPU가 인출하는 단계
- 실행 사이클
- 가져온 명령어를 실행하는 단계
- 간접 사이클ex) 간접 주소 지정 방식 처럼. 메모리 접근이 더 필요할 때
- 메모리 접근이 더 필요한 경우, 추가적 메모리 접근 단계
- 인터럽트 사이클
[ 2 ] 인터럽트
설명
명령어 사이클이 끊어지는 것. 또는 그것을 발생시키는 신호
즉 CPU가 수행 중인 작업이 잠시 중단되는 것. 또는 중단을 발생시키는 신호
더 중요한 작업이 있으니 이것을 먼저 해달라는 신호
인터럽트 종류
인터럽트를 구분하는 정해진 기준이 없이 CPU마다 다르다.
교재는 인텔 CPU를 기준으로 한다.
- 동기 입터럽트 (synchronous interrupts) : (예외)
- “CPU”에 의해 발생하는 인터럽트
- 예외적인 상황에 마주쳤을 때 발생시킨다.
- ex) 포로그래밍상의 오류
- “예외(exception)” 라고도 부른다.
- 비동기 인터럽트 (asynchronous interrupts) : (하드웨어 인터럽트)
- 주로 “입출력장치”에 의해 발생하는 인터럽트
- 일반적으로 인터럽트라고 하면, 이 비동기 인터럽트를 의미
- “하드웨어 인터럽트”라고도 불림
- 1) 막을 수 있는 인터럽트
- 2) 막을 수 없는 인터럽트 (ex: 하드웨어 고장 인터럽트)
- 추가내용) 예외의 종류
- 1) 폴트
- 2) 트랩
- 3) 중단
- 4) 소프트웨어 인터럽트
[ 3 ] 하드웨어 인터럽트
{1} 사용목적
입출력장치가 작업을 하는 시간동안, CPU가 다른 작업을 할 수 있도록 하기 위해서.
CPU가 입출력장치를 기다리는게 아니라, 입출력장치가 CPU로 “알림”을 보낼 수 있도록 한다.
따라서 일종의 “알림” 이다.
{2} 관련 개념들
- CPU가 인터럽트를 처리한다는 뜻
- : 해당하는 인터럽트 서비스 루틴을 실행하고, 본래 수행작업으로 되돌아온다.
- 인터럽트 요청 신호
- 인터럽트 하기 전에, CPU에게 인터럽트 가능한지 요청하는 과정
- : CPU의 작업을 방해하는 인터럽트에 대한 요청
- 인터럽트 플래그
- 하드웨어 인터럽트를 받아들일지, 무시할지, 현재의 상태에 대한 플래그
- CPU가 중요한 작업을 처리하거나, 방해받지 않아야할 때가 있기 때문에.
- 인터럽트 플래그가 가능 상태로 되어있어야한다.
- 단, 하드웨어 고장 인터럽트는 불가능 플래그 상태도 이길 수 있다고 한다.
- : 인터럽트 요청 신호를 받아들일지 여부를 결정하는 비트
- 인터럽트 벡터
- 인터럽트 서비스 루틴의 메모리 상 시작 주소를 알 수 있다.
- 인터럽트 서비스 루틴도 프로그램이니까, 프로그램 카운터 등의 레지스터를 사용하여 작동한다. → 따라서 원래 하던 작업의 레지스터 정보들은 메모리상에 백업시켜놓아야한다.
- : 인터럽트 서비스 루틴의 식별정보, 루틴의 시작 주소를 포함한다.
- 인터럽트 서비스 루틴
- 인터럽트를 처리하기 위한 프로그램
- 인터럽트 핸들러 라고도 불림
- 입출력장치마다 루틴이 다르다.
- : 인터럽트를 처리하는 프로그램
{3} 하드웨어 인터럽트 처리 순서
- 인터럽트 요청 신호
- 입출력장치 → CPU로 인터럽트 요청 신호
- CPU의 인터럽트 여부 확인
- : CPU의 주기적 인터럽트 여부 확인 → 실행사이클이 끝나고 명령어 인출 전에, CPU는 항상 인터럽트 여부를 확인한다.
- 인터럽트 플래그 확인
- : 현재 인터럽트를 받아들일 수 있는지 여부 확인
- 작업 백업
- : 인터럽트를 받아들일 수 있다면, CPU는 지금까지의 작업을 백업한다.
- 인터럽트 벡터를 확인하여, 인터럽트 서비스 루틴 실행
- 인터럽트 서비스 루틴 관련 작업 실행
- 백업 작업 재개
- : 인터럽트 서비스 루틴 관련 실행이 끝나면, 원래 하던 작업을 재개한다.
'정리 { CS: 컴퓨터 과학 } > 컴퓨터구조' 카테고리의 다른 글
| (컴퓨터구조)❰05. CPU 성능향상 기법❱ _[05-2. 명령어 병렬 처리 기법] (0) | 2023.04.23 |
|---|---|
| 0405(1)_ ❰❰ 05. CPU 성능 향상 기법 ❱❱_ [ 05-1. CPU 성능 관련 개념용어 ] (0) | 2023.04.05 |
| 0331(1)_ ❰❰ 04. CPU의 작동원리 ❱❱ _[ 04-2. 레지스터 ] (0) | 2023.03.31 |
| 0330 -(1)_ ❰❰ 04. CPU의 작동원리 ❱❱ _[ 04-1. ALU와 제어장치 ] (0) | 2023.03.30 |
| 0328 -(1)_ ❰❰ 03. 명령어 ❱❱ (0) | 2023.03.28 |
댓글