剖分信息收集系统及其收集方法.pdf

上传人:54 文档编号:1001428 上传时间:2018-03-24 格式:PDF 页数:14 大小:649.13KB
返回 下载 相关 举报
摘要
申请专利号:

CN200910308761.2

申请日:

2009.10.26

公开号:

CN101673214A

公开日:

2010.03.17

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 9/45申请日:20091026|||公开

IPC分类号:

G06F9/45

主分类号:

G06F9/45

申请人:

上海交通大学

发明人:

管海兵; 梁阿磊; 杨辉兵; 刘 博

地址:

200240上海市闵行区东川路800号

优先权:

专利代理机构:

上海交达专利事务所

代理人:

王锡麟;王桂忠

PDF下载: PDF下载
内容摘要

一种计算机优化处理技术领域的剖分信息收集系统及其收集方法,包括:内存映像加载模块、查找模块、目标缓存模块、中间指令目标基本块模块、目标指令目标基本块模块、链接目标基本块模块、上下文切换模块、优化模块、计数器映射表、先进先出缓冲区模块和剖分模块。本发明改进了传统收集剖分信息的方法,与现有技术相比通过在源可执行程序中的各个目标基本块中插入一条目标体系机构的存储指令和维护一张计数器映射表来收集剖分信息,使用两个硬件模块来组成该系统的硬件部分,以较少硬件开销的软硬件协同设计方法来完成整个剖分系统的剖分

权利要求书

1.  一种剖分信息收集系统,其特征在于,包括:内存映像加载模块、查找模块、目标缓存模块、中间指令目标基本块模块、目标指令目标基本块模块、链接目标基本块模块、上下文切换模块、优化模块、计数器映射表、先进先出缓冲区模块和剖分模块,其中:内存映像加载模块与查找模块相连接以传输可执行二进制源程序中目标基本块的起始地址信息,查找模块与上下文切换模块和中间指令目标基本块模块相连接以传输翻译判断信息,中间指令块模块与目标指令目标基本块模块相连接以传输目标基本块信息,目标指令目标基本块模块分别与链接目标基本块模块和先进先出缓冲区模块相连接以传输目标基本块首地址信息,链接目标基本块模块与上下文切换模块相连接以传输首地址链信息,上下文切换模块与目标缓存模块相连接以传输目标存储地址信息,优化模块与目标缓存和计数器映射表相连接传输待优化处理信息,先进先出缓冲区模块与剖分模块相连接以传输源程序计数器值信息,剖分模块与计数器映射表相连接以传输源程序计数器值信息。

2.
  根据权利要求1所述的剖分信息收集系统,其特征是,所述的翻译判断信息中存储一位判断值,该判断值代表了与源程序计数器值对应的目标指令目标基本块是否已经翻译的信息。

3.
  根据权利要求1所述的剖分信息收集系统,其特征是,所述的链接目标基本块模块收到目标基本块首地址信息后将目标基本块首地址信息中的首地址链接生成首地址链信息。

4.
  一种根据权利要求1至3中任一所述的剖分信息收集系统的收集方法,其特征在于,包括以下步骤:
第一步、对源体系结构可执行程序进行内存映像加载处理,然后以目标基本块为单位划分加载后的源体系结构可执行程序,生成目标基本块,在每个目标基本块的最后两条指令之间插入一条目标体系结构精简指令级微处理器的存储指令;
第二步、分配一块内存区域存放一个计数器映射表,通过动态二进制翻译器传递所述计数器映射表的首地址值至先进先出缓冲区模块,通过先进先出缓冲区模块捕获该计数器映射表的首地址,然后通过剖分模块从先进先出缓冲区模块中取到此计数器映射表的首地址;
第三步、依次运行每一个目标基本块及其对应的储存指令,此存储指令触发先进先出缓冲区模块,把每个目标基本块的源体系结构可执行程序的计数器首地址值存储在先进先出缓冲区模块中,剖分模块从缓冲区模块中取出所述源体系结构可执行程序的计数器值作为剖分模块的输入;
第四步、剖分模块从先进先出缓冲区模块中获得所述源体系结构可执行程序的计数器值,把此计数器值存入剖分模块里的比较模块中的第一寄存器中,同时,根据哈希函数从本地内存的计数器映射表装载源体系结构程序计数器值存入剖分模块里的比较模块中第二寄存器中,然后对第一寄存器和第二寄存器中的值进行冲突比较。

5.
  根据权利要求4中任一所述的剖分信息收集系统的收集方法,其特征是,所述的目标基本块是指:以一条跳转指令指向地址的指令为开始,以下一条跳转指令为结束的一段源体系结构可执行程序的代码。

