使用寄存器重命名处理移动指令的制作方法

文档序号:11653947阅读:234来源:国知局
使用寄存器重命名处理移动指令的制造方法与工艺

本技术涉及数据处理领域。



背景技术:

数据处理装置可支持寄存器重命名,其中由指令指定的逻辑寄存器被映射到硬件中设置的物理寄存器。例如,这可有利于通过消除写入相同逻辑寄存器的连续指令之间的依赖性来提高性能,其中它们之间的依赖性可通过将指令的目的地逻辑寄存器映射到不同的物理寄存器来消除。这在无序处理器中是特别有用的,因为使用寄存器重命名消除了指令之间的数据依赖的风险,增加了改变指令执行顺序的自由,以改善性能。



技术实现要素:

至少一些示例提供了一种装置,包括:

处理电路,该处理电路响应于指令而执行数据处理;

寄存器重命名电路,该寄存器重命名电路将由指令指定的逻辑寄存器映射到硬件中设置的物理寄存器;

控制电路,该控制电路选择第一移动处理技术和第二移动处理技术中的一者用于处理指定源逻辑寄存器和目的地逻辑寄存器的移动指令;其中:

在第一移动处理技术中,响应于移动指令,寄存器重命名电路被配置为将目的地逻辑寄存器映射到与源逻辑寄存器相同的物理寄存器;

在第二移动处理技术中,响应于移动指令,处理电路被配置为将从对应于所述源逻辑寄存器的物理寄存器读取的数据值写入对应于所述目的地逻辑寄存器的不同物理寄存器;以及

该控制电路被配置为:当移动指令的源逻辑寄存器与根据第一移动处理技术处理的较早移动指令的源逻辑寄存器和目的地逻辑寄存器中的一者相同并且针对所述源逻辑寄存器和目的地逻辑寄存器中的一者的当前寄存器映射与在处理所述较早移动指令时针对所述源逻辑寄存器和目的地逻辑寄存器中的一者所使用的映射相同时,选择第二移动处理技术。

至少一些示例提供了一种装置,包括:

响应于指令而执行数据处理的装置;

用于将由指令指定的逻辑寄存器映射到硬件中设置的物理寄存器的装置;以及

选择第一移动处理技术和第二移动处理技术中的一者用于处理指定源逻辑寄存器和目的地逻辑寄存器的移动指令的装置;其中:

在第一移动处理技术中,响应于移动指令,用于映射的装置被配置为将目的地逻辑寄存器映射到与源逻辑寄存器相同的物理寄存器;

在第二移动处理技术中,响应于移动指令,用于执行数据处理的装置被配置为将从对应于所述源逻辑寄存器的物理寄存器读取的数据值写入对应于所述目的地逻辑寄存器的不同物理寄存器;以及

用于选择的装置被配置为:当移动指令指定的源逻辑寄存器与根据第一移动处理技术处理的较早移动指令的源逻辑寄存器和目的地逻辑寄存器中的一者相同并且针对所述源逻辑寄存器和目的地逻辑寄存器中的一者的当前寄存器映射与处理所述较早移动指令时针对所述源逻辑寄存器和目的地逻辑寄存器中的一者所使用的映射相同时,选择第二移动处理技术。

至少一些示例提供了一种数据处理方法,包括:

选择第一移动处理技术和第二移动处理技术中的一者用于处理指定源逻辑寄存器和目的地逻辑寄存器的移动指令;

当第一移动处理技术被选择时,将目的地逻辑寄存器映射到与源逻辑寄存器相同的物理寄存器;

当第二移动处理技术被选择时,将从对应于所述源逻辑寄存器的物理寄存器读取的数据值写入对应于所述目的地逻辑寄存器的不同物理寄存器;以及

其中,当移动指令指定的源逻辑寄存器与根据第一移动处理技术处理的较早移动指令的源逻辑寄存器和目的地逻辑寄存器中的一者相同并且针对所述源逻辑寄存器和目的地逻辑寄存器中的一者的当前寄存器映射与处理所述较早移动指令时针对所述源逻辑寄存器和目的地逻辑寄存器中的一者所使用的映射相同时,第二移动处理技术被选择。

本技术的其它方面、特征和优点将从以下结合附图来阅读的示例的描述中显而易见。

附图说明

图1示意性地示出具有寄存器重命名电路的数据处理装置的示例;

图2a示出用于处理移动指令的第一移动处理技术的示例;

图2b示出用于处理移动指令的第二移动处理技术的示例;

图3示出针对第一移动指令使用第一移动处理技术以及根据第一移动指令的源逻辑寄存器或目的地逻辑寄存器来针对随后的移动指令使用第二移动处理技术的示例;

图4示出确定在根据第一移动处理技术处理移动指令之后所映射到两个不同逻辑寄存器的物理寄存器何时可被重新分配给不同的逻辑寄存器的示例;

图5示出处理移动指令的方法的流程图;

图6示出确定物理寄存器何时可被重新分配的方法;

图7是示出给定物理寄存器的状态转换的状态图;

图8示出使用推测和架构重命名表的寄存器重命名电路的第二个实施例;

图9示出使用图8的实施例处理移动指令的示例;

图10示出在第二实施例中处理移动指令的方法;

图11示出在指令被提交时更新架构重命名表的方法;

图12示出响应冲洗(flush)事件的方法;

图13示出在第二实施例中确定物理寄存器何时可被重新分配的方法;

图14是示出在第二实施例中给定物理寄存器的状态转换的状态图。

具体实施方式

以下将描述一些具体示例。应当理解的是,本发明不限于这些确切的示例。

指定源逻辑寄存器和目的地逻辑寄存器的移动指令可被提供。对于不支持寄存器重命名的系统,响应于移动指令,处理电路会从一个寄存器读取数据值,并将该数据值写入不同的寄存器。然而,在寄存器重命名支持的情况下,通过简单地将移动指令的目的地逻辑寄存器重映射到当前被映射至源逻辑寄存器的相同的物理寄存器,移动指令可在重命名级被更快地处理。使用寄存器重命名电路来处理移动指令可帮助提高性能,首先通过消除对向处理电路实际分派移动指令的需要,从而为其它指令释放处理槽,并且还因为读取目的地逻辑寄存器的后续指令移动指令有效地变得对于写入移动指令的源逻辑寄存器的较旧指令产生依赖,因此后续指令不需要等待其操作数变得可用,从而提高了性能。

