具有多个核、共享的核扩展逻辑及共享的核扩展利用指令的处理器的制作方法

文档序号:16929708发布日期:2019-02-22 20:09阅读:153来源:国知局
具有多个核、共享的核扩展逻辑及共享的核扩展利用指令的处理器的制作方法

各实施例涉及处理器。具体而言,各实施例涉及具有多个核的处理器。



背景技术:

图1是现有技术的处理器100的框图。处理器具有多个核101。具体而言,所示出的处理器具有核0101-0、核1101-1到核m101-m。作为示例,可以有两个、四个、七个、十个、十六个或任何其他合适的核数量。核中的每一个都包括对应的单指令多数据(simd)执行逻辑102。具体而言,核0包括simd执行逻辑102-0、核1包括simd执行逻辑102-1,核m包括simd执行逻辑102-m。即,每个核地复制simd执行逻辑。每一simd执行逻辑都可操作,以处理simd、矢量或紧缩的数据操作数。操作数中的每一个都可以具有多个较小数据元素,诸如8比特、16比特、32比特或64比特数据元素,它们在操作数中被紧缩在一起并由simd执行逻辑并行地处理。

在某些处理器中,simd执行逻辑中的每一个都可以表示相对大量的逻辑。例如,这可以是当simd执行逻辑中的每一个都将处理宽的simd操作数时的情况。某些处理器能够处理具有相对宽的宽度的矢量或紧缩的数据操作数,诸如,例如,128比特操作数、256比特操作数、512比特操作数、1024比特操作数等等。通常,处理这样宽的操作数所需的simd执行逻辑往往相对来说大,消耗相对来说大量的管芯面积,增大制造处理器的成本,在使用过程中消耗相对来说大量的功率。每个核地复制相对大的simd执行逻辑会加剧这样的问题。此外,在许多应用或工作负荷情况下,每个核地复制的simd执行逻辑倾向于至少某些时间未被充分使用。如果核的数量在未来持续增大,则这样的问题可能会变得越来越严重。

更进一步,在图1的现有技术处理器中,每一个核还具有常规流控制逻辑。具体而言,核0具有流控制逻辑103-0,核1具有流控制逻辑103-1,而核m具有流控制逻辑103-m。通常,流控制逻辑可以被设计或优化以涵盖范围广泛的使用模型,例如,引入推理性执行。然而,这一般倾向于具有相对较小的对于simd和各种其他高吞吐量计算的优点,而是倾向于伴随有比较高的功率消耗。

附图说明

可以通过参考用来说明本发明的各实施例的下列描述和附图来理解本发明。在附图中:

图1是现有技术的处理器的框图。

图2是具有处理器的实施例和存储器的实施例的系统的实施例的框图。

图3是具有核0(包括共享的核扩展接口逻辑的实施例)并具有共享的核扩展逻辑(包括核接口逻辑的实施例)的实施例的处理器的实施例的框图。

图4是处理共享的核扩展调用指令的实施例的方法的实施例的方框流程图。

图5是共享的核扩展命令寄存器的示例实施例的框图。

图6是处理共享的核扩展读取指令的实施例的方法的实施例的方框流程图。

图7是处理共享的核扩展中止指令的实施例的方法的实施例的方框流程图。

图8a是示出了根据本发明的各实施例的示例性有序流水线和示例性寄存器重命名、无序发出/执行流水线的框图。

图8b是示出了根据本发明的各实施例的要包括在处理器中的有序架构核和示例性寄存器重命名,无序发出/执行架构核的示例性实施例的框图。

图9a是根据本发明的各实施例的单个处理器核的框图,以及其与管芯上的互连网络的连接以及其第2级(l2)缓存904的本地子集。

图9b是根据本发明的各实施例的图9a中的处理器核的一部分的展开图。

图10是根据本发明的各实施例的可以具有一个以上的核,可以具有集成的存储器控制器,并可以具有集成的图形的处理器的框图。

所示出的图11是根据本发明一实施例的系统的框图。

所示出的图12是根据本发明的一个实施例的第一更具体的示例性系统的框图。

所示出的图13是根据本发明的一个实施例的第二更具体的示例性系统的框图。

所示出的图14是根据本发明一实施例的soc的框图。

图15是根据本发明的各实施例的比较使用软件指令转换器来将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。

具体实施方式

此处公开了具有多个核和由多个核共享的核扩展逻辑(例如,可操作用于对每一个核执行数据处理)的处理器的各实施例。此处还公开了共享的核扩展利用指令、执行共享的核扩展利用指令的处理器、当处理或执行共享的核扩展利用指令时由处理器执行的方法,以及包括一个或多个处理或执行共享的核扩展利用指令的处理器的系统。

在下面的描述中,阐述了很多具体细节,诸如特定微架构细节、特定命令寄存器格式、特定共享的核扩展利用指令功能、共享的核扩展利用指令的特定组、系统组件的特定类型和相互关系,以及特定逻辑分区/集成细节。然而,应该理解,本发明的各实施例可以在没有这些具体细节的情况下实施。在其他情况下,没有详细示出已知的电路、结构以及技术,以便不至于使对本描述的理解变得模糊。

图2是具有处理器210的实施例和存储器218的实施例的系统209的实施例的框图。处理器和存储器通过一个或多个总线或其他互连219彼此耦合,或以别的方式彼此通信。在各实施例中,系统209可以表示台式计算机系统、膝上型计算机系统、服务器计算机系统、网络元件、蜂窝电话,或具有多核处理器和存储器的另一种类型的电子设备。

处理器210具有多个核211。所示出的处理器具有核0211-0到核m211-m。作为示例,可以有两个、四个、七个、十个、十六个、三十二个、六十四个、一百二十八个,或更多核,或特定实现所需的任何其他合理地合适的核数。在某些实施例中,每一个核都能够基本上独立于其他核地操作。每一个核都能够处理至少一个线程。如例图所示,核0具有线程0212-0,并可以可任选地包括直到线程p212-p。类似地,核m具有线程0212-0,并可以可任选地包括直到线程p212-p。线程p的数量可以是任何合理地合适的数量的线程。本发明的范围不仅限于任何已知数量的核或那些核能够处理的任何已知数量的线程。

处理器可以是各种复杂指令集计算(cisc)处理器、各种精简指令集计算(risc)处理器、各种超长指令字(vliw)处理器中的任何一种,其各种混合型,或其他类型的处理器。在某些实施例中,核可以是用于台式机、膝上型计算机、服务器等计算机系统的类型的通用处理器的通用核。在某些实施例中,核可以是特殊用途的核。合适的特殊用途的核的示例包括,但不仅限于,图形处理器核、数字信号处理器(dsp)核,以及网络处理器核,仅举几个例子而已。在某些实施例中,处理器可以是具有多个通用或特殊用途的核以及图形单元、媒体块、与核集成在芯片上的系统存储器中的一个或多个的片上系统(soc)。

处理器还包括共享的核扩展逻辑214的实施例。共享的核扩展逻辑由核211中的每一个(例如,可操作以对于核中的每一个,执行数据处理)共享。共享的核扩展逻辑包括可操作以对于每一个核执行数据处理的共享的数据处理逻辑216。共享的核扩展逻辑和核通过一个或多个总线或处理器的其他互连217彼此耦合。核和共享的核扩展逻辑包括对应的接口逻辑213、215以允许核和共享的核扩展逻辑中的每一个上的一个或多个物理线程彼此连接或交互(例如用于核的线程以调用共享的核扩展逻辑,以执行数据处理,检查数据处理的状态,中止数据处理,同步上下文切换时的虚拟存储器属性,路由在数据处理过程中产生的页面错误,等等)。由共享的核扩展逻辑代表每一物理线程执行的计算任务可以在该特定的物理线程的逻辑进程下运行。如下文进一步描述的,可以每个物理线程地提供用于接口的上下文。

具体而言,核0包括共享的核扩展接口逻辑213-0的一个实施例,包括核0上的线程0特定的至少某些逻辑和核0上的线程p特定的至少某些逻辑。同样,核m包括共享的核扩展接口逻辑213-m的一个实施例,包括核m上的线程0特定的至少某些逻辑,和核m上的线程p特定的至少某些逻辑。其他核中的每一个(如果有的话)可以类似地包括这样的共享的核扩展接口逻辑。共享的核扩展逻辑214包括对应的核接口逻辑215的实施例。每一核211都可以通过其对应的共享的核扩展接口逻辑213,与共享的核扩展逻辑214的核接口逻辑215连接或交互。在某些实施例中,共享的核扩展接口逻辑213,以及核接口逻辑215,可以提供架构接口(例如,新的架构宏指令和新的架构寄存器),以及微架构接口或硬件机制(例如,数据处理调度逻辑、存储器管理单元(mmu)同步逻辑、页面错误路由逻辑等等),以允许核共享该共享的核扩展逻辑(例如,共享由该共享的数据处理逻辑216作出的数据处理)下面将进一步讨论共享的核扩展接口逻辑213和核接口逻辑215的详细的示例实施例。

在各种不同的实施例中,共享的数据处理逻辑216可以表示不同类型的数据处理逻辑。如上文在背景部分所讨论的,某些类型的数据处理逻辑(例如,某些宽的simd执行单元)通常每个核地被复制。如上文所提及的,此复制的逻辑常常倾向于比较大。此外,对于许多常见的工作负荷情况,至少某些时间,此复制的逻辑常常被未被充分使用。这样的逻辑的复制一般倾向于消耗相对大量的管芯面积,增大制造成本,消耗相对大量的功率。在某些实施例中,通常每个核地复制的这样的相对大的和/或通常未充分使用的数据处理逻辑,可以作为数据处理逻辑的单一共享的副本,而从多个核中提取到共享的核扩展逻辑中。此外,共享的核扩展逻辑214可以使用为高吞吐量需要的或优化的流控制逻辑,而不是被设计或优化以涵盖范围广泛的使用模型,例如,引入推理性执行,和图1的核的常规流控制逻辑的情况一样。这一般倾向于为面向吞吐量的算法提供较高级别的功率-性能效率。

