[Operating System] 캐시

olwooz·2023년 1월 30일
0

Operating System

목록 보기
10/10

캐시

- 주기억장치에 저장된 내용의 일부를 임시로 저장해두는 기억장치
- 빠른 장치(CPU)와 느린 장치(주기억장치)에서 속도 차이에 따른 병목 현상 줄이기 위한 메모리

e.g. 메모리와 CPU 사이의 속도 차이가 너무 커서 그 중간에 레지스터 계층을 둬서 속도 차이 해결

캐싱 계층 - 계층과 계층 사이에 있는 계층
e.g. 캐시와 보조기억장치 사이의 주기억장치 → 보조기억장치의 캐싱 계층

CPU와 기억장치의 상호작용

  • CPU에서 주소 전달 → 캐시에 명령 존재하는지 확인
    • cache hit → 해당 명령어를 CPU로 전송 → 완료
    • cache miss → 명령어를 가지고 주기억장치로 접근 → 해당 명령어를 가진 데이터 인출 → 해당 명령어 데이터 캐시에 저장 → 해당 명령어 CPU로 전송 → 완료
  • 적중률 극대를 위해 지역성의 원리 사용

cache hit - 캐시에서 원하는 데이터 찾음, CPU 내부 버스 기반으로 작동, 빠름
cache miss - 데이터가 캐시에 없어서 주기억장치로 가서 데이터 찾아옴, 시스템 버스 기반으로 작동, 느림

지역성의 원리

  • 캐시 계층을 두는 것 말고 캐시를 직접 설정할 때 - 자주 사용하는 데이터 기반 설정
  • 자주 사용하는 데이터의 근거: 지역성
    • 시간 지역성 (temporal locality)
    • 공간 지역성 (spatial locality)

시간 지역성

- 최근 사용한 데이터에 다시 접근하려는 특성 (e.g. for 반복문의 i)

공간 지역성

- 최근 접근한 데이터를 이루고 있는 공간이나 그 가까운 공간에 접근하는 특성 (e.g. 배열)

캐시 매핑

  • 캐시가 히트되기 위해 매핑되는 방법
  • CPU의 레지스터와 RAM간에 데이터를 주고받을 때 기반

직접 매핑 (direct mapping)

처리 빠르지만 잦은 충돌

연관 매핑 (associative mapping)

순서 일치 x, 관련 있는 캐시와 메모리 매핑, 충돌 적지만 모든 블록 탐색해야 해서 처리 느림

집합 연관 매핑 (set associative mapping)

직접+연관 매핑, 순서 일치, 집합을 둬서 저장하며 블록화되어 있어서 검색 효율적

캐싱 라인

- 캐시에 데이터 저장 시 자료구조를 활용해 묶어서 저장하는 것
- 캐시에 저장하는 데이터에 메모리 주소를 함께 저장해 빠르게 원하는 정보 찾음 (set, map 등 활용)

웹 브라우저의 캐시

  • 쿠키, 로컬 스토리지, 세션 스토리지

쿠키

- 만료기한이 있는 k-v 저장소
- ~4KB
- 보통 서버에서 만료기한 설정

로컬 스토리지

- 만료기한이 없는 k-v 저장소
- ~10MB
- 웹 브라우저 닫아도 유지
- 도메인 단위로 저장, 생성
- HTML5 지원하지 않으면 사용 X
- 클라이언트에서만 수정 가능

세션 스토리지

- 만료기한이 없는 k-v 저장소
- 탭 단위로 세션 스토리지 생성
- 탭을 닫을 때 데이터 삭제
- ~5MB
- HTML5 지원하지 않으면 사용 x
- 클라이언트에서만 수정 가능

데이터베이스의 캐싱 계층

  • redis - 데이터베이스 계층을 캐싱 계층으로 둬서 성능 향상

0개의 댓글