首页> 中国专利> 用于预测源操作数值并优化指令处理的设备和方法

用于预测源操作数值并优化指令处理的设备和方法

摘要

提供了一种用于处理指令的设备和方法。所述设备具有用于执行指令的执行电路,其中每个指令需要使用一个或多个源操作数值来执行关联操作以产生结果值。发布电路用于维护等待由所述执行电路执行的未决指令的记录,并且预测电路用于为选择的未决指令产生预测的源操作数值。优化电路然后被布置为在下述情况下针对所述选择的未决指令检测到优化条件:考虑到所述选择的未决指令的所述关联操作,所述预测的源操作数值使得所述结果值在不执行所述关联操作的情况下是已知的。响应于检测到所述优化条件,实现优化操作,而不是使所述执行电路执行所述关联操作以执行所述选择的未决指令。这可导致显著的性能和/或功耗改进。

著录项

说明书

背景技术

本技术涉及一种用于处理指令的设备和方法。数据处理设备将通常提供用于执行指令序列的执行电路,其中每个指令可能需要使用一个或多个源操作数值来执行关联操作以产生结果值。在执行电路可以执行特定指令之前,该指令的源操作数值必须是可用的。例如,情况可能是特定指令所需的一个或多个源操作数值被产生作为其他较早指令的结果值。在这样的情形下,在上述特定指令被认为使其源操作数值可用并因此可以被分派到执行电路之前,通常需要等待产生任何这样的结果值。

为了寻求改进性能,一些系统提供用于为一个或多个指令产生预测的源操作数值的值预测电路。基于这种预测的源操作数值,然后可将指令发布到执行电路(只要任何其他需要的源操作数值也是可用的),这可以在预测的源操作数值正确的情况下提高性能。在适当的时候,可做出关于预测的源操作数值是否正确的确定,并且如果不正确,则可将处理系统的状态返回到利用预测的源操作数值之前的点,同时考虑到实际的源操作数值来重新执行任何受影响的指令。

期望进一步改进在采用值预测的系统内可获得的性能好处。

发明内容

在一种示例布置中,提供了一种设备,所述设备包括:执行电路,用于执行指令,每个指令需要使用一个或多个源操作数值来执行关联操作以产生结果值;发布电路,用于维护等待由所述执行电路执行的未决指令的记录;预测电路,用于为选择的未决指令产生预测的源操作数值;和优化电路,用于在下述情况下针对所述选择的未决指令检测到优化条件:考虑到所述选择的未决指令的所述关联操作,所述预测的源操作数值使得所述结果值在不执行所述关联操作的情况下是已知的;其中所述优化电路被布置为:响应于检测到所述优化条件,实现优化操作,而不是使所述执行电路执行所述关联操作以执行所述选择的未决指令。

在另一示例布置中,提供了一种处理指令的方法,所述方法包括:提供执行电路来执行所述指令,每个指令需要使用一个或多个源操作数值来执行关联操作以产生结果值;维护等待由所述执行电路执行的未决指令的记录;采用预测电路来为选择的未决指令产生预测的源操作数值;在下述情况下针对所述选择的未决指令检测到优化条件:考虑到所述选择的未决指令的所述关联操作,所述预测的源操作数值使得所述结果值在不执行所述关联操作的情况下也是已知的;以及响应于检测到所述优化条件,实现优化操作,而不是使所述执行电路执行所述关联操作以执行所述选择的未决指令。

在再一示例布置中,提供了一种设备,所述设备包括:执行装置,用于执行指令,每个指令需要使用一个或多个源操作数值来执行关联操作以产生结果值;发布装置,用于维护等待由所述执行装置执行的未决指令的记录;预测装置,用于为选择的未决指令产生预测的源操作数值;和优化装置,用于在下述情况下针对所述选择的未决指令检测到优化条件:考虑到所述选择的未决指令的所述关联操作,所述预测的源操作数值使得所述结果值在不执行所述关联操作的情况下也是已知的;其中所述优化装置被布置为:响应于检测到所述优化条件,实现优化操作,而不是使所述执行装置执行所述关联操作以执行所述选择的未决指令。

附图说明

将参考如附图中所示的本技术的示例,仅通过图示来进一步描述本技术,在附图中:

图1是根据一个示例配置的数据处理设备的框图;

图2示意性地图示了在一个示例布置中可以在图1的预测表内维护的信息;

图3是图示在一个示例布置中图1的优化分析器的操作的流程图。

图4是图示根据一个示例布置的可被执行以实现图3的步骤165的优化操作的步骤的流程图;

图5A图示了对于有序数据处理布置如何可以在一个示例布置中实现图4的步骤210;

图5B图示了对于乱序数据处理布置如何可以在一个示例布置中实现图4的步骤210;

