컴퓨터/정보>대학 전공>메모리 계층 구조와 캐시
개념 정리

메모리 계층 구조와 캐시

단원 개요
속도·용량·비용의 트레이드오프를 해결하는 메모리 계층 피라미드와 캐시 메모리의 참조 지역성(Locality), 평균 메모리 접근 시간(AMAT)을 학습합니다.
선수 개념
필수 키워드:빠르면서도 거대한 단일 메모리레지스터 (Register)L1 캐시L2 캐시L3 캐시보조기억장치 (SSD / HDD)지역성(Locality)물리적으로 인접한 주소행 우선(Row-major) 순서가 발생하여 똑같은 연산임에도 실행 속도가
1

메모리 계층 구조 (Memory Hierarchy) 피라미드

이상적인 메모리는 '초고속이면서 대용량이고 가격도 저렴하며 전원이 꺼져도 데이터가 유지되는' 메모리이지만, 물리적으로 이 조건들을 동시에 만족하는 소자는 없습니다. 따라서 컴퓨터는 여러 메모리를 계층적으로 조합하여 마치 빠르면서도 거대한 단일 메모리가 있는 것처럼 동작하게 만듭니다.

1
레지스터 (Register): CPU 코어 내부 위치, 접근 속도 <0.5ns< 0.5\text{ns} (1클럭), 용량 수백 Byte ∼\sim 수 KB.
2
캐시 메모리 (SRAM - L1 / L2 / L3):
•
L1 캐시: 코어 내부에 위치(수십 KB, 약 1ns1\text{ns}).
•
L2 캐시: 코어별 할당(수백 KB ∼\sim 수 MB, 약 3∼5ns3 \sim 5\text{ns}).
•
L3 캐시: 모든 코어가 공유(수십 MB, 약 10∼20ns10 \sim 20\text{ns}).
3
주기억장치 (DRAM - Main Memory / RAM): 전원이 꺼지면 날아가는 휘발성 메모리로 재충전(Refresh)이 필요함. 접근 속도 약 50∼100ns50 \sim 100\text{ns}, 용량 수 GB ∼\sim 수백 GB.
4
보조기억장치 (SSD / HDD): 비휘발성 영구 저장 장치. NVMe SSD는 수십 마이크로초(μs\mu\text{s}), HDD는 수 밀리초(ms\text{ms})로 CPU보다 수만~수백만 배 느립니다.
핵심 원리
SRAM(캐시)은 플립플롭 회로로 만들어져 재충전이 필요 없고 매우 빠르지만 비싸고 집적도가 낮습니다. 반면 DRAM(메인 메모리)은 축전기(Capacitor)에 전하를 채우는 방식이라 저렴하고 대용량화가 쉽지만, 전하가 방전되므로 주기적인 재충전(Refresh)이 필요합니다.
2

캐시 동작 원리와 참조 지역성(Locality of Reference)

캐시 용량은 RAM의 수백 분의 1에 불과하지만 실제 캐시 적중률(Cache Hit Ratio)은 90~99%에 달합니다. 그 비결은 프로그램이 메모리를 무작위로 접근하지 않고 특정 영역만 집중적으로 참조하는 지역성(Locality) 성질을 갖기 때문입니다.

1
시간 지역성 (Temporal Locality): 방금 참조된 메모리 주소의 데이터는 가까운 미래에 다시 참조될 확률이 매우 높다는 원리입니다.
•
예: for 루프의 제어 변수 i나 누적 합산 변수 sum, 자주 호출되는 함수 코드.
2
공간 지역성 (Spatial Locality): 특정 메모리 주소가 참조되면 그 주소와 물리적으로 인접한 주소의 데이터들이 곧이어 참조될 확률이 높다는 원리입니다.
•
이 때문에 캐시는 데이터를 가져올 때 요청한 1바이트만 가져오지 않고, 인접한 데이터 묶음인 캐시 라인(Cache Line, 보통 64 Byte 단위)을 통째로 캐시에 복사해 옵니다.
풀이

평균 메모리 접근 시간(AMAT, Average Memory Access Time) 공식은 다음과 같습니다:

AMAT = (Hit Time) + (Miss Rate × Miss Penalty)

