CARL: Compiler Assigned Reference Leasing

CARL: Compiler Assigned Reference Leasing
复制标题

DOI:
10.1145/3498730
复制
发表时间:
2022-03
期刊:
ACM Transactions on Architecture and Code Optimization (TACO)
影响因子:
--
通讯作者:
C. Ding;Dong Chen;Fangzhou Liu;Ben Reber;Wesley Smith
C. Ding;Dong Chen;Fangzhou Liu;Ben Reber;Wesley Smith
中科院分区:
其他
文献类型:
--
作者:
C. Ding;Dong Chen;Fangzhou Liu;Ben Reber;Wesley Smith

文献摘要

被引文献

相似文献

数据移动是一个常见的性能瓶颈,其主要的补救措施是缓存。传统的缓存管理对工作负载是透明的:应该保留在缓存中的数据仅由最近信息确定,而程序信息,即,将来的数据重用不被传送到该高速缓存。这在名为Lease Cache的新缓存设计中有所改变。程序控制通过一种名为CARL(英语:CARL)的编译器技术传递给租约缓存。该技术收集每个引用的重用间隔分布,并使用它来计算租约值并将租约值分配给每个引用。在这篇文章中,我们证明了CARL在一定的统计假设下是最优的。基于此最优性,我们证明了错过曲线的凸性,这是有用的优化共享缓存,子分区单调性,这简化了租赁编译。我们使用PolyBench的科学内核来评估潜力,并表明编译器在程序代码中插入多达34个租约,与最佳固定大小缓存策略相比,实现了类似或更好的缓存利用率(在可变大小缓存中),这是自动缓存无法实现的,但现在在所有测试程序和大多数缓存大小的缓存编程潜力之内。
Data movement is a common performance bottleneck, and its chief remedy is caching. Traditional cache management is transparent to the workload: data that should be kept in cache are determined by the recency information only, while the program information, i.e., future data reuses, is not communicated to the cache. This has changed in a new cache design named Lease Cache. The program control is passed to the lease cache by a compiler technique called Compiler Assigned Reference Lease (CARL). This technique collects the reuse interval distribution for each reference and uses it to compute and assign the lease value to each reference. In this article, we prove that CARL is optimal under certain statistical assumptions. Based on this optimality, we prove miss curve convexity, which is useful for optimizing shared cache, and sub-partitioning monotonicity, which simplifies lease compilation. We evaluate the potential using scientific kernels from PolyBench and show that compiler insertions of up to 34 leases in program code achieve similar or better cache utilization (in variable size cache) than the optimal fixed-size caching policy, which has been unattainable with automatic caching but now within the potential of cache programming for all tested programs and most cache sizes.