CPU는 어떻게 일할까
계산을 맡는 ALU, 무엇을 할지 정하는 명령어. 이 둘이 어떻게 한 몸으로 움직일까요? CPU가 명령을 하나씩 처리하는 흐름을 따라가 봐요.
CPU는 세 박자를 반복해요
CPU가 하는 일은
사실 단순해요.
명령을 하나 가져오고,
그게 무슨 명령인지 풀고,
그걸 실행하고.
또 다음 명령을 가져오고.
이 세 박자를
쉬지 않고 반복해요.
인출 → 해석 → 실행, 그리고 반복.
인출, 해석, 실행.
이걸 한 박자라고 하면,
CPU는 1초에
이 박자를 수십억 번 돌려요.
하나하나는 단순한데,
엄청 빨라서
복잡한 일을 해내죠.
다음에 할 명령을 가리키는 손가락
그런데 CPU는
지금 몇 번째 명령을
할 차례인지
어떻게 알까요?
메모리 어딘가에
명령들이 줄지어 있고,
그중 '다음에 할 것'을
가리키는 게 있어요.
PC, 프로그램 카운터예요.
PC가 다음 명령을 가리켜요.
명령을 하나 가져올 때마다,
PC는 한 칸 늘어나요.
0번 했으면 1번,
1번 했으면 2번.
이 손가락 덕분에
CPU는 순서를 잃지 않고
명령을 차례차례 해내요.
부품들이 모여 CPU가 돼요
이제 부품이 모여요.
다음을 가리키는 PC,
명령을 푸는 해석기,
계산하는 ALU,
잠깐 값을 쥐는 작은 칸들.
따로 보면 작지만,
모이면 명령을 처리하는
하나의 CPU가 돼요.
CPU 한 몸.
PC가 다음을 가리키고,
해석기가 명령을 풀고,
ALU가 계산하고,
레지스터가 값을 쥐고.
각자 맡은 일을 하며
한 박자를 같이 돌려요.
이게 CPU가 일하는 모습이에요.
명령 세 줄을 직접 실행해요
짧은 프로그램을 줄게요.
'3을 담아',
'4를 더해',
'결과를 보여줘'.
한 박자씩 진행하며
PC가 움직이는 걸,
값이 쌓이는 걸
같이 봐요.
진행을 눌러보세요.
PC를 따라 한 줄씩 실행.
PC가 0, 1, 2로 늘면서
명령을 하나씩 실행했죠?
값이 3이 됐다가
7이 되고,
마지막에 화면에 떴어요.
이게 프로그램이
도는 모습이에요.
PC가 다른 곳으로 뛰면
PC는 보통
한 칸씩 나아가지만,
가끔 다른 곳으로 뛰어요.
'5번 명령으로 가'
같은 명령을 만나면,
PC가 그 주소로 바뀌죠.
이 '건너뛰기'가
지난 시간 본 비교의 참·거짓과 만나면,
'만약'이라는 갈림길이 돼요.
PC가 2번에서 5번으로 뛰어요.
한 칸씩 가는 대신
PC를 다른 값으로 바꾸면,
프로그램의 흐름이 바뀌어요.
건너뛰거나,
되돌아가거나.
다음 시간엔
이 점프가 어떻게
'만약'과 '반복'이 되는지 볼게요.