본문 바로가기
CS/Computer Architecture

🧠CPU(중앙처리장치) 총정리

by 박수무당벌레 2026. 5. 21.

🔗 메모1

🔗 메모2

 

0. 필수 배경지식

⚙️ 컴퓨터의 5대 구성 요소 

  • CPU (중앙처리장치): 컴퓨터의 두뇌.모든 데이터를 계산하고 컴퓨터의 움직임을 제어
  • 메모리 (주기억장치 / RAM): 지금 당장 실행 중인 프로그램과 데이터가 임시로 머무는 곳 (휘발성)
  • 저장장치 (보조기억장치 / SSD·HDD): 전원이 꺼져도 사라지지 않는 사진, 게임, 파일들을 영구적으로 보관 (비휘발성)
  • 입력장치: 키보드, 마우스
  • 출력장치: 모니터, 스피커
💡보조기억장치(Mass Storage) 추가 설명
하드디스크(HDD): 자기 디스크(플래터)를 모터로 빠르게 회전시키고, 그 위를 바늘(헤드)이 오가며 데이터를 읽고 씀.
( 실린더 판이 돌아감 + 기계적인 무브먼트, 읽고쓰는게 느림 )
SDD: '나노 플래시 메모리'라는 반도체 칩에 전기를 흘려보내 데이터를 저장 (전자식/전기식)

🏛️ 폰 노이만 구조

현대의 거의 모든 컴퓨터가 따르는 모델. 메모리에 프로그램과 데이터(예: 키값)를 같이 올려두고, CPU가 그걸 가져와서(혹은 다른 장치에게도 전달) 처리한다

  •  크게 4가지 주요 요소로 이루어져 있으며, 버스(Bus)라는 통로로 연결되어 상호작용한다
  • CPU의 역할: 제어연산을 담당. 메모리에서 명령어를 가져와 해석 하고(제어), 산술/논리 계산을 수행(연산)
  • 메모리의 역할: 실행할 프로그램과 처리에 필요한 데이터를 같은 공간에 함께 저장
  • 그외 입력, 출력 (리눅스의 터미널 구성을 따라감)
💡 리눅스의 터미널 구성: 모니터, 키보드, 모뎀 등
더보기

💡 주요 장점과 한계점, 극복 방안까지

 

1. 폰노이만 구조의 핵심과 주요 장점

폰노이만 구조는 명령어와 데이터를 하나의 메모리에 저장하는 '프로그램 내장 방식'을 적용. 하드웨어 변경 없이 소프트웨어 교체만으로 다양한 연산을 수행할 수 있게 만든 현대 컴퓨터 아키텍처의 기본 뼈대가 됨 (예: 스마트폰, PC, 슈퍼컴퓨터)

  • 과거 컴퓨터: 스위치를 일일이 조작하며 하드웨어를 다시 연결해야함
  • 현대 컴퓨터(폰 노이만 구조): 메모리에 새로운 프로그램을 적재하기만 하면 다목적으로 활용 가

2. 한계점, 극복 방안까지

명령어와 데이터를 같은 메모리에 저장함으로서 데이터를 한 번에 하나씩만 순차적으로 가져와야 하기 때문에 CPU-메모리 간의 병목 현상이 발생한다 (CPU의 처리 속도는 매우 빠름 / 메모리와 CPU를 연결하는 통로(버스)는 하나)

  • PIM: 메모리 자체에 연산 기능을 부여해 데이터 이동을 최소화
  • 캐시 메모리: CPU와 주기억장치 사이에 속도 차이를 줄이는 고속 메모리 (아래 추가 설명)

👥 멀티태스킹: 코어(Core)와 스레드(Thread)

인터넷 서핑을 하고 문서 작성을 동시에, 스케줄링 10ms 줬다 뺐기를 반복 (콘텍스트 스위칭)

  • 코어 (진짜 일꾼): CPU 내부에 있는 물리적인 연산 회로. 코어가 4개라면 실제로 '진짜 동시에' 4가지 일을 처리 가능함
  • 스레드 (가짜 일꾼 / 작업 흐름): 하나의 코어가 마치 두 명인 것처럼 나누어 일하는 논리적인 개념. 아주 빠르게 번갈아 가며 작업하기 때문에 우리 눈에는 동시에 일하는 것처럼 보임. (유닉스 다중사용자 서버OS로 부터 시작)

💡 비유하자면? "4코어 8스레드" 작업을 하는 '사람(코어)'은 4명 인데, 기술이 좋아져서 각자 양손(8스레드)'을 다 써서 작업하는 것과 같다

