[CA] Chapter 11: Exploiting Memory Hierarchy(2) - Direct Mapped Cache
[CA] Chapter 11: Exploiting Memory Hierarchy(2) - Direct Mapped Cache
⚙ Computer Architecture 공부
Direct Mapped Cache - Index
📚Index: cache block number
= (Memory Addr) mod (Number of Cache Blocks) (나머지 값)
- 캐시 블록 수가 8개(2³)라면, 메모리 주소의 하위 3비트가 인덱스
- 예: 주소
00001
,01001
,10001
,11001은
모두 인덱스001
(1번)에 매핑
- 예: 주소
Direct Mapped Cache - Tag
같은 캐시 블록에 여러 메모리 주소가 매핑된다면?
- 예: 00001, 01001, 10001, 11001 모두 캐시 블록 1번에 매핑
→ 캐시에 있는 데이터가 어떤 메모리 주소의 것인지 알 수 없음!
메모리 주소를 Tag와 Index로 나눈다!!
📚Tag: 같은 캐시 블록에 매핑되는 서로 다른 메모리 주소들을 구별하는 역할
Valid bit는 해당 캐시 블록에 유효한 데이터가 있는지 표시
- 프로세서 시작 시 캐시는 빈 상태
- 캐시 블록이 비어있는지, 유효한 데이터가 있는지 구별 필요
Valid bit = 0
: 비어있음 또는 무효한 데이터Valid bit = 1
: 유효한 데이터 존재, 태그 비교 필요
Cache 접근 시나리오
초기 상태
- 모든 Cache block의
Valid bit = N
(무효) - Tag와 Data는 비어있음
- 8 blocks (Index 000~111)
Step 1: Data 22 (10110) request
✅처리 과정:
- index
110
→ 캐시 블록 6번 확인 Valid bit = N
→ 무효한 데이터- Cache Miss! 메모리에서 데이터 가져오기
- 블록 6에 저장:
Valid=Y
,Tag=10
,Data=Memory(10110)
Step 2: Data 26 (11010) request
✅처리 과정:
- index
010
→ 캐시 블록 2번 확인 Valid bit = N
→ 무효한 데이터- Cache Miss! 메모리에서 데이터 가져오기
- 블록 2에 저장:
Valid=Y
,Tag=11
,Data=Memory(11010)
Step 3: Data 22 (10110) request again
✅처리 과정:
- index
110
→ 캐시 블록 6번 확인 Valid bit = Y
→ 유효한 데이터 있음- Tag 비교: 저장된 태그(10) = 요청한 태그(10) ✓
- Cache Hit! 캐시에서 데이터 직접 반환
Step 4: Data 26 (11010) request again
✅처리 과정:
- index
010
→ 캐시 블록 2번 확인 Valid bit = Y
→ 유효한 데이터 있음- Tag 비교: 저장된 태그(11) = 요청한 태그(11) ✓
- Cache Hit! 캐시에서 데이터 직접 반환
Cache Conflict
❌데이터 교체 발생!
Step f
: 주소 18 (10010)을 로드할 때, Index010
의 기존 데이터 (주소 26의 데이터)가 교체됨!- 주소 26을 다시 요청하면 캐시 미스 발생
자주 사용되는 데이터들이 같은 인덱스에 매핑되면 지속적인 데이터 교체로 인해 캐시 성능이 크게 저하됨!
This post is licensed under CC BY 4.0 by the author.