在各实施例中,共享的数据处理逻辑可以表示面向吞吐量的硬件计算功能逻辑、高吞吐量计算引擎、矩阵乘法逻辑、矩阵转置逻辑、有限过滤器逻辑、绝对差值求和逻辑、直方图计算逻辑、集中-分散指令实现逻辑、超越矢量执行逻辑等等。在某些实施例中,共享的数据处理逻辑可以包括执行单元,诸如,例如,simd执行单元(例如,潜在地相对宽的simd执行单元)。在某些实施例中,共享的核扩展逻辑可以与,例如,存储器218中的共享的核扩展数据结构208(例如,矩阵、表等等)进行交互。

有利地,与复制逻辑相比,共享的核扩展逻辑可以帮助缩小实现逻辑所需的整体管芯面积、制造逻辑的成本,和/或由逻辑消耗的功率中的一项或多项。即,共享的核扩展逻辑可以允许多个核共享共同数据处理功能评估硬件资源,而不会招致每个核地复制这样的资源的一般高集成成本。为清楚起见,特定共享的数据处理逻辑不需要大,虽然当相对来说大的逻辑由核共享代替每个核地复制时,常常将实现大小、成本,以及功率减小的最大的优点。此外当共享的逻辑将以别的方式(如果它被每个核地复制)相对来说未被充分使用时,将实现最大的优点,因为共享可能倾向于提高逻辑的利用,由此可以合并未充分使用的或不需要的逻辑,以缩小管芯面积和制造成本。作为进一步的优点,共享的核扩展逻辑还可以潜在地用于允许核针对一种类型的处理(例如,对于标量工作负荷性能、功率和面积)自定义或优化,而同时允许共享的核扩展逻辑针对另一种类型的处理(例如,对于面向吞吐量的工作负荷性能,功率和面积)自定义或优化。

图3是具有核0311-0(包括共享的核扩展接口逻辑313的示例实施例)并具有共享的核扩展逻辑314的实施例(包括核接口逻辑315的示例实施例)的处理器310的实施例的框图。如前所述,处理器还可以包括一个或多个其他核到核m(未示出)。除共享的核扩展接口逻辑313之外,核0还具有在核中通常发现的类型的常规逻辑334(例如,一个或多个执行单元、架构寄存器、一个或多个缓存、微架构逻辑等等)。本发明的范围不仅限于任何已知的这样的常规逻辑。除核接口逻辑315之外,共享的核扩展逻辑314还具有共享的数据处理逻辑316,以及调度来自共享的数据处理逻辑上的多个核的数据处理或任务的调度器344。

在核0311-0上运行的一个或多个物理线程中的每一个都可以使用共享的核扩展接口逻辑313,以与共享的核扩展逻辑314连接。共享的核扩展接口逻辑313包括核0的指令集322的共享的核扩展利用指令323。指令集是核的指令集架构(isa)的一部分。isa表示与编程相关的核的架构的一部分。isa通常包括处理器的原始指令、架构寄存器、数据类型、寻址模式、存储器架构、中断和异常处理,等等。isa与微架构不同,该微架构一般表示选择用于实现isa的特定设计技术。带有不同的微架构的处理器或核可以共享共同的isa。指令集的指令,包括共享的核扩展利用指令323,表示机器指令、宏指令,或较高级别的指令(例如,提供给核供执行的指令),而不是微指令或微操作,或较低级别的指令(例如,由解码逻辑解码机器指令或宏指令产生的那些)。

共享的核扩展接口逻辑313还包括核0,共享的核扩展命令寄存器(scecr)328的线程0组。每一物理线程都可以具有一组与它相关联的scecr寄存器,作为要保存并恢复的其上下文的一部分,不管其他线程的进度。在某些实施例中,对于核0,可以有每个线程地为在核0上运行的一个或多个物理线程中的每一个提供的多组scecr。例如,在所示实施例中,核0,线程0scecr可以属于线程0。类似地,在核0上运行的每一物理线程都可以具有一组核0,与共享的核扩展逻辑314连接的线程特定的scecr。可另选地,可以有核0的单组核0scecr。在这样的情况下,在硬件级别,在物理线程之间,可以有scecr的时间共享。上下文可以在上下文切换时被换出核0scecr,并保存和恢复。

在示图中,示出了scecr0328-0到scecrn328-n。即,有n+1个寄存器。数量n+1可以是任何所需的数量,诸如两个、四个、八个、十六个、三十二、六十四,或某种其他数量。没有数量n+1是2的幂的要求,虽然这一般倾向于提供有效率的寄存器寻址。这些寄存器中的给定一个在本文中一般地表示为scecrx,其中,x可以表示寄存器scecr0到scecrn中的任何一个。

在某些实施例中,共享的核扩展命令寄存器可以是核和/或处理器的isa的在架构上可见的寄存器。架构寄存器一般表示管芯上处理器存储器位置。架构寄存器此处也可以被简称为寄存器。除非另作说明或显而易见的,此处使用短语“架构寄存器以及寄存器”来指对软件和/或编程器(例如,软件可见的)可见的寄存器和/或通过宏指令来指定的寄存器。这些寄存器与给定微架构中的其他非架构的或非在架构上可见的寄存器(例如,指令所使用的临时寄存器,重新排序缓冲器,隐退寄存器等等)不同。

共享的核扩展利用指令323用于提交、监测,并中止对用于要被执行的数据处理的共享的核扩展逻辑314的调用。作为示例,共享的核扩展利用指令可以用于并行编程并可以被包括在指令集中(例如,作为指令集的扩展),以提高效率和/或并行编程工作负荷的吞吐量。共享的核扩展利用指令可以显式地指定(例如,通过比特或一个或多个字段)或以别的方式指出(例如,隐式地指出)核0共享的核扩展命令寄存器328的共享的核扩展命令寄存器(scecrx)。共享的核扩展寄存器可以向共享的核扩展逻辑提供处理器的架构硬件接口。

在所示实施例中,共享的核扩展利用指令323包括具有格式sce调用(scecrx,参数)的共享的核扩展(sce)调用指令324。scecrx指出核0共享的核扩展命令寄存器328中的一个,参数指出下面将进一步讨论的与调用相关联的一个或多个参数。所示出的共享的核扩展利用指令还包括具有格式sce读取(scecrx)的sce读取指令325。另一个共享的核扩展利用指令是具有格式sce中止(scecrx)的sce中止指令326。再一个共享的核扩展利用指令是具有格式sce等待(scecrx)的sce等待指令327。这些指令中的每一个都可以包括可操作用于标识要被执行的指令和/或操作的操作代码或操作码(例如,多个比特或一个或多个字段)。下面将进一步讨论这些说明性共享的核扩展利用指令中的每一个的功能。

应该理解,这只是共享的核扩展利用指令的合适的组的一个说明性示例。例如,在其他实施例中,可以可任选地省略某些所示出的指令,可以可任选地向共享的核扩展利用指令中添加额外的指令。此外,其他共享的核扩展利用指令和它们的组也是可以的,对得益于本公开内容的所属领域的技术人员显而易见的。

在核0311-0上运行的物理线程中的一个可以发出共享的核扩展利用指令323中的一个。由该线程所发出的共享的核扩展利用指令可以指出合适的核0共享的核扩展命令寄存器328。合适的核0共享的核扩展命令寄存器可以对应于线程(例如,线程0),并每个线程地提供上下文。

再次参考图3,核0包括解码逻辑348。解码逻辑还可以被称为解码器或解码单元。解码逻辑可以接收和解码较高级别的机器指令或宏指令,并输出一个或多个较低级别的微操作、微代码入口点、微指令,或反映原始较高级别的指令和/或从原始较高级别的指令导出的其他较低级别的指令或控制信号。一个或多个较低级别的控制信号可以通过一个或多个较低级别的(例如,电路级别或硬件级别)操作来实现较高级别的指令的操作。解码器可以使用各种不同的机制来实现,包括,但不仅限于,微代码只读存储器(rom)、查询表、硬件实现、可编程逻辑阵列(pla),及本领域内已知的用来执行指令解码的其他机制。此外,在某些实施例中,可以使用指令仿真器、转换器、变形器、解释器或其他指令转换逻辑来代替解码逻辑和/或作为其补充。

sce指令执行逻辑330与解码逻辑348耦合以及与核0共享的核扩展命令寄存器328耦合。共享的核扩展指令执行逻辑可以从解码器接收一个或多个微操作、微代码入口点、微指令、其他指令,或反映共享的核扩展利用指令或从其导出的其他控制信号。共享的核扩展指令执行逻辑可操作用于响应于共享的核扩展利用指令(例如,响应于来自解码器的控制信号)和/或如共享的核扩展利用指令所指定的,执行动作。在某些实施例中,共享的核扩展指令执行逻辑和/或处理器可以包括可操作用于执行和/或处理共享的核扩展利用指令并响应于共享的核扩展利用指令和/或如其所指定的,执行动作的特定的逻辑(例如,潜在地与软件和/或固件相结合的电路或其他硬件)。

在所示实施例中,共享的核扩展指令执行逻辑被包括在共享的核扩展控制逻辑329内。共享的核扩展控制逻辑与下面将进一步讨论的共享的核扩展命令寄存器328、解码逻辑348以及存储器管理单元331耦合。共享的核扩展控制逻辑可以帮助对共享的核扩展接口逻辑313的各种控制、管理、协调、定时以及相关的实现方面。

