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를 다른 값으로 바꾸면 프로그램의 흐름이 바뀐다.
앞으로 건너뛸 수도 있고 되돌아갈 수도 있다.
이 점프가 어떻게 '만약'과 '반복'이 되는지는 프로그래밍 영역에서 자세히 다뤄요.