✨ 멀티태스킹과 멀티스레드 차이점
멀티태스킹: OS가 여러 개의 프로세스(프로그램) 를 동시에 실행하는 것 / 오류 발생시 다른 프로그램에 영향 없음 (서로 독립) / 컴퓨터 자원 많이 소모
멀티스레드: 하나의 프로세스 안에서 여러 개의 스레드(작업 단위)가 동시에 실행되는 것 / 오류 발생시 프로세스 전체가 종료될 수 있음 (같은 프로세스 내의 스레드끼리 메모리를 공유) / 통신 빠름, 데이터 전송 중에 동기화 문제 발생 가능성

🌲 컴퓨터를 움직이는 3단계 계층 구조

스마트폰 앱을 터치했을 때 일어나는 내부 구조는 크게 3단계로 나뉜다

[ 앱 (Application) ]  ← 우리가 쓰는 카카오톡, 게임 등
        ↓ (호출)
[ 운영체제 (OS) ]      ← 하드웨어를 관리하는 Windows, Android 등
        ↓ (조종)
[ 하드웨어 (Hardware) ] ← CPU, 메모리, SSD 등 물리 부품
  1. 앱 (Application): 사용자가 직접 쓰는 프로그램(게임, 웹 브라우저 등). 필요한 기능이 있으면 직접 하드웨어를 건드리지 않고 OS를 호출.
  2. 운영체제 (OS): 앱-하드웨어 사이를 중개. 앱의 요청을 받아 하드웨어를 안전하게 조종
  3. 하드웨어 : OS의 명령을 받아 실제로 전기를 흘려보내며 물리적으로 작동하는 부품

1. CPU 내부 구성 요소와 역할

CPU는 컴퓨터의 두뇌 역할을 하며, 크게 세 가지 핵심 요소로 구성된다.

  • ALU (산술논리연산장치): 실제로 덧셈, 뺄셈, 논리 연산 등을 수행하는 계산기
  • CU (제어장치): 명령어를 해석 하고 각 장치에 실행을 지시
  • 레지스터 (Register): 연산에 필요한 데이터와 명령어를 잠시 저장하는 초고속 임시 저장 공간 (64비트 크기, 휘발성)
💡 레지스터가 꼭 필요한 이유: RAM이나 SSD에서 데이터를 매번 가져오기에는 CPU의 연산 속도에 비해 너무 느림. 따라서 CPU는 당장 계산해야 할 데이터를 속도가 똑같이 빠른 '레지스터' 에 올려두고 ALU를 통해 빛의 속도로 연산 가능
→ 레지스터가 없으면? CPU는 RAM이 데이터를 보낼 때까지 아무것도 못 하고 기다려야 함.
더보기

💡 CPU-레지스터 실제 협업 예시

 

1. CPU의 3 + 5 연산 과정 (4단계)

CPU가 간단한 덧셈을 할 때도 내부에서는 다음과 같은 유기적인 단계(컴퓨터 사이클)를 거침

[RAM] ──(명령어/데이터)──> [레지스터] ──> [ALU (연산)] ──> [AC 레지스터] ──> [RAM 저장]
  1. 명령어 페치 (Fetch): CPU가 주기억장치(RAM)에서 "3과 5를 더하라"는 명령어를 가져와 IR(명령어 레지스터)에 저장합니다.
  2. 데이터 준비 (Prepare): 연산에 필요한 데이터인 숫자 '3'과 '5'를 RAM에서 가져와 CPU 내부의 일반 목적 레지스터(데이터 레지스터)에 각각 넣습니다.
  3. 연산 수행 (Execute): CPU의 계산기 역할을 하는 ALU(산술논리연산장치)가 레지스터에 저장된 3과 5를 더해 결과값 '8'을 도출합니다.
  4. 결과 저장 (Store): 연산 결과인 8을 AC(누산기) 레지스터에 임시 저장한 후, 최종적으로 RAM의 특정 주소로 보냅니다.

2. 핵심 레지스터의 종류와 역할

레지스터는 CPU 내부에서 데이터를 아주 빠르게 임시 저장하는 초고속 메모리 공간으로, 각각 역할이 뚜렷하게 나뉨

  상세 설명
프로그램 카운터 (PC) 다음에 실행할 명령어의 메모리 주소를 가리킴
명령어 레지스터 (IR) 현재 실행 중인 명령어를 저장
메모리 주소 레지스터 (MAR) 읽거나 쓰고자 하는 메모리의 위치(주소)를 잠시 기억
메모리 버퍼 레지스터 (MBR) 메모리와 주고받는 실제 데이터를 잠시 저장
누산기 (AC) ALU가 연산한 중간 결과값을 잠시 보관하는 저장소

