CN114675890A - 一种指令执行方法、装置、设备及存储介质 - Google Patents
一种指令执行方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114675890A CN114675890A CN202210577913.4A CN202210577913A CN114675890A CN 114675890 A CN114675890 A CN 114675890A CN 202210577913 A CN202210577913 A CN 202210577913A CN 114675890 A CN114675890 A CN 114675890A
- Authority
- CN
- China
- Prior art keywords
- instruction
- executed
- micro
- register
- decoding
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000003860 storage Methods 0.000 title claims abstract description 24
- 238000009826 distribution Methods 0.000 claims description 11
- 238000013507 mapping Methods 0.000 claims description 10
- 230000008569 process Effects 0.000 claims description 7
- 230000002159 abnormal effect Effects 0.000 claims description 6
- 239000000126 substance Substances 0.000 claims description 2
- 230000005540 biological transmission Effects 0.000 description 16
- 238000004364 calculation method Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 239000002699 waste material Substances 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 230000000007 visual effect 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
-
- 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/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
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)
Abstract
本公开提供了一种指令执行方法、装置、设备及存储介质,涉及微处理器技术领域,方法主要包括:获取待执行指令;对待执行指令进行译码,得到译码结果;对待执行指令进行寄存器重命名;对进行寄存器重命名后的待执行指令进行拆分,得到待执行指令对应的微操作;根据译码结果,执行微操作,得到待执行指令的执行结果。本公开提供的一种指令执行方法、装置、设备及存储介质,在对待执行指令进行译码和寄存器重命名时可以节约重命名资源和译码资源,从而增加指令分派和发射的宽度。
Description
技术领域
本公开涉及微处理器技术领域,尤其涉及一种指令执行方法、装置、设备及存储介质。
背景技术
在现有的超标量微处理器中,一条指令的生命周期一般分为取指、译码、重命名、分派、发射和执行等阶段;微处理器为了提高数据处理的效率,通常会在译码阶段将高级指令分解为低级、硬件可运行的微操作,然后分别为拆分得到的多个微操作进行寄存器重命名,之后再对寄存器重命名后的多个微操作进行分派、发射和执行。然而,在译码阶段先对指令进行拆分得到多个微操作,然后再对多个微操作进行寄存器重命名会浪费重命名资源和译码资源,降低指令分派和发射的宽度。
发明内容
本公开提供了一种指令执行方法、装置、设备及存储介质,以至少解决现有技术中存在的以上技术问题。
根据本公开的第一方面,提供了一种指令执行方法,该方法包括:获取待执行指令;对所述待执行指令进行译码,得到译码结果;对所述待执行指令进行寄存器重命名;对进行寄存器重命名后的待执行指令进行拆分,得到所述待执行指令对应的微操作;根据所述译码结果,执行所述微操作,得到所述待执行指令的执行结果。
在一可实施方式中,所述对所述待执行指令进行译码,得到译码结果,包括:为所述待执行指令的每个微操作分配对应的源寄存器通道和目的寄存器通道,得到分配结果;根据所述分配结果,对所述待执行指令进行译码,得到译码结果。
在一可实施方式中,所述译码结果包括所述待执行指令的源寄存器和目的寄存器,所述对所述待执行指令进行寄存器重命名,包括:根据重命名映射表,查找与所述源寄存器对应的物理寄存器;以及为所述目的寄存器分配空闲状态的物理寄存器。
在一可实施方式中,所述对进行寄存器重命名后的待执行指令进行拆分,得到所述待执行指令对应的微操作,包括:根据所述待执行指令的格式,对进行寄存器重命名后的待执行指令进行拆分,得到所述待执行指令对应的微操作。
在一可实施方式中,所述根据所述译码结果,执行所述微操作,得到所述待执行指令的执行结果,包括:根据所述分配结果,分别将所述微操作保存在对应的发射队列;在所述微操作准备就绪时,根据所述译码结果,将所述微操作从对应的发射队列中发射并执行,得到所述执行结果。
在一可实施方式中,在根据所述分配结果,分别将所述微操作保存在对应的发射队列之后,所述方法还包括:在重排序缓冲中为所述微操作分配对应的微操作状态位,所述微操作状态位用于跟踪所述微操作的提交状态。
在一可实施方式中,在所述将所述微操作从对应的发射队列中发射并执行,得到所述执行结果之后,还包括:所述待执行指令在执行过程中未发生异常且未被其他指令清空,则提交所述待执行指令并在重排序缓冲中释放所述微操作状态位。
根据本公开的第二方面,提供了一种指令执行装置,该装置包括:获取模块,用于获取待执行指令;译码模块,用于对所述待执行指令进行译码,得到译码结果;重命名模块,用于对所述待执行指令进行寄存器重命名;拆分模块,用于对进行寄存器重命名后的待执行指令进行拆分,得到所述待执行指令对应的微操作;执行模块,用于根据所述译码结果,执行所述微操作,得到所述待执行指令的执行结果。
根据本公开的第三方面,提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本公开所述的方法。
根据本公开的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述非瞬时计算机可读存储介质执行本公开所述的方法。
本公开的一种指令执行方法、装置、设备及存储介质,在对待执行指令进行译码时不对其拆分微操作,之后直接对待执行指令以宏操作的粒度进行寄存器重命名,然后在分派时再对寄存器重命名后的待执行指令拆分微操作,最后执行拆分得到的微操作。因此,本公开在对待执行指令进行译码和寄存器重命名时可以节约重命名资源和译码资源,从而增加指令分派和发射的宽度。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,其中:
在附图中,相同或对应的标号表示相同或对应的部分。
图1示出了本公开第一实施例的一种指令执行方法的流程示意图;
图2示出了本公开第二实施例的一种指令执行方法的流程示意图;
图3示出了本公开第五实施例的一种指令执行方法的流程示意图;
图4示出了本公开第八实施例的一种指令执行装置的结构示意图;
图5示出了本公开第九实施例的一种指令执行装置的结构示意图;
图6示出了本公开实施例一种电子设备的组成结构示意图。
具体实施方式
为使本公开的目的、特征、优点能够更加的明显和易懂,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而非全部实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
图1示出了本公开第一实施例的一种指令执行方法的流程示意图,如图1所示,该方法主要包括:
步骤S101,获取待执行指令。
在本实施例中,首先需要获取待执行指令,待执行指令可以从指令缓存(Cache)中获取。一条指令一般包括操作码和操作数,操作码表示该指令执行什么操作,操作数中的源操作数指出了指令执行时的数据来源,而目的操作数指出了指令执行结果的去向,与源操作数相关的寄存器称为源寄存器,与目的操作数相关的寄存器称为目的寄存器。待执行指令中包括待执行指令的源寄存器信息和目的寄存器信息。
步骤S102,对待执行指令进行译码,得到译码结果。
在本实施例中,获取到待执行指令之后,需要对待执行指令进行译码,解析出待执行指令包含的信息,得到译码结果,译码结果中一般包含待执行指令的操作码、源操作数、源寄存器和目的寄存器等。
现有技术在对待执行指令进行译码时会直接对待执行指令拆分微操作,然后分别对微操作进行译码,而本实施例在对待执行指令进行译码时,不对其拆分微操作,而直接对待执行指令进行译码,只占用一个译码通道,从而节约译码资源。
在一可实施方式中,可以由指令译码器对待执行指令进行译码,在对待执行指令进行译码时,通过对待执行指令进行分析,可以确定待执行指令的操作码以及待执行指令要完成的具体操作,这样就可以得到待执行指令的具体功能,也确定了待执行指令包含的微操作数和每个微操作对应的源寄存器和目的寄存器等,但此时并不将待执行指令拆分为微操作。
步骤S103,对待执行指令进行寄存器重命名。
在本实施例中,在对待执行指令进行译码之后,还需要对待执行指令进行寄存器重命名,由于在译码时并未对待执行指令拆分微操作,因此在对待执行指令进行寄存器重命名时,直接以宏操作的粒度对待执行指令进行寄存器重命名,从而节约重命名资源,其中,宏操作可以融合待执行指令的多条微操作。
对待执行指令进行寄存器重命名,就是将译码结果中的源寄存器和目的寄存器合理的映射为物理寄存器,通过对待执行指令进行寄存器重命名可以消除流水线中的名称依赖类型的数据冲突,避免待执行指令不必要的顺序化执行,提高指令并行度。
在一可实施方式中,可以采用以下几种方式实现寄存器重命名:使用重排序缓冲(ROB,Re-Order Buffer)、将体系结构寄存器堆(ARF,Architecture Register File)扩展成为物理寄存器堆(PRF,Physical Register File)和使用统一的PRF。
步骤S104,对进行寄存器重命名后的待执行指令进行拆分,得到待执行指令对应的微操作。
在本实施例中,可以根据待执行指令的格式,对进行寄存器重命名后的待执行指令进行拆分,得到待执行指令中的每个微操作及其对应的源寄存器和目的寄存器等。
在一可实施方式中,在对待执行指令进行寄存器重命名之后,并非需要立即对待执行指令进行拆分,而是可以等到需要对待执行指令分派时再拆分,因为在待执行指令的执行过程中,只有分派时才需要将待执行指令拆分为微操作,然后将微操作分派至对应的发射队列。
步骤S105,根据译码结果,执行微操作,得到待执行指令的执行结果。
在本实施例中,对待执行指令拆分得到微操作之后,就可以对微操作进行执行,从而得到待执行指令的执行结果。
在一可实施方式中,可以将发射队列中存储的微操作发射至对应的执行单元进行执行,并根据待执行指令自身的结构和功能,将所有微操作的执行结果进行结合,得到待执行指令的执行结果。
在本公开第一实施例中,在对待执行指令进行译码时,并不对其拆分微操作,之后直接将待执行指令以宏操作的粒度进行寄存器重命名,然后再对进行寄存器重命名后的待执行指令拆分微操作,并根据译码结果执行微操作,从而得到待执行指令的执行结果。本公开第一实施例对待执行指令以宏操作的粒度进行译码和寄存器重命名,可以节约重命名资源和译码资源,从而增加指令分派和发射的宽度。
图2示出了本公开第二实施例的一种指令执行方法的流程示意图,如图2所示,步骤S102主要包括:
步骤S201,为待执行指令的每个微操作分配对应的源寄存器通道和目的寄存器通道,得到分配结果。
步骤S202,根据分配结果,对待执行指令进行译码,得到译码结果。
在本实施例中,对待执行指令进行译码时,为了以宏操作的粒度对待执行指令进行译码,即只利用一个译码通道对待执行指令进行译码,需要为待执行指令的每个微操作分配对应的源寄存器通道和目的寄存器通道,然后再对待执行指令进行译码,从而得到译码结果。
在一可实施方式中,若每个译码通道包含三个源寄存器通道和两个目的寄存器通道,而在精简指令集中,绝大部分执行只包含三个寄存器,例如两个源寄存器和一个目的寄存器,或者三个源寄存器。在这种情况下,若如现有技术将待执行指令拆分为两个或多个微操作,并利用两个或多个译码通道进行译码,就会造成译码资源的浪费;因此,在译码时可以不对待执行指令拆分微操作,而是为待执行指令的每个微操作分配同一个译码通道的源寄存器通道和目的寄存器通道,这样只需要一个宏操作就可以携带待执行指令的全部信息,然后利用一个译码通道对待执行指令进行译码,从而节约译码资源。例如:STR指令为字数据存储指令(Store Register),用于从源寄存器中将一个32位的字数据传送到存储器中,以STR指令执行为例,若每个译码通道包含三个源寄存器通道和两个目的寄存器通道,分别为源寄存器0通道、源寄存器1通道和源寄存器2通道、以及目的寄存器1通道和目的寄存器2通道,STR指令的两个微操作STR_uop0和STR_uop1,其中,STR_uop0去往访存单元进行地址计算,只占用源寄存器0通道和源寄存器1通道,源寄存器2通道实际上没有用到,STR_uop1去往整数计算单元进行数据读取,只占用源寄存器0通道,源寄存器1通道和源寄存器2通道也没有用到,这样就造成了译码资源的浪费。本公开的实施例提出,在译码阶段并不将STR进行拆分,只需要将STR_uop1的源寄存器0通道放到STR_uop0的源寄存器2通道,即在一个译码通道的源寄存器0通道、源寄存器1通道和源寄存器2通道中,STR_uop0占用源寄存器0通道和源寄存器1通道,STR_uop1占用源寄存器2通道,这样只需要一个译码通道就可以对STR指令进行译码,且该译码通道的所有源寄存器通道都被占用,不会造成译码资源的浪费。
在本公开第二实施例中,为待执行指令的每个微操作分配对应的源寄存器通道和目的寄存器通道,得到分配结果,然后根据分配结果,对待执行指令进行译码,得到译码结果,这样可以利用一个译码通道对待执行指令进行译码,从而节约译码资源。
在本公开第三实施例中,译码结果包括待执行指令的源寄存器和目的寄存器,步骤S103主要包括:根据重命名映射表,查找与源寄存器对应的物理寄存器;以及为目的寄存器分配空闲状态的物理寄存器。
在本实施例中,译码结果中包括待执行指令的源寄存器和目的寄存器,在对待执行指令以宏操作的粒度进行寄存器重命名时,对源寄存器和目的寄存器都要进行重命名。对于源寄存器来说,重命名映射表中已经保存了源寄存器对应的物理寄存器,因此直接在重命名映射表中查找与源寄存器对应的物理寄存器的编号即可;对于目的寄存器来说,则需要为目的寄存器指定一个空闲状态的物理寄存器。
在一可实施方式中,重命名映射表(RAT,Register Alias Table)用于保存源寄存器和目的寄存器与物理寄存器之间的映射关系,在对目的寄存器指定一个空闲状态的物理寄存器之后,需要将该目的寄存器与物理寄存器对应保存在重命名映射表中,而对源寄存器进行命名时,可以直接从重命名映射表中查找与该源寄存器对应的物理寄存器。
在一可实施方式中,空闲列表(FreeList)中会存储有空闲的物理寄存器,在为目的寄存器分配物理寄存器时,可以从空闲列表中读取空闲的物理寄存器。
在本公开第三实施例中,对待执行指令以宏操作的粒度进行寄存器重命名,可以消除名称依赖类型的数据冲突,避免待执行指令不必要的顺序化执行,提高指令并行度,另外可以节约重命名资源。
在本公开第四实施例中,步骤S104具体包括:根据待执行指令的格式,对进行寄存器重命名后的待执行指令进行拆分,得到待执行指令对应的微操作。
在本实施例中,每一种指令格式都预设有对应的指令拆分方式,因此可以根据待执行指令的格式确定其拆分方式,然后根据拆分方式对进行寄存器重命名后的待执行指令进行拆分,从而得到待执行指令对应的微操作。
在一可实施方式中,因为STR指令用于从源寄存器中将一个32位的字数据传送到存储器中,因此其可以拆分为两个微操作STR_uop0和STR_uop1,其中,STR_uop0为加法指令,用于去往访存单元进行地址计算,STR_uop1为字数据传送指令,用于去往整数计算单元进行数据读取,并将读取到的数据写回到访存单元进行地址计算的地址。
在本公开第四实施例中,将待执行指令拆分为对应的微操作,方便后续分别对微操作进行执行,从而提高数据处理的效率。
图3示出了本公开第五实施例的一种指令执行方法的流程示意图,如图3所示,步骤S105主要包括:
步骤S301,根据分配结果,分别将微操作保存在对应的发射队列。
步骤S302,在微操作准备就绪时,根据译码结果,将微操作从对应的发射队列中发射并执行,得到执行结果。
在本实施例中,因为在同一个译码通道中为待执行指令中的每个微操作分配了对应的源寄存器通道和目的寄存器通道,因此在将待执行指令拆分为微操作之后,对拆分得到的微操作进行分派的时候,需要根据分配结果,将该微操作对应的源寄存器通道和目的寄存器通道告诉对应的发射队列,即根据分配结果,分别将微操作保存在对应的发射队列,保证该发射队列可以得到准确的源操作数和目的操作数,在微操作准备就绪时,例如微操作的源操作数或目标操作数准备就绪时,根据译码结果,将微操作从对应的发射队列中发射并执行,得到执行结果。
在一可实施方式中,仍然以一条STR指令为例,若之前已经为STR指令的微操作分配了对应的源寄存器通道,即在一个译码通道的源寄存器0通道、源寄存器1通道和源寄存器2通道中,STR_uop0占用源寄存器0通道和源寄存器1通道,STR_uop1占用源寄存器2通道;此时将STR_uop0和STR_uop1分别分派至访存发射队列和整数发射队列,访存发射队列知道STR_uop0对应源寄存器0通道和源寄存器1通道,而整数发射队列不知道STR_uop1对应源寄存器2通道,因此需要根据分配结果,告诉整数发射队列STR_uop1对应源寄存器2通道,这样在对STR_uop0和STR_uop1进行执行时,才可以获取到准确的源操作数。
在一可实施方式中,因为译码结果中包括待执行指令是否需要进行拆分、待执行指令包含的微操作码、微操作数、每个微操作对应的源寄存器和目的寄存器等信息,因此可以根据译码结果,将微操作从对应的发射队列中发射并执行,得到执行结果。
在本公开第五实施例中,根据分配结果,分别将微操作保存在对应的发射队列,然后在微操作准备就绪时,根据译码结果,将微操作从对应的发射队列中发射并执行,得到执行结果,即对待执行指令拆分得到的微操作进行准确的分派,然后对微操作进行发射并执行,这样可以保证微操作在执行时可以获取到准确的源操作数和目的操作数。
在本公开第六实施例中,在根据分配结果,分别将微操作保存在对应的发射队列之后,方法还包括:在重排序缓冲中为微操作分配对应的微操作状态位,微操作状态位用于跟踪微操作的提交状态。
在本实施例中,因为对待执行指令的寄存器重命名操作是以宏操作粒度进行的,所以重排序缓冲中只维护该宏操作的顺序,这样可以增加重排序缓冲的存储密度,因此还要在重排序缓冲里面为每个微操作分配对应的微操作状态位,用于跟踪微操作的提交状态,只有所有微操作都达到提交状态,该宏操作才能达到提交状态。
在一可实施方式中,拆分后的微操作可以乱序执行,但必须顺序提交,因此设置重排序缓冲来实现微操作的顺序提交,在重排序缓冲中为微操作分配的微操作状态位可以用于跟踪已发射的微操作,并记录微操作是否执行完毕、是否异常等信息,并顺序提交执行完毕的指令。
在一可实施方式中,可以根据待执行指令拆分得到的微操作的个数,在重排序缓冲中为微操作分配对应的微操作状态位,例如,STR指令拆分后会得到两个微操作,因此可以在重排序缓冲中分配一个2比特(bit)的微操作状态位,用于跟踪这两个微操作的提交状态。
在本公开第六实施例中,在重排序缓冲中为微操作分配对应的微操作状态位,可以跟踪微操作的提交状态,保证微操作的顺序提交。
在本公开第七实施例中,在将微操作从对应的发射队列中发射并执行,得到执行结果之后,还包括:
待执行指令在执行过程中未发生异常且未被其他指令清空,则提交待执行指令并在重排序缓冲中释放微操作状态位。
在本实施例中,在将微操作从对应的发射队列中发射并执行,得到执行结果之后,若待执行指令在执行过程中未发生异常且未被其他指令清空,则提交待执行指令并在重排序缓冲中释放微操作状态位,释放微操作状态位可以保证重排序缓冲资源的利用率。
本公开第七实施例,在待执行指令执行成功后,提交待执行指令并在重排序缓冲中释放待执行指令对应的微操作状态位,可以保证重排序缓冲资源的利用率。
下面以一条STR指令的执行过程,对本发明实施例提供的一种指令执行方法进行进一步说明。
对STR指令的执行步骤如下:
取指:从指令Cache中取出一条STR指令,将其发给译码单元;
译码:每个译码通道包含三个源寄存器和两个目的寄存器,STR指令按照现有的处理器的处理方式是拆成两个微操作,分别为STR_uop0、STR_uop1,STR_uop0去往访存单元进行地址计算,只占用源寄存器0通道和源寄存器1通道,源寄存器2通道实际上没有用到;STR_uop1去往整数计算单元进行数据读取,只占用源寄存器0通道,源寄存器1通道和源寄存器2通道也没有用到,这样实际上会造成译码资源的浪费。本公开的实施例提出,在译码阶段并不将STR进行拆分,只需要将STR_uop1的源寄存器0通道放到STR_uop0的源寄存器2通道,即在一个译码通道的源寄存器0通道、源寄存器1通道和源寄存器2通道中,STR_uop0占用源寄存器0通道和源寄存器1通道,STR_uop1占用源寄存器2通道,这样只需要一个译码通道就可以对STR指令进行译码,即只需要一个宏操作就可以携带该条指令的全部信息,可以将该宏操作命名为:STR_mop。
重命名:STR_mop将以宏操作的粒度进行寄存器重命名。
分派:此时再将宏操作STR_mop拆分为两个微操作,分别为STR_disp_uop0和STR_disp_uop1,STR_disp_uop0去往访存发射队列,STR_disp_uop1去往整数发射队列,此时只需要告诉整数发射队列STR_disp_uop1与STR_mop的源寄存器2通道对应。同时由于寄存器重命名是以宏操作粒度进行的,为了保证STR_disp_uop0和STR_disp_uop1这两个微操作可以顺序提交,并跟踪这两个微操作的状态,在分派时还需要分配重排序缓冲,即STR_mop需要在重排序缓冲中分配一个2bit的微操作状态位,用于跟踪这两个微操作的提交状态。
执行:STR_disp_uop0在访存发射队列中是最老的并且源操作数都已经准备就绪时,将发射到访存单元进行地址计算,然后等待STR_disp_uop1在整数计算单元读取到数据,并且将该数据写回到访存单元进行地址计算的地址。
提交:如果宏操作STR_mop在执行过程中不会发生异常并且也不会被其它指令清空,那么该STR指令就可以提交并且释放重排序缓冲资源,即该指令对应的微操作状态位。
图4示出了本公开第八实施例的一种指令执行装置的结构示意图,如图4所示,该装置主要包括:
获取模块40,用于获取待执行指令;译码模块41,用于对待执行指令进行译码,得到译码结果;重命名模块42,用于对待执行指令进行寄存器重命名;拆分模块43,用于对进行寄存器重命名后的待执行指令进行拆分,得到待执行指令对应的微操作;执行模块44,用于根据译码结果,执行微操作,得到待执行指令的执行结果。
在一可实施方式中,译码模块41主要包括:分配子模块,用于为待执行指令的每个微操作分配对应的源寄存器通道和目的寄存器通道,得到分配结果;译码子模块,用于根据分配结果,对待执行指令进行译码,得到译码结果。
在一可实施方式中,重命名模块42主要包括:第一重命名子模块,用于根据重命名映射表,查找与源寄存器对应的物理寄存器;以及第二重命名子模块,用于为目的寄存器分配空闲状态的物理寄存器。
在一可实施方式中,拆分模块43具体用于根据待执行指令的格式,对进行寄存器重命名后的待执行指令进行拆分,得到待执行指令对应的微操作。
在一可实施方式中,执行模块44主要包括:保存子模块,用于根据分配结果,分别将微操作保存在对应的发射队列;执行子模块,用于在微操作准备就绪时,根据译码结果,将微操作从对应的发射队列中发射并执行,得到执行结果。
图5示出了本公开第九实施例的一种指令执行装置的结构示意图,如图5所示,该装置还包括:
分配模块45,用于在重排序缓冲中为微操作分配对应的微操作状态位,微操作状态位用于跟踪微操作的提交状态;提交模块46,用于待执行指令在执行过程中未发生异常且未被其他指令清空,则提交待执行指令并在重排序缓冲中释放微操作状态位。
根据本公开的实施例,本公开还提供了一种电子设备和一种可读存储介质。
图6示出了可以用来实施本公开的实施例的示例电子设备600的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图6所示,设备600包括计算单元601,其可以根据存储在只读存储器(ROM)602中的计算机程序或者从存储单元608加载到随机访问存储器(RAM)603中的计算机程序,来执行各种适当的动作和处理。在RAM603中,还可存储设备600操作所需的各种程序和数据。计算单元601、ROM602以及RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
设备600中的多个部件连接至I/O接口605,包括:输入单元606,例如键盘、鼠标等;输出单元607,例如各种类型的显示器、扬声器等;存储单元608,例如磁盘、光盘等;以及通信单元609,例如网卡、调制解调器、无线通信收发机等。通信单元609允许设备600通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元601可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元601的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元601执行上文所描述的各个方法和处理,例如一种指令执行方法。例如,在一些实施例中,一种指令执行方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元608。在一些实施例中,计算机程序的部分或者全部可以经由ROM602和/或通信单元609而被载入和/或安装到设备600上。当计算机程序加载到RAM603并由计算单元601执行时,可以执行上文描述的一种指令执行方法的一个或多个步骤。备选地,在其他实施例中,计算单元601可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行一种指令执行方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本公开的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种指令执行方法,其特征在于,所述方法包括:
获取待执行指令;
对所述待执行指令进行译码,得到译码结果;
对所述待执行指令进行寄存器重命名;
对进行寄存器重命名后的待执行指令进行拆分,得到所述待执行指令对应的微操作;
根据所述译码结果,执行所述微操作,得到所述待执行指令的执行结果。
2.根据权利要求1所述的方法,其特征在于,所述对所述待执行指令进行译码,得到译码结果,包括:
为所述待执行指令的每个微操作分配对应的源寄存器通道和目的寄存器通道,得到分配结果;
根据所述分配结果,对所述待执行指令进行译码,得到译码结果。
3.根据权利要求1所述的方法,其特征在于,所述译码结果包括所述待执行指令的源寄存器和目的寄存器;
所述对所述待执行指令进行寄存器重命名,包括:
根据重命名映射表,查找与所述源寄存器对应的物理寄存器;以及
为所述目的寄存器分配空闲状态的物理寄存器。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述对进行寄存器重命名后的待执行指令进行拆分,得到所述待执行指令对应的微操作,包括:
根据所述待执行指令的格式,对进行寄存器重命名后的待执行指令进行拆分,得到所述待执行指令对应的微操作。
5.根据权利要求2所述的方法,其特征在于,所述根据所述译码结果,执行所述微操作,得到所述待执行指令的执行结果,包括:
根据所述分配结果,分别将所述微操作保存在对应的发射队列;
在所述微操作准备就绪时,根据所述译码结果,将所述微操作从对应的发射队列中发射并执行,得到所述执行结果。
6.根据权利要求5所述的方法,其特征在于,在根据所述分配结果,分别将所述微操作保存在对应的发射队列之后,所述方法还包括:
在重排序缓冲中为所述微操作分配对应的微操作状态位,所述微操作状态位用于跟踪所述微操作的提交状态。
7.根据权利要求6所述的方法,其特征在于,在所述将所述微操作从对应的发射队列中发射并执行,得到所述执行结果之后,还包括:
所述待执行指令在执行过程中未发生异常且未被其他指令清空,则提交所述待执行指令并在重排序缓冲中释放所述微操作状态位。
8.一种指令执行装置,其特征在于,所述装置包括:
获取模块,用于获取待执行指令;
译码模块,用于对所述待执行指令进行译码,得到译码结果;
重命名模块,用于对所述待执行指令进行寄存器重命名;
拆分模块,用于对进行寄存器重命名后的待执行指令进行拆分,得到所述待执行指令对应的微操作;
执行模块,用于根据所述译码结果,执行所述微操作,得到所述待执行指令的执行结果。
9.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的方法。
10.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述非瞬时计算机可读存储介质执行根据权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210577913.4A CN114675890B (zh) | 2022-05-26 | 2022-05-26 | 一种指令执行方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210577913.4A CN114675890B (zh) | 2022-05-26 | 2022-05-26 | 一种指令执行方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114675890A true CN114675890A (zh) | 2022-06-28 |
CN114675890B CN114675890B (zh) | 2022-09-23 |
Family
ID=82079218
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210577913.4A Active CN114675890B (zh) | 2022-05-26 | 2022-05-26 | 一种指令执行方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114675890B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116610362A (zh) * | 2023-04-27 | 2023-08-18 | 合芯科技(苏州)有限公司 | 一种处理器指令集译码方法、系统、设备和存储介质 |
CN117931293A (zh) * | 2024-03-22 | 2024-04-26 | 芯来智融半导体科技(上海)有限公司 | 指令处理方法、装置、设备及存储介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5721855A (en) * | 1994-03-01 | 1998-02-24 | Intel Corporation | Method for pipeline processing of instructions by controlling access to a reorder buffer using a register file outside the reorder buffer |
US5870596A (en) * | 1991-01-21 | 1999-02-09 | Mitsubishi Denki Kabushiki Kaisha | Data processor allowing multifunctional instruction execution |
CN101169710A (zh) * | 2006-10-26 | 2008-04-30 | 中国科学院计算技术研究所 | 对状态寄存器进行重命名的方法和使用该方法的处理器 |
US20090254735A1 (en) * | 2008-04-03 | 2009-10-08 | Via Technologies, Inc. | Merge microinstruction for minimizing source dependencies in out-of-order execution microprocessor with variable data size macroarchitecture |
CN102073478A (zh) * | 2006-09-22 | 2011-05-25 | 英特尔公司 | 用于处理文本串的指令和逻辑 |
CN102385504A (zh) * | 2010-08-27 | 2012-03-21 | 艾色拉公司 | 改进的处理器架构 |
US20180095752A1 (en) * | 2016-09-30 | 2018-04-05 | Arm Limited | Instruction predecoding |
CN110515656A (zh) * | 2019-08-28 | 2019-11-29 | 中国人民解放军国防科技大学 | 一种casp指令的执行方法、微处理器及计算机设备 |
CN110928577A (zh) * | 2019-11-14 | 2020-03-27 | 中国人民解放军国防科技大学 | 一种带异常返回的向量存储指令的执行方法 |
CN111443948A (zh) * | 2020-03-30 | 2020-07-24 | 龙芯中科技术有限公司 | 指令执行方法、处理器和电子设备 |
CN112486312A (zh) * | 2020-11-19 | 2021-03-12 | 杭州电子科技大学 | 一种低功耗的处理器 |
-
2022
- 2022-05-26 CN CN202210577913.4A patent/CN114675890B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5870596A (en) * | 1991-01-21 | 1999-02-09 | Mitsubishi Denki Kabushiki Kaisha | Data processor allowing multifunctional instruction execution |
US5721855A (en) * | 1994-03-01 | 1998-02-24 | Intel Corporation | Method for pipeline processing of instructions by controlling access to a reorder buffer using a register file outside the reorder buffer |
CN102073478A (zh) * | 2006-09-22 | 2011-05-25 | 英特尔公司 | 用于处理文本串的指令和逻辑 |
CN101169710A (zh) * | 2006-10-26 | 2008-04-30 | 中国科学院计算技术研究所 | 对状态寄存器进行重命名的方法和使用该方法的处理器 |
US20090254735A1 (en) * | 2008-04-03 | 2009-10-08 | Via Technologies, Inc. | Merge microinstruction for minimizing source dependencies in out-of-order execution microprocessor with variable data size macroarchitecture |
CN102385504A (zh) * | 2010-08-27 | 2012-03-21 | 艾色拉公司 | 改进的处理器架构 |
US20180095752A1 (en) * | 2016-09-30 | 2018-04-05 | Arm Limited | Instruction predecoding |
CN110515656A (zh) * | 2019-08-28 | 2019-11-29 | 中国人民解放军国防科技大学 | 一种casp指令的执行方法、微处理器及计算机设备 |
CN110928577A (zh) * | 2019-11-14 | 2020-03-27 | 中国人民解放军国防科技大学 | 一种带异常返回的向量存储指令的执行方法 |
CN111443948A (zh) * | 2020-03-30 | 2020-07-24 | 龙芯中科技术有限公司 | 指令执行方法、处理器和电子设备 |
CN112486312A (zh) * | 2020-11-19 | 2021-03-12 | 杭州电子科技大学 | 一种低功耗的处理器 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116610362A (zh) * | 2023-04-27 | 2023-08-18 | 合芯科技(苏州)有限公司 | 一种处理器指令集译码方法、系统、设备和存储介质 |
CN116610362B (zh) * | 2023-04-27 | 2024-02-23 | 合芯科技(苏州)有限公司 | 一种处理器指令集译码方法、系统、设备和存储介质 |
CN117931293A (zh) * | 2024-03-22 | 2024-04-26 | 芯来智融半导体科技(上海)有限公司 | 指令处理方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114675890B (zh) | 2022-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114675890B (zh) | 一种指令执行方法、装置、设备及存储介质 | |
JP5474176B2 (ja) | 依存行列を用いる割り当て解除されたロード命令の追跡 | |
US20120060016A1 (en) | Vector Loads from Scattered Memory Locations | |
CN108431771B (zh) | 融合乘加(fma)低功能单元 | |
US9274829B2 (en) | Handling interrupt actions for inter-thread communication | |
CN107567614B (zh) | 用于对根据关键度被分组的指令的缕程的执行的多核处理器 | |
CN114968373A (zh) | 指令分派方法、装置、电子设备及计算机可读存储介质 | |
US10282207B2 (en) | Multi-slice processor issue of a dependent instruction in an issue queue based on issue of a producer instruction | |
CN114579312A (zh) | 一种指令处理方法、处理器、芯片和电子设备 | |
US8037366B2 (en) | Issuing instructions in-order in an out-of-order processor using false dependencies | |
KR20230023710A (ko) | 명령어 재실행을 감소시키기 위한, 프로세서의 위험에 응답한 명령어 파이프라인 플러시 후 실행되고 플러시된 명령어의 재사용 | |
US10365928B2 (en) | Suppress unnecessary mapping for scratch register | |
CN114780148B (zh) | 一种系统寄存器访问指令的执行方法、装置及电子设备 | |
US11995445B2 (en) | Assignment of microprocessor register tags at issue time | |
WO2024087039A1 (zh) | 一种块指令的处理方法和块指令处理器 | |
US20230077629A1 (en) | Assignment of microprocessor register tags at issue time | |
CN116991593B (zh) | 操作指令处理方法、装置、设备及存储介质 | |
CN116107927A (zh) | 数据处理装置、数据处理方法和电子设备 | |
CN117762494A (zh) | 数据处理器、条件指令的处理方法、电子设备和存储介质 | |
CN117093266A (zh) | 指令处理装置、方法、电子设备和存储介质 | |
CN115098167A (zh) | 指令执行方法及装置 | |
CN117348934A (zh) | 数据缓存方法及数据缓存装置、处理器 | |
US9971687B2 (en) | Operation of a multi-slice processor with history buffers storing transaction memory state information | |
CN114995884A (zh) | 指令退休单元、指令执行单元及相关装置和方法 | |
CN114625422A (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 |