본문 바로가기
Computer Architecture/Basic

캐시 메모리(Cache Memory)의 구조 및 동작 과정 - 2

by FastBench 2023. 4. 12.

초안 :  2023.04.10

 

2023.04.10 - [Computer Architecture] - 캐시 메모리(Cache Memory)의 원리

2023.04.11 - [Computer Architecture] - 캐시 메모리(Cache Memory)의 구조 및 동작 과정 - 1

 

 

 

이전 게시글에서 다룬 direct mapping 방식의 캐시 메모리를 생각해보면..

메인 메모리의 어떤 데이터 블록은 캐시메모리의 지정된 슬롯으로 들어가야만 하고, 해당 슬롯에 이미 정보가 있다면 그 내용은 지워져야 한다. 캐시에 여유 공간이 있더라도 말이다.

이는 결과적으로 hit ratio 를 낮게 만드는 요인이 된다.

 

Set Associative Mapping

이를 해결하기위해 direct mapping 캐시 메모리 두개를 병렬로 두는 방법이 고안되었다.

이러면 한 데이터 블록이 들어갈 수 있는 캐시의 슬롯이 두곳이 되므로 유연성이 커진다.

 

아래 그림을 통해 예시를 들어보자.

2-way Set Associative Mapping

위와 같이 0번째 슬롯이 두 군데 존재하므로, 아무곳에나 저장하면 된다.

동일한 슬롯 번호를 갖는 슬롯의 집합을 Set 라고 한다.

 

위 예시의 경우 각 슬롯 번호마다 두개의 슬롯 set 이 있으므로 2-way set associative mapping 캐시 메모리 라고 한다.
유사하게 2,4,6,8 ...-way set associative mapping 캐시메모리도 가능하다.

 

만약 이 다음에 또 0번째 슬롯에 해당하는 데이터 블록을 가져와 하는 상황이 온다면 두 곳 중 어디에 저장해야 할까?

아래의 알고리즘을 참고하자.

 

Cache Replacement Algorithm

캐시가 꽉 차서 더 이상 저장이 불가능할 경우, 결국 어느 한 블록을 victim 으로 선택되어 지워지고 새로운 데이터 블록으로 채워져야 한다. 이를 cache replacement  라고 한다.

 

다양은 cache replacement 알고리즘이 있지만 대표적으로 Random, FIFO, LRU 등이 있다.

1. Random : 말그대로 랜덤한 블록을 victim 으로 선택하는 방법이다.

2. FIFO (First In First Out) : 가장 먼저 저장된 데이터 블록은 캐시에 있는지 오랜시간이 지났기 때문에 더 이상 사용되지 않을 거란 논리로, 캐시에 가장 먼저 저장된 데이터 블록을 victim 으로 선택하는 방법이다.

3. LRU (Least-Recently-Used) : 최근에 가장 적게 사용된 데이터 블록을 victim 으로 선택하는 방법이다. 최근에 가장 적게 사용되었다면 앞으로도 거의 사용되지 않을 거라는 추론이 가능하기 때문이다.

보통  LRU 방식이 나머지 보다 성능이 우수하다고 나오므로 보통 LRU 방식을 표준 캐시 교체 알고리즘으로 사용한다.

direct mapping 방식은 캐시 교체 알고리즘이 필요없다. 데이터 블록이 위치해야 할 곳이 단 한군데로 정해져 있기 때문이다.

 

 

Reference

  • 컴퓨터 구조의 핵심, 퍼플, 양희재

댓글