캐시(Cache)는 프로세서와 메인 메모리간의 처리 속도 차이를 보완하기 위한 고속 *버퍼이다.

(*버퍼 : 데이터를 한곳에서 다른 한곳으로 전송하는 동안, 일시적으로 그 데이터를 보관하는 메모리 영역)

캐시는 메인 메모리에서 데이터를 블록 단위(저속/낮은 대역폭)로 가져와 프로세서에 워드 단위(고속/높은 대역폭)로 전달한다.

프로세서에서 읽어들인 워드에 참조하려는 정보가 있는 경우를 캐시 적중(cache hit), 없는 경우는 캐시 실패(cache miss)라 한다.

 

Principle of locality

캐시에는 지역성이란것이 존재한다.

지역성이란 기억장치에 대해 특정 영역에만 참조가 집중적으로 이루어지는것으로, 공간적 지역성시간적 지역성 등이 존재한다. 

 

공간적 지역성이 발생하는 이유는 다음과 같다.

1)프로그램이 명령어를 순차적으로 실행하는 경향때문에 발생

2)대부분의 컴파일러를 메모리에 인접한 블록에 배열로 저장. 따라서 프로그램이 배열 원소에 순차적 접글을 시도하므로, 지역적 접근 경향 발생

 

시간적 지역성이 발생하는 이유는 다음과 같다.

1) 같은 주소를 반복해서 참조한 경우

ex) for문, while문...

 

CPU칩에는 여러개의 cache가 들어간다.

그리고 그 성능과 역할에 따라 L1, L2, L3 캐시 등으로 나눌 수 있다.

1) L1 cache : 프로세서와 가장 가까운 캐시이며, 속도를 위해 *Instruction cache와 *Data cache로 나눈다.

(Instruction cache : 메모리의 TEXT영역 데이터를다루는 캐시 / Data cache : TEXT영역을 제외한 모든 영역을 다루는 캐시)

2) L2 cache : L1 캐시보다 용량이 큰 캐시

3) L3 cache : 멀티코어 시스템에서 여러 코어가 공유하는 캐시

캐시의 용량은 L1 < L2 < L3 순이다.

뒤에 붙은 숫자가 늘어날 수록 비교적 코어에서 멀고, 속도가 느리다.

+ Recent posts