캐시 메모리

Computer Science/OS + CA · 2023. 4. 28. 13:32

CPU는 프로그램 실행 과정에서 메모리의 저장된 데이터를 빈번하게 사용한다. 하지만 CPU가 메모리에 접근하는 시간은 CPU가 연산하는 시간보다 느리기 때문에, 이를 극복하기 위한 저장 장치가 캐시 메모리이다. 

저장 장치 계층  구조 (memory hierarchy) 

컴퓨터가 사용하는 저장 장치들은 CPU에 얼마나 가까운가를 기준으로 계층적으로 나타낼 수 있다.

  • CPU에 가까운 저장 장치는 빠르고, 멀리 있는 저장 장치는 느리다. 
  • 속도가 빠른 장치는 저장 용량이 작고, 가격이 비싸다. 

캐시 메모리 (cache memory)

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

  • 컴퓨터의 내부에는 여러 개의 캐시 메모리가 있다.
  • 캐시 메모리들은 CPU의 가까운 순서대로 코어 안에 존재하는 L1 캐시, L2 캐시, 그리고 코어 외부에 위치하는 L3 캐시가 있다.
  • 캐시 메모리의 용량은 L3 > L2 > L1 이고, 속도는 L1 > L2 > L3, 가격은 L1 > L2 > L3 이다.
  • CP가 메모리 내에 데이터가 필요하면, L1, L2, L3 순서대로 데이터를 검색한다.  

멀티 코어의 경우 위에 그림처럼 L1 캐시와 L2 캐시는 코어마다 고유한 캐시 메모리로 할당되고, L3 캐시는 여러 코어가 공유하는 형태로 사용된다. 

참조 지역성 원리 (locality of reference, principle of locality)

메모리는 실행 중인 대상을 저장하고, 캐시 메모리는 CPU가 사용할 법한 대상을 예측하여 저장한다.

  • 캐시 메모리 내 데이터가 CPU에 활용될 경우를 캐시 히트라고 한다. 
  • 캐시 메모리 내 예측하여 저장된 데이터가, 예측이 틀려 사용되지 않고 데이터를 직접 가져와야 하는 경우를 캐시 미스(cache miss)라고 한다.
  • 캐시 적중률(cache hit ratio) = 캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)
    • 우리가 사용하는 컴퓨터의 캐시 적중률은 대략 85% ~ 95%이상이다.

이렇듯 캐시 메모리는 CPU가 사용할 법한 대상을 예측하는데, 참조 지역성 원리에 메모리로부터 가져올 데이터를 결정한다. 

참조 지역성에 원리는 다음과 같다. 

  • CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다.
    • 시간 지역성(temporal locality)
      • ex)  변수에 저장된 값은 일반적으로 한 번만 사용되지 않고 프로그램이 실행되는 동안 여러 번 사용된다. 
  • CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있다. 
    • 공간 지역성(spatial locality)
      • ex) 워드 세서 프로그램에는 자동 저장 기능, 입력 기능, 출력 기능이 있다고 했을 때 각각의 기능과 관련한 데이터는 모여서 저장된다. 

 

 

본 게시물은 한빛 미디어 <혼자 공부하는 컴퓨터구조+운영체제>를 공부한 것을 정리하여 기록한 게시물입니다.
사진 출처 (맨 위 부터)

 

https://velog.io/@yu-jin-song/CS-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B3%84%EC%B8%B5-%EA%B5%AC%EC%A1%B0

 

[OS] 메모리 계층 구조(Memory Hierachy)

메모리를 필요에 따라 여러가지 종류로 나누어 두는 것→ CPU가 메모리에 더 빨리 접근 가능함컴퓨터의 설계에 있어 각각의 특징이 있는 서로 다른 여러 종류의 저장 장치를 함께 사용하여 최적

velog.io

 

 

 

'Computer Science > OS + CA' 카테고리의 다른 글

CPU 스케쥴링 알고리즘  (0) 2023.05.26
CPU 스케쥴링  (0) 2023.05.26
메모리  (0) 2023.04.27
CISC와 RISC  (0) 2023.04.27
명령어 병렬 처리 기법  (0) 2023.04.27