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

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

图1示出了一种数据处理设备.
图2示出了一个复制寄存器文件。
图3示出了为该处理设备生成一个程序的流程图.
图1示出了一种具有指令发射部件10、功能部件12a-d、复制 功能部件14、寄存器文件16a-b和复制寄存器文件18的数据处理设 备。指令发射部件10具有与功能部件12a-d和复制功能部件1相 耦合的发射槽连接.指令发射部件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 (图l所示)的一种实施方案. 这个实施方案包括多路复用器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中未示出).复制控制位的使 用使得能够延迟覆盖寄存器"a-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. 依照权利要求l的方法,其中复制寄存器是根据该结果被写 入第一寄存器文件所用的那个端口而选择的。
3. 依照权利要求l的方法,其中测试来自第一指令的复制控制信息以确定该结果是否被复制到了复制寄存器文件。
全文摘要
在VLIW处理器中执行计算机程序,该VLIW处理器包含多个功能部件和多个寄存器文件,每个寄存器文件都耦合到功能部件的一个相应子集。当执行第一条指令时,它将结果写入跟据来自该指令的结果地址所寻址到的寄存器文件中的一个寄存器,该结果被复制到复制寄存器文件中的一个寄存器。复制寄存器是根据写入结果的寄存器文件而选择的,但至少部分独立于结果地址,以使写入寄存器文件中寻址到的不同的寄存器中的结果被复制到寄存器文件中的相同寄存器。接着可以执行复制指令以从复制寄存器文件将该结果复制到第二寄存器文件,该结果从中可被用作另一指令的操作数。
文档编号G06F9/38GK101097513SQ20071008639
公开日2008年1月2日 申请日期2003年10月28日 优先权日2002年11月20日
发明者B·斯里尼瓦桑, M·J·G·贝库伊 申请人:皇家飞利浦电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1