基于多核的动态剖析加速方法分析-analysis of dynamic parsing acceleration method based on multi - core.docxVIP

  • 6
  • 0
  • 约4.37万字
  • 约 55页
  • 2018-05-18 发布于上海
  • 举报

基于多核的动态剖析加速方法分析-analysis of dynamic parsing acceleration method based on multi - core.docx

基于多核的动态剖析加速方法分析-analysis of dynamic parsing acceleration method based on multi - core

1绪论本章首先简述多核环境下多线程程序动态剖析并行加速框架MT-Profiler的研究背景,接着概述国内外在程序行为动态分析和动态插桩加速方面的研究情况,然后对本课题的研究背景、目标及研究内容进行介绍,最后简要说明文章的结构安排。1.1问题提出随着处理器频率的不断提高,制造工艺尺寸的不断降低,处理器面临着功耗和发热控制瓶颈,使得很难单纯依靠提高处理器频率来提高处理器性能。处理器开始朝着多核多线程的方向发展,片上多处理器(ChipMultiprocessor)以及同时多线程技术(SimultaneousMulti-Threading)逐渐成为主流的计算平台。硬件支持的核心和线程数量的不断增加,使得多线程程序设计逐渐成为主流编程模型[1],但由于多线程程序设计固有的复杂性,例如任务分解、死锁、竞争以及多线程程序执行的不确定性,使得设计编写高效的多线程程序是件艰巨的工作,这就急需能对多线程程序进行高效剖析的方法。另一方面,软件工程思想和软件设计技术的不断发展,为提高设计灵活性和系统的动态可配置性,通常引人越来越多的间接层次,例如虚拟机、中间件以及OPENMP之类的编程模型,间接层次的引入简化了应用程序的开发,但也引入了抽象和复杂性,因此带来了一定的开销。软件开发人员需要更高效的、更透明的和易用的调试和分析工具,来了解软件的动态行为和发现软件的缺陷及性能瓶颈,保证软件的可靠性和缩短软件开发和测试过程。此外,理解程序的动态行为特征对于体系结构设计和编译器优化也具有非常重要的作用。体系结构设计者经常需要利用程序的动态行为信息优化系统的体系结构设计和系统仿真及模拟;编译器设计者可以利用程序执行时信息优化代码生成和自动并行化。目前,获取程序动态行为特征信息主要分为以下几类方法:首先,基于硬件计数器(HardwarePerformanceCounter)的剖析技术是获取程序动态特征信息的常用方法,它通过采样硬件计数器获取程序的性能信息。在剖析过程中指定监控特定的硬件事件,当硬件事件触发时,执行相应的中断处理函数获取程序性能信息。典型的工具有Oprofile[2]等。基于硬件计数器的剖析技术,通常开销低但收集的数据比较粗糙,也难以获取trace和基本块级别的信息,而且由于中断延迟等因素,该方法分析出来的某些信息往往有一定的偏差,易使人误解系统的性能。此外,该方法不具有可移植性,它只能在拥有性能寄存器的现代处理器中实现;其次,仿真和模拟也是一种获取程序动态行为特征的重要方法。通过将程序在仿真器或模拟器上执行,仿真器或模拟器可以观察到程序执行时的所有信息。典型的模拟器有SimpleScalar[3],它提供的工具sim-profile,能收集程序在模拟器上执行时的指令类型、分支预测、符号信息和内存访问等信息。通过仿真和模拟的方法,虽然能获得详尽的运行时信息,但是跨指令集的解释执行以及对I/O操作的仿真导致在模拟器或仿真器上执行程序的开销非常的高。最后,动态插桩(DynamicInstrumentation)技术是获取程序动态特征信息的最常用方法。它在程序执行过程中动态插入额外的代码来获取和分析程序的动态特征信息,例如Pin[4]、DynamoRIO[5]和Valgrind[6]等工具。由于动态插桩的运行时扩展程序的能力,基于动态插装可以构建cache建模,容错分析,内存泄露以及覆盖测试等工具。动态插桩的开销通常比仿真和模拟的方法要低很多,但是开销依然较高。主流动态插桩工具,在基本块计数下的性能下降2.5倍以上[4-6]。如果对程序做复杂的剖析,性能会下降的更多,例如在进行硬件cache模拟时,Valgrind通常比本地(native)执行时慢上100多倍[7]。昂贵的开销通常使得对长时间运行的程序进行复杂分析难以实现,同时也难以满足上述对程序动态行为分析的需求。针对动态插桩分析程序动态行为开销大与程序动态行为日益复杂的矛盾。国内外的企业和科研单位进行了大量的研究[8-10],这些工作大多基于采样[11-13]或基于硬件计数器[14],减少分析代码插入的数量,并在一定程度上使得程序行为动态剖析慢这一问题得到了缓解[15-17]。另一方面,近年来多核和众核处理器不断发展,硬件提供了越来越多的计算资源,利用闲置计算资源对程序进行自动并行化程序逐渐成为了研究热点。程序的自动并行化技术不仅能大大降低程序员的工作量,而且能提高多核资源的利用率。目前的自动并行化研究主要集中在线程级推测执行(ThreadLevelSpeculation)技术上[18-19],研究利用多核资源对循环和递归分支进行推测执行,实现串行程序的自动并行化。这就为动态插桩的加速研究提供了新的思路。目前,如何充分利用多核平台的计算资源来提高动态插桩和程序行为分析的运行速度成为了一个亟待解决的热点

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档