带有复制寄存器文件的vliw处理器的制作方法

文档序号:6422456阅读:158来源:国知局
专利名称:带有复制寄存器文件的vliw处理器的制作方法
技术领域
本发明涉及一种数据处理设备,其所具有的指令字包含了用于多个并行功能部件的指令,例如超长指令字(VLIW)处理设备。
VLIW处理器包含多个能够执行来自程序的指令的功能部件。指令以包含用于多个并行功能部件的指令的指令字的形式发出。通过寄存器文件在功能部件之间传送操作数数据。每个寄存器文件包含一组寄存器和用于访问选中的寄存器的多个读和写端口。每个功能部件(或功能部件组)耦合到不同的端口组。因而,一个功能部件能够读取由其它功能部件产生的操作数并写下结果供其它功能部件使用。
实际上VLIW处理器可以包括非常多的功能部件。这使得无法耦合所有功能部件到单个寄存器文件。作为一种替代体系结构,已经提出将功能部件组织成集群。对每个集群提供一个寄存器文件,以使一个集群中的所有功能部件耦合到这个集群的端口。在这种体系结构中由某个特定功能部件产生的结果只能由与该特定功能部件同属一个集群的功能部件从寄存器文件读取。在这后面的思想是来自需要交换结果的不同任务的指令通常只由功能部件的子集执行,即由某一特定集群中的功能部件执行。因此那些任务不需要到集群之外的寄存器文件的连接。
不过,有时需要在不同集群的功能部件之间交换有限的操作数和结果。已经提出了多种不同的解决方案来从一个寄存器文件传送数据到另一个寄存器文件,以使一个集群中的功能部件所产生的结果可以由别的集群中的功能部件使用。
美国专利号6,269,437公开了具有多个寄存器文件和一个复制器的处理器。该复制器执行在不同寄存器文件中指定源和目标寄存器的指令。该复制器与所述寄存器文件的读和写端口相耦合。该复制器响应指令而从源寄存器复制数据到目标寄存器。
当编译该处理器的一个程序时编译器生成用于多种不同功能部件的一个指令集合并确定分别产生和使用特定结果的指令之间的依赖关系。编译器确定由不属于相同集群(没有耦合到一个共同的寄存器文件的端口)的功能部件执行的指令之间何时存在这种依赖关系。假使这样,编译器就为复制器生成一条指令以将生产指令的结果复制到与执行该使用指令的功能单元相耦合的寄存器文件中的一个寄存器。
这项技术对指令字的生成施加了额外的调度限制。在生产指令执行之后,必须调度复制指令,然后是使用指令。所涉及的寄存器必须至少保持分配到相关指令已经执行过为止。这降低了处理器的效率。
除了别的以外,本发明的一个目标是为使用分布在不同寄存器文件上的寄存器,具有多个能并行执行来自一个指令字的指令的功能部件的数据处理设备提高效率。
权利要求1中阐明了依照本发明的数据处理设备。依照本发明提供了一个特殊的复制寄存器文件,它充当复制功能部件的操作数源。写到寄存器文件的寄存器中的结果被作为产生该结果的指令执行的一部分复制到复制寄存器文件,即不需要额外的指令。复制功能部件由来自指令字的指令控制。复制功能部件的指令指示哪些结果需要从复制寄存器文件复制到其它寄存器文件。
优选地,其中复制寄存器文件通过一个端口耦合链路与寄存器文件的至少部分端口相耦合,用于将写入到那些端口中各端口的数据各自复制到复制寄存器文件中一个相应寄存器中,该相应寄存器的选择依赖于该相应的写入端口,但与用来向该相应的端口提供数据所用的寄存器地址至少部分无关。因而,对每个源寄存器文件在复制寄存器文件中只需要有限数量的复制寄存器,少于源寄存器文件中寄存器的总数。优选地,完全独立于寄存器地址选择复制寄存器。
原则上,写入普通寄存器的每个结果可以被自动复制到复制寄存器文件。但是,这可能会导致覆盖需要从复制寄存器文件复制出的先前的结果。为了限制或防止不必要的复制,依照本发明的数据处理设备的一种实施方案使用的指令包括一个指示是否必须将指令中至少一条指令的结果复制到复制寄存器文件的字段,端口耦合链路被安排用来根据所述字段中的值复制数据。因而,可以由程序防止不必要的覆盖,为复制指令留下更多时间用于从复制寄存器文件复制。
本发明的主要应用是不具有耦合到相同寄存器文件的端口的功能部件的寄存器文件之间的结果复制。进一步的应用是减小寄存器使用上的压力,即在一个寄存器文件之外临时保存数据,以便使该寄存器文件中的寄存器可以用于其它数据。假使这样就用复制寄存器文件保存最初写入到一个寄存器文件随后又被覆盖的结果,随后当需要该结果时可以再次写回那个寄存器文件。写回可以从复制寄存器文件直接进行,或者在存储在另一寄存器文件之后或在另一寄存器文件中进行。
将用下列附图阐明该数据处理设备的这些和其它目标以及优势方面、数据处理的方法以及编译指令字的方法。


