Cache?

이후띵·2022년 3월 21일
0

프론트_지식백과

목록 보기
4/8

한 줄 대답

  • Cache란, 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다. 캐시는 저장 공간이 작고 비용이 비쌀수록 빠른 성능을 제공한다.

Cache는 아래와 같은 경우에 사용을 고려하면 좋다.

  • 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우(서버의 균일한 API 데이터)
  • 반복적으로 동일한 결과를 돌려주는 경우(이미지나 썸네일 등)

Cache에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있다.

결국 Cache란 반복적으로 데이터를 불러오는 경우에, 지속적으로 DBMS 혹은 서버에 요청하는 것이 아니라 Memory에 데이터를 저장하였다가 불러다 쓰는 것을 의미한다.

Enterprise급 Application에서는 DBMS의 부하를 줄이고, 성능을 높이기 위해 캐시(Cache)를 사용한다.

원하는 데이터가 캐시에 존재할 경우 해당 데이터를 반환하며, 이러한 상황을 Cache Hit라고 한다.

하지만 원하는 데이터가 캐시에 존재하지 않을 경우 DBMS 또는 서버에 요청을 해야하며 이를 Cache Miss라고 한다.

캐시는 저장공간이 작기 때문에, 지속적으로 Cache Miss가 발생하는 데이터의 경우 캐시 전략에 따라서 저장중인 데이터를 변경해야 한다.

  • DBMS ? Database Management system의 준말로 데이터를 한곳에 모은 저장소를 만들고 그 저장소에 여러 사용자가 접근하여 데이터를 저장 및 관리 등의 기능을 수행하며 공유할 수 있는 환경을 제공하는 응용 소프트웨어 프로그램이다.
  • 캐시의 필요성 위의 그래프는 Long Tail 법칙의 그래프이다. Long Tail 법칙은 20%의 요구가 시스템 리소스의 대부분을 사용한다는 법칙이다. 그렇기 때문에 20%의 기능에 Cache를 이용함으로써 리소스 사용량은 대폭 줄이고, 성능은 대폭 향상시킬 수 있다.

    Local Cache

    • Local 장비 내에서만 사용되는 캐시로, Local 장비의 Resource를 이용한다.

    • Local에서만 작동하기 때문에 속도가 빠르다.

    • Local에서만 작동하기 때문에 다른 서버와 데이터 공유가 어렵다.

      Global Cache

    • 여러 서버에서 Cache Server에 접근하여 사용하는 캐시로 분산된 서버에서 데이터를 저장하고 조회할 수 있다.

    • 네트워크를 통해 데이터를 가져오므로, Local Cache에 비해 상대적으로 느리다.

    • 별도의 Cache서버를 이용하기 때문에 서버 간의 데이터 공유가 쉽다.

  • 캐시는 왜 사용하나요? CPU와 주기억장치간의 속도차로 발생하는 CPU의 유휴 시간(IDLE Time)을 최소화하기 위해 캐시를 사용합니다. 무어의 법칙에 의해 CPU의 처리 속도는 급격하게 증가했지만, 메모리 접근 속도는 그러지 못하였습니다. CPU의 연산 속도는 빠르지만, 연산에 필요한 데이터가 전송되는 속도가 느리기 때문에 CPU의 성능을 모두 내지 못했습니다. 이런 부분을 극복하기 위해 CPU와 메인 메모리 사이에 작은 SRAM 캐시 메모리가 등장했습니다.
    • 무어의 법칙 (참고) 💡 반도체 직접회로의 성능이 24개월마다 2배로 증가한다는 법칙
  • Q. 캐시 메모리 저장 규칙은 무엇인가요? 캐시를 효율적으로 사용하기 위해 어떤 정보를 담아야할까요? 캐시가 효율적으로 동작하려면, 캐시에 저장할 데이터가 지역성을 가져야 합니다.
    지역성이란 데이터 접근이 시간적, 혹은 공간적으로 가깝게 일어나는 것을 의미합니다.
    1. 시간적 지역성

      특정 데이터에 한번 접근해서 가져온 경우, 그 데이터가 가까운 미래에 또 한번 접근할 가능성이 높은 것이 시간적 지역성입니다. 최근에 접근된 데이터를 다시 사용할 가능성이 높다는 의미입니다.

    2. 공간적 지역성

      특정 데이터와 가까운 주소가 순서대로 접근되었을 경우를 공간적 지역성이라고 합니다.

      사용된 데이터의 주변 데이터는 다시 사용될 확률이 높다는 의미입니다.

      예를 들어 arr = [1, 2, 3] 이라는 배열이 있을때 arr[0], arr[1] 에 접근하면 arr[2] 에 접근할 확률이 높다는 것 입니다.

  • 캐시 종류 듀얼 코어 프로세서의 캐시 메모리 : 각 코어마다 독립된 L1 캐시 메모리를 가지고, 두 코어가 공유하는 L2 캐시 메모리가 내장됨 만약 L1 캐시가 128kb면, 64/64로 나누어 64kb에 명령어를 처리하기 직전의 명령어를 임시 저장하고, 나머지 64kb에는 실행 후 명령어를 임시저장한다. (명령어 세트로 구성, I-Cache - D-Cache)
    • L1 : CPU 내부에 존재
    • L2 : CPU와 RAM 사이에 존재
    • L3 : 보통 메인보드에 존재한다고 함
  • 캐시 미스 경우 3가지
    1. #Cold miss

      해당 메모리 주소를 처음 불러서 나는 미스

    2. #Conflict miss

      캐시 메모리에 A와 B 데이터를 저장해야 하는데, A와 B가 같은 캐시 메모리 주소에 할당되어 있어서 나는 미스 (direct mapped cache에서 많이 발생)

      항상 핸드폰과 열쇠를 오른쪽 주머니에 넣고 다니는데, 잠깐 친구가 준 물건을 받느라 손에 들고 있던 핸드폰을 가방에 넣었음. 그 이후 핸드폰을 찾으려 오른쪽 주머니에서 찾는데 없는 상황

    3. #Capacity miss

      캐시 메모리의 공간이 부족해서 나는 미스 (Conflict는 주소 할당 문제, Capacity는 공간 문제)

      캐시 크기를 키워서 문제를 해결하려하면, 캐시 접근속도가 느려지고 파워를 많이 먹는 단점이 생김

profile
이후띵's 개발일지

0개의 댓글