用于改善连续的事务性存储器区的吞吐量的系统、方法和装置与流程

文档序号:11154302阅读:197来源:国知局
用于改善连续的事务性存储器区的吞吐量的系统、方法和装置与制造工艺



背景技术:

事务性存储器的自然实现方案是要求在引退作为较年轻事务的部分的指令之前,较老的事务就提交。然而,在无序处理器中,通常情况是:较年轻事务中显著数量的操作在等待较老的事务提交的时候就已经完成了执行。例如,较老的事务中的单个存储可能需要数百个周期以等待存储器进行响应。在这期间,无序机器可能已经执行了较年轻事务中的全部指令。当该较老的事务最终提交时,现在有积压的指令要从该较年轻的事务中引退。

附图说明

在所附附图中以示例方式而非限制方式说明本发明,在附图中,类似的参考标号指示类似的元件,其中:

图1示出根据本发明的实施例的处理器核100的多个部分的框图。

图2示出写入时复制(COW)缓冲器的实施例。

图3示出允许标记存储器状态的数据高速缓存的实施例。

图4示出示例性ROB。

图5示出将TM区指示符用于加载指令的实施例。

图6示出将TM区指示符用于存储指令的实施例。

图7示出将TM区指示符用于算术指令的实施例。

图8是根据本发明的一个实施例的寄存器架构800的框图。

图9A是示出根据本发明的多个实施例的示例性有序流水线和示例性的寄存器重命名的无序发布/执行流水线的框图。

图9B是示出根据本发明的多个实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的无序发布/执行架构核的框图。

图10A-B示出更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块之一(包括相同类型和/或不同类型的其他核)。

图11是根据本发明的多个实施例可具有多于一个的核、可具有集成存储器控制器、并且可具有集成图形器件的处理器1100的框图。

图12-15是示例性计算机架构的框图。

图16是根据本发明的各实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。

具体实施方式

在以下描述中,陈述了多个具体细节。然而,应当理解,可不通过这些具体细节来实施本发明的实施例。在其他实例中,未详细示出公知的电路、结构以及技术,以免使对本描述的理解模糊。

说明书中提到“一个实施例”、“实施例”、“示例实施例”等指示所描述的实施例可包括特定特征、结构或特性,但是,每一个实施例可以不一定包括该特定特征、结构,或特征。此外,此类短语不一定是指同一实施例。此外,当结合实施例描述特定的特征、结构或特性时,认为结合无论是否被明确描述的其他实施例而影响此类特征、结构或特性是在本领域技术人员的知识范围之内的。

示例性处理器核

图1示出根据本发明的实施例的处理器核100的多个部分的框图。在一个实施例中,图1中所示的多个箭头示出经过核100的指令流。可在诸如参考图1所讨论的单个集成电路芯片(或管芯)上实现一个或多个处理器核(例如,处理器核100)。此外,该芯片可包括一个或多个共享的和/或私有的高速缓存(例如,高速缓存)、互连、存储器控制器或其他组件。在实施例中,可将图1中所示的处理器核100用于执行包括对应于虚拟化事务模式、非虚拟化(或受限的)事务模式和非事务模式的那些线程的一种或多种类型的线程。

如图1中所示,处理器核100可包括取出单元102,其用于从指令高速缓存101中取出指令,以便由核100执行。可从L1指令高速缓存101或诸如存储器164和/或存储设备之类的任何存储设备中取出这些指令。核100也可包括用于对被取出的指令进行解码的解码单元104。例如,解码单元104可将被取出的指令解码为多个uop(微操作)。此外,核100可包括调度单元106。该调度单元106可执行与存储被解码的指令(例如,从解码单元104接收到的指令)相关联的各种操作,直到这些指令准备好分派为止(例如,直到被解码指令的所有的源值变得可用)。在一个实施例中,该调度单元106可将被解码的指令调度和/或发布(或分派)到执行单元108,以便执行。该执行单元108可在(例如,由解码单元104)解码并(例如,由调度单元106)分派指令之后,执行这些被分派的指令。在实施例中,该执行单元108可包括多于一个的执行单元,例如,存储器执行单元、整数执行单元、浮点执行单元或其他执行单元。此外,该执行单元108可无序地执行指令。因此,在一个实施例中,该处理器核100可以是无序处理器核。核100也可包括引退单元110。该引退单元110可以在指令被提交之后引退被执行的指令。在实施例中,引退这些被执行的指令会导致:通过对这些指令的执行,提交处理器状态;解除分配由这些指令使用的物理寄存器,等等。