📊 메모리 계층 구조 요약

CPU와 가까울수록 속도가 빠르고 용량이 작음.

  속도 용량 CPU와의 거리 역할
레지스터 컴퓨터에서 가장 빠름 (CPU 클럭과 동일)
몇십~몇백 바이트
(매우 작음)
CPU 내부 (ALU 직속) 현재 실행 중인 명령어와 연산 데이터를 임시 저장/탑재
캐시 메모리
(L1, L2, L3)
매우 빠름 몇 MB ~ 수십 MB CPU 내부/근처 CPU가 자주 사용할 것 같은 데이터를 RAM에서 미리 가져와 저장/복사
메인 메모리 (RAM) 보통 수 GB ~ 수십 GB CPU 외부 실행 중인 프로그램 데이터 저장/상주
✨ 제어 주체 정리
-- CPU : 컴퓨터 하드웨어(설계) 및 제어 장치가 직접 제어
-- 캐시 메모리 : 하드웨어(캐시 컨트롤러)가 자동 관리
-- RAM : 운영체제(OS) 및 소프트웨어가 관리
더보기

💡 L1 ~ L3 캐시 메모리의 차이와 각 역할 

캐시 메모리란 속도가 빠른 장치와 느린 장치 사이에서 속도차에 따른 병목 현상을 줄이기 위한 범용 메모리를 지칭

 

1. L1, L2, L3 캐시의 차이점과 나뉜 이유

  • L은 'Level' 을 의미
  • 캐시 메모리는 숫자가 작을수록(L1 쪽으로 갈수록) CPU 코어와 물리적으로 가까움 (속도 빛처럼 빨라짐+가격 비쌈+용량 작음)
  • CPU는 데이터를 찾을 때 L1 ➔ L2 ➔ L3 (1ns /3 ns /10 ns) 순서로 캐시를 뒤지며, 여기에 모두 없을 때만 RAM(메인 메모리, 100ns)으로 향함. 이를 캐시 미스(Cache Miss)라고 부름

2. 각 캐시의 구체적인 역할

  • L1 캐시 (가장 먼저 사용): CPU가 지금 당장 처리해야 하는 명령어와 데이터를 저장 (데이터 사용/참조)
    → 조금이라도 더 속도를 높이기 위해, 명령어 캐시(I-Cache)와 데이터 캐시(D-Cache)로 공간을 엄격하게 반으로 쪼개어 관리
  • L2 캐시 (L1의 백업): L1 캐시에 담기지 못한 그다음으로 중요한 데이터를 보관
    → L1 캐시의 크기 한계를 보완하는 완충 지대. L1에 원하는 데이터가 없으면 바로 L2를 확인하여 RAM까지 가는 시간을 줄여줌.
  • L3 캐시 (모든 코어가 공동 사용): 멀티코어 CPU에서 여러 개의 코어가 공통으로 자주 쓰는 데이터를 저장
    → CPU 칩 안에 있는 모든 코어가 함께 쓰는 공용. 코어끼리 데이터를 주고받을 때 RAM까지 멀리 나가지 않고 L3 캐시에서 빠르게 해결

2. CPU의 핵심 역할 2가지

  1. 연산 기능 (ALU): 산술 및 논리 연산 수행
  2. 데이터 통신: 주변장치 (하드디스크, USB, GPU 등)와의 데이터 주고받기 (우선)

버스(Bus): CPU와 주변장치들 간의 데이터 통신 통로이며, 출발지와 도착지를 '주소' 로 식별 (예: CPU - RAM, CPU - SSD)


3. CPU가 무한 반복하는 일 (명령어 사이클)

CPU안의 수많은 유닛 소자들 타이밍 맞춰주는것, 전원이 켜져 있는 동안 '가져오기 ➔ 해석하기 ➔ 실행하기' 라는 3단계 과정을 초당 수십억 번씩 무한히 반복

  1. 가져오기 (Fetch): 주기억장치(RAM)에 있는 프로그램의 명령어를 CPU 내부(레지스터)로 읽어옴.
  2. 해석하기 (Decode): 제어장치(CU)가 가져온 명령어가 어떤 작업(더하기, 저장 등)을 의미하는지 분석
  3. 실행하기 (Execute): 해석된 결과에 따라 ALU가 계산을 수행하거나 다른 장치에 명령을 내림.

💡 3GHz(클럭) CPU란? 클럭(Hz)은 CPU가 일하는 박자(심장박동)입니다. 3GHz CPU는 이 명령어 사이클 과정을 1초에 무려 30억 번 반복한다는 뜻입니다.


