CN115525344B - 一种译码方法、处理器、芯片及电子设备 - Google Patents
一种译码方法、处理器、芯片及电子设备 Download PDFInfo
- Publication number
- CN115525344B CN115525344B CN202211350246.2A CN202211350246A CN115525344B CN 115525344 B CN115525344 B CN 115525344B CN 202211350246 A CN202211350246 A CN 202211350246A CN 115525344 B CN115525344 B CN 115525344B
- Authority
- CN
- China
- Prior art keywords
- instruction
- decoder
- micro
- group
- groups
- 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 51
- 230000004044 response Effects 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 12
- 230000011218 segmentation Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
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/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/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
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- 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)
- Executing Machine-Instructions (AREA)
Abstract
本申请实施例提供一种译码方法、处理器、芯片及电子设备,其中所述方法包括:生成携带有至少一个切换标记的取指请求,切换标记至少指示进行译码器组切换的指令位置;响应于由译码器组译码得到微指令,获取取指请求取指出的指令流,根据取指请求携带的切换标记确定进行译码器组切换的指令位置;根据指令位置将指令流分配给多个译码器组进行并行译码,并在目标指令译码得到的目标微指令中附带切换标记,目标指令为指令位置对应的指令;响应于由微指令缓存查找得到微指令,若取指请求在微指令缓存中命中,从微指令缓存中获取对应的微指令。本申请实施例能够提升处理器的译码性能。
Description
技术领域
本申请实施例涉及处理器技术领域,具体涉及一种译码方法、处理器、芯片及电子设备。
背景技术
在现代处理器中,指令需要经过取指、译码和执行等处理过程;其中,译码是对取指的指令进行解析翻译,以得到微指令(micro-op,Uop)的过程。译码作为处理器的重要工作,如何提升处理器的译码性能,一直是本领域技术人员研究的问题。
发明内容
有鉴于此,本申请实施例提供一种译码方法、处理器、芯片及电子设备,以实现指令的并行译码,并得到与取指顺序一致的微指令序列,从而提升处理器的译码性能。
为实现上述目的,本申请实施例提供如下技术方案:
本申请实施例提供一种译码方法,应用于处理器,所述方法包括:
生成取指请求,所述取指请求携带有至少一个切换标记,所述切换标记至少指示进行译码器组切换的指令位置;
响应于由译码器组译码得到微指令,获取所述取指请求取指出的指令流,根据所述取指请求携带的切换标记,确定所述指令流中进行译码器组切换的指令位置;根据所述指令位置,将所述指令流分配给多个译码器组进行并行译码,并在目标指令译码得到的目标微指令中附带切换标记,所述目标指令为所述指令位置对应的指令;
响应于由微指令缓存查找得到微指令,若所述取指请求在微指令缓存中命中,从所述微指令缓存中获取所述取指请求对应的微指令,所获取的微指令不附带切换标记。
本申请实施例还提供一种处理器,包括:
分支预测单元,用于生成取指请求,所述取指请求携带有至少一个切换标记,所述切换标记至少指示进行译码器组切换的指令位置;
指令缓存,用于响应于由译码器组译码得到微指令,获取所述取指请求取指出的指令流,根据所述取指请求携带的切换标记,确定所述指令流中进行译码器组切换的指令位置;
指令分配单元,用于根据所述指令位置,将所述指令流分配给多个译码器组进行并行译码;
译码器组,用于对分配的指令进行译码,以得到微指令;所述译码器组的数量为多个,其中,译码器组译码目标指令时,所述目标指令译码得到的目标微指令中附带切换标记,所述目标指令为所述指令位置对应的指令;
微指令缓存,用于响应于由微指令缓存查找得到微指令,若所述取指请求在微指令缓存中命中,从所述微指令缓存中获取所述取指请求对应的微指令,所获取的微指令不附带切换标记。
本申请实施例还提供一种芯片,包括如上述所述的处理器。
本申请实施例还提供一种电子设备,包括如上述所述的芯片。
本申请实施例所提供的译码方法可应用于处理器,可在取指请求中携带至少一个切换标记,所述切换标记至少指示进行译码器组切换的指令位置。从而当处理器响应于由译码器组译码得到微指令时,可获取取指请求取指出的指令流,并根据所述取指请求携带的切换标记确定所述指令流中进行译码器组切换的指令位置;进而根据所述指令位置,将所述指令流分配给多个译码器组进行并行译码,并在目标指令译码得到的目标微指令中附带切换标记,所述目标指令为所述指令位置对应的指令,以便后续能够根据所述目标微指令附带的切换标记,对多个译码器组译码得到的微指令进行合并,得到与取指顺序对应的微指令。当处理器响应于由微指令缓存查找得到微指令时,若所述取指请求在微指令缓存中命中,本申请实施例可不通过译码器组进行指令的译码,而是从所述微指令缓存中获取所述取指请求对应的微指令。
本申请实施例可在具有微指令缓存和译码器的处理器中,通过在取指请求中携带切换标记,并由切换标记至少指示进行译码器组切换的指令位置,从而在由译码器组译码得到微指令的译码器模式下,将切换标记通过目标指令和目标微指令进行透传,以实现支持多个译码器组的并行译码,以及译码后的微指令能够按照指令的取指顺序进行合并,提升了译码效率;而针对处理器由微指令缓存查找得到微指令的微指令缓存模式,本申请实施例可不基于取指请求中携带的切换标记进行处理,从而兼容处理器的微指令缓存模式。本申请实施例可在支持译码器模式和微指令缓存模式的处理器中,实现并行译码的支持,提升译码性能。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1A为处理器的架构框图;
图1B为处理器的另一架构框图;
图2A为本申请实施例提供的处理器的一架构框图;
图2B为本申请实施例提供的译码方法的可选流程图;
图2C为本申请实施例提供的处理器的又一架构框图;
图3A为本申请实施例提供的指令流的切分示意图;
图3B为本申请实施例提供的微指令的合并示意图;
图4A为具有微指令缓存的处理器架构框图;
图4B为本申请实施例提供的处理器的再一架构框图;
图5A为本申请实施例提供的微指令缓存模式下保存微指令的可选示意图;
图5B为本申请实施例提供的微指令缓存模式下保存微指令的另一可选示意图;
图6为本申请实施例提供的译码方法的另一可选流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
指令是控制计算机执行操作的命令,也称为机器指令。指令的作用是协调各硬件部件之间的工作关系,它反映了计算机所拥有的基本功能,是计算机运行的最小功能单位。在计算机执行某种操作命令时,处理器需要对指令进行处理,转化为能够被机器识别的机器语言。在处理器中,一般使用流水线(pipeline)技术实现指令的处理。
在处理器的流水线作业中,指令需要经过取指(Instruction Fetch)、译码(Instruction Decode)、执行(Execute)等处理过程。取指为从处理器的缓存或主存储器中取指出程序运行对应的指令;译码操作为对取指出的指令进行译码,以确定指令的操作码和/或地址码等;执行操作为根据得到的操作码和/或地址码等执行指令操作,实现程序运行。其中,由于指令中存在改变程序流程的分支指令,为解决在处理分支指令时,处理器需等待分支指令的执行结果来确定下一步取指而导致的流水线延迟,处理器处理指令的流水线的前端还可设置分支预测单元,以实现指令的分支预测。
图1A示例性的示出了处理器的架构框图,该处理器包括:分支预测单元101、指令缓存102、译码器组103。
分支预测单元101是一种数字电路,可对指令进行分支预测,并基于分支预测结果生成取指请求。分支预测结果例如当前指令是否为分支指令、分支指令的分支结果(方向、地址、目标地址等)等。在一种实现中,分支预测单元可基于分支指令的历史执行信息和结果进行指令的分支预测,从而得到指令的取指地址范围并生成取指请求。分支预测单元生成的取指请求中包含有若干条指令的取指地址,用于从指令缓存102中读取相应的指令。
指令缓存102中存储有指令,指令缓存102主要通过指令缓存块进行指令的存储。在指令缓存中,每个指令缓存块对应一个Tag标签,用于在指令缓存中标识该指令缓存块,从而指令缓存在根据取指请求进行取指时,基于Tag能够查找到对应的指令缓存块。分支预测单元生成的取指地址可能对应多个指令,该多个指令形成指令流。可选的,指令缓存102可以是位于处理器的一级缓存中用于存储指令的缓存部分。
需要说明的是,分支预测单元生成的取指地址中存在Tag区(地址标识区)和Index区(地址索引区),通过取指地址中的Index区能够在指令缓存中读取出多个指令缓存块的Tag,进而将读取的指令缓存多个指令缓存块的Tag与取指地址的Tag进行匹配判断,得到取指地址对应的指令在指令缓存中的存储位置(即指令缓存块的位置),从而读取对应的指令。
译码器组103能够对指令进行解析翻译,通过译码器组对指令进行译码操作,可以得出译码后的指令。译码后的指令可以是翻译指令所得出的可由机器执行的操作信息,诸如控制字段所形成的机器可执行的Uop(micro-op,微指令);也就是说,译码器可对指令进行译码,从而得到微指令。
图1A所示的处理器架构使用单一译码器组对指令进行译码,其受限于译码器组的吞吐量,指令的译码效率难以有效提升。基于此,使用多个译码器组对指令进行并行译码的处理器应运而生。图1B示例性的示出了处理器的另一架构框图。结合图1A和图1B所示,图1B所示处理器设置了多个译码器组1031至103n,n的具体数值可以根据处理器的具体设计而定,本申请实施例并不设限。基于处理器设置的多个译码器组1031至103n,指令缓存102基于取指请求取指出的指令流可以分配给多个译码器组进行译码,使得多个译码器组进行指令的并行译码,并分别输出译码得到的微指令,提升指令的译码效率。
在一个示例中,多个译码器组可以为两组译码器组,例如分别为译码器组0和译码器组1。其中,译码器组0在对指令执行译码的同时,译码器组1也能够对指令执行译码操作;比如在处理器的一个时钟周期内,译码器组0和译码器组1能够同时对指令执行译码操作并获得微指令,实现指令的并行译码。同时,译码器组0和译码器组1可以不按指令的顺序进行译码,而是可支持指令并行译码。需要说明的是,在实际应用中,处理器可以根据需要设置两组以上的译码器组,为便于理解,本申请实施例仅示出两组译码器组的示例。
然而多个译码器组对指令进行并行译码,不同于单一译码器组对指令进行顺序译码,多个译码器组进行指令的并行译码需要面临更为复杂的情况,比如指令缓存取指出的指令流如何分配给多个译码器组,多个译码器组译码得到的微指令如何合并,从而使得最终被执行的微指令是与指令的取指顺序对应的。为解决上述问题,本申请实施例提供进一步改进的处理器架构,图2A示例性的示出了本申请实施例提供的处理器的一架构框图。结合图1B和图2A所示,图2A所示处理器中进一步设置了指令分配单元201,用于对指令缓存102取指出的指令流进行切分,从而得到分配给译码器组进行并行译码的多个指令组;同时,为使得指令流的切分具有依据,本申请实施例在取指请求中携带了切换标记,所述切换标记可以至少指示进行译码器组切换的指令位置,从而通过将切换标记透传到指令缓存根据取指请求取指出指令流的过程中,可以使得指令分配单元201根据进行译码器组切换的指令位置对指令流进行切分,将指令流切分后的多个指令组分配给多个译码器组进行并行译码,为指令在多个译码器组的并行译码提供技术支持。进一步的,切换标记还可通过所述指令位置对应的指令透传到微指令中,从而各个译码器组译码得到微指令之后,能够基于微指令中的切换标记进行微指令的合并,为微指令的合并结果能够与取指顺序相对应提供技术支持。
作为可选实现,图2B示例性的示出了本申请实施例提供的译码方法的可选流程图。该译码方法可以认为是处理器在利用译码器组进行译码的情况下的方法流程,即由译码器组译码得到微指令的方法流程。参照图2B,该方法流程可以包括如下步骤。
在步骤S21中,生成取指请求,所述取指请求携带有至少一个切换标记,所述切换标记至少指示进行译码器组切换的指令位置。
在一些实施例中,分支预测单元生成的取指请求中可携带切换标记。分支预测单元在进行分支预测时,分支预测方向主要分为两种:分支指令跳转和分支指令不跳转;相应的,分支预测单元所产生的取指地址可以分为两种:跳转的分支预测方向相应的取指地址,和,不跳转的分支预测方向相应的取指地址。作为可选实现,本申请实施例可根据跳转的分支预测方向对应的地址位置设置切换标记,并生成携带有至少一个切换标记的取指请求。
在一些实施例中,切换标记也可以通过其他机制进行设置,而不限于由分支预测单元基于分支预测情况在取指请求中设置切换标记。作为可选实现,分支预测单元生成取指请求(不携带切换标记)后,本申请实施例可利用处理器中的其他器件(例如指令缓存)在取指请求中设置切换标记。在一个实现示例中,指令缓存在获取分支预测单元的取指请求之后,可基于指令边界在取指请求中设置切换标记,所述指令边界可以表示指令的结束位置。
在步骤S22中,获取所述取指请求取指出的指令流,根据所述取指请求携带的切换标记确定所述指令流中进行译码器组切换的指令位置。
指令缓存获取分支预测单元的取指请求,并根据所述取指请求中的取指地址取指指令,从而得到取指请求对应的指令流。若所述取指请求携带切换标记,并且所述切换标记至少指示进行译码器组切换的指令位置,则可以根据取指请求携带的切换标记确定指令流中进行译码器组切换的指令位置。
可以理解的是,指令流为包含有若干条指令的一组指令序列,若指令序列中未存在明确的界限,则指令序列中指令的结束位置不能确定。在本申请实施例中,通过根据取指请求携带的切换标记确定指令流中进行译码器组切换的指令位置,可以确定指令流的界限,则所述指令位置可以作为结束位置。若以所述指令位置对应的指令作为目标指令,则所述指令位置为目标指令的结束位置,从而根据取指请求携带的切换标记指示的指令位置,能够确定指令流中目标指令的结束位置。
需要说明的是,由于切换标记用于至少指示进行译码器组切换的指令位置,因此,其在取指请求中的设置位置不会影响指令缓存取指的指令流,也不会对取指出的指令流结构造成破坏。并且,本申请实施例中对于切换标记的具体设置位置和表现形式并不设限,可以例如是存在于指令缓存取指出的指令流之外的指示域或者是通过切换标记指示位进行表示。
在步骤S23中,根据所述指令位置,将所述指令流分配给多个译码器组进行并行译码,并在目标指令译码得到的目标微指令中附带切换标记,所述目标指令为所述指令位置对应的指令。
在一些实施例中,基于指令缓存取指出的指令流,指令分配单元可根据指令位置(即进行译码器组切换的指令位置),将指令流分配给多个译码器组进行并行译码。在一个可选示例中,指令分配单元可以根据所述指令位置对指令流进行切分,以得到多个指令组,进而将所述多个指令组分配给多个译码器组,由多个译码器组进行并行译码。
进一步的在一些实施例中,指令分配单元根据所述指令位置对指令流进行切分,可以是在指令流中以所述指令位置为分界,将指令流切分为多个指令组,其中,将相邻的两个指令组中作为分界的目标指令切分到前一个指令组中。从而在将指令流分配给多个译码器组进行并行译码时,指令分配单元可根据切分到前一个指令组中的目标指令对应的切换标记,为后一个指令组分配译码器组,并且前一个指令组分配的码器组不同于后一个指令组分配的码器组,其中,目标指令对应的切换标记可以是指示目标指令的结束位置对应的切换标记。
需要说明的是,在多个译码器组对分配的指令组执行译码操作得到微指令后,为使得多个译码器组译码的微指令能够按照取指顺序进行合并,本申请实施例可通过解析翻译指令位置对应的目标指令,在目标指令译码得到的目标微指令中附带切换标记。作为一种可选实现,目标指令译码得到的目标微指令可以是两条微指令的组合,其中,一条为不附带切换标记的微指令,一条为附带切换标记的微指令。
在一些实施例中,本申请实施例在得到多个译码器组译码的微指令后,还可根据目标微指令附带的切换标记,将所述多个译码器组译码得到的微指令进行合并,以得到与取指顺序对应的微指令。可以理解的是,要实现对程序的完整操作,需要对多个译码器组译码得到的微指令进行合并,并且微指令合并后得到的微指令序列的顺序也要与取指顺序能够对应。
本申请实施例在取指请求携带切换标记的情况下,所述切换标记至少指示进行译码器组切换的指令位置。从而可获取取指请求取指出的指令流,并根据所述取指请求携带的切换标记确定所述指令流中进行译码器组切换的指令位置,进而根据所述指令位置,将所述指令流分配给多个译码器组进行并行译码,并在目标指令译码得到的目标微指令中附带切换标记,所述目标指令为所述指令位置对应的指令。本申请实施例可通过切换标记指示进行译码器组切换的指令位置,并将切换标记由取指请求透传到取指的指令流中的指令位置,从而实现基于该指令位置对取指的指令流进行切分,并分配给多个译码器组进行并行译码,有效提升了处理器的译码效率。进一步的,本申请实施例可通过对作为分界的目标指令的解析翻译,将切换标记透传到目标微指令中,在得到多个译码器组译码的微指令后,以根据切换标记,将所述多个译码器组译码得到的微指令进行合并,得到与取指顺序对应的微指令,以便于微指令的准确执行。
在一些实施例中,图2C示出了本申请实施例提供的处理器的又一架构框图。结合图2A和图2C所示,在图2C所示处理器中,各个译码器组设置了对应的指令队列以及微指令队列,例如译码器组1031至103n分别设置了指令队列2021至202n,以及微指令队列2031至203n,一个译码器组对应一个指令队列和一个微指令队列。其中译码器组的指令队列,用于保存指令分配单元分配给译码器组的指令组,即指令队列可以保存译码器组待译码的指令;例如,指令队列2021保存译码器组1031待译码的指令,以此类推,指令队列202n保存译码器组103n待译码器的指令,其中,在实现多个译码器组的并行译码时,只要保障各个译码器组的指令队列保存待译码指令的速度,快于译码器组的译码速度,则译码器组可不断的从指令队列中获取指令进行译码,从而实现多个译码器组的并行译码。译码器组的微指令队列,用于保存译码器组译码得到的微指令;例如,微指令队列2031保存译码器组1031译码得到的微指令,以此类推,微指令队列203n保存译码器组103n译码得到的微指令。为对各个译码器组译码得到的微指令进行合并,处理器进一步设置了合并单元204,合并单元204可从多个微指令队列中读取指令并进行合并,使得合并的微指令的顺序与取指顺序相对应。
基于图2B所示方法流程的原理,图2C所示处理器架构可以在译码过程中,将取指请求中的切换标记通过对应的指令透传到微指令中,以实现多个译码器组并行译码,并且微指令按照取指顺序进行合并,可选的具体过程如下所示。
分支预测单元101生成携带有切换标记的取指请求,将取指请求下发至指令缓存102,以在指令缓存102中根据取指请求读取对应的指令流。其中,取指请求的切换标记指示的是进行译码器组切换的指令位置,并不影响取指地址在指令缓存中查找指令位置对应的指令。
指令缓存102根据取指请求的取指地址读取指令流,其中,取指请求携带的切换标记不对指令缓存的取指指令造成影响。在读取到指令流,根据取指请求携带的切换标记,指令缓存102能够确定所述指令流中进行译码器组切换的指令位置。
指令分配单元201根据所述指令位置,对指令流进行切分,得到多个指令组,并将所述多个指令组分配给译码器组1031至103n对应的指令队列2021至202n。作为一种可选实现,切换标记指示的指令位置可以为多个,从而指令流中确定的指令位置可以为多个,指令分配单元对指令流进行切分时,可以是在指令流中识别到一个所述指令位置时,进行一次切分,并将指令位置对应的目标指令切分到前一个指令组中,并且,根据切分到前一个指令组中的目标指令对应的切换标记,为后一个指令组分配译码器组,而且,前一个指令组分配的译码器组不同于后一个指令组分配的译码器组。以此方式,以所述指令位置为分界,将指令流切分为多个指令组,将所述多个指令组分配给多个译码器组进行并行译码。
在一些实施例中,基于译码器组对应设置的用于保存待译码的指令的指令队列,指令分配单元201可将多个指令组中的首个指令组保存到默认译码器组对应的指令队列中,而针对多个指令组中的非首个指令组,指令分配单元201可根据前一个指令组中的目标指令对应的切换标记,从多个译码器组中确定与前一个指令组分配的译码器组不同的译码器组,进而将该非首个指令组保存到所确定的译码器组对应的指令队列。
在针对多个指令组中的非首个指令组分配译码器组的可选实现中,可以是根据非首个指令组的前一个指令组中的目标指令对应的切换标记,按照多个译码器组的顺序,从多个译码器组中依序确定为各非首个指令组分配的译码器组。例如,首个译码器组1031为默认译码器组,则指令流切分后的首个指令组分配给译码器组1031,而后按照译码器组的顺序,依次将各非首个指令组分配给译码器组1031之后的译码器组,直至译码器组103n。
可以理解的是,指令分配单元为指令组分配译码器组的分配原则可以是根据译码器组的顺序进行分配的,并且根据前一个指令组中的目标指令对应的切换标记,为后一个指令组分配与前一个指令组分配的译码器组不同的译码器组,以此实现指令组在译码器组对应的指令队列中的合理分配,保证多个译码器组在对应的指令队列中能够读取待译码指令,实现多个译码器组的并行译码。
需要说明的是,在另一可选实现中,切换标记还可以包含要切换的译码器组的信息,用于具体指示切换的译码器组。从而指令分配单元基于前一个指令组中目标指令对应的切换标记,能够为后一个指令组分配具体的译码器组,实现不按译码器组的顺序为指令组分配译码器组。例如,对于译码器组1031至103n,根据切换标记的出现顺序,若首个切换标记中记录有译码器组103n的信息,则在将首个指令组分配给默认译码器组后,为后一个指令组分配首个切换标记具体指示的译码器组103n,由译码器组103n来执行译码;若下一个切换标记具体指示译码器组1031,则为下一个指令组分配的译码器组为1031,由译码器组1031来执行译码,以此方式,指令分配单元根据切换标记中具体指示切换的译码器组,为指令组分配对应的译码器组,直至指令组分配完毕。
需要进一步说明的是,默认译码器组可以为按顺序分配的首个译码器组,也可以为处理器指定分配的译码器组,本申请对此不做过多限制。
继续参照图2C,译码器组1031至103n将译码后的微指令对应保存在微指令队列2031至203n中,其中,译码器组1031至103n如果译码的指令为目标指令,则可以译码得到目标指令对应的目标微指令,并根据目标指令中对应切换标记的指令位置,将切换标记附带在目标微指令中。
合并单元204在微指令队列2031至203n中读取微指令,将读取的微指令进行合并,以得到能够被执行的微指令序列。通过合并单元204实现微指令队列2031至203n中的微指令合并时,合并单元204可基于目标微指令附带的切换标记,在微指令队列2031至203n中依序读取微指令进行合并。例如:合并单元按照微指令队列的顺序,在微指令队列2031中读取微指令,当在微指令队列2031中读取到附带有切换标记的目标微指令,则顺序的切换到微指令队列2031之后的下一微指令队列,并在该微指令队列中读取微指令。当在该微指令队列读取到附带有切换标记的目标微指令时,则继续切换到下一微指令队列中读取微指令,以此类推,直至微指令读取完毕。
在一些实施例中,合并单元读取微指令的首个微指令队列,可以与指令组首个分配的指令队列相对应(例如属于同一译码器组的微指令队列和指令队列),在一个示例中,如果指令分配单元将首个指令组分配给译码器组1031对应的指令队列2021,则合并单元在对微指令进行合并时,首先在微指令队列2031中读取微指令,以为合并的微指令队列能够与取指顺序相对应提供支持。
在另一些实施例中,目标指令对应的切换标记还可以具体指示切换的译码器组,则在目标指令译码得到目标微指令中附带的切换标记可以具体指示切换的微指令队列。从而合并单元在对微指令进行合并时,基于目标微指令附带的切换标记能够切换的读取微指令队列,实现不按微指令队列的顺序读取。在一个示例中,假设目标微指令存在于微指令队列2031中,并且目标微指令中附带的切换标记具体指示切换的微指令队列为203n,当合并单元在微指令队列2031中读取到目标微指令附带的切换标记时,可切换到微指令队列203n中继续读取微指令;若在微指令队列203n中读取到目标微指令附带的切换标记具体指示切换的微指令队列为2031,则切换到微指令队列2031中读取微指令。
为便于理解基于指令流中进行译码器组切换的指令位置,对指令流进行切分的原理,下面以两个译码器组为例进行介绍。图3A示例性的示出了指令流的切分示意图。如图3A所示,指令流包括指令310至31m,m为指令流中的指令数量,具体可根据实际情况而定,本申请实施例并不设限。在指令310至31m中,切换标记指示的进行译码器组切换的指令位置如图中虚线箭头所示,则所述指令位置对应的指令31k可以为目标指令,并且所述指令位置可以为目标指令31k的结束位置,其中,切换标记可以例如通过分支预测单元进行设置。
如图3A所示,本申请实施例可将所述指令位置作为指令流切分的分界,对指令流310至31m进行切分。其中,目标指令31k与指令31k+1相邻,在根据所述指令位置对指令流进行切分时,将目标指令31k切分到前一个指令组(即指令310至指令31k为一组),指令31k+1切分到后一个指令组(即指令31k+1至指令31m为一组),得到相邻的两个不同指令组。当切换标记为多个时,指令流中的指令位置为多个,对应的目标指令也为多个,可按此方式进行指令流的切分,得到多个指令组。
参照图3A,本申请实施例可按照译码器组0和译码器组1的顺序,将切分后的首个指令组(即指令310至目标指令31k)分配到译码器组0对应的指令队列中,由译码器组0对指令310至目标指令31k执行译码操作。基于目标指令31k为进行译码器组切换的指令位置对应的指令,因此需为目标指令31k之后的指令分配与译码器组0不同的译码器组,从而将指令31k+1至指令31m的指令组,分配到译码器组1对应的指令队列,由译码器组1对指令31k+1至指令31m执行译码操作。
为便于理解基于附带切换标记的微指令,对微指令进行合并的原理,下面以两个译码器组为例进行介绍。图3B示例性的示出了微指令的合并示意图。
译码器组0对指令310至目标指令31k的指令组进行译码,得到微指令320至目标微指令32k(图中未示出),其中,译码器组0对目标指令31k进行解析翻译,得到的目标微指令32k为微指令32k'和微指令32k”的组合,微指令32k'为不附带切换标记的微指令,微指令32k”为附带切换标记的微指令。译码器组1对指令31k+1至指令31m的指令组进行译码,得到微指令32k+1至微指令32m。微指令320至目标微指令32k存放在译码器组0的微指令队列,微指令32k+1至微指令32m存放在译码器组1的微指令队列。
在对微指令进行合并时,按照译码器组的顺序,可先在译码器组0的微指令队列中读取微指令,在读取到目标微指令32k中附带切换标记的微指令32k”时,则切换至译码器组1的微指令队列读取微指令,也就是说,在从当前读取的微指令队列中读取到附带切换标记的微指令时,则切换到下一微指令队列进行微指令的读取,直至微指令读取完毕。由于取指的指令流是按照目标指令中对应于切换标记指示的指令位置进行切分,分配给多个译码器组进行并行译码,因此在读取译码得到的微指令时,可以按照目标微指令附带的切换标记,在多个译码器组的微指令队列中切换的读取微指令,使得读取的微指令能够与取指顺序相对应。
上文描述了在处理器具有多个译码器组的情况下,通过取指请求的切换标记指示进行译码器组切换的指令位置,并根据取指请求将切换标记通过指令流中的目标指令透传到译码器组译码得到的微指令中,以实现支持多个译码器组进行并行译码和微指令的按序合并,有效提升了处理器的译码效率。虽然处理器的多组译码器组能够实现指令的并行译码,但是得到微指令必须经历取指和译码的过程,这导致获得微指令的过程较为繁琐;基于此,为提升微指令的获取速度,本申请实施例进一步提供具有Micro-Op Cache(OC,微指令缓存)的高性能处理器。
图4A为具有微指令缓存的处理器架构框图。如图4A所示,分支预测单元101将生成的取指请求下发至微指令缓存104。其中,微指令缓存104可以用于缓存微指令。在一些实施例中,微指令缓存104可以包括多个表项,每个表项可以容纳多个微指令。分支预测单元101生成的取指请求可能对应多个微指令缓存表项。
分支预测单元生成的取指请求在微指令缓存中进行微指令获取时,微指令缓存可将取指请求的起始地址与所有表项的第一条微指令的地址进行命中判断;若命中,则得到第一个表项中的微指令。若微指令缓存表项中最后一个微指令的结束地址小于取指请求的地址范围的结束地址,那么需要使用最后一个微指令对应的地址范围中的结束地址,进一步与所有表项的第一条微指令的地址进行命中判断;若命中,则得到第二个表项中的微指令。重复上述过程,直至取指请求中地址范围的结束地址小于表项中最后一个微指令的结束地址,则可实现基于取指请求,从微指令缓存中读取微指令。
在一些实施例中,当分支预测单元生成的取指请求中的地址都能在微指令缓存中命中时,微指令缓存能够输出对应的微指令;当分支预测单元生成的取指请求中的起始地址未能在微指令缓存表项命中时,微指令缓存不能输出微指令。
基于具有微指令缓存和译码器组的处理器,处理器可以包括多种译码模式,所述多种译码模式包括译码器模式和微指令缓存模式,其中,所述译码器模式由译码器组译码得到微指令,所述微指令缓存模式由微指令缓存查找得到微指令。图4B示例性的示出了本申请实施例提供的处理器的再一架构框图。
如图4B所示,本申请实施例的处理器能够兼容译码器模式和微指令缓存模式,分支预测单元101生成的携带切换标记的取指请求可以通过两条通路得到微指令,该两条通路可以分别为由译码器组译码得到微指令的通路(对应译码器模式),由微指令缓存查找得到微指令的通路(对应微指令缓存模式)。
响应于由译码器组译码得到微指令,即在译码器模式下,分支预测单元101将携带切换标记的取指请求下发至指令缓存102,指令缓存102根据取指请求中的地址取指出指令流,经由指令分配单元201根据指令流中的指令位置对指令流进行切分,得到多个指令组,并将得到的多个指令组分配给多个译码器组对应的指令队列2021至202n。多个译码器组1031至103n在各自对应的指令队列2021至202n中读取待译码指令并执行译码操作,得到微指令,进而将译码得到的微指令保存到对应的微指令队列,并且基于微指令缓存104的存在,还可以将译码得到的微指令缓存至微指令缓存中。
响应于由微指令缓存查找得到微指令,即在微指令缓存模式下,分支预测单元101将携带切换标记的取指请求下发至微指令缓存104,从而可以根据取指请求在微指令缓存中的命中,由微指令缓存对应输出微指令,并且基于微指令队列的存在,能够将获取的微指令保存到默认译码器组对应的微指令队列中。
在一些实施例中,若取指请求在微指令缓存中命中,将获取的微指令保存到默认译码器组对应的微指令队列中,其中,默认译码器组对应的微指令队列可以是按顺序确定的首个译码器组对应的微指令队列,也可以是处理器指定的译码器组对应的微指令队列,还可以是根据译码模式切换至微指令缓存模式前,译码器组译码的最后一条指令是否存在对应切换标记指示的指令位置,从而确定译码器组对应的微指令队列。
作为一种可选实现,在处理器的译码模式由译码器模式切换到微指令缓存模式前,译码器组译码的最后一条指令不存在对应切换标记指示的指令位置,则在微指令缓存中读取的微指令,保存到译码模式切换前译码最后一条指令的译码器组对应的微指令队列。图5A为本申请实施例中切换到微指令缓存模式下保存微指令的可选示意图,如图5A所示,在译码器模式下,根据取指请求在指令缓存中读取指令流(即指令510至指令51m),其中,切换标记指示进行译码器组切换的指令位置如图中虚线所示,则该指令位置对应的指令51k为目标指令,并且指令流的结束位置不存在进行译码器组切换的指令位置;对指令流根据指令位置进行切分得到相邻的两个不同指令组(即指令510至指令51k以及指令51k+1至指令51m),并分配对应译码器组,而且,最后一条指令51m由译码器组1译码得到不附带切换标记的微指令52m,并保存到对应的微指令队列1中。当译码模式切换至微指令缓存模式后,取指地址在微指令缓存中进行查找并命中,读取出微指令(即微指令530至微指令53m),则将读取出的微指令530至微指令53m对应保存在微指令队列1中。
作为另一种可选实现,在处理器的译码模式由译码器模式切换到微指令缓存模式前,译码器组译码的最后一条指令中对应存在切换标记指示进行译码器组切换的指令位置,则在微指令缓存中读取的微指令,根据最后一条指令对应的切换标记,保存到切换标记指示切换后的译码器组对应的微指令队列。图5B为本申请实施例中切换到微指令缓存模式下保存微指令的另一可选示意图,如图5B所示,在译码器模式下,根据取指请求在指令缓存中读取指令流(即指令510至指令51m),其中,最后一条指令51m中对应存在切换标记指示进行译码器组切换的指令位置(图中切换标记2指示的指令位置);对指令流进行切分并分配译码器组后,指令510至51k由译码器组0进行译码,指令51k+1至51m由译码器组1进行译码,并且最后一条指令51m由译码器组1译码得到的微指令52m'和52m”中,微指令52m”附带切换标记,将译码器组1译码得到的微指令保存到对应的微指令队列1中。在译码模式切换至微指令缓存模式后,取指地址在微指令缓存中进行查找并命中,读取出微指令(即微指令530至微指令53m),则将读取出的微指令530至微指令53m保存在译码模式切换前,最后一条指令51m对应的切换标记指示切换到的译码器组(即译码器组0)对应的微指令队列中(即微指令队列0)。
可以理解的是,由于取指请求中携带的切换标记至少指示进行译码器组切换的指令位置,而微指令缓存模式不经过译码器组进行指令译码,因此微指令缓存可不响应取指请求中携带的切换标记,并且在读取的微指令中也不附带切换标记。
在另一些实施例中,在微指令缓存模式下,若取指请求未在微指令缓存中命中,则进入译码器模式,由译码器模式下的多个译码器组对取指请求对应的指令进行并行译码得到微指令,并且在译码器模式下译码得到的微指令可保存到微指令缓存中。其中,在切换到译码器模式下,对取指请求取指出的指令流,根据切换标记指示的指令位置进行切分后,得到的多个指令组中的首个指令组分配给默认译码器组对应的指令队列,所述默认译码器组对应的指令队列可以是按顺序确定的首个译码器组对应的指令队列,也可以是处理器指定的译码器组对应的指令队列,还可以是在进入微指令缓存模式前,根据译码器组译码的最后一个指令是否存在对应切换标记指示的指令位置,从而确定对应的译码器组对应的指令队列。
作为一种可选实现,在处理器的译码模式切换到微指令缓存模式前,译码器组译码的最后一条指令不存在对应切换标记指示的指令位置,则在微指令缓存模式切换到译码器模式后,对指令流切分得到的多个指令组中的首个指令组,分配给微指令缓存模式切换前,译码最后一条指令的译码器组对应的指令队列。继续参考图5A,在处理器的译码模式切换到微指令缓存模式前,译码器组1译码的最后一条指令51m不存在对应切换标记指示的指令位置,从而在切换到微指令缓存模式时,若取指请求中的取指地址未在微指令缓存中命中,则译码模式再次切换到译码器组模式,依据取指请求携带的切换标记指示的指令位置(如图5A中虚线所示位置),对指令流进行切分后,得到的首个指令组(即指令510至指令51k),分配给译码器组1对应的指令队列1。
作为另一种可选实现,在处理器的译码模式切换到微指令缓存模式前,译码器组译码的最后一条指令存在对应切换标记指示的指令位置,则在微指令缓存模式切换到译码器模式后,对指令流切分得到的多个指令组中的首个指令组,分配给微指令缓存模式切换前,最后一条指令对应的切换标记指示进行切换的译码器组对应的指令队列。继续参考图5B,在处理器的译码模式切换到微指令缓存模式前,译码器组1译码的最后一条指令51m存在对应切换标记指示的指令位置,从而在切换到微指令缓存模式时,若取指请求中的取指地址未在微指令缓存中命中,则译码模式再次切换到译码器组模式,依据取指请求携带的切换标记指示的指令位置(如图5B中切换标记2所示位置),对指令流进行切分后,得到的首个指令组(即指令510至指令51k),分配给微指令缓存模式切换前,最后一条指令51m对应的切换标记指示切换后的译码器组0对应的指令队列0。
本申请实施例可在具有微指令缓存和译码器的处理器中,通过在取指请求中携带切换标记,并由切换标记至少指示进行译码器组切换的指令位置;从而在译码器模式下(对应由译码器组译码得到微指令),切换标记可通过目标指令和微指令进行透传,以实现支持多个译码器组的并行译码,提升译码效率;而针对处理器的微指令缓存模式(对应由微指令缓存查找得到微指令),本申请实施例可不基于取指请求中携带的切换标记进行处理,从而兼容处理器的微指令缓存模式。本申请实施例可在支持译码器模式和微指令缓存模式的处理器中,实现并行译码的支持,提升译码性能。也就是说,本申请实施例可在处理器兼容微指令缓存模式的情况下,支持译码器模式的并行译码,提升译码性能。
作为一种可选示例,图6示出了本申请实施例提供的译码方法的另一可选流程图,图6所示方法可由图4B所示的处理器执行,其中,下文描述的内容可与上文描述内容相互对应参照。参照图6,该方法可以包括:
步骤S60、生成取指请求。
可选的,步骤S60可由分支预测单元执行,分支预测单元可根据分支预测跳转结果,在取指请求中设置切换标记,以用于指示进行译码器组切换的指令位置。
步骤S61、判断当前处理器是否处于微指令缓存模式,若否,执行步骤S62,若是,执行步骤S69。
其中,所述微指令缓存模式由微指令缓存查找得到微指令。
步骤S62、访问指令缓存,根据取指请求取指出指令流。
需要说明的是,指令缓存根据取指请求读取的指令流时,取指请求携带的切换标记会透传到取指出的指令流外,基于切换标记至少指示进行译码器组切换的指令位置,能够确定指令流中进行译码器组切换的指令位置,进而确定所述指令位置对应的目标指令。
步骤S63、判断取指请求中是否存在切换标记。若否,执行步骤S64;若是,执行步骤S65。
步骤S64、将指令流发送至默认译码器组,由默认译码器组对指令进行译码,得到的微指令保存到对应微指令队列。
可以理解的是,取指请求携带的切换标记至少用于指示进行译码器组切换的指令位置,当取指请求中不存在切换标记时,不需要对译码器组进行切换,由默认译码器组对指令流进行译码,得到的微指令保存到默认译码器组对应的微指令队列。其中,默认译码器组可以为按顺序分配的首个译码器组,也可以为处理器指定分配的译码器组,并且,在指令的处理过程中,针对每个取指请求,默认译码器组也可以为当前切换到的译码器组,本申请实施例中的默认译码器组并不指定为某一固定的译码器组,可根据实际需求进行选择。
步骤S65、根据切换标记切分指令流,并将目标指令以及目标指令之前的指令分配给默认译码器组对应的指令队列,并由首个译码器组进行译码,得到的微指令保存到对应的微指令队列,其中,目标指令译码得到的目标微指令中附带切换标记。
步骤S66、判断剩余的指令是否还存在切换标记对应的目标指令,若否,执行步骤S67,若是,执行步骤S68。
步骤S67、将剩余的指令分配给与上一译码器组不同的下一译码器组对应的指令队列,并由该下一译码器组进行译码,得到的微指令保存到对应的微指令队列。
步骤S68、将目标指令以及目标指令之前的指令分配给与上一译码器组不同的下一译码器组对应的指令队列,并由该下一译码器组进行译码,得到的微指令保存到对应的微指令队列,其中,目标指令译码得到的微指令附带切换标记;返回执行步骤S66。
需要说明的是,由于指令是分配给译码器组的指令队列,再由译码器组由指令队列读取指令进行译码,因此当指令分配给指令队列的速度,快于译码器组的译码速度时,本申请实施例可实现将指令流切分后分配给多个译码器组的指令队列,并使得多个译码器组基于指令队列已分配的指令进行并行译码。需要进一步说明的是,步骤S65至步骤S68仅是本申请实施例根据目标指令对应的切换标记,对指令流进行切分,以得到多个指令组,并将多个指令组分配给多个译码器组进行并行译码的可选实现方式。
步骤S69、在微指令缓存中取出微指令,得到的微指令保存到对应微指令队列。
其中,微指令队列的选取如前文所述,在此不做赘述。
需要说明的是,基于取指请求在微指令缓存中取指微指令的前提是取指请求能够在微指令缓存中命中,若取指请求不能在微指令缓存中命中,则进入译码器模式,执行步骤S62。
其中,所述译码器模式由译码器组译码得到微指令。
步骤S70、从首个译码器组对应的微指令队列读取微指令。
步骤S71、判断读取到的微指令是否附带切换标记,若是,执行步骤S72;若否,返回执行步骤S70,直至微指令读取完毕。
步骤S72、切换至下一个译码器组对应的微指令队列读取微指令,返回步骤S71。
在微指令读取完毕后,本申请实施例可进一步执行微指令。
本申请实施例可在支持译码器模式和微指令缓存模式的处理器中,实现并行译码的支持,提升译码性能。
本申请实施例还提供一种处理器,其结构可以参考图4B,其中,下文描述的内容可以认为是处理器为实现本申请实施例提供的译码方法,所需设置的功能模块,下文描述的内容可与上文描述内容相互对应参照。该处理器至少包括:
分支预测单元,用于生成取指请求,所述取指请求携带有至少一个切换标记,所述切换标记至少指示进行译码器组切换的指令位置;
指令缓存,用于响应于由译码器组译码得到微指令,获取所述取指请求取指出的指令流,根据所述取指请求携带的切换标记确定所述指令流中进行译码器组切换的指令位置;
指令分配单元,用于根据所述指令位置,将所述指令流分配给多个译码器组进行并行译码;
译码器组,用于对分配的指令进行译码,以得到微指令;所述译码器组的数量为多个,其中,译码器组译码目标指令时,目标指令译码得到的目标微指令中附带切换标记,所述目标指令为所述指令位置对应的指令;
微指令缓存,用于响应于由微指令缓存查找得到微指令,若所述取指请求在微指令缓存中命中,从所述微指令缓存中获取所述取指请求对应的微指令,所获取的微指令不附带切换标记。
可选的,所述指令位置为目标指令的结束位置;所述指令缓存,用于根据所述取指请求携带的切换标记,确定所述指令流中进行译码器组切换的指令位置的步骤可以包括:
根据所述取指请求携带的切换标记指示的指令位置,确定所述指令流中所述目标指令的结束位置。
可选的,所述指令分配单元,用于根据所述指令位置,将所述指令流分配给多个译码器组进行并行译码的步骤可以包括:
根据所述指令位置,对所述指令流进行切分,以得到多个指令组,将所述多个指令组分配给多个译码器组进行并行译码。
可选的,所述指令分配单元根据所述指令位置,对所述指令流进行切分,以得到多个指令组的步骤包括:
在所述指令流中以所述指令位置为分界,将所述指令流切分为多个指令组,其中,相邻的两个指令组中作为分界的目标指令切分到前一个指令组中;
所述指令分配单元将所述多个指令组分配给多个译码器组进行并行译码的步骤包括:
根据切分到前一个指令组中的目标指令对应的切换标记,为后一个指令组分配译码器组,并且前一个指令组分配的译码器组不同于后一个指令组分配的译码器组。
可选的,一个译码器组对应设置一个指令队列,用于保存待译码的指令;
所述指令分配单元,根据切分到前一个指令组中的目标指令对应的切换标记,为后一个指令组分配译码器组,并且前一个指令组分配的译码器组不同于后一个指令组分配的译码器组的步骤包括:
将所述多个指令组中的首个指令组保存到默认译码器组对应的指令队列;
针对所述多个指令组中的非首个指令组,根据前一个指令组中的目标指令对应的切换标记,从所述多个译码器组中确定与前一个指令组分配的译码器组不同的译码器组,将该非首个指令组保存到所确定的译码器组对应的指令队列。
可选的,所述指令分配单元,针对所述多个指令组中的非首个指令组,根据前一个指令组中的目标指令对应的切换标记,从所述多个译码器组中确定与前一个指令组分配的码器组不同的译码器组的步骤包括:
针对所述多个指令组中的非首个指令组,根据非首个指令组的前一个指令组中的目标指令对应的切换标记,按照所述多个译码器组的顺序,从所述多个译码器组中依序确定为各非首个指令组分配的译码器组。
可选的,所述指令分配单元,将所述多个指令组中的首个指令组保存到默认译码器组对应的指令队列的步骤包括:
在从微指令缓存模式退出,并进入译码器模式后,将所述多个指令组中的首个指令组分配给默认译码器组对应的指令队列;其中,所述译码器模式由译码器组译码得到微指令,所述微指令缓存模式由微指令缓存查找得到微指令;
其中,在译码模式切换到微指令缓存模式之前,如果译码器组译码的最后一条指令不存在对应切换标记指示的指令位置,则在译码模式继续切换到译码器模式后,所述首个指令组分配给译码该最后一条指令的译码器组所对应的指令队列;
在译码模式切换到微指令缓存模式之前,如果译码器组译码的最后一条指令存在对应切换标记指示的指令位置,则在译码模式继续切换到译码器模式后,所述首个指令组分配给该最后一条指令对应的切换标记所指示的译码器组对应的指令队列。
可选的,所述处理器还包括合并单元,用于在译码器模式下,根据所述目标微指令附带的切换标记,将所述多个译码器组译码得到的微指令进行合并,以得到与取指顺序对应的微指令。
可选的,一个译码器组对应设置一个微指令队列;
所述译码器组还用于,将译码得到的微指令,保存在对应的微指令队列;
所述合并单元,根据所述目标微指令附带的切换标记,将所述多个译码器组译码得到的微指令进行合并,以得到与取指顺序对应的微指令的步骤包括:
根据所述目标微指令附带的切换标记,在各个译码器组对应的微指令队列中切换的进行微指令的合并,以得到与取指顺序对应的微指令。
可选的,所述合并单元,根据所述目标微指令附带的切换标记,在各个译码器组对应的微指令队列中切换的进行微指令的合并,以得到与取指顺序对应的微指令的步骤包括:
从默认译码器组对应的微指令队列开始读取微指令,若读取的微指令附带切换标记,根据微指令附带的切换标记,确定切换读取微指令的下一微指令队列,直至各个译码器组对应的微指令队列中的微指令读取完毕。
可选的,所述合并单元,若读取的微指令附带切换标记,根据微指令附带的切换标记,确定切换读取微指令的下一微指令队列的步骤包括:
若读取的微指令附带切换标记,根据微指令附带的切换标记,按照微指令队列的顺序,从各个译码器组的微指令队列中,依序切换读取微指令的微指令队列。
可选的,微指令缓存还用于,在微指令缓存模式下,将获取的微指令保存到默认译码器组对应的微指令队列;
所述译码器组还用于,将译码得到的微指令保存到微指令缓存中;
其中,若在微指令缓存模式下,所述取指请求未在微指令缓存中命中,则进入译码器模式。
本申请实施例中还提供了一种芯片,该芯片可以包括上述的处理器。
本申请实施例还提供一种电子设备,该电子设备可以包括上述的芯片。
上文描述了本申请实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本申请实施例披露、公开的实施例方案。
虽然本申请实施例披露如上,但本申请并非限定于此。任何本领域技术人员,在不脱离本申请的精神和范围内,均可作各种更动与修改,因此本申请的保护范围应当以权利要求所限定的范围为准。
Claims (24)
1.一种译码方法,其特征在于,应用于处理器,所述方法包括:
生成取指请求,所述取指请求携带有至少一个切换标记,所述切换标记至少指示进行译码器组切换的指令位置,且所述切换标记包含要切换的译码器组的信息,用于具体指示切换的译码器组;
响应于由译码器组译码得到微指令,获取所述取指请求取指出的指令流,根据所述取指请求携带的切换标记,确定所述指令流中进行译码器组切换的指令位置;根据所述指令位置,将所述指令流分配给多个译码器组进行并行译码,并在目标指令译码得到的目标微指令中附带切换标记,所述目标指令为所述指令位置对应的指令;
响应于由微指令缓存查找得到微指令,若所述取指请求在微指令缓存中命中,从所述微指令缓存中获取所述取指请求对应的微指令。
2.根据权利要求1所述的译码方法,其特征在于,所述指令位置为目标指令的结束位置;所述根据所述取指请求携带的切换标记,确定所述指令流中进行译码器组切换的指令位置包括:
根据所述取指请求携带的切换标记指示的指令位置,确定所述指令流中目标指令的结束位置。
3.根据权利要求1或2所述的译码方法,其特征在于,所述根据所述指令位置,将所述指令流分配给多个译码器组进行并行译码包括:
根据所述指令位置,对所述指令流进行切分,以得到多个指令组,将所述多个指令组分配给多个译码器组进行并行译码。
4.根据权利要求3所述的译码方法,其特征在于,所述根据所述指令位置,对所述指令流进行切分,以得到多个指令组包括:
在所述指令流中以所述指令位置为分界,将所述指令流切分为多个指令组,其中,相邻的两个指令组中作为分界的目标指令切分到前一个指令组中;
所述将所述多个指令组分配给多个译码器组进行并行译码包括:
根据切分到前一个指令组中的目标指令对应的切换标记,为后一个指令组分配译码器组,并且前一个指令组分配的译码器组不同于后一个指令组分配的译码器组。
5.根据权利要求4所述的译码方法,其特征在于,一个译码器组对应设置一个指令队列,用于保存待译码的指令;所述根据切分到前一个指令组中的目标指令对应的切换标记,为后一个指令组分配译码器组,并且前一个指令组分配的译码器组不同于后一个指令组分配的译码器组包括:
将所述多个指令组中的首个指令组保存到默认译码器组对应的指令队列;
针对所述多个指令组中的非首个指令组,根据前一个指令组中的目标指令对应的切换标记,从所述多个译码器组中确定与前一个指令组分配的译码器组不同的译码器组,将该非首个指令组保存到所确定的译码器组对应的指令队列。
6.根据权利要求5所述的译码方法,其特征在于,所述针对所述多个指令组中的非首个指令组,根据前一个指令组中的目标指令对应的切换标记,从所述多个译码器组中确定与前一个指令组分配的码器组不同的译码器组包括:
针对所述多个指令组中的非首个指令组,根据非首个指令组的前一个指令组中的目标指令对应的切换标记,按照所述多个译码器组的顺序,从所述多个译码器组中依序确定为各非首个指令组分配的译码器组。
7.根据权利要求5所述的译码方法,其特征在于,所述将所述多个指令组中的首个指令组保存到默认译码器组对应的指令队列包括:
在从微指令缓存模式退出,并进入译码器模式后,将所述多个指令组中的首个指令组分配给默认译码器组对应的指令队列;其中,所述译码器模式由译码器组译码得到微指令,所述微指令缓存模式由微指令缓存查找得到微指令;
其中,在译码模式切换到微指令缓存模式之前,如果译码器组译码的最后一条指令不存在对应切换标记指示的指令位置,则在译码模式继续切换到译码器模式后,所述首个指令组分配给译码该最后一条指令的译码器组所对应的指令队列;
在译码模式切换到微指令缓存模式之前,如果译码器组译码的最后一条指令存在对应切换标记指示的指令位置,则在译码模式继续切换到译码器模式后,所述首个指令组分配给该最后一条指令对应的切换标记所指示的译码器组对应的指令队列。
8.根据权利要求1所述的译码方法,其特征在于,所述处理器包括多种译码模式,所述多种译码模式包括译码器模式和微指令缓存模式;所述译码器模式由译码器组译码得到微指令,所述微指令缓存模式由微指令缓存查找得到微指令。
9.根据权利要求8所述的译码方法,其特征在于,还包括:
在译码器模式下,根据所述目标微指令附带的切换标记,将所述多个译码器组译码得到的微指令进行合并,以得到与取指顺序对应的微指令。
10.根据权利要求9所述的译码方法,其特征在于,一个译码器组对应设置一个微指令队列;所述方法还包括:
将各个译码器组译码得到的微指令,保存在对应的微指令队列;
所述根据所述目标微指令附带的切换标记,将所述多个译码器组译码得到的微指令进行合并,以得到与取指顺序对应的微指令包括:
根据所述目标微指令附带的切换标记,在各个译码器组对应的微指令队列中切换的进行微指令的合并,以得到与取指顺序对应的微指令。
11.根据权利要求10所述的译码方法,其特征在于,所述根据所述目标微指令附带的切换标记,在各个译码器组对应的微指令队列中切换的进行微指令的合并,以得到与取指顺序对应的微指令包括:
从默认译码器组对应的微指令队列开始读取微指令,若读取的微指令附带切换标记,根据微指令附带的切换标记,确定切换读取微指令的下一微指令队列,直至各个译码器组对应的微指令队列中的微指令读取完毕。
12.根据权利要求11所述的译码方法,其特征在于,所述若读取的微指令附带切换标记,根据微指令附带的切换标记,确定切换读取微指令的下一微指令队列包括:
若读取的微指令附带切换标记,根据微指令附带的切换标记,按照微指令队列的顺序,从各个译码器组的微指令队列中,依序切换读取微指令的微指令队列。
13.根据权利要求10所述的译码方法,其特征在于,还包括:
在微指令缓存模式下,将获取的微指令保存到默认译码器组对应的微指令队列。
14.根据权利要求8所述的译码方法,其特征在于,还包括:
在微指令缓存模式下,若所述取指请求未在微指令缓存中命中,进入译码器模式;
在译码器模式下,将所述多个译码器组译码得到的微指令保存到微指令缓存中。
15.一种处理器,其特征在于,包括:
分支预测单元,用于生成取指请求,所述取指请求携带有至少一个切换标记,所述切换标记至少指示进行译码器组切换的指令位置,且所述切换标记包含要切换的译码器组的信息,用于具体指示切换的译码器组;
指令缓存,用于响应于由译码器组译码得到微指令,获取所述取指请求取指出的指令流,根据所述取指请求携带的切换标记,确定所述指令流中进行译码器组切换的指令位置;
指令分配单元,用于根据所述指令位置,将所述指令流分配给多个译码器组进行并行译码;
译码器组,用于对分配的指令进行译码,以得到微指令;所述译码器组的数量为多个,其中,译码器组译码目标指令时,所述目标指令译码得到的目标微指令中附带切换标记,所述目标指令为所述指令位置对应的指令;
微指令缓存,用于响应于由微指令缓存查找得到微指令,若所述取指请求在微指令缓存中命中,从所述微指令缓存中获取所述取指请求对应的微指令,所获取的微指令不附带切换标记。
16.根据权利要求15所述的处理器,其特征在于,所述指令位置为目标指令的结束位置;所述指令缓存,根据所述取指请求携带的切换标记,确定所述指令流中进行译码器组切换的指令位置,包括:
根据所述取指请求携带的切换标记指示的指令位置,确定所述指令流中目标指令的结束位置。
17.根据权利要求15或16所述的处理器,其特征在于,所述指令分配单元,用于根据所述指令位置,将所述指令流分配给多个译码器组进行并行译码的步骤,包括:
所述指令分配单元根据所述指令位置,对所述指令流进行切分,以得到多个指令组,将所述多个指令组分配给多个译码器组进行并行译码。
18.根据权利要求17所述的处理器,其特征在于,所述指令分配单元根据所述指令位置,对所述指令流进行切分,以得到多个指令组的步骤包括:
所述指令分配单元在所述指令流中以所述指令位置为分界,将所述指令流切分为多个指令组,其中,相邻的两个指令组中作为分界的目标指令切分到前一个指令组中;
根据切分到前一个指令组中的目标指令对应的切换标记,为后一个指令组分配译码器组,并且前一个指令组分配的译码器组不同于后一个指令组分配的译码器组。
19.根据权利要求18所述的处理器,其特征在于,一个译码器组对应设置一个指令队列,用于保存待译码的指令;
所述指令分配单元,根据切分到前一个指令组中的目标指令对应的切换标记,为后一个指令组分配译码器组,并且前一个指令组分配的译码器组不同于后一个指令组分配的译码器组的步骤包括:
所述指令分配单元将所述多个指令组中的首个指令组保存到默认译码器组对应的指令队列;
针对所述多个指令组中的非首个指令组,根据前一个指令组中的目标指令对应的切换标记,从所述多个译码器组中确定与前一个指令组分配的译码器组不同的译码器组,将该非首个指令组保存到所确定的译码器组对应的指令队列。
20.根据权利要求15所述的处理器,其特征在于,还包括:
合并单元,用于在译码器模式下,根据目标微指令中附带的切换标记,将所述多个译码器组译码得到的微指令进行合并,以得到与取指顺序对应的微指令,其中,所述译码器模式由译码器组译码得到微指令。
21.根据权利要求20所述的处理器,其特征在于,一个译码器组对应设置一个微指令队列;所述译码器组还用于,将译码得到的微指令,保存在对应的微指令队列;
所述合并单元,用于根据所述目标微指令附带的切换标记,将所述多个译码器组译码得到的微指令进行合并,以得到与取指顺序对应的微指令的步骤包括:
根据所述目标微指令附带的切换标记,在各个译码器组对应的微指令队列中切换的进行微指令的合并,以得到与取指顺序对应的微指令。
22.根据权利要求21所述的处理器,其特征在于,所述微指令缓存还用于,在微指令缓存模式下,将获取的微指令保存到默认译码器组对应的微指令队列;其中,所述微指令缓存模式由微指令缓存查找得到微指令;
所述译码器组还用于,将译码得到的微指令保存到微指令缓存中;
其中,若在微指令缓存模式下,所述取指请求未在微指令缓存中命中,则进入译码器模式。
23.一种芯片,其特征在于,包括如权利要求15-22任一项所述的处理器。
24.一种电子设备,其特征在于,包括如权利要求23所述的芯片。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211350246.2A CN115525344B (zh) | 2022-10-31 | 2022-10-31 | 一种译码方法、处理器、芯片及电子设备 |
PCT/CN2023/078435 WO2024093063A1 (zh) | 2022-10-31 | 2023-02-27 | 一种译码方法、处理器、芯片及电子设备 |
KR1020247020833A KR20240101880A (ko) | 2022-10-31 | 2023-02-27 | 디코딩 방법, 프로세서, 칩, 및 전자 디바이스 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211350246.2A CN115525344B (zh) | 2022-10-31 | 2022-10-31 | 一种译码方法、处理器、芯片及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115525344A CN115525344A (zh) | 2022-12-27 |
CN115525344B true CN115525344B (zh) | 2023-06-27 |
Family
ID=84703803
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211350246.2A Active CN115525344B (zh) | 2022-10-31 | 2022-10-31 | 一种译码方法、处理器、芯片及电子设备 |
Country Status (3)
Country | Link |
---|---|
KR (1) | KR20240101880A (zh) |
CN (1) | CN115525344B (zh) |
WO (1) | WO2024093063A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115525344B (zh) * | 2022-10-31 | 2023-06-27 | 海光信息技术股份有限公司 | 一种译码方法、处理器、芯片及电子设备 |
CN116414463B (zh) * | 2023-04-13 | 2024-04-12 | 海光信息技术股份有限公司 | 指令调度方法、指令调度装置、处理器及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1673955A (zh) * | 2004-03-26 | 2005-09-28 | 国际商业机器公司 | 减少指令高速缓存和流水线处理器之间等待时间的装置和方法 |
CN104572016A (zh) * | 2013-10-09 | 2015-04-29 | Arm有限公司 | 对应于多个微操作的复杂程序指令的译码 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2886838B2 (ja) * | 1997-01-14 | 1999-04-26 | 財団法人工業技術研究院 | スーパースカラパイプライン式データ処理装置の可変長命令の並列デコーディング装置及び方法 |
CN102243578A (zh) * | 2010-05-10 | 2011-11-16 | 北京凡达讯科技有限公司 | 一种芯片的命令译码方法、***及装置 |
CN106406814B (zh) * | 2016-09-30 | 2019-06-14 | 上海兆芯集成电路有限公司 | 处理器和将架构指令转译成微指令的方法 |
CN107358125B (zh) * | 2017-06-14 | 2020-12-08 | 北京多思科技工业园股份有限公司 | 一种处理器 |
CN112540797A (zh) * | 2019-09-23 | 2021-03-23 | 阿里巴巴集团控股有限公司 | 指令处理装置和指令处理方法 |
CN112130897A (zh) * | 2020-09-23 | 2020-12-25 | 上海兆芯集成电路有限公司 | 微处理器 |
US12039337B2 (en) * | 2020-09-25 | 2024-07-16 | Advanced Micro Devices, Inc. | Processor with multiple fetch and decode pipelines |
CN112631660A (zh) * | 2020-12-16 | 2021-04-09 | 广东赛昉科技有限公司 | 一种并行提取指令的方法与可读存储介质 |
CN114090077B (zh) * | 2021-11-24 | 2023-01-31 | 海光信息技术股份有限公司 | 调取指令的方法及装置、处理装置及存储介质 |
CN114138341B (zh) * | 2021-12-01 | 2023-06-02 | 海光信息技术股份有限公司 | 微指令缓存资源的调度方法、装置、程序产品以及芯片 |
CN114201219B (zh) * | 2021-12-21 | 2023-03-17 | 海光信息技术股份有限公司 | 指令调度方法、指令调度装置、处理器及存储介质 |
CN114579312A (zh) * | 2022-03-04 | 2022-06-03 | 海光信息技术股份有限公司 | 一种指令处理方法、处理器、芯片和电子设备 |
CN115098169B (zh) * | 2022-06-24 | 2024-03-05 | 海光信息技术股份有限公司 | 基于容量共享的调取指令的方法及装置 |
CN115525344B (zh) * | 2022-10-31 | 2023-06-27 | 海光信息技术股份有限公司 | 一种译码方法、处理器、芯片及电子设备 |
-
2022
- 2022-10-31 CN CN202211350246.2A patent/CN115525344B/zh active Active
-
2023
- 2023-02-27 KR KR1020247020833A patent/KR20240101880A/ko unknown
- 2023-02-27 WO PCT/CN2023/078435 patent/WO2024093063A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1673955A (zh) * | 2004-03-26 | 2005-09-28 | 国际商业机器公司 | 减少指令高速缓存和流水线处理器之间等待时间的装置和方法 |
CN104572016A (zh) * | 2013-10-09 | 2015-04-29 | Arm有限公司 | 对应于多个微操作的复杂程序指令的译码 |
Also Published As
Publication number | Publication date |
---|---|
WO2024093063A1 (zh) | 2024-05-10 |
CN115525344A (zh) | 2022-12-27 |
KR20240101880A (ko) | 2024-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115525344B (zh) | 一种译码方法、处理器、芯片及电子设备 | |
US10083041B2 (en) | Instruction sequence buffer to enhance branch prediction efficiency | |
KR101059335B1 (ko) | 가변 길이 명령 세트 실행 모드들을 가지는 프로세서 내의 bht의 효율적 사용방법 | |
US5941980A (en) | Apparatus and method for parallel decoding of variable-length instructions in a superscalar pipelined data processing system | |
US9733944B2 (en) | Instruction sequence buffer to store branches having reliably predictable instruction sequences | |
US7181597B2 (en) | Decoding instructions for trace cache resume state in system passing decoded operations to both trace cache and execution allocation module | |
JP6718454B2 (ja) | 選択的ページミス変換プリフェッチによってプログラムメモリコントローラにおけるページ変換ミスレイテンシを隠すこと | |
JP2018063684A (ja) | 分岐予測器 | |
US11372646B2 (en) | Exit history based branch prediction | |
CN107818053B (zh) | 用于存取高速缓存的方法与装置 | |
US11900120B2 (en) | Issuing instructions based on resource conflict constraints in microprocessor | |
US7093100B2 (en) | Translation look aside buffer (TLB) with increased translational capacity for multi-threaded computer processes | |
CN106547587B (zh) | 用于生成目标程序的配置文件的装置和方法 | |
CN114201219B (zh) | 指令调度方法、指令调度装置、处理器及存储介质 | |
RU2602335C2 (ru) | Способ и устройство для предсказания ветвлений | |
CN116302106A (zh) | 用于促进分支预测单元的改善的带宽的设备、方法和*** | |
JP5494832B2 (ja) | 演算処理装置および分岐予測方法 | |
JPH08320788A (ja) | パイプライン方式プロセッサ | |
CN115629807B (zh) | 多线程处理器的译码方法、处理器、芯片及电子设备 | |
US7139903B2 (en) | Conflict free parallel read access to a bank interleaved branch predictor in a processor | |
US20230305850A1 (en) | Branch prediction using speculative indexing and intraline count | |
US20160011889A1 (en) | Simulation method and storage medium | |
US20050027921A1 (en) | Information processing apparatus capable of prefetching instructions | |
EP4020167A1 (en) | Accessing a branch target buffer based on branch instruction information | |
EP4020187A1 (en) | Segmented branch target buffer based on branch instruction type |
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 |