목록Software Engineering/Paper (14)
Pure Software Engineer :)
Adaptive Insertion Policies for High Performance Caching[ISCA 2007] 의 확장판. [ISCA 2007] 에서는 private cache 환경에서 DIP(Dynamic Insertion Policy) 를 제안. DIP는 LRU(Least Recently Used) 와 BIP(Bimodal Insertion Policy) 둘중에 하나를 어플리케이션 실행중에 dynamic 하게 선택하는 알고리즘이다. LRU가 새로운 line을 MRU에 Insertion 하는것인 반면 BIP는 기본적으로 LRU 위치에 Insertion 하고 일정확률로 MRU 위치에 insertion 하는 방법이다. 여기서도 Set Dueling 을 통해서 32개의 set을 각각 LRU, BI..
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 에 의해 evict..
CMP 환경에서 LLC(여기서는 L2 cache) 를 private 로 하면 complexity, isolation 등의 장점을 가진다. 반면, shared 로 하면 cache resources를 좀 더 효율적으로 사용할 수 있다. Cooperative caching 은 이러한 private, shared cache의 장점을 살려 off-chip memory access를 줄여 average memory latency를 줄이고자 하는 방법을 제안한다. 기본적으로 private L2 cache를 사용하되, local 에서 eviction 시켜야 할경우 전체 cache 에서 eviction 하는게 아니라, 다른 processor의 cache에 여유가 있다면 그곳으로 옮겨 놓는 방식으로 나중에 referenc..
LRU 를 사용하는 shared cache에서는 cache를 많이 요구하는 application 에게 더 많은 cache 를 사용하게 되는 demand based 방식이라 할 수 있다. 하지만 cache를 demand 에 따라 많이 할당하는것이 그에 따라 얻을 수 있는 이익과 correlation이 있다고 볼 수 는 없다. (e.g. streaming application). 이 논문은 demand based 가 아니라 cache를 더 줬을때 많이 이익을 보는 application 에게 cache를 더 할당하자는(utility-based) 방식을 제안한다. ATD(Auxiliary Tag Directory)를 사용하여 LRU 알고리즘의 stack property를 사용하여 MRC를 구하고 utility ..
기존의 cache partitioning algorithm들은 모두 LRU를 쓴다고 가정하고 LRU의 특징(stack property, ...) 을 사용한다. 하지만 실제로 LRU를 그대로 구현하기에는 cost가 너무커서 pseudo-LRU(NRU(not recently used) or BT(binary tree))를 구현하는데 이 알고리즘들은 LRU와 달라서 기존의 cache partitioning algorithm을 그대로 적용시킬 수 없다. 그래서 이 paper는 partitioning 할 way를 결정하는 profiling logic을 pseudo-LRU에 적용할수 있도록 하는데...
LLC(Last Level Cache)는 temporal locality가 낮다는 특징에서 출발하여, LLC에서는 temporal locality에 좋은 성능을 보이는 LRU보다 다른 접근 방법이 필요하다는 관점에서 출발한다. cache set에 있는 block 들을 referenced list, non-referenced list 2개로 나눠서 predictor 를 통해 way 를 2개의 list로 나누고 replacement 가 일어날때 마다 predictor와 현재 list에 있는 way의 수를 비교해서 predictor보다 많은 way를 가지는 list에서 victim 을 선정한다. thrashing, scan resistant한 특성을 가지며 predictor를 통해 bypass 또한 가능하다고..