4. CPU와 주변장치의 통신 방식 3가지

CPU는 하드디스크를 다이렉트로 읽을 수 없기 때문에, 장치 내부의 버퍼(RX, TX)를 거쳐 데이터를 주고 받음. 이를 처리하는 방식에 따라 3가지로 나뉜다.

① 폴링 (Polling) 방식

  • 특징: CPU가 주도권을 가짐
  • 단점: CPU가 대기 상태로 낭비되어 멀티태스킹(산술 연산과 통신 병행) 효율이 떨어짐
  • 작동 흐름: 하드디스크 버퍼 가 다 찰 때까지 CPU가 다른 일을 하지 못하고 계속 지켜보고 있음. 임계치에 도달하면 CPU가 버퍼 내용을 직접 메인 메모리로 복사
[CPU가 HDD에게 명령]──>[HDD 명령 작업 수행]──>(폴링 발생)
──>[HDD가 버퍼 다채우고 상태 레지스터를 Ready 상태로 바꿈]
──>[CPU가 버퍼에서 읽어오기+자신의 레지스터나 메모리(RAM)로 복사]
CPU의 무한 대기 (폴링 발생)
HDD가 버퍼를 채우는 동안, CPU는 가만히 기다리는 게 아니라 HDD 컨트롤러의 상태 레지스터(Status Register)를 끊임없이 주기적으로 체크함
"다 채웠어?" ➔ "아니요" / "지금은 다 채웠어?" ➔ "아니요" / "이제는 다 채웠어?" ➔ "아니요"
이처럼 CPU가 직접 루프를 돌며 상태를 주기적으로 확인하는 이 행동 자체를 '폴링(Polling)'이라고 부름

② 인터럽트 (Interrupt) 방식

  • 특징: 폴링 방식의 비효율성을 보완하기 위해 인터럽트 컨트롤러(중계자)가 등장
  • 작동: 하드디스크가 버퍼에 데이터를 다 올리면 인터럽터에게 알리고, 인터럽터가 CPU에 알림. CPU는 하던 일(산술 연산 등)을 잠시 멈추고 와서 버퍼의 데이터를 복사. (폴링과 다르게 작업하다가 옴)
  • 장점: 데이터를 기다리는 동안 CPU가 다른 연산을 가능.
[CPU가 HDD에게 명령(위와 동일)]──>[HDD 명령 작업 수행 & CPU는 다른 작업 수행]──>
──>[HDD가 버퍼에 데이터를 모두 채우면 하드웨어적 신호(인터럽트) 발생 (IRQ : Interrupt Request, 인터럽트 요청)]
──>[CPU가 하던일 멈춤 & 
지금 하던 일의 상태(레지스터 값, 프로그램 카운터 등)을 메모리의 스택 공간에 안전하게 저장]
──>[HDD의 요청을 처리 (HDD 버퍼에서 읽어오기+메모리에 복사)]
(읽어오기 = 자기 레지스터로 데이터 일일이 가져옴)

③ DMA (Direct Memory Access) 방식

  • 특징: 인터럽트 방식에서도 결국 '데이터를 메모리로 복사하는 일' 은 CPU가 직접 해야 하므로 여전히 비효율이 존재. 이를 보완하기 위해 DMA 제어기가 CPU의 역할을 대신함.
  • 장점: 데이터 복사 과정에서 CPU가 완전히 배제되므로, CPU는 온전히 연산에만 집중할 수 있어 성능이 극대화됩니다.
  • 작동 흐름: HDD➔CPU➔Memory DMA 구조에서 CPU 역할을 DMA가 대체
[CPU의 명령(DMA 컨트롤러에게 권한 위임) 후 다른 작업 수행]
──>[DMA 컨트롤러가 직접 HDD 컨트롤러에게 지시]
──>[HDD가 DMA 컨트롤러에게 신호 발생 (DRQ : DMA Request, DMA 요청)]
──>[HDD 내부 버퍼]──>(DMA 컨트롤러가 직접 배달)──>[[RAM(메모리)]
✨ 추가적인 신호 (DRQ 이후)
DMA➔CPU: 하드가 준비됨. 데이터 나르기 위한 버스(통로) 요청 (Bus Request)
CPU➔DMA: 통로 허락 (Bus Grant)
DMA➔HDD (DACK 보내기): DMA가 HDD에게 신호 확인 및 데이터 이송에 대한 DACK(DMA Acknowledge, 승인) 신호를 보낸 뒤, HDD 버퍼에서 데이터를 꺼내 RAM으로 옮김