[cs 스터디] 3-2. 메모리 - 메모리 계층

YooJeeun·2025년 1월 6일

cs 스터디

목록 보기
30/65

메모리 계층

메모리 계층 구성: 레지스터, 캐시, 메모리, 저장장치

레지스터캐시주기억장치보조기억장치
CPU 안에 있는 작은 메모리L1, L2 캐시 지칭RAMHDD, SSD
휘발성휘발성휘발성비휘발성
속도 가장 빠름속도 빠름속도 보통속도 낮음
기억 용량 가장 적음기억 용량 적음기억 용량 보통기억 용량 많음

상위 계층일수록 가격 ↑, 용량 ↓, 속도 ↑
계층이 있는 이유 -> 경제성과 캐시 때문

캐시

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

  • 데이터 접근 시간이 오래 걸리는 경우를 해결
  • 무언가를 다시 계산하는 시간을 절약

메모리와 CPU간 속도 차이가 크기 때문에 중간에 레지스터 계층을 둬서 속도 차이를 해결한다. 이렇게 속도 차이를 해결하기 위해 계층과 계층 사이에 있는 계층을 캐싱 계층이라고 한다.
(예 - 캐시 메모리와 보조기억장치 사이에 있는 주기억장치를 보조기억장치의 캐싱 계층이라고 할 수 있음)

캐시 계층을 두는 것 말고 캐시를 직접 설정하는 경우
: 자주 사용하는 데이터를 기반으로 설정해야한다.
자주 사용하는 데이터에 대한 근거가 되는 것 -> 지역성

  • 시간 지역성(temporal locality)
  • 공간 지역성(spatial locality)

시간 지역성
: 최근 사용한 데이터에 다시 접근하려는 특성
(예 - for문안의 변수 i에 계속해서 접근이 이루어지는 경우. 데이터는 변수 i 이고 최근에 사용했기 때문에 계속 접근해서 +1을 연이어 하는 것을 알 수 있다.)


공간 지역성
: 최근 접근한 데이터를 이루고 있는 공간이나 그 가까운 공간에 접근하는 특성
(예 - 공간을 나타내는 배열 arr의 각 요소들에 i가 할당되며 해당 배열에 연속적으로 접근함)

캐시히트와 캐시미스

캐시 히트: 캐시에서 원하는 데이터를 찾았을 경우
캐시 미스: 캐시에 데이터가 없어서 주메모리로 가서 데이터를 찾아오는 경우

캐시 히트를 하게되면 해당 데이터를 제어장치를 거쳐 가져오게 된다.

  • 위치 가까움, CPU 내부버스 기반으로 작동함 -> 빠르다.

캐시 미스가 발생되면 해당 데이터를 메모리에서 가져오게 된다.

  • 시스템 버스 기반으로 작동함 -> 느리다.

캐시 매핑

: 캐시가 히트되기 위해 매핑하는 방법을 말한다.
(CPU의 레지스터와 주 메모리(RAM)간에 데이터를 주고 받을 때를 기반으로 설명)

레지스터와 주 메모리는 크기 차이가 크기때문에 작은 레지스터가 캐시 계층으로써 역할을 잘 하려면 매핑이 중요하다.

이름설명
직접 매핑
(direct mapping)
메모리가 1~100이 있고 캐시가 1~10이 있다면 1:1~10, 2:1~20... 이런 식으로 매핑하는 것. 처리가 빠르지만 충돌 발생이 잦다.
연관 매핑(associative mapping)순서를 일치시키지 않고 관련 있는 캐시와 메모리를 매핑한다. 충돌이 적지만 모든 블록을 탐색해야해서 속도가 느리다.
집합 연관 매핑
(set associative mapping)
직접 매핑 + 연관 매핑. 순서는 일치시키지만 집합을 둬서 저장하며 블록화 되어있기 때문에 검색은 좀 더 효율적이다.
(예 - 메모리 1~100, 캐시 1~10일 경우 캐시 1~5에는 1~50의 데이터를 무작위로 저장시킨다.)

웹 브라우저의 캐시

소프트웨어적인 대표적인 캐시: 웹 브라우저의 작은 저장소인 쿠키, 로컬 스토리지, 세션 스토리지
보통 사용자의 커스텀한 정보나 인증 모듈 관련 사항들을 웹브라우저에 저장해서 추후 서버에 요청할 때 자신을 나타내는 아이덴티티나 중복 요청 방지를 위해 쓰인다.
오리진에 종속

쿠키
: 만료기한 O, 키-값 저장소
same site 옵션을 strict로 설정하지 않았을 경우 다른 도메인에서 요청했을 때 자동 전송되며 $KB까지 데이터를 저장할 수 있다.
쿠키를 설정할 때는 document.cookie로 쿠키를 볼 수 없게 httponly 옵션을 거는 것이 중요하다.
클라이언트, 서버에서 만료기한을 설정할 수 있지만 보통 서버에서 정한다.


로컬 스토리지
: 만료기한 X, 키-값 저장소
5MB까지 저장 가능.
웹 브라우저를 닫아도 유지된다. HTML5를 지원하지 않는 웹 브라우저에서는 사용할 수 없으며 클라이언트에서만 수정이 가능하다.


세션 스토리지
: 만료기한 X, 키-값 저장소
탭 단위로 세션 스토리지를 생성.
탭을 닫을때 해당 데이터도 삭제 된다.
5MB까지 저장 가능.
HTML 5를 지원하지 않는 웹 브라우저에서는 사용할 수 없다.
클라이언트에서만 수정이 가능하다.

데이터베이스의 캐싱 계층

데이터베이스 시스템을 구축할 때도 메인 데이터베이스 위에 레디스(redis) 데이터베이스 계층을 '캐싱 계층'으로 둬서 성능을 향상시키기도 한다.

profile
제니벨로그

0개의 댓글