본문 바로가기
IT 이론/운영체제

캐시 메모리 매핑 기법

by 아이들링 2017. 6. 25.

CPU가 특정 값을 취하고자 할 때 그 값이 캐시에 있는 값인지 어떻게 확인할 것인가? 에 대한 고찰이다.

국내 시험에선 직접 사상, 연관 사상, 직접/연관 사상이라고 하기도 한다.

깊게 들어가서 동작에 대한 예시, 구현방법까지 따진다면 내용이 지나치게 많아지므로 개념만 간단히 정리해 보자면 아래와 같다.


1. 직접매핑(Direct Mapping) 

메모리 주소와 캐시의 순서를 일치시킨다. 메모리가 1~100까지 있고 캐시가 1~10까지 있다면 1~10까지의 메모리는 캐시의 1에 위치하고 11~20까지의 메모리는 캐시의 2에 위치시키는 것이다. 구현이 정말 간단하지만 저 규칙을 만족시켜서 캐시를 넣다 보면 캐시가 효율적이지 않게 자꾸 교체되어야 하는 일이 생긴다. 

예를 들면 30~40에 해당하는 값을 자꾸 불러다 사용해야 하는데 이를 저장할 캐시 공간은 3 하나 뿐이므로 매번 캐시 교체가 일어나게 된다. 즉 적중률이 낮고 성능이 낮은 단순한 방식이다. 


2. 연관매핑(Associative Mapping) 

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


3. 직접연관매핑(Set Associative Mapping) 

연관매핑에 직접매핑을 합쳐 놓은 방식이다. 순서를 일치시키고 편하게 저장하되, 일정 그룹을 두어 그 그룹 내에서 편하게 저장시키는 것이다. 예를 들면 메모리가 1~100까지 있고 캐시가 1~10까지 있다면 캐시 1~5에는 1~50의 데이터를 무작위로 저장시키는 것이다. 블록화가 되어 있기 때문에 검색은 좀 더 효율적으로 되고 직접매핑처럼 저장위치에 대한 큰 제약이 있는건 아니기 때문에 적중률이 많이 떨어지지도 않는다. 

댓글2