首页> 中国专利> 使用多块物理寄存器映射表的寄存器重命名系统及其方法

使用多块物理寄存器映射表的寄存器重命名系统及其方法

摘要

本发明提供了使用多块物理寄存器映射表的寄存器重命名系统及其方法。提供了使用物理寄存器映射表的多块实现的处理器架构的多个实施例。将架构寄存器关联到物理寄存器的寄存器重命名系统包括物理寄存器映射表和重命名逻辑。物理寄存器映射表具有多个项,每个项指示相应的物理寄存器的状态。映射表具有多个非重叠段,其中每个段都具有映射表的相应的项。重命名逻辑被耦合用以并行地搜索映射表的多个段,以识别指示相应的物理寄存器具有第一状态的项。重命名逻辑选择性地将多个架构寄存器中的每个关联到相应的被识别为处于第一状态的物理寄存器。本发明还提供了使用物理寄存器映射表的多块实现的方法。

著录项

  • 公开/公告号CN101794214A

    专利类型发明专利

  • 公开/公告日2010-08-04

    原文格式PDF

  • 申请/专利号CN200910004886.6

  • 发明设计人 朱鹏飞;孙红霞;吴永强;

    申请日2009-02-04

  • 分类号G06F9/38(20060101);

  • 代理机构11256 北京市金杜律师事务所;

  • 代理人王茂华;唐文静

  • 地址 100080 北京市北四环西路9号银谷大厦12B层

  • 入库时间 2023-12-18 00:27:04

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2013-11-20

    授权

    授权

  • 2010-09-22

    实质审查的生效 IPC(主分类):G06F9/38 申请日:20090204

    实质审查的生效

  • 2010-08-04

    公开

    公开

说明书

技术领域

本公开一般涉及处理器架构领域,并且更为特别地涉及超标量体系结构的处理器中的寄存器重命名。

背景技术

一般而言,处理器是一种可以运行计算机程序以执行算术计算、数据置换等等的设备。微处理器是这样一种类型的处理器,其将处理器的大多数功能或所有功能都合并在单个集成电路上。超标量体系结构的微处理器是通过同时将多个指令分派给处理器中的冗余的运行资源(也称为功能单元)而能够在一个时钟周期中运行不止一个指令的微处理器。当运行指令和微操作时,处理器通常从寄存器读取源操作数并将结果或目标操作数存储在寄存器中。寄存器是处理器内的临时存储单元,与其他地方的可用存储器相比,寄存器的内容可以被更快地访问,并且寄存器通常被用于保存供处理器使用的算术和其他结果。一个给定的寄存器可包含多个比特,例如8比特、16比特或32比特,并且可通过相应的寄存器标识符诸如寄存器号来进行访问。

寄存器重命名是在超标量体系结构的处理器中用来允许并行运行指令的各种技术中的一种。因为处理器的程序指明的寄存器常常比硬件中能够实现的寄存器要少,所以一个给定的超标量体系结构的处理器实现常常具有比程序中所指明的寄存器数目更多的寄存器。在通常被称为寄存器重命名的阶段,某个程序所使用的多个通用架构寄存器被关联到或者被映射到该超标量体系结构的处理器中的多个物理寄存器。例如,在可以发出多至4条指令供并行执行的超标量体系结构的处理器中,物理寄存器文件中的多至四个空物理寄存器必须是可用的,以便允许在每个时钟周期多至4个架构寄存器可被重命名。

相关联的架构寄存器与相应的物理寄存器之间的关系通常被记录在物理寄存器映射表(PRMT)的项中。PRMT中的每个项记录物理寄存器文件中的相应的物理寄存器的状态,例如相应的物理寄存器是否是空(并且因此是否可用于存储相关联的架构寄存器的数据)。已解码的程序指令所使用的架构寄存器被关联到相应的物理寄存器,并且每个架构寄存器的标识符例如地址也被记录在与相关联的物理寄存器相联系的PRMT项中。因此,PRMT记录每个物理寄存器的状态以及架构寄存器与物理寄存器的关联/映射信息。随着程序指令的运行,从一个时钟周期到另一个时钟周期,被配置用于存储相关联的架构寄存器的数据的每个物理寄存器的状态发生变化,并且在PRMT中对已配置的物理寄存器的状态的这种变化进行跟踪。已配置的物理寄存器不能被用于另一架构寄存器,直到其所关联到的当前架构寄存器被程序指令释放为止。

物理寄存器越多,使用的物理寄存器文件就越大,使用诸如八十项的寄存器文件这样的大的物理寄存器文件在近来变得越来越普遍。使用大量的物理寄存器有助于减少发生由于指令依赖所带来的管道延迟,从而允许一次发出更多的指令。因此,PRMT中的项数随着物理寄存器的数目增加而增加。然而,在超标量体系结构的处理器中,大的PRMT相比小的PRMT而言使得更难找到指示关联的物理寄存器为空的项。另外,用传统的专用集成电路(ASIC)设计方法和结构来实现的更大的PRMT倾向于需要更大的电路面积、增加路径延迟,并且结果产生更高的功耗。因为路径延迟和功耗是处理器设计中的两个关键因素并且影响性能,所以理想的是在对性能只有最小影响的情况下实现用于寄存器重命名的更大的PRMT。

发明内容

在一方面,一种将架构寄存器关联到物理寄存器的寄存器重命名系统包括具有多个项的物理寄存器映射表和重命名逻辑。该映射表的每个项都指示相应的物理寄存器的状态。映射表具有多个非重叠的段,其中每个段具有相应的映射表项。重命名逻辑被耦合用以并行地搜索多个映射表段,以识别每个都指示相应的物理寄存器处于第一状态的项。该重命名逻辑选择性地将多个架构寄存器中的每个关联到相应的被识别为处于第一状态的物理寄存器。

在另一方面,一种处理器中的寄存器重命名系统包括第一寄存器块、第二寄存器块和被耦合到该第一和第二寄存器块的搜索逻辑。第一块中的每个寄存器存储物理寄存器映射表的第一段中的相应项,其指示相应的物理寄存器的多个状态中的一个。第二块中的每个寄存器存储物理寄存器映射表的第二段中的相应项,其指示相应的物理寄存器的多个状态中的一个。搜索逻辑并行地搜索第一和第二寄存器块,以识别第一和第二块中的所存储的相应的映射表项指示相应的物理寄存器处于第一状态的寄存器。

在另一方面,一种将架构寄存器关联到物理寄存器的寄存器重命名系统包括第一寄存器块、第二寄存器块、被耦合到该第一寄存器块的第一检查逻辑、被耦合到该第一寄存器块的第二检查逻辑、被耦合到该第二寄存器块的第三检查逻辑、以及被耦合到该第二寄存器块的第四检查逻辑。第一寄存器块存储物理寄存器映射表的第一部分,其中第一块中的每个寄存器存储映射表的第一部分中的相应项。第二寄存器块存储物理寄存器映射表的第二部分,其中第二块中的每个寄存器存储映射表的第二部分中的相应项。第一检查逻辑被耦合到第一寄存器块以在第一时钟周期中从第一块的第一端朝着第一块的与第一端相对的第二端来搜索第一块中的寄存器,以识别映射表的第一部分中的其中每个都指示相应的物理寄存器为空的项。第二检查逻辑被耦合到第一寄存器块以在第一时钟周期中从第一块的第二端朝着第一块的第一端来搜索第一块中的寄存器,以识别映射表的第一部分中的其中每个都指示相应的物理寄存器为空的项。第三检查逻辑被耦合到第二寄存器块以在第一时钟周期中从第二块的第一端朝着第二块的与第一端相对的第二端来搜索第二块中的寄存器,以识别映射表的第二部分中的其中每个都指示相应的物理寄存器为空的项。第四检查逻辑被耦合到第二寄存器块以在第一时钟周期中从第二块的第二端朝着第二块的第一端来搜索第二块中的寄存器,以识别映射表的第二部分中的其中每个都指示相应的物理寄存器为空的项。

