CPU(중앙처리장치, Central Processing Unit)는 컴퓨터의 두뇌 역할을 하는 핵심 부품이다.
모든 프로그램과 연산을 수행하며, 키보드 입력부터 게임 실행까지 모든 작업을 컨트롤한다.
CPU는 연산 장치(ALU), 제어 장치(CU), 레지스터(Register) 등으로 구성된다.
CPU는 명령어 실행 사이클(Instruction Cycle)을 반복하며 작동한다.
1️⃣ 명령어 가져오기 (Fetch)
2️⃣ 명령어 해석 (Decode)
3️⃣ 명령어 실행 (Execute)
4️⃣ 결과 저장 (Store)
⚡ TIP: 이 과정을 초당 수십억 번 반복하는 것이 CPU의 성능을 결정하는 핵심 요소!
💡 CPU가 데이터를 처리하는 과정
1. RAM(메모리) → 데이터 저장 (느림, 대용량)
2. 캐시(Cache) → 자주 쓰는 데이터 저장 (빠름)
3. 레지스터(Register) → 즉시 연산을 수행 (가장 빠름)
🛠️ 속도 비교
💾 저장 위치 | 🚀 속도 | 🛠️ 역할 |
---|---|---|
레지스터 | ✅ 초고속 | CPU가 직접 연산 |
캐시(Cache) | 🔥 매우 빠름 | 자주 쓰는 데이터 저장 |
RAM(메모리) | 🛑 상대적으로 느림 | 프로그램 실행을 위한 데이터 저장 |
SSD/HDD | 🐌 느림 | 장기 저장소 |
💡 비유하면?
레지스터 = 손 안에 있는 메모장 (즉시 확인 가능!)
캐시 = 주머니 속의 작은 노트 (빠르게 꺼낼 수 있음!)
RAM = 가방 속 노트북 (꺼내려면 시간이 걸림!)
HDD/SSD = 도서관 (찾아가서 꺼내는 데 시간이 필요함!)
💡 레지스터는 CPU 내부에서 연산을 수행하는 "초고속 메모리"
✅ CPU가 데이터를 연산하려면 메모리에서 데이터를 가져와서 계산해야 한다
✅ 하지만 일반적인 RAM(메모리)보다 CPU 내부의 레지스터가 훨씬 빠름
✅ 그래서 CPU는 중요한 데이터를 레지스터에 저장하고 빠르게 연산함
CPU에는 여러 종류의 레지스터가 있음.
각 레지스터는 특정한 역할을 담당함.
레지스터 | 역할 |
---|---|
일반 레지스터 (GPR, General-Purpose Register) | 연산 및 데이터 저장 |
명령어 레지스터 (IR, Instruction Register) | 현재 실행 중인 명령어 저장 |
프로그램 카운터 (PC, Program Counter) | 다음 실행할 명령어의 메모리 주소 저장 |
스택 포인터 (SP, Stack Pointer) | 스택의 최상단 주소 저장 |
플래그 레지스터 (FR, Flag Register) | 연산 결과 상태 저장 (예: Carry, Zero, Overflow) |
메모리 주소 레지스터 (MAR, Memory Address Register) | 명령어를 저장할 메모리 주소 보관 |
메모리 버퍼 레지스터 (MBR, Memory Buffer Register) | CPU와 메모리 간 데이터 교환 |
입출력 레지스터 (I/O Register) | 입출력 장치와 데이터를 주고받을 때 사용 |
✅ 초고속 연산 → CPU가 RAM을 거치지 않고 즉시 연산 가능
✅ 명령어 실행 속도 향상 → 프로그램 실행 속도가 빨라짐
✅ 멀티코어 & 멀티스레드 성능 개선 → 더 많은 연산을 빠르게 수행
💡 예제:
코어(Core)는 CPU 내부에서 실제 연산을 수행하는 독립적인 연산 장치다.
✅ 하나의 코어는 하나의 작업(명령어 흐름)을 실행 가능
✅ 멀티코어 CPU는 여러 개의 작업을 동시에 처리할 수 있음
CPU 유형 | 코어 수 | 동시 실행 가능 작업 수 |
---|---|---|
싱글코어 | 1개 | 1개 |
듀얼코어 | 2개 | 2개 |
쿼드코어 | 4개 | 4개 |
옥타코어 | 8개 | 8개 |
✅ 멀티태스킹 성능 향상 → 여러 작업을 동시에 실행 가능
✅ 고성능 연산 가능 → 게임, 영상 편집, AI 연산 등 고부하 작업 처리
✅ 소비 전력 효율 증가 → 다중 작업 시 전력 효율적으로 동작
스레드(Thread)는 CPU 코어가 처리하는 작업의 최소 실행 단위이다.
✅ 하나의 코어는 기본적으로 한 개의 스레드를 실행
✅ 멀티스레딩(Multi-Threading) 기술을 사용하면 한 개의 코어에서 여러 개의 스레드를 처리 가능
구분 | 물리 코어 | 논리 코어 (하이퍼스레딩/SMT) |
---|---|---|
설명 | 실제 존재하는 CPU 코어 | 1개 코어에서 2개 이상의 스레드 실행 가능 |
예시 | 인텔 i5(6코어 6스레드) | 인텔 i7(6코어 12스레드) |
동시 처리량 | 코어 개수만큼 스레드 실행 | 1코어당 2스레드 실행 가능 |
하이퍼스레딩(SMT, Simultaneous Multi-Threading)
- 1개의 물리 코어를 2개의 논리 코어처럼 사용 가능
- 멀티스레드 성능 향상 → 프로그램 실행 속도 증가
인터럽트(Interrupt)는 CPU가 작업을 수행하는 도중 긴급한 요청이 발생했을 때 기존 작업을 중단하고 해당 요청을 우선 처리하는 메커니즘이다.
✅ CPU가 현재 실행 중인 작업을 멈추고 중요한 요청을 먼저 처리
✅ 사용자 입력, 하드웨어 요청, 시스템 호출 등 다양한 원인으로 발생
CPU는 한 번에 하나의 작업만 처리할 수 있기 때문에,
중요한 요청이 있을 때 CPU가 이를 빠르게 감지하고 처리해야 한다.
❌ 키보드를 눌러도 CPU가 확인할 때까지 반응 없음
❌ 네트워크 데이터가 와도 CPU가 주기적으로 확인해야 함 (비효율적)
❌ 시스템 속도가 느려지고, 여러 작업을 동시에 처리하기 어려움
✅ 키 입력, 마우스 움직임이 즉시 반응 가능
✅ 네트워크 데이터가 들어오면 즉시 처리
✅ 입출력 장치와의 원활한 상호작용 가능
인터럽트는 크게 하드웨어 인터럽트와 소프트웨어 인터럽트로 나뉜다.
💡 외부 장치(입출력 장치)가 CPU에게 요청하는 인터럽트
💡 프로그램이 직접 발생시키는 인터럽트
💡 인터럽트가 발생하면 CPU는 다음과 같은 과정을 거쳐서 처리한다.
1️⃣ 현재 작업을 멈춘다.
2️⃣ 현재 상태(작업 정보)를 저장한다.
3️⃣ 인터럽트 요청을 확인한다.
4️⃣ 인터럽트 핸들러(Interrupt Handler)를 실행한다.
5️⃣ 인터럽트 처리가 끝나면 원래 작업으로 돌아간다.
📌 예제: 키보드 입력
- 사용자가 키보드를 누르면 키보드 컨트롤러가 CPU에게 인터럽트 요청
- CPU는 현재 작업을 멈추고 키 입력을 읽어서 화면에 표시
- 입력 처리가 끝나면 다시 원래 작업을 수행
인터럽트가 없다면 폴링(Polling)이라는 방법을 사용해야 한다.
하지만 인터럽트 방식이 더 효율적이다.
구분 | 폴링 (Polling) | 인터럽트 (Interrupt) |
---|---|---|
동작 방식 | CPU가 주기적으로 장치를 확인 | 장치가 필요할 때만 CPU를 호출 |
CPU 사용량 | 불필요한 반복 작업 많음 | 필요한 순간에만 동작 (효율적) |
반응 속도 | 느림 | 빠름 |
예시 | 오래된 키보드 입력 방식 | 현대적인 입력 시스템 |
✅ 결론:
✔ 인터럽트(Interrupt) = CPU가 현재 작업을 멈추고 긴급한 요청을 처리하는 메커니즘
✔ 하드웨어 인터럽트 = 키보드, 마우스, 네트워크 등 외부 장치의 요청
✔ 소프트웨어 인터럽트 = 시스템 호출, 예외 처리 등 프로그램 내부에서 발생
✔ 인터럽트는 CPU가 불필요한 반복 작업 없이 빠르게 요청을 처리할 수 있도록 해줌
✔ 폴링(Polling)보다 인터럽트 방식이 더 효율적
💡 CPU에서 여러 개의 명령어를 동시에 실행하는 기법!
✅ 기존에는 한 번에 하나의 명령어만 처리했지만,
✅ 파이프라이닝을 사용하면 여러 명령어를 겹쳐서 실행 가능!
💡 비유: 자동차 공장에서 조립 과정
1️⃣ 전통적인 방식 (직렬 처리)
2️⃣ 파이프라이닝 방식 (병렬 처리)
💡 즉, CPU도 명령어를 여러 단계로 나눠서 동시에 처리함!
CPU(중앙처리장치)는 명령어(Instruction)를 실행하는 역할을 한다.
그런데 CPU의 명령어를 설계하는 방식에는 CISC와 RISC 두 가지가 있다.
💡 "복잡한 명령어 집합 컴퓨팅"
CPU가 한 번에 많은 일을 할 수 있도록 복잡한 명령어를 포함하는 설계 방식
📌 특징
📌 예시
MULT A, B
→ A와 B를 곱하는 복잡한 명령어 📌 사용되는 CPU 아키텍처
📌 어디서 사용될까?
💡 "간단한 명령어 집합 컴퓨팅"
CPU가 단순하고 빠른 명령어를 사용하여 실행 속도를 최적화하는 설계 방식
📌 특징
📌 예시
LOAD A, X
→ 메모리 X에서 A로 데이터 로드 MUL A, B
→ A와 B를 곱하기 📌 사용되는 CPU 아키텍처
📌 어디서 사용될까?
구분 | CISC | RISC |
---|---|---|
명령어 개수 | 많고 복잡함 | 적고 단순함 |
명령어 실행 시간 | 길어질 수 있음 | 빠름 (1 클럭에 실행) |
하드웨어 설계 | 복잡함 (회로가 큼) | 단순함 (전력 효율적) |
전력 소비 | 높음 | 낮음 |
사용처 | 데스크탑, 서버 (x86) | 스마트폰, 임베디드 (ARM) |
✅ CISC는 강력한 연산 능력이 필요할 때 유리
✅ RISC는 저전력, 고효율이 필요한 모바일 기기에서 유리
💡 그래서 요즘은 두 개의 장점을 결합하는 방식이 많다
예를 들어, 애플 M1/M2/M3 칩은 RISC(ARM 기반)지만 고성능 코어를 포함하고 있음
🔹 CISC → 강력한 성능이 필요한 데스크탑, 서버
🔹 RISC → 저전력, 고효율이 중요한 스마트폰, 임베디드 시스템