seegongsik
구조

CPU는 어떻게 일할까

계산을 맡는 ALU, 무엇을 할지 정하는 명령어. 이 둘은 어떻게 한 몸으로 움직일까? CPU가 명령을 하나씩 처리하는 흐름을 따라가 보면 답이 나와요.

01

CPU는 세 박자를 되풀이한다

CPU가 하는 일은 사실 단순하다.
명령을 하나 가져오고, 그것이 무슨 명령인지 풀고, 실행한다.
그리고 다음 명령을 가져온다.
이 세 박자를 쉬지 않고 되풀이해요.

1
인출
명령을 가져와요
→
2
해석
무슨 명령인지 풀어요
→
3
실행
ALU가 일해요
↻
이 세 박자가 1초에 수십억 번 돌아요. 그래서 컴퓨터가 빠른 거예요.

인출 → 해석 → 실행, 그리고 반복.

인출, 해석, 실행을 한 바퀴라고 하면, CPU는 1초에 이 바퀴를 수십억 번 돌린다.
하나하나는 단순하지만 워낙 빨라서 복잡한 일을 해내요.

02

다음 명령을 가리키는 손가락

그런데 CPU는 지금 몇 번째 명령을 할 차례인지 어떻게 알까?
메모리 어딘가에 명령들이 줄지어 있고, 그 가운데 '다음에 할 것'을 가리키는 장치가 있다.
이름은 PC, 프로그램 카운터예요.

PC
0
다음 주소
0명령 A←
1명령 B←
2명령 C←
3명령 D←

PC가 다음 명령을 가리킨다.

명령을 하나 가져올 때마다 PC는 한 칸씩 늘어난다.
0번을 했으면 1번, 1번을 했으면 2번이 되는 식이다.
이 손가락 덕분에 CPU는 순서를 잃지 않고 명령을 차례차례 해내요.

03

부품들이 모여 CPU가 된다

이제 부품들이 한자리에 모인다.
다음 명령을 가리키는 PC, 명령을 푸는 해석기, 계산하는 ALU, 값을 잠깐 쥐는 작은 칸인 레지스터가 그것이다.
따로 보면 작지만, 모이면 명령을 처리하는 하나의 CPU가 돼요.

CPU
PC
다음 명령을 가리켜요
해석기
명령을 풀어요
ALU
계산해요 (11강)
레지스터
값을 잠깐 쥐어요
11강의 ALU는 이 중 '계산' 담당이었어요. CPU는 이 부품들의 팀이에요.

CPU 한 몸.

PC가 다음을 가리키고, 해석기가 명령을 풀고, ALU가 계산하고, 레지스터가 값을 쥔다.
저마다 맡은 일을 하며 한 박자를 함께 돌리는 것, 이것이 CPU가 일하는 모습이에요.

04

명령 세 줄 실행하기

짧은 프로그램이 하나 있다.
'3을 담아', '4를 더해', '결과를 보여 줘' 세 줄이다.
진행 버튼을 누를 때마다 한 박자씩 나아가며 PC가 움직이고 값이 쌓이는 모습이 보여요.

03을 담아
14를 더해
2결과를 보여줘
PC
0
값 (레지스터)
0
진행을 누르면 시작해요

PC를 따라 한 줄씩 실행한다.

PC가 0, 1, 2로 늘어나면서 명령이 하나씩 실행되었다.
값은 3이 되었다가 7이 되고, 마지막에 화면에 나타났다.
프로그램이 돈다는 것은 바로 이런 모습이에요.

05

PC가 다른 곳으로 뛰면

PC는 보통 한 칸씩 나아가지만 가끔 다른 곳으로 뛴다.
'5번 명령으로 가' 같은 명령을 만나면 PC가 그 주소로 바뀐다.
이 건너뛰기가 앞 레슨의 비교에서 나온 참·거짓과 만나면 '만약'이라는 갈림길이 돼요.

0명령
1명령
25번으로 가
3(건너뜀)
4(건너뜀)
5여기로 점프
PC를 바꾸면 명령의 순서를 바꿀 수 있어요. '만약'과 '반복'도 모두 이것으로 만들어져요.

PC가 2번에서 5번으로 뛴다.

한 칸씩 가는 대신 PC를 다른 값으로 바꾸면 프로그램의 흐름이 바뀐다.
앞으로 건너뛸 수도 있고 되돌아갈 수도 있다.
이 점프가 어떻게 '만약'과 '반복'이 되는지는 프로그래밍 영역에서 자세히 다뤄요.

한 줄 정리CPU는 인출, 해석, 실행을 쉬지 않고 되풀이하고, PC라는 손가락이 다음에 할 명령을 가리킨다. PC를 한 칸씩 늘리면 순서대로, 다른 값으로 바꾸면 건너뛰기가 되며, 이 단순한 되풀이가 모든 프로그램의 바탕이에요.
← 구조
이 페이지가 도움 됐다면 후원하기