在处理器中传送指令结果及处理器的编译方法技术

技术编号:2884112 阅读:164 留言:0更新日期:2012-04-11 18:40
一个处理器,能够支持软件流水线执行,这个处理器的指令产生单元10以一个预定序列产生需要被执行的指令。处理器根据相应产生值的指令的产生顺序来给所产生的值分配相应的序列号码。每一个被产生的值被分配寄存器集合中的一个寄存器,该寄存器与分配到这个值的序列号码相关。每一次产生一个产生值的指令时,就可以对寄存器进行重新命名,从而编译器对寄存器进行分配的工作被简化,并且指令集合可以更紧凑。(*该技术在2021年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及在处理器中传送指令结果并且涉及处理器的编译方法。特别地,本专利技术涉及用于保存处理器(例如微处理器)中的指令结果的寄存器的分配。在高性能的计算中,目标机器(例如,微处理器)通常需要高速率地来执行指令。执行时间通常是由应用程序中的循环结构来决定的。为了允许高速地执行指令,一个处理器可能包括多个独立的执行单元,在其它执行单元执行指令的同时,每一个独立的执行单元可以执行一个或者多个指令。这样一个多执行单元的结构可以被用于提供所谓的、由多级组成的软件流水线。每一个软件流水线级与特定执行单元不具有固定的物理联系。相反,当一个应用程序中的一个循环结构被编译时,根据一个软件流水线规划,组成循环的各个独立迭代的机器指令被安排由不同的执行单元来执行。这个规划被分成连续的级,并且以这样一个方法来规划指令,以允许通过在连续迭代发起之间使用一个被选择的循环发起间隔,由不同的执行单元并行执行多个迭代。这样,当一个迭代i的第一级结束时,这个迭代进入到第二级,在迭代i+1的第一级中开始对下一迭代的执行。这样,在执行迭代i的第二级中指令的同时,执行迭代i+1的第一级中的指令。在这样的软件流水线循环结构中,通常有必须在流水线中的不同指令之间进行交换的循环变量值,即在循环的每一个不同迭代中必须进行重新评估的表达式。为了处理这样的循环变量,可以将它们保存在一个所谓的循环寄存器文件中。在这个情形下,每一个循环变量被分配循环寄存器文件中的一个逻辑寄存器号码,并且这个逻辑寄存器号码对不同的迭代是不变的。在这个循环寄存器文件中,每一个逻辑寄存器号码被映射到这个寄存器文件中的一个物理寄存器,并且每一次一个新的迭代开始时,这个映射被循环,即,每一次一个流水线边界是闭合的。所以,不同迭代中的相应指令均涉及相同的逻辑寄存器号码,这使被编译的指令简单了,同时避免了一个迭代所产生的一个值被一个不同迭代的一个随后执行的指令所覆盖掉。对前面所考虑的处理器来说,编译器在将循环寄存器文件中的寄存器分配到一个循环计算中所产生的值中的任务是复杂的,这如本专利技术的说明书在后面所详细描述的。所以,在一个循环计算中能够提供一个机制来标识中间值,包括循环变量值是非常好,这可以简化在分配循环寄存器文件中的寄存器时编译器的任务。另外,给一个处理器提供其中指令是非常紧凑的一个指令集合也是非常可取的。根据本专利技术的第一方面,提供了一个处理器,包括指令产生装置,用于以一预定序列来产生需要被执行的指令,所述指令序列包括预先选择的、用于产生值的指令,当执行这个预先选择的、用于产生值的指令时,可以产生相应的值;指令执行装置,用于执行所产生的指令;寄存器装置,具有多个寄存器,用于保存执行指令时所产生的值;序列号码分配装置,用于根据所述产生值的指令的产生顺序来向相应产生值的指令所产生的所述值分配相应的序列号码;和寄存器分配装置,用于给每一个所述被产生的值分配所述寄存器中的一个,用于保存该被产生的值,这与被分配到这个值的序列号码相关。对这样一个处理器,编译器在执行分配寄存器的任务时就简单了。例如,这个寄存器装置的形式可以是一个循环寄存器文件,并且每一次产生预先选择的、用于产生值的一个指令时,寄存器可以被重新映射(重新命名)。这样一个处理器的指令集合也可以变得更紧凑,以使产生值的指令不需要说明任何目的寄存器来保存它们相应的被产生值。根据本专利技术的第二方面,提供了一个编译方法,用于将一个高级程序指令序列转换为被一个处理器所执行的、相应的低级指令序列,这个方法包括步骤决定所述相应序列中的哪一个所述低级指令是预先选择的、用于产生值的指令,并且哪一个是预先选择的、需要值的指令,每一个所述产生值的指令是当被执行时就会产生一个值的一个指令,并且每一个所述需要值的指令是当被执行时就需要前一个产生的、产生值的指令所产生的所述值的一个指令;根据执行期间相应产生值的指令被产生的顺序来向所述被产生值分配相应的序列号码;和用在执行期间所述处理器所使用的信息来给每一个所述需要值的指令进行编码,以标识这个指令所需要的所述产生值,这个信息与被分配到这个产生值上的所述序列号码相关。根据本专利技术的第三方面,提供了一个计算机程序,其中当在一个计算机上执行这个程序时,这个程序将促使这个计算机执行实现本专利技术前述第二方面的一个编译方法。根据本专利技术的第四方面,提供了一个计算机程序,其中当在一个计算机上执行这个程序时,这个程序将促使这个计算机执行用于将一个高级程序指令序列转换为被一个处理器所执行的、一个相应的低级程序指令序列,这个计算机程序包括一个决定部分,用于决定所述相应序列中的哪一个所述低级指令是预先选择的、用于产生值的指令,并且哪一个是预先选择的、需要值的指令,每一个所述产生值的指令是当被执行时就会产生一个值的一个指令,并且每一个所述需要值的指令是当被执行时就需要前一个产生的、产生值的指令所产生的所述值的一个指令;一个分配部分,用于根据执行期间相应产生值的指令被产生的顺序来向所述被产生值分配相应的序列号码;和一个编码部分,用在执行期间所述处理器所使用的信息来给每一个所述需要值的指令进行编码,以标识这个指令所需要的所述产生值,这个信息与被分配到这个产生值上的所述序列号码相关。现在,通过示例来参考附图,其中附图说明图1显示了实现本专利技术的一个处理器的一部分;图2显示了描述在一个编译过程中所使用的一个符号数据流图的一个示意图;图3是描述在编译过程中所使用的、图2的一个树型结构内部表示的一个示意图;和图4提供了一个在解释一个处理器使用软件流水线来执行指令时所使用的表;图5是被包括在一个前面所考虑的处理器中的一个寄存器文件的一部分的一个示意图表示;图6(A)和6(B)提供了一个表,以用于解释前面在图5中所考虑的处理器在编译过程中如何指定寄存器;图7提供了一个表,以用于解释实现了本专利技术的一个处理器如何使用软件流水线来执行指令;图8显示了描述在图7的执行中如何分配寄存器的一个示意图;图9显示了在本专利技术的一个实施方式中,图1处理器中的一部分;图10显示了一个流图,以用于解释实现了本专利技术的编译过程;图11显示了在根据本专利技术另一个实施方式的处理器中的一个模式寄存器的一部分;图12显示了包括一个循环的高级指令的一个示例;和图13是在执行图12的循环中所使用的寄存器的一个示意图表示。图1显示了实现本专利技术的一个处理器的一部分。在这个示例中,这个处理器是一个超长指令字(VLIW)处理器,其硬件能够支持软件流水线和循环寄存器重新命名。这个处理器1包括一个指令产生单元10,一个规划存储单元12,相应的第一、第二和第三执行单元14,16和18,和一个寄存器文件20。这个指令产生单元10具有分别连接到第一、第二和第三执行单元14,16和18的3个产生槽(issue slot)IS1,IS2,IS3。第一总线22将所有这3个执行单元14,16和18连接到寄存器文件20。第二总线24将第一单元和第二单元14和16(但是,在这个实施方式中,不包括第三执行单元18)连接到一个存储器26,在这个示例中,这个存储器26是一个外部随机访问存储器(RAM)设备。替代地,这个存储器26可以是处理器1内部的一个RAM。顺便说说,虽然图1显示了用共享的总线22和24将执行单元连本文档来自技高网...

【技术保护点】
一个处理器,包括:指令产生装置,用于以一预定序列来产生需要被执行的指令,所述指令序列包括预先选择的、当执行时用于产生相应值的指令;指令执行装置,用于执行所产生的指令;寄存器装置,具有多个寄存器,用于保存执行指令时所产生的值; 序列号码分配装置,用于根据所述产生值的指令的产生顺序来向所述产生值的指令所产生的所述值分配相应的序列号码;和寄存器分配装置,用于给每一个所述被产生的值分配所述寄存器中的一个,用于保存该被产生的值,这与被分配到这个值的序列号码相关。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:尼格尔皮特托法姆
申请(专利权)人:斯罗扬有限公司
类型:发明
国别省市:GB[英国]

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

1
相关领域技术
  • 暂无相关专利