如上文所提及的,核0的指令集包括sce调用指令324。sce调用指令可以被用来提交对共享的核扩展逻辑314的调用,以代表核(例如,代表在核上运行的线程)来执行数据处理。作为示例,在核0上运行的物理或逻辑线程可以发出sce调用指令,以便向共享的核扩展逻辑发送要被执行的数据处理的调用或命令。在某些实施例中,调用或命令可以通过共享的核扩展命令寄存器328中的一个或多个传递到共享的核扩展逻辑。例如,实施例的共享的核扩展调用指令可以指定或以别的方式指出核0共享的核扩展命令寄存器328中的一个(例如,scecrx)。即,可以使用新的sce调用宏指令,从核上的线程,访问共享的核扩展命令寄存器。在某些实施例中,sce调用指令还可以指定或以别的方式指出更多参数中的一个,以进一步指定、限定,或定义要执行的数据处理。基于sce调用指令(例如,基于sce调用指令的一个或多个参数),数据可以被写入或存储在指出的共享的核扩展命令寄存器(例如,scecrx)中。如果对已经专用于以前的sce调用或被其占用的共享的核扩展命令寄存器作出当前sce调用,那么,可以阻止当前sce调用,直到占用的共享的核扩展命令寄存器被释放(例如,当相关联的调用完成或被中止时)。随后,共享的核扩展逻辑可以访问所指出的共享的核扩展命令寄存器(例如,scecrx),包括写入或存储在其中的数据,并可以实现调用或命令(例如,执行请求的数据处理)。

图4是处理sce调用指令的实施例的方法450的实施例的方框流程图。在各实施例中,方法可以由处理器、核或另一种类型的指令处理设备来执行。在某些实施例中,方法450可以由图2的处理器210,或图3的核0311-0,或类似的处理器或核来执行。可另选地,方法450可以由完全不同的处理器、核,或指令处理设备来执行。此外,处理器210以及核311-0还可以执行与方法450的操作和方法相同、类似、或不同的操作和方法的实施例。

在框451,在具有多个核的处理器的一个核内,接收sce调用指令。在各方面,可以在核上从核外源(例如,从主存储器、盘、或总线或互连)接收sce调用指令,或可以在核的一部分(例如,在解码逻辑、调度逻辑等等)从核内的其他逻辑(例如,指令缓存、队列、调度逻辑等等)接收。sce调用指令将导致核调用共享的核扩展逻辑以执行数据处理。共享的核扩展逻辑被多个核共享。sce调用指令指出共享的核扩展命令寄存器,还指出一个或多个参数。一个或多个参数指定要由共享的核扩展逻辑执行的数据处理。

在某些实施例中,一个或多个参数可以提供指向存储器中的具有与调用相关联的命令属性的命令属性数据结构的指针(例如,显式的虚存指针)、指向存储器中的将要对其执行数据处理的一个或多个输入数据操作数的一个或多个指针(例如,一个或多个显式的虚存指针),以及指向存储器中的将存储数据处理的结果的一个或多个输出数据操作数的一个或多个指针(例如,一个或多个显式的虚存指针)中的一个或多个。例如,在某些实施例中,一个或多个参数可以提供要存储在和/或用于导出下面进一步将讨论的图5所示的字段中的信息。可另选地,在其他实施例中,一个或多个字段可以具有操作码以及自变量的直接编码,代替存储器指针。

在框452,响应于sce调用指令,共享的核扩展逻辑被调用,执行数据处理。在某些实施例中,调用共享的核扩展逻辑可以包括基于由指令指出的一个或多个参数,写入或以别的方式将数据存储在由指令指出的共享的核扩展命令寄存器中。

图5是共享的核扩展命令寄存器528的示例实施例的框图。共享的核扩展命令寄存器具有若干个字段。在所示实施例中,这些字段包括,从左到右,状态字段553、进度字段554、命令指针字段555、输入数据操作数指针字段556以及输出数据操作数指针字段557。这些字段中的每一个都可以包括足以传达特定实现所需的信息的若干个比特。

状态字段553可以被用来提供对应于共享的核扩展命令寄存器的调用的状态。这样的状态的示例包括,但不仅限于,调用是有效的(例如,它在进行中),调用已完成,调用具有错误等等。作为示例,可以使用两个比特来指定如前所述的三个状态条件中的任何一个。在另一个示例中,可以使用单一比特来编码两个状态条件中的任何一个,诸如有效和无效。有效可以表示调用当前正在进行中。无效可以表示发生了错误。

进度字段554可以被用来提供对应于共享的核扩展命令寄存器的调用的进度。进度可以表示完成进度的级别,或调用或命令向完成前进了多远。进度字段可以有效地实现计数在执行调用时到目前为止已完成的工作量的计数器。在某些实施例中,进度可以通过原子提交点来表示。例如,每当原子子操作由sce逻辑完成时,可以增大计数器。原子子操作可以在一种数据处理与另一种数据处理之间不同(例如,在一个示例中,当已经处理完一定数量的缓存线的数据时)。在某些实施例中,进度字段可以被用来提供相对于共享的核扩展逻辑的数据处理的进度原子性,以及在共享的核扩展逻辑上抢先占有和重新调度运行命令的能力。当调用的执行中断时(例如,在从一个线程到另一个线程的上下文切换或在错误时),可以保存进度字段。以后,可以恢复进度字段,并恢复与调用相关联的数据处理(例如,当线程再提交时)。恢复进度字段可以允许数据处理在它离开的地点恢复。这是有用的,特别是当要由sce逻辑执行的数据处理量相对大和/或需要花费相对大量的时间才完成时。

命令指针字段555可以被用来提供指向与共享的核扩展命令寄存器对应的调用的调用或命令属性信息558的指针。在某些实施例中,调用属性信息可以被包括在调用属性数据结构中。在某些实施例中,调用属性信息可以存储在存储器518中的一个或多个存储器位置中。在某些实施例中,指针可以是显式的虚存指针。调用属性信息还可以进一步指定、限定、定义,或表征调用的属性。例如,调用属性信息还可以进一步指定、限定、定义,或表征要由共享的核扩展逻辑执行的准确的类型的数据处理。在某些实施例中,命令属性可以描述表示相对简单的或短的处理例程或功能的处理,诸如,例如,转置矩阵的操作,生成直方图的操作,执行过滤的操作,等等。命令属性可以描述要对一个或多个输入数据操作数(例如,一个或多个输入数据结构)执行的以产生一个或多个输出数据操作数(例如,一个或多个输出数据结构)的操作序列。在某些实施例中,它们可以是通常在硬件加速器或图形处理单元等等中执行的各种这样的相对简单的算法或例程中的任何一个。

输入数据操作数指针字段556可以被用来提供指向一个或多个输入数据操作数的一个或多个指针。输入数据操作数是将要由共享的核扩展逻辑对其执行数据处理的那些。在某些实施例中,一个或多个输入数据操作数可以表示一个或多个数据结构,诸如,例如,矩阵、表等等。如图所示,在某些实施例中,指针可以指向存储器518中的存储器位置处的输入数据操作数。在某些实施例中,指针可以是显式的虚存指针。在其他实施例中,指针可以指向一个或多个寄存器或其他存储位置处的一个或多个输入数据操作数。

输出数据操作数指针字段557可以被用来提供指向一个或多个输出数据操作数的一个或多个指针。输出数据操作数是用于在调用完成时传达由共享的核扩展逻辑执行的数据处理的结果的那些。在某些实施例中,一个或多个输出数据操作数可以表示一个或多个数据结构,诸如,矩阵、表等等。如图所示,在某些实施例中,指针可以指向存储器中的存储器位置处的输出数据操作数。在某些实施例中,指针可以是显式的虚存指针。在其他实施例中,指针可以指向一个或多个寄存器或其他存储位置处的一个或多个输出数据操作数。

应该理解,这只是共享的核扩展命令寄存器的合适的格式的一个示例实施例。替换实施例可以省略所示出的字段中的某些或可以添加额外的字段。例如,字段中的一个或多个可以通过不必在共享的核扩展命令寄存器中显式地指定的暗示的位置来提供。作为另一个示例,输入数据操作数存储位置可以被作为输出数据操作数存储位置重复使用,以便不必指定它两次,一次指定可以是暗示的。作为再一个示例,一个或多个字段可以具有操作码以及自变量的直接编码,代替存储器指针。此外,所示出的字段的顺序/布局不是必需的,相反可以重新排列字段。此外,字段还不必包括比特的相邻的序列(如在示图中建议的),而是可以由非相邻的或分离的比特组成。

再次参考图3,在sce调用指令执行之后,由sce调用指令指出的共享的核扩展命令寄存器(例如,scecrx)可以存储对应于sce调用指令的数据。在线程或核提交任务或调用之后,在以前提交的调用或任务完成之前,线程或核可以着手准备并向共享的核扩展逻辑提交额外的调用或任务。另外,当以前提交的调用或任务完成时,线程或核可以着手执行其他处理。共享的核扩展命令寄存器与调度器(下面将进一步讨论)一起可以帮助提供细粒的控制流程,该控制流程可以允许多个线程和/或多个核提交任务或调用,然后,在共享的核扩展逻辑上任务或调用完成之前,着手提交其他任务或调用或执行其他处理。

共享的核扩展逻辑314包括核接口逻辑315以访问核0共享的核扩展命令寄存器328。核接口逻辑也可以被用来访问核m共享的核扩展命令寄存器340,以及用于任何其他核(如果有的话)。即,在某些实施例中,共享的核扩展逻辑和/或核接口逻辑可以访问每一个核的单独的共享的核扩展命令寄存器组。

