오늘 끝나면

CPU: fetch-decode-execute

  • CPU: fetch-decode-execute의 핵심 문제를 한 문장으로 설명한다
  • 오른쪽 실습에서 CPU:이 어떻게 움직이는지 관찰한다
  • 다음 강의와 이어지는 한계를 말할 수 있다

실습 미션

프로그램 카운터, 명령어, 제어장치 — 메모리에서 명령을 꺼내 해석하고 실행하는 반복 루프 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.

성공 조건

  • 실습의 기본값을 먼저 관찰
  • 입력값이나 모드를 한 번 이상 바꿔 결과 비교
  • 왜 결과가 바뀌었는지 한 문장으로 설명

14 · Fetch-Decode-Execute

간단한 CPU

ALU(계산) + 레지스터(기억) + 제어. 셋을 합침. 드디어 ‘명령 실행하는 기계’ 됨.

P.01디지털 로직 · 간단한 CPU

CPU = 꺼내-해석-실행 반복

CPU가 하는 일은 한 문장으로 끝남. 메모리에서 명령을 꺼내 해석하고 실행함. 그걸 끝없이 반복함.

명령은 사람이 미리 메모리에 쭉 적어둠.
CPU는 그걸 한 줄씩 꺼내 읽고 시키는 대로 함.

한 줄 처리하면 다음 줄로 넘어감 / 또 꺼내고 · 해석하고 · 실행함.
이 반복 자체가 ‘기계가 계산한다’는 말의 정체임.

명령 한 줄을 처리하는 한 박자
CPU가 한 박자에 하는 일
꺼내기fetch
메모리에서 명령 가져옴
해석decode
무슨 명령인지 알아냄
실행execute
ALU·레지스터를 움직임
끝나면 다시 꺼내기로 — 끝없이 반복
P.02디지털 로직 · 간단한 CPU

fetch · decode · execute 사이클

한 박자를 세 단계로 쪼개면 fetch · decode · execute임.

fetch는 꺼내는 것 / 다음 명령을 메모리에서 가져옴.
decode는 해석하는 것 / 이 명령이 더하라는 건지 옮기라는 건지 알아냄.
execute는 실행하는 것 / 시키는 대로 ALU·레지스터를 움직임.

세 단계가 끝나면 다시 fetch로 돌아옴.
그래서 사이클(cycle)임 / 멈추기 전까지 같은 원을 계속 돎.

한 명령이 거치는 세 단계
fetch → decode → execute → 다시
FETCH꺼내기EXECUTE실행DECODE해석1 cycle

한 명령 = 세 단계 한 바퀴

P.03디지털 로직 · 간단한 CPU

PC · 레지스터 · 명령어

반복을 돌리려면 ‘지금 몇 번째 줄인지’ 기억하는 게 필요함. 그게 PC임.

PC(프로그램 카운터)는 다음 명령의 주소를 가리킴 / 한 줄 끝나면 한 칸 올라감.
레지스터는 계산 중인 값을 잠깐 담는 칸임.
제어장치가 decode 결과를 보고 누가 움직일지 지휘함.

명령어는 ‘무엇을 · 어디에’를 적은 한 줄임 / 예: R1에 R0을 더해라.
PC · 레지스터 · 제어 · ALU가 한 박자마다 같이 일함.

한 박자에 협력하는 부품들
한 박자에 협력하는 부품
처리 중인 명령ADD R1, R0
PC다음 명령 주소를 가리킴→ 0x04
제어장치decode 결과로 부품을 지휘ADD
레지스터계산 중인 값을 잠깐 담음R0·R1
ALU실제로 더하고 뺌+ −

PC가 줄 번호를 잡아주니 순서대로 돌 수 있음

P.04디지털 로직 · 간단한 CPU

직접 스텝 실행해보기

계산하는 ALU는 더하고 빼는 것. 기억하는 레지스터는 값을 잠깐 담는 것. 다음에 뭐 할지 가리키는 PC(프로그램 카운터) 붙임. 이 셋 합친 게 CPU임.

오른쪽은 진짜 도는 토이 CPU임. 명령어 한 줄 실행하면 PC가 한 칸 움직임. 레지스터 R0·R1 값이 바뀜.▶ 실행 눌러봄.

이 프로그램은 5+4+3+2+1을 루프로 더함. R1에 15 만듦. 가져오고(Fetch) · 해석하고(Decode) · 실행함(Execute). 컴퓨터 일하는 방식이 전부 여기 있음.

토이 CPU 실행 (Fetch–Decode–Execute)
간단한 CPU · 명령어를 한 줄씩R1 = 5+4+3+2+1
LOAD R0, 5
1LOAD R1, 0
2ADD R1, R0
3DEC R0
4JNZ R0, 2
5HALT
PC
0
R0
5
R1
0
STEP 1/18

R0 ← 5 — 카운터를 5로 세팅.

1/18
P.05디지털 로직 · 간단한 CPU

모든 프로그램이 이 루프 위에서

게임이든 브라우저든 AI든, 결국 이 단순한 루프 위에서 돎.

화려한 프로그램도 컴파일하면 명령어 줄로 풀어짐.
CPU는 그 줄을 fetch · decode · execute로 한 줄씩 처리할 뿐임.

다른 점은 명령 줄 수와 속도뿐임 / 초당 수십억 박자를 돌려서 복잡해 보이는 것임.
이 단순 루프가 모든 계산의 뿌리임.

Q. PC(프로그램 카운터)가 하는 일은? (값을 더한다 · 다음 명령 주소를 가리킨다 · 화면에 출력한다 · 전원을 켠다)정답은 다음 명령 주소를 가리킨다임.
PC는 ‘지금 몇 번째 줄을 실행할 차례인지’ 기억하는 칸임.
한 명령이 끝나면 PC가 한 칸 올라가 다음 줄을 가리킴.
그래서 CPU가 명령을 순서대로 fetch할 수 있음.
복잡한 앱 → 결국 fetch-decode-execute
위로 갈수록 화려 · 바닥은 같음
보이는 것
게임 · 브라우저 · AI
컴파일하면
명령어 줄 ADD · LOAD · JMP …
CPU가 하는 것
fetch → decode → execute

다른 건 명령 줄 수와 속도뿐 — 루프는 하나임

3줄 요약

  1. 1프로그램 카운터, 명령어, 제어장치 — 메모리에서 명령을 꺼내 해석하고 실행하는 반복 루프
  2. 2CPU: fetch-decode-execute은 전기 → 불 대수 → 게이트 → 메모리 → CPU 흐름 안의 한 칸이다.
  3. 3개념을 외우는 것보다 입력을 바꾸면 무엇이 달라지는지 보는 것이 우선이다.

완료 전 점검

복습 카드

CPU:

프로그램 카운터, 명령어, 제어장치 — 메모리에서 명령을 꺼내 해석하고 실행하는 반복 루프

전압

전하를 밀어내는 힘

비트

0 또는 1 하나를 담는 가장 작은 정보 단위