基于多核块的指令集架构中的寄存器重命名的制作方法

文档序号:11333680阅读:226来源:国知局
基于多核块的指令集架构中的寄存器重命名的制造方法与工艺

本文所揭示的方面大体上涉及将架构寄存器映射到物理寄存器,且明确地说,涉及在基于块的指令集架构的环境中,将架构寄存器映射到物理寄存器。



背景技术:

计算机程序表示作为指令序列的算法。序列的次序称为程序次序。通常,在编程器可理解的源代码中表示的计算机程序中的指令通过编译器重组成由处理单元可执行的机器代码。随着消费者为越来越多的应用程序提供了市场,电子行业一直致力于提高处理单元的速度。

同时执行多个指令(即,并行处理)的能力是提高处理单元的速度的一种方法。在并行处理中,处理单元包含多个执行单元。超长指令字(vliw)是呈现用以并行处理的一种方法的处理器架构设计。在vliw架构中,将指令分组成集束。通常,所述集束内的指令是彼此独立的。另外,vliw架构经配置以使得通常获取并调度所述集束中的指令来作为一个单元执行。在用以并行处理的另一种方法中,执行单元响应于指令所需的所有操作数已由执行单元接收而执行指令块。因为使用此方法,有可能在第二执行单元执行第二指令之前,第一执行单元执行第一指令,即使第一指令在程序次序中的位置晚于第二指令,所以此处理单元可称为乱序(ooo)处理单元。

基于块的指令集架构可经配置以结合根据基于块的微架构而配置的ooo处理单元来操作。在基于块的指令集架构中,计算机程序中的指令可被指派给还可称为块的群组。在基于块的微架构中,计算机处理单元的计算机处理器核心可经配置以执行作为一个单元的指令块。

然而,因为计算机程序通常包含第一指令(即,生产指令)的结果是第二指令(即,消费指令)的操作数的情形,所以ooo处理单元的实施方案需要考虑消费指令的操作数取决于生产指令的情形。当消费指令等待生产指令使其结果可用于消费指令时出现的延迟(即,等待时间)可渐渐损害并行处理的优点。



技术实现要素:

示范性方面可针对一种用于将架构寄存器映射到物理寄存器的设备。所述设备可包含存储器和控制电路。所述存储器可经配置以存储核内寄存器重命名映射表和核间寄存器重命名映射表。所述核内寄存器重命名映射表可经配置以将架构寄存器映射到多核处理器的核心的物理寄存器。所述核间寄存器重命名映射表可经配置以响应于确定物理寄存器是对已由第一核心执行、正在第一核心上执行,或预期在第一核心上执行的架构寄存器的最近写入的位置,使所述架构寄存器与第一核心的识别有关,所述最近写入是根据程序次序。所述控制电路可经配置以维持所述核内寄存器重命名映射表和所述核间寄存器重命名映射表。

另一示范性方面可针对用于将架构寄存器映射到物理寄存器的另一设备。所述另一设备可包含:用于将架构寄存器映射到多核处理器的核心的物理寄存器的装置;以及用于响应于确定物理寄存器是对已由所述核心执行、正在所述核心上执行,或预期在所述核心上执行的架构寄存器的最近写入的位置而使架构寄存器与所述核心的识别有关的装置,所述最近写入是根据程序次序。

又一示范性方面可针对一种用于在多核处理器上执行读取指令的方法。可参考第一指令块的核内寄存器重命名映射表来确定多核处理器的第一核心的物理寄存器是否为已由所述第一核心执行的向架构寄存器的最近写入的位置,所述最近写入是根据程序次序。可参考所述第一核心的核间寄存器重命名映射表来确定多核处理器的第二核心是否包含物理寄存器,其为对已由第二核心执行、正在第二核心上执行,或预期在第二核心上执行的架构寄存器的最近写入的位置。可响应于所述第二核心包含作为向架构寄存器的最近写入的位置的物理寄存器,从第二核心的物理寄存器读取值。

又另一示范性方面可针对一种用于在基于块的处理器核心上执行写入指令的方法。可将值写入到基于块的处理器核心的物理寄存器,其对应于架构寄存器。所述写入指令可为第一指令块的指令。可确定包含用于架构寄存器的后续写入指令的第二指令块。可确定第一指令块与第二指令块之间的中间指令块。所述物理寄存器的识别可记录在与所述中间指令块相关联的核内寄存器重命名映射表的记录的第一字段中。可将记录的第二字段的值设定成指示物理寄存器是已由基于块的处理器核心执行的对架构寄存器的最近写入的位置,所述最近写入是根据程序次序。

附图说明

在详细描述、所附权利要求书和附图中描述这些和其它样本方面。

图1是说明其中可操作基于块的计算机处理单元的系统的实例的框图。

图2是说明基于块的计算机处理器核心的实例的框图。

图3是说明一组保留站阵列的实例的框图。

图4到9是说明在图1中说明的基于块的计算机处理器核心上以一序列时间周期执行的指令块的实例的图。

图10是说明指令块和相关联的核内寄存器重命名映射表的实例的图。

图11是说明核内寄存器重命名映射表的实例的图。

图12是说明产生图11中说明的核内寄存器重命名映射表的过程的一部分的实例的图。

图13是说明指令块和相关联的实时写入掩码的实例的图。

图14是说明指令块和相关联的核间寄存器重命名映射表的实例的图。

图15是说明核间寄存器重命名映射表的实例的图。

图16和17是说明产生图15中说明的核间寄存器重命名映射表的过程的实例的图。

图18是说明指令块和相关联的核间写入图的实例的图。

图19是说明产生核间写入掩码的过程的实例的图。

图20是说明产生与将在后续执行阶段在基于块的计算机处理器核心上执行的初始指令块相关联的输出核内寄存器重命名映射表的经更改过程的一部分的实例的图。

图21是用于将架构寄存器映射到物理寄存器的设备的框图。

图22到24是说明用于在多核处理器上执行读取指令的方法的实例的流程图。

图25是说明用于在基于块的处理器核心上执行写入指令的方法的实例的流程图。

图26是说明用于确定图25中参考的第一指令块与第二指令块之间的中间指令块的方法的实例的流程图。

根据惯例,图式中所说明的各种特征可能并非按比例绘制。因此,为了清晰起见,可任意扩大或减小各种特征的尺寸。另外,为了清楚起见,可简化图式中所说明的实施方案。因此,图式可能并未说明给定设备或装置的全部组件。最后,可贯穿说明书和图式使用相同参考标号来表示相同特征。

具体实施方式

本文所揭示的方面大体上涉及将架构寄存器映射到物理寄存器,且明确地说,涉及在基于块的指令集架构的环境中,将架构寄存器映射到物理寄存器。

基于块的指令集架构可经配置以通过根据基于块的微架构配置的乱序(ooo)计算机处理单元操作。在基于块的指令集架构中,计算机程序中的指令可被指派给还可称为块的群组。显式数据图执行(edge)指令集架构可为基于块的指令集架构的实例。在基于块的微架构中,计算机处理单元的计算机处理器核心可经配置以执行作为一个单元的指令块。

基于块的计算机处理器核心可包含多个执行单元。执行单元响应于指令所需的所有操作数均已由执行单元接收而执行所述指令块的指令。有可能在第二执行单元可执行第二指令之前,第一执行单元可执行第一指令,即使第一指令在程序次序中的位置晚于第二指令。

然而,一般来说,基于块的计算机处理单元可经配置,使得在第一指令块在程序次序中的位置早于第二指令块的情况下,在第二指令块的指令开始执行之前,第一指令块的指令开始执行。

指令块中的指令数可处于一到最大数目(包含一和所述最大数目)的范围内。可相对于计算机处理器核心的微架构来定义所述最大数目。举例来说,所述最大数目可等于计算机处理器核心的保留站阵列中的保留站的数目。举例来说,但不作为限制,如果计算机处理器核心的保留站阵列具有32个保留站,那么指令块中的指令数目可限制于最大数目32。

一般来说,编译器可经配置以根据指令的程序次序将指令指派给指令块。然而,编译器还可经配置以识别或预测指令之间的依赖性并且优选地将指令指派给指令块,使得相依指令被指派给相同指令块。

指令块可包含块标头。块标头可至少用于识别一个指令块的指令,且将此指令块与其它指令块区分开。在一方面,块标头可包含用于识别指令块中的若干指令的信息。

通常,计算机程序可包含源代码中的指令序列,其中第一指令(即,原因指令)经配置以确定条件的有效性,且第二指令(即,生效指令)经配置以基于原因指令(例如,分支化指令(例如,如果x为真,那么y))的结果而执行。此外,有时可存在两个生效指令,其经配置以使得:第一生效指令(即,有效条件指令)经配置以在原因指令的结果指示条件有效的情况下执行;第二生效指令(即,无效条件指令)经配置以在原因指令的结果指示条件无效(例如如果x为真,那么y,否则z)的情况下执行。

然而,在基于块的计算机处理器核心中,可在执行原因指令之前(即,在已确定条件的有效性之前)执行至少一个生效指令。

因为原因指令和生效指令两者可被指派给相同指令块,所以可配置基于块的计算机处理器核心,使得给定指令块的指令的结果是推测性结果,直到基于块的计算机处理器核心确定哪些推测性结果是可靠结果为止。推测性结果可存储在缓冲存储器中。使基于块的计算机处理器核心确定给定指令块的哪些推测性结果是可信结果的过程可称为使指令块交付于可信结果。

举例来说,如果在执行原因指令之前(即,在已确定条件的有效性之前)执行至少一个有效条件指令,那么此生效指令的推测性结果可存储在缓冲存储器中。在所述原因指令执行以确定条件的有效性之后,基于块的计算机处理器核心可确定有效条件指令的推测性结果是否为可信结果。如果所述原因指令的结果指示条件有效,那么基于块的计算机处理器核心可交付于有效条件指令的结果。或者,举例来说,如果在执行原因指令之前(即,在已确定条件的有效性之前)执行至少一个无效条件指令,那么此生效指令的推测性结果可存储在缓冲存储器中。在所述原因指令执行以确定条件的无效性之后,基于块的计算机处理器核心可确定无效条件指令的推测性结果是否为可信结果。如果原因指令的结果指示条件无效,那么基于块的计算机处理器核心可交付于无效条件指令的结果。尽管通常不是这样的情形,但可能存在在执行原因指令之前(即,在已确定所述条件的有效性或无效性之前),执行至少一个有效条件指令和至少一个无效条件指令两者的情况。在此情况下,这些生效指令的推测性结果可存储在缓冲存储器中。在原因指令执行以确定条件的有效性或无效性之后,基于块的计算机处理器核心可确定有效条件指令的推测性结果是否为可信结果,或无效条件指令的推测性结果是否为可信结果。如果原因指令的结果指示条件有效,那么基于块的计算机处理器核心可交付于有效条件指令的结果;如果原因指令的结果指示条件无效,那么基于块的计算机处理器核心可交付于无效条件指令的结果。

在一方面,基于块的计算机处理器核心可经配置以响应于指令块的指令的执行处于特定状态而使指令块交付。在一方面,指令块可响应于以下各项中的至少一者的完成而交付:(1)指令块中将信息写入到架构寄存器的指令,(2)指令块中将信息存储在存储器中的指令,或(3)指令块中分支到另一指令块的指令。在一方面,块标头可包含用来识别架构寄存器中的哪些是对应指令块的写入指令的目标的信息,所述指令块预期在基于块的计算机处理器核心上执行。在一方面,块标头可包含用来执行指令块的指令中的哪些预期将信息存储在存储器中(即,存储指令)的信息。在一方中,块标头中用来识别存储指令的信息可以对存储指令中指示次序的识别的参考作索引,所述次序是根据其中可执行存储指令的程序次序。

如上文所描述,可配置基于块的计算机处理器核心,使得在执行原因指令之前执行至少一个生效指令。另外,可配置基于块的架构,使得原因指令的结果可为生效指令的操作数。换句话说,原因指令可为生产指令,且生效指令可为消费指令。在此情况下,此操作数可称为预测。因为可配置基于块的架构,使得直到指令所需的所有操作数已由执行单元接收才通过执行单元执行指令,所以使原因指令的结果作为生效指令的操作数可有利地防止基于块的计算机处理器核心不必要地执行生效指令。防止基于块的计算机处理器核心不必要地执行生效指令可有利地减少基于块的计算机处理器核心所消耗的电量。

