5강 / 20강

CPU 속으로 — 인출, 해독, 실행

레지스터 · PC · ALU · 제어장치가 도는 한 바퀴

CPU 속으로 — 인출, 해독, 실행
CPU는 한 바퀴를 초당 수십억 번 돕니다. 그 한 바퀴가 전부예요.

CPU가 하는 일을 한 문장으로 줄이면 이렇습니다.

메모리에서 명령을 하나 꺼내 와서, 무슨 뜻인지 풀고, 시킨 대로 한다. 그리고 다시 처음부터.

이 한 바퀴를 인출(fetch) → 해독(decode) → 실행(execute) 이라고 부릅니다. 2.9GHz CPU는 이걸 초당 29억 번 돕니다.

한 바퀴를 도는 데 필요한 부품들

📍
PC
프로그램 카운터
"다음에 읽을 곳"을 가리키는 손가락
🗂️
레지스터
CPU 안의 손바닥
가장 빠르지만 몇 개 없다
🧮
ALU
계산 부서
4강에서 만든 그것
🎛️
제어장치
지휘자
명령을 풀어 신호를 뿌린다
🚩
플래그
계산 결과의 쪽지
0인가? 음수인가? 넘쳤나?
한 바퀴 돌려보기 — 버튼을 누를 때마다 인출·해독·실행이 한 단계씩 진행됩니다.
불러오는 중…

클럭 — 다 같이 맞추는 박자

CPU 안의 부품들은 제각각 속도가 다릅니다. 그래서 박자를 하나 정해 놓고 "똑" 할 때마다 다 같이 한 발씩 나아가기로 약속해요. 그 박자가 클럭입니다.

2.9GHz = 초당 29억 번 똑. 한 번의 똑은 0.345나노초입니다. 빛이 그 사이에 10cm 갑니다. CPU 한쪽 끝에서 다른 쪽 끝까지 신호가 가는 데 클럭 한 박자가 통째로 필요할 수도 있다는 뜻이에요.

클럭을 못 올리는 이유는 물리학과 전기요금입니다.
Python 브라우저에서 실행

서버에게 클럭을 물어봅시다

지금 CPU가 몇 헤르츠로 돌고 있는지 봅니다.
bash 브라우저에서 실행

scaling_governor가 powersave로 되어 있죠? 평소엔 클럭을 낮춰 전기를 아끼다가, 일이 몰리면 터보로 4.8GHz까지 올립니다. 그런데 코어 여러 개가 동시에 바쁘면 발열 때문에 터보가 안 걸려요 — "벤치마크는 빠른데 실서비스는 느리다"의 흔한 원인입니다.

성능 = 명령어수 × CPI × 클럭주기.
Python 브라우저에서 실행
IPC가 1 미만이면 CPU가 무언가를 기다리고 있다는 신호입니다.
bash 브라우저에서 실행
🤔 확인 문제
CPU의 프로그램 카운터(PC)가 하는 일은?
🤔 확인 문제
클럭이 3.0GHz인 CPU가 4.0GHz인 CPU보다 실제 작업을 더 빨리 끝낼 수 있을까요?