각 메모리 주소가 M = 2m개의 고유한 주소를 구성하는 m비트를 갖는 컴퓨터 시스템에 대해 생각해보자. 그림에 나타낸 것처럼 이 시스템에 대한 캐시는 S = 2^s개의 Cache set들의 배열로 구성된다. 각 집합은 다시 E개의 Cache Line들로 이뤄지며, 각 라인은 B = 2^b 바이트의 데이터 블록, 해당 라인이 의미 있는 정보를 포함하고 있는지 여부를 나타내는 valid bit, 캐시 라인에 저장된 블록을 유일하게 구분할 수 있는 t = m - (b + s) 의 tag bit(현재 블록의 메모리 주소의 일부분으로 구성)로 구성된다.
일반적으로 캐시의 구성은 순서 쌍_(S, E, B, M)_으로 규정할 수 있다. 캐시의 크기 C는 모든 블록의 크기를 합하는 형태로 설명한다. 태그비트와 유효비트는 여기에 포함되지 않는다. 따라서 _C = S x E x B_로 나타낸다.
CPU가 메인 메모리 주소 A에서 하나의 워드를 읽으라는 load 인스트럭션에 의해 지시를 받을 때, CPU는 주소 A를 캐시로 보낸다.
캐시가 해당 워드의 사본을 가지고 있는지 어떻게 알 수 있을까?
캐시는 요청된 워드를 간단히 주소 비트만 조사해서 찾아낼 수 있도록 구성되어 있으며, 이런 방식은 매우 단순한 해시 함수를 사용하는 해시 테이블과 유사하다. 동작하는 방식은 다음과 같다.
- 매개변수 S와 B는 m 주소 비트를 세 개의 그림과 같은 필드로 나눈다. A(Address)의 s 집합 인덱스 비트는 S 집합 배열의 인덱스를 구성한다. 집합 인덱스 필드를 통해 워드가 어떤 집합을 찾을지가 결정된다.
- 어떤 집합에 저장되어야 하는지를 알게 되었다면, A의 t 태그비트는 몇 번째 라인이 워드를 포함하고 있는지를 알려준다. 이때 해당하는 Cache Line의 유효비트가 1이고, 해당 줄의 태그비트가 주소 A의 태그 비트와 일치할 경우에만 해당 워드를 포함한다.
- 만약 집합 인덱스에 의해 식별된 집합 내의 태그로 라인을 찾았다면, b 블록 오프셋을 사용하면 B-바이트 데이터 내 워드의 오프셋을 알 수 있다.
'CS' 카테고리의 다른 글
Set Associative Cache (집합결합성 캐시) (0) | 2022.11.28 |
---|---|
Directed Mapped Cache (직접매핑 캐시) (0) | 2022.11.28 |
Cache Hit, Cache Miss 개념, Cache Miss의 종류 (0) | 2022.11.28 |
Cache Memory 소개 (0) | 2022.11.28 |
Ch2. Operating-System Structures (0) | 2022.11.15 |