由于给定的移动指令在重命名级通常比其在实际上由处理电路处理的情况下可被更快地处理,人们总是期望使用重命名技术来处理移动指令。然而,这样可能出现一些复杂情况,因为当通过将目的地逻辑寄存器重新映射到与重命名电路处的源逻辑寄存器相同的物理寄存器来处理移动指令时,会导致多个逻辑寄存器都被映射到相同的物理寄存器。这可能使得更难确定给定物理寄存器何时不再被任意未决指令所需要以及何时可被重新分配给不同的逻辑寄存器。给定程序可包括移动指令链,其中各个指令取决于先前移动指令的结果。例如,一个移动指令可将数据从逻辑寄存器a移动到逻辑寄存器b,另一个移动指令随后将数据从逻辑寄存器b移动到逻辑寄存器c,接着是再一个移动指令将数据从逻辑寄存器c移动到逻辑寄存器d,以此类推。如果链中的这些移动指令中的每一者使用重命名技术来处理,则这可能导致许多逻辑寄存器都被映射到相同的物理寄存器,并且这可能使物理寄存器解除分配复杂化。解决这个问题的方法是为每个物理寄存器提供多个计数器,每当逻辑寄存器映射到该物理寄存器时递增计数器,并且当该映射不再被需要时递减计数器。当计数器达到零时,物理寄存器随后可被重新分配给不同的逻辑寄存器。然而,这是相对昂贵的解决方案,因为通常的高端无序处理流水线可具有多达160-180个物理寄存器,这样为每个物理寄存器提供具有自身的多位计数器的可导致:除了为每个物理寄存器提供用于增加或减少计数器以及将计数器与零进行比较以确定物理寄存器何时可被重新分配的电路之外,还需要存储大量额外状态数据。

取而代之的是,装置可设置有控制电路,以便选择第一移动处理技术和第二移动处理技术中的一者用于处理移动指令。在第一移动处理技术中,响应于移动指令,寄存器重命名电路将目的地逻辑寄存器映射到与源逻辑寄存器相同的物理寄存器。在第二移动处理技术中,响应于移动指令,处理电路将从对应于所述源逻辑寄存器的物理寄存器读取的数据值写入对应于所述目的地逻辑寄存器的不同物理寄存器。当移动指令指定的源逻辑寄存器与根据第一技术处理的较早移动指令指定的源逻辑寄存器和目的地逻辑寄存器中的一者相同并且针对该源逻辑寄存器和目的地逻辑寄存器中的一者的当前寄存器映射仍然是在处理较早移动指令时的映射时,控制电路可选择第二移动处理技术。

在某些场合期望选择第二移动处理技术将会损害性能,因为第二移动处理技术通常可能比第一移动处理技术慢。然而,在实践中,发明人观察到,当存在从属移动指令链时,链中的第二移动指令以及链中的任何后续移动指令通常不在关键路径上。在处理的关键路径(限制性能的路径)上观察到的大多数移动没有取决于该移动的后续移动。因此,已发现在根据第一移动处理技术来处理链的第一移动指令,而后续链接的移动使用第二移动处理技术被处理的情况下,使用第一移动处理技术来处理移动指令可实现许多性能优点。因此,当移动指令指定的源逻辑寄存器与根据第一技术处理的较早移动指令指定的源逻辑寄存器和目的地逻辑寄存器中的一者相同并且针对该源逻辑寄存器和目的地逻辑寄存器中的一者的当前寄存器映射仍然是在处理较早移动指令时的映射时,通过选择第二移动处理技术则可避免对用于跟踪映射到相同物理寄存器的大量逻辑寄存器的复杂电路的需求,以便节省电路面积和功耗,但是直观上,这也不会导致显著的性能损失。

在一些示例中,除了上述条件(即,当移动指令的源与较早移动指令的源或目的地匹配并且针对该源逻辑寄存器和目的地逻辑寄存器中的一者的当前寄存器映射仍然是在处理较早移动指令时的映射时)之外的情况下可选择第一移动处理技术。另一方面,在除了上述条件之外的某些情况下也可选择第二移动处理技术。

注意的是,在确定如何处理给定移动指令的时候,当针对较早移动指令的源或目的地逻辑寄存器的当前寄存器映射仍然与当处理较早移动指令时使用的寄存器映射相同时,这不一定意味着从处理较早移动指令以来,针对该逻辑寄存器的寄存器映射没有改变。虽然通常情况是这样的,但是在支持指令的推测重命名的系统中,可能的是,另一个指令可能被推测地重命名以改变针对相关逻辑寄存器的寄存器映射。如果随后检测到其他指令不应被执行(例如,分支可能已被错误预测),则流水线可被冲洗且针对该逻辑寄存器的寄存器映射可恢复到在处理较早移动指令时其具有的较早寄存器映射。

在第一移动处理技术中,响应于移动指令,寄存器重命名电路将目的地逻辑寄存器映射到与源逻辑寄存器相同的物理寄存器。当使用第一移动处理技术时,控制电路可抑制向处理电路分派移动指令。

另一方面,对于第二移动处理技术,寄存器重命名电路可将移动指令的目的地逻辑寄存器映射到与当前映射到源逻辑寄存器的第一物理寄存器不同的第二物理寄存器。接着,该移动可由处理电路分派和执行,以便从第一物理寄存器读取数据值,并将该数据值写入第二物理寄存器。