共享的核扩展逻辑可以使用共享的核扩展命令寄存器328。例如,共享的核扩展逻辑可以访问由命令字段(例如,字段555)指向的命令属性信息,可以访问由输入数据操作数字段(例如,字段556)指向的输入数据操作数,可以作为进度字段(例如,字段554中的数据处理的结果,更新进度,当操作完成或遇到错误时,可以更新状态字段(例如,字段553)以反映完成或错误,在没有错误地完成的情况下,可以通过输出数据操作数字段(例如,字段557)中的指针,访问输出数据操作数。

为促进描述,共享的核扩展逻辑被示为具有核0、线程0共享的核扩展命令寄存器的副本。然而,共享的核扩展逻辑的共享的核扩展命令寄存器以虚线示出,以指出可以实际没有两组核0、线程0共享的核扩展命令寄存器。相反,核0和共享的核扩展逻辑两者都可以逻辑地查看相同组的核0、线程0共享的核扩展命令寄存器。类似地,共享的核扩展逻辑可以通过潜在地核m,线程p组340,查看其他处理器的其他线程的对应的共享的核扩展命令寄存器。还为清楚起见,物理核0、线程0共享的核扩展命令寄存器可以位于核0中,在共享的核扩展逻辑中,在核0外面以及共享的核扩展逻辑外面的位置,或在不同的位置的组合。

共享的核扩展逻辑314包括调度器344的实施例。调度器可以以硬件、软件、固件,或某种组合来实现。一方面,调度器可以是硬件调度器。调度器可以操作用于通过核m共享的核扩展命令寄存器340访问核0共享的核扩展命令寄存器328,并调度与通过共享的数据处理逻辑316上的这些寄存器传达的调用相关联的数据处理。在某些实施例中,调度器可以表示根据可编程的调度算法或目标,调度核的数据处理的可编程的硬件调度器或可编程的硬件调度逻辑。在某些实施例中,硬件调度器可以实现为可操作以在命令寄存器之间以及在物理线程之间轮流的状态机。可以通过一组机器特定的寄存器(msr)潜在地向软件公开仲裁策略。在其他实施例中,硬件调度器可以实现为固件块,例如,包括固定的只读存储器(rom)和可打补丁的随机存取存储器(ram)域两者。这可以潜在地允许硬件调度器使用更精细的调度算法,该调度算法可以依赖于操作系统指示、应用程序编程接口(api)、运行时编译器指示、实时硬件信号,或这样的控件的组合。作为示例,调度可以是合理的调度算法,对于某些核的相对于其他核的加权的调度算法(例如,基于核负载、正在被处理的线程或数据的时间紧迫性、线程优先级,或根据其他目标)。取决于不同的实现的特定目标,本领域已知的许多不同类型的调度算法适合于不同的实现。调度器还可以监测共享的数据处理逻辑上调度的调用或任务的完成。

共享的核扩展逻辑314还包括状态和/或进度更新逻辑349。状态和/或进度更新逻辑可以监测正在由共享的数据处理逻辑316处理的调用的状态和/或进度。状态和/或进度更新逻辑还可以基于监测的状态和/或进度,更新对应于调用的共享的核扩展命令寄存器。例如,可以更新图5的状态字段553和进度字段554。作为示例,当调用在共享的核扩展逻辑上完成时,可以更新状态以反映完成,或当共享的核扩展逻辑上的调用的处理遇到错误时,可以更新状态以反映错误状态。作为另一个示例,在与调用相关联的数据处理期间,状态和/或进度更新逻辑可以更新调用的完成的进度(例如,可以更新进度字段554中的原子提交点)。

在某些实施例中,操作系统可以使用状态保存/状态恢复功能(例如,intel架构中的xsave/xrestore),来管理共享的核扩展命令寄存器在上下文切换时的状态。共享的核扩展逻辑还没有完成的调用或命令可以保存,然后,在上下文切换时由物理线程恢复和重新启动。在某些实施例中,为支持上下文切换和操作系统抢先占有,共享的核扩展命令寄存器可以具有如前所述的进度字段,以记录正在由共享的核扩展逻辑处理的数据处理任务的(例如,原子进度)。进度字段可以作为线程上下文的一部分,保存在上下文切换上,并当操作系统重新调度线程时,用于任务恢复。

共享的核扩展逻辑315还包括共享的核扩展控制逻辑343。共享的核扩展控制逻辑与下面将进一步讨论的调度器344、共享的数据处理逻辑316、状态/进度更新逻辑349、核0-m共享的核扩展命令寄存器328、340,以及共享的核扩展存储器管理单元(mmu)341耦合。共享的核扩展控制逻辑可以帮助对共享的核扩展逻辑314的各种控制、管理、协调、定时以及相关的实现方面。

再次参考图3的sce调用指令324和/或图4的方法的sce调用指令,在某些实施例中,sce调用指令可以是非阻止的sce调用指令。在某些实施例中,可以从线程(例如,物理线程)非推理性地发送非阻止的sce调用指令,在非阻止的sce调用指令被接受供在共享的核扩展逻辑上执行之后,可以在发出线程正在在其上面运行的核上隐退(例如,存储在sce命令寄存器中)。

在其他实施例中,sce调用指令可以是阻止的sce调用指令。在某些实施例中,可以从线程(例如,物理线程)非推理性地发送阻止的sce调用指令,在调用或任务的执行在共享的核扩展逻辑上完成之后可以在发出线程正在在其上面运行的核上隐退(例如,当共享的核扩展命令寄存器的状态字段被更新以反映完成时)。在某些实施例中,sce调用指令的非阻止的以及阻止的变体两者都可以被包括在指令集中。

在某些实施例中,阻止的sce调用指令可以指定或以别的方式指出等待共享的核扩展命令寄存器释放的超时值(例如,周期的数量)。例如,可以在sce调用指令的参数之一中指定此周期数或其他超时值。在某些实施例中,如果到达超时值而共享的核扩展命令寄存器没有被释放,则响应于调用,可以返回失败、错误等等。

在sce调用指令的隐退之后,共享的核扩展逻辑可以根据分配的任务或调用,修改存储器状态。在多线程环境中,可以执行软件同步,以在可以使用共享的核扩展并具有共享的操作数的逻辑线程之间维护缓存一致性和存储器顺序。可另选地,还可以可任选地执行硬件同步。

图6是处理sce读取指令的实施例的方法662的实施例的方框流程图。在各实施例中,方法可以由处理器、核或另一种类型的指令处理设备来执行。在某些实施例中,方法662可以由图2的处理器210,或图3的核0311-0,或类似的处理器或核来执行。可另选地,方法662可以由完全不同的处理器、核或指令处理设备来执行。此外,处理器210以及核311-0还可以执行与方法662的操作和方法相同、类似、或不同的操作和方法的实施例。

在框663,在具有多个核的处理器的一个核内接收共享的核扩展(sce)读取指令。在各方面,可以在核上从核外源(例如,从主存储器、盘、或总线或互连)接收sce读取指令,或可以在核的一部分(例如,在解码逻辑、调度逻辑等等)从核内的其他逻辑(例如,指令缓存、队列、调度逻辑等等)接收。sce读取指令将导致核读取以前对共享的核扩展逻辑作出的调用的状态。共享的核扩展逻辑被多个核共享。sce读取指令指出共享的核扩展命令寄存器。

在框664,响应于sce读取指令,读取以前对共享的核扩展逻辑作出的调用的状态。在某些实施例中,读取状态可以包括从由指令指出的共享的核扩展命令寄存器读取数据。在某些实施例中,状态可以包括完成状态。例如,可以读取状态字段(例如,图5中的状态字段553)。在某些实施例中,读取的状态可以从已完成、错误,有效中选择,虽然本发明的范围不受限制。

在其他实施例中,sce读取指令可以从指出的共享的核扩展命令寄存器读取其他信息。这样的信息的示例包括,但不仅限于,进度(例如,来自图5的进度字段554)、输出数据操作数或其一部分(例如,如由字段557所指示的),以及命令属性信息(例如,如由字段555所指示的)。在某些实施例中,共享的核扩展命令寄存器对应于以前的对共享的核扩展逻辑的调用,以代表接收sce读取指令的核执行数据处理。

图7是处理sce中止指令的实施例的方法766的实施例的方框流程图。在各实施例中,方法可以由处理器、核或另一种类型的指令处理设备来执行。在某些实施例中,方法766可以由图2的处理器210,或图3的核0311-0,或类似的处理器或核来执行。可另选地,方法766可以由完全不同的处理器、核,或指令处理设备来执行。此外,处理器210,以及核311-0还可以执行与方法766的操作和方法相同、类似、或不同的操作和方法的实施例。

在框767,在具有多个核的处理器的一个核内接收共享的核扩展(sce)中止指令。在各方面,可以在核上从核外源(例如,从主存储器、盘、或总线或互连)接收sce中止指令,或可以在核的一部分(例如,在解码逻辑、调度逻辑等等)从核内的其他逻辑(例如,指令缓存、队列、调度逻辑等等)接收。sce中止指令将导致核中止以前对共享的核扩展逻辑作出的调用。共享的核扩展逻辑被多个核共享。sce中止指令指出共享的核扩展命令寄存器。

在框768,响应于sce中止指令,中止以前对共享的核扩展逻辑作出的调用。在某些实施例中,中止调用可以包括停止由共享的核扩展逻辑作出的对应于以前作出的调用和/或对应于指出的共享的核扩展命令寄存器的数据处理。在某些实施例中,中止调用还可以包括释放由sce中止指令指出的被占用的共享的核扩展命令寄存器。

在某些实施例中,阻止的sce调用指令可以指定或以别的方式指出等待scecr释放的超时值(例如,周期的数量),如果超时流逝,调用可以返回失败。如果在没有释放的情况下到达超时和/或如果在超时到期之前在没有完成的正在进行中的命令执行过程中到达超时,则会产生失败。对于非阻止的调用,可以使用sce等待指令来阻止共享的核扩展执行。sce等待指令可以类似地包括等待共享的核扩展命令寄存器释放的超时值(例如,周期的数量)如果在没有共享的核扩展命令寄存器释放的情况下超时消逝,则可以返回失败、错误等等。在某些实施例中,阻止的sce调用指令和/或sce等待指令的超时值可以被编码为指令可以指定的可变参数。在其他实施例中,超时可以是固定的暗示的值。在某些实施例中,sce等待指令可以和非阻止的sce调用指令一起使用,以减少功率消耗。例如,当阻止的sce调用指令阻止和/或当sce等待指令阻止时,可以可任选地停止物理线程并使其睡眠(假设没有希望完成的其他工作),直到共享的核扩展逻辑在正在完成相关sce调用时唤醒它。然而,这是可选的,并且不是必需的。此外,除如前所述的通过阻止的sce调用指令和/或sce等待指令指出超时值的方法之外,还设想用于中止运行持续达意外的或不希望有的长时间的调用或命令的其他方法。

在某些实施例中,sce逻辑可以对与核0相同的虚拟存储器进行操作。再次参考图3,核0311-0具有存储器管理单元(mmu)331。mmu包括共享的核扩展mmu接口逻辑332。除共享的核扩展mmu接口逻辑332之外,mmu331可以基本上是常规的。共享的核扩展逻辑314具有共享的核扩展mmu341。scemmu可以维护核0的页面映射(例如,缓存或保留从虚拟或线性存储器到由核0缓存的或保留的系统存储器的转换)。除维护对应于核0的tlb的那些的tlb条目之外,scemmu还可以为核中的每一个维护tlb条目。共享的核扩展mmu具有核mmu接口逻辑342。共享的核扩展mmu接口逻辑332和核mmu接口逻辑342彼此连接,以在mmu331和共享的核扩展mmu341之间执行同步346。在某些实施例中,共享的核扩展mmu接口逻辑332和核mmu接口逻辑342可以表示用于mmu331和共享的核扩展mmu341的同步的硬件机制或硬件支持。

在某些实施例中,可以执行mmu和scemmu之间的同步,以在此页面映射中维护一致性。例如,当由核0使页面无效时,核0可以使核0mmu的对应的tlb条目无效。在某些实施例中,还可以在核0和sce逻辑之间执行同步,其中,还可以相应地使sce逻辑的scemmu上的对应的tlb条目无效。作为示例,在核0上运行的物理线程可以使用由共享的核扩展mmu接口逻辑332和核mmu接口逻辑342所提供的硬件接口,以通过处理器上的总线周期向sce逻辑发出使scemmu的对应的tlb无效的信号。即,在某些实施例中,可以由硬件从在核0上运行的物理线程内执行共享的核扩展mmu341的同步。作为另一个示例,如果由操作系统交换一个线程(例如,上下文切换),那么,可以将上下文切换发信号给和/或通知给sce逻辑,以便可以保存与线程相关联的上下文,以便以后可以恢复它们。在某些实施例中,这样的同步信号可以在硬件级别(例如,通过硬件机制的总线周期或总线事务)。即,可以在硬件级别执行同步(例如,通过mmu和scemmu的硬件和总线事务),而并非通过软件参与(例如,没有操作系统的参与)。

在某些实施例中,mmu331和共享的核扩展mmu341还可以通过接口逻辑332,342进行交互,以路由或传递当共享的核扩展逻辑处理核0的调用时产生的页面错误。在某些实施例中,共享的核扩展mmu可以使用核0来将当处理来自核0的调用时产生的页面错误通知给操作系统。类似地,共享的核扩展mmu可以将当处理来自这些其他核的调用时产生的页面错误通知给其他核。核可以将页面错误通知给操作系统。操作系统可能没有任何理由知道,页面错误实际起源于sce逻辑,而并非起源于提供页面错误的核。在某些实施例中,对于非阻止的sce调用指令,核上的指定错误的指令指针可以是任意的。在某些实施例中,对于阻止的sce调用指令,发生错误的共享的核扩展逻辑的指令指针可以指向对应于在发出调用的线程上发生错误的调用的sce调用指令。

与本领域已知的用于分摊处理的其他方法相比,共享的核扩展逻辑提供若干个优点。通常,利用硬件加速器(例如,图形处理单元)等等,基于软件的范例用于与硬件加速器进行交互。硬件加速器通常由软件设备驱动程序管理。系统调用被应用程序用来使用对硬件加速器的处理。常常需要软件(例如,操作系统)的干预来通过在核上运行的不同的线程,提供对硬件加速器的合理的利用。与这样的硬件加速器相比,共享的核扩展逻辑可以允许使用共享的核扩展逻辑的核(例如,通用核)的传统的编程范例,无需移动到基于驱动程序的硬件加速器访问的软件范例。此外,在其中sce逻辑与相关联的物理线程在相同虚拟存储器上进行操作的各实施例中,它可以被使用,而不会有数据复制和/或数据格式编组(marshaling)的附带的开销。此外,与硬件加速器相比,共享的核扩展逻辑一般涉及用于作出向前前进的较小量的打开的页面。另外,与硬件加速器相比,共享的核扩展逻辑一般倾向于基本上将提交命令的延迟开销缩小到大致非投机性的核总线-周期的延迟。此外,sce逻辑还可以使用硬件中的调度单元或处理器上的其他逻辑来提供在核上运行的不同的线程之间的合理的或分布式的利用,而并非通过软件(例如,操作系统)的干预。

在上文的描述中,为说明和描述简明起见,各实施例示出并描述了共享的核扩展逻辑(例如,逻辑214、逻辑314,等等)的单一实例。然而,在某些实施例中,可以有一个以上的共享的核扩展逻辑。共享的核扩展逻辑中的每一个都可以由多个核共享,多个核可以是相同核或不同的核,并可以是全部核或某些核。在某些实施例中,不同类型的共享的核扩展逻辑(例如,用于执行不同类型的数据处理)可以被包括,并在核之间共享。在其他情况下,相同的一般类型的共享的核扩展逻辑的多个实例可以被包括并在全部核(例如,它们的线程)之间共享,或共享的核扩展逻辑中的每一个都可以由全部核的子集(例如,不同的子集)共享。如由得益于本公开内容的所属领域的技术人员理解的,各种布局也是可以的。

为图5描述的组件、特征,以及具体细节可以可任选地和图3,4,或6的那些一起使用。此处对于设备所描述的特征和/或细节还可任选地应用于由设备执行的和/或与设备一起执行的此处所描述的方法。例如,为图3描述的组件、特征,以及具体细节可以可任选地和图4,或6的那些一起使用。

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

处理器核可以,对于不同的目的,以不同的方式,以及在不同的处理器中实现。例如,这样的核的实现可以包括:1)计划用于通用计算的通用有序核;2)计划用于通用计算的高性能通用无序核;3)主要计划用于图形和/或科学(吞吐量)计算的特殊用途核。不同的处理器的实现可以包括:1)包括计划用于通用计算的一个或多个通用有序核和/或计划用于通用计算的一个或多个通用无序核的cpu;以及,2)包括主要计划用于图形和/或科学(吞吐量)的一个或多个特殊用途核的协处理器。这样的不同的处理器导致不同的计算机系统架构,这些计算机系统架构可以包括:1)与cpu分离的单独的芯片上的协处理器;2)与cpu同一个封装中的分离的管芯上的协处理器;3)与cpu同一个管芯上的协处理器(在这样的情况下,这样的协处理器有时被称为特殊用途逻辑,诸如集成的图形和/或科学(吞吐量)逻辑,或称为特殊用途核);以及,4)可以在同一个管芯上包括所描述的cpu(有时被称为应用程序核或应用程序处理器)、上文所描述的协处理器,以及额外的功能的芯片上的系统。下面描述了示例性核架构,接下来是描述示例性处理器以及计算机架构。示例性核架构

