Computer Science/[ OS ]

[ OS ] 18. 메모리 관리 전략 - 캐시 메모리

kim.svadoz 2021. 6. 3. 18:03
728x90
반응형

캐시 메모리

주 기억장치에 저장된 내용의 일부를 임시로 저장해두는 기억장치

CPU와 주기억장치의 속도 차이에 의한 성능 저하(병목현상)를 방지하기 위한 방법

CPU가 이미 봤던 걸 다시 재 접근할 때, 메모리 참조 및 인출과정에 대한 비용을 줄이기 위해 캐시에 저장해둔 데이터를 활용한다.

캐시는 플리플롭 소자로 구성되어 SRAM으로 되어있어서 DRAM보바 빠른 장점을 지닌다.

 

CPU와 기억장치의 상호작용

CPU에서 주소를 전달 → 캐시 기억장치에 명령이 존재하는지 확인

  • 존재 → Hit
    1. 해당 명령어를 CPU로 전송 → 완료
  • 비존재 →Miss
    1. 명령어를 갖고 주기억장치로 접근
    2. 해당 명령어를 가진 데이터 인출
    3. 해당 명령어 데이터를 캐시에 저장
    4. 해당 명령어를 CPU로 전송 → 완료

이처럼 캐시를 잘 활용한다면 비용을 많이 줄일 수 있다.

따라서 CPU가 어떤 데이터를 원할지 어느정도 예측할 수 있어야 한다.

캐시에 많이 활용되는 쓸모있는 정보가 들어있어야 성능이 높아진다.

때문에 적중률(Hit rate)을 극대화시키기 위해 사용되는것이 바로 지역성의 원리

 

지역성의 원리

기억 장치 내의 정보를 균일하게 액세스 하는 것이 아니라 한 순간에 특정부분을 집중적으로 참조하는 특성

지역성은 시간지역성과 공간지역성으로 나눌 수 있다.

  • 시간지역성 : 최근에 참조된 주소의 내용은 곧 다음에도 참조되는특성
  • 공간지역성 : 실제 프로그램이 참조된 주소와 인접한 주소의 내용이 다시 참조되는 특성

 

캐싱 라인

Caching Line

캐시(cache)는 프로세서 가까이에 위치하면서 빈번하게 사용되는 데이터를 놔두는 장소이다.

하지만 캐시가 아무리 가까이 있더라도 찾고자 하는 데이터가 어느 곳에 저장되어 있는지 몰라 모든 데이터를 순회해야 한다면 시간이 오래 걸리게 된다.

즉, 캐시에 목적 데이터가 저장되어 있다면 바로 접근하여 출력할 수 있어야 캐시가 의미 있어 진다는 것이다.

그렇기 때문에 캐시에 데이터를 저장할 때 특정 자료구조(set이나 map 등을 활용)를 사용하여 묶음으로 저장하게 되는데 이를 캐싱 라인이라고 한다.

프로세스는 다양한 주소에 있는 데이터를 사용하므로 빈번하게 사용하는 데이터의 주소 또한 흩어져 있다.

따라서 캐시에 저장하는 데이터에는 데이터의 메모리 주소 등을 기록해 둔 태그를 달아놓을 필요가 있다.

이러한 태그들의 묶음을 캐싱 라인이라고 하고 메모리로부터 가져올 때도 캐싱라인을 기준으로 가져온다. 대표적으로 세 가지 방식이 존재한다.

  1. Full Associative
  2. Set Associative
  3. Direct Map
728x90
반응형