2. 메모리

Heet Cho·2023년 5월 18일
0
post-thumbnail

2. 메모리

CPU는 그저 ‘메모리’에 올라와 있는 프로그램의 명령어들을 실행할 뿐이다.

2.1. 메모리 계층

메모리 계층은 레지스터, 캐시, 주기억장치, 보조기억장치로 구성되어 있다.

계층속도용량
레지스터14
캐시 (L1, L2 캐시)23
메모리(RAM) / 주기억장치32
저장장치(HDD, SSD) / 보조기억장치41
  • 레지스터 : CPU 안의 작은 메모리. 휘발성, 속도 가장 빠름, 기억 용량 가장 작음
  • 캐시 : L1, L2 캐시를 지칭한다. 휘발성, 속도 빠름, 기억 용량 작음. (L3 캐시도 있음)
  • 주기억장치 : RAM을 가리키며 휘발성, 속도 보통, 기억 용량 보통
  • 보조기억장치 : HDD, SSD를 말하며 비휘발성, 속도 느림, 기억 용량 많음

캐시

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

  • 메모리와 CPU 사이 속도 차이가 너무 크기 때문에 중간에 레지스터 계층을 둬서 속도 차이를 해결함
  • 속도 차이를 해결하기 위해 계층 사이에 있는 계층을 캐싱 계층이라 함

지역성의 원리

  • 캐시를 직접 설정할 때 기반하는 원리
  • 자주 사용하는 데이터를 기반으로 캐시를 설정함. 이 때 자주 사용하는 데이터에 대한 근거가 지역성
  1. 시간 지역성

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

    let arr = Array.from({length : 10}, ()=>0);
    console.log(arr)
    for (let i = 0; i < 10; i += 1) {
    	arr[i] = i;
    }
    console.log(arr)
    /*
    [
    	0,0,0,0,0,
    	0,0,0,0,0
    ]
    [
    	0,1,2,3,4,
    	5,6,7,8,9
    ]
    */
  2. 공간 지역성

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

    • 위 코드에서 arr의 각 요소들에 i가 할당되며 배열에 ‘연속적’으로 접근

캐시히트와 캐시미스

  • 캐시히트 : 캐시에서 데이터를 찾았을 때
  • 캐시미스 : 캐시에 데이터가 없을 때 주 메모리로 가서 데이터를 찾아오는 것
  • 캐시히트를 하게 되면 해당 데이터를 제어장치를 거쳐 가져오게 됨. 캐시히트는 위치가 가깝고 CPU 내부 버스를 기반으로 작동하므로 빠름.
  • 캐시미스가 발생하면 메모리에서 데이터를 가져오게 되는데, 이는 시스템 버스를 기반으로 작동하기 때문에 느림.

캐시매핑

캐시가 히트되기 전에 매핑하는 방법

  • 레지스터는 주메모리에 비해 매우 작고 주메모리는 매우 크기 때문에 레지스터가 캐시 계층으로 역할을 잘 하기 위해서는 매핑이 중요함
이름설명
직접 매핑 (Directed Mapping)메모리가 1~100이 있고 캐시가 1~10이 있다면 1:1~10, 2:11~20 순으로 매핑하는 것. 처리가 빠르지만 충돌이 잦다.
연관 매핑 (Associative Mapping)순서를 일치시키지 않고 관련 있는 캐시와 메모리를 매핑. 충돌이 적지만 모든 블록을 탐색해야 해서 속도가 느림
집합 연관 매핑 (Set Associative Mapping)직접 매핑과 연관 매핑을 합쳐 놓은 것. 순서는 일치시키지만 집합을 둬서 저장하며 블록화되어 있기 때문에 검색은 좀 더 효율적임.
예를 들어 메모리가 1~100이 있고 캐시가 1~10이 있다면 캐시 1~5에는 1~50의 데이터를 무작위로 저장시킴

웹브라우저의 캐시

사용자의 커스텀한 정보나 인증 모듈 관련 사항들을 웹브라우저에 저장해서 추후 서버에 요청할 때 자신을 나타내는 아이덴티티나 중복 요청 방지를 위해 쓰임.

  • 쿠키
    만료기한이 있는 키-값 저장소
    • same site 옵션을 strict으로 설정하지 않을 경우 다른 도메인에서 요청했을 때 자동 전송됨
    • 4kb까지 데이터 저장 가능, 만료기한 설정 가능
    • 쿠키 설정 시 document.cookie로 쿠키를 볼 수 없게 httponly 옵션을 거는 것이 중요함
  • 로컬 스토리지
    만료기한이 없는 키-값 저장소
    • 10mb까지 저장할 수 있으며 웹브라우저를 닫아도 유지되고 도메인 단위로 저장, 생산됨
    • 클라이언트에서만 수정 가능, HTML5를 지원하지 않는 웹브라우저에서는 사용할 수 없음
  • 세션 스토리지
    만료기한이 없는 키-값 저장소
    • 탭 단위로 세션 스토리지를 생성하며, 탭을 닫을 때 데이터가 삭제됨
    • 5mb까지 저장이 가능하며 HTML5를 지원하지 않는 웹브라우저에서는 사용 불가, 클라이언트에서만 수정 가능

cf) 데이터베이스의 캐싱 계층 : 레디스(redis)

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

profile
경제학도에서 개발자가 되어가는 기록..

0개의 댓글