Cache memory

Posted at 2008/02/26 21:15 // in Research // by Daniel
http://asmlove.co.kr/zBdC7/download.php?id=280
(원문이 자세함.)
1. Fully Associative Cache Schematics
Fully Associative 캐시는 Cache Set으로 캐시를 나누지 않고 태그 정보로만 데이터를 찾는다.
단순하게 복잡도를 계산해보면 최악의 경우 2^T 번의 태그 비교가 필요해지므로 O(2^T)의 계산 복잡도를 가진다.
T비트의 비교기는 동작 속도가 매우 빠르지만 캐시 메모리가 커질수록 태그 값을 찾는데 긴 시간이 필요하다는 단점이 있다. 하지만 데이터의 주소를 그대로 캐시 메모리에 저장하므로 유연성이 높다는 장점도 있다.

2. Direct-Mapped Cache Schematics
Fully-Associative 방식을 보완한 것이 Direct-Mapped 방식이다. 메모리 주소를 태그, 셋, 오프셋으로 나누고, 캐시 메모리도 셋 단위로 나눠서 관리한다. 셋 번호에 따라 어느 캐시 라인에 데이터가 있는지 먼저 찾고, 그 안에서 태그 값을 비교해서 원하는 캐시 데이터가 맞는지 확인하는 방식이다.
캐시 라인의 번호가 Cache Set의 번호가 된다. 따라서 셋 번호를 검색하는 시간이 줄어들고 태그 번호만 비교하면 된다. Fully Associative 방식에 비해 동작 속도가 매우 빨라진다.
제작 비용이 싸지는 장점이 있지만 동일한 셋 번호를 가지는 메모리 주소를 함께 저장할 수 없다는 단점이 있다. 따라서 연속된 메모리 데이터를 캐시에 저장할 수 없게 되고, 캐시의 성능이 떨어지게 된다. 예를 들어 0x16339C와 0x16338C는 같은 셋 번호를 가지므로 같은 캐시 라인에 들어가게 된다. 따라서 캐시에는 둘 중 하나의 데이터만이 저장되고 두 데이터가 동시에 저장될 수 없다. 가까운 메모리가 함께 사용된다는 Locality를 생각해보면 매우 성능상에 문제를 가져올 수 있다.

3. Set-Associative Cache Schematics
Set-Associative 방식은 위의 두가지 방식의 장점들을 합쳐서 만든 방법이다. 캐시를 태그로만 나누는 것이 아니라 같은 셋 값으로도 나누어서 태그 값이 같지만 셋 값이 다른 데이터들도 캐시에 저장될 수 있도록 한다.
n-Way Set-Associative 라는 말은 그림과 같이 태그가 같은 데이터 라인이 n개까지 있을 수 있다는 말이다. 즉, 태그가 다르고 셋 값이 같은 데이터 라인이 몇 개가 캐시에 있을 수 있는지를 나타내는 말이다.
여기에서 n 값이 너무 높아지면 Fully Associative 방식의 단점이 나타나고, n 값이 너무 작아지면 Direct Mapped 방식의 문제가 나타나므로 Trade Off에 대한 고려가 필요해진다.

EzDoum 사이트: [Cache] 2-way Set-Associative 방식이란 무엇일까?
http://www.ezdoum.com/stories.php?story ··· F5962073
What every programmer should know about memory
http://people.redhat.com/drepper/cpumemory.pdf
크리에이티브 커먼즈 라이센스
Creative Commons License

이 글에는 트랙백을 보낼 수 없습니다