图6是图示可以在一个示例布置中执行以实现图3的步骤165的优化操作的可选步骤序列的流程图;

图7是图示在一个示例布置中除了图3的最后步骤之外还可实现的进一步优化的流程图;

图8A至图8D图示了可利用本文描述的优化技术的各种示例情形;以及

图9图示了矢量处理实现方式,其中可在并行处理的不同通道内独立地应用本文描述的优化技术。

具体实施方式

在一种示例布置中,提供了一种设备,该设备具有用于执行指令的执行电路,其中每个指令需要使用一个或多个源操作数值来执行关联操作以产生结果值。发布电路用于维护等待由执行电路执行的未决指令的记录。另外,提供了预测电路来为选择的未决指令产生预测的源操作数值。如前所述,通过提供预测的源操作数值,所选择的未决指令可以比在必须等待实际的源操作数值的可用的情况下更快地可用于执行。

然而,根据本文描述的技术,在一些情形下,根据预测的源操作数值的形式和需要对所选择的未决指令执行的关联操作,可实现进一步的性能和/或功耗好处。特别地,设备具有优化电路,该优化电路被布置为在下述情况下针对所选择的未决指令检测到优化条件,考虑到所选择的未决指令的关联操作,预测的源操作数值使得结果值在不执行关联操作的情况下是已知的。优化电路被布置为:响应于检测到优化条件,实现优化操作,而不是使执行电路执行关联操作以执行所选择的未决指令。因此,在检测到优化条件的情况下,可确定不需要执行所选择的未决指令以为该选择的未决指令产生结果值,这可产生显著的性能和/或功耗好处。特别地,由于不需要执行所选择的未决指令,因此这释放了执行电路内的资源来执行其他指令,从而改进性能。此外,由于在不需要在执行电路中执行所选择的未决指令的情况下确定结果值,这可节省功耗。

然后,还可实现关于发布队列内的任何相关指令的附加好处。特别地,优化电路可以被布置为标识发布队列中的将所选择的未决指令的结果值用作源操作数的相关指令。因为在存在优化条件的情况下,结果值在不执行关联操作的情况下是已知的,所以还可将相关指令的相关源操作数标识为已知的,即为已知结果值,使得发布电路然后将认为该源操作数可用于相关指令。这可以允许相关指令被分派给执行电路,以比在装置必须等待所选择的未决指令的执行以产生结果值的情况下更早地执行。

因此,将看到上述技术使得能够基于使用预测的源操作数做出的推测来确定所选择的未决指令的结果值,并且另外可允许该结果值然后被用作与发布队列中的任何相关指令有关的源操作数。这使得能够基于预测的源操作数值执行增强水平的推测,这可在预测的源操作数值正确的情形下导致显著地提高的性能。如先前讨论的,在适当的时候确定预测的源操作数值不正确的情形下,可使用标准重放机制来将处理设备的状态倒回到指令流中的适当点,然后使用实际的源操作数值来重新执行受影响的指令。

在一个示例布置中,所选择的未决指令提供目的地寄存器标识符,并且优化操作包括一旦确定预测的源操作数值为正确的,就将已知结果值提交给根据目的地寄存器标识符确定的寄存器。因此,尽管可在存在优化条件的情况下使用上述技术来实现增强水平的推测,但是实际上不提交结果值(即不更新系统的架构状态),直到预测的源操作数值被确定为正确为止。然而,此时可提交考虑到所选择的未决指令的预测的源操作数值和关联操作而确定的已知结果值,而无需执行所选择的未决指令以确定结果值。

存在可将预测的源操作数值确定为正确的许多方式。在一种示例布置中,每个指令被布置为通过提供关联的源寄存器标识符来标识一个或多个源操作数值,并且所选择的未决指令为由预测电路预测的源操作数值提供源寄存器标识符,该源寄存器标识符是要由执行电路执行的指令序列中的较早指令的目的地寄存器标识符。在这样的情形下,一旦为较早指令确定了结果值并且确定其与预测的源操作数匹配,就可以将所选择的未决指令的预测的源操作数值确定为正确的。因此,可使用标准推测检查机制来确定预测的源操作数值是否正确。在预测的源操作数值被确定为正确的情况下,那么可实现根据先前讨论的增强推测获得的性能好处(其中不仅基于预测的源操作数值、而且基于优化电路确定结果值在不执行所选择的未决指令的情况下是已知的来执行推测)。

可在各式各样的不同系统中采用上述优化技术。例如,该技术可以应用于其中指令以原始程序次序执行的有序处理器布置中或者其中允许相对于原始程序次序乱序执行指令的乱序处理器布置中。

