262. L3 캐시 (Level 3 Cache)

핵심 인사이트 (3줄 요약)

  1. 본질: L3 캐시 (Level 3 Cache)는 각 코어의 L1/L2 캐시 뒤에 놓인 마지막 온칩 공유 캐시로, 메인 메모리로 내려가기 전 마지막으로 지연 시간을 줄여 주는 공용 완충 지대다.
  2. 가치: 코어마다 따로 가진 L2 캐시만으로는 해결되지 않는 대용량 워킹셋과 코어 간 데이터 공유를 흡수해, 멀티코어 성능과 캐시 일관성 유지 비용을 동시에 낮춘다.
  3. 판단 포인트: L3 캐시는 무조건 클수록 좋은 것이 아니라, 접근 지연, 공유 간섭, 인터커넥트 구조, 워크로드의 지역성까지 함께 봐야 실제 성능 향상으로 이어진다.

Ⅰ. 개요 및 필요성

L3 캐시 (Level 3 Cache)는 CPU (Central Processing Unit) 칩 내부에서 여러 코어가 함께 사용하는 대용량 캐시 계층이다. L1/L2 캐시가 각 코어의 즉시 작업 데이터를 책임진다면, L3 캐시는 그보다 넓은 범위의 데이터와 코어 간 공유 데이터를 붙잡아 두는 마지막 캐시 방어선이다. 그래서 L3는 단순히 "더 큰 캐시"가 아니라, 멀티코어 시대에 메모리 벽과 코어 간 통신 비용을 동시에 완화하기 위해 등장한 구조라고 보는 편이 정확하다.

이 계층이 필요해진 이유는 두 가지다. 첫째, 코어 수가 늘수록 각 코어의 개인 캐시만으로는 공통 데이터셋을 반복해서 담아 둘 수 없어 메인 메모리 접근이 폭증한다. 둘째, 한 코어가 갱신한 데이터를 다른 코어가 곧바로 읽는 상황에서, 매번 DRAM (Dynamic Random Access Memory)까지 왕복하면 수십~수백 나노초 수준의 지연이 누적된다. L3 캐시는 이런 비용을 칩 내부의 수 MB~수십 MB SRAM (Static Random Access Memory) 공간으로 흡수해 준다.

아래 그림은 L3 캐시가 "코어별 개인 공간"과 "외부 메모리" 사이에서 어떤 위치를 차지하는지 보여준다.

┌────────────────────────────────────────────────────────────────────────────┐
│                  메모리 계층에서 L3 캐시의 위치와 역할                    │
├────────────────────────────────────────────────────────────────────────────┤
│ Core 0        Core 1        Core 2        Core 3                          │
│  ├─ L1         ├─ L1         ├─ L1         ├─ L1                           │
│  └─ L2         └─ L2         └─ L2         └─ L2                           │
│      │            │            │            │                              │
│      └────────────┴────────────┴────────────┘                              │
│                           공유 L3 캐시 영역                               │
│                마지막 레벨 캐시 (LLC, Last Level Cache)                  │
│                                  │                                         │
│                                  ▼                                         │
│                      메모리 컨트롤러 → DRAM → 저장장치                     │
└────────────────────────────────────────────────────────────────────────────┘

핵심은 L3 캐시가 모든 데이터를 직접 가장 빠르게 처리하는 계층이 아니라, 메인 메모리로 떨어질 뻔한 요청을 최대한 칩 내부에서 끝내는 계층이라는 점이다. 따라서 L3가 없거나 너무 작으면 코어 수가 늘어도 연산기보다 메모리 대기 시간이 병목이 된다.

  • 📢 섹션 요약 비유: L1/L2가 각 직원의 책상과 개인 서랍이라면, L3는 팀 전체가 함께 쓰는 큰 문서 보관실이다. 개인 자리에서 못 찾은 자료를 건물 밖 창고까지 가지 않고 같은 층 보관실에서 찾게 해 주는 셈이다.

Ⅱ. 아키텍처 및 핵심 원리

