[发明专利]用于样本驱动简档引导优化的方法、电子设备及电子系统有效
申请号: | 201780034584.6 | 申请日: | 2017-05-17 |
公开(公告)号: | CN109863473B | 公开(公告)日: | 2022-05-17 |
发明(设计)人: | 何文垒;T·岑;P·J·昌达尔 | 申请(专利权)人: | 微软技术许可有限责任公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F11/34 |
代理公司: | 北京市金杜律师事务所 11256 | 代理人: | 王茂华 |
地址: | 美国华*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 样本 驱动 引导 优化 方法 电子设备 电子 系统 | ||
简档引导的优化编译器利用包括程序的控制流表示的样本简档数据,该控制流表示包括具有与程序的每个基本块相关联的块计数以及与从块计数估计的每个控制流边缘相关联的边缘计数。样本简档数据利用相关数据以使用与每个源代码基本块和采样指令相关联的相对虚拟地址(RVA)将来自完全优化的二进制文件的采样指令的地址直接映射到程序的源代码控制流程的对应基本块中。相关数据能够区分同一源代码行上的多个块,并且以更高的精度和效率来处理内联和优化。然后,块计数被用来引导程序的优化。
技术领域
本实施例涉及用于编译软件程序以供在计算系统上执行的技术,并且更具体地涉及基于用于在简档引导优化中使用的采样指令来创建简档数据的方法、设备和系统。
发明内容
提供本“发明内容”是为了以简化的形式介绍一些概念,这些概念将在下面的“具体实施方式”中被进一步描述。本“发明内容”不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
编译器优化被用于生成高效运行并且高效利用资源的可执行代码。这些优化受益于程序将如何使用生产输入而执行的知识。简档引导的优化获取从程序的样本运行生成的信息或简档数据,以在执行更适合目标环境的优化中引导编译器。该简档数据可以包括对与基本块相关联的指令被执行的次数的计数。以这种方式,与不频繁地执行的区域相比,编译器能够更积极地优化程序的更频繁地执行的区域。
为了将计数与源代码相关联,相关数据被生成,其将从样本运行采样的处理器指令映射到与对应于该处理器指令的源代码相关联的基本块。相关数据包括程序的每个函数的控制流表示,其标识该函数的基本块。每个基本块包含一系列相对虚拟地址,这些相对虚拟地址对应于与源代码控制流程中的基本块相关联的指令。然后,来自样本运行的块计数被用于更新对应基本块的块计数。然后,具有块计数的相关数据被视为样本简档数据,该样本简档数据然后被用于得出边缘计数,这些边缘计数被用于确定要对程序的某些部分执行的优化和优化的程度。
用户可以可视化样本简档数据,编辑源代码,运行附加的样本运行以获取更多的块计数,并且以任何顺序迭代地重新编译程序,以便针对预期用途获取期望的优化级别。
通过对以下详细描述的阅读和对相关附图的回顾,这些和其他特征和优点将变得明显。应当理解,前面的一般性描述和以下的详细描述都只是说明性的,而不是对所要求保护的各方面的限制。
附图说明
图1示出了用于利用样本驱动的简档引导优化来优化软件程序的示例性系统。
图2是示出用于执行编译以生成相关数据的示例性方法的流程图。
图3是示出用于将目标文件链接成镜像文件并且利用相对虚拟地址来更新相关数据的示例性方法的流程图。
图4是示出用于生成具有块和边缘计数的样本简档数据的示例性方法的框图。
图5是示出用于利用SPD文件优化程序的示例性方法的框图。
图6A-6D示出了针对示例性程序生成样本简档数据的示例。
图7是示出第一示例性计算或操作环境的框图。
图8是示出第二示例性计算或操作环境的框图。
具体实施方式
概述
编译器通常执行代码优化以便生成更快执行并且高效地使用存储器的代码。这些代码优化可以包括内联、代码提升、死存储消除、消除公共子表达式、循环展开、代码移动、归纳变量消除、强度降低等。传统的编译器基于静态源代码文件执行这些代码优化,而不知道将在运行时使用的、无法从静态源代码文件获取的输入。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软技术许可有限责任公司,未经微软技术许可有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201780034584.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:机器人控制装置的编码方法、程序及机器人控制装置
- 下一篇:更新迁移系统和方法