CPU에서 데이터에 접근할 때, 먼저 Cache에 존재하는지 확인하고 원하는 데이터가 있다면 Main Memory에 직접 접근하는 것보다 빠르게 접근할 수 있다.
Main memory의 데이터를 cache에 mapping 시키는 방법은 대표적으로 3가지가 존재한다.
Direct Mapped Cache
Cache와 Main memory가 1:N으로 Mapping된 구조
Cache의 각 Line에 들어갈 수 있는 데이터 주소를 직접 지정해놓은 형태로 tag와 index를 통해 miss/hit 판단 가능
위 그림에서는 Cache (001)에 00 + 001 / 01 + 001 / 10 + 001 / 11 + 001 이 Mapping 되어있다.
001 -> index를 의미
00/01/10/11 -> Tag를 의미
CPU에서 00001 주소의 데이터를 찾는다고 가정하면
1. 0001 index의 cache를 확인
2. 비어있으면 miss, 데이터가 존재하면 tag (00)을 확인
3. tag와 접근 주소가 일치하면 hit, 아니면 miss
Fully Associative Cache
Cache의 Line 위치에 구분없이 데이터를 저장할 수 있다.
따라서 Tag Field만을 이용하여 cache miss/hit를 판단한다.
Set Associative Cache
Direct Mapped Cache + Fully Associative Cache 구조
특정 set으로 접근하고, 하나의 set 안에서는 Associative 구조와 같이 순차적으로 Tag를 탐색하여 메모리에 접근하는 방식.