ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 캐시 메모리(Cache Memory)
    컴퓨터 구조 2022. 1. 11. 03:26

    캐시 메모리가 뭐지?

    컴퓨터 성능 향상을 위해 별도로 탑재된 캐시 전용의 메모리를 의미한다. 

    이 글에서 다루는 캐시 메모리는 CPU 칩 내부나 바로 옆에 탑재되는 메모리를 가리킨다.

     

    캐시 메모리는 어째서 만들어졌지?

    CPU의 처리 속도가 너무 높아져, 메인 메모리 접근 속도와의 차이가 생겼다. 이로 인해 CPU 처리 속도를 아무리 올려도 메인 메모리에서 데이터를 제공해주지 못해 전체 시스템 성능에 제한이 걸렸다. 

    그 결과, 캐시 메모리가 만들어지게 되었다. 즉, 시스템 성능 향상을 위해 만들어진 전용 메모리다.

     

    캐시 메모리의 역할과 장단점은?

    CPU가 주기억장치에서 저장된 데이터를 읽어올 때, 자주 사용하는 데이터를 캐시 메모리에 저장한 뒤, 다음에 이용할 때 주기억장치가 아닌 캐시 메모리에서 먼저 가져오면서 속도를 향상시킨다.

     

    장점

    • 데이터 접근 속도에 이점이 있어 전체 시스템 속도 향상에 효과적이다.

    단점

    • 용량당 가격이 매우 비쌈(CPU 내부 캐시 메모리에 사용되는 SRAM 가격이 매우 비싸다)

     

    멀티 레벨 캐시 메모리

    캐시의 용량과 성능이 증가하면서 캐시의 캐시로 사용되는 메모리가 생겼다. 가장 용량이 작고 고성능인 L1부터 가장 용량이 크고 느린 L3까지 있다(L1, L2, L3). 일반적으로 L1부터 사용된다(CPU에서 가장 먼저 접근하고 찾지 못하면 L2로 감).

     

    메모리별 위치

    • L1 : CPU 내부
    • L2 : CPU와 RAM 사이
    • L3 : 보통 메인보드

     

    레지스터, L1~L3, Ram, Repository의 차이

    레지스터와 캐시 메모리(L1~L3)는 CPU 내부에 존재한다. CPU에서 가장 빠르게 접근할 수 있다. 

    주기억장치인 RAM은 CPU 외부에 존재하는 메모리 중에 가장 빠르게 접근할 수 있는 메모리다. 

    Repository는 CPU에서 직접 접근이 불가능하다. 데이터를 메인 메모리 또는 캐시 메모리로 이동하고 접근해야하므로 접근 속도가 매우 느리다.

     

    즉, 각 메모리 및 구성 요소의 차이는 CPU에서의 접근 속도다.

    레지스터 > 캐시 메모리 > RAM > Repository

     

     

    작동 원리: 데이터 지역성

    시간 지역성

    • for나 while 같은 반복문에 사용하는 조건 변수처럼 한 번 참조된 데이터는 잠시 후에 또 참조될 가능성이 높다

    공간 지역성

    •  A[0], A[1]과 같은 데이터 배열에 연속으로 접근할 때 참조된 데이터 근처에 있는 데이터가 잠시 후에 사용될 가능성이 높다

    순차적 지역성

    • 분기가 발생하는 비순차적 실행이 아닌 이상 명령어들이 메모리에 저장된 순서대로 실행하는 특성을 이용한 원리로 순차적일 수록 다음 순서의 데이터가 사용될 가능성이 높다
    • 까탈스런 상사가 작년과 금년의 재무결산 보고서를 가져오라고 할 때, 순차적으로 정리된 내년과 내후년 보고서도 묶어서 준비해놓는 방식

     

    캐시 메모리의 성능

    캐시 히트(Cache Hit)

    • CPU가 데이터를 요청하여 캐시 메모리에 접근했을 때 캐시 메모리가 해당 데이터를 가지고 있다면 이를 '캐시 히트'라고 부른다.
    • 캐시 적중률이 높을수록 캐시 메모리의 성능이 높다.

    캐시 미스(Cache Miss)

    • CPU가 데이터를 요청하여 캐시 메모리에 접근했을 때 해당 데이터가 없어서 DRAM에서 가져와야 한다면 '캐시 미스'라 부른다.
    • 종류
      • Compulsory miss(또는 Cold miss)
        • 해당 메모리 주소를 처음 불러서 나는 미스
        • 프로그램을 새로 켜거나 했을 때 발생한다.
      • Conflict miss
        • 캐시 메모리에 A 데이터와 B 데이터를 저장해야 하는데, A와 B가 같은 캐시 메모리 주소에 할당되어서 나는 캐시 미스
        • direct mapped cache에서 가장 발생빈도가 높다.
        • 왼쪽 주머니에 이어폰과 립밤을 넣는 습관. 어느 날 이어폰을 챙기느라 립밤을 가방에 넣어뒀는데 왼쪽 주머니에서 찾으면 없다.
      • Capacity miss
        • 캐시 메모리에 공간이 부족해서 나는 캐시 미스(Conflict: 주소 할당 문제, Capacity: 공간 부족)
        • 캐시 크기를 키우면 해결된다.(단, 접근 속도가 느려지고 파워를 많이 먹는다)
    • 단순 작업의 경우 캐시 미스율이 평균 10% 안쪽이다. 즉, 컴퓨터의 시스템 평균 성능을 크게 증가시킬 확률이 더 높다.

     

    캐시 정책 및 알고리즘

    캐시 배치 정책

    • Direct Mapped Cache
      •  
        Direct Mapped Cache - 출처: 나무위키 캐시 메모리
         
      • 가장 기본적인 캐시 배치 정책
      • DRAM의 여러 주소가 캐시 메모리의 한 주소에 대응되는 n:1 방식
      • 위 이미지에서 메모리 공간은 32개(00000~11111), 캐시 메모리 공간은 8개(000~111) 이므로 캐시 메모리 한 주소 당 DRAM 4주소에 해당
      • 00001, 01001, 10001, 11001 메모리 주소는 001 캐시 메모리 주소에 매핑됨
      • 여기서 공통적으로 들어가는 001을 index field, 그 외 나머지(00, 01, 10, 11)를 tag field라고 한다. tag와 index field 뒤에 데이터를 저장하는 data field가 있다. 즉, 캐시 메모리는 tag field + index field + data field 로 구성된다.
      • 장점: 간단하고 빠르다
      • 단점: Conflict Miss. 위 이미지의 같은 색깔 데이터를 동시에 사용해야하면 문제가 발생한다.
    • Fully Associative Cache
      • 캐시 메모리가 비어있으면 마음대로 주소를 저장한다.
      • 장점: 저장 조건, 순서가 없어 저장이 간단하다. 캐시 정중률이 높다. Conflict Miss가 나지 않는다.
      • 단점: 원하는 데이터를 찾을 때, 캐시 set 안의 모든 블럭을 뒤지며 검색해야 한다. CAM이라는 특수한 메모리 구조를 사용해야하지만 가격이 매우 비싸다.
    • Set Associative Cache
      • Direct Mapping+ Fully Associative Mapping
      • 특정 행을 지정해서 그 행 안의 어떤 열이든 비어있으면 저장하는 방식
      • Direct에 비해서는 검색은 오래 걸리지만 저장이 빠름
      • Associative에 비해 저장이 느린 대신 검색이 빠름
      • 현대 CPU 모든 계층의 캐시 메모리에서 채택되는 방식

    캐시 쓰기 정책

    캐시 메모리는 임시적인 값이므로 근원이 되는 메인 메모리를 언제 변경할 것인가에 대한 정책이다.
    • Write-through
      • 쓰기 동작 시 주 기억장치와 캐시의 메모리 값 동시에 변경
      • 장점: 캐시와 기억장치의 일관성
      • 단점: 항상 메인 메모리에 접근해야 하므로 속도가 느려져 캐시의 이점이 사라짐
    • Write-back
      • 캐시에서만 메모리 값 변경하고 이후 해당 주소의 데이터가 바뀔 때만 메인 메모리에 복사
      • 장점: 기억장치의 쓰기 시간 최소화
      • 단점: 캐시와 기억장치의 일관성
    • Write allocate
      • 캐시 미스 발생 시 캐시에만 기록
    • No-write allocate
      • 캐시 미스 발생 시 메모리에만 기록(하나에만 기록해도 되서 효율적임)

    캐시 교체 정책

    캐시 용량이 제한되어 있기 때문에 효율적으로 사용하기 위해서는 교체가 필요함.
    • Random 정책
    • FIFO(First-In-First-Out) 정책
      • 가장 먼저 들어간 캐시를 교체
    • LRU(Least Recently Used) 정책
      • 가장 오랫동안 사용되지 않은 캐시를 교체
      • 캐시에 저장된 데이터가 언제 사용된지 알 수 있게 타임 스탬프 사용. 이로 인해 오버헤드가 발생할 수 있다.
      • Doubly Linked List로 구현됨. 새로 추가될 때 Tail에 추가되기 때문에 Head에 가까울 수록 오래 사용되지 않은 캐시를 의미함. Head의 캐시를 지우고 Tail에 새로운 캐시를 추가하여 교체한다.
      • 맨 앞의 캐시를 지우고 맨 뒤에 캐시를 추가하면 되기 때문에 탐색의 시간 복잡도는 O(1)이다.
    • LFU(Least Frequently Used) 정책
      • 사용 빈도가 가장 적은 캐시를 교체
      • 단점으로 최근 추가된 데이터가 교체될 수 있고, 초반에만 집중적으로 쓰이고 안 쓰이는 데이터가 있다면 메모리가 낭비될 가능성이 있다.

     

    Reference

    '컴퓨터 구조' 카테고리의 다른 글

    시스템 버스(System Bus)  (0) 2022.01.13
    CPU 아키텍처  (0) 2022.01.12
    CPU 작동 원리  (0) 2022.01.08
    컴퓨터 구성  (0) 2022.01.07

    댓글

Designed by Tistory.