在一个方面,一种处理器包括物理寄存器映射表、搜索逻辑和映射逻辑。物理寄存器映射表具有多个项,其中该映射表的每个项都指示相应的物理寄存器的状态。搜索逻辑被耦合用以并行地搜索映射表的多个段以识别其中每个均指示相应的物理寄存器处于第一状态的项。搜索逻辑所搜索的每段映射表具有的相应的映射表项与搜索逻辑所搜索的另一段映射表中的项不相同。映射逻辑被耦合到搜索逻辑并接收多个架构寄存器标识符,其中每个标识符指示相应的架构寄存器。映射逻辑将接收到的每个架构寄存器标识符映射到相应映射表段中的指示相应的物理表处于第一状态的相应项。

在一方面,一种基于处理器的系统包括输入设备、输出设备、数据存储设备以及耦合到该输入设备、输出设备和数据存储设备的处理器。该处理器包括多个寄存器块、被耦合到该寄存器块的搜索逻辑、以及被耦合到该寄存器块和搜索逻辑的映射逻辑。每个寄存器块存储一段物理寄存器映射表以将映射表的相应项存储在相应寄存器块的每个寄存器中,每个项指示相应的物理寄存器的状态。搜索逻辑同时搜索寄存器块中的第一块和第二块,以识别第一块和第二块中的存储指示着相应的物理寄存器处于第一状态的相应项的寄存器。映射逻辑接收多个架构寄存器标识符,其中每个标识符标识相应的架构寄存器,并且将每个架构寄存器标识符映射到该第一块和第二块中的被识别为存储着指示相应的物理寄存器处于第一状态的相应项的相应寄存器,以将每个架构寄存器关联到对应的物理寄存器。

在一方面,一种在处理器中执行寄存器重命名的方法同时搜索第一段映射表和第二段映射表以识别该映射表中的其中每个均指示相应的物理寄存器处于第一状态的项。对于多个架构寄存器,该方法将与每个架构寄存器相关的数据存储在被识别为处于第一状态的物理寄存器中的相应一个中,以将架构寄存器关联到被识别为处于第一状态的物理寄存器。

在另一方面,一种在处理器中执行寄存器重命名的方法将物理寄存器映射表的项存储在多个寄存器块中,以使得相应数目的项被存储在寄存器块中的相应寄存器块中,每个项分别指示相应的物理寄存器的状态。该方法还在第一时钟周期中按第一方向和不同于该第一方向的第二方向来搜索第一个寄存器块,以识别其中每个都指示相应的物理寄存器处于第一状态的项。该方法还将多个架构寄存器中的每个映射到相应的被识别为处于第一状态的物理寄存器。

在又一方面,一种在处理器中执行寄存器重命名的方法将第一段映射表中的项存储在第一寄存器块中以及将第二段映射表中的项存储在第二寄存器块中。该方法在第一时钟周期中识别第一块中的每个均指示相应的物理寄存器为空的物理寄存器映射表项。该方法在第一时钟周期中还识别第二块中的每个均指示相应的物理寄存器为空的物理寄存器映射表项。多个要重命名的架构寄存器被分组成第一组架构寄存器和第二组架构寄存器。架构寄存器组之一中的架构寄存器被关联到所识别的与第一块中存储的映射表项相关联的空物理寄存器。另一组架构寄存器中的架构寄存器被关联到所识别的与第二块中存储的映射表项相关联的空物理寄存器。

附图说明

图1是处理器中的常规寄存器重命名系统的简化示图。

图2是图1中的常规寄存器重命名系统中的一部分的简化示图。

图3是图1中的常规寄存器重命名系统中的物理寄存器映射表中的项的示图。

图4是在根据一个非限制性实施例的处理器中的寄存器重命名系统的简化示图。

图5是根据一个非限制性实施例的物理寄存器映射表及其存储装置的简化示图。

图6是图4中的根据一个非限制性实施例的寄存器重命名系统的一部分的简化示图。

图7A是图4中的根据一个非限制性实施例的寄存器重命名系统中的另一部分的简化示图。

图7B是图4中的根据一个非限制性实施例的寄存器重命名系统中的又一部分的简化示图。

图8是图4中的根据一个非限制性实施例的寄存器重命名系统中的另一部分的简化示图。

图9是根据另一个非限制性实施例的处理器中的寄存器重命名系统的简化示图。

图10是根据另一个非限制性实施例的处理器中的寄存器重命名系统的简化示图。

图11是根据一个非限制性实施例的具有寄存器重命名系统的处理器的简化示图。

图12是根据一个非限制性实施例的具有寄存器重命名系统的基于处理器的系统的简化示图。

图13是说明根据一个非限制性的说明性实施例的在处理器中执行寄存器重命名的过程的流程图。

图14是说明根据另一个非限制性的说明性实施例的在处理器中执行寄存器重命名的过程的流程图。

图15是说明根据又一个非限制性的说明性实施例的在处理器中执行寄存器重命名的过程的流程图。

在附图中,相同的参考号标识相似的组件或动作。附图中的组件的尺寸和相对位置不一定按比例画出。另外,所画出的组件的特定形状不是旨在传递关于特定组件的实际形状的任何信息,并且仅仅出于在附图中容易识别的目的而被选择。

具体实施方式

在以下描述中,为了提供对各种公开的实施例的透彻理解而阐述某些具体的细节。然而,本领域的普通技术人员将认识到可以在不具有这些具体细节中的一个或多个的情况下或者用其他方法、部件、材料等等来实施各个实施例。在其他情况下,没有示出或详细描述与寄存器重命名系统、处理器和基于处理器的系统相关联的公知结构,以避免不必要地混淆对实施例的描述。

图1说明处理器中的常规寄存器重命名系统100。寄存器重命名系统100包括物理寄存器映射表(PRMT)5。在图1所示的例子中,PRMT5有八十个项,也即项0到项79,其对应着八十个物理寄存器。寄存器重命名系统100还包括四个搜索模块12、22、32和42,四个对应的“屏蔽和满(mask-and-ful1)”检测器14、24、34和44,“比较和配置(comparison-and-allocation)”模块50,以及架构寄存器分配模块60。PRMT 5的项被存储在八十个寄存器的块中,虽然为了避免不必要地混淆说明,该寄存器块未被示出。

PRMT 5经由八比特信号总线8耦合到搜索模块12,其中信号总线8所承载的每个信号指示相应的PRMT项中所记录的相应的物理寄存器的状态。例如,如果物理寄存器为空,则PRMT 5中的相应的项将通过存储对应的值来指示物理寄存器的状态为空。同样,如果物理寄存器不为空(例如,处于除了“空”之外的状态),则PRMT 5中的相应的项将通过存储不同于指示“空”状态的值的一个值来指示物理寄存器的状态为不同于空的状态。

