메모리 계층 구조와 레지스터·캐시·RAM·SSD의 역할
레지스터, 캐시, RAM, SSD와 HDD로 이어지는 메모리 계층 구조의 속도·용량·비용 트레이드오프와 데이터 이동 방식을 정리한다.
2026-08-14 · 최초 발행 2026-01-16
빠른 저장장치와 큰 저장장치를 함께 쓰는 구조
메모리 계층은 속도, 용량, 비용 사이의 균형을 맞추기 위한 컴퓨터 시스템의 설계 방식이다. 무한히 빠르고, 무한히 크며, 영구적이고, 저렴한 메모리는 현실에 없다. 빠른 메모리는 비싸고 저장 용량이 작으며, 큰 용량을 제공하는 메모리는 상대적으로 느리고 저렴하다.
그래서 시스템은 CPU 가까이에는 작은 고속 저장장치를 두고, 아래 계층으로 갈수록 더 큰 용량의 저장장치를 배치한다.
| 계층 | 접근 시간 | 용량 | 비용($/GB) | 휘발성 |
|---|---|---|---|---|
| 레지스터 | < 1ns | ~1KB | 최고 | 휘발성 |
| L1 캐시 | 1-2ns | 32-64KB | 매우 높음 | 휘발성 |
| L2 캐시 | 5-10ns | 256KB-1MB | 높음 | 휘발성 |
| L3 캐시 | 20-50ns | 8-64MB | 중간 | 휘발성 |
| RAM | 50-100ns | 16-256GB | 낮음 | 휘발성 |
| SSD | 25-100us | 256GB-8TB | 매우 낮음 | 비휘발성 |
| HDD | 5-15ms | 1TB-20TB | 최저 | 비휘발성 |
CPU 내부에서 명령어를 받치는 레지스터
레지스터는 CPU 내부에 있으며, 명령어를 실행하는 데 즉시 필요한 데이터를 저장하는 가장 빠른 저장장치다. 플립플롭 또는 래치로 구성되고 CPU 클럭 속도와 동일하게 동작한다.
| 분류 | 레지스터 | 기능 |
|---|---|---|
| 범용 레지스터 | RAX, RBX, RCX, RDX | 산술/논리 연산 데이터 저장 |
| 인덱스 레지스터 | RSI, RDI | 배열/문자열 처리 |
| 포인터 레지스터 | RSP, RBP | 스택 관리 |
| 명령어 포인터 | RIP | 다음 명령어 주소 |
| 플래그 레지스터 | RFLAGS | CPU 상태 정보 |
| 세그먼트 레지스터 | CS, DS, SS, ES | 메모리 세그먼트 지정 |
레지스터 파일은 범용 레지스터와 벡터 레지스터를 포함하며, ALU와 FPU/SIMD 연산부가 읽기와 쓰기를 수행한다.
컴파일러는 레지스터 할당(Register Allocation) 알고리즘으로 변수를 가능한 한 레지스터에 유지해 메모리 접근을 줄인다. 자주 쓰는 변수를 레지스터에 배치하는 방식이 성능에 직접 영향을 준다.
캐시가 CPU와 RAM 사이의 간격을 줄이는 방식
현대 프로세서는 여러 단계의 캐시를 둔다. L1 캐시는 코어 전용이며 가장 빠르고, L2는 코어 전용 또는 공유 형태가 될 수 있다. L3는 모든 코어가 공유한다.
캐시 계층은 데이터 복제 방식에 따라 포용적, 배타적, 비포용적으로 나뉜다. 포용적(Inclusive) 캐시는 상위 계층의 데이터를 하위 계층에도 보관하므로 일관성 유지가 쉽지만 메모리 중복으로 효율이 낮아질 수 있다. 배타적(Exclusive) 캐시는 데이터를 한 계층에만 두어 메모리 효율을 높이지만 일관성 관리가 복잡하다. 비포용적(Non-Inclusive) 캐시는 포용성을 강제하지 않아 설계 유연성을 제공하며 현대 프로세서에서 주로 채택된다.
쓰기 미스와 갱신을 처리하는 정책도 캐시 특성을 결정한다.
| 정책 | 설명 | 장점 | 단점 |
|---|---|---|---|
| Write-Through | 캐시와 메모리 동시 갱신 | 일관성 보장 | 쓰기 지연 |
| Write-Back | 캐시만 갱신, 교체 시 메모리 반영 | 쓰기 성능 우수 | 복잡한 관리 |
| Write-Allocate | 쓰기 미스 시 블록 로드 후 쓰기 | 후속 접근 최적화 | 불필요한 로드 가능 |
| No-Write-Allocate | 쓰기 미스 시 메모리 직접 쓰기 | 단순함 | 지역성 활용 저하 |
RAM의 저장 방식과 접근 타이밍
DRAM(Dynamic RAM)은 커패시터에 전하를 저장하며 주기적인 리프레시가 필요하다. 집적도가 높아 주기억장치로 사용된다.
| 세대 | 데이터 전송률 | 동작 전압 | 특징 |
|---|---|---|---|
| DDR4 | 2133-3200 MT/s | 1.2V | Bank Group 도입 |
| DDR5 | 4800-8400 MT/s | 1.1V | 채널당 대역폭 2배 |
| LPDDR5 | 6400 MT/s | 1.05V | 모바일 저전력 |
SRAM(Static RAM)은 플립플롭으로 구성되므로 리프레시가 필요 없다. 다만 비트당 트랜지스터 수가 많아 집적도가 낮고, 캐시 메모리에 사용된다.
DRAM 읽기 요청은 행 주소 지정과 열 주소 지정, 데이터 버스트 전송을 거쳐 CPU로 전달된다.
메모리 인터리빙은 연속된 주소를 여러 메모리 뱅크에 분산해 병렬 접근을 가능하게 한다. 이 방식은 대역폭을 높이고 뱅크 충돌을 줄인다.
HDD와 SSD가 제공하는 저장 특성
HDD(Hard Disk Drive)는 자기 디스크 플래터에 데이터를 기록하는 기계식 저장장치다. 플래터는 자기 코팅된 원형 디스크이고, 헤드는 데이터를 읽고 쓴다. 액추에이터는 헤드 위치를 옮기며, 스핀들은 플래터를 회전시킨다.
HDD의 회전 속도는 5400/7200/10000/15000 RPM이고, 평균 탐색 시간은 5-15ms, 데이터 전송률은 100-200 MB/s다.
SSD(Solid State Drive)는 NAND 플래시 메모리를 사용하는 비기계식 저장장치다.
SSD는 랜덤 접근 성능이 0.025-0.1ms이며, NVMe 순차 읽기/쓰기는 3000-7000 MB/s다. TBW(Total Bytes Written) 제한이 있고, 웨어 레벨링으로 셀 수명을 균등화한다.
| 항목 | HDD | SSD |
|---|---|---|
| 접근 시간 | 5-15ms | 0.025-0.1ms |
| 순차 읽기 | 100-200 MB/s | 500-7000 MB/s |
| 랜덤 읽기 | 0.5-1 MB/s | 50-100 MB/s |
| 내구성 | 높음 | 쓰기 제한 있음 |
| 소음/발열 | 있음 | 없음 |
| GB당 비용 | 낮음 | 높음 |
| 용량 | ~20TB | ~8TB |
가상 주소 공간에서 저장장치까지의 데이터 이동
가상 메모리 시스템은 RAM과 보조기억장치를 통합해 물리 메모리보다 큰 주소 공간을 제공한다. 가상 페이지는 물리 프레임이나 스왑 영역에 매핑되며, 페이지 폴트 시 스왑을 통해 데이터가 이동한다.
| 계층 이동 | 전송 단위 | 일반적 크기 |
|---|---|---|
| 레지스터 - L1 캐시 | 워드 | 8바이트 |
| L1 - L2 캐시 | 캐시 라인 | 64바이트 |
| L3 캐시 - RAM | 캐시 라인 | 64바이트 |
| RAM - SSD/HDD | 페이지 | 4KB-2MB |
계층 특성에 맞춘 접근 패턴
레지스터 수준에서는 지역 변수 활용, 컴파일러 최적화 옵션, 인라인 함수 사용이 최적화 지점이 된다. 캐시에서는 캐시 친화적 데이터 구조와 루프 최적화(타일링, 언롤링), 프리페칭을 활용할 수 있다.
RAM에서는 메모리 풀링, 대용량 페이지, NUMA 인지 할당을 고려한다. 보조기억장치에서는 순차 I/O를 최대화하고 버퍼링/캐싱과 비동기 I/O를 활용한다.
메모리 계층은 레지스터의 초고속 접근부터 SSD/HDD의 대용량 저장까지를 연결해 속도와 용량의 트레이드오프를 다룬다. 시스템 프로그래머와 애플리케이션 개발자는 각 계층의 특성과 지역성을 이해하고, 데이터 배치와 접근 패턴을 조정해 전체 시스템 성능을 높일 수 있다.