太阳城集团

  • / 14
  • 下载费用:30 金币  

具有共享前端单元的处理核.pdf

摘要
申请专利号:

太阳城集团CN201380060918.9

申请日:

2013.06.28

公开号:

CN105027075A

公开日:

2015.11.04

当前法律状态:

授权

有效性:

有权

法律详情: 授权|||实质审查的生效IPC(主分类):G06F 9/28申请日:20130628|||公开
IPC分类号: G06F9/28; G06F9/30; G06F9/38 主分类号: G06F9/28
申请人: 英特尔公司
发明人: I·帕多; D·马可维奇; O·本-琪琪; Y·优素福
地址: 美国加利福尼亚州
优先权: 13/730,719 2012.12.28 US
专利代理机构: 上海专利商标事务所有限公司31100 代理人: 高见
PDF完整版下载: PDF下载
法律状态
申请(专利)号:

太阳城集团CN201380060918.9

授权太阳城集团号:

||||||

法律状态太阳城集团日:

2019.01.29|||2015.12.02|||2015.11.04

法律状态类型:

太阳城集团授权|||实质审查的生效|||公开

摘要

描述了具有一个或多个处理核的处理器。一个或多个处理核中的每一个都具有前端逻辑电路以及多个处理单元。前端逻辑电路将获取线程的相应的指令并将指令解码为指令的相应的微代码以及输入操作数和结果地址。多个处理单元中的每一个都将被分配至少一个线程,耦合到所述前端单元,并具有相应的缓冲区以接收并存储线程中的分配给其的至少一个的微代码。多个处理单元中的每一个都还包括:i)对应于由处理器提供的完整指令组的至少一组功能单元,所述至少一组功能单元用于执行其相应的处理单元的接收到的微代码;ii)耦合到所述至少一组功能单元以存储接收到的微代码的操作数以及结果的寄存器;iii)获取输入操作数用于至少一个功能单元执行接收到的微代码的数据获取电路。

权利要求书

权利要求书
1.  具有一个或多个处理核的处理器,所述一个或多个处理核中的每一个都包括:
前端逻辑电路,所述前端逻辑电路用于获取线程的相应的指令并将所述指令解码为所述指令的相应的微代码以及输入操作数和结果地址;
多个处理单元,所述处理单元中的每一个被分配所述线程中的至少一个,每一处理单元耦合到所述前端单元,并具有相应的缓冲区,用于接收并存储所述线程中分配给其的至少一个线程的微代码,所述多个处理单元中的每一个都包括:
i)对应于由所述处理器提供的完整指令组的至少一组功能单元,所述至少一组功能单元执行其相应的处理单元的接收到的微代码;
ii)耦合到所述至少一组功能单元以存储所述接收到的微代码的操作数以及结果的寄存器;
iii)用于获取输入操作数以用于所述至少一个功能单元执行所述接收到的微代码的数据获取电路。

2.  如权利要求1所述的处理器,其特征在于,所述功能单元不耦合到用于执行所述接收到的微代码的无序执行的任何逻辑电路。

3.  如权利要求2所述的处理器,其特征在于,所述处理器包括N个处理单元。

4.  如权利要求1所述的处理器,其特征在于,所述功能单元单元不耦合到用于执行所述接收到的微代码的推理性执行的任何逻辑电路。

5.  如权利要求4所述的处理器,其特征在于,所述处理器包括N个处理单元。

6.  如权利要求1所述的处理器,其特征在于,所述处理器不包括用于所述线程中的任何一个的为所述线程中的任何一个并行地发出指令的电路。

7.  如权利要求6所述的处理器,其特征在于,所述处理器包括N个处理单元。

8.  一种由处理器执行的方法,包括:
利用所述处理器的处理核的相同逻辑电路,执行下面的a)和b)中的至少一个:
a)获取两个不同的线程的第一和第二指令;
b)将所述第一和第二指令解码为微代码的相应的单元、输入操作数地址太阳城集团以及结果地址太阳城集团;
将微代码的所述相应的单元以及地址太阳城集团分派到两个不同的处理单元;以及,
在每一处理单元处,对于所述两个线程中的其相应的一个,执行下列各项:
存储其相应的线程的微代码;
获取带有接收到的输入操作数地址的输入操作数数据;
利用功能单元电路对所述获取的输入操作数执行接收到的微代码,所述功能单元电路是支持完整通用指令组的一组功能单元的一部分。

