[컴퓨터 구조] 명령어 사이클과 인터럽트
2023. 3. 16. 01:11ㆍ기술 창고/CS 지식
728x90
반응형
SMALL
CPU는 정해진 주기대로 명령을 수행하는데 그것을 명령어 사이클이라고 한다.
이러한 명령어 사이클의 흐름을 끊는 행위를 인터럽트라고 한다.
명령어 사이클
- 정해진 주기대로 명령을 수행
- 인출 사이클 : 가장 먼저 CPU로 갖고오는 사이클 주기
- 실행 사이클 : 인출 사이클을 통해 가지고온 명령을 실행하는 사이클
- 간접 사이클 : 인출 한 다음에 메모리 접근이 더 필요한 경우에 거치는 간접 사이클
- 예) 간접 주소 지정 방식, 레지스터 간접 주소 지정 방식 등
인터럽트
- 정해진 흐름대로 수행되는 사이클의 흐름을 끊는 행위
- 동기 인터럽트 (Exception, 예외)
- CPU가 예기치 못한 상황을 맞닥뜨렸을 경우에 발생
- 비동기 인터럽트 (하드웨어 인터럽트)
- 주로 입출력장치에 의해 발생되는 알림과 같은 역할을 수행
- 예) 세탁기 완료 알림, 전자레인지 조리 알림, 마우스 클릭 등
- 입출력 작업 도중에도 효율적으로 명령어를 처리하기 위해 하드웨어 인터럽트를 사용
- 입출력장치는 비교적 CPU보다 느리기 때문에 비동기 인터럽트가 없을 경우에 CPU가 입출력장치에 작업 완료 확인을 계속해서 확인을 해야한다.
- 처리 순서
- 입출력장치는 CPU에 인터럽트 요청 신호를 보낸다.
- CPU는 실행 사이클이 끝나고 명령어를 인출하기 전 항상 인터럽트 여부를 확인한다.
- CPU는 인터럽트 요청을 확인하고 인터럽트 플래그를 통해 현재 인터럽트를 받아들일 수 있는지 여부 확인한다.
- 인터럽트를 받아들일 수 있다면 CPU는 지금까지의 작업을 백업한다.
(레지스터에 저장된 명령어 주소나 데이터들을 스택에 백업해 놓는다.) - CPU는 인터럽트 벡터를 참조하여 인터럽트 서비스 루틴을 실행한다.
- 인터럽트 서비스 루틴 실행이 끝나면 4번에서 백업해 둔 작업을 복구하여 실행을 재개한다.
# 인터럽트 요청 신호
인터럽트 요청을 보낸다.
# 인터럽트 플래그
인터럽트 요청 신호를 받아들일 수 있는지 없는지 판단하는 플래그
모든 인터럽트를 인터럽트 플래그에서 막을 수는 없다.
예기치 못한 상황이 발생했을 경우 막지 못할 수도 있다.
# 인터럽트 서비스 루틴
- 인터럽트가 발생했을 때 해당 인터럽트를 어떻게 처리하기 위한 프로그램
- CPU와 인터럽트 플래그에서 받아들이기로 했다면 인터럽트 서비스 루틴을 실행
- 인터럽트 서비스 루틴도 프로그램이기 때문에 메모리에 저장한다.
# 인터럽트 벡터
- 각각의 인터럽트를 구분하기 위한 정보
!! CPU가 인터럽트를 처리한다 라는 뜻은?
- 인터럽트 서비스 루틴을 실행하고, 본래 수행하던 작업으로 다시 되돌아온다 라는 뜻
728x90
반응형
LIST
'기술 창고 > CS 지식' 카테고리의 다른 글
[컴퓨터 구조] 명령어 병렬 처리 기법 (0) | 2023.03.17 |
---|---|
[컴퓨터 구조] 빠른 CPU를 위한 설계 기법 (0) | 2023.03.16 |
[컴퓨터 구조] 레지스터 (CPU) (0) | 2023.03.13 |
[컴퓨터 구조] ALU와 제어장치 (CPU) (0) | 2023.03.13 |
[컴퓨터 구조] 언어의 컴파일 과정 (0) | 2023.03.10 |