在有序布置内,优化电路可以被布置为通过使执行电路将已知结果值写入根据目的地寄存器标识符确定的寄存器来实现优化操作。如先前讨论的,一旦预测的源操作数值被确定为正确的就会发生这种情况,因此通过将已知结果值写入相关寄存器来更新系统的架构状态是安全的。

在乱序布置内,可能不需要在提交点将已知结果值写入寄存器。特别地,在设备支持由执行电路相对于指令的原始程序次序乱序推测地执行指令的情况下,设备还可以包括寄存器重命名电路以将指令中的寄存器标识符所标识的架构寄存器映射到物理寄存器集内的物理寄存器,其中物理寄存器的数量超过架构寄存器的数量。如本领域的普通技术人员将理解的,寄存器重命名是可消除由连续指令对架构寄存器的重用而出现的假数据相关性的技术,这些连续指令在它们之间没有任何真数据相关性。对此类假数据相关性的消除可揭示指令流中更多的指令级并行性,这然后可被利用来改进性能。通过使用较大的物理寄存器集和寄存器重命名技术,同一架构寄存器的多个版本可同时存在。

在这样的系统内,不是在提交点写入寄存器,而是优化电路可以被布置为通过使寄存器重命名电路执行重映射来实现优化操作,使得目的地寄存器标识符所标识的架构寄存器被映射到包含已知结果值的物理寄存器。

虽然这种重映射只能在预测的源操作数值被确定为正确时提交,但是在一个示例布置中,优化电路可以被布置为在预测的源操作数值被确定为正确之前推测地执行重映射,然后当预测的源操作数值被确定为正确时提交重映射。可使用许多技术来区分推测重映射和提交的重映射。例如,可以将不同的重映射表用于推测重映射和提交的重映射,或者可替代地,可以与每个重映射相关联地提供附加字段以标识它是推测重映射还是提交的重映射。通过推测地执行重映射,这进一步提高可实现的性能好处,例如通过使用推测重映射来使相关指令能够被执行。

因此,在一个示例布置中,重映射可以用于针对至少一个相关指令触发进一步优化操作,所述至少一个相关指令使用所选择的未决指令的结果值作为源操作数。

可经受进一步优化操作的相关指令可采取各种形式。然而,作为具体示例,至少一个相关指令可以为移动指令,该移动质量将所选择的未决指令的结果值标识为源操作数,并且进一步优化操作使寄存器重命名电路执行进一步重映射,使得移动指令的目的地寄存器标识符所标识的架构寄存器也被映射到包含已知结果值的物理寄存器。

因此,应理解,在这样的情形下,不仅不需要执行所选择的未决指令,而且也不需要执行相关指令,因为在这两种情况下,只要预测的源操作数值正确,指令的结果就是已知的。这在执行指令流时可显著提高性能。

存在优化电路可以基于预测的源操作数值和所选择的未决指令的关联操作来检测优化条件的存在的各种情形。在一个示例布置中,所选择的未决指令的关联操作对多个源操作数值进行操作,并且关联操作使得当预测的源操作数值为预定值时,已知结果值由源操作数值之一给出。因此,在这样的布置中,可直接从源操作数值之一导出已知结果值。

预测的源操作数的预定值可以根据实现方式而变化,但是在一个示例布置中,预定值是0。因此,在这样的情形下,当预测的源操作数值为0时,优化电路可以被布置为基于所选择的未决指令的关联操作来确定结果值在不执行关联操作的情况下是否为已知的。

存在情况可能为这样的各种不同形式的指令。例如,所选择的未决指令可以为乘法指令,在这种情况下,当预测的源操作数值为0时,已知结果值是0。特别地,一旦知道了乘法指令的源操作数之一是0,那么结果值就将为0,而与另一个源操作数的值无关。

作为另一示例,所选择的未决指令可以为乘法累加指令,需要第一源操作数和第二源操作数相乘在一起以形成中间结果,该中间结果然后与累加源操作数相加。当对于第一源操作数和第二源操作数中的一个源操作数,预测的源操作数值为零时,已知结果值将由累加源操作数提供。因此,在这样的情形下,已知当执行乘法累加操作时,累加源操作数将没有变化,因此已知结果值可由累加源操作数直接提供。

在与累加源操作数的源寄存器标识符分开地指定目的地寄存器标识符的实现方式中,则可更新与根据目的地寄存器标识符确定的寄存器相关联的架构状态(通过写入目的地寄存器或通过寄存器重命名电路内的重映射),一旦知道预测的源操作数值正确,就将该寄存器的内容标识为累加的源操作数值。然而,在一些实现方式中,目的地寄存器标识符也是累加源操作数的源操作数标识符。通常使用这种形式的编码,因为它为乘法累加指令提供高效的编码。在此类情况下,将已知结果值提交给根据目的地寄存器标识符确定的寄存器仅仅包括保持该寄存器的内容不变。因此,在提交点,不需要写入目的地寄存器或者更新寄存器重命名表。