跟踪使用在处理较早移动时所使用的寄存器映射的给定逻辑寄存器是否是较早移动指令的源或目的地的一种方式是提供若干控制标志,其中每个控制标志对应于逻辑寄存器中的一者。例如,每个控制标志可与相应的逻辑寄存器一起存储在重命名表中,以进行物理寄存器映射。控制电路可基于对应于要被处理的新移动指令的源逻辑寄存器的控制标志来在第一移动处理技术和第二移动处理技术之间进行选择。每个控制标志可取第一值以及第二值。当使用第一移动处理技术处理移动指令时,控制电路将对应于该移动指令的源逻辑寄存器及目的地逻辑寄存器的控制标志都设定为第一值。当寄存器重命名电路针对不同于使用第一移动处理技术处理的移动指令的指令来将给定逻辑寄存器重新映射到不同物理寄存器时,控制标志被设定为第二值。当遇到移动指令时,控制电路检查对应于移动指令的源逻辑寄存器的控制标志。当控制标志具有第一值时,针对该移动指令选择第二移动处理技术。当控制标志具有第二值时,选择第一移动处理技术。第一值和第二值可以分别对应于1和0,反之亦可。

这种方法将可被映射到相同物理寄存器的逻辑寄存器的最大数目限制为两个,使得控制物理寄存器重新分配的开销可被减少,因为为每个逻辑寄存器提供控制标志比以上所讨论的为每个物理寄存器提供多位计数器和相关联的控制逻辑的可选技术具有更高面积效率,这是由于通常在由处理器支持的架构中存在的逻辑寄存器比在硬件中设置的物理寄存器少得多。

该装置可具有寄存器预留电路,以控制哪些物理寄存器可用于由寄存器重命名电路重新分配给不同的逻辑寄存器。在一些系统中,寄存器预留电路可被认为与寄存器重命名电路是分离开的,而在其他示例中,寄存器预留电路可是寄存器重命名电路自身的一部分。一般来说,如果后续指令可能潜在地需要存储在物理寄存器中的值(或者因为物理寄存器中的值表示后续指令所需的当前架构状态,或者因为物理寄存器保留先前的架构状态,该先前的架构状态在存在错误推测的情况下可能需要被恢复),则寄存器预留电路可预留物理寄存器以防止它们被重新分配。

存在许多控制物理寄存器重新分配的方式:一些方法可允许物理寄存器更早地被回收以提高性能,而其他方法可能会更保守,但是需要复杂性较低的控制电路以节省面积和功率。一般来说,寄存器预留电路可针对逻辑寄存器与物理寄存器之间的每个寄存器映射来确定是否满足重新分配物理寄存器的重新分配条件。例如,重新分配条件可基于对读取或写入相应的逻辑寄存器的后续指令的观察。在第一示例中,当写入相同逻辑寄存器的较新指令已被提交,并且在不存在比较新指令更早的待运行的未决指令时,可满足重新分配条件。在第二示例中,寄存器预留电路可跟踪待由未决指令读取的逻辑寄存器,并当不存在更多的对应于相同的逻辑寄存器的待运行的未决指令并且在指定与目的寄存器相同的逻辑寄存器的较新指令被保证提交时,给定的逻辑至物理寄存器映射满足重新分配条件。与第一种方法相比,第二种方法可提高性能,因为给定的物理寄存器可更快地用于重新分配(如果不存在实际读取物理寄存器的剩余指令,则不需要等待较新指令的实际提交)。另一方面,第一种方法可更有效地在电路中实现,因为可简单地基于未决指令的相对寿命来评估重新分配条件,并且不需要跟踪由每条指令读取的寄存器。因此,所使用的特定重新分配条件可在面积和性能之间的进行权衡。

不管使用什么类型的重新分配条件,在根据第一移动处理技术处理移动指令之后,寄存器预留电路可防止被映射到移动的源逻辑寄存器和目的地逻辑寄存器的物理寄存器变为可用于重新分配,直到移动的源逻辑寄存器和目的地逻辑寄存器两者都满足重新分配条件。如上所述,通过在第一移动处理技术和第二移动处理技术之间进行选择,释放给定物理寄存器仅需要跟踪两个不同的逻辑寄存器的重新分配条件,而不需要三个或更多个寄存器的链。这使得寄存器预留电路在面积和功耗方面更有效地被实现。

例如,跟踪源逻辑寄存器映射和目的地逻辑寄存器映射是否满足重新分配条件的一种方式可以是维持每个物理寄存器的寄存器状态信息,该寄存器状态信息指示各物理寄存器的多个寄存器状态中的一个状态。寄存器状态可包括至少可用状态、预留状态和几乎可用状态。在一些系统中,可能存在比这三种状态多的状态(例如,如果存在物理寄存器可能需要被保护以避免重新分配的其他情况)。

当给定的逻辑寄存器被映射到新的物理寄存器时,该新的物理寄存器可从那些由相应的寄存器状态信息指示可用状态的物理寄存器中选择。处于预留状态或几乎可用状态的物理寄存器没有资格被选择作为新的物理寄存器。当新的物理寄存器被选择并被映射到给定的逻辑寄存器时,针对所选择的物理寄存器的相应寄存器状态信息被更新为指示预留状态。这样可在其返回到可用状态之前防止物理寄存器被映射到不同的逻辑寄存器。

在根据第一移动处理技术处理移动指令之后,映射到移动的源逻辑寄存器及目的地逻辑寄存器这两者的给定物理寄存器最初处于预留状态(当该物理寄存器响应于较早指令之前已被分配给移动的源逻辑寄存器时,该物理寄存器可能已经过渡到保留状态)。当确定给定物理寄存器与源逻辑寄存器和目的地逻辑寄存器中的任一者之间的寄存器映射满足重新分配条件并且给定物理寄存器的寄存器状态信息指示预留状态时,给定物理寄存器的寄存器状态信息被更新为指示几乎可用状态,这样物理寄存器尚未变得可用于重新分配(因为移动的源逻辑寄存器和目的地逻辑寄存器中的另一者还不满足重新分配条件)。当源逻辑寄存器和目的地逻辑寄存器中的一者与给定物理寄存器之间的寄存器映射被检测到满足重新分配条件并且给定物理寄存器的寄存器状态信息指示几乎可用状态时,则该给定物理寄存器的寄存器状态信息被更新为指示可用状态。此时,该物理寄存器再次变得可用于重新映射至不同的逻辑寄存器。因此,根据第一移动处理技术处理的移动指令的源寄存器和目的地寄存器映射都需要在相应的物理寄存器可被重新分配之前满足重新分配条件。