여기서 Hit Time = 1ns, 적중률이 95%(0.95)이므로 실패율(Miss Rate) = 1 - 0.95 = 0.05(5%), Miss Penalty = 100ns입니다.

따라서 AMAT = 1ns + (0.05 × 100ns) = 1ns + 5ns = 6ns입니다.

만약 캐시가 없었다면 매번 100ns가 걸렸겠지만, 95%의 캐시 적중률 덕분에 전체 메모리 접근 속도가 약 16.7배 빨라진 것을 확인할 수 있습니다.

3

캐시 친화적 코드(Cache-Friendly Code)와 쓰기 정책

•
2차원 배열 순회 순서와 성능 차이 (실무 최적화 핵심):
•
C/C++, Python(NumPy) 등 대부분의 언어는 2차원 배열 arr[Row][Col]을 메모리에 행 우선(Row-major) 순서로 연속 배치합니다.
•
따라서 바깥 루프를 행(i), 안쪽 루프를 열(j)로 두고 arr[i][j] 순서로 읽으면 공간 지역성이 극대화되어 캐시 적중률이 98% 이상 나오지만, 반대로 arr[j][i] 순서로 열 방향 점프를 하면 매번 캐시 미스(Cache Miss / Thrashing)가 발생하여 똑같은 연산임에도 실행 속도가 5배~10배 이상 느려집니다!
•
캐시 일관성(Coherency)과 쓰기 정책(Write Policy):
•
CPU가 캐시의 데이터를 수정했을 때 RAM에 언제 반영할지에 따라 두 가지 방식이 있습니다.
•
Write-Through: 캐시에 쓸 때마다 즉시 RAM에도 함께 씁니다 (데이터 일관성은 안전하지만 메모리 버스 트래픽 증가로 느림).
•
Write-Back: 캐시에서만 빠르게 수정하고 변경 표시(Dirty Bit)만 해두었다가, 해당 캐시 블록이 교체되어 밀려날 때 한 번에 RAM에 반영합니다 (성능이 훨씬 뛰어나 현대 CPU의 기본 방식).
학습 도움말
알고리즘의 시간 복잡도가 똑같은 O(N²)이라도 메모리상 연속된 배열을 순차 탐색(Row-major)하는 코드가 포인터를 따라 점프하는 연결 리스트보다 실무에서 수십 배 빠른 이유가 바로 '캐시 공간 지역성(Cache Line 64B 로드)' 때문입니다.

핵심 요약

  • ✓
    메모리 계층 구조는 레지스터 ➔ 캐시(SRAM) ➔ 주기억장치(DRAM) ➔ 보조기억장치(SSD/HDD) 순으로 구성된다.
  • ✓
    시간 지역성은 최근 접근한 데이터를 재참조하는 성질이고, 공간 지역성은 인접한 주소의 데이터를 연속 참조하는 성질이다.
  • ✓
    캐시는 공간 지역성을 활용하기 위해 64바이트 단위의 캐시 라인(Cache Line) 블록 통째로 데이터를 가져온다.
  • ✓
    2차원 배열 순회 시 메모리 배치 순서(행 우선)에 맞춰 접근해야 캐시 미스를 줄이고 실행 성능을 극대화할 수 있다.

설명 다음에는 직접 풀어 보세요

함께 풀기와 자기 설명을 거쳐 새 문제에 도전해요. 막힌 부분은 보충하고, 다른 날 다시 기억하는지 확인할 수 있어요.

이 단원의 수업 시작하기 →
5문항 연습 세트

메모리 계층 구조와 캐시 단원 연습 문제

개념을 읽은 뒤 연습 문제로 이해한 내용을 확인해 보세요. 한 세트는 5문항이며, 답안을 제출하면 정답과 풀이를 볼 수 있습니다.

한 세트 5문항 단계별 상세 해설 시험지 PDF 인쇄 지원

참고 근거와 확인 범위

설명·예제·문제 구성 및 오류 수정 책임: 프리런. 위 자료는 표시한 주제를 확인하거나 더 읽기 위한 근거이며, 외부 기관의 공식 수업이나 감수본을 뜻하지 않습니다.

참고 자료 연결 점검: 2026-11-02. 제작 방식·검수 범위와 수정 기록에서 확인 범위를 볼 수 있습니다. 오류는 상단의 의견 보내기 또는 contact@freelearn.io로 알려 주세요.