Because of the increasing number of cores in Graphics Processing Units(GPU), the important bottleneck of performance in GPUs is coming from memory bandwidth. To supplement this problem, GPU vendors recently have included caches on GPU. However, it is not always helpful for the performance. When cache miss rate is high, adding caches make the speed is slower than before. There was a paper which proposes compile time analysis of memory access pattern to improve cache efficiency, but it can’t apply to the programs that the efficiency of caches is dynamically changed or the memory access pattern can’t be analyzed on compile-time because it depends on the input data. This paper analyzes the impact of adding caches and proposes the runtime analysis to prevent bad effect which cannot be solved with compile-time analysis from caches. Experiments on GPGPU-sim show that our runtime analysis predicts when caches would help or hurt performance. Compared to always passively turning caches on, our method can increase the average benefits of caches from 6% to 13% for applications which is sensitive to caching.
GPU에서 core개수가 증가하여서 memory bandwidth때문에 병목현상이 발생하고 있다. 이 문제를 해결하기 위해서 NVIDIA에서는 최근 GPU에 cache를 추가하였다. 그러나 cache가 언제나 성능에 도움을 주는것은 아니다. cache miss rate이 과하게 높을때는 오히려 성능을 저하시키는 현상이 발생한다. 이런 문제를 해결하기 위해서 이전에 compile-time 분석을 통해서 cache를 효율적으로 사용하고자 하는 연구가 있었다. 그렇지만 메모리 접근 패턴이 동적으로 변하는 환경에서는 compile-time에는 제대로 분석할 수 없는 경우가 존재한다. 이 논문에서는 gpu에서 cache의 추가가 미치는 영향에 대해서 분석하고 compile-time때 해결 할 수 없었던 문제를 run-time 분석을 통하여 해결하는 방법을 제안한다. run-time분석을 통해서 cache가 효율적일때는 사용 하도록하고 비효율적이라면 cache 사용을 중지하도록 한다. GPGPU-sim에서 실험한 결과 항상 cache를 사용하는것보다 7%정도 나은 성능을 확인 할 수 있었다.