현대 프로세서의 L3 캐시는 보통 하나의 거대한 덩어리로만 동작하지 않는다. 여러 개의 슬라이스 (Slice)로 분할되어 각 코어나 인터커넥트 주변에 배치되고, 주소 해시나 라우팅 규칙에 따라 특정 슬라이스가 데이터를 담당한다. 이렇게 하면 물리적으로 넓어진 캐시를 칩 전체에 분산시켜 배선 길이와 병목을 줄일 수 있다.

L3 캐시의 핵심 원리는 세 가지로 요약된다. 첫째, L2 미스가 났을 때 DRAM으로 바로 내려가지 않고 한 번 더 탐색해 평균 메모리 접근 시간을 줄인다. 둘째, 어떤 캐시 라인이 어느 코어의 개인 캐시에 존재하는지 추적해 캐시 일관성 (Cache Coherence) 트래픽을 중개한다. 셋째, 넓은 워킹셋을 공유하는 워크로드에서 같은 데이터가 여러 코어의 L2에 중복 적재되는 일을 완화한다.

항목L3 캐시의 일반적 특성설계 의미
용량수 MB ~ 수십 MB큰 워킹셋과 공유 데이터 흡수
지연 시간대략 10~20ns, L2보다 느림속도보다 미스 방어가 우선
공유 방식여러 코어 공동 사용협업은 쉬우나 간섭 가능
구성슬라이스 + 링/메시 인터커넥트코어 수 증가에 대응
추가 역할디렉터리·일관성 중개멀티코어 통신 비용 절감

아래 그림은 L3 캐시가 단순 저장소가 아니라, 슬라이스와 인터커넥트를 통해 요청을 분산하고 일관성 정보를 중개하는 구조임을 보여준다.

┌────────────────────────────────────────────────────────────────────────────┐
│                    L3 캐시의 슬라이스 기반 동작 개념                      │
├────────────────────────────────────────────────────────────────────────────┤
│ Core 0 ─┐                                                                  │
│ Core 1 ─┼──▶ On-Chip Interconnect ──▶ [Slice 0]                            │
│ Core 2 ─┼──▶   (Ring / Mesh)      ──▶ [Slice 1]                            │
│ Core 3 ─┘                         ──▶ [Slice 2]                            │
│                                         [Slice 3]                          │
│                                              │                             │
│                                              ├─ 데이터 저장                │
│                                              ├─ 태그/상태 관리             │
│                                              └─ 일관성 추적 후 DRAM 전달   │
└────────────────────────────────────────────────────────────────────────────┘

여기서 중요한 트레이드오프는 명확하다. L3 캐시를 크게 만들면 용량 미스는 줄지만, 물리적 면적 증가와 배선 길이 증가로 접근 지연이 늘 수 있다. 반대로 L3를 지나치게 작게 만들면 L2 미스를 충분히 흡수하지 못해 DRAM 트래픽이 증가한다. 그래서 서버용 프로세서는 대용량 L3를 선호하고, 모바일 프로세서는 전력과 면적을 고려해 더 공격적으로 크기를 조정한다.

  • 📢 섹션 요약 비유: L3 설계는 대형 물류센터를 운영하는 것과 같다. 창고를 넓히면 물건을 많이 쌓아 둘 수 있지만, 통로와 분류 체계가 나쁘면 찾는 데 오히려 더 오래 걸린다.

Ⅲ. 비교 및 연결

L3 캐시를 제대로 이해하려면 L2 캐시와 DRAM 사이에서 어떤 경계 역할을 하는지 비교해야 한다. L2 캐시는 한 코어의 즉시성에 집중한 개인 비서에 가깝고, DRAM은 용량은 크지만 지연이 큰 외부 창고다. L3 캐시는 이 둘 사이에서 개인 최적화와 전체 공유의 균형을 잡는다.

구분L2 캐시 (Level 2 Cache)L3 캐시 (Level 3 Cache)DRAM
위치코어 바로 옆칩 내부의 공용 영역칩 외부 메인 메모리
공유 범위보통 코어 전용여러 코어 공유시스템 전체 공유
지연짧음중간
용량작음~중간매우 큼
주된 역할개인 워킹셋 유지공유 데이터·L2 미스 완충최종 저장 계층

