具有多位字段的寄存器的重命名的制作方法

文档序号:6423895阅读:113来源:国知局
专利名称:具有多位字段的寄存器的重命名的制作方法
技术领域
本公开一般地涉及信息处理系统,更具体地说,涉及具有多个可访问位字段的逻辑寄存器的所有位或者指定位的寄存器重命名。
背景技术
经编译或汇编的软件指令引用在用于目标处理器的指令集中所定义的某些逻辑寄存器。寄存器重命名是逻辑寄存器到物理寄存器的重映射(重命名)。寄存器重命名用于增加超标量(superscalar)处理器可以并行发出的指令的数量。超标量处理器试图通过并行发出多条指令来利用指令级并行,从而提高性能。寄存器重命名提高了没有被特别编译用于超标量微处理器的代码的性能,因为这种代码倾向于以降低可用并行量的方式来使用逻辑寄存器。
处理器的指令集一般包括有限数目的可用逻辑寄存器(逻辑寄存器的数目小于处理器中可用的物理寄存器的数目)。结果,经常在经编译的代码中使用同一逻辑寄存器表示许多不同的变量,尽管在任何给定的时间,一个逻辑寄存器只表示一个变量。因为同一寄存器被用于表示不同的变量,所以这些变量的值是独立的。将逻辑寄存器的这些独立使用中的每一个重命名为不同的物理寄存器允许多个变量同时存在于物理寄存器中。这种重命名通过去掉WAR(读后写)和WAW(写后写)的相关性,并通过允许利用同一逻辑寄存器的独立指令被同时发出,来防止相关性引起的延迟。
某些处理器,例如可以从美国加利福尼亚州圣克拉拉的Intel公司获得的Itanium和Itanium II微处理器,包括一个或多个寄存器,对于所述寄存器允许局部位访问(partial-bit access)。例如,由Itanium和ItaniumII使用的显式并行指令计算(“EPIC”)体系结构的特征在于判定(predicate)寄存器(这里有时称为“PR”,其包含用于支持判定的64个分别的判定位字段。
判定是将控制流相关性转换为数据相关性的方法。通常,判定指令与控制指令执行的单个位的“判定”相关联。只有当指令的判定位是真(true)时,处理器才提交所判定指令的语义结果。
判定寄存器的每个字段可以保存用于特定指令的判定值。从而,判定寄存器的位的值指示出是否应发生相关联的指令的条件执行。
对于至少一个实施例,PR的位可以被单独或成对地访问。此外,PR的高48位可以被单个指令访问。并且,PR的所有位可以被单个指令访问。PR寄存器到物理寄存器的单个块(bulk)重命名可以导致访问PR内的不同位或位对的两个指令之间的不必要的拖延。

发明内容
根据本发明的第一方面,提供了一种装置,包括存储结构,用于存储至少一个条目,所述至少一个条目包括寄存器标识符值;第一长度的第一物理重命名寄存器;和与所述第一长度不同的第二长度的第二物理重命名寄存器;其中,所述寄存器标识符值用于指示当前长度,其中所述当前长度是从包括所述第一长度和所述第二长度的集合中选择的。
根据本发明的第二方面,提供了一种方法,包括确定当前指令是否指示了具有n个位位置的多位字段寄存器,其中n>1;其中所述多位字段寄存器将按照多个访问类型中的任何一个被写,所述多个访问类型包括1个位位置的局部位的写;x个位位置的成块位的写,其中1<x≤n;为所述目的地寄存器分配物理重命名寄存器;其中所述分配步骤还包括如果所述当前指令指示局部位的写,则分配第一长度的物理重命名寄存器,以及还包括如果所述当前指令指示成块位的写,则分配第二长度的物理重命名寄存器。


可以参考下面的附图来理解本发明,在附图中类似的元素以类似的标号来指示。这些附图不是为了限定,而是被提供用于图示对具有多位字段的寄存器进行重命名的方法和装置的经选择的实施例。
图1是图示了可以利用所公开的技术的处理器的至少一个实施例的框图。
图2是进一步图示了重命名映射表的至少一个实施例的条目格式的框图。
图3是图示了对于至少一个实施例所支持的长度的格式的框图。
图4是图示了重命名方法的至少一个实施例的流程图。
图5是图示了用于物理寄存器分配的数据和控制流的流程图。
图6是图示了在对于示例局部位指令的重命名过程中的数据和控制流的数据流程图。
图7是图示了在对于示例指令流中的两个示例指令的重命名过程中的数据流的数据流程图。
图8是图示了在对于示例指令流中的第三和第四示例指令的重命名过程中的数据流的数据流程图。
图9是图示了在对于示例指令流中的第五示例性指令的重命名过程中的数据流的数据流程图。
图10是能够利用如这里所公开的胖/瘦(fat/skinny)重命名技术的处理系统的至少一个实施例的框图。
具体实施例方式
这里所描述的是涉及对寄存器重命名的装置和方法的经选择的实施例,对于所述寄存器,允许变长度的位访问。在下面的描述中,提出了诸如处理器类型、寄存器长度、指令格式和指令操作之类的许多具体细节,以提供对发明的透彻的理解。但是,本领域技术人员应该意识到,可以不利用这些具体细节而实现本发明。另外,一些公知的结构、电路等没有详细示出,以免不必要地使本发明模糊。
如上所述,对允许变长度位访问的寄存器的块重命名可以导致以该寄存器的单个位或位对为源的后来的指令的不必要的拖延。这里所公开的方法和装置的实施例致力于解决该问题,以及其他与重命名支持变长度位访问的寄存器有关的问题。
图1是图示了乱序处理器100的至少一个实施例的框图。处理器100包括重命名映射表102、瘦物理重命名寄存器104和胖物理重命名寄存器106。处理器100还包括判定寄存器108和重命名逻辑114。
重命名逻辑114为在指令120中指示的判定寄存器108的一个或多个位进行寄存器重命名。判定寄存器108是可以在处理器100的指令中被引用的基于体系结构的逻辑寄存器。判定寄存器108具有多个位的位置,每个位置可以保存一个二进制值。对于至少一个实施例,判定寄存器108包括64位的位置。如这里所使用的,对寄存器的特定“位”的引用是指在特定位的位置的二进制值。
对于至少一个实施例,判定寄存器位可以以几种方式中的任何一种被访问。即,处理器100的指令集包括几种类型的指令,每种指令提供对判定寄存器108的位的不同组合的访问。
因为判定寄存器108的位可以以多种组合被访问,所以这里称其为多位字段寄存器(“MBF”寄存器)。如这里所使用的,术语多位字段(MBF)寄存器是指这样的寄存器对于该寄存器,指令集体系结构支持对该寄存器的不同类型的专用于位(bit-specific)的访问。
对于至少一个实施例,在指令集中支持对诸如判定寄存器108的MBF寄存器的局部位访问和成块位访问(bulk-bit access)两者。
考虑局部位访问,对于至少一个实施例,下列类型的局部位访问中的一个或多个各自被一个或多个指令支持1)寄存器的单个位可以被单个指令访问,2)连续的位对(y=2)可以被单个指令访问,和3)非连续的位对(y=2)可以被单个指令访问。
另外,对于至少一个实施例,下列类型的成块位访问中的一个或多个各自被一个或多个指令支持1)寄存器的所有n个位可以被单个指令访问,2)寄存器的x个位可以被单个指令访问,其中n>x>y。
本领域技术人员将意识到,除了或代替成对(y=2)访问,可以支持其他类型的局部位访问。例如,在处理器100的指令集中可以支持4位(y=4)、8位(y=8)和/或16位(y=16)的局部位访问。这些另外的访问类型可以驱动将在下面更详细描述的瘦重命名物理寄存器104的宽度。例如,瘦重命名物理寄存器104可以反映被支持的局部位访问的最大y值。
这里所公开的技术还可以用于只支持上面列举的访问类型的子集的寄存器,只要至少一种类型的局部位访问和至少一种类型的较大位访问都被支持。
重命名逻辑114通过将PR 108映射到重命名寄存器文件110中的物理寄存器来进行重命名。即,对于在处理器100的指令流中的指令120中的每次PR 108的出现,重命名逻辑114将这样的出现映射到物理寄存器。如这里所使用的,术语“指令”是用来指示基本的工作单位——可以被处理器的功能单元理解的任何类型的机器指令,包括宏指令和微操作。
对于至少一个实施例,重命名寄存器文件110包括共享同一名称空间的两组物理重命名寄存器104、106。第一组物理重命名寄存器包括一个或多个指定位长度的寄存器104。对于至少一个实施例,第一组物理重命名寄存器104的位长度是两位。这些寄存器104在这里被称为“瘦”物理重命名寄存器。
重命名寄存器文件110的至少一个实施例还包括第二组物理重命名寄存器106。该第二组物理重命名寄存器包括一个或多个各自为第二指定位长度的重命名寄存器106。对于至少一个实施例,第二位长度不同于第一位长度。对于至少一个实施例,第二组寄存器106的位长度是64位。这些寄存器106在这里被称为“胖”物理重命名寄存器。
在PR 108的重命名期间,重命名逻辑114可以将数据输入重命名映射表102中。重命名映射表是用于保存一个或多个重命名条目的存储结构。实际上,重命名映射表102的实际的条目形成了翻译表,该翻译表跟踪在指令集中定义的逻辑寄存器到物理寄存器的映射。重命名映射表102的条目112槽中的信息可以指示瘦物理重命名寄存器104或者胖物理重命名寄存器106。物理寄存器104、106可以为被重命名的逻辑寄存器维护中间的和基于体系结构的数据状态。
相结合地,两组物理重命名寄存器104、106被用于对于MBF的所有支持的访问类型的重命名效率方面的考虑。对于对MBF的单个位或位对的访问,MBF的目标位被重命名到“瘦”物理寄存器。对于较大位访问(例如全位访问),MBF的整个内容被重命名到“胖”物理寄存器。应该注意,不要求瘦物理重命名寄存器104的数量(z)等于胖物理重命名寄存器106的数量(m)。
据此,已经说明了重命名映射表102、瘦物理重命名寄存器104和胖物理重命名寄存器106通过重命名逻辑114促进了逻辑判定寄存器(PR)108的重命名。对于至少一个实施例,判定寄存器108对于每个64个判定位具有一个位字段。
对于至少一个实施例,判定位的行为类似于在一些体系结构中公知的条件代码。有63个位可写的64位PR 108可以被单个指令1)单个地写,2)连续成对地写,3)非连续成对地写,以及4)全部一次地写(除了最低位不能被写)。另外,判定寄存器的高48位的全部或一些可以被单个指令写。
图1图示出重命名映射表102包括n个条目槽112,一个条目槽用于MBF的每一n个可写位。例如,为了重命名含有63个基于体系结构的可访问位(即,n=63)的PR 108,重命名映射表102包括63个条目槽112。对于具有63个条目的重命名映射表602的一个例子,请参见图6。
如上所述,至少一个实施例的瘦物理重命名寄存器104和胖物理重命名寄存器106共享同一名称空间。因此,重命名映射表102的条目槽112中的每个实际条目包括类型字段。重命名映射表102的实际条目的类型字段202中的值指明条目是指向瘦寄存器104还是胖寄存器106。下面将进一步详细讨论重命名映射表102的条目的格式。
图2图示了重命名映射表102的实际条目208的格式的至少一个实施例。条目槽112中的每个实际条目208具有图2中所示的格式210。如这里所使用的,术语“实际条目”208用于指数据。术语“条目槽”112用于指存储实际条目208的重命名映射表102(图1)中的存储器位置。槽112可以包括或不包括有效数据值。例如,刚刚在初始化之后,重命名映射表102(图2)中可能没有实际条目208;即,刚刚在初始化之后,条目槽1121到112n都不包含有效数据,使得在重命名映射表102中有n个槽,但是在表102中没有条目208。
每个条目槽112包括类型字段202、寄存器标识符字段204和位置字段206。在重命名期间,代表实际条目208的数据被放置在条目112槽的字段202、204、206中。被放置在条目槽112中的实际条目208的信息使得处理器100定位PR 108(图1)的一个或多个位的最近被写的值。
对于至少一个实施例,实际条目208的类型字段202中的值指示出实际条目208的寄存器标识符字段204的值指示的是瘦寄存器104还是胖寄存器106。寄存器标识符字段24中的寄存器标识符值是标识重命名寄存器文件110中的物理寄存器的指针。寄存器标识符可以指向瘦重命名寄存器104或者胖重命名寄存器106。
如这里所使用的,“指针”值是标识特定物理寄存器的任何寄存器标识符值。在一些实施例中,重命名映射表102的条目208的寄存器标识符字段204中的寄存器标识符值可以是地址或地址的一部分。对于至少一个实施例,重命名映射表102的条目中的指针值可以是偏移量。
参照图2和图3讨论位置字段206。图2图示出位置字段206的内容与指向瘦物理重命名寄存器的实际条目208有关。对于只包括两个位的瘦物理重命名寄存器104的一个实施例,位置字段在这里被称为左/右(L/R)字段。即,实际条目208的位置字段206中的值指示两位瘦物理重命名寄存器104中的左位或者右位。
当然,本领域的技术人员将意识到,物理重命名寄存器102可以是任何长度的。例如,如果指令集支持4位局部访问,则物理重命名寄存器102可以理想地是4位长度。在这样的实施例中,位置字段206中的值可以指示出4个位中的哪个位被期望用于单个位的访问。
因此,被放置在重命名映射表102的实际条目208的条目槽112中的值包括信息和指针,所述信息用于标识物理寄存器类型,其中所期望的一个(或多个)判定位已经被重命名到该物理寄存器,所述指针指向物理重命名寄存器,其中所期望的一个(或多个)判定位已经被重命名到该物理重命名寄存器。另外,如果1)重命名被执行以响应局部位访问指令,以及2)对于当前局部位访问指令的要被重命名的位的数目小于y,其中y是瘦物理重命名寄存器的位长度,则实际条目208中的值还指示物理重命名寄存器102中的哪个(或哪些)位被用于重命名用于局部位访问指令的位。
图4是图示了将逻辑寄存器重命名为物理寄存器的方法400的流程图。对于至少一个实施例,方法400可以由举例来说例如图1中所示的重命名逻辑114的重命名逻辑来进行。
在重命名方法400期间,可以对在当前指令中指明的逻辑源寄存器和/或逻辑目的地寄存器采取动作。例如,在下面的示例性的指令中,由r2和r3表示的逻辑寄存器是源寄存器,由r1表示的逻辑寄存器是目的地寄存器add r1=r2,r3。通常,方法400修改源指令,以指示对于先前被重命名的寄存器的映射。另外,方法400将重命名寄存器文件110(图1)中的一个寄存器分配用于被标识为目的地寄存器的一个(或多个)MBF寄存器。下面将进一步详细地讨论映射操作和分配操作。
图4图示出操作开始于框402,并且前进到框403。在框403,当前指令被修改,以将当前指令120的各逻辑源寄存器映射到寄存器文件110(图1)中的先前被映射的物理重命名寄存器。如果当前指令的一个或多个逻辑源寄存器不是MBF寄存器(或这样的寄存器的一个位),则以公知的方式发生源寄存器的映射403。
但是,如果当前指令的一个或多个逻辑源寄存器是MBF寄存器的一个位,则如下进行映射。一个(或多个)源寄存器的判定位数目被用作进入重命名映射表102的索引,以便定位与被当前指定指示为源的逻辑判定位相对应的映射表102的条目。例如,如果第四判定位p4被指示为当前指令120的源,则在框403,识别出重命名映射表102(图1)的第四条目。在与源判定位相对应的重命名映射表102条目中所标识的物理重命名寄存器被确定出。接着,当前指令被修改,以反映作为源寄存器的被标识的物理重命名寄存器,而不是逻辑寄存器。处理接着进行到框404。
如果指令指示整个判定寄存器作为源,则修改403可以以几种方法中的任何一种来处理。一种方法是核对判定寄存器的所有分别被重命名的位,并且修改当前指令,以指示保存对于每个位的当前值的一个或多个物理寄存器。这样的方法的实现细节超出了本发明公开的范围。用于处理这样的判定寄存器的成块位读取的另一种方法是等待直到以判定寄存器为源的指令是最早的指令。当这样的指令是机器中最早的指令时,判定寄存器的值可以从基于体系结构的寄存器文件中被读取。
处理进行到框404,在这里确定当前指令是否指示一个或多个MBF寄存器作为目的地。如果否,则处理进行到框406,在这里以公知的方式对当前指令进行重命名,处理然后在框418结束。
在框406的处理是可选的。框406的可选特性在图4中以虚线表示。即,示于图4的专用于MBF的分配410可以在也支持非MBF寄存器重命名的系统中被执行。在这样的情况下,在框406执行对于非MBF寄存器的分配。但是,方法400可以在系统中实现,而不论该系统是否执行任何其他的重命名技术。
如果在框404确定出当前指令指示对MBF寄存器的写入,则处理进行到框410。
在框410,为每个MBF目的地寄存器分配物理寄存器。即,在框410,寄存器重命名文件110(图1)中的适合大小的空寄存器被选择并被分配给每个MBF目的地寄存器。
简要参照图5,进一步图示了MBF目的地寄存器的寄存器分配410。图5图示出物理寄存器分配410包括确定502要为所考虑的逻辑寄存器分配的适合的物理寄存器大小。通常,基于由当前指令所指示的位访问的类型来确定502要为逻辑目的地寄存器分配的物理寄存器的大小。下面将结合图6所示的示例进一步详细讨论物理寄存器大小的确定502。
当适合的物理寄存器的大小已经在框502被确定之后,在框504选择适合大小的可用寄存器。对于至少一个实施例,重命名逻辑114(图1)维护那些可用于分配的z个瘦物理重命名寄存器104的指示。类似地,重命名逻辑114(图1)还维护那些可用于分配的m个胖物理重命名寄存器106的指示。可用的瘦寄存器104被概念化为可用的瘦寄存器的“池”520,而可用的胖寄存器106被概念化为可用的胖寄存器的“池”522。对于至少一个实施例,各个池520、522被实现为FIFO(先进先出)队列。相应地,对于至少一个实施例,通过在适当的池520、522队列的头部选择寄存器来进行选择504。作为选择操作504的一部分,所选择的物理寄存器接着被从池520、522中移除。
在框506,重命名映射表102(图1)中的适当的条目槽112被修改,以生成反映在框504被选择的物理寄存器的条目208。为了这样做,作为当前指令的目的地的要被写的PR的每个位被用作索引以定位重命名映射表的对应的条目112。对于每个这样的条目,寄存器标识符被修改以指向在框504被选择的物理寄存器。并且,对于每个这样的条目,在条目208的类型字段202中输入适合的寄存器类型值(“瘦”或“胖”)。如果条目208的寄存器类型值已经被修改为“瘦”,则在该条目208的位置字段206中输入位置值。当对在当前指令中被指示为目的地的MBF的每个位都已经修改506了条目槽112中的数据之后,处理进行到框508。
在框508,当前指令120被修改以反映在框504被选择的物理寄存器。以这种方式,处理器100的执行单元(未示出)被命令将当前指令120的结果写入被重命名的物理寄存器。
返回图4,可以看出处理从框410进行到框413。在框413,确定当前指令是否包括作为源寄存器的一个或多个非MBF寄存器。(如这里所使用的,非MBF寄存器表示体系结构的寄存器,例如通用寄存器。)如果是这样,接着处理进行到框411,以便以公知的方式为在当前指令中所指示的一个(或多个)非MBF目的地寄存器的每个分配物理重命名寄存器。
如果当前指令没有指示出任何非MBF目的地寄存器,则处理在框418结束。
为了举例说明的目的,现在参照示例性的指令集来讨论方法400。示例的指令集在下面的表1中给出。
表1

