CPU 공략

taeyul_de·2025년 2월 5일
0

CPU란? 컴퓨터의 두뇌, 제대로 알아보자!

CPU란 무엇인가?

CPU(중앙처리장치, Central Processing Unit)는 컴퓨터의 두뇌 역할을 하는 핵심 부품이다.
모든 프로그램과 연산을 수행하며, 키보드 입력부터 게임 실행까지 모든 작업을 컨트롤한다.

📌 CPU의 주요 역할

  • 연산 수행: 수학적, 논리적 연산을 처리한다.
  • 명령어 실행: 프로그램이 요구하는 작업을 수행한다.
  • 데이터 이동: 메모리와 저장 장치 간 데이터 전송을 관리한다.
  • 제어 역할: 컴퓨터의 모든 부품이 원활하게 작동하도록 명령을 내린다.

CPU의 내부 구조

CPU는 연산 장치(ALU), 제어 장치(CU), 레지스터(Register) 등으로 구성된다.

연산 장치 (ALU, Arithmetic Logic Unit)

  • 덧셈, 뺄셈, 곱셈, 나눗셈 같은 산술 연산을 담당한다.
  • 비교 연산 및 논리 연산(AND, OR, NOT)도 수행한다.

제어 장치 (CU, Control Unit)

  • CPU가 어떤 작업을 할지 결정하는 컨트롤 타워 역할을 한다.
  • 명령어를 해석하고 각 부품에 적절한 신호를 보낸다.

레지스터 (Register)

  • CPU 내부에 위치한 초고속 임시 저장 공간이다.
  • 연산 과정에서 필요한 데이터나 명령어를 일시적으로 저장한다.

CPU의 동작 과정

CPU는 명령어 실행 사이클(Instruction Cycle)을 반복하며 작동한다.

🛠 CPU 동작 과정 (4단계)

1️⃣ 명령어 가져오기 (Fetch)

  • RAM(메모리)에서 명령어를 가져온다.

2️⃣ 명령어 해석 (Decode)

  • 가져온 명령어를 분석하여 실행할 작업을 결정한다.

3️⃣ 명령어 실행 (Execute)

  • 연산 장치(ALU)가 계산을 수행하거나 데이터 이동을 실행한다.

4️⃣ 결과 저장 (Store)

  • 연산 결과를 메모리 또는 레지스터에 저장한다.

TIP: 이 과정을 초당 수십억 번 반복하는 것이 CPU의 성능을 결정하는 핵심 요소!


CPU와 메모리(램)의 관계

💡 CPU가 데이터를 처리하는 과정
1. RAM(메모리) → 데이터 저장 (느림, 대용량)
2. 캐시(Cache) → 자주 쓰는 데이터 저장 (빠름)
3. 레지스터(Register) → 즉시 연산을 수행 (가장 빠름)

🛠️ 속도 비교

💾 저장 위치🚀 속도🛠️ 역할
레지스터✅ 초고속CPU가 직접 연산
캐시(Cache)🔥 매우 빠름자주 쓰는 데이터 저장
RAM(메모리)🛑 상대적으로 느림프로그램 실행을 위한 데이터 저장
SSD/HDD🐌 느림장기 저장소

💡 비유하면?

레지스터 = 손 안에 있는 메모장 (즉시 확인 가능!)
캐시 = 주머니 속의 작은 노트 (빠르게 꺼낼 수 있음!)
RAM = 가방 속 노트북 (꺼내려면 시간이 걸림!)
HDD/SSD = 도서관 (찾아가서 꺼내는 데 시간이 필요함!)


CPU 레지스터(Register)

레지스터(Register)란?

💡 레지스터는 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을 거치지 않고 즉시 연산 가능
명령어 실행 속도 향상 → 프로그램 실행 속도가 빨라짐
멀티코어 & 멀티스레드 성능 개선 → 더 많은 연산을 빠르게 수행

