북 스터디/혼자 공부하는 컴퓨터구조 + 운영체제

명령어 사이클과 인터럽트

EnoughTT 2023. 10. 18. 16:30

명령어 사이클과 인터럽트

 

명령어 사이클

프로그램 속 각각의 명령어들의 일정한 주기

 

인출 사이클

메모리에 있는 명령어를 CPU로 가지고 오는 단계

 

실행 사이클

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

 

 

 

모든 명령어가 간단히 실행되는건 아님

명령어를 인출하여 CPU로 가져왔다 하더라도 곧바로 실행할 수 없는 경우도 있기 때문임

간접 주소 지정 방식은 오퍼랜드 필드에 유효 주소의 주소를 명시함, 명령어를 실행하기 위해서 메모리 접근을 한 번 더 해야 하기 때문에 바로 실행 사이클에 돌입할 수 없음

 

인터럽트

 CPU의 작업을 방해하는 신호

  • 동기 인터럽트 (예외): CPU에 의해 발생하는 인터럽트
  • 비동기 인터럽트 (하드웨어 인터럽트): 입출력장치에 의해 발생하는 인터럽트

 

하드웨어 인터럽트

알림과 같은 인터럽트

 

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

  1. 입출력장치는 CPU에 인터럽트 요청 신호를 보냄
  2. CPU는 실행 사이클이 끝나고 명령어를 인출하기 전 항상 인터럽트 여부 확인
  3. CPU는 인터럽트 요청을 확인하고 인터럽트 플래그를 통해 현재 인터럽트를 받아들일 수 있는지 확인
  4. 인터럽트를 받아들일 수 있다면 CPU는 지금까지의 작업을 백업
  5. CPU는 인터럽트 백터를 찹조하여 인터럽트 서비스 루틴을 실행
  6. 인터럽트 서비스 루틴 실행이 끝나면 백업해 둔 작업을 복구하여 실행 재개

 

인터럽트 요청 신호

인터럽트하기 전 "지금 끼어들어도 되나요?" 라고 CPU에게 물어봐야함

 

인터럽트 플래그

CPU가 인터럽트 요청을 수용하기 위해서 활성화되어 있어야함

CPU가 중요한 작업을 처리해야 하거나 어떤 방해도 받지 않아야 할 때 인터럽트 플래그는 불가능으로 설정됨

하지만, 불가능이라도 가장 먼저 처리해야 하는 인터럽트 (정전, 하드웨어 고장)가 있음

 

인터럽트 서비스 루팅 (인터럽트 핸들러)

인터럽트를 처리하기 위한 프로그램

어떤 인터럽트가 발생했을 때 해당 인터럽트를 어떻게 처리하고 작동해야 할지에 대한 정보로 이루어진 프로그램

①: 정상적으로 작업 진행

②: 인터럽트 발생

③: 인터럽트 서비스 루틴으로 점프

④: 인터럽트 서비스 루틴 실행

⑤: 기존 작업으로 점프

⑥: 기존 작업 수행 재개

 

 

 

 

 

'북 스터디 > 혼자 공부하는 컴퓨터구조 + 운영체제' 카테고리의 다른 글

명령어 병렬 처리 기법  (0) 2023.10.22
빠른 CPU를 위한 설계 기법  (0) 2023.10.19
레지스터  (0) 2023.10.17
ALU와 제어장치  (0) 2023.10.16
명령어의 구조  (0) 2023.10.16