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

명령어 사이클 (Instruction Cycle)

컴퓨터에서 명령어를 실행하기 위해 수행되는 과정입니다.
프로그램 속 각각의 명령어들은 명령어 사이클이 반복되며 실행됩니다.

인출 사이클 (Fetch Cycle)

메모리로부터 명령어를 읽어오는 단계입니다. 프로그램 카운터가 가리키는 주소에서 명령어를 메모리에서 읽어옵니다.

실행 사이클 (Execute Cycle)

명령어를 실행하는 단계입니다. 명령어가 수행되고, 필요한 경우 레지스터나 메모리를 조작합니다.
제어장치가 명령어 레지스터에 담긴 값을 해석하고, 제어 신호를 발생

간접 사이클 (Indirect Cycle)

명령어의 주소가 간접적으로 결정되는 경우에 수행되는 단계입니다. 메모리에 한 번 더 접근합니다.

인터럽트 (Interrupt)

컴퓨터가 현재 수행 중인 작업을 중단하고 다른 작업을 처리하는 데 사용되는 메커니즘입니다.

동기 인터럽트 (예외)

명령어 실행 도중에 발생하는 예외적인 상황을 의미합니다. 예를 들어 0으로 나누기나 잘못된 명령어 실행과 같은 경우가 있습니다.

폴트 (Fault)

폴트는 프로세서의 오작동이나 부적절한 명령어 수행으로 인해 발생하는 예외입니다. 메모리 접근 오류나 연산 오류와 같은 경우가 이에 해당합니다.
예외가 발생한 명령어부터 재실행합니다.

트랩 (Trap)

트랩은 의도적으로 프로그램 내부에서 발생시킨 예외입니다. 프로그램에서 특정한 명령어를 실행함으로써 발생하며, 주로 디버깅이나 예외 처리를 위해 사용됩니다.
예외가 발생한 명령어의 다음 명령어부터 실행합니다.

중단 (Abort)

중단은 프로세서 내부나 외부의 이유로 인해 프로세스의 실행을 중단시키는 예외입니다. 일반적으로 심각한 오류나 비정상적인 상황에서 발생합니다.

소프트웨어 인터럽트 (Software Interrupt)

소프트웨어 인터럽트는 프로그램 내부에서 명령어로 인해 발생하는 예외입니다. 주로 특정한 명령어를 실행함으로써 프로그램 내부에서 인터럽트를 요청하는 역할을 합니다. 이는 운영체제나 특정한 서비스를 호출하기 위해 사용될 수 있습니다.

비동기 인터럽트 (하드웨어 인터럽트)

외부 하드웨어 장치(입출력장치)로부터 발생하는 인터럽트입니다. 이는 프로세서의 현재 작업과는 관련이 없이 발생할 수 있습니다.

비동기 인터럽트 처리 순서

  1. 하드웨어가 CPU에 인터럽트 요청 신호를 보냅니다.
  2. CPU는 실행 사이클이 끝나고 명령어를 인출하기 전 항상 인터럽트 여부를 확인합니다.
  3. CPU는 인터럽트 요청을 확인하고 인터럽트 플래그를 통해 현재 인터럽트를 받아들일 수 있는지 여부를 확인합니다.
  4. 인터럽트를 받아들일 수 있다면 CPU는 지금까지의 작업을 백업합니다.
  5. CPU는 인터럽트 벡터를 참조하여 인터럽트 서비스 루틴을 실행합니다.
  6. 인터럽트 서비스 루틴 실행이 끝나면 백업해 둔 작업을 복구하여 재실행합니다.

인터럽트 요청 신호

CPU의 작업을 방해하는 인터럽트에 대한 요청

인터럽트 플래그

인터럽트 요청 신호를 받아들일지 무시할지 결정하는 비트

인터럽트 서비스 루틴

인터럽트를 처리하는 프로그램

인터럽트 벡터

인터럽트 서비스 루틴의 시작 주소를 포함하는 인터럽트 서비스 루틴의 식별 정보

댓글남기기