💡 예제:

  • 레지스터가 많을수록 CPU가 더 많은 데이터를 동시에 처리 가능
  • 고성능 CPU(예: i9, Ryzen 9)는 더 큰 레지스터와 고급 연산 기능을 갖춤

📌 레지스터의 특징

  • CPU 내부에 존재 → 초고속 접근 가능
  • CPU가 직접 접근하는 저장소 → RAM보다 빠름
  • 크기가 매우 작음 (일반적으로 몇 바이트~몇십 바이트 수준)
  • 데이터를 오래 보관하지 않고 연산이 끝나면 바로 삭제됨

** 코어(Core)

📌 코어란?

코어(Core)는 CPU 내부에서 실제 연산을 수행하는 독립적인 연산 장치다.
✅ 하나의 코어는 하나의 작업(명령어 흐름)을 실행 가능
멀티코어 CPU는 여러 개의 작업을 동시에 처리할 수 있음

📌 싱글코어 vs 멀티코어

CPU 유형코어 수동시 실행 가능 작업 수
싱글코어1개1개
듀얼코어2개2개
쿼드코어4개4개
옥타코어8개8개

📌 멀티코어 CPU의 장점

멀티태스킹 성능 향상 → 여러 작업을 동시에 실행 가능
고성능 연산 가능 → 게임, 영상 편집, AI 연산 등 고부하 작업 처리
소비 전력 효율 증가 → 다중 작업 시 전력 효율적으로 동작


** 스레드(Thread)

📌 스레드란?

스레드(Thread)는 CPU 코어가 처리하는 작업의 최소 실행 단위이다.
✅ 하나의 코어는 기본적으로 한 개의 스레드를 실행
멀티스레딩(Multi-Threading) 기술을 사용하면 한 개의 코어에서 여러 개의 스레드를 처리 가능


📌 물리 코어 vs 논리 코어 (하이퍼스레딩, SMT)

구분물리 코어논리 코어 (하이퍼스레딩/SMT)
설명실제 존재하는 CPU 코어1개 코어에서 2개 이상의 스레드 실행 가능
예시인텔 i5(6코어 6스레드)인텔 i7(6코어 12스레드)
동시 처리량코어 개수만큼 스레드 실행1코어당 2스레드 실행 가능

하이퍼스레딩(SMT, Simultaneous Multi-Threading)

  • 1개의 물리 코어를 2개의 논리 코어처럼 사용 가능
  • 멀티스레드 성능 향상 → 프로그램 실행 속도 증가

** CPU, 코어, 스레드의 관계

📌 CPU 연산 처리 과정

  1. 프로그램 실행 → 여러 개의 명령어(스레드)가 CPU에 전달됨
  2. 스레드 분배 → OS(운영체제)가 스레드를 각 코어에 배분
  3. 코어가 스레드 실행 → 각 코어는 스레드를 처리하고 연산 수행
  4. 결과 반환 → 연산이 끝나면 결과를 저장하고 다음 작업 실행

인터럽트(Interrupt)

인터럽트란?

인터럽트(Interrupt)는 CPU가 작업을 수행하는 도중 긴급한 요청이 발생했을 때 기존 작업을 중단하고 해당 요청을 우선 처리하는 메커니즘이다.
✅ CPU가 현재 실행 중인 작업을 멈추고 중요한 요청을 먼저 처리
✅ 사용자 입력, 하드웨어 요청, 시스템 호출 등 다양한 원인으로 발생


인터럽트가 필요한 이유

CPU는 한 번에 하나의 작업만 처리할 수 있기 때문에,
중요한 요청이 있을 때 CPU가 이를 빠르게 감지하고 처리해야 한다.

📌 인터럽트가 없으면?

❌ 키보드를 눌러도 CPU가 확인할 때까지 반응 없음
❌ 네트워크 데이터가 와도 CPU가 주기적으로 확인해야 함 (비효율적)
❌ 시스템 속도가 느려지고, 여러 작업을 동시에 처리하기 어려움

📌 인터럽트가 있으면?

