캐시 메모리(Cache Memory)
CPU가 메모리에 접근하는 것은 시간 차이가 생긴다. CPU는 속도가 빠르고 메모리는 CPU에 비해 속도가 느리다.
이 속도 차이때문에 병목 현상이 발생한다. 이 병목 현상을 줄이기 위해 중간 버퍼 역할을 하는 캐시 메모리를 사용한다.
CPU가 메모리에 저장된 데이터를 읽어올 때, 자주 사용하는 데이터를 캐시 메모리에 저장한다.
그후 다음에 이용할 때 메모리가 아닌 캐시 메모리에서 가져오면서 속도를 향상시킨다.
→ 속도가 빨라지지만 용량이 적고 비용이 비싼 단점이 있다.
네트워크에서 캐시는 로컬에 파일을 미리 받아놓고, 그 내용을 보거나 웹 서벙서도 매번 로딩을 해야하는 파일들을 미리 로딩해두고 응답을 주기도 한다. 데이터 베이스를 매번 확인하는 것도 캐시 서버를 이용하면 빠른 응답을 줄 수 있다.
CPU는 캐시 메모리 L1, L2, L3를 사용한다.
듀얼 코어 프로세서의 캐시 메모리 : 각 코어마다 독립된 L1 캐시 메모리를 가지고, 두 코어가 공유하는 L2 캐시 메모리가 내장된다.
- L1: CPU 내부에 존재
- L2: CPU와 RAM 사이에 존재
- L3: 메인보드
디스크 캐시 : 주기억장치와 보조기억장치 사이에 존재하는 캐시
캐시 메모리 작동 원리
캐시에 데이터를 저장할 땐, 이런 참조 지역성을 최대한 활용하기 위해 해당 데이터뿐만 아니라, 옆 주소의 데이터도 같이 가져와 미래에 쓰일 것을 대비한다. 요청한 데이터가 캐시에 있으면 "Hit" 없으면 "Miss". 원하는 데이터가 Cache에 있을 확률 "Hit Ratio"
지역성(Locality)
CPU에서 명령어를 수행하면서 매번 캐시 메모리를 참조하게 되는데, 이때 Hit률이 지역성을 갖는다. 프로세스들이 기억장치 내의 정보를 균일하게 액세스하는 것이 아니라 어느 순간에 특정 부분을 집중적으로 참조하는 것을 말한다. 지역성은 메모리의 위치와 접근 시간에 따라서 시간 지역성, 공간 지역성을 가진다.
- 시간 지역성 : 반복문에 사용하는 조건 변수처럼 한번 참조된 데이터는 잠시후 다시 참조될 가능성이 높음
- 공간 지역성 : 연속 접근 시, 참조된 데이터 근처에 있는 데이터가 잠시후 또 사용될 가능성이 높음
Miss Case
- Cold miss : 해당 메모리 주소를 처음 불러서 나는 miss
- Conflict miss : A와 B가 같은 캐시 메모리 주소에 할당되면 나는 miss (충돌 - 주소 할당 문제)
- Capacity miss : 캐시 메모리의 공간이 부족해서 나는 miss (공간 문제)
캐시 크기를 키우면 접근 속도가 느려지고 파워를 많이 먹는 단점이 있다.