캐시 메모리 계산

캐시 메모리의 논리를 배우고 있습니다. 올바르게 이해했는지 확인할 수 있을지 궁금합니다. 태그 필드에 캐시 메모리가 있으면 16 비트, 집합 필드에는 10 비트이고 블록 필드의 바이트는 6 비트이므로 해당 정보에서만 추론 할 수 있습니다. 용량은 128KB이고 블록 필드의 바이트에서 2⁶ = 64 바이트이므로 블록 크기 64 바이트와 양방향으로 설정됩니다. 2¹⁰ = 1024이지만 다른 연관성 번호가있는 다른 용량이 요구 사항을 충족 할 수 있습니까?

공식이

블록 수 = 용량 / 블록 크기

세트 수 = 블록 수 / #associativity

그러므로 4 방향으로의 연관성을 두 배로 늘릴 수 있었지만 4 방향 캐시로 요구 사항을 충족 할 수 없었습니다. uld는 set 필드에 다른 수의 비트가 필요합니다.

내가 올바르게 이해 했습니까?

답변

이 그림이 연관 캐시의 작동 방식을 이해하는 데 도움이됩니까? 구조적으로?

여기에 이미지 설명 입력 here

간단히 말해 블록 오프셋 비트는 블록 크기를 결정합니다 (캐시 행에있는 바이트 수, 원하는 경우 열 수). 인덱스 비트는 각 세트에있는 행 수를 결정합니다. 캐시 용량은 2 ^ (blockoffsetbits + indexbits) * #sets입니다. 이 경우 2 ^ (4 + 4) * 4 = 256 * 4 = 1 킬로바이트입니다.

동일한 크기의 캐시 (용량)에 대해 4 방향에서 2 방향으로 이동하려면 방법 세트 연관, 양방향 연관, 각 세트의 행을 두 배로 늘리거나 각 세트의 열을 두 배로 늘릴 수 있습니다. 즉, 캐시 라인 수를 두 배로 늘리거나 블록 크기를 두 배로 늘립니다.

행 수를 두 배로 늘리는 경우 12 비트 주소가 5 비트 색인과 4 비트 블록 오프셋으로 나뉘어 3 비트 태그가 남게됩니다.

p>

블록 크기를 두 배로 늘리려면 12 비트 주소가 4 비트 인덱스, 5 비트 블록 오프셋으로 분할되고 3 비트 태그가 남게됩니다.

다시 반복해서 말하자면, 연관 캐시에 대한 지배적 인 공식은 다음과 같습니다.

Cache Capacity = (Block Size in Bytes) * (Blocks per Set) * (Number of Sets) Index Bits = LOG2(Blocks per Set) Block Offset Bits = LOG2(Block Size in Bytes) Tag Bits = (Address Bits) - (Index Bits) - (Block Offset Bits) 

원래 언급 한 예에서는 다음과 같습니다. t 가정하지 않고 각 주소 비트 필드의 크기를 기반으로 캐시의 크기를 추론 할 수 있다고 생각합니다. ut 연관성. 양방향 연결이면 다음과 같이 말할 수 있습니다.

캐시 용량 = (2 ^ 6) * (2 ^ 10) * (2) = 2 ^ 18 = 2 ^ 8 킬로바이트 = 256 킬로바이트. 128KB를 어떻게 계산했는지 잘 모르겠습니다. 단방향 연관 (직접 매핑) 인 경우에 해당합니다.

128kB (2 ^ 17 바이트) 캐시 용량의 경우 다음과 같이 말하여 64 바이트 블록 크기의 4 방향 연관 캐시를 만들 수 있습니다.

2^17 = 2^6 * (Blocks per Set) * 4 Blocks per Set = 2^17 / 2^6 / 2^2 = 2^9 = 512 

… 그러므로 9 개의 인덱스 비트, 4 개의 블록 오프셋 비트를 할당합니다. , 나머지 (19) 태그 비트.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다