举例来说,可配置基于块的架构,使得如果原因指令的结果指示条件有效,那么此结果可为有效条件指令的预测操作数,使得有效条件指令的执行单元可经配置以执行有效条件指令;然而,此结果将不是无效条件指令的预测操作数,使得可防止无效条件指令的执行单元不必要地执行无效条件指令。同样,举例来说,如果原因指令的结果指示条件无效,那么此结果可为无效条件指令的预测操作数,使得无效条件指令的执行单元可经配置以执行有效条件指令;然而,此结果将不是有效条件指令的预测操作数,使得可防止有效条件指令的执行单元不必要地执行有效条件指令。

如上所述,原因指令和生效指令两者可被指派给相同指令块。另外,原因指令以及生效指令中的至少一者可被指派给不同指令块。因为原因指令以及生效指令中的至少一者可被指派给不同指令块,所以基于块的计算机处理器核心可经配置以包含块预测器。块预测器可经配置以预测计算机程序中包含的指令块之中的哪个指令块包含可能基于当前指令块中包含的原因指令的结果而执行的生效指令中的至少一者。在一个方面中,块预测器可使用当前指令块的块标头中的信息来预测计算机程序中包含的指令块之中的哪个指令块包含可能基于当前指令块中包含的原因指令的结果而执行的生效指令中的至少一者。在一个方面,可在已获取当前指令块的块标头之后,但在当前指令块的指令开始执行之前作出此预测。在一个方面,由于此预测,在当前指令块的指令开始执行之后,但在当前指令块的指令完成执行之前,可获取指令块的块标头,所述指令块包含可能将基于原因指令的结果而执行的生效指令中的所预测至少一者。在一个方面,由于此预测,在当前指令块的指令开始执行之后,但在当前指令块的指令完成执行之前,包含可能将基于原因指令的结果而执行的生效指令中的所预测至少一者的指令块的指令可开始执行。

在一个方面,块预测器可经配置以通过与常规ooo计算机处理单元中的分支预测器类似的方式预测执行路径。在一个方面,基于块的计算机处理单元的编译器可经配置以执行数据流测试指令,以将分支化指令转换成预测的有向非循环图(dag)。在一个方面,块预测器可经配置以将预测存储在预测表中,并且跨越基于块的计算机处理器核心分配这些预测表的至少若干部分。在一个方面,块预测器可经配置以产生关于预测的置信度的信息。在一个方面,块预测器可经配置以在基于由预测确定的执行路径、先前执行的指令块的历史或两者而执行当前指令块之后预测待执行的下一指令块。

图1是说明其中可操作基于块的计算机处理单元102的系统100的实例的框图。系统100可包含(举例来说,但不作为限制)至少一个基于块的计算机处理单元102、系统总线104、至少一个存储器系统106、至少一个网络接口模块108、至少一个输入模块110以及至少一个输出模块112。

至少一个基于块的计算机处理单元102可包含至少一个基于块的计算机处理器核心114、二级(l2)高速缓冲存储器116,以及任选地,核心互连网络118。举例来说,但不作为限制,图1中说明八个基于块的计算机处理器核心114-a、114-b、114-c、114-d、114-e、114-f、114-g和114-h。至少一个基于块的计算机处理器核心114可经配置以存取l2高速缓冲存储器116以接收待执行的至少一个指令块,存储至少一个指令块的执行的结果,或这两者。

在其中基于块的计算机处理单元102包含多个基于块的计算机处理器核心114的方面中,核心互连网络118可用于促进基于块的计算机处理器核心114之间的通信。举例来说,基于块的计算机处理单元102可经配置以经由核心互连网络118,致使至少一个基于块的计算机处理器核心114经配置以独立地操作,经配置以结合至少一个基于块的计算机处理器核心114中的至少另一者操作,或前述内容的组合。当基于块的计算机处理单元102经配置以致使至少一个基于块的计算机处理器核心114结合至少一个其它基于块的计算机处理器核心114操作时,此配置可被称作核心合成或核心融合。

举例来说,为了以并行方式在例如可通过图形处理单元(gpu)或数字信号处理器(dsp)完成的多线程部分上执行应用程序,基于块的计算机处理单元102可配置至少一个基于块的计算机处理器核心114,以在多线程部分中的一者上独立地操作,且配置至少另一个基于块的计算机处理器核心114,以在多线程部分中的至少另一者上操作。举例来说,为了在例如可通过中央处理单元(cpu)完成的单一线程上有效地执行应用程序,基于块的计算机处理单元102可配置一个基于块的计算机处理器核心114以结合至少另一个基于块的计算机处理器核心114操作。举例来说,但不作为限制,图1说明一种配置,其中:(1)基于块的计算机处理器核心114-a、114-b、114-e和114-f中的每一者经配置以与计算机处理器核心114-a、114-b、114-e和114-f彼此结合操作作为第一核心合成120;(2)基于块的计算机处理器核心114-c经配置以结合基于块的计算机处理器核心114-d操作作为第二核心合成122;(3)基于块的计算机处理器核心114-g经配置以独立地操作;以及(4)基于块的计算机处理器核心114-h经配置以独立地操作。第一核心合成120可经配置以执行第一应用程序。第二核心合成122可经配置以执行第二应用程序。基于块的计算机处理器核心114-g可经配置以执行第三应用程序的第一线程,并且基于块的计算机处理器核心114-h可经配置以执行第三应用程序的第二线程。或者,基于块的计算机处理器核心114-g可经配置以执行第三应用程序,并且基于块的计算机处理器核心114-h可经配置以执行第四应用程序。

至少一个基于块的计算机处理单元102可耦合到系统总线104,并且经由系统总线104通过交换地址、控制和数据信息与系统100的其它装置通信。

至少一个存储器系统106可包含至少一个存储器控制器124以及至少一个存储器单元126。存储器系统106可耦合到系统总线104。至少一个存储器单元126可包含(举例来说,但不作为限制)随机存取存储器(ram)单元。

至少一个网络接口模块108可包含经配置以促进去往和来自网络128的数据的交换的硬件、软件或两者的组合。至少一个网络接口模块108可经配置支持至少一个通信协议。至少一个网络接口模块108可耦合到系统总线104。网络128可为任何类型的网络,包含但不限于,有线或无线网络、公共或专用网络、个域网(pan)、局域网(lan)、广局域网(wlan)以及因特网。

至少一个输入模块110可包含(举例来说,但不作为限制)用户接口、图形用户接口、键盘、指向装置(例如鼠标)、触摸垫、触摸屏、开关、按钮、话音处理器等,或前述各项的任何组合。至少一个输入模块110可耦合到系统总线104。

至少一个输出模块112可包含(举例来说,但不作为限制)打印机、显示器、音频输出装置、图形输出装置、视频输出装置、另一视觉指示器等,或前述各项的任何组合。至少一个输出模块112可耦合到系统总线104。在一个方面,至少一个输出模块112可包含至少一个显示器130。至少一个显示器130可包含但不限于,阴极射线管、液晶显示器、等离子显示器、发光二极管显示器、有机发光二极管显示器等,或前述各项的任何组合。系统100可进一步包含经配置以经由系统总线104从至少一个基于块的计算机处理单元102接收控制信息的至少一个显示控制器132。至少一个显示控制器132可经配置以经由至少一个视频处理器134将信息发送到至少一个显示器130。至少一个视频处理器134可经配置以从至少一个显示控制器132接收信息,处理信息使得所述信息具有与至少一个显示器130兼容的形式,且将经处理信息发送到至少一个显示器130。

系统100可并入(举例来说,但不作为限制)到机顶盒、娱乐单元、导航装置、通信装置、固定位置数据单元、移动位置数据单元、移动电话、蜂窝电话、智能手机、计算机、桌上型计算机、便携式计算机、膝上型计算机、平板计算机、个人数字助理(pda)、监视器、计算机监视器电视机、调谐器、无线电、卫星无线电、音乐播放器、数字音乐播放器、便携式音乐播放器、视频播放器、数字视频播放器、便携式数字视频播放器、数字视频光盘(dvd)播放器、其类似者,或前述内容的任何组合中。

图2是说明基于块的计算机处理器核心114的实例的框图。基于块的计算机处理器核心114可经配置以耦合到l2高速缓冲存储器116。基于块的计算机处理器核心114可经配置以存取l2高速缓冲存储器116以接收待执行的至少一个指令块,存储至少一个指令块的执行的结果,或这两者。任选地,基于块的计算机处理器核心114可经配置以耦合到核心互连网络118。在其中基于块的计算机处理单元102包含多个基于块的计算机处理器核心114的方面中,核心互连网络118可用于促进基于块的计算机处理器核心114之间的通信。

基于块的计算机处理器核心114可包含若干已知数字逻辑元件、半导体电路、处理核心、其它元件等中的任一者,或其任何组合。本文中所描述的方面并不限于任何特定元件布置,且所揭示的技术可在半导体裸片或封装上以各种结构或布局实现。

基于块的计算机处理器核心114可包含(举例来说,但不作为限制)一级(l1)指令高速缓冲存储器202、块预测器204、块定序器206、至少一个指令解码级208、指令处理电路210、至少一个执行单元212、加载/存储单元214、一级(l1)数据高速缓冲存储器216,以及寄存器单元218。举例来说,但不作为限制,指令处理电路210可包含指令缓冲器220和指令调度器222。在其中基于块的计算机处理单元102包含多个基于块的计算机处理器核心114的方面中,基于块的计算机处理器核心114可包含核心组合接口224。举例来说,但不作为限制,核心组合接口224可包含在寄存器单元218中。

l1指令高速缓冲存储器202可经配置以从l2高速缓冲存储器116接收指令块226。l1指令高速缓冲存储器202可经配置以将信息传输到l2高速缓冲存储器116。l1指令高速缓冲存储器202可经配置以存储指令块226。l1指令高速缓冲存储器202可经配置以将关于指令块226的信息传输到块定序器206。l1指令高速缓冲存储器202可经配置以将指令块226传输到至少一个指令解码级208。举例来说,l1指令高速缓冲存储器202可经配置以从l2高速缓冲存储器116接收指令块226-a到226-n。

块预测器204可经配置以在执行当前指令块226之后预测待执行的下一指令块226。在一方面,块预测器204可经配置以通过与常规ooo计算机处理单元中的分支预测器类似的方式预测执行路径。在一方面,块预测器204可经配置以在基于由通过执行数据流测试指令以将分支化指令转换成有向非循环图(dag)所产生的预测确定的执行路径、先前执行的指令块226的历史或两者而执行当前指令块226之后预测待执行的下一指令块226。块预测器204可经配置以从块定序器206接收关于指令块226的信息。块预测器204可经配置以将关于预测的信息传输到块定序器206。在当前指令块226中,响应于到实际下一指令块226的分支指令的执行,可将实际下一指令块226与所预测的下一指令块226进行比较。

块定序器206可经配置以从l1指令高速缓冲存储器202接收关于指令块226的信息,且从块预测器204接收关于预测的信息。块定序器206可经配置以维持指令块226的次序。块定序器206可经配置以一次获取指令块226的若干位。位的数目可在从一到最大数目(包含一和最大数目)的范围内。所述最大数目可例如为指令块226的块标头中的位数。举例来说,且不作为限制,块标头中的位数可为128。因为块定序器206可获取的位的数目可大于指令块226的单个指令中的位的数目,所以块定序器206可经配置以在指令的获取集束中获取指令块226中的指令。指令的获取集束可为指令块226的指令的子集。举例来说,且不作为限制,指令块226的单个指令中的位的数目可为32。举例来说,且不作为限制,因为块定序器206可经配置以一次获取最大数目的位,其可为128,且因为指令块226的单个指令中的位数可为32,所以块定序器206可经配置以一次获取指令块226的指令的获取集束,其中指令的所述获取集束中的指令的数目可在从一到四(包含一和四)的范围内。(举例来说,且不作为限制,如果指令块226中的指令的数目为32,那么指令块226可包含指令的八个获取集束)。在其中基于块的计算机处理单元102包含多个基于块的计算机处理器核心114的方面中,块定序器206可经配置以与核心组合接口224交换信息。

至少一个指令解码级208可经配置以从l1指令高速缓冲存储器202接收指令块226。至少一个指令解码级208可经配置以对指令块226中的指令进行解码。举例来说,至少一个指令解码级208可经配置以对指令块226-a到226-n中的指令进行解码。至少一个指令解码级208可经配置以将指令块226中的指令传输到指令处理电路210。