操作中,寄存器重命名系统100使用五个阶段(或步骤)来执行寄存器重命名。在第一步中,搜索模块12经由信号总线8从PRMT 5接收八十个状态信号,并且搜索PRMT 5的项0~79中指示相应的物理寄存器为空的项。“屏蔽和满”检测器14接收来自信号总线8的八十个状态信号和来自搜索模块12的搜索结果信号。在PRMT 5中的指示相应的物理寄存器处于空状态的那些项中,一个项被选择。搜索模块12发送七比特的空项ID信号(也即如图2中所示的空项id_0信号)给比较和配置模块50。与所选择的项相关联的物理寄存器将被配置给需要被重命名的架构寄存器之一。对应于所选择的项的信号被“屏蔽和满”检测器14所屏蔽,也即信号值被设置成指示不同于“空”状态的状态的值,因为“屏蔽和满”检测器14提供新的一组八十个信号给搜索模块22和“屏蔽和满”检测器24。这有效地使得被选择的项在后续步骤中不可被选择。如果PRMT 5的项中任何一项都不指示相应的物理寄存器为空,则“屏蔽和满”检测器14发送信号,也即id_0的有效信号,给比较和分配模块50以指示物理寄存器都是满的。

在第二、第三和第四步骤中,分别顺序地由搜索模块22和“屏蔽和满”检测器24、搜索模块32和“屏蔽和满”检测器34、以及搜索模块42和“屏蔽和满”检测器44执行类似的操作。在从第一步到第四步被执行的时间期间,架构寄存器分配模块60接收多至四个目的寄存器的标识符或地址,这些目的寄存器需要被关联到物理寄存器并每个都需要分配架构寄存器标识符。四比特信号,也即图1中所示出的目的有效信号,被提供给架构寄存器分配模块60以指示所接收到的针对四个目的寄存器的标识符的信号中哪些是有效的。四比特信号,也即图1中所示出的被分配的目的有效信号,被提供给比较和配置模块50以指示表示这四个架构寄存器标识符的四个信号中哪些是有效的。所分配的架构寄存器标识符被提供给比较和配置模块50。

在第五步中,有效的架构寄存器被关联到在前四步中通过搜索模块12、22、32和42执行的搜索所识别的空物理寄存器。如图2中所说明的,比较和配置模块50包括八十个比较和配置子块5000-5079,其中每个子块分别用于八十个物理寄存器中的相应的一个。比较和配置模块50中的比较和配置子块5000-5079中的每个将所有四个空项ID信号(空项id_0,空项id_1,空项id_2和空项id_3)与PRMT 5中针对相应的物理寄存器的项的项号进行比较。如果四个空项ID信号之一所表示的特定项号与比较和配置子块5000-5079所关联的项号匹配,则比较和配置子块5000-5079将一个有效架构寄存器标识符配置给PRMT 5中的那个项,由此将相应的架构寄存器关联到相应的物理寄存器。在PRMT 5的该项中记录该架构寄存器标识符并且相应的物理寄存器的状态被改变成不同于“空”的状态,诸如“已配置”。如图3中所示出的,PRMT 5中的每个项记录架构寄存器标识符,例如架构寄存器号,以及相应的物理寄存器的状态。例如,如果给定的物理寄存器处于物理寄存器可能处于的多个状态中的第一状态,则指示该第一状态的第一值被记录在相应的项中。同样,如果物理寄存器处于这多个状态中的第二状态,则指示该第二状态的第二值被记录在相应的项中,以此类推。

从上述描述中,可以看到与常规寄存器重命名系统100相关联的若干缺点。首先,由于每个搜索模块12、22、32和42要搜索的PRMT 5中的大量的项而带来的大延迟是不可避免的。其次,因为直到前面的搜索模块已经完成搜索,后续的搜索模块才能开始搜索这些项,所以搜索模块12、22、32和42所进行的顺序搜索也恶化了延迟问题。第三,比较和配置模块50中的每个比较和配置子块5000-5079均包括四个比较电路,并且每个配置需要320(4的80倍)个七比特比较。这种设计消耗了大量的功率。最后,诸如图1中所示出的寄存器重命名系统100之类的寄存器重命名系统需要集成电路芯片上的大面积,并且因此不适合用于具有严格尺寸限制的应用。

图4说明根据本发明的一个实施例的处理器中的寄存器重命名系统200。在寄存器重命名系统200中,PRMT 205具有多个非重叠的段,其中每个段被存储在相应的寄存器块中。在一个实施例中,如图5所示,PRMT 205有两个非重叠段,第一段205a和第二段205b,从而段205a、205b中的每个段都具有PRMT 205的总项数的一半。例如,PRMT 205可以具有八十个项,项0~79。如图5中所示,PRMT 205的项中的第一个四十个项,也即项0~39,可以位于第一PRMT段205a并且被存储在第一块的四十个寄存器202a(例如块0)中。相类似地,PRMT 205中的下一个四十个项,也即项40~79,可以位于第二PRMT段205b中并且被存储在第二块的四十个寄存器202b(例如块1)中。在其他实施例中,PRMT 205可以具有不止两个段。例如,在一个实施例中,PRMT205可具有四个非重叠段,并且在另一实施例中可以具有八个非重叠段。在一个实施例中,无论PRMT 5可以具有的段的数目是多少,PRMT 5的多个段具有相同的项数。可选择地,PRMT 5的多个段彼此可以具有不同的项数。

在寄存器重命名系统200中,PRMT 205的多个段中的至少某些段可以被并行地搜索。也即,PRMT 205中的两个段205a、205b可以被同时搜索。在PRMT 205具有不止两个段的实施例中,这些段中的两个或多个或全部可以被同时搜索。如图4中所示出的,在一个实施例中,四个检查逻辑212、214、216和218被耦合到寄存器块202a、202b,以确定物理寄存器的状态,其由寄存器块202a、202b中所存储的PRMT 205的项来指示。更为具体地,检查逻辑212、214经由标记信号总线208a耦合到第一寄存器块202a。检查逻辑216、218经由标记信号总线208b耦合到第二寄存器块202b。标记信号总线208a、208b中的每个都是四十比特宽以分别适合寄存器块202a、202b中的四十个寄存器。标记信号总线208a、208b承载从第一和第二寄存器块202a、202b到检查逻辑212、214、216和218的标记信号,并且检查逻辑212、214、216和218基于标记信号总线208a、208b所承载的信号值来确定物理寄存器的状态。当寄存器中所存储的相应PRMT项指示相应物理寄存器是空时,标记信号可以具有第一值,例如二进制值1。当相应PRMT项指示相应物理寄存器不是空时,标记信号可以具有第二值,例如二进制值0。

