论文部分内容阅读
在多核共享缓存结构下,当多个应用程序并行执行时会竞争缓存,并且污染其它应用程序在缓存中的数据,导致系统的整体性能下降。研究发现,对共享缓存进行划分,可以有效改善缓存竞争和污染所带来的负面影响。静态缓存划分方法在应用程序执行前就划分好缓存,并且在程序执行过程中保持不变,这种方法简单但是缺乏灵活性,并且当应用程序的行为非常复杂时不一定能提升系统的性能;动态缓存划分方法根据程序运行时信息动态调整缓存的划分比例,但是难以确定缓存动态调整的最佳时机以及缓存分配的比例。针对上述问题,基于程序阶段行为的共享缓存动态划分方法根据程序的阶段变化确定缓存划分的时机,利用在线生成的缺失率曲线制定缓存分配的比例。通过对程序的阶段行为进行分类,只需对每一种不同的阶段行为计算一次缺失率曲线,由于程序的某些阶段行为在程序的执行过程中可能重复出现,这样做可以减少计算缺失率曲线的开销。当程序的阶段发生转变时,根据程序的缺失率曲线制定缓存划分策略,对程序的缓存进行重新分配,为缓存划分时机提供依据,避免对缓存进行盲目的调整。利用现代商业处理器上集成的硬件计数器单元跟踪程序的运行时特征信息,利用这些信息分析程序的阶段行为和计算缺失率曲线。为了平衡阶段行为分析的准确度和开销,采取粗细粒度结合的阶段行为分析方法,细粒度的对阶段行为进行分类,粗粒度的判断程序的阶段是否转变。基于阶段行为的共享缓存动态划分系统不需要依赖额外的硬件或者动态插桩系统的支持。采用SPEC CPU2006基准测试程序,分别测试了静态缓存划分系统和基于程序阶段行为的动态缓存划分系统的性能,结果表明,对于阶段行为颠簸并且对缓存大小敏感的程序,基于阶段行为的动态缓存划分系统与未划分缓存的系统的平均IPC相比,加速比最高达到1.08,能够有效提升系统的性能。