본문 바로가기
Computer Science/운영체제

캐시 메모리

by eunnnn 2023. 3. 18.

캐시 메모리(Cache Memory)

  • 주기억장치에서 자주 사용하는 프로그램과 데이터를 저장해두어 속도를 빠르게 하는 메모리
  • 주기억장치와 CPU사이에 위치
  • 속도가 빠른 장치와 느린 장치간의 속도 차에 따른 병목현상을 줄이기 위한 범용 메모리
  • 캐시메모리를 사용하면 주 기억장치를 접근하는 횟수가 줄어들어 컴퓨터의 처리속도가 향상

 
CPU는 데이터를 가져오기 위해 캐시메모리 -> 메모리(RAM) -> 보조기억장치(HDD) 순으로 접근한다.

  • Cache hit ✅ : 캐시 메모리의 데이터를 CPU 레지스터에 복사한다.
  • Cache Miss ❎, Memory hit ✅ : 메모리에서 데이터를 캐시 메모리에 복사하고 캐시 메모리의 복제된 내용을 CPU 레지스터에 복사한다.
  • Cache Miss ❎, Memory Miss ❎, HDD hit ✅ : 보조 기억장치에서 필요한 데이터를 메모리에 복사한다. 메모리에 복제된 내용을 캐시 메모리에 복제한다. 캐시 메모리의 복제된 데이터를 CPU 레지스터에 복제한다.

캐시(Cache)의 지역성(Locality)

캐시가 효율적으로 동작하려면, 캐시의 적중율(Hit-rate)를 극대화 시켜야 한다.
지역성이란 데이터 접근이 시간적, 혹은 공간적으로 가깝게 일어나는 것, 즉 어느 한 순간에 특정 부분을 집중적으로 참조하는 특성을 의미한다.
 

지역성(Locality)의 종류

시간적 지역성

  • 예시 : 조건문
  • 특정 데이터가 한번 접근되었을 경우, 가까운 미래에 또 한번 데이터에 접근할 가능성이 높은 것
  • 메모리 상의 같은 주소에 여러 차례 읽기 쓰기를 수행할 경우, 상대적으로 작은 크기의 캐시를 사용해도 효율성을 꾀할 수 있다.

공간적 지역성

  • 예시 : 배열
  • 특정 데이터와 가까운 주소가 순서대로 접근되었을 경우 CPU 캐시나 디스크 캐시의 경우 한 메모리 주소에 접근할 때 그 주소뿐 아니라 해당 블록을 전부 캐시에 가져오게 된다.
  • 이때 메모리 주소를 오름차순이나 내림차순으로 접근한다면, 캐시에 이미 저장된 같은 블록의 데이터를 접근하게 되므로 캐시의 효율성이 크게 향상된다.

캐시 메모리의 매핑 프로세스(Mapping Process)

매핑 프로세스는 주기억장치로부터 캐시 메모리로 데이터를 전송하는 방법이다.

  • 직접 매핑(direct Mapping)
    • 메인 메모리를 일정한 크기의 블록으로 나누어 각각의 블록을 캐시의 정해진 위치에 매핑하는 방식
    • 간단하고 구현하는 비용이 적게드는 장점이 있지만 적중률이 낮아질 수 있다는 단점이 있다.

  • 어소시에이티브 매핑(Associative Mapping)
    • 캐시 메모리의 빈 공간에 마음대로 주소를 저장하는 방식.
    • 저장하는 것은 간단하지만, 원하는 데이터가 있는지 찾기 위해서는 모든 블록을 병렬적으로 검사해야 하기 때문에 복잡하고 비용이 높은 단점이 있다.
  • 세트-어소시에이티브 매핑(Set-Associative Mapping)
    • 직접 매핑과 연관 매핑의 장점만을 취한 방식.
    • 빈 공간에 마음대로 주소를 저장하되, 미리 정해둔 특정 행에만 저장하는 방식
    •  가장 많이 사용되는 방식이다.

캐시 미스(Cache miss)

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

  • Compulsory Miss : 특정 데이터에 처음 접근할 때 발생하는 cache miss
  • Capacity Miss : 캐시 메모리의 공간이 부족해서 발생하는 cache miss
  • Conflict Miss : 캐시 메모리에 A와 B 데이터를 저장해야 하는데, A와 B가 같은 캐시 메모리 주소에 할당되어 있어서 발생하는 cache miss다. direct mapped cache에서 많이 발생한다. 

 
 
출처
 

더보기

'Computer Science > 운영체제' 카테고리의 다른 글

쓰레드 세이프(Tread Safe)  (0) 2023.03.19
Sync vs Async & Block vs Non-Block  (0) 2023.03.19
가상 메모리(Virtual Memory)  (0) 2023.03.18
교착상태와 기아상태  (1) 2023.03.18
운영체제란  (0) 2023.03.17