指令处理电路210的指令缓冲器220可经配置以从至少一个指令解码级208接收指令块226。指令缓冲器220可经配置以在预期执行指令块226的指令时存储所述指令。

指令处理电路210的指令调度器222可经配置以将已开始执行指令的过程的指令块226中的指令传输到至少一个执行单元212。可同时由单个基于块的计算机处理器核心114执行的指令块226的数目可处于从一到最大数目(包含一和最大数目)的范围内。可相对于计算机处理器核心114的微架构来定义所述最大数目。举例来说,可同时执行的指令块226的最大数目可等于计算机处理器核心114的集合302(见图3)的保留站306的阵列304的数目。举例来说,但不作为限制,如果计算机处理器核心114具有四个保留站阵列,那么可同时执行的指令块226的最大数目可限制于四个指令块226。举例来说,但不作为限制,如果可同时执行的指令块226的最大数目限于四个指令块,那么指令块226-a、226-b、226-c(未示出),以及226-d(未示出)可同时在执行指令的进程中。

至少一个执行单元212可经配置以接收来自指令调度器222的指令。执行单元212可经配置以从以下各项中的至少一者接收操作数:(1)经由指令调度器222的另一指令的结果,(2)寄存器单元218的寄存器,或(3)经由加载/存储单元214的至少一个存储器单元126。执行单元212可经配置以响应于指令所需的所有操作数已由执行单元212接收而执行从指令调度器222接收的指令。执行单元212可经配置以将指令的结果传输到以下各项中的至少一者:(1)经由指令调度器222的另一指令,(2)寄存器单元218的寄存器,或(3)经由加载/存储单元214的至少一个存储器单元126。举例来说,但不作为限制,执行单元212可包含算术逻辑单元(alu)或浮点单元(fpu)中的至少一者。

加载/存储单元214可经配置以从至少一个执行单元212接收数据。加载/存储单元214可经配置以经由l2高速缓冲存储器116和l1数据高速缓冲存储器216从至少一个存储器单元126接收数据。加载/存储单元214可经配置以将数据传输到至少一个执行单元212。加载/存储单元214可经配置以经由l1数据高速缓冲存储器216和l2高速缓冲存储器116将数据传输到至少一个存储器单元126。

l1数据高速缓冲存储器216可经配置以从加载/存储单元214接收数据。l1数据高速缓冲存储器216可经配置以从l2高速缓冲存储器116接收数据。l1数据高速缓冲存储器216可经配置以存储数据。l1数据高速缓冲存储器216可经配置以将数据传输到加载/存储单元214。l1数据高速缓冲存储器216可经配置以将数据传输到l2高速缓冲存储器116。

寄存器单元218可包含物理寄存器堆。寄存器单元218可经配置以从至少一个执行单元212接收数据。寄存器单元218可经配置以存储数据。寄存器单元218可经配置以将数据传输到至少一个执行单元212。举例来说,但不作为限制,寄存器单元218可包含随机存取存储器(ram)单元,例如,可具有至少一个专用读取端口和至少一个专用写入端口的快速静态ram单元。举例来说,但不作为限制,寄存器单元218可包含128个物理寄存器。

在其中基于块的计算机处理单元102包含多个基于块的计算机处理器核心114的方面中,核心组合接口224可经配置以与块定序器交换信息,且与核心互连网络118交换信息以促进基于块的计算机处理器核心114之间的通信。

图3是说明保留站306的阵列304的集合302的实例的框图。举例来说,保留站306的阵列304的集合302可包含在指令调度器222(见图2)中。保留站306的阵列304的集合302可包含至少一个阵列304。举例来说,但不作为限制,图3中说明阵列304-a、304-b、304-c和304-d。每一阵列304可包含至少一个保留站306。举例来说,图3中的阵列304-a中说明n个保留站306-a、306-b、...、306-n。举例来说,但不作为限制,n可为32。每一保留站306可耦合到优先权编码器308(或仲裁器)。优先权编码器308(或仲裁器)可经配置以将存储在已接收到指令所需的所有操作数的保留站306中的每一指令坐标投送到至少一个执行单元212(见图2)。或者,并非使每一保留站306耦合到优先权编码器308(或仲裁器),而是每一保留站306可耦合到至少一个执行单元212中的对应一者。

基于块的指令集架构可定义将在计算机程序的执行期间使用的一组架构寄存器。具有由指令集架构定义的所述组架构寄存器可允许计算机程序经编译来参考架构寄存器而不是参考寄存器单元218(见图2)的物理寄存器来执行指令。与寄存器单元218相关联的控制电路可维持至少一个寄存器重命名映射表,以将计算机程序的指令所参考的每一架构寄存器映射到寄存器单元218的对应物理寄存器。然而,如上文所描述,在基于块的指令集架构中:(1)可将计算机程序中的指令指派给块,(2)单个基于块的计算机处理器核心114(见图1和2)可同时执行若干指令块226(见图2),且(3)所述基于块的计算机处理单元102(见图1)可经配置以致使至少一个基于块的计算机处理器核心114结合所述至少一个基于块的计算机处理器核心114中的至少另一者操作,作为核心组合。指令跨指令块226的分布以及指令块226在基于块的计算机处理器核心114之间的分布可使将架构寄存器映射到物理寄存器的努力复杂,至少因为架构寄存器是针对计算机程序的所有指令定义的,而物理寄存器驻存于基于块的计算机处理器核心114中的每一者的寄存器单元218内。

此外,基于块的指令集架构可经配置以使得第一指令块226的消费指令通过从第二指令226块的生产指令已向其写入生产指令的结果的架构寄存器读取来接收运算数。类似地,第一指令块226的生产指令通过向第三指令块226的消费指令从其读取生产指令的结果作为消费指令的运算数的架构寄存器写入,来传输生产指令的结果。换句话说,基于块的指令集架构可经配置以使用架构寄存器来在不同指令块226的指令之间传送操作数和结果。

图4到9是说明在基于块的计算机处理器核心114上以一序列时间周期执行的指令块226的实例的图。举例来说,但不作为限制,图4到9中说明的基于块的计算机处理器核心114可包含图3中说明的保留站306的阵列304的集合302:阵列304-a、304-b、304-c和304-d。如上文所描述,包含于计算机程序中的指令块226之中的可由单个基于块的计算机处理器核心114同时执行的指令块226(见图2)的数目可等于计算机处理器核心114的保留站306的阵列304的数目。因此,图4到9中说明的基于块的计算机处理器核心114可同时执行四个指令块226。如果计算机程序中的指令块226的数目大于可(由单个基于块的计算机处理器核心114,或由若干基于块的计算机处理器核心114,如果基于块的计算机处理单元102(见图1)已致使所述基于块的计算机处理器核心114中的若干者作为核心组合来操作)同时执行的指令块226的数目,那么可在执行阶段执行计算机程序中的指令块226。

图4说明在时间t=0时的基于块的计算机处理器核心114。在时间t=0,块定序器206可获取包含于计算机程序中的指令块226(见图2)之中的第一指令块404的块标头402。块预测器204(见图2)可使用块标头402中的信息来预测包含于计算机程序中的指令块226之中的哪一指令块226包含可能将基于包含于第一指令块404中的原因指令的结果而执行的至少一个生效指令。举例来说,块预测器204可预测第二指令块502(见图5)包含可能将基于包含于第一指令块404中的原因指令的结果而执行的至少一个生效指令。

图5说明在时间t=1时的基于块的计算机处理器核心114。在时间t=1,块定序器206可获取第二指令块502的块标头504。块预测器204(见图2)可使用块标头504中的信息来预测包含于计算机程序中的指令块226(见图2)之中的哪一指令块226包含可能基于包含于第二指令块502中的原因指令的结果而执行的至少一个生效指令。举例来说,块预测器204可预测第三指令块602(见图6)包含可能将基于包含于第二指令块502中的原因指令的结果而执行的至少一个生效指令。至少一个指令解码级208可获取并解码第一指令块404的第一指令集束506。因为阵列304中的一者可用于支持第一指令块404的执行,所以可将第一指令块404的第一指令集束506传达给可用阵列304中的一者,例如传达给阵列304-a,以开始执行。

图6说明在时间t=2时的基于块的计算机处理器核心114。在时间t=2,块定序器206可获取第三指令块602的块标头604。块预测器204(见图2)可使用块标头604中的信息来预测包含于计算机程序中的指令块226(见图2)之中的哪一指令块226包含可能基于包含于第三指令块602中的原因指令的结果而执行的至少一个生效指令。举例来说,块预测器204可预测第四指令块702(见图7)包含可能将基于包含于第三指令块602中的原因指令的结果而执行的至少一个生效指令。至少一个指令解码级208可获取并解码第一指令块404的第二获取指令集束606,其可传达给阵列304-a以开始执行。至少一个指令解码级208还可获取并解码第二指令块502的第一获取指令集束608。因为阵列304中的一者可用于支持第二指令块502的执行,所以可将第二指令块502的第一获取指令集束608传达给可用阵列304中的一者,例如传达给阵列304-b,以开始执行。

图7说明在时间t=3时的基于块的计算机处理器核心114。在时间t=3,块定序器206可获取第四指令块702的块标头704。块预测器204(见图2)可使用块标头704中的信息来预测包含于计算机程序中的指令块226(见图2)之中的哪一指令块226包含可能基于包含于第四指令块702中的原因指令的结果而执行的至少一个生效指令。举例来说,块预测器204可预测第五指令块802(见图8)包含可能将基于包含于第四指令块702中的原因指令的结果而执行的至少一个生效指令。至少一个指令解码级208可获取并解码第一指令块404的第三获取指令集束706,其可传达给阵列304-a以开始执行。至少一个指令解码级208还可获取并解码第二指令块502的第二获取指令集束708,其可传达给阵列304-b以开始执行。至少一个指令解码级208还可获取并解码第三指令块602的第一获取指令集束710。因为阵列304中的一者可用于支持第三指令块602的执行,所以块定序器206还可获取第三指令块602的第一获取指令集束710,第三指令块602的第一获取指令集束710可传达给可用阵列304中的一者,例如传达给阵列304-c,以开始执行。

图8说明在时间t=4时的基于块的计算机处理器核心114。在时间t=4,块定序器206可获取第五指令块802的块标头804。块预测器204(见图2)可使用块标头804中的信息来预测包含于计算机程序中的指令块226(见图2)之中的哪一指令块226包含可能基于包含于第五指令块802中的原因指令的结果而执行的至少一个生效指令。举例来说,块预测器204可预测第六指令块902(见图9)包含可能将基于包含于第五指令块802中的原因指令的结果而执行的至少一个生效指令。至少一个指令解码级208可获取并解码第一指令块404的第四获取指令集束806,其可传达给阵列304-a以开始执行。至少一个指令解码级208还可获取并解码第二指令块502的第三获取指令集束808,其可传达给阵列304-b以开始执行。至少一个指令解码级208还可获取并解码第三指令块602的第二获取指令集束810,其可传达给阵列304-c以开始执行。至少一个指令解码级208还可获取并解码第四指令块702的第一获取指令集束812。因为阵列304中的一者可用于支持第四指令块702的执行,所以第四指令块702的第一获取指令集束812可传达给可用阵列304-d,以开始执行。

图9说明在时间t=5时的基于块的计算机处理器核心114。在时间t=5,块定序器206可获取第六指令块902的块标头904。块预测器204(见图2)可使用块标头904中的信息来预测包含于计算机程序中的指令块226(见图2)之中的哪一指令块226包含可能基于包含于第六指令块902中的原因指令的结果而执行的至少一个生效指令。举例来说,块预测器204可预测第七指令块(未示出)包含可能将基于包含于第六指令块902中的原因指令的结果而执行的至少一个生效指令。至少一个指令解码级208可获取并解码第一指令块404的第五获取指令集束906,其可传达给阵列304-a以开始执行。至少一个指令解码级208还可获取并解码第二指令块502的第四获取指令集束908,其可传达给阵列304-b以开始执行。至少一个指令解码级208还可获取并解码第三指令块602的第三获取指令集束910,其可传达给阵列304-c以开始执行。至少一个指令解码级208还可获取并解码第四指令块702的第二获取指令集束912,其可传达给阵列304-d以开始执行。至少一个指令解码级208还可获取并解码第五指令块802的第一获取指令集束914。然而,因为阵列304中无一者可用于支持第五指令块802的执行,所以第五指令块802的第一获取指令集束914可存储在至少一个指令解码级208中,直到第一指令块404、第二指令块502、第三指令块602或第四指令块702中的一者可完成执行其指令且可交付于其可信结果,使得阵列304中的其对应一者可用于支持第五指令块802的执行为止。

