👀 캐시메모리란 무엇인가..
CPU와 주기억장치 사이에 위차한 고속 버퍼 메모리
! 보통 CPU에는 2~3개의 캐시 메모리를 사용한다. 이것을 L1, L2, L3라고 한다. 일반적으로 L1 - L2 - L3순으로 사용된다
1) 시간 지역성 : 최근에 참조된 주소의 내용은 곧 다시 참조될 가능성이 높은 특성
2) 공간 지역성 : 실제 프로그램이 참조된 주소와 인접한 주소의 내용이 다시 참조되는 특성
3) 순차 지역성 : 데이터가 순차적으로 액세스되는 특성
Cold Miss
: 해당 메모리 주소를 처음 접근하는 경우
Conflict Miss
: 캐시 메모리에 A 데이터와 B 데이터를 저장해야 하는데, A와 B가 같은 캐시 메모리 주소에 할당되어서 나는 캐시 미스다. 하나의 캐시 메모리에 둘 이상의 메인 메모리 주소와 그 데이터가 들어갔다면 충돌하게됨으로 이해할 수 있다. set way가 부족해서 발생함.(=주소 할당 문제)
Capacity Miss
: 캐시 메모리의 공간 부족한 경우
: 현재 그림에서는 메모리 공간이 32개(00000~11111)이고, 캐시 메모리 공간은 8개, 즉 (000~111)인 상황
ex) 00000, 01000, 10000, 11000인 메모리 주소는 000 캐시 메모리 주소에 맵핑
: 가장 일반적인 방식! DRAM의 여러 주소가 캐시 메모리의 한 주소에 대응되는 다대일 방식
Confict Miss의 원인이기도 하다.
: 비어있는 캐시 메모리에 마음대로 주소를 저장하는 방식!
저장할 땐 좋지만, 찾을 때 규칙이 없어 모든 블록을 검색해야 하는 단점이 있음
: 특정 행을 지정하고 그 행 안의 어떤 열이 비어있는 경우에 저장
: Direct에 비해 속도는 느리지만 검색이 빠르고, Fully에 비해 저장이 느리지만 검색이 빠름 (Direct + Fully)