当前位置: 首页 > 专利查询>英特尔公司专利>正文

经由有效数据流分析来指派寄存器类别的方法和系统技术方案

技术编号:2844098 阅读:224 留言:0更新日期:2012-04-11 18:40
提供了一种方法,其包括在至少一个指令中将第一寄存器类别指派到至少一个符号寄存器,确定并指派第二寄存器类别到该至少一个寄存器,减少寄存器类别修正以及重命名该至少一个符号寄存器。还提供了一种系统,其包括:具有至少一个寄存器的处理器,以及在输入了具有许多操作块的源程序的处理器中运行的编译器。编译器在至少一个指令中将第一寄存器类别指派到该至少一个符号寄存器,确定并指派第二寄存器类别到该至少一个寄存器,减少寄存器类别修正以及重命名该至少一个符号寄存器。

【技术实现步骤摘要】
【国外来华专利技术】
实施例涉及编译器技术,具体而言涉及经由寄存器类别指派的编译器优化。
技术介绍
当设计和实现编译器时,寄存器分配和寄存器指派在增加计算机程序效率方面是非常重要的。寄存器分配确定程序值,这些值在每一程序点上将被存储在机器(例如计算机系统)的寄存器中,而不是被存储在存储器中。寄存器指派确定每一被分配的程序值将定位到哪一个寄存器。编译器开发者往往忽略了寄存器类别指派。寄存器类别指派通常被忽视的原因在于,很多机器包含非常少的寄存器类别。典型地,大部分机器仅具有两类寄存器整数和浮点寄存器。对于具有两种寄存器类别(也就是整数和浮点)的这些机器而言,指令的每一寄存器操作数需要固定的寄存器类别,也就是在指令集结构(ISA)设计期间明确执行寄存器类别指派。然而,考虑到现代计算机结构设计,寄存器类别指派越加困难地确定。例如,在一些先进的处理器中,大量的寄存器类别是可用的。并且允许向指令寄存器操作数指派不同寄存器类别形式的物理寄存器。为了使得问题更加复杂,不能够任意地执行寄存器类别指派。仅能够将指定的寄存器类别应用到指定指令的寄存器操作数。图1A和1B说明了一个实例,其展示了用于算术逻辑单元(ALU)指令的灵活的寄存器类别指派。图1A说明了ALU指令实例。图1B说明了符号寄存器A_OP和B_OP的可能的寄存器类别指派实例。这种复杂性使得编译器设计和实现越来越有挑战性。附图说明通过实例以及非限制性的附图来说明本专利技术的实施例,附图中相似的参数指示相似的元素。应该指出,该公开内容中的本专利技术的“一”实施例没有必要是相同的实施例,并且它们意指至少一个。图1A说明了ALU指令的实例。图1B说明图1A所述指令中对两个符号寄存器的可能的寄存器类别指派实例。图2说明目标机器指令的中间表示。图3说明了寄存器类别指派映射表的定义。图4说明了寄存器类别指派实施例的处理。图5说明了初始寄存器类别指派实施例的伪代码。图6说明了一实施例的中间块(inter-block)寄存器类别修正(fixup)的实例。图7说明了用于计算OUT_M(i)的实例的伪代码。图8说明了线性时间数据流框架的实施例的伪代码。图9A说明了用于提升(hosting)寄存器类别修正的实施例的实例。图9B说明了用于降低寄存器类别修正的实施例的实例。图10说明了一个实施例的系统的框图。图11说明了实施例可以与之相结合实施的典型计算机。具体实施例方式这里讨论的实施例通常涉及经由有效的数据流分析来指派寄存器类别的方法和系统。参考附图,将描述典型的实施例。典型的实施例被提供用以说明实施例,并且将不会构成对实施例的范围的限制。说明书中对于“一实施例”、“一个实施例”、“一些实施例”或“其他实施例”的参考意思是与实施例相结合所描述的特殊特征、结构、或特性包含于至少一些实施例中,但没有必要包含于所有的实施例中。不同的表达“一实施例”、“一个实施例”或“一些实施例”没有必要全部涉及相同的实施例。如果说明书描述了“可以”、“可能”或“能够”包括的部件、特征、结构、或特性,那么可以不需要包括特殊的部件、特征、结构、或特性。如果说明书或权利要求涉及“一”或“一个”元素,那么这并不意味着仅存在一个元素。如果说明书或权利要求涉及“附加的”元素,那么这不排除存在一个以上的附加元素。在目标机器具有m个寄存器类别C1、C2、...Cm的情况中,每一寄存器类别C1包含Ni个物理寄存器(也就是Ni-|Ci|)。另外,目标机器的每一指令的中间表示看起来象图2所示的形式,其中Dest、Src_1和Src_2可以是符号寄存器。在一个实施例中,通过为每一编译单元(函数)使用有效的数据流分析,那么在每一指令中包括寄存器类别到每一符号寄存器的指派。在另一实施例中,对于指令i中所包含的符号寄存器s而言,如果在i中将寄存器Ck指派给s,那么寄存器类别指派的信息被表示为RegClass(s,i)=Ck并且在指令中用符号表示为s:Ck。在一个实施例中,通用寄存器类别(将其简化为符号C)是一种伪寄存器类别,其指示从C1到Cm的每一寄存器类别的并集。在执行寄存器类别指派的处理中能够将符号寄存器指派到C。应该指出,在完成寄存器类别指派处理之后,应该向符号寄存器指派实际存在的寄存器类别(C1、C2、...Cm)。根据该定义,下面两个方程对于满足1≤i≤m的每一i都是成立的。Ci∩C=CiCi∪C=C在一个实施例中,寄存器类别阵列(将其简化为符号A)是一种具有 个元素的不变阵列,如下定义每一元素的值A(i)C1(1≤I≤N1)C2(N1+1≤I≤N1+N2)···Cm(Σ1≤J≤m-1Nj+1≤I≤Σi≤j≤mNJ)]]>全局整数A_Index用于在寄存器类别指派处理中迭代阵列。在一个实施例中,在指派处理的初始化部分期间,将A_Index初始化为1。在一个实施例中,寄存器类别指派映射表(将其简化为符号M)是一种用于跟踪到每一符号寄存器的寄存器类别指派的映射表。M的每一元素具有的形式为(s,c),其意指将寄存器类别c指派到符号寄存器s。假设编译单元(函数)包含Ns个符号寄存器,那么能够如图3所示那样定义包含Ns个元素的寄存器类别指派映射表。在一个实施例中,寄存器类别修正是一种在修改寄存器类别指派时所插入的指令。例如,如果首先向符号寄存器s指派寄存器类别C1,并且在随后的分析中确定向s指派C2,那么添加附加的指令以将s:C1移动到s:C2(s:C2←s:C1)。该附加的指令移动被称为从C1到C2的寄存器类别修正。在一个实施例中,假如程序的语义没有变化,可以将寄存器类别修正插入到一个指令之前或一个指令之后,或者两者兼有。由于在一个指令中可能出现一个以上的符号寄存器,因此需要若干个寄存器类别修正以适应所述移动是可能的。图4说明了一个实施例的处理,其中,将寄存器类别指派到每一符号寄存器并且该指派包含于每一指令中。处理400从块410开始,其中产生初始的寄存器类别指派。对于一些指令而言,要求仅仅将特定的寄存器类别指派给在那些指令中出现的符号寄存器操作数(目标操作数或源操作数)。同时对于不具有所述要求的其他符号寄存器而言,将通用寄存器类别C指派到符号寄存器操作数。图5说明了初始寄存器类别指派的一个实施例中所包括的算法的伪代码。在完成块410之后,处理400继续到块420。在块420,经由连接(conjunctive)正向数据流分析来执行寄存器类别指派。对于任意的基础块b而言,在块入口指派寄存器类别指派映射表为IN_M(b),同时在决出口处指派寄存器类别指派映射表为OUT_M(b)。能够将相似的概念应用到指令,也就是,IN_M(i)和OUT_M(i),它们分别用于表示在指令i的入口处的寄存器类别指派映射表和在指令i出口处的寄存器类别指派映射表。接下来的等式和算法用于计算OUT_M(b)、IN_M(b)、IN_M(i)和OUT_M(i)。关于OUT_M(b),能够通过使用以下等式来计本文档来自技高网...