如图1中所示,核100可附加地包括追踪高速缓存或微代码只读存储器(uROM)111,其用于存储微代码和/或追踪已被取出(例如,由取出单元102取出)的指令。可将存储在该uROM 111中的微代码用于配置核100的各种硬件组件。在实施例中,可通过与该处理器核100通信的另一组件(例如,所讨论的计算机可读介质或其他存储设备)来加载被存储在该uROM 111中的微代码。核100也可包括重排序缓冲器(ROB)112,其用于存储关于用于由处理器核100的各种组件访问的进行中指令(或uop)的信息。核100可进一步包括RAT(寄存器别名表)114,其用于保持逻辑(或架构)寄存器(例如,由软件指令的操作数所标识的那些寄存器)到对应的物理寄存器的映射。在一个实施例中,该RAT 114中的每一个字段可包括被分配到每一个物理寄存器的ROB标识符。此外,加载缓冲器116和存储缓冲器118(可在本文中将它们统称为存储器顺序缓冲器(MOB))可分别存储还未被加载或未被写回到主存储器(例如,在该处理器核100外部的、诸如存储器164之类的存储器)中的待处理(pending)的存储器操作。MOB逻辑119可执行与本文所讨论的缓冲器116和118有关的各种操作。此外,处理器核100可包括总线单元120,其用于允许经由一个或多个总线的、在处理器核100的多个组件和其他组件之间的通信。一个或多个填充缓冲器122可在将接收到的数据存储到高速缓存162中之前,临时地存储(例如,在总线上)从存储器164接收到的数据。

在一个实施例中,可将一个或多个事务状态寄存器160包括在核100中。每一个事务状态寄存器160可对应于正在核100上执行的事务。第一事务可在第二事务的事务状态寄存器160中存储值,以指示该第二事务将中止(例如,由于向该第一事务分配了比该第二事务更高的优先级以例如避免冲突)。在实施例中,每一个事务可监测其各自的状态寄存器160以确定其是否应当中止。例如,可将状态寄存器160用于即使在可能将事务挂起的情形下(例如,临时将该事务切换到核(100)之外)也中止该事务。这可允许其他事务不必等待明确的中止而继续进行。同样,可在存储器中(例如,高速缓存162和/或存储器164中)而不是硬件寄存器中实现该状态寄存器160。

下列讨论伴随用于使用TM区标识符(或颜色)来改善TM吞吐量的技术的详细实施例。最初的讨论将在高层级上讨论对TM区标识符和通常用于改善吞吐量的各种组件的使用。随后,详述处理事务的加载和存储的更具体的示例。

区指示

来自相同线程的多个事务性存储器例程可在给定的时刻在处理器上运行,并且可被逐一排序。贯穿本说明书的通篇,将这些例程称为“区”(“region”)。在实施例中,通过开始和结束指令(例如,XBEGIN和XEND)来描绘事务。如本文中所详述的那样,可将TM区指示符用于将来自一个TM区的指令与来自另一TM区的那些指令区分开来。可在流水线中的许多不同点处动态地或在运行时(runtime)之前静态地将该指示符分配到指令(宏指令或微操作)中。流水线的分配级是无序执行之前的一个点(在此处,指令仍被视为是有序的),因此,该分配级可提供用该分配级的TM区指示符来标记指令的机会时间。在本级期间,作出关于如下的决定:要使用什么存储位置(例如,MOB的加载或存储缓冲器中的位置);对由指令使用的物理寄存器的分配(这可包括寄存器重命名);以及要使用哪个功能单元(如果有必要)。然而,也可利用诸如取出级、解码级等的其他级。无论将哪个级用于TM区指示符的标记操作,都将TM区指示符信息置于重排序缓冲器(ROB)112中。

本文详述了指示将“n”用作连续的事务性存储器区(允许指令从这些区中引退)的数量的TM区的示例。例如,当n=3时,向来自第一TM区的指令分配颜色0;向下一区的指令分配颜色1;向下一区的指令分配颜色2;并且向下一区的指令分配颜色0,以此类推。由此,该TM区指示分配级(例如,分配)不阻止指令或TM,而仅仅以轮循(round-robin)方式分配TM区颜色。由于时序的原因,实现方案可选择复制流水线中别处的颜色信息。例如,如将在稍后讨论的那样,可以用它们的颜色来标记加载缓冲器条目以便于在数据高速缓存(D-高速缓存)中设置正确的(相关联的)读取位(R-位),等等。

用于回滚的检查点操作

TM需要用于对寄存器进行检查点操作(checkpointing)的方法,使得可在中止事务的情况下恢复寄存器状态。在处理器(在其中,将架构寄存器重命名为物理寄存器)中,这可以通过在该处理器的物理寄存器中保留该架构寄存器的事务前(pre-transactional)值并且向TM区中的、覆写该处理器的指令分配新的物理寄存器来实现。通常,事务不能够释放物理寄存器以由包括其他事务中的那些指令的其他指令使用。将保持从经检查点操作的架构寄存器到物理寄存器的映射的结构称为写入时复制(COW)缓冲器。在一些实施例中,该COW是引退单元110的部分。

为了支持保持多个寄存器检查点的能力,可外加标记TM区之间的分隔的中间指针来使用该COW结构。在图2中示出示例性COW。如图所示,COW存储用于已经(按时间顺序)引退但还未被提交的指令的寄存器。

使用先前n=3的示例,在所示出的COW中,存在三个TM区。在图中示出多个指针,并且这些指针描绘TM区。第一指针E0标识COW中最后被提交的指令的位置。注意,存在一些已经被提交但还未被解除分配以供处理器使用的寄存器。可在任何时候收回这些寄存器。

