캐쉬(Cache)와 캐쉬 알고리즘
캐쉬(Cache)와 캐쉬 알고리즘
레지스터가 하드디스크와 동일한 크기의 레지스터를 가진다면 캐시메모리 자체는 필요 없을 것인데,
현실적으로 불가능 하기 때문에 캐쉬 메모리는 컴퓨터를 향상시키는 데 아주 중요한 역할을 한다.
컴퓨터 프로그램의 일반적인 특성
템퍼럴 로컬리티 (Temporal Locality) : 프로그램 실행 시 한번 접근이 이뤄진 주소의 메모리 영역은 자주 접근하게 된다
스페이셜 로컬리티 (Spatial Locality) : 프로그램 실행 시 접근하는 메모리 영역은 이미 접근이 이루어진 영역의 근처일 확률이 높다
위에 나온 소프트웨어의 2가지 특성 때문에 캐쉬는 성능 향상에 많은 도음이 됨.
캐쉬 알고리즘
-
ALU 연산과정 중에서 필요한 데이터가 있다면 이를 레지스터로 이동
-
데이터를 가져오기 위해 데이터가 존재하는 L1 캐쉬를 찾아봐야 한다.
만약 L1캐쉬에 데이터가 존재할 경우, 캐쉬 힛(Cache Hit)이 발생했다고 하며, 이 데이터를 레지스터로 이동시킨다.
만약 L1캐쉬에 데이터가 존재하지 않을 경우, 캐쉬 미스(Cache Miss)가 발생했다고 하고, L2캐쉬에서 가져오게 된다.
물론 L2캐쉬에도 없다면 (L2캐쉬 레벨의 캐쉬미스가 생긴다면) 메인 메모리에서 데이터를 가져와야 한다.
- 데이터의 이동은 블록 단위로 진행
예를들어, 레지스터로 이동해야 하는 데이터의 주소 번지가 0x1000번지였는데 이 데이터가 L1 캐쉬에 존재하지 않았다면, L2캐쉬에서 L1캐쉬로 이동하는 데이터의 단위는 0x1000번지의 데이터를 포함하는 하나의 블록이 된다.
출처 : https://popcorntree.tistory.com/68