以此方式,如上文所描述,可在执行阶段执行计算机程序中的指令块226。第一执行阶段可包含传达到阵列304-a的第一指令块404的执行、传达到阵列304-b的第二指令块502的执行、传达到阵列304-c的第三指令块602的执行,以及传达到阵列304-d的第四指令块702的执行。第二执行阶段可包含在传达到阵列304中的可用一者之后的第五指令块802的执行、在传达到阵列304中的可用一者之后的第六指令块902的执行、在传达到阵列304中的可用一者之后的第七指令块(未示出)的执行,以及在传达到阵列304中的可用一者之后的第八指令块(未示出)的执行。可同样地执行额外执行阶段,直到已执行计算机程序的所有指令块226为止。此外,执行阶段与阵列304中的对应一者有关,使得其可为基于块的计算机处理器核心114可正同时执行两个执行阶段(例如在第一执行阶段中执行传达到阵列304-b的第二指令块502,在第一执行阶段中执行传达到阵列304-c的第三指令块602,在第一执行阶段中执行传达到阵列304-d的第四指令块702,以及在第二执行阶段中执行传达到阵列304-a的第五指令块902)的情况。

如上文所描述,指令跨指令块226(见图2)的分布可使将架构寄存器映射到驻存于基于块的计算机处理器核心114的寄存器单元218内的物理寄存器的努力复杂。在一方面,基于块的计算机处理器核心114可至少产生、存储和/或维持至少一个核内寄存器重命名映射表。

图10是说明指令块226(见图2)和相关联的核内寄存器重命名映射表的实例的图。所述图包含第一指令块404(传达到阵列304-a)、第二指令块502(传达到阵列304-b)、第三指令块602(传达到阵列304-c),以及第四指令块702(传达到阵列304-d)。所述图还包含第一核内寄存器重命名映射表1002、第二核内寄存器重命名映射表1004、第三核内寄存器重命名映射表1006、第四核内寄存器重命名映射表1008和第五核内寄存器重命名映射表1010。

图11是说明核内寄存器重命名映射表1100的实例的图。核内寄存器重命名映射表1100可包含一组记录1102,其对应于由基于块的指令集架构定义的一组架构寄存器。所述组记录1102中的每一记录可对应于一架构寄存器。核内寄存器重命名映射表1100可以对架构寄存器的参考作索引。举例来说,但不作为限制,如果基于块的指令集架构定义包含64个架构寄存器的一组架构寄存器,那么核内寄存器重命名映射表1100可包含64个记录。在一方面,核内寄存器重命名映射表1100可存储在寄存器单元218(见图2)中。

所述组记录1102中的每一记录可包含第一字段1104,以存储寄存器单元218的已映射到对应架构寄存器的物理寄存器的识别。物理寄存器的识别可为物理寄存器编号。物理寄存器编号可使用log2m位数以二进制形式表示,其中m可为寄存器单元218的物理寄存器的数目。举例来说,但不作为限制,如果寄存器单元218的物理寄存器的数目为128,那么物理寄存器数目可使用七个位以二进制形式表示。举例来说,如图11中所示,核内寄存器重命名映射表1100可包含对应于架构寄存器k的记录1102-k。举例来说,记录1102-k的第一字段1104可存储物理寄存器编号0110011,其为已映射到对应架构寄存器k的物理寄存器51的识别。

所述组记录1102中的每一记录可包含第二字段1106以存储指示对应物理寄存器是否为已由基于块的计算机处理器核心114执行的向对应架构寄存器的最近写入的位置的信息,所述最近写入是根据程序次序。举例来说,但不作为限制,如果对应物理寄存器是已由基于块的计算机处理器核心114执行的向对应架构寄存器的最近写入的位置,那么可将第二字段1106的值设定成一,所述最近写入是根据程序次序;否则,可将第二字段1106的值设定成零。举例来说,如图11中所说明,可将记录1102-j的第二字段1106的值设定成零,其可指示对应物理寄存器编号0011011不是已由基于块的计算机处理器核心114执行的向对应架构寄存器j的最近写入的位置,所述最近写入是根据程序次序。举例来说,如图11中所说明,记录1102-k的第二字段1106的值可设定成一,其可指示对应物理寄存器编号0110011是已由基于块的计算机处理器核心114执行的向对应架构寄存器k的最近写入的位置,所述最近写入是根据程序次序。

参看图10,每一指令块226(见图2)可与输入核内寄存器重命名映射表和输出核内寄存器重命名映射表相关联。举例来说,第一核内寄存器重命名映射表1002可为与第一指令块404相关联的输入核内寄存器重命名映射表,且第二核内寄存器重命名映射表1004可为与第一指令块404相关联的输出核内寄存器重命名映射表。举例来说,第二核内寄存器重命名映射表1004可为与第二指令块502相关联的输入核内寄存器重命名映射表,且第三核内寄存器重命名映射表1006可为与第二指令块502相关联的输出核内寄存器重命名映射表。举例来说,第三核内寄存器重命名映射表1006可为与第三指令块602相关联的输入核内寄存器重命名映射表,且第四核内寄存器重命名映射表1008可为与第三指令块602相关联的输出核内寄存器重命名映射表。举例来说,第四核内寄存器重命名映射表1008可为与第四指令块702相关联的输入核内寄存器重命名映射表,且第五核内寄存器重命名映射表1010可为与第四指令块702相关联的输出核内寄存器重命名映射表。输入核内寄存器重命名映射表可由相关联指令块226的指令参考,且输出核内寄存器重命名映射表可反映相关联指令块226的指令的预期结果。

图12是说明产生核内寄存器重命名映射表1100的过程的一部分的实例的图。所述图包含第一核内寄存器重命名映射表1002的每一第二字段1106、第一指令块404的块标头的写入掩码1202、第二核内寄存器重命名映射表1004(初始)的每一第二字段1106、第二核内寄存器重命名映射表1004(最终)的每一第二字段1106、第二指令块502的块标头的写入掩码1204,以及第三核内寄存器重命名映射表1006(初始)的每一第二字段1106。

如上文所描述,指令块226(见图2)的块标头可包含信息来识别架构寄存器中的哪些是对应指令块226的写入指令的目标,所述指令块预期在基于块的计算机处理器核心114上执行。此信息可存储在块标头的写入掩码中。所述写入掩码中的每一位可对应于一架构寄存器。写入掩码可以对架构寄存器的参考作索引。举例来说,但不作为限制,如果基于块的指令集架构定义包含64个架构寄存器的一组架构寄存器,那么写入掩码可包含64个位。举例来说,但不作为限制,如果对应架构寄存器是对应指令块226的写入指令的目标,所述指令块预期在基于块的计算机处理器核心114上执行,那么写入掩码的位的值可设定成一;否则,写入掩码的位的值可设定成零。

参考图10到12,因为第一指令块404是将在基于块的计算机处理器核心114-c上执行的初始指令块226(见图2),所以第一核内寄存器重命名映射表1002(其为与第一指令块404相关联的输入核内寄存器重命名映射表)的每一第二字段1106的值可设定成零。

在一方面,第二核内寄存器重命名映射表1004(初始)(其为与第一指令块404相关联的输出核内寄存器重命名映射表)的第二字段1106的值,可最初在已获取第一指令块404的块标头之后,但在第一指令块404的指令开始执行之前设定。第二核内寄存器重命名映射表1004(初始)的第二字段1106的值可最初通过执行逐位逻辑运算,从第一核内寄存器重命名映射表1002的第二字段1106的值和第一指令块404的块标头的写入掩码1202的对应位的值产生。第一核内寄存器重命名映射表1002的第二字段1106的值可为向第一“与”门(例如“与”门1206)的第一输入。第一指令块404的块标头的写入掩码1202的对应位的值可为向第一反相器(例如反相器1208)的输入,且第一反相器(例如反相器1208)的输出可为向第一“与”门(例如“与”门1206)的第二输入。第一“与”门(例如“与”门1206)的输出的值可为第二核内寄存器重命名映射表1004(初始)的对应第二字段1106的值。以此方式,如果特定架构寄存器是第一指令块404的写入指令的目标,所述第一指令块预期在基于块的计算机处理器核心114上执行(如通过使第一指令块404的块标头的写入掩码1202的对应位的值设定成一来指示),那么第二核内寄存器重命名映射表1004(初始)的对应第二字段1106的值可最初设定成零,以反映尽管特定架构寄存器是第一指令块404的写入指令的目标,所述第一指令块预期在基于块的计算机处理器核心114上执行,但对应物理寄存器还不是已在基于块的计算机处理器核心114上执行的向特定架构寄存器的最近写入的位置,所述最近写入是根据程序次序。在第一指令块404的执行指令的过程期间,第二核内寄存器重命名映射表1004的对应第二字段1106的值可响应于对应物理寄存器变成已在基于块的计算机处理器核心114上执行的向特定架构寄存器的最近写入的位置而从零变为一,所述最近写入是根据程序次序。因此,第二核内寄存器重命名映射表1004(最终)可反映对应物理寄存器是已在基于块的计算机处理器核心114上执行的向特定架构寄存器的最近写入的位置,所述最近写入是根据程序次序。

如上文所描述,第二核内寄存器重命名映射表1004可为与第一指令块404相关联的输出核内寄存器重命名映射表,且可为与第二指令块502相关联的输入核内寄存器重命名映射表。类似地,在一方面,第三核内寄存器重命名映射表1006(初始)(其为与第二指令块502相关联的输出核内寄存器重命名映射表)的第二字段1106的值,可最初在已获取第二指令块502的块标头之后,但在第二指令块502的指令开始执行之前设定。第第三核内寄存器重命名映射表1006(初始)的第二字段1106的值可最初通过执行逐位逻辑运算,从第二核内寄存器重命名映射表1004(最终)的第二字段1106的值和第二指令块502的块标头的写入掩码1204的对应位的值产生。第二核内寄存器重命名映射表1004(最终)的第二字段1106的值可为向第二“与”门(例如“与”门1210)的第一输入。第二指令块502的块标头的写入掩码1204的对应位的值可为向第二反相器(例如反相器1212)的输入,且第二反相器(例如反相器1212)的输出可为向第二“与”门(例如“与”门1210)的第二输入。第二“与”门(例如“与”门1210)的输出的值可为第三核内寄存器重命名映射表1006(初始)的对应第二字段1106的值。以此方式,如果特定架构寄存器是第二指令块502的写入指令的目标,所述第二指令块预期在基于块的计算机处理器核心114上执行(如通过使第一指令块404的块标头的写入掩码1202的对应位的值设定成一来指示),那么第三核内寄存器重命名映射表1006(初始)的对应第二字段1106的值可最初设定成零,以反映尽管特定架构寄存器是第二指令块502的写入指令的目标,所述第二指令块预期在基于块的计算机处理器核心114上执行,但对应物理寄存器还不是已在基于块的计算机处理器核心114上执行的向特定架构寄存器的最近写入的位置,所述最近写入是根据程序次序。在第二指令块502的执行指令的过程期间,第三核内寄存器重命名映射表1006的对应第二字段1106的值可响应于对应物理寄存器变成已在基于块的计算机处理器核心114上执行的向特定架构寄存器的最近写入的位置而从零变为一,所述最近写入是根据程序次序。

可以相同方式产生其它核内寄存器重命名映射表1100。第五核内寄存器重命名映射表1010可为与第五指令块802(见图9)相关联的输入核内寄存器重命名映射表,其可存储在至少一个指令解码级208中,直到第一指令块404、第二指令块502、第三指令块602或第四指令块702中的一者可完成其指令的执行,且可交付于其可信结果,使得阵列304中的其相应一者可用于在后续执行阶段支持第五指令块802的执行为止。