9.  如权利要求8所述的方法,其特征在于,所述处理单元中的第一个是第一处理单元,而所述处理单元中的第二个是第N处理单元。

10.  如权利要求9所述的方法,其特征在于,软件将所述线程中的第一线程分配到所述第一处理单元,并且将所述线程中的第二线程分配到所述第N处理单元。

11.  如权利要求8所述的方法,其特征在于,所述线程两者都不利用任何推理性执行逻辑电路来处理。

12.  如权利要求8所述的方法,其特征在于,所述线程两者都不利用任何无序执行逻辑电路来处理。

13.  如权利要求8所述的方法,其特征在于,所述线程两者都不并行地发出其相应的指令。

14.  一种处理器,包括:
至少两个处理核,每一核都具有:
前端单元,所述前端单元用于获取由其处理核处理的所有线程的所有 相应的指令并将所述指令解码为所述指令的相应的微代码以及输入操作数和结果地址;
所述前端单元耦合到其处理核的所有通用处理单元,所述处理单元中的每一个被分配所述线程中的至少一个,每一处理单元耦合到所述前端单元,用于接收所述线程中分配给其的至少一个线程的微代码以及输入操作数和结果地址,所述多个处理单元中的每一个包括:
i)对应于由所述处理器提供的完整通用指令组的至少一组功能单元,所述至少一组功能单元执行其相应的处理单元的接收到的微代码;
ii)耦合到所述至少一组功能单元以存储所述接收到的微代码的操作数和结果的寄存器;
iii)用于获取输入操作数以用于所述至少一个功能单元执行所述接收到的微代码的数据获取电路;
耦合到所述多个处理单元的互连网络;
耦合到所述互连网络的末级缓存。

15.  如权利要求14所述的处理器,其特征在于,所述功能单元不耦合到用于执行所述接收到的微代码的无序执行的任何逻辑电路。

16.  如权利要求15所述的处理器,其特征在于,所述处理器包括N个处理单元。

17.  如权利要求14所述的处理器,其特征在于,所述功能单元不耦合到用于执行所述接收到的微代码的推理性执行的任何逻辑电路。

18.  如权利要求17所述的处理器,其特征在于,所述处理器包括N个处理单元。

19.  如权利要求14所述的处理器,其特征在于,所述处理器不包括用于所述线程中的任何一个的为所述线程中的任何一个并行地发出指令的电路。

20.  如权利要求19所述的处理器,其特征在于,所述处理器包括N个处理单元。

说明书

