论文部分内容阅读
近年来,片上多核处理器成为主流,国产芯片龙芯也推出了四核处理器-龙芯3A。为了充分利用多核处理器的片上资源,使多核处理器的硬件资源转变为程序性能的提升,并行程序设计变得越来越重要。并行程序一直是程序设计的难点,从串行程序到并行程序的改造主要依靠对程序算法的分析和对程序行为的理解,同时也需要理解硬件的运行行为,因此需要一套性能分析工具来帮助程序员分析程序和硬件的行为。大多数现代处理器都集成了性能计数器(PMU),它能够收集应用程序、操作系统以及处理器的性能信息,这些信息可以帮助程序找到应用程序或者操作系统的热点,分析程序的运行瓶颈。本文基于龙芯3A平台的性能计数器(PMU)实现了一款性能分析工具TProfiler。本文在实现的过程中参考了已有的性能分析工具VTune、Oprofile以及Perf的实现原理,最终采用了单进程采样。主要的研究内容包括:(1)通过分析已有的性能调优工具Oprofile和Perf的代码,分析它们的实现原理以及各自的优缺点,然后结合龙芯3A平台的硬件特性,确定TProfiler的设计方案为单进程采样的方式。(2)设计TProfiler的软件架构,将其实现分为两个模块:前端和后端。其中前端运行于用户层,负责分析后端收集的性能信息,指导程序员优化代码;后端运行于内核层,负责控制性能计数器,收集程序运行过程中产生的硬件事件信息。(3)针对TProfiler的软件架构,分别实现前端和后端的功能。为了支持单进程采样,在内核中进程相关部分添加支持单进程采样的代码,在进程描述符中添加支持性能计数器上下文切换的数据结构,此外为了用户层和内核层的数据传递,还添加了文件映射的功能。最后借助编译技术并分析二进制文件将采样信息与程序代码对应起来产生对程序员有用的信息。本文基于龙芯3A平台的硬件性能计数器(PMU)实现了一个单进程采样的性能分析工具TProfiler,它实现了Oprofile的大部分功能,通过与Oprofile的对比实验,可以看到TProfiler的采样数据更加精确,采样范围也更加广泛。最后本文还提出了TProfiler需要改进的地方,并针对龙芯平台,提出其硬件计数器(PMU)需要加强和完善的地方,并初步提出了改进的手段。