具有数据旁路的流水线指令处理器的制作方法

文档序号:6479507阅读:326来源:国知局
专利名称:具有数据旁路的流水线指令处理器的制作方法
技术领域
本发明涉及一种具有流水线功能单元的指令处理设备。
背景技术
数据依赖对指令处理器的吞吐量强加了很大的限制。指令处理器执行连续的操作并且产生结果,所述连续的操作要求输入操作数。操作数通常存储在寄存器文件中,其中利用来自指令中的命令的操作数地址,从该寄存器文件中取出这些操作数。使用所述命令的结果地址将所述结果存储在该寄存器文件中。当从寄存器文件中取出命令的操作数时,不能执行该命令,直到所述操作数已经由先前的指令存储在寄存器文件中。这样,在命令之间要有一个最小延迟。这降低了处理器的效率。在VLIW处理器中,例如,在一些指令周期中,由于没有足够的操作数可用,所以可能没有为功能单元安排操作。
美国专利No.5805852描述了借助于产生结果的功能单元的流水线级和使用操作数的流水线级之间的旁路,如何能使VLIW处理器更有效率。所述旁路使得结果可用来作为随后指令的操作数,而没有将结果存储在存储器文件中并且将该结果作为操作数从存储器文件中取出所必需的延迟。
在流水线操作期间,功能单元首先在流水线的执行级生成结果,并将结果存储在执行级之后的流水线寄存器中。随后,功能单元在流水线中传递结果,直到该结果已经被存储在寄存器文件中。当新的命令进入功能单元之一的流水线时,将其操作数地址与仍然在相应的各个功能单元的流水线中的结果的地址相比较。当匹配发生时,从相关的功能单元的流水线级、而不是从寄存器文件来提取该操作数。
近年来,寄存器文件的大小已趋于增加。大的寄存器文件的优势在于其加速了执行,这是因为很少有必须等待直到寄存器可重新使用或者将操作数溢出到存储器。大的寄存器文件的代价是在功耗上的增加。现在寄存器文件常常是在VLIW处理器中的主要功耗者。

发明内容
除了其它目的之外,本发明的目的在于减少由于指令处理设备中寄存器文件所引起的功耗。
在权利要求1中提出了根据本发明的指令处理设备。本发明是基于以下观察的,即当不需要从寄存器文件中取出结果时,因为仅经由旁路路径使用它们,所以通过不将结果写入寄存器文件,可以节省功率。在执行指令之前,例如,在编译指令期间,可以确定是否可以保证除了经由旁路之外将不使用操作的结果。如果是,则旁路该结果满足,并且没有必要将该结果存储在寄存器文件中。通过在这种情况下禁止存储到寄存器文件中,减少了功耗。
在一个实施例中,所述指令处理设备包含多个旁路寄存器,所述多个旁路寄存器是利用来自命令的寄存器地址选择性地寻址的,所述命令用于选择存储结果和/或取出操作数数据的寄存器。这样,可以使得避免频繁地写入寄存器文件。通常,旁路存储器比寄存器文件中的寄存器更少,从而没有使得指令周期的持续时间慢下来。在将结果写入到寄存器文件之前将该结果写入到一个流水线级处的旁路寄存器。
在一个实施例中,通过抑制将时钟信号提供给用于将结果写入寄存器文件的电路来禁止结果的写入。当寄存器文件具有多个写入端口时,在选择的写入端口处禁止写入,其中在指令控制下选择该写入端口。
优选地,通过旁路控制单元控制旁路,其中所述旁路控制单元将来自命令的结果寄存器地址与后面命令的操作数寄存器地址相比较,在地址匹配的情况下,用来自旁路路经的结果代替。这样,被旁路的结果不需要专门的地址。在另一个实施例中,指令包含用于在不同旁路寄存器之间选择的地址。
在一个实施例中,设置寄存器链,用于提供旁路操作数数据。在连续的指令周期,结果在所述链中的寄存器中移位。所述寄存器链进一步扩展到超出将结果写入第二寄存器单元所需的长度。这使得可以更好地避免由于将结果写入寄存器文件而产生的功耗。通过将操作数地址与结果寄存器地址进行比较,或者使用来自指令的明确的寄存器选择信息,可以选择来自所述链中的寄存器的旁路数据。后者简化了旁路控制电路。
本发明有利地适用于例如VLIW处理器这样的处理器,该处理器包含并行操作的多个功能单元。因为更多的功能单元并行进行操作,所以这类处理器要求越来越大的寄存器文件。通过抑制写入到寄存器文件,节省了大量的功耗。优选地,设置多组旁路寄存器,每组用于仅存储来自相应一个功能单元的结果,所有组中的寄存器是可以根据用于取出操作数的每个命令来寻址的。
本发明也与编译程序的方法有关,其中检测用于抑制写入到寄存器文件的条件,之后将信息添加给指令以抑制该写入。所述检测涉及测试是否指令的结果可以经由旁路路径传递(这主要是在产生后尽快使用的问题),并且是否可以保证以后不使用这些结果(例如,扫描这些指令,以检测在包含结果的寄存器被覆写之前或者在程序结束之前,是否在任何后来可到达的指令中没有再次使用该结果)。可以在任何计算机程序产品上传递用于执行该方法的计算机程序,所述计算机程序产品例如磁盘或者光盘、半导体存储器模块、下载信号等。


