具有动态指令流映射的并行片式处理器的制作方法

文档序号:12287743阅读:274来源:国知局
具有动态指令流映射的并行片式处理器的制作方法与工艺

本发明涉及处理系统和处理器,且更具体地涉及具有动态指令流映射的管线处理器核心。



背景技术:

在现在的处理器核心中,管线用于执行与多个指令流对应的多个硬件线程,以使得可以通过资源共享和通过允许即使当关于事件、一个或多个硬件线程在等待时也继续执行而提供处理器资源的更高效使用。

在现有的系统中,典型地分配特定的资源和管线用于不同指令流的执行,且多个管线允许即使在管线忙碌时的情况期间也继续程序执行。但是,对于忙碌的管线仍然捆绑资源,且当分配给指令流的全部一个(或多个)管线忙碌时,指令流停滞(stalled),减小了处理器核心的潜在吞吐量。

因此将期望提供一种处理器核心和用于处理程序指令的方法,其提供改进的灵活性和吞吐量。因此,在现有技术中需要解决上述问题。



技术实现要素:

考虑第一方面,本发明提供一种处理器核心,包括:用于接收相应的多个指令流的指令的多个分派队列;用于并行地执行多个指令流的多个并行指令执行片;和分派路由网络,用于将分派队列的输出路由到指令执行片,以使得路由网络根据多个指令流的执行要求和多个并行执行片中的资源可用性,来动态地改变分派队列和多个并行指令片之间的关系。

考虑另一方面,本发明提供一种计算机系统,包括:至少一个处理器核心,用于执行相应的多个指令流的程序指令;和存储器,耦合到处理器核心,用于存储程序指令,其中,该至少一个处理器核心包括:用于接收程序指令的多个分派队列,用于并行地执行多个指令流的多个并行指令执行片,和分派路由网络,用于将分派队列的输出路由到指令执行片,以使得控制路由网络,以根据多个指令流的执行要求和多个并行执行片中的资源可用性,来动态地改变分派队列和多个并行指令片之间的关系。

考虑另一方面,本发明提供一种由处理器核心执行程序指令的方法,该方法包括:在处理器核心的多个分派队列中存储多个指令流的指令;利用分派路由网络将分派队列的输出路由到多个并行指令执行片;和通过经由分派路由网络从分派队列接收指令来利用指令执行片并行地执行多个指令流,以使得控制路由网络,以根据多个指令流的执行要求和多个并行执行片中的资源可用性,来动态地改变分派队列和多个并行指令片之间的关系。

本发明具体表现为处理器核心,计算机系统和方法。该方法是处理器核心的操作方法,且计算机系统是包括处理器核心的系统。处理器核心包括用于并行地执行多个指令流的多个并行指令执行片和由分派路由网络耦合到执行片的多个分派队列。控制分派路由网络以使得根据指令流的执行要求和指令执行片中资源的可用性来动态地改变在分派队列和指令执行片之间的关系。在本发明的某些优选实施例中,指令执行片可以被动态地重新配置为在单指令多数据(SIMD)指令执行和通常的基于每个指令的指令执行之间,允许那些指令类型的混合。在本发明的其他优选实施例中,具有大于单个指令执行片的宽度的操作数宽度的指令可以由动态地配置为对于要求更大的操作数宽度的特定指令协调一致的多个指令执行片来处理。在本发明的其他优选实施例中,当指令执行片忙于处理一个流的一个或多个先前接受的指令时,可以选择另一指令执行片以实现该流的下一指令的执行,允许即使当指令执行片之一停滞时也继续执行指令流。

附图说明

现在将参考如在下面的图中图示的优选实施例仅通过示例的方式描述本发明。

图1是根据本发明的优选实施例的图示实践根据本发明的实施例的技术的处理系统的框图;

图2是图示可用于实现图1的处理器核心20A-20B的处理器核心20的细节的框图;

图3是根据本发明的优选实施例的图示处理器核心20的指令分派的示意图;

图4是根据本发明的优选实施例的图示处理器核心20的另一指令分派的示意图;

图5是根据本发明的优选实施例的图示处理器核心20的细节的框图;

图6是根据本发明的优选实施例的图示图5的I/O片30的分段执行的细节的框图;

