5강 / 20강
CPU 속으로 — 인출, 해독, 실행
레지스터 · PC · ALU · 제어장치가 도는 한 바퀴
CPU가 하는 일을 한 문장으로 줄이면 이렇습니다.
메모리에서 명령을 하나 꺼내 와서, 무슨 뜻인지 풀고, 시킨 대로 한다. 그리고 다시 처음부터.
이 한 바퀴를 인출(fetch) → 해독(decode) → 실행(execute) 이라고 부릅니다. 2.9GHz CPU는 이걸 초당 29억 번 돕니다.
한 바퀴를 도는 데 필요한 부품들
클럭 — 다 같이 맞추는 박자
CPU 안의 부품들은 제각각 속도가 다릅니다. 그래서 박자를 하나 정해 놓고 "똑" 할 때마다 다 같이 한 발씩 나아가기로 약속해요. 그 박자가 클럭입니다.
2.9GHz = 초당 29억 번 똑. 한 번의 똑은 0.345나노초입니다. 빛이 그 사이에 10cm 갑니다. CPU 한쪽 끝에서 다른 쪽 끝까지 신호가 가는 데 클럭 한 박자가 통째로 필요할 수도 있다는 뜻이에요.
클럭을 못 올리는 이유는 물리학과 전기요금입니다.
Python
브라우저에서 실행
서버에게 클럭을 물어봅시다
지금 CPU가 몇 헤르츠로 돌고 있는지 봅니다.
bash
브라우저에서 실행
scaling_governor가 powersave로 되어 있죠?
평소엔 클럭을 낮춰 전기를 아끼다가, 일이 몰리면 터보로 4.8GHz까지 올립니다.
그런데 코어 여러 개가 동시에 바쁘면 발열 때문에 터보가 안 걸려요 —
"벤치마크는 빠른데 실서비스는 느리다"의 흔한 원인입니다.
성능 = 명령어수 × CPI × 클럭주기.
Python
브라우저에서 실행
IPC가 1 미만이면 CPU가 무언가를 기다리고 있다는 신호입니다.
bash
브라우저에서 실행
🤔 확인 문제
CPU의 프로그램 카운터(PC)가 하는 일은?
해설 PC는 '읽을 곳을 가리키는 손가락'입니다. 명령을 하나 인출할 때마다 자동으로 다음 칸으로 옮겨 가고, 점프 명령은 이 손가락을 다른 곳으로 옮겨 놓는 것뿐이에요. if 문도 for 문도 결국 PC를 조작하는 일입니다.
🤔 확인 문제
클럭이 3.0GHz인 CPU가 4.0GHz인 CPU보다 실제 작업을 더 빨리 끝낼 수 있을까요?
해설 성능 = 명령어수 × CPI × 클럭주기 입니다. 클럭은 세 항 중 하나일 뿐이에요. 캐시가 크고 분기 예측이 좋아 IPC가 2배면, 클럭이 25% 낮아도 훨씬 빠릅니다. GHz만 보고 서버를 고르면 안 되는 이유입니다.