用于嵌套条件检查的改进插装制造技术

技术编号:37678133 阅读:25 留言:0更新日期:2023-05-26 04:44
本公开涉及用于嵌套条件检查的改进插装。本发明专利技术的方面包括执行第一阶段,第一阶段包括:响应于识别程序代码中的内部条件检查而将插装注入程序代码中,以及利用代表性工作负荷运行插装程序。该注入包括复制内部条件检查以及在程序代码中的相应原始嵌套条件检查之前放置内部条件检查的副本以创建插装程序。插装程序包括多个基本块和新添加的基本块,基本块包括原始基本块,新添加的基本块包括内部条件检查的副本。检查的副本。检查的副本。

【技术实现步骤摘要】
用于嵌套条件检查的改进插装


[0001]本专利技术总体上涉及优化计算机代码,并且更具体地涉及改进用于嵌套条件检查的简档引导的优化(PGO)插装(instrumentation)。

技术介绍

[0002]编译器可以通过使用已知的启发法来对代码执行作出猜测来实现性能优化。例如,编译器可基于分支位于何处来预测分支的静态频率,和/或其可基于函数的大小来选择内联函数。为了从程序中提取良好性能,程序员具有编译器和系统设计的固有知识是重要的,使得程序员可以向编译器提供提示或注释。不幸的是,这不总是可能的,并且可以使用的另一种性能优化技术是简档引导的优化(PGO)。
[0003]PGO是编译器用于通过使用应用运行时数据来产生最优代码的方法。因为该数据直接来自应用,所以编译器可以对代码执行做出更准确的猜测。PGO具有两个相。在第一阶段期间,正在编译的程序被装备。当程序运行时,使用代表典型工作负荷的输入数据,注入的插装收集程序的对优化器有用的特性。在第二阶段期间,在第一阶段中收集的数据用于重新优化程序。所收集的信息用于做出更好的启发式引导的优化决策。
[0004]由PGO使用的一种技术是注入被设计成收集表示函数中的基本块的执行频率的计数器的插装。具有较高计数器的基本块比具有较低计数器的基本块更频繁地执行。优化可以使用该信息来增强用于决定代码的变换是否被认为是盈利的成本模型。

技术实现思路

