处理器和编译器的制作方法

文档序号:6430605阅读:152来源:国知局
专利名称:处理器和编译器的制作方法
技术领域
本发明涉及一种处理器和编译器,特别是涉及一种同时执行多个指令的特长指令字(VLIW)处理器等。
背景技术
按照常规,已经提出了各种类型的VLIW处理器,所述VLIW处理器包括多个执行单元并在每一个时钟周期执行包括在特长指令字中的多个指令(例如,参考日本已公开专利出版物No.2004-005733)。
附图15A是表示一个常规的VLIW处理器所执行的特长指令字的指令格式的例子。这里示出了一个特长指令字,该指令字包括三个指令字段,其中放置了可以并行执行的三个指令#1-#3。在寄存器运算指令的情况下,每一个指令字段具有一个指示运算类型的操作码和一个指示运算主体的操作数(例如,一个寄存器指定区域可操作用于指定两个源寄存器src1和src2和一个目的寄存器dst)。
附图15B是表示执行如上所述这种特长指令字的常规VLIW处理器的结构的一个例子(这里集中在寄存器的输入/输出的结构)。在此示出了包括一个寄存器文件和三个运算单元的结构。
根据如上所述的这种常规的VLIW处理器,例如,寄存器运算指令被同时执行达到最大三个指令,并且已经开发出更快的处理,所述寄存器运算指令计算存储在两个寄存器中的值,并将结果存储在一个寄存器中。
然而,如附图15A所示,这种常规的VLIW处理器的特长指令字使寄存器指定区域对于每一个指令字段达到最大三个区域(src1、src2和dst)。这样就存在一个问题,即包括在一个特长指令字中的寄存器指定区域的总位数就变得非常大。
例如,一个包括含有32个寄存器的寄存器文件的VLIW处理器需要5位来指定一个寄存器。因此,如附图15A所示的指令格式对于每个指令字段需要最大15比特的寄存器指定区域,也就是说,对于整个特长指令字来说需要最大为45比特的寄存器指定区域。结果,与VLIW处理器的指令通路有关的电路尺寸变得很大。
此外,根据附图15A所示的指令格式,同时连接到运算单元的输入端口的寄存器的数量最大是6。因此,如附图15B所示,对于寄存器文件,6个输出端口是必要的。就这一点来说,也存在着电路尺寸变大的问题。