在一些系统中,寄存器重命名电路可使用单个重命名表来跟踪逻辑寄存器和物理寄存器之间的寄存器映射。

然而,在其他示例中,将重命名表划分为推测重命名表和架构重命名表可能是有用的,其中推测重命名表用于标识响应于推测重命名指令而更新的寄存器映射以及架构重命名表用于标识响应于所提交的指令而更新的寄存器映射。这对于在知晓指令实际上是否应该被运行之前支持这些指令的推测性的运行可能是有用的。推测重命名表可被推测性地更新(例如在分派时间),并且如果推测是正确的,则推测重命名表中的寄存器映射是有效的。一旦指令被提交,架构重命名表就可被更新,这表示针对被保证运行的指令的最后知晓的寄存器映射。如果存在错误推测(例如,分支错误预测或不正确的数据预取),则架构重命名表可用于将先前寄存器映射恢复到推测重命名表,以使处理能够在发生错误推测之前从先前点被恢复。

在这种系统中,控制电路可基于推测重命名表来选择使用第一移动处理技术还是使用第二移动处理技术,而寄存器预留电路可基于架构重命名表来控制物理寄存器是否可被重新分配。这确保了在当来自架构重命名表的映射在错误推测之后被恢复到推测重命名表时仍然需要物理寄存器的情况中,这些物理寄存器不被重新分配。更具体地,当移动指令的源逻辑寄存器与根据第一移动处理技术处理的较早移动的源逻辑寄存器和目的地逻辑寄存器中的一者相同并且针对该源逻辑寄存器和目的地逻辑寄存器中的一者的在推测重命名表中的当前寄存器映射与处理较早移动指令时使用的寄存器映射相同时,控制电路可选择第二移动处理技术。寄存器预留电路可防止映射到给定移动的源逻辑寄存器和目的地逻辑寄存器的物理寄存器可用于重新分配,直到针对移动的源寄存器和目的地寄存器这两者的寄存器映射已在架构重命名表中被重写。

除了推测和架构重命名表,传送缓冲器可被提供来存储一个或多个寄存器映射条目,该映射条目指定在相应的指令被提交时在推测重命名表中已被更新但在架构重命名表中仍然待更新的寄存器映射。传送缓冲器可使架构重命名表的更新更简单以在电路中实现,并且还具有如下优点:如果存在冲洗且来自架构重命名表的映射被恢复到推测重命名表,则传送缓冲器的一些寄存器映射可被用于重建推测重命名表,直到冲洗事件发生的时间点。

推测重命名表、传送缓冲器和架构重命名表的每个条目可具有相应的控制标志,所述控制标志指示相应的寄存器映射是否对应于根据第一移动处理技术处理的移动的源逻辑寄存器或目的地逻辑寄存器。这些控制标志可使用上面讨论的将控制标志设定为第一值和第二值的技术在推测重命名表和传送缓冲器中更新。在该情况下:一旦提交相应的指令则传送缓冲器的条目被写入架构重命名表,相应的控制标志也可被写入架构重命名表,使得寄存器预留电路可确定架构重命名表中哪些条目需要从预留状态经由几乎可用状态过渡到可用状态,并且如果条目不涉及根据第一移动处理技术处理的移动指令中的一者,则这些条目可直接过渡到可用状态。

在一些情况下,上面讨论的用于选择如何处理给定移动指令的控制电路可以与重命名电路本身分离开。例如,指令解码器可访问重命名表,并使用它来将移动指令标示为要根据第一移动处理技术或第二移动处理技术处理的指令,然后寄存器重命名电路可简单地读取该标示以确定是否为其自身应使用第一技术来执行移动还是将指令分派到处理电路以使用第二技术处理进行处理。

然而,在其他示例中,控制电路可以是寄存器重命名电路自身。这样对于重命名电路可更简单地确定如何处理给定的移动指令,正因如此,可控制重命名表来确定针对较早移动的寄存器映射是否仍然是有效的。

图1示意性地示出数据处理装置2中部分处理流水线。流水线包括多个级,包括获取级4、解码级6、重命名级8、分派级9、发布级10、运行级12和回写级14。待处理的指令从一个级移动至另一个级,且一个指令可在流水线的一个级挂起,而另一个指令在不同级挂起时。应当理解的是,这仅是可能的流水线的一个示例,且其他示例可以具有其他级或布置。

获取级4从指令缓存或存储器获取程序指令。解码级6解码所获取的指令以生成经解码的指令,该指令被传递到流水线的其余部分以进行处理。对于一些指令,从存储器获取的单个指令可被解码为沿着流水线传递的单个经解码的指令。然而,对于其它更复杂的指令,单个获取的指令可以被解码为的多个解码指令(被称为“微操作”)。例如,用于触发一系列要被执行的操作(例如,加载多个指令)的指令可被解码为各个微操作,其中每个操作对应于操作中的一者。因此,后面的流水线级8、9、10、12、14中所示的“指令”可不同于从存储器获取的指令,并且术语“指令”应当被解释为包括微操作。

装置2具有可用于存储数据值的若干物理寄存器20。寄存器重命名级8对经解码的指令(或微操作)执行寄存器重命名以将由指令指定的逻辑寄存器指定符映射到标识物理寄存器20中的一者的物理寄存器指定符。指令集架构可支持特定数目的对程序员是可见的逻辑寄存器(也称为架构寄存器)。例如,指令编码中的4位或5位寄存器字段可指定16个或32个不同的逻辑寄存器指定符中的一者。然而,为了使指定相同逻辑寄存器指定符的指令之间的风险被解决或者允许指令的无序或并行处理,可提供更多数量的物理寄存器,且寄存器重命名级8可将经解码的指令中的逻辑寄存器指定符映射到相应的物理寄存器。

现在指定物理寄存器指定符的经重命名的指令被传递到分派级9。分派级9将指令分派到发布队列10,指令在发布队列中在等待运行的同时被列队。指令保留在发布队列中,直到它们的操作数可用,这时指令被发布到运行级12来被运行。指令可被发布来以与获取级4获取它们的原始程序顺序不同的顺序运行。例如,当一个指令由于其操作数尚不可用而暂停时,操作数可用的后续指令可先被发布。分派级9提供缓冲器以使指令即使发布队列10已满的情况下能够离开重命名级8,以便继续其他指令的重命名。在其他示例中,可省略分派级9,使得重命名级8有效地也充当分派级,但是在这种情况下,当发布队列10变满时,重命名被暂停。