作为另一示例,所选择的未决指令可以为对第一操作数和第二操作数进行操作的加法或减法指令,并且对于第一操作数和第二操作数中的一个操作数,预测的源操作数值可以为0。在该情况下,已知结果值是根据第一操作数和第二操作数中的另一个的值确定的。对于加法指令,已知结果值将由第一操作数和第二操作数中的另一个操作数的值直接给出,正如其中操作数B被预测为0的加法操作A-B情况一样。此外,在操作数A被预测为0的减法指令的情形下,应当理解,仍然可根据另一个操作数B有效地确定结果值“-B”而无需执行减法运算,,例如它可能仅仅涉及使符号位翻转。

虽然在上述示例中,优化电路在预测的源操作数值为0的情形下寻找优化条件的存在,但是当预测的源操作数值具有不同的值时也可以使用该技术。例如,预测的源操作数值可以为1。

在一个这种示例中,所选择的未决指令可以是对第一操作数和第二操作数进行操作的乘法指令。在对于第一操作数和第二操作数中的一个操作数预测的源操作数值为1的情形下,已知结果值由第一操作数和第二操作数中的另一个操作数的值给出。

可在标量处理电路中或者在矢量处理电路中使用上述技术。例如,执行电路可以被布置为在多个并行处理通道中执行矢量处理操作,并且优化电路可以被布置为针对每个通道评估优化条件是否存在,使得能够将所述优化操作应用于任何下述通道:,考虑到所选择的未决指令的关联操作,针对该通道预测的源操作数值使得该通道的结果值在不执行关联操作的情况下也是已知的。这提供了用于当在执行电路内的并行处理的一个或多个通道中检测到优化条件时实现先前描述的性能和/或功率好处的灵活且高效的机制。

现在将参考图描述特定示例。

图1是图示了依照一个示例实现方式的数据处理设备的框图。取出级10用于从指令高速缓存15中取出由取出地址标识的指令。取出级可以耦合到分支预测电路以用于预测分支指令的结果,并且基于预测生成要由取出级10取出的指令的一系列取出地址。

解码级20对所提取的指令进行解码,以生成用于控制流水线的后续级的控制信息。这样生成的控制信息在本文中还可以被称为解码指令。

在有序处理系统中,可以将由解码级20生成的解码指令直接路由到发布级30,该发布级提供发布队列35,其中存储有解码指令,然而它们是等待由执行级45执行的未决指令。然而,在乱序系统中,可以附加地提供寄存器重命名级25以用于执行寄存器重命名以将指令所标识的架构寄存器指定符重映射到标识在硬件中提供的寄存器组50内的寄存器的物理寄存器指定符。寄存器重命名可用于支持乱序执行,因为这可允许通过将指令映射到硬件寄存器堆中的不同的物理寄存器来消除指定同一架构寄存器的指令之间的危险,以增加可以与从指令缓存15中提取指令的程序次序不同的次序执行这些指令的可能性,这可通过允许在较早指令正在等待操作数变得可用时执行较晚指令来改进性能。将架构寄存器映射到不同的物理寄存器的能力还可在分支误预测的情况下促进架构状态的回滚。

在寄存器重命名之后,可将解码指令信息存储在发布级30的发布队列35中,或者如先前讨论的,在不使用寄存器重命名的有序系统的情况下,可以将来自解码级20的解码指令信息直接提供给发布级30以存储在发布队列35中。

发布级30对等待执行的指令进行排队,直到处理那些指令所需的源操作数可用为止。例如,特定指令的源操作数可以作为来自在执行级中执行较早指令的结果值而产生,并且一旦该结果值变得可从执行级获得,要么通过被写入寄存器组50中适当的寄存器中,要么在转发路径之上转发,则可从发布队列发布该特定指令,只要任何其他源操作数也可用。执行级45执行指令以执行相应的处理操作,然后可从执行级输出结果以供写入寄存器组50中。

执行级可以包括许多执行单元,诸如用于评价是否已正确地预测分支指令的分支单元、用于执行算术逻辑运算的ALU(算术逻辑单元)、用于使用浮点操作数来执行运算的浮点单元、以及用于执行将数据从存储器系统加载到寄存器组50的寄存器的加载操作或将数据从寄存器组50的寄存器存储到存储器系统的存储操作的加载/存储单元。

在所示的示例中,存储器系统包括一级指令缓存15、一级数据缓存55以及在一级指令高速缓存及一级数据高速缓存和主存储器之间的一个或多个附加缓存级,图1中省略了这些附加缓存级和主存储器。