发明内容
考虑到上面所描述的那些问题,本发明的目的是提供一种执行精简指令集并且需要较少的位数来指定一个寄存器的VLIW处理器及类似处理器。
为了达到上述目的,根据本发明的处理器包括多个寄存器和多个运算单元,并且执行特长指令字,其中所述特长指令字包括一个指定所述多个寄存器中的至少一个寄存器的寄存器指定字段,指定使用所述运算单元的运算的多个指令,以及指示由所述寄存器指定字段指定的寄存器与使用该寄存器的指令之间对应关系的寄存器分配信息;并且所述处理器还包括一个输出由所述寄存器指定字段指定的寄存器中的值的输出端口;和一个输入选择控制单元,可操作用于执行选择和控制以便从所述输出端口输出的值根据由所述寄存器分配信息指示的对应关系被输入到所述运算单元中。换句话说,对于一个源寄存器,检查包括在特长指令字中的每一个指令的操作数规格的标准化。
所述处理器还可以包括一个存储由所述寄存器指定字段指定的寄存器中的值的输入端口;一个输出选择控制单元,可操作用于执行选择和控制,以便由所述运算单元获得的运算结果根据由所述寄存器分配信息指示的对应关系,通过所述输入端口存储在所述寄存器中。换句话说,对于一个目的寄存器,同样检查包含在一个特长指令字中的每一个指令的操作数规格的标准化。
这里,寄存器分配信息可以被分开安排作为多个指令中的寄存器操作数,并且每一个指令中的寄存器操作数可以指示由所述寄存器指定字段指定的寄存器是否被用作该指令的源寄存器和目的寄存器。
这样,在该特长指令字中,放置有共同指定由每一个指令所使用的寄存器的寄存器指定字段。并且,在每个指令中,仅放置有指示是否将使用由寄存器指定字段指定的寄存器的短信息。因此,该特长指令字的尺寸变得很紧密。
同时,可由一个特长指令字使用的寄存器的数量被限制为可由寄存器指定字段指定的寄存器的数量。例如,通过设置这样的限制,即最大可以使用三个源寄存器和一个目的寄存器,在寄存器文件中仅有必要设置少量的输出端口和输入端口。
所述寄存器分配信息可以被安排在所述特长指令字的连续的数位位置,并且可以包括从多个指令中指定使用由所述寄存器指定字段指定的寄存器的指令的信息。换句话说,可以使用集中安排有关每一个指令的操作数信息在该特长指令字的一部分中的指令格式。
另外,寄存器指定字段可以指定多个寄存器。而且,寄存器分配信息可以根据一个预定顺序分配由寄存器指定字段指定的多个寄存器给多个指令。例如,所述寄存器指定字段可以包括指定多个寄存器的多个寄存器单元。并且,寄存器分配信息可以根据所述特长指令字中的多个寄存器单元的排列顺序和多个指令的排列顺序无重叠地分配寄存器给指令。换句话说,寄存器可以区分寄存器指定字段的排列顺序和指令字段的排列顺序的优先次序而隐含地分配。
此外,所述处理器可以进一步包括保存所述运算单元的运算结果的临时寄存器,其中所述寄存器指定字段和所述寄存器分配信息中的至少之一指定所述多个寄存器和所述临时寄存器中的至少一个寄存器。换句话说,不但通用寄存器,而且用于临时保存运算结果的特定寄存器都可以成为每个指令的操作数主体(subject)。
这里,所述处理器可以包括与所述多个运算单元中的每一个对应的多个临时寄存器。临时寄存器可以是在流水线级之间的寄存器,在每一次所述对应的运算单元产生新的运算结果时都保存新的运算结果。并且,所述处理器可以包括有选择性地保存所述多个运算单元中的两个或多个运算单元的运算结果的临时寄存器。换句话说,临时寄存器对于每个运算单元可以是特定寄存器,流水线级之间的寄存器,和被多个运算单元共享的公共寄存器。
同时,为了达到上述目的,根据本发明的编译器目的在于一种包括多个寄存器和多个运算单元的寄存器,其转换一个指令序列为一个特长指令字序列,该编译器包括将所述指令序列分成包括可以并行执行的多个指令的指令组的指令组分类步骤;将每一个被分类的指令组转换成特长指令字格式的格式转换步骤,该特长指令字格式包括一个指定将由该指令组使用的寄存器的寄存器指定字段,指定所述多个指令的多个指令代码和指示由所述寄存器指定字段指定的寄存器与使用该寄存器的指令之间对应关系的寄存器分配信息;以及将每一个已转换成特长指令格式的指令组转换成对应的机器语言的机器语言指令转换步骤。换句话说,该编译器包括将常规格式的特长指令字转换成用于本发明的处理器的特定格式的特性步骤。
这里,所述指令组分类步骤可以包括考虑所述运算单元的数量,而不是可由所述寄存器指定字段指定的寄存器的数量来产生一个指令组的分组步骤;判断由所产生的指令组使用的寄存器的数量是否超过了可由所述寄存器指定字段指定的寄存器的数量的限制判断步骤;以及在由所产生的指令组使用的寄存器的数量超过了可由所述寄存器指定字段指定的寄存器的数量的情况下,将指令组划分成使用可由所述寄存器指定字段指定的寄存器的数量的指令组的指令划分步骤。换句话说,指令组的产生并不考虑寄存器的限制。而且违反寄存器限制的指令组被划分。
另外,所述处理器还包括保存所述运算单元的运算结果的临时寄存器。并且,所述寄存器指定字段指定所述多个寄存器和所述临时寄存器中的至少一个寄存器。这里,所述编译器可以进一步包括在所述多个寄存器和所述临时寄存器中,只分配所述多个寄存器给所述指令的通用寄存器分配步骤;对于已经分配给所述寄存器的指令,判断操作数是否可以用所述临时寄存器替换的替换判断步骤;和替换已经被判断为可以用所述临时寄存器替换的指令的操作数的替换步骤。这样,就可以实现产生特性指令格式的特长指令字的编译器,该格式具有不仅包括通用寄存器,而且还包括临时寄存器的公共寄存器指定字段。
根据本发明,特长指令字包括共同指定由包括在该特长指令字中的每一个指令使用的寄存器的寄存器指定字段。并且,作为包括在特长指令字中每个指令的操作数,只安排了有关使用由所述寄存器指定字段指定的寄存器的短信息。因此,特长指令字的尺寸被减小了。从而,可以减小指令存储器的总线宽度,或者可以减小访问指令存储器的次数。因此,由于提高了指令存储器的总线流通量而使执行能够得到提高。同时,存取指令存储器的能量消耗也能够降低。换句话说,根据本发明的处理器,关于特长指令字的取指,保存,解码等的电路尺寸都可以很小。
此外,被特长指令字使用的寄存器的总数被限制为由寄存器指定字段指定的寄存器的数量。这样,通过设置这种指定寄存器的数量较小,将要设置在寄存器文件中的输出端口和输入端口的数量也可以较小。从这一点来说,该处理器的电路尺寸同样也可以较小。
如上所述,根据本发明,可以实现用较小的电路尺寸并行执行多个运算的高效执行的VLIW处理器。特别是如上所述的这种VLIW处理器作为包括在一个装置中的处理器具有极高的实用价值。
关于本申请的技术背景的进一步信息2004年2月12日提出的申请号为2004-034660的日本专利申请的公开内容,包括说明书,附图和权利要求书,插入在此整体作为参考。