第二指针E1标识最老的TM区和下一个较老的TM区之间的边界。第一和第二指针之间的是针对最老的TM区的、已经引退但还未被提交的指令。

第三指针E2标识最年轻的区和当前正在引退的位置之间的边界。第三和第二指针之间的是针对中间TM区的、已经引退但还未被提交的指令。已经引退但还未到达指针E2的指令来自最年轻的TM区。可将上述多个指针中的每一个存储在COW自身中,或存储在一个或多个专用寄存器中。

当前正在引退的指针具有其自身的指针——引退指针。当最老的区提交(或者被视为不可提交)时,将E0更新为指向E1位置,将E1更新为指向E2位置,并且将E2指针更新为指向引退指针。随后,引退指针可进入下一个TM区,等等。

数据高速缓存

TM需要用于标记已被推测性地读取的寄存器状态的方法,使得可检测由其他执行线程导致的状态的改变。由其他线程导致的这些改变会违反事务的原子性,因此,如果这些改变发生,则有必要中止该事务。

图3示出允许标记存储器状态的数据高速缓存(例如,数据高速缓存162)的实施例。在该实施例中,通过对每一高速缓存行添加被称为读取位(R-位)的单个位来实现该标记操作。可将该R-位存储在高速缓存自身中,或将其存储为单独的数据结构。当推测性地从该高速缓存行中读取数据时,为该高速缓存行设置R-位。当(通过提交或通过中止)完成该事务时,清除R-位。

为了支持保持多个读取集合(每一个读取集合是高速缓存行(在该高速缓存行中进行读取)的集合)的能力,为允许从其引退的每一个连续的区提供R-位。完成此使得来自不同的TM区的加载两者都可设置其对应的读取位而不必停止到更老的TM区进行提交为止。

例如,在n=3的示例中,存在3个R-位,一个位与一种颜色关联。当加载引退时,在数据高速缓存中标记与该加载颜色相关联的R-位。当给定颜色的事务提交时,清除针对那种颜色的R位。当给定颜色的事务中止时,清除针对该事务颜色的R-位以及针对任何更年轻事务的颜色的R-位。这是因为被中止的事务暗示了必须也中止所有更年轻的事务。

TM也需要用于对存储器状态进行检查点操作的方法,使得可在中止事务的情况下恢复事务前存储器值。实现此的方法涉及将推测性数据写入第一级(L1)数据高速缓存(例如,数据高速缓存162)中,并且防止其他执行线程看到该推测性数据。在事务提交之后,使该推测性数据变得在全局上可见。另一方面,如果该事务中止,则丢弃该推测性数据,因为在架构上被提交的事务前存储器值位于高速缓存层次结构的较低层级中。为了区分包含推测性数据的高速缓存行,向每一个数据高速缓存行添加一个位(写入位(W-位))以指示该行包含被推测性写入的数据。仅当引退了存储指令(这些被认为是高级存储)之后,才将推测性数据写入到高速缓存中。在存储被写入数据高速缓冲中之前,将该存储的数据保持在存储缓冲器中(例如,在MOB中)。由于数据按程序顺序被保持在该存储缓冲器中,因此不必向该数据高速缓存添加附加的W-位。相反,可使用高级存储处理(从存储缓冲器中读取针对最老的被引退的存储的数据,将该数据写入数据高速缓存中并设置W-位,并且从该存储缓冲器中清除该条目),使得其仅针对最老的TM区继续进行。当处理最老的TM区的最后一个存储时,停止高级存储处理,直到最老的TM区提交为止。当该区提交时,这些推测性的存储不再是推测性的,并因此变得在全局上可见。清除这些W位,并且来自下一个TM区(现在其是最老的TM区)的高级存储可开始处理。

从ROB引退

现在,引退可以是宽松的,使得在必须等到最老的TM区被提交之前就可引退来自“n”个TM区的指令。如图4中所看到的,在ROB中可同时存在多于n个TM区。如上文所详述的那样,已将来自这些区中的指令分配到n种颜色中的一种之中。引退操作可引退该示例中最老的15条指令(5条指令来自三个区中的每一个区),而不必逐区地等待。在引退最老的TM区的第一条指令(该指令直到最老的TM区已提交时才位于来自该TM区的首个分组中)之前,引退操作停止。在该示例中,已经向第16条指令分配了与正等待提交并且将被阻止引退的TM区相同的颜色。

用于事务的加载指令处理的示例性方法

图5示出将TM区指示符用于加载指令的实施例。在501处,将事务存储器区指示符分配给该事务的加载指令。如前所述,这可以在通过分配或分配/重命名逻辑进行的流水线的分配级期间发生。此外,如前所述,事务通常开始于预先确定的指令(例如,XBEGIN),并且结束于预先确定的指令(例如,XEND)。此描述是从单个加载指令的角度而言的,然而,应当理解,事务的每条指令将具有被分配到其的区指示符。