如上文所描述,计算机程序可包含源代码中的指令序列,其中第一指令(即,原因指令)经配置以确定条件的有效性,且第二指令(即,生效指令)经配置以基于原因指令(例如,分支化指令(例如,如果x为真,那么y))的结果而执行。此外,有时可存在两个生效指令,其经配置以使得:第一生效指令(即,有效条件指令)经配置以在原因指令的结果指示条件有效的情况下执行;第二生效指令(即,无效条件指令)经配置以在原因指令的结果指示条件无效(例如如果x为真,那么y,否则z)的情况下执行。如上文所描述,指令块226(见图2)的块标头的写入掩码可包含信息来识别架构寄存器中的哪些是对应指令块226的写入指令的目标,所述指令块预期在基于块的计算机处理器核心114上执行。如果对应架构寄存器是对应指令块226的写入指令的目标,所述指令块预期在基于块的计算机处理器核心114上执行,那么可将写入掩码的位的值设定成一。所述对应架构寄存器可被认为是对应指令块226的写入指令的目标,如果所述写入指令是有效条件指令,那么所述指令块预期在基于块的计算机处理器核心114上执行。换句话说,如果对应架构寄存器是作为对应原因指令的有效条件指令的写入指令的目标,那么写入掩码的位的值可设定成一。然而,如果实际上基于块的计算机处理器核心114交付于无效条件指令(即,不交付于写入指令),那么实际上,新的值不会写入到对应的架构寄存器。此情形可被称作废止。响应于废止,曾由先前指令块226的写入指令写入到对应的架构寄存器的值可维持。

在一方面,基于块的计算机处理器核心114可至少产生、存储和/或维持至少一个实时写入掩码。在一方面,所述至少一个实时写入掩码可存储在寄存器单元218(见图2)中。

图13是说明指令块226(见图2)和相关联的实时写入掩码的实例的图。除图10中说明的元件之外,所述图还包含第一实时写入掩码1302、第二实时写入掩码1304、第三实时写入掩码1306和第四实时写入掩码1308。每一指令块226(见图2)可与实时写入掩码相关联。举例来说,第一实时写入掩码1302可与第一指令块404相关联,第二实时写入掩码1304可与第二指令块502相关联,第三实时写入掩码1306可与第三指令块602相关联,且第四实时写入掩码1308可与第四指令块702相关联。实时写入掩码中的每一位可对应于架构寄存器。实时写入掩码可以对架构寄存器的参考作索引。举例来说,但不作为限制,如果基于块的指令集架构定义包含64个架构寄存器的一组架构寄存器,那么实时写入掩码可包含64个位。举例来说,但不作为限制,如果对应架构寄存器是对应指令块226的写入指令的目标,所述指令块已在基于块的计算机处理器核心114上执行,正在基于块的计算机处理器核心114上执行,或预期在基于块的计算机处理器核心114上执行,那么实时写入掩码的位的值最初可设定成一;否则,实时写入掩码的位的值可设定成零。

在一方面中,可最初通过在已获取第一指令块404的块标头之后,但在第一指令块404的指令开始执行之前,使第一指令块404的块标头的写入掩码1202(见图12)的位的值复制到第一实时写入掩码1302的对应位,来产生第一实时写入掩码1302。可最初以相同的方式产生其它实时写入掩码。

响应于废止,对应于架构寄存器的实时写入掩码中的位,所述架构寄存器在对应指令块226(见图2)的块标头中识别为对应指令块226的写入指令的目标,所述指令块预期在基于块的计算机处理器核心114上执行,但实际上其将维持由先前指令块226的写入指令写入的值,可从一变为零,以反映此架构寄存器将维持由先前指令块226的写入指令写入的值。

如上文所描述,基于块的计算机处理单元102(见图1)可经配置以致使至少一个基于块的计算机处理器核心114结合至少一个其它基于块的计算机处理器核心114作为核心组合来操作。如上文所描述,指令跨指令块226(见图2)的分布以及指令块226在基于块的计算机处理器核心114之间的分布可使将架构寄存器映射驻存在基于块的计算机处理器核心114的寄存器单元218内的物理寄存器的努力复杂。在一方面,至少一个基于块的计算机处理器核心114可至少产生、存储和/或维持至少一个核间寄存器重命名映射表。

图14是说明指令块226(见图2)和相关联的核间寄存器重命名映射表的实例的图。在图中,指令块226分布在作为核心组合的基于块的计算机处理器核心114之间。举例来说,图14中说明的核心组合可图1中说明的第二核心组合122。第二核心组合122可包含基于块的计算机处理器核心114-c和基于块的计算机处理器核心114-d。基于块的计算机处理器核心114-c可包含图10中说明的元件。基于块的计算机处理器核心114-d可包含类似的元件布置。

举例来说,关于基于块的计算机处理器核心114-d,所述图包含第五指令块802(见图8和9)(传达到基于块的计算机处理器核心114-d的阵列304中的对应一者)、第六指令块902(见图9)(传达到基于块的计算机处理器核心114-d的阵列304中的对应一者)、第七指令块1402(传达到基于块的计算机处理器核心114-d的阵列304中的对应一者),以及第八指令块1404(传达到基于块的计算机处理器核心114-d的阵列304中的对应一者)。关于基于块的计算机处理器核心114-d,所述图还包含第六核内寄存器重命名映射表1406、第七核内寄存器重命名映射表1408、第八核内寄存器重命名映射表1410、第九核内寄存器重命名映射表1412和第十核内寄存器重命名映射表1414。

关于基于块的计算机处理器核心114-c,所述图还包含第一核间寄存器重命名映射表1416和第三核间寄存器重命名映射表1420。关于基于块的计算机处理器核心114-d,所述图还包含第二核间寄存器重命名映射表1418和第四核间寄存器重命名映射表1422。如上文所描述,核内寄存器重命名映射表1100可包含指示物理寄存器是否为已由基于块的计算机处理器核心(例如基于块的计算机处理器核心114-c)执行的向对应架构寄存器的最近写入的位置的信息,所述最近写入是根据程序次序。核间寄存器重命名映射表可包含核心组合中的特定基于块的计算机处理器核心114的识别,其包含作为已由所述特定基于块的计算机处理器核心114执行、正在特定基于块的计算机处理器核心114上执行,或预期在特定基于块的计算机处理器核心114上执行的向对应架构寄存器的最近写入的位置的物理寄存器,所述最近写入是根据程序次序。

图15是说明核间寄存器重命名映射表1500的实例的图。核间寄存器重命名映射表1500可包含一组记录1502,其对应于由基于块的指令集架构定义的一组架构寄存器。所述组记录1502中的每一记录可对应于一架构寄存器。核间寄存器重命名映射表1500可以对架构寄存器的参考作索引。举例来说,但不作为限制,如果基于块的指令集架构定义包含64个架构寄存器的一组架构寄存器,那么核间寄存器重命名映射表1500可包含64个记录。在一方面,核间寄存器重命名映射表1500可存储在寄存器单元218(见图2)中。

所述组记录1502中的每一记录可包含字段1504以存储核心组合中的特定基于块的计算机处理器核心114(见图1)的识别,其包含作为已由特定基于块的计算机处理器核心114执行、正在特定基于块的计算机处理器核心114上执行,或预期在特定基于块的计算机处理器核心114上执行的向对应架构寄存器的最近写入的位置的物理寄存器,所述最近写入是根据程序次序。当基于块的计算机处理单元102致使至少一个基于块的计算机处理器核心114结合至少一个其它基于块的计算机处理器核心114操作时,特定基于块的计算机处理器核心114的识别可为由基于块的计算机处理单元102(见图1)定义的核心编号。核心编号可使用log2n位数以二进制形式表示,其中n可为核心组合中的基于块的计算机处理器核心114的数目。举例来说,如果核心组合中的基于块的计算机处理器核心114的数目为二(如图14中所说明),那么核心编号可使用一个位以二进制形式表示,如果核心组合中的基于块的计算机处理器核心114的数目为四,那么核心编号可使用两个位以二进制形式表示,如果核心组合中的基于块的计算机处理器核心114的数目为八,那么核心编号可使用三个位以二进制形式表示(如图15中所说明),等等。

举例来说,如图15中所说明,核间寄存器重命名映射表1500可包含对应于架构寄存器j的记录1502-j。举例来说,记录1502-j的字段1504可存储核心编号010,其是第三基于块的计算机处理器核心114(如在基于块的计算机处理单元102致使此基于块的计算机处理器核心114结合七个其它基于块的计算机处理器核心114作为八个基于块的计算机处理器核心114的核心组合来操作时,由基于块的计算机处理单元102(见图1)定义)的识别。因此,第三基于块的计算机处理器核心114(核心编号010)可为核心组合中的基于块的计算机处理器核心114,其包含作为俄已由第三基于块的计算机处理器核心114(核心编号010)执行、正在第三基于块的计算机处理器核心114(核心编号010)上执行,或预期在第三基于块的计算机处理器核心114(核心编号010)上执行的向架构寄存器j的最近写入的位置的物理寄存器,所述最近写入是根据程序次序。

参看图14,每一基于块的计算机处理器核心114可与执行核间寄存器重命名映射表的第一阶段和执行核间寄存器重命名映射表的第二阶段相关联。举例来说,第一核间寄存器重命名映射表1416可为与基于块的计算机处理器核心114-c相关联的执行核间寄存器重命名映射表的第一阶段,且第三核间寄存器重命名映射表1420可为与基于块的计算机处理器核心114-c相关联的执行核间寄存器重命名映射表的第二阶段。举例来说,第二核间寄存器重命名映射表1418可为与基于块的计算机处理器核心114-d相关联的执行核间寄存器重命名映射表的第一阶段,且第四核间寄存器重命名映射表1422可为与基于块的计算机处理器核心114-d相关联的执行核间寄存器重命名映射表的第二阶段。执行核间寄存器重命名映射表的第一阶段可由指令块226(见图2)的与执行的第一阶段相关联的指令参考,且执行核间寄存器重命名映射表的第二阶段可由指令块226的与执行的第二阶段相关联的指令参考。

图16和17是说明产生核间寄存器重命名映射表1500的过程的实例的图。参看图16,所述图包含第一指令块404的块标头的写入掩码1202,第二指令块502的块标头的写入掩码1204、第三指令块602的块标头的写入掩码1602、第四指令块702的块标头的写入掩码1604、第一核间寄存器重命名映射表1416的字段1504,以及第二核间寄存器重命名映射表1418的字段1504。

如上文参看图14所描述,第一核间寄存器重命名映射表1416可为与基于块的计算机处理器核心114-c相关联的执行核间寄存器重命名映射表的第一阶段。举例来说,当基于块的计算机处理单元102(见图1)致使基于块的计算机处理器核心114-c结合基于块的计算机处理器核心114-d作为第二核心组合122来操作,基于块的计算机处理单元102可将基于块的计算机处理器核心114-c定义为第一基于块的计算机处理器核心114(核心编号0),且基于块的计算机处理器核心114-d定义为第二基于块的计算机处理器核心114(核心编号1)。在一方面,作为第一基于块的计算机处理器核心114(核心编号0)的基于块的计算机处理器核心114-c的识别可存储在基于块的计算机处理器核心114-c的核心组合接口224(见图1)中的一组存储器单元1606(见图16)中,且作为第二基于块的计算机处理器核心114(核心编号1)的基于块的计算机处理器核心114-d的识别可存储在基于块的计算机处理器核心114-d的核心组合接口224中的一组存储器单元1702(见图17)中。

如果第一指令块404是计算机程序的初始指令块226(见图2),且基于块的计算机处理器核心114-c是将在其上执行初始指令块226的初始基于块的计算机处理器核心114,那么可将第一核间寄存器重命名映射表1416的每一字段1504的值设定成基于块的计算机处理器核心114-c(核心编号0)的识别。第一核间寄存器重命名映射表1416可存储在基于块的计算机处理器核心114-c的寄存器单元218(见图2)。

参考图14到16,在一方面,可在已获取第一指令块404的块标头、已获取第二指令块502的块标头、已获取第三指令块602的块标头,且已获取第四指令块702的块标头之后,产生第二核间寄存器重命名映射表1418的字段1504的值。

可通过执行逐位逻辑运算,从第一指令块404的块标头的写入掩码1202的对应位的值、第二指令块502的块标头的写入掩码1204的对应位的值、第三指令块602的块标头的写入掩码1602的对应位的值,以及第四指令块702的块标头的写入掩码1604的对应位的值产生第二核间寄存器重命名映射表1418的字段1504的值。对应于特定架构寄存器的第一指令块404的块标头的写入掩码1202的位的值可首先输入到“或”门,例如“或”门1608。对应于特定架构寄存器的第二指令块502的块标头的写入掩码1204的位的值可为向“或”门(例如“或”门1608)的第二输入。对应于特定架构寄存器的第三指令块602的块标头的写入掩码1602的位的值可为向“或”门(例如“或”门1608)的第三输入。对应于特定架构寄存器的第四指令块702的块标头的写入掩码1604的位的值可为向“或”门(例如“或”门1608)的第四输入。

