컴퓨터구조 - 캐시

델리만쥬 디퓨저·2024년 8월 10일
0

컴퓨터구조

목록 보기
3/6

캐시 메모리

  • CPU와 주기억장치의 속도 차이를 보완하기 위하여 그 사이에 설치하는 반도체 기억장치
  • CPU와 주기억장치 사이에 위치
  • CPU가 기억장치로부터 데이터를 읽기 전 캐시에 있는지 검사
  • 있다면 즉시 인출 가능하므로 액세스 시간 크게 단축

캐시 적중(cache hit)

  • CPU가 액세스하려는 데이터가 이미 캐시에 적재되어 있는 상태
    캐시 미스(cache miss)
  • CPU가 액세스하려는 데이터가 캐시에 없어서 주기억장치로부터 인출해 와야 하는 상태
    캐시 적중률(cache hit ratio)
  • 전체 기억장치 액세스들 중에서 캐시에 적중되는 비율

문제
Tc = 10ns, Tm = 100ns인 시스템에서 캐시 적중률(H)이 70%, 80, 95%일 때의 평균 기억장치 액스 시간(Ta)을 구하라
풀이
H=70%의 경우 : Ta=0.7x10ns+0.3x100ns = 37ns
H=80%의 경우 : Ta=0.8x10ns+0.2x100ns = 28ns
H=95%의 경우 : Ta=0.95x10ns+0.05x100ns = 14.5ns

캐시 적중률은 프로그램과 데이터의 지역성(locality) 에 크게 의존한다

  • 지역성(locality)
    - CPU나 주기억장치의 특정 위치에 저장되어 있는 명령어들이나 데이터를 빈번히 혹은 집중적으로 액세스하는 현상
  • 시간적 지역성(temporal locality)
    - 최근에 액세스된 프로그램 코드나 데이터가 가까운 미래에 다시 액세스될 가능성이 높아지는 특성
  • 공간적 지역성(spatial locality)
    - 기억장치 내에 서로 인접하여 저장되어 있는 데이터들이 연속적으로 액세스될 가능성이 높아지는 특성
  • 순차적 지역성(sequential locality)
    - 분기(branch)가 발생하지 않는 한, 명령어들은 기억장치에 저장된 순서대로 인출되어실행

캐시 설계에 있어 공통적인 목표

  • 캐시 적중률의 극대화
    - CPU가 원하는 정보가 캐시에 있을 확률을 높여야 한다
  • 캐시 액세스 시간의 최소화
    - 캐시 적중 시 캐시로부터 CPU로 정보를 인출하는데 걸리는 시간을 단축시켜야 한다
  • 캐시 실패에 따른 지연시간의 최소화
    - 캐시 미스가 발생한 경우 주기억장치로부터 읽어오는 시간을 최소화시켜야 한다
  • 주기억장치와 캐시간의 데이터 일관성 유지 및 그에 따른 오버헤드의 최소화
    - CPU가 캐시 내용을 변경했을 시 주기억장치에 그 내용을 갱신하는 절차로 발생하는 지연 시간을 최소화시켜야 한다

인출 방식

  • 요구 인출(demand fetch)
    - 캐시 미스가 발생한 경우, CPU가 필요한 정보만 주기억장치에서 캐시로 인출
  • 선인출(prefetch)
    - CPU가 필요한 정보 외에 그와 인접해 있는 정보들을 함께 캐시로 인출
    - 지역성에 의해 연속적으로 액세스될 가능성이 높으므로 적중률을 높이기 위해

사상 방식

  • 주기억장치 블록이 어느 캐시 라인에 적재될 수 있는지 결정해주는 알고리즘
  • 직접 사상(direct mapping)
    - 주기억장치의 블록들이 지정된 어느 한 캐시 라인으로만 사상될 수 있음
    - 각 블록은 지정된 특정 라인에만 적재될 수 있다
  • 완전-연관 사상(fully-associative mapping)
    - 주기억장치 블록이 캐시의 어떤 라인으로든 적재될 수 있는 사상 방식
    - 직접 사상 방식의 단점을 보완
  • 세트-연관 사상(set-associative mapping)
    - 직접 사상 방식과 완전-연관 사상 방식의 장점만을 취하기 위한 절충안
    - 주기억장치 블록이 지정된 어느 한 세트로만 적재될 수 있으며, 각 세트는 두 개 이상의 라인들로 구성된 사상 방식

교체 알고리즘

  • 캐시 미스 발생으로 새로운 블록이 주기억장치로부터 캐시로 올라왔을 때, 이미 채워진 블록을 교체해야 한다
  • 최소 최근 사용(Least Recently Used: LRU)
    - 세트 라인에 적재되어 있는 블록들 중에서 최근의 사용 빈도가 가장 낮은 블록을 선택하여 교체하는 방식
  • FIFO(First-In-First-Out: FIFO)
    - 캐시에 적재된 지 가장 오래된 블록을 교체하는 방식
  • 최소 사용 빈도(Least Frequently Used: LFU)
    - 캐시에 적재된 이래 사용된 빈도가 가장 낮은 블록을 교쳏나ㅡㄴ 방식

쓰기 정책

  • 캐시에 적재되어 있는 데이터가 수정되었을 때 그 내용을 주기억장치에 갱신하는 시기와 방법을 결정하는 것
  • write through
    - 캐시에 쓰기 동작을 수행할 때 주기억장치에도 동시에 이루어지는 방식
  • write back
    - 쓰기 동작이 캐시까지만 이루어지는 방식
profile
< 너만의 듀얼을 해!!! )

0개의 댓글