将使用

本发明的这些和其它目的以及有利方面。
图1示出了流水线处理器;图2示出了寄存器文件的一部分;图3示出了流水线处理器的一部分;图4示出了另一个流水线处理器的一部分;图5示出了另一个流水线处理器的一部分。
具体实施例方式
图1示出了简化的流水线VLIW处理器的例子。处理器包含指令存储器10、程序计数器10a、指令寄存器11、执行单元12、寄存器文件14和旁路控制单元16。借助于例子,并行地示出了两个执行单元12,但是在实际中,可以使用更多的执行单元。每个执行单元可以包含一组功能单元(未示出),或者单独是一个功能单元。对于来自指令的多个命令,指令寄存器11具有多个输出端,每个命令用于相应的一个执行单元12。每个命令包含用于操作码的部分、用于操作数寄存器地址的部分和用于结果寄存器地址的部分。将用于命令的操作数寄存器地址部分的指令寄存器11的输出端耦合到寄存器文件14的读取端口以及旁路控制单元16的操作数寄存器地址输入端。通常,每个命令包含两个操作数地址,但是,为了清楚起见,示出了仅用于一个操作数(地址)的连接。对于诸如乘法—累加这样的操作,也可以有多于两个的操作数。
将处理器划分为连续的流水线级,所述连续的流水线级借助于流水线存储器分开。对于每个执行单元12,在指令寄存器11和执行单元12之间,处理器包含第一级流水线寄存器120、122、124和多路复用器123。第一个第一级流水线寄存器124存储用于执行单元12的命令的操作码部分。第二个第一级流水线寄存器122存储用于执行单元12的命令的操作数。第三个第一级流水线寄存器120存储用于执行单元12的命令的结果地址以及写入控制信息。第一个第一级流水线寄存器124的输入端耦合到指令寄存器11的输出端,所述输出端输出用于执行单元12的命令的操作码部分。第三个第一级流水线寄存器120的输入端耦合到指令寄存器11的输出端,所述输出端输出用于执行单元12的命令的结果地址部分。
第二个第一级流水线寄存器122的输入端经由多路复用器123耦合到寄存器文件14的读取端口,其中用于执行单元12的命令的操作数地址部分被提供给所述寄存器文件14的读取端口。原则上,对于用于执行单元的命令的每个相应的操作数,应当有具有类似的连接的相应的多路复用器123和相应的第二个第一级流水线寄存器122,但是,为了清楚起见,仅示出了一个多路复用器123和一个第二个第一级流水线寄存器122。
第二级流水线寄存器126、128包括在执行单元12之后。第一个第二级流水线寄存器126耦合到第三个第一级流水线寄存器124,用于接收命令的结果寄存器地址部分和写入控制信息。第二个第二级流水线寄存器128耦合到执行单元12的结果输出端。第一和第二个第二级流水线寄存器126、128耦合到寄存器文件14的写入端口,用于提供结果和对应的结果寄存器地址、以及写入控制信息。
每一个多路复用器123具有被耦合的输入端,以用于从寄存器文件14的读取端口接收寻址操作数,以及用于经由旁路路径15从第二个第二级旁路寄存器128接收旁路操作数。第三个第一级寄存器124以及第一个第二级寄存器126分别将操作数寄存器地址和结果地址传送到旁路控制单元16。旁路控制单元16控制多路复用器123,以确定多路复用器123的输入端的哪一个耦合到第二个第一级流水线寄存器122。
在操作中,程序计数器10a将一系列指令地址提供给指令存储器10。响应于每个指令地址,指令存储器将相应的指令提供给指令寄存器11。每个指令包含用于多个执行单元12的命令。所述命令可以包含命令的一个或多个操作数的操作数寄存器地址。将操作数寄存器地址提供给寄存器文件14的读取端口。作为响应,寄存器文件14从读取端口提供寻址操作数。通常,将操作数和对应的命令的(优选地解码的)操作码部分提供给相应的执行单元12。执行单元12使用操作数执行命令,并且产生结果。例如,对于“ADD(加)”命令,使用两个操作数,产生它们之和作为结果。将该结果与来自所述命令的结果寄存器地址一起提供给寄存器文件14的写入端口。
命令执行是流水线化的。这意味着在基本上每个指令周期中开始新的指令,且在连续的指令周期中执行连续的指令执行步骤。例如,在第一指令周期,寻址指令存储器,在第二指令周期,提取操作数,在第三指令周期,由执行单元12正确地执行命令,且在随后的指令周期,将结果写入寄存器文件14。这样,指令的执行花费多个指令周期。在相应的连续指令周期中执行指令的处理器的相应部分被称为流水线级。在特定的指令周期,不同的流水线级处理不同执行级中的不同指令。通过流水线寄存器将不同流水线级分开,以分开正在处理的不同指令的信息。由时钟(未示出)来指示指令周期,其中所述时钟在每个指令周期的末端,控制将信息从前面的流水线级接收到流水线寄存器中。
流水线处理器本身是已知的。可以理解的是,附图仅示出了一个简单的实施例。在不偏离本发明的情况下,可以使用许多可选择的流水线体系结构,其中,将不同的任务分别分配到不同的流水线级上并且可以增加附加的流水线级。
旁路路径15用于减少这样的要求,即,等到指令的操作数已经存储在寄存器文件14中才执行该指令。如果第一指令产生的结果能用作第二指令的操作数,在将该结果写入寄存器文件14之前,可以将该结果经由旁路路径15传送到执行单元12。旁路控制单元16将第二指令的操作数寄存器地址与第一指令的结果寄存器地址进行比较。当匹配发生时,旁路控制单元16控制多路复用器123来传送来自流水线寄存器122的结果,而不是来自寄存器文件14的结果。这使得很快就可以执行第二指令。
旁路本身是已知的。应当理解的是,存在多种形式的旁路,并且图1所示的形式仅是一个例子,本发明并不局限于该例子。例如,用于旁路的结果可以来自不同于所示的流水线级(例如,直接从执行单元12到第一级流水线寄存器122,或者从后面的级(未示出)),或者来自多于一个流水线级。相对地,结果寄存器地址可以来自不同于所示的级。可以将这样的地址和比较结果存储在旁路控制单元16中,以同样使所述比较流水线化。另外,指令中可以有代码,以指示是否应当使用旁路。这使得当指令应当使用来自寄存器文件14的“旧”值时可以避免旁路。
根据本发明,在所述指令的控制下,可以禁止将结果写回寄存器文件14。当所述结果仅经由旁路路径15使用且并不是来自寄存器文件14时,将做出上述禁止操作。在编译指令程序期间,对于可以跟随的每个执行路径,确定所保证使用结果的最后的程序指令(如果可经由分支指令应用的话)。可以理解的是,在执行期间,实际上可能不会达到一些执行路径,但是如果对于一些路径在编译时这不能被证实,则应当确定如果跟随该路径时使用该结果的最后指令。如果任何已经确定的最后的指令被安排将在产生结果的指令之后马上执行,从而使得其可以经由旁路接收该结果的话,则编译器向产生该结果的指令添加禁止信息。这指示指令不需要存储在寄存器文件14中。禁止信息与结果寄存器地址被沿流水线传送到寄存器文件14,以禁止将结果存储在寄存器文件14中。
图2示出了具有多端口寄存器20的多端口寄存器文件的例子,其中多端口寄存器20具有多个读取端口28。数据供应电路22和寻址电路24耦合到多端口寄存器20,用于分别提供结果数据和寄存器选择信号。数据供应电路22具有用于结果的输入端RES 1和RES 2。寻址电路24具有用于结果寄存器地址的输入端ADDR 1和ADDR 2。时钟允许电路26耦合到时钟输入端CLK和数据供应电路22与寻址电路24的时钟终端之间。时钟允许电路26用于在禁止输入端DIS 1和DIS 2的控制下,禁止向数据供应电路22和寻址电路24提供时钟信号。
在操作中,来自时钟允许电路26的时钟脉冲使数据供应电路22和寻址电路24将新的数据和选择信号驱动提供给多端口寄存器20。来自指令的信息被提供给禁止输入端DIS 1和DIS 2,用于有选择地禁止为使用来自那些端口RES 1、ADDR 1、RES 2和ADDR 2的数据和地址而提供时钟信号,从这些端口提供结果,对于这些结果,已确定在程序中不再使用这些结果。因而,减少了数据供应电路22和寻址电路24的功耗。
可以理解的是,多端口寄存器文件本身是已知的。可以使用多种可选择的体系结构而不偏离本发明。根据本发明,设置寄存器文件,以禁止寄存器文件的所选择的部分。代替禁止数据供应电路22和寻址电路二者的是,可以仅禁止这两个电路其中之一,和/或者任何当被驱动来更新寄存器内容时消耗功率的其它电路。
图1示出了对于结果的禁止信息与命令的结果寄存器地址一起传送,例如,以命令的附加位的形式。这要求对处理器最小量的修改,以禁止结果的写入。但是,可以理解的是,存在多种可替换方案可用于指示选择性的禁止。例如,通过例如对允许禁止的指令中的一个或者多个命令的位置进行编码,所述信息可以包含在指令级而不是各个命令级。事实上,禁止信息甚至不需要包含在与有关命令相同的指令中,而是其可以包含较早或者较迟的指令中,已知该较早或者较迟的指令将相对于该命令以已定义的流水线延迟来执行。类似地,禁止信息可以包含在命令的操作码中,在其中可以在流水线中的任何处对该禁止信息进行解码,以用于最终提供给寄存器文件14的写入端口的禁止输入。但另一个实施例中,控制禁止的信息可以从操作数寄存器提供。在该实施例中,来自寻址操作数寄存器的数据沿着流水线级被传送到寄存器文件14,以控制禁止。
虽然已经为每个执行单元示出了单个结果寄存器126,但是可以理解的是,本发明并不局限于这样的单个寄存器。
图3示出了具有多个结果寄存器32的处理器的一部分。对于执行单元12,示出了两个操作数输入端。执行单元12的结果输出端耦合到结果寄存器128,结果寄存器128与多个另外的结果寄存器32并联。结果寄存器128耦合到流水线中更下游的电路(未示出)。寄存器选择单元30具有耦合到第一级结果寄存器地址寄存器124的输入端,以及耦合到另外的结果寄存器32的选择输入端的选择输出端。另外的结果寄存器128的输出端耦合到操作数选择单元34的输入端,操作数选择单元34依次具有耦合到多路复用器123的输出端。
在操作中,处理器将选择的结果存储在另外的寄存器32中选中的一个中。第一级结果寄存器地址寄存器120接收到结果寄存器地址和用于禁止向寄存器文件14写入的禁止信息。当禁止信息指示将禁止向寄存器文件14写入时,允许操作寄存器选择单元30。在这种情况下,寄存器选择单元30使用结果寄存器地址的一部分来选择另外的结果寄存器32中的一个。将来自执行单元12的结果写入所选择的另外的结果寄存器32中。随后,当收到操作数地址,其指示来自另外的结果寄存器32的结果应当被用作操作数时,旁路控制单元16向操作数选择单元34发信号,以基于该操作数地址来选择另外的结果寄存器32中的一个的输出。然后,将结果从操作数选择单元34经由多路复用器123传送到执行单元12作为操作数。
应当理解的是,另外的结果寄存器32的数目远小于寄存器文件14中的寄存器的数目。这使得可以在包含执行单元12的流水线级的末端包括这些另外的结果寄存器32,而没有大的时间损失。这样,在比其中通常将结果存储在寄存器文件14中的流水线级更早的流水线级中,可以存储有限数目的结果。在可以从寄存器文件14得到这些结果之前,这些结果可以作为操作数从另外的结果寄存器32的得到。
应当理解的是,图3仅仅描述了如何使用另外的结果寄存器32的例子。还有许多可替换方案。例如,另外的结果寄存器32可以被包括在随后的流水线级中,即结果寄存器128之后,或者被包括在多于一个流水线级中。前者可以是这样的情况,例如,当另外的结果寄存器包括在执行级中将需要延长执行周期的持续时间。当并行地使用不同的执行单元12时,不同组的另外的结果寄存器32甚至可以被包括在不同的流水线级中。作为另一个例子,可以不同地实现结果寄存器32的选择。例如,专用地址部分可以被包括在指令中,以选择另外的结果寄存器,或者相反,不寻址寄存器文件14中的物理寄存器的寄存器地址值可以被用来选择另外的寄存器32。作为另一个例子,模式寄存器可以被用来在使用和不使用另外的结果寄存器32之间选择。另外,选择信息可以是命令的操作码的一部分,而不是来自于结果寄存器地址字段。
类似地,对于确定何时应当使用来自另外的结果寄存器32的结果而不是来自寄存器文件14的数据,可以有多种方案。在一个实施例中,操作数地址包含特定的指示,以指出应当使用来自另外的结果寄存器32的结果。
图4示出了其中使用地址匹配的替换实施例。对于每个另外的结果寄存器32,设置相应的寄存器地址寄存器40,其为存储在另外的结果寄存器32中的结果存储结果寄存器地址。旁路控制单元将操作数寄存器地址与来自寄存器地址寄存器的结果寄存器地址进行比较。当匹配发生时,旁路控制单元16向操作数选择单元34和多路复用器123(图3中示出)发信号,以利用来自另外的结果寄存器32的结果来代替来自寄存器文件14的操作数数据。优选地,旁路控制单元16也比较来自流水线寄存器124的结果寄存器地址和来自寄存器地址寄存器40的所存储的结果寄存器地址,并且当寄存器地址寄存器40包含在命令中指定的寄存器地址时重置寄存器地址寄存器40。这样就确保了来自寄存器文件14的结果将随后用于那个寄存器地址(当然,除非新的结果随后存储在另外的结果寄存器32中)。可以理解的是,另外的结果寄存器32和寄存器地址寄存器40形成了简单关联存储器的一个实施例。可以使用其它类型的关联存储器作为替换方案。
虽然在上面描述中已经假设指令包含指示哪个另外的结果寄存器32应当被用来存储特定结果的信息,但是应当理解的是,该信息仅指示以下内容就足够了特定结果及其结果寄存器地址应当被存储在另外的结果寄存器32之一及其对应的另外的结果寄存器地址寄存器40中,以及可选地该结果应当存储多少个指令周期,或者它将被读取多少次。在这种情况下,可以设置自动寄存器指派单元,用于将结果指派给另外的结果寄存器32中任何空闲的一个(在经过预定数目的指令周期(或者可选地规定的数目)之后,或者在已读取结果(或者读取规定的次数)之后,可以将另外的寄存器记录为空闲的)。虽然很有用,但是另外的结果寄存器地址寄存器40对于下面来说不是严格必须的在编译时,可以预知将使用哪个另外的结果寄存器32,并且可以在操作数说明中包括对于该另外的结果寄存器32的选择地址。
虽然为了清楚起见在图3和4中仅示出了一个执行单元,但是可以理解的是,在实际中可以并行地使用多个执行单元12,以执行来自指令的不同命令。在这种情况下,每个执行单元12可以配备有其自己的一组另外的结果寄存器32。旁路控制单元16控制是否以及哪组结果用于代替来自寄存器文件14的操作数数据。作为选择,可以使用共享的一组另外的结果寄存器32。在这种情况中,指令应当包含信息以指示哪个执行单元12(如果有的话)应当写入到哪个另外的结果寄存器32(以及,如有需要的话,写入到其对应的结果寄存器地址寄存器40)。
可以理解的是,写入另外的结果寄存器能使得写入寄存器文件14变得多余。通过在指令中包括信息以将结果可选择地写入另外的结果寄存器32以及禁止将结果写入寄存器文件14,可以减少总体功耗。当然,写入另外的结果寄存器也消耗功率,但是因为这些另外的结果寄存器32的数目小于寄存器文件14中的寄存器的数目,所以消耗更少的功率。因此,寄存器文件14的大小可以被扩展,而没有严重的功耗损失。如图3所示,相同的信号被用作是禁止写入寄存器文件14的信号,且用于允许写入另外的结果寄存器32。这有助于减少指令大小。因此,结果被写入另外的结果寄存器32或者寄存器文件14中。但是,也可以使用独立可设定的控制信息,以用于禁止写入寄存器文件14和用于选择另外的结果寄存器32。这样,在程序控制下,作为特定程序的需要,可以有选择地将来自另外的结果寄存器的旁路结果与存储在寄存器文件14中的长期或非长期结果相结合。
图5示出了处理器的另一个实施例的一部分。与图1的实施例相比,在图5的实施例中,多个另外的结果寄存器地址寄存器50和另外的结果寄存器52被添加到结果寄存器地址寄存器126和结果寄存器128的下游。另外的结果寄存器地址寄存器50和另外的结果寄存器52具有耦合到旁路控制单元16的输出端。在操作中,命令的执行结果以及这些结果的结果寄存器地址被沿流水线向下传送,即使是在如果允许写入则能够从寄存器文件14中取出它们的指令周期之后。旁路控制单元16控制是使用来自另外的结果寄存器地址寄存器50和另外的结果寄存器52的结果、还是使用来自寄存器文件14的结果。这可以基于寄存器操作数/结果地址比较或者使用来自指令的明确信息来实现。使用另外的结果寄存器地址寄存器50和另外的结果寄存器52,使得可以如果结果在产生之后仅在预定数目的指令周期内需要,那么禁止将该结果写入寄存器文件14。当在这种情况下时,在指令上添加信息来禁止将结果写入寄存器文件14。这样,可以节省用于写入寄存器文件14的功耗。
在一个实施例中,如果结果存储在寄存器文件14中,则禁止将寄存器地址和结果存储在另外的结果寄存器地址寄存器50和另外的结果寄存器52中。这样,当没有禁止在寄存器文件14中存储时,就节省了功率。在这个实施例中,包括与另外的结果寄存器地址寄存器50并联的附加的寄存器,用于禁止信息。该禁止信息耦合到另外的结果寄存器地址寄存器50和另外的结果寄存器52。该禁止信息被用于,当禁止信息指示没有禁止将结果写入寄存器文件14中时,禁止更新另外的结果寄存器地址寄存器50和另外的结果寄存器52中的内容。在这种情况下,该禁止信息也可以被用于向旁路控制电路指示,应当从寄存器文件14、而不是从另外的结果寄存器地址寄存器50和另外的结果寄存器52来取出操作数数据。
可以理解的是,可以串联地包括任何数目的一个或者多个另外的结果寄存器地址寄存器50和另外的结果寄存器52,而不仅仅是两个,这允许结果作为操作数被旁路。也应当理解,当在执行单元之后有附加的流水线级时,在流水线中可以有附加的结果寄存器地址寄存器50和结果寄存器52,其一面接着结果寄存器地址寄存器126和结果寄存器128,另一面接着另外的结果寄存器地址寄存器50和另外的结果寄存器52,其中所述结果寄存器地址寄存器126和结果寄存器128接在执行单元12之后。旁路控制单元16也使用来自这些级的结果以用于旁路。
权利要求
1.一种指令处理设备,包括指令发出单元,用于发出连续的多个指令;多个流水线级,耦合到所述指令发出单元,所述多个流水线级中的至少一级包括功能单元,该功能单元用于执行来自所述指令的命令;第一寄存器单元,耦合到所述功能单元,用于当所述命令到达所述多个流水线级中的第一级时存储所述命令的执行结果,以及用于向所述多个流水线级中的所述第一级之前的一个流水线级中的电路提供旁路操作数数据;第二寄存器单元,耦合到所述功能单元,用于当所述命令到达所述多个流水线级中的第二级时存储所述结果,以及用于将操作数数据提供给所述功能单元,其中该第二级位于所述多个流水线级中的所述第一级的下游;禁止电路,被耦合以在所述指令的控制下有选择地禁止在所述第二寄存器单元中存储所述结果。
2.根据权利要求1所述的指令处理设备,其中,所述第一和第二寄存器单元中的每个包括多个寄存器和寻址电路,该寻址电路利用来自所述命令的寄存器地址来有选择地寻址,用来选择一个寄存器,以用于存储所述结果和/或用于取出操作数数据。
3.根据权利要求2所述的指令处理设备,其中,所述第一寄存器单元包含的寄存器少于所述第二寄存器单元包含的寄存器。
4.根据权利要求2所述的指令处理设备,其中,设置所述禁止电路,以抑制将时钟信号提供给用于将所述结果从所述第二寄存器单元的写入端口写入所述第二寄存器单元中的一个寄存器的电路。
5.根据权利要求3所述的指令处理设备,包括多个功能单元,所述多个功能单元被设置成并行地执行来自指令的各个命令,所述第二寄存器单元具有多个写入端口,其用于将来自相应的所述功能单元的所述结果写入,所述禁止电路被设置成禁止在选择的写入端口写入,其中在所述指令的控制下选择所述写入端口。
6.根据权利要求2所述的指令处理设备,包括旁路控制单元,所述旁路控制单元被设置成将来自所述命令中的第一个的所述结果的结果寄存器地址与来自所述命令中的第二个的操作数寄存器地址进行比较,以及在所述地址匹配的情况下,用来自所述第一寄存器单元中的所述寄存器的结果代替来自所述第二寄存器单元的操作数,其中所述命令中的第二个直接或者间接地跟随在所述命令中的第一个之后,所述第一寄存器单元中的所述寄存器包含所述结果。
7.根据权利要求1所述的指令处理设备,其中,所述第一寄存器单元包括寄存器链,用于提供旁路操作数数据,所述寄存器链被设置为移位寄存器,所述移位寄存器具有耦合到所述多个级的第一级的结果输出端的输入端,且至少如果禁止将所述结果存储在所述第二寄存器单元,则所述移位寄存器能在连续的指令周期内将所述结果在连续的移位寄存器级中移位,所述寄存器链进一步扩展到超出将所述结果写入所述第二寄存器单元所需的长度。
8.根据权利要求7所述的指令处理器设备,其中,所述链中的寄存器是可以根据所述命令来寻址的。
9.根据权利要求2所述的指令处理设备,包含多个功能单元,所述多个功能单元被设置成并行地执行来自指令的各个命令,所述第一寄存器单元包括相应的多组寄存器,每组寄存器只存储来自所述多个功能单元中的相应一个的结果,所有组的寄存器是可以根据用于取出操作数的所述命令来寻址的。
10.一种在指令处理器中执行指令程序的方法,该方法包括流水线化地执行来自所述指令的命令;在没有相反指令的情况下,将所述命令的结果存储在寄存器文件中;在没有相反指令的情况下,从所述寄存器文件中取出所述命令的寄存器源操作数;有选择地将由流水线级旁路的所述结果中的第一个用作旁路操作数,来代替来自所述寄存器文件的所述寄存器源操作数中的至少一个;在程序控制下,有选择地抑制将所述结果中的所述第一个写入所述寄存器文件。
11.根据权利要求10所述的方法,包括将所述结果中的所述第一个写入多个旁路寄存器中的可寻址的一个,其中所述多个旁路寄存器被设置成在流水线中早于所述寄存器文件接收所述结果。
12.一种计算机程序产品,包括用于实现根据权利要求10或11所述的方法的指令处理器指令。
13.一种用于编译指令处理器的指令程序的方法,该方法包括生成一系列指令;首先检测将由所述一系列指令中的第一个产生的结果,其中所述一系列指令中的第二个使用该结果作为操作数;其次检测是否能够保证可以在所述指令处理器中旁路所述结果,而不从寄存器文件中取出所述结果,其中所述结果用作所述一系列指令中的所有第二个指令的操作数;当能够保证可以在所述指令处理器中旁路所述结果,作为用于所述一系列指令中的所有第二个指令的操作数时,在所述指令中生成信息,以禁止写入所述寄存器文件。
14.根据权利要求12所述的编译方法,包括在所述指令中包括指示,该指示指出所述结果应当存储在多个旁路寄存器中的一个,其中在将该结果写入所述多个旁路寄存器和/或从所述多个旁路寄存器读出该结果时,所述多个旁路寄存器中的所述一个是可寻址的。
15.一种计算机程序产品,包括用于实现根据权利要求13或14所述的方法的指令处理器指令。
全文摘要
一种指令处理设备,具有流水线级,所述流水线级具有用于执行来自指令的命令的功能单元。第一寄存器单元耦合到该功能单元,用于当该命令到达流水线级中的第一级时存储该命令的执行结果,以及用于给功能单元提供旁路操作数数据。寄存器文件耦合到该功能单元,用于当该命令到达流水线级中的第二级时存储该结果,以及用于将操作数数据提供给该功能单元,其中该第二级位于流水线级中的第一级的下游。禁止电路被耦合以在所述指令的控制下有选择地禁止在寄存器文件中存储结果。
文档编号G06F9/45GK1761940SQ200480007161
公开日2006年4月19日 申请日期2004年3月17日 优先权日2003年3月19日
发明者巴拉克里什南·斯里尼瓦桑, 拉马纳坦·塞瑟拉曼, 卡洛斯·A·阿尔巴·平托 申请人:皇家飞利浦电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1