[ASPLOS 2008] Adaptive Set Pinning : Managing Shared Caches in Chip Multiprocessors
cache miss 는 일반적으로 3가지 분류(cold miss, capacity miss, conflict miss) 로 나뉜다.
하지만 CMP 환경에서는 이러한 분류가 적합하지 않다고 주장하고 새로운 관점으로 cache miss를 분류한다.
CII(cold miss, inter-processor miss, intra processor miss).
cold miss 는 말그대로 compulsory miss를 뜻하고,
어떤 cache blcok 이 처음 processor A 에 의해 cache 에 올라왔다고 했을때
processor A 의 다른 reference 에 의해 eviction 된 경우를 intra-processor miss라고 하고
processor B 의 reference 에 의해 eviction 된 경우는 inter-processor miss 라고 정의 한다.
POP(Processor Owned Private) cache 를 CMP의 core 마다 할당하고 나머지 cache 는 set 별로 owner tag 를 추가하여 처음 그 set에 index 하는 processor 에게 ownership을 할당한다.
cache miss 가 나서 eviction 하게 될때 해당 set에 ownership 을 가진 processor 의 경우에는 해당 set 에서 eviction(LRU position) 하게 되고 ownership이 없는 경우는 해당 POP에서 miss를 처리하도록 한다.
이러한 방법을 set pinning 이라고 여기서 부른다.
하지만 set pinning 은 set에 대해 first-come first-serve 방식으로 set의 ownership 을 바꿀 기회를 주지 않는데 이러면 unfair 한 문제가 발생하게 됨. 그래서 counter를 둬서 cache hit / cache miss 마다 ++/-- 시킴으로써 0이 되는순간 ownership tag 를 clear 하는 방식으로 문제를 해결한다. 이를 Adaptive Set Pinning 이라 부른다.
결론적으로 Set pinning 방식보다 Adaptive Set Pinning 방식으로 baseline 보다 많은 성능 향상을 보였다.
p.s) 페이퍼를 읽으면서 문득 궁금한점을 baseline configuration에서 in-order processor를 사용하는데 그 이유가 무엇인지 궁금하다.
언제 in-order 로 실험하고 언제 out-of-order로 실험해야 하는건지...
answer
- cache 관련 실험을 할때는 simulator 를 사용할 것인데, 안그래도 simulation 이 느린데 out-of-order로 하게 된다면 더 느려져서 simulation이 tractable 하도록 하기 위해 in-order로 보통 실험 한다고 함.!!!