✅ 키 입력, 마우스 움직임이 즉시 반응 가능
✅ 네트워크 데이터가 들어오면 즉시 처리
✅ 입출력 장치와의 원활한 상호작용 가능


인터럽트의 종류

인터럽트는 크게 하드웨어 인터럽트소프트웨어 인터럽트로 나뉜다.

🔹 하드웨어 인터럽트 (Hardware Interrupt)

💡 외부 장치(입출력 장치)가 CPU에게 요청하는 인터럽트

  • 예시:
    • 키보드를 누르면 → CPU가 키 입력을 처리
    • 마우스를 움직이면 → CPU가 마우스 좌표 업데이트
    • 네트워크 데이터 수신 시 → CPU가 데이터를 읽음
      특징: CPU가 직접 요청하는 것이 아니라 외부 장치가 CPU를 호출

🔹 소프트웨어 인터럽트 (Software Interrupt)

💡 프로그램이 직접 발생시키는 인터럽트

  • 예시:
    • 시스템 호출(System Call) → 파일 열기, 네트워크 요청
    • 예외(Exception) 처리 → 0으로 나누는 오류 발생 시 인터럽트 발생
      특징: CPU 내부에서 발생하는 인터럽트

인터럽트의 동작 과정

💡 인터럽트가 발생하면 CPU는 다음과 같은 과정을 거쳐서 처리한다.

1️⃣ 현재 작업을 멈춘다.
2️⃣ 현재 상태(작업 정보)를 저장한다.
3️⃣ 인터럽트 요청을 확인한다.
4️⃣ 인터럽트 핸들러(Interrupt Handler)를 실행한다.
5️⃣ 인터럽트 처리가 끝나면 원래 작업으로 돌아간다.

📌 예제: 키보드 입력

  • 사용자가 키보드를 누르면 키보드 컨트롤러가 CPU에게 인터럽트 요청
  • CPU는 현재 작업을 멈추고 키 입력을 읽어서 화면에 표시
  • 입력 처리가 끝나면 다시 원래 작업을 수행

인터럽트와 폴링(Polling)의 차이

인터럽트가 없다면 폴링(Polling)이라는 방법을 사용해야 한다.
하지만 인터럽트 방식이 더 효율적이다.

구분폴링 (Polling)인터럽트 (Interrupt)
동작 방식CPU가 주기적으로 장치를 확인장치가 필요할 때만 CPU를 호출
CPU 사용량불필요한 반복 작업 많음필요한 순간에만 동작 (효율적)
반응 속도느림빠름
예시오래된 키보드 입력 방식현대적인 입력 시스템

결론:

  • 폴링은 CPU가 계속 장치를 확인해야 하므로 비효율적
  • 인터럽트는 필요한 순간에만 CPU가 호출되므로 효율적

인터럽트 개념 총정리

인터럽트(Interrupt) = CPU가 현재 작업을 멈추고 긴급한 요청을 처리하는 메커니즘
하드웨어 인터럽트 = 키보드, 마우스, 네트워크 등 외부 장치의 요청
소프트웨어 인터럽트 = 시스템 호출, 예외 처리 등 프로그램 내부에서 발생
인터럽트는 CPU가 불필요한 반복 작업 없이 빠르게 요청을 처리할 수 있도록 해줌
폴링(Polling)보다 인터럽트 방식이 더 효율적


파이프라이닝(Pipelining)을 통한 명령어 병렬 처리

1️⃣ 파이프라이닝(Pipelining)이란?

💡 CPU에서 여러 개의 명령어를 동시에 실행하는 기법!
✅ 기존에는 한 번에 하나의 명령어만 처리했지만,
파이프라이닝을 사용하면 여러 명령어를 겹쳐서 실행 가능!


2️⃣ 파이프라이닝을 쉽게 이해하기

💡 비유: 자동차 공장에서 조립 과정

1️⃣ 전통적인 방식 (직렬 처리)

  • 자동차 1대를 완성한 후, 다음 자동차를 만들기 시작함
  • 🚗 → 🚗 → 🚗 (하나씩 처리)

