반응형
교수님 너무 졸려요 손이 꽁꽁꽁 잠이 솔솔솔
The Principle of Locality
프로그램은 짧은 시간 안에 메모리의 일부 공간(서로 연관성이 있음)만을 접근한다. 이를 지역성이라고 한다. 지역성은 다시 2가지로 나뉜다.
- Temporal Locality: 한 메모리 공간이 reference 되었다면, 짧은 시간 안에 다시 reference 될 확률이 높다. (Loop나 재사용)
- Spatial Locality: 한 메모리 공간이 reference 되면, 이와 가까운 공간이 reference 된다 (명령어 코드, array 접근)
아하 그렇구나~
Locality의 이점 이용하기
메모리는 위와 같이 hierarchical 하게 구성된다. 일단 모든 정보를 디스크에 넣고, 최근에 access 한 애들은 점점 위로 올라온다. 메모리에 올리고, 캐시에 올리고... 올라올수록 빠르지만, 비싼 애들이라 용량이 작다. 때문에 캐시 정책이니 가상 메모리니 하는 기술이 생겼다.
Direct Mapped Cache
- 캐시의 위치가 주소값으로 결정된다. (addr % 8 등으로 결정)
- 주소값 중에서도 하위 몇 비트를 사용한다.
- 하나의 주소값이 하나의 공간 밖에 선택지가 없다.
- 겹치면? 덮어쓰기 (Cache Conflict)
Tags and Valid Bits
- Tag: Block Address의 상위 몇 비트를 사용한다.
- Valid: 데이터의 존재 유무 나타내는 비트, 1=present / 0=not present
- 최초에는 Valid 모두 0, Cold Miss가 발생한다.
- 32비트 주소에서 10비트를 Index로 사용하면 Cache Block은 2 << 10 = 1024개
- 하위 2비트를 제외하는 이유는, 주소가 word(=32비트=4byte) 단위로 증가하기 때문이다.
- 남는 20비트는 Tag로 저장된다.
- Index로 찾아갔는데 Valid 하지 않으면 Miss
- Valid 해도 저장된 Tag와 현재 주소값 Tag가 매치되지 않으면 Miss
- 매치되면 Hit -> 32비트 데이터를 반환한다.
Block Size 고려할 점
- 큰 블록일수록 miss rate는 낮다
- Spatial Locality로 인해 같은 블록의 다른 워드에 접근할 가능성
- 그러나 Cache 전체 용량은 한정되어 있음. Larger Block = Fewer Block
- 결국 Miss Rate이 증가함
- pollution도 발생한다
- Miss Penalty도 커진다
- 불러올 데이터 크기가 커지기 때문
- Early Restart와 Critical-Word-First로 어느 정도 해결 가능
Cache Miss의 종류
- Capacity Miss: Cache 용량 부족으로 인해 생기는 Miss
- Conflict Miss: Hash 값이 겹쳐 overwrite 되면서 생기는 Miss
- Compulsory Miss: Cold Miss, 최초에 캐시는 모두 비어있어 생기는 Miss
- Cache Hit 시에는 일반적인 Pipeline 따라간다
- Miss 시에는 Stall이 발생하며 다음 레벨의 메모리 계층에서 데이터를 Fetch 한다
- Instruction Cache에서 Miss가 발생할 경우에는 IF 스테이지를 재실행한다
- Data Cache Miss의 경우 Ex 스테이지까지 끝낸 후 MEM 스테이지를 재실행한다
반응형
'대학 수업' 카테고리의 다른 글
DRAM 구조와 Cache Performance 측정 - 임베디드 컴퓨터 구조 (0) | 2020.12.13 |
---|---|
Write-Through vs. Write-Back Cache - 임베디드 컴퓨터 구조 (0) | 2020.12.12 |
Speculative Tomasulo Algorithm - 임베디드 컴퓨터 구조 (0) | 2020.12.11 |
Tomasulo's Algorithm - 임베디드컴퓨터구조 (0) | 2020.12.02 |
[동역학] 운동 방정식: n-t 좌표계, 원통 좌표계 (0) | 2020.09.22 |