运行级12可包括各种处理单元,该处理单元响应于指令而运行处理操作。例如,处理单元可包括算术/逻辑单元(alu),该算术/逻辑单元用于执行算术或逻辑操作;加载/存储单元,该加载/存储单元执行加载操作来从存储器加载数据值并将该数据值放置在物理寄存器中或执行存储操作来将当前存储在物理寄存器中的数据值存储到存储器;矢量处理单元,该矢量处理单元对包括多个数据元素的数据值执行矢量运算;浮点电路,该浮点电路对浮点值执行运算;或任何其他类型的处理电路。在一些情况下,运行级12可包括用于处理不同种类的指令的若干并行运行的流水线。

当在运行级12中完成指令的运行时,指令被传递到回写级14,回写级14将指令的结果写入物理寄存器20。在其他示例中,寄存器回写可被视为运行级12本身的部分,而不是被视为单独的流水线级。

在图1所示的示例中,对于指定要从中读取数据值的一个或多个物理寄存器的经重命名的指令,物理寄存器的读取发生在运行级12处。然而,其他实施例中取而代之的是当指令在在发布队列中挂起时可读取物理寄存器,如图1中的虚线所示。发布级10、运行级12和回写级14可一起被视为响应于指令而执行数据处理的处理电路,包括从物理寄存器20读取数据和将数据写入寄存器20。

寄存器预留电路30被提供用于控制哪些物理寄存器可被重命名级8选择来用于映射到逻辑寄存器。寄存器预留电路可向重命名级8提供指示哪些物理寄存器可供选择或哪些物理寄存器是不可用的(被预留的)。当从解码级6接收到写入寄存器的指令时,重命名级8为指定作为该指令的目的地寄存器的逻辑寄存器而生产新的寄存器映射。重命名级8选择被寄存器预留电路30指示为可用的物理寄存器,并更新重命名表32以包括将目的地逻辑映射到所选的物理寄存器的重命名条目。

可由流水线处理的指令的一种类型是移动指令,这种指令指定源逻辑寄存器和目的地逻辑寄存器,并用于触发流水线来更新目的地逻辑寄存器以具有与源逻辑寄存器相同的数据值。在实践中,虽然指令的运行给出了数据值正在从一个寄存器移动到另一个寄存器的印象,但是实际上流水线不需要在寄存器之间进行任何数据值的传送,因为相同的结果可在重命名级8处简单地通过更新重命名表34来实现。

例如,在图2a所示的第一移动处理技术中,指定源逻辑寄存器r5和目的地逻辑寄存器r10的移动指令可被接收。r5可被映射到给定的物理寄存器p71,以及r10可被映射到给定的物理寄存器p46,如图2的左手部分所示。如图2的右手部分所示,通过将重命名表34更新为将目的地逻辑寄存器r10映射到已经被映射到源逻辑寄存器r5的相同物理寄存器p71,涉及逻辑寄存器r10的后续指令将访问物理寄存器p71中的数据值,并且因此将接收先前与逻辑寄存器r5相关的值,即与在硬件中的寄存器之间已实际传输数据值相同的结果。这种方法有若干优点。首先,不需要实际将移动指令分派到重命名级8之外的任何级,从而例如在运行级12处释放指令处理槽,这可有助于加速其他指令的处理。此外,如果存在取决于逻辑寄存器r10中的值的后续指令,例如图2的右手部分中所示的添加指令,则在重命名级8处理移动意味着该添加指令仅取决于在寄存器r5中产生数据的先前指令(例如,加载),而不取决于移动指令本身。通过允许移动目的地寄存器的消耗器依赖于移动源寄存器的生成器而不是移动指令本身,可提高性能。为了了解性能改进的可能性,specint2006基准中的大约3%的指令以及specfp2000基准中大约1%的指令是可使用重命名技术来加速的移动。使用重命名来处理这些移动可使specint2006的性能提高1.1%、specfp2000为1.4%,以及coremark基准为3.6%。

如图2b所示,流水线2还支持第二移动处理技术,其中移动指令在运行级12被分派及被运行。在这种情况下,当在重命名级8遇到移动指令时,重命名级8将移动指令的目的地逻辑寄存器r10映射到与当前被映射到移动源逻辑寄存器r5的第一物理寄存器(例如,p71)不同的第二物理寄存器(例如p95)。当移动指令到达运行级12时,运行级从物理寄存器p71读取数据值,并且回写级14将所读取的数据值写入到与该移动指令的目的地逻辑寄存器r10相对应的物理寄存器p95。

重命名级8在图2a所示的第一移动处理技术和图2b所示的第二移动处理技术之间进行选择。可以认为,由于图2a所示的第一技术更快,因此应该总是选择这种技术。然而,这可能导致寄存器预留电路30的复杂性的增加,因为许多逻辑寄存器可变为被映射到相同的物理寄存器,这使得何时可将物理寄存器重新分配给不同的逻辑寄存器更加难以确定。

在本申请中讨论的方法利用了如下观察:依赖移动链,尽管发生在相对高端的无序处理器中,通常不在关键路径上。在关键路径上观察到的大多数移动没有依赖于它的后续移动。例如,如果防止依赖移动链被加速(仅链中的第一移动使用第一移动处理技术被加速,且链中的后续移动使用第二移动处理技术),则在specint2006中大约40%的移动使用第二移动处理技术,但性能机会损失(在1.1%的性能提升中所占)只有大约0.2%。更戏剧的是,在coremark中,大约50%的移动使用第二移动处理技术,但是性能机会损失(在3.6%的性能提升中所占)是0%。另外,一次可能存在许多移动(例如,一次高达8个,但并非不常见),如果这样,它们通常彼此独立。限制一次使用第一移动处理技术来处理一个移动太过禁止,因此我们的方法允许多个独立移动中的每者同时使用第一移动处理技术。

