캐시란?
메모리와 CPU 간의 속도 차이를 완화하기 위해 데이터를 미리 가져와 저장해두는 임시장소. 캐시는 사용할 것으로 예상되는 데이터를 미리 가져다 놓음으로써 두 장치의 속도 차이를 완화해준다.
지역성
이란, 데이터 접근이 시간적, 혹은 공간적으로 가깝게 일어나는 것
시간적 지역성
메모리 상의 같은 주소에 여러 차례 읽기 쓰기를 수행할 경우, 상대적으로 작은 크기의 캐시를 사용해도 효율성을 높일 수 있음.
공간적 지역성
캐시에 이미 저장된 같은 블록의 데이터를 접근하게 되므로 캐시의 효율성이 크게 향상한다.
매핑 프로세스는 주기억장치로부터 캐시 메모리로 데이터를 전송하는 방법
으로 3가지의 방법이 존재함
직접 매핑(Direct Mapping)
메모리 주소와 캐시의 순서를 일치시킴.
메모리가 1~100까지 있고 캐시가 1~10까지 있다면, 1~10까지의 메모리는 캐시의 1에 위치하고 11~20까지의 메모리는 캐시의 2에 위치시키는 것이다.
구현이 간단하고 비용이 적지만 그만큼 적중률이 낮을 수 있음.
연관 매핑 (Associative Mapping)
순서를 일치시키지 않음. 필요한 메모리 값을 캐시의 어디든지 저장 할 수 있다. 때문에, 찾는 과정은 복잡하고 느리지만 정말 필요한 캐시들 위주로 저장할 수 있기에 적중률이 높음. 캐시는 애초에 속도가 굉장히 빠르기 때문에 적중률이 높은것이 성능이 좋다고 말할 수 있다.
직접 연관 매핑 (Set Associative Mapping)
연관 매핑 + 직접 매핑
순서를 일치시키고 편하게 저장하되, 일정 그룹을 두어 그 그룹 내에서 편하게 저장하는 것. 예를 들어 메모리가 1~100까지 있고 캐시가 1~10 까지 있다면 캐시 1~5에는 1~50의 데이터를 무작위로 저장하는 것.
References
https://chelseashin.tistory.com/43
https://gguljaem.tistory.com/entry/%EC%BA%90%EC%8B%9C%EB%A9%94%EB%AA%A8%EB%A6%AC%EC%9D%98-%EA%B0%9C%EB%85%90%EA%B3%BC-%EB%A7%A4%ED%95%91%EA%B8%B0%EB%B2%95%EC%97%90-%EB%8C%80%ED%95%9C-%EC%84%A4%EB%AA%85