【技术保护点】
一种方法,包括:在至少一个指令中指派第一寄存器类别到至少一个符号寄存器;确定并指派第二寄存器类别到该至少一个符号寄存器;减少寄存器类别修订;以及对该至少一个符号寄存器进行重命名。

【技术特征摘要】
【国外来华专利技术】US 2004-3-31 10/813,7641.一种方法,包括在至少一个指令中指派第一寄存器类别到至少一个符号寄存器;确定并指派第二寄存器类别到该至少一个符号寄存器;减少寄存器类别修订;以及对该至少一个符号寄存器进行重命名。2.如权利要求1所述的方法,所述指派第一寄存器类别是初始的指派。3.如权利要求1所述的方法,所述确定并指派第二寄存器包括在块入口处标记寄存器类别指派映射表;在块出口处标记寄存器类别指派映射表;在每一指令的入口处确定寄存器类别指派映射表;以及在每一指令的出口处确定寄存器类别指派映射表。4.如权利要求1所述的方法,所述减少寄存器类别修正包括提升寄存器类别修正;降低寄存器类别修正;以及去除不必要的寄存器类别修正。5.如权利要求4所述的方法,所述去除不必要的寄存器类别修正包括去除失效代码。6.一种包括机器可读介质的装置,所述机器可读介质包含指令,当机器执行所述指令时,使得机器执行以下操作在至少一个指令中指派第一寄存器类别到至少一个符号寄存器;确定并指派第二寄存器类别到该至少一个符号寄存器;减少寄存器类别修订;以及对该至少一个符号寄存器进行重命名。7.如权利要求6所述的装置,所述指派第一寄存器类别指令是初始的指派。8.如权利要求6所述的装置,所述确定并指派第二寄存器进一步包括指令,当被机器执行时,使得机器执行以下的操作在块入口处标记寄存器类别指派映射表;在块出口处标记寄存器类别指派映射表;在一个指令的入口处确定寄存器类别指派映射表;以及在一个指令的出口处确定寄存器类别指派映射表。9.如权利要求6所述的装置,所述减少寄存器类别修正进一步包括指令,当被机器执行时,使得机器执行以下的操作提升寄存器类别修正;降低寄存器类别修正;以及去除不必要的寄存器类别修正。10.如权利要求9所述的装置,所述去除不必要的寄存器类别修正进一步包括指令,当被机器执行时,使得机器执行包括去除失效代码的操作。11.一种系统,包括具有至少一个寄存器...

【专利技术属性】
技术研发人员:B黄J戴C西德
申请(专利权)人:英特尔公司
类型:发明
国别省市:US[美国]

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

1