图3示出了重命名电路8(用作控制电路,该控制电路用于控制使用第一和第二移动处理技术中的哪一者)所采用的方法。如图1所示,重命名表34的每个条目具有控制标志36(也称为重复标志或dup标志),该控制标志用于指示该条目是否对应于使用第一移动处理技术处理的移动指令。当在重命名时间遇到第一移动时,逻辑源和目的地两者在重命名表中都被标记为“重复”(或dup),因为它们都包含相同的物理寄存器。当对应于所提交的dup条目(移动的源或目的地)的物理寄存器被驱逐时,物理寄存器则进入“几乎释放分配”(几乎可用)状态。此时,物理寄存器接着等待其他dup条目的驱逐,一旦有其他dup条目被驱逐,物理寄存器就可转换到“完全解除分配”(可用)状态,此时该物理寄存器可供重新使用。如果遇到另一个移动,其中源逻辑寄存器对应于在重命名表中被标记为dup的条目,则不符合使用第一移动处理技术的条件,因为这将导致多于两个逻辑寄存器被映射到给定物理寄存器(这将违反这里被解除分配的重命名要经历的唯一状态转换的数量)。借助于这种方法,若许多独立移动彼此独立,这些独立移动可通过将逻辑寄存器对(经优化的移动的源和目的地)标记为dup被一次性优化,其中逻辑寄存器彼此不重叠。

图3和图4示出用于这种跟踪移动指令寄存器映射和物理寄存器的重新分配的方法的示例。图3示出当遇到移动指令时如何更新重命名表34。如图3的左手部分所示,重命名表34最初具有分别映射到物理寄存器p71和p46的逻辑寄存器r5和r10,并且两者条目的dup标志36均0。如图3左边的第二个图所示,当接收到将数据值从逻辑寄存器r5移动到逻辑寄存器r10的第一移动指令时,重命名级8检查与源寄存器r5相关联的dup标志36并且看到该dup标志为0。由于该寄存器未被标记为重复,所以该移动有资格使用第一移动处理技术来被处理,因此其目的地寄存器r10被重映射到与源逻辑寄存器r5相同的物理寄存器p71,并且将r5和r10的条目标记为dup。

如图3的第三个图所示,当在重命名级8处遇到源寄存器是逻辑寄存器r5或逻辑寄存器r10的另一移动指令时,选择第二移动处理技术,因为寄存器r5和r10被标记为dup。因此,后续移动的目的地寄存器r15被映射到与移动的源寄存器r10或r5不同的物理寄存器p59,且逻辑寄存器r15的寄存器映射没有被标记为dup。

如图4的右手图所示,接着接收到分别指定逻辑寄存器r15和r20作为源和目的地的另一移动指令。由于源寄存器r15未被标记为dup,所以可使用图2a的第一移动处理技术来自由地对该移动进行优化。因此,目的地寄存器r20被映射到与逻辑寄存器p15相同的物理寄存器p59,且两个逻辑寄存器r15和r20都被标记为dup。所以,如图3所示,当存在两个或更多个不涉及相同逻辑寄存器的独立移动指令时,可通过选择图2a所示的方法来加速这些移动中的每一者(因为随后的独立移动不会导致两个以上的逻辑寄存器被映射到相同的物理寄存器)。然而,当存在依赖移动时,则移动被分派以被运行,以避免需要对映射到相同物理寄存器的许多逻辑寄存器进行跟踪。

图4根据图3的示例示出在处理移动之后使用寄存器预留电路来控制哪些物理寄存器可被重新分配的示例。如图4的左手部分所示,当被标记为dup的逻辑寄存器r5和r10中的一者满足重新分配条件(例如,当重命名表34中的重命名条目被重写时),相应的物理寄存器p71从预留状态(“否”)过渡到几乎可用状态(“几乎”)。如图4的右手部分所示,当其他dup逻辑寄存器r10满足重新分配条件时,寄存器预留电路30更新空闲列表32以将物理寄存器p71从几乎可用状态过渡到可用状态(“是”),此时物理寄存器p71可再次选择用于映射至不同的逻辑寄存器。在图4的示例中,当重命名表34被更新为将dup逻辑寄存器重映射到不同的物理寄存器时,重新分配条件被满足,但是另一种方法可以是跟踪流水线中挂起的读取物理寄存器p71的实际指令,并当在流水线中不存在物理寄存器p71的剩余消耗者并且重写逻辑寄存器r5或r10的较新的指令被确保提交时确定相应的逻辑寄存器满足重新分配条件。

图5示出处理移动指令的方法。在步骤50处,在重命名级8处确定是否已遇到移动指令(该移动指令指定源/目的地逻辑寄存器的ra和rb,其中ra当前被映射到物理寄存器px)。如果当前指令不是移动指令,则根据常规技术以某种其它方式处理该指令。当遇到移动指令时,则在步骤52处,重命名级8确定对应于源逻辑寄存器ra的重命名表条目的dup标志36是否被设置为1。如果逻辑寄存器ra的dup为0,则选择第一移动处理技术,并且在步骤54处,重命名级8更新重命名表34,以将目的地逻辑寄存器rb映射到已被映射到源逻辑寄存器ra的相同物理寄存器px。在步骤56处,重命名级8针对两个逻辑寄存器ra和rb将dup标志36设定为1。在步骤58处,重命名级8抑制移动指令的分派,使得移动指令不需要由任何后续流水线级进行处理。现在移动指令已完成。如上所述,在处理的关键路径上遇到的大多数移动指令是第一移动指令的链并独立于任何先前的移动指令,因此可使用第一移动处理技术来更快地进行处理。

另一方面,当在步骤52处逻辑寄存器ra的dup标志36为0时,使用第二移动处理技术,并且在步骤60处,重命名级8选择物理寄存器py中由寄存器预留电路30指示为处于可用状态的一者。在一些情况下,寄存器预留电路30可向重命名级8提供所有可用的物理寄存器的指示,且重命名电路8可选择这些可用物理寄存器中的一者。在其它实施例中,寄存器预留电路30可选择py自身,并可简单地向重命名级8提供哪个物理寄存器是所选择的寄存器py的指示。无论哪种方式,当多个物理寄存器可用时,可使用任何期望的选择算法或策略来选择哪个寄存器用作py。例如,选择策略可以是循环法、最近最少使用法或随机。