또 하나의 경계는 캐시 정책이다. 어떤 아키텍처는 L1/L2의 복사본을 L3에도 유지하는 포괄적 (Inclusive) 정책을 써서 일관성 추적을 단순화한다. 반면 어떤 아키텍처는 비포괄적 (Non-Inclusive) 또는 피해자 캐시 (Victim Cache) 성격을 강화해 실제 유효 용량을 늘린다. 전자는 코어 간 추적이 쉽지만 공간이 중복되고, 후자는 공간 효율은 좋지만 관리가 복잡해진다.

멀티소켓 서버나 칩렛 (Chiplet) 구조까지 가면 L3 캐시는 NUMA (Non-Uniform Memory Access)와도 연결된다. 같은 L3 도메인 안의 코어 접근은 비교적 빠르지만, 다른 칩렛의 메모리나 다른 소켓으로 넘어가면 지연이 급격히 커진다. 즉 L3 캐시는 단일 코어 성능만의 문제가 아니라, 스레드 배치와 메모리 배치 전략까지 좌우하는 시스템 경계선이다.

  • 📢 섹션 요약 비유: L2가 개인 노트라면 L3는 팀 공용 화이트보드이고, DRAM은 지하 문서고다. 개인 노트는 가장 빠르지만 혼자만 볼 수 있고, 화이트보드는 모두가 바로 참고할 수 있지만 관리 규칙이 필요하다.

Ⅳ. 실무 적용 및 기술사 판단

실무에서는 "L3가 있느냐"보다 **"이 워크로드가 L3를 얼마나 잘 활용하느냐"**가 더 중요하다. 예를 들어 게임 엔진, 시계열 분석, 인메모리 키-값 조회처럼 반복 접근되는 데이터셋이 수십 MB 안에 들어오면 대용량 L3의 효과가 크다. 반대로 매번 전혀 다른 대용량 데이터를 일회성으로 훑는 스트리밍 워크로드는 L3를 오염시키기 쉬워 기대한 이득이 작을 수 있다.

체크리스트

  1. 데이터셋의 핵심 워킹셋이 L3 크기 안에 들어오는가?
  2. 여러 코어가 같은 데이터를 반복 참조하는가, 아니면 각자 독립적인가?
  3. 캐시 간섭이 큰 멀티테넌트 환경이라면 파티셔닝이나 코어 핀닝이 필요한가?
  4. 칩렛/NUMA 환경이라면 스레드와 메모리를 같은 L3 도메인에 붙였는가?

대표 시나리오

  • 고성능 게임/시뮬레이션: 객체 상태, 충돌 정보, 경로 탐색 데이터가 대용량 L3에 남아 있으면 프레임 드롭을 일으키는 DRAM 왕복이 줄어든다. 그래서 3D V-Cache처럼 적층 SRAM으로 L3 용량을 늘린 제품이 실제 게임 성능에서 강점을 보인다.
  • 클라우드 멀티테넌시: 한 테넌트가 대규모 스캔 작업으로 L3를 계속 덮어쓰면, 다른 서비스의 응답 지연이 급증할 수 있다. 이때는 CAT (Cache Allocation Technology) 같은 기능으로 LLC (Last Level Cache) 점유를 분리하거나, 워크로드를 다른 코어 군으로 격리하는 판단이 필요하다.
  • 스레드 핀닝과 NUMA 배치: 스레드가 계속 다른 코어로 이동하면 L1/L2의 따뜻한 데이터가 사라지고 결국 L3나 원격 메모리에 더 자주 의존하게 된다. 실시간 처리나 지연 민감 서비스는 스레드 고정과 메모리 근접 배치가 더 중요하다.

안티패턴

  • 여러 스레드가 같은 캐시 라인 (Cache Line)의 변수를 번갈아 수정해 L3에서 무효화 방송만 계속 일으키는 거짓 공유 (False Sharing)

  • 순차 재사용이 거의 없는 대용량 스트리밍 데이터를 기본 정책으로 L3에 밀어 넣어 중요한 핫 데이터를 쫓아내는 패턴

  • 📢 섹션 요약 비유: L3는 아파트 공용 창고와 같다. 필요한 물건을 적당히 함께 쓰면 편리하지만, 한 세대가 자기 짐으로 창고를 가득 채우면 건물 전체가 불편해진다.


