Memory Systems & Storage Physics
레지스터부터 캐시, 주메모리, 그리고 영구 저장소에 이르는 데이터 저장 계층과 그 물리적 동작 원리를 다루는 학습 노드입니다.
Article
M
Me
hyunyoun's Blog
computer-architecture-embedded-systemscomputer-architectureembedded-systemsmemory-systemsstorage-physicsarchitecture-hardwarelearningcache10 min read
1. Overview
메모리 시스템 및 저장 물리(Memory Systems & Storage Physics, SSP)는 데이터가 하드웨어 소자에서 어떻게 전기적/물리적으로 기억되고, CPU 연산 코어와 외부 세계 사이를 계층적으로 이동하는지 규명하는 데이터 인프라 물리 아키텍처입니다.
현대 컴퓨터 시스템의 성능 병목(Bottleneck)은 연산 속도(CPU Clock)가 아닌 **'데이터 이동 속도(Memory Wall)'**에서 발생합니다. 아무리 코어가 강력해도 데이터를 가져오지 못하면 CPU는 대기(Stall)할 수밖에 없습니다. 학습자는 SRAM, DRAM, NAND Flash 등 저장 매체별 물리적 한계를 이해하고, 이를 극복하기 위해 진화해 온 계층적 메모리 구조(Memory Hierarchy)를 집중 분석합니다. 캐시 지역성(Locality) 최적화부터 가상 메모리 하드웨어 변환 장치(TLB/MMU), 그리고 SSD 컨트롤러 펌웨어 메커니즘을 꿰뚫어 보며, 소프트웨어가 하드웨어의 I/O 병목을 우회하여 성능을 극한으로 끌어올릴 수 있는 구조적 최적화 능력을 확보합니다.
2. Scope & Boundaries
In-Scope
- 메모리 소자 물리 (Memory Device Physics): SRAM의 고속 동작 원리(Flip-flop 기반), DRAM의 커패시터 누설 전류와 리프레시(Refresh) 오버헤드, 플래시 메모리(NAND) 셀(Cell) 구조 및 양자 터널링 기반 읽기/쓰기 물리.
- 계층적 캐시 아키텍처 (Cache Hierarchy): 레지스터, L1/L2/L3 캐시, 메인 메모리(RAM), 보조 기억 장치(Disk) 간의 속도/비용/용량 트레이드오프와 매핑 방식(Direct, Set-associative).
- 가상 메모리와 캐시 일관성 (Virtual Memory & Coherency): 하드웨어 메모리 관리 장치(MMU), 주소 변환 캐시(TLB), 멀티코어 환경의 캐시 일관성 유지 규약(MESI 프로토콜), False Sharing.
- 비휘발성 스토리지 펌웨어 (Storage Firmware): SSD 내장 컨트롤러 펌웨어(FTL, Flash Translation Layer), 논리-물리 주소 매핑, 가비지 컬렉션(GC), Wear Leveling과 쓰기 증폭(Write Amplification).
Out-of-Scope
- 운영체제 커널의 페이지 교체 소프트웨어 알고리즘: OS 수준에서 관리하는 Demand Paging 기법, SW 기반 LRU/Clock 알고리즘, 물리 메모리 프레임 할당 메커니즘 → 03-02. Memory Management (OS) 영역으로 위임.
- 논리적 파일 시스템 체계: VFS(Virtual File System), EXT4, NTFS 디렉토리 트리 구조 및 논리 블록 스케줄링(Elevator 알고리즘) → 03-04. Storage & I/O (OS) 영역으로 위임.
- 데이터베이스 논리적 인덱스 탐색 구조: B-Tree, LSM Tree 등 데이터를 빠르게 찾기 위한 응용 계층의 자료구조 최적화 → 06. Data Management (DB) 영역으로 위임.
Boundaries
- SSP vs OS Memory (03-02. Memory Management): SSP는 'DRAM 셀의 리프레시 딜레이', 'TLB 하드웨어 캐시 미스', 'SSD 플래시 소자 마모' 등 칩셋(Chipset)과 컨트롤러 하드웨어 관점을 다룹니다. 반면 OS는 이 물리적 하드웨어 위에 '페이지 부재(Page Fault) 처리 로직', '프로세스별 페이지 테이블 맵핑' 등 커널 소프트웨어 로직을 얹어 가상 주소 공간을 관장합니다.
3. Counterexample
- 단순 변수 할당과 하드웨어 추상화 맹신: 자료구조인 배열(Array)과 연결 리스트(Linked List)를 배울 때, 빅오(Big-O) 논리적 시간 복잡도()만 외우고 넘어가는 것은 SSP 학습이 아닙니다. 왜 연결 리스트의 순회 속도가 배열보다 압도적으로 느린지 '캐시 라인(Cache Line) 적재 블록 단위'와 '공간 지역성(Spatial Locality)' 측면에서 하드웨어적으로 해석하고, C/C++의 구조체 패딩(Padding) 및 메모리 정렬(Alignment)이 캐시 친화적(Cache-friendly)으로 어떻게 설계되어야 하는지 물리적 근거를 설명해야 합니다.
- 디스크 암묵적 무한 수명 가정: 엔터프라이즈 환경에서 무거운 트랜잭션 로그를 동기적으로 디스크에 남기는 코드를 짤 때, SSD를 단순히 빠른 HDD로 취급하는 행위는 위험합니다. SSD는 덮어쓰기가 불가능하여 지우기(Erase) 작업이 필요하고 이로 인한 쓰기 증폭(Write Amplification)과 플래시 셀 수명(P/E Cycle) 단축이 발생함을 깨닫고, 이를 회피하기 위한 Append-only 로그 패턴이나 배치(Batch) I/O 모델을 설계할 줄 알아야 합니다.
4. Prerequisites
- 디지털 논리 및 프로세서 물리 (Basic): 래치(Latch)와 플립플롭(Flip-Flop) 회로의 동작 방식을 파악해야, SRAM 셀이 어떻게 전원이 끊기기 전까지 데이터를 기억하는지 이해할 수 있습니다. (02-01. DLP)
- 자료구조 알고리즘 (Recommended): 캐시 블록 교체 정책이나 FTL의 매핑 테이블을 시뮬레이션할 때, 해시 테이블이나 큐(Queue)와 같은 기초 논리 자료구조 지식이 필요합니다. (04-01. DSA)
5. Learning Map
6. Learning Topics
Basic
Core Topic 01: 메모리 물리 기술과 계층 구조 (Memory Physics & Hierarchy)
- Why to Learn: CPU 레지스터의 접근 속도(0.1나노초)와 메인 메모리(100나노초) 사이의 절대적인 물리적 속도 및 용량 트레이드오프를 인식하여, 시스템 구조 설계의 당위성을 깨닫기 위함입니다.
- What to Learn:
- Concepts: SRAM(Flip-flop 고속/저밀도), DRAM(Capacitor 고밀도/리프레시 오버헤드), Memory Wall 문제.
- Skills: 레지스터, L1/L2/L3 캐시, 메인 메모리까지 계층별 Latency(대기 시간) 및 대역폭(Bandwidth) 정량적 수치 감각 확보.
- Tools: 아키텍처 다이어그램 (CPU ↔ Memory Bus ↔ RAM).
- Trade-offs: 단일 칩 내 SRAM(L3 캐시) 용량 증가로 인한 적중률 향상 vs 실리콘 칩 면적(Cost) 기하급수적 증가 및 발열/전력 소모 간의 트레이드오프.
- How to Learn:
- 1단계: CPU L1 캐시(1ns), 주메모리(100ns), SSD(100,000ns)의 물리적 접근 시간 차이를 인간의 체감 시간(1초 vs 100초 vs 1일)으로 환산하여 시각화표를 작성해 봅니다.
- 2단계: DRAM 뱅크에서 연속된 데이터를 읽을 때, 셀의 방전 특성 때문에 주기적으로 충전해 주는 리프레시(Refresh)로 인해 딜레이가 발생하는 타이밍 다이어그램을 분석합니다.
- Implement: SRAM과 DRAM 계층의 가상 Latency(예: 1ns, 100ns)를 상수로 부여하여, 특정 캐시 적중률(예: 95%)일 때의 평균 메모리 접근 시간(AMAT)을 계산해 내는 기초 수식 시뮬레이터.
Recommended
Core Topic 02: 캐시 메커니즘과 물리적 지역성 최적화 (Cache Mechanics & Locality)
- Why to Learn: CPU 파이프라인이 데이터를 기다리며 노는 시간(Stall)을 하드웨어적으로 줄이고, 데이터 공급 대역폭을 극대화하는 소프트웨어 레벨의 '캐시 친화적(Cache-Friendly) 튜닝'의 핵심이기 때문입니다.
- What to Learn:
- Concepts: 시간 지역성(Temporal Locality)과 공간 지역성(Spatial Locality), 캐시 라인(Cache Block/Line), 평균 메모리 접근 시간(AMAT).
- Skills: Direct-mapped, Set-associative 매핑 전략의 물리 주소 비트 분할(Tag, Index, Offset) 원리 파악 및 3C 미스(Cold, Capacity, Conflict) 원인 분석.
- Tools: 캐시 성능 시뮬레이터 (Dinero IV, Valgrind Cachegrind).
- Trade-offs: 캐시 적중률(Hit Rate)을 높이기 위한 단일 캐시 블록(Block) 크기 확장 vs 미스 시 메인 메모리에서 가져와야 하는 데이터 전송 시간(Miss Penalty) 증가 오버헤드.
- How to Learn:
- 1단계: C나 C++로 1000x1000 2차원 배열을
array[i][j](행 우선) 순서와array[j][i](열 우선) 순서로 각각 순회하는 코드를 작성하여 속도를 벤치마크하고, 공간 지역성과 캐시 라인 적재 관점에서 차이를 증명합니다. - 2단계: 특정한 물리 주소 시퀀스가 순차적으로 입력될 때, 4-Way Set Associative 캐시 안에서 데이터 블록이 어떻게 교체(LRU 방식 등)되는지 표를 그려 추적합니다.
- 1단계: C나 C++로 1000x1000 2차원 배열을
- Implement: Direct-mapped 방식의 간단한 캐시 하드웨어 동작 로직을 파이썬 클래스로 구현하여, 메모리 주소 배열이 입력되었을 때 적중(Hit)과 미스(Miss) 여부를 판정하고 최종 Hit Rate를 출력하는 모의 프로그램 작성.
Practical
Core Topic 03: 하드웨어 가상화 지원 및 멀티코어 캐시 일관성 (TLB & Coherency)
- Why to Learn: 현대 운영체제가 격리된 가상 주소를 제공하는 바탕에 깔린 하드웨어 가속기(TLB)를 이해하고, 멀티 스레드 프로그래밍 시 발생하는 보이지 않는 병목(False Sharing)을 방어하기 위함입니다.
- What to Learn:
- Concepts: TLB(Translation Lookaside Buffer), 캐시 핑퐁 및 거짓 공유(False Sharing), 멀티코어 캐시 일관성 유지 규약(MESI 프로토콜, Snooping).
- Skills: 가상 주소가 물리 주소로 변환되는 하드웨어 단계(Page Table Walk) 추적, CPU 코어 간의 버스 트래픽 억제 최적화.
- Tools: Intel VTune Profiler (마이크로아키텍처 캐시 미스/스누핑 프로파일링).
- Trade-offs: 강력한 캐시 일관성 프로토콜(MESI)로 인한 완벽한 메모리 상태 관리 보장 vs 상태 검증을 위한 코어 간 버스 트래픽 급증(Snooping Overhead)에 따른 멀티코어 스케일링 성능 저하.
- How to Learn:
- 1단계: 멀티코어 스레드 코드에서 64바이트 캐시 라인 안에 함께 들어있는 별개의 배열 요소(예:
arr[0]과arr[1])를 각 코어가 동시에 무한 반복 수정할 때 발생하는 False Sharing 병목을 코드로 증명하고, 패딩(Padding)을 넣어 성능을 개선합니다. - 2단계: CPU가 가상 주소 읽기를 요청한 순간부터, TLB 미스가 발생해 메인 메모리의 페이지 테이블을 하드웨어가 직접 뒤져(Page Table Walk) 물리 주소를 찾고 캐시에 올리는 전체 타이밍 다이어그램을 도식화합니다.
- 1단계: 멀티코어 스레드 코드에서 64바이트 캐시 라인 안에 함께 들어있는 별개의 배열 요소(예:
- Implement: 특정 가상 주소를 쪼개어 TLB 캐시를 룩업하고, 실패(Miss) 시 모의 메모리에 저장된 Page Table 배열을 참조하여 물리 주소 체계로 매핑해 주는 기초 하드웨어 MMU(Memory Management Unit) 소프트웨어 모델 개발.
Advanced
Core Topic 04: 영구 저장 매체 물리 및 FTL 펌웨어 설계 (Storage Physics & FTL)
- Why to Learn: 데이터베이스나 클라우드 스토리지 시스템을 설계할 때, 하부에 깔린 비휘발성 저장 매체(SSD)의 수리적 수명을 관리하고 펌웨어 계층 특성을 이해하여 I/O 성능 저하를 방어하기 위함입니다.
- What to Learn:
- Concepts: NAND Flash 물리 구조, 덮어쓰기 제약에 따른 지우기-쓰기 비대칭성, 쓰기 증폭(Write Amplification), 가비지 컬렉션(GC), 마모도 평준화(Wear Leveling).
- Skills: FTL(Flash Translation Layer)의 논리-물리 주소 매핑(Page/Block Mapping) 알고리즘 병목 분석, PRAM/ReRAM 등 차세대 비휘발성 메모리(NVM) 특성 파악.
- Tools: SSD 펌웨어 에뮬레이터 (예: FEMU).
- Trade-offs: 플래시 메모리 셀당 비트 수를 늘리는 기술(TLC, QLC) 도입으로 인한 획기적인 기가바이트당 가격 절감 vs 셀 열화 가속으로 인한 수명(P/E Cycle) 급감 및 에러 정정(ECC) 지연 트레이드오프.
- How to Learn:
- 1단계: NAND Flash가 하드디스크(HDD)와 달리 같은 블록에 데이터를 덮어쓸 수 없어(Overwrite 불가) 반드시 해당 블록을 싹 비우는 Erase 작업이 필요함을 인지하고, 이로 인해 유효한 데이터를 백업/이동시키는 가비지 컬렉션(GC) 시나리오를 그려봅니다.
- 2단계: 운영체제가 내려보내는 순차 쓰기(Sequential Write) 패턴과 무작위 쓰기(Random Write) 패턴이 FTL 매핑 테이블 업데이트 및 플래시 조각화에 미치는 물리적 영향을 비교 분석합니다.
- Implement: 한정된 횟수의 P/E Cycle(예: 블록당 1,000회 쓰기)을 가진 가상 플래시 메모리 블록 배열을 시뮬레이션하여, 단순 덮어쓰기 로직과 Wear-leveling(마모 평준화) 매핑 펌웨어 로직 간의 최종 디바이스 수명(장치 고장 시점)을 정량적으로 비교 측정하는 스크립트.
7. Terminology
8. References
Primary References
- [P1] CS2023 - AR/Memory System Organization — Hierarchy and cache principles.
- [P2] SWEBOK - Computing Foundations — Hardware basics for SE.
Secondary References
- [What Every Programmer Should Know About Memory] Ulrich Drepper — Deep dive into memory effects on SW.
- [Modern Processor Design] John Paul Shen, Mikko Lipasti — Advanced memory system architectures.
Industry References
- [Intel Optimization Reference Manual] — Cache and memory usage optimization for industry.
- [Samsung Semiconductor] DRAM & SSD Whitepapers — Cutting-edge storage physics.
9. Final Checklist
Primary Checklist
- 메모리 계층 구조를 도식화하고 상하위 계층 간의 Latency/Capacity 트레이드오프를 아는가? (P1)
- 캐시 미스의 3C(Cold, Capacity, Conflict) 원인을 하드웨어 구조 관점에서 식별 가능한가? (P1)
Secondary Checklist
- DRAM 리프레시와 뱅크 구조가 시스템 지연(Jitter)에 미치는 물리적 영향을 설명할 수 있는가?
- 가상 메모리 지원을 위한 하드웨어(MMU/TLB)의 동작 흐름을 정확히 기술할 수 있는가?
Industry Checklist
- False Sharing 등 멀티코어 성능 저해 요소를 프로파일링 도구로 감지하고 해결할 수 있는가? (SFIA)
- SSD의 수명 관리와 쓰기 증폭 문제를 인지하고 시스템 설계에 반영 가능한가?