IT/컴퓨터구조

🖥️ [컴퓨터구조] CPU의 명령어 실행 과정 (IF, ID, EX, MEM, WB)

BlogFlow 2025. 3. 10. 18:00
반응형

[컴퓨터구조 목차 바로가기]

 

4️⃣ 프로세서 구조와 동작 원리

CPU는 프로그램을 실행할 때, 명령어(Instruction) 를 처리하는 과정을 거칩니다.

이 과정은 명령어 사이클(Instruction Cycle) 이라고 불리며,

IF (Instruction Fetch), ID (Instruction Decode), EX (Execute), MEM (Memory Access), WB (Write Back) 의 5단계로 구성됩니다.

이번 섹션에서는 CPU가 명령어를 실행하는 5단계 과정과 각 단계에서 수행되는 작업, 그리고 현대 CPU에서의 최적화 기법을 자세히 살펴보겠습니다.


🔹 1. CPU의 명령어 실행 과정이란?

1.1 명령어 실행 과정 (Instruction Cycle)이란?

CPU는 프로그램을 실행할 때, 메모리에서 명령어를 가져와 해석하고 실행한 후 결과를 저장하는 과정을 반복합니다.

이 과정은 펫치(Fetch), 디코드(Decode), 실행(Execute), 메모리 접근(Memory Access), 쓰기(Write Back) 5단계로 나뉩니다.

💡 쉽게 말해:

  • CPU는 명령어를 하나씩 가져와 실행하는 구조
  • 각 명령어는 5단계를 거쳐 실행되며, 이 과정을 반복
  • 현대 CPU는 이 과정을 병렬로 처리(파이프라이닝)하여 성능을 향상

CPU의 명령어 실행 과정은 컴퓨터 성능을 결정하는 핵심 요소!


🔹 2. CPU 명령어 실행의 5단계 (IF → ID → EX → MEM → WB)

CPU의 명령어 실행 과정은 5단계 구조로 이루어져 있습니다.

2.1 5단계 명령어 실행 흐름

1️⃣ IF (Instruction Fetch) - 명령어 가져오기

2️⃣ ID (Instruction Decode) - 명령어 해석

3️⃣ EX (Execute) - 연산 수행

4️⃣ MEM (Memory Access) - 메모리 접근

5️⃣ WB (Write Back) - 결과 저장

각 단계에서 수행되는 작업을 자세히 살펴보겠습니다.


2.2 IF (Instruction Fetch) - 명령어 가져오기

  • CPU는 메모리(RAM)에서 명령어를 가져와 명령어 레지스터(IR, Instruction Register)에 저장
  • 프로그램 카운터(PC, Program Counter)는 다음 명령어의 주소를 업데이트

💡 예제 (MIPS - 명령어 가져오기)

lw R1, 0(R2)  # 메모리 주소 R2에서 데이터를 로드하여 R1에 저장

주요 동작:

✅ 프로그램 카운터(PC) → 다음 실행할 명령어의 주소 업데이트

✅ 명령어 레지스터(IR) → 현재 명령어 저장


2.3 ID (Instruction Decode) - 명령어 해석

  • CPU는 명령어를 해석하여 어떤 연산을 수행할지 결정
  • 필요한 데이터를 레지스터에서 불러옴
  • ALU 연산이 필요한 경우, 오퍼랜드(Operand)를 ALU로 전달

💡 예제 (MIPS - 명령어 해석)

ADD R1, R2, R3  # R1 = R2 + R3

주요 동작:

✅ 명령어 해석(ADD 연산인지, LOAD인지 확인)

✅ 레지스터에서 필요한 데이터를 읽어옴


2.4 EX (Execute) - 연산 수행

  • CPU의 ALU(Arithmetic Logic Unit)가 연산을 수행
  • 덧셈, 뺄셈, 논리 연산, 조건 분기 등이 포함됨

💡 예제 (MIPS - 연산 수행)

ADD R1, R2, R3  # R1 = R2 + R3

주요 동작:

✅ ALU가 R2 + R3 연산을 수행

✅ 결과를 저장할 준비


2.5 MEM (Memory Access) - 메모리 접근

  • 메모리에서 데이터를 읽거나 씀 (LOAD/STORE 명령어 실행 시)
  • 일반적인 연산(ADD, SUB 등)에서는 이 단계가 필요 없음

💡 예제 (MIPS - 메모리 접근)

LW R1, 100(R2)  # R2의 주소 + 100에서 값을 로드하여 R1에 저장

주요 동작:

✅ 메모리 접근 (데이터 로드 또는 저장)

✅ 데이터가 필요한 경우 캐시(Cache)에서 먼저 검색


2.6 WB (Write Back) - 결과 저장

  • ALU 연산 결과를 레지스터에 저장
  • 이후의 명령어 실행을 위해 준비

💡 예제 (MIPS - 결과 저장)

ADD R1, R2, R3  # R1 = R2 + R3

주요 동작:

✅ 연산 결과를 R1 레지스터에 저장

✅ 다음 명령어 실행 준비


🔹 3. 명령어 실행 과정의 실제 적용 예시

💡 예제: LW R1, 100(R2) (메모리에서 값 로드)

단계 설명
IF (명령어 가져오기) LW R1, 100(R2) 명령어를 메모리에서 가져옴
ID (명령어 해석) LW 명령어임을 해석하고, R2의 값을 확인
EX (연산 수행) R2 + 100을 계산하여 메모리 주소 결정
MEM (메모리 접근) 해당 주소에서 데이터를 읽어옴
WB (결과 저장) 읽어온 데이터를 R1 레지스터에 저장

🔹 4. CPU 명령어 실행 과정의 최적화 기법

현대 CPU는 성능을 향상시키기 위해 명령어 실행 과정을 최적화하는 다양한 기법을 적용합니다.

파이프라이닝(Pipelining) → 여러 명령어를 동시에 실행

슈퍼스칼라(Superscalar) → 여러 개의 명령어를 병렬로 처리

브랜치 예측(Branch Prediction) → 조건 분기 명령어의 실행 속도 향상

Out-of-Order Execution → 명령어 실행 순서를 동적으로 조정

💡 현대 CPU는 파이프라인을 활용하여 명령어 실행 속도를 극대화함!


✅ 마무리: CPU 명령어 실행 과정의 핵심 정리

CPU는 명령어를 실행하기 위해 5단계를 거침

명령어 실행 과정 (IF → ID → EX → MEM → WB) 을 반복 수행

파이프라이닝, 슈퍼스칼라, 브랜치 예측 등의 기법으로 성능을 최적화

반응형