운영체제OS

캐시란? cache

강강강 2022. 11. 24. 22:13

캐시 cache

: 캐시는 데이터를 미리 복사해놓은 임시 저장소이자 빠른 장치와 느린 장치의 속도 차이에 따른 병목현상을 줄이기 위한 메모리를 말한다.

이릍 통해 데이터를 접근하는 시간이 오래 걸리는 경우를 해결하고 무언가를 다시 계산하는 시간을 절약할 수 있다.!!

 

실제로 메모리와 CPU 사이의 속도가 차이가 너무 크기 때문에 그 중간에 레지스터 계층을 둬서 속도 차이를 해결한다. 

이렇게 속도 차이를 해결하기 위해 계층과 계층 사이에 있는 계층을 캐싱켸층이라고 함!!

ex) 캐시 메모리와 보조기억장치 사이에 있는 주 기억장치를 보조기억장치의 캐싱 계층이라고 할 수 있는 것..

 

 

지역성의 원리

캐시 계층을 두는 것 말고 캐시를 직접 지정하기 설정할 때에는 어떻게 해야하남??

-> 자주 사용하는 데이터를 기반으로 설정해야 한다!! -> 그렇다면 자주 사용하는 데이터에 대한 근거는???무엇일까??? -> 바로 지역성!!

지역성은 시간 지역성, 공간 지역성으로 나뉜다.

 

시간 지역성

: 최근 사용한 데이터에 다시 접근하려는 특성을 말한다.

예를들어 for 반복문으로 이루어진 코드 안의 변수 i에는 계속해서 접근이 이루어진다. 여기서 데이터는 변수 i 이고 최근에 사용했기 때문에 계속 접근해서 +1 을 연이어 하는 것을 볼 수 있음!!

int[] arr = new int[5];
for (int i = 0; i< arr.length; i++)
	arr[i] = i;

 

공간지역성

: 최근에 접근한 데이터를 이루고 있는 공간이나 그 가까운 공간에 접근하는 특성을 말한다. 

위의 코드에서 공간을 나타내는 배열 arr 의 각 요소들에 i 가 할당되어 해당 배열에 연속적으로 접근하고 있는 것!

 

 

캐시히트, 캐시미스

: 캐시에서 원하는 데이터를 찾았다면 캐시히트, 해당 데이터가 캐시에 없다면 주메모리로 가서 데이터를 찾아오는 것을 캐시미스

 

 

그림처럼 캐시히트를 하게되면 해당 데이터를 제어장치를 거쳐 가져온다. 캐시히트의 경우 위치도 가깝고 CPU 내부 버스를 기반으로 작동하기 때문에 빠르다.

 

하지만 캐시미스가 발생하면 메모리에서 가져오게 되는데 이는 시스템 버스를 기반으로 작동하기 때문에 느린것!!