本发明的这些和其它目的,优点和特征从以下结合附图对其的描述中将变得更为清晰,附图中说明了本发明的特定实施例。在附图中附图1是表示根据第一实施例的VLIW处理器执行的特长指令字的指令格式图;附图2是表示所述VLIW处理器的硬件结构框图;附图3A表示一个特长指令字的例子;
附图3B是表示所述特长指令字的位模式(或意义);附图4是表示根据本发明目的在于一个VLIW处理器的编译器的结构的功能框图;附图5是表示所述编译器的特征操作的流程图;附图6是表示根据第二实施例的VLIW处理器执行的特长指令字的指令格式图;附图7是表示一个VLIW处理器的硬件结构框图;附图8A表示一个特长指令字的例子;附图8B是表示所述特长指令字的位模式(或意义);附图9A表示在临时寄存器没有使用的情况下的程序清单;附图9B表示在临时寄存器应用的情况下的相同内容的程序清单;附图10是表示根据第二实施例考虑用于编译器的指令分组单元的临时寄存器而分组的具体过程的流程图;附图11是表示一个共享临时寄存器的VLIW处理器的硬件结构框图;附图12是表示用流水线级之间的寄存器作为临时寄存器的VLIW处理器的硬件结构框图;附图13是表示具有寄存器分配字段的特长指令字的指令格式的一个例子,该寄存器分配字段集成有关于为每个指令分配操作数寄存器的信息;附图14是表示能够指定临时寄存器的指令格式的其它例子;附图15A是表示常规的VLIW处理器执行的一个特长指令字的指令格式的例子;附图15B是表示执行如上所述这种特长指令字的常规VLIW处理器的结构的一个例子。
优选实施例(第一实施例)附图1是表示根据第一实施例的VLIW处理器执行的特长指令字的指令格式。如附图1中所示,该特长指令字为47位长,并且包括一个寄存器指定字段和三个指令字段。
寄存器指定字段是一个公共字段,其指定用在三个指令字段中的寄存器,并且包括四个寄存器指定区域(一个目的寄存器dst和指定三个源寄存器srcA-srcC的位字段)。寄存器指定区域dst以及srcA-srcC中的每一个都具有5位,用于指定包括在VLIW处理器中的32个通用寄存器(寄存器文件)中的一个寄存器。
所述三个指令字段(第一-第三个指令字段)排列成三个可以并行执行的指令(指令#1-#3)。在寄存器运算指令的情况下,每个指令字段中放置一个6位的操作码和一个3位的操作数。
该3位的操作数指示由所述特长指令字的寄存器指定字段指定的寄存器是否将被使用。特别是,该操作数的第一位src1指示由寄存器指定字段指定的源寄存器(srcA-srcC中的一个)是否将被用作指令(“1”)或非(“0”)的第一源寄存器。第二位src1指示由寄存器指定字段指定的源寄存器(srcA-srcC中的一个)是否将被用作指令(“1”)或非(“0”)的第二源寄存器。并且,第三位dst指示由寄存器指定字段指定的目的寄存器dst是否将被用作指令(“1”)或非(“0”)的目的寄存器。
这里,以下的规则针对每个指令所使用的寄存器的特定分配而存在。
(1)由寄存器指定字段指定的四个寄存器(dst和srcA-srcC)被包含在特长指令字中的三个指令中的一个使用,而且它们不能被两个或多个指令多次使用。
(2)由寄存器指定字段指定的三个源寄存器srcA-srcC按照srcA,srcB和srcC的顺序,从具有最高优先级的那一个开始被每个指令使用。
(3)由寄存器指定字段指定的三个源寄存器srcA-srcC按照指令#1,指令#2和指令#3的顺序,从具有最高优先级的那一个开始被分配。
例如,在指令#1-#3的操作数(src1,src2和dst)分别是“100”,“111”和“000”的情况下,其含义如下指令#1指示寄存器srcA为一个源寄存器;指令#2指示寄存器srcB和srcC为源寄存器并且指定寄存器dst为目的寄存器;指令#3不指示操作数中的任何寄存器。
附图2是表示根据第一实施例的VLIW处理器10的硬件结构框图。在附图2中仅有VLIW处理器10的特征部分,也就是,涉及寄存器运算的部件被示出,而诸如执行与存储器进行数据传输的输入/输出端口这样的普通部件被省略。在附图2中实线主要表示数据流,而虚线主要表示控制流。
如附图2所示,VLIW处理器10包括一个指令寄存器11,一个寄存器文件12,一个输入选择器13,第一-第三运算单元14a-14c,一个输出选择器15和一个解码单元16。
指令寄存器11保存从存储器取出的特长指令字。
寄存器文件12是32个通用寄存器的集合,并且包括三个输出端口,其向输入选择器13输出由保存在指令寄存器11中的特长指令字的寄存器指定字段的源寄存器指定区域srcA-srcC指定的三个寄存器的值;和一个输入端口,用于将从输出选择器15中输出的值存储在由特长指令字的寄存器指定字段的目的寄存器指定区域dst指定的一个寄存器中。
输入选择器13在解码单元16的控制下将分别从寄存器文件12输出的三个值输出到第一-第三运算单元14a-14c中的每一个中。
第一-第三运算单元14a-14c是算术逻辑单元(ALU)和类似的单元。第一-第三个运算单元14a-14c计算最大两个的输入值,然后将结果输出给输出选择器15。
输出选择器15将由第一-第三运算单元14a-14c中选择的一个运算单元输出的值输出给寄存器文件12(一个由保存在指令寄存器11中的特长指令字的寄存器指定字段的目的寄存器指定区域dst指定的寄存器)。
解码单元16是一个这样的电路,其通过解码包含在保存于指令寄存器11中的特长指令字中的三个指令来控制每一部件。例如,解码单元16根据包含在三个指令#1-#3中的源寄存器指定位src1和src2控制输入选择器13。同时,解码单元16根据目的寄存器指定位dst控制输出选择器15。这样,解码单元16就根据上述的规则执行控制,以便由特长指令字的寄存器指定字段指定的寄存器被用作指令#1-#3的源寄存器或目的寄存器。
下面,将对根据如上所述形成的第一实施例的VLIW处理器10的特定运算进行说明。
附图3A表示一个特长指令字的例子。这里,示出了包括三个指令#1-#3的特长指令字。指令#1(add r4,r1,r2)是一个用于相加寄存器r1中的值和寄存器r2中的值,并将结果存储到寄存器r4中的指令。指令#2(st(0),r3)是一个用于将寄存器r3中的值存储到存储器的“0”地址的指令。指令#3(br AAA)是一个用于转移指令到地址AAA的指令。
附图3B是表示如附图3A所示特长指令字的位模式。如附图3B中所示,寄存器指定字段的目的寄存器指定区域dst指定寄存器r4。源寄存器指定区域srcA-srcC分别指定寄存器r1,r2和r3。指令#1指定操作码“add”和操作数“111”。指令#2指定操作码“st(0)”和操作数“100”。并且指令#3指定操作码“br AAA”和操作数“000”。
如上所述取指特长指令字的VLIW处理器10执行以下运算。
寄存器文件12根据包括在保存于指令寄存器11中的特长指令字的寄存器指定字段中的三个源寄存器指定区域srcA-srcC的值,通过三个输出端口向输入选择器13输出三个寄存器r1,r2和r3的存储值。同时,执行连接控制,以便基于目的指定单元dst中的值,将从输出选择器15中输出的值通过输入端口输入到寄存器r4中。
另一方面,由于指令#1的操作数是“111”,解码单元16控制输入选择器13使得由源寄存器指定区域srcA和srcB指定的寄存器r1和r2的值输入到第一运算单元14a。同时,解码单元16控制输出选择器15使得运算结果存储在由目的寄存器指定区域dst指定的寄存器r4中。并且,由于指令#2的操作数是“100”,解码单元16控制输入选择器13使得由源寄存器指定区域srcC指定的寄存器r3中的值被输入到第二运算单元14b。在执行不涉及寄存器运算的控制(关于指令“st”的存储传输,关于指令“br” 的程序计数器的更新等等)的情况下,VLIW处理器10执行与常规VLIW处理器类似的运算。
因此,并行执行下面的处理(i)将寄存器r1中的值和寄存器r2中的值在第一运算单元14a中相加,而且相加的结果存储在寄存器r4中(即,执行“add r4,r1,r2”);(ii)将寄存器r3中的值(在传送到第二运算单元14b之后)存储在第二运算单元14b中的存储器的“0”地址中,(iii)执行控制转移指令到地址AAA。
如上所述,根据第一实施例的VLIW处理器10,对于一个特长指令字,在每个指令字段中放置一个公共寄存器指定区域,并且在每个指令字段中仅安排指示是否将使用寄存器的小量信息。这样,指令尺寸变得紧密,而且根据本发明的VLIW处理器10能够以比常规处理器更小的电路尺寸来实现。此外,根据第一实施例的VLIW处理器10的寄存器文件12仅包括三个输出端口和一个输入端口。这样,硬件的复杂性可以减小。
附图4是表示根据本发明的目的在于VLIW处理器10的编译器20的结构功能框图。编译器20将用诸如C语言这样的高级语言编写的源程序25转换成用于VLIW处理器10的机器语言程序26。并且,编译器20包括一个中间语言转换单元21,一个指令分组单元22,一个格式转换单元23和一个机器语言指令转换单元24。
中间语言转换单元21通过语法分析及类似的分析将用高级语言编写的源程序25转换成一个中间语言的指令序列。这里,中间语言是编译器20的特定语言,其具有一个接近于符合一对一的机器语言指令的汇编程序指令的表格形式。并且,中间语言在分配一个特定资源(32个寄存器等)之前以逻辑制表形式编写。
指令分组单元22通过分组每个特长指令字的中间语言转换单元21中输出的指令序列来执行并行的调度。这里,执行分组,以便在包含在VLIW处理器中的资源的范围内尽可能地将三个指令压缩在一个特长指令字中。例如,最多使用三个寄存器作为源寄存器。并且,在最多使用一个寄存器作为目的寄存器的范围内,将三个指令分组在一个特长指令字中。
格式转换单元23将包括在由指令分组单元22产生的每个指令组中的多个指令转换成如附图1所示的指令格式。换句话说,寄存器指定字段通过提取由包括在一个指令组中的多个指令所使用的所有寄存器而产生。而且,每个指令的操作数是通过将由每个指令使用的寄存器与寄存器指定字段相关联而产生。例如,包括如附图3A中所示的三个指令的指令组被转换成如附图3B中所示的格式的特长指令字。这里,也分配诸如寄存器之类的资源。
机器语言指令转换单元24通过用包括在已由格式转换单元23完成格式转换的特长指令字序列中的相应机器语言指令替换每个指令来产生机器语言程序26。
附图5是表示如上所述形成的编译器20的特征运算的流程图。这里示出了通过指令分组单元22分组的具体过程,也就是依靠如附图1中所示的特长指令字的格式的指令的分组。
首先,指令分组单元22对从中间语言转换单元21输出的指令序列执行分组,而不考虑寄存器的限制(这里,用在一个特长指令字中的源寄存器的最大数量是3,用在一个特长指令字中的目的寄存器的最大数量是1),这样三个指令被压缩在一个特长指令字中(S10)。
其次,指令分组单元22判断已被分组的特长指令字是否满足如上所述的寄存器限制(S11)。
结果,在寄存器限制没有满足的情况下(S12中的否),所述特长指令字被分割使得分成满足寄存器限制的特长指令字(S13)。
例如,由于压缩了指令#1、指令#2和指令#3的特长指令字不满足寄存器限制,其中指令#1使用两个源寄存器和一个目的寄存器,指令#2使用一个源寄存器,并且指令#3使用两个源寄存器和一个目的寄存器,因此该特长指令字被分成,例如,包括指令#1和指令#2的第一特长指令字,和仅包括指令#2的第二特长指令字。同时,在通过划分所获得的特长指令字中具有足够的空间用于寄存器限制的特长指令字可以作为一个主体,用于通过重复上面提到的步骤S10等与其它指令压缩。
如上所述,根据第一实施例的编译器20,从源程序25生成用于VLIW处理器10的机器语言程序26。换句话说,生成考虑了取决于VLIW处理器10的特长指令字指令格式的寄存器限制的特长指令字序列。
根据本发明的第一实施例的VLIW处理器10,每一个指令并没有重叠使用这四个由所述特长指令字的寄存器指定字段指定的寄存器(规则(1))。然而,如果允许放大某些硬件尺寸则该限制可以被消除。例如,由寄存器指定字段指定的寄存器r1可以被并行用作指令#1和指令#2的源寄存器。在上述的这种情况下,指定srcA-srcC之一的2位可以被分配作为每个指令的源寄存器指定区域和操作数指定单元。与每个指令需要5位以便指定寄存器的常规特长指令字相比,指令尺寸总体上被减小。
对于根据第一实施例的特长指令字来说,每个指令的操作数指示是否将使用由寄存器指定字段指定的寄存器。然而,在寄存器没有被使用的情况下,可以定义指令图使得操作码指示它。例如,指令图可以被定义以使得操作码指定指令所使用的源寄存器和目的寄存器的数量,并且操作数分配与上述源寄存器和目的寄存器的数量相对应的可变长位数。
(第二实施例)接下来,将说明根据第二实施例的VLIW处理器和编译器。根据第二实施例的VLIW处理器执行与第一实施例相似的特性指令格式的特长指令字。然而,根据第二实施例的VLIW处理器除了寄存器文件之外还包括临时保存运算结果的临时寄存器。下面将重点解释根据第二实施例的VLIW处理器和编译器与第一实施例的不同之处。
附图6是表示根据第二实施例的VLIW处理器执行的特长指令字的指令格式。如附图6中所示,该特长指令字是56位长,并且包括一个寄存器指定字段和三个指令字段。
与第一实施例一样,包括在寄存器指定字段中的每一个寄存器指定区域dst和srcA-srcC都具有5位以便指定包括在根据第二实施例的VLIW处理器中的32个通用寄存器中的一个。然而,根据第二实施例的VLIW处理器与第一实施例的不同之处在于每个指令字段的操作数有6位。
6位的操作数包括指定第一源寄存器的2位的第一源指定单元src1,指定第二源寄存器的2位的第二源指定单元src2和指定目的寄存器的2位的目的指定单元dst。
每个2位的指定单元src1、src2和dst的第一位(每2位的较高位)与根据第一实施例的每个指令字段的操作数相似,并且指示由特长指令字的寄存器指定字段(dst和srcA-srcC)所指定的寄存器(也就是通用寄存器)是否将被使用。另一方面,第二位(每2位的较低位)指示在根据第二实施例的VLIW处理器所包括的三个临时寄存器中对应于所述指令字段的临时寄存器是否将被使用(“1”)或非(“0”)。
例如,如果指令#1的源指定单元src1是“01”,则意味着对于第一运算单元,指令#1使用临时寄存器作为源寄存器。如果指令#2的目的指定单元dst是“01”,则意味着对于第二运算单元,指令#2使用临时寄存器作为目的寄存器。如果指令#3的源指定单元src2是“10”,则意味着指令#3使用由特长指令字的寄存器指定字段指定的寄存器作为源寄存器。
附图7是表示根据第二实施例的VLIW处理器30的硬件结构的框图。如附图7中所示,VLIW处理器30包括一个指令寄存器31,一个寄存器文件12,一个输入选择器33,第一-第三运算单元14a-14c,一个输出选择器15,一个解码单元36和三个临时寄存器37a-37c。这里,与第一实施例相似的部件提供相同的标记,并且其解释将被省略。
指令寄存器31保存从存储器中获取的56位长的特长指令字。
输入选择器33在解码单元36的控制下对从寄存器文件12输出的三个值和从三个临时寄存器37a-37c输出的值进行排序并输出给第一-第三运算单元14a-14c中的一个。
解码单元36是一个电路,用于解码包括在保存于指令寄存器31的特长指令字中的三个指令,并且控制每一个部分。例如,解码单元36根据包括在三个指令#1-#3中的源寄存器指定位src1和src2控制对输入选择器33和临时寄存器37a-37c的存储。同时,解码单元36根据目的寄存器指定位dst控制输出选择器15。因此,解码单元36根据上述的这些规则执行控制使得由特长指令字的寄存器指定字段指定的寄存器和临时寄存器37a-37c被用作指令#1-#3的源寄存器或目的寄存器。
临时寄存器37a-37c的每一个寄存器临时保存由第一-第三运算单元14a-14c产生的每个运算结果,并且当其收到来自解码单元36的保存指令时接受该运算结果。
下面,将对根据第二实施例如上所述构成的VLIW处理器30的具体操作进行说明。
附图8A表示一个特长指令字的例子。这里示出了包括三个指令#1-#3的特长指令字。指令#1(add r8,RegA,r2)将临时寄存器37a(RegA)中的值和寄存器r2中的值相加,然后将相加的结果存储在寄存器r8中。指令#2(not RegB,r5)对寄存器r5中的值取反,然后将取反的结果存储在临时寄存器37b(RegB)中。指令#3(st(0),r1)将寄存器r1中的值存储在存储器的“0”地址。
附图8B是表示如附图8A中所示的特长指令字的位模式(或其含义)。如附图8B中所示,寄存器指定字段的目的寄存器指定区域dst指示寄存器r8。源寄存器指定区域srcA-srcC中的每一个指示寄存器r2,r5和r1。指令#1指示操作码“add”和操作数“011010”。指令#2指示操作代码“not”和操作数“100001”。指令#3指示操作码“st(0)”和操作数“100000”。
如上所述已获取这种特长指令字的VLIW处理器30具有下面的运算。
基于包括在保存于指令寄存器31中的该特长指令字的寄存器指定字段中的三个源寄存器指定区域srcA-srcC中的值,寄存器文件12通过三个输出端口输出三个寄存器r2,r5和r1的存储值给输入选择器33。同时,基于目的指定单元dst中的值,执行连接控制使得从输出选择器15输出的值通过输入端口被输入到寄存器r8中。
另一方面,当指令#1的操作数是“011010”时,解码单元36控制输入选择器33使得临时寄存器37a中的值和由源寄存器指定区域srcA指定的寄存器r2中的值输入到第一运算单元14a中。同时,解码单元36控制输出选择器15使得运算结果存储在由目的寄存器指定区域dst指定的寄存器r8中。当指令#2的操作数是“100001”时,解码单元36控制输入选择器33使得由源寄存器指定区域srcB指定的寄存器r5中的值输入到第二运算单元14b中。同时,解码单元36控制临时寄存器37b使得运算结果存储在临时寄存器37b中。并且,当指令#3的操作数是“100000”时,解码单元36控制输入选择器33使得由源寄存器指定区域srcC指定的寄存器r1中的值输入到第三运算单元14c中。
结果,并行执行以下过程。临时寄存器37a(RegA)中的值和寄存器r2中的值在第一运算单元14a中相加。相加的结果存储在寄存器r8中(即执行“add r8,RegA,r2”)。寄存器r5中的值在第二运算单元14b中取反。取反的结果被存储在临时寄存器37b(RegB)中(即执行“not RegB,r5”)。并且寄存器r1中的值(在通过第三运算单元14c之后)被存储在第三运算单元14c的存储器的“0”地址。
如上所述,根据第二实施例的VLIW处理器30,对于一个特长指令字,在每个指令字段中放置一个公共的寄存器指定区域,并且只安排指示是否将使用通用寄存器和临时寄存器的小量信息。这样,像第一实施例一样,指令尺寸被简化了,而且根据该发明的VLIW处理器30能够以比常规更小的电路尺寸来实现。此外,根据第二实施例的VLIW处理器30的寄存器文件12仅包括三个输出端口和一个输入端口。这样,能够减小硬件的复杂性。
同时,根据第二实施例的VLIW处理器30包括一个临时保存运算结果的临时寄存器。这样,与根据第一实施例仅包括32个通用寄存器的VLIW处理器相比,寄存器限制变得适度,并且特长指令字的压缩率,也就是指令的并行率能够得到提高。
附图9A和附图9B用于说明根据第二实施例的VLIW处理器30所包括的临时寄存器37a-37c的作用。附图9A表示在不使用临时寄存器的情况下的程序清单。附图9B表示在使用临时寄存器的情况下相同处理内容的程序清单。
正如通过比较这两个程序所认识到的,通过使用临时寄存器减少了通用寄存器所需的数量。并且可以将第二-第五指令的三个指令压缩在一个特长指令字中(与附图8中所示的相同)。换句话说,如附图9A中所示的第二-第五指令的三个指令共使用了四个源寄存器和两个目的寄存器,并没有履行寄存器限制(最大为三个源寄存器和一个目的寄存器)。然而,如附图9B中所示的第二-第五指令的三个指令就履行了寄存器限制。这样就有可能通过分配临时寄存器来将三个指令集成在一个特长指令字中。并且指令的并行率能够提高。
目的在于根据第二实施例的VLIW处理器30的编译器包括与第一实施例相似的功能结构。然而,除了第一实施例的功能外,考虑到临时寄存器37a-37c的分配,根据第二实施例的编译器的指令分组单元执行指令的分组。
附图10表示根据第二实施例的考虑临时寄存器的通过该编译器的指令分组单元分组的具体过程。
首先,指令分组单元执行从中间语言转换单元21中输出的指令序列的分组而不考虑寄存器的限制(这里,用在一个特长指令字中的源寄存器的最大数量是3,而目的寄存器的最大数量是(1),这样三个指令被压缩在一个特长指令字中(S20)。
接着,指令分组单元判断已经分组的特长指令字是否履行如上所述的这种寄存器限制(S21)。这里,指令分组单元还考虑临时寄存器是否可以被用作操作数寄存器。换句话说,指令分组单元存储指令序列的运算结果在该寄存器中。之后,如果有涉及到该寄存器的部分,则指令分组单元分配该寄存器给临时寄存器。这样,指令分组单元尽可能地考虑履行如上所述的寄存器限制。
结果,在通过使用临时寄存器履行寄存器限制的情况下(S22中的是),通用寄存器被临时寄存器代替(S24)。在没有履行寄存器限制的情况下(S22中的否),特长指令字被分割构成一组履行寄存器限制的特长指令字(S23)。从而,生成使用尽可能多的临时寄存器的机器语言程序26。
如上所述,根据第二实施例的编译器,从源程序25生成用于VLIW处理器30的机器语言程序26。换句话说,就是生成取决于VLIW处理器30的特长指令字的指令格式并使用尽可能多的临时寄存器的特长指令字序列,该特长指令字序列具有考虑寄存器限制的高并行率。
在根据第二实施例的VLIW处理器30中,临时寄存器37a-37c中的一个被提供给第一-第三运算单元14a-14c中的每一个。然而,如附图11中所示的VLIW处理器,两个或多个运算单元可以共享一个临时寄存器。在上述的这种情况下,编译器可以保证运算结果不会被两个或多个相同特长指令字的指令同时存储在公共的临时寄存器中,并且该值在持续时间问隔不会被公共运算单元破坏。
同时,根据第二实施例的VLIW处理器30,其有可能选择第一-第三运算单元14a-14c的运算结果是否将被存储在临时寄存器37a-37c中。然而,如附图12中所示的电路图,运算结果总是存储在临时寄存器中的构造也是可以的。换句话说,根据第二实施例锁存运算结果的流水线之间的寄存器可以被用作临时寄存器。在保存来自运算单元的输出值之后,这种寄存器持续保存这些值直到运算单元执行新的运算。在此期间,如上所述的这种寄存器可以以与根据第二实施例的临时寄存器相同的方式来处理。
如上所述,基于实施例对根据该发明的VLIW处理器和编译器作了说明。然而,本发明并不局限于上述这些实施例。
例如,根据上述的这些实施例,有关操作数寄存器的使用的信息(用/不用)被放置在特长指令字的每个指令中。然而,本发明并不局限于上述的这种指令格式。并且,如附图13中所示的指令格式,对于每个指令,可以在特长指令字中设置一个仅集成了关于操作数寄存器的分配信息的寄存器分配字段。
如附图13中所示的指令格式是如附图1中所示的指令格式的变化的一个例子。例如,在一个特长指令字的5个最低有效位中,设置一个指示分配操作数寄存器给指令#1-#3的规则的寄存器分配字段。该寄存器分配字段包括一个指定源寄存器的分配的3位源指定单元src和一个指定目的寄存器的分配的2位目的指定单元dst。如附图13中所示的源指定单元src,指示被指令#1-#3的每一个所使用的源寄存器的数量的组合。目的指定单元dst指示使用目的寄存器的指令位置(“指令#1”,“指令#2”,“指令#3”,“无”等)。通过设置这样的寄存器分配字段指示特长指令字中的分配规则,就没有必要在每个指令中放置关于寄存器操作数的信息。这样,总体上,可以减小特长指令字的尺寸。
同时,根据第二实施例,使用临时寄存器的指令格式的例子在附图6和附图8B中示出。然而,本发明并不局限于上述的这种指令格式。例如,如附图14中所示,每个指令的操作数可以由5位构成。附图14表示具有和附图8B中所示的相同的指令格式内容的另一个指令格式的例子。这里,5位的操作数从上开始包括每2位的源指定单元src1和src2以及1位的目的指定单元dst。每个2位的源指定单元src1和src2指示通用寄存器或临时寄存器中哪一个将被用做源寄存器。并且,目的指定单元dst指示属于每个运算单元的通用寄存器或临时寄存器中哪一个将被使用。同时,不需要指定一个寄存器的信息包括在操作码单元中。根据上述这样的指令格式,通过指令#1-#3中的任何一个,可以指定作为源寄存器的临时寄存器并不局限于符合位置的临时寄存器(可以指定临时寄存器RegA-RegC中的任何一个)。
另外,根据上述这样的实施例,特长指令字包括三个指令。然而,本发明并不局限于上述这样的并行率,也可以包括四个或更多的指令。并行包括的指令越多,可以获得本发明的指令格式的效果越多(减小指令尺寸)。
虽然以上仅详细描述了本发明的某些典型的实施例,但是那些本领域技术人员将会很容易理解在本质上不脱离本发明的新颖性教导和优点的情况下这些典型的实施例可以有很多的改进。因此,所有这些改进都要包括在本发明的范围之内。
工业用途根据该发明的处理器可以被用作一个执行多个指令等的VLIW处理器,特别是用作一个以小的电路尺寸要求执行很高的处理的处理器,例如,用作一个包括在诸如DVD播放器和便携式电话中的电子设备的处理器。
权利要求
1.一种具有多个寄存器和多个运算单元的处理器,其执行特长指令字,该特长指令字包括(i)一个寄存器指定字段,指定所述多个寄存器中的至少一个寄存器,(ii)多个指令,指定使用所述运算单元的运算,以及(iii)寄存器分配信息,指示由所述的寄存器指定字段指定的寄存器与使用该寄存器的指令之间的对应关系,所述处理器包括输出端口,其输出由所述寄存器指定字段指定的寄存器中的一个值;和输入选择控制单元,用于执行选择和控制,以便从所述输出端口输出的值根据所述寄存器分配信息指示的对应关系被输入到所述运算单元中。
2.根据权利要求1所述的处理器,还包括输入端口,将一个值存储到由所述寄存器指定字段指定的寄存器中;和输出选择控制单元,用于执行选择和控制,以便由所述运算单元获得的运算结果根据由所述寄存器分配信息指示的对应关系,通过所述输入端口存储在寄存器中。
3.根据权利要求1所述的处理器,其中所述寄存器分配信息被分开安排作为所述多个指令中的寄存器操作数,并且每一个指令中的寄存器操作数指示由所述寄存器指定字段指定的寄存器是否被用作该指令的源寄存器和目的寄存器。
4.根据权利要求1所述的处理器,其中所述寄存器分配信息被排列在所述特长指令字的连续比特位置,并且包括从所述多个指令中指定使用由所述寄存器指定字段指定的寄存器的指令的信息。
5.根据权利要求1所述的处理器,其中所述寄存器指定字段指定多个寄存器,并且所述寄存器分配信息根据预定顺序分配由所述寄存器指定字段指定的多个寄存器给所述多个指令。
6.根据权利要求5所述的处理器,其中所述寄存器指定字段包括多个寄存器子字段,每一个子字段指定多个寄存器中的一个寄存器,并且所述寄存器分配信息根据所述特长指令字中的多个寄存器单元的排列顺序和多个指令的排列顺序无重叠地分配寄存器给这些指令。
7.根据权利要求1所述的处理器,还包括保存所述运算单元的运算结果的临时寄存器,其中所述寄存器指定字段和所述寄存器分配信息中的至少一个指定所述多个寄存器和所述临时寄存器中的至少一个寄存器。
8.根据权利要求7所述的处理器,包括多个对应于所述多个运算单元中的每个运算单元的临时寄存器。
9.根据权利要求8所述的处理器,其中所述临时寄存器是流水线级之间的寄存器,每一次所述对应的运算单元产生新的运算结果时该寄存器都保存新的运算结果。
10.根据权利要求7所述的处理器,包括临时寄存器有选择性的保存从所述多个运算单元中的两个或多个运算单元产生的运算结果。
11.一种编译器,目的在于一种具有多个寄存器和多个运算单元的处理器,其转换一个指令序列为一特长指令字序列,该编译器包括将所述指令序列分成包括可以并行执行的多个指令的指令组的指令组分类步骤;将每一个被分类的指令组转换成特长指令字格式的格式转换步骤,该特长指令字格式包括一个指定将由该指令组使用的寄存器的寄存器指定字段,指定所述多个指令的多个指令代码和指示由所述寄存器指定字段指定的寄存器与使用该寄存器的指令之间对应关系的寄存器分配信息;以及将每一个已转换成特长指令格式的指令组转换成对应的机器语言的机器语言指令转换步骤。
12.根据权利要求11所述的编译器,其中所述指令组分类步骤包括考虑所述运算单元的数量,而不是可以由所述寄存器指定字段指定的寄存器的数量来产生一个指令组的分组步骤;判断由所产生的指令组使用的寄存器的数量是否超过了可由所述寄存器指定字段指定的寄存器的数量的限制判断步骤;以及在由所产生的指令组使用的寄存器的数量超过了可由所述寄存器指定字段指定的寄存器的数量的情况下,将指令组划分成使用可由所述寄存器指定字段指定的寄存器的数量的指令组的指令划分步骤。
13.根据权利要求11所述的编译器,其中所述处理器还包括保存从所述运算单元产生的运算结果的临时寄存器,并且所述寄存器指定字段指定所述多个寄存器和所述临时寄存器中的至少一个寄存器。
14.根据权利要求13所述的编译器,还包括在所述多个寄存器和所述临时寄存器中,只分配所述多个寄存器给所述指令的通用寄存器分配步骤;对于已经分配给所述寄存器的指令判断操作数是否可以用所述临时寄存器替换的替换判断步骤;和替换已经被判断为可以用所述临时寄存器替换的指令的操作数的替换步骤。
全文摘要
一种具有指令集的VLIW处理器,其尺寸减小以便需要较小的位数来指定寄存器。该VLIW处理器10包括寄存器文件12,第一至第三运算单元14a-14c等,并且执行特长指令字。该特长指令字包括寄存器指定字段,其指定寄存器文件12中最小的一个寄存器和多个指令。每个指令的操作数具有src1 src2和dst位,指示由寄存器指定字段指定的寄存器是否将被用作源寄存器和目的寄存器。
文档编号G06F15/00GK1655118SQ20041008175
公开日2005年8月17日 申请日期2004年12月30日 优先权日2004年2月12日
发明者影山贵洋, 西田英志, 田中健, 中岛广二 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1