CN115525343B - 一种并行译码的方法、处理器、芯片及电子设备 - Google Patents
一种并行译码的方法、处理器、芯片及电子设备 Download PDFInfo
- Publication number
- CN115525343B CN115525343B CN202211348804.1A CN202211348804A CN115525343B CN 115525343 B CN115525343 B CN 115525343B CN 202211348804 A CN202211348804 A CN 202211348804A CN 115525343 B CN115525343 B CN 115525343B
- Authority
- CN
- China
- Prior art keywords
- instruction
- decoder
- instructions
- group
- decoders
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 36
- 238000010586 diagram Methods 0.000 description 12
- 230000000694 effects Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本申请实施例提供了一种并行译码的方法、处理器、芯片及电子设备,处理器至少包括第一译码器组和第二译码器组,第二译码器组设置有被第一译码器组共享的至少一个共享译码器;其中方法包括:从第一译码器组对应的第一指令队列中挑选多个指令;若多个指令的数量大于第一译码器组的译码器数量,将多个指令中与第一译码器组的译码器数量相对应的第一指令,分配给第一译码组中的译码器进行译码,以及将多个指令中第一指令外的第二指令分配给共享译码器进行译码;将第一译码器组译码第一指令得到的微指令,以及,将共享译码器译码第二指令得到的微指令,写入第一微指令队列。本申请实施例能够在保障译码吞吐量的情况下,节约处理器的硬件资源。
Description
技术领域
本申请实施例涉及处理器技术领域,具体涉及一种并行译码的方法、处理器、芯片及电子设备。
背景技术
在现代处理器中,指令需要经过取指、译码和执行等处理过程;其中,译码是译码器对取指的指令进行解析编译,以得到微指令(micro-op)的过程。
为提升译码吞吐量,处理器中可以设置多个译码器组进行指令的并行译码,并且一个译码器组内也可设置用于并行译码的多个译码器。然而,如果译码器组内设置的译码器数量过多,将导致处理器的硬件资源浪费;因此如何优化译码方案,以在合理设置译码器数量的情况下,保障译码吞吐量并实现节约处理器的硬件资源,成为了本领域技术人员亟需解决的技术问题。
发明内容
有鉴于此,本申请实施例提供一种并行译码的方法、处理器、芯片及电子设备,能够在保障译码吞吐量的情况下,减少译码器组中使用的译码器数量,从而节约处理器的硬件资源。
为实现上述目的,本申请实施例提供如下技术方案:
第一方面,本申请实施例提供一种并行译码的方法,应用于处理器,处理器至少包括第一译码器组和第二译码器组,第二译码器组设置有被第一译码器组共享的至少一个共享译码器;方法包括:
从第一译码器组对应的第一指令队列中挑选多个指令;
若多个指令的数量大于第一译码器组的译码器数量,将多个指令中与第一译码器组的译码器数量相对应的第一指令,分配给第一译码组中的译码器进行译码,以及将多个指令中第一指令外的第二指令分配给共享译码器进行译码;
将第一译码器组中的译码器译码第一指令得到的微指令,写入第一译码器组对应的第一微指令队列,以及,将共享译码器译码第二指令得到的微指令,写入第一微指令队列。
第二方面,本申请实施例提供一种处理器,至少包括第一译码器组和第二译码器组;所述第二译码器组设置有被第一译码器组共享的至少一个共享译码器;
所述第一译码器组包括:第一指令挑选模块和多个译码器;
所述第一指令挑选模块,用于从第一译码器组对应的第一指令队列中挑选多个指令;若所述多个指令的数量大于所述第一译码器组的译码器数量,将所述多个指令中与所述第一译码器组的译码器数量相对应的第一指令,分配给第一译码组中的多个译码器进行译码,以及将所述多个指令中第一指令外的第二指令分配给所述共享译码器进行译码;
所述多个译码器,用于将译码所述第一指令并将译码所述第一指令得到的微指令,写入第一译码器组对应的第一微指令队列;
其中,所述共享译码器,用于译码所述第二指令并将译码所述第二指令得到的微指令,写入所述第一微指令队列。
第三方面,本申请实施例提供一种芯片,包括如上述所述的处理器。
第四方面,本申请实施例提供一种电子设备,包括如上述所述的芯片。
本申请实施例提供了在处理器至少包括第一译码器组和第二译码器组的情况下,在第二译码器组中设置被第一译码器组共享的至少一个共享译码器。从而第一译码器组在进行译码时,可从第一译码器组对应的第一指令队列中挑选多个指令;若所述多个指令的数量大于所述第一译码器组的译码器数量,将所述多个指令中与所述第一译码器组的译码器数量相对应的第一指令,分配给第一译码组中的译码器进行译码,以及将所述多个指令中第一指令外的第二指令分配给所述共享译码器进行译码;进而实现在第一译码器组需译码的指令数量大于第一译码器组的译码器数量时,能够利用外部第二译码器组中的共享译码器进行多余指令的译码,通过复用第二译码器组中的共享译码器来保障第一译码器组在译码器数量不足时的译码吞吐量。当第一译码器组和第二译码器组中的共享译码器完成译码后,可将第一译码器组中的译码器译码所述第一指令得到的微指令,写入第一译码器组对应的第一微指令队列,以及,将所述共享译码器译码所述第二指令得到的微指令,写入所述第一微指令队列,从而保障第一译码器组在利用外部共享译码器进行指令译码时,共享译码器译码的指令能够正确的写入第一译码器组对应的微指令队列,保障第一译码器组译码指令的准确性。
可见,本申请实施例能够在译码器组的译码器数量不足以译码挑选的多个指令时,利用外部译码器组中的共享译码器来译码多余的指令,从而能够在设置译码器组的译码器数量小于指令挑选数量上限的情况下,降低第一译码器组中使用的译码器数量,从而在保障译码吞吐量的情况下,减少译码器组中使用的译码器数量,实现节约处理器的硬件资源的效果。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的处理器的架构图。
图2为本申请实施例提供的译码器组的架构示意图。
图3A为本申请实施例提供的处理器的架构框图。
图3B为本申请实施例提供的并行译码的可选流程图。
图4为本申请实施例提供的具有共享译码器进行译码的可选流程图。
图5为本申请实施例提供的处理器的又一架构框图。
图6为本申请实施例提供的译码器组支持指令译码的最大带宽示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
处理器一般使用流水线(pipeline)技术实现指令的处理。在处理器的流水线作业中,指令需要经过取指(Instruction Fetch)、译码(Instruction Decode)、执行(Execute)等处理过程。取指操作为从处理器的缓存或主存储器中取指出程序运行对应的指令;译码操作为对取指出的指令进行译码以确定指令的操作码和/或地址码等;执行操作为根据得到的操作码和/或地址码等执行指令操作,实现程序运行。其中,译码主要由处理器中设置的多个译码器组实现。作为可选实现,图1示例性的示出了处理器的架构框图,该处理器包括:分支预测单元101、指令缓存102、多个译码器组1031至103n,n表示译码器组的数量,n的具体数值可以根据处理器的具体设计而定,本申请实施例并不设限。
分支预测单元101是一种数字电路,可对指令进行分支预测,并基于分支预测结果生成取指请求。需要说明的是,由于指令中存在改变程序流程的分支指令的可能,为减少处理器等待分支指令的执行结果来确定下一步取指而导致的流水线延迟,处理器的前端可设置分支预测单元,以实现指令的分支预测。
分支预测结果例如当前指令是否为分支指令、分支指令的分支结果(方向、地址、目标地址等)等。在一种实现中,分支预测单元可基于分支指令的历史执行信息和结果进行指令的分支预测,从而得到指令的取指地址范围并生成取指请求。在分支预测单元生成的取指请求中包括有若干条指令的取指地址,用于从指令缓存102中读取相应的指令。
指令缓存102中存储有指令,根据分支预测单元生成的取指请求,能够在指令缓存中102取指出多条待译码指令。可选的,指令缓存102可以是位于处理器的一级缓存中的用于存储指令的缓存部分。
多个译码器组1031至103n能够在处理器的一个时钟周期内同时对取指的指令执行译码操作,从而实现指令的并行译码。其中,任一译码器组设置有一个或者多个译码器,由译码器实现指令的译码操作,得出译码后的微指令;译码后的微指令可以是解释指令所得出的可由机器执行的操作信息,诸如控制字段所形成的机器可执行的uop。
以译码器组1031的译码过程为例进行说明,图2示出了本申请实施例提供的译码器组的架构示意图。结合图2所示,处理器中可以设置译码器组1031对应的指令队列1011和微指令队列1041,指令队列1011用于存储从指令缓存取指出来的待由译码器组1031进行译码的指令,微指令队列1041用于存储译码器组1031进行指令译码后得到的微指令。
在译码器组1031中,译码器组1031可以包括:指令挑选模块1020和多个译码器10311至1031m,m表示译码器组中设置的译码器数量。其中,指令挑选模块1020,可从指令队列1011存储的指令中挑选指令,将挑选后的指令传递到译码器组1031中的各个译码器进行译码。译码器组1031的多个译码器在完成指令译码之后,将得到的微指令写入微指令队列1041中。
在处理器中设置多个译码器组的情况下,可以通过多组译码器进行并行译码,各组译码器组的译码过程可同理参照上文描述。
由上文描述可以看出,译码器组中的多个译码器是基于指令挑选模块挑选出的指令进行译码,因此译码器组中的译码器数量一般根据指令挑选的数量上限进行设置,这导致译码器组实际挑选的指令数量未达到指令挑选的数量上限时,译码器组中的译码器存在空闲情况,导致处理器的硬件资源存在浪费。需要说明的是,按照指令挑选的数量上限,译码器组中设置m个译码器,译码器组在硬件上能够支持最多每个时钟周期译码m条指令,但在实际情况下,译码器组每时钟周期能译码的指令数量经常小于m。这是因为指令挑选和指令译码通常有很多约束,比如遇到跳转分支要结束当前时钟周期的译码;或者,由于指令队列为空,即没有可挑选指令,导致当前周期无法对指令进行译码;又或者,当前指令队列不为空,但是译码后的微指令队列写满,经过译码器组译码后的微指令无法写入到微指令队列中,当前周期也不能完成译码流程;再或者,译码器组中的多个译码器并不完全相同,对于复杂指令可能只有某些译码器支持,若是指令遇到不支持译码的译码器时,就要结束当前周期译码。
通过上述可以看出,译码器组实际译码的指令数量通常小于指令挑选的数量上限,如果按照指令挑选的数量上限来设置译码器组中的译码器数量,那么将导致译码器组中存在空闲的译码器,存在资源浪费情况。基于此,本申请实施例考虑减少译码器组中设置的译码器数量(比如译码器组中设置的译码器数量小于指令挑选的上限),并通过译码器组之间共享译码器的方式,来弥补译码器组由于减少译码器数量而产生的译码吞吐量缺失。
基于上述思路,本申请实施例提供进一步改进的处理器架构,通过改进后的处理器架构能够在减少译码器组中设置的译码器数量的情况下,支持各组译码器组译码能够支持指令挑选数量上限的指令译码,从而在保障译码吞吐量的情况下,减少译码器组中使用的译码器数量,节约处理器的硬件资源。
作为可选实现,图3A示例性的示出了本申请实施例提供的处理器的架构框图。结合图3A所示,本申请实施例提供的处理器100至少包括:第一译码器组1031、第一译码器组1031对应的第一指令队列1011、第一译码器组对应的第一微指令队列1041、第二译码器组1032、第二译码器组1032对应的第二指令队列1012、第二译码器组1032对应的第二微指令队列1042。
其中,第一译码器组1031包括:第一指令挑选模块1021、多个译码器10311至1031m,其中,m的具体数值可以根据实际情况设置,这里不做限制;
第二译码器组1032包括:第二指令挑选模块1022、多个译码器10321至1032n,n与m的数值可以相同也可以不同;第二译码器组1032设置的多个译码器中可存在被第一译码器组共享的共享译码器10321。
另外,在本申请实施例中,第一译码器组中还可以包括:第一长度译码模块1061,用于确定第一指令队列中待挑选的每个指令的长度;在本申请实施例中,第二译码器组还可以包括:第二长度译码模块1062,用于确定第二指令队列1012中的待挑选的每个指令的长度。其中,任一个指令队列中待挑选的每个指令的长度可以相同也可以不相同。需要说明的是,第一长度译码模块1061和第二长度译码模块1062可以同时设置,也可以根据实际情况分别设置,这里不做限定。
当然在本申请其他实施例中,一组译码器中包含有译码器的数量也可以为两个或者更多个,只要译码器组中设置的译码数量小于指令挑选的数量上限即可,比如指令挑选的数量上限为4(即指令挑选的最大带宽为4),则译码组中设置的译码器数量小于4即可。在一种实施例中,本申请实施例在指令挑选的最大带宽为4时,可以在译码器组中设置有三个译码器,当然,本申请中还有其他可选形式,这里不再赘述。
下面以第一译码器组利用第二译码器组中设置的共享译码器进行译码为例,对本申请实施例进行指令译码的过程进行说明,第二译码器组利用第一译码器组中设置的共享译码器进行译码的方式可同理参照。
在第一译码器组1031中,第一指令挑选模块1021,用于从第一译码器组1031对应的第一指令队列1011中挑选多个指令;若所述多个指令的数量大于所述第一译码器组的译码器数量,将所述多个指令中与所述第一译码器组的译码器数量相对应的第一指令,分配给第一译码组中的多个译码器进行译码,以及将所述多个指令中第一指令外的第二指令分配给所述共享译码器进行译码。
其中,第一译码器组1031设置了第一指令队列1011,第一指令队列1011用于保存第一译码器组1031待译码的指令。当第一指令队列1011保存第一译码器组待译码的指令时,为了实现第一译码器组的并行译码,只要保障第一译码器组的第一指令队列1011接收待译码的指令的速度,快于第一译码器组1031的译码速度,则第一译码器组1031可不断的从第一指令队列中获取指令进行译码,从而实现第一译码器组中多个译码器的并行译码。
假定在本申请实施例中第一指令挑选模块1021之前还设置有第一长度译码模块1061,则第一长度译码模块1061可以确定出第一指令队列中待挑选的每个指令的长度,以使得第一指令挑选模块1021能够根据待挑选的每个指令的长度进行挑选。
在本申请实施例中,在第一指令挑选模块1021挑选的多个指令的数量大于第一译码器组1031中多个译码器的译码器数量时,则基于第一译码器组1031中的多个译码器的译码器数量,为第一译码器组1031中的多个译码器分配对应数量的第一指令,比如第一指令挑选模块挑选出4个指令,第一译码器组1031中设置有3个译码器,则第一译码器组中的译码器数量为3,为第一译码器组1031中的3个译码器分配3个指令即可。
进一步的,在第一指令挑选模块挑选的多个指令的数量大于第一译码器组1031的译码器数量时,针对第一指令挑选模块挑选出的多余指令,本申请实施例可称为第二指令,也就是说,第一指令挑选模块挑选的多个指令中第一指令外的指令称为第二指令。该第二指令可分配给第二译码器组1032中共享设置的译码器进行译码,称为共享译码器10321,从而利用第二译码器组1032中设置的共享译码器10321对多个指令中的第二指令进行译码,实现与第一译码器组中的各个译码器的并行译码,通过此种方式能够在设置译码器组的译码器数量小于指令挑选数量上限的情况下,借用外部译码器组中的共享译码器进行译码,实现了保障译码吞吐量的情况下,减少译码器组中使用的译码器数量,实现节约处理器的硬件资源的效果。
需要说明的是,在共享译码器10321前,还可以设置有第二选择器1052,所述第二选择器1052,可以基于第二指令的请求中携带的标记信息确定需要译码的指令属于第一指令队列中的指令。
进一步的,第一译码器组1031还设置有对应的第一微指令队列1041,第一微指令队列1041,用于保存第一译码器组1031译码第一指令得到的微指令以及共享译码器10321译码第二指令得到的微指令;例如,针对第一指令挑选模块1021挑选的多个指令,微指令队列保存第一译码器组1031中的多个译码器10311、10312...1031m译码第一指令得到的微指令,以及第二译码器组中的共享译码器10321译码第二指令得到的微指令。
所述多个译码器10311、10312...1031m,用于译码所述第一指令并将译码所述第一指令得到的微指令,写入第一译码器组对应的第一微指令队列1041。
其中,所述共享译码器10321,用于译码所述第一指令挑选模块1021挑选出的第二指令,并将译码所述第二指令得到的微指令,也写入所述第一微指令队列1041。
经由以上,可以看出本申请实施例能够在译码器组的译码器数量不足以译码挑选的多个指令时,利用外部译码器组中的共享译码器来译码多余的指令,从而能够在设置译码器组的译码器数量小于指令挑选数量上限的情况下,降低第一译码器组中使用的译码器数量,从而在保障译码吞吐量的情况下,减少译码器组中使用的译码器数量,实现节约处理器的硬件资源的效果。
图3B示例性的本申请实施例提供的译码方法的可选流程图。该译码方法可以认为是处理器在利用译码器组进行译码的情况下的方法流程。本申请实施例所提供的处理器至少包括第一译码器组1031和第二译码器组1032,第二译码器组1032设置有被第一译码器组1031共享的至少一个共享译码器10321的处理器。结合图3A和图3B,该方法流程可以包括如下步骤。
在步骤S31中,从第一译码器组对应的第一指令队列中挑选多个指令。
在步骤S32中,若多个指令的数量大于第一译码器组的译码器数量,将多个指令中与第一译码器组的译码器数量相对应的第一指令,分配给第一译码组中的译码器进行译码,以及将多个指令中第一指令外的第二指令分配给共享译码器进行译码。
在步骤S33中,将第一译码器组中的译码器译码第一指令得到的微指令,写入第一译码器组对应的第一微指令队列,以及,将共享译码器译码第二指令得到的微指令,写入第一微指令队列。
其中,步骤S31以及步骤S32可以参照第一指令挑选模块1021所实现的功能,步骤S33可以参照多个译码器(10311、10312...1031m)以及共享译码器10321所实现的功能,这里不再赘述。
本申请实施例能够在译码器组的译码器数量不足以译码挑选的多个指令时,利用外部译码器组中的共享译码器来译码多余的指令,从而能够在设置译码器组的译码器数量小于指令挑选数量上限的情况下,降低第一译码器组中使用的译码器数量,从而在保障译码吞吐量的情况下,减少译码器组中使用的译码器数量,实现节约处理器的硬件资源的效果。
在一些实施例中,第一指令队列存储的指令可以视为是第一指令挑选模块可挑选的指令,基于第一指令队列存储的可挑选指令的具体数量,第一指令挑选模块从第一指令队列中挑选指令可能存在如下几种情况:
第一指令队列存储的可挑选指令为空,则第一指令挑选模块无法挑选到指令,第一译码器组无法执行指令译码;
第一指令队列存储的可挑选指令不为空,且第一指令队列存储的可挑选指令的数量大于第一译码器组中的译码器数量,则第一指令挑选模块能够从第一指令队列中挑选到大于该译码器数量的指令,此时,可以借助第二译码器组共享的共享译码器对挑选的多余指令进行译码。
需要说明的是,当第一指令队列存储的可挑选指令不为空时,证明当前第一指令队列中存在可挑选的指令,可以对第一指令队列中的指令进行挑选,但挑选出来的指令需要经过译码器译码写入微指令队列完成译码,为此还需要判断对应的第一微指令队列是否处于写满状态时,若处于写满状态,则不执行从第一译码器组对应的第一指令队列中挑选多个指令,等待第一微指令队列处于未写满状态后,从第一指令队列中挑选多个指令;若处于未写满状态,则从第一译码器组对应的第一指令队列中挑选多个指令。
挑选出多个指令后,当第一译码器组中的译码器数量不足以完成译码时,需要借用与第一译码器组共享的第二译码器组中的共享译码器。在借用第二译码器组共享的共享译码器之前,还需要判断第二译码器组中的共享译码器是否空闲。
当第二译码器组中的共享译码器空闲时,包括但不限于以下三种情况:
第一种:第二译码器组对应的第二指令队列存储的可挑选指令为空。
第二译码器组优先译码第二指令队列中的指令,当第二指令队列存储的可挑选指令为空时,说明第二译码器组中的多个译码器无法执行指令译码,即第二译码器组中的共享译码器空闲。
第二种:第二译码器组对应的第二微指令队列写满微指令。
如前所述,同第一译码器组对应的第一微指令队列写满微指令时相似,第二译码器组对应的第二微指令队列写满微指令时,第二译码器组中的多个译码器也不能译码,则第二译码器组中的共享译码器空闲。
第三种:第二译码器组对应的第二指令队列存储的可挑选指令的数量小于所述第二译码器组的译码器数量,并且所述第二微指令队列未写满微指令。
需要说明的是,在第二指令队列存储的可挑选指令的数量小于第二译码器组的译码器数量时,第二译码器组中的译码器是对第二指令队列存储的可挑选指令进行译码,当对应译码器的数量的可挑选指令的指令为译码器分配后,仍有部分译码器处于空闲状态,其中,第二译码器组中与第一译码器组共享的共享译码器可能空闲。
另外,需要说明的是,共享译码器实际是第二译码器组中的至少一个,当第二译码器组中的译码器(包括与第一译码器组1031共享的共享译码器)需要进行译码时,优先对第二指令队列1012中的指令进行译码。当第二指令队列1012中可挑选指令为空时,才会利用第二译码器组中的共享译码器10321对第一指令挑选模块挑选出的多个指令中的第二指令进行译码。
在一些实施例中,图4示出了共享译码器进行译码的可选流程图。具体的,结合图4,在所述第二译码器组中的共享译码器空闲时,将所述多个指令中第一指令外的第二指令分配给所述共享译码器进行译码包括:
在步骤S41中,向所述第二译码器组中与所述共享译码器连接的选择器,传递携带所述第二指令的请求,其中,所述选择器用于选择将所述第二指令或者所述第二指令队列中挑选的指令,分配给所述共享译码器。
其中,请求还携带所述第二指令属于第一译码器组1031的标记信息,即向共享译码器连接的选择器传递携带有第二指令属于第一译码器组1031的标记信息的请求。
标记信息用于区分需要译码的指令属于的组别信息。例如,标记信息可以用于标识第二指令是属于第一译码器组,进而在第二译码器组中的共享译码器对第二指令译码后,根据标记信息将译码后的微指令写入到第一微指令队列。
接收携带第二指令的请求的选择器与共享译码器连接(如图5所示第二选择器1052与译码器10321的连接),选择器先于共享译码器获取到携带有第二指令属于第一译码器组的标记信息的请求,或者第二指令队列的请求,从而选择器将获取到的携带有标记信息的第二指令或者第二指令队列中挑选的指令分配给连接的共享译码器。
在步骤S42中,在共享译码器空闲时,通过所述选择器将所述第二指令分配到所述共享译码器进行译码。
在译码结束后,基于标记信息,将共享译码器译码第二指令得到的微指令,写入第一微指令队列。
在共享译码器译码时,可以基于标记信息区分当前进行译码的指令是来自第一指令队列还是来自第二指令队列,若当前进行译码的指令来自第一指令队列时,则基于标记信息,将译码所述第二指令得到的微指令,写入所述第一微指令队列;若当前进行译码的指令来自第二指令队列时,则没有标记信息,将译码得到的微指令,写入第二微指令队列。
可以看出,本申请实施例中的第一微指令队列是包含有第一译码器组中的译码器译码第一指令得到的微指令以及共享译码器译码第二指令得到的微指令。
在本申请其他可选的实施例中,还可以是挑选出的多个指令不大于第一译码器组的译码器数量的情况。例如第一指令队列存储的可挑选指令的数量不大于第一译码器组的译码器数量时,不需要共享译码器的参与,第一译码器组中的多个译码器可以独立完成译码,为此,将挑选出的多个指令全部分配到第一译码器组进行译码,第一译码器组译码后的微指令写入第一微指令队列。
当然以上实施例仅示出了第二译码器组设置有被第一译码器组共享的至少一个共享译码器,在本申请其他可选的实施例中,参考图5,示出了处理器的又一可选架构图,具体为第一译码器组和第二译码器组之间互相共享有共享译码器的架构框图。
具体的,结合图5所示,第一译码器组1031设置有被第二译码器组1032共享的共享译码器10313,第二译码器组1032设置有被第一译码器组1031共享的共享译码器10321。
具体的,第二译码器组设置有对应的第二指令挑选模块1022,用于从第二指令队列1012中挑选多个指令,若挑选的多个指令大于第二译码器组1032中的译码器数量时,则将挑选出来的多个指令中对应第二译码器组1032中的译码器数量的指令分配到第二译码器组中进行译码,将挑选出来的多个指令中的除分配到第二译码器组的指令以外的其他指令,分配给第一译码器组1031中的共享译码器10313进行译码,并将第二译码器组译码得到的微指令,写入对应的第二微指令队列,以及,将第一译码器组1031中的共享译码器10313译码后得到的微指令,写入第二译码器组对应的第二微指令队列。
当然在此种结构下,各个译码器组均会设置对应的指令队列以及微指令队列,例如第一译码器组1031和第二译码器组1032分别设置了第一指令队列1011以及第二指令队列1012,以及第一微指令队列1041和第二微指令队列1042,一个译码器组对应一个指令队列和一个微指令队列。当从第一指令队列1011中挑选的多个指令的数量小于第一译码器组的译码器数量,并且第二译码器组当前需译码的指令的数量,大于第二译码器组的译码器数量,则第一译码器组中的共享译码器,会被第二译码器组借用,第一译码器组中的共享译码器译码第二译码器组传递给第一译码器组的指令。
也就是说,在第一译码器组中的共享译码器处于空闲,但第二译码器组中存在从第二指令队列1012中获取的多个需译码的指令时,可以将多个需译码的指令根据第二译码器组1032中的译码器数量进行分配,进而将多个需译码的指令中除分配给第二译码器组的指令传递给第一译码器组,利用第一译码器组中的共享译码器,译码第二译码器组传递给第一译码器组的指令。
在本申请其他实施例中,还包括:当从第一指令队列中挑选出来多个指令大于第一译码器组中的译码器数量,且从第二指令队列中挑选出来多个指令大于第二译码器组中的译码器数量,则第一译码器组每周期译码对应译码器数量的指令,在此周期内,除上述指令外多个指令中的其余指令,等待第一译码器组中的下一周期的译码,或者等待第二译码器组中的共享译码器空闲时,将除上述指令外多个指令中的其余指令传输给第二译码器组中的共享译码器译码;第二译码器组与第一译码器组相似,第二译码器组每周期译码对应译码器数量的指令,在此周期内,除上述指令外多个指令中的其余指令,等待第二译码器组中的下一周期的译码,或者等待第一译码器组中的共享译码器空闲时,将除上述指令外多个指令中的其余指令传输给第一译码器组中的共享译码器译码。
基于以上两组译码器组间的共享结构,图6为本申请实施例提供的译码器组支持指令译码的最大带宽示意图。
结合图5和图6,第一译码器组1031中包含有三个译码器(即m为3),则第一译码器组1031中包括译码器10311、译码器10312和译码器10313;第二译码器组1032中包含有三个译码器(即n为3),则第二译码器组1032中包括译码器10321、译码器10322和译码器10323。其中,第一译码器组1031共享第二译码器组1032中的译码器10321,第二译码器组1032共享第一译码器组1031中的译码器10313。
当第一译码器组1031对应的第一指令队列空或者第一微指令队列满时,以及第二译码器组1032对应的第二指令队列空或者第二微指令队列满,此时均不能从第一指令队列和第二指令队列中挑选指令,则第一译码器组1031实际使用的带宽为0,第二译码器组1032实际使用的带宽为0。
当第一译码器组1031对应的第一指令队列空或者第一微指令队列满,第二译码器组1032对应的第二指令队列不空并且第二微指令队列不满,证明第一译码器组1031空闲,第二译码器组1032可以使用第一译码器组1031中的共享译码器10313,此时,第一译码器组1031实际使用的带宽为0,第二译码器组1032实际可以使用的带宽最大为4。
当第一译码器组1031对应的第一指令队列不空并且第一微指令队列不满,以及第二译码器组1032对应的第二指令队列空或者第二微指令队列满,证明第二译码器组1032空闲,第一译码器组1031可以使用第二译码器组1032中的共享译码器10321,此时,第一译码器组1031实际使用的带宽最大为4,第二译码器组1032实际使用的带宽为0。
当第一译码器组1031对应第一指令队列不空并且第一微指令队列不满,并且第一指令队列中的可挑选的指令数小于等于2,第二译码器组1032对应的第二指令队列不空并且第二微指令队列不满,说明第一译码器组1031中的译码器10311以及译码器10312被使用,译码器10313空闲可以被第二译码器组1032借用,则第一译码器组1031实际使用的带宽最大为2,第二译码器组1032实际使用的带宽最大为4。
当第一译码器组1031对应的第一指令队列不空并且第一微指令队列不满,第二译码器组1032对应的第二指令队列不空并且第二微指令队列不满,并且第二指令队列中的可挑选的指令数小于等于2,说明第二译码器组1032中的译码器10322以及译码器10323可以被使用,译码器10321空闲可以被第一译码器组1031借用,则第一译码器组1031实际使用的带宽最大为4,第二译码器组1032实际使用的带宽最大为2。
当第一译码器组1031对应的第一指令队列不空并且第一微指令队列不满,并且第一指令队列中的可挑选的指令数大于等于3,第二译码器组1032对应的第二指令队列不空并且第二微指令队列不满,并且第二指令队列中的可挑选的指令数大于等于3,说明第一译码器组1031需要借用译码器完成指令数量大于3的指令译码,第二译码器组1032也需要完成指令数量大于3的指令译码,则第一译码器组1031和第二译码器组1032不发生共享译码器的借用,第一译码器组1031实际使用的带宽最大为3,第二译码器组1032实际使用的带宽为3,多余的指令等待下一周期译码。
在另一些实施例中,还可以是多组译码器组之间实现共享,只要当前的译码器组在译码时,能够对对应的指令队列进行译码,且当前的译码器组中的共享译码器处于空闲时被其他有共享关系的译码器组借用,具体的共享方式参见前述,这里不再赘述。
当然,在各组译码器组之间共享的译码器的数量包括但是不限于是一个,还可以是多个,只要采取以上方式,就能够保证译码器组的吞吐量不变的情况下,实现节约硬件资源的效果。
在本申请其他可选的实施例中,还可以包括:
确定待挑选的每个指令的长度,其中,待挑选的每个指令的长度相同或者不同;
从第一译码器组对应的第一指令队列中挑选多个指令包括:
根据待挑选的每个指令的长度,从第一指令队列中挑选出与每个指令的长度对应的指令,以挑选出多个指令。
需要说明的是,根据处理器的不同,可以分为支持定长指令集的处理器,以及支持不定长指令集的处理器。当处理器为支持定长指令集时,需要执行上述长度挑选的步骤,以使得挑选出长度对应的指令。参考图5,处理器中设置有第一长度译码模块1061,确定第一指令队列的指令中的长度,使得第一指令挑选模块1021可以挑选出长度对应的指令。
当处理器为支持不定长指令集时,不需要执行上述长度挑选的步骤,可以直接从第一指令队列中挑选多个指令。继续参考图5,处理器中不设置第一长度译码模块1061,第一指令挑选模块1021直接从第一指令队列1011中直接挑选多个指令。
本申请实施例还提供一种处理器,其结构可以参考图3A或者图5,该处理器至少包括第一译码器组1031和第二译码器组1032;第二译码器组1032设置有被第一译码器组1031共享的至少一个共享译码器10321;
第一译码器组1031包括:第一指令挑选模块1021和多个译码器10311至1031m;
第一指令挑选模块1021,用于从第一译码器组1031对应的第一指令队列1011中挑选多个指令;若多个指令的数量大于第一译码器组1031的译码器数量,将多个指令中与第一译码器组1031的译码器数量相对应的第一指令,分配给第一译码组1031中的多个译码器进行译码,以及将多个指令中第一指令外的第二指令分配给共享译码器10321进行译码;
多个译码器10311至1031m,用于译码第一指令并将译码第一指令得到的微指令,写入第一译码器组对应的第一微指令队列1041;
其中,共享译码器10321,用于译码第二指令并将译码第二指令得到的微指令,写入第一微指令队列。
可选的,第一指令挑选模块1021,用于从第一译码器组对应的第一指令队列中挑选多个指令包括:
在第一指令队列存储的可挑选指令不为空,并且第一微指令队列未写满微指令时,从第一指令队列存储的可挑选指令中挑选多个指令;
其中,第一指令队列存储的可挑选指令的数量大于第一译码组的译码器数量时,挑选的多个指令的数量大于第一译码器组的译码器数量。
可选的,第一指令挑选模块1021,用于将多个指令中第一指令外的第二指令分配给共享译码器进行译码包括:
在第二译码器组中的共享译码器空闲时,将多个指令中第一指令外的第二指令分配给共享译码器进行译码。
可选的,第二译码器组中的共享译码器空闲包括:
第二译码器组对应的第二指令队列存储的可挑选指令为空;
或者,第二译码器组对应的第二微指令队列写满微指令;
或者,第二译码器组对应的第二指令队列存储的可挑选指令的数量小于第二译码器组的译码器数量,并且第二微指令队列未写满微指令。
可选的,第一译码器组的多个译码器中设置有被第二译码器组共享的至少一个共享译码器;第一译码器组中的共享译码器,用于在第一指令挑选模块挑选的多个指令的数量小于第一译码器组的译码器数量,并且第二译码器组当前需译码的指令的数量,大于第二译码器组的译码器数量时,则第一译码器组中的共享译码器能够译码第二译码器组传递给第一译码器组的指令;
可选的,第一译码器组1031还包括:
如图5所示的第一选择器1051,第一选择器1051设置于第一指令挑选模块1021和第一译码器组1031中的共享译码器10313之间;第一选择器1051,用于选择将第一指令挑选模块挑选的指令,或者第二译码器组传递的指令,分配给第一译码器组中的共享译码器。
可选的,第二译码器组1032包括:第二指令挑选模块1022、如图5所示的第二选择器1052,以及多个译码器10321至10323;
第二指令挑选模块1022,用于从第二译码器组1032对应的第二指令队列1012中挑选多个指令;
第二选择器1052设置于第二指令挑选模块1022以及第二译码器组1032中的共享译码器10321之间;第二选择器1052,用于接收第一指令挑选模块传递的携带第二指令的请求;以及将第二指令或者第二指令挑选模块挑选的指令,分配给第二译码器组中的共享译码器;
其中,第二指令挑选模块在第二译码器组中的共享译码器空闲时,将第二指令分配到共享译码器进行译码。
可选的,请求还携带第二指令属于第一译码器组的标记信息;
共享译码器10321,用于将译码第二指令得到的微指令,写入第一微指令队列包括:
基于标记信息,将译码第二指令得到的微指令,写入第一微指令队列。
可选的,第一指令挑选模块1021,还用于,若多个指令的数量不大于第一译码器组的译码器数量,将多个指令分配给第一译码组中的多个译码器进行译码,以便该多个译码器将译码得到的微指令写入第一微指令队列。
可选的,第一译码器组1031还包括:
如图5所示的第一长度译码模块1061,用于确定待挑选的每个指令的长度,其中,待挑选的每个指令的长度相同或者不同;
第一指令挑选模块1021,用于从第一译码器组对应的第一指令队列中挑选多个指令包括:
根据第一长度译码模块确定的待挑选的每个指令的长度,从第一指令队列中挑选出与每个指令的长度对应的指令,以挑选出多个指令。
可选的,第二译码器组1032还包括:
如图5所示的第二长度译码模块1062,用于确定待挑选的每个指令的长度,其中,待挑选的每个指令的长度相同或者不同;
第二指令挑选模块1022,用于从第二译码器组对应的第二指令队列中挑选多个指令包括:
根据第二长度译码模块确定的待挑选的每个指令的长度,从第二指令队列中挑选出与每个指令的长度对应的指令,以挑选出多个指令。
本申请实施例能够在译码器组的译码器数量不足以译码挑选的多个指令时,利用外部译码器组中的共享译码器来译码多余的指令,从而能够在设置译码器组的译码器数量小于指令挑选数量上限的情况下,降低第一译码器组中使用的译码器数量,从而在保障译码吞吐量的情况下,减少译码器组中使用的译码器数量,实现节约处理器的硬件资源的效果。
本申请实施例中还提供了一种芯片,该芯片可以包括上述的处理器。
本申请实施例还提供一种电子设备,例如服务器设备或者终端设备,该电子设备可以包括上述的芯片。
上文描述了本申请实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本申请实施例披露、公开的实施例方案。
虽然本申请实施例披露如上,但本申请并非限定于此。任何本领域技术人员,在不脱离本申请的精神和范围内,均可作各种更动与修改,因此本申请的保护范围应当以权利要求所限定的范围为准。
Claims (21)
1.一种并行译码的方法,其特征在于,应用于处理器,所述处理器至少包括第一译码器组和第二译码器组,所述第二译码器组设置有被第一译码器组共享的至少一个共享译码器;所述方法包括:
从第一译码器组对应的第一指令队列中挑选多个指令,所述第一指令队列用于保存第一译码器组待译码的指令;
若所述多个指令的数量大于所述第一译码器组的译码器数量,将所述多个指令中与所述第一译码器组的译码器数量相对应的第一指令,分配给第一译码组中的译码器进行译码,以及将所述多个指令中第一指令外的第二指令分配给所述共享译码器进行译码;
将第一译码器组中的译码器译码所述第一指令得到的微指令,写入第一译码器组对应的第一微指令队列,以及,将所述共享译码器译码所述第二指令得到的微指令,写入所述第一微指令队列。
2.根据权利要求1所述的方法,其特征在于,所述从第一译码器组对应的第一指令队列中挑选多个指令包括:
在所述第一指令队列存储的可挑选指令不为空,并且所述第一微指令队列未写满微指令时,从所述第一指令队列存储的可挑选指令中挑选多个指令;
其中,所述第一指令队列存储的可挑选指令的数量大于所述第一译码组的译码器数量时,挑选的多个指令的数量大于所述第一译码器组的译码器数量。
3.根据权利要求1所述的方法,其特征在于,所述将所述多个指令中第一指令外的第二指令分配给所述共享译码器进行译码包括:
在所述第二译码器组中的共享译码器空闲时,将所述多个指令中第一指令外的第二指令分配给所述共享译码器进行译码。
4.根据权利要求3所述的方法,其特征在于,所述第二译码器组中的共享译码器空闲包括:
所述第二译码器组对应的第二指令队列存储的可挑选指令为空;
或者,所述第二译码器组对应的第二微指令队列写满微指令;
或者,所述第二译码器组对应的第二指令队列存储的可挑选指令的数量小于所述第二译码器组的译码器数量,并且所述第二微指令队列未写满微指令。
5.根据权利要求4所述的方法,其特征在于,所述在所述第二译码器组中的共享译码器空闲时,将所述多个指令中第一指令外的第二指令分配给所述共享译码器进行译码包括:
向所述第二译码器组中与所述共享译码器连接的选择器,传递携带所述第二指令的请求,其中,所述选择器用于选择将所述第二指令或者所述第二指令队列中挑选的指令,分配给所述共享译码器;
在所述共享译码器空闲时,通过所述选择器将所述第二指令分配到所述共享译码器进行译码。
6.根据权利要求5所述的方法,其特征在于,所述请求还携带所述第二指令属于第一译码器组的标记信息;
所述将所述共享译码器译码所述第二指令得到的微指令,写入所述第一微指令队列包括:
所述共享译码器基于所述标记信息,将译码所述第二指令得到的微指令,写入所述第一微指令队列。
7.根据权利要求1所述的方法,其特征在于,还包括:
若所述多个指令的数量不大于所述第一译码器组的译码器数量,将所述多个指令分配给第一译码组中的译码器进行译码,并且将译码得到的微指令写入所述第一微指令队列。
8.根据权利要求7所述的方法,其特征在于,所述多个指令的数量不大于所述第一译码器组的译码器数量包括:
所述第一指令队列存储的可挑选指令的数量不大于所述第一译码器组的译码器数量。
9.根据权利要求1所述的方法,其特征在于,所述第一译码器组设置有被第二译码器组共享的至少一个共享译码器;所述方法还包括:
若所述多个指令的数量小于所述第一译码器组的译码器数量,并且所述第二译码器组当前需译码的指令的数量,大于所述第二译码器组的译码器数量,则所述第一译码器组中的共享译码器,译码所述第二译码器组传递给所述第一译码器组的指令。
10.根据权利要求1所述的方法,其特征在于,还包括:
确定待挑选的每个指令的长度,其中,待挑选的每个指令的长度相同或者不同;
所述从第一译码器组对应的第一指令队列中挑选多个指令包括:
根据待挑选的每个指令的长度,从所述第一指令队列中挑选出与每个指令的长度对应的指令,以挑选出所述多个指令。
11.一种处理器,其特征在于,至少包括第一译码器组和第二译码器组;所述第二译码器组设置有被第一译码器组共享的至少一个共享译码器;
所述第一译码器组包括:第一指令挑选模块和多个译码器;
所述第一指令挑选模块,用于从第一译码器组对应的第一指令队列中挑选多个指令,所述第一指令队列用于保存第一译码器组待译码的指令;若所述多个指令的数量大于所述第一译码器组的译码器数量,将所述多个指令中与所述第一译码器组的译码器数量相对应的第一指令,分配给第一译码组中的多个译码器进行译码,以及将所述多个指令中第一指令外的第二指令分配给所述共享译码器进行译码;
所述多个译码器,用于译码所述第一指令并将译码所述第一指令得到的微指令,写入第一译码器组对应的第一微指令队列;
其中,所述共享译码器,用于译码所述第二指令并将译码所述第二指令得到的微指令,写入所述第一微指令队列。
12.根据权利要求11所述的处理器,其特征在于,所述第一指令挑选模块,用于从第一译码器组对应的第一指令队列中挑选多个指令包括:
在所述第一指令队列存储的可挑选指令不为空,并且所述第一微指令队列未写满微指令时,从所述第一指令队列存储的可挑选指令中挑选多个指令;
其中,所述第一指令队列存储的可挑选指令的数量大于所述第一译码组的译码器数量时,挑选的多个指令的数量大于所述第一译码器组的译码器数量。
13.根据权利要求11所述的处理器,其特征在于,所述第一指令挑选模块,用于将所述多个指令中第一指令外的第二指令分配给所述共享译码器进行译码包括:
在所述第二译码器组中的共享译码器空闲时,将所述多个指令中第一指令外的第二指令分配给所述共享译码器进行译码。
14.根据权利要求13所述的处理器,其特征在于,所述第二译码器组中的共享译码器空闲包括:
所述第二译码器组对应的第二指令队列存储的可挑选指令为空;
或者,所述第二译码器组对应的第二微指令队列写满微指令;
或者,所述第二译码器组对应的第二指令队列存储的可挑选指令的数量小于所述第二译码器组的译码器数量,并且所述第二微指令队列未写满微指令。
15.根据权利要求11所述的处理器,其特征在于,所述第一译码器组的多个译码器中设置有被第二译码器组共享的至少一个共享译码器;所述第一译码器组中的共享译码器,用于在所述第一指令挑选模块挑选的所述多个指令的数量小于所述第一译码器组的译码器数量,并且所述第二译码器组当前需译码的指令的数量,大于所述第二译码器组的译码器数量时,译码所述第二译码器组传递给所述第一译码器组的指令;
所述第一译码器组还包括:
第一选择器,所述第一选择器设置于所述第一指令挑选模块和所述第一译码器组中的共享译码器之间;所述第一选择器,用于选择将所述第一指令挑选模块挑选的指令,或者所述第二译码器组传递的指令,分配给所述第一译码器组中的共享译码器。
16.根据权利要求14所述的处理器,其特征在于,所述第二译码器组包括:第二指令挑选模块、第二选择器,以及多个译码器;
所述第二指令挑选模块,用于从所述第二译码器组对应的第二指令队列中挑选多个指令;
所述第二选择器设置于所述第二指令挑选模块以及所述第二译码器组中的共享译码器之间;所述第二选择器,用于接收所述第一指令挑选模块传递的携带所述第二指令的请求;以及将所述第二指令或者所述第二指令挑选模块挑选的指令,分配给所述第二译码器组中的共享译码器;
其中,所述第二指令挑选模块在所述第二译码器组中的共享译码器空闲时,将所述第二指令分配到所述共享译码器进行译码。
17.根据权利要求16所述的处理器,其特征在于,所述请求还携带所述第二指令属于第一译码器组的标记信息;
所述共享译码器,用于将译码所述第二指令得到的微指令,写入所述第一微指令队列包括:
基于所述标记信息,将译码所述第二指令得到的微指令,写入所述第一微指令队列。
18.根据权利要求11所述的处理器,其特征在于,所述第一指令挑选模块,还用于,若所述多个指令的数量不大于所述第一译码器组的译码器数量,将所述多个指令分配给第一译码组中的多个译码器进行译码,以便该多个译码器将译码得到的微指令写入所述第一微指令队列。
19.根据权利要求11所述的处理器,其特征在于,所述第一译码器组还包括:
第一长度译码模块,用于确定待挑选的每个指令的长度,其中,待挑选的每个指令的长度相同或者不同;
所述第一指令挑选模块,用于从第一译码器组对应的第一指令队列中挑选多个指令包括:
根据所述第一长度译码模块确定的待挑选的每个指令的长度,从所述第一指令队列中挑选出与每个指令的长度对应的指令,以挑选出所述多个指令。
20.一种芯片,其特征在于,包括如权利要求11-19任一项所述的处理器。
21.一种电子设备,其特征在于,包括如权利要求20所述的芯片。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211348804.1A CN115525343B (zh) | 2022-10-31 | 2022-10-31 | 一种并行译码的方法、处理器、芯片及电子设备 |
PCT/CN2023/078433 WO2024093062A1 (zh) | 2022-10-31 | 2023-02-27 | 并行译码的方法、处理器、芯片及电子设备 |
EP23884010.2A EP4428682A1 (en) | 2022-10-31 | 2023-02-27 | Parallel decoding method, processor, chip, and electronic device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211348804.1A CN115525343B (zh) | 2022-10-31 | 2022-10-31 | 一种并行译码的方法、处理器、芯片及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115525343A CN115525343A (zh) | 2022-12-27 |
CN115525343B true CN115525343B (zh) | 2023-07-25 |
Family
ID=84703943
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211348804.1A Active CN115525343B (zh) | 2022-10-31 | 2022-10-31 | 一种并行译码的方法、处理器、芯片及电子设备 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP4428682A1 (zh) |
CN (1) | CN115525343B (zh) |
WO (1) | WO2024093062A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115525343B (zh) * | 2022-10-31 | 2023-07-25 | 海光信息技术股份有限公司 | 一种并行译码的方法、处理器、芯片及电子设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108027769A (zh) * | 2015-09-19 | 2018-05-11 | 微软技术许可有限责任公司 | 使用寄存器访问指令发起指令块执行 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10301323B4 (de) * | 2003-01-15 | 2009-02-26 | Nxp Semiconductors Germany Gmbh | Verfahren und Anordnung zur variablen Befehlsdekodierung |
GB2478726B (en) * | 2010-03-15 | 2013-12-25 | Advanced Risc Mach Ltd | Mapping between registers used by multiple instruction sets |
GB2519103B (en) * | 2013-10-09 | 2020-05-06 | Advanced Risc Mach Ltd | Decoding a complex program instruction corresponding to multiple micro-operations |
CN107340994B (zh) * | 2017-06-14 | 2020-11-17 | 北京多思安全芯片科技有限公司 | 一种处理器 |
CN107358125B (zh) * | 2017-06-14 | 2020-12-08 | 北京多思科技工业园股份有限公司 | 一种处理器 |
CN113381769B (zh) * | 2021-06-25 | 2023-02-07 | 华中科技大学 | 一种基于fpga的译码器 |
CN115525343B (zh) * | 2022-10-31 | 2023-07-25 | 海光信息技术股份有限公司 | 一种并行译码的方法、处理器、芯片及电子设备 |
-
2022
- 2022-10-31 CN CN202211348804.1A patent/CN115525343B/zh active Active
-
2023
- 2023-02-27 WO PCT/CN2023/078433 patent/WO2024093062A1/zh active Application Filing
- 2023-02-27 EP EP23884010.2A patent/EP4428682A1/en active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108027769A (zh) * | 2015-09-19 | 2018-05-11 | 微软技术许可有限责任公司 | 使用寄存器访问指令发起指令块执行 |
Also Published As
Publication number | Publication date |
---|---|
WO2024093062A1 (zh) | 2024-05-10 |
EP4428682A1 (en) | 2024-09-11 |
CN115525343A (zh) | 2022-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102271986B1 (ko) | 다수의 마이크로 오퍼레이션에 대응한 복합 프로그램 명령어의 디코딩 | |
US7418576B1 (en) | Prioritized issuing of operation dedicated execution unit tagged instructions from multiple different type threads performing different set of operations | |
US7904704B2 (en) | Instruction dispatching method and apparatus | |
JP5177141B2 (ja) | 演算処理装置、演算処理方法 | |
KR101378390B1 (ko) | 공유 스택의 부분들을 할당하기 위한 시스템 및 방법 | |
CN109101276B (zh) | 在cpu中执行指令的方法 | |
US9146745B2 (en) | Method and apparatus for partitioned pipelined execution of multiple execution threads | |
US10866834B2 (en) | Apparatus, method, and system for ensuring quality of service for multi-threading processor cores | |
CN115525343B (zh) | 一种并行译码的方法、处理器、芯片及电子设备 | |
CN105027075A (zh) | 具有共享前端单元的处理核 | |
US8589942B2 (en) | Non-real time thread scheduling | |
US7797683B2 (en) | Decoupling the number of logical threads from the number of simultaneous physical threads in a processor | |
KR20230070247A (ko) | 다수의 페치 및 디코드 파이프라인을 갖는 프로세서 | |
US11314510B2 (en) | Tracking load and store instructions and addresses in an out-of-order processor | |
US11068272B2 (en) | Tracking and communication of direct/indirect source dependencies of producer instructions executed in a processor to source dependent consumer instructions to facilitate processor optimizations | |
US11392410B2 (en) | Operand pool instruction reservation clustering in a scheduler circuit in a processor | |
US11269642B2 (en) | Dynamic hammock branch training for branch hammock detection in an instruction stream executing in a processor | |
US9015720B2 (en) | Efficient state transition among multiple programs on multi-threaded processors by executing cache priming program | |
US11915002B2 (en) | Providing extended branch target buffer (BTB) entries for storing trunk branch metadata and leaf branch metadata | |
TWI382348B (zh) | 多核心系統及其排程方法 | |
US11327763B2 (en) | Opportunistic consumer instruction steering based on producer instruction value prediction in a multi-cluster processor | |
CN111026442B (zh) | 一种cpu中用于消除程序无条件跳转开销的方法及装置 | |
CN118708244A (zh) | 指令预取方法、装置、电子设备及存储介质 | |
CN115658150A (zh) | 一种指令分配方法、处理器、芯片及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |