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

2023. 3. 16. 01:11기술 창고/CS 지식

728x90
SMALL

CPU는 정해진 주기대로 명령을 수행하는데 그것을 명령어 사이클이라고 한다.

이러한 명령어 사이클의 흐름을 끊는 행위를 인터럽트라고 한다.

 

명령어 사이클

  • 정해진 주기대로 명령을 수행
  • 인출 사이클 : 가장 먼저 CPU로 갖고오는 사이클 주기
  • 실행 사이클 : 인출 사이클을 통해 가지고온 명령을 실행하는 사이클 
  • 간접 사이클 : 인출 한 다음에 메모리 접근이 더 필요한 경우에 거치는 간접 사이클
    • 예) 간접 주소 지정 방식, 레지스터 간접 주소 지정 방식 등

 

인터럽트

  • 정해진 흐름대로 수행되는 사이클의 흐름을 끊는 행위
  • 동기 인터럽트 (Exception, 예외)
    • CPU가 예기치 못한 상황을 맞닥뜨렸을 경우에 발생

 

  • 비동기 인터럽트 (하드웨어 인터럽트)
    • 주로 입출력장치에 의해 발생되는 알림과 같은 역할을 수행
    • 예) 세탁기 완료 알림, 전자레인지 조리 알림, 마우스 클릭 등
    • 입출력 작업 도중에도 효율적으로 명령어를 처리하기 위해 하드웨어 인터럽트를 사용
    • 입출력장치는 비교적 CPU보다 느리기 때문에 비동기 인터럽트가 없을 경우에 CPU가 입출력장치에 작업 완료 확인을 계속해서 확인을 해야한다.
    • 처리 순서
      1. 입출력장치는 CPU에 인터럽트 요청 신호를 보낸다.
      2. CPU는 실행 사이클이 끝나고 명령어를 인출하기 전 항상 인터럽트 여부를 확인한다.
      3. CPU는 인터럽트 요청을 확인하고 인터럽트 플래그를 통해 현재 인터럽트를 받아들일 수 있는지 여부 확인한다.
      4. 인터럽트를 받아들일 수 있다면 CPU는 지금까지의 작업을 백업한다.
        (레지스터에 저장된 명령어 주소나 데이터들을 스택에 백업해 놓는다.)
      5. CPU는 인터럽트 벡터를 참조하여 인터럽트 서비스 루틴을 실행한다.
      6. 인터럽트 서비스 루틴 실행이 끝나면 4번에서 백업해 둔 작업을 복구하여 실행을 재개한다.
     

 

 

# 인터럽트 요청 신호 

인터럽트 요청을 보낸다.

 

 

# 인터럽트 플래그

인터럽트 요청 신호를 받아들일 수 있는지 없는지 판단하는 플래그

모든 인터럽트를 인터럽트 플래그에서 막을 수는 없다.

예기치 못한 상황이 발생했을 경우 막지 못할 수도 있다.

 

# 인터럽트 서비스 루틴

  • 인터럽트가 발생했을 때 해당 인터럽트를 어떻게 처리하기 위한 프로그램
  • CPU와 인터럽트 플래그에서 받아들이기로 했다면 인터럽트 서비스 루틴을 실행
  • 인터럽트 서비스 루틴도 프로그램이기 때문에 메모리에 저장한다.

 

 

# 인터럽트 벡터

  • 각각의 인터럽트를 구분하기 위한 정보

 

 

!! CPU가 인터럽트를 처리한다 라는 뜻은?

- 인터럽트 서비스 루틴을 실행하고, 본래 수행하던 작업으로 다시 되돌아온다 라는 뜻

 

 

728x90
반응형
LIST