有序和无序核框图

图8a是示出了根据本发明的各实施例的示例性有序流水线和示例性寄存器重命名、无序发出/执行流水线的框图。图8b是示出了根据本发明的各实施例的要包括在处理器中的有序架构核和示例性寄存器重命名,无序发出/执行架构核的示例性实施例的框图。图8a-b中的实线框示出了有序流水线和有序核,而可选的虚线框的添加示出了寄存器重命名、无序发出/执行流水线和核。假定有序方面是无序方面的子集,将描述无序方面。

在图8a中,处理器流水线800包括获取级802、长度解码级804、解码级806、分配级808、重命名级810、调度(也称为分派或发布)级812、寄存器读取/存储器读取级814、执行级816、写回/存储器写入级818、异常处理级822以及提交级824。

图8b示出了处理器核890,包括耦合到执行引擎单元850的前端单元830,执行引擎单元850和前端单元830两者都耦合到存储器单元870。核890可以是精简指令集计算(risc)核、复杂指令集计算(cisc)核、超长指令字(vliw)核或混合型或替代核类型。作为另一种选项,核890可以是专用核,诸如,例如,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(gpgpu)核、图形核等等。

前端单元830包括耦合到指令缓存单元834的分支预测单元832,指令缓存单元耦合到指令转换后备缓冲器(tlb)836,指令转换后备缓冲器耦合到指令获取单元838,指令获取单元838耦合到解码单元840。解码单元840(或解码器)可以解码指令,作为输出,生成一个或多个微操作、微代码入口点、微指令,其他指令,或其他控制信号,它们解码自或以别的方式反映或来源于原始指令。解码单元840可以使用各种不同的机制来实现。合适的机制的示例包括,但不仅限于,查找表、硬件实现、可编程逻辑阵列(pla)、微代码只读存储器(rom)等等。在一个实施例中,核890包括存储某些宏指令的微代码的微代码rom或其他介质(例如,在解码单元840中,或以别的方式在前端单元830内)。解码单元840耦合到执行引擎单元850中的重命名/分配器单元852。执行引擎单元850包括耦合到隐退单元854的重命名/分配器单元852和一组一个或多个调度器单元856。调度器单元856表示任意数量的不同的调度器,包括预留站、中心指令窗口等等。调度器单元856耦合到物理寄存器组单元858。物理寄存器组单元858中的每一个都表示一个或多个物理寄存器组,其中不同的寄存器组存储一种或多种不同的数据类型,诸如标量整数、标量浮点、紧缩整数、紧缩浮点、矢量整数、矢量浮点,状态(例如,是要被执行的下一指令的地址的指令指针)等等。在一个实施例中,物理寄存器组单元858包括矢量寄存器单元、写掩码寄存器单元,以及标量寄存器单元。这些寄存器单元可以提供架构矢量寄存器、矢量掩码寄存器以及通用寄存器。物理寄存器组单元858与隐退单元854重叠,以示出可以实现寄存器重命名和无序执行的各种方式(例如,使用重新排序缓冲器和隐退寄存器组,使用未来的文件,历史缓冲器,以及隐退寄存器组;使用寄存器映射和寄存器池;等等)。隐退单元854和物理寄存器组单元858耦合到执行群集860。执行群集860包括一组一个或多个执行单元862和一组一个或多个存储器访问单元864。执行单元862可以对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、矢量整数、矢量浮点)执行各种操作(例如,位移、加法、减法、乘法)。尽管一些实施例可以包括专用于特定功能或功能组的若干个执行单元,但是,其他实施例可以只包括一个执行单元或都执行所有功能的多个执行单元。调度器单元856、物理寄存器组单元858,以及执行群集860被示为可能是多个,因为某些实施例对于某些类型的数据/操作创建单独的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/矢量整数/矢量浮点流水线和/或存储器访问流水线,每一个流水线都具有它们自己的调度器单元、物理寄存器组单元和/或执行群集——并且在单独的存储器访问流水线的情况下,实现了其中只有此流水线的执行群集具有存储器访问单元864的某些实施例)。还应该理解,使用单独的流水线,这些流水线中的一个或多个可以是无序发出/执行,其余的是有序的。