在下面的讨论中,将首先参照表1的第一指令来讨论方法400。其后,将使用表1中剩下的指令作为示例性的指令流来讨论方法400。
用于对MBF的2位写访问的重命名示例表1的第一指令被用作示例,来进一步描述图4和图5中所示的方法400。这样的指令是指明对MBF两个连续位的写访问的局部位指令的示例。cmp.eq指令指示两个源寄存器r2和r3比较的结果应被写到判定寄存器(例如图1的PR 108)的两个连续位p1和p2。
一起参照图4、图5和图6,来进一步讨论与在表1中给出的被称为指令650的第一示例性指令有关的方法400。图4图示了在框403,当前指令650的诸如r2和r3的源寄存器被映射到它的物理重命名寄存器。对于执行非MBF寄存器的重命名的实施例,对非MBF寄存器的源寄存器,以公知的方式进行映射操作403。从而,由于当前指令650的并不以判定寄存器为源,所以对于表1的第一指令,在框403不涉及重命名映射表102。
方法400为源操作数p1和p2分配410瘦寄存器104。该分配410的细节可以参照图5进一步理解。
图5图示出在框502,确定对于当前指令的目的地寄存器的适合的物理寄存器大小。对于至少一个实施例,基于当前指令的指令类型来作出该确定502。如果当前指令指示出对判定寄存器的局部位写入,则确定出瘦寄存器104是适合的。另一方面,如果当前指令是指示对判定寄存器的块写入,则胖寄存器106将是适合的。(当然,如果当前指令没有指示MBF寄存器作为该指令的目的地,则408将被判断为假,并且将不对当前指令执行框410。)在表1的第一指令的情况下,判定寄存器108(图1)的两个位p1和p2将被写,所以在框502确定出瘦寄存器104是适合的。
图6图示出在框504,从瘦寄存器池520选择瘦物理重命名寄存器104。图6中图示了示例性瘦寄存器池的内容。图6图示出瘦寄存器池520包括可用于重命名的瘦物理重命名寄存器S2、S4和S0。图6图示出在框504,从池520选择第一可用瘦寄存器S2。所选择的寄存器S2被从池520中删除。
在框506中,重命名映射表102被修改。映射表102中的适合的条目被标识为与当前指令650所指示的一个(或多个)逻辑目的地寄存器有关。对于至少一个实施例,在指令650中所指示的判定位的位的位置被用作进入重命名映射表102的索引。例如,重命名映射表102的第一和第二条目可以分别对应判定位p1和p2。如此,在框506,重命名映射表102的第一和第二条目被修改。
因为当前指令650是在框504为其选择了瘦寄存器S2的局部位指令,所以重命名映射表102的第一和第二条目每个的类型字段202(图2)被修改,以指示出条目中的寄存器标识符指向瘦寄存器104(图1)。重命名映射表102的第一条目被修改以指向在框504中被选择的瘦寄存器S2。该条目的位置字段206(图2)被修改,以指示S2的y个位置中的哪个被分配给第一判定位。类似地,重命名映射表102的第二条目也被修改,以指向在框504中被选择的瘦寄存器S2。并且,第二条目的位置字段206(图2)被修改,以指示S2的y个位置中的哪个被分配给第二判定位。
作为上述处理的结果,瘦寄存器S2的左位被分配用于判定位p1的重命名,而瘦寄存器S2的右位被分配用于判定位p2的重命名。在框508,指令605被修改以反映这样的重命名分配。相应地,在框508中,当前指令650的两个判定都被所选择的瘦寄存器替换cmp.eq S2=r2,r3。
对于示例性指令序列的重命名示例表1的其余的指令被用作示例性指令流,以进一步举例说明示于图4和图5中的方法400。表1中所列的指令只是用于举例说明的目的,而不是用于将所公开的技术的可应用性限制到任何特定的指令集、指令语法或指令格式。
一起参照图4、图5、图7、图8和图9,来进一步讨论与下面的示例性指令流有关的方法4001)cmp.eq p4,p17=r2,r3;2)cmp.eq p4,p5=r3,r4;3)p17.add r2=r1,1;4)mov pr=r2,mask,和5)mov pr.rot mask。为了该举例性的讨论的目的,假定示例瘦寄存器池520包括按照如下FIFO顺序的三个瘦物理重命名寄存器S2、S4、S0。还假定胖寄存器池522包括按照如下FIFO顺序的两个物理重命名寄存器F4、F1。
对于示例指令流的指令1,判定位被指示为目的地寄存器,但是没有判定位被作为源。因此,对于示例性指令1的处理类似于上面讨论的对于表1的第一指令的处理。
在框403,逻辑源寄存器r2和r3以公知的方式被映射到标准物理重命名寄存器(未示出)。图7图示了导致的源指令的变化,其中指令被修改以反映瘦物理重命名寄存器S2。
图7图示出对于示例指令1,在瘦寄存器池520中的瘦寄存器S2被分配410给两个目的地判定位p4和p17。作为分配操作410的一部分,在框506,对应于判定位p4和p17的重命名映射表102的条目被修改。即,对应于判定位p4的重命名映射表102的条目被修改,以指示瘦物理重命名寄存器S2的左位。类似地,对应于判定位p17的重命名映射表102的条目被修改以指示瘦物理重命名寄存器S2的右位。
图7还图示了在对示例指令流中的第二指令重命名400的过程中发生的对重命名映射表102和瘦寄存器池520的改变。在框403,逻辑源寄存器r3和r4以公知的方式被映射到标准物理重命名寄存器(未示出)。图7图示了导致的源指令的变化,其中指令被修改以反映瘦物理重命名寄存器S4。
在框404,确定出第二指令对两个判定位写。因为第二指令是部分访问指令,所以在框410,瘦物理重命名寄存器104被分配。因此,在框410,瘦寄存器池中的下一个瘦寄存器S4被分配给判定位p4和p5。
作为分配操作410的一部分,在框506,与判定位p4和p5相对应的重命名映射表102的条目被修改。即,与判定位p4相对应的重命名映射表102的条目被修改,以指示瘦物理重命名寄存器S4的左位。类似地,对应于判定位p5的重命名映射表102的条目被修改以指示瘦物理重命名寄存器S4的右位。
图8图示出在执行示例指令流中的第三指令的过程中,重命名映射表102没有变化。对于该第三实施例,在框403,逻辑源寄存器p17被映射到适合的物理重命名寄存器。对于至少一个实施例,该映射403是通过修改当前指令以指示先前已经被分配410给源操作数p17的物理重命名寄存器S4来完成的。另外,以公知的方式来执行对非MBF逻辑寄存器r1的映射。
方法400在框404确定出当前指令没有指示MBF寄存器作为目的地寄存器。因此,以公知的方式为逻辑寄存器r2进行标准重命名寄存器(未示出)的分配406。然后,处理在框418结束。
图8图示出读取了对于p17的重命名映射表102的实际条目后,方法400可以确定出对于p17的实际条目的寄存器标识符字段204中的指针指示了S4的右位。相应地,图8图示出第三指令被修改406,以指示p17已经被映射到S4。尽管未在图8中示出,当前指令也可以被修改以指示被分配411给非MBF目的地寄存器r1的物理重命名寄存器。
图8还图示了在对示例指令流中的第四指令的重命名过程中,方法400引起的重命名映射表102和胖寄存器池522的改变。第四指令“movpr=r2,mask”是成块位访问指令。该指令支持对判定寄存器108(图1)的所有位或位的任何子集的成块的多个位的写。在立即值mask中被指示为“真”的那些位被写为在源操作数寄存器r2中的那个位的位置的值。为了易于描述,假定对于第四指令的立即值mask指示出判定位1、18和62将作为第四指令的结果被写。
尽管未在图8中示出,第四指令可以被修改403以指示先前被分配411给非MBF目的地源r2的物理重命名寄存器。
对于第四指令,方法400在框404确定出当前指令将MBF寄存器作为目的地来写。相应地,处理进行到框410。
在框410,物理重命名寄存器被分配给第四指令的目的地寄存器(PR)。参照图5,指示出在框502确定了适合的大小。对于第四指令,因为该指令是成块位访问指令,所以确定502胖物理重命名寄存器106是适合的。即,取决于立即值mask的值,判定寄存器108(图1)中的任何或所有位可以被写。因此,在框504,选择胖物理重命名寄存器106。
图8图示了在胖物理重命名寄存器池522中的下一个胖物理重命名寄存器106是F4。图8图示出因此在框504选择F4,并将F4从池522移除。
在框506,重命名映射表102中的适合的条目被修改,以指向所选择的胖物理重命名寄存器F4。相应地,图8图示出对于判定位1、18和82的重命名映射表102的条目被修改以指向F4。
在框508,第四指令被修改以反映逻辑判定寄存器已经被重命名到胖物理重命名寄存器F4。
图9图示了在对示例指令流中的第五指令的重命名的过程中,方法400引起的重命名映射表102和胖寄存器池522的改变。第五指令“movpr.rot=immed”是成块位访问指令。该指令支持对判定寄存器108(图1)的48个最高有效位的成块的多个位的写。在立即源操作数的位的位置i的值被覆盖到PR[i]。为了易于描述,immed字段中的值相对于图9的讨论被忽略。不论immed值如何,判定寄存器108(图1)的所有的48个最高有效位被写。
对于第五指令,方法400在框404确定出当前指令是MBF指令。因此,处理进行到框408。在框408,方法400确定出当前指令指示出源寄存器是MBF寄存器。处理接着进行到框410。
在框410,物理重命名寄存器被分配给第五指令的目的地寄存器(PR)。参照图5,指示出在框502确定了适合的大小。对于第五指令,因为该指令是成块位访问指令,所以确定502出胖物理重命名寄存器106是适合的。即,响应于第五指令,PR的所有48个最高有效位被写。相应地,在框504,选择胖物理重命名寄存器106。
图9图示出在胖寄存器池522中的下一个胖物理重命名寄存器106是F1。图9图示出因而在框504选择F1,并将F1从池522移除。
在框506,重命名映射表102中的适合的条目被修改以指向所选择的胖物理重命名寄存器F4。相应地,图8图示出对于判定位16~63的重命名映射表102的条目被修改以指向F4。为了易于描述,在图9中,以与先前图中不同的方式表示重命名映射表102的实际条目的寄存器标识符字段204中的指针值。代替绘制箭头来显示实际的条目指针指向哪个物理重命名寄存器,图9图示了被指向的物理重命名寄存器的名称。
在框508,第五指令被修改以反映逻辑判定寄存器已经被重命名到胖物理重命名寄存器F1。
前面的讨论公开了对寄存器重命名的装置和方法的经选择的实施例,对于所述寄存器,各种不同的位字段可以被访问。这里描述的方法400可以在诸如图10所示的处理系统1000的处理系统上执行。
图10图示了可以利用所公开的技术的处理系统1000的至少一个实施例。系统1000可以被用来例如执行用于重命名的方法,例如这里所描述的实施例。为了公开的目的,处理系统包括具有处理器的任何系统,所述处理器举例来说例如是数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。系统1000表示基于Itanium和ItaniumII微处理器以及Pentium、PentiumPro、PentiumII、PentiumIII、Pentium4微处理器的处理系统,所有这些都可以从Intel公司获得。也可以使用其他系统(包括具有其他微处理器的个人计算机(PC)、工程工作站、个人数字助理和其他手持设备、机顶盒等)。在一个实施例中,系统1000可以执行可从Microsoft公司获得的一个版本的WindowsTM操作系统,尽管也可以使用例如其他操作系统和图形用户界面。
参照图10,处理系统1000包括存储器系统1002和处理器1004,处理器1004包括图1所示格式的重命名映射表102、胖物理重命名寄存器106、瘦物理重命名寄存器104和重命名逻辑114。存储器系统1002可以存储用于控制处理器1004的操作的指令1010和数据1011。
存储器系统1002是用作存储器的一般化表示,可以包括各种形式的存储器,例如硬盘驱动器、CD-ROM、随机访问存储器(RAM)、动态随机访问存储器(DEAM)、静态随机访问存储器(SRAM)、闪存和相关电路。存储器系统1002可以存储可由处理器1004执行的数据信号表示的指令1010和/或数据1011。如这里所讨论的,指令1010可以包括指令束。
在前面的描述中,已经描述了用于对MBF寄存器的所有位或特定位重命名的方法和装置的各方面。为了说明的目的,特定的数字、示例、系统和配置被提出用于提供更透彻的理解。但是,对本领域的技术人员很明显,所描述的方法和装置可以不用这些具体细节而被实现。在其他情况中,公知的特征被省略或简化,以免模糊本发明的方法和装置。
虽然已经示出和描述了本发明的具体实施例,但是对本领域技术人员很明显,可以做出改变和修改而不偏离在更广范围内的本发明。例如,本领域技术人员将意识到,这里所描述的方法400可以利用多于两种大小的物理重命名寄存器。对于这样的实施例,可以利用任意数目n的物理重命名寄存器大小,其中n>0。对于这样的实施例,每个大小为n的寄存器的长度不同于其他大小的长度,并且图2所示的格式210可以被用于指明n个寄存器类型202。所附权利要求将落在本发明的真是范围内的所有这样的改变和修改包括在它们的范围之中。
权利要求
1.一种装置,包括存储结构,用于存储至少一个条目,所述至少一个条目包括寄存器标识符值;第一长度的第一物理重命名寄存器;和与所述第一长度不同的第二长度的第二物理重命名寄存器;其中,所述寄存器标识符值用于指示当前长度,其中所述当前长度是从包括所述第一长度和所述第二长度的集合中选择的。
2.如权利要求1所述的装置,其中所述第一重命名寄存器和第二重命名寄存器属于n个物理重命名寄存器,其中n>2;所述n个物理重命名寄存器的每个具有不同的长度;以及所述集合包括所述n个不同长度的每个。
3.如权利要求1所述的装置,其中所述存储结构用于存储多个条目,所述多个条目的每个包括对应的寄存器标识符值。
4.如权利要求1所述的装置,其中所述第一物理重命名寄存器是多个,即z个,所述第一长度的物理重命名寄存器中的一个。
5.如权利要求1所述的装置,其中所述第二物理重命名寄存器是多个,即m个,所述第二长度的物理重命名寄存器中的一个。
6.如权利要求4所述的装置,其中所述第二物理重命名寄存器是多个,即m个,所述第二长度的物理重命名寄存器中的一个。
7.如权利要求6所述的装置,其中z不等于m。
8.如权利要求1所述的装置,还包括逻辑寄存器;和重命名逻辑,用于将所述逻辑寄存器的实例映射到被选择的物理重命名寄存器,其中所述被选择的物理重命名寄存器是从包括所述第一物理重命名寄存器和所述第二物理重命名寄存器的多个寄存器中选择的。
9.如权利要求8所述的装置,其中所述逻辑寄存器包括n个位位置;所述n个位位置中的被选择的一个可以响应于指示了所述被选择的位的位置的指令,被单独地访问;全部n个位位置可以响应于第二指令被一起访问;以及所述重命名逻辑还响应于所述第一指令,分配所述第一物理重命名寄存器,所述重命名逻辑还响应于所述第二指令,分配所述第二物理重命名寄存器。
10.如权利要求9所述的装置,其中包括所述n位中的y个位的子集可以响应于第三指令而被访问,其中y>1;以及所述重命名逻辑还响应于所述第三指令,分配所述第一物理重命名寄存器。
11.如权利要求10所述的装置,其中所述第一物理重命名寄存器的所述长度包括y个位位置。
12.如权利要求11所述的装置,其中所述条目还包括位置标识符,所述位置标识符指示所述第一物理重命名寄存器的所述y个位位置中的被选择的一个。
13.如权利要求12所述的装置,其中所述第一物理重命名寄存器的所述y个位位置中的所述被选择的一个对应于由所述第一指令所指示的所述被选择的位的位置。
14.一种方法,包括确定当前指令是否指示了具有n个位位置的多位字段寄存器,其中n>1;其中所述多位字段寄存器将按照多个访问类型中的任何一个被写,所述多个访问类型包括1个位位置的局部位的写;x个位位置的成块位的写,其中1<x≤n;为所述目的地寄存器分配物理重命名寄存器;其中所述分配步骤还包括如果所述当前指令指示局部位的写,则分配第一长度的物理重命名寄存器,以及还包括如果所述当前指令指示成块位的写,则分配第二长度的物理重命名寄存器。
15.如权利要求14所述的方法,其中所述分配步骤还包括修改重命名映射表,以指示所述被分配的物理重命名寄存器。
16.如权利要求14所述的方法,其中所述多个访问类型还包括y个位位置的局部位的写,其中1<y<x。
17.如权利要求14所述的方法,其中所述y个位位置是相连的。
18.如权利要求14所述的方法,其中所述x个位位置是相连的。
19.如权利要求14所述的方法,其中所述多个访问类型包括全部n个位位置的成块位的写。
20.如权利要求16所述的方法,其中y=2。
21.如权利要求16所述的方法,其中y=4。
22.如权利要求14所述的方法,还包括修改所述当前指令,以指示代替所述多位字段寄存器的所述被分配的物理重命名寄存器。
全文摘要
本发明提供了用于具有多位字段的寄存器的重命名的装置和方法,寄存器是逻辑寄存器,例如为判定寄存器,对其允许变长度的位访问。重命名逻辑支持用于对寄存器位的局部位访问和成块位访问二者的重命名。重命名逻辑使用与要被重命名的逻辑寄存器相关联的重命名映射表,并且还包括多个物理重命名寄存器。物理重命名寄存器包括一组要被用于对局部位的写进行重命名的瘦物理重命名寄存器。物理重命名寄存器还包括一组要被用于对成块位的写进行重命名的胖物理重命名寄存器。还可以使用另外大小的物理重命名寄存器。单个物理重命名映射表的条目可以指向胖物理重命名寄存器或瘦物理重命名寄存器。
文档编号G06F9/30GK1581069SQ200410070458
公开日2005年2月16日 申请日期2004年8月2日 优先权日2003年7月31日
发明者杰弗里·P·鲁佩莱二世, 爱德华·A·布雷克尔鲍姆, 布赖恩·P·布莱克 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1