[Computer Arch.] Cache Miss 원인
Processing unit과 memory 사이에 존재하는 cache에서 유효한 address의 data를 포함할 경우 hit, 그렇지 못할 경우 miss라고 부른다. 이 때 miss의 종류는 대표적으로 다음과 같다.
- Cold (compulsory) miss
- Capacity miss
- Conflict miss
1. Cold (Compulsory) Miss
처음 cache에 access하는 경우 memory로부터 data를 읽어와야 하기 때문에 피할 수 없는 miss다.
2. Capacity Miss
Cache size를 넘는 경우를 말하는데, 만약 cache가 direct mapped cache라고 가정했을 때, 전체 cache size보다 큰 data set을 접근하려고 하면 발생할 수 있다.
예를 들면, cache size가 8KB라고 했을 때, program에서 사용하는 data set이 32KB라고 하면 모든 data set을 cache에 담을 수 없기 때문에 cache miss가 발생 될 수 있다.
해결 방법으로는 cache size를 증가시키면 해결 할 수 있다.
3. Conflict Miss
Cache의 set way가 부족할 경우 발생되는 cache miss다. 예를 들면 set associative cache 구조의 경우 address에서 index만 같은 경우 같은 cache line index를 접근하여 존재하지 않을 경우 기존에 저장된 data를 내보내고 새롭게 저장된다. 만약 동일한 cache line을 반복적으로 접근하게 되면 이런 문제가 발생 될 것이다.
해결 방법으로는, way 수를 증가시키면 conflict miss 발생 빈도를 줄일 수 있다.
추가로 victim cache (primary cache 밑에 fully associative cache 형태)를 사용하면 conflict miss를 줄일 수 있다. 참고로 primary cache가 miss일 경우 victim cache를 lookup해서 hit이 날 경우 기존 data와 swap한다.