在503处,将与已被写入的指令相关联的前一个物理寄存器复制到COW中。例如,对于指令LOAD RAX,(存储器位置)(其中,RAX先前已被映射至物理寄存器17),将物理寄存器17存储在COW中,并且将(上文所述的)分配指针置于指针存储位置中。注意,将RAX(物理寄存器17)的前一个映射保存在COW中,因为该映射包含在该TM区之前已被写入的RAX的架构值。因此,如果TM区要中止,则可适当地恢复RAX的值。如果同一个TM区中的多条指令全部写入到RAX中,则仅这些指令中的第一条需要将前一个映射保存在COW中。

在505处,执行该指令。当然,由于这是无序机器,因此其他事务可遵循该相同的动作过程。

在507处,(例如,从ROB)引退该加载指令。如上所述,引退操作不必等到最老的TM区被提交就可发生。

在509处,为已被引退到对应的数据高速缓存条目中的加载设置读取位。该读取位对应于在501处被分配的颜色或区指示符。

在稍后某时刻,在511处,作出是否提交该事务的决定。通常,当接收并处理XEND指令,并且没有什么已导致该事务的中止时,完成该决定。如果允许该事务提交,则在515处,清除与该事务相关联的R-位,并且允许从COW中释放与该事务相关联的物理寄存器,以便由处理器使用,并因此相应地移动该COW的指针。如果将中止该事务,则在513处,通过使用COW中被存储的寄存器,将该状态回滚到该事务之前的状态。可例如由具有已被推测性地加载的经修改数据的另一线程导致中止。这些寄存器也是可由处理器自由地使用的。也清除这些读取位,以便为可能的将来事务做准备。

用于事务的存储指令处理的示例性方法

图6示出将TM区指示符用于存储指令的实施例。在601处,将事务存储器区指示符分配给该事务的存储指令。如前所述,这可以在通过分配或分配/重命名逻辑进行的流水线的分配级期间发生。此外,如前所述,事务通常开始于预先确定的指令(例如,XBEGIN),并且结束于预先确定的指令(例如,XEND)。此描述是从单个存储指令的角度而言的,然而,应当理解,事务的每条指令将具有被分配到其的区指示符。

在605处,执行事务的存储指令。当然,由于这是无序机器,因此其他事务可遵循该相同的动作过程。在此阶段,如果在处理器中使用此类机制,则也将这些指令置入MOB的存储缓冲器中。

在607处,引退针对最旧的TM区的(例如,来自ROB的)存储指令。如上所述,可通过从存储缓冲器中读取针对最旧的被引退的存储的数据,将数据写入到数据高速缓存中并设置W-位,并且从存储缓冲器中去除条目以将高级存储处理用于对最旧的TM区的引退操作。

在609处,写入针对已被引退到对应的数据高速缓存条目中的该存储的写入位。

在稍后某时刻,在611处,作出是否提交该事务的决定。通常,当接收并处理XEND指令,并且没有什么已导致该事务的中止时,完成该决定。如果允许该事务提交,则清除与该事务相关联的W-位,并且现在由此提交与该事务相关联的、已经被推测性地写入数据高速缓存中的存储,并因此使这些存储变得在全局上可见。一旦最老的TM区提交了,则第二老的区可根据高级存储处理进行引退。如果将中止该事务,则将该状态回滚到该事务开始之前的状态。这可通过使数据高速缓存中的、已经(按已针对该高速缓存行而被设置的写入位的指示)被推测性地写入的所有条目都无效来完成。也清除这些写入位,以便为可能的将来事务做准备。如果中止该事务,则也中止所有正在进行的更年轻的事务。

虽然已将上述方法描述为单独的加载处理和存储处理,但是事务实际上将总是具有加载和存储。由此,可将流程图的多个方面混合在一起。

用于事务的算术指令处理的示例性方法

图7示出将TM区指示符用于算术指令的实施例。在701处,将事务存储器区指示符分配给该事务的算术指令。如前所述,这可以在通过分配或分配/重命名逻辑进行的流水线的分配级期间发生。此外,如前所述,事务通常开始于预先确定的指令(例如,XBEGIN),并且结束于预先确定的指令(例如,XEND)。此描述是从单个加载指令的角度而言的,然而,应当理解,事务的每条指令将具有被分配到其的区指示符。

在703处,将与已被写入的指令相关联的前一个物理寄存器复制到COW中。例如,对于指令LOAD RAX,RAX(其中,RAX先前已被映射至物理寄存器17),将物理寄存器17存储在COW中,并且将(上文所述的)分配指针置于指针存储位置中。注意,将RAX(物理寄存器17)的前一个映射保存在COW中,因为该映射包含在该TM区之前已被写入的RAX的架构值。因此,如果TM区要中止,则可适当地恢复RAX的值。如果同一个TM区中的多条指令全部写入到RAX中,则仅这些指令中的第一条需要将前一个映射保存在COW中。

在705处,执行该指令。

在707处,(例如,从ROB)引退该算术指令。如上所述,引退操作不必等到最老的TM区被提交就可发生。

在稍后某时刻,在711处,作出是否提交该事务的决定。通常,当接收并处理XEND指令,并且没有什么已导致该事务的中止时,完成该决定。如果允许该事务提交,则在715处,允许从COW中释放与该事务相关联的物理寄存器,以便由处理器使用,并因此相应地移动该COW的指针。如果将中止该事务,则在713处,将通过使用COW中被存储的寄存器,将该状态回滚到该事务之前的状态。可例如由具有已被推测性地加载的、经修改数据的另一线程导致中止。这些寄存器也是可由处理器自由地使用的。