2️⃣ 파이프라이닝 방식 (병렬 처리)

  • 자동차 조립을 여러 단계로 나눠서 동시에 진행
  • 🚗 조립 단계별로 다른 차를 동시에 만들 수 있음
  • 🛠️ 엔진 장착 | 🚗 차체 조립 | 🔧 도장 | 🏁 최종 점검

💡 즉, CPU도 명령어를 여러 단계로 나눠서 동시에 처리함!


🖥 CISC vs RISC

CPU(중앙처리장치)는 명령어(Instruction)를 실행하는 역할을 한다.
그런데 CPU의 명령어를 설계하는 방식에는 CISCRISC 두 가지가 있다.


✅ CISC (Complex Instruction Set Computing)

💡 "복잡한 명령어 집합 컴퓨팅"
CPU가 한 번에 많은 일을 할 수 있도록 복잡한 명령어를 포함하는 설계 방식

📌 특징

  • 명령어 개수가 많고, 복잡함
  • 하나의 명령어로 여러 작업을 수행 가능
  • 명령어 실행 시간이 길어질 수 있음
  • 회로(하드웨어) 설계가 복잡하고 전력 소모가 큼

📌 예시

  • MULT A, B → A와 B를 곱하는 복잡한 명령어
  • 한 번의 명령어로 메모리에서 데이터를 가져오고, 연산하고, 다시 저장 가능

📌 사용되는 CPU 아키텍처

  • 인텔 x86 (Pentium, Core i7, i9 등)
  • AMD Ryzen 시리즈

📌 어디서 사용될까?

  • 데스크탑, 노트북, 서버고성능 연산이 필요한 환경

✅ RISC (Reduced Instruction Set Computing)

💡 "간단한 명령어 집합 컴퓨팅"
CPU가 단순하고 빠른 명령어를 사용하여 실행 속도를 최적화하는 설계 방식

📌 특징

  • 명령어 개수가 적고, 단순함
  • 하나의 명령어는 작은 작업만 수행 → 실행 속도가 빠름
  • 회로 설계가 간단하고, 전력 소비가 적음
  • 여러 명령어를 조합해야 하므로 코드가 길어질 수 있음

📌 예시

  • LOAD A, X → 메모리 X에서 A로 데이터 로드
  • MUL A, B → A와 B를 곱하기
  • 모든 명령어는 고정된 실행 시간(클럭 사이클) 을 가짐

📌 사용되는 CPU 아키텍처

  • ARM (스마트폰, 태블릿, 애플 M1/M2/M3)
  • MIPS (임베디드 시스템, 라우터)
  • RISC-V (오픈소스 CPU 아키텍처)

📌 어디서 사용될까?

  • 스마트폰, 태블릿, 임베디드 시스템, 저전력 서버

🎯 CISC vs RISC 한눈에 비교!

구분CISCRISC
명령어 개수많고 복잡함적고 단순함
명령어 실행 시간길어질 수 있음빠름 (1 클럭에 실행)
하드웨어 설계복잡함 (회로가 큼)단순함 (전력 효율적)
전력 소비높음낮음
사용처데스크탑, 서버 (x86)스마트폰, 임베디드 (ARM)

🔥 CISC와 RISC, 어느 것이 더 좋은가?

CISC는 강력한 연산 능력이 필요할 때 유리
RISC는 저전력, 고효율이 필요한 모바일 기기에서 유리

💡 그래서 요즘은 두 개의 장점을 결합하는 방식이 많다
예를 들어, 애플 M1/M2/M3 칩RISC(ARM 기반)지만 고성능 코어를 포함하고 있음


✅ 결론

🔹 CISC → 강력한 성능이 필요한 데스크탑, 서버
🔹 RISC → 저전력, 고효율이 중요한 스마트폰, 임베디드 시스템

profile
이래서 되겠나 싶은 개발지망생

0개의 댓글