본문 바로가기
프로그래밍/컴퓨터

[CS] 캐시 메모리

by Sik.K 2023. 4. 20.

흔히 말하는 캐시 메모리는 CPU 내부에 존재하는 메모리 공간이다. 레지스터와 주기억장치 사이에 존재하며, 프로그램이 실행될 때 주기억장치의 데이터 중 일부를 저장하는 역할을 한다.

 

대부분의 프로그램은 한 번 사용했던 데이터를 다시 사용할 가능성이 높고, 그 주변의 데이터도 곧 사용할 가능성이 높은 데이터 지역성을 가지고 있다. 따라서 데이터 지역성을 활용하여 주기억장치에 있는 데이터를 캐시 메모리로 가져오고, 중앙처리장치가 필요한 데이터를 캐시에서 찾도록 하면 성능을 향상시킬 수 있다.

 

이러한 특성은 참조의 지역성을 확인하면 알 수 있는데, 참조의 지역성이란 CPU가 프로그램을 실행하는 동안 짧은 시간 범위 내에 일정 구간의 메모리 영역을 반복적으로 참조(액세스)하는 경향이 있는 것을 말한다.

 

 

참조의 지역성 특징

 

  • 참조의 지역성은 프로그램이 가지는 기본적인 실행 특성이다.
  • 프로세스의 실행 동안 메모리가 균일하게 참조되지 않고 특정 부분이 집중 참조된다.
  • 참조의 지역성은 지역성(Locality), 지역성의 원리(Principle of Locality)라고도 부른다.
  • 프로세스는 최근에 참조한 데이터와 코드를 다시 참조하는 경향이 있다.
  • 프로세스가 실행되는 동안 메모리 영역을 옮겨 다니면서 참조의 지역성이 나타난다.
  • 경험적 관찰에서 발견한 90/10 규칙은 "프로그램 코드의 10%가 프로그램 전체 실행 시간의 90%를 소비한다"는 규칙이다.

참조의 지역성 2가지 형태

 

  • 시간 지역성 : 시간 면에서, 프로그램 내에 지금 참조되는 주소가 가까운 미래에 다시 참조될 가능성이 큰 특징을 시간 지역성이라고 한다. 코드나 데이터, 자원 등이 아주 짧은 시간 내에 사용되는 특성이다.
  • 공간 지역성 : 공간(메모리 주소) 면에서, 지금 참조되는 주소의 주변 번지들(동일한 페이지)이 가까운 미래에 참조되는 특성을 공간 지역성이라고 한다.

 

이런 특징을 통해 캐시 메모리는 임시로 주기억장치에서 필요한 데이터들을 가지고 있게 된다. 이 경우, CPU가 필요로 하는 데이터, 즉 참조하려는 데이터가 캐시 메모리에 존재하게 되면 주기억장치에 접근할 필요 없이 바로 캐시 메모리를 참조하면 된다. 이를 캐시 히트(Cache Hit)라고 한다.

 

하지만 만약 참조하려는 데이터가 캐시 메모리에 존재하지 않는 데이터라면 결국 주기억장치에서 캐시 메모리로 데이터를 옮겨야 하는데 이 경우를 캐시 미스(Cache Miss)라고 한다.

 

따라서 전체 참조 중에 캐시 히트가 많다면 컴퓨터는 최대의 성능을 낼 수 있게 되고 반대로 캐시 미스가 많다면 그만큼 참조의 횟수가 많아지기 때문에 성능의 저하가 생긴다.

댓글