示例性寄存器架构

图8是根据本发明的一个实施例的寄存器架构800的框图。在所示出的实施例中,有32个512位宽的向量寄存器810;这些寄存器被引用为zmm0到zmm31。较低的16zmm寄存器的较低阶256个位覆盖在寄存器ymm0-16上。较低的16zmm寄存器的较低阶128个位(ymm寄存器的较低阶128个位)覆盖在寄存器xmm0-15上。将写掩码寄存器引用为k0-7。

通用寄存器825——在所示出的实施例中,有十六个64位通用寄存器,这些寄存器与现有的x86寻址模式一起使用以对存储器操作数进行寻址。这些寄存器通过名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP以及R8到R15来引用。

标量浮点堆栈寄存器组(x87堆栈)845,在其上面重叠了MMX紧缩整数平坦寄存器组850——在所示出的实施例中,x87堆栈是用于使用x87指令集扩展来对32/64/80位浮点数据执行标量浮点运算的八元素堆栈;而使用MMX寄存器来对64位紧缩整数数据执行操作,以及为在MMX和XMM寄存器之间执行的一些操作保存操作数。

本发明的替代实施例可以使用更宽的或更窄的寄存器。另外,本发明的替代实施例可以使用更多、更少或不同的寄存器组和寄存器。

示例性核架构、处理器和计算机架构

可在不同的处理器中,出于不同的目的,以不同的方式来实现处理器核。例如,此类核的实现可包括:1)旨在用于通用计算的通用有序核;2)旨在用于通用计算的高性能通用无序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用无序核的CPU;以及2)包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核的协处理器。此类不同处理器导致不同的计算机系统架构,其可包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相同的封装中但分开的管芯上的协处理器;3)与CPU在相同管芯上的协处理器(在该情况下,此类协处理器有时被称为诸如集成图形和/或科学(吞吐量)逻辑之类的专用逻辑,或被称为专用核);以及4)可以将所描述的CPU(有时被称为应用核或应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上的芯片上系统。接着描述示例性核架构,随后描述示例性处理器和计算机架构。

示例性核架构

有序和无序核框图

图9A是示出根据本发明的多个实施例的示例性有序流水线和示例性的寄存器重命名的无序发布/执行流水线的框图。图9B是示出根据本发明的多个实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的无序发布/执行架构核的框图。图9A-B中的实线框示出有序流水线和有序核,而可选增加的虚线框示出了寄存器重命名的、无序发布/执行流水线和核。考虑到有序方面是无序方面的子集,将描述无序方面。

在图9A中,处理器流水线900包括取出级902、长度解码级904、解码级906、分配级908、重命名级910、调度(也称为分派或发布)级912、寄存器读取/存储器读取级914、执行级916、写回/存储器写入级918、异常处理级922和提交级924。

图9B示出包括耦合到执行引擎单元950的前端单元930的处理器核990,且执行引擎单元和前端单元两者都耦合到存储器单元970。核990可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或替代核类型。作为又一选项,核990可以是专用核,诸如例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、或图形核等。

前端单元930包括耦合到指令高速缓存单元934的分支预测单元932,该指令高速缓存单元耦合到指令转换后备缓冲器(TLB)936,该指令转换后备缓冲器耦合到指令取出单元938,指令取出单元耦合到解码单元940。解码单元940(或解码器)可解码指令,并生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元940可使用各种不同的机制来实现。合适机制的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核990包括微代码ROM或存储用于某些宏指令的微代码的其他介质(例如,在解码单元940中或以其他方式在前端单元930内)。解码单元940耦合至执行引擎单元950中的重命名/分配器单元952。

执行引擎单元950包括重命名/分配器单元952,该重命名/分配器单元耦合至引退单元954和一个或多个调度器单元956的集合。调度器单元956表示任何数目的不同调度器,包括预留站、中央指令窗等。调度器单元956耦合到物理寄存器组单元958。物理寄存器组单元958中的每一个表示一个或多个物理寄存器组,其中不同的物理寄存器组存储一种或多种不同的数据类型,诸如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如,作为要被执行的下一条指令的地址的指令指针)等。在一个实施例中,物理寄存器组单元958包括向量寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器、和通用寄存器。物理寄存器组单元958被引退单元954重叠以示出可以用来实现寄存器重命名和无序执行的各种方式(例如,使用重新排序缓冲器和引退寄存器组;使用将来的文件、历史缓冲器和引退寄存器组;使用寄存器映射和寄存器池等)。引退单元954和物理寄存器组单元958耦合到执行群集960。执行群集960包括一个或多个执行单元962的集合和一个或多个存储器访问单元964的集合。执行单元962可以对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整型、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但其他实施例可包括全部执行所有功能的仅一个执行单元或多个执行单元。调度器单元956、物理寄存器组单元958、执行群集960被示出为可能是复数个,因为某些实施例为某些数据/操作类型创建了多个单独的流水线(例如,均具有各自调度器单元、物理寄存器组单元和/或执行群集的标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线和/或存储器访问流水线,并且在单独的存储器访问流水线的情况下,将特定实施例实现为仅仅该流水线的执行群集具有存储器访问单元964)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是无序发布/执行,并且其余流水线可以是有序发布/执行。

