论文部分内容阅读
周期行为分析方法是通过比较程序不同程序段的特征信息分析程序相似性的方法。由于划分到同一周期行为的程序片段具有相似性能特性和资源需求,因此,周期行为分析已广泛应用于各种动态优化系统中,如动态缓存重配置、动态缓存预取、基于反馈信息的优化、动态能耗优化、模拟器加速和降低软件调试检测开销等。在周期行为分析过程中,周期行为的粒度作为影响周期预测准确性的一个重要因素,之前却并未有专门针对它的研究。大部分之前的周期行为分析方法都是基于细粒度的,这些方法记录并不断更新程序执行过程中的周期行为信息并通过这些信息来预测未来周期行为。这种方式只考虑了最近的局部周期行为而忽略了全局的周期行为,导致预测结果会由于局部的周期行为变化而受到局部噪声的影响,从而降低预测的精确性。本文首次对多层次地进行程序周期行为分析的可能性进行了研究,这种方法结合了细粒度周期行为分析和粗粒度周期行为分析方法来提高预测精确度。一个粗粒度程序段通常是由几十个甚至上百个细粒度的程序段组成的。我们的研究发现:●属于同一种周期行为的不同粗粒度程序段之间进行比较时,它们所包含的细粒度周期行为的组成和分布情况具有较高的相似性和稳定性;●当一个粗粒度程序段中包含的前若干个细粒度程序段所属的周期行为已知时,就能比较精确地判断出当前粗粒度程序段所属的周期行为。基于这两个发现,我们设计并实现了多层次程序周期行为分析(MLPA)方法。在MLPA方法中,粗粒度程序段周期行为的确定是基于该程序段中一开始执行到的若干个细粒度程序段。该粗粒度程序段中余下的细粒度程序段的周期行为通过之前记录的同一种粗粒度周期行为中细粒度周期行为的序列来进行预测。该方法与纯粹基于细粒度的周期行为分析方法相比的主要优点在于考虑了程序全面的周期行为,从而克服了仅考虑最近的局部周期行为信息带来的片面性。实验结果表明这种方法可以比较明显地提高周期行为预测的精确性。相对于Markov预测方法,MLPA对于下一周期预测、周期改变预测和周期长度预测分别提高了17%、42%和32%的预测精度,而只增加了2%时间开销和40%(约360字节)的空间开销。为了验证这种设计方法的有效性,首先我们将MLPA应用到动态缓存重配置系统中。该系统可以动态调节数据缓存的大小以降低能源消耗和访问时间。实验数据表明,和细粒度方法相比,MLPA能将程序执行过程中使用的平均缓存大小降低15%。其次,我们将MLPA应用到了一个基于采样的模拟器加速系统中。实验结果是在模拟结果的精确性相当的情况下,MLPA策略能更多地缩短模拟实践。与10M SimPoint相比,使用MLPA策略能达到14.0倍(15小时vs.125小时)的加速。