“或”门(例如“或”门1608)的输出可为向多路复用器(例如多路复用器1610)的选择器输入。对应于第一核间寄存器重命名映射表1416的特定架构寄存器的字段1504的值可为向多路复用器(例如多路复用器1610)的第一输入。存储在基于块的计算机处理器核心114-c的核心组合接口224(见图1)中的所述组存储器单元1606中的基于块的计算机处理器核心114-c(核心编号0)的识别可为向多路复用器(例如多路复用器1610)的第二输入。如果“或”门(例如“或”门1608)的输出的值为一,那么对应于第二核间寄存器重命名映射表1418的特定架构寄存器的字段1504的值可设定成基于块的计算机处理器核心114-c(核心编号0)的识别;否则,对应于第二核间寄存器重命名映射表1418的特定架构寄存器的字段1504的值可设定成对应于第一核间寄存器重命名映射表1416的特定架构寄存器的字段1504的值。以此方式,可产生第二核间寄存器重命名映射表1418。第二核间寄存器重命名映射表1418可存储在基于块的计算机处理器核心114-d的寄存器单元218(见图2)中。

参看图17,所述图包含第五指令块802的块标头的写入掩码1704,第六指令块902的块标头的写入掩码1706、第七指令块1402的块标头的写入掩码1708、第八指令块1404的块标头的写入掩码1710、第二核间寄存器重命名映射表1418的字段1504,以及第三核间寄存器重命名映射表1420的字段1504。

参考图14、15和17,在一方面,可在已获取第五指令块802的块标头、已获取第六指令块902的块标头、已获取第七指令块1402的块标头,且已获取第八指令块1404的块标头之后,产生第三核间寄存器重命名映射表1420的字段1504的值。

可通过执行逐位逻辑运算,从第五指令块802的块标头的写入掩码1704的对应位的值、第六指令块902的块标头的写入掩码1706的对应位的值、第七指令块1402的块标头的写入掩码1708的对应位的值,以及第八指令块1404的块标头的写入掩码1710的对应位的值产生第三核间寄存器重命名映射表1420的字段1504的值。对应于特定架构寄存器的第五指令块802的块标头的写入掩码1704的位的值可首先输入到“或”门,例如“或”门1712。对应于特定架构寄存器的第六指令块902的块标头的写入掩码1706的位的值可为向“或”门(例如“或”门1712)的第二输入。对应于特定架构寄存器的第七指令块1402的块标头的写入掩码1708的位的值可为向“或”门(例如“或”门1712)的第三输入。对应于特定架构寄存器的第八指令块1404的块标头的写入掩码1710的位的值可为向“或”门(例如“或”门1712)的第四输入。

“或”门(例如“或”门1712)的输出可为向多路复用器(例如多路复用器1714)的选择器输入。对应于第二核间寄存器重命名映射表1418的特定架构寄存器的字段1504的值可为向多路复用器(例如多路复用器1714)的第一输入。存储在基于块的计算机处理器核心114-d的核心组合接口224(见图1)中的所述组存储器单元1702中的基于块的计算机处理器核心114-d(核心编号1)的识别可为向多路复用器(例如多路复用器1714)的第二输入。如果“或”门(例如“或”门1712)的输出的值为一,那么对应于第三核间寄存器重命名映射表1420的特定架构寄存器的字段1504的值可设定成基于块的计算机处理器核心114-d(核心编号1)的识别;否则,对应于第三核间寄存器重命名映射表1420的特定架构寄存器的字段1504的值可设定成对应于第二核间寄存器重命名映射表1418的特定架构寄存器的字段1504的值。以此方式,可产生第三核间寄存器重命名映射表1420。第三核间寄存器重命名映射表1420可存储在基于块的计算机处理器核心114-c的寄存器单元218(见图2)中。可以相同方式产生其它核间寄存器重命名映射表。

或者,在一方面,上文参考图14到17所述的产生核间寄存器重命名映射表的字段1504的值的过程可使用实时写入掩码并非指令块226(见图2)的块标头的写入掩码来执行(例如第二核间寄存器重命名映射表1418的字段1504可通过执行逐位“或”运算,从第一实时写入掩码1302(见图13)的对应位、第二实时写入掩码1304的对应位、第三实时写入掩码1306的对应位以及第四实时写入掩码1308的对应位产生)。

以此方式,在任一替代方案下,如果特定架构寄存器是由基于块的计算机处理器核心114-c执行的指令块226(见图2)的写入指令的目标,且稍后是由基于块的计算机处理器核心114-d执行的指令块226的写入指令的目标,那么第三核间寄存器重命名映射表1420可将基于块的计算机处理器核心114-d(例如核心编号1)的识别反映为当前基于块的计算机处理器核心114,其包含作为已由基于块的计算机处理器核心114-d(例如核心编号1)执行、正在基于块的计算机处理器核心114-d(例如核心编号1)上执行,或预期在基于块的计算机处理器核心114-d(例如核心编号1)上执行的向特定架构寄存器的最近写入的位置的物理寄存器,所述最近写入是根据程序次序。同样地,如果特定架构寄存器是由基于块的计算机处理器核心114-c执行的指令块226的写入指令的目标,且稍后不是基于块的计算机处理器核心114-d所执行的指令块226的写入指令的目标,那么第三核间寄存器重命名映射表1420可将基于块的计算机处理器核心114-c(例如核心编号0)的识别反映为当前基于块的计算机处理器核心114,其包含作为已由基于块的计算机处理器核心114-c(例如核心编号0)执行、正在基于块的计算机处理器核心114-c(例如核心编号0)上执行,或预期在基于块的计算机处理器核心114-c(例如核心编号0)上执行的向特定架构寄存器的最近写入的位置的物理寄存器,所述最近写入是根据程序次序。

如上文所描述,参看图9,在单个基于块的计算机处理器核心操作模式中,第五指令块802可存储在至少一个指令解码级208中,直到第一指令块404可完成其指令的执行,且可交付于其可信结果,使得阵列304中的其对应一者可用于在执行的第二阶段支持第五指令块802的执行。

然而,如果基于块的计算机处理单元102(见图1)已致使基于块的计算机处理器核心114中的若干者作为核心组合操作(如图14中所说明),那么可将第五指令块802传达到另一基于块的计算机处理器核心114(例如基于块的计算机处理器核心114-d),以在与第一指令块404、第二指令块502、第三指令块602和第四指令块702的执行相同的执行阶段期间执行。同样地,在此情形中,第六指令块902、第七指令块1402和第八指令块1404可传达到另一基于块的计算机处理器核心114(例如基于块的计算机处理器核心114-d),以在与第一指令块404、第二指令块502、第三指令块602和第四指令块702的执行相同的执行阶段期间执行。

在图14中说明的核心组合122中,因为第五指令块802是将在基于块的计算机处理器核心114-d上执行的初始指令块226(见图2),所以第六核内寄存器重命名映射表1406(其为与第五指令块802相关联的输入核内寄存器重命名映射表)的每一第二字段1106的值可设定成零。

在图14中说明的核心组合122中,第九指令块(未示出)可存储在至少一个指令解码级208(见图9)中,直到第一指令块404可完成其指令的执行,且可交付于其可信结果,使得阵列304中的其对应一者可用于在执行的第二阶段期间支持第九指令块的执行为止。

在图14中说明的核心组合122中,第五核内寄存器重命名映射表1010可为第九指令块(未示出)的输入核内寄存器重命名映射表。然而,因为第五核内寄存器重命名映射表1010的第二字段1106的值最初可通过执行如上文所描述的逐位逻辑运算,从第四核内寄存器重命名映射表1008的第二字段1106的值和第四指令块702的块标头的写入掩码1604(见图16)的对应位的值产生,第五核内寄存器重命名映射表1010可缺乏关于特定架构寄存器是否为基于块的计算机处理器核心114-d所执行的指令块226(见图2)的写入指令的目标的信息。这可为初始指令块226(见图2)将在后续执行阶段中在基于块的计算机处理器核心114上执行的特殊情形。

在一方面,至少一个基于块的计算机处理器核心114可至少产生、存储和/或维持至少一个核间写入掩码。在一方面,所述至少一个核间写入掩码可存储在寄存器单元218(见图2)中。在一方面,响应于此情形,基于块的计算机处理单元102(见图1)可经配置以:(1)辨别指令块226何时为将在后续执行阶段中在基于块的计算机处理器核心114上执行的初始指令块226,(2)致使初始指令块226的指令参考与初始指令块226相关联的输入核内寄存器重命名映射表以及与基于块的计算机处理器核心114且与后续执行阶段相关联的核间写入掩码两者,且(3)更改产生与初始指令块226相关联的输出核内寄存器重命名映射表的过程。

图18是说明指令块226(见图2)和相关联的核间写入掩码的实例的图。除图14中说明的元件之外,所述图还包含第一核间写入掩码1802、第二核间写入掩码1804、第三核间写入掩码1806和第四核间写入掩码1808。每一核间寄存器重命名映射表可与核间写入掩码相关联。举例来说,第一核间写入掩码1802可与第一核间寄存器重命名映射表1416相关联,第二核间写入掩码1804可与第二核间寄存器重命名映射表1418相关联,第三核间写入掩码1806可与第三核间寄存器重命名映射表1420相关联,且第四核间写入掩码1808可与第四核间寄存器重命名映射表1422相关联。核间写入掩码中的每一位可对应于架构寄存器。核间写入掩码可以对架构寄存器的参考作索引。举例来说,但不作为限制,如果基于块的指令集架构定义包含64个架构寄存器的一组架构寄存器,那么核间写入掩码可包含64个位。举例来说,但不作为限制,如果向对应架构寄存器的最近写入已由不是与核间写入掩码相关联的基于块的计算机处理器核心114的基于块的计算机处理器核心114执行,正在不是与核间写入掩码相关联的基于块的计算机处理器核心114的基于块的计算机处理器核心114上执行,或预期在不是与核间写入掩码相关联的基于块的计算机处理器核心114的基于块的计算机处理器核心114上执行,那么核间写入掩码的位的值可设定成一,所述最近写入是根据程序次序;否则,核间写入掩码的位的值可设定成零。因此,核间写入掩码可其相关联核间寄存器重命名映射表的概述。

图19是说明产生核间写入掩码的过程的实例的图。所述图包含第三核间寄存器重命名映射表1420的字段1504以及第三核间写入掩码1806。第三核间写入掩码1806的位的值可从第三核间寄存器重命名映射表1420的对应字段1504的值产生。第三核间寄存器重命名映射表1420的字段1504的值可为向比较器(例如比较器1902)的第一输入。基于块的计算机处理器核心114-c(核心编号0)的识别(其存储在基于块的计算机处理器核心114-c的核心组合接口224(见图1)中的所述组存储器单元1606(见图16)中)可为向比较器(例如比较器1902)的第二输入。所述比较器(例如比较器1902)可经配置以将第三核间寄存器重命名映射表1420的字段1504的值与基于块的计算机处理器核心114-c(核心编号0)的识别进行比较,且响应于第三核间寄存器写入掩码1420的字段1504的值与基于块的计算机处理器核心114-c(核心编号0)的识别不同而产生值一;否则,比较器(例如比较器1902)可经配置以产生值零。比较器(例如比较器1902)的输出可为第三核间写入掩码1806的对应位的值。在一方面,在已产生第三核间寄存器重命名映射表1420之后,可产生第三核间寄存器写入掩码1806的位的值。可以相同方式产生其它核间写入掩码。

如上文所描述,核间写入掩码可在以下情形中使用:指令块226(见图2)已被辨识为在后续执行阶段中将在基于块的计算机处理器核心114上执行的初始指令块226。在执行初始指令块226(例如第九指令块)的指令时,最初可参考输入核内寄存器重命名映射表(例如第五核内寄存器重命名映射表1010)来确定对应物理寄存器是否为已由基于块的计算机处理器核心114(例如基于块的计算机处理器核心114-c)执行的向特定架构寄存器的最近写入的位置,所述最近写入是根据程序次序。如果对应物理寄存器是已由基于块的计算机处理器核心114(例如基于块的计算机处理器核心114-c)执行的向特定架构寄存器的最近写入的位置,所述最近写入是根据程序次序(例如对应于特定架构寄存器的第五核内寄存器重命名映射表1010的第二字段1106的值已设定成一),那么可参考与基于块的计算机处理器核心114且与后续执行阶段相关联的核间写入掩码(例如第三核间写入掩码1806),来确定向对应架构寄存器的最近写入是否已由不是与核间写入掩码相关联的基于块的计算机处理器核心114的先前基于块的计算机处理器核心114(例如基于块的计算机处理器核心114-d)执行、正在不是与核间写入掩码相关联的基于块的计算机处理器核心114的先前基于块的计算机处理器核心114(例如基于块的计算机处理器核心114-d)上执行,或预期在不是与核间写入掩码相关联的基于块的计算机处理器核心114的先前基于块的计算机处理器核心114(例如基于块的计算机处理器核心114-d)上执行,所述最近写入是根据程序次序。