在一个实施例中,检查逻辑212、214、216和218以不同的方向搜索在第一寄存器块202a和第二寄存器块202b中所存储的PRMT 5的项,以识别PRMT 5中的指示相应的物理寄存器处于多个状态中的第一状态(诸如空状态)的那些项。例如,检查逻辑212可以通过以对应于从第一块202a的顶部朝着第一块202a的底部读取第一寄存器块202a的第一方向读取标记信号,来搜索空物理寄存器。类似地,检查逻辑214可以通过以与第一方向不相同的、对应于从第一块202a的底部朝着第一块202a的顶部读取第一寄存器块202a的第二方向读取标记信号,来搜索空物理寄存器。换言之,检查逻辑212首先从存储在第一寄存器块202a中的顶部寄存器(被标记为寄存器0)中的PRMT 5的项0读取标记信号,以确定相应的物理寄存器的状态是否是空,接着从PRMT 5的项1读取标记信号,等等。在这方面,来自被存储在第一寄存器块202a中的底部寄存器(被标记为寄存器39)中的PRMT 5的项39的标记信号是检查逻辑212所读取的最后一个标记信号。相反,检查逻辑214首先从被存储在第一寄存器块202a中的底部寄存器(被标记为寄存器39)中的PRMT 5的项39读取标记信号,接着从PRMT 5的项38读取标记信号,依此类推。因此,来自被存储在第一寄存器块202a中的顶部寄存器(被标记为寄存器0)中的PRMT 5的项0的标记信号是检查逻辑214所读取的最后一个标记信号。

以类似的形式,检查逻辑216可以通过以对应于从第二块202b的顶部朝着第二块202b的底部读取第二寄存器块202b的第一方向读取标记信号,来搜索空物理寄存器。类似地,检查逻辑218可以通过以对应于从第二块202b的底部朝着第二块202b的顶部读取第二寄存器块202b的第二方向读取标记信号,来搜索空物理寄存器。检查逻辑216首先从被存储在第二寄存器块202b中的顶部寄存器(被标记为寄存器40)中的PRMT 5的项40读取标记信号,以确定相应的物理寄存器的状态是否是空,接着从PRMT 5的项41读取标记信号,依此类推。来自被存储在第二寄存器块202b中的底部寄存器(被标记为寄存器79)中的PRMT 5的项79的标记信号是检查逻辑216所读取的最后一个标记信号。相反,检查逻辑218首先从被存储在第二寄存器块202b中的底部寄存器(被标记为寄存器79)中的PRMT 5的项79读取标记信号,接着从PRMT 5的项78读取标记信号,依此类推。因此,来自被存储在第二寄存器块202b中的顶部寄存器(被标记为寄存器40)中的PRMT 5的项40的标记信号是检查逻辑218所读取的最后一个标记信号。

因此,PRMT 205的多个段可以被并行地并且以不同的方向进行搜索。这在减少前面所描述的常规寄存器重命名系统100中实现的顺序搜索上的路径延迟方面提供了改善。也即,PRMT 205是通过由检查逻辑212、214、216和218并行地搜索PRMT 205的多个段而进行一次搜索,而不是通过让整个PRMT 205顺序地进行四次不同的搜索而导致串行路径延迟。

在一个实施例中,检查逻辑212、214、216和218中的每个可以是前导1探测电路,其探测并识别它所遇到的指示相应的物理寄存器为空的第一项,即使当PRMT 205可能存在指示相应的物理寄存器为空的多个项时,也是如此。因此,四个检查逻辑212、214、216和218可以并行地识别多至四个PRMT 205的项,其中每个项均指示相应的物理寄存器为空。

作为用以识别空物理寄存器的搜索的结果,每个检查逻辑212、214、216和218提供多个结果信号,其中每个结果信号指示PRMT 205中的相应项是否被识别为指示相应的物理寄存器为空。例如,在图4中所说明的实施例中,检查逻辑212、214、216和218中的每个都提供四十个结果信号,因为每个都接收四十个标记信号。在一个实施例中,每个检查逻辑212、214、216和218都将对应于它探测为指示相应的物理寄存器为空的第一项的结果信号设置成第一值,例如二进制值1,并且将剩余的结果信号设置成第二值,例如二进制值0。这允许块202a、202b中多至四个所存储的项指示相应的物理寄存器为空的寄存器被识别。继而,这识别了多至四个架构寄存器可被重命名成的多至四个处于空状态的物理寄存器。

在一个实施例中,“满(full)”检测器222被耦合以接收来自检查逻辑212、214的结果信号,而“满”检测器224被耦合以接收来自检查逻辑216、218的结果信号。基于接收自检查逻辑212、214的结果信号,“满”检测器222输出两个有效信号,有效信号0和有效信号1。如果来自检查逻辑212、214的结果信号指示两个空物理寄存器被识别,则有效信号0和有效信号1二者都被设置成第一值,例如二进制值1。如果结果信号指示仅有一个空物理寄存器被识别,则仅仅有效信号0被设置成第一值而有效信号1被设置成第二值,例如二进制值0。如果结果信号指示没有任何空物理寄存器被识别,则有效信号0和有效信号1二者都被设置成第二值。类似地,基于接收自检查逻辑216、218的结果信号,“满”检测器224输出两个有效信号,有效信号2和有效信号3。如果来自检查逻辑216、218的结果信号指示两个空物理寄存器被识别,则有效信号2和有效信号3二者都被设置成第一值。如果结果信号指示仅有一个空物理寄存器被识别,则仅仅有效信号2被设置成第一值而有效信号3被设置成第二值。如果结果信号指示没有任何空物理寄存器被识别,则有效信号2和有效信号3二者都被设置成第二值。

在一个实施例中,寄存器重命名系统200可以具有配置逻辑235,其被耦合在寄存器块202a、202b与检查逻辑212、214、216、218和“满”检测器222、224之间。在一个实施例中,寄存器重命名系统200还可包括分配逻辑245,其被耦合到配置逻辑235。

分配逻辑245接收多个架构寄存器标识符,例如架构寄存器号,每个均标识相应的要重命名的架构寄存器。在一个实施例中,分配逻辑245将所接收的每个架构寄存器标识符分组成两组架构寄存器标识符,即第一组和第二组架构寄存器标识符,并将第一组和第二组架构寄存器标识符提供给配置逻辑235。换言之,所接收的每个架构寄存器标识符或者在第一组中或者在第二组中提供给配置逻辑235。配置逻辑235接着将由第一组中的架构寄存器标识符所表示的架构寄存器重命名成由第一块202a中所存储的PRMT 205的项所表示的空物理寄存器,并且将由第二组中的架构寄存器标识符所表示的架构寄存器重命名成由第二块202b中所存储的PRMT 205的项所表示的空物理寄存器。更为具体地,作为寄存器重命名(也即将架构寄存器关联到空的物理寄存器)的结果,第一组中的架构寄存器标识符将被记录在存储在第一块202a中的PRMT205的项中,并且第二组中的架构寄存器标识符将被记录在存储在第二块202b中的PRMT 205的项中。

如图4所示,四个架构寄存器标识符AR0、AR1、AR2和AR3被分配逻辑245接收并且作为两个架构寄存器标识符一组的两组被提供给配置逻辑235。在一个实施例中,分配逻辑245在给定时钟周期中将AR0,AR1分组到第一组,例如组0,以及将AR2和AR3分组到第二组,例如组1,并且在随后的时钟周期中交换编组顺序以将AR0,AR1分组到第二组并将AR2和AR3分组到第一组,反之亦然。这两组架构寄存器标识符中的每组都被作为两个信号(即被分配的寄存器0和被分配的寄存器1)提供给配置逻辑235。分配逻辑245还可接收用以指示由架构寄存器标识符AR0-AR3所表示的四个架构寄存器标识符中的哪一个或哪几个需要被重命名的四比特有效信号。在一个实施例中,如果这两组架构寄存器标识符中的任何一组仅具有一个有效架构寄存器标识符,也即由该组中的两个标识符所表示的两个架构寄存器中的仅仅一个需要被重命名,则该有效架构寄存器标识符将被作为该组的被分配寄存器0提供给配置逻辑235。

