论文部分内容阅读
内存已成为当前计算机系统性能的主要瓶颈之一,它的访问速度通常比处理器慢上数百倍。为缩小内存和处理器间的速度差异,cache得到了普遍应用。它对计算机性能的影响也随内存延时和程序内存需求的持续增加而日益增大。Cache工作的基础是程序对数据访问的局部性。现有的设计较少关注各级cache数据访问的本地局部性特征以及不同程序或者程序的不同阶段对数据的不同访问行为,因此,难以使cache充分适应多样化的局部性,限制了cache的性能。本文从新的角度分析了程序对各级cache的不同使用行为特征,提出了基于使用行为的cache设计和运行时cache性能优化。针对L1 cache,本文研究了它的缺失局部性。采用本文提出的短缺失周期作为程序阶段的标尺,本文观察到L1 cache的缺失主要来自少数几个泄漏组,并且,这些泄漏组具有良好的连续性和可预测性。基于上述现象,本文提出了使用泄漏组缓存结构来减少低关联度cache的缺失局部性。通过预测泄漏组的出现位置,泄漏组缓存于运行时动态地缓存这些泄漏组,在不影响访问延时的前提下减少冲突缺失。在L2 cache中,传统的LRU替换策略对大于cache容量的工作集表现极差,导致了大量较少重用块的出现,此时,可通过只在cache中保留一部分工作集来提高性能。现有解决方案通过过滤未重用块来实现这一目标,但是受到未重用块数量的严格限制,它们可能由于未重用块的缺乏而失效。本文提出了一种新的基于重用频率的过滤机制。该过滤机制通过预测和过滤掉较少重用块而不单单是未重用块,可以增加将程序工作集最频繁访问的部分容纳入cache的可能性,克服了现有的只过滤未重用块的机制的缺陷。本文还提出了较少重用过滤器(LRF)结构来实现上述机制。LRF利用重用频率预测器从数据访问流中准确识别出较少重用块。同时,基于本文观察到的较少重用块的生命周期较短的特性,LRF将过滤出的块放入过滤缓存以充分利用,防止它们引发额外的缺失。实验结果表明,LRF在不对L2 cache的替换策略做任何修改的情况下,可提高有不同使用行为的程序性能。为一个传统结构的512KB LRU管理的L2 cache增加包含512单元过滤缓存的LRF,平均能够降低27.5%的MPKI,缩小LRU和OPT间74.4%的性能差距。比较表明,在相同的硬件代价下,LRF在性能上优于最新的其它方案。