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) 을 반복 수행
✅ 파이프라이닝, 슈퍼스칼라, 브랜치 예측 등의 기법으로 성능을 최적화
'IT > 컴퓨터구조' 카테고리의 다른 글
🖥️ [컴퓨터구조] 데이터 해저드와 제어 해저드 해결 방법 (0) | 2025.03.12 |
---|---|
🖥️ [컴퓨터구조] 파이프라이닝(Pipelining)의 개념 (0) | 2025.03.11 |
🖥️ [컴퓨터구조] 데이터패스(Data Path) 개념 (0) | 2025.03.09 |
🖥️ [컴퓨터구조] CPU 내부 구조 개요 (0) | 2025.03.08 |
🖥️ [컴퓨터구조] 연산 속도를 높이는 방법 (병렬 연산, SIMD, 벡터 연산) (1) | 2025.03.07 |