在一个实施例中,对于第一组架构寄存器标识符,配置逻辑235将由被分配寄存器0信号所表示的架构寄存器标识符记录在由检查逻辑212所识别的第一块202a中所存储的PRMT 205的项中,并且将由被分配寄存器1信号所表示的架构寄存器标识符记录在由检查逻辑214所识别的第一块202a中所存储的PRMT 205的项中。类似地,对于第二组架构寄存器标识符,配置逻辑235将由被分配寄存器0信号所表示的架构寄存器标识符记录在由检查逻辑216所识别的第二块202b中所存储的PRMT 205的项中,并且将由被分配寄存器1信号所表示的架构寄存器标识符记录在由检查逻辑218所识别的第二块202b中所存储的PRMT205的项中。例如,如果寄存器12和寄存器27分别被检查逻辑212、214识别为存储着指示相应的物理寄存器为空的PRMT项,则AR0将被记录在寄存器12中所存储的项12中,并且AR1将被记录在寄存器27中所存储的项27中,其中假设AR0和AR1都是有效的架构寄存器标识符并且假设AR0和AR1在该特定时钟周期中被分配给第一组。类似地,在相同的时钟周期中,假设AR2和AR3也都是有效的架构寄存器标识符并且寄存器55和寄存器76分别被检查逻辑216、218识别为储存着指示相应的物理寄存器为空的PRMT项,则AR2将被记录在在寄存器55中所存储的项55中,并且AR3将被记录在存储76中所存储的项76中。

在一个实施例中,分配逻辑245可以对在给定时钟周期中分配给两组中的每组的有效架构寄存器标识符的数目进行均衡。例如,如果在一个时钟周期中总共有三个有效架构寄存器标识符,其中仅仅一个有效架构寄存器标识符被分配给第一组而另外两个被分配给第二组,则在随后的一个时钟周期中,当存在奇数个有效架构寄存器标识符时,分配逻辑245将分配较多的有效架构寄存器标识符给第一组。

在一个实施例中,分配逻辑245可包括分组电路242、交换电路244和块选择电路246。分配逻辑245接收四个有效架构寄存器标识符AR0-AR3和四比特有效信号,将这些架构寄存器标识符分组成组0和组1,并且将这两组架构寄存器标识符提供给交换电路244。基于来自块选择电路246的块选择信号,交换电路244或者将组0提供给第一块202a以及将组1提供给第二块202b,或者将组0提供给第二块202b以及将组1提供给第一块202a。块选择电路246可包括一比特寄存器,并被用于设置块选择信号的值以在重命名架构寄存器时对由第一块202a和第二块202b中的项所标识的空物理寄存器的使用率进行均衡。块选择电路246或者均衡控制逻辑可记录分组历史并且对提供给交换电路244的块选择信号进行设置。因此,由第一块202a和第二块202b中所存储的PRMT项所表示的空物理寄存器可以以均衡的方式用于寄存器重命名。否则,如果没有这种均衡的分配,可能出现块202a和202b中的一个可能不具有任何一个指示空物理寄存器的项而块202a、202b中的另一个仍然具有许多个指示相应的物理寄存器为空的项。图6说明根据一个实施例的交换电路244。

在一个实施例中,配置逻辑235可包括第一配置逻辑232和第二配置逻辑234。第一配置逻辑232可被耦合到第一寄存器块202a、检查逻辑212、214、“满”检测器222、以及分配逻辑245。第二配置逻辑234可被耦合到第二寄存器块202b、检查逻辑216、218、“满”检测器224、以及分配逻辑245。第一配置逻辑232接收第0组架构寄存器标识符。接着,第一配置逻辑232依赖于所接收的架构寄存器标识符之一或二者是否有效而将所接收到的架构寄存器标识符之一或二者存储在第一块202a中所存储的PRMT 205中的指示相应的物理寄存器为空的那些项中。第二配置逻辑234接收第1组架构寄存器标识符。接着,第二配置逻辑234依赖于所接收的架构寄存器标识符之一或二者是否有效而将所接收到的架构寄存器标识符之一或二者存储在第二块202b中所存储的PRMT 205中的指示相应的物理寄存器为空的那些项中。

在一个实施例中,第一配置逻辑232和第二配置逻辑234中的每个可能具有如图7A和7B中所示出的多个配置电路233。根据一个实施例,图7A说明第一配置逻辑232而图7B说明第二配置逻辑234。在一个实施例中,第一配置逻辑232和第二配置逻辑234中的每个可具有四十个配置电路233,每个配置电路针对第一块202a或第二块202b中的相应的寄存器中所存储的相应的PRMT 205的项。在一个实施例中,由检查逻辑214(或检查逻辑216)所提供的搜索结果信号可被用于控制在由分配给第一块202a(或第二块202b)的组中的标识符所表示的两个架构寄存器之间的选择。如果所接收的架构寄存器标识符为有效,则所接收的架构寄存器标识符将被记录在与处于空状态的物理寄存器相关联的项中;否则,它将不被记录。图8说明根据一个实施例的配置逻辑232、234中的配置逻辑233之一的结构。

因此,寄存器重命名系统200可以用两个步骤来实现寄存器重命名。也即,首先,在两个PRMT段205a、205b的每个段中,识别指示相应的物理寄存器处于空状态的两个PRMT项。接着,被分组成两组的有效架构寄存器,被重命名成相应的与两个PRMT段205a、205b中的已识别的项相关联的空物理寄存器。对与空物理寄存器相关联的项的识别是针对PRMT段205a、205b二者同时执行的,并且分别针对存储PRMT段205a、205b的寄存器块202a、202b的每一个,同时在两个方向上执行该搜索。

图9说明根据另一非限制性的说明的实施例的处理器中的寄存器重命名系统900。寄存器重命名系统900包括具有多个非重叠段的PRMT,其中每个段被存储在相应的寄存器块中。PRMT中的每个项与相应的物理寄存器相关联,并且记录相应的物理寄存器所处于的状态,以及被重命名到相应的物理寄存器的架构寄存器的标识符,如果存在任何被重命名到其的架构寄存器的话。寄存器重命名系统900还包括重命名逻辑,其被耦合到寄存器块以便对寄存器进行读和写,例如,以便搜索PRMT中指示相应的物理寄存器处于空状态的项以将架构寄存器重命名到这些空物理寄存器中的某一些。

在一个实施例中,如图9所示,寄存器重命名系统900可包括存储在第一寄存器块902a中的第一PRMT段905a以及存储在第二寄存器块902b中的第二PRMT段905b。寄存器重命名系统900还可包括耦合到寄存器块902a、902b的重命名逻辑910。重命名逻辑910可并行地搜索PRMT段905a、905b,以识别其中每个均指示相应的物理寄存器处于第一状态(例如为空)的项。重命名逻辑900还可选择性地将多个架构寄存器中的每个关联到相应的被识别为处于第一状态的物理寄存器。在图9中尽管仅仅示出两个PRMT段905a、905b,但是在其他实施例中可以有更大数量的PRMT段,例如四个或八个,它们被存储在等量的寄存器块中并且可以被同时搜索。