6.
  根据权利要求4中任一所述的剖分信息收集系统的收集方法,其特征是,所述的计数器映射表包括:源体系结构程序计数器和传统计数器,其中:源体系结构程序计数器项是存放每个目标基本块的源体系结构程序计数器首地址值的项,传统计数器项存放的是对应源体系结构程序计数器值的计数器值。

7.
  根据权利要求4中任一所述的剖分信息收集系统的收集方法,其特征是,所述的本地内存是指:通用计算机上用以存储先进先出缓冲区模块和剖分模块的物理内存。

8.
  根据权利要求4中任一所述的剖分信息收集系统的收集方法,其特征是,所述的冲突比较是指:当比较的结果相等,就更新本地内存的计数器值;当比较的结果不相等,再判断是否有冲突发生:当发生冲突,则进行冲突处理;当没发生冲突,把源体系结构程序计数器值写入相应的本地内存中去并更新对应的计数器值。

9.
  根据权利要求8中任一所述的剖分信息收集系统的收集方法,其特征是,所述的冲突处理是指:把第一寄存器中的值写入到第二寄存器对应的本地内存中的下一个后16位值不相等的内存地址中。

10.
  根据权利要求8中任一所述的剖分信息收集系统的收集方法,其特征是,所述的更新是指:如果是第一次更新,则把1写入相应的寄存器映射表的计数器。项中,如果不是第一次更新,则对原寄存器映射表的计数器项的值加1。

说明书

