중앙처리장치(CPU) 작동 원리 (How CPU Works)
한눈에 보기
CPU가 명령어를 인출, 해독, 실행하는 기본 사이클부터 파이프라이닝과 세 가지 위험, 분기 예측, 비순차 실행, 멀티코어 전환의 배경까지 현대 CPU의 성능 원리를 정리한다.
최종 업데이트 2026.09.17
중앙처리장치(CPU, Central Processing Unit)는 기억장치에서 명령어를 하나씩 가져와 해석하고 실행하는 과정을 반복하며 프로그램을 수행하는 장치다. CPU의 동작은 인출, 해독, 실행이라는 기본 사이클로 요약되지만, 현대 프로세서는 여기에 파이프라이닝, 분기 예측, 비순차 실행, 멀티코어 같은 기법을 겹겹이 쌓아 같은 사이클 개념을 수십 배 빠르게 수행한다. 이 문서는 기본 구조에서 출발해 현대 CPU가 성능을 끌어올리는 원리까지 단계적으로 정리한다.
CPU의 내부 구성
CPU는 산술논리연산장치(ALU, Arithmetic Logic Unit), 제어장치(Control Unit), 레지스터(register) 집합으로 구성된다. ALU는 산술 연산과 논리 연산을 실제로 수행하는 회로이고, 제어장치는 명령어를 해석해 ALU, 레지스터, 버스에 제어 신호를 보내는 지휘자다. 레지스터 중에서는 다음 실행할 명령어의 주소를 담는 프로그램 카운터(PC, Program Counter), 방금 가져온 명령어를 담는 명령어 레지스터(IR, Instruction Register), 연산 결과의 상태(자리올림, 0 여부 등)를 담는 상태 레지스터가 핵심 역할을 한다.
CPU의 모든 동작은 클럭(clock) 신호에 맞추어 진행된다. 클럭 주파수가 3GHz라면 1초에 30억 번의 박자가 있다는 뜻이지만, 실제 성능은 클럭만이 아니라 한 사이클에 처리하는 명령어 수(IPC, Instructions Per Cycle)에 함께 좌우되므로 클럭 수치만으로 CPU를 비교할 수 없다.
명령어 실행의 기본 흐름
프로그램은 기계어 명령어의 나열로 기억장치에 저장되어 있고, CPU는 다음 순서를 반복한다. 먼저 인출(fetch) 단계에서 PC가 가리키는 주소의 명령어를 가져와 IR에 담고 PC를 다음 명령어 위치로 증가시킨다. 해독(decode) 단계에서는 제어장치가 명령어의 연산 코드(opcode)와 피연산자(operand)를 해석한다. 실행(execute) 단계에서는 ALU 연산, 메모리 접근, 분기 같은 실제 동작을 수행하고, 필요하면 결과를 레지스터나 메모리에 기록한다.
분기 명령어는 조건에 따라 PC를 다른 주소로 바꾸어 실행 흐름을 옮긴다. if문과 반복문이 기계 수준에서는 모두 이 분기 명령어로 구현되며, 함수 호출은 복귀 주소를 저장한 뒤 분기하는 동작으로 이루어진다.
파이프라이닝과 그 걸림돌
파이프라이닝(pipelining)은 인출, 해독, 실행 같은 단계를 공장 조립 라인처럼 겹쳐서, 한 명령어가 해독되는 동안 다음 명령어를 인출하는 기법이다. 이상적으로는 매 사이클마다 명령어 하나가 완료되지만, 현실에는 흐름을 막는 위험(hazard)이 있다.
| 위험 종류 | 원인 | 대표 해결책 |
|---|---|---|
| 구조적 위험(structural hazard) | 두 명령어가 같은 하드웨어 자원을 동시에 요구 | 자원 복제, 명령어와 데이터 캐시 분리 |
| 데이터 위험(data hazard) | 앞 명령어의 결과를 뒤 명령어가 아직 준비되기 전에 사용 | 결과를 미리 건네주는 포워딩(forwarding), 지연 삽입 |
| 제어 위험(control hazard) | 분기 결과가 나오기 전에 다음 명령어를 정해야 함 | 분기 예측(branch prediction), 예측 실패 시 파이프라인 비우기 |
특히 제어 위험을 다루는 분기 예측은 현대 CPU 성능의 핵심이다. 과거의 분기 이력을 학습해 조건 분기의 방향을 미리 추측하고 그 방향의 명령어를 투기적으로 실행(speculative execution)하는데, 예측이 맞으면 지연이 없고 틀리면 잘못 실행한 결과를 버리고 다시 시작한다. 정렬된 배열이 정렬되지 않은 배열보다 조건 검사 반복문에서 빠르게 처리되는 고전적인 사례가 분기 예측의 효과를 보여준다.
현대 CPU의 성능 기법
현대의 고성능 코어는 한 사이클에 여러 명령어를 동시에 발행하는 슈퍼스칼라(superscalar) 구조이며, 명령어를 프로그램 순서대로가 아니라 피연산자가 준비된 순서대로 실행하는 비순차 실행(out-of-order execution)을 수행한다. 결과는 재정렬 버퍼를 거쳐 프로그램 순서대로 반영되므로, 프로그래머에게는 순서대로 실행된 것처럼 보인다. 여기에 하나의 물리 코어가 두 개의 스레드 문맥을 유지하며 유휴 실행 자원을 채우는 동시 멀티스레딩(SMT, Simultaneous Multithreading, Intel의 Hyper-Threading)이 더해진다.
단일 코어의 클럭을 계속 올리면 전력과 발열이 감당할 수 없이 커지기 때문에, 2000년대 중반 이후 업계는 코어 수를 늘리는 멀티코어(multi-core)로 방향을 틀었다. 이는 소프트웨어가 병렬 처리를 활용해야만 성능이 늘어난다는 뜻이며, 멀티스레드 프로그래밍과 동기화가 개발자의 필수 소양이 된 배경이다. 또한 CPU와 주기억장치의 속도 격차를 메우는 L1, L2, L3 캐시 계층이 없다면 위의 모든 기법은 메모리 대기 시간에 묻혀 버리므로, 캐시 친화적인 코드 작성이 실무 성능 최적화의 출발점이 된다.
면접에서 이렇게 물어본다
- CPU가 명령어 하나를 실행하는 과정을 인출, 해독, 실행 단계로 설명해보시오.
- 파이프라이닝이 성능을 높이는 원리와 세 가지 위험(hazard)을 설명해보시오.
- 분기 예측이 왜 필요하며 예측이 실패하면 어떤 비용이 발생하는지 말해보시오.
- 클럭 주파수만으로 CPU 성능을 비교할 수 없는 이유를 설명해보시오.
- 싱글 코어 성능 향상이 한계에 부딪혀 멀티코어로 전환된 배경과 그것이 소프트웨어 개발에 미친 영향을 설명해보시오.
컴퓨터 구조에서 같이 읽기
- ARM 프로세서 (ARM Processor)RISC 철학 기반 ARM 프로세서의 설계 원칙과 적재 저장 구조, x86과의 비교, AArch64 세대 구분, Apple Silicon과 AWS Graviton 등 서버 칩으로의 확장 흐름까지 정리한다.
- 캐시 메모리 (Cache Memory)CPU와 주기억장치의 속도 차이를 메우는 캐시 메모리의 원리를 다룬다. 메모리 계층 구조, 시간과 공간 지역성, 매핑 방식 비교, 쓰기 정책과 MESI 캐시 일관성까지 정리한다.
- 컴퓨터의 구성 (Computer Components)CPU, 기억장치, 입출력장치, 시스템 버스라는 컴퓨터의 4대 구성 요소와 폰 노이만 구조를 정리한다. 메모리 계층, 인터럽트와 DMA, 하버드 구조와의 절충까지 다룬다.
- 고정 소수점과 부동 소수점 (Fixed Point and Floating Point)컴퓨터가 실수를 표현하는 고정 소수점과 부동 소수점 방식을 비교한다. IEEE 754의 비트 구성과 편향 지수, 0.1 + 0.2 오차의 원인, FP16과 bfloat16 등 최신 흐름까지 정리한다.
이 개념, 내 코드에서는 어떻게 물어볼까요
데브핏(DevFit)에 채용공고 URL을 붙여 넣고 레포지토리를 연결하면, 내가 쓴 커밋에서 예상 질문과 어필 포인트를 만듭니다. 하루 10회까지 무료입니다. 합불 판정이나 지원자 랭킹은 만들지 않고, 최종 판단은 사람이 합니다.
공고 넣고 시작하기