在步骤62处,重命名级8更新重命名表34以将移动指令的目的地逻辑寄存器rb重映射到新选择的物理寄存器py(该新选择的物理寄存器py是与被映射到移动指令的源寄存器ra的物理寄存器px的不同的物理寄存器py)。重命名级8将对应于逻辑寄存器rb的重命名表条目的dup标志36设定为0,以指示该条目不对应于使用第一移动处理技术处理的移动指令。在步骤64处,重命名级8将移动指令传递到分派级9,该分派级分派该指令。当移动指令到达运行级时,在步骤66处,移动指令被运行以从物理寄存器px读取数据值,并且回写级14将所读取的数据值回写至物理寄存器py。

图6示出控制哪些寄存器可用于由寄存器预留电路30进行的重新分配的方法。在步骤70处,寄存器预留电路30检测到给定逻辑寄存器rm和给定物理寄存器pz之间的映射满足重新分配条件。例如,当对应于逻辑寄存器rm的重命名表条目由重命名级8响应于指定与pz不同的物理寄存器的给定指令而更新且不存在除给定的指令之外较旧的待运行的指令时,可满足重新分配条件(在本上下文中,“较旧指令”是指在获取级4从存储器获取指令的程序顺序中的较早指令)。注意的是,触发逻辑寄存器rm的重新映射的给定指令可以是根据第二移动处理技术处理的移动指令,或者为非移动指令的另一类型的指令。

当满足重新分配条件时,在步骤72处寄存器预留电路30检测dup标志是否为1。如果不是,则不能有指向同一物理寄存器的另一重命名表条目,因此在步骤74处物理寄存器pz在空闲列表32中从预留状态过渡至可用状态。如果dup是1,则在步骤76处,寄存器预留电路30检查空闲列表来确定物理寄存器pz处于什么状态。如果物理寄存器pz处于预留状态,则意味着还有另一个指向相同的物理寄存器的重命名表条目,因此物理寄存器pz还不能变得可用,而在步骤78处,物理寄存器pz从预留状态过渡到几乎可用状态。如果在步骤76处确定物理寄存器pz已处于几乎可用的状态,则意味着对应于相同物理寄存器的其他条目已被更新,也就是说,这是指向pz的最后一个条目,因此在步骤80处物理寄存器pz从几乎可用状态过渡到可用状态。接着步骤78或步骤80,在步骤82处,逻辑寄存器rm的dup标志被设定为0。

图7示出总结给定物理寄存器pz的状态转换的状态图。当pz被选择用于映射到给定逻辑寄存器rm时(而不是在pz被映射到使用第一移动处理技术处理的移动的目的地时),pz从可用状态100过渡到预留状态102,并且此时逻辑寄存器rm的dup标志被设定为0。当从rm至pz的映射满足重新分配条件且逻辑寄存器rm的dup标志仍然为0时,pz从预留状态102过渡到可用状态100。如果在物理寄存器pz处于预留状态102时,指定rm作为其源寄存器的移动指令使用第一移动处理技术在重命名级处被处理,则物理寄存器pz保持在预留状态中,但是rm的dup标志被设定为1(此时,pz也将变为被映射到移动的目的地的另一逻辑寄存器rn)。当rm至pz的映射或rn至pz映射中的一者映射满足重新分配条件且该映射的dup标志为1时,物理寄存器pz从预留状态102过渡到几乎可用状态104。当rm至pz的映射或rn至pz的映射中的另一者满足重新分配条件且该映射的dup标志是1时,物理寄存器pz从几乎可用状态104过渡到可用状态100。

图8示出重命名表34的更详细的实施例,其中重命名表被分割成推测重命名表(srt)120和架构重命名表(art)122。在重命名时间或分派时间(在知晓相应的指令是否应该运行之前)推测性地更新srt120,并且在提交时间更新art122(当已经评估了足够的较早指令以保证所提交的指令应该运行时)。沿着流水线传递的推测性指令使用来自srt120的寄存器映射。当目的地寄存器被提交时,逻辑和物理寄存器指针(在寄存器fifo124中列队的)被用来更新具有指向新架构的指针的art122。当通过该过程从art122进行条目的驱逐时,这触发由寄存器预留电路30对逐出的物理寄存器进行的解除分配。在冲洗(flush)时,art122被恢复到srt120,并且在该冲洗时间点之前,通过使用寄存器fifo124执行srt的任何重建(若需要)。

例如,fifo124用作使用写指针和提交指针来管理的循环缓冲器。当指令被重命名时,其(一个或多个)重命名映射被推送到fifo的由写指针指示的位置。相应的指令可在其向流水线2的其余部分传递时以写指针的当前值来标示,以使得能够识别流水线中的指令与fifo124中条目对应关系。提交指针表示最旧的未提交的指令。当具有与提交指针相对应的标记的指令被提交时,提交指针被更新为与下一个最旧未提交指令的标示对应,且现在位于提交指针之后的任何fifo条目从fifo弹出并被写入art122。如果写指针或提交指针到达缓冲器的一端,则写指针或提交指针的后续增量将该写指针或提交指针移动到缓冲器的另一端,并且只要指令被重命名和提交时,写指针和提交指针就会绕着缓冲器互相追逐。

如图9所示,当将以上所讨论的移动处理方法应用于具有单独的推测重命名表120、架构重命名表122的实施例时,srt、art和寄存器fifo(也称为传送缓冲器)被更新为具有用于使用第一移动处理技术处理的移动的dup位。在确定是否可使用第一移动处理技术进行加速(如果源或目的地逻辑寄存器在srt120中设定了dup位,则不能加速)之前,移动源和目的地查询srt120。在寄存器fifo中分配两个条目用于经加速的移动(分别用于源和目的地,且每个都标记为dup)。当经加速的移动提交时,通过使用寄存器fifo的两个相应条目,art中的源和目的地都被标记为dup。当第一dup条目从art被驱逐时,相关联的物理寄存器被标记为“几乎可用”,并且逐出针对相同物理寄存器的第二dup条目导致最终过渡至“完全解除分配”(可用)。在冲洗时,如果经加速的移动需要重建/恢复srt,则需使用寄存器fifo。此处,对应于经优化的移动(源和目的地)的两个条目都用于写入srt条目以及其dup位。

