• 캐시 주소 매핑
캐시는 RAM보다 상대적으로 작기 때문에 RAM과 1:1로 완벽하게 매핑할 수 없습니다. 그래서 어떤 데이터를 캐시에 저장할지 결정하는 매핑 방식이 필요합니다.
주요 매핑 방식은 다음과 같습니다.
• 직접 매핑(direct mapping): RAM을 일정 크기 블록으로 나누고, 이를 캐시의 특정 위치에 할당하는 방식입니다. 예를 들어, 16MB의 RAM과 64KB의 캐시가 있을 때 RAM을 64KB 크기 블록으로 분할합니다. 각 블록은 고유한 식별자인 태그(tag)로 식별합니다. 가령 RAM 주소 0x01FFFF는 태그 값 02에 해당하는 캐시 위치에 매핑됩니다. 이 방식은 구현이 간단하며 직관적입니다. 그러나 여러 블록이 같은 캐시 위치를 공유하는 충돌 문제가 발생할 수 있습니다.
• 완전 연관 매핑(fully associative mapping): RAM의 블록이 캐시 어디든 저장될 수 있는 방식입니다. RAM 블록이 캐시에 저장될 때 해당 블록의 태그도 함께 저장됩니다. CPU가 특정 블록을 요청하면 캐시 내 모든 태그와 요청된 태그를 비교해 데이터를 찾습니다. 블록이 캐시 어디에나 저장될 수 있어서 충돌 문제가 발생하지 않으며 히트율이 높습니다. 하지만 구현이 복잡하고 캐시 전체를 검색해야 해서 검색 시간이 길어질 수 있습니다.