CPU란?
CPU(Central Processing Unit)는 중앙처리장치라는 뜻으로, 컴퓨터 시스템에서 명령어를 해석하고 실행하는 가장 핵심적인 부품이다.
모든 프로그램과 작업은 결국 CPU를 거쳐 실행되며, 이러한 이유로 CPU는 흔히 '컴퓨터의 두뇌'라고 불린다.
CPU의 주요 역할
구분 | 설명 |
명령어 처리 | 메모리에 저장된 명령어를 읽고 해석하여 실행한다 |
연산 수행 | 덧셈, 뺄셈과 같은 산술 연산, 비교, 논리 연산 등을 수행한다 |
제어 기능 | 메모리와 입출력 장치 등 주변 장치와 데이터를 주고받으며 전체 흐름을 제어한다 |
CPU의 핵심 구성 요소
CPU 내부는 다음 세 가지 구성요소로 이루어져 있다:
- ALU (산술 논리 장치) : 실제 계산과 논리 연산을 수행하는 장치로, CPU의 핵심 처리 유닛 중 하나다.
- 제어 장치 (Control Unit) : 명령어를 해석하고, CPU 내 각 구성 요소가 어떤 일을 해야 하는지 지시한다.
- 레지스터 (Register) : 연산에 필요한 데이터나 주소를 임시로 저장하는 고속 저장장치다.
ALU - 산술 논리 장치
ALU(Arithmetic Logic Unit)는 CPU 내부에서 실제 연산을 담당하는 핵심 구성요소다. 이름 그대로 산술 연산(Arithmetic)과 논리 연산(Logic)을 수행하며, 컴퓨터가 계산을 한다는 의미는 곧 ALU가 동작하고 있다는 뜻이다.
ALU가 처리하는 연산의 종류
연산 유형 | 설명 |
산술 연산 | 덧셈, 뺄셈, 곱셈, 나눗셈 등의 계산 |
논리 연산 | AND, OR, NOT, XOR 등의 비트 단위 연산 |
비교 연산 | 두 값을 비교하여 크거나 같음 등의 결과를 도출 |
ALU의 연산 과정
ALU는 외부에서 데이터를 전달받아 연산을 수행하고, 그 결과를 레지스터에 임시 저장한다. 이렇게 임시 저장하는 이유는 다음 명령에서 그 결과를 재사용하거나, 메모리로 값을 전달하기 전에 중간 결과를 유지할 필요가 있기 때문이다.
예를 들어 3 + 5라는 연산을 수행한다면, 다음과 같은 흐름이 된다:
- 레지스터 A에 3을 저장
- 레지스터 B에 5를 저장
- ALU가 ⟪A + B⟫ 연산을 수행
- 결과값을 결과 레지스터에 저장
상태 플래그(Flag)
ALU는 단순히 계산만 하는 것이 아니라, 결과에 대한 상태 정보도 함께 제공한다. 이러한 정보는 CPU의 제어 장치가 다음 동작을 결정할 때 참고된다. 대표적인 플래그는 다음과 같다:
플래그 종류 | 의미 |
Zero Flag | 결과가 0이면 1, 아니면 0 |
Carry Flag | 덧셈에서 자리올림이 발생했는지 여부 |
Overflow Flag | 부호 있는 수에서 오버플로우가 발생했는지 |
Negative Flag | 결과가 음수인지 여부 |
실제 연산 예시 (4비트 기준)
- 예시 1: 3 + 5
- 이진수: 0011 + 0101 = 1000
- 결과: 8, 정상 연산, 오버플로우 없음
- 예시 2: 7 + 9
- 이진수: 0111 + 1001 = 0000 (4비트 기준, 자리올림 발생)
- 결과: 0, 오버플로우 발생
- Carry Flag: 1, Overflow Flag: 1
제어 장치
제어 장치(Control Unit)는 CPU 내부에서 전체 작업의 흐름을 지휘하는 역할을 한다.
ALU가 계산을 담당한다면, 제어 장치는 무엇을 계산해야 하는지, 언제 계산해야 하는지, 어디서 값을 가져오고 어디에 저장해야 하는지를 결정한다.
제어 장치의 핵심 역할
제어 장치는 다음과 같은 작업을 수행한다:
역할 | 설명 |
명령어 해석 | 메모리에서 읽어온 명령어를 해석하고 연산 종류 및 처리 순서를 결정한다 |
신호 생성 | ALU, 레지스터, 메모리, 입출력 장치 등에 제어 신호를 전달해 동작을 조율한다 |
흐름 제어 | 프로그램 실행 흐름(조건 분기, 반복 등)을 제어한다 |
제어 장치는 어떻게 작동할까?
- 명령어 레지스터(IR)에 명령어가 로드되면
- 제어 장치는 해당 명령어의 연산 코드(Opcode)를 해석한다
- 어떤 연산을 수행할지, 어떤 레지스터를 사용할지, 어떤 메모리 주소를 참조할지 결정한다
- 각 구성 요소에 제어 신호(Control Signal)를 보내 동작을 수행하게 한다
제어 장치가 없다면?
ALU와 레지스터만으로는 아무 일도 일어나지 않는다.
어떤 값을 계산해야 하는지, 어떤 타이밍에 어떤 신호를 보내야 하는지 알려주는 지휘자가 없다면 컴퓨터는 작동할 수 없다.
따라서 제어 장치는 CPU 내에서 논리적 흐름을 담당하는 중심축이라 할 수 있다.
레지스터
레지스터(Register)는 CPU 내부에 위치한 초고속 저장 장치다.
RAM보다 훨씬 빠르며, 매우 적은 용량만을 가지고 있지만, 그만큼 CPU가 가장 빠르게 접근할 수 있는 기억장치다.
레지스터의 특징
- 매우 빠르다 (CPU 내부에 직접 위치)
- 용량이 작다 (일반적으로 수십~수백 바이트 수준)
- 데이터를 임시로 저장한다 (계산 중간 결과, 명령어 주소 등)
레지스터는 왜 필요할까?
CPU는 연산을 위해 끊임없이 데이터를 주고받아야 한다.
이때마다 RAM처럼 느린 메모리를 접근하면 전체 속도가 느려지기 때문에, 가장 자주 사용하는 값은 레지스터에 미리 올려두고 처리한다.
즉, 레지스터는 연산과 제어의 효율을 극대화하기 위한 필수 자원이다.
레지스터의 종류
레지스터는 용도에 따라 다음과 같이 구분된다:
구분 | 설명 |
일반 목적 레지스터 | 계산에 사용되는 값들을 임시 저장 (예: A, B, C, D 등) |
특수 목적 레지스터 | 특정 기능을 수행하는 레지스터 |
스택 관련 레지스터 | 함수 호출 시 스택의 위치를 추적 |
대표적인 특수 목적 레지스터
레지스터 명 | 약어 | 설명 |
프로그램 카운터 | PC | 다음 실행할 명령어의 주소 |
명령어 레지스터 | IR | 현재 실행 중인 명령어 |
메모리 주소 레지스터 | MAR | 접근할 메모리 주소 |
메모리 버퍼 레지스터 | MBR | 메모리에서 읽은 값 또는 쓸 값 |
레지스터 작동 원리
- 프로그램 카운터(PC) 다음 명령어 주소를 가리킴
- 해당 명령어가 명령어 레지스터(IR)로 이동됨
- 필요에 따라 일반 목적 레지스터에 값을 불러오거나 저장
- 계산 결과는 다시 레지스터에 저장되거나 메모리로 이동됨
범용 레지스터와 플래그 레지스터
- 범용 레지스터: 계산 및 데이터 저장 등 다양한 용도
- 플래그 레지스터: ALU의 연산 결과 상태(Zero, Overflow 등)를 저장
스택 주소 지정 방식
- 스택은 함수 호출 시 지역 변수나 복귀 주소 등을 저장하는 공간이다.
- 레지스터 중 하나가 스택 포인터 역할을 수행하며, 스택의 최상단 주소를 가리킨다.
- 이 방식은 함수 호출, 리턴, 지역 변수 처리 등에서 중요한 역할을 한다.
'CS > 컴퓨터 구조' 카테고리의 다른 글
RAM (0) | 2025.06.18 |
---|---|
CPU (2) (1) | 2025.06.18 |
컴퓨터에게 명령하기 (0) | 2025.06.17 |
컴퓨터가 사용하는 데이터 (0과 1) (0) | 2025.06.17 |
컴퓨터의 구성 요소 (1) | 2025.06.17 |