存储器访问单元组864耦合到存储器单元870,该存储器单元870包括耦合到数据缓存单元874的数据tlb单元872,该数据缓存单元874耦合到2级(l2)缓存单元876。在一个示例性实施例中,存储器访问单元864可以包括加载单元、存储地址单元以及存储数据单元,其中每一个都耦合到存储器单元870中的数据tlb单元872。指令缓存单元834进一步耦合到存储器单元870中的2级(l2)缓存单元876。l2缓存单元876耦合到一个或多个其他级别的缓存,最终耦合到主存储器。

作为示例,示例性寄存器重命名、无序发布/执行核架构可以按如下方式实现流水线800:1)指令获取838执行获取和长度解码级802以及804;2)解码单元840执行解码级806;3)重命名/分配器单元852执行分配级808和重命名级810;4)调度器单元856执行调度级812;5)物理寄存器组单元858和存储器单元870执行寄存器读取/存储器读取级814;执行群集860执行该执行级816;6)存储器单元870和物理寄存器组单元858执行写回/存储器写入级818;7)异常处理级822中可以涉及各种单元;以及,8)隐退单元854和物理寄存器组单元858执行提交级824。

核890可以支持一个或多个指令集(例如,x86指令集(带有与较新的版本一起添加的某些扩展);位于美国加州sunnyvale的mipstechnologies的mips指令集;位于美国加州sunnyvale的armholdings的arm指令集(带有诸如neon之类的可选的额外的扩展),包括此处所描述的指令。在一个实施例中,核890包括支持紧缩的数据指令集扩展(例如,avx1,avx2)的逻辑,由此,使许多多媒体应用程序所使用的操作能使用紧缩的数据来执行。

应该理解,核可以支持多线程(执行操作或线程的两个或更多并行组),并可以以各种方式达到这一目的,包括时间切片多线程,同时的多线程(其中,单个物理核为物理核同时正在多线程处理的每一个线程提供一种逻辑核),或其组合(例如,时间切片获取和解码和此后的同时的多线程处理,诸如在hyperthreading技术中)。

尽管寄存器重命名是在无序执行的上下文中描述的,但是,应该理解,寄存器重命名可以用于有序架构中。尽管处理器的所示出的实施例还包括单独的指令和数据缓存单元834/874和共享的l2缓存单元876,但是,替换实施例对于指令和数据两者可以具有单个内部缓存,诸如,例如,第1级(l1)内部缓存,或多级内部缓存。在某些实施例中,系统可以包括内部缓存和核和/或处理器外部的外部缓存的组合。可另选地,全部缓存都可以核和/或处理器外部的。

具体示例性有序核架构

图9a-b示出了比较具体的示例性有序核架构的框图,该核将是芯片中的多个逻辑块中的一个(包括相同类型和/或不同类型的其他核)。取决于应用,逻辑块通过高带宽互连网络(例如,环形网络)与某种固定功能逻辑、存储器i/o接口及其他所需的i/o逻辑进行通信。

图9a是根据本发明的各实施例的单个处理器核的框图,以及其与管芯上的互连网络902的连接以及其第2级(l2)缓存904的本地子集。在一个实施例中,指令解码器900支持带有紧缩的数据指令集扩展的x86指令集。l1缓存906使对缓存存储器的低延迟访问进入标量和矢量单元。尽管在一个实施例中(为简化设计),标量单元908和矢量单元910使用分开的寄存器集(分别是,标量寄存器912和矢量寄存器914),在它们之间传输的数据被写入到存储器,然后,从第1级(l1)缓存906读回,但是,本发明的替换实施例可以使用不同的方法(例如,使用单个寄存器组或包括使数据在两个寄存器组之间传输而没有被写入和读回的通信路径)。

l2缓存904的本地子集是被分成单独的本地子集(每个处理器核一个)的全局l2缓存的一部分。每一处理器核都具有到l2缓存904的其自己的本地子集的直接访问路径。由处理器核读取的数据存储在其l2缓存子集904中,并可以被快速地访问,与其他处理器核访问它们自己的本地l2缓存子集并行。由处理器核写入的数据存储在其自己的l2缓存子集904中,在必要时,从其他子集中清空(flush)。环形网络确保共享数据的一致性。环形网络是双向的,以使诸如处理器核,l2缓存及其他逻辑块之类的代理在芯片内相互进行通信。每一环形数据路径都是每个方向1012比特宽。

图9b是根据本发明的各实施例的图9a中的处理器核的一部分的展开图。图9b包括l1缓存904l1数据缓存906a部分,以及关于矢量单元910和矢量寄存器914的更多细节。具体而言,矢量单元910是16宽矢量处理单元(vpu)(参见16宽alu928),其执行整数、单精度浮动以及双精度浮动指令中的一个或多个。vpu支持利用混合单元920来混合寄存器输入,利用数字转换单元922a-b进行数字转换,以及利用复制单元924在存储器输入上进行复制。写掩码寄存器926允许断定所产生的矢量写。

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

图10是根据本发明的各实施例的可以具有一个以上的核,可以具有集成的存储器控制器,并可以具有集成的图形的处理器1000的框图。图10中的实线框示出了带有单个核1002a的处理器1000、系统代理1010,一组一个或多个总线控制器单元1016,而可选的虚线框的添加示出了带有多个核1002a-n的替代的处理器1000,系统代理单元1010中的一组一个或多个集成的存储器控制器单元1014以及特殊用途逻辑1008。

如此,处理器1000的不同的实现可以包括:1)带有特殊用途逻辑1008(集成的图形和/或科学(吞吐量)逻辑(可以包括一个或多个核))、以及核1002a-n(是一个或多个通用核(例如,通用有序核、通用无序核,两者的组合))的cpu;2)带有核1002a-n(是主要用于图形和/或科学(吞吐量)计算的大量的特殊用途核)的协处理器;以及,3)带有核1002a-n(是大量的通用有序核)的协处理器。如此,处理器1000可以是通用处理器、协处理器或专用的处理器,诸如,例如,网络或通信处理器、压缩引擎、图形处理器、gpgpu(通用图形处理单元)、高吞吐量许多集成的核(mic)协处理器(包括30或更多核),嵌入式处理器、等等。处理器可以在一个或多个芯片上实现。处理器1000可以是一个或多个衬底的一部分,和/或可以使用若干种处理技术中的任何一种,诸如,例如,bicmos、cmos,或nmos,在一个或多个衬底上实现。

存储器层次结构包括核内的一级或多级缓存,一组或一个或多个共享缓存单元1006,以及耦合到集成的存储器控制器单元1014组的外部存储器(未示出)。共享缓存单元1006组可以包括一个或多个中级缓存,诸如第2级(l2)、第3级(l3)、第4级(l4)、或其他级别的缓存、末级缓存(llc),和/或其组合。尽管在一个实施例中基于环形的互连单元1012互连集成的图形逻辑1008,共享缓存单元1006组,以及系统代理单元1010/集成的存储器控制器单元1014,但是,替换实施例可以使用任意数量的用于互连这样的单元的已知的技术。在一个实施例中,在一个或多个缓存单元1006和核1002-a-n之间维护了一致性。

在某些实施例中,核1002a-n中的一个或多个能够多线程处理。系统代理1010包括用于协调和操作核1002a-n的那些组件。系统代理单元1010可以包括,例如,功率控制单元(pcu)和显示单元。pcu可以是或包括管理核1002a-n和集成的图形逻辑1008的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个从外部连接的显示器。

就架构指令集而言,核1002a-n可以是同质的或异构的;即,核1002a-n中的两个或更多能够执行相同的指令集,而其他的能够只执行该指令集的子集或不同的指令集。

示例性计算机架构

图11-14是示例性计算机架构的框图。膝上型计算机、台式机、手持式pc、个人数字助理、工程工作站、服务器、网络设备、网络中枢、交换机、嵌入式处理器、数字信号处理器(dsp)、图形设备、视频游戏设备、机顶盒、微控制器、手机、便推式媒体播放器、手持式设备以及各种其他电子设备的已知的其他系统设计和配置也是合适的。一般而言,如此处所公开的能够包括处理器和/或其他执行逻辑的各种系统或电子设备一般是合适的。

现在请参看图11,所示是根据本发明的一个实施例的系统1100的框图。系统1100可以包括耦合到控制器中枢1120的一个或多个处理器1110、1115。在一个实施例中,控制器中枢1120包括图形存储器控制器中枢(gmch)1190和输入/输出中枢(ioh)1150(可以在单独的芯片上);gmch1190包括耦合到存储器1140和协处理器1145的存储器和图形控制器;ioh1150将输入/输出(i/o)设备1160耦合到gmch1190。可另选地,存储器和图形控制器中的一个或两者都集成在处理器内(如此处所描述的),存储器1140和协处理器1145利用ioh1150,直接耦合到单个芯片中的处理器1110以及控制器中枢1120。

