기술의 발전으로 프로세서 속도는 빠르게 증가해온 반면에, 메모리 속도는 이를 따라가지 못했다. 이렇게 되면 프로세서가 아무리 빨라도 메모리의 처리 속도가 느리기 때문에 전체 시스템 속도는 느려지게 된다. 이를 개선하기 위해 등장한 장치가 캐시
이다.
프로세서와 메인 메모리간의 처리 속도 차이를 보완하기 위한 고속 버퍼
Main memory와 CPU 사이에 존재
CPU 칩 안에 들어가는 작고 빠르고 비싼 메모리
저속,낮은 대역폭 → 고속,높은 대역폭
: 메인 메모리에서 데이터를 블록 단위로 가져와 프로세서에 워드 단위로 전달
캐시 적중 cache hit
: CPU가 요청한 데이터가 캐시에 존재할 경우
캐시 실패 cache miss
: 캐시에 존재하지 않아 메모리에서 가져오는 경우
: Capacity miss, Compulsory miss, Conflict miss 등이 존재
'자주 사용하는 데이터'의 판단의 척도 → 지역성의 원리
캐시에도 지역성이 존재
지역성
이란 기억장치에 대해 특정 영역에만 참조가 집중적으로 이루어지는 것을 말한다.
지역성 종류
시간적 지역성 발생 이유
공간적 지역성 발생 이유
최근 접근한 데이터의 주변 공간에 다시 접근하는 경향
참조된 데이터 주변에 있는 데이터가 다음 참조될 확률이 높다.
프로그램이 명령어를 순차적으로 실행하는 경향 때문
대부분의 컴파일러를 메모리에 인접한 블록에 배열로 저장,
따라서 프로그램이 배열 원소에 순차적 접근을 시도하므로, 지역적 접근 경향 발생
예시
for(int i=0;i<5;i++)
cout << arr[i];
CPU 칩에는 여러 개의 캐시가 존재합니다. 각각의 캐시는 각자의 목적과 역할을 지님.
성능과 역할에 따라 L1,L2,L3 캐시로 나눌 수 있다.
용량은 Register < L1 < L2 < L3 < Main memory
L1 cache
프로세서와 가장 가까운 캐시
속도에 따라 Instruction cache, Data cache로 나뉜다
Instruction cache - 메모리의 text 영역 데이터를 다루는 캐시
Data cache - text 영역을 제외한 모든 영역을 다루는 캐시
L2 cache
L1 캐시보다 용량이 큰 캐시
L3 cache
멀티코어 시스템에서 여러 코어가 공유하는 캐시