一旦未决指令的源操作数可用,就可将发布队列35中的未决指令发布到执行级45。为了允许实现指令的潜在较早执行,可以提供维护预测表65的值预测电路60,该预测表寻求可由指令指定的一个或多个架构寄存器维护预测值。存在可用来组织和维护预测表的各种方式,其目的是寻求以期望的置信度水平为架构寄存器提供预测值。

图2图示了预测表65的一种示例布置,该预测表包括多个条目100,为可由指令指定的每个架构寄存器提供一个条目。在有序(INO)系统中,这些架构寄存器还将直接对应于寄存器组50内的各个物理寄存器。然而,在乱序(OOO)系统中,将在寄存器组50内存在较大数量的物理寄存器,并且寄存器重命名级25用于维护架构寄存器与寄存器组50的物理寄存器之间的映射。在任何一个实现方式中,预测表可用于寻求预测特定架构寄存器的值。在一种示例布置中,这可通过针对每个架构寄存器寻求维护经由从执行级提供的结果观察到的值的历史来实现。

在图2的示例中,每个条目100包含四个字段。第一字段105用于标识架构寄存器,然而第二字段110用于维护由执行级针对该架构寄存器产生的结果值的历史。预测值字段115然后用于维护该架构寄存器的预测值,可基于对字段110中的值的历史的分析来确定该预测值。最后,置信度字段120用于提供指示预测值字段115内的预测值的置信度水平的置信度值。在一个示例实现方式中,一旦关联置信度值已达到指示预测值中的关联准确度的预定阈值,值预测电路60就将仅开始使用架构寄存器的预测值来做出预测。

考虑为架构寄存器R0所维护的条目100作为示例,然后如图2所示,值的历史可以指示值V

对于有序系统,来自值预测电路的输出可以仅标识架构寄存器和该架构寄存器的预测值。然而,对于乱序系统,来自值预测电路的输出还将使用从寄存器重命名级获得的信息,以便能够标识提供预测的源操作数值的物理寄存器。发布队列将维护未决指令的列表以及这些指令中的每一个所需要的源操作数的源操作数标识符的指示。对于有序系统,那些源操作数标识符可以标识将提供源操作数值的架构寄存器,然而对于乱序系统,那些源操作数标识符可以标识如由来自寄存器重命名级25的输出所提供的每个源操作数的物理寄存器。

当从值预测电路提供预测的源操作数值时,发布级30然后可更新在发布队列中维护的信息,使得可将正在等待该源操作数值的任何指令标记为使该源操作数可用。特别地,此时可将预测的源操作数值用作源操作数值,而无需等待实际的源操作数值变得可用。这可允许指令可用于比其他情况更早地从发布级30发布到执行级45,从而实现性能的提高。

另外,根据本文描述的技术,当预测的源操作数值取特定值时,发布级可采用优化分析器40来寻求确定将使用预测的源操作数值的指令是否存在优化条件。特别地,优化分析器40(其在本文中也可以被称为优化电路)被布置为当考虑到特定未决指令的关联操作,由该指令使用的预测的源操作数值使得结果值在不执行关联操作的情况下是已知时,针对该特定未决指令检测优化条件。在检测到优化条件的情况下,发布级30可被布置为使得,当确定要执行该特定未决指令时,指令实际上未由执行级45执行,而是替代地,在不执行指令以执行关联操作的情况下直接使用已知结果值。

因此,通过避免在检测到优化条件的情况下执行指令的需要改进了性能,从而释放执行级45的资源以用于执行其他操作。另外,由于避免了采用执行级来执行该特定指令的需要,可实现功耗好处。

所描述的技术因此使得能够基于预测的源操作数值实现增强水平的推测。特别地,不仅通过在已产生实际的源操作数之前提供某些预测的源操作数值来将预测的源操作数值本身用作推测的机制,而且在存在优化条件的情况下,可以直接根据预测的源操作数确定某些指令的结果值,而无需实际上执行这些指令。在一些情况下,那些结果值本身然后可用于进一步提高所执行的推测的水平,例如通过标识发布队列中将这样的结果值用作源操作数的任何相关指令,并且还将那些指令标记为使该源操作数可用。这在预测的源操作数值正确的情形下可提供明显的好处。如先前讨论的,由于一旦值预测电路在预测中具有需要的置信度水平就做出预测,所以然后预测的源操作数值的准确度可达到通过使用上述优化技术实现了显著性能好处的水平。

在对预测的源操作数值的推测证明为不正确的情形下,可实现回滚机制以使处理流水线的状态返回到使用预测的源操作数值之前的点,然后使用实际的源操作数值来重放受影响的指令。

