본문 바로가기
컴퓨터공학기초 개념/컴퓨터구조

24. 컴퓨터 구조 - 캐시메모리의 동작원리

by devraphy 2021. 8. 25.

1. 캐시메모리가 사용되는 방식

- 일반적으로 캐시 메모리(L2)는 CPU와 주기억장치 사이에 위치한다.

- 캐시 메모리는 CPU와 주기억장치 간의 속도차이를 극복하기 위해 사용되는 장치로

- CPU의 처리속도 만큼 빠른 속도를 보장한다. 

- 그러나 주기억장치 만큼 큰 용량을 갖지 못한다. 비싸기 때문이다. 

- 이와 같은 이유로, 캐시 메모리는 CPU가 사용할 데이터 또는 명령어의 일부분만 저장하게 된다. 


2. CPU, 캐시메모리, 주기억장치의 상호작용

 

a) Word와 Block

▶ Word

   - 그림에서 캐시메모리와 주기억장치를 구성하는 한칸을 의미한다. 

   - 한번에 레지스터에 옮길 수 있는 데이터 또는 명령어의 크기를 표현하는 단위다. 

   - 주기억장치에서 레지스터로 한번에 옮길 수 있는 데이터의 단위 

   - 하나의 명령어로 실행될 수 있는 데이터의 단위 

   - 흔히 32bit CPU, 64bit CPU라고 표현하는 방식이 워드의 크기를 의미한다. 

   - 32bit CPU라면 해당 CPU의 워드 크기가 32bit를 의미하는 것이다. 

 

▶ Block

   - 여러개의 워드를 묶은 집합을 의미한다. 

 

b) 동작방식

- CPU에서 어떤 데이터를 요청하면 캐시메모리를 참조한다. 

- 해당 데이터가 캐시메모리에 없는 경우, 주기억장치에 접근하여 가져온다. 

- 이 과정에서 주기억장치에 접근하게 되면, 더 오랜 시간이 걸린다. 

- 이 과정에서 캐시메모리에서 필요한 데이터를 찾으면 빠르게 처리된다. 

 

c) 캐시 메모리가 있으면 무조건 빠를까? 

- 캐시 메모리를 잘 운영하여 CPU가 주기억장치에서 데이터를 찾는 빈도수 보다 

- 캐시 메모리에서 데이터를 찾는 빈도수가 더 많다면, 당연히 빠를 것이다. 

- 하지만 캐시메모리는 주기억장치보다 훨씬 작은 저장공간을 갖고 있기 때문에, 

- 실제로 CPU가 필요로 하는 모든 데이터를 캐시메모리에서 찾을 수는 없다. 


3. 참조 지역성(Locality of reference)

- 캐시 메모리의 참조 지역성은 다른 말로 메모리 접근의 국부성이라고 한다. 

- 이는 CPU가 필요로하는 데이터를 캐시메모리에 적재하기 위해서, 

- 주기억장치에서 블럭을 가져올 때, 어떤 방식으로 적절한 데이터를 가져올 것인가를 결정하는 방법론이다.

- 다시 말해, 어떤 데이터를 어떤 우선순위로 캐시 메모리에 저장할 것인가를 결정하는 것이다. 

- 어떤 데이터 블럭을 캐시메모리에 적재할 것인가를 결정할 때, 다음과 같은 요소를 고려한다. 

- 추가적으로, 참조 지역성은 운영체제의 페이징기법과 유사한 작동방식을 갖는다. 

 

a) 시간 구역성 (= 시간 지역성, Temporal Locality)

- 시간 구역성은 반복해서 사용하는 데이터 또는 명령어가 있음을 의미한다. 

- 반복문을 실행하는 경우, 반복해서 사용하는 데이터 또는 명령어가 반드시 존재한다. 

- 이러한 반복성을 고려하여 주기억장치에서 캐시 메모리로 데이터 블럭을 가져오는 것이다. 

 

최근에 사용한 또는 반복적으로 사용하는 명령어 / 데이터를 적재하는 방식 

 

b) 순차 구역성 (= 순차 지역성, Sequential Locality)

- CPU가 어떤 명령어나 데이터를 순차적으로 수행해야 되는 상황을 의미한다. 

- 이러한 상황에서는 순차적으로 실행할 데이터 블럭을 캐시메모리에 적재하는 것이다. 

 

→ 주기억장치에 저장된 순서대로 사용되는 명령어 / 데이터를 적재하는 방식

 

c) 공간 구역성 (= 공간 지역성, Spatial Locality)

- CPU가 주기억장치의 특정한 메모리 주소에 있는 데이터를 접근하는 경우를 의미한다.

- 예를 들어, 어떤 배열의 특정 요소(index)에 접근한다거나, 특정한 포인터에 접근한다거나 하는 상황이다. 

- 이처럼 특정 메모리 주소에 위치한 데이터를 반복해서 불러오는 작업을 한다면, 

- 해당 메모리 주소의 데이터를 캐시메모리에 적재하는 것이다. 

 

→ 주기억장치 내부에서 서로 인접해있고 연속적으로 사용하는 명령어 / 데이터를 적재하는 방식

 

- 이처럼 데이터 블럭을 적절하게 선택하여 캐시메모리에 적재하는 것이 캐시메모리의 효율을 최대화하는 방법이다. 

댓글