图7是根据本发明的优选实施例的图示可用于实现图6的指令执行片42A-42D的指令执行片42的细节的框图;

图8是根据本发明的优选实施例的图示可用于实现图6的指令执行片42A-42D的替代的指令执行片42AA的细节的框图;和

图9是根据本发明的优选实施例的图示可用于实现图6的负载存储片44A-44D的指令执行片44的细节的框图。

具体实施方式

本发明涉及处理器和处理系统,在该处理器和处理系统中,以执行片替换现有的管线,可以任意地分配执行片以执行指令,具体来说当执行流的当前指令的片忙碌时,且可以在运行时组合多个片以执行更宽的指令或者要求多个片处理多个数据的单指令多数据(SIMD)指令。提供多个分派队列以接收多个指令流,且分派队列经由分派路由网络耦合到指令执行片,以使得可以控制分派路由网络以根据指令执行片的可用性和/或指令处理的要求来执行对在指令执行片和分派队列之间的关系的以上动态重新配置。多个高速缓存片经由结果路由网络耦合到指令执行片,以使得高速缓存片也可以根据可用性或者根据其他标准改变与指令执行片的关系。结果路由网络提供指令执行片和/或高速缓存片的进一步处理所需要的结果和操作数(operand)的通信。

现在参考图1,示出了根据本发明的实施例的处理系统。示出的处理系统包括多个处理器10A-10D,每个处理器都与本发明的实施例一致。示出的多个处理系统是说明性的,且本发明的根据本发明的其他优选实施例的处理系统包括具有多线程核心的单处理器系统。处理器10A-10D在结构上相同且包括核心20A-20B和本地存储设备12,该本地存储设备12可以是高速缓存级或者内部系统存储器级。处理器10A-10B耦合到主系统存储器14,存储子系统16,该存储子系统16包括不可拆卸的驱动器和光驱动器,用于读取形成计算机程序产品并包括程序指令的诸如CD-ROM 17的介质,该程序指令通常实现至少一个操作系统、关联的应用程序、并可选地实现用于控制用于由处理器10A-10D执行的多个操作系统的分区的管理程序(hypervisor)。图示的处理系统还包括输入/输出(I/O)接口和器件18,诸如用于接收用户输入的鼠标和键盘以及用于显示信息的图形显示器。当图1的系统用于提供其中实现本发明的处理器体系结构的系统的图示时,应当理解所示出的体系结构不限制且意在提供其中应用本发明的技术的适当的计算机系统的实例。

现在参考图2,图示了可用于实现图1的处理器核心20A-20B的示例性处理器核心20的细节。处理器核心20包括存储从高阶高速缓存或者系统存储器取出的多个指令流、并向多个分派队列Disp0-Disp3呈现一个或多个指令流的指令高速缓存ICache。处理器核心20内的控制逻辑控制经由分派路由网络22从分派队列Disp0-Disp3向多个指令执行片ES0-ES7分派指令,该分派路由网络22允许指令从任何分派队列Disp0-Disp3到任何指令执行片ES0-ES7,虽然完全交叉点路由(cross-point routing)、即从任何分派队列到任何片的路由不是本发明的要求。指令执行片ES0-ES7执行对于指令流中的指令执行指令周期的执行周期部分需要的逻辑的、数学的及其他操作的排序和执行,且可以是相同的通用指令执行片ES0-ES7,或者处理器核心20可以包括专用执行片ES0-ES7。指令执行片ES0-ES7可以包括用于执行多个指令和/或指令的部分的多个内部管线,以使得如在这里描述的“忙碌”的指示也可以包括指令执行片ES0-ES7中特定的一个忙于处理给定指令流的多个指令的情况。指令执行片ES0-ES7由执行片通信网络29耦合,其中通过该执行片通信网络29,可以在指令执行片ES0-ES7之间交换值,例如当由一个片对由另一执行片生成的值执行进一步处理时。完全路由(或者交叉点)网络可以用于实现执行片通信网络29。替代地,可以仅在特定组的指令执行片之间做出指令执行片ES0-ES7之间的连接,例如,在某些实现中可以仅连接相邻的片。执行片通信网络29还用于串联要求同步/协调执行的SIMD或者大操作数指令的级联执行,虽然这种指令的执行也可以以去耦合方式实现。

