[ 캐시란 ]
Main memory와 CPU 사이에 존재하여 자주 쓰는 데이터를 저장한다.
따라서 데이터를 읽기 위해 Main memory에 접근하지 않아도 된다.
=> 시간 단축
[ 캐시 작동 원리 ]
- 시간 지역성 ( Temporal Reference)
한번 참조된 데이터는 다시 참조될 확률이 높다.
- 공간 지역성 ( Spatial Reference)
참조된 데이터 주변에 있는 데이터가 다음에 참조될 확률이 높다.
위의 두가지를 반복문을 예로 설명하면
i라는 변수는 다시 참조된다. => 시간 지역성
arr 주변 데이터가 참조된다. (arr[0], arr[1], ...) => 공간 지역성
for(int i=0;i<5;i++)
cout << arr[i];
CPU가 요청한 데이터가 캐시에 존재하면 Cache HIT
없어서 메모리에서 가져오는 경우 Cache MISS
- Capacity Miss
캐시 Memory가 작아서 발생하는 Miss
- Compulsory Miss
특정 데이터에 처음 접근할 때, 캐시에 존재하지 않아서 발생하는 Miss
- Conflict Miss
캐시메모리에 A데이터, B데이터를 저장해야하는데,
A와 B가 같은 캐시 메모리 주소에 할당되어서 발생하는 Miss
[ 캐시 구조 및 작동 방식 ]
- Direct Mapped Cache
메모리 주소의 index field를 기준으로 캐시 메모리에 Mapping
간단하고 빠르지만 Conflict Miss가 발생한다는 단점이 있다.
- Fully Associative Cache
비어있는 캐시 메모리 아무 공간에 저장
원하는 데이터를 찾기 위해 cache set을 모두 확인해봐야 하므로 시간이 꽤 걸린다.
- Set Associative Cache
Direct + Fully 방식으로 특정 set을 정해놓고 ( Cache line을 묶은 것이 Cache set )
그 중 비어있는 곳 아무곳에나 저장한다.
[ Write Strategy ]
'CS > 운영체제' 카테고리의 다른 글
데드락 (DeadLock) (0) | 2020.09.16 |
---|