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

byeol·2023년 3월 14일
0

CPU가 하나의 명령어를 실행하는 흐름인 명령어 사이클과 그 흐름을 방해하는 인터럽트에 대해 배운다.

Ready,Set,Go 🚗🚗🚗

명령어 사이클

프로그램이란 수많은 명령어들로 이루어져 있다.
프로그램을 실행한다는 것은 이 명령어들을 실행한다는 것을 의미한다.
CPU는 이 명령어들을 하나씩 실행하는데 실행할 때 일정한 주기가 반복된다.

간단하게 인출실행을 반복한다.
CPU의 제어신호와 레지스터에 저장된 명령어의 주소를 각각 제어버스와 주소버스에 보내면 메모리는 저장된 데이터를 데이터 버스에 보낸다. (여기까지 인출 사이클)
그 값은 메모리 버퍼 레지스터에 담기고 이를 제어신호가 해석하여 ALU를 실행시킨다(여기까지 실행 사이클)

하지만 이렇게 간단하지만은 않다.

간접 주소 지정 방식을 기억해보면 메모리에 2번 접근한다.
왜냐하면 오퍼랜드에 유효주소의 주소가 저장되고 메모리에 유효주소와 데이터가 저장되어 있기 때문이다.

이 경우 인출사이클, 간접사이클(인출사이클 한번더), 실행사이클의 과정이 추가된다는 것을 알 수 있다.

하지만 한가지 과정이 추가될 수 있다.
바로 인터럽트가 발생했을 때!

인터럽트

인터럽트란
CPU가 수행 중인 작업이 방해를 받아 중단될 수 있는데, CPU의 작업을 방해하는 신호가 인터럽트이다.

인터럽트는 크게 동기 인터럽트와 비동기 인터럽트가 있다.

동기 인터럽트 = 예외(Exception)

CPU 내부에서 발생하는 인터럽트
실행하는 프로그래밍상의 오류

예외의 종류

예외가 발생하면 CPU는 하던 일을 중단하고 해당 예외를 처리한다.

종류 : 폴트, 트랩, 중단, 소프르웨어 인터럽트

CPU가 예외를 처리하고 돌아왔을 때 예외가 발생한 명령어부터 실행하느냐, 예외가 발생한 명령어의 다음 명령어부터 실행하느냐에 따라 폴트와 트랩으로 나뉜다.

트랩의 대표적인 예시는 디버깅이다.

중단은 CPU가 실행중인 프로그램을 강제로 중단시킬 수 밖에 없는 심각한 오류를 발견했을 때 발생하는 예외이다.

소프프트웨어 인터럽트는 시스템 호출이 발생했을 때 나타난다.

비동기 인터럽트 = 하드웨어 인터럽트

입출력장치에 의해 발생하는 인터럽트 = 알람 역할
ex) 입출력장치 : 프린트, 마우스, 키보드 등 외부연결장치

CPU가 프린트를 실행시킨다.
-> 언제 완료될지 모르니까 계속 확인한다.

CPU가 프린트를 실행시킨다.
-> 하드웨어 인터럽트(프린트 완료되었다는 알람)가 오기 전까지 다른 명령어를 실행시키고 있는다.

둘의 차이를 보면 당연히 하드웨어 인터럽트가 올 때까지 다른 명령어를 실행시키고 있는 것이 CPU를 효율적으로 사용하고 있는 것이다.

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

  1. 입출력장치는 "끼어들어도 되나요?" 인터럽트 요청 신호를 CPU에 보낸다.
  2. CPU는 플래그 레지스터의 인터럽트 플래그를 살펴본다. 만약에 인터럽트 플래그가 "가능"으로 설정되어 있으면 현재 실행중인 작업을 중단하고 인터럽트 신호를 받을 수 있다. 그러나 "불가능"의 경우 인터럽트 신호를 무시한다.
    단, "불가능"이어도 처리해야 하는 막을 수 없는 인터럽트가 존재한다. 바로 정전이나 하드웨어 고장과 같은 우선순위가 높은 인터럽트이다.
  3. 인터럽트 신호를 받아들이기로 결정했다면 지금까지의 작업을 스택에 백업한다. 그래야 입출력장치가 원하는 작업을 수행하고 돌아왔을 때 중단되었던 작업을 다시 할 수 있다.
  4. CPU는 인터럽트 백터를 참조해서 인터럽트 서비스 루틴을 실행한다. 인터럽트 서비스 루틴이란 인터럽트가 발생했을 때 해당 입출력장치가 어떻게 처리하기를 바라는지에 대한 정보로 이루어진 프로그램이다. 이 프로그램은 여러개의 서비스 루틴으로 이루어져 있으며 메모리에 저장되어져 있다. 어떤 입출력 장치가 어느 인터럽트 서비스 루틴을 실행해야 할까에 대한 식별 정보를 인터럽트 백터라고 한다. 이 인터럽트 백터는 그 입출력장치에 대한 서비스 루틴의 끝과 시작은 여기입니다의 정보를 가지고 있다.
  5. 인터럽트 서비스 루틴 실행이 끝나면 아까 스택에 백업해 둔 작업을 복구하여 실행을 재개한다.
profile
꾸준하게 Ready, Set, Go!

0개의 댓글

관련 채용 정보