CPU 구성 요소와 파이프라이닝: ALU·제어 장치·레지스터의 작동 구조

CPU를 이루는 ALU, 제어 장치, 레지스터, 클럭과 파이프라이닝의 역할 및 명령어 처리 구조를 정리한다.

2026-08-14 · 최초 발행 2026-01-16

명령어는 CPU 내부에서 어떻게 처리되는가

CPU(Central Processing Unit)는 프로그램의 명령어를 해석하고 실행하는 중앙처리장치다. 내부에서는 산술논리연산장치(ALU), 제어 장치(Control Unit), 레지스터(Register)가 맞물려 명령어를 순차적으로 처리한다.

명령어 실행은 인출(Fetch), 해독(Decode), 실행(Execute), 저장(Store)으로 이어지는 명령어 사이클을 따른다. 해독 단계에서는 제어 장치가 필요한 신호를 만들고, 실행 단계에서는 ALU가 연산을 담당하며, 결과는 레지스터에 저장된다.

CPU 핵심 구성명령어 가져오기명령어 분석연산 수행결과 저장제어 신호연산 처리데이터 저장인출(Fetch)해독(Decode)실행(Execute)저장(Store)제어 장치ALU레지스터

ALU가 수행하는 연산과 상태 판단

ALU(Arithmetic Logic Unit)는 CPU 안에서 산술 연산과 논리 연산을 수행하는 하드웨어다. 덧셈, 뺄셈, 곱셈, 나눗셈뿐 아니라 AND, OR, NOT, XOR 연산도 이곳에서 처리한다. 제어 장치의 명령에 따라 레지스터에 있는 데이터를 받아 연산한다.

구성 요소 설명 기능
산술 연산기 Adder, Subtractor 덧셈, 뺄셈 등 수치 연산
논리 연산기 Logic Gates AND, OR, NOT, XOR 연산
시프터 Shifter 비트 이동 연산
상태 플래그 Status Flags 연산 결과 상태 표시

ALU는 결과값뿐 아니라 후속 명령어가 참조할 상태 플래그도 설정한다.

  • Zero Flag(ZF): 연산 결과가 0일 때 설정
  • Carry Flag(CF): 산술 연산에서 올림이 발생할 때 설정
  • Sign Flag(SF): 연산 결과가 음수일 때 설정
  • Overflow Flag(OF): 연산 결과가 표현 범위를 초과할 때 설정

제어 신호를 만드는 방식

제어 장치는 명령어를 해석한 뒤, 각 구성 요소가 수행할 작업을 제어 신호로 전달한다. CPU의 동작 순서와 실행 대상을 조율하는 역할을 맡는다.

하드와이어드 제어(Hardwired Control)는 논리 회로로 제어 신호를 직접 생성한다. 빠른 실행 속도와 높은 효율성이 장점이지만, 설계가 복잡해지고 변경 유연성이 낮다.

마이크로프로그램 제어(Microprogrammed Control)는 제어 메모리에 저장된 마이크로 명령어를 바탕으로 제어 신호를 생성한다. 설계 변경이 쉽고 복잡한 명령어를 구현할 수 있지만, 상대적으로 느리고 추가 메모리가 필요하다.

마이크로프로그램 제어명령어 레지스터제어 주소 생성제어 메모리마이크로 명령어제어 신호 출력하드와이어드 제어명령어 레지스터조합 논리 회로제어 신호 출력

레지스터를 거치는 명령어와 데이터

레지스터는 CPU 내부에 있는 가장 빠른 저장 장치다. 명령어 실행에 필요한 데이터와 주소를 임시 보관하며, 메모리 계층 구조에서는 최상위에 위치한다. 접근 시간은 나노초 단위다.

레지스터 약어 기능
프로그램 카운터 PC 다음 실행할 명령어 주소 저장
명령어 레지스터 IR 현재 실행 중인 명령어 저장
누산기 ACC 연산 결과 임시 저장
메모리 주소 레지스터 MAR 메모리 접근 주소 저장
메모리 버퍼 레지스터 MBR 메모리와 주고받는 데이터 저장
상태 레지스터 SR CPU 상태 플래그 저장
범용 레지스터 GPR 다목적 데이터 저장

명령어 인출 과정에서는 PC의 주소가 MAR로 전달되고, 주기억장치에서 읽어 온 명령어가 MBR과 IR을 거쳐 제어 장치로 전달된다.

