컴퓨터구조와 운영체제

15. 캐시 메모리

waterclean101 2023. 11. 17. 07:58

캐시 메모리

CPU가 메모에 접근하는 속도는 CPU와 연산 속도보다 압도적으로 느리다.

 

저장장치 계층 구조

  • CPU와 가까운 저장장치는 일반적으로 또 상대적으로 속도가 빠르고 멀리 있는 저장장치는 느리다.
  • 속도가 빠른 저장장치는 일반적으로 또 상대적으로 저장 용량이 작고 가격이 비싸다.

레지스터 vs. 메모리(RAM) vs. USB 메모리(보조기억 장치)

속도 (Speed)

  • 레지스터: 가장 빠르다. CPU 내부에 위치하며 데이터를 거의 즉각적으로 접근할 수 있다.
  • RAM (Random Access Memory): 레지스터보다는 느리지만 여전히 매우 빠른 속도를 제공한다. 시스템의 주기억장치로, 데이터 접근 시간은 나노초 단위다.
  • USB 메모리: RAM보다 느리다. 데이터 전송 속도는 USB의 표준(예: USB 2.0, USB 3.0 등)에 따라 달라진다.

용량 (Capacity)

  • 레지스터: 매우 제한적인 용량을 가지고 있다. 대개 몇 바이트에서 몇 킬로바이트 수준이다.
  • RAM: 수 기가바이트에서 수십 기가바이트의 용량을 가질 수 있다. 일반적인 컴퓨터에서 주로 사용되는 메모리 용량이다.
  • USB 메모리: 작은 크기에도 불구하고 대용량 데이터 저장이 가능하다. 몇 기가바이트에서 수 테라바이트까지 다양한 용량이 제공된다.

각각의 저장장치들의 장단점이 명확한데 어느 하나의 저장장치만 쓸 수는 없다. 따라서 일반적으로 컴퓨터에서는 이 모든 저장장치를 장단점에 맞게 잘 배치해서 계층적으로 사용한다.

 

캐시 메모리

  • CPU와 메모리 사이에 위치한, 레지스터보다는 용량이 크고 메모리보다는 빠른 SRAM 기반의 저장장치
  • CPU의 연산 속도와 메모리 접근 속도를 조금이라도 줄이기 위해 만들어졌다.

 

계층적 캐시 메모리(L1-L2-L3)

캐시 메모리는 꼭 하나가 아니라 계층적으로 구성할 수 있다. CPU 외부에 위치해 있을 수도 있고. CPU 내부에 있을 수도 있다. 이 계층적 구조는 프로세서가 필요한 데이터를 빠르게 찾고 처리할 수 있도록 돕는다. 일반적으로 L1 캐시와 L2 캐시는 코어 내부에 있고. L3 캐시는 CPU 코어 외부에 위치에 있는 경우가 많다

L1 캐시 (Level 1 Cache)

  • 용량: 가장 작다, 일반적으로 몇 킬로바이트에서 수십 킬로바이트 사이다.
  • 속도: CPU의 모든 캐시 중에서 가장 빠르다. CPU 코어와 매우 밀접하게 통합되어 있어 데이터 접근 시간이 매우 짧다.
  • 위치: CPU 코어 내부에 위치한다. 각 코어별로 별도의 L1 캐시를 가질 수 있다.

L2 캐시 (Level 2 Cache)

  • 용량: L1 캐시보다 크지만 L3 캐시보다는 작다. 일반적으로 몇십 킬로바이트에서 몇 메가바이트 사이다.
  • 속도: L1 캐시보다는 약간 느리지만, 여전히 속도가 매우 빠르다.
  • 위치: 대부분의 현대 프로세서에서는 CPU 코어에 가깝게 위치한다. 일부 시스템에서는 L1 캐시와 같은 칩에 통합되기도 한다.

L3 캐시 (Level 3 Cache)

  • 용량: L1과 L2 캐시보다 훨씬 크다. 몇 메가바이트에서 수십 메가바이트에 이르기도 한다.
  • 속도: L1과 L2 캐시보다는 상대적으로 느리지만, RAM보다는 훨씬 빠르다.
  • 위치: 프로세서 칩 내에 있으며, 여러 CPU 코어가 공유하는 경우가 많다.