另外,在此情形下,可更改产生与初始指令块226相关联的输出核内寄存器重命名映射表的过程。图20是说明产生与初始指令块226(见图2)相关联的输出核内寄存器重命名映射表以在后续执行阶段中在基于块的计算机处理器核心114上执行的经更改过程的一部分的实例的图。所述图包含输入核内寄存器重命名映射表2002的实例的每一第二字段1106(见图11)、核间写入掩码2004的实例,以及经修改的输入核内寄存器重命名映射表2006的实例的每一第二字段1106。可通过执行逐位逻辑运算,从输入核内寄存器重命名映射表2002的第二字段1106以及核间写入掩码2004的值产生经修改的输入核内寄存器重命名映射表2006的第二字段1106的值。输入核内寄存器重命名映射表2002的第二字段1106的值可为向“与”门(例如“与”门2008)的第一输入。核间写入掩码2004的对应位的值可为向反相器(例如反相器2010)的输入,且反相器(例如反相器2010)的输出可为向“与”门(例如“与”门2008)的第二输入。“与”门(例如“与”门2008)的输出的值可为经修改的输入核内寄存器重命名映射表2006的对应第二字段1106的值。

以此方式,经修改的输入核内寄存器重命名映射表2006可为已由先前基于块的计算机处理器核心114执行、正在先前基于块的计算机处理器核心114上执行,或预期在先前基于块的计算机处理器核心114上执行的向对应架构寄存器的最近写入校正输入核内寄存器重命名映射表2002,所述最近写入是根据程序次序。

举例来说,如图20中所说明,对应于架构寄存器a的核间写入掩码2004的位的值设定成一,其可指示已由先前基于块的计算机处理器核心114执行、正在先前基于块的计算机处理器核心114上执行,或预期在先前基于块的计算机处理器核心114上执行的向架构寄存器a的最近写入,所述最近写入是根据程序次序。因为已由先前基于块的计算机处理器核心114执行、正在先前基于块的计算机处理器核心114上执行,或预期在先前基于块的计算机处理器核心114上执行的向架构寄存器a的最近写入(所述最近写入是根据程序次序)可为写入到架构寄存器a的最近值,所以可校正对应于架构寄存器a的输入核内寄存器重命名映射表2002的第二字段1106的值,以反映写入到架构寄存器a的最近值存储在或将存储在先前基于块的计算机处理器核心114的寄存器单元218的物理寄存器中。

与初始指令块226(见图2)相关联的输出核内寄存器重命名映射表的第二字段1106的值可最初通过执行如上文所描述的逐位逻辑运算,从经修改的输入核内寄存器重命名映射表2006的第二字段1106的值以及对应指令块(未示出)的块标头的写入掩码的对应位的值产生。

或者,在一方面中,经修改的输入核内寄存器重命名映射表2006可代替输入核内寄存器重命名映射表2002使用,使得可做出对经修改的输入核内寄存器重命名映射表2006的单个参考,而不是对输入核内寄存器重命名映射表2002的初始参考以及对核间写入掩码2004的后续参考。

图21是用于将架构寄存器映射到物理寄存器的设备2100的框图。设备2100可包含存储器2102和控制电路2104。在一方面,存储器2102可包含于寄存器单元218(见图2)中。在一方面,控制电路2104可包含于指令处理电路210(见图2)中。存储器2102可经配置以存储核内寄存器重命名映射表2106和核间寄存器重命名映射表2108。核内寄存器重命名映射表2106可经配置以将架构寄存器映射到多核处理器(见图1)的第一核心的物理寄存器(见图11)。核间寄存器重命名映射表2108可经配置以响应于确定物理寄存器是已由第一核心执行、正在第一核心上执行,或预期在第一核心上执行的向架构寄存器的最近写入的位置,使所述架构寄存器与第一核心(见图15)的识别有关,所述最近写入是根据程序次序。控制电路2104可经配置以维持核内寄存器重命名映射表2106和核间寄存器重命名映射表2108。

在一方面,多核处理器可根据基于块的微架构(见图1到9)来配置。所述第一核心可经配置以执行指派给指令块的指令。指令块可根据基于块的指令集架构进行配置。

在一方面,核内寄存器重命名映射表2106可包含与第一指令块相关联的第一输入核内寄存器重命名映射表、与第一指令块相关联的第一输出核内寄存器重命名映射表、与第二指令块相关联的第二输入核内寄存器重命名映射表,以及与第二指令块相关联的第二输出核内寄存器重命名映射表(见图10)。

在一方面,设备2100可经配置以结合执行读取指令来参考第一输入核内寄存器重命名映射表,以确定物理寄存器是否为已由所述第一核心执行的向架构寄存器的最近写入的位置,所述最近写入是根据程序次序。举例来说,参考图10、11和14,设备2100可经配置以结合执行读取指令参考第一核内寄存器重命名映射表1002,以确定编号0110011的物理寄存器是否为已由第一核心114-c执行的向架构寄存器k的最近写入的位置,所述最近写入是根据程序次序。

在一方面,第一输出核内寄存器重命名映射表可为第二输入核内寄存器重命名映射表。举例来说,参看图10,第二核内寄存器重命名映射表1004可为与第一指令块404相关联的输出核内寄存器重命名映射表,且可为与第二指令块502相关联的输入核内寄存器重命名映射表。

在一方面中,核内寄存器重命名映射表可包含对应于架构寄存器的记录。所述记录可具有第一字段来存储已映射到架构寄存器的物理寄存器的识别。所述记录可具有第二字段。第二字段的值可经配置以指示物理寄存器是否为已由第一核心执行的向架构寄存器的最近写入的位置,所述最近写入是根据程序次序。举例来说,参考图11和14,核内寄存器重命名映射表1100可包含对应于架构寄存器k的记录1102-k。记录1102-k可具有第一字段1104,以存储已映射到架构寄存器k的物理寄存器(例如编号0110011的物理寄存器)的识别。记录1102-k可具有第二字段1106。第二字段1106的值(例如1)可经配置以指示编号0110011的物理寄存器是否已由第一核心114-c执行的向架构寄存器k的最近写入的位置,所述最近写入是根据程序次序。

在一方面,设备2100可经配置以结合执行写入指令,确定第一指令块与具有后续写入指令的后续指令块之间的中间指令块。设备2100可经配置以将存储在第一输出核内寄存器重命名映射表的第一字段中的物理寄存器的识别复制到与中间指令块相关联的输出核内寄存器重命名映射表的对应第一字段。

举例来说,参考图10、11和14,如果写入指令是第一指令块404的,且第三指令块602是具有后续写入指令的后续指令块,那么设备2100可经配置以确定第二指令块502是第一指令块404与后续指令块(例如第三指令块602)之间的中间指令块。设备2100可经配置以将存储在第二核内寄存器重命名映射表1004的第一字段1104中的物理寄存器(例如编号0110011的物理寄存器)的识别复制到与第二指令块502相关联的第三核内寄存器重命名映射表1006的对应第一字段1104。以此方式,可使第三核内寄存器重命名映射表1006反映编号0110011的物理寄存器是已由第一核心114-c执行的向架构寄存器k的最近写入的位置,所述最近写入是根据程序次序。

在一方面,第一指令块可包含具有写入掩码的块标头。写入掩码可具有对应于架构寄存器的位。所述位的值可经配置以指示架构寄存器是否为预期在第一核心上执行的第一指令块的写入指令的目标。

在一方面,存储器2102可进一步经配置以存储实时写入掩码2110。控制电路2104可进一步经配置以维持实时写入掩码2110。实时写入掩码2110可与第一指令块相关联。实时写入掩码2110可具有对应于架构寄存器的位。实时写入掩码2110的位的值可经配置以指示作为预期在第一核心上执行的第一指令块的写入指令的目标的架构寄存器是否实际上将维持曾由先前指令块的写入指令写入的值。举例来说,参看图13,第一实时写入掩码1302可与第一指令块404相关联。

在一方面,设备2100可经配置以响应于确定架构寄存器实际上将维持曾由先前指令块的写入指令写入的值,确定第一指令块与具有后续写入指令的后续指令块之间的中间指令块。设备2100可经配置以将存储在第一输入核内寄存器重命名映射表的第一字段中的物理寄存器的识别复制到第一输出核内寄存器重命名映射表的对应第一字段,且复制到与中间指令块相关联的输出核内寄存器重命名映射表的对应第一字段。

举例来说,参考图10、11、12和14,如果对应于架构寄存器k的第一指令块404的块标头的写入掩码的位指示架构寄存器k是预期在第一核心114-c上执行的第一指令块404的写入指令的目标,但架构寄存器k实际上将维持曾由先前指令块的写入指令写入的值,那么第二核内寄存器重命名映射表1004的第二字段1106中所指示的架构寄存器k的状态可能是不正确的。因为第二核内寄存器重命名映射表1004的第二字段1106可用以产生第三核内寄存器重命名映射表1006的第二字段1106,所以第三核内寄存器重命名映射表1006的第二字段1106中所指示的架构寄存器k的状态也可能是不正确的。在此情况下,第一核内寄存器重命名映射表1002的第二字段1106中所指示的架构寄存器k的状态可为正确的。如果第三指令块602是具有后续写入指令的后续指令块,那么设备2100可经配置以确定第二指令块502是第一指令块404与后续指令块(例如第三指令块602)之间的中间指令块。设备2100可经配置以将存储在第一核内寄存器重命名映射表1002的第一字段1104中的物理寄存器(例如编号0110011的物理寄存器)的识别复制到与第一指令块404相关联的第二核内寄存器重命名映射表1004的对应第一字段1104,且复制到与第二指令块502相关联的第三核内寄存器重命名映射表1006的对应第一字段1104。以此方式,可使第二核内寄存器重命名映射表1004和第三核内寄存器重命名映射表1006反映编号0110011的物理寄存器是已由第一核心114-c执行的向架构寄存器k的最近写入的位置,所述最近写入是根据程序次序。

在一方面,设备2100可经配置以结合执行读取指令参考实时写入掩码,以确定架构寄存器是否为已由第一核心执行、正在第一核心上执行,或预期在第一核心上执行的第一指令块的写入指令的目标。举例来说,参考图13和14,设备2100可经配置以结合执行第二指令块502的读取指令参考第一实时写入掩码1302,以确定架构寄存器k是否为已由第一核心114-c执行、正在第一核心114-c上执行,或预期在第一核心114-c上执行的第一指令块404的写入指令的目标。第一实时写入掩码1302可指示架构寄存器k实际上不是已由第一核心114-c执行、正在第一核心114-c上执行,或预期在第一核心114-c上执行的第一指令块404的写入指令的目标。第一实时写入掩码1302可指示在设备2100可校正第二核内寄存器重命名映射表1004之前,架构寄存器k的正确状态。

在一方面,所述多个核内寄存器重命名映射表的数目可等于一与第一核心可经配置以同时执行的指令块的数目相加的总和(见图10)。第一核心可经配置以同时执行的指令块的数目可等于第一核心的保留站阵列的数目(见图3到9)。传达到一个保留站阵列的一个指令块的执行可为针对所述一个保留站阵列的执行阶段。第二输出核内寄存器重命名映射表可为将在后续执阶段期间在第一核心上执行的初始指令块的输入核内寄存器重命名映射表(见图10)。举例来说,参考图10和14,第五核内寄存器重命名映射表1010可为第四指令块702的输出核内寄存器重命名映射表,以及将在后续执行阶段期间在第一核心114-c上执行的初始指令块的输入核内寄存器重命名映射表。

在一方面,多核处理器的第二核心可经配置以结合第一核心操作。核间寄存器重命名映射表可包含与第一核心相关联的第一核间寄存器重命名映射表,以及与第二核心相关联的第二核间寄存器重命名映射表。举例来说,参看图14,第二核心114-d可经配置以结合第一核心114-c作为核心组合122操作。第一核心114-c可至少与第一核间寄存器重命名映射表1416相关联。第二核心114-d可至少与第三核间寄存器重命名映射表1420相关联。

