캐시 메모리(Cache memory)
- 속도가 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리
ex) CPU 코어와 메모리 사이의 병목 완화, 웹 브라이저 캐시 파일은 하드디스크와 웹 페이지 사이의 병목 현상을 완화
만약 캐시가 존재하지 않는다면 RAM에서 데이터를 인출해오는 속도가 CPU가 테스크를 처리하는 속도보다 느리기 때문에 불필요하게 시간을 낭비해야 하지만, 실제로는 중간에 위치한 캐시 메모리가 둘 사이에서 데이터를 고속으로 전달해줌으로써 속도 차이로 인한 병목을 어느정도 해결해줄 수 있다. 캐시 메모리는 메모리와 CPU 사이에 위치해 있으며, 메모리 계층 구조에서 레지스터 다음으로 상위에 위치한다.
적중과 실패
캐시메모리가 있는 컴퓨터 시스템은 CPU가 메모리에 접근하기 전에 먼저 캐시 메모리에서 원하는 데이터의 존재 여부를 확인한다. 이때 필요한 데이터가 있는 경우를적중(hit), 없는 경우를실패(miss)라고 한다. 요청한 데이터를 캐시메모리에서 찾을 확률을 적중률(hit ratio)이라고 한다. 캐시 메모리의 성능은 적중률에 의해 결정된다. 실패율은 반대로 캐시 메모리의 실패 횟수를 전체 메모리 참조 횟수로 나눈 값이며, (1 - 적중률)로 구할 수 있다.
캐시의 지역성
캐시의 지역성(Cache Locality)이란, 데이터에 대한 접근이 시간적 혹은 공간적으로 가깝게 발생하는 것을 말한다. 캐시의 적중률(Hit rate)을 극대화하여 캐시가 효율적으로 동작하기 위해 사용되는 성질이다. 지역성의 전제조건으로, 프로그램은 모든 코드나 데이터를 균등하게 접근하지 않는다는 특성을 기본으로 한다.
캐시의 지역성은 공간 지역성과 시간 지역성으로 나뉜다.
- 공간 지역성(Spatial Locality) : 최근에 사용했던 데이터와 인접한 데이터가 참조될 가능성이 높다는 특성
- 시간 지역성(Temporal Locality) : 최근에 사용했던 데이터가 재참조될 가능성이 높은 특성
공간 지역성은 배열을 예로 들 수 있다. A[0], A[1]과 같은 연속 접근의 경우 그다음 원소들에 접근할 가능성이 높다.
시간 지역성은 for, while 같은 반복문을 예로 들 수 있다. 특정 부분을 반복해서 접근하기 때문에 다시 참조할 확률이 높다.
매핑 종류
캐시 기억장치와 주기억장치 사이에서 정보를 옮기는 것을 사상(Mapping)이라고 하는데, 세 가지 방법이 있다.
1. 직접 매핑
- 메인 메모리를 일정한 블록으로 나누어 각각의 블록을 캐시의 정해진 영역에 매핑하는 방법이다. 구현하기 쉽지만 캐시 적중률이 낮아질 수 있고 하나의 캐시 메모리에서 참조하는 데이터가 둘 이상이 될 수 있어 충돌이 일어날 수도 있다.
2. 연관 매핑
- 어소시에이티브 매핑(associative mapping) : 직접 매핑이 동일한 라인 번호의 주소를 매핑할 수 없다는 단점은 캐시의 성능을 매우 저하시킬 수 있으며 이에 대한 개선으로 캐시의 태그 필드를 확장하여 캐시의 어떤 라인과도 무관하게 매핑 시킬 수 있는 매핑 방법이 바로 연관 매핑 방식이다.
3. 집한 연관 매핑
- 셋 어소시에이티브 매핑(set associative mapping) : 어소시에이티브 매핑 방식이 어떤 주소든지 동시에 매핑시킬 수 있어 높은 히트율을 가질 수 있다는 장점을 가지고 있으나 그에 준하는 단점 또한 가지고 있어 이들의 장점을 취하고, 단점을 줄이기 위한 절충안으로 나온 것이다.
캐시 메모리 목표
- 데이터 일관성 보장
- 데이터 일관성에 따른 오버헤드 최소화
- 캐시 레이턴시 최소화
- 캐시 적중률 최대화 & 부적중률 최소화
참고 자료
- http://itnovice1.blogspot.com/2019/09/cache.html
- https://zion830.tistory.com/46
- 공룡책(운영체제)