2017-12-10 25 views
0

매핑 된 캐싱을 직접 수행하기 위해 일부를 이해하는 데 어려움이 있습니다. 나는 2KB 다이렉트 - 맵 캐시를 가진 64KB 메모리를 가진 바이트 어드레싱 메모리 시스템을 가지고있다. 캐시 블록은 32 바이트입니다.다이렉트 매핑 캐시 비트

제가 잘못하면 2048B/32B = 64 캐시 블록이 있습니다. 각 캐시 항목 (태그, "더티"비트 등)에 필요한 총 비트 수를 알아야합니다.

나는 6 비트의 인덱스 비트 (2^6 = 64 (블록 수))가 필요하다고 생각한다. Im는 단지 알아 내는데 어려움이있다. 나머지는 필요합니다.

답변

3

물리적 주소의 비트는 "캐시 블록 내의 바이트 오프셋"을 결정하고 태그에 저장 될 필요가없는 비트의 최하위 그룹 그룹, 중간 비트 그룹 "캐시 내의 캐시 블록 인덱스"를 결정하고 태그에 저장할 필요가 없으며 캐시의 데이터가 저장해야하는 데이터인지 확인하는 데 사용되는 가장 중요한 비트 그룹 태그에.

64KB의 실제 주소 공간을 사용하면 실제 주소는 16 비트가됩니다. 캐시가 2048 바이트이면 ("직접 매핑"의 경우) 최하위 비트 그룹과 중간 비트 그룹 조합은 합계 11 비트가되어야합니다. 즉, 가장 중요한 비트 그룹 (태그에 저장해야 함)은 5 비트 여야합니다 (16 비트 - 11 비트 = 5 비트이기 때문에).

기타 비트; 엔트리가 사용되었거나 비 었는지를 나타 내기 위해 항상 뭔가가 필요합니다. 캐시가 "write-back"이라면 더티 비트가 필요하지만 캐시가 "write-through"인 경우에는 그렇지 않습니다. 여러 개의 CPU와 캐시 일관성이있는 경우 더 많은 비트가 필요합니다 (예 : 단독/공유). 어떤 유형의 오류 감지 또는 수정이 필요한 경우 더 많은 비트가 필요합니다 (예 : "패리티 비트"). 이것은 전체 태그 크기가 적어도 6 비트임을 의미합니다 (그러나 더 많을 수도 있음).