본문 바로가기

대학 수업

Cache Architecture - 임베디드 컴퓨터 구조

반응형

교수님 너무 졸려요 손이 꽁꽁꽁 잠이 솔솔솔

The Principle of Locality

프로그램은 짧은 시간 안에 메모리의 일부 공간(서로 연관성이 있음)만을 접근한다. 이를 지역성이라고 한다. 지역성은 다시 2가지로 나뉜다.

  • Temporal Locality: 한 메모리 공간이 reference 되었다면, 짧은 시간 안에 다시 reference 될 확률이 높다. (Loop나 재사용)
  • Spatial Locality: 한 메모리 공간이 reference 되면, 이와 가까운 공간이 reference 된다 (명령어 코드, array 접근)


아하 그렇구나~

Locality의 이점 이용하기

메모리는 위와 같이 hierarchical 하게 구성된다. 일단 모든 정보를 디스크에 넣고, 최근에 access 한 애들은 점점 위로 올라온다. 메모리에 올리고, 캐시에 올리고... 올라올수록 빠르지만, 비싼 애들이라 용량이 작다. 때문에 캐시 정책이니 가상 메모리니 하는 기술이 생겼다.

Direct Mapped Cache

  • 캐시의 위치가 주소값으로 결정된다. (addr % 8 등으로 결정)
  • 주소값 중에서도 하위 몇 비트를 사용한다.
  • 하나의 주소값이 하나의 공간 밖에 선택지가 없다.
  • 겹치면? 덮어쓰기 (Cache Conflict)

Tags and Valid Bits

  • Tag: Block Address의 상위 몇 비트를 사용한다.
  • Valid: 데이터의 존재 유무 나타내는 비트, 1=present / 0=not present
  • 최초에는 Valid 모두 0, Cold Miss가 발생한다.
  • 32비트 주소에서 10비트를 Index로 사용하면 Cache Block은 2 << 10 = 1024개
  • 하위 2비트를 제외하는 이유는, 주소가 word(=32비트=4byte) 단위로 증가하기 때문이다.
  • 남는 20비트는 Tag로 저장된다.
  • Index로 찾아갔는데 Valid 하지 않으면 Miss
  • Valid 해도 저장된 Tag와 현재 주소값 Tag가 매치되지 않으면 Miss
  • 매치되면 Hit -> 32비트 데이터를 반환한다.

Block Size 고려할 점

  • 큰 블록일수록 miss rate는 낮다
    • Spatial Locality로 인해 같은 블록의 다른 워드에 접근할 가능성
  • 그러나 Cache 전체 용량은 한정되어 있음. Larger Block = Fewer Block
    • 결국 Miss Rate이 증가함
    • pollution도 발생한다
  • Miss Penalty도 커진다
    • 불러올 데이터 크기가 커지기 때문
    • Early Restart와 Critical-Word-First로 어느 정도 해결 가능

Cache Miss의 종류

  • Capacity Miss: Cache 용량 부족으로 인해 생기는 Miss
  • Conflict Miss: Hash 값이 겹쳐 overwrite 되면서 생기는 Miss
  • Compulsory Miss: Cold Miss, 최초에 캐시는 모두 비어있어 생기는 Miss
  • Cache Hit 시에는 일반적인 Pipeline 따라간다
  • Miss 시에는 Stall이 발생하며 다음 레벨의 메모리 계층에서 데이터를 Fetch 한다
  • Instruction Cache에서 Miss가 발생할 경우에는 IF 스테이지를 재실행한다
  • Data Cache Miss의 경우 Ex 스테이지까지 끝낸 후 MEM 스테이지를 재실행한다
반응형