在图11中利用虚线表示额外的处理器1115的可任选的本质。每一处理器1110、1115都可以包括此处所描述的处理核中的一个或多个,并可以是处理器1000的某种版本。

存储器1140可以是,例如,动态随机存取存储器(dram)、相变存储器(pcm)或两者的组合。对于至少一个实施例,控制器中枢1120通过诸如前端总线(fsb)之类的多点分支总线、诸如quickpath互连(qpi)之类的点对点接口或类似的连接1195,与处理器1110、1115进行通信。

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

就包括架构、微架构、热的,功率消耗特征等等的一系列优点的度量而言,在物理资源1110、1115之间可能会有各种差异。

在一个实施例中,处理器1110执行控制一般类型的数据处理操作的指令。协处理器指令可以嵌入在指令内。处理器1110将这些协处理器指令识别为是应该由附接的协处理器1145执行的类型。相应地,处理器1110在协处理器总线或其他互连上向协处理器1145发出这些协处理器指令(或表示协处理器指令的控制信号)。协处理器1145接受并执行接收到的协处理器指令。

现在请参看图12,所示是根据本发明的一个实施例的第一更具体的示例性系统1200的框图。如图12所示,多处理器系统1200是点对点互连系统,并包括通过点对点互连1250耦合的第一处理器1270和第二处理器1280。处理器1270和1280中的每一个都可以是处理器1000的某种版本。在本发明的一个实施例中,处理器1270和1280分别是处理器1110和1115,而协处理器1238是协处理器1145。在另一个实施例中,处理器1270和1280分别是处理器1110和协处理器1145。

处理器1270和1280被示为分别包括集成的存储器控制器(imc)单元1272和1282。处理器1270还包括点对点(p-p)接口1276和1278,作为其总线控制器单元的一部分;类似地,第二处理器1280包括p-p接口1286和1288。处理器1270,1280可以使用p-p接口电路1278、1288,通过点对点(p-p)接口1250,来交换信息。如图12所示,imc1272和1282将处理器耦合到相应的存储器,即,存储器1232和存储器1234,它们可以是本地连接到相应的处理器的主存储器的一部分。

处理器1270、1280中的每一个都可以使用点对点的接口电路1276、1294、1286、1298,通过单个p-p接口1252、1254,与芯片集1290交换信息。芯片集1290可以通过高性能的接口1239,可任选地与协处理器1238交换信息。在一个实施例中,协处理器1238是专用的处理器,诸如,例如,高吞吐量mic处理器、网络或通信处理器、压缩引擎、图形处理器、gpgpu、嵌入式处理器,等等。

共享缓存(未示出)可以被包括在任一处理器中或者两个处理器的外面,通过p-p互连,与处理器相连接,以便如果处理器被置于低功率模式下,处理器中的任何一个或两者的本地缓存信息可以存储在共享缓存中。

芯片集1290可以通过接口1296耦合到第一总线1216。在一个实施例中,第一总线1216可以是外围组件互连(pci)总线,或诸如pciexpress总线之类的总线,或另一第三代i/o互连总线,虽然本发明的范围不仅限于此。

如图12所示,各种i/o设备1214以及将第一总线1216耦合到第二总线1220的总线桥1218可以耦合到第一总线1216。在一个实施例中,一个或多个额外的处理器1215,诸如协处理器、高吞吐量mic处理器,gpgpu、加速器(诸如,例如,图形加速器或数字信号处理(dsp)单元)、现场可编程门阵列,或任何其他处理器耦合到第一总线1216。在一个实施例中,第二总线1220可以是低管脚数(lpc)总线。

在一个实施例中,各种设备可以耦合到第二总线1220,包括,例如,键盘和/或鼠标1222、通信设备1227以及存储单元1228,诸如磁盘驱动器或可以包括指令/代码以及数据1230的其他大容量存储设备。进一步地,音频i/o1224可以耦合到第二总线1220。请注意,其他架构也是可以的。例如,代替图12的点对点架构,系统可以实现多点分支总线或其他这样的架构。

现在请参看图13,所示是根据本发明的一个实施例的第二更具体的示例性系统1300的框图。图12和13中的相同元素带有相同参考编号,从图13省略了图12的某些方面,以便不至于使图13的其他方面变得模糊。

图13示出了处理器1270、1280可以分别包括集成的存储器和i/o控制逻辑(“cl”)1272和1282。如此,cl1272、1282包括集成的存储器控制器单元并包括i/o控制逻辑。图13示出了不仅存储器1232、1234耦合到cl1272、1282,而且i/o设备1314也耦合到控制逻辑1272、1282。旧式i/o设备1315耦合到芯片集1290。

现在请参看图14,所示是根据本发明的实施例的soc1400的框图。图10中的类似的元素带有相同的参考编号。此外,虚线框是比较先进的soc上的可选的特征。在图14中,互连单元1402耦合到:包括一组一个或多个核202a-n和共享缓存单元1006的应用程序处理器1410;系统代理单元1010;总线控制器单元1016;集成的存储器控制器单元1014;可以包括集成的图形逻辑、图像处理器、音频处理器,以及视频处理器的一组或一个或多个协处理器1420;静态随机存取存储器(sram)单元1430;直接存储器访问(dma)单元1432;以及用于耦合到一个或多个外部显示器的显示单元1440。在一个实施例中,协处理器1420包括专用的处理器,诸如,例如,网络或通信处理器、压缩引擎、gpgpu、高吞吐量mic处理器、嵌入式处理器,等等。

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

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

程序代码可以以高级过程或面向对象编程语言来实现,以与处理系统进行通信。如果需要的话,程序代码还可以以汇编或机器语言来实现。事实上,此处所描述的机制不仅限于任何特定编程语言。在任何情况下,语言都可以是编译的或解释的语言。

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

这样的机器可读的存储介质可以包括,但不限于,通过机器或设备制造或形成的制品的非瞬时的,有形的布局,包括诸如硬盘之类的存储介质,任何其他类型的盘,包括软盘、光盘、光盘只读存储器(cd-rom)、光盘可重写(cd-rw),以及磁光盘,诸如只读存储器(rom)之类的半导体器件,诸如动态随机存取存储器(dram),静态随机存取存储器(sram)之类的随机存取存储器(ram),可擦除编程只读存储器(eprom),闪存、电可擦除编程只读存储器(eeprom),相变存储器(pcm),磁卡或光卡,或适于存储电子指令的任何其他类型的介质。

相应地,本发明的各实施例还包括包含指令或包含定义此处所描述的结构、电路、设备、处理器和/或系统功能的诸如硬件描述语言(hdl)之类的设计数据的非瞬时的,有形的机器可读取的介质。这样的实施例还可以被称为程序产品。

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

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

图15是根据本发明的各实施例的比较使用软件指令转换器来将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。在所示出的实施例中,指令转换器是软件指令转换器,虽然可另选地指令转换器可以以软件、固件、硬件,或其不同组合来实现。图15示出了可以使用x86编译器1504来编译高级语言1502的程序以生成x86二进制代码1506,该x86二进制代码1506可以天然地由带有至少一个x86指令集核1416的处理器来执行。带有至少一个x86指令集核1516的处理器表示可以通过兼容地执行或以别的方式处理(1)intelx86指令集核的指令集的相当大的部分或(2)用于在带有至少一个x86指令集核的intel处理器上运行的应用程序或其他软件的目标代码版本,来与带有至少一个x86指令集核的intel处理器执行基本上相同功能,以便与带有至少一个x86指令集核的intel处理器实现基本上相同结果的任何处理器。x86编译器1504表示能操作用于生成x86二进制代码606(例如,目标代码)的编译器,该二进制代码1506可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器1516上执行。类似地,图15以高级语言1502示出了程序,该程序可使用替换性指令集编译器1508来编译以生成替换性指令集二级制代码1510,替换性指令集二级制代码1510可由不具有至少一个x86指令集核的处理器1514(诸如,具有可执行加利福尼亚州桑尼威尔的mips技术公司的mips指令集的处理器和/或执行加利福尼亚州桑尼威尔的arm控股公司的arm指令集的处理器)本地地执行。使用指令转换器1512来将x86二进制代码1506转换为可以天然地由没有x86指令集核1514的处理器来执行的代码。此经过转换的代码不可能与替代指令集二进制代码1510相同,因为能够执行此动作的指令转换器难以制造;然而,经过转换的代码将完成一般操作并由来自替代指令集的指令构成。如此,指令转换器1512表示通过仿真、模拟或任何其他过程,使没有x86指令集处理器或核的处理器或其他电子器件执行x86二进制代码1506的软件、固件、硬件,或其组合。

在说明书和权利要求书中,使用了术语“耦合”和/或“连接”及其衍生词。应当理解,这些术语并不旨在作为彼此的同义词。相反,在特定实施例中,可以使用“连接”来表示两个或更多元件彼此处于直接的物理和/或电接触的状态。“耦合的”可表示两个或更多个元件直接物理或电接触。然而,“耦合的”也可表示两个或更多个元件并未彼此直接接触,但是仍然彼此协作、彼此相互作用。例如,执行单元可以通过一个或多个中间组件与寄存器或解码器耦合。在图形中,使用箭头来示出耦合和/或连接。

在描述和权利要求中,使用了术语“逻辑”。如此处所使用的,术语“逻辑”可以包括硬件、固件、软件,或其各种组合。逻辑的示例包括集成电路、专用集成电路、模拟电路、数字电路、编程逻辑器件、包括指令的存储器设备等等。在某些实施例中,逻辑可以潜在地包括晶体管和/或栅极以及其他电路组件(例如,嵌入在半导体材料中)。

