본문 바로가기

OS

[운영체제] 캐시

728x90

캐시란, 메인메모리에 저장된 내용의 일부를 임시로 저장해두는 기억장치를 말한다.

왜 메인메모리가 있는데 캐시라는 저장장치를 두는 것이며 메인메모리와의 차이는 무엇일까?

 

 

메인메모리

메인메모리 = 주기억장치= RAM

 

개념

프로그램이 실행되려면 해당 프로그램이 복사되어서 메모리에 적재(메모리에 적재된 프로그램을 프로세스라고 한다.)되어야 한다.

CPU는 연산을 수행한 후에 메인 메모리에 데이터를 저장하거나 필요한 데이터를 요구한다.

 

RAM은 Random Access Memory의 약자로, 어느 위치에 저장된 데이터든지 접근하는데 동일한 시간이 걸리는 메모리를 말한다. 

(RAM은 DRAM과 SRAM이 있는데 주기억장치는 주로 DRAM을 의미)

 

 

특징

  • 컴퓨터의 CPU가 현재 처리 중인 데이터나 명령만을 일시적으로 저장하는 휘발성 메모리이다.
    (= 전원이 꺼지면 메인메모리에 저장된 내용들은 모두 사라진다.)
    컴퓨터가 꺼진 이후에도 데이터를 유지하고 싶은 경우에는 데이터를 하드 디스크에 저장해야 한다. 
  • 보조기억장치보다 접근 속도가 빠르지만 CPU에 비해서는 속도가 느리다.

 

✅ CPU에서 필요한 데이터가 있을 때, 매번 메인 메모리에 직접 접근하는 것은 비효율적인 방법이고

✅ CPU와의 속도 차이도 존재하므로 이 차이를 완화하기 위해 캐시가 존재한다. 

 

 

캐시 

메인메모리에 저장된 내용의 일부를 임시로 보관하고 있는 기억장치

 

빠른 속도로 CPU와 메인메모리의 속도 차이를 보완한다.

저장공간이 작고 비용이 비싸지만 빠른 성능을 제공한다.

 

프로세서가 매번 메인 메모리에 접근해서 데이터를 받아오면 시간이 많이 걸리기 때문에 캐시에 자주 사용하는 데이터를 담아두고 해당 데이터가 필요할 때 프로세서가 메인메모리 대신 캐시에 접근하도록 하여 처리 속도를 높인다. 

 

 

캐시의 성능

캐시의 성능을 측정하는 기준은 두가지이다.

 

캐시 히트

요청한 데이터가 캐시에 존재하는 경우

히트가 발생하여 캐싱된 데이터를 갖고 오는 시간이 hit latency이다.

 

캐시 미스

요청한 데이터가 캐시에 존재하지 않은 경우

미스가 발생하여 캐시/메인메모리에서 데이터를 갖고 오는 시간이 miss latency이다.

 

평균 접근 시간은 hit latency + (miss rate * miss latency)이다.

 

캐시를 잘 활용해서 miss rate를 줄이면 비효율적인 비용을 줄일 수 있다.

miss rate를 줄이기 위해서는 = CPU가 어떤 데이터를 원하는지 잘 예측을 해야한다. 그리고 캐시에 쓸모 있는 정보가 들어가도록 해야한다.

 

이 때, 캐시의 효율을 극대화하기 위해 어느 데이터를 원할지의 판단에 사용되는 것이 지역성의 원리이다. 

 

 

지역성

기억 장치 내의 정보를 균일하게 접근하는 것이 아니라 한 순간에 특정 부분을 집중적으로 참조하는 특성

 

자주 사용하는 데이터에 대한 판단은 지역성의 원리를 따르며 이 지역성은 시간지역성과 공간지역성으로 구분할 수 있다.

 

시간 지역성

최근 접근한 데이터에 대해 다시 접근하는 경향을 말한다.

 

공간지역성 

최근 접근한 데이터의 주변 공간에 다시 접근하는 경향을 말한다.

 

 

캐싱라인 

빈번하게 사용되는 데이터들을 캐시에 저장했더라도 필요한 데이터를 캐시에서 찾을 때 모든 데이터를 순회하는 것은 시간 낭비이다.

즉, 캐시에 목적 데이터가 저장되어 있을 때 바로 접근해서 출력할 수 있도록 해야 캐시 활용에 의미가 있다.

 

따라서 캐시에 데이터를 저장할 때 set 또는 map의 자료구조를 활용해 데이터와 데이터의 메모리 주소를 함께 묶어서 저장하는 것을 캐싱라인이라고 한다.