최근 수정 시각 : 2026-06-29 06:45:17

캐시 메모리



파일:하위 문서 아이콘.svg   하위 문서:
#!if c = calleeTitle + "/", l = c.length, 문서명1 = 문서명1?.startsWith(c) ? 문서명1.substr(l) : 문서명1
[[/성능 요소|/성능 요소]]
#!if 문서명2 = 문서명2?.startsWith(c) ? 문서명2.substr(l) : 문서명2
, [[/|/]]
#!if 문서명3 = 문서명3?.startsWith(c) ? 문서명3.substr(l) : 문서명3
, [[/|/]]
#!if 문서명4 = 문서명4?.startsWith(c) ? 문서명4.substr(l) : 문서명4
, [[/|/]]
#!if 문서명5 = 문서명5?.startsWith(c) ? 문서명5.substr(l) : 문서명5
, [[/|/]]
#!if 문서명6 = 문서명6?.startsWith(c) ? 문서명6.substr(l) : 문서명6
, [[/|/]]
#!if 문서명7 = 문서명7?.startsWith(c) ? 문서명7.substr(l) : 문서명7
, [[/|/]]

🖥️ 컴퓨터 부품 및 주변 기기
{{{#!wiki style="margin:0 -10px -5px; min-height:calc(1lh + 5px);"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin: -5px -1px -11px"
<colbgcolor=#555><rowcolor=#fff>PC 주요 부품
프로세서CPU · GPU · 레지스터 · 캐시 메모리
기억장치주기억장치: ROM · RAM(VRAM)
보조기억장치: 플래시 메모리(SSD · USB 드라이브) · 자기 기억장치(HDD · 플로피 디스크 · 자기 테이프 · 외장 하드) · 광학 기억장치(ODD · CD · DVD · 블루레이 디스크)
'''메인보드 · 전원부 · {{{#!wiki메인보드 · 쿨러 · 파워서플라이 · 케이스
PC 주변 기기
보안TPM · 스마트카드
네트워크 · 입출력휴먼 인터페이스 장치: 키보드 · 모니터 · 마우스 · 트랙볼 · 디지타이저 · 스타일러스 펜 · 사운드 카드 · 스피커 · 마이크 · HMD
입출력 장치: TV 수신 카드 · 프린터 · 네트워크 카드 · 캡처보드 · USB · 케이블
}}}}}}}}} ||
파일:Cache-on-a-stick_module.jpg
1990년대까지 사용됐던 스틱형 캐시 메모리 모듈
파일:COAST_CPU.jpg
흰색 숫자 1은 인텔 소켓 7 타입의 초대 펜티엄 프로세서
흰색 숫자 2는 32 KB 용량의 온보드 캐시 메모리 모듈
흰색 숫자 3은 스틱형 캐시 메모리 모듈 슬롯
[오른쪽상단은?]


1. 개요2. 도입 배경3. 캐시에 사용되는 메모리의 종류4. 멀티 레벨 캐시 메모리5. 작동 원리: 데이터 지역성6. 목표7. 성능 요소8. 최적화 기법9. 종류10. 역사
10.1. CPU 캐시 메모리10.2. GPU 캐시 메모리
11. 캐시 메모리와 버퍼 메모리12. 참고 자료

1. 개요

캐시 메모리(cache memory/hardware cache)는 컴퓨터 시스템의 성능을 향상시키기 위해 별도로 탑재된 캐시 전용 메모리이다.

레지스터, 메인 메모리와 함께 메모리 계층 구조의 전통적인 핵심 계층 중 하나이다. 프로그램에서 직접적으로 읽거나 쓸 수 없고 하드웨어의 메모리 관리 시스템이 내부적으로 제어한다. 대부분 프로그램은 한번 사용한 데이터를 재사용할 가능성이 높고, 그 주변의 데이터도 곧 사용할 가능성이 높은 데이터 지역성을 가지고 있다. 데이터 지역성을 활용하여 메인 메모리에 있는 데이터를 캐시 메모리에 불러와 두고, 프로세서가 필요한 데이터를 캐시 메모리에서 먼저 찾도록 하면 시스템 성능을 향상시킬 수 있다.

캐시 메모리의 가격은 21세기 현재도 메모리 소자 중에서 가장 비싼 편이며, 지난 20년간 가격이 3% 정도 떨어지는 데 불과했다. 특히 CPU의 L1 캐시 메모리는 인류가 상용화한 메모리 반도체 중 가장 압도적으로 빠르고, 가장 비싸다고 봐도 무방하다.

2. 도입 배경

프로세서의 클럭 속도가 매우 빨라짐에 따라 프로세서 밖에 있는 메인 메모리와의 속도 차이가 현저하게 증가했는데, 이 때문에 프로세서 클럭 속도를 아무리 올려도 메인 메모리에서 데이터를 빠르게 제공해 주지 못하여 전체 시스템 성능이 증가하기 어렵게 됐다. 폰 노이만은 1946년 그의 논문 "Preliminary Discussion of the Logical Design of an Electronic Computing Instrument" 에서 캐시 메모리의 필요성을 예견했다.

3. 캐시에 사용되는 메모리의 종류

메모리 기술은 주로 축전기를 사용하는 DRAM플립플롭을 사용하는 SRAM으로 나뉘는데, DRAM은 가격이 싸고 용량 대비 크기가 작지만 속도가 느리고, SRAM은 속도는 빠르지만 가격이 매우 비싸고 용량 대비 크기가 크다는 단점이 있다. 그래서 DRAM을 사용자가 직접 장착하게 하는 대신, CPU와 DRAM 사이에 SRAM을 별도로 두어서 DRAM의 데이터를 직접 접근하는 것보다는 빠르게 접근할 수 있도록 한다.

현행 CPU 내부 캐시 메모리는 전력 소모, 동작 속도, 면적 등을 고려하여 6T SRAM[2] 또는 8T SRAM[3] 중 하나를 주로 사용한다. CPU 온다이 캐시 메모리를 제외한 사용처에서는 DRAM, 심지어 플래시 메모리도 캐시로 활용될 수 있다. 플래시 메모리 기반 SSD에서 지원하는 SLC 캐싱이 대표적인 예시.

4. 멀티 레벨 캐시 메모리

시스템에 장착된 캐시의 용량과 성능이 점점 증가하면서 캐시로 사용되는 메모리가 추가됐는데, 이것을 순서대로 L(Level) 1, L2, L3, … 라고 호칭한다.

이 레벨 숫자가 낮을수록 CPU 코어와 가까워서 속도가 빠르지만 용량이 적은 편이다. 가장 낮은 레벨은 L1 캐시 메모리이며 명령어 캐시와 데이터 캐시로 나뉘어 있다.[4] 레벨 숫자가 올라가면 용량이 증가하지만 CPU 코어와의 거리가 멀어 속도가 L1보다 느려진다. L2와 L3 캐시 메모리가 해당되며 L1와 L2 캐시 메모리는 CPU 코어[5]마다 존재하지만 L3 캐시 메모리는 L1, L2 캐시메모리보다 용량이 큰 대신에 하나 밖에 없고 모든 CPU 코어가 공용으로 사용한다. L3 캐시 메모리가 마지막 레벨의 캐시 메모리일 경우, L3 캐시 메모리를 LLC라고 부르기도 한다.

5. 작동 원리: 데이터 지역성

캐시 메모리는 데이터 지역성(locality)의 원리를 이용한다. 데이터 지역성은 시간 지역성(temporal locality), 공간 지역성(spatial locality), 순차적 지역성(sequential locality)으로 나뉘는데, 시간 지역성이란 for나 while 같은 반복문에 사용하는 조건 변수처럼 한번 참조된 데이터는 잠시 후에 또 참조될 가능성이 높다는 것이고, 공간 지역성이란 A[0], A[1]과 같은 데이터 배열에 연속으로 접근할 때 참조된 데이터 근처에 있는 데이터가 잠시 후에 사용될 가능성이 높다는 것이며, 순차적 지역성이란 분기(branch)가 발생하는 비순차적 실행이 아닌 이상 명령어들이 메모리에 저장된 순서대로 실행하는 특성을 이용한 원리로 순차적일 수록 다음 순서의 데이터가 사용될 가능성이 높다.

쉽게 예를 들자면 무지하게 지랄맞고 부지런한 상사가 한 시간 전에 작년과 금년 재무 결산 보고서를 가져오라고 했을 때, 어차피 순서대로 정리되어 있는 내년과 내후년 재무 결산 보고서도 가져오라고 할지 모르니까 그것도 묶음째로 근처에 준비해 놓는 식이다. 여기에 더해 상사가 오늘 아침에 작년 재무 결산 보고서를 요청했다면, 오늘 하루 동안 그 보고서를 여러 번 더 요청할 가능성이 높으니, 그 보고서를 책상 위에 계속 놓아두는 것이라고도 할 수 있다.

또 다른 예로는 캐시는 지갑이라고 생각하면 된다. 지갑 혹은 주머니가 없다면 우리가 현금(cash)이 필요할 때마다 매번 은행이나 ATM에 가야 할 것이다. 이는 당연히 매우 귀찮고 시간도 많이 걸린다. 하지만 우리가 현금을 지갑에 넣고 다님으로써 시간을 절약할 수 있다.

CPU가 메모리에 데이터를 요청할 때, DRAM에 접근하기 전에 일단 캐시 메모리에 접근하여 데이터 존재 여부를 확인한다. 캐시 메모리는 메인 메모리인 DRAM보다는 그 사이즈가 매우 작아서 데이터를 모두 저장할 수 없다. DRAM이 보통 수 GB 단위 정도인데 인텔 i5, i7에 들어가는 캐시 메모리는 작게는 수 KB ~ 많게는 수 MB 정도이다. 캐시 메모리는 DRAM의 데이터 일부를 가지고 있다가 CPU가 요청한 데이터가 캐시 메모리에 없으면 CPU를 잠시 기다리게 한 후 DRAM에서 해당 데이터를 가져온 후 CPU에게 넘겨 준다. CPU는 캐시의 존재를 알고 있지만, 그 위에서 실행되는 프로그램은 메인 메모리의 주소만 지정하거나 캐시 적중률을 위해 힌트를 줄 수는 있어도[6], 프로그래머가 캐시 메모리를 직접 지정할 수는 없다. 이렇게 그 존재가 외부에 드러나지 않기 때문에 캐시 메모리는 CPU에 투명(transparent)하다고 한다. 투명하지 않은 작은 온칩 메모리는 scratchpad memory라고 부른다.

캐시 메모리에 데이터를 저장할 때 공간 지역성을 최대한 활용하기 위해 해당 데이터뿐만 아니라 옆 주소의 데이터도 같이 가져와 미래에 쓰일 것을 대비한다. CPU의 경우, DRAM에는 프로그램을 수행하는 명령어(instruction)와 그 명령이 실행되는 데이터(data)가 함께 들어 있는데, 명령어는 읽기만 하고 데이터는 읽기와 쓰기를 동시에 하므로 캐시 메모리 내에 이들을 각각 명령어 캐시 메모리(instruction cache)와 데이터 캐시 메모리(data cache)에 저장한다.

보통 L1 캐시 메모리에는 명령어 캐시와 데이터 캐시 메모리가 따로 있고, L2 캐시 메모리는 딱히 둘의 구분 없이 하나의 캐시 메모리로 구성된다. L1 캐시 메모리는 CPU에 직접 데이터를 공급해 주기 때문에 빠른 접근 지연 시간(access latency)이 매우 중요한데, 명령어는 보통 공간 지역성이 높고 데이터는 보통 시간 지역성이 높다. 이 둘을 나누어 서로 다른 지역성을 이용할 수 있다. 또한 명령어와 데이터를 동시에 읽어올 수 있게 함으로써 CPU의 파이프라이닝 성능을 향상시킬 수 있다.

6. 목표

  • 캐시 적중률의 최대화, 부적중률(不的中率)의 최소화
  • 캐시 레이턴시의 최소화
  • 캐시 대역폭의 최대화
  • 캐시 정책 및 알고리즘의 최적화
  • 캐시 부적중에 따른 페널티의 최소화
  • 데이터 일관성 보장
  • 데이터 일관성에 따른 오버헤드 최소화

캐시 메모리는 궁극적으로 성능 향상을 목적으로 등장한 전용 메모리이다. 성능에 영향을 주는 요소에 대한 자세한 설명은 아래 문단에 후술.

7. 성능 요소

파일:상세 내용 아이콘.svg   자세한 내용은 캐시 메모리/성능 요소 문서
#!if (문단 == null) == (앵커 == null)
를
#!if 문단 != null & 앵커 == null
의 [[캐시 메모리/성능 요소#s-|]]번 문단을
#!if 문단 == null & 앵커 != null
{{{#!if 문서명 = 문서명 != null ? 문서명 : calleeTitle
의 [[캐시 메모리/성능 요소#|]] 부분을}}}
참고하십시오.
캐시 메모리의 스펙을 따질 때 십중팔구 캐시 메모리 용량만 보는 경우가 많다. 제조사가 캐시 메모리 관련 스펙을 표기할 때 용량만 표기하기 때문. 대부분 DRAM으로 구성된 메인 메모리와 마찬가지로 레이턴시, 스루풋, 병렬 처리 능력이 캐시 메모리의 성능을 결정하는 주요 지표이지만, 수치화할 수 있는 적중률(반대로는 적중 실패율), 수치화하기 어려운 각종 캐시 정책(알고리즘)들과 캐시 일관성 프로토콜들도 캐시 메모리의 성능에 영향을 주므로 이론적인 성능과 실제 성능의 괴리감이 메인 메모리보다 더 클 수 있다.

8. 최적화 기법

실제 회로 상에 캐시 메모리를 구현할 때는 회로의 면적, 전력 소모 및 타이밍 등의 요소를 고려해야 한다. 또한 현대의 슈퍼스칼라 프로세서에 탑재된 L1 캐시의 경우 한 사이클에 2-3개 이상의 읽기·쓰기를 동시에 처리할 수 있으면서도 캐시의 레이턴시가 1 ns 내외로 낮아야 하고, 기본적으로 대부분의 프로그램은 가상 메모리 주소를 사용하는 점 또한 고려하여야 한다.
  • 전력 소모 최적화
    • Way Prediction
  • 레이턴시 최적화
    • VIPT
    • Line Fill Buffer & Critical Word First
  • 처리량(대역폭) 최적화
    • Cache Pipelining
    • Multi-banked Cache
    • Non-blocking Cache
  • Cache Compression

9. 종류

10. 역사

10.1. CPU 캐시 메모리

초창기 캐시 메모리는 1969년에 출시된 IBM의 System/360 Model 85부터 존재했다. 지금의 메인 메모리처럼 카드 및 스틱 형태의 모듈이나 메인보드에 붙어서 CPU와 메인 메모리 사이에 독립적인 칩으로 존재했으나, CPU 집적도가 높아지면서 모토로라 68000 시리즈 기준 1984년에 출시된 68020부터, x86 기준으로 1989년에 출시된 인텔 80486부터 CPU 안에 캐시 메모리가 포함되게 됐다. 캐시 메모리가 내장된 CPU가 등장한 이후에도 CPU 외부에 별도 장착되는 캐시 메모리를 L2 캐시 메모리로 취급했었는데 L2 캐시 메모리는 CPU 클럭 속도와는 별개로 작동했기 때문에, 캐시 메모리의 클럭 속도가 시스템 전반적인 속도에 영향을 주었다.[7] 펜티엄 이후 CPU에서 펜티엄용 메인보드는 CPU 근처에 용량이 정해진 온보드 캐시 메모리뿐만 아니라 별도의 캐시 메모리 슬롯까지 있어서 필요한 경우에 L2 캐시 메모리를 증설할 수도 있었는데 이것이 스틱형 캐시 모듈의 마지막 세대이기도 했다.

그 이후에는 L2 캐시 메모리도 CPU 칩 패키징 내에 넣으려는 시도가 있었고, x86 아키텍처 중 인텔에서는 1995년 11월 출시된 펜티엄 프로에서, AMD에서는 1999년 출시된 K6-III에서 최초로 실현됐다. L2 캐시 메모리가 CPU 내에 통합되기 시작한 시기에는 캐시 메모리가 실장된 형태가 on-die, on-package(MCM)로 구분되어 있었다. on-die 캐시는 하나의 다이 안에 CPU 코어와 L2 캐시 메모리가 함께 포함되어 있는 것이고, on-package 및 그와 유사한 용어는 CPU 코어와 L2 캐시 메모리 다이는 서로 나뉘어 있지만 하나의 패키징된 칩 안에서 서로 연결된 형태를 가리킨다. L2 캐시 메모리까지 CPU에 내장된 덕분에 메인보드에 실장되어 있던 캐시 메모리는 하위 레벨로 밀려나 L3 캐시 메모리로 명명됐다. L2 캐시 메모리까지 내장된 K6-III가 장착된 메인보드의 경우 온보드된 L3 캐시 메모리를 tri-level cache라고 불렀다.

인텔은 펜티엄 프로 시리즈에서 하나의 패키지 안에 CPU 코어와 L2 캐시 메모리 다이를 모두 올리는 형태를 사용했다. 그러나 생산 단가 문제 때문에 일반 사용자를 대상으로 한 펜티엄 2와 초기 펜티엄 3 카트마이 및 셀러론 모델에서는 CPU 코어와 L2 캐시 메모리를 별도 칩으로 분리했고, CPU 형태도 소켓에서 슬롯으로 바꾸었다. 슬롯 1이 사용되던 시기의 인텔 CPU에서는 CPU 코어와 별개로 외부 제조사에서 만든 캐시 메모리용 SRAM이 붙어 있었고, 셀러론은 캐시 메모리가 붙어 있지 않거나 용량이 더 작았다. AMD도 K6-III에서 on-die L2 캐시 메모리를 도입했으나, 인텔과 같은 이유로 인해서 초기형 애슬론은 슬롯 형태로 전환했다. 이 당시 쓰인 외부 캐시는 기술력 및 단가의 한계 때문에 제조사와 모델에 따라 다르지만 CPU 클럭 스피드의 30~50%의 속도로 동작했다. 그러나 기술이 발전하여 on-die 캐시 메모리를 만들기 쉬워졌고, 외부 캐시 메모리의 클럭 레이트를 끌어 올리는 데에는 한계가 있기 때문에 인텔은 멘도시노 셀러론[8], 펜티엄 3 코퍼마인, AMD는 애슬론 선더버드부터 on-die L2 캐시 메모리로 복귀했다. 슬롯이 다시 소켓으로 돌아간 것은 보너스. 캐시 메모리의 속도 역시 CPU와 동기화돼서 성능 또한 향상됐다.

인텔은 초창기의 인텔 셀러론 시리즈인 코빙턴에서 L2 캐시 메모리를 없앴다가 엄청난 성능 저하를 보였다. 물론 L2 캐시 메모리가 원래 없었던 펜티엄 MMX와 동급 내지는 약간 더 나은 성능이긴 했으나, L2 캐시 메모리 있는 CPU와의 성능 격차가 너무 컸다. 이후 인텔은 아무리 저가형 모델이라고 하더라도 L2 캐시 메모리는 용량이 작더라도 항상 달고 나오기 시작했다. 펜티엄 3~4의 전환기에는 일부 투알라틴 코어의 셀러론은 L2 캐시가 256KB나 되어 코퍼마인 펜티엄 3보다 높은 성능인 제품도 있었다.

현세대에는 최소 L2, 보통 L3까지 존재한다. L3 캐시 메모리가 내장된 CPU는 인텔은 2002년 1세대 제온 MP 시리즈인 포스터 MP부터 도입됐다.

파일:external/www.hardwareoverclock.com/P4-EE-10%20Kopie.jpg
데스크탑 제품군에서는 2003년에 출시된 갤러틴 제온을 기반으로 급조된 펜티엄 4 Extreme Edition[9], 2008년 이후의 인텔 코어 i 시리즈가 있으며 AMD는 2007년 AMD 페넘 시리즈에서 L3 캐시 메모리를 도입한 후, AMD 페넘 II 시리즈, AMD FX 시리즈, AMD RYZEN 시리즈 등이 있다. 당연히 단계가 내려갈수록 용량은 증가하며, 반대로 속도는 상대적으로 떨어지게 된다. 물론 코어2 쿼드같이 L2 캐시가 12MB나 달린 깡패가 있긴 하다[10]

Intel Pentium 4 프로세서에 도입된 Trace 캐시와 현대 x86 프로세서의 경우 μop(micro-operation) 캐시라는 개념이 도입됐는데 이는 x86이 CISC라는 점에서 생긴 특징적인 캐시이다.
CISC라는 특성상 한개의 명령어는 프로세서 입장에서 보면 한 개를 초과하는 동작을 하는 추상적인 명령어가 존재하며 가변적인 길이라는 특징을 가지고 있으므로 이 명령어를 실행시키기 위해서는 파이프라인이 복잡해진다. 이 때문에 P6 아키텍처의 경우 파이프라인을 경량화하고 효율성을 증가시키기 위해 RISC의 설계 철학을 도입하여 CISC 명령을 RISC와 같이 개별 명령어로 쪼갠 μop(micro-operation)개념을 도입했다. 하지만 CISC 명령어를 μop으로 변환하는 과정을 매 인스트럭션 사이클마다 반복해야 하므로 디코더의 부하가 증가하는 것에 비해 μop 캐시를 사용하면 CISC에서 μop로 디코딩된 RISC 같은 명령어가 들어 있어 디코딩 단계를 우회하는 데 사용된다. 단, 일반적으로 마이크로옵의 크기가 명령어의 평균적인 크기보다 크기 때문에 면적당 성능에 집중한 아톰 계열 마이크로아키텍처에는 사용되지 않는다.

2015년 2분기 인텔의 코어 5세대 브로드웰 아키텍처 i7-5775c가 출시됐다. eDRAM 128MB의 초고용량[11] L4 캐시 메모리를 탑재했다. 주목적은 CPU 내부의 내장 그래픽 캐시용이지만 내장 그래픽을 사용하지 않으면 CPU의 L4 캐시 메모리로 전환해 사용 가능하다. 당시 기준으로 개인용 CPU에 128MB 용량이라는 큰 캐시 메모리를 사용했으나 5세대 브로드웰 자체가 바로 얼마 뒤 나온 6세대 스카이레이크에 밀려서 크게 주목받지 못했다. 그러나 성능 향상 하나는 확실해서 캐시 메모리 의존도가 높은 게임 분야나 서버 분야[12]는 7세대 카비레이크와 맞먹거나 소폭 우위였을 정도로 성능이 좋았다.

2022년 4월 3D V-Cache 기술을 사용한 Ryzen 7 5800X3D가 출시됐다. 100MB에 준하는 대용량 캐시를 수직 적층이라는 기술로 접목시켜 실현시킨 제품이다. 용량이 큰 만큼 캐시 적중률이 크게 오르고, 수직으로 CPU 코어 위에 가까이 얹어놓았기에 기존 대용량 캐시의 단점인 레이턴시도 크게 늘어지지 않는다.[13] 이에 따라 게임(맵 연산 등)에서 월등한 성능을 보여주며 게임 전용 CPU라는 타이틀을 획득하게 된다. 안타깝게도 게임·서버 외의 다른 작업[14]은 고용량의 캐시 메모리가 필요하지 않기에(이 용량까지 활용할 알고리즘이 없기에) 성능 향상은 미진한 편이긴 하며 3D V 캐시 제품군은 방열 성능이 떨어졌기에[15] 코어 i나 Non-3D V-Cache 라이젠이 좋다.

이처럼 반복 작업이 중요한 게임과 서버 분야에서 캐시 메모리가 차지하는 비중이 크기 때문에 개인용 CPU와 고급형 서버 CPU에서 대용량 캐시 메모리를 적용한 제품이 늘어나고 있다. 사실 라이젠 5800X3D 역시 서버용 에픽 프로세서를 만들던 중 부산물이었다고 AMD R&D 센터 견학 중 인터뷰를 통해 밝혔다.#

이처럼 인텔과 AMD의 주도 아래 캐시 메모리의 중요성이 부각되면서 CPU 캐시 메모리 용량이 증가 추세에 있다. 또한 Arm Cortex-X 시리즈 등 고성능 ARM 프로세서에서도 가격 조정을 위해 원래 설계상에서 있던 캐시 메모리를 AP 제조사들이 커스텀하면서 반토막 냈다가 성능에 크게 영향을 받기도 하여 이런 행위를 자제하게 되는 등 다른 CPU 아키텍처에서도 캐시 메모리의 중요성이 커졌다.

10.2. GPU 캐시 메모리

그래픽 카드의 GPU 캐시 메모리는 1999년에 등장한 GPU 개념이 잡히기 이전 시절의 프로세서에도 존재했지만, 구체적인 정보가 알려져 있지 않았다. 기껏해야 비디오 게임 콘솔의 GPU가 캐시 메모리처럼 쓸 수 있는 eDRAM 용량 정도였다. GPU 개념이 등장한 이후에도 한동안 찾아내기 어려운 정보였다가 2006년 NVIDIA의 지포스 8 시리즈, 2007년 AMD의 라데온 HD 2000 시리즈부터 용량 정보가 알려지기 시작했다.

CPU처럼 계층 구조가 정립되어 있는데, GPU 전체 레벨에서의 캐시 메모리를 L2 캐시 메모리 혹은 전역 공유 캐시 메모리라고 부르고, NVIDIA의 SM(스트림 멀티프로세서)나 AMD의 SIMD 코어 레벨에서의 캐시 메모리를 L1 캐시 메모리, 로컬 공유 캐시 메모리라고 부르는 편이다. 단, L1 캐시와 로컬 공유 캐시는 서로 별개로 존재하는 영역이기 때문에 어떤 기능을 수행하냐에 따라 거쳐가는 캐시 메모리가 다를 수 있으며, 이 레벨에는 명령어 캐시 메모리, 상수 캐시 메모리도 따로 존재하므로 계층 구조가 은근히 복잡하다. GPU에서의 L1 캐시 메모리는 읽기만 가능한 L1 텍스처 캐시 메모리에 해당한다. L2 캐시 메모리도 과거에는 읽기만 가능한 L2 텍스처 캐시 메모리였으나, 읽기와 쓰기 모두 가능한 L2 공유 캐시 메모리로 발전됐다. 따로따로 존재했던 L1 텍스처 캐시 메모리와 로컬 공유 캐시 메모리도 하나의 L1 캐시 메모리라는 영역의 일부로서 할당되는 방식으로 변경됐다.

2014년 NVIDIA의 맥스웰 아키텍처부터 SM 내에서도 4개의 파티션으로 세분화되면서 파티션마다 명령어 버퍼가 추가됐는데, 2017년 볼타 아키텍처부터는 아예 L0 캐시 메모리로 정립됐다. AMD도 마찬가지로 2019년 RDNA 아키텍처가 처음 도입된 라데온 RX 5000 시리즈부터 계층이 분화되어 기존의 L1 캐시 메모리가 L0로 격상되고 L1와 L2 사이에 캐시 메모리 계층이 추가되어 이를 L1 캐시 메모리로 명명됨에 따라 3계층 구조로 정립됐다.

인텔 내장 그래픽도 기능별 캐시 메모리가 존재했으나 계층 구조가 뚜렷하지 않았고, 2012년 아이비브릿지 세대에 들어서야 L3 캐시 메모리가 등장하면서 모양새를 갖추기 시작했다. 그런데 CPU의 L3 캐시 메모리와 혼동되는 문제 때문인지 CPU의 L3 캐시 메모리를 LLC(라스트 레벨 캐시) 메모리로 취급해 버린 데다, 2013년 하스웰 세대부터 Iris Pro Graphics가 내장된 CPU 한정으로 추가된 eDRAM이 L4 캐시 메모리라고도 부르게 되면서 캐시 메모리 레벨 명칭이 애매해졌다. 참고로 eDRAM은 속도가 빠르고 대역폭도 넓다 보니 eDRAM이 없는 기존의 HD Graphics 계열과는 차원이 다른 성능을 보여줬다. 가격도 차원이 달랐는데, 그나마도 성능이 레이븐 릿지에 못 미친 것은 덤이다.

11. 캐시 메모리와 버퍼 메모리

하드 디스크 사이의 속도 향상을 위해서 적게는 수 MB, 많게는 수백 MB 정도의 플래시/휘발성 메모리를 달아서 좀 더 빠른 입력에서도 대응하여 출력이 가능하도록 지원한다. 이를 버퍼 메모리라고 부르며, 하드 디스크에 있는 버퍼 메모리라고 해서 디스크 버퍼라고도 부르는데 얼핏 보면 캐시 메모리와 비슷해 보이지만, 목적이 전혀 다른 용도의 메모리이다. 캐시 메모리는 성능 향상을 목적으로 나온 메모리인 반면, 버퍼 메모리는 성능에 상관없이 사용자가 원하는 데이터 입출력을 완전하게 구현하기 위한 목적으로 나온 메모리라는 것. 이에 대한 자세한 내용은 버퍼 문서 참조.

SSD에도 동일한 개념의 버퍼·캐시 겸용 메모리가 달려 있는데, 여기에는 상대적으로 느린 플래시 메모리 대신 시스템 메모리에 흔히 보는 DDR 계열의 SDRAM이 사용된다.[16]

메인 메모리의 일부를 떼어서 HDD/SSD의 데이터를 캐싱하는 것도 가능하며 이를 페이지 캐시라고 부른다. DOS 시절 1MB 메모리가 달린 286 이상의 컴퓨터에는 640kiB를 넘어가는 상위 메모리 영역의 일부를 디스크 캐시로 사용할 수 있도록 해 주는 유틸리티가 여러 종류 있었다. 이후 Windows 95로 넘어오면서 운영 체제에서 자체적으로 디스크 캐시를 제공하게 됐다. Linux 등의 유닉스 계열 운영 체제도 디스크 캐시를 기본 기능으로 보유하고 있다. '디스크 캐시'라고 부르기도 하지만, 보조 저장 장치에 탑재된 '디스크 버퍼'와 혼동될 뿐만 아니라 메인 메모리 용량 부족으로 보조 저장 장치의 일부 용량을 메인 메모리 용도로 할당해서 사용하는 디스크 스왑(가상메모리)와는 전혀 다른 개념이므로 주의할 것.

12. 참고 자료


[오른쪽상단은?] 오른쪽 상단의 노란색 모듈은 BIOS ROM 칩 이다.[2] 인버터 2개에 워드 라인 및 비트 라인을 연결한 기본적인 구조의 SRAM[3] 6T SRAM에 읽기 전용 워드 라인 및 비트 라인을 추가한 구조[4] 이는 수정 하버드(Modified Harvard) 아키텍쳐의 특정이기도 하다.[5]인텔 하이브리드 테크놀로지가 적용된 CPU 한정으로 E코어는 코어 여러 개가 L2를 공유하는 구조다.[6] x86의 cldemote, clflushopt, prefetchwt1 등, 현대 고성능 프로세서들은 특정 워크로드에 따른 성능을 위해 캐시를 무시하고 직접적으로 메모리에 접근하는 명령을 사용할 수 있다.[7] 펜티엄 2 CPU[8] 더블 오버클럭 유행을 주도함.[9] 원래 제온 시리즈에서만 볼 수 있었던 캐시 메모리였기 때문에 후속작인 프레스캇 기반의 펜티엄 4 익스트림 에디션은 L3 캐시 메모리가 없다.[10] 참고로 2600K조차 L3 캐시가 8MB이며 13100F의 경우 16MB다. 12900K조차도 L2 캐시가 14MB다.[11] 2014년 기준 L3 캐시는 8MB(i7), 6MB(i5), 4MB(i3)가 일반적이었고, 2022년 기준으로도 30MB 이상 L3 캐시는 인텔 기준 i7, i9에만 탑재될 정도로 대용량으로 취급받는다.[12] 서버와 같이 했던 작업 또 반복적으로 하는 일이라면 캐시가 늘어난 만큼 성능이 오르기는 한다.[13] 캐시 용량이 커질수록 넓은 면적을 차지하게 되고, 면적이 넓어질수록 코어와 캐시와의 거리는 멀어져 레이턴시가 증가하게 된다. 무턱대고 고용량의 캐시를 넣는다 해서 성능 향상을 기대할 수 없는 이유이다.(물론 캐시 메모리가 비싸기도 하다는 어른의 사정이 있지만.)[14] 새로운 데이터를 디스크에서 읽어 오고, 연산이 끝나 넘긴 후에는 이를 반복해서 활용하지 않는 작업들.[15] 그러다보니 이 점이 해결된 AMD RYZEN 9000 시리즈 이전까지는 배수락이 걸려 있어 오버클럭이 불가능하며 전압 조정도 최대 1.35V로 3D V-Cache가 적용되지 않은 CPU보다 낮은 편이다.[16] 이제는 과거의 실험적이며 극소수로 사용됐던 보조기억장치인 SSHD의 경우 하드 디스크의 버퍼를 아예 저용량의 플래시 메모리 기반 SSD랑 섞어버린 것.

분류