문제
다음 상황에서 마지막 접근(0x14) 이 캐시 미스를 발생시키는 이유로 가장 적절한 것은?
L1 캐시: 직접 사상, 캐시 라인 4개(인덱스 0~3) 메모리 주소 0x10, 0x20, 0x30, 0x14 순서로 접근 (주소의 하위 2비트가 캐시 인덱스)
① 0x14만 유일하게 인덱스 0에 매핑되기 때문이다 ② 0x14는 캐시 라인 수보다 큰 주소이기 때문이다 ③ 0x14는 주기억장치에만 존재하고 캐시에 적재될 수 없기 때문이다 ④ 이전에 접근한 0x10, 0x20, 0x30과 동일한 인덱스 0에 매핑되어 충돌이 발생하기 때문이다
정답
4번
해설
직접 사상 캐시에서 인덱스는 주소의 하위 2비트로 결정된다. 0x10, 0x20, 0x30, 0x14는 모두 하위 2비트가 00이므로 모두 같은 인덱스 0에 매핑된다. 따라서 마지막 0x14 접근 시 직전에 같은 인덱스를 차지하던 블록과 충돌하여 캐시 미스가 발생한다.