Computer/CS

캐시(Cache)

에린_1 2024. 3. 11. 20:43
728x90

캐시(Cache)

Cache Memory

  • 캐시 메모리는 속도가 빠른 장치와 느린 장치 간의 속도차에 따른 병목 현상을 줄이기 위한 범용 메모리다.
  • 메인 메모리에서 자주 사용하는 프로그램과 데이터를 저장해두어 속도를 빠르게한다.
  • 캐시의 지역성(Locality)를 이용한다.

Cache Locality

  • 캐시의 지역성이란, 데이터에 대한 접근이 시간적 혹은 공간적으로 가깝게 발생하는 것을 말한다. 캐시의 적중률(Hit rate)을 극대화 하여 캐시가 효율적으로 동작하기 위해 사용되는 성질이다.
  • 캐시의 지역성은 공간 지역성(Spatial Locality)과 시간 지역성(Temporal Locality)으로 나뉜다.
    • 공간 지역성 : 최근에 사용했던 데이터와 인접한 데이터가 참조될 가능성이 높다는 특성
    • 시간 지역성 : 최근에 사용했던 데이터가 재참조될 가능성이 높은 특성
    • 공간 지역성은 배열을 예로 들 수 있고, 시간 지역성은 for,while 같은 반복문을 예로 들 수 있다.

Caching Line

  • 캐시 메모리는 메인 메모리에 비해 크기가 매우 작기 때문에 메인 메모리와 1:1 매칭이 불가능하다. 그래서 캐시에 데이터를 저장할 때 특정 자료구조를 사용하여 묶음으로 저장하는데, 이를 캐싱 라인이라고 한다. 빈번하게 사용되는 데이터의 주소들이 흩어져 있기 때문에 캐시에 저장하는 데이터에는 데이터의 주소 등을 기록해둔 태그를 달아둘 필요가 있다. 이러한 태그들의 묶음을 의미한다.
  • 캐싱 라인은 다음과 같은 매핑 방법을 사용한다.
    1. Direct Mapping
      • 직접 매핑으로, 메인 메모리를 일정한 크기의 블록으로 나누어 각각의 블록을 캐시의 정해진 위치에 매핑하는 방식이다.
        • 가장 간단하고 구현이 쉽다.
        • 적중률(Hit rate)이 낮아질 수 있다.
        • 동일한 캐시 메모리에 할당된 여러 데이터를 사용할 때 충돌이 발생하게 되는 단점이 있다.
    2. Full Associative Mapping
      • 캐시 메모리의 빈 공간에 마음대로 주소를 저장하는 방식이다.
        • 저장하는 것은 매우 간단하지만, 원하는 데이터가 있는지 찾기 위해서는 모든 태그를 병렬적으로 검사해야 하기 때문에 복잡하고 비용이 높다는 단점이 있다.
    3. Set Associative Mapping
      • Direct Mapping과 Full Associative Mapping의 장점을 결합한 방식이다.
        • 빈 공간에 마음대로 주소를 저장하되, 미리 정해둔 특정 행에만 저장하는 방식이다. Direct에 비해 검색 속도는 느리지만 저장이 빠르고 Full에 비해 저장이 느리지만 검색이 빠르다.

Cache Hit/Miss

  • Cache Hit
    • CPU가 참조하려는 데이터를 캐시에서 찾는 것을 의미한다.
    • 해당 데이터를 바로 사용한다.
  • Cache Miss
    • CPU가 참조하려는 데이터가 캐시에 없으면 발생한다.
    • 메모리로 가서 데이터를 찾는다.
    • 종류
      1. Compulsory Miss
        • 특정 데이터에 처음 접근할 때 발생한다.
      2. Capacity Miss
        • 캐시 메모리의 공간이 부족해서 발생한다.
      3. Conflict Miss
        • 캐시 메모리에 A와 B를 저장해야 하는데, A와 B가 같은 캐시 메모리 주소에 할당되어 있어 발생하는 Cache Miss다. Direct Mapped Cache에서 많이 발생한다.
  • Cache Rate
    • 캐시 히트가 되는 비율이다. 일반적인 컴퓨터는 약 90%이다.
    • 캐시 적중률이 높을수록 성능이 좋아진다.

Write Through/Write Back

Write Through

  • Write Through
    • Write를 할 때, 캐시 메모리와 메인 메모리 모두에 업데이트를 하는 방식이다.
    • 버퍼를 통해 캐시 메모리가 메인 메모리에 업데이트한다.
      • CPU가 대기하는 시간을 줄일 수 있다.
    • 데이터 로스가 발생하면 안되는 상황에서는 Write Through를 사용하는 것이 좋다.
    • 장점
      • 캐시와 메모리에 업데이트를 같이 하여, 데이터 일관성을 유지할 수 있어서 안정적이다.
    • 단점
      • 메모리의 빈번한 데이터 전송으로 인해 속도가 느려진다.

Write Back

  • Write Back
    • 캐시에 새로운 데이터 블록으로 교체되는 때에 메모리에 반영하는 방식이다.
    • 장점
      • Write Through보다 훨씬 빠르다.
    • 단점
      • 속도가 빠르지만 캐시에 업데이트 하고 메모리에는 바로 업데이트를 하지 않기 때문에, 캐시와 메모리가 서로 값이 다른 경우가 발생할 때가 있다.
    • 빠른 서비스를 요구하는 상황에서는 Write Back을 사용하는 것이 좋다.

L1/L2 Cache

  • L1 Cache
    • 명령어와 데이터를 구분한다.
    • CPU(레지스터)와 직접적으로 연결된다.
  • L2 Cache
    • 명령어 데이터 구분없이 모든 자료를 가져온다.
    • 메모리와 연결된다.

 

참조

https://rebro.kr/180

 

[운영체제(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)는 속도가 빠른 장치와 느린 장치 간의 속도차에 따른 병목 현상을 줄

rebro.kr

https://velog.io/@gwichanlee/OS-%EC%BA%90%EC%8B%9C-Cache

 

[OS] 캐시 (Cache)

◎ 캐시 (Cache) ◎ 캐시의 구조 ◎ 즉시 쓰기 vs 지연 쓰기 ◎ L1 캐시, L2 캐시

velog.io

https://shuu.tistory.com/49

 

캐시 메모리 (캐시 일관성, 캐시의 쓰기 정책)

1) 캐시 메모리 (Cache Memory) (1) 캐시 메모리란 (1-1) 탄생 배경 현대 컴퓨터의 주기억장치 메모리는 대부분 100% SDRAM으로 구성되며 SDRAM은 보조 기억장치에 비해 빠르긴 하지만 한 번 메모리에 접근

shuu.tistory.com

 

728x90

'Computer > CS' 카테고리의 다른 글

32 bit OS vs 64 bit OS  (0) 2024.03.11
Rax Register  (0) 2024.03.11
CPU 스케줄링 알고리즘  (0) 2024.03.02
데드락(Dead Lock)/교착상태  (1) 2024.03.02
문맥교환(Context Switching)  (0) 2024.03.01