当从执行级45产生了实际的结果值时,然后可更新预测表65的内容。在有序系统中,结果信息将标识架构寄存器和结果,从而允许直接更新预测表。对于乱序系统,执行级可以标识物理寄存器和结果,然后参考由寄存器重命名电路25执行的重映射,可在预测表内标识相关架构寄存器,并且更新该条目的内容。

当优化分析器确定在发布队列35中存在针对选择的未决指令的优化条件时,那么所执行的优化操作可以包括一旦预测的源操作数值被确定为正确就将已知结果值提交给根据由所选择的未决指令指定的目的地寄存器标识符确定的寄存器。特别地,与任何形式的推测一样,设备将被布置为一旦已发现相关联推测是正确的,就仅将更新提交给架构状态。因此,虽然可基于预测的源操作数值立即确定已知结果值,但是在预先确定的源操作数值被确定为正确之前不将该结果值提交给系统的架构状态是适当的。

对于有序系统,一旦到达提交点,优化操作就可以使执行电路将已知结果值写入根据目的地寄存器标识符确定的寄存器,而无需执行电路执行指令。对于乱序系统,可能不需要在该提交阶段对寄存器组执行任何更新,而是替代地,可将寄存器重命名级25内的寄存器重命名电路布置为执行重映射,使得由所选择的未决指令的目的地寄存器标识符标识的架构寄存器被映射到包含已知结果值的物理寄存器。因此,虽然由所选择的未决指令的目的地寄存器标识符标识的架构寄存器可能最初被映射到任一任意可用的物理寄存器,但是一旦检测到优化条件,那么寄存器就可执行重映射,使得该架构寄存器被替代地映射到包含已知结果值的物理寄存器。

虽然一旦知道预测的源操作数值正确就可仅提交重映射,但是优化分析器40可以被布置为使寄存器重命名级在预测的源操作数值被确定为正确之前推测地执行重映射,然后在预测的源操作数值被确定为正确时提交重映射。寄存器重命名级可以各种方式维护关于任何映射的推测或提交性质的信息。例如,它能为任何推测映射和提交的映射维护单独的表,或者可替代地,可以为映射表内的每个条目提供附加字段以标识该映射是推测映射还是提交的映射。

图3是图示一个示例布置中的优化分析器40的操作的流程图。在步骤150处,确定是否已从值预测器60接收到用于特定未决指令的预测的源操作数值。如果是,则在步骤155处,确定预测值是否使得在不执行指令的情况下该未决指令所标识的操作的结果是已知的。存在可确定这点的许多情形。例如,如果预测值为0并且运算是将被预测为0的该源操作数与另一源操作数相乘的乘法运算,则将知道在假定预测值证明是正确的时,结果值为零。

如果在步骤155处基于预测值和要执行的操作的类型确定结果值是未知的,则过程进行到步骤160,其中正常地处理指令。特别地,可以比由于提供预测的源操作数值而可能的方式更早地向执行级45发布指令,但是不对结果值做假定,而是替代地在该点处指令由执行级45执行以产生结果值。

然而,如果在步骤155处基于预测的源操作数值和所需的操作确定在不执行指令的情况下结果值是已知的,则在步骤165处实现优化操作,而不是使执行级执行指令。

图4是图示了根据一个示例实现方式的在图3的步骤165期间执行优化操作的流程图。在步骤200处,对于预测的源操作数,确定是否已提交了将产生所需值作为其结果值的任何较早指令,即,所产生的结果已用于更新设备的架构状态,要么通过写入到寄存器组中的适当的寄存器,要么通过将特定映射提交给寄存器重命名表。

当确定提交了产生该值作为其结果的较早指令时,然后在步骤205处,确定该较早指令的结果是否与预测的源操作数值相同。如果否,则过程进行到步骤215,其中必要时倒回由图1的设备执行的处理以基于预测的源操作数值对任何推测进行校正。特别地,将需要从流水线中清除根据预测的源操作数值执行处理的所有指令,而是替代地使处理流水线的状态返回到使用预测的源操作数值之前的点,然后基于实际的源操作数值来重新执行受影响的指令。

然而,如果在步骤205处确定该较早指令的结果是预测的源操作数值,则在步骤210处可将已知结果值提交给根据使用预测的源操作数值的指令的目的地寄存器标识符确定的寄存器。

以上参考图3和图4讨论的步骤可与处理流水线的形式无关地执行,并且特别地,不管流水线是实现指令的有序处理还是指令的乱序处理都可被执行。