在上面的描述中,阐明了具体细节以提供对实施例的全面理解。然而,其他实施例可以在没有这些具体细节中的某些情况下实施。本发明的范围不是由上面所提供的具体示例确定,而是仅由下面的权利要求确定。所有与附图中所示出的以及说明书中所描述的那些等效的关系都包含在各实施例内。在其他情况下,以框图形式,而不是详细地示出已知的电路、结构、设备,和操作以便不至于使对描述的理解变得模糊。在在某些情况下示出多个组件的情况下,它们可以被集成到单一组件中。在示出和描述单一组件的情况下,在某些情况下,可以将此单个组件分离成两个或更多组件。

以基本形式示出和描述了此处所公开的某些方法,虽然可以可任选地向方法中添加操作和/或从方法中删除操作。另外,可能已经示出了和/或描述了操作的特定顺序,虽然替换实施例可以以不同的顺序执行某些操作、组合某些操作,重叠某些操作等等。

某些操作可以由硬件组件来执行和/或可以以机器可执行的或电路可执行的指令来实现,指令可以被用来导致利用执行操作的指令编程的硬件组件(例如,处理器、处理器的一部分等等)。硬件组件可以包括通用或专用的硬件组件。操作可以由硬件、软件、和/或固件的组合来执行。硬件组件可以包括特定逻辑(例如,潜在地与软件和/或固件相结合的电路),该逻辑可操作以执行和/或处理指令并响应于指令(例如,响应于一个或多个微指令或从指令导出的其他控制信号)执行动作。

在本说明书中,对,例如,“一个实施例”、“实施例”、“一个或多个实施例”、“一些实施例”、的引用表示,特定特征可以被包括在本发明的实施中,但是不一定要求。类似地,在描述中,本发明的各种特点有时分组在单一实施例、图形或其描述中,以便简化说明,并帮助理解本发明的各个方面。然而,该公开方法不应被解释成反映本发明需要比每项权利要求中所明确记载的更多特征的意图。相反,如以下权利要求反映的,发明性方面在于,比单个公开的实施例的所有特征少。如此,“具体实施方式”后面的权利要求因此被明确地包括到此“具体实施方式”中,每一个权利要求本身也作为本发明的单独的实施例。

下列子句和/或示例涉及进一步的实施例。子句和/或示例中的特定细节可被用在一个或多个实施例中的任何地方。

在一个实施例中,第一设备包括多个核以及与多个核中的每一个耦合的共享的核扩展逻辑。共享的核扩展逻辑具有被多个核中的每一个共享的共享数据处理逻辑。第一设备还包括指令执行逻辑,对于核中的每一个,该指令执行逻辑,响应于共享的核扩展调用指令,调用共享的核扩展逻辑。调用使共享的数据处理逻辑代表对应的核执行数据处理。

各实施例包括第一设备,进一步包括与所述指令执行逻辑和所述共享的核扩展逻辑耦合的多个共享的核扩展命令寄存器,其中所述共享的核扩展调用指令指出所述共享的核扩展命令寄存器以及多个参数中的一个。

各实施例包括上述第一设备中的任何一个,其中,所述指令执行逻辑,响应于所述共享的核扩展调用指令,基于所述指出的参数,将数据存储在所述指出的共享的核扩展命令寄存器中。

各实施例包括上述第一设备中的任何一个,其中,指令执行逻辑,响应于共享的核扩展调用指令,在所述指出的共享的核扩展命令寄存器中存储:调用属性指针字段中的指针以指向调用属性信息;输入数据操作数指针字段中的指针以指向输入数据操作数;以及,输出数据操作数指针字段中的指针以指向输出数据操作数。

各实施例包括上述第一设备中的任何一个,其中,所述共享的核扩展逻辑,基于与所述调用相关联的数据处理,在所述指出的共享的核扩展命令寄存器中存储:状态字段以提供所述调用的状态;以及,进度字段以提供所述调用的进度。

各实施例包括上述第一设备中的任何一个,其中,共享的核扩展调用指令包括核的指令集的宏指令。

各实施例包括上述第一设备中的任何一个,其中,共享的数据处理逻辑包括至少一个矢量执行单元。

各实施例包括上述第一设备中的任何一个,其中,共享的数据处理逻辑包括在多个核中未发现的数据处理逻辑。

各实施例包括上述第一设备中的任何一个,其中,指令执行逻辑,响应于所述共享的核扩展调用指令,调用所述共享的核扩展逻辑,以根据例程在存储器中的至少一个输入数据结构中执行数据处理,以在存储器中产生至少一个输出数据结构。

各实施例包括上述第一设备中的任何一个,进一步包括:所述多个核中第一核的存储器管理单元(mmu);所述共享的核扩展逻辑的共享的核扩展mmu;以及,所述第一核的所述mmu和所述共享的核扩展mmu之间的硬件接口,以在硬件中交换同步信号,以同步所述第一核的所述mmu和所述共享的核扩展mmu。

各实施例包括上述第一设备中的任何一个,进一步包括:所述多个核中第一核的存储器管理单元(mmu);所述共享的核扩展逻辑的共享的核扩展mmu;以及,所述第一核的所述mmu和所述共享的核扩展mmu之间的将对应于来自所述第一核的调用的页面错误从所述共享的核扩展mmu路由到所述第一核的所述mmu的接口。

各实施例包括上述第一设备中的任何一个,进一步包括:带有所述共享的核扩展逻辑的管芯上的硬件调度逻辑,以在所述共享的数据处理逻辑上调度来自所述多个核的调用。

在一个实施例中,第一方法包括在具有多个核的处理器的一个核内接收共享的核扩展调用指令。共享的核扩展调用指令将导致核调用由多个核共享的核扩展逻辑。调用将执行数据处理。共享的核扩展调用指令指出共享的核扩展命令寄存器,并指出指定数据处理要被执行的多个参数。响应于共享的核扩展调用指令,共享的核扩展逻辑被调用,执行数据处理。调用共享的核扩展逻辑可以包括基于由指令指出的一个或多个参数,将数据存储在由指令指出的共享的核扩展命令寄存器中。

各实施例包括第一方法,其中,接收指令包括接收非阻止的共享的核扩展调用指令,并进一步包括在所述共享的核扩展逻辑接受了要被执行的所述数据处理之后,在所述核上隐退所述非阻止的共享的核扩展调用指令。

各实施例包括第一方法,其中,接收指令包括接收阻止的共享的核扩展调用指令,并进一步包括在所述共享的核扩展逻辑完成所述数据处理之后,在所述核上隐退所述阻止的共享的核扩展调用指令。

各实施例包括第一方法,其中,接收所述指令包括接收阻止的共享的核扩展调用指令,其中所述阻止的共享的核扩展调用指令指出所述指出的共享的核扩展命令寄存器的释放的超时值。

各实施例包括上述第一方法中的任何一个,其中,所述共享的核扩展调用指令包括所述核的指令集的宏指令,并且,其中所述共享的核扩展命令寄存器包括架构寄存器。

各实施例包括上述第一方法中的任何一个,其中,基于参数,将数据存储在指出的共享的核扩展命令寄存器中包括:在调用属性指针字段中存储指针以指向调用属性信息;在输入数据操作数指针字段中存储指针以指向输入数据操作数;以及,在输出数据操作数指针字段中存储指针以指向输出数据操作数。

各实施例包括上述第一方法中的任何一个,进一步包括,所述共享的核扩展逻辑基于与所述调用相关联的数据处理,将数据存储在所述指出的共享的核扩展寄存器中,所述存储所述数据包括:在所述指出的寄存器的状态字段中存储状态以提供所述调用的状态;以及,在所述指出的寄存器的进度字段中存储进度以提供所述调用的进度。

各实施例包括上述第一方法中的任何一个,其中,调用包括调用所述共享的核扩展逻辑,以根据例程在存储器中的至少一个输入数据结构中执行数据处理,以在存储器中产生至少一个输出数据结构。

各实施例包括上述第一方法中的任何一个,进一步包括,通过在所述mmu和所述共享的核扩展mmu之间在硬件中交换同步信号,同步所述核的存储器管理单元(mmu)和所述共享的核扩展逻辑的共享的核扩展mmu。

各实施例包括上述第一方法中的任何一个,进一步包括,将对应于所述调用的页面错误从共享的核扩展存储器管理单元(mmu)路由到所述核的mmu。

各实施例包括上述第一方法中的任何一个,进一步包括,在接收所述共享的核扩展调用指令之前:接收指出所述共享的核扩展命令寄存器的共享的核扩展中止指令;以及,响应于所述共享的核扩展中止指令,停止对应于由所述共享的核扩展中止指令指出的所述共享的核扩展命令寄存器的数据处理,并释放所述共享的核扩展命令寄存器。

各实施例包括上述第一方法中的任何一个,进一步包括,在接收所述共享的核扩展调用指令之后:接收指出所述共享的核扩展命令寄存器的共享的核扩展读取指令;以及,响应于所述共享的核扩展读取指令,从由所述共享的核扩展读取指令指出的所述共享的核扩展命令寄存器读取数据处理完成状态。

在一个实施例中,机器可读的存储介质存储一个或多个指令,如果由机器执行,指令导致机器执行上述第一方法中的任何一个。

在一个实施例中,设备被配置或可操作以执行上述第一方法中的任何一个。

各实施例包括第一系统,其中,包括处理器以及与处理器耦合的动态随机存取存储器(dram)。处理器包括多个核和与多个核中的每一个耦合的共享的核扩展逻辑。共享的核扩展逻辑具有被多个核中的每一个共享的数据处理逻辑。处理器还包括指令执行逻辑,对于核中的每一个,该指令执行逻辑,响应于共享的核扩展调用指令,将调用共享的核扩展逻辑。调用将让共享的数据处理逻辑代表对应的核执行数据处理。

各实施例包括第一系统,其中,共享的核扩展调用指令包括核的指令集的宏指令。

各实施例包括上述第一系统中的任何一个,进一步包括与所述指令执行逻辑和所述共享的核扩展逻辑耦合的多个共享的核扩展命令寄存器,其中所述共享的核扩展调用指令将指出所述共享的核扩展命令寄存器以及多个参数中的一个。

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