在一个实施例中,重命名逻辑910可包括搜索逻辑920以搜索这多个寄存器块,诸如寄存器块902a、902b,以便识别其中所存储的指示相应的物理寄存器处于第一状态的项。搜索逻辑920可按第一方向以及同时按不同于该第一方向的第二方向来搜索每个寄存器块。例如,搜索逻辑920可从每个块的顶部朝着该块的底部以及同时从每个块的底部朝着该块的顶部搜索每个块902a、902b。

在一个实施例中,重命名逻辑910可包括映射逻辑930以接收多个架构寄存器标识符,其中每个标识符均代表相应的一个架构寄存器。映射逻辑930可选择性地将每个架构寄存器标识符关联到指示相应的物理寄存器处于第一状态的PRMT项中的相应的项。更为具体地,映射逻辑930可选择性地将每个架构寄存器标识符记录在指示相应的物理寄存器处于第一状态的相应的PRMT项中。映射逻辑930还可将记录着相应的架构寄存器标识符的PRMT项的状态从第一状态改变成不同于该第一状态的另一状态。在一个实施例中,映射逻辑930可对架构寄存器标识符到映射表的每段中的项的关联进行均衡。具体地,映射逻辑930可基于先前被关联到每段映射表的项的架构寄存器标识符的相应数量,对要关联到每段映射表的项的架构寄存器标识符的相应数量进行调节。

在一个实施例中,搜索逻辑920可被耦合到映射逻辑930以提供多个标记信号,其中每个标记信号指示寄存器块中的相应寄存器中是否存储有指示相应的物理寄存器处于第一状态的相应项。映射逻辑930可将架构寄存器标识符分组成多组架构寄存器标识符。映射逻辑930还可在第一轮关联中将每组架构寄存器标识符关联到各段映射表中的项。映射逻辑930还可基于在第一轮关联中被关联到每段映射表中的项的架构寄存器标识符的相应数量在该第一轮关联之后的第二轮关联中将每组架构寄存器标识符关联到该映射表的不同段中的项。

图10说明在根据另一个非限制性的说明的实施例的处理器中的寄存器重命名系统1000。寄存器重命名系统1000包括具有多个非重叠段的PRMT,其中每个段被存储在相应的寄存器块中。PRMT中的每个项与相应的物理寄存器相关联,并且记录相应的物理寄存器所处于的状态,以及被重命名到相应的物理寄存器的架构寄存器的标识符,如果存在任何被重命名到其的架构寄存器。

在一个实施例中,如图10中所示出的,寄存器重命名系统1000可包括存储在第一寄存器块1002a中的第一PRMT段1005a和存储在第二寄存器块1002b中的第二PRMT段1005b。寄存器重命名系统1000还可包括耦合到寄存器块1002a、1002b的搜索逻辑1010。搜索逻辑1010可并行地搜索第一和第二寄存器块1002a、1002b,并在这些块中识别所存储的相应的映射表项指示相应的物理寄存器处于第一状态(例如为空)的寄存器。尽管图10中仅仅示出两个PRMT段1005a、1005b,但是在其他实施例中可存在更大数量的PRMT段,例如四个或八个,它们被存储在等量的寄存器块中并且可被同时搜索。

在一个实施例中,搜索逻辑1010可按第一方向以及同时按不同于该第一方向的第二方向搜索第一寄存器块1002a,此时还按该第一方向以及同时按该第二方向搜索第二寄存器块1002b,以识别具有指示相应的物理寄存器处于第一状态的相应项的寄存器。例如,搜索逻辑1010可同时从块1002a的顶部朝着块1002a的底部以及从块1002a的底部朝着块1002a的顶部搜索第一寄存器块1002a。搜索逻辑1010还可按相同的方式搜索第二寄存器块1002b。

在一个实施例中,寄存器重命名系统1000还可包括分配逻辑1020以接收多个架构寄存器标识符并将其分组成第一和第二组架构寄存器标识符,其中每个架构寄存器标识符均代表相应的架构寄存器。分配逻辑1020可按第一组和第二组架构寄存器标识符来提供架构寄存器标识符以重命名分为两组的架构寄存器,其中所接收的每个架构寄存器标识符或者在第一组中或者在第二组中。

在一个实施例中,寄存器重命名系统1000还可包括耦合到第一和第二寄存器块1002a、1002b,搜索逻辑1010、以及分配逻辑1020的配置逻辑1030。配置逻辑1030可从分配逻辑1020接收第一和第二组架构寄存器标识符,并选择性地将每个架构寄存器标识符关联到第一寄存器块1002a或第二寄存器块1002b中的相应的项。在一个实施例中,搜索逻辑1010可提供多个标记信号给配置逻辑1030。每个信号可具有第一值或第二值,第一值指示相应的物理寄存器具有第一状态,第二值指示相应的物理寄存器具有除第一状态之外的另一状态。在从搜索逻辑接收到标记信号时,配置逻辑1030可将每个架构寄存器标识符存储在第一寄存器块1002a或第二寄存器块1002b中相应的标记信号具有第一值的相应寄存器中,以将相应的架构寄存器关联到相应的物理寄存器。

在一个实施例中,配置逻辑1030可将第一组中的每个架构寄存器标识符关联到第一寄存器块1002a中的相应项并且还将第二组中的每个架构寄存器标识符关联到第二寄存器块1002b中的相应项。另外,如果在前一轮的关联中被关联到第一块1002a中的项的架构寄存器标识符的数目不等于被关联到第二块1002b中的项的架构寄存器标识符的数目,则配置逻辑1030可将第一组中的每个架构寄存器标识符关联到第二寄存器块1002b中的相应项,以及进一步将第二组中的每个架构寄存器标识符关联到第一寄存器块1002a中的相应项。

在一个实施例中,搜索逻辑1010可确定被识别为具有指示相应的物理寄存器处于第一状态的相应项的寄存器的数量并将针对每个已识别的寄存器的相应的有效信号提供给配置逻辑1030。针对第一和第二寄存器块1002a、1002b,配置逻辑1030可分别接收第一和第二架构寄存器标识符,并且如果相应的寄存器块中所存储的项中仅仅一个项被识别为指示相应的物理寄存器处于第一状态,则确定所接收的架构寄存器标识符中的哪个将被关联。

图11说明根据一个非限制性的说明的实施例的具有寄存器重命名系统的处理器1100。处理器1100包括具有多个非重叠段的PRMT,其中每个段都被存储在相应的寄存器块中。该PRMT的每个项都与相应的物理寄存器相关联并且记录相应的物理寄存器所处的状态,以及被重命名到相应的物理寄存器的架构寄存器的标识符,如果存在任何被重命名到其的架构寄存器。

