CS/컴퓨터 구조

[컴퓨터 구조] 4-3 명령어 사이클과 인터럽트

서니션 2024. 6. 12. 10:33
728x90
반응형
이 글을 혼자 공부하는 컴퓨터구조 + 운영체제 (한빛미디어) 책을 읽고 혼자 공부한 내용입니다.
잘못 이해한 부분이 있을 수 있고, 문제가 있는 부분 댓글로 알려주시면 수정하겠습니다.

 

명령어 사이클

프로그램 속 각각의 명령어들이 일정한 주기가 반복되며 실행

메모리에 있는 명령어를 CPU로 가지고 오는 단계를 인출 사이클

CPU로 가져온 명령어를 실행하는 단계를 실행 사이클

 

 

모든 명령어가 인출<->실행 으로 간단히 실행되는 건 아님.

메모리 접근을 한 번 더 해야 하는 경우가 있는데, 이 단계를 간접 사이클이라고 함


인터럽트

CPU의 작업을 방해하는 신호

 

 

동기 인터럽트 : CPU에 의해 발생하는 인터럽트, 프로그래밍상의 오류와 같은 예외적인 상황에 발생

그래서 예외(exception)이라고 부름

 

비동기 인터럽트 : 입출력장치에 의해 발생하는 인터럽트

세탁기 완료 알림, 전자레인지 조리 완료 같이 '알림' 역할을 함. 하드웨어 인터럽트라고 부름.

 

하드웨어 인터럽트

입출력 작업 도중에도 효율적으로 명령어를 처리하기 위해 이런 알림과 같은 하드웨어 인터럽트 사용

입출력 장치는 CPU보다 속도가 현저히 느리기 때문에 CPU는 입출력 작업의 결과를 바로 받아볼 수 없음

하드웨어 인터럽트를 사용하지 않는다면, 주기적으로 확인해야 하기 때문에 -> CPU 사이클 낭비

 

하드웨어 인터럽트 처리순서

1. 입출력장치는 CPU에 인터럽트 요청 신호를 보냄

2. CPU는 실행 사이클이 끝나고 명령어를 인출하기 전 항상 인터럽트 여부를 확인

3. CPU는 인터럽트 요청을 확인하고 인터럽트 플래그를 통해 현재 인터럽트를 받아들일 수 있는지 여부를 확인

4. 인터럽트를 받아들일 수 있다면 CPU는 지금까지의 작업을 백업

5. CPU는 인터럽트 벡터를 참조하여 인터럽트 서비스 루틴을 실행

6. 인터럽트 서비스 루틴 실행이 끝나면 4에서 백업해 둔 작업을 복구하여 실행을 재개

 

인터럽트 요청 신호 -> 지금 끼어들어도 되나요?하고 CPU에 물어보는 것

인터럽트 플래그 -> 인터럽트를 받아들일지, 무시할지를 결정하는 플래그 (정전 및 하드웨어 고장으로 인한 인터럽트는 무시할 수 없음)

인터럽트 서비스 루틴(인터럽트 핸들러) -> 인터럽트를 처리하기 위한 프로그램

CPU가 인터럽트를 처리한다 == 인터럽트 서비스 루틴을 실행하고, 본래 수행하던 작업으로 다시 되돌아온다

 

인터럽트 벡터 -> 인터럽트 서비스 루틴의 시작 주소를 포함하는 인터럽트 서비스 루틴의 식별 정보

 

 

 

728x90
반응형