存在可在图4的步骤210处提交已知结果值的许多方式。图5A图示了可以例如在有序处理系统内使用的一种示例方法。特别地,在步骤220处,优化操作的实现方式可以涉及使执行级45将已知结果值写入目的地寄存器标识符所标识的寄存器组50内的寄存器,而无需执行级实际上执行指令。特别地,可将已知结果值连同应该将结果值写入其中的寄存器的指示一起直接提供给执行级。

图5B图示了可用于例如在乱序系统中在图4的步骤210处提交已知结果值的方法。特别地,在步骤225处,可使用优化操作的实现方式来使寄存器重命名级25内的寄存器重命名电路执行重映射,使得由已使用预测的源操作数值的指令的目的地寄存器标识符标识的架构寄存器被映射到包含已知结果值的物理寄存器。通过执行这样的重映射,这可消除对寄存器组50中的任何物理寄存器执行任何实际的更新以实现图4的步骤210的需要。

如先前提及的,虽然在存在优化条件的情况下在寄存器重命名电路内执行的上述重映射只能在已确定了预测的源操作数正确时提交,但是可通过在预测的源操作数值被确定为正确之前推测地执行重映射来实现附加性能改进。图6图示了这样的优化操作的一个示例实现方式。特别地,可使用图6的过程代替图4的过程以实现图3的步骤165。

在步骤250处,使寄存器重命名电路推测地执行重映射,使得由已使用预测的源操作数值的指令的目的地寄存器标识符所标识的架构寄存器被映射到预期存储已知结果值的物理寄存器。在此阶段,情况可能是所讨论的物理寄存器还未用结果值填充。仅作为示例,如果我们考虑指定架构源操作数寄存器R3和R7的乘法指令,其结果被写入架构目的地寄存器R1中,并且为了说明的目的,我们假定源寄存器R3由寄存器重命名电路映射到物理寄存器P40,则如果R3的预测的源操作数值由值预测电路60输出,并且特别地预测到该源操作数值是0,则结合指令指定乘法运算的知识,将知道要写入寄存器R1中的结果值也是0。因此,在步骤250处执行的推测重映射可将架构寄存器R1重映射到物理寄存器P40。可这样做,而不管正在写入到寄存器R3的较早指令是否已结束执行。

然后,在步骤255处,对于预测的源操作数,确定是否提交了产生该值作为其结果的较早指令。一旦这是真的,则过程进行到步骤260,其中确定该较早指令的结果是否与预测的源操作数值相同。如果否,则过程进行到步骤265,其中倒回由图1的处理流水线执行的处理以基于预测的源操作数值对任何推测进行校正,并且另外,对重命名表映射进行任何必要的调整。特别地,参考先前讨论的步骤250,可以确定已执行的推测重映射是不适当的,并且替代地,可以将所讨论的架构寄存器映射到不同任意可用的物理寄存器。

如果在步骤260处将较早指令的结果确定为与预测的源操作数值相同,则过程进行到步骤270,其中将在步骤250处执行的推测重映射维护为提交的重映射,从而更新系统的架构状态。

除了在图3的步骤165处与使用预测的源操作数值的特定未决指令相关联地执行的优化操作之外,在一些情况下,还可以关于某些相关指令执行更多水平的优化,如例如由图7的过程所示。在步骤300处,发布级30可被布置为检查发布队列35中的指令以识别对于要使用先前讨论的优化操作来处理的指令是否存在相关指令,即对于结果值在不执行该未决指令的情况下是已知的未决指令是否存在相关指令。然后,在步骤305处,对于任何这种相关指令,如果该相关指令的结果可直接从由使用优化操作处理的未决指令的结果值给出的该相关指令的源操作数导出,则可对用于存储该相关指令的结果的架构寄存器执行附加推测重映射。

作为具体示例,考虑以下两个指令:

MUL R1,R3,R4

MOV R5,R1

第一乘法指令用于将架构寄存器R3和R4中的值相乘,结果被存储在R1中。后续移动指令然后将寄存器R1的内容移动到寄存器R5中。

如果对于乘法指令,为寄存器R3给出预测的源操作数值0,则这由优化分析器40检测为导致优化条件的存在,因为知道如果该预测的源操作数值是正确的,则要存储在寄存器R1中的结果值将为0。可以在图6的步骤250处执行的推测行重映射会在这种情况下将架构寄存器R1重映射到与架构寄存器R3相关联的同一物理寄存器,为了说明的目的,假定架构寄存器R3是物理寄存器P40。然后,对于后续移动指令,注意这是相关指令,因为其源操作数是架构寄存器R1。还确定了结果可直接从该源操作数导出,在这种情况下,它与源操作数相同。因此,可执行进一步推测行重映射以将架构寄存器R5重映射到与R1相关联的物理寄存器,其考虑以上重映射现在是物理寄存器P40。因此,这时寄存器R3、R1和R5中的每一个均被映射到物理寄存器P40。假如在适当的时候发现产生与源寄存器R3相关联的值的较早指令实际上产生了值0,那么这将意味着值0将被存储在物理寄存器P40中,并且现在可提交寄存器R1和R5的上述两个推测重映射,而无需单独地执行乘法指令或移动指令。因此,应理解,本文描述的优化技术可在某些情形下产生显著的性能改进。

