본문 바로가기
CS

[혼공컴운] 명령어 사이클과 인터럽트

by 데브겸 2023. 3. 31.

명령어 사이클: CPU가 하나의 명령어를 처리하는 하나의 정형화된 흐름

  • 인출 사이클(Fetch Cycle): 메모리에 있는 명령어를 CPU로 불러오는 단계
  • 실행 사이클(Execute Cycle): CPU로 가져온 명령어를 실행하는 단계
  • 간접 사이클(Indirect Cycle): 
    • 간접 주소 지정 방식 등으로 인해 메모리에서 명령어를 가져왔음에도 불구하고 한 번 더 메모리 접근이 필요한 상황
    • 인출 사이클과 실행 사이클 사이에서 발생
  • 인터럽트 사이클(Interrupt Cycle):
    • 실행 사이클이 끝난 후 발생하는 사이클
    • 인터럽트 신호가 들어왔는지 아닌지 판단하고, 발생시 인터럽트 처리

 

인터럽트: CPU의 정상적인 작업을 방해하는 신호

  • 인터럽트의 종류
    • 동기 인터럽트(예외): CPU에 의해 발생하는 인터럽트. 어떤 명령어를 실행하고 있을 때 오류가 발생하는 경우 등
      • 폴트(fault): 예외를 처리하고 예외가 발생한 명령어부터 실행 재개하는 예외
      • 트랩(trap): 예외를 처리하고 예외가 발생한 명령어 다음 명령어부터 실행 재개
      • 중단(abort): 강제로 프로그램을 중단시켜야 하는 심각한 오류를 발견했을 때 발생시킴
      • 소프트웨어 인터럽트(software interrupt): 시스템 호출 발생시 나타남
    • 비동기 인터럽트(하드웨어 인터럽트)
      • 입출력장치에 의한 인터럽트
      • 입출력장치가 어떤 입력을 받았을 때 이를 처리하기 위한 CPU 입력 알림을 보냄
  • 비동기 인터럽트의 실행 순서
    • 입출력 장치세어 CPU에 인터럽트 요청 신호 보냄
    • CPU는 실행 사이클 이후 인출 사이클로 돌입하기 전 인터럽트가 있는지 확인
    • 인터럽트가 있다면 CPU는 인터럽트 플래그를 통해 현재 인터럽트를 처리해줄 수 있는 상태인지 확인
      • 반드시 처리해주어야 하는 인터럽트(non maskable interrupt)의 경우 막을 수 없음
    • 처리할 수 있는 상태라면, CPU는 지금까지 작업 백업
      • 작업 백업 위치는 메모리의 스택 영역
    • CPU는 인터럽트 벡터를 참조하여 인터럽트 서비스 루틴 실행
      • 인터럽트 서비스 루틴: 컴퓨터의 메모리에는 어떤 인터럽트에는 어떤 방식으로 대응해야 한다는 본인만의 루틴이 있음
      • 인터럽트 벡터: 적합한 인터럽트 서비스 루틴이 어디있는지 위치를 찾기 위한 정보
        • 하드웨어 인터럽트를 요청한 대상에게서 CPU는 데이터 버스를 통해 인터럽트 벡터를 전달받음
    • 인터럽트 서비스 루틴 완료 후 백업 데이터 복구 후 다시 실행