在一个实施例中,如图11中所示,处理器1100可包括存储在第一寄存器块1102a中的第一PRMT段1105a和存储在第二寄存器块1102b中的第二PRMT段1105b。处理器1100还可包括耦合到寄存器块1102a、1102b的搜索逻辑1110。搜索逻辑1110可并行地搜索第一和第二PRMT段1105a、1105b,以识别其中每个均指示相应的物理寄存器处于第一状态(例如为空)的项。处理器1100还可包括耦合到搜索逻辑1110的映射逻辑1120。映射逻辑1120可接收多个架构寄存器标识符,其中每个标识符均指示相应的架构寄存器。映射逻辑1120可将所接收的每个架构寄存器标识符映射到指示相应的物理表处于第一状态的相应的PRMT段中的相应项。尽管在图11中仅示出两个PRMT段1105a、1105b,但是在其他实施例中,可存在更大数量的PRMT段,例如四个或八个,它们被存储在等量的寄存器块中并且可被同时搜索。

在一个实施例中,搜索逻辑1110被耦合到寄存器块1102a、1102b,并且同时从块的第一端朝着与该第一端相对的该块的第二端以及从该块的第二端朝着该块的第一端搜索每个寄存器块1102a、1102b,以寻找存储的映射表项指示相应的物理寄存器处于第一状态的寄存器。例如,搜索逻辑1110可同时从块1102a的顶部朝着块1102a的底部以及从块1102a的底部朝着块1102a的顶部搜索第一寄存器块1102a。搜索逻辑1110还可用相同的方式搜索第二寄存器块1102b。

在一个实施例中,搜索逻辑1110可提供多个标记信号给映射逻辑1120,其中每个标记信号指示针对寄存器块中的相应的寄存器的搜索结果。每个标记信号可具有第一值或第二值,第一值指示相应的寄存器存储的相应的映射表项指示相应的物理寄存器处于第一状态,第二值指示相应的寄存器存储的相应的映射表项指示相应的物理寄存器处于除第一状态之外的另一状态。

在一个实施例中,搜索逻辑1110可包括多个寄存器搜索逻辑。每个寄存器搜索逻辑可被耦合到相应的一个寄存器块1102a、1102b,以同时从块的第一端朝着与该第一端相对的该块的第二端以及从该块的第二端朝着该块的第一端搜索相应的块1102a或1102b中的寄存器,寻找所存储的映射表项指示相应的物理寄存器处于第一状态的寄存器。

图12说明根据一个实施例的具有寄存器重命名系统的基于处理器的系统1200。基于处理器的系统1200包括输入设备1230、输出设备1240、数据存储设备1250以及处理器1202,处理器1202耦合到输入设备1230、输出设备1240和数据存储设备1250。处理器1202包括多个寄存器决,其中每个寄存器块存储着一段物理寄存器映射表以将映射表的相应项存储在相应的寄存器块中的每个寄存器中,其中每个项指示相应的物理寄存器的状态。在一个实施例中,处理器1202可具有存储着第一PRMT段1205a的第一寄存器块和存储着第二PRMT段1205b的第二寄存器块1202b,如图12中所示。处理器1202还包括搜索逻辑1210,其耦合到寄存器块以同时搜索寄存器块中的第一块和第二块以便识别第一块和第二块中所存储的相应项指示相应的物理寄存器处于第一状态的寄存器。处理器1202还包括耦合到寄存器块和搜索逻辑1210的映射逻辑1220。映射逻辑1220接收多个架构寄存器标识符,其中每个标识符均标识相应的架构寄存器。接着,映射逻辑1220将每个架构寄存器标识符映射到第一块和第二块的寄存器中的被识别为所存储的相应项指示相应的物理寄存器处于第一状态的相应寄存器,以将每个架构寄存器关联到对应的物理寄存器。

在一个实施例中,搜索逻辑1210可按第一方向以及同时按不同于该第一方向的第二方向来搜索第一和第二寄存器块1202a、1202b中的至少之一,以识别第一块中所存储的相应项指示相应的物理寄存器处于第一状态的寄存器。

在一个实施例中,处理器1200还可包括耦合到映射逻辑1220的分配逻辑。分配逻辑可接收架构寄存器标识符,将架构寄存器标识符配置成多个组,以及按组将架构寄存器标识符提供给映射逻辑1220。映射逻辑1220可确定在每轮关联中被映射到第一和第二寄存器块中的每个块的架构寄存器标识符的数目。接着,映射逻辑1220在每轮关联中,基于在前一轮的关联中被映射到第一和第二寄存器块中的每个块的架构寄存器标识符的数目,对被映射到第一和第二寄存器块中的每个块的架构寄存器标识符的数目进行均衡。

在一个实施例中,搜索逻辑1210可接收针对寄存器块中的每个寄存器的空信号,其指示与相应的寄存器中所存储的相应的映射表项相关联的物理寄存器的状态。作为响应,搜索逻辑1210可提供针对每个空信号的标记信号以指示相应的物理寄存器的状态。标记信号可具有第一值或第二值,第一值指示相应的物理寄存器处于第一状态,第二值指示相应的物理寄存器处于不同于该第一状态的另一状态。例如,对于给定空信号,搜索逻辑1210可将标记信号设置成二进制值1以指示相应的物理寄存器为空,或可将标记信号设置成二进制值0以指示相应的物理寄存器为非空(例如,处于提交(commit)状态或写回状态)。

图13说明根据一个实施例的在处理器中执行寄存器重命名的过程1300。在1302处,第一段映射表和第二段映射表被同时搜索以识别映射表中的每个均指示相应的物理寄存器处于第一状态的项。在一个实施例中,它们被顺序地搜索或者根据程序指导进行搜索。在其他实施例中,它们被同时搜索。在1304处,对于多个架构寄存器,与每个架构寄存器相关的数据被存储在物理寄存器中被识别为处于第一状态的相应的物理寄存器中,以便将架构寄存器关联到被识别为处于第一状态的物理寄存器。

在一个实施例中,在1306处,过程1300在每轮关联中还可基于在前一轮关联中架构寄存器到被识别为处于第一状态的物理寄存器的关联,对架构寄存器到被识别为处于第一状态的物理寄存器的关联进行均衡。在一个实施例中,针对每轮关联,过程1300可以首先确定被关联到与每段映射表相关的物理寄存器的架构寄存器的数量。接着,过程1300可基于在前一轮关联中被关联到与每段映射表相关的物理寄存器的架构寄存器的数量,对被关联到与每段映射表相关的物理寄存器的架构寄存器的数量进行调节。

在一个实施例中,在同时搜索第一段映射表和第二段映射表时,过程1300可同时搜索存储在第一寄存器块中的第一段映射表和存储在第二寄存器块中的第二段映射表。例如,存储在第一寄存器块202a中的第一PRMT段205a和存储在第二寄存器块202b中的第二PRMT段205b可被过程1300同时搜索。在一个实施例中,过程1300可同时按第一方向和按不同于该第一方向的第二方向来搜索第一寄存器块中所存储的第一段映射表,以及同时按该第一方向和该第二方向来搜索第二寄存器块中所存储的第二段映射表。例如,在第一寄存器块202a中所存储的第一PRMT段205a可同时按第一和第二方向被过程1300搜索,而此时在第二寄存器块202b中所存储的第二PRMT段205b可同时按第一和第二方向被过程1300搜索。

图14说明根据一个实施例的在处理器中执行寄存器重命名的过程1400。在1402处,物理寄存器映射表中的项被存储在多个寄存器块中,以使得相应数目的项被存储在相应的寄存器块中,其中每个项指示相应的物理寄存器的状态。在1404处,在第一时钟周期中按第一方向以及按不同于该第一方向的第二方向搜索寄存器块中的第一块,以识别其中每个均指示相应的物理寄存器处于第一状态的项。在1406处,多个架构寄存器中的每个被映射到被识别为处于第一状态的相应的物理寄存器。

