Skip to main content

Cache란?

https://cseweb.ucsd.edu/classes/su07/cse141/cache-handout.pdf 의 자료를 참고해 작성하였다.


정의

  • cache block
    • 캐시 스토리지의 기본 단위이다. 여러개의 bytes로 구성된다.
  • cache line
    • 캐시 블록과 같다. 하지만 "row"를 뜻하는 것은 아니다.
  • cache set
    • 캐시 블록에서의 "row"를 말한다. cache set당 캐시 블록의 수는 cache의 layout(ex. Direct Mapped, Fully Associative Cache, Set-Associative 등)에 의해 결정된다.
  • tag
    • 각 캐시 블록을 구분지어주는 일종의 식별자 역할을 한다.
  • valid bit
    • 데이터가 유효한지를 나타내는 값으로, valid(1), invalid(0)으로 나타낸다.

정리하면, 캐시 메모리는 여러개의 cache set으로 구성되는데, 각 cache set에 여러 cache block이 존재하게 된다.


데이터를 캐시로부터 읽어오는 과정

cache-block
  1. 우선 어느 cache set에 저장될 지 cache set의 index를 계산한다.
  2. 해당 index의 cache set에 존재하는 각 cache block의 tag와 memory 주소로부터 받은 tag가 일치하는지 판단한다. 일치하면 해당 메모리 주소의 데이터가 캐시에 존재하는 것이고, 일치하지 않으면 캐시에 존재하지 않는다.
  3. (일치하는 경우) 해당 cache block에서 valid bit를 확인한다. 만약 valid bit가 1이면 해당 메모리 주소의 데이터가 캐시에 있고, 0이라면 캐시에 존재하지 않는다.
  4. (캐시에 존재하는 경우) block offset을 통해 cache block에서 찾는다.

캐시 미스가 발생했을 때, 데이터를 캐시에 저장하는 과정

  1. 만약에 요청한 데이터가 캐시 메모리에 존재하지 않는다면, 거기에 그대로 저장되게 된다.
  2. 이때, Spatial Locality의 이점을 활용하기 위해 근처에 있는 메모리 주소도 함께 가져오게 된다.
  3. 근처의 메모리 주소 범위로, 시작은 해당 주소의 offset을 0으로 만들고, 끝은 offset을 1로 만들어서 계산하는데, 이때 cache block의 사이즈가 결정된다.
Related Links