[发明专利]用于寄存器分配的系统和方法有效
申请号: | 201480056891.0 | 申请日: | 2014-09-12 |
公开(公告)号: | CN105637474B | 公开(公告)日: | 2019-03-22 |
发明(设计)人: | 简宁胜;张韫赟;高丽萍;黄海涛;齐歆瑜 | 申请(专利权)人: | 马维尔国际贸易有限公司 |
主分类号: | G06F7/38 | 分类号: | G06F7/38 |
代理公司: | 北京市金杜律师事务所 11256 | 代理人: | 酆迅;辛鸣 |
地址: | 巴巴多斯*** | 国省代码: | 巴巴多斯;BB |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 寄存器 分配 系统 方法 | ||
提供了用于寄存器分配的系统和方法。确定与执行循环的分支关联的原始代码块和目标代码块。检测多个物理寄存器向与原始代码块关联的一个或者多个原始变量的原始分配。确定多个物理寄存器向与目标代码块关联的一个或者多个目标变量的目标分配。至少部分基于原始分配和目标分配来从多个物理寄存器选择一个或者多个暂时寄存器。使用选择的暂时寄存器将原始分配改变成目标分配。具体地,生成用于使用选择的暂时寄存器将原始分配改变成目标分配的一个或者多个指令。使用一个或者多个处理器来执行指令。
本公开内容要求对通过引用而全部结合于此、提交于2013年10月18日的第61/892,638号美国临时专利申请的优先权。
技术领域
在本专利文本中描述的技术总体上涉及程序执行,并且更具体地涉及用于程序执行的寄存器分配。
背景技术
即时编译(JIT)(也被称为动态翻译)是当在运行时间执行程序或者应用期间而不是在执行之前完成的编译。JIT经常涉及到翻译/编译成用于机器(例如,计算机)的本机代码,这些本机代码然后直接由机器的一个或者多个处理器执行。
JIT编译器可以用于生成用于Java程序的本机代码。可以在Java虚拟机(JVM)正在其上执行的任何机器上运行Java程序。Java程序包括多个对象类,并且每个对象类可以具有零个或者更多个方法。在执行Java程序时,调用和执行对象类的方法。
可以用两种方式之一执行java方法。一种方式是让JVM以解译方式执行该方法。例如,在执行Java程序之前,将程序的源代码(例如,方法的源代码)分解成Java字节代码。在运行时间,JVM的Java解译器解译方法的字节代码,这是相对缓慢的过程。作为备选,JVM可以选择不解译方法,而是例如在运行时间使用JIT编译器将该方法的字节代码编译成本机代码。JVM然后使得本机代码直接由一个或者多个处理器执行。
经常需要从存储器加载与执行由JIT编译器生成的本机代码关联的本地变量,这是耗费时间的过程。一种用于改进对由JIT编译器生成的本机代码的执行的方式是尽可能多地在物理寄存器(例如,硬件寄存器)中维持常用的本地变量。寄存器分配是用于提高效率的重要优化过程。例如,可以实施用于寄存器分配的线性扫描算法。线性扫描算法涉及到在程序中的所有变量的活跃区间内在单个线性扫描中向变量指派寄存器。变量的活跃区间对应于在定义指令开始和在变量上次被使用的指令结束的指令范围。如果两个变量的活跃区间重叠,则变量不能驻留在相同物理寄存器中。
发明内容
根据这里描述的教导,提供了用于寄存器分配的系统和方法。确定与执行循环的分支关联的原始代码块和目标代码块。检测多个物理寄存器向与原始代码块关联的一个或者多个原始变量的原始分配。确定多个物理寄存器向与目标代码块关联的一个或者多个目标变量的目标分配。至少部分基于原始分配和目标分配来从多个物理寄存器选择一个或者多个暂时寄存器。使用选择的暂时寄存器将原始分配改变成目标分配。具体地,生成用于使用选择的暂时寄存器将原始分配改变成目标分配的一个或者多个指令。使用一个或者多个处理器来执行指令。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于马维尔国际贸易有限公司,未经马维尔国际贸易有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201480056891.0/2.html,转载请声明来源钻瓜专利网。