图1示出了一种数据处理设备。
图2示出了一个复制寄存器文件。
图3示出了为该处理设备生成一个程序的流程图。
图1示出了一种具有指令发射部件10、功能部件12a-d、复制功能部件14、寄存器文件16a-b和复制寄存器文件18的数据处理设备。指令发射部件10具有与功能部件12a-d和复制功能部件14相耦合的发射槽连接。指令发射部件10设计用来发射指令字,每个指令字包含一个指令组合,每个指令用于功能部件12a-d和复制功能部件14中相应的一个。为此目的,指令发射部件10通常包含指令存储器、程序计数器和可选的指令解压缩电路,但因为这些是众所周知的并且与本发明无关就不再单独示出。
第一和第二功能部件12a,b具有与第一寄存器文件16a的读端口15a,b耦合的操作数输入。第一和第二功能部件12a,b具有与第一寄存器文件16a的写端口17a,b耦合的结果输出端口。同样,第三和第四功能部件12c,d具有与第二寄存器文件16b的读端口耦合的操作数输入。第三和第四功能部件12c,d具有与第二寄存器文件16b的写端口17c,d耦合的结果输出。读和写端口包括寄存器寻址部件(未单独示出)以在指令中寄存器选择字段的控制下寻址寄存器文件16a,b中的寄存器。读端口各自包括一个寄存器内容连接(未单独示出)用于将地址寄存器的内容提供给功能部件12a-d。写端口各自包括一个结果连接(未单独示出)用于将功能部件12a-d的结果提供给寄存器文件16a,b。
功能部件12a-d可以是任意类型,例如算术逻辑部件(LAU)或存储访问部件等。尽管只示出了有限数量的功能部件,但应该理解实际中可以提供多得多的功能部件。同样,可以提供很多寄存器文件。如图所示,每个寄存器文件16a,b规定了一个与该寄存器文件相连的功能部件12a-d集群。作为例子,每个功能部件12a-d只与一个寄存器文件相耦合,但应该理解通过寄存器文件选择硬件一些功能部件12a-d可以使输入和/输出耦合到不止一个寄存器文件16a,b,以便可以在指令的控制下选择那些寄存器文件中任意一个中的寄存器从中读出和/或从那些功能部件写入。但是,优选地每个功能部件12a-d只与一个寄存器文件相耦合,因为连接到多个寄存器文件增加了所需端口数、指令宽度、硬件成本及延迟。
尽管将依据功能部件12a-d描述本发明,但您将理解功能部件12a-d中的一个或多个可以由一组共享相同读写端口并可替换执行指令的功能部件代替。
复制寄存器文件18的输入耦合到寄存器文件16a,b的每一个写端口17a-d。复制寄存器文件还有一个读端口耦合到复制功能部件14的操作数输入。复制功能部件14的结果输出19a,b耦合到寄存器文件16a,b的相应端口。
在操作中,指令发射部件10发射指令字,每个指令字包含一个指令组合,每条指令用于功能部件12a-d和复制功能部件14中相应的一个。用于功能部件12a-d的指令通常包含操作代码、第一和第二操作数寄存器选择代码及结果寄存器选择代码。操作代码命令该功能部件选择特定的操作类型,操作数寄存器选择代码及结果寄存器选择代码被提供给寄存器文件的端口以分别选择操作数和结果寄存器。
当结果被写入到寄存器文件16a,b时,至少部分结果被自动复制到复制寄存器文件18的寄存器中。复制功能部件14执行指令以复制复制寄存器文件18中寄存器的内容到寄存器文件16a,b中寻址到的寄存器。
复制功能部件14的指令通常包含复制寄存器文件18中包含操作数数据的操作数寄存器的地址以及对数据应该被复制到的结果寄存器的说明。结果寄存器的说明通常包含寄存器文件选择字段和寄存器选择字段,分别用于寻址所选的寄存器文件16a,b和该寄存器文件16a,b中的寄存器。响应该指令,数据从寻址到的带操作数的寄存器被复制到所选寄存器文件16a,b中寻址到的寄存器(实际中应该实现远远不止两个寄存器文件16a,b以从中选择)。
因而,由指令发射部件10发射给复制功能部件14的复制指令的执行可以用来使由始发功能部件12a-d执行的操作的结果能够由和始发功能部件12a-d没有耦合到相同寄存器文件16a,b的功能部件12a-d用作操作数。
在一种替代实施方案中,复制功能部件14复制到寄存器文件16a,b的预定寄存器中。假使这样在复制功能部件14的指令中就不需要结果寄存器地址。另外,复制功能部件14可以并行地将副本广播到所有寄存器文件16a,b中。如果这样在复制功能部件14的指令中就不需要寄存器文件选择字段,但是,当然在很多只有一个或部分寄存器文件16a,b需要该副本的应用中,这种方法可能会导致不必要的寄存器覆盖。
图2示出了复制寄存器文件18(图1所示)的一种实施方案。这个实施方案包括多路复用器20和多个寄存器22a-d。寄存器文件16a-b的写端口17a-d的数据部分与寄存器22a-d中的相应寄存器的输入28a-d相耦合。寄存器22a-d的输出通过多路复用器20与复制功能部件14(未示出)的操作数输入26相耦合。控制输入24用于从复制功能部件14的复制指令接收操作数地址。
在操作中,当一个功能部件12a-d将结果写入到一个写端口17a-d时,该结果也被自动写入到那个写端口17a-d所属的寄存器22a-d。在复制指令的控制下来自寄存器22a-d中被选中的寄存器的操作数数据被提供给复制功能部件14的操作数输入26。
将会认识到来自一个特定写端口17a-b的所有数据都被复制到复制寄存器文件18中该特定的写端口17a-b所属的同一个寄存器22a-d,与在写端口17a-d的寄存器文件16a,b中所选择的寄存器无关。因而,复制寄存器文件18中寄存器22a-d的数量远远小于寄存器文件16a-d中寄存器数量之和,所以可以用很短的地址字段寻址复制寄存器文件18中的寄存器22a-d。这样做的价值在于,不需要进一步的措施就能保证寄存器22a-d的内容在被覆盖之前必定会被复制到其它寄存器文件16a,b中。
优选地,来自指令发射部件10的指令字控制是否复制结果数据到复制寄存器文件18中的寄存器22a-d。例如,通过用复制控制信息扩充功能部件12a-d的指令可以实现到这一点,例如每个特定指令中的一个复制控制位指示当功能部件12a-d将该特定指令的结果写入它的寄存器文件16a,b时是否应该复制该特定指令的结果到复制功能部件18中的相关寄存器22a-d。假使这样,该特定指令的复制控制位就被提供给执行该指令的功能部件12a-d的写端口17a-d对应的寄存器22a-d的写允许输入(图2中未示出)。复制控制位的使用使得能够延迟覆盖寄存器22a-d中的数据,所以能够延迟要从寄存器22a-d复制数据的复制功能部件14的指令,例如当必须首先复制来自另一寄存器22a-d的数据时。
在一种可选实施方案中复制寄存器文件18中用于一个写端口17a-d的寄存器22a-d可由多个寄存器代替。假使这样,复制功能部件的复制指令包含用于在各个写端口17a-d对应的多个寄存器之间进行选择的选择代码。来自写端口17a-d的结果被以循环方式复制到用于该写端口17a-d的这多个寄存器中不同的寄存器。因而,即使没有复制控制位也延迟了对寄存器22a-d中数据的覆盖。
尽管对写端口17a-d中的各个端口示出了单独的寄存器22a-d,但也可以为写端口组(例如一个寄存器文件16a,b的所有写端口)提供共享寄存器(或寄存器组)。在每个指令周期中只有来自该写端口17a-d的组中一个组的数据被写入用于该写端口组的寄存器(或寄存器组中的一个)。这减少了到复制寄存器文件18中的寄存器的连接数。例如,通过复制控制位,可以控制从相关写端口组中的哪个写端口复制数据。
作为选择,可以为同一个寄存器文件中的不同寄存器组提供独立的寄存器22a-d。假使这样,提供给写端口17a-d的寄存器地址的一部分也被提供给复制寄存器文件18以在复制寄存器文件18中选择适当的寄存器22a-d。这降低了复制寄存器文件18中的寄存器22a-d被覆盖的平均频率,给了复制功能部件16更多的时间复制数据。通过在编译阶段调整对不同结果的寄存器分配以使以后需要的数据在复制寄存器文件18中不被覆盖,能够确保这个数据保持可用。为此不需要整个寄存器地址仅仅地址位中的一个子集(例如一个或多个位)就足以为此目的在复制寄存器文件18中选择一个寄存器。
图3示出了用于为图1的处理设备生成指令字的一个过程的流程图。这种用于产生指令的过程可以由任何计算机执行,包括图1中的设备。该过程导致一组指令字可能在一些介质(如磁盘或光盘)上的中间存储之后存储在指令发射部件10中以供功能部件12a-d和复制功能部件14执行。
在第一步31中以某种形式例如像C这样的高级语言或其它形式接收程序说明。在第一步中这个程序被转换成对必须由功能部件12a-d执行以实现该程序的机器操作集的说明以及这些操作之间的数据依赖的说明。在第二步32中,这些操作被分配给功能部件12a-d并通过分配调度到不同的指令字。通常并不是所有功能部件12a-d都能够执行所有的操作,因此对功能部件12a-d的操作的分配受限于功能部件12a-d的能力。此外,指导分配以便将指令分配到不同的功能部件使得需要执行的指令字数量最少。另外第二步32还为操作的结果分配寄存器。
在第三、第四和第五步33、34、35中,一个接一个地处理指令字中的指令以确保指令操作数可用。在第四步中测试产生指令操作数的功能部件12a-d是否与执行指令的功能部件12a-d耦合到了相同的寄存器文件。如果是,就设置该指令的操作数指向相关寄存器。如果不是,就执行第四步35,在必须执行该指令的功能部件12a-d的寄存器文件16a,b中分配一个中间寄存器。设置该指令的操作数指向该中间寄存器。第四步35在指令字中增加一条复制指令以命令复制功能部件14从复制寄存器文件18复制操作数到中间寄存器。第五步36为产生该操作数作为结果的指令设置复制控制位,以使该结果被写入复制寄存器文件18。第六步37测试是否已经执行完所有指令。如果没有,就重复第三到第五步33-35。如果已执行完,就执行第七步37,汇编程序并将它存储在计算机可读介质如指令发射部件10中的可寻址半导体存储器或者中间介质之中。
将会理解图3仅示出了本发明最直接涉及的那些步骤。实践中可以添加很多其本身实现已知的步骤。例如,如果必要的话,可能发生重新调度步骤以确保复制功能部件14有足够的时间复制数据,或者确保足够的寄存器空闲可用。
尽管已经描述了本发明应用于在没有端口耦合到相同寄存器文件的功能部件的寄存器文件之间复制结果,但应该认识到本发明可以有更广泛的应用。例如,可以用复制来减轻寄存器使用上的压力。假使这样复制寄存器文件就用来保存那些在其最初被写入的寄存器文件中被覆盖的结果,以后当需要该结果时再将其写回那个寄存器文件。写回可以直接从复制寄存器文件进行,或者通过存储器等。因而如果在复制操作之后一个源寄存器文件中的值在一个特定寄存器文件中不再需要,可以对其它数据复用该寄存器,因为该值在以后可以复制到别的寄存器文件。
权利要求
1.一种数据处理设备,包括-多个功能部件;-多个寄存器文件,每个寄存器文件都有端口耦合到来自各个功能部件集群的功能部件;-一个指令字发射部件,用于发射指令字到功能部件,指令字可以包括在一个公共指令周期中分别由各个功能部件执行的指令的组合;-耦合到寄存器文件的一个复制寄存器文件,用于响应写入数据到寄存器文件中的任一个而接收写入到那个寄存器文件中的数据的副本;-耦合到复制寄存器文件的一个复制功能部件,该复制功能部件用于执行来自指令字的一条指令以从复制寄存器文件复制一个寄存器的内容到寄存器文件中一个寻址到的寄存器。
2.依照权利要求1的数据处理设备,其中复制寄存器文件通过相应的端口耦合链路耦合到寄存器文件的至少部分端口,,用于将写入这些端口中相应端口的数据各自复制到复制寄存器文件中相应的一个或多个寄存器集合中的一个寄存器中。该相应集合根据端口中的相应端口选择,该集合中寄存器的选择(如果有的话)与向端口中的相应端口提供数据所用的寄存器地址至少部分无关。
3.依照权利要求2的数据处理设备,其中至少一条指令包括用于指示该指令的结果是否必须被复制到与其写入结果的端口相对应的一个或多个寄存器的集合中的寄存器之中,端口耦合链路用于在所述字段的值的控制下控制数据是否被复制。
4.为依照权利要求1的具有多个功能部件、多个寄存器文件且每个寄存器文件都有端口耦合到功能部件的一个相应集群的处理器编译计算机程序的一种方法,该方法包括-产生执行任务的指令;-分配每条指令到相应的功能部件;-确定由功能部件之一执行的指令之一是否需要由与该功能部件之一不属于同一集群的功能部件之二产生的结果;-为复制功能部件添加复制指令以从复制寄存器文件复制结果到具有与该功能部件之一相耦合的接口的寄存器文件之一;-在计算机可读介质中用包含指令及复制指令的指令字存储该程序,以由处理器执行。
5.依照权利要求4的方法,包括更新由该功能部件之二执行产生所述结果的指令之二,以在该结果被写入到寄存器文件之二时复制该结果到复制寄存器文件,所述更新即在指令之二中设置一个允许复制到复制寄存器文件的复制控制字段。
6.一种包括用于依照权利要求1的处理设备的指令的计算机程序产品,这些指令包括用于产生结果并将该结果写入第一寄存器文件、并且作为该指令执行的一部分将副本写入到复制寄存器文件的第一指令,用于从复制寄存器文件复制该结果到第二寄存器文件的第二指令,和使用来自第二寄存器文件的结果的第三指令。
7.执行程序的一种方法,该方法包括-用第一功能部件执行第一指令,第一指令产生结果并将结果写入根据来自第一指令的结果地址所寻址到的第一寄存器文件中的第一寄存器,将结果的一个副本写入复制寄存器文件中至少部分独立于该结果地址所选择的一个复制寄存器;-执行复制指令以从复制寄存器文件复制该结果到第二寄存器文件;-用来自第二寄存器文件的结果作为操作数用第二功能部件执行第二条指令;
8.依照权利要求7的方法,其中复制寄存器是根据该结果被写入第一寄存器文件所用的端口而选择的。
9.依照权利要求7的方法,其中测试来自第一条指令的复制控制信息以确定结果是否被复制到了复制寄存器文件。
全文摘要
在VLIW处理器中执行计算机程序,该VLIW处理器包含多个功能部件和多个寄存器文件,每个寄存器文件都耦合到功能部件的一个相应子集。当执行第一条指令时,它将结果写入跟据来自该指令的结果地址所寻址到的寄存器文件中的一个寄存器,该结果被复制到复制寄存器文件中的一个寄存器。复制寄存器是根据写入结果的寄存器文件而选择的,但至少部分独立于结果地址,以使写入寄存器文件中寻址到的不同的寄存器中的结果被复制到寄存器文件中的相同寄存器。接着可以执行复制指令以从复制寄存器文件将该结果复制到第二寄存器文件,该结果从中可被用作另一指令的操作数。
文档编号G06F9/30GK1714338SQ200380103708
公开日2005年12月28日 申请日期2003年10月28日 优先权日2002年11月20日
发明者B·斯里尼瓦桑, M·J·G·贝库伊 申请人:皇家飞利浦电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1