指令执行周期的负载存储部分(即,与内部寄存器读取/写入相反的,被执行以维持高速缓存一致性的操作)由多个高速缓存片LS0-LS7执行,该多个高速缓存片LS0-LS7由回写(结果)路由网络24耦合到指令执行片ES0-ES7。在示出的实施例中,高速缓存片LS0-LS7中的任何高速缓存片可用于执行任何指令执行片ES0-ES7的指令的负载存储操作部分,但是这不是本发明的要求。指令执行片ES0-ES7可以将内部指令同时发布到多个管线,例如,指令执行片可以使用多个内部管线同时进行执行操作和负载/存储操作和/或可以执行多个运算或者逻辑操作。内部管线可以是相同的,或者可以是不同类型,诸如浮点、标量、负载/存储等。另外,给定执行片可以具有到回写路由网络24的多于一个端口连接,例如,端口连接可以专用于到高速缓存片LS0-LS7的负载存储连接,同时另一端口可以用于传递值到其他片和从其他片传递值,这些其他片诸如专用片或者其他指令执行片。回写结果从指令执行片ES0-ES7的各种内部管线被调度到将指令执行片ES0-ES7连接到回写路由网络24的一个或多个回写端口。负载存储路由网络28耦合高速缓存片LS0-LS7以提供用于SIMD指令的执行的转换转移,具有大于高速缓存片LS0-LS7的宽度的数据宽度的指令的处理、及要求高速缓存片LS0-LS7之间数据的转化(translation)或者重新校准(re-alignment)的其他操作。I/O路由网络26将高速缓存片LS0-LS7耦合到一对转化片XS0,XS1,该对转化片XS0、XS1提供对可能被集成在处理器核心20内或者在处理器核心20之外的下一更高阶级别的高速缓存或者系统存储器的访问。虽然图示的实例示出了高速缓存片LS0-LS7和执行片ES0-ES7的匹配的数目,但是实际上,可以根据特定实现需要的资源提供不同数目的每个类型的片。如上所述,分派路由网络22是单向网络,但是也可以以如所示的交叉点网络的形式,如负载-存储路由网络28和I/O路由网络26。

现在参考图3,示出了到处理器核心20内的指令执行片ES0、ES1和ES2的指令路由的实例。在本公开中给出的实例中,应当理解分派给指令执行片的指令可以是全外部指令或者外部指令的部分、即解码的“内部指令”。另外,在给定周期中,分派给任何指令执行片ES0、ES1和ES2的内部指令的数目可能大于一,且并非每个指令执行片ES0、ES1和ES2必须地在给定周期中接收内部指令。图3示出分别示出了发送到指令执行片ES0、ES1和ES2的指令的序列的三个列。(多)行对应于(多个)指令的指令分派序列,且虽然为图示的简单起见对准这些行,但应当理解实际上这些分派通常不同时发生,且关于何时执行片可能完成或者接收特定指令,在各列之间没有限制。在行1-2中,独立指令被分派给每一个指令执行片ES0、ES1和ES2。在行3中,通过动态地组合指令来执行片ES1和ES2,分派要求更宽执行单元的指令用于执行,同时指令执行片ES0发送具有匹配指令执行片ES0、ES1和ES2的宽度的宽度的另一指令。在行4-5中,独立指令被再次分派给指令执行片ES0、ES1和ES2中的每一个。在行6-7中,通过链接指令执行片ES0、ES1和ES2以执行并行操作而执行具有三个数据值的SIMD指令,且在行8-9中,通过在指令执行片ES2发送其他独立指令的同时链接指令执行片ES0,ES1而执行具有两个数据值的SIMD指令。在行10中,指令执行片ES0、ES1和ES2再次开始指令的独立执行。图3中提供的实例仅是说明性的且被提供以示出在处理器核心20中提供的动态重新配置的灵活性。如可以看到的,可配置性提供了用于在执行各种类型的操作、诸如执行SIMD或者可变宽度指令流的同时将全部指令执行片ES0-ES7维持在活动执行状态的可能。

