2026년 02월 22일

💾 RAM은 어떻게 동작할까?

Java Spring Boot
Cover Image

💾 RAM은 어떻게 동작할까?

— DRAM과 SRAM 완전 정복

핵심 요약: 우리가 부르는 "RAM"은 사실 두 종류다.
빠르지만 비싼 SRAM은 캐시에, 느리지만 저렴한 DRAM은 메인 메모리에 사용된다.


1️⃣ DRAM — 우리가 아는 그 "RAM"

DRAM(Dynamic RAM) 은 현대 컴퓨터의 주기억장치(Main Memory) 로 사용되는 가장 일반적인 RAM이다.

구조: 1T1C (트랜지스터 1개 + 캐패시터 1개)

왜 "Dynamic(동적)"인가?

캐패시터에 담긴 전하는 시간이 지나면 자연적으로 누설(Leak) 된다.
데이터가 사라지기 전에 주기적으로 전기를 다시 채워야 하는데, 이 작업을 리프레시(Refresh) 라고 한다.

⚠️ 리프레시 중에는 메모리 접근이 잠시 차단된다. 이것이 DRAM 속도 저하의 원인 중 하나다.


2️⃣ SRAM — CPU 캐시 안의 RAM

SRAM(Static RAM) 은 주로 CPU 내부 캐시 메모리(L1, L2, L3) 로 사용되는 고속 메모리다.

구조: 6T (트랜지스터 6개, Flip-Flop 방식)

왜 "Static(정적)"인가?

캐패시터 없이 트랜지스터 회로의 On/Off 상태 자체로 데이터를 유지한다.
전원이 공급되는 한 데이터가 변하지 않으므로 리프레시가 전혀 필요 없다.


3️⃣ DRAM vs SRAM — 한눈에 비교

구분DRAMSRAM
구조트랜지스터 1개 + 캐패시터 1개 (1T1C)트랜지스터 6개 (6T, Flip-Flop)
리프레시필요 (약 64ms마다)불필요
속도느림 (~100ns)매우 빠름 (~1ns)
집적도높음 (소형화 유리)낮음 (부피 큼)
가격저렴매우 비쌈 (DRAM의 수십 배)
전력 소모적음많음 (대기 전력 소모)
주요 용도메인 메모리 (PC RAM)CPU 캐시 (L1/L2/L3)

4️⃣ 왜 두 가지를 섞어 사용할까?

만약 메인 메모리(16GB)를 전부 SRAM으로 만든다면?

16GB SRAM의 현실
├── 가격: 수천만 원 이상 (현재 SRAM은 GB당 수천 달러)
├── 크기: 메인보드보다 커질 수 있음
└── 전력: 발열로 인한 냉각 시스템 필요

그래서 역할에 맞게 나눠 쓰는 계층 구조가 탄생했다.

속도 (빠름 ──────────────────── 느림)
용량 (작음 ──────────────────── 큼)
비용 (비쌈 ──────────────────── 저렴)

레지스터 → L1(SRAM) → L2(SRAM) → L3(SRAM) → RAM(DRAM) → SSD/HDD
 수십B     수백KB      수MB       수십MB       수십GB       수TB
계층메모리 종류전략
CPU 레지스터극소량, 극고속
L1/L2/L3 캐시SRAM비싸지만 소량만 사용, 자주 쓰는 데이터 보관
메인 메모리DRAM저렴하게 대용량 구성, 전체 프로그램 데이터 보관
영구 저장소NAND Flash / HDD매우 저렴, 전원 꺼져도 데이터 유지

💡 핵심 원리: 자주 쓰는 데이터는 소량의 비싼 SRAM(캐시)에, 전체 데이터는 대용량의 저렴한 DRAM(메인 메모리)에 보관한다.


5️⃣ Java 개발자 관점 — DRAM이 성능에 미치는 영향

DRAM의 느린 속도는 Java 애플리케이션 성능에 직접 영향을 준다.

// ❌ DRAM 접근이 잦은 패턴 — 캐시 미스, Heap 객체 무작위 접근
List<Person> persons = new ArrayList<>();
for (Person p : persons) {
    // 각 Person 객체가 Heap(DRAM) 여기저기 산재 → 매번 DRAM 접근
    process(p);
}

// ✅ DRAM 접근을 줄이는 패턴 — 연속 메모리 배치
int[] ids = new int[10000];
for (int id : ids) {
    // 연속 배열 → 캐시 라인에 한번에 적재 → SRAM 캐시 활용
    process(id);
}

GC(Garbage Collector)와 DRAM

GC Full GC 발생 시:
Heap(DRAM) 전체 스캔 → 대량 DRAM 접근 → 애플리케이션 Pause
→ Stop-The-World 현상의 하드웨어적 원인

GC 튜닝(-Xmx, -Xms, GC 알고리즘 선택)이 중요한 이유 중 하나가
DRAM 접근 횟수를 줄이는 것과 직결되기 때문이다.


6️⃣ 핵심 정리

개념한 줄 요약
DRAM캐패시터 기반, 리프레시 필요, 느리지만 저렴 → 메인 메모리
SRAMFlip-Flop 기반, 리프레시 불필요, 빠르지만 고가 → CPU 캐시
리프레시DRAM이 데이터 유지를 위해 주기적으로 전하를 재충전하는 작업
계층 구조비용/속도 트레이드오프로 SRAM(소량·고속)과 DRAM(대량·저속)을 혼용
Java 관점Heap 객체의 분산 배치 → DRAM 접근 증가 → 캐시 미스 → 성능 저하
← 목록으로 돌아가기