论文部分内容阅读
模拟器作为计算机体系结构研究中的重要工具,已广泛应用于体系结构研究的方方面面。虽然模拟器具有使用灵活,成本低廉的优点,但由于通过软件来模拟硬件行为,模拟器的执行速度与被模拟的硬件相比极其缓慢。这种速度上的差距极大影响了基于模拟器开展的各种工作的可行性和效率。因此,如何提升模拟器的运行速度一直是体系结构领域研究的热点之一。在诸多模拟优化技术中,采样模拟技术因为实现简单,成效明显成为了最常用的模拟加速手段之一。采样模拟的原理是根据程序执行段中由于循环和递归导致的周期性行为选取能够代表整个测试程序执行段的小部分特征样本段进行模拟,然后利用模拟样本得到的结果计算推导整个程序执行段的结果。由于采样模拟使用模拟获得的局部结果推断整个程序的结果,因此采样模拟不可避免地会引入误差。因此如何在保证采样精度的前提下尽可能的减少模拟所需的时间是采样模拟的主要问题。已有的采样模拟的相关研究主要关注于设计刻画样本的特征指标和如何根据这些指标选取合适的样本,但对于设计采样模拟中的另一个重要元素,样本粒度却很少涉及。大部分研究者直觉地将最有可能直接减少模拟样本长度的细粒度选作设计的基本的参数,但很少有研究探索粗粒度的采样模拟设计,以及试图对不同粒度的采样模拟设计进行比较,对于适合刻画粗粒度样本的特征指标也属于未知领域。但是本文在对采样模拟技术进行全面分析之后发现粗粒度的采样模拟实际上是比细粒度更好的设计方案。其优点主要体现在:(?)适当的粗粒度样本划分可以在保留必要信息量的前提下消除特征数据中不必要的噪音以及简化特征分析和样本选取的过程。从而减少特征样本的个数,并使选取的样本更有可能靠近程序的开始部分,由此可以显著减少用于样本之间过渡的功能模拟所需要的时间。由于功能模拟在以往细粒度采样模拟过程中占据绝大部分模拟时间,所以总体的模拟时间会随着功能模拟时间的大幅减少而显著减少。(?)使用粗粒度选取样本之后,为分级采样创造了机会。可以先通过对整个程序进行粗粒度采样去除程序行为中的噪声,随后使用细粒度采样方法对选出的粗粒度样本进行进一步采样。分级采样中的细粒度采样方法只对粗粒度样本进行分析,而不是整个程序。由此简化了特征分析过程,使得所需的细粒度样本总数通常少于单纯使用细粒度采样方法所需的样本总数,从而进一步减少模拟所需要的时间。根据以上发现,本文设计并实现了一种粗粒度采样模拟方法。该方法对测试程序执行段进行粗粒度的样本划分,并结合已有的指令流相关的特征指标和本文新引入的数据流相关的特征指标,对候选样本进行分析并选取合适的模拟样本。实验表明,本文所设计的粗粒度采样模拟方法在获得与主流的采样模拟技术相当精度的前提下,显著减少了模拟所需的时间(在使用SPEC2000基准程序的测试中,相对于以10M定长指令数划分样本边界的SimPoint的平均加速比为4.11,使用分级采样之后平均加速比达到8.17)。