CPU가 하나의 명령어를 처리하는 과정에는 정해진 흐름이 있고 CPU는 그 흐름을 반복하며 명령어들을 처리해 갑니다. 명령어 사이클은 각각의 명령어들이 일정하게 반복하면서 실행하는 주기를 의미합니다.
즉, 프로그램 속 각각의 명령어들은 인출/간접/실행/인터럽트 사이클이 반복되며 실행됩니다.
명령어 인출 사이클이란 명령어를 CPU로 가지고 오는 단계를 의미합니다.
간접 사이클이란 명령어의 오퍼랜드(operand)가 간접 주소 지정방식인 경우에 유효주소를 계산하기 위해서 메모리에 접근하는 단계를 의미합니다.
간접 주소 지정방식이란 유효주소의 주소를 오퍼랜드 필드에 명시하는 방식
실행 사이클은 CPU로 가져온 명령어를 실행하는 단계를 의미 합니다. 제어장치가 명령어 레지스터에 담긴 값을 해독(decode)하고 그 결과에 따라 연산을 수행하기 위해 제어 신호를 발생시킵니다.
실행 사이클에서 수행되는 마이크로-연산들은 명령어의 연산코드(operation code)에 따라 결정 됩니다.
IR(명령어 레지스터에)에 저장되어 있는 데이터를 CPU 내부 레지스터인 AC(ALU 내부 레지스터)로 이동하는 명령어
AC 레지스터의 내용을 기억장치에 저장하는 명령어
기억장치에 저장된 데이터를 AC의 내용과 더하고, 그 결과를 다시 AC에 저장하는 명령어
오퍼랜드(addr)가 가리키는 위치의 명령어로 실행 순서를 변경하는 분기(branch) 명령어
CPU가 수행중인 작은 방해 받아 잠시 중단 될 수 있는데, 이 때 CPU의 현재 처리 순서를 중단시키도록 하는 신호를 인터럽트(interrupt)라고 합니다.
인터럽트의 종류는 크게 2가지 예외(동기 인터럽트), 인터럽트(비동기 인터럽트)가 있습니다.
인터럽트 서비스 루틴(ISR) 혹은 인터럽트 핸들러(Interrupt handler)는 인터럽트를 처리하기 위해 수행하는 프로그램 루틴을 의미합니다.
명령사이클 |
설명 |
인출사이클 (Fetch Cycle) |
- 주기억장치로부터 수행할 명령어를 CPU로 가져오는 단계 - 하나의 명령을 수행한 후 다음 명령을 메인 메모리에서 CPU로 꺼내 오는 단계 - 명령어의 Operand가 간접 주소일 경우: Indirect Cycle로 진행 - 명령어의 Operand가 직접 주소일 경우: Execute Cycle로 진행 |
간접사이클 (Indirect Cycle) |
- 명령어의 Operand가 간접주소 지정이 된 경우 유효 주소를 계산하기 위해 주기억장치에 접근하는 단계 - 명령의 실행을 위해 Execute Cycle로 진행됨 - 명령어에 포함되어 있는 주소를 이용하여, 그 명령어 실행에 필요한 데이터의 주소를 인출하는 사이클 |
실행사이클 (Execute Cycle) |
- 명령의 해독결과 이에 해당하는 타이밍 및 제어신호를 순차적으로 발생시켜 실제로 명령어를 실행하는 단계 - 명령어 코드를 해독하고, 그 결과에 따라 필요한 연산들을 수행 - 실행 사이클에서 수행되는 마이크로 연산들은 명령어에 따라 다름 |
인터럽트사이클 (Interrupt Cycle) |
- 인터럽트 발생시 인터럽트 처리를 위한 단계 - 인터럽트에 대한 처리가 완료되면 Fetch Cycle 진행 |