存储器访问单元964的集合耦合到存储器单元970,该存储器单元包括耦合到数据高速缓存单元974的数据TLB单元972,其中数据高速缓存单元耦合到第二级(L2)高速缓存单元976。在一个示例性实施例中,存储器访问单元964可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元970中的数据TLB单元972。指令高速缓存单元934还耦合到存储器单元970中的第二级(L2)高速缓存单元976。L2高速缓存单元976耦合到一个或多个其他层级的高速缓存,并最终耦合到主存储器。

作为示例,示例性寄存器重命名的、无序发布/执行核架构可按如下方式实现流水线900:1)指令取出938执行取出和长度解码级902和904;2)解码单元940执行解码级906;3)重命名/分配器单元952执行分配级908和重命名级910;4)调度器单元956执行调度级912;5)物理寄存器组单元958和存储器单元970执行寄存器读取/存储器读取级914;执行群集960执行执行级916;6)存储器单元970和物理寄存器组单元958执行写回/存储器写入级918;7)各单元可牵涉到异常处理级922;以及8)引退单元954和物理寄存器组单元958执行提交级924。

核990可支持一个或多个指令集(例如,x86指令集(具有伴随较新版本而添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼州桑尼维尔市的ARM控股公司的ARM指令集(具有诸如NEON之类的可选的附加扩展)),其中包括本文中描述的多个指令。在一个实施例中,核990包括用于支持紧缩数据指令集扩展(例如,AVX1、AVX2和/或先前描述的一些形式的通用向量友好指令格式(U=0和/或U=1))的逻辑,从而允许由许多多媒体应用使用的操作能够使用紧缩数据来执行。

应当理解,核可支持多线程化操作(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化操作,各种方式包括时分多线程化、同步多线程化(其中,单个物理核为物理核正在同步地进行多线程化操作的多个线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后诸如用超线程化技术来进行的同步多线程化操作)。

尽管在无序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管所示出的处理器的实施例还包括分开的指令和数据高速缓存单元934/974以及共享L2高速缓存单元976,但替代实施例可具有用于指令和数据两者的单个内部高速缓存,诸如例如,第一级(L1)内部高速缓存或多个层级的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。

具体的示例性有序核架构

图10A-B示出更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块之一(包括相同类型和/或不同类型的其他核)。取决于应用,这些逻辑块通过高带宽的互连网络(例如,环形网络)与某个固定的功能逻辑、存储器I/O接口和其他必要的I/O逻辑通信。

图10A是根据本发明的多个实施例的单个处理器核以及它与管芯上互连网络1002的连接及其第二级(L2)高速缓存的本地子集1004的框图。在一个实施例中,指令解码器1000支持具有紧缩数据指令集扩展的x86指令集。L1高速缓存1006允许对进入标量和向量单元中的高速缓存存储器的低等待时间访问。尽管在一个实施例中(为了简化设计),标量单元1008和向量单元1010使用分开的寄存器集合(分别为标量寄存器1012和向量寄存器1014),并且在这些寄存器之间传递的数据被写入到存储器中并随后从第一级(L1)高速缓存1006读回,但是本发明的替代实施例可以使用不同的方法(例如,使用单个寄存器集合或包括允许数据在这两个寄存器组之间传递而无需被写入和读回的通信路径)。

L2高速缓存的本地子集1004是全局L2高速缓存的部分,该全局L2高速缓存被划分成多个分开的本地子集,针对每个处理器核有一个本地子集。每个处理器核具有去往其自身的L2高速缓存的本地子集1004的直接访问路径。将由处理器核读取的数据存储在其L2高速缓存子集1004中,并且可并行于其他处理器核访问那些处理器核自身的本地L2高速缓存子集,快速访问该数据。将由处理器核写入的数据存储在其自身的L2高速缓存子集1004中,并在必要的情况下从其他子集中清除该数据。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2高速缓存和其他逻辑块之类的代理在芯片内彼此通信。每个环形数据路径针对每个方向为1012位宽。

图10B是根据本发明的多个实施例的图10A中的处理器核的部分的展开图。图10B包括L1高速缓存1004的L1数据高速缓存1006A部分,以及关于向量单元1010和向量寄存器1014的更多细节。具体地说,向量单元1010是16宽向量处理单元(VPU)(见16宽ALU 1028),该单元执行整数、单精度浮点以及双精度浮点指令中的一个或多个。该VPU支持利用混合单元1020对寄存器输入进行混合、利用数值转换单元1022A-B进行数值转换,并且利用复制单元1024进行对存储器输入的复制。

具有集成存储器控制器和图形器件的处理器

图11是根据本发明的多个实施例的、可能具有多于一个的核、可能具有集成存储器控制器、以及可能具有集成图形器件的处理器1100的框图。图11中的实线框示出具有单个核1102A、系统代理1110、一个或多个总线控制器单元1116的集合的处理器1100,而虚线框的可选附加示出具有多个核1102A-N、系统代理单元1110中的一个或多个集成存储器控制器单元1114的集合以及专用逻辑1108的替代处理器1100。

因此,处理器1100的不同实现可包括:1)CPU,其中专用逻辑1108是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核1102A-N是一个或多个通用核(例如,通用有序核、通用无序核、这两者的组合);2)协处理器,其中核1102A-N是旨在主要用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中核1102A-N是大量通用有序或无序核。因此,处理器1100可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、嵌入式处理器等。该处理器可以被实现在一个或多个芯片上。处理器1100可以是一个或多个基板的一部分,并且/或者可使用多种工艺技术(诸如,BiCMOS、CMOS或NMOS)中的任意技术被实现在一个或多个基板上。

