«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
Recent Posts
Recent Comments
관리 메뉴

뉴히의 개발 로그

[CS] CS Study - 캐시 본문

CS

[CS] CS Study - 캐시

뉴히 2023. 10. 5. 10:43

캐시란?

  • 캐시는 데이터를 미리 복사해 놓는 임시 저장소
  • 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리
  • 데이터 접근에 오래 걸리는 경우를 해결하고 다시 계산하는 시간을 절약
  • 즉, 캐시는 계층과 계층 사이에서 속도차이를 해결하기 위한 임시 저장소

지역성의 원리

자주 사용되는 데이터의 특성을 의미

캐시를 직접 설정할때는 자주 사용되는 데이터를 기반으로 설정해야 하며 이러한 특성을 지역성이라고 한다

 

시간 지역성

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

for(let i=0; i<5; i++){
	console.log(i) // 0 1 2 3 4
}

ex) for문 안에 선언된 i는 반복문 안에서 계속해서 접근이 이루어지는 변수이다.최근에 사용했기 때문에 계속 접근해서 +1 이 이루어지는 것이다. (i 변수에 대한 시간 지역성)

 

공간 지역성

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

let arr = [];

for(let i=0; i<5; i++){
	arr.push(i)
}
// arr = [0,1,2,3,4]

ex) 배열 arr이라는 공간에 i가 연속적으로 할당되어 접근하는 방식 (arr 배열 원소에 대한 공간 지역성)

 

캐시히트와 캐시미스

캐시히트

캐시에 원하는 데이터를 찾은 것

  • 위치도 가깝고 CPU 내부버스를 기반으로 작동하여 빠르다
  • 캐시히트를 하게 되면 해당 데이터를 제어장치를 거쳐 가져오게 된다.

캐시미스

해당 데이터가 캐시에 없다면 주메모리로 가서 데이터를 찾아오는 것

  • 메모리를 가져올때 시스템 버스를 기반으로 작동하기 때문에 느리다

캐시 매핑

캐시가 히트되기 위해 매핑되는 방법

  • CPU의 레지스터 와 주 메모리(RAM) 간에 데이터를 주고 받을 때를 기반
  • 주 메모리에 비해 굉장히 작은 레즈시터가 캐시 계층으로써 역할 -> 매핑이 중요

직접 매핑

  • 메모리가 1~100이 있고 캐시가 1~10이 있다면 1:1~10, 2:1~20... 와 같이 매핑
  • 처리가 빠르지만 충돌 발생이 잦다

연관 매핑

  • 순서를 일치하지 않고 관련 있는 캐시와 메모리를 매핑
  • 충돌이 적지만 모든 블록을 탐색하여 속도가 느리다

집한 연관 매핑

  • 직접 매핑과 연관 매핑을 합쳐 놓은 것
  • 순서는 일치하지만 집합을 둬서 저장하며 블록화되어 있어 검색이 효율적