剖分信息收集系统及其收集方法
技术领域
本发明涉及的是一种计算机优化处理技术领域的系统及方法,具体是一种剖分信息收集系统及其收集方法。
背景技术
Profile(程序概要)信息是通过profiling(剖分)过程来收集的,剖分过程就是对正在运行的程序收集特定的指令和数据,然后统计成剖分信息,这些统计好的剖分信息输入给程序作为代码优化之用。总的来说,优化工作之所以可以依赖剖分过程工作,是因为程序的运行是具有可预测性的,程序的特点就决定了它过去的运行行为往往能影响程序将来运行的行为,所以可以指导程序的优化。
传统上,代码的剖分过程被用作为提供反馈信息给编译程序的一种方法。编译器首先分解源程序得到控制流图,分析程序的各个方面然后插入探测器收集剖分信息。所谓探测器就是在内存中把程序执行的信息记录到剖分日志中的一段短代码序列,比如探测器可以安置在一些跳转指令(如BRANCH分支指令)处记录下跳转指令的输出结果。剖分日志可以离线分析后把结果返回给编译器,编译器使用这些信息产生优化代码。当使用这种传统的方式时,程序可以被完整的分析,剖分探测器也可以根据程序的结构放置到最佳的位置,但这种剖分收集方法并不适合于动态优化过程,和这种传统的静态优化方法不同,程序动态优化开始时程序结构自身的结构并不清楚,因为不可能在程序中到处插入探测器,这就意味着优化工作必须以部分已经执行的程序的统计信息为基础。
收集剖分信息有多种方法,但常用下面两种方法来收集剖分信息:第一种是通过探测(instrumentation)的方式,基于探测的剖分信息收集主要是针对特定的和程序有关的活动或者计算该活动中所占的比例,比如一个目标基本块被执行的次数或一个条件跳转指令执行和没有执行次数之间的对比,而且这些活动是可以同时被记录的,记录的实行可以通过在代码中插入探测指令来收集数据。第二种是通过样本收集,使用这种方式收集剖分信息的程序在运行中可以不需要对程序进行任何修改,只需要在固定的或任意的时间间隔中,通过中断的方式来捕捉和程序有关的活动,比如程序的跳转指令执行时程序计数器的值,然后通过分析工具来分析收集到的信息就可以发现程序中存在的热区。这种方法中收集到的剖分信息具有不准确性的特点。
因为这两种方法各有特点和使用场合,因此使用这两种方法收集剖分信息时,常常要权衡一下两者的利弊。使用探测方法可以在一个相对较短的时间内收集到一定数量的剖分信息,但由于通常借助于软件实现,所以当收集剖分信息时会减慢程序的运行速度;样本收集只会轻微地减慢程序的运行,但由于收集剖分信息是在程序的中断间隙,所以通常需要更长的时间。总的来说,动态优化系统常常使用探测方法来收集剖分,因为它可以使得整个优化过程由慢到快,把轻度优化的代码优化成高度优化的代码;样本收集方法对那些需要运行较长时间程序,或者已经有过初步优化但仍需要进一步优化的程序非常有效。
在收集剖分信息的时候,要权衡由此带来的开销。对于使用传统的静态离线优化方法,只需要一次开销。但对于使用动态优化方法来说,每运行一次就需要一次开销,因为剖分信息是在程序的执行过程中收集的。传统的探测方式要在程序中插入一组短的探测代码序列,在动态二进制翻译过程中,这段代码会被多次的执行,对动态二进制翻译器的整体性能有很大影响。
经过对现有文献的检索发现,Anderson等人在“Proceedings of the 16th ACMSymposium on Operating Systems Principles”(“第16届计算机操作系统原则研讨会”),1997年10月,P357-390撰文“Continuous Profiling:Where Have ALL theCycles Gone?”(“连续的剖分:所有的时钟周期都到哪里去了”),该文中总结了很多种剖分系统的性能、开销和应用场景和准确级别,其中九个使用纯软件收集剖分信息的系统导致的开销都大于整个系统开销的20%。这些系统可以在时钟周期级别和指令级别收集剖分信息并且都有较高的准确性。还有五个系统使用抽样方法收集剖分信息导致的开销小于20%。但是由于收集剖分信息是在程序的中断间隙,所以通常需要更长的时间。同时,它们的准确性也得不到保证。一般来说,对块或边剖分和路径剖分,使用探测代码来得到剖分信息会分别导致30%和40%的开销。在Itanium(安腾)处理器上,对SPECint95(95版整形基准测试程序)基准程序,Intel(英特尔)研究人员的实验显示基于目标基本块剖分的开销范围从14%到42%。
但是该现有技术中,使用探测方法收集剖分信息的系统虽然可以保证一定的准确性,但是由于添加的探测代码而导致的很高的开销不可避免。而使用抽样的方法收集剖分信息的系统虽然导致的开销很小,但是这些系统需要很长的时间和具有不准确性的特点。
发明内容
本发明针对现有技术存在的上述不足,提供一种剖分信息收集系统及其收集方法,以很小的开销收集准确的剖分信息。
本发明是通过以下技术方案实现的:
本发明涉及剖分信息收集系统,包括:内存映像加载模块、查找模块、目标缓存模块、中间指令目标基本块模块、目标指令目标基本块模块、链接目标基本块模块、上下文切换模块、优化模块、计数器映射表、先进先出缓冲区模块和剖分模块,其中:内存映像加载模块与查找模块相连接以传输可执行二进制源程序中目标基本块的起始地址信息,查找模块与上下文切换模块和中间指令目标基本块模块相连接以传输翻译判断信息,中间指令块模块与目标指令目标基本块模块相连接以传输目标基本块信息,目标指令目标基本块模块分别与链接目标基本块模块和先进先出缓冲区模块相连接以传输目标基本块首地址信息,链接目标基本块模块与上下文切换模块相连接以传输首地址链信息,上下文切换模块与目标缓存模块相连接以传输目标存储地址信息,优化模块与目标缓存和计数器映射表相连接传输待优化处理信息,先进先出缓冲区模块与剖分模块相连接以传输源程序计数器值信息,剖分模块与计数器映射表相连接以传输源程序计数器值信息。
所述的翻译判断信息中存储一位判断值,该判断值代表了与源程序计数器值对应的目标指令目标基本块是否已经翻译的信息
所述的链接目标基本块模块收到目标基本块首地址信息后将目标基本块首地址信息中的首地址链接生成首地址链信息。
本发明涉及上述剖分信息收集系统的收集方法,包括以下步骤:
第一步、对源体系结构可执行程序进行内存映像加载处理,然后以目标基本块为单位划分加载后的源体系结构可执行程序,生成目标基本块,在每个目标基本块的最后两条指令之间插入一条目标体系结构精简指令级微处理器的存储指令;
所述的目标基本块是指:以一条跳转指令指向地址的指令为开始,以下一条跳转指令为结束的一段源体系结构可执行程序的代码。
第二步、分配一块内存区域存放一个计数器映射表,通过动态二进制翻译器传递所述计数器映射表的首地址值至先进先出缓冲区模块,通过先进先出缓冲区模块捕获该计数器映射表的首地址,然后通过剖分模块从先进先出缓冲区模块中取到此计数器映射表的首地址;
所述的计数器映射表包括:源体系结构程序计数器和传统计数器,其中:源体系结构程序计数器项是存放每个目标基本块的源体系结构程序计数器首地址值的项,传统计数器项存放的是对应源体系结构程序计数器值的计数器值。
第三步、依次运行每一个目标基本块及其对应的储存指令,此存储指令触发先进先出缓冲区模块,把每个目标基本块的源体系结构可执行程序的计数器首地址值存储在先进先出缓冲区模块中,剖分模块从缓冲区模块中取出所述源体系结构可执行程序的计数器值作为剖分模块的输入;
第四步、剖分模块从先进先出缓冲区模块中获得所述源体系结构可执行程序的计数器值,把此计数器值存入剖分模块里的比较模块中的第一寄存器中,同时,根据哈希函数从本地内存的计数器映射表装载源体系结构程序计数器值存入剖分模块里的比较模块中第二寄存器中,然后对第一寄存器和第二寄存器中的值进行冲突比较;
所述的本地内存是指:通用计算机上用以存储先进先出缓冲区模块和剖分模块的物理内存。
所述的冲突比较是指:当比较的结果相等,就更新本地内存的计数器值;当比较的结果不相等,再判断是否有冲突发生:当发生冲突,则进行冲突处理;当没发生冲突,把源体系结构程序计数器值写入相应的本地内存中去并更新对应的计数器值;
所述的冲突处理是指:把第一寄存器中的值写入到第二寄存器对应的本地内存中的下一个后16位值不相等的内存地址中;
所述的更新是指:如果是第一次更新,则把1写入相应的寄存器映射表的计数器项中,如果不是第一次更新,则对原寄存器映射表的计数器项的值加1。
本发明改进了传统收集剖分信息的方法,与现有技术相比通过在源可执行程序中的各个目标基本块中插入一条目标体系机构的存储指令和维护一张计数器映射表来收集剖分信息,使用两个硬件模块来组成该系统的硬件部分,以较少硬件开销的软硬件协同设计方法来完成整个剖分系统的剖分信息的收集工作,从而可以以较小的系统开销完整地收集到准确的剖分信息,从而大大提高了整个系统的性能。
附图说明
图1是本系统的总体框架图。
图2是PowerPC体系结构的存储指令。
图3是剖分模块逻辑示意图。
图4是计数器映射表。
具体实施方式
下面对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
剖分信息收集系统的总体结构分为两部分如图1所示:本实施例包括:包括:内存映像加载模块、查找模块、目标缓存模块、中间指令目标基本块模块、目标指令目标基本块模块、链接目标基本块模块、上下文切换模块、优化模块、计数器映射表、先进先出缓冲区模块和剖分模块,其中:内存映像加载模块与查找模块相连接以传输可执行二进制源程序中目标基本块的起始地址信息,查找模块与上下文切换模块和中间指令目标基本块模块相连接以传输翻译判断信息,中间指令块模块与目标指令目标基本块模块相连接以传输目标基本块信息,目标指令目标基本块模块分别与链接目标基本块模块和先进先出缓冲区模块相连接以传输目标基本块首地址信息,链接目标基本块模块与上下文切换模块相连接以传输首地址链信息,上下文切换模块与目标缓存模块相连接以传输目标存储地址信息,优化模块与目标缓存和计数器映射表相连接传输待优化处理信息,先进先出缓冲区模块与剖分模块相连接以传输源程序计数器值信息,剖分模块与计数器映射表相连接以传输源程序计数器值信息。
所述的翻译判断信息中存储一位判断值,该判断值代表了与源程序计数器值对应的目标指令目标基本块是否已经翻译的信息
所述的链接目标基本块模块收到目标基本块首地址信息后将目标基本块首地址信息中的首地址链接生成首地址链信息。
如图2、图3和图4所示,本实施例通过以下步骤得以实现:
1)加载MIPS体系结构(前端体系结构,有MIPS公司开发的精简指令级微处理器)的可执行程序到CrossBit的进程空间里,获得此可执行程序的入口地址。然后,以目标基本块为单位划分程序,一个目标基本块通常以一条跳转指令或系统调用指令所指向地址的指令为开始,以下一条跳转指令为结束。完成目标基本块的划分之后,在每个目标基本块中插入一条目标体系结构的存储指令,储存指令的格式如图2所示。其中,源寄存器域的值为装载每个目标基本块首地址源体系结构程序计数器值的本地寄存器号,地址寄存器域的值为装载有缓冲区模块首地址值的寄存器号,偏移量的值为零。具体在目标基本块的什么位置插入储存指令是由CrossBit在获得了装载有目标基本块的首地址源体系结构程序计数器值的寄存器号后确定的,此储存指令插入到含有目标基本块的首地址源体系结构程序计数器值的寄存器号的指令之后的第一条指令位置处。此寄存器号通过CrossBit里的寄存器分配来满足。
2)在CrossBit中,分配一块内存区域存放一个计数器映射表,计数器映射表如图4所示,计数器映射表包含有源体系结构程序计数器和传统计数器两项,源体系结构程序计数器项是存放每个目标基本块首地址源体系结构程序计数器值的项,传统计数器项存放的是计数器值。在翻译目标基本块之前,在CrossBit中嵌入一小段汇编代码序列来传递计数器映射表的首地址值,该段代码只执行一次,该小段汇编代码的最后一条是目标体系结构的储存指令,其中源寄存器域的值为计数器映射表的首地址。
其中传统计数器mt_baseaddr变量存放了计数器映射表的首地址值,FIFO_baseaddr变量存放了FIFO缓冲区的首地址。这段嵌入汇编代码为:
__asm__(
“:lwz%%r9,%0\n\t”
“:stw%%r9,%1\n\t”
:”m”(mt_baseaddr),“m”(FIFO_baseaddr)
)
通过剖分模块获得此计数器映射表的首地址值,剖分模块如图3所示,剖分模块第一次从缓冲区模块取到的值就是计数器映射表的首地址,在剖分模块内保存此值到一个寄存器里,从而可以保证接下来的源体系结构程序计数器值的查找操作。
3)当程序执行到插入的储存指令时,此指令触发缓冲区模块,把每个目标基本块的首地址源体系结构程序计数器值存储在缓冲区模块中,此缓冲区模块的大小设为4K个入口,每个入口为32bit(位)大小。剖分模块从缓冲区模块中取出此源体系结构程序计数器值,存放在第一寄存器中,根据一个取每个源体系结构程序计数器值的后16位的哈希函数值加上计数器映射表首地址的值来查找计数器映射表中对应的源体系结构程序计数器值是否与从缓冲区模块中取到的源体系结构程序计数器值相等;如果相等,则更新第二寄存器中值对应的寄存器映射表中的计数器值;如果不相等,再比较第一寄存器和第二寄存器中的源体系结构程序计数器值的后16值(大端中的第16位到第31位),如果后16位值不相等,则没有冲突发生,把此第一寄存器中的源体系结构程序计数器值写入计数器映射表的相应表项中,并设置相应计数器的值为1,如果比较的两源体系结构程序计数器值的后16位相等,则冲突发生,写入到本地内存中的下一后16值不相等的内存中。因为收集到的剖分信息一般作为超级块和路径跟踪的生成条件,且超级块和路径跟踪都是在一个很小的区域内,因此发生冲突的概率很小,而每个相邻的目标基本块首地址源体系结构程序计数器值之间有几条到几十条的指令间隔,所以可以把有冲突的源体系结构程序计数器值写入到上述冲突地址的下一个地址中。
4)程序执行过程中,当一个目标基本块的剖分信息收集完毕后,将计数器映射表中的对应目标基本块的计数器值和设定的阈值相比较,如果比阈值小则跳到后面目标基本块继续执行,如果变量超过阈值,则生成相应的超级块或路径跟踪,从而集中进行程序的动态优化。
本实施例通过剖分模块来更新目标基本块的执行次数,剖分收集系统的软件部分利用该信息调整目标基本块的位置,把执行频度超过阈值的目标基本块连接起来构成超级块或生成路径tracing(跟踪),从而可以利用剖分系统来加速整个系统的的运行,以较少硬件开销的软硬件协同设计方法来完成整个剖分系统的剖分信息的收集工作,从而可以以较小的系统开销完整地收集到准确的剖分信息,从而大大提高了整个系统的性能。

剖分信息收集系统及其收集方法.pdf_第1页
第1页 / 共14页
剖分信息收集系统及其收集方法.pdf_第2页
第2页 / 共14页
剖分信息收集系统及其收集方法.pdf_第3页
第3页 / 共14页
点击查看更多>>
资源描述

《剖分信息收集系统及其收集方法.pdf》由会员分享,可在线阅读,更多相关《剖分信息收集系统及其收集方法.pdf(14页珍藏版)》请在专利查询网上搜索。

一种计算机优化处理技术领域的剖分信息收集系统及其收集方法,包括:内存映像加载模块、查找模块、目标缓存模块、中间指令目标基本块模块、目标指令目标基本块模块、链接目标基本块模块、上下文切换模块、优化模块、计数器映射表、先进先出缓冲区模块和剖分模块。本发明改进了传统收集剖分信息的方法,与现有技术相比通过在源可执行程序中的各个目标基本块中插入一条目标体系机构的存储指令和维护一张计数器映射表来收集剖分信息,。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1