- 메모리의 각 워드에 대한 캐쉬의 위치를 할당하는 가장 간단한 방법은 메모리 주소에 기반을 두고 할당하는 것이다. 이 캐쉬 구조를 직접 사상(direct mapped)이라 한다. 즉 각 메모리 위치가 캐쉬 내의 정확히 한 곳에만 사상되는 캐쉬 구조이다.

Direct Mapped Cache


 
 캐쉬 내의 각 위치는 여러 메모리 주소의 내용을 적재할 수 있다. 이때, 어떻게 캐쉬 내의 워드가 프로세스가 요구하는 것과 일치하는지를 알 수 있는가 ? 즉 요구하는 워드가 캐쉬 내에 있는지 없는지 어떻게 알 수 있는가? 이것은 캐쉬에 태그(빨간 글씨로 표현)를 추가함으로써 해결할 수 있다. 태그는 캐쉬의 색인으로 사용되지 않은 비트들에 해당하는 주소의 윗부분을 포함하기만 하면 된다.

또한 유효비트(valid bit)를 캐쉬에 첨가하여 캐쉬 블록이 유효한 정보를 가지고 있는지 알아내도록 한다.

이것을 심화시키면 다음 그림과 같다.[Intrinsity사의 FastMATH 프로세서에 사용되는 16KB Cache]

Index : 블록을 고르는데 쓰이는 캐쉬 색인
Tag : 캐쉬의 태그 필드 값과 비교되어 지는 태그 필드
Block offset : 블록 내부의 워드 구별(위 그림에서는 16개 중 하나를 선택)
Byte offset : 워드 내부의 바이트

크기가 큰 블록의 공간적 지역성은 실패율을 감소하게 한다. 그러나 블록의 크기를 캐쉬 크기의 상당 부분을 차지하도록 크게 만들면 실패율이 올라갈 수도 있다. 왜냐하면, 캐쉬 내에 존재할 수 있는 전체 블록의 수가 작아져서 블록들 간에 상호충돌이 생길 수 있기 때문이다. 결과적으로 블록 내의 많은 워드들이 접근되기도 전에 그 블록이 캐쉬로부터 방출될 수도 있기 때문이다.

출처 : 컴퓨터 구조 및 설계 -하드웨어/소프트웨어 인터페이스 -
Posted by initproc
,