存储器层次结构包括核内的一个或多个层级的高速缓存、一个或多个共享高速缓存单元1106的集合、以及耦合至该组集成存储器控制器单元1114的外部存储器(未示出)。共享高速缓存单元1106的集合可包括一个或多个中级高速缓存(诸如,第二级(L2)、第三级(L3)、第四级(L4)或其他层级的高速缓存)末级高速缓存(LLC)和/或以上的组合。尽管在一个实施例中,基于环的互连单元1112将集成图形逻辑1108、共享高速缓存单元1106的集合以及系统代理单元1110/集成存储器控制器单元1114互连,但替代实施例可使用任何数量的公知技术来将这些单元互连。在一个实施例中,可以维持一个或多个高速缓存单元1106和核1102A-N之间的一致性(coherency)。

在一些实施例中,核1102A-N中的一个或多个能够进行多线程操作。系统代理1110包括协调和操作核1102A-N的那些组件。系统代理单元1110可包括例如功率控制单元(PCU)和显示单元。PCU可以是或可包括调节核1102A-N和集成图形逻辑1108的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。

核1102A-N在架构指令集方面可以是同构的或异构的;也就是说,这些核1102A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。

示例性计算机架构

图12-15是示例性计算机架构的框图。本领域中已知的对膝上型计算机、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含本文中所公开的处理器和/或其他执行逻辑的各种系统和电子设备通常都是合适的。

现在参考图12,所示出的是根据本发明一个实施例的系统1200的框图。系统1200可包括一个或多个处理器1210、1215,这些处理器耦合到控制器中枢1220。在一个实施例中,控制器中枢1220包括图形存储器控制器中枢(GMCH)1290和输入/输出中枢(IOH)1250(其可以位于分开的芯片上);GMCH 1290包括存储器和图形控制器,存储器1240和协处理器1245耦合到该存储器和图形控制器;IOH 1250将输入/输出(I/O)设备1260耦合到GMCH 1290。或者,存储器和图形控制器中的一个或两者可以被集成在处理器内(如本文中所描述的),存储器1240和协处理器1245直接耦合到处理器1210以及与IOH 1250一起处于单个芯片中的控制器中枢1220。

附加的处理器1215的可选性质在图12中通过虚线来表示。每一个处理器1210、1215可包括本文中描述的处理核中的一个或多个,并且可以是处理器1100的某一版本。

存储器1240可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢1220经由诸如前端总线(FSB)之类的多分支总线、诸如快速通道互连(QPI)之类的点对点接口、或者类似的连接1295与处理器1210、1215进行通信。

在一个实施例中,协处理器1245是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等。在一个实施例中,控制器中枢1220可以包括集成图形加速器。

在物理资源1210、1215之间可以存在包括架构、微架构、热和功耗特性等的一系列品质度量方面的各种差异。

在一个实施例中,处理器1210执行控制一般类型的数据处理操作的指令。协处理器指令可嵌入在这些指令中。处理器1210将这些协处理器指令识别为应当由附连的协处理器1245执行的类型。因此,处理器1210在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1245。协处理器1245接受并执行所接收的协处理器指令。

现在参考图13,所示为根据本发明的实施例的更具体的第一示例性系统1300的框图。如图13所示,多处理器系统1300是点对点互连系统,且包括经由点对点互连1350耦合的第一处理器1370和第二处理器1380。处理器1370和1380中的每一个都可以是处理器1100的某一版本。在本发明的一个实施例中,处理器1370和1380分别是处理器1210和1215,而协处理器1338是协处理器1245。在另一实施例中,处理器1370和1380分别是处理器1210和协处理器1245。

处理器1370和1380被示出为分别包括集成存储器控制器(IMC)单元1372和1382。处理器1370还包括作为其总线控制器单元的部分的点对点(P-P)接口1376和1378;类似地,第二处理器1380包括P-P接口1386和1388。处理器1370、1380可以经由使用点对点(P-P)接口电路1378、1388的P-P接口1350来交换信息。如图13所示,IMC 1372和1382将处理器耦合到各自的存储器,即可以是本地附连到各自处理器的主存储器的多个部分的存储器1332和存储器1334。

处理器1370、1380可各自经由使用点对点接口电路1376、1394、1386、1398的各个P-P接口1352、1354与芯片组1390交换信息。芯片组1390可以可选地经由高性能接口1339与协处理器1338交换信息。在一个实施例中,协处理器1338是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等。

