Hope Everyone Is Happy

3. 메모리 계층 본문

※ CS 스터디/운영체제

3. 메모리 계층

J 크 2023. 9. 12. 17:36
728x90
반응형

본 게시글은  : 면접을 위한 CS 전공지식 노트 (출판사 : 길벗, 주홍철 지음) 을 참조하여 작성하였습니다. + 구글링


◆  메모리 계층

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

- 속도 순서 : 레지스터 > 캐시 L1 > 캐시 L2 > 캐시 L3 > 메모리(RAM) > 보조 기억 장치

- 용량 순서 : 속도 순서의 반대

- 레지스터 : CPU 안에 있는 작은 메모리, 휘발성, 속도 가장 빠름, 기억 용량이 가장 적음

- 캐시 : L1, L2, L3로 구성, 휘발성, 속도 빠름, 기억 용량이 적음

- 주기억장치 : RAM, 휘발성, 속도 보통, 기억 용량이 보통

- 보조기억장치 : HDD, SDD를 일컬으며 비휘발성, 속도 낮음, 기억 용량 많음

- RAM은 하드디스크로 부터 일정량의 데이터를 복사해서 임시 저장, CPU에 빠르게 전달

- 이 때 cash가 중간 역할을 하여 자주 사용되며 사이즈가 작은 데이터를 임시로 저장하였다가 CPU로 전달


◆  캐시 (cache)

- 캐시는 데이터를 미리 복사해 놓는 임시 저장소

- 빠른 장치와 느린장치에서 속도 차이에 따른 병목현상을 줄이기 위한 메모리

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

- 메모리와 CPU 사이의 속도 차이가 너무 크기 때문에 중간에 레지스터 계층을 둬서 속도차이를 해결

- 속도 차이를 해결하기 위해 계층과 계층 사이에 있는 계층을 캐싱 계층으로 정의

    ex) 캐시 메모리와 보조기억장치 사이에 있는 주기억장치를 보조기억장치의 캐싱 계층 이라고 할 수 있다.

- 캐시 서버 또는 캐시 메모리 등 캐시가 붙은 기능에 저장된 데이터는 지워질 수 있다는 것을 전제 (영구적 메모리 X)

- 따라서 캐시는 되도록 빈도수가 높은 것들 위주로 데이터량이 많지 않은 것으로 설계

- 지역성의 원리

     : 캐시를 직접설정 할 때는 자주 사용하는 데이터를 기반으로 설정

     : 자주 사용하는 데이터의 근거는 지역성

     : 지역성은 시간 지역성 (temporal locality)과 공간 지역성(spatial locality)로 분류

- 시간 지역성

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

    : 즉, 한 번 참조된 주소(메모리)의 내용은 곧 다음에 다시 참조된다는 특성

        ex) CPU로 메모리를 전달할 때 가장 최근에 메모리에서 가져온 데이터를 접근

 - 공간 지역성

    : 최근 접근한 데이터를 이루고 있던 공간 (maybe 메모리 주소?)이나 그 가까운 공간에 접근하는 특성

    : 즉, 한 번 참조한 메모리의 옆에 있는 메모리를 다시 참조하게 되는 성질


◆  캐시히트와 캐시미스

- 캐시에서 원하는 데이터를 찾았다면 캐시히트로 정의

- 데이터가 캐시에 없다면 주메모리로 가서 찾아오는 것을 캐시미스로 정의

- 캐시히트 시, 데이터를 CPU 내부 제어장치를 거쳐 전달, CPU 내부 버스를 기반으로 작동하여 빠름

- 캐시미스가 발생되면 메모리에서 가져오게 되는데, 시스템 버스를 기반으로 작동하여 느림

- 캐시매핑

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

    : CPUI의 레지스터와 주메모리(RAM) 간에 데이터를 주고 받을 때를 기반으로 설명

    : 레지스터는 RAM에 비하면 굉장히 작기 때문에 작은 레지스터가 캐시 계층으로써 역할을 하기 위해 매핑 방법 중요

- 직접 매핑 (directed mapping)

    : 메인 메모리를 일정한 크기의 블록으로 나누고 각각의 블록을 캐시의 정해진 위치에 매핑 하는 방식

    : 아래 2가지 매핑에 비해 가장 간단하며 구현이 쉬움

    : 매번 교체를 하기 때문에 충돌이 될 확률이 매우 상승 -> 적중률이 낮음

   ex) https://www.youtube.com/watch?v=V_QS1HzJ8Bc

MM == Main Memories
MM to Cache

- 연관 매핑 (associative mapping)

    : 직접 매핑 처럼 순서는 일치시키지만 집합을 두어 저장하며 블록화 -> 검색 효율적

    : 회로 구현 복잡 및 구현 비용 고가

       ex) 직접 매핑 과정에서는 아래 그림 처럼 메인 메모리 0~3번 라인이 캐시 매핑이 끝나면 메인 메모리 4번이 0에 들어가게 되어 덮어씌워 지지만

MM to Cache

        연관 매핑에서는 0번을 지우고 4번을 매핑하는 것이 아니라, 0번 메모리 옆에 4번 메모리를 추가로 집합을 두어 저장, 이를 반복하여 캐시 0번에는 메인메모리 0, 4, 8, 12 번이 집합 형태로 매핑되어 효율적인 탐색 가능! 

- 웹 브라우저의 캐시

     : 소프트웨어에서 대표적인 캐시로 웹 브라우저의 작은 저장소 쿠키, 로컬 스토리지, 세션 스토리지 존재

     : 보통 사용자의 커스텀한 정보나 인증 모듈 관련 사항들 웹브라우저에 저장

     : 추후 서버에 요청시, 자신을 나타내는 정보나 중복 요청 방지를 위해 사용

- 쿠키

    : 만료기한이 있느 키-값 저장소

    : 서버가 생성하는 클라이언트 정보를 가지고 있는 파일

    : 클라이언트 컴퓨터에 저장 되며, 필요에 따라 요청 시 서버로 같이 전송

    : 쿠키 하나 당 최대 4KB까지 데이터를 저장 가능

- 로컬 스토리지

    : 만료기한이 없는 키-값 저장소

    : 10MB까지 저장할 수 있으며 웹 브라우저를 닫아도 유지되며 도메인 단위로 저장, 생성

    : HTML5를 지원하지 않는 웹 브라우저에선 사용 불가, 클라이언트에서만 수정 가능

- 세션 스토리지

    : 만료기한이 없는 키-값 저장소

    : 탭 단위로 세션 스토리지를 생성, 탭을 닫을 때 해당 데이터가 삭제

    : 5MB까지 저장 가능, HTML5를 지원하지 않는 웹브라우저에서는 사용 불가

    : 클라이언트에서만 수정 가능

- 데이터베이스의 캐싱 계층

    : 데이터베이스 시스템을 구축할 때도 메인 데이터베이스 위에 레디스 데이터베이스 계층을  '캐싱 계층'으로 두어 성능을 향상


위의 글과 관련하여 추가적인 내용이나 피드백은 언제나 환영입니다 :)

'※ CS 스터디 > 운영체제' 카테고리의 다른 글

6. 스레드  (0) 2023.11.06
5. 프로세스  (0) 2023.09.19
4. 메모리 관리  (0) 2023.09.13
2. 컴퓨터의 요소  (0) 2023.09.10
1. 운영체제의 역할과 구조  (0) 2023.09.09