이러한 캐시들은 계층적으로 작동하여 CPU의 효율성을 극대화한다. L1 캐시는 가장 빠르지만 용량이 제한적이어서 자주 사용되는 데이터를 저장한다. L2 캐시는 더 많은 데이터를 저장할 수 있지만 약간 느리고, L3 캐시는 더 큰 용량을 가지면서도 여전히 빠른 데이터 접근 속도를 제공한다.

 

싱글코어
멀티코어

 

캐시 히트, 캐시 미스, 캐시 적중률

캐시 히트 (Cache Hit)

  • 프로세서가 요청한 데이터가 캐시 메모리에 존재하는 경우를 말한다. 즉, 프로세서가 데이터를 찾을 때, 해당 데이터가 이미 캐시에 저장되어 있는 상황.
  • 캐시 히트 비율이 높을수록 시스템의 전반적인 성능이 향상된다. 캐시 메모리는 주 메모리(RAM)보다 훨씬 빠르기 때문에, 데이터를 캐시에서 빠르게 읽을 수 있다. 이는 처리 속도를 증가시키고, CPU 대기 시간을 줄인다.

캐시 미스 (Cache Miss)

  • 프로세서가 요청한 데이터가 캐시 메모리에 존재하지 않는 경우를 말한다. 이는 프로세서가 필요한 데이터를 캐시에서 찾지 못하고, 주 메모리나 다른 저장 장치로부터 데이터를 가져와야 하는 상황을 의미한다.
  • 캐시 미스는 시스템 성능에 부정적인 영향을 미친다. 데이터를 주 메모리에서 가져오는 것은 시간이 더 걸리므로, 처리 속도가 느려지고 CPU의 효율성이 감소한다.
  • 캐시 미스의 유형
    • Compulsory Misses: 처음 데이터를 읽을 때 발생하는 불가피한 미스.
    • Capacity Misses: 캐시의 용량이 부족하여 발생하는 미스.
    • Conflict Misses: 캐시 메모리의 구조적 한계로 인해 발생하는 미스(특히, 직접 매핑된 캐시에서 자주 발생).

캐시 적중률(Cache Hit Rate)

  • 캐시 적중률은 컴퓨터 시스템의 캐시 메모리 성능을 측정하는 데 중요한 지표다.
  • 캐시 적중률은 전체 캐시 접근 중에서 캐시 히트가 차지하는 비율이다. 이는 시스템이 캐시에서 요청한 데이터를 얼마나 효과적으로 찾아내는지를 나타낸다.
  • Cache Hit Rate = 캐시 히트의 횟수 / 총 캐시 접근 횟수 × 100%
  • 캐시 적중률을 향상시키기 위한 전략으로는 캐시 크기 증가, 캐시 대체 알고리즘의 최적화, 데이터 블록의 배치 전략 최적화 등이 있다.

 

참조 지역성의 원리

캐시 메모리는 메모보다 용량이 작다. 그렇기 때문에 메모리에 있는 모든 내용들을 다 저장할 수는 없다. 그렇다면 캐시 메모리는 이 메모리에 있는 많은 정보 중에서 어떤 것들을 갖고 와서 저장을 해야 할까? → CPU가 자주 사용할 만한 내용을 예측해서 저장

  • 참조 지역성의 원리: CPU가 메모리에 접근할 때의 주된 경향성을 바탕으로 만들어진 원리
  • 시간적 지역성 (Temporal Locality): 한 번 참조된 데이터는 가까운 미래에 다시 참조될 가능성이 높다는 원리. ex) 루프나 반복문에서 사용되는 변수들. 루프 내에서 같은 변수가 반복적으로 접근된다.
  • 공간적 지역성 (Spatial Locality): 메모리에서 서로 인접한 위치에 있는 데이터는 연속적으로 참조될 가능성이 높다는 원리. 배열이나 연속적인 메모리 블록에서 데이터를 순차적으로 처리할 때 공간적 지역성이 나타난다. 배열의 요소들은 메모리 상에서 연속적으로 위치해 있기 때문에, 한 요소를 참조한 후 인접한 다음 요소를 참조할 확률이 높다.