[0005]专利技术的各实施例涉及改进用于嵌套条件检查的简档引导的插装。一种非限制性示例计算机实现的方法,包括执行第一阶段,第一阶段包括:响应于识别程序代码中的内部条件检查,将插装注入程序代码中;以及利用代表性工作负荷运行插装程序。该注入包括复制内部条件检查以及在程序代码中的相应原始嵌套条件检查之前放置内部条件检查的副本以创建插装程序。插装程序包括多个基本块和新添加的基本块,所述基本块包括原始基本块,所述新添加的基本块包括内部条件检查的副本。该方法还包括执行第二阶段,第二阶段包括从与基本块相关联的计数器收集执行频率值以形成用于对程序代码做出优化决策的元数据。
[0006]本专利技术的其他实施例在计算机系统和计算机程序产品中实现上述方法的特征。
[0007]通过本专利技术的技术实现了附加技术特征和优点。在本文中详细描述了本专利技术的实施例和方面,并且这些实施例和方面被认为是所要求保护的主题的一部分。为了更好的理解,参考详细说明和附图。
附图说明
[0008]在说明书结尾处的权利要求中特别指出并明确要求保护本文所述的独占权利的细节。从以下结合附图进行的详细描述中,本专利技术的实施例的前述和其他特征和优点将变
得清楚,在附图中:
[0009]图1描述了嵌套在另一个条件检查内的条件检查的实例;
[0010]图2描述了当前插装技术的示例;
[0011]图3描绘了根据本专利技术的一个或多个实施方式的插装技术的实例;
[0012]图4描绘了根据本专利技术的一个或多个实施方式的具有互换的二级嵌套条件检查的程序代码的实例;
[0013]图5描绘了根据本专利技术的一个或多个实施方式的用于嵌套条件检查的配置文件引导优化(PGO)插装的系统的部件的块图;
[0014]图6是根据本专利技术的一个或多个实施方式的包含嵌套的条件检查的源代码的示例;
[0015]图7(包括图7A和图7B)描绘了根据本专利技术的一个或多个实施方式的图6的源代码的控制流程图;
[0016]图8示出了根据本专利技术的一个或多个实施方式的用于嵌套条件检查的PGO插装的方法的处理流程;
[0017]图9描绘了根据本专利技术的一个或多个实施例的图6的源代码的支配者树;
[0018]图10示出了根据本专利技术的一个或多个实施方式的图6的源代码的后支配者树(post dominator tree);
[0019]图11示出了根据本专利技术的一个或多个实施方式的图6的变换的源代码;
[0020]图12描绘了在PGO插装生成传递之后的图6的源代码;
[0021]图13描绘了根据本专利技术的一个或多个实施方式的用于嵌套条件检查的PGO插装的方法的处理流程;以及
[0022]图14描绘了结合本专利技术的一个或多个实施例使用的示例计算机系统的块图。
[0023]此处所描绘的图是说明性的。在不偏离本专利技术的精神的情况下,可存在对附图或其中描述的操作的许多变化。例如,可以以不同的顺序执行动作,或者可以添加、删除或修改动作。而且,术语“耦接”及其变形描述了在两个元件之间具有通信路径,并且不暗示元件之间的直接连接,在它们之间没有介入元件/连接。所有这些变型被认为是说明书的一部分。
具体实施方式
[0024]本专利技术的一个或多个实施例在概况指导优化(PGO)的背景下提供新的插装技术,其可用于获得计算机程序中的函数的更精确概况信息。本专利技术的一个或多个实施例利用所获得的简档信息来为计算机程序中的嵌套条件检查提供改进的PGO插装。从改进的PGO插装中获得的附加信息被用于执行启发式引导的优化决策,所述启发式引导的优化决策可包括以可保存运行时的方式对嵌套的条件检查进行重新排序。
[0025]现在转向图1,一般示出了包含嵌套在另一条件检查内的条件检查的源代码100的示例。图1中示出的示例执行称为“foo”的函数并且包含嵌套在第一条件检查102内的两个条件检查:第一条件检查102“if(A())”和第二条件检查104“if(B())”)。第二条件检查104可以被称为“内部条件检查”,因为它被嵌套在第一条件检查102内。图1中示出的源代码100是本文中用于示出用于嵌套条件检查的改进的PGO插装的一个或多个实施例的简化示例。
本领域的技术人员将理解,本文描述的本专利技术的一个或多个实施例可扩展到包含大量嵌套条件检查的更复杂的控制流。
[0026]现在转向图2,一般地示出插装源代码200的示例。在图2中所示的示例中,使用现代插装技术来插装图1的源代码100,从而导致插装源代码200。如图2所示,图1的源代码100中的每个基本块具有相关联的PGO计数器,并且每当其相关联的基本块在运行时被执行时每个计数器递增。第一计数器206“pgo_counter1”表示函数“foo”被输入的次数,第二计数器202“pgo_counter2”表示函数A评估为真的次数,并且第三计数器204“pgo_counter3”表示函数A和函数B两者评估为真的次数。已知第三计数器204“pgo_counter3”将包含等于或小于第二计数器202“pgo_counter2”的值的值,因为与第三计数器204相关联的基本块仅在两个条件均为真时执行,而与第二计数器202相关联的基本块仅在一个条件(A())评估为真时执行。
[0027]由现代PGO技术(诸如图2中所示的技术)提供的该信息不足以在A()评估为假时推断函数B()评估为真的次数。如果编译器知道预测函数B()评估多少次为真,则其优化器可将条件检查从最不频繁真重新排序到最频繁真以减少函数执行时间。本专利技术的一个本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种计算机实施的方法,包括:执行第一阶段,所述第一阶段包括:响应于识别所述程序代码中的内部条件检查而将插装注入到所述程序代码中,所述注入包括:复制所述内部条件检查;以及在所述程序代码中的相应原始嵌套条件检查之前放置所述内部条件检查的副本以创建插装程序,所述插装程序包括多个基本块,所述基本块包括原始基本块和包括所述内部条件检查的副本的新添加的基本块;以及用代表性工作负荷运行所述插装程序;以及执行第二阶段,所述第二阶段包括:从与所述基本块相关联的计数器收集执行频率值以形成用于对所述程序代码做出优化决策的元数据。2.根据权利要求1所述的方法,其中,所述注入进一步包括添加与所述新添加的基本块相关联的计数器以对所述新添加的基本块被执行的次数进行计数。3.根据权利要求1所述的方法,其中,所述内部条件检查至少部分基于描述所述程序代码的支配者树的内容来识别。4.根据权利要求3所述的方法,其中,所述内部条件检查选自候选条件分支的集合,所述集合中的所述候选条件分支中的每个候选条件分支对应于所述支配者树中的具有多于一个子代并且不具有潜在副作用的节点。5.根据权利要求4所述的方法,进一步包括从所述集合中移除在所述集合中不具有祖先节点的节点。6.根据权利要求4所述的方法,其中,所述内部条件检查具有与所述集合中的其他节点中的任一个不同的控制流。7.根据权利要求1所述的方法,其中,所述注入包括至少部分地基于遍历描述所述程序代码的支配者树和遍历描述所述程序代码的后支配者树中的一者或两者,确定所述副本内部条件检查的副本在所述程序代码中的位置,其中,所述放置在所确定的位置处。8.根据权利要求1所述的方法,其中,通过编译器执行所述第一阶段和所述第二阶段。9.根据权利要求1所述的方法,进一步包括至少部分基于所述新元数据优化所述程序代码。10.根据权利要求9所述的方法,其中,所述优化包括切换所述程序代码中的所述条件检查的顺序。11.根据权利要求1所述的方法,其中,包括所述副本内部条件检查的多个副本内部条件检查放置在所述程序代码中。12.一种系统,包括:存储器,具有计算机可读指令;以及用于执行所述计算机可读指令的一个或多个处理器,所述计算机可读指令控制所述一个或多个处理器执行操作,所述操作包括:执行第一阶段,所述第一阶段包括:响应于识别所述程序代码中的内部条件检查而将插装...

【专利技术属性】
技术研发人员:曾惠虹E
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1