TIL 230925

geon·2023년 9월 25일
0

CSAPP (p.645 ~ 650)

6.3 The Memory Hierarchy

높은 레벨에서 낮은 레벨로 갈수록 저장장치는 느려지고, 값싸지고, 용량이 커짐

빠른 기술은 느린 기술보다 비싸고 용량이 작음, 또한 잘 짜여진 프로그램은 지역성이 좋음
따라서, 저장장치의 레벨을 나누고 높은 레벨의 저장장치가 낮은 레벨의 저장장치의 staging area(cache) 역할을 하게 함으로써 성능을 높일 수 있음

Cache

크고 느린 장치의 데이터에 대해 staging area 역할을 하는 작고 빠른 장치
캐시를 이용하는 과정을 caching이라고 함
레벨 k 저장장치레벨 k+1 저장장치의 캐시 역할을 함
레벨 k, k+1 저장장치는 동일 크기의 블록으로 파티셔닝 되어 있음
레벨 k 저장장치레벨 k+1 저장장치의 블록 일부의 복사본을 가짐
데이터는 두 레벨 사이에서 블록 크기의 전송 단위로 오고 감
hierarchy에서 인접 레벨 pair 간 블록 크기는 고정이지만, 다른 레벨의 페어는 다른 블록 크기를 가질 수 있음
낮은 레벨의 저장장치는 접근하는 데 시간이 오래 걸리므로 블록 크기를 크게 함으로써 이를 상쇄함

Cache Hit

프로그램이 레벨 k+1 저장장치로부터 data object d를 가져오려고 할 때 레벨 k 저장장치를 먼저 탐색하게 됨
이때 레벨 k 저장장치d가 캐시되어 있으면 cache hit라고 함

Cache Miss

레벨 k 저장장치data object d가 저장되어 있지 않으면 cache miss라고 함
cache miss가 일어나면 레벨 k+1로부터 d가 들어 있는 블록을 가져옴
이때 레벨 k 캐시에 자리가 없으면 이미 존재하는 블록을 덮어 쓰는데, 이를 replacing 또는 evicting이라고 함
교체되는 블록은 victim block이라고 부름
어떤 블록을 교체할 것인지는 캐시의 replacement policy에 의해 결정됨 (ex. LRU replacement policy)
레벨 k 캐시레벨 k+1로부터 블록을 가져온 뒤에 프로그램은 d레벨 k에서 읽을 수 있음

Kinds of Cache Misses

  1. compulsory miss/cold miss
    empty cache(cold cache)로 인해 발생하는 miss
    반복적인 메모리 접근에 의해 캐시가 warm-up되면 더 이상 발생하지 않는 일시적인 현상
  2. conflict miss
    캐시가 참조된 data object들을 저장할 수 있을 만큼 크지만 이들이 모두 같은 캐시 블록에 매핑됨으로써 발생하는 miss
  3. capacity miss
    캐시가 작업 집합(working set)보다 작을 때 발생하는 miss
    (작업 집합 : 특정 phase에 참조하는 블록들)

Cache Management

각 레벨에서 특정 형태의 논리가 캐시를 관리해야 함 (블록으로 파티셔닝, 레벨 간 블록 전송, 캐시 히트/미스 처리)
이러한 관리는 하드웨어, 소프트웨어, 또는 이들의 조합으로 관리됨
레지스터 파일컴파일러에 의해 관리됨
L1, L2, L3 캐시는 완전히 캐시 내부 하드웨어 논리에 의해 관리됨
가상 메모리 시스템에서 DRAM 메인 메모리운영체제 소프트웨어와 CPU의 주소 변환 하드웨어(MMU)에 의해서 관리됨
분산 파일 시스템에서 캐시로서 사용되는 로컬 디스크는 로컬 머신에서 작동하는 파일 시스템 클라이언트 프로세스에 의해 관리됨

profile
뭐라도 적기

0개의 댓글