现在参考图4,示出了处理器核心20内的指令处理的另一实例,且其在图4中分开地图示,但是可以与在图3的实例中提供的任何或者全部指令执行片重新配置结合。图4示出分别示出了发送到指令执行片ES0、ES1和ES2的指令序列的三个列。如在图3中那样,(多)行对应于指令序列,且每个块中示出的号码是正在执行的指令属于的从0到2编号的指令流的号码。在行1-2中,对于相应的指令流0-2中的每一个将指令分派给指令执行片ES0、ES1和ES2中的每一个。在行3中,指令执行片ES1变为忙碌的,因为指令执行片ES1仍然处理指令流1中的当前指令。在行4中,不管由于优先化、循环(round-robin)、或是允许指令流的指令被路由至除了用于指令流的默认指令执行片之外的指令执行片的其他方案,向指令执行片ES2分派指令流1的指令。在行5中,指令执行片ES0在从行4接受指令之后变为忙碌的,指令执行片ES1可用于接受另外的指令,因此指令执行片ES1接收指令流1的下一指令的分派。指令执行片ES2也正在执行指令流1的指令。在行6中,指令执行片ES0仍然是忙碌的,且指令执行片ES1和ES2分别恢复指令流1和2的指令的执行。在行7中,指令执行片ES1被增选为执行指令流0的下一指令,同时指令执行片ES0仍然忙于执行当前指令,且指令执行片ES2执行指令流2的另一指令。在行8中,指令执行片ES1执行指令流1的指令,同时指令执行片ES2执行指令流2的另一指令。图4中提供的实例仅是说明性的,且被提供以示出处理器核心20中提供的指令流分派的映射的灵活性。如可以看到的,可路由分派提供了即使当对于某些执行片遇到忙碌状况时也将全部指令流维持在活跃执行状态的可能性。

现在参考图5,图示了处理器核心20的更多细节。处理器核心20包括分支执行单元32、控制序列的撷取和排序的指令撷取单元(IFetch)33和指令排序器单元(ISU)34。自学指令缓冲器(IB)35分组指令以执行诸如图3中所示的重新配置,即,在分派队列中布置指令以建立SIMD和可变宽度操作的执行。将指令缓冲器(IBUF)36分区以维持每一指令流的分派队列(图2的Disp0-Disp3),且分派路由网络22将IBUF 36耦合到分段的执行和高速缓存片30。指令流和网络控制块37执行分段的执行和高速缓存片30和分派路由网络22的控制,以执行如图3和图4所示的片的动态控制,以及如以下更详细地描述的其他操作。还提供指令完成单元38以跟踪由ISU 34排序的指令的完成,并控制分段的执行和高速缓存片30内的高速缓存片的回写操作。提供功率管理单元(PMU)39通过减少或者增加分段的执行和高速缓存片30内活动片的数目来用于节能。

现在参考图6,图示了处理器核心20内的分段的执行和高速缓存片30的更多细节。指令执行片42A-42D例如表示图2中的指令执行片ES0、ES2、ES4和ES6,且高速缓存片44A-44D表示图2中的高速缓存片LS0、LS2、LS4和LS6。回写路由网络24以八个总线的交叉点集合的形式,该八个总线允许指令执行片ES0、ES2、ES4和ES6中的每一个和高速缓存片LS0、LS2、LS4和LS6中所选的相应的一个之间的同时双向通信。相对于双向通信,用于指令执行片的结果的回写的高速缓存片可以不同于用于数据的加载的高速缓存片,因为如图3-4所示,指令的序列可能在指令流之间改变,且在这种情况下通常期望当在指令流的序列中改变用于执行下一指令的执行片时将高速缓存片连接到不同的指令执行片。另外,高速缓存片和指令执行片之间的关系可以任意地改变,例如,来说参考大量数据的指令,可以分配多个高速缓存片用于加载,同时对于修改大量值的指令,可以分配多个高速缓存片用于结果回写操作。通过提供支持高速缓存片和指令执行片之间的任意连接的回写路由网络24,通过使能值从一个或多个生成片到一个或多个接收片的转移来高效地支持分段执行,接收片可以是与生成片相同类型的片,或者可以是另一片类型,例如,一个或多个专用片。提供群围墙(cluster fence)46以用于将回写路由网络耦合到指令执行片和高速缓存片、例如指令执行片ES1、ES3、ES5和ES7以及高速缓存片LS1、LS3、LS5和LS7的其他组(群)的其他回写路由网络。