在一个实施例中,过程1400在第一时钟周期中还可按该第一方向和该第二方向搜索寄存器块中的不同于第一块的第二块,以识别其中每个均指示相应的物理寄存器处于第一状态的项。在另一实施例中,在搜索寄存器块中的第一块以识别处于第一状态的项之后,过程1400还可提供多个信号,其中每个信号表示第一块中的相应的寄存器并且每个信号都具有指示相应的物理寄存器处于第一状态的第一值或指示相应的物理寄存器处于不同于该第一状态的另一状态的第二值。在又一实施例中,过程1400在第一时钟周期中还可按该第一方向和该第二方向搜索寄存器块中的第二块以识别其中每个均指示相应的物理寄存器处于第一状态的项。在将这多个物理寄存器中的每个映射到被识别为处于第一状态的相应的物理寄存器时,过程1400可将这多个架构寄存器中的每个映射到与块中的第一块或第二块中所存储的项相关联的物理寄存器。

在一个实施例中,过程1400可将物理寄存器映射表的项存储在第一寄存器块和第二寄存器块中,使得物理寄存器映射表的第一段中的项存储在该第一块中,以及物理寄存器映射表的第二段中的项存储在该第二块中。在一个实施例中,过程1400在第一时钟周期中可按该第一方向和该第二方向在第一和第二块中的每个块中进行搜索,以识别其中每个均指示相应的物理寄存器处于第一状态的项。在一个实施例中,过程1400可将第一架构寄存器映射到与第一块中所存储的项之一相关联的物理寄存器以及将第二架构寄存器映射到与第二块中所存储的项之一相关联的物理寄存器。

在一个实施例中,当将多个架构寄存器中的每个映射到被识别为处于第一状态的相应的物理寄存器时,过程1400可将其中每个均通过多个传输路径中的相应传输路径传输的多个架构寄存器标识符中的每个映射到与被识别为处于第一状态的物理寄存器相关联的相应的项。更为具体地,过程1400可将在第一时钟周期之后的第二时钟周期中通过第一和第二传输路径传输的架构寄存器标识符映射到第一块中的处于第一状态的项。过程1400还可将在第二时钟周期之后的第三时钟周期中通过第一和第二传输路径传输的架构寄存器标识符映射到第二块中的处于第一状态的项。如果第一块中被识别为处于所述第一状态的项的数量不同于第二块中被识别为处于所述第一状态的项的数量,则过程1400可以在映射过程中相应地调整在所述第二时钟周期中或第三时钟周期中映射的架构寄存器标识符的数量。

在一个实施例中,过程1400可在第一时钟周期中从寄存器块中的第一块的第一端朝着该块的与该第一端相对的第二端来进行搜索以及从该块的第二端朝着该块的第一端来进行搜索。

图15说明根据一个实施例的在处理器中执行寄存器重命名的过程1500。在1502处,物理寄存器映射表的第一段中的项被存储在第一寄存器块中,并且物理寄存器映射表的第二段中的项被存储在第二寄存器块中。在1504处,在第一时钟周期中,识别在第一块中的那些其中每个均指示相应的物理寄存器为空的物理寄存器映射表的项。在1506处,在第一时钟周期中,还识别在第二块中的那些其中每个均指示相应的物理寄存器为空的物理寄存器映射表的项。在1508处,要重命名的多个架构寄存器被分组成第一组架构寄存器和第二组架构寄存器。在1510处,所述多组架构寄存器之一中的架构寄存器被关联到与所识别的第一块中所存储的映射表项相关联的空物理寄存器。在1512处,另一组架构寄存器中的架构寄存器被关联到与所识别的第二块中所存储的映射表项相关联的空物理寄存器。

在一个实施例中,过程1500还可对架构寄存器组到与所识别的第一块和第二块中的空项相关联的物理寄存器的关联进行均衡。更为具体地,响应于在前一时钟周期中所识别的与第一块中所存储的项相关联的空物理寄存器的数量以及与第二块中所存储的项相关联的空物理寄存器的数量,过程1500可将每组架构寄存器关联到所识别的与第一或第二块中的项相关联的相应的空物理寄存器。在另一实施例中,过程1500还可将架构寄存器之一的标识符存储在与被识别为空的物理寄存器之一相关联的相应项中。过程1500还可将相应项的状态设置成指示除了为空之外的状态。

在一个实施例中,当将多个要重命名的架构寄存器分组成第一组架构寄存器和第二组架构寄存器时,过程1500可按程序次序将这多个要重命名的架构寄存器分组成第一组架构寄存器和第二组架构寄存器。

在一个实施例中,该第一块和第二块均具有各自的第一端和与各自的第一端相对的各自的第二端,并且过程1500在第一时钟周期中可通过同时从第一端朝着第二端进行搜索以及从第二端朝着第一端进行搜索,识别第一块中的指示相应的物理寄存器为空的每个物理寄存器映射表项。过程1500在第一时钟周期中还可通过同时从第一端朝着第二端进行搜索以及从第二端朝着第一端进行搜索,识别第二块中的指示相应的物理寄存器为空的每个物理寄存器映射表项。

在一个实施例中,过程1500可识别第一块中的多至两个物理寄存器映射表项以及第二块中的多至两个物理寄存器映射表项。过程1500可将四个要重命名的架构寄存器分组成第一对架构寄存器和第二对架构寄存器,其中每组具有这四个架构寄存器中的一对。过程1500可将与所识别的第一块中的多至两个项相关联的物理寄存器关联到一对架构寄存器,以及将与所识别的第二块中的多至两个项相关联的物理寄存器关联到另一对架构寄存器。

因此,已经公开了本发明的在诸如超标量体系结构的微处理器之类的处理器中的寄存器重命名系统实现的实施例。相比诸如图1中所示出的常规寄存器重命名系统100之类的常规寄存器重命名系统实现而言,根据此处所公开的各种实施例的寄存器重命名系统提供了若干优点。例如,通过并行地搜索物理寄存器映射表中的多个段以及按两个不同方向来搜索每个段,可以减小在寻找空物理寄存器时的路径延迟。减小的路径延迟应当也有利地导致降低的功耗。

上述对说明的实施例的描述,包括摘要中所描述的内容,不是旨在作为穷举或将实施例限制到所公开的精确形式。此处尽管出于说明性的目的描述了具体实施例和例子,但是本领域技术人员将认识到在不偏离本公开内容的精神和范围的条件下可以做出各种等价的修改。此处所提供的各种实施例的教导可以应用到其他环境,而不必是上面一般描述的寄存器重命名的示例性环境。本领域技术人员将理解,尽管上面所描述的并在附图中所示出的实施例一般针对寄存器重命名的环境,但是与在处理器中使用物理寄存器相关的应用也可从此处所描述的概念中受益。

根据上述的详细描述,可以对实施例做出各种改变。一般而言,在以下权利要求书中,所使用的术语不应当被解释成将权利要求限制到在说明书和权利要求书中所公开的具体实施例,而是应当被解释成包括这些权利要求所保护的所有等同的全部范围内的所有可能的实施例。因此,权利要求书不局限于本公开内容。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号