본문으로 건너뛰기

캐시에 대해서 설명해주세요.

캐시 메모리는 속도가 빠른 장치와 느린 장치간의 속도차에 따른 병목 현상을 줄이기 위한 범용 메모리이다. 이러한 역할을 수행하기 위해서는 CPU가 어떤 데이터를 원할 것인가를 어느 정도 예측할 수 있어야 한다. 캐시의 성능은 작은 용량의 캐시 메모리에 CPU가 이후에 참조할, 쓸모 있는 정보가 어느 정도 들어있느냐에 따라 좌우되기 때문이다.

이 때 적중율(Hit rate)을 극대화 시키기 위해 데이터 지역성(Locality)의 원리를 사용한다. 지역성의 전제조건으로 프로그램은 모든 코드나 데이터를 균등하게 Access 하지 않는다는 특성을 기본으로 한다. 즉, Locality란 기억 장치 내의 정보를 균일하게 Access 하는 것이 아닌 어느 한 순간에 특정 부분을 집중적으로 참조하는 특성인 것이다.

이 데이터 지역성은 대표적으로 시간 지역성(Temporal Locality)과 공간 지역성(Spatial Locality)으로 나뉜다.

  • 시간 지역성: 최근에 접근한 명령이나 데이터에 조만간 또 접근할 가능성이 높다는 개념이다.
  • 공간 지역성: 어떤 요소에 접근 한 상황이라면 그 주변의 요소들에 접근할 가능성이 높다는 개념이다.

캐시메모리 매핑기법

직접 매핑

메모리 주소와 캐시의 순서를 일치시킨다. 메모리가 1100까지 있고 캐시가 110까지 있다면 110까지의 메모리는 캐시의 1에 위치하고 1120까지의 메모리는 캐시의 2에 위치시킨다.

구현이 간단하지만 저 규칙을 만족시켜서 캐시를 넣다 보면 캐시가 효율적이지 않게 자꾸 교체되어야 하는 일이 생긴다.

쉽게 말하면 메인메모리와 캐시를 똑같은 크기로 나누고 순서대로 매핑하는 것을 말한다.

연관 매핑

순서를 일치시키지 않는다. 필요한 메모리 값을 캐시의 어디든 편하게 저장될 수 있다. 당연히 찾는 과정은 복잡하고 느릴 수 있지만 정말 필요한 캐시들 위주로 저장할 수 있기 때문에 적중률은 높다. 캐시가 일반 메모리보다 속도가 훨씬 빠르므로 캐시의 검색량을 신경쓰는 것보단 적중률이 높은게 성능이 더 좋다.

직접 연관 매핑(Set Associative Mapping)

연관 매핑에 직접 매핑을 합쳐 놓은 방식이다. 순서를 일치시키고 편하게 저장하되, 일정 그룹을 두어 두 그룹 내에서 편하게 저장시키는 것이다.

Reference