CHAPTER 07

컴퓨터 구조

폰노이만 구조부터 CPU 파이프라인, 인터럽트, 캐시메모리까지 — 컴퓨터 내부 동작을 인터랙티브하게 탐구합니다.

폰노이만 구조CPU 동작원리파이프라인인터럽트캐시메모리
ARCHITECTURE

폰노이만 구조 (Von Neumann Architecture)

오늘날 거의 모든 컴퓨터의 기반. CPU(처리), Memory(저장), I/O(입출력)가 버스(Bus)로 연결됩니다. 핵심은 프로그램과 데이터가 같은 메모리를 공유한다는 점 — 이것이 '범용 컴퓨터'를 가능하게 했습니다.

CPU
ALU (연산장치)
레지스터
CU (제어장치)
MEMORY
프로그램 (코드)
데이터 (변수)
스택 영역
I/O 장치
[⌨] 키보드
[▣] 모니터
[◎] 디스크
Address Bus (주소 버스)
Data Bus (데이터 버스)
Control Bus (제어 버스)
폰노이만 병목 (Von Neumann Bottleneck) — CPU와 메모리가 하나의 버스를 공유하므로, CPU가 연산보다 메모리 대기에 더 많은 시간을 씁니다. 현대 컴퓨터의 캐시 메모리는 이 병목을 완화하기 위해 탄생했습니다.
버튼을 클릭해 데이터 흐름을 시뮬레이션하세요.
CPU

CPU 동작 원리 — Fetch · Decode · Execute

CPU는 세 단계를 무한 반복합니다. Fetch(메모리에서 명령어 읽기) → Decode(명령어 해석) → Execute(실행). 이 사이클을 초당 수십억 번 반복하는 것이 GHz의 의미입니다.

FETCH
DECODE
EXECUTE
PC — Program Counter
0x0000
IR — Instruction Register
레지스터 파일
R10
R20
R30
PC0x00
IR
MAR
메모리 (프로그램)
시작하려면 "다음 단계" 버튼을 누르세요.
3 GHz
클럭 속도
= 30억 사이클/초
IPC 4
사이클당 명령어 수
파이프라인 + 슈퍼스칼라
120억
유효 명령어/초
3GHz × IPC4 = 120억
PIPELINE

CPU 파이프라인 (Pipeline)

5단계 파이프라인: IF(명령어 인출) → ID(해독) → EX(실행) → MEM(메모리 접근) → WB(쓰기). 5개 명령어가 각 단계에서 동시에 처리됩니다.

IF
ID
EX
MEM
WB
STALL
INTERRUPT

인터럽트 (Interrupt)

CPU가 프로그램을 실행 중 외부 사건이 발생하면 CPU는 하던 일을 잠시 멈추고 그 사건을 처리합니다. 인터럽트 없이는 폴링(polling)으로 CPU를 낭비해야 합니다.

CPU 실행 타임라인
버튼을 클릭해 인터럽트를 발생시키세요.
인터럽트 벡터 테이블 (IVT — Interrupt Vector Table)
번호원인종류ISR 주소
0x000으로 나누기예외(SW)0x1000
0x01디버그 트랩예외(SW)0x1100
0x02NMI하드웨어(HW)0x1200
0x20타이머하드웨어(HW)0x5100
0x21키보드 입력하드웨어(HW)0x5000
0x24네트워크 패킷하드웨어(HW)0x5400
하드웨어 인터럽트 (HW Interrupt)
외부 장치(키보드, 타이머, NIC 등)가 CPU에 신호를 보냅니다. 비동기적으로 발생하며, CPU는 현재 명령어 완료 후 처리합니다.
소프트웨어 인터럽트 / 예외 (Exception)
프로그램 내부에서 발생 (0 나누기, 페이지 폴트, 시스템 콜 등). 동기적으로 발생하며 즉시 처리됩니다.
CACHE

캐시메모리 (Cache Memory)

메모리 계층 구조와 LRU 캐시 교체 알고리즘을 시뮬레이션합니다. 캐시는 지역성 원리(Locality)를 이용해 CPU와 메모리 사이 속도 차이를 완화합니다.

L1 Cache4 KB · 1 ns
L2 Cache256 KB · 5 ns
L3 Cache8 MB · 20 ns
RAM16 GB · 100 ns
SSD / HDD1 TB · 100 μs
L1 캐시 슬롯 (LRU 4-way)
비어있음
비어있음
비어있음
비어있음
0HIT
0MISS
HIT RATE
메모리 접근 버튼을 눌러 캐시 동작을 확인하세요.
지역성 원리 (Locality Principle)
시간적 지역성 (Temporal)
최근에 사용한 데이터는 곧 다시 사용될 가능성이 높습니다. (예: 반복문의 카운터 변수)
공간적 지역성 (Spatial)
사용한 데이터 근처의 데이터도 곧 사용될 가능성이 높습니다. (예: 배열 순회)
캐시 라인 (Cache Line): 캐시는 1바이트씩이 아닌 64바이트 블록(캐시 라인) 단위로 메모리를 가져옵니다. 배열을 순서대로 접근하면 한 번의 캐시 미스로 인접 원소 여러 개가 캐시에 올라오므로 이후 접근이 모두 히트가 됩니다.