Skip to main content

Fully Associative Cache

우선 Cache 란?을 참고해보자.


Fully Associative Cache란?

Fully Associative Cache는 특정 메모리 주소가 특정한 캐시 블록에 저장되는 방식이 아니라, 아무 캐시 블록(캐시 메모리의 기본 단위)이든 비어있는 곳에 랜덤하게 저장되는 방식을 말한다.

직관적으로 '캐시 메모리'라는 것을 이해하기에 여러 방법 중 가장 단순한 방식이라 생각된다.("Fully associative cache is perhaps the easiest cache to understand and explain because it acts intuitively as one would expect a cache to work. This sounds good as an idea, since fully associative cache acts exactly as a cache "should"")


Fully Associative Cache는 어떻게 동작할까?

fully-associative-cache-block

메인 메모리 블록은 캐시 메모리의 어디에나 저장될 수 있다.(단, valid한 경우만)

이는 다음과 같이 동작한다.

  1. valid bit가 1인 경우, 해당 cache block에 저장될 수 있고, 0인 경우, 다른 cache block에 저장돼야 한다.
  2. 모든 cache가 사용 중이라면, replacement policy(보통 LRU, Least Recently Used)에 따라 victim cache block이 제거된 뒤 교체된다.
  3. 메모리 주소상의 tag bits와 각 cache block의 tag bits를 비교하고, 일치하면 해당 메모리 주소의 데이터가 캐시에 존재하며, Cache Hit가 발생하고 offset을 기준으로 byte가 Processor에 반환하게 된다.
Related Links