본문 바로가기

운영체제(OS)

[운영체제(OS)] 10. 캐시 메모리(Cache Memory)

반응형

 

[목차]

 

1. Cache Memory

 

2. Cache Locality

 

3. Caching Line

 

4. Cache Miss

 

 

참고)

gyoogle.dev blog

JaeYeopHan Github

 

  1. Cache Memory

 

캐시 메모리(Cache Memory)속도가 빠른 장치와 느린 장치 간의 속도차에 따른 병목 현상을 줄이기 위한 범용 메모리다.

메인 메모리와 CPU 사이에 위치하며, CPU의 속도에 버금갈 만큼 메모리 계층에서 가장 속도가 빠르지만, 용량이 적고 비싸다는 점도 있다. 

 

캐시 메모리는 메인 메모리에서 자주 사용하는 프로그램과 데이터를 저장해두어 속도를 빠르게 한다. 이를 위해서 CPU가 어떤 데이터를 원하는지 어느 정도 예측할 수 있어야 한다. 작은 크기의 캐시 메모리에 CPU가 이후에 참조할 정보가 어느 정도 들어있는지에 따라 캐시의 성능이 결정되기 때문이다. 

 

이를 위해 캐시의 지역성(Locality)을 이용한다. 

실제로 캐시는 L1, L2, L3의 다층 캐시 메모리 같은 여러 구조와 알고리즘 등을 이용한 복잡한 구조로 데이터 처리 속도를 높이지만, 본 글에서는 생략한다.  

 

 

  2. Cache Locality

 

캐시의 지역성(Cache Locality)이란, 데이터에 대한 접근이 시간적 혹은 공간적으로 가깝게 발생하는 것을 말한다. 캐시의 적중률(Hit rate)을 극대화하여 캐시가 효율적으로 동작하기 위해 사용되는 성질이다. 

지역성의 전제조건으로, 프로그램은 모든 코드나 데이터를 균등하게 접근하지 않는다는 특성을 기본으로 한다. 

 

캐시의 지역성은 공간 지역성(Spatial Locality)시간 지역성(Temporal Locality)으로 나뉜다. 

  • 공간 지역성 : 최근에 사용했던 데이터와 인접한 데이터가 참조될 가능성이 높다는 특성
  • 시간 지역성 : 최근에 사용했던 데이터가 재참조될 가능성이 높은 특성 

공간 지역성은 배열을 예로 들 수 있다. A[0], A[1]과 같은 연속 접근의 경우 그다음 원소들에 접근할 가능성이 높다. 

시간 지역성은 for, while 같은 반복문을 예로 들 수 있다. 특정 부분을 반복해서 접근하기 때문에 다시 참조할 확률이 높다.

 

 

  3. Caching Line

 

캐시 메모리는 메인 메모리에 비해 크기가 매우 작기 때문에 메인 메모리와 1:1 매칭이 불가능하다.

캐시가 아무리 CPU에 가깝게 위치하더라도, 데이터가 캐시 내의 어느 곳에 저장되어 있는지 찾기가 어려워 모든 데이터를 순회해야 한다면 캐시의 장점을 잃기 때문에 쉽게 찾을 수 있는 구조가 필요하다.

 

따라서, 캐시에 데이터를 저장할 때 특정 자료구조를 사용하여 묶음으로 저장하는데, 이를 캐싱 라인(Caching Line)이라고 한다. 빈번하게 사용되는 데이터의 주소들이 흩어져 있기 때문에 캐시에 저장하는 데이터에는 데이터의 주소 등을 기록해둔 태그를 달아둘 필요가 있다. 이러한 태그들의 묶음을 의미한다. 

 

캐싱 라인은 다음과 같은 매핑 방법을 사용한다. 

 

1. Direct Mapping

 

직접 매핑으로, 메인 메모리를 일정한 크기의 블록으로 나누어 각각의 블록을 캐시의 정해진 위치에 매핑하는 방식이다. 가장 간단하고 구현도 쉽다.

하지만 적중률(Hit rate)이 낮아질 수 있다. 또 동일한 캐시 메모리에 할당된 여러 데이터를 사용할 때 충돌이 발생하게 되는 단점이 있다.

 

 

2. Full Associative Mapping

 

캐시 메모리의 빈 공간에 마음대로 주소를 저장하는 방식이다. 저장하는 것은 매우 간단하지만, 원하는 데이터가 있는지 찾기 위해서는 모든 태그를 병렬적으로 검사해야 하기 때문에 복잡하고 비용이 높다는 단점이 있다. 

 

3. Set Associative Mapping

 

Direct Mapping과 Full Associative Mapping의 장점을 결합한 방식이다. 

빈 공간에 마음대로 주소를 저장하되, 미리 정해둔 특정 행에만 저장하는 방식이다. Direct에 비해 검색 속도는 느리지만 저장이 빠르고 Full에 비해 저장이 느리지만 검색은 빠르다. 

주로 사용하는 방식이다. 

 

 

  4. Cache Miss

 

캐시 미스(Cache Miss)CPU가 참조하려는 데이터가 캐시 메모리에 없을 때 발생한다. 

 

1) Compulsory Miss

특정 데이터에 처음 접근할 때 발생하는 cache miss이다.

 

2) Capacity Miss 

캐시 메모리의 공간이 부족해서 발생하는 cache miss이다.

 

3) Conflict Miss

캐시 메모리에 A와 B 데이터를 저장해야 하는데, A와 B가 같은 캐시 메모리 주소에 할당되어 있어서 발생하는 cache miss이다. direct mapped cache에서 많이 발생한다. 

 

PC로 보시는 것을 권장합니다. 

피드백은 언제나 환영입니다. 댓글로 달아주세요 ^-^

 

 

 

 

반응형