컴퓨터공학/컴퓨터 구조와 작동 원리

[컴퓨터공학] 컴퓨터 개념 기초 | CPU가 명령어를 실행하는 방법 - Fetch, Decode, Execute 사이클 완전 정복

코코무 2025. 3. 24. 10:51

CPU는 단순한 회로 집합이 아니라, 수많은 명령어를 처리하는 정교한 기계다.

이 글에서는 명령어 사이클을 기반으로 CPU의 동작 구조를 이해한다.


명령어 실행의 전체 흐름

컴퓨터에서 실행되는 모든 프로그램은 결국 CPU가 해석하고 실행하는 기계어 명령어들의 연속이다.

고급 언어로 작성된 코드도, 컴파일 혹은 인터프리팅을 거쳐 기계가 해석 가능한 명령어 단위로 변환된다.

CPU는 이 명령어들을 하나하나 처리하며 프로그램을 수행한다. 이 일련의 과정을 명령어 사이클(instruction cycle) 또는 Fetch-Decode-Execute 사이클이라고 한다.

사이클을 알아야 하는 이유

프로그래밍이든, 하드웨어를 공부하든 CPU가 명령어를 실행하는 과정을 이해하는 것은 정말 중요하다.

이걸 모르면 메모리가 왜 필요하고, 컴파일러가 왜 있는지 모호하게 느껴지기 때문이다.


핵심 개념: Fetch - Decode - Execute 사이클

출처: https://www.savemyexams.com/igcse/computer-science/cie/23/revision-notes/3-hardware/computer-architecture/the-fetch-decode-execute-cycle/

 

컴퓨터는 명령어(Instrution)를 받아서 하나하나 처리한다. 이 과정을 Fetch - Decode - Execute 사이클, 줄여서 FDE 사이클이라고 한다.

CPU는 이걸 매순간 반복하면서 우리가 시킨 일을 처리한다.

 

1. Fetch: 명령어 가져오기

"다음에 뭘 해야 할지 확인하자"

 

  • 명령어는 일반적으로 RAM(주기억장치)에 저장되어 있다.
  • CPU 내부에는 프로그램 카운터(PC)라는 레지스터가 존재하며, 다음에 가져올 명령어의 주소를 저장하고 있다.
  • PC가 가리키는 주소에서 명령어를 읽어와, 명령어 레지스터(IR: Instruction Register)에 저장한다.
  • fetch가 끝나면, PC는 다음 명령어 주소를 가리키도록 자동 증가한다.

🧩 실전 관점에서 Fetch 단계는 제어 흐름이 어떻게 작동하는지, goto, if, while 등이 기계 수준에서 어떻게 관리되는지를 이해하는 기반이 된다.

 

 

2. Decode: 명령어 해석하기

"이게 무슨 뜻이지?"

 

  • CPU는 명령어를 구성하는 비트열을 분석한다.
  • 명령어는 보통 다음과 같은 필드를 포함한다.
    • 연산 코드(Opcode): 어떤 연산을 할지 정의
    • 오퍼랜드(Operands): 연산에 필요한 데이터나 레지스터 주소
    • 주소 모드: 오퍼랜드 해석 방식(즉시, 직접, 간접 등)
  • 제어 유닛(Control Unit)은 이 정보를 해석해, CPU 내부 회로를 설정하고 다음 단계인 실행을 준비한다.

🧠 실전 관점에서 Decode는 컴파일러가 기계어를 어떻게 생성하는지, CPU 명령 세트 아키텍처(ISA)와 어떤 관계가 있는지를 이해하는 데 핵심적인 단계다.

 

 

3. Execute: 실행하기

"좋아, 이제 실행해보자"

 

  • 해석된 명령을 실제로 실행한다.
    • 연산이면 ALU(산술논리장치)가 계산,
    • 메모리 접근이면 데이터를 읽거나 쓰고,
    • 조건 분기라면 프로그램 프름을 바꾼다.
  • 결과는 레지스터에 저장하거나 메모리로 전송된다.

이 F-D-E 사이클은 명령어 하나마다 한 번씩 돌아가고, 컴퓨터는 이것을 초당 수십억 번 반복한다(GHz 단위).

하드웨어 레벨에서 일어나는 일이므로 우리가 파이썬, 자바 같은 고수준 언어로 코딩해도, 결국에는 컴파일/인터프리트되어 기계어 명령어로 바뀌고 이 사이클로 처리된다.

명령어마다 걸리는 시간은 다를 수 있지만, 현대 CPU는 파이프라이닝 등으로 이걸 동시에 여러 개 처리하기도 한다.