论文部分内容阅读
随着高性能计算机的发展,片上多核日渐成为高性能计算的发展趋势。多核系统片上集成的核数也越来越多,由于常见的多核系统共享片上最后一级Cache,因此,片上最后一级共享Cache容量也越来越大。众所周知,片上Cache是计算机存储系统的层次结构中,介于中央处理器和主存储器之间的高速小容量存储器。它是存在于主存与CPU之间的一级存储器,接近于CPU的速度,主要用来缓解CPU和内存的访问速度差异。随着多核下应用工作集的增加,CPU对访存数据的需求量的加大,使得当前的Cache替换算法与最优替换算法之间的差距明显加大,替换算法成为管理最后一级共享Cache的研究热点。命中率是Cache替换算法有效性的最重要的评价指标,因此如何提高命中率,有效利用Cache空间是提高计算性能的重要因素。 本文对二级Cache替换算法以及当前日渐流行的多核系统研究现状进行分析发现,传统的单核系统多使用最近最少使用替换算法(Least RecentlyUsed,LRU),LRU替换算法的理论依据是程序的局部性原理:即CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中。因此,在每次选择逐出块时,通常选择最近最少使用的那个块调出内存,这已经成为业界的一个标准。但是实验证明,LRU替换算法在多核环境下,与最优替换算法之间的性能差距非常大。多核共享二级Cache对替换算法带来更多的要求,尤其二级相联度越来越高,多核下应用的工作集加大,以及一级Cache对数据的过滤,在一定程度上削弱了对二级Cache数据访问的局部性,给LRU替换算法的性能带来一系列的不良影响。 针对以上情况,本文结合多核系统的特点以及现有的单核环境下的替换算法进行研究,提出了基于平均划分的多核共享Cache替换算法FLRU-A(Frequencybased LRU with Partition)以及基于块粒度动态划分的FLRU-B替换算法。FLRU-A算法考虑到多核竞争访问二级Cache的现状,将二级Cache进行平均划分,在此基础上使用基于频率的LRU改进替换算法,选择最优的Cache替换块,达到降低缺失率的目的。但由于静态划分不能适应应用程序的访问变化,同时列划分粒度较粗,不能充分的利用Cache空间,本文又提出了基于动态块粒度划分的FLRU-B(Frequency based LRU with Block partition)替换算法。在平均划分的基础上,通过不同核之间的Cache块窃取, Cache使用率高的核可以窃取Cache使用率低的核的Cache块,同时,当Cache使用率低的核变为Cache使用高的核时,第一时间收回自己的Cache块,从而达到充分的考虑各个核之间的访问特点,实现动态的块粒度划分,进一步充分利用Cache空间的目的。关键是因为两种算法增加了复杂性的,本文又对两种算法进行了功耗的计算和对比,发现两种算法在降低缺失率的同时,并没有明显的增加能量消耗,从而达到了性能与功耗之间的平衡。实验结果表明,本文提出的FLRU-A算法相比传统的LRU算法缺失率降低了26.59%,IPC则提升了13.59%。本文进一步改进的块粒度动态划分下基于频率的FLUR-B算法相比较传统的LRU算法性能提高更大,缺失率降低了33.72%,而IPC则提升了16.59%。两种算法在性能提升的同时,并没有明显的增加能量的消耗。因此本文提出的动态块粒度划分下基于频率的FLRU-B替换算法在提高处理器性能方面有很大的提高。