可将共享高速缓存(未示出)包括在任一处理器之内,或包括在两个处理器外部但仍经由P-P互连与这些处理器连接,使得如果将处理器置于低功率模式时,可将任一处理器或两个处理器的本地高速缓存信息存储在该共享高速缓存中。

芯片组1390可以经由接口1396耦合至第一总线1316。在一个实施例中,第一总线1316可以是外围组件互连(PCI)总线或诸如PCI高速总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。

如图13所示,各种I/O设备1314可连同总线桥1318一起耦合到第一总线1316,总线桥1318将第一总线1316耦合到第二总线1320。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU的处理器、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器之类的一个或多个附加处理器1315耦合到第一总线1316。在一个实施例中,第二总线1320可以是低引脚计数(LPC)总线。各种设备可以被耦合至第二总线1320,在一个实施例中这些设备包括例如键盘/鼠标1322、通信设备1327以及诸如可包括指令/代码和数据1330的盘驱动器或其他大容量存储设备之类的存储单元1328。此外,音频I/O 1324可以被耦合至第二总线1320。注意,其他架构是可能的。例如,代替图13中的点对点架构,系统可以实现多分支总线或其他此类架构。

现在参考图14,所示为根据本发明的实施例的更具体的第二示例性系统1400的框图。图13和图14中的相同部件用相同附图标记表示,并从图14中省去了图13中的某些方面,以避免使图14的其他方面变得模糊。

图14示出处理器1370、1380可分别包括集成存储器和I/O控制逻辑(”CL”)1372和1382。因此,CL 1372、1382包括集成存储器控制器单元并包括I/O控制逻辑。图14示出不仅存储器1332、1334耦合至CL 1372、1382,而且I/O设备1414也耦合至控制逻辑1372、1382。传统I/O设备1415被耦合至芯片组1390。

现在参照图15,所示出的是根据本发明的实施例的SoC 1500的框图。图11中的相似部件具有同样的附图标记。另外,虚线框是更先进的SoC上的可选特征。在图15中,互连单元1502被耦合至:应用处理器1510,其包括一个或多个核202A-N的集合以及共享高速缓存单元1106;系统代理单元1110;总线控制器单元1116;集成存储器控制器单元1114;一组或一个或多个协处理器1520,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1530;直接存储器存取(DMA)单元1532;以及显示单元,其用于耦合至一个或多个外部显示器。在一个实施例中,协处理器1520包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器等。

可在硬件、软件、固件或此类实现的组合中实现本文中所公开的机制的多个实施例。可将本发明的多个实施例实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备和至少一个输出设备。

可将程序代码(例如,图13中所示的代码1330)应用于输入指令,以执行本文描述的多个功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。

程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。

至少一个实施例的一个或多个方面可以由存储在标识处理器内的各种逻辑的机器可读介质上的表示性指令来实现,当由机器读取该表示性指令时,该指令使该机器制作用于执行本文所述的技术的逻辑。可将被称为“IP核”的此类表示存储在有形的机器可读介质上,并将其提供给各种客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。

此类机器可读存储介质可包括但不限于通过机器或设备制造或形成的制品的非瞬态的有形安排,其包括存储介质,诸如,硬盘;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器件,例如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。

因此,本发明的多个实施例还包括非瞬态的有形机器可读介质,该介质包含指令或包含设计数据,诸如定义了本文中描述的结构、电路、装置、处理器和/或系统特征的硬件描述语言(HDL)。也可将此类实施例称为程序产品。

仿真(包括二进制变换、代码变形等)

在一些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以将指令变换(例如,使用静态二进制变换和包括动态编译的动态二进制变换)、变形、仿真或以其他方式转换成一个或多个其他指令,以便由核进行处理。可在软件、硬件、固件、或它们的组合中实现该指令转换器。该指令转换器可以在处理器上,在处理器外,或者部分在处理器上且部分在处理器外。

图16是根据本发明的各实施例的、对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但作为替代,可在软件、固件、硬件或其各种组合中实现该指令转换器。图16示出可使用x86编译器1604来编译利用高级语言1602的程序,以生成可由具有至少一个x86指令集核的处理器1616原生地执行的x86二进制代码1606。具有至少一个x86指令集核的处理器1616表示能通过兼容地执行或以其他方式处理下列各项来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能的任何处理器:1)英特尔x86指令集核的指令集的本质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器1604表示用于生成x86二进制代码1806(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理而被执行在具有至少一个x86指令集核的处理器1616上。类似地,图16示出可以使用替代的指令集编译器1608来编译利用高级语言1602的程序,以生成可由不具有至少一个x86指令集核的处理器1614(例如,具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生地执行的替代指令集二进制代码1610。指令转换器1612被用来将x86二进制代码1606转换成可由不具有x86指令集核的处理器1614原生地执行的代码。该转换后的代码不大可能与替代性指令集二进制代码1610相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作并由来自替代指令集的指令构成。因此,指令转换器1612通过仿真、模拟或任何其他过程来表示允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码1606的软件、固件、硬件或它们的组合。

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