图8A至图8D图示了可使用先前讨论的优化技术的某些示例场景。图8A示出了乘法指令,并且在这种情况下,假定值预测电路60预测到架构寄存器R3的源操作数是0。因此,基于先前描述的优化技术,这允许架构寄存器R1被映射到0,并且一旦知道R3的内容实际上为0就提交该映射。

图8B图示了加法或减法示例,并且再次预测到与架构寄存器R3相关联的源操作数值是0。在这种情况下,可将架构寄存器R1映射到架构寄存器R2。对于先前讨论的寄存器重命名示例实现方式,这将涉及将与架构寄存器R1相关联的物理寄存器映射为与架构寄存器R2相关联的同一物理寄存器。一旦知道架构寄存器R3为0就可提交该映射。

图8C图示了乘法累加指令。依照这种编码,寄存器R2和R3提供要一起相乘在一起以产生中间结果的源操作数值,然后将该中间结果与寄存器R1中的当前累加值相加以产生结果值,该结果值然后被写回到寄存器R1。在此图示的示例中,假定值预测电路60预测到与架构寄存器R2相关联的值是0。这暗示不需要对与架构寄存器R1相关联的内容进行更新,并且一旦知道了R2的内容为0就可确认这点。

图8D图示了乘法示例,其中寄存器R2和R4中的值相乘在一起以产生被写入寄存器R1中的结果。在这种情况下,假定值预测电路预测到与寄存器R2相关联的值是1。利用这种信息,然后知道要写入R1的结果将是存储在R4中的值,并且因此R1将被映射到R4,一旦知道R2中的值为1就提交该映射。

如先前讨论的,可在有序系统和乱序系统中采用上述优化技术。此外,可在标量系统中或者在矢量处理系统中采用上述优化技术,在所述矢量处理系统中,在多个处理通道中并行地执行处理操作,其中每个通道从形成每个源操作数的数据元素矢量中接收特定数据元素。如图9所图示,可在每个并行处理通道中独立地实现上述优化技术。在图9的示例中,示出了四个并行处理通道350、355、360、365,并且关于在每个相应的通道中使用的源数据元素执行源值预测。基于该源值预测,优化检查370、375、380、385可由优化分析器40针对每个通道独立地执行,使得能够根据针对该车道是否检测到优化条件而在逐通道基础上执行上述优化处理。当通过使一个或多个通道中的处理能够被关闭来执行矢量处理操作时,这可以产生功耗节省,因为在此类通道内结果值在不执行数据处理操作的情况下是已知的。

根据上述示例,应理解,本文描述的技术使得能够在采用值预测方案的微架构中实现附加性能好处。特别地,值预测不仅使得某些源操作数值变得比其他情况更早地可用,而且另外,当预测的源操作数值为特定值时,该特定值结合相关未决指令所需的操作,意味着结果值在不执行该操作的情况下是已知的,然后可以使用该信息来避免指令的执行。此外,可使用结果值的知识来允许关于可以使用该结果值作为源操作数的相关指令的进一步推测。

虽然原则上可以基于所选择的未决指令的实际的源操作数值和关联操作来检测优化条件,但是将可实现的性能好处通常会受到限制,因为许多源操作数值实际上是由指令流内邻近指令创建的。然而,通过使用预测的源操作数值,不再需要这种对较早指令执行的相关性。特别地,预测的源操作数值可能在实际的源操作数值前面明显可用,因此上述技术使得能够在早期阶段检测到优化条件,从而显著地提高可实现的性能好处。

在本申请中,单词“被配置为...”用于意味着设备的元件具有能够执行所定义的操作的配置。在这种上下文中,“配置”意指硬件或软件的互连的布置或方式。例如,设备可以具有提供所定义的操作的专用硬件,或者处理器或其他处理器件可以被编程来执行功能。“被配置为”不暗示需要以任何方式改变设备元件以提供所定义的操作。

尽管已在本文中参考附图详细地描述了本发明的说明性实施方式,但是应当理解,本发明不限于那些精确的实施方式,并且在不脱离如由所附权利要求所限定的本发明的范围和精神的情况下,本领域的技术人员可在其中实现各种变化、添加和修改。例如,在不脱离本发明的范围的情况下,能用从属权利要求的特征做出独立权利要求的特征的各种组合。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号