본문 바로가기

CS/운영체제

캐시(Cache)

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

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

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

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

 

지역성(Principle of locality)

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

1) 공간지역성(Spatial Locality)

- 최근에 참조된 주소의 인접한 데이터가 참조될 가능성이 높은 특성

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

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

2) 시간지역성(Temporal Locality)

- 최근에 참조된 주소의 내용이 재 참조될 가능성이 높은 특성

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

- for, while...

 

캐시의 종류

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

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

L1 cache

- 프로세서와 가장 가까운 캐시

- 속도를 위해 *Instruction cache*Data cache로 나눈다.

    Instruction Cache (I$): 메모리의 TEXT 영역 데이터를 다루는 캐시.

    Data Cache (D$): TEXT 영역을 제외한 모든 데이터를 다루는 캐시.

L2 cache

- L1 캐시보다 용량이 큰 캐시

- 크기를 위해 L1 캐시처럼 나누지 않는다.

L3 cache

- 멀티코어 시스템에서 여러 코어가 공유하는 캐시

 

오늘날 CPU 칩의 면적 30~70%는 캐시가 차지한다. 1989년 생산된 싱글 코어 프로세서인 i486의 경우 8KB짜리 I/D 캐시 하나만 있었다. 한편 인텔 코어 i7 쿼드 코어 칩의 다이 맵(Die map)을 보면 4개의 코어에 각각 256KB L2 캐시가 있고, 모든 코어가 공유하는 8MB L3 캐시가 있는 것을 볼 수 있다.

'CS > 운영체제' 카테고리의 다른 글

가상화란? (VM, 컨테이너, 도커, 쿠버네티스)  (0) 2021.03.24
교착상태(Deadlock)  (0) 2021.03.03
동기화  (0) 2021.03.03
멀티 프로세스  (0) 2021.02.24