제어 장치명령어 레지스터메모리 버퍼 레지스터주기억장치메모리 주소 레지스터프로그램 카운터제어 장치명령어 레지스터메모리 버퍼 레지스터주기억장치메모리 주소 레지스터프로그램 카운터주소 전송메모리 접근명령어 전송명령어 저장명령어 해독PC 증가

클럭이 정하는 실행 리듬

클럭은 CPU 내부 구성 요소를 동기화하는 신호이며, CPU의 동작 속도를 결정한다. 클럭 속도는 헤르츠(Hz)로 측정하고 현대 CPU는 GHz 단위의 클럭 속도를 제공한다.

명령어 하나를 실행하는 데 필요한 클럭 사이클 수는 CPI(Cycles Per Instruction)다. CPU 실행 시간은 다음 식으로 표현한다.

CPU 실행 시간 = 명령어 수 × CPI × 클럭 사이클 시간

클럭 속도는 무한정 높일 수 없다. 높은 클럭은 전력 소비와 발열을 늘리고, P = CV²f에서 보듯 전력은 주파수(f)에 비례해 증가한다. 회로 안에서 신호가 전파되는 시간에도 물리적 한계가 있다.

파이프라인에 명령어를 겹쳐 넣는 구조

파이프라이닝(Pipelining)은 명령어 실행을 여러 스테이지로 나눠 여러 명령어를 동시에 처리하는 기법이다. 각 단계가 독립적으로 동작하면서 처리량(Throughput)을 높이는 방식이다.

001122334455667IFIDIFEXIDIFMEMEXIDWBMEMEXWBMEMWB명령어1명령어2명령어35단계 파이프라인 실행 다이어그램
단계 이름 기능
IF Instruction Fetch 메모리에서 명령어 인출
ID Instruction Decode 명령어 해독 및 레지스터 읽기
EX Execute ALU에서 연산 수행
MEM Memory Access 메모리 접근(Load/Store)
WB Write Back 결과를 레지스터에 저장

파이프라인의 흐름을 방해하는 해저드(Hazard)도 고려해야 한다. 구조적 해저드(Structural Hazard)는 같은 하드웨어 자원을 동시에 사용하려 할 때 생기며, 하드웨어 복제나 자원 분리로 대응한다. 데이터 해저드(Data Hazard)는 명령어 사이의 데이터 의존성에서 발생하고 포워딩(Forwarding) 또는 스톨(Stall)로 해결한다. 제어 해저드(Control Hazard)는 분기 명령어 때문에 다음 명령어 주소가 불확실할 때 발생하며, 분기 예측(Branch Prediction)이나 지연 분기(Delayed Branch)를 사용한다.

파이프라인의 효율성은 다음 식으로 측정한다.

스피드업 = n / (1 + (k-1)/n)

여기서 n은 명령어 수이고 k는 파이프라인 스테이지 수다. 이상적인 경우 스피드업은 스테이지 수에 수렴한다.

CPU 내부 구성 요소의 연결

클럭은 제어 장치, ALU, 레지스터 세트에 동기화 신호를 보낸다. 제어 장치는 ALU와 레지스터에 제어 신호를 전달하고, ALU는 ACC 및 GPR과 데이터를 주고받는다. 메모리 접근에서는 MAR이 주소를, MBR이 데이터를 시스템 버스와 교환한다.

CPU 내부 구조레지스터 세트동기화 신호동기화 신호제어 신호데이터데이터주소데이터메모리 접근동기화 신호제어 신호제어 장치(Control Unit)산술논리연산장치(ALU)PCIRMARMBRACCGPR클럭생성기주기억장치시스템 버스

클럭 한계를 넘어선 CPU 설계

클럭 속도의 물리적 한계를 넘기 위해 여러 코어를 하나의 칩에 집적하는 멀티코어 프로세서가 채택됐다. CPU와 GPU, NPU처럼 특화된 프로세서를 결합하는 이기종 컴퓨팅도 특정 워크로드에 맞춘 처리를 가능하게 한다. 전력 소비 대비 성능(Performance per Watt)은 CPU 설계에서 중요한 지표가 됐다.

ALU, 제어 장치, 레지스터는 클럭 신호에 동기화되어 명령어를 처리하고, 파이프라이닝은 그 처리 효율을 높인다. 이 기본 구조를 이해하면 소프트웨어가 실행되는 경로와 CPU 설계의 제약을 함께 볼 수 있다.

CPU컴퓨터구조ALU제어장치레지스터파이프라이닝