Ⅴ. 기대효과 및 결론

잘 설계된 L3 캐시는 코어 수 증가가 곧바로 메모리 병목 증가로 이어지는 것을 막아 준다. 그 결과 평균 지연이 줄고, 코어 간 데이터 공유가 빨라지며, 메모리 컨트롤러와 DRAM 대역폭에 걸리는 압력도 낮아진다. 특히 대규모 서버와 게임용 프로세서에서 L3는 단순 보조 캐시가 아니라 체감 성능을 결정하는 핵심 자산이 된다.

하지만 한계도 분명하다. L3 캐시는 SRAM 기반이라 면적과 전력 비용이 크고, 공유 구조라서 워크로드 간 간섭을 피할 수 없다. 또한 코어 수가 계속 늘면 링 버스보다 메시, 단일 다이보다 칩렛, 평면 배치보다 적층 캐시처럼 더 복잡한 물리 구조가 필요해진다.

앞으로의 방향은 크게 세 가지다. 첫째, 3D 적층으로 L3 용량을 키우는 접근이다. 둘째, QoS (Quality of Service) 기반 파티셔닝으로 공유 간섭을 제어하는 접근이다. 셋째, 칩렛 간 L3 일관성과 근접성을 더 정교하게 다루는 방향이다. 따라서 L3 캐시는 "큰 캐시"가 아니라 멀티코어 협업과 메모리 지연을 동시에 조율하는 공유 플랫폼으로 기억하는 것이 맞다.

  • 📢 섹션 요약 비유: 좋은 L3는 큰 창고 하나를 더 짓는 일이 아니라, 여러 팀이 부딪히지 않게 물건을 나누고 빨리 꺼내 쓰게 만드는 물류 운영 체계에 가깝다.

📌 관련 개념 맵

개념연결 포인트
L2 캐시 (Level 2 Cache)코어 전용 캐시로, L3는 여기서 발생한 미스를 한 번 더 흡수한다.
LLC (Last Level Cache)많은 프로세서에서 L3가 마지막 온칩 캐시 역할을 하므로 사실상 같은 문맥에서 쓰인다.
캐시 일관성 (Cache Coherence)여러 코어의 사본 상태를 조정할 때 L3가 디렉터리 또는 중개 지점 역할을 한다.
NUMA (Non-Uniform Memory Access)동일 L3 도메인 안과 밖의 접근 지연 차이를 이해해야 스레드·메모리 배치를 최적화할 수 있다.
3D V-Cache적층 SRAM으로 L3 용량을 크게 늘려 메모리 병목을 줄이는 대표 기술이다.

📈 관련 키워드 및 발전 흐름도

참조 지역성 (Locality of Reference)
    │
    ▼
L1 / L2 캐시로 개인 작업셋 가속
    │
    ▼
L3 캐시 (Level 3 Cache) / LLC (Last Level Cache)
    │
    ├─▶ 캐시 일관성 (Cache Coherence) 중개
    │
    ├─▶ NUMA (Non-Uniform Memory Access) / 칩렛 배치 최적화
    │
    └─▶ 3D V-Cache · CAT (Cache Allocation Technology) · QoS 제어

이 흐름은 캐시 개념이 단순한 속도 향상에서 출발해, 멀티코어 공유 구조와 자원 제어 기술로 확장되는 과정을 보여준다.

👶 어린이를 위한 3줄 비유 설명

  1. 컴퓨터 안의 여러 일꾼들은 자기 책상 서랍만으로 부족할 때 함께 쓰는 큰 수납장을 찾아가요.
  2. 그 큰 수납장이 바로 L3 캐시라서, 멀리 있는 창고까지 뛰어가지 않게 도와줘요.
  3. 그래서 모두가 같은 재료를 빨리 꺼내 쓰면 일이 훨씬 덜 막히고 더 빨라져요.