개발자 김수진

[OS] 캐시 메모리 본문

CS/운영체제

[OS] 캐시 메모리

김수진장 2020. 9. 28. 21:11

 

[ 캐시란 ]

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