图10示出在具有单独srt120和art122的实施例中对移动指令执行寄存器重命名的方法。除了涉及检查dup标志及更新重命名表的步骤52、54、56和62是使用srt120来执行的,步骤50至66与图5的相应步骤相同。此外,在第一移动处理技术中,存在附加步骤130,在该步骤中两个条目被推送至fifo缓冲器124,其中一个条目为将源逻辑寄存器ra映射到物理寄存器px(其中dup位设定为1)的条目,另一条目为将目的地逻辑寄存器rb映射到相同物理寄存器px(dup标志再次设定为1)的条目。另一方面,在第二移动处理技术中存在附加步骤132,其中单个条目被推送到fifo124,该单个条目为将逻辑寄存器rb映射到物理寄存器py(dup位设定为0)的条目。在其他方面,图10的方法与图5相同。

图11示出当指令被提交时由重命名级执行的方法。响应于在步骤140处被提交的指令,在步骤142处从fifo124读取相应的fifo条目(使用所提交的指令的标示及fifo124的提交指针来标识),并将其写入对应于由这些fifo条目指定的逻辑寄存器的art122。这些fifo条目的dup标志也被传送到art122。在步骤144,递增递交指针以指向与下一个最旧的未提交指令相关联的fifo条目。注意,与该下一个最旧的未提交指令相关联的fifo条目可能不再在srt120中被指定,因为srt120后续可能响应于较新的指令而被更新。有效地,fifo124在不同的时间点提供了srt120的内容的一系列快照。

图12示出处理冲洗事件或错误推测(例如,分支错误预测或数据预取错误)的方法。响应于在步骤150处发生的冲洗事件,在步骤152处,来自art122的所有条目被恢复到srt120。因此,逻辑寄存器现在被映射到表示在运行的最后提交点(此时已知运行是正确的)的寄存器状态数据的物理寄存器。不需要在寄存器之间传送状态,因为旧状态已经被保存在较大的物理寄存器文件中,并且可简单地通过基于art进行srt的更新来访问该旧状态。在步骤154处,在冲洗时间点之前,通过向srt120写入来自传送缓冲器124的fifo条目来重建srt120(例如,地址滞后于fifo标示的fifo条目与所引起冲洗的指令相关联)。在步骤156处,fifo被清空。

图13示出使用寄存器预留电路30控制寄存器重新分配的方法。图13与图6相同,除了在步骤70处基于art122评估重新分配条件,以及类似地在步骤72处相关的dup标志为对应于逻辑寄存器rm的art条目的dup标志。此外,图13中省略了图6的步骤82,因为dup标志可固有地被设定为在art条目被来自具有等于0的dup标志的缓冲器124的相应fifo条目重写时的值。

图14示出使用srt和art的实施例的对应于图7的状态图。图14与图7相同,除了当在srt120中存在重映射时发生的从可用100至预留102的过渡,以及针对art122中的给定映射的重新分配条件被满足时,其他从预留102到可用100的过渡、从预留102到几乎可用104的过渡,以及从几乎可用104到可用100的过渡。

应当理解的是,使用以上所讨论的srt120、art122和fifo124的布置仅是处理推测重命名的一个示例,其他技术可被使用。此外,尽管上面讨论的例子将dup标志36存储在重命名表自身的条目本身,但是也可将dup标志36与重命名表分离式地存储。

为了指示可用、预留和几乎可用的状态,空闲列表32的每个条目具有至少两个位,用于指示相应物理寄存器的状态。在那种将物理寄存器指示为可用或预留(在没有本技术的情况下)的系统中,每一物理寄存器可能需要附加位。但是,这将比提供如上所述的每一物理寄存器的多位计数器和相应的比较/控制逻辑器的替代技术的开销小得多。实际上,空闲列表32可能已经需要为每个物理寄存器指示其他类型的寄存器状态(例如,如果存在物理寄存器需要被保护以免重新分配的另一条件),并且可能存在尚未被使用的寄存器状态字段的一些备用编码。如果是这样,则备用编码中的一者可被分配来指示几乎可用状态104,在这种情况下,添加几乎可用状态将不需要在空闲列表32中每一物理寄存器的附加位。

虽然图1的示例示出了重命名级8来作为用于确定如何处理给定移动指令的控制电路,但是也可提供单独的控制电路。例如,解码级6可将移动指令进行标示以控制重命名级8如何对它们进行处理。

另一个示例提供了一种装置,包括:

响应于指令而执行数据处理的装置;

用于将由指令指定的逻辑寄存器映射到硬件中设置的物理寄存器的装置;以及

选择第一移动处理技术和第二移动处理技术中的一者用于处理指定源逻辑寄存器和目的地逻辑寄存器的移动指令的装置;其中:

在第一移动处理技术中,响应于移动指令,用于映射的装置被配置为将目的地逻辑寄存器映射到与源逻辑寄存器相同的物理寄存器;

在第二移动处理技术中,响应于移动指令,用于执行数据处理的装置被配置为将从对应于所述源逻辑寄存器的物理寄存器读取的数据值写入对应于所述目的地逻辑寄存器的不同物理寄存器;以及

用于选择的装置被配置为:当移动指令指定的源逻辑寄存器与根据第一移动处理技术处理的较早移动指令的源逻辑寄存器和目的地逻辑寄存器中的一者相同并且针对所述源逻辑寄存器和目的地逻辑寄存器中的一者的当前寄存器映射与处理所述较早移动指令时针对所述源逻辑寄存器和目的地逻辑寄存器中的一者所使用的映射相同时,选择第二移动处理技术。

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

虽然本文已参照附图详细描述了本发明的说明性实施例,但是应当理解的是,本发明不限于这些确切的实施例,并且本领域技术人员可在其中实现各种改变和修改,而不脱离由所附权利要求限定的本发明的范围和精神。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1