在一方面,第一核间寄存器重命名映射表可包含用于所述执行阶段的第一个第一核间寄存器重命名映射表,以及用于后续执行阶段的第二个第一核间寄存器重命名映射表。第二核间寄存器重命名映射表可包含用于所述执行阶段的第一个第二核间寄存器重命名映射表,以及用于后续执行阶段的第二个第二核间寄存器重命名映射表。举例来说,参看图14,第一核间寄存器重命名映射表1416可为用于所述执行阶段,且第三核间寄存器重命名映射表1420可用于后续执行阶段。第二核间寄存器重命名映射表1418可用于所述执行阶段,且第四核间寄存器重命名映射表1422可用于后续执行阶段。

在一方面,设备2100可经配置以结合执行读取指令参考第一核间寄存器重命名映射表,以确定第一核心是否包含作为已由第一核心执行、正在第一核心上执行,或预期在第一核心上执行的向架构寄存器的最近写入的位置的物理寄存器,所述最近写入是根据程序次序。举例来说,参看图14,如果第六指令块902的读取指令被引导到特定架构寄存器,且对应于所述特定架构寄存器的第七核内寄存器重命名映射表1408的记录1102的第二字段1106并不包含对应物理寄存器是已由第二核心114-d执行的向特定架构寄存器的最近写入的位置的指示,所述最近写入是根据程序次序,那么设备2100可参考第二核间寄存器重命名映射表1418,以确定第一核心114-c是否包含作为已由第一核心114-c执行、正在第一核心114-c上执行,或预期在第一核心114-c上执行的向特定架构寄存器的最近写入的位置的物理寄存器,所述最近写入是根据程序次序。

在一方面,存储器2102可进一步经配置以存储核间写入掩码2112。控制电路2104可进一步经配置以维持核间写入掩码2112。核间写入掩码2112可与第一个第一核间寄存器重命名映射表相关联。核间写入掩码2112可具有对应于架构寄存器的位。核间写入掩码2112的位的值可经配置以指示向架构寄存器的最近写入是否已由不同核心执行、正在不同核心上执行,或预期在不同核心上执行,所述最近写入是根据程序次序。举例来说,参看图15,第一核间写入掩码2112可与第一核间寄存器重命名映射表1416相关联。

在一方面,设备2100可经配置以结合执行读取指令,且响应于确定将在后续执行阶段期间在第一核心上执行的指令块是将在后续执行阶段期间在第一核心上执行的初始指令块,来参考核间写入图以确定向架构寄存器的最近写入是否已由不同核心执行、正在不同核心上执行,或预期在不同核心上执行,所述最近写入是根据程序次序。

举例来说,参考图14和18以及上文提供的这些图的描述,如果设备2100确定将在后续执行阶段期间在第一核心114-c上(以与第一指令块404相同的方式)执行的第九指令块(未示出)是将在后续执行阶段期间在第一核心114-c上执行的初始指令块,那么设备2100可经配置以结合执行读取指令参考第三核间写入掩码1806,以确定向架构寄存器的最近写入是否已由不同核心执行、正在不同核心上执行,或预期在不同核心上执行,所述最近写入是根据程序次序。如果读取指令属于第九指令块,且被引导到特定架构寄存器,那么设备2100可参考第五核内寄存器重命名映射表1010和第三核间写入掩码1806两者。如果第五核内寄存器重命名映射表1010的第二字段1106包含对应物理寄存器是已由第一核心114-c执行的向特定架构寄存器的最近写入的位置,所述最近写入是根据程序次序,那么设备2100可参考第三核间写入掩码1806,因为从第四核内寄存器重命名映射表1008产生的第五核内寄存器重命名映射表1010可能缺乏关于向特定架构寄存器的最近写入在(相同)执行阶段期间是否曾由第二核心114-d执行的指令块中的一者(例如第五指令块802、第六指令块902、第七指令块1402和第八指令块1404)实施的信息。对第二核间写入掩码1804的参考可确定向特定架构寄存器的最近写入是否已由不同核心执行、正在不同核心上执行,或预期在不同核心上执行,所述最近写入是根据程序次序。如果向特定架构寄存器的最近写入已由不同核心执行、正在不同核心上执行,或预期在不同核心上执行,所述最近写入是根据程序次序,那么设备2100可经配置以参考第三核间寄存器重命名映射表1420来确定所述不同核心的识别,其包含作为向特定架构寄存器的最近写入的位置的物理寄存器,所述最近写入是根据程序次序。

在一方面,响应于对应于架构寄存器的第一个第一核间寄存器重命名映射表的对应字段的值不同于第一核心的识别,可将核间写入掩码的位的值设定成一。举例来说,参考图15、18和19,响应于第三核间寄存器重命名映射表1420的对应字段1504的值不同于第一核心114-c的识别(例如核心编号0),可将第三核间写入掩码1806的位的值设定成一。

在一方面,设备2100可经配置以从核间写入掩码产生将在后续执行阶段期间在第一核心上执行的初始指令块的经修改的输入核内寄存器重命名映射表。设备2100可经配置以从经修改的输入核内寄存器重命名映射表产生将在后续执行阶段期间在第一核心上执行的初始指令块的输出核内寄存器重命名映射表。举例来说,经修改的输入核内寄存器重命名映射表的第二字段的值可从核间写入掩码的对应位的值,且从将在后续执行阶段期间在第一核心上执行的初始指令块的输入核内寄存器重命名映射表的对应第二字段的值产生。举例来说,参看图10、11、18、19和20,经修改的第五核内寄存器重命名映射表2006的第二字段1106的值可从第三核内写入掩码1806/2004,且从第五核内寄存器重命名映射表1010/2002的对应第二字段1106的值产生。

在一方面,第一个第二核间寄存器重命名映射表可包含对应于架构寄存器的第一记录。第一记录可从对应于架构寄存器的第一指令块的块标头的写入掩码的位的值,且从对应于架构寄存器的第二指令块的块标头的写入掩码的位的值产生。举例来说,参考图15和16,第二核间寄存器重命名映射表1418可包含对应于架构寄存器j的记录1502-j。记录1502-j可从对应于架构寄存器j的第一指令块404的块标头的写入掩码1202的位的值,且从对应于架构寄存器j的第二指令块502的块标头的写入掩码1204的位的值产生。

在一方面,第二核心可经配置以执行第三指令块。第二核间寄存器重命名映射表可包含对应于架构寄存器的第二记录。所述第二记录可从第一记录,且从对应于架构寄存器的第三指令块的块标头的位或写入掩码的值产生。举例来说,参考图15和17以及上文提供的这些图的描述,第三核间寄存器重命名映射表1420可包含对应于架构寄存器j的记录1502-j。记录1502-j可从第一记录,且从对应于架构寄存器j的第五指令块802的块标头的写入掩码1704的位的值产生。

图22是说明用于在多核处理器上执行读取指令的方法2200的实例的流程图。在方法2200中,操作2202可参考第一指令块的核内寄存器重命名映射表来确定多核处理器的第一核心的物理寄存器是否为已由第一核心执行的向架构寄存器的最近写入的位置,所述最近写入是根据程序次序。有利的是,维持核内寄存器重命名映射表可允许第一核心确定第一核心的物理寄存器的识别,所述物理寄存器可为已由第一核心执行的向架构寄存器的最近写入的位置,而无需第一核心与多核处理器的另一核心之间的通信。

操作2204可参考所述第一核心的核间寄存器重命名映射表来确定多核处理器的第二核心是否包含作为已由第二核心执行、正在第二核心上执行,或预期在第二核心上执行的向架构寄存器的最近写入的位置的物理寄存器。如果第二核心的确包含作为已由第二核心执行、正在第二核心上执行,或预期在第二核心上执行的向架构寄存器的最近写入的位置的物理寄存器,那么可参考已由第二核心执行、正在第二核心上执行,或预期在第二核心上执行的最终指令块的核内寄存器重命名映射表,来确定第二核心的物理寄存器的识别,所述物理寄存器是已由第二核心执行的向架构寄存器的最近写入的位置。

操作2206可为响应于第二核心包含作为向架构寄存器的最近写入的位置的物理寄存器,而从第二核心的物理寄存器读取值。

图23是说明用于在多核处理器上执行读取指令的方法2300的实例的流程图。在方法2300中,操作2202可参考第一指令块的核内寄存器重命名映射表来确定多核处理器的第一核心的物理寄存器是否为已由第一核心执行的向架构寄存器的最近写入的位置,所述最近写入是根据程序次序。操作2302可为确定第一指令块是否为将在第一核心上执行的执行阶段的初始指令块。操作2304可为响应于操作2302的结果,参考第一核心的核间写入图来确定向架构寄存器的最近写入是否已由多核处理器的不同核心执行、正在不同核心上执行,或预期在不同核心上执行。操作2204可参考所述第一核心的核间寄存器重命名映射表来确定多核处理器的第二核心是否包含作为已由第二核心执行、正在第二核心上执行,或预期在第二核心上执行的向架构寄存器的最近写入的位置的物理寄存器。操作2206可为响应于第二核心包含作为向架构寄存器的最近写入的位置的物理寄存器,而从第二核心的物理寄存器读取值。

图24是说明用于在多核处理器上执行读取指令的方法2400的实例的流程图。在方法2400中,操作2202可参考第一指令块的核内寄存器重命名映射表来确定多核处理器的第一核心的物理寄存器是否为已由第一核心执行的向架构寄存器的最近写入的位置,所述最近写入是根据程序次序。操作2402可为确定包含第一指令块的执行阶段的初始指令块。操作2404可为参考初始指令块的实时写入掩码来确定架构寄存器是否为已由第一核心执行、正在第一核心上执行,或预期在第一核心上执行的初始指令块的写入指令的目标。任选地,操作2406可为确定初始指令块与第一指令块之间的中间指令块。任选地,操作2408可为参考中间指令块的实时写入掩码来确定架构寄存器是否为已由第一核心执行、正在第一核心上执行,或预期在第一核心上执行的中间指令块的写入指令的目标。操作2204可参考所述第一核心的核间寄存器重命名映射表来确定多核处理器的第二核心是否包含作为已由第二核心执行、正在第二核心上执行,或预期在第二核心上执行的向架构寄存器的最近写入的位置的物理寄存器。操作2206可为响应于第二核心包含作为向架构寄存器的最近写入的位置的物理寄存器,而从第二核心的物理寄存器读取值。

图25是说明用于在基于块的处理器核心上执行写入指令的方法2500的实例的流程图。在方法2500中,操作2502可为将值写入到基于块的处理器核心的对应于架构寄存器的物理寄存器。所述写入指令可为第一指令块的指令。操作2504可为确定包含用于架构寄存器的后续写入指令的第二指令块。操作2506可为确定第一指令块与第二指令块之间的中间指令块。操作2508可为将物理寄存器的识别记录在与中间指令块相关联的核内寄存器重命名映射表的记录的第一字段中。操作2510可为设定所述记录的第二字段的值,以指示物理寄存器是已由基于块的处理器核心执行的向架构寄存器的最近写入的位置,所述最近写入是根据程序次序。

图26是说明用于确定第一指令块与第二指令块之间的中间指令块的方法2506的实例的流程图。在方法2506中,操作2602可参考与中间指令块相关联的实时写入掩码来确定架构寄存器是否为已由基于块的处理器核心执行、正在基于块的处理器核心上执行,或预期在基于块的处理器核心上执行的中间指令块的写入指令的目标。任选地,操作2604可为确定针对第一指令块、第二指令块或中间指令块中的任一者的执行阶段是否不同于针对第一指令块、第二指令块或中间指令块中的任一另一者的执行阶段。任选地,操作2606可响应于操作2604的结果,参考核间写入图来确定向架构寄存器的最近写入是否已由不同的基于块的处理器核心执行、正在不同的基于块的处理器核心上执行,或预期在不同的基于块的处理器核心上执行。

本领域技术人员将了解,可使用多种不同技术和技法中的任一者来表示信息和信号。举例来说,可通过电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示在整个以上描述中参考的数据、指令、命令、信息、信号、位、符号和芯片。

尽管前述描述提供说明性方面,但应注意,可在不脱离如由所附权利要求书所定义的范围的情况下对这些说明性方面作出各种改变和修改。

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