CN113110879B - 指令处理方法及装置 - Google Patents

指令处理方法及装置 Download PDF

Info

Publication number
CN113110879B
CN113110879B CN202110414196.9A CN202110414196A CN113110879B CN 113110879 B CN113110879 B CN 113110879B CN 202110414196 A CN202110414196 A CN 202110414196A CN 113110879 B CN113110879 B CN 113110879B
Authority
CN
China
Prior art keywords
instruction
pipeline
stage
instructions
target
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
Application number
CN202110414196.9A
Other languages
English (en)
Other versions
CN113110879A (zh
Inventor
田昱
王磊
胡金龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Sylincom Technology Co ltd
Original Assignee
Beijing Sylincom Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Sylincom Technology Co ltd filed Critical Beijing Sylincom Technology Co ltd
Publication of CN113110879A publication Critical patent/CN113110879A/zh
Application granted granted Critical
Publication of CN113110879B publication Critical patent/CN113110879B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Devices For Executing Special Programs (AREA)

Abstract

本申请公开了一种指令处理方法及装置。该方法包括:在流水线的译码级对程序中的转移指令进行译码时,确定转移指令对应的延迟槽的数量;在流水线的执行级对转移指令进行执行时,确定对应数量的延迟槽在流水线中占据的目标流水级,并冲刷目标流水级之后的流水级中的指令;在执行完毕转移指令之后,转移至目标地址;在目标地址获取第二指令的过程中,在执行级中依次对第一指令进行执行,以对执行第二指令之前空余的流水级进行利用。通过本申请,解决了相关技术中在处理器的工作过程中,难以充分利用流水线的流水级,导致处理器的资源浪费的问题。

Description

指令处理方法及装置
技术领域
本申请涉及处理器技术领域,具体而言,涉及一种指令处理方法及装置。
背景技术
在包含流水线的处理器的工作过程中,当分支跳转类指令执行后,常会导致分支/跳转指令后多级流水级冲刷,导致分支/跳转指令后存在多个bubble,浪费处理器的资源。
为了解决处理器的资源浪费问题,相关技术中在分支跳转指令后设置1级或2级固定长度延迟槽,但是,随着处理器工作频率提高,内核流水级数不断增加,1级或2级固定长度延迟槽已经无法解决处理器流水级浪费的问题。
此外,相关技术中还采用分支预取缓存的方式预测分支/跳转的目标,以提高处理器利用效率,但是,这种方法并不能保证每次都准确预测,若预测失败会导致流水级的浪费,也即,依然存在处理器的资源浪费问题。
针对相关技术中在处理器的工作过程中,难以充分利用流水线的流水级,导致处理器的资源浪费的问题,目前尚未提出有效的解决方案。
发明内容
本申请提供一种指令处理方法及装置,以解决相关技术中在处理器的工作过程中,难以充分利用流水线的流水级,导致处理器的资源浪费的问题。
根据本申请的一个方面,提供了一种指令处理方法。该方法包括:在流水线的译码级对程序中的转移指令进行译码时,确定转移指令对应的延迟槽的数量,其中,流水线中包括用于对指令执行不同处理的多个流水级,延迟槽的数量由被调度至流水线的第一指令的数量确定;在流水线的执行级对转移指令进行执行时,确定对应数量的延迟槽在流水线中占据的目标流水级,并冲刷目标流水级之后的流水级中的指令,其中,每个延迟槽分别占据执行级之后的一个流水级;在执行完毕转移指令之后,转移至目标地址,其中,目标地址为转移指令所指示的转移地址;在目标地址获取第二指令的过程中,在执行级中依次对第一指令进行执行,以对执行第二指令之前空余的流水级进行利用。
可选地,在流水线的译码级对程序中的转移指令进行译码时,确定转移指令对应的延迟槽的数量包括:在对转移指令进行译码时,从转移指令的指令编码结构中读取延迟槽的数量,其中,延迟槽的数量由编译器设置于转移指令的指令编码结构中。
可选地,转移指令的指令编码结构包括:第一区域,用于存储转移指令中的操作数;第二区域,用于存储转移指令的编码;第三区域,用于存储延迟槽的数量;第四区域,用于存储指令级并行数量。
可选地,在在流水线的译码级对程序中的转移指令进行译码时,确定转移指令对应的延迟槽的数量之前,该方法还包括:在转移指令的编码阶段,确定被调度至流水线的第一指令的数量,其中,第一指令的数量小于等于目标数量,目标数量为执行级之前的流水级的数量与获取第二指令的过程所占据的流水级的数量之和;将第一指令的数量确定为转移指令对应的延迟槽的数量,并通过编译器将延迟槽的数量填入转移指令的指令编码结构的第三区域。
可选地,在流水线的执行级对转移指令进行执行时,确定对应数量的延迟槽在流水线中占据的目标流水级,并冲刷目标流水级之后的流水级中的指令包括:将数量与目标数量进行对比,其中,目标数量为执行级之前的流水级的数量与获取第二指令的过程所对应的流水级的数量之和;在延迟槽的数量小于目标数量的情况下,执行冲刷目标流水级之后的流水级中的指令的步骤;在延迟槽的数量大于等于目标数量的情况下,不执行冲刷目标流水级之后的流水级中的指令的操作。
可选地,在目标地址获取第二指令的过程中,在执行级中依次对第一指令进行执行,以对执行第二指令之前空余的流水级进行利用之后,该方法还包括:在执行完毕第一指令之后,在执行级中执行第二指令,以完成程序中的转移指令所指示的转移操作。
根据本申请的另一方面,提供了一种指令处理装置。该装置包括:第一确定单元,用于在流水线的译码级对程序中的转移指令进行译码时,确定转移指令对应的延迟槽的数量,其中,流水线中包括用于对指令执行不同处理的多个流水级,延迟槽的数量由被调度至流水线的第一指令的数量确定;第二确定单元,用于在流水线的执行级对转移指令进行执行时,确定对应数量的延迟槽在流水线中占据的目标流水级,并冲刷目标流水级之后的流水级中的指令,其中,每个延迟槽分别占据执行级之后的一个流水级;转移单元,用于在执行完毕转移指令之后,转移至目标地址,其中,目标地址为转移指令所指示的转移地址;第一执行单元,用于在目标地址获取第二指令的过程中,在执行级中依次对第一指令进行执行,以对执行第二指令之前空余的流水级进行利用。
可选地,第一确定单元包括:读取模块,用于在对转移指令进行译码时,从转移指令的指令编码结构中读取延迟槽的数量,其中,延迟槽的数量由编译器设置于转移指令的指令编码结构中。
根据本发明实施例的另一方面,还提供了一种非易失性存储介质,非易失性存储介质包括存储的程序,其中,程序运行时控制非易失性存储介质所在的设备执行一种指令处理方法。
根据本发明实施例的另一方面,还提供了一种电子装置,包含处理器和存储器;存储器中存储有计算机可读指令,处理器用于运行计算机可读指令,其中,计算机可读指令运行时执行一种指令处理方法。
通过本申请,采用以下步骤:在流水线的译码级对程序中的转移指令进行译码时,确定转移指令对应的延迟槽的数量,其中,流水线中包括用于对指令执行不同处理的多个流水级,延迟槽的数量由被调度至流水线的第一指令的数量确定;在流水线的执行级对转移指令进行执行时,确定对应数量的延迟槽在流水线中占据的目标流水级,并冲刷目标流水级之后的流水级中的指令,其中,每个延迟槽分别占据执行级之后的一个流水级;在执行完毕转移指令之后,转移至目标地址,其中,目标地址为转移指令所指示的转移地址;在目标地址获取第二指令的过程中,在执行级中依次对第一指令进行执行,以对执行第二指令之前空余的流水级进行利用,解决了相关技术中在处理器的工作过程中,难以充分利用流水线的流水级,导致处理器的资源浪费的问题。进而达到了充分利用流水线的流水级、减少处理器的资源浪费的效果。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例提供的指令处理方法的流程图;
图2是根据本申请实施例提供的转移指令的指令结构编码示意图;
图3是根据本申请实施例提供的流水级冲刷装置的示意图;
图4是根据本申请实施例提供的可选的指令处理方法的示意图;以及
图5是根据本申请实施例提供的指令处理装置的示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了便于描述,以下对本申请实施例涉及的部分名词或术语进行说明:
流水线处理模式:在硬件条件有空闲的前提下,通过划分工作步骤,让硬件处于填满状态,从而提升工作效率的一种工作模式。
延迟槽:流水线中,转移指令执行时因为确定下一条指令的目标地址(紧随其后or跳转目标处)一般要到第2级以后,在目标确定前流水线的取指级是不能工作的,即整个流水线浪费了一个时间片,为了利用这个时间片,在体系结构的层面上规定跳转指令后面的一个时间片为延迟槽。
转移指令:是指不按程序的语句流执行的指令,如跳转指令、分支指令等。
根据本申请的实施例,提供了一种指令处理方法。
图1是根据本申请实施例的指令处理方法的流程图。如图1所示,该方法包括以下步骤:
步骤S102,在流水线的译码级对程序中的转移指令进行译码时,确定转移指令对应的延迟槽的数量,其中,流水线中包括用于对指令执行不同处理的多个流水级,延迟槽的数量由被调度至流水线的第一指令的数量确定。
具体地,在编码阶段对程序进行编码后,在执行阶段通过流水线对程序中的指令进行执行。
其中,流水线的每个周期中包括多个流水级,具体地,可以包括取指级、缓存级、派发级、译码级、取数级、执行级(可以包括多级执行级,例如,包括两级执行级:执行一级和执行二级)、访存级以及写回级,在流水线的各个流水级中依次对指令进行处理,从而完成程序中的指令的执行。
需要说明的是,本实施例中通过能够被调度至流水线的第一指令的数量确定转移指令对应的延迟槽的数量,并在译码级读取转移指令的编码结构,确定延迟槽的数量,从而在转移指令执行完毕并转移之后,执行被调度至流水线的第一指令,避免流水级的浪费。
本实施例将转移指令对应的延迟槽的数量存储在转移指令的编码结构中,可选地,在本申请实施例提供的指令处理方法中,在流水线的译码级对程序中的转移指令进行译码时,确定转移指令对应的延迟槽的数量包括:在对转移指令进行译码时,从转移指令的指令编码结构中读取延迟槽的数量,其中,延迟槽的数量由编译器设置于转移指令的指令编码结构中。
需要说明的是,在编译级对转移指令进行译码时,可以确定转移指令的编码结构中存储的数据,本实施在转移指令的编码结构中的指定区域存储有转移指令对应的延迟槽的数量,在对转移指令进行译码时可以确定延迟槽的数量。
本实施例在转移指令的编码结构中增加了用于存储延迟槽的数量的区域,可选地,在本申请实施例提供的指令处理方法中,转移指令的指令编码结构包括:第一区域,用于存储转移指令中的操作数;第二区域,用于存储转移指令的编码;第三区域,用于存储延迟槽的数量;第四区域,用于存储指令级并行数量。
在一种可选的实施方式中,如图2所示,为本实施例的转移指令的编码结构,转移指令的编码结构的存储空间的大小为32bit,其中,第一区域(other域)对应的地址为bit[31:9],用于存储转移指令中的操作数,第二区域(inst number域)对应的短地址为bit[8:4],用于存储转移指令的编码,第三区域(latency域)对应的地址为bit[3:1],用于存储转移指令的延迟槽的数量,第四区域(vlim域)对应的地址为bit[0],用于存储指令级并行数量。
在对程序进行编码的阶段,将延迟槽的数量写入转移指令的编码结构中,可选地,在本申请实施例提供的指令处理方法中,在在流水线的译码级对程序中的转移指令进行译码时,确定转移指令对应的延迟槽的数量之前,该方法还包括:在转移指令的编码阶段,确定被调度至流水线的第一指令的数量,其中,第一指令的数量小于等于目标数量,目标数量为执行级之前的流水级的数量与获取第二指令的过程所占据的流水级的数量之和;将第一指令的数量确定为转移指令对应的延迟槽的数量,并通过编译器将延迟槽的数量填入转移指令的指令编码结构的第三区域。
具体地,第一区域、第二区域以及第四区域中的数据,在转移指令写好时即确定了,而第三区域中的延迟槽的数量,是在编码阶段根据能够被调度至流水级的第一指令的数量确定的,并在该数量确定之后,由编译器数目填写至第三区域。
需要说明的是,为了避免影响转移指令所指示的第二执行的执行,指令延迟槽的数量需要受到数量限制,可选的,在流水线中包含取指级、缓存级、派发级、译码级、取数级、执行级、访存级以及写回级等流水级的情况下,执行级之前的流水级的数量为5,若获取第二指令的过程所占据的流水级的数量为2,则指令延迟槽的数量需要小于7,也即,若能够调度至流水线的第一指令的数量小于等于7,则将第一指令的数量确定为延迟槽的数量,若能够调度至流水线的第一指令的数量大于7,则将7确定为延迟槽的数量。
步骤S104,在流水线的执行级对转移指令进行执行时,确定对应数量的延迟槽在流水线中占据的目标流水级,并冲刷目标流水级之后的流水级中的指令,其中,每个延迟槽分别占据执行级之后的一个流水级。
需要说明的是,转移指令的每个延迟槽分别占据转移指令所在流水级之后的流水级,在执行级对转移指令进行执行时,每个延迟槽分别占据执行级之后的一个流水级。
因而,在执行完毕转移指令之后,依次执行延迟槽中的第一指令,为了避免在执行完毕所有延迟槽中的第一指令后,转移指令对应的第二指令还未到执行级,会顺序执行缓存中缓存的其他指令,则会导致程序执行错误,需要将延迟槽在流水线中占据的目标流水级中的执行冲刷掉。
冲刷的流水级的情况根据延迟槽的数量的不同而存在差异,可选地,在本申请实施例提供的指令处理方法中,在流水线的执行级对转移指令进行执行时,确定对应数量的延迟槽在流水线中占据的目标流水级,并冲刷目标流水级之后的流水级中的指令包括:将数量与目标数量进行对比,其中,目标数量为执行级之前的流水级的数量与获取第二指令的过程所对应的流水级的数量之和;在延迟槽的数量小于目标数量的情况下,执行冲刷目标流水级之后的流水级中的指令的步骤;在延迟槽的数量大于等于目标数量的情况下,不执行冲刷目标流水级之后的流水级中的指令的操作。
具体地,如图3所示,为冲刷装置的示意图,冲刷的流水级的个数根据延迟槽的数量的不同而不同,其中,允许冲刷的流水级为执行级之后的流水级,例如,在流水线中包含取指级、缓存级、派发级、译码级、取数级、执行级、访存级以及写回级等流水级的情况下,可以冲刷的流水级包括取指级、缓存级、派发级、译码级和取数级。
在一种可选的实施方式中,转移指令为分支指令,当分支指令在执行级执行时,若派发/译码/取数级有三条编译器调度来的指令,则分支指令的latency设置为3,流水线仅需要冲刷缓存级;若编译器可以调度来四条指令,则流水线不需要冲刷任何流水级。
通过本实施例,根据延迟槽的数量的不同而灵活执行流水级的冲刷,在利用转移指令后的流水级的同时,避免了程序执行错误的情况的发生。
步骤S106,在执行完毕转移指令之后,转移至目标地址,其中,目标地址为转移指令所指示的转移地址。
具体地,在转移指令为跳转指令后,跳转至跳转指令所指示的目标地址,以获取目标地址待执行的第二指令,在转移指令为分支指令后,跳转至分支指令所指示的目标地址,以获取目标地址待执行的第二指令。
步骤S108,在目标地址获取第二指令的过程中,在执行级中依次对第一指令进行执行,以对执行第二指令之前空余的流水级进行利用。
需要说明的是,在目标地址获取第二指令的过程中,一方面,由于在转移指令执行之后才可以获取第二指令,在执行级之后的取数级、译码级、派发级、缓存级、取指级会产生空余,另一方面,获取第二指令的过程本身也会占据时间,具体地,会占据2个流水级对应的时间,因而,在目标地址获取第二指令的过程中,在执行级中依次对第一指令进行执行,实现了对执行第二指令之前空余的流水级进行利用,避免了处理器的资源浪费。
可选地,在本申请实施例提供的指令处理方法中,在目标地址获取第二指令的过程中,在执行级中依次对第一指令进行执行,以对执行第二指令之前空余的流水级进行利用之后,该方法还包括:在执行完毕第一指令之后,在执行级中执行第二指令,以完成程序中的转移指令所指示的转移操作。
在一种可选的实施方式中,如图4所示,转移指令为跳转指令,也即图中的jump指令,若被调度至流水线的第一指令的数量为7,包括指令1-7,获取第二指令的过程本身会占据2个流水级对应的时间。
则在流水线的一个周期中(图中的第一周期),jump指令位于第一执行级,指令1位于取数级、指令2位于译码级、指令3-7位于派发级。
在流水线的下一个周期中(图中的第二周期),jump指令位于第二执行级,指令1位于第一执行级,指令2位于取数级、指令3位于译码级、指令4-7位于派发级,第二指令new0位于取指级。
在流水线的下一个周期中(图中的第三周期),jump指令位于访存级,指令1位于第二执行级,指令2位于第一执行级,指令3位于取数级、指令4位于译码级、指令5-7位于派发级,第二指令new0位于缓存级,第二指令new1位于取指级。
在流水线的下一个周期中(图中的第四周期),jump指令位于写回级,指令1位于访存级,指令2位于第二执行级,指令3位于第一执行级,指令4位于取数级、指令5位于译码级、指令6-7位于派发级,第二指令new0、new1位于缓存级,第二指令new2位于取指级。
在流水线的下一个周期中(图中的第五周期),jump指令已完成了在流水线中的执行,指令1位于写回级,指令2位于访存级,指令3位于第二执行级,指令4位于第一执行级,指令5位于取数级,指令6位于译码级,指令7和第二指令new0位于派发级,new2位于缓存级,第二指令new3位于取指级。
以此类推,在流水线中的各个流水级依次完第一指令(指令1-7),并完成第二指令(new0-new3),从而在避免处理器的资源浪费以及避免程序运行错误的情况下,实现了程序的转移操作。
本申请实施例提供的指令处理方法,通过在流水线的译码级对程序中的转移指令进行译码时,确定转移指令对应的延迟槽的数量,其中,流水线中包括用于对指令执行不同处理的多个流水级,延迟槽的数量由被调度至流水线的第一指令的数量确定;在流水线的执行级对转移指令进行执行时,确定对应数量的延迟槽在流水线中占据的目标流水级,并冲刷目标流水级之后的流水级中的指令,其中,每个延迟槽分别占据执行级之后的一个流水级;在执行完毕转移指令之后,转移至目标地址,其中,目标地址为转移指令所指示的转移地址;在目标地址获取第二指令的过程中,在执行级中依次对第一指令进行执行,以对执行第二指令之前空余的流水级进行利用,解决了相关技术中在处理器的工作过程中,难以充分利用流水线的流水级,导致处理器的资源浪费的问题。进而达到了充分利用流水线的流水级、减少处理器的资源浪费的效果。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例还提供了一种指令处理装置,需要说明的是,本申请实施例的指令处理装置可以用于执行本申请实施例所提供的用于指令处理方法。以下对本申请实施例提供的指令处理装置进行介绍。
图5是根据本申请实施例的指令处理装置的示意图。如图5所示,该装置包括:第一确定单元10、第二确定单元20、转移单元30和第一执行单元40。
具体地,第一确定单元10,用于在流水线的译码级对程序中的转移指令进行译码时,确定转移指令对应的延迟槽的数量,其中,流水线中包括用于对指令执行不同处理的多个流水级,延迟槽的数量由被调度至流水线的第一指令的数量确定。
第二确定单元20,用于在流水线的执行级对转移指令进行执行时,确定对应数量的延迟槽在流水线中占据的目标流水级,并冲刷目标流水级之后的流水级中的指令,其中,每个延迟槽分别占据执行级之后的一个流水级。
转移单元30,用于在执行完毕转移指令之后,转移至目标地址,其中,目标地址为转移指令所指示的转移地址。
第一执行单元40,用于在目标地址获取第二指令的过程中,在执行级中依次对第一指令进行执行,以对执行第二指令之前空余的流水级进行利用。
本申请实施例提供的指令处理装置,通过第一确定单元10在流水线的译码级对程序中的转移指令进行译码时,确定转移指令对应的延迟槽的数量,其中,流水线中包括用于对指令执行不同处理的多个流水级,延迟槽的数量由被调度至流水线的第一指令的数量确定;第二确定单元20在流水线的执行级对转移指令进行执行时,确定对应数量的延迟槽在流水线中占据的目标流水级,并冲刷目标流水级之后的流水级中的指令,其中,每个延迟槽分别占据执行级之后的一个流水级;转移单元30在执行完毕转移指令之后,转移至目标地址,其中,目标地址为转移指令所指示的转移地址;第一执行单元40在目标地址获取第二指令的过程中,在执行级中依次对第一指令进行执行,以对执行第二指令之前空余的流水级进行利用,解决了相关技术中在处理器的工作过程中,难以充分利用流水线的流水级,导致处理器的资源浪费的问题,进而达到了充分利用流水线的流水级、减少处理器的资源浪费的效果。
可选地,在本申请实施例提供的指令处理装置中,第一确定单元10包括:读取模块,用于在对转移指令进行译码时,从转移指令的指令编码结构中读取延迟槽的数量,其中,延迟槽的数量由编译器设置于转移指令的指令编码结构中。
可选地,在本申请实施例提供的指令处理装置中,转移指令的指令编码结构包括:第一区域,用于存储转移指令中的操作数;第二区域,用于存储转移指令的编码;第三区域,用于存储延迟槽的数量;第四区域,用于存储指令级并行数量。
可选地,在本申请实施例提供的指令处理装置中,装置还包括:第三确定单元,用于在在流水线的译码级对程序中的转移指令进行译码时,确定转移指令对应的延迟槽的数量之前,在转移指令的编码阶段,确定被调度至流水线的第一指令的数量,其中,第一指令的数量小于等于目标数量,目标数量为执行级之前的流水级的数量与获取第二指令的过程所占据的流水级的数量之和;第四确定单元,用于将第一指令的数量确定为转移指令对应的延迟槽的数量,并通过编译器将延迟槽的数量填入转移指令的指令编码结构的第三区域。
可选地,在本申请实施例提供的指令处理装置中,第二确定单元20包括:对比模块,用于将延迟槽的数量与目标数量进行对比,其中,目标数量为执行级之前的流水级的数量与获取第二指令的过程所对应的流水级的数量之和;执行模块,用于在延迟槽的数量小于目标数量的情况下,执行冲刷目标流水级之后的流水级中的指令的步骤;停止执行模块,用于在延迟槽的数量大于等于目标数量的情况下,不执行冲刷目标流水级之后的流水级中的指令的操作。
可选地,在本申请实施例提供的指令处理装置中,装置还包括:第二执行单元,用于在目标地址获取第二指令的过程中,在执行级中依次对第一指令进行执行,以对执行第二指令之前空余的流水级进行利用之后,在执行完毕第一指令之后,在执行级中执行第二指令,以完成程序中的转移指令所指示的转移操作。
所述指令处理装置包括处理器和存储器,上述第一确定单元10、第二确定单元20、转移单元30和第一执行单元40等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来解决了相关技术中在处理器的工作过程中,难以充分利用流水线的流水级,导致处理器的资源浪费的问题。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本申请实施例还提供了一种非易失性存储介质,非易失性存储介质包括存储的程序,其中,程序运行时控制非易失性存储介质所在的设备执行一种指令处理方法。
本申请实施例还提供了一种电子装置,包含处理器和存储器;存储器中存储有计算机可读指令,处理器用于运行计算机可读指令,其中,计算机可读指令运行时执行一种指令处理方法。本文中的电子装置可以是服务器、PC、PAD、手机等。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (10)

1.一种指令处理方法,其特征在于,包括:
在流水线的译码级对程序中的转移指令进行译码时,确定所述转移指令对应的延迟槽的数量,其中,所述流水线中包括用于对指令执行不同处理的多个流水级,所述延迟槽的数量由被调度至所述流水线的第一指令的数量确定;
在所述流水线的执行级对所述转移指令进行执行时,确定对应数量的延迟槽在所述流水线中占据的目标流水级,并冲刷所述目标流水级之后的流水级中的指令,其中,每个所述延迟槽分别占据所述执行级之后的一个流水级;
在执行完毕所述转移指令之后,转移至目标地址,其中,所述目标地址为所述转移指令所指示的转移地址;
在所述目标地址获取第二指令的过程中,在所述执行级中依次对所述第一指令进行执行,以对执行所述第二指令之前空余的流水级进行利用;
其中,在所述转移指令的编码阶段,确定被调度至所述流水线的所述第一指令的数量,其中,所述第一指令的数量小于等于目标数量,所述目标数量为所述执行级之前的流水级的数量与获取所述第二指令的过程所占据的流水级的数量之和。
2.根据权利要求1所述的方法,其特征在于,所述在流水线的译码级对程序中的转移指令进行译码时,确定所述转移指令对应的延迟槽的数量包括:
在对所述转移指令进行译码时,从所述转移指令的指令编码结构中读取所述延迟槽的数量,其中,所述延迟槽的数量由编译器设置于所述转移指令的指令编码结构中。
3.根据权利要求2所述的方法,其特征在于,所述转移指令的指令编码结构包括:
第一区域,用于存储所述转移指令中的操作数;
第二区域,用于存储所述转移指令的编码;
第三区域,用于存储所述延迟槽的数量;
第四区域,用于存储指令级并行数量。
4.根据权利要求3所述的方法,其特征在于,在所述在流水线的译码级对程序中的转移指令进行译码时,确定所述转移指令对应的延迟槽的数量之前,所述方法还包括:
将所述第一指令的数量确定为所述转移指令对应的延迟槽的数量,并通过所述编译器将所述延迟槽的数量填入所述转移指令的指令编码结构的第三区域。
5.根据权利要求1所述的方法,其特征在于,所述在所述流水线的执行级对所述转移指令进行执行时,确定所述数量的延迟槽在所述流水线中占据的目标流水级,并冲刷所述目标流水级之后的流水级中的指令包括:
将所述延迟槽的数量与目标数量进行对比,其中,所述目标数量为所述执行级之前的流水级的数量与获取所述第二指令的过程所对应的流水级的数量之和;
在所述延迟槽的数量小于所述目标数量的情况下,执行冲刷所述目标流水级之后的流水级中的指令的步骤;
在所述延迟槽的数量大于等于所述目标数量的情况下,不执行冲刷所述目标流水级之后的流水级中的指令的操作。
6.根据权利要求1所述的方法,其特征在于,在所述目标地址获取第二指令的过程中,在所述执行级中依次对所述第一指令进行执行,以对执行所述第二指令之前空余的流水级进行利用之后,所述方法还包括:
在执行完毕所述第一指令之后,在所述执行级中执行所述第二指令,以完成所述程序中的所述转移指令所指示的转移操作。
7.一种指令处理装置,其特征在于,包括:
第一确定单元,用于在流水线的译码级对程序中的转移指令进行译码时,确定所述转移指令对应的延迟槽的数量,其中,所述流水线中包括用于对指令执行不同处理的多个流水级,所述延迟槽的数量由被调度至所述流水线的第一指令的数量确定;
第二确定单元,用于在所述流水线的执行级对所述转移指令进行执行时,确定对应数量的延迟槽在所述流水线中占据的目标流水级,并冲刷所述目标流水级之后的流水级中的指令,其中,每个所述延迟槽分别占据所述执行级之后的一个流水级;
转移单元,用于在执行完毕所述转移指令之后,转移至目标地址,其中,所述目标地址为所述转移指令所指示的转移地址;
第一执行单元,用于在所述目标地址获取第二指令的过程中,在所述执行级中依次对所述第一指令进行执行,以对执行所述第二指令之前空余的流水级进行利用;
在所述转移指令的编码阶段,确定被调度至所述流水线的所述第一指令的数量,其中,所述第一指令的数量小于等于目标数量,所述目标数量为所述执行级之前的流水级的数量与获取所述第二指令的过程所占据的流水级的数量之和。
8.根据权利要求7所述的装置,其特征在于,所述第一确定单元包括:
读取模块,用于在对所述转移指令进行译码时,从所述转移指令的指令编码结构中读取所述延迟槽的数量,其中,所述延迟槽的数量由编译器设置于所述转移指令的指令编码结构中。
9.一种非易失性存储介质,其特征在于,所非易失性存储介质包括存储的程序,其中,所述程序运行时控制所述非易失性存储介质所在的设备执行权利要求1至6中任意一项所述的指令处理方法。
10.一种电子设备,其特征在于,包含处理器和存储器,所述存储器中存储有计算机可读指令,所述处理器用于运行所述计算机可读指令,其中,所述计算机可读指令运行时执行权利要求1至6中任意一项所述的指令处理方法。
CN202110414196.9A 2021-03-31 2021-04-16 指令处理方法及装置 Active CN113110879B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN2021103508330 2021-03-31
CN202110350833 2021-03-31

Publications (2)

Publication Number Publication Date
CN113110879A CN113110879A (zh) 2021-07-13
CN113110879B true CN113110879B (zh) 2023-05-30

Family

ID=76718185

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110414196.9A Active CN113110879B (zh) 2021-03-31 2021-04-16 指令处理方法及装置

Country Status (1)

Country Link
CN (1) CN113110879B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101944041A (zh) * 2010-09-26 2011-01-12 中国科学院计算技术研究所 一种使用陷阱指令优化条件转移代码性能的方法及其系统

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6157988A (en) * 1997-08-01 2000-12-05 Micron Technology, Inc. Method and apparatus for high performance branching in pipelined microsystems
CN101604255A (zh) * 2009-07-23 2009-12-16 上海交通大学 中间语言的延迟跳转指令二进制翻译实现的方法
CN102360283B (zh) * 2011-09-28 2014-01-08 中国科学院声学研究所 一种微处理器子程序调用的处理方法及其装置
CN103218206B (zh) * 2012-01-18 2015-09-02 上海算芯微电子有限公司 指令分支的预跳转方法和系统
US9606803B2 (en) * 2013-07-15 2017-03-28 Texas Instruments Incorporated Highly integrated scalable, flexible DSP megamodule architecture
CN104035825B (zh) * 2014-06-17 2018-01-02 龙芯中科技术有限公司 跳转源列表处理方法、装置及编译器
CN105975252B (zh) * 2016-04-29 2018-10-09 龙芯中科技术有限公司 一种处理指令的流水线的实现方法、装置及处理器
CN106293641B (zh) * 2016-07-27 2018-12-25 北京计算机技术及应用研究所 基于流水线重构的超长指令字体系架构性能模拟方法
US20200278865A1 (en) * 2020-05-15 2020-09-03 Intel Corporation Hazard Mitigation for Lightweight Processor Cores
CN112182999B (zh) * 2020-09-14 2022-10-04 西北工业大学 一种基于mips32指令系统的三级流水线cpu设计方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101944041A (zh) * 2010-09-26 2011-01-12 中国科学院计算技术研究所 一种使用陷阱指令优化条件转移代码性能的方法及其系统

Also Published As

Publication number Publication date
CN113110879A (zh) 2021-07-13

Similar Documents

Publication Publication Date Title
CN105074666B (zh) 执行在具有不同指令集架构的处理器上的操作系统
KR101817397B1 (ko) 하나의 아키텍처의 코드 모듈이 다른 아키텍처의 라이브러리 모듈을 사용할 수 있게 하는 아키텍처 간 호환성 모듈
KR101594090B1 (ko) 공유 메모리에 대한 액세스들의 동기화를 완화하기 위한 프로세서들, 방법들 및 시스템들
US20130198495A1 (en) Method and Apparatus For Register Spill Minimization
US9292359B2 (en) System and method for memory management
US9619298B2 (en) Scheduling computing tasks for multi-processor systems based on resource requirements
US20190324729A1 (en) Web Application Development Using a Web Component Framework
US10268519B2 (en) Scheduling method and processing device for thread groups execution in a computing system
US9606931B2 (en) Indicating a length of an instruction of a variable length instruction set
CN106575220B (zh) 多个经集群极长指令字处理核心
US7480768B2 (en) Apparatus, systems and methods to reduce access to shared data storage
US20240086359A1 (en) Dynamic allocation of arithmetic logic units for vectorized operations
US10732976B2 (en) Integrated circuit processor and method of operating the integrated circuit processor in different modes of differing thread counts
CN111538535A (zh) 一种cpu指令处理方法、控制器和中央处理单元
US8656120B2 (en) Device, method and computer-readable medium relocating remote procedure call data in heterogeneous multiprocessor system on chip
US9158545B2 (en) Looking ahead bytecode stream to generate and update prediction information in branch target buffer for branching from the end of preceding bytecode handler to the beginning of current bytecode handler
CN113110879B (zh) 指令处理方法及装置
US20120017070A1 (en) Compile system, compile method, and storage medium storing compile program
US11144322B2 (en) Code and data sharing among multiple independent processors
KR20150051083A (ko) 재구성 가능 프로세서, 재구성 가능 프로세서의 구성 메모리의 사용을 최적화하는 방법 및 장치
KR20120139773A (ko) 계층적인 매우 긴 명령 패킷들을 프로세싱하는 시스템 및 방법
US9672042B2 (en) Processing system and method of instruction set encoding space utilization
KR20180016378A (ko) 임시적 로드 명령을 위한 시스템, 장치, 및 방법
CN118035131A (zh) 数据预取方法及装置、处理器和计算机可读存储介质
CN117591242A (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