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

2023. 11. 1. 18:59·Computer Science/컴퓨터 구조

T1) 명령어 사이클

  • 프로그램 속 명령어들은 일정한 주기가 반복되며 실행되는데 이 주기를 명령어 사이클이라고 한다.
  • 인출 사이클 : 실행할 내용을 가장 먼저 CPU로 갖고와야한다
  • 실행 사이클 : 갖고 온 내용을 바탕으로 실행한다.
  • 간접 사이클 : 간접 주소 지정 방식 같이 메모리 접근이 더 필요한 경우 발생하는 사이클이다.

(좌) 인출 사이클 , (우) 실행 사이클

 

 

※ 어떤 명령어는 인출과 실행 사이클 만으로 실행되고, 어떤 명령어는 인출, 간접, 실행 사이클을 거쳐 실행된다.

명령어 사이클

 

T2 ) 인터럽트

인터럽트 발생 예시

  • 인터럽트(interrupt) ; 방해하다, 중단시키다.
  • CPU가 정해진 흐름대로 프로그램을 처리하고 있는 과정 중 흐름을 끊어버리는 것이 인터럽트이다.
  • CPU가 꼭 주목해야할 때 혹은 CPU가 얼른 처리해야할 다른 작업이 생겼을 때 발생한다.

 

T2_sub1) 인터럽트의 종류

인터럽트 동기 인터럽트(예외) 폴트
트랩
중단
소프트웨어 인터럽트
비동기 인터럽트
(하드웨어 인터럽트)
막을 수 있는 인터럽트
막을 수 없는 인터럽트
  • 동기 인터럽트(예외) : CPU가 예기치 못한 상황을 접했을 때 발생한다.
  • 비동기 인터럽트(하드웨어 인터럽트) :
    • 주로 입 · 출력장치에 의해 발생한다. (ex 세탁기 완료알림, 전자레인지 조리 알림)과 같은 역할이다.
    • 입·출력 작업 도중에도 효율적으로 명령어를 처리하기 위해 하드웨어 인터럽트를 사용한다. ( 인터럽트가 없다면 CPU는 프린트 완료 여부를 확인하기 위해 주기적으로 확인해야하기때문이다. )
    • 결론적으로 입·출력장치는 CPU에 비해 느리기때문에 인터럽트가 있다면 입출력 작업 동안 CPU는 다른 일을 할 수 있다.
  • 하드웨어 인터럽트(비동기 인터럽트)의 처리 순서
    1. 입출력 장치는 CPU에 *인터럽트 요청 신호를 보낸다.
    2. CPU는 실행 사이클이 끝나고 명령어를 인출하기 전 항상 인터럽트 여부를 확인한다.
    3. CPU는 인터럽트 요청을 확인하고 인터럽트 플래그를 통해 현재 인터럽트를 받아들일 수 있는 지 여부를 확인한다.
    4. 인터럽트를 받아들일 수 있다면 CPU는 지금까지의 작업을 백업한다.
    5. CPU는 인터럽트 백터를 참조하여 인터럽트 서비스 루틴을 실행한다.
    6. 인터럽트 서비스 루틴이 실행이 끝나면 4.에서 백업해둔 작업을 복구하여 실행을 재개한다.
  • 인터럽트 요청 신호 : 인터럽트는 CPU의 정상적인 실행 사이클을 멈추는 것이기 떄문에 요청신호를 보낸다.

인터럽트 요청 신호

  • CPU가 인터럽트 요청을 받아들이려면?
    • CPU가 실행 사이클이 끝난 후 인터럽트 플래그를 확인하여 수용여부를 확인한다.
    • 모든 인터럽트를 인터럽트 플래그로 막을 수는 없다. (ex 정전, 하드웨어 고장)