说明书具有共享前端单元的处理核
发明领域
本发明的领域一般涉及计算科学,更具体而言,涉及具有共享前端单元的处理核。
背景
图1示出了示例性多核处理器100的架构。如在图1中观察到的,处理器包括:1)多个处理核101_1到101_N;2)互连网络102;3)末级缓存系统103;4)存储器控制器104和I/O中枢105。处理核中的每一个都包含用于执行程序代码指令的一个或多个指令执行流水线。互连网络102可以将核101_1到101_N中的每一个彼此互连并与其他组件103、104、105互连。末级缓存系统103在指令和/或数据被驱逐到系统存储器108之前充当处理器中的最后一层缓存。
存储器控制器104从/向系统存储器108读/写数据和指令。I/O中枢105管理处理器和“I/O”设备(例如,非易失性存储器设备和/或网络接口)之间的通信。端口106源于互连网络102以链接多个处理器,以便可以实现具有N以上的核的系统。图形处理器107执行图形计算。功率管理电路(未示出)作为整体管理处理器的性能和功率状态(“封装级别”)以及处理器内的诸如单个核101_1到101_N、图形处理器107等等之类的单个单元的性能和功率状态的各方面。为了方便起见,在图1中未描绘其他重要的功能块(例如,锁相环(PLL)电路)。
图2示出了图1的处理核中的一个的示例性实施例200。如在图2中观察到的,每一核都包括两个指令执行流水线250,260。每一指令执行流水线250,260都包括其自己的相应的:i)指令获取级201;ii)数据获取级202;iii)指令执行级203;以及,iv)写回级204。指令获取级201从缓存或系统存储器(如果所希望的指令不在缓存内)获取指令序列中的“接 下来的”指令。指令通常操作数数据以及要对操作数数据执行的操作。数据获取级202从本地操作数寄存器空间、数据缓存或系统存储器获取操作数数据。指令执行级203包含一组功能单元,其中任何一个都被调用,以执行由任何一个指令对操作数数据调用的特定操作,操作数数据是由指令所指定的,并由数据获取级202获取的。写回级204通常通过将结果写入到耦合到相应的流水线的本地寄存器空间,来“提交”执行的结果。
为了避免对较早的“飞行中的”指令没有任何依赖关系的指令的不必要的等待太阳城集团,许多现代的指令执行流水线具有增强的数据获取和写回级以实行“无序”执行。这里,流水线250,260的相应的数据获取级202被增强,以包括数据相依性逻辑205,以识别指令何时没有对较早的飞行中的指令的依赖关系,并准许其在例如其数据还没有被获取的较早的指令的“前头”向指令执行级203发出。
此外,写回级204还被增强以包括重排序缓冲器206,该重排序缓冲器206将无序执行的指令的结果重排序为其正确的顺序,并将它们的引退等待太阳城集团到物理寄存器组,直到指令执行结果的正确地排序的连续序列引退。
还观察到增强的指令执行流水线在指令获取级201内包括指令推测逻辑207。推测逻辑207猜测指令序列将采取什么条件分支方向或跳转,并开始获取从该方向或跳转流出的指令序列。然后,由执行流水线的其余级处理推理性指令。
附图
本发明是作为示例说明的,而不仅限制于各个附图的图形,在附图中,类似的参考编号表示类似的元件,其中:
图1示出了处理器(现有技术);
图2示出了指令执行流水线(现有技术);
图3示出了具有共享前端单元的处理核;
图4示出了由图3的处理核执行的方法;
图5示出了其相应的核具有共享前端单元的处理器;
图6示出了由其相应的核具有共享前端单元的处理器组成的计算系统。
详细描述
在半导体芯片上制造的逻辑晶体管的数量可以被视为半导体芯片的用于处理太阳城集团的固定资源。上文参考图1和2所讨论的处理器和处理核架构的特征是,强调缩短由处理器处理的指令的等待太阳城集团。换言之,图1和2的处理器设计的固定资源,诸如对每一个流水线作出的无序执行增强,专用于通过带有最小的等待太阳城集团的流水线运行线程。
然而,逻辑电路专用于当前活跃的线程的加速,是以处理器在任何时刻能够同时处理的线程的总数为代价来实现的。换言之,如果以不同的方式强调处理器的逻辑电路单元,则处理器能够比图1的处理器(其处理核是根据2的架构设计的)同时处理更多线程。例如,如果移除无序执行增强的逻辑电路资源,则“被腾出的”逻辑电路可以重新用于实例化处理器内的更多执行单元。利用更多执行单元,处理器可以同时执行更多指令,并由此的更多线程。
图3示出了在多核处理器内可以实例化多次(例如,对于每一个处理核,一次)的处理核300的架构的实施例。图3的处理核架构被设计有比典型的标准处理核更多执行单元,以便提高处理核的总的吞吐量(即,提高处理核可以同时处理的线程的数量)。如在图3中观察到的,处理核架构包括耦合到多个处理单元302_1至302_N的共享前端单元301。在一个实施例中,处理单元302_1到302_N中的每一个都包含能够支持整个指令集,诸如整个x86指令集或其他通用指令集(与诸如数字信号处理器(DSP)或加速器的典型的指令集之类的比较有限的特定用途指令集相反)的至少一组功能单元(例如,至少一组功能单元303)。
如在图3中观察到的,共享前端单元301获取并接收要由处理核300处理的指令,解码接收到的指令,并将经解码的指令派遣到它们的合适的处理单元。在一个实施例中,共享前端单元获取正在由处理核的所有通用处理单元执行的所有线程的所有指令。
将特定线程分配给特定处理单元,并且每一处理单元,如下面更详细地描述的,是多线程的(即,可以同时和/或并发地处理一个以上的线程)。如此,如果每一处理单元都可以同时/并发地执行高达M个硬件线程,并且有N个处理单元,则处理核可以同时/并发地执行高达MN个硬件线程。这里,乘积MN可以大于可以在典型的处理核中同时执行的硬件线程的典型的数量(例如,大于当前密度中的8或16)。参考共享前端单元301,共享前端单元包含程序控制逻辑电路311,用以标识并获取每一个线程的合适的“接下来的”指令。这里,程序控制逻辑电路311包括每一个线程的指令指针312_1到312_MN,以及指令获取电路313。注意,图3指出有MN个指令指针以反映对于MN个不同的硬件线程的支持。对于每一个硬件线程,指令获取电路313首先针对在线程的指令指针内标识的指令查看指令缓存314。如果在指令缓存314内没有发现搜寻的指令,则从程序存储器315中获取它。在各实现中,可以以每个硬件线程为基础存储指令块,并从缓存和/或存储器中获取它们。
个体硬件线程可以由指令获取电路313以太阳城集团切片为基础来服务(例如,合理的轮询(round robin)方法)。进一步,指令获取电路313可以被并行化为并行地获取不同的硬件线程的指令的类似的/相同块(例如,指令获取电路的每一并行块服务指令指针的不同的子集)。
然而,由于可能比传统的处理器较慢地处理单个硬件线程(例如,由于每个线程等待太阳城集团缩减电路没有被实例化以有利于更多处理单元,如上文所描述的),因此,可以设想,某些实现可能不需要并行指令获取能力,或至少包括少于N个并行指令获取通道(例如,N/2并行指令获取块)。相应地,在这些中的任何一种情况下,前端单元301的某些组件由处理单元302_1到302_N中的至少两个共享。
在又一实施例中,程序控制逻辑电路311还包括每一个硬件线程的指令转换后备缓冲器(ITLB)电路316。如本领域理解的,ITLB将从程序存储器315接收到的指令地址转换为物理存储器中指令实际驻留的实际地址。
在获取指令之后,它被指令解码器317解码。在一个实施例中,每一个处理单元有指令解码器(即,有N个解码器)。再次,例如,在以较低等待太阳城集团执行线程为代价增大处理单元的数量N的情况下,每个指令解码器可以有一个以上的处理单元。可以想象地,对于所有处理单元,甚至可以有一个解码器。
指令通常指定:i)要以“操作码”的形式执行的操作;ii)可以发现操作的输入操作数的位置(寄存器和/或存储器空间);以及,iii)将存储操作的结果的位置(寄存器和/或存储器空间)。在一个实施例中,指令解码器317不仅通过将指令分解为其操作码和输入操作数/结果存储位置,而且还通过将操作码转换为微指令序列,来解码指令。
如本领域理解的,微指令类似于执行单元将执行以便执行指令的功能的小软件程序(微代码)。如此,指令操作码被转换为对应于指令的功能操作的微代码。通常,操作码作为查询参数被输入到被配置成作用就象查询表一样的电路318(例如,被配置为查询表的只读存储器(ROM))。查询表电路318利用操作码的指令的微代码,对输入操作码作出响应。如此,在一个实施例中,在处理核中每一个处理单元有ROM(或再次,每个微代码ROM,有一个以上处理单元,因为与传统的处理器相比,处理单元的每线程等待太阳城集团已经变弱)。
然后,与其输入操作数和结果的经解码的指令的寄存器/存储器地址一起,将经解码的指令的微代码分派到处理单元,该处理单元已经分配给经解码的指令是其分量的硬件线程。注意,在两个不同的处理单元上运行的两个不同的硬件线程的两个不同的指令的相应的微代码可以同时被派遣到它们的相应的处理单元。
在一个实施例中,如上文所讨论的,每一处理单元302_1到302_N都可以同时和/或并发地执行一个以上的硬件线程。例如,每一处理单元都可以具有X组执行单元(其中,X=1或更大),其中,每一组执行单元都能够支持诸如整个x86指令集之类的整个指令集。可另选地或组合地,每一处理单元都可以并发地(而不是同时)执行多个软件线程。这里,并发执 行,而不是同时执行,对应于在一段太阳城集团内通过在由处理单元支持的软件线程之间交替处理资源执行多个软件线程(例如,以轮询方式给每一个软件线程供给资源)。如此,在一个实施例中,在一个太阳城集团窗口内,单一处理单元可以通过作为处理单元的硬件线程,将软件线程以及它们的相关联的状态太阳城集团切换进出处理单元,并发地执行多个软件线程。
如在图3中观察到的,每一处理单元都具有微代码缓冲区320,用于存储从指令解码器317派遣的微代码。可以将微代码缓冲区320分区,以便对于由处理单元支持的每一个硬件线程,存在单独的FIFO排队空间。输入操作数和结果地址还以对准方式排队,或以别的方式与它们的指令的相应的微代码相关联。
每一处理单元都包括耦合到其内部功能单元组303的寄存器空间321,用于保存功能单元组303负责执行的线程的操作数/结果数据。如果单个功能单元组将并发地执行多个硬件线程,则可以将功能单元组303的寄存器空间321分区,以便对于功能单元组303将并发地执行的每一个硬件线程,有一个寄存器组分区。如此,功能单元组303对于功能单元组正在并发地执行的每一个唯一硬件线程,在特定寄存器分区“之外操作”。
如在图3中观察到的,每一处理单元302_1到302_N都包括寄存器分配逻辑322,用以为处理单元正在并发地和/或同时执行的每一个相应的硬件线程的指令分配寄存器。这里,对于每个处理单元具有一个以上的功能单元组的实现,可以有微代码缓冲区电路320和寄存器分配电路322的多个实例(例如,处理单元的每一功能单元组,一个实例),或可以有馈给一个以上的功能单元组的一个微代码缓冲区和寄存器分配电路(即,对于两个或更多功能单元组,一个微代码缓冲区320和寄存器分配电路322)。寄存器分配逻辑电路322包括数据获取逻辑,用于从与操作数的相应的指令被指向的功能单元相关联的寄存器空间321获取操作数(由指令调用的)。数据获取逻辑电路可以耦合到系统存储器323,以显式地从系统存储器323获取数据操作数。
在一个实施例中,每一功能单元组303都包括:i)包含用于执行整数 数学/逻辑指令的功能单元的整数功能单元集群;ii)包含用于执行浮点数学/逻辑指令的功能单元的浮点功能单元集群;iii)包含用于执行SIMD数学/逻辑指令的功能单元的SIMD功能单元集群;以及,iv)包含用于执行数据存储器访问(对于整数和/或浮点和/或SIMD操作数和/或结果)的功能单元的存储器访问功能单元集群。存储器访问功能单元集群可以包含一个或多个数据TLB,以对于其相应的线程执行虚拟到物理地址转换。
特定指令的微代码连同由与寄存器分配逻辑322相关联的获取电路为指令获取的操作数数据一起从其相应的微代码缓冲区320发到合适的功能单元。功能单元的执行的结果被写回到与执行单元相关联的寄存器空间321。
在又一实施例中,每一处理单元都包含耦合到存储器访问集群的功能单元的数据缓存324。存储器访问集群的功能单元还耦合到系统存储器323,以便它们可以从存储器获取数据。值得注意的是,上文所描述的每一寄存器组分区都可以被进一步分区为耦合到对应的功能单元集群的单独的整数、浮点以及SIMD寄存器空间。
根据一种情况,操作系统和/或虚拟机监视器(VMM)软件将特定软件线程分配到特定处理单元。共享前端逻辑301和/或操作系统/VMM能够动态地将软件线程分配到特定处理单元或功能单元组,以作为硬件线程来激活线程。在各实施例中,每一处理单元都包括“上下文切换”逻辑(未示出),以便每一处理单元都比起它可以同时或并发地作为硬件线程支持,可分配更多软件线程。即,分配给处理单元的软件线程的数量可以超出处理单元目前能够执行(或者同时或者并发)的“活跃”硬件线程的数量,如由线程的上下文太阳城集团在处理单元的寄存器空间内的存在所证明的。
这里,例如,当软件线程作为硬件线程变为活跃时,其上下文太阳城集团(例如,其各种操作数的值和控制太阳城集团)位于耦合到执行线程的指令的功能单元组303的寄存器空间321内。如果作出将线程从活跃转换为非活跃状态的决定,则从此寄存器空间321读出线程的上下文太阳城集团,并存储在别处(例如,系统存储器323)。在线程的寄存器空间现在被“腾出”的情况下,可 以将其上下文太阳城集团驻留,例如,在系统存储器232中的另一“非活跃”软件线程的上下文太阳城集团写入到寄存器空间321。结果,其他线程从“非活跃”转换到“活跃”,其指令作为前进的硬件线程来执行。
如上文所讨论的,可以以最大化任何一个特定线程的等待太阳城集团为代价取得容纳大量的硬件线程的逻辑电路的“空间”。如此,用于“加速”硬件线程的执行的任何一个机制以及相关联的逻辑电路可能不存在于共享前端或处理单元电路中。这样的被消除的块可包括下列各项中的任何一项或多项:1)推测逻辑(例如,分支预测逻辑);2)无序执行逻辑(例如,寄存器重命名逻辑和/或重排序缓冲区和/或数据相依性逻辑);3)用于对于单一硬件线程动态地实行并行指令发出的超级标量逻辑。
利用图3的处理核架构的多个实例构建的多核处理器可包括上文参考图1所讨论的周围的特征中的任何一个/全部。
图4示出了描述上文所描述的处理核的方法的流程图。根据图4的方法,在共享前端单元中获取401和解码不同的硬件线程的第一和第二指令。解码指令,从共享前端单元402向不同的处理单元发出指令的相应的微代码和操作数/结果地址。相应的处理单元获取它们的相应的操作数的数据,并向相应的功能单元403发出接收到的微代码和相应的操作数。然后,功能单元执行它们的相应的指令404。
图5示出了具有多个处理核550_1到550_N的处理器500的实施例,每一处理核都具有相应的共享前端单元511_1,511_2,...511_N(带有相应的指令TLB 516_1,516_2,...516_N)和具有对应的微代码缓冲区的相应的处理单元(例如,核501_1的处理单元内的微代码缓冲区520_1,520_2,等等)。每一核还包括一个或多个缓存级别550_1,550_2,550_N以个体地和/或相应的核作为整体地,缓存每一处理单元的指令和/或数据。核501_1,501_2,...501_N通过互连网络502彼此耦合,该互连网络502还将核耦合到一个或多个缓存级别(例如,末级缓存503),它们缓存核501_1,501_2...501_N的指令和/或数据),以及耦合到例如系统存储器的“切片”的存储器控制器504。在图5中还可以包括诸如图1的组件中的任何一个之 类的其他组件。
图6示出了诸如利用具有上文在图5中所讨论的特征的多个处理器600_1到600_z实现的计算机之类的计算系统的实施例。多个处理器600_1到600_z通过网络彼此连接,该网络还将处理器耦合到多个系统存储器单元608_1,608_2,非易失性存储器单元610(例如,磁盘驱动器)和外部(例如,因特网)网络接口611。
在上述说明书中,已经参考特定示例性实施例描述了本发明。然而,显然可对这些实施例作出各种修改和改变,而不背离如所附权利要求所述的本发明的更宽泛精神和范围。因此,说明书和附图应被认为是说明性而非限制性意义。

关 键 词:
具有 共享 前端 单元 处理
  专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
太阳城集团本文
本文标题:具有共享前端单元的处理核.pdf
链接地址:http://zh228.com/p-6401733.html
太阳城集团我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备17046363号-1 
 


收起
展开
葡京赌场|welcome document.write ('');