论文部分内容阅读
当前,单片多核处理器已经成为处理器体系结构发展的新趋势。一方面,多核处理器的计算资源更丰富,充分发掘程序中的并行性对于发挥多核处理器的计算潜能具有重要意义:另一方面,在多核处理器中,同一个芯片上的多个处理器核共享同一个片外访存端口,并且片上访存系统、功能部件和路由之间竞争芯片面积变得更加激烈,这使得片外访存带宽和计算速度的差距进一步拉大,访存带宽瓶颈更加严重。针对上述问题,本文从投机并行的任务划分(亦即可能并行区域识别)和多核处理器上的独立任务调度两个方面展开研究。主要贡献如下:
1.提出了一种基于区域平均执行时间和数据依赖信息的可能并行区域识别方法。本方法不仅可以如传统并行性分析方法那样识别出循环迭代间的细粒度并行性,而且也可以识别循坏体和函数调用点间的粗粒度并行性。本方法通过分析区域平均执行时间来识别能够带来并行收益的区域,并利用可能并行区域间动态数据依赖分析技术提高投机的成功率,有效地避免了投机导致程序性能下降的问题。该方法对SPEC CPU2006中的性能受限原因不是访存系统性能的部分测试用例在Intel和AMD多核处理器上平均有290%和250%的性能加速。
2.提出了一种以区域平均执行时间为标准的迭代式的区域执行时间分析算法,来识别程序中的能够带来并行收益的区域。以区域的平均执行时间为标准,可以更加准确地识别出区域的并行开销与并行收益的关系。而迭代执行的方式能够减少程序执行过程中捅桩库函数的执行次数从而降低捅桩库函数对分析结果精度的影响。
3.设计并实现了一个以程序区域为单位的动态数据依赖分析工具。该分析工具能够给出程序区域间详细的数据依赖信息,包括数据依赖关系的类型、数量以及导致数据依赖关系的程序变量等。
4.共同提出并实现了持续的粗粒度投机并行系统,可以充分利用处理器计算资源,并且可以消除并行执行中的异常情况,提高了并行系统性能的扩展性和稳定性。
5.提出了多核处理器上基于程序访存阶段的独立任务调度算法,根据程序执行过程中对片外访存带宽的需求以及处理器的有效片外访存带宽,对同时执行的多个独立任务进行调度,从而达到平衡地利用片外访存带宽的目的,提高了系统的吞吐率。该算法对SPEC CPU2006和SPEC CPU2000中的部分具有明显访存“波动性”特征的测试用例平均有3.3%和4.7%的吞吐率提高。
6.构造了一个基于循环体和函数调用点执行轨迹的程序访存阶段性分析工具,能够自动地把访存阶段的边界映射到程序源代码,并且能够识别同一个循环体或函数调用点的不同执行实例的访存行为的差别。