컴퓨터가 프로그램을 실행할 때, 그 중심에는 항상 CPU (Central Processing Unit)가 있습니다. CPU 는 단순히 "연산하는 장치"가 아니라, 명령을 읽고 -> 해석하고 -> 실행하는 전체 흐름을 담당하는 두뇌입니다. 해당 포스팅에서는 CPU 가 실제로 어떻게 동작하는 지, 내부 구성 요소와 함께 이해하기 쉽게 정리해보고자 합니다.
CPU 는 크게 3가지로 나눌 수 있습니다.
첫 번째는 ALU (산술논리연산장치) 로, 덧셈과 뺄셈 같은 산술 연산 뿐 아니라
AND, OR 와 같은 논리 연산도 수행하는 계산기 역할을 하는 장치입니다.
두 번째는 Control Unit (제어 장치) 로, 명령어를 해석하고 어떤 연산을 할 지 결정하며
다른 부품들에게 '이거 실행해!' 라고 신호를 보내는 지휘자와 같은 역할을 하는 장치입니다.
세 번째는 Register (레지스터) 로, CPU 내부에 있는 아주 빠른 메모리로써 연산에 필요한 데이터를
잠깐 저장하는 작업대 위 메모장과 같은 역할을 하는 메모리입니다.
CPU 는 프로그램을 다음 3단계 반복으로 실행합니다.
[1] Fetch → 명령어 가져오기
[2] Decode → 명령어 해석하기
[3] Execute → 실행하기
아래는 CPU 동작 흐름을 단순화한 구조입니다.
+-------------------+
| Memory |
| (명령어 + 데이터) |
+---------+---------+
|
v
+-------------------+
| Fetch Stage |
| (명령어 읽기) |
+---------+---------+
|
v
+-------------------+
| Decode Stage |
| (명령어 해석) |
+---------+---------+
|
v
+-------------------+
| Execute Stage |
| (ALU 연산 수행) |
+---------+---------+
|
v
+-------------------+
| Register/Memory |
| (결과 저장) |
+-------------------+
실제로 한 줄의 코드가 실행되는 과정을 설명하기 위해, 예로 아래와 같은 코드가 있다고 하면
int a = 1 + 2;
CPU 내부에서는 Fetch: 메모리에서 ADD 1, 2와 같은 명령어를 가져오고, Decode: ALU 에게 덧셈 준비하라고 신호를 보낸 다음, Execute: ALU 가 1 + 2 = 3 계산하여 결과를 레지스터에 저장하는 플로우입니다.
CPU 는 클럭 신호 (Clock Signal) 에 맞춰 움직입니다.
1초에 몇 번 동작하는 지 = 클럭 속도 (GHz) 로, 예시로 3GHz 라고 하면 초당 30억 번 사이클을 도는 것을 의미합니다.
여기서 중요한 점은 CPU 는 "한 번에 하나의 단계" 를 처리하는 것이 아니라
클럭마다 한 단계씩 진행한다는 점입니다.
현재 CPU 는 단순히 한 명령씩 처리하지 않고, 여러 명령을 겹쳐서 처리합니다. (= 파이프라이닝)
시간 →
Instr1: Fetch → Decode → Execute
Instr2: Fetch → Decode → Execute
Instr3: Fetch → Decode → Execute
이를 통해 동시에 여러 작업을 처리하여 CPU 활용도가 증가되고, 성능을 향상시킬 수 있습니다.
CPU 는 매우 빠르지만, 메모리는 상대적으로 느린데 그래서 등작한 것이 Cache Memory (캐시) 로, CPU 바로 옆에 있는 초고속 메모리로써 자주 쓰는 데이터를 저장할 때 쓰입니다.
CPU → Cache → RAM → Disk
한 줄 요약으로 마무리한다면, CPU 는 단순히 계산만 하는 게 아니라, 명령을 읽고 (Fetch), 해석하고 (Decode), 실행 (Execute) 하는 사이클을 반복하는 시스템입니다.