现在参考图7,示出了可用于实现图6中的指令执行片42A-42D的执行片(ES)42的实例。由寄存器阵列(REGS)50经由分派路由网络22接收来自分派队列的输入,以使得可以在执行保留站(ER)53中排列操作数和指令。建造寄存器阵列50以具有用于独立指令流或者SIMD指令的独立寄存器集合,同时在多个指令执行片正在执行非SIMD指令或者一个或多个相同指令流的SIMD指令的相同分段的情况下,对实例建造跨越多个指令执行片复制的相关的寄存器集合。别名映射器(alias mapper)51将寄存器阵列中的值映射到任何外部参考,诸如经回写路由网络24与其他片交换的回写值。历史缓冲器HB 52提供由ES 42执行的指令的寄存器目标的恢复性能。从回写路由网络24选出的结果值和来自寄存器阵列50的操作数值由运算逻辑单元(ALU)输入多路复用器54来选择并由ALU 55来操作。结果缓冲器56从ALU 55接收结果,且多路复用器57使得结果缓冲器56的值可用于回写路由网络24的一个或多个通道。取决于操作的目标,该一个或多个通道可以由下一ES使用处理指令流的下一指令或者由高速缓存片用于存储结果。多路复用器57还提供经由执行片通信网络29到其他指令执行片的连接。回写路由网络24还由回写缓冲器58耦合到ER 53,历史缓冲器52和ALU输入多路复用器54,以使得分别支持资源值的回写、完成的指令的撤销和关于结果的进一步计算。

现在参考图8,示出了可用于实现图6中的指令执行片42A-42D的执行片(ES)42AA内的细节的另一实例。执行片42AA类似于图7的执行片42,所以以下将仅具体描述它们之间的差异。图示执行片42AA横靠另一执行片42BB以图示可以在图2的执行片ES0-ES7内的一对执行片之间,或者在其他组的执行片之间提供的执行互锁控制,提供执行互锁控制用于支持单个指令流的执行的执行片之间的协调,因为否则执行片ES0-ES7独立地管理它们相应的指令流的执行。执行片42AA包括支持与执行片42AA对应的指令流的指令的无序和同时执行的多个内部执行管线70A-70C和72。由执行管线70A-70C和72执行的指令可以是实现经分派路由网络22接收的指令的部分的内部指令,或者可以是直接经分派路由网络22接收的指令,即,指令的管线可以由指令流本身支持,或者可以在执行片42AA的上游执行指令的解码。图示执行片72分开地多路复用以示出可以在执行片42AA内提供单个管线、多个管线或者两种类型的执行单元。管线可能在设计和功能上不同,或者取决于将由执行片42AA执行的指令的类型,某些或者全部管线可以相同。例如,可以提供特定管线用于地址计算、标量或者矢量操作、浮点操作等。提供多路复用器57A-57C用于执行结果到结果缓冲器56A/从结果缓冲器56A的路由和回写结果到回写路由网络24、I/O路由网络26及一个或多个其他路由网络28的路由,可以提供这些路由网络用于路由用于在片之间共享的特定数据或者发送到一个或多个高速缓存片LS0-LS7的回写操作。

现在参考图9,示出了可用于实现图6中的高速缓存片44A-44D的高速缓存片(LS片)44的实例。负载/存储访问队列(LSAQ)60耦合到回写路由网络24,且由提供从LSAQ 60或者从回写路由网络24到数据高速缓存62的高速缓存目录63的输入的多路复用器61选择到回写路由网络24和LSAQ 60的直接连接。到其他高速缓存片的连接由负载-存储路由网络28提供,耦合该负载-存储路由网络28以从数据高速缓存62接收数据并将数据提供到另一片的数据未对准块64。数据格式化单元65经由缓冲器66将高速缓存片44耦合到回写路由网络,以使得回写结果可以从一个执行片直写到另一执行片的资源。数据高速缓存62还耦合到I/O路由网络26,用于从高阶高速缓存/系统存储器加载值和用于从数据高速缓存62清除或者驱逐值。

尽管已经参考本发明的优选实施例特别示出和描述了本发明,但本领域技术人员将理解,在不脱离本发明的范围的情况下可以在其中做出形式和细节的前述及其他改变。

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