一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种指令分配方法、处理器、芯片及电子设备与流程

2023-02-02 02:01:12 来源:中国专利 TAG:


1.本技术实施例涉及处理器技术领域,具体涉及一种指令分配方法、处理器、芯片及电子设备。


背景技术:

2.在现代处理器中,指令需要经过取指、译码和执行等处理过程;其中,译码是对取指的指令进行解析翻译,以得到微指令(micro-op,uop)的过程。为提升译码性能,处理器中可设置多个译码器组对多个指令进行译码,然而,指令如何分配给多个译码器组成为了难题。


技术实现要素:

3.有鉴于此,本技术实施例提供一种指令分配方法、处理器、芯片及电子设备,以实现对取指的指令进行切分并分配给多个译码器组进行译码,进而提高译码器组的吞吐量,提升处理器的译码性能。
4.为实现上述目的,本技术实施例提供如下技术方案。
5.第一方面,本技术实施例提供一种指令分配方法,包括:
6.根据取指地址从指令缓存中读取指令流,以及根据所述取指地址从指令边界缓存中读取指令边界信息,所述指令边界信息指示进行指令切分的指令位置;
7.根据所述指令边界信息指示的指令位置,对所述指令流进行切分,并将切分的指令流分配给多个译码器组进行并行译码。
8.第二方面,本技术实施例还提供一种处理器,包括:
9.指令缓存,用于根据取指地址获取指令流;
10.指令边界缓存,用于根据所述取指地址获取指令边界信息,所述指令边界信息指示进行指令切分的指令位置;
11.指令切分单元,用于根据所述指令边界信息指示的指令位置,对所述指令流进行切分,并将切分的指令流分配给多个译码器组进行并行译码。
12.第三方面,本技术实施例还提供一种芯片,包括如上述第二方面所述的处理器。
13.第四方面,本技术实施例还提供一种电子设备,包括如上述第三方面所述的芯片。
14.本技术实施例提供的指令分配方法,可通过指令边界缓存记录指令的指令边界信息,其中,指令边界信息指示对取指的指令流进行指令切分的指令位置。基于此,本技术实施例可根据取指地址从指令缓存中读取指令流,并且根据所述取指地址从指令边界缓存中读取指令边界信息,进而根据所述指令边界信息指示的指令位置,对所述指令流进行切分,并将切分的指令流分配给多个译码器组进行并行译码。本技术实施例可通过指令边界缓存记录指令的指令边界信息,对取指的指令流进行切分,从而将切分的指令流分配给多个译码器进行并行译码,实现了对取指的指令流进行切分并分配给多个译码器组进行译码的效果,解决了指令分配给多个译码器组的难题,能够提高译码组的吞吐量,提升处理器的译码
性能。
附图说明
15.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
16.图1为处理器的架构框图。
17.图2为本技术实施例提供的处理器的另一架构框图。
18.图3为本技术实施例提供的处理器的再一架构框图。
19.图4为本技术实施例提供的指令分配方法流程图。
20.图5为本技术实施例提供的指令流切分示意图。
21.图6a为本技术实施例提供的指令边界缓存中的指令边界缓存块的内部结构可选示意图。
22.图6b为本技术实施例提供的指令边界缓存中的指令边界缓存块的内部结构另一可选示意图。
23.图7为本技术实施例提供的读取指令流以及指令边界信息的可选示意图。
24.图8为本技术实施例提供的读取指令流以及指令边界信息的另一可选示意图。
25.图9为本技术实施例提供的具有微指令缓存的处理器架构图。
26.图10为本技术实施例提供的具有微指令缓存的处理器又一架构图。
具体实施方式
27.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
28.处理器一般使用流水线(pipeline)技术实现指令的处理。在处理器的流水线作业中,指令需要经过取指(instruction fetch)、译码(instruction decode)、执行(execute)等处理过程。取指为从处理器的缓存或主存储器中取指出程序运行对应的指令;译码操作为对取指出的指令进行译码以确定指令的操作码和/或地址码等;执行操作为根据得到的操作码和/或地址码等执行指令操作,实现程序运行。其中,译码主要由处理器中设置的多个译码器组实现。作为可选实现,图1示例性的示出了处理器的架构框图,该处理器包括:分支预测单元101、指令缓存102、多个译码器组1031至103n,n的具体数值可以根据处理器的具体设计而定,本技术实施例对此并不设限。
29.分支预测单元101是一种数字电路,可对指令进行分支预测,并基于分支预测结果生成取指请求。需要说明的是,由于指令中存在改变程序流程的分支指令的可能,为减少处理器等待分支指令的执行结果来确定下一步取指而导致的流水线延迟,处理器的前端可设置分支预测单元,以实现指令的分支预测。
30.分支预测结果例如当前指令是否为分支指令、分支指令的分支结果(方向、地址、
目标地址等)等。在一种实现中,分支预测单元可基于分支指令的历史执行信息和结果进行指令的分支预测,从而得到指令的取指地址范围并生成取指请求。在分支预测单元生成的取指请求中包括有若干条指令的取指地址,用于从指令缓存102中根据取指地址读取相应的指令。
31.指令缓存102中存储有指令,其中,指令缓存102主要通过指令缓存块进行指令的存储。指令缓存块主要由两部分组成,分别为标记部分(也可称为tag域)和数据部分(也可称为数据域),在tag域和数据域中设置有多个存储单位。指令缓存的tag域用于存放标记tag,根据tag能够确定取指地址对应的指令是否保存在指令缓存中;数据域用于存放指令的具体内容,根据指令缓存的tag能够在数据域中查找到对应的指令。
32.多个译码器组1031至103n能够对多个指令进行并行译码。针对任一译码器组,译码器组可对指令进行译码操作,得出译码后的指令;译码后的指令可以是解释指令所得出的可由机器执行的操作信息,诸如控制字段所形成的机器可执行的uop(micro-op,微指令)。
33.然而,处理器要实现多个译码器组对指令的并行译码需要面临诸多难题,比如指令缓存102取指出的指令流如何分配给多个译码器组。为解决上述问题,本技术实施例提供进一步改进的处理器架构,图2示例性的示出了本技术实施例提供的处理器的另一架构框图。结合图1和图2所示,图2所示处理器中进一步设置了指令切分单元201,指令切分单元201用于对指令缓存102取指的指令流进行切分,从而得到分配给多个译码器组进行并行译码的多个指令组。
34.在可能的实现中,指令切分单元201可以依据分支预测单元预测的指令分支跳转,对取指的指令流进行指令切分。
35.需要说明的是,一段指令流中有可能存在分支指令,分支指令可改变程序的执行流程或者调用子程序。通过分支预测单元101对分支指令的预测能够确定分支指令的下个指令的取指地址。其中,分支预测单元101对分支指令的预测通常会分为两种情况:分支指令不跳转和分支指令跳转。当分支预测单元101预测分支指令跳转,则在取指请求中对应分支跳转指令的当前取指地址的结束位置为分支跳转指令的结束位置,下一个指令的取指起始地址为跳转到的取指地址,该取指地址为指示分支跳转的地址。可以理解为,分支跳转指令是一个完整的指令,则分支跳转指令的指令结尾位置可以作为一个有效的指令边界。因此,分支预测单元的分支预测跳转可作为指令切分单元201切分指令流的依据。
36.发明人在研究过程中发现,指令切分单元基于分支预测单元的分支预测跳转,虽然能够实现指令流的切分,但是对于分支比较稀疏或者不存在分支的指令流,指令切分单元对指令流的切分会出现不及时或者不合理的问题。
37.在一个示例中,如果一段较长的指令流中没有任何分支,则分支预测单元无法给出分支跳转的预测。对于不存在分支跳转指令的指令流,指令切分单元无法实现对指令流的切分,从而一段较长的指令流会被分配给默认的译码器组,而其余的译码器组则处于空闲状态,导致多个译码器组无法实现指令的并行译码,致使多个译码器组的吞吐量降低,影响处理器的译码性能。
38.在另一示例中,如果一段较长的指令流中仅存在少量的分支跳转指令,例如只有一个分支跳转指令存在,即分支预测单元对指令进行分支预测得到的取指地址中仅有一个
指示分支跳转的地址,此时指令切分单元根据分支跳转指令能对指令流实现一次切分,并且指令流的切分位置受分支跳转指令的限制。比如分支跳转指令存在于指令流的起始位置,则切分后的大部分指令会被分配给一个译码器组,同样会造成其余多个译码器组的空闲状态,不能有效提高译码器组的吞吐量。
39.基于此,本技术实施例提供进一步改进的处理器架构,图3示例性的示出了本技术实施例提供的处理器的再一架构框图。结合图2和图3所示,图3所示处理器中进一步设置了指令边界缓存202,用于存储指令边界信息,所述指令边界信息指示进行指令切分的指令位置,能够为指令切分单元对指令流进行切分提供依据。在一些实施例中,指令切分单元基于有效的指令边界,对指令流进行切分。
40.在一些实施例中,本技术实施例可在基于取指请求访问指令缓存时,同步访问指令边界缓存,进而根据取指地址在指令缓存中读取出指令流的同时,在指令边界缓存中读取指令边界信息;从而指令切分单元可以基于指令边界缓存中读取的指令边界信息,对取指的指令流进行切分;相对于指令流的分支比较稀疏或者不存在指令分支的情况,本技术实施例能够利用指令边界缓存中的指令边界信息对指令流进行及时切分,保证取指的指令流切分后能够分配给多个译码器组进行并行译码,提高了多个译码器组的吞吐量,提升了处理器的译码性能。
41.作为可选实现,图4示例性的示出了申请实施例提供的指令分配方法流程图。如图4所示,该方法流程可以包括如下步骤。
42.在步骤s41中,根据取指地址从指令缓存中读取指令流,以及根据所述取指地址从指令边界缓存中读取指令边界信息,所述指令边界信息指示进行指令切分的指令位置。
43.其中,取指地址中存在tag(地址标识),tag作为取指地址的标签信息,可记录取指的指令在指令缓存中tag域对应的标识。在一些实施例中,指令边界缓存可以复用指令缓存的tag,从而本技术实施例根据取指地址,从指令缓存读取指令流的同时,能够同步在指令边界缓存中读取指令边界信息。作为一种可选实现,指令边界缓存可以是设置于指令缓存外部,独立于指令缓存的,用于存储指令边界信息的结构。作为另一种可选实现,指令边界缓存可以是设置于指令缓存中,在指令缓存的数据域分配出的用于存储指令边界信息的区域。
44.需要说明的是,译码器组在对指令进行译码之前,并不能获知指令的有效指令边界。基于此,作为可选实现,结合图3所示,本技术实施例在译码器组对指令进行译码时,可将译码器组译码指令所确定的指令边界信息,保存到指令边界缓存中,其中,指令边界信息可以具体指示指令结束地址,以便指令切分单元根据指令边界信息指示的指令结束地址进行指令流的切分。
45.在步骤s42中,根据所述指令边界信息指示的指令位置,对所述指令流进行切分,并将切分的指令流分配给多个译码器组进行并行译码。
46.在一些实施例中,由于指令边界信息指示进行指令切分的指令位置(例如指令结束地址),因此在指令切分单元得到指令流以及指令边界信息后,能够根据指令边界信息指示的指令位置,对指令流进行切分,并将切分的指令流分配给多个译码器组进行并行译码。
47.作为对指令流进行切分的可选实现,指令切分单元以指令边界信息指示的指令位置为分界,将指令流切分成切分后的前一个指令组和切分后的后一个指令组,从而将指令
流切分为多个指令组。在将指令流分配给多个译码器组进行并行译码时,指令切分单元将切分后的前一个指令组分配给默认译码器组进行译码,将切分后的后一个指令组切换到默认译码器组的下一译码器组进行译码。
48.为便于理解基于指令边界信息指示的指令位置对指令流进行切分的原理,下面以两个译码器组为例进行介绍。图5示例性的示出了指令流切分示意图。如图5所示,指令流包括指令510至51m,m为指令流中的指令数量,具体可根据实际情况而定,本技术实施例并不设限。在指令边界缓存中读取的指令边界信息对应于指令51k的结尾位置,则在指令510至51m中,以指令51k的结尾位置作为切分指令流的分界,对指令流510至51m进行切分。
49.参照图5,指令51k与指令51k 1相邻,在对指令流进行切分时,将指令510至指令51k切分到一个指令组,指令51k 1至指令51m切分到另一个指令组,得到两个不同的指令组,其中,指令510至指令51k被称为切分后的前一个指令组,指令51k 1至指令51m被称为切分后的后一个指令组。
50.继续参照图5,本技术实施例可按照译码器组521和译码器组522的顺序,将切分后的前一个指令组(即指令510至指令51k)分配给译码器组521,由译码器组521对指令510至指令51k执行译码操作。基于指令边界信息指示的指令位置为指令51k的结尾位置,因此指令51k之后的指令需切换到不同的译码器组进行译码,从而切分后的后一个指令组(即指令51k 1至指令51m)分配到译码器组522,由译码器组522对指令51k 1至指令51m执行译码操作。
51.需要说明的是,当读取的指令边界信息为多个时,也可按上述切分原理进行指令流的切分,比如,指令边界信息指示进行指令切分的多个指令位置,则本技术实施例可根据指令边界信息指示的多个指令位置,在指令流中进行多次的指令切分。当切分后的指令组为多个时,作为可选实现,本技术实施例可将多个指令组,顺序分配给多个译码器组。
52.作为可选实现,每个译码器组前可对应设置指令队列,用于存储待译码指令。指令切分单元在将切分的指令分配给多个译码器组时,指令切分单元可以将指令保存到译码器组对应的指令队列,从而每个译码器组能够在对应指令队列中读取待译码的指令并进行译码操作。
53.作为可能的实现,如果取指出的指令流中出现分支跳转指令时,指令切分单元还可以根据分支跳转指令对指令流进行切分,例如在分支跳转指令的结尾位置将指令流进行切分,其中,分支跳转指令的结尾位置之前的指令属于切分前的指令,分支跳转指令的结尾位置之后的指令属于切分后的指令。
54.可以看出,本技术实施例可在处理器中增加设置指令边界缓存,通过指令边界缓存存储指令边界信息,所述指令边界信息指示进行指令切分的指令位置;从而处理器可在根据取指地址从指令缓存读取指令流时,根据所述取指地址同步访问指令边界缓存,并从指令边界缓存中读取指令边界信息。进而本技术实施例可通过指令边界信息指示的指令位置,对指令流进行切分,以实现对指令流的及时切分,并将切分的指令流分配给多个译码器组进行并行译码。本技术实施例可通过指令边界缓存存储指令边界信息,并在读取指令流时,基于指令边界缓存中存储的与取指地址对应的指令边界信息,对指令流进行及时切分,使得切分后的指令流能够分配给多个译码器组进行并行译码,解决了指令分配给多个译码器组的难题,提升了多个译码器组的吞吐量,提高了处理器的译码性能。
1),可以看出,图6b的指令边界缓存块中对应指令边界信息不存在有效位。对于指令边界缓存块中不存在有效位的情况,本技术实施例可以通过规定指令边界信息的数值,以用于表示该指令边界信息有效或者无效。例如,对于指令边界缓存块中存储的2位宽的指令边界信息,利用二进制算法,规定指令边界信息的取值为0表示该指令边界信息无效,取值为1-3表示该指令边界信息有效,比如指令边界信息0对应的取值为00,指令边界信息0无效;指令边界信息1的取值为01,指令边界信息1有效;当然也可以规定指令边界信息的取值为3表示该指令边界信息无效,取值为0-2表示该指令边界信息有效,本技术实施例对此不作过多限制。
63.基于指令边界缓存块中存在有效指令边界信息和无效指令边界信息,其中,有效的指令边界信息表示指令边界对应的指令是一条完整的指令,而无效的指令边界信息不对应任何指令边界,即该指令不存在边界信息,是一条不完整的指令;从而本技术实施例在基于取指地址从指令边界缓存中读取存储在指令边界缓存块的指令边界信息时,可以对应读取有效的指令边界信息(数量为一个或者多个)。
64.在进一步的可选实现中,结合指令边界缓存块中存在有效位,本技术实施例在指令边界缓存中读取指令边界信息时,可基于取指地址在指令缓存中命中的目标tag对应的tag域路数,在指令边界缓存的所述tag域路数对应的数据域路数中,读取有效位信息指示为有效的一个或者多个指令边界信息。或者,结合规定指令边界缓存块中保存的指令边界信息的数值对应的有效表示,本技术实施例在指令边界缓存中读取指令边界信息时,可基于取指地址在指令缓存中命中的目标tag对应的tag域路数,在指令边界缓存的所述tag域路数对应的数据域路数中,根据指令边界信息的数值,读取有效的指令边界信息。
65.其中,为便于理解读取指令流以及指令边界信息的过程,图7示例性的示出了本技术实施例中读取指令流以及指令边界信息的可选示意图。如图7所示,指令边界缓存为设置于指令缓存外部,独立于指令缓存的,用于存储指令边界信息的结构,其中,取指地址由三部分构成,分别为tag(标签)、index(索引)以及offset(偏移),例如:48位取指地址的47:12为tag,11:6为index,5:0为offset。其中,tag是对取指地址进一步划分后得到的更细粒度的地址标签,是判断所要访问的指令是否在指令缓存中的依据;index作为指令缓存的地址指示器,指示访问的指令缓存的范围,如指示指令缓存的某一行或某几行;offset表示所要访问的指令在指令缓存中的偏移量。
66.指令缓存分为tag部分(即tag域)和数据部分(即数据域),每个部分又分为n路(即路0至路n-1)。根据取指地址在指令缓存中读取指令时,首先使用取指地址中的index,在指令缓存的tag部分的每路读取一个tag,共n个tag(即tag0至tagn-1)。然后根据取指地址的index在指令缓存的数据部分的每路中分别读出一个对应的数据,共n个数据(即数据0至数据n-1)。使用取指地址中的tag与在指令缓存中读取出的n个tag进行一一比对,若存在相同的tag,则取指地址在指令缓存中命中,否则,取指地址在指令缓存中未命中,即指令缓存中不存在取指地址对应的指令。在命中的情况下,本技术实施例可根据取指地址与指令缓存的tag比较结果,从n个数据中选出与指令缓存命中的tag相等的路所对应的数据,从而得到指令输出。
67.指令边界缓存组织为与指令缓存的数据部分一一对应的结构,例如可以为指令缓存中的一个指令缓存块,对应指令边界缓存中的一个指令边界缓存块。在一个示例中,指令
边界缓存可以直接复用指令缓存的tag部分,则指令边界缓存中可以仅设置数据部分(即数据域),并且,指令边界缓存的数据部分与指令缓存的数据部分是一一对应的结构,从而根据取指地址,指令边界缓存能够与指令缓存同时进行信息查找。继续参考图7,首先使用取指地址中的index,可以在指令边界缓存中读出n路(即路0至路n-1),每路读取一个指令边界信息,共n个指令边界信息。然后根据取指地址的tag与指令缓存的tag的比较结果,从指令边界缓存读取的n个指令边界信息中选取,与取指地址的tag在指令缓存的tag域中命中的,指令缓存的tag相等的路所对应的边界信息,从而得到指令边界信息输出。
68.在另一个示例中,图8示例性的示出了本技术实施例中读取指令流以及指令边界信息的另一可选示意图。如图8所示,指令边界缓存为设置于指令缓存中,在指令缓存的数据部分分配出的用于存储指令边界信息的区域(图8中虚线部分),从而指令边界缓存能够复用指令缓存的tag部分,且指令边界缓存的数据部分与指令缓存的数据部分一一对应。
69.参考图8所示,根据取指地址在指令缓存中读取指令时,首先使用取指地址中的index,在指令缓存的tag部分的每路读取一个tag,共n个tag(即路0对应的tag0至路n-1对应的tagn-1)。然后根据取指地址的index在指令缓存的数据部分的每路中分别读出对应的数据。其中,由于指令缓存的数据部分分配有用于存储指令边界信息的区域,因此,在根据取指地址的index在指令缓存的数据部分的每路中分别读出对应的数据时,可以在存储指令边界信息的区域中每路读出n个数据,在除存储指令边界信息的区域中每路读出n个数据,共2n个数据(即指令缓存中对应指令的数据0至数据n-1,以及指令缓存中对应指令边界信息的数据0至数据n-1)。进而,在使用取指地址中的tag分别与在指令缓存的tag部分读取出的n个tag进行一一比对,判断取指地址的tag在指令缓存中读取的tag中命中后,本技术实施例可根据取指地址与指令缓存的tag的比较结果,从指令缓存中对应指令数据部分的n个数据中选出与命中的tag相等的路所对应的数据,从指令缓存中对应指令边界信息的数据部分的n个数据中选出与命中的tag相等的路所对应的数据,从而输出指令和指令边界信息。
70.下面以存在两路的指令缓存结构为例进行进一步解释。指令缓存的tag部分与数据部分分别存在两路,例如指令缓存的tag部分与数据部分分别存在路0和路1,指令边界缓存的数据部分存在两路,例如指令边界缓存的数据部分存在路0和路1;并且指令边界缓存复用指令缓存的tag部分。从而,本技术实施例可根据取指地址的index在指令缓存的tag部分的两路中读取出路0的tag和路1的tag,在指令缓存的数据部分的两路中读取出路0的数据和路1的数据,在指令边界缓存的数据部分中读取出路0的指令边界信息和路1的指令边界信息。将取指地址的tag与指令缓存tag部分的路1和路0的tag相比较,如果取指地址的tag与指令缓存tag部分的路0的tag相同,则在指令缓存的数据部分选取路0对应的指令,从而得到指令输出。同时,基于取指地址在指令缓存中命中的tag所在的路0,在指令边界缓存的数据部分中选取路0对应的指令边界信息,从而得到指令边界信息输出。
71.在一些实施例中,指令边界信息指示进行指令切分的指令位置。可选的,指令边界信息可以具体指示指令结束地址,例如,0x40013为指令起始地址,指令长度为4,则指令结束地址为0x40016。基于此,当指令流中不存在分支跳转,本技术实施例的指令切分单元对指令流进行切分的一种可选实现可以是,指令切分单元对指令流的连续顺序取指的数值进行记录,所记录的顺序取指的数值可以为第一数值信息。当第一数值信息达到第一阈值,例
如:第一阈值可以为2,并且基于当前取指请求读取的指令边界信息有效,则根据指令边界信息指示的指令结束地址,对指令流进行切分,得到多个指令组。其中,指令切分单元记录的第一数值信息可以是连续顺序取指对应的取指请求的数量,或者,是连续顺序取指对应的取指请求的字节数,本技术对此不作过多限制。
72.需要说明的是,指令切分单元在记录的第一数值信息达到第一阈值且读取的指令边界信息有效,根据所述读取的指令边界信息对指令流进行切分后,第一数值信息重置,重新记录连续顺序取指的数值(例如重新记录连续顺序取指对应的取指请求的数量或者,连续顺序取指对应的取指请求的字节数)。进一步的,如果指令切分单元遇到分支跳转指令,则根据分支跳转指令的指令结尾位置对指令流进行切分,并重置第一数值信息。
73.在一些实施例中,例如初始状态时,指令边界缓存为空,也就是说,在译码器组执行译码操作之前,指令边界缓存中并未存储有指令边界信息。可选的,指令边界信息存储到指令边界缓存可以发生在译码器组对指令执行译码操作的过程中,比如由译码器组将译码指令所确定的指令边界信息保存到所述指令边界缓存。作为一种可选实现,多个译码器组在对指令进行译码时,每个译码器组各自记录连续顺序译码的数值信息,所述记录的连续顺序译码的数值信息可以为第二数值信息。当第二数值信息达到第二阈值,例如:第二阈值为1,译码器组将译码当前指令所确定的当前指令的指令边界信息,保存到所述指令边界缓存中。其中,译码器组记录的第二数值信息可以是连续顺序译码对应的取指请求的数量,或者,是连续顺序译码对应的指令数量,本技术对此不作过多限制。
74.可以理解的是,基于指令边界缓存与指令缓存的数据部分是一一对应的结构,在指令边界缓存中写入指令边界信息时,可以将指令的指令边界信息写到与其在指令缓存块一一对应的指令边界缓存块中。在一个示例中,当从指令缓存中取出指令并分配给译码器组进行译码时,译码器组一同接收指令的指令边界信息对应的index和路的信息。在译码器组向指令边界缓存中写入指令边界信息时,译码器组将指令边界信息写入指令边界缓存中与所述index和所述路的信息对应的指令边界缓存块。
75.需要进一步说明的是,当译码器组记录的第二数值信息达到第二阈值,并将译码当前指令所确定的指令边界信息保存到指令边界缓存中时,第二数值信息重置,重新记录连续顺序译码的数值信息(例如重新记录连续顺序译码对应的取指请求的数量或者,连续顺序译码对应的指令数量)。当译码器组遇到分支跳转指令时,重置第二数值信息。
76.本技术实施例可通过指令边界缓存记录指令的指令边界信息,对取指的指令流进行切分,从而将切分的指令流分配给多个译码器进行并行译码,实现了对取指的指令流进行切分并分配给多个译码器组进行译码的效果,能够提高译码组的吞吐量,提升处理器的译码性能。
77.上文描述了本技术实施例中处理器通过设置多个译码器组实现指令的并行译码,实现提高译码器组的吞吐量,但是得到微指令需经历取指和译码的过程,在本技术实施例的其他可选实现中,为进一步提升微指令的获取速度,还可以进一步提供具有micro-op cache(oc,微指令缓存)的高性能处理器。
78.图9为本技术实施例提供的具有微指令缓存的处理器架构图。结合图3和图9所示,图9所示处理器中进一步增加微指令缓存203,用于保存多个译码器组译码指令得到的微指令,从而在分支预测单元生成的取指请求直接下发至微指令缓存时,若取指请求在微指令
缓存中命中,则直接由微指令缓存输出对应的微指令。
79.需要说明的是,微指令缓存203包括多个表项,其中每个表项最多能容纳n个微指令,每个取指请求(即对应指示的取指地址范围)可能对应多个微指令缓存表项。在微指令缓存中进行取指时,首先使用取指请求中的取指起始地址匹配所有微指令缓存表项的第一条微指令的地址,若匹配成功,则得到对应微指令缓存表项中的最多n个微指令。如果微指令缓存表项中的最后一个微指令的结束地址小于取指范围的结束地址,则使用该微指令缓存表项中最后一个微指令的结束地址进一步匹配所有微指令缓存表项的第一条微指令的地址,若匹配成功,则得到第二个微指令缓存表项中的最多n条微指令。重复上述过程,直至取指范围的结束地址小于微指令缓存表项中最后一个微指令的结束地址。
80.从上述过程可以看出,在微指令缓存中,虽然每个微指令缓存表项存储了最多n条微指令,但是只有第一条微指令的起始地址可以参与查找比较。比如,一个微指令缓存表项存储了微指令0~7,那么只有使用微指令0的起始地址查找,才能得到该表项。也就是说,微指令缓存的表项构造和查找是配对的。比如,取指请求对应指令1~7,如果微指令缓存的表项构造为微指令0~7为一个表项,由于取指请求中取指指令1的起始地址与微指令缓存表项的微指令0的地址不匹配,那么取指请求是无法访问该表项的;如果微指令缓存的表项构造为1~8为一个表项,由于取指请求中取指指令1的起始地址与微指令缓存表项的微指令1的地址匹配,那么取指请求是可以访问该表项的。
81.基于微指令缓存表项的构造原理,本技术实施例进一步在处理器中作出改进,实现在微指令缓存构造微指令表项时将微指令携带的对应指令的指令边界信息保存到指令边界缓存。图10示例性的示出了本技术实施例提供的处理器的又一架构框图。
82.如图10所示,译码器组1031至103n将译码得到的微指令保存到微指令缓存203中,微指令缓存203将指令边界信息填入指令边界缓存202。当处理器基于分支预测单元101生成的取指请求访问指令缓存102时,能够同步访问指令边界缓存202;从而根据取指请求中的取指地址,在指令缓存102中读取的指令流,以及在指令边界缓存202中读取指令边界信息;进而指令切分单元201根据有效的指令边界信息对指令流进行切分,得到多个指令组,分配给译码器组1031至103n进行并行译码。
83.需要说明的是,图10所示的处理器中,微指令缓存将指令边界信息填入指令边界缓存发生在微指令缓存构造微指令缓存表项结束时,其中,微指令缓存表项也可称为微指令的表项。作为一种可选实现,例如初始状态时,译码器组1031至103n并未执行译码操作,微指令缓存不能执行构造微指令缓存表项,从而也无法得到指令边界信息,此时指令边界缓存可以为空;译码器组1031至103n执行译码操作后,可将译码得到的连续微指令发送给微指令缓存203,以便微指令缓存构造表项并将连续微指令填入微指令缓存中;当构造微指令缓存表项结束时,微指令缓存将表项结束位置的微指令对应的边界信息保存到指令边界缓存,其中,微指令缓存表项结束位置的微指令对应的边界信息即为指令的结束位置。
84.需要进一步说明的是,在构造表项时,待放入的微指令需满足微指令缓存表项对应的构造条件。在一个可选示例中,译码器组译码得到的微指令为连续的微指令,译码器组将译码得到的连续微指令发送给微指令缓存,用于构造表项,并填入微指令缓存中。其中,每个微指令缓存表项对应存储n个微指令的存储容量。微指令缓存对待放入的微指令进行检查,以确定待放入的微指令是否满足对应表项的若干构造条件,当其中的任一构造条件
不被满足时,该待放入的微指令则无法进入该表项。例如:a0、a1、a2、a3、a4为译码器组发送给微指令缓存的连续的微指令,当a0、a1、a2、a3、a4在构造微指令缓存表项时,a0、a1、a2满足构造条件,构成一个微指令缓存表项,a3无法满足构造条件,则从a3开始,再构造一个与a0、a1、a2构成的微指令缓存表项不同的新的表项,此时,a2对应的边界信息即为指令结束位置,被填入指令边界缓存。再例如:b0、b1、b2、b3、b4为译码器组发送给微指令缓存的连续的微指令,当b0、b1、b2、b3、b4在构造微指令缓存表项时,b0、b1、b2、b3构成一个微指令缓存表项,b4无法满足构造条件,则从b4开始再构造一个新的表项,此时,b3对应的边界信息即为指令结束位置,被填入指令边界缓存。
85.可以理解的是,由于微指令缓存表项结束位置的微指令对应的边界信息即为指令的结束位置,从而在指令边界信息由微指令缓存203构造微指令缓存表项时写入指令边界缓存202,译码器组可以进一步将指令的指令边界信息对应的index和路的信息传递给微指令缓存,由微指令缓存将指令边界信息写入指令边界缓存中与所述index和所述路的信息对应的指令边界缓存块。
86.本技术实施例可基于指令边界缓存中记录的指令边界信息,对在指令缓存中读取的指令流进行及时切分,保证多个译码器组能够并行译码,避免对指令的切分不及时,造成多个译码器组不能并行译码的情况,有效提高了处理器的译码吞吐量,提升了处理器的译码性能。
87.本技术实施例还提供一种处理器,结合前文图9或图10,该处理器至少包括:
88.指令缓存,用于根据取指地址获取指令流;
89.指令边界缓存,用于根据所述取指地址获取指令边界信息,所述指令边界信息指示进行指令切分的指令位置;
90.指令切分单元,用于根据所述指令边界信息指示的指令位置,对所述指令流进行切分,并将切分的指令流分配给多个译码器组进行并行译码。
91.在一些实施例中,指令边界缓存,用于根据所述取指地址获取指令边界信息包括:
92.根据所述取指地址在所述指令缓存中命中的目标tag,从所述指令边界缓存中读取所述目标tag对应的指令边界信息,其中,所述指令边界缓存复用所述指令缓存的tag,所述目标tag为所述取指地址对应的所述指令缓存的tag。
93.在一些实施例中,所述指令缓存包括多路tag域以及与各路tag域对应的数据域,所述指令边界缓存包括多路数据域;所述指令边界缓存的多路数据域复用所述指令缓存的多路tag域,且所述指令边界缓存的多路数据域与所述指令缓存的多路tag域一一对应。
94.在一些实施例中,指令边界缓存,用于根据所述取指地址在所述指令缓存中命中的目标tag,从所述指令边界缓存中读取所述目标tag对应的指令边界信息包括:
95.根据所述目标tag在所述指令缓存的tag域路数,从所述指令边界缓存中确定与所述tag域路数对应的数据域路数;在所述指令边界缓存的所述数据域路数对应的数据域中读取指令边界信息。
96.在一些实施例中,所述指令边界缓存的一路数据域保存在一个缓存块中;所述指令边界缓存的一路数据域包括多个指令边界信息以及分别指示各个指令边界信息是否有效的多个有效位,或者,所述指令边界缓存的一路数据域包括一个有效位以及由该一个有效位统一指示是否有效的多个指令边界信息。
97.在一些实施例中,指令边界缓存,用于在所述指令边界缓存的所述数据域路数对应的数据域中读取指令边界信息包括:
98.在所述指令边界缓存的所述数据域路数对应的数据域中,读取有效位的指示是有效的一个或多个指令边界信息。
99.在一些实施例中,所述指令边界信息指示进行指令切分的指令位置包括:所述指令边界信息指示指令结束地址。
100.在一些实施例中,指令切分单元,用于根据所述指令边界信息指示的指令位置,对所述指令流进行切分包括:
101.记录连续顺序取指的第一数值信息,当所述第一数值信息达到第一阈值,且基于当前取指请求读取的指令边界信息有效时,根据所述指令边界信息指示的指令结束地址,对所述指令流进行切分,以得到多个指令组。
102.在一些实施例中,所述第一数值信息包括连续顺序取指对应的取指地址的数量,或者,连续顺序取指对应的取指地址的字节数。
103.在一些实施例中,所述切分的指令流以切分指令的位置为分界,分为切分后的前一个指令组和切分后的后一个指令组。指令切分单元,用于将切分的指令流分配给多个译码器组进行并行译码包括:
104.将切分前的指令分配给默认译码器组进行译码,以及将切分后的指令分配给所述默认译码器组的下一译码器组进行译码。
105.在进一步的一些实施例中,处理器还可以包括:多个译码器组;
106.所述译码器组,用于对分配的指令进行译码,将译码指令所确定的指令边界信息保存到所述指令边界缓存中。
107.在一些实施例中,译码器组,用于将译码指令所确定的指令边界信息保存到所述指令边界缓存中包括:
108.在译码器组记录连续顺序译码的第二数值信息,当所述第二数值信息达到第二阈值时,将译码器组译码当前指令所确定的当前指令的指令边界信息保存到所述指令边界缓存中。
109.在一些实施例中,所述第二数值信息包括连续顺序译码对应的取指请求的数量,或者,连续顺序译码对应的指令数量。
110.在进一步的一些实施例中,指令切分单元还用于:
111.若所述取指地址为指示分支跳转的地址,根据分支跳转信息对所述指令流进行切分,并将切分的指令流分配给多个译码器组进行并行译码。
112.在进一步的一些实施例中,处理器还包括:微指令缓存,用于保存译码器组译码指令得到的微指令,并在构造保存微指令的表项结束时,将微指令携带的指令边界信息保存到所述指令边界缓存。
113.本技术实施例中还提供了一种芯片,该芯片可以包括上述的处理器。
114.本技术实施例还提供一种电子设备,该电子设备可以包括上述的芯片。
115.上文描述了本技术实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本技术实施例披露、公开的实施例方案。
116.虽然本技术实施例披露如上,但本技术并非限定于此。任何本领域技术人员,在不脱离本技术的精神和范围内,均可作各种更动与修改,因此本技术的保护范围应当以权利要求所限定的范围为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献