메인 메모리를 일정 크기 블록으로 나누고, 각 블록을 캐시의 정해진 위치에 매핑하는 방식입니다.
전체 메인 메모리에 대해 캐시 사이즈 단위로 나누고, 나뉜 각 블록들에 대해 태그 값을 매깁니다.
캐시 사이즈로 나뉘어진 블록은 다시 캐시가 메모리로부터 한 번에 읽어 들여오는 라인사이즈 단위로 나뉘어 라인번호가 매겨지게 됩니다.
장점은 구현이 매우 단순하다는 점~~~
단점은 블록 단위로 나뉘어진 메모리는 정해진 블록 위치에 들어갈 수밖에 없어, 비어 있는 라인이 있더라도 동일 라인의 메모리 주소에 대하여 하나의 데이터밖에 저장할 수 없다는 점~~
어소시에이티브 매핑 (Associative Mapping)
직접 매핑이 동일한 라인 번호의 주소를 매핑 할 수 없다는 단점은 캐시의 성능을 매우 저하시킬 수 있습니다.
이에 대한 개선으로 캐시의 태그 필드를 확장하여 캐시의 어떤 라인과도 무관하게 매핑시킬 수 있는 매핑 방법이 어소시에이티브 매핑 방식이다.
이 방식은 메인 메모리의 주소체계를 태그(Tag)와 워드(Word)의 두 부분으로 나누는데, 워드는 직접 매핑 방식과 동일하게 메인 메모리로부터 한 번에 읽어 들여온 라인 사이즈의 블록에 대하여 어떤 바이트 위치를 사용할 것인지를 나타내며, 나머지의 주소 영역에 대해서는 모두 태그 값으로 나타내게 됩니다.
어소시에이티브 매핑 방식의 장점은 캐시를 효율적으로 사용하게 하여 캐시의 히트율을 높일 수 있다는 점~~~
단점은 CPU가 캐시의 데이터를 참조할 때마다 어느 위치에 해당 데이터의 블록이 있는지 알아내기 위해 전체 태그 값을 모두 병렬적으로 비교해야 하므로 구성과 과정이 매우 복잡하다는 점~~~
셋 어소시에이티브 매핑 (Set Associative Mapping)
셋 어소시에이티브 매핑 방식은 위의 두 매핑 방식의 장점을 취하고, 단점을 줄이기 위한 절충안입니다.
이 방식의 경우 캐시를 우선 N개의 세트들로 나누고, 각 세트들은 L개의 라인들로 이루어지게 되는데, 각각의 세트는 직접 매핑 방식과 같은 방식으로 메인 메모리를 매핑하게 됩니다.
즉, 전체 메인 메모리는 각 세트의 크기인 32KByte 단위로 나뉘어져 태그 값이 매겨지고 각각은 4KByte 단위의 라인 사이즈로 다시 나뉘어져 각각의 세트에 매핑 됩니다.