명령어 사이클 (Instruction Cycle)

한눈에 보기

CPU가 명령어를 가져와 실행하는 명령어 사이클을 인출, 간접, 실행, 인터럽트 네 단계로 정리한다. PC, MAR, MBR, IR의 역할과 인터럽트 처리 과정까지 마이크로 연산 수준으로 다룬다.

최종 업데이트 2026.09.17

명령어 사이클(Instruction Cycle)은 중앙처리장치(CPU, Central Processing Unit)가 명령어 하나를 기억장치에서 가져와 해석하고 실행하기까지 반복하는 기본 순환 과정을 말한다. 명령어 사이클은 인출 사이클(fetch cycle)과 실행 사이클(execution cycle)을 기본으로 하며, 필요에 따라 간접 사이클(indirect cycle)과 인터럽트 사이클(interrupt cycle)이 끼어든다. 컴퓨터가 전원이 켜진 순간부터 꺼질 때까지 하는 일은 결국 이 사이클의 무한 반복이다.

사이클을 움직이는 레지스터들

명령어 사이클을 설명하려면 몇 가지 레지스터(register)의 역할을 먼저 알아야 한다. 프로그램 카운터(PC, Program Counter)는 다음에 인출할 명령어의 주소를 담는다. 명령어 레지스터(IR, Instruction Register)는 방금 인출한 명령어를 담아 해독의 대상이 된다. 메모리 주소 레지스터(MAR, Memory Address Register)는 접근할 메모리 주소를, 메모리 버퍼 레지스터(MBR, Memory Buffer Register)는 메모리에서 읽었거나 메모리에 쓸 데이터를 담는다. CPU와 기억장치 사이의 모든 데이터 이동은 MAR과 MBR을 통로로 이루어진다.

인출 사이클

인출 사이클은 다음 명령어를 기억장치에서 CPU로 가져오는 단계다. 마이크로 연산 수준으로 나누면 다음과 같이 진행된다.

  1. PC의 값을 MAR로 복사한다.
  2. MAR이 가리키는 주소의 명령어를 메모리에서 읽어 MBR에 담고, 그동안 PC를 다음 명령어 주소로 증가시킨다.
  3. MBR의 명령어를 IR로 옮긴다.

인출이 끝나면 IR에는 실행할 명령어가, PC에는 그다음 명령어의 주소가 들어 있다. 이어서 제어장치가 IR의 연산 코드(opcode)를 해독해 어떤 동작을 할지 결정한다.

실행 사이클과 간접 사이클

실행 사이클은 해독된 명령어의 실제 동작을 수행하는 단계로, 명령어 종류에 따라 하는 일이 다르다. 데이터 전송 명령어는 레지스터와 메모리 사이에서 값을 옮기고, 산술 논리 명령어는 산술논리연산장치(ALU, Arithmetic Logic Unit)로 연산을 수행하며, 분기 명령어는 PC 값을 바꾸어 실행 흐름을 옮긴다.

간접 사이클은 명령어가 간접 주소 지정(indirect addressing)을 쓸 때 실행 전에 추가되는 단계다. 명령어의 주소 필드가 데이터의 주소가 아니라 데이터의 주소가 저장된 곳의 주소를 담고 있으면, 메모리를 한 번 더 읽어 실제 주소인 유효 주소(effective address)를 얻어야 한다. 즉 인출, (필요시) 간접, 실행의 순서로 진행된다.

인터럽트 사이클

인터럽트(interrupt)는 입출력 완료나 타이머 만료처럼 CPU 바깥이나 내부에서 발생한 사건이 현재 실행 흐름을 잠시 멈추게 하는 메커니즘이다. CPU는 매 명령어의 실행이 끝난 시점마다 인터럽트 요청이 있는지 확인하고, 있으면 인터럽트 사이클로 진입한다.

  1. 현재 PC 값(복귀 주소)과 프로그램 상태를 스택 등에 저장한다.
  2. 인터럽트 종류에 대응하는 처리 루틴의 주소를 인터럽트 벡터 테이블(interrupt vector table)에서 찾아 PC에 넣는다.
  3. 인터럽트 서비스 루틴(ISR, Interrupt Service Routine)을 실행한 뒤, 저장해 둔 상태를 복원해 원래 프로그램으로 복귀한다.

인터럽트 확인이 명령어 경계에서 이루어진다는 점이 중요하다. 명령어 하나의 실행은 원자적으로 완료되며, 그 사이에 흐름이 끊기지 않는다. 운영체제의 선점형 스케줄링과 시스템 호출 처리도 결국 이 인터럽트 사이클 위에서 동작한다.

네 가지 사이클 비교

사이클수행 시점하는 일
인출 사이클매 명령어 시작PC가 가리키는 명령어를 IR로 가져오고 PC 증가
간접 사이클간접 주소 지정일 때만메모리를 추가로 읽어 유효 주소 획득
실행 사이클매 명령어해독된 연산을 실제로 수행
인터럽트 사이클실행 완료 후 요청이 있을 때상태 저장 후 인터럽트 처리 루틴으로 분기

현대 CPU는 이 단계들을 순차적으로 하나씩 처리하지 않고 파이프라이닝(pipelining)으로 겹쳐서 수행한다. 한 명령어가 실행되는 동안 다음 명령어는 해독되고 그다음 명령어는 인출되는 식이다. 그러나 파이프라인과 비순차 실행이 아무리 복잡해져도, 프로그래머가 관찰하는 결과는 명령어 사이클을 순서대로 반복한 것과 같도록 보장되므로 이 모델은 여전히 CPU 동작을 이해하는 기준이 된다.

면접에서 이렇게 물어본다

  • 명령어 사이클을 구성하는 네 가지 사이클과 각각의 역할을 설명해보시오.
  • 인출 사이클에서 PC, MAR, MBR, IR이 어떤 순서로 사용되는지 마이크로 연산 수준으로 설명해보시오.
  • 간접 사이클은 언제 발생하며 유효 주소란 무엇인지 말해보시오.
  • CPU가 인터럽트를 확인하는 시점은 언제이며, 인터럽트 처리 과정에서 무엇을 저장하고 복원하는지 설명해보시오.
  • 파이프라이닝이 도입된 현대 CPU에서도 명령어 사이클 모델이 유효한 이유를 설명해보시오.
컴퓨터 구조 문서 전체 보기

이 개념, 내 코드에서는 어떻게 물어볼까요

데브핏(DevFit)에 채용공고 URL을 붙여 넣고 레포지토리를 연결하면, 내가 쓴 커밋에서 예상 질문과 어필 포인트를 만듭니다. 하루 10회까지 무료입니다. 합불 판정이나 지원자 랭킹은 만들지 않고, 최종 판단은 사람이 합니다.

공고 넣고 시작하기