cache性能分析(cache性能提高了多少)
导语:计算机性能探索--cache性能研究
之前的文章中,我们介绍了在计算机体系结构学术界广泛使用的一款模拟器SimpleScalar,包括各种模拟器,以及模拟器的运行,提到了影响cache性能的几个方面:容量、块大小、相关度、替换算法。
我们已经通过两篇文章,分别探讨了cache容量和块大小对cache性能的影响,并给出了相应的分析。今天我们继续探索影响Cache性能的另外一个重要的方面。
Cache关联度对性能的影响整个实验的具体做法是:在SimpleScalar的配置过程中,保持容量大小、cache块大小、替换策略等参数不变,改变关联度从1、2、4到256变化,执行程序,得到在不同条件之下的,失效率数据。
整个过程的参数变化如下表所示:
表一 参数变化
经过测试,我们得到不同关联度下,失效率的变化情况。具体曲线如下图所示,曲线代表在不同关联度条件下,失效率的变化趋势情况。
图一 Cache相联度对失效率影响
结果分析从图中曲线可以看出,关联度对在组相联Cache中的cache性能有着十分重要的影响,cache中冲突失效,出现的概率与关联度有着直接的负相关关系。也就是说,当关联度呈现上升趋势时,块冲突概率呈现出下降趋势,即Cache的失效率就会下降。
那么何为块冲突?当cache中的某块位置已被占用时,如果此时,有一个主存块试图进入被占用的这块位置时,称此时发生了块冲突。理论上讲,全相连时候,失效率应该为最低值,直接映射时,失效率应该为最高值。
虽然理论上讲,随着关联度的增加,失效率呈现下降确实,但是实验证明,随着关联度的增加,cache的失效率下降到某个值以后,会停止下降。并且,随着关联度的增加,系统的复杂性会跟着增加,所以产生负收益。
回到图中的曲线,从图中曲线可知,在16K byte容量下,关联度的变化范围从1到256,因为容量保持恒定,所以相应的组数从512到2。从实验结果看来,当相联度为1、2、4时,失效率曲线随着相联度的增加而呈现出下降趋势。但是当关联度超过4继续增加时,失效率停止继续降低,开始稳定在一个范围内。
所以实验结果,验证了我们之前的理论分析,即关联度对cache性能的提升,在一个范围内有效,当超出这个范围时候,不仅不能起到促进作用,反而出现负面影响。
小结今天的文章中,我们借助一个小实验,论证了关联度对cache性能的影响。以后的文章中,我们将继续探讨替换策略对cache性能的影响,也欢迎大家和我进行讨论。
参考资料:[1]SimpleScalar模拟器使用指南
本文内容由小春整理编辑!