본문 바로가기
Computer Engineering

명령어 사이클과 인터럽트 (interrupt)

by KkingKkang 2024. 4. 2.

CPU는 메모리로부터 명령어나 데이터들을 갖고 와서 실행하고, 필요하다면 값을 저장할 수도 있다.

CPU는 메모리에 저장되어 있는 프로그램을 일정한 패턴(정해진 흐름)대로 실행한다.

간혹 그 정해진 흐름을 방해하는 신호가 CPU에게 올 수 있는데, 그 신호를 인터럽트라고 부른다.

 

명령어 사이클

  • 프로그램 속 명령어들은 일정한 주기가 반복되며 실행
  • 이 주기를 명령어 사이클이라고 함 

 

메모리에 저장된 명령어를 실행하려면 메모리에 있는 값을 CPU의 레지스터로 갖고 와야한다.(인출)

그리고 이런식으로 인출을 하는 주기를 인출사이클

갖고 온 메모리를 실행시키는 것을 실행사이클 

인출-실행-인출-실행 ...

 

그런데 CPU로 명령어를 갖고 와도 바로 실행이 불가능한 경우가 있음 (명령어 주소지정 방식)

몇번 더 인출을 해와야 하는 상황에서는 간접사이클이 추가될 수 있다.

 

인터럽트

CPU가 꼭 주목해야 할 때, CPU가 얼른 처리해야 할 다른 작업이 생겼을 때 발생

  • 동기 인터럽트(예외) : CPU가 예기치 못한 상황을 접했을 때 발생 (exception)
    • fault, trap, abort
  • 비동기 인터럽트(하드웨어 인터럽트) : 주로 입출력장치에 의해 발생
    • 세탁기 완료 알림, 전자레인지 조리 알림과 같은 역할
    • 입출력 작업 도중에도 효율적으로 명령어를 처리하기 위해 하드웨어 인터럽트 사용
    • 입출력장치는 CPU에 비해 느리다 
    • 인터럽트가 없다면 CPU는 프린트 완료 여부를 주기적으로 확인해야 안다

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

 

 

 

 

 

반응형

댓글