플래그 레지스터 구성

  • 인터럽트 서비스 루틴이란?
    • 인터럽트가 발생했을 때 해당 인터럽트를 어떻게 처리하기위한 프로그램
      • ex) 키보드가 or 마우스가 인터럽트 요청을 보내면 이렇게 행동해야한다.
    • CPU가 인터럽트를 받아들이기로 했다면 인터럽트 서비스 루틴을 실행한다.
      • 인터럽트 서비스루틴도 프로그램이기에 메모리에 저장되어있다.
      • 정상적으로 메모리에 있는 프로그램을 실행하다가 인터럽트가 발생하면 정해진 인터럽트 서비스 루틴을 수행하고 기존에 수행하던 프로그램 지점으로 되돌아가서 수행을 재개한다.

인터럽트 유무에 따른 수행과정

  • 인터럽트 벡터
    • 각각의 인터럽트를 구현하기 위한 정보(인터럽트를 실행하기 위한 시작 주소를 갖고있음)

 

결론 :

  • " CPU가 인터럽트를 처리한다. " → ;인터럽트 서비스 루틴을 실행하고, 본래 수행하던 작업으로 다시 되돌아온다.' 
  • CPU가 인터럽트 서비스 루틴을 실행하려면 CPU내부의 레지스터를 사용해야하는데 이미 실행 중이었던 프로그램에 대한 정보가 레지스터에 있었을 것이기 때문에 이 정보또한 보존되어야하기때문에 이 정보들은 메모리 스택영역에 저장된다.

인터럽트 유무에 따른 명령어 사이클

 

 

 

 

 

출처: 인프런-개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제
https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard
저작자표시

'Computer Science > 컴퓨터 구조' 카테고리의 다른 글

[CS : 컴퓨터 구조] CPU의 작동 원리 : 레지스터  (1) 2023.10.29
[CS : 컴퓨터 구조] CPU의 작동 원리 : ALU와 제어장치  (0) 2023.10.28
[CS : 컴퓨터 구조] C 언어의 컴파일 과정  (1) 2023.10.25
[CS : 컴퓨터 구조] 03-2 명령어의 구조  (1) 2023.10.24
[CS : 컴퓨터 구조] 명령어 : 03-1 소스코드와 명령어  (0) 2023.10.23
'Computer Science/컴퓨터 구조' 카테고리의 다른 글
  • [CS : 컴퓨터 구조] CPU의 작동 원리 : 레지스터
  • [CS : 컴퓨터 구조] CPU의 작동 원리 : ALU와 제어장치
  • [CS : 컴퓨터 구조] C 언어의 컴파일 과정
  • [CS : 컴퓨터 구조] 03-2 명령어의 구조
JinSeong
JinSeong
재미없으면 안한다.
  • JinSeong
    As you think, so shall you become.
    JinSeong
  • 전체
    오늘
    어제
    • 분류 전체보기 (96)
      • 📆 Today I Learned(개발언어학습) (76)
        • JAVA (20)
        • HTML (1)
        • JSP (46)
        • SPRING (2)
        • ORACLE(DB) (6)
        • CSS (1)
      • 📆 Today I Learned(코딩테스트) (0)
        • JAVA (0)
      • Computer Science (9)
        • 컴퓨터 구조 (9)
        • 운영체제 (0)
        • 자료구조 & 알고리즘 (0)
        • 데이터베이스 (0)
      • 창고 (11)
        • 기초지식 (7)
        • 파일창고 (0)
        • 기술지식창고 (0)
        • 버그버그 👀 (4)
      • Tools🔧 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    java버전 표현
    jdk구분
    SQL
    spring 스케줄러
    substring()
    java 스케줄러
    이클립스 오버라이딩 메소드 자동 생성 기능
    instanceof 연산자
    DB
    레지스터
    제어장치
    환경변수 차이
    명령어
    java 객체타입확인
    java json리턴 에러
    Oracle
    JAVA문자열자르기
    no converter found for
    CPU
    ALU
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
JinSeong
[CS : 컴퓨터 구조] 명령어 사이클과 인터럽트
상단으로

티스토리툴바