CN113254083B - 指令处理方法、指令处理系统及处理器、芯片 - Google Patents
指令处理方法、指令处理系统及处理器、芯片 Download PDFInfo
- Publication number
- CN113254083B CN113254083B CN202110717773.1A CN202110717773A CN113254083B CN 113254083 B CN113254083 B CN 113254083B CN 202110717773 A CN202110717773 A CN 202110717773A CN 113254083 B CN113254083 B CN 113254083B
- Authority
- CN
- China
- Prior art keywords
- instruction
- block
- instructions
- stage
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 21
- 238000000034 method Methods 0.000 claims abstract description 12
- 238000004590 computer program Methods 0.000 claims description 12
- 238000004519 manufacturing process Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical 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
- 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/3824—Operand accessing
-
- 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
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
本发明涉及处理器领域,提供一种指令处理方法、指令处理系统及处理器、芯片。所述指令处理方法包括:取指级取回指令并缓存;译码级读取取指级缓存的指令并对读取的指令进行译码处理,判断译码后的指令中是否存在IT指令,在确定存在IT指令时对所述IT指令的后续相关联的IT区块指令进行处理;执行级执行译码后的指令,将当前执行结果状态信息反馈到所述译码级。本发明在一时钟周期可以读取多条指令,至少节约一个时钟周期,提高流水线执行效率,从而提高处理器的效率。
Description
技术领域
本发明涉及处理器领域,具体地涉及一种指令处理方法、一种指令处理系统、一种处理器、一种芯片以及一种存储介质。
背景技术
程序流控制类指令是处理器指令集中较为重要的指令。在ARM架构中,程序流控制类指令包括分支指令、程序调用指令、条件分支指令、比较合并条件分支指令、条件指令(即IF-THEN指令,以下简称IT指令)、分支表指令。IT指令执行后,可以有1至4条后续指令根据IT指令和处理器当前状态来进行条件执行。一个条件区块(即IT区块)由IT指令和执行的具体条件以及后面跟随的1至4条条件执行指令或IT区块指令组成。所述条件执行指令可以是数据处理指令或访存指令。最后一条条件执行指令还可以是条件分支指令。
ARM架构中,条件执行指令只有在应用程序状态寄存器(APSR)满足当前指令的条件时才可以正常执行,否则被当作NOP(No Operation,无操作)指令来执行,处理器执行该指令不产生任何效果。但是,处理器在执行NOP指令时,依然需要正常的流水线操作(取指,译码,执行等),会占用处理器的执行时间,影响了处理器的效率。
发明内容
本发明实施方式的目的是提供一种指令处理方法、指令处理系统、处理器、芯片以及存储介质,以提高处理器的效率。
为了实现上述目的,本发明一方面提供一种指令处理方法,应用于处理器内部的流水线,所述指令处理方法包括:
取指级取回指令并缓存;译码级读取所述取指级缓存的指令并对读取的指令进行译码处理,判断译码后的指令中是否存在IT指令,在确定存在IT指令时对所述IT指令的后续相关联的IT区块指令进行处理;执行级执行译码后的指令,将当前执行结果状态信息反馈到所述译码级。
进一步地,所述在确定存在IT指令时对所述IT指令的后续相关联的IT区块指令进行处理,包括:所述译码级在确定存在IT指令时,根据所述执行级反馈的当前执行结果状态信息判断与所述IT指令相关联的下一条或多条IT区块指令是否需要正常执行;在确定与所述IT指令相关联的下一条或多条IT区块指令不需要正常执行时,根据当前的译码处理状态确定下一时钟周期从所述取指级读取指令的条数,对读取的指令中需要正常执行的指令进行译码处理。
进一步地,在确定与所述IT指令相关联的下一条或多条IT区块指令不需要正常执行时:所述译码级根据当前的译码处理状态确定下一时钟周期从所述取指级读取多条指令,所述多条指令中至多有一条需要正常执行的指令;所述译码级仅对该条需要正常执行的指令进行译码处理。
进一步地,在以下条件下,所述译码级根据当前的译码处理状态确定下一时钟周期从所述取指级读取两条指令:所述译码级当前正在处理IT指令或IT区块指令,且所述取指级缓存有一条IT区块指令和一条非IT区块指令时,若判断所述一条IT区块指令不需要正常执行,则确定下一时钟周期从所述取指级同时读取所述一条IT区块指令和一条非IT区块指令,所述译码级仅对所述一条非IT区块指令进行译码处理。
进一步地,在以下条件下,所述译码级根据当前的译码处理状态确定下一时钟周期从所述取指级读取两条指令:所述译码级当前正在处理IT指令或IT区块指令,且所述取指级缓存有两条IT区块指令时,若判断所述两条IT区块指令中任意一条IT区块指令不需要正常执行,则确定下一时钟周期从所述取指级同时读取所述两条IT区块指令,所述译码级仅对所述两条IT区块指令中需要正常执行的一条IT区块指令进行译码处理。
进一步地,在以下条件下,所述译码级根据当前的译码处理状态确定下一时钟周期从所述取指级读取三条指令:所述译码级当前正在处理IT指令或IT区块指令,且所述取指级缓存有三条IT区块指令,若判断所述三条IT区块指令中有两条IT区块指令都不需要正常执行,则确定下一时钟周期从所述取指级同时读取所述三条IT区块指令,所述译码级仅对所述三条IT区块指令中需要正常执行的一条IT区块指令进行译码处理。
进一步地,所述将当前执行结果状态信息反馈到所述译码级,包括:所述执行级通过应用程序状态寄存器保存当前执行结果状态信息,所述执行结果状态信息包括IT指令所需要的条件信息;通过应用程序状态寄存器将对应IT指令执行的条件信息反馈到所述译码级。
本发明另一方面提供一种指令处理系统,所述系统包括:
取指模块,用于取回需流水线处理的指令并缓存;
译码模块,用于读取所述取指模块缓存的指令并对读取的指令进行译码处理,判断译码后的指令中是否存在IT指令,在确定存在IT指令时对所述IT指令的后续相关联的IT区块指令进行处理;
执行模块,用于执行所述译码后的指令,将当前执行结果状态信息反馈到所述译码模块。
进一步地,所述在确定存在IT指令时对所述IT指令的后续相关联的IT区块指令进行处理,包括:所述译码模块在确定存在IT指令时,根据所述执行模块反馈的当前执行结果状态信息判断与所述IT指令相关联的下一条或多条IT区块指令是否需要正常执行;在确定与所述IT指令相关联的下一条或多条IT区块指令不需要正常执行时,根据当前的译码处理状态确定下一时钟周期从所述取指模块读取指令的条数,对读取的指令中需要正常执行的指令进行译码处理。
进一步地,所述译码模块包括译码逻辑单元和指令读取逻辑单元;
所述译码逻辑单元用于对读取的指令进行译码处理,判断译码后的指令中是否存在IT指令,在确定存在IT指令时根据所述执行模块反馈的当前执行结果状态信息判断与所述IT指令相关联的下一条或多条IT区块指令是否需要正常执行,将所述否需要正常执行的信息和当前的译码处理状态信息发送到所述指令读取逻辑单元;
所述指令读取逻辑单元用于根据接收到的所述否需要正常执行的信息和所述当前的译码处理状态信息确定下一时钟周期从所述取指模块读取指令的条数。
进一步地,在以下条件下,所述译码模块从所述取指模块读取两条指令:
所述译码模块当前正在处理IT指令或IT区块指令,且所述取指模块缓存有一条IT区块指令和一条非IT区块指令时,若判断所述一条IT区块指令不需要正常执行,则确定下一时钟周期从所述取指模块同时读取所述一条IT区块指令和一条非IT区块指令,所述译码模块仅对所述一条非IT区块指令进行译码处理;或者
所述译码模块当前正在处理IT指令或IT区块指令,且所述取指模块缓存有两条IT区块指令时,若判断所述两条IT区块指令中任意一条IT区块指令不需要正常执行,则确定下一时钟周期从所述取指模块同时读取所述两条IT区块指令,所述译码模块仅对所述两条IT区块指令中需要正常执行的一条IT区块指令进行译码处理。
进一步地,在以下条件下,所述译码模块从所述取指模块读取三条指令:
所述译码模块当前正在处理IT指令或IT区块指令,且所述取指模块缓存有三条IT区块指令,若判断所述三条IT区块指令中有两条IT区块指令都不需要正常执行,则确定下一时钟周期从所述取指模块同时读取所述三条IT区块指令,所述译码模块仅对所述三条IT区块指令中需要正常执行的一条IT区块指令进行译码处理。
进一步地,所述将当前执行结果状态信息反馈到所述译码模块,包括:所述执行模块通过应用程序状态寄存器保存当前执行结果状态信息,所述执行结果状态信息包括IT指令所需要的条件信息;通过应用程序状态寄存器将对应IT指令执行的条件信息反馈到所述译码模块。
进一步地,所述译码模块配置有加宽的第一接口,所述取指模块配置有与所述第一接口相适配的第二接口,所述第一接口和所述第二接口用于在一个时钟周期传送多条指令。
本发明还提供一种处理器,所述处理器包括上述的指令处理系统。
本发明还提供一种芯片,所述芯片包括上述的指令处理系统。
本发明还提供一种存储介质,其上存储有计算机程序指令,所述计算机程序指令被执行时实现上述的指令处理方法。
本发明提供的指令处理方法,译码级根据执行级前传的执行结果状态信息和当前的译码处理状态判断IT指令后续关联的IT区块指令是否可以正常执行,确定后续指令中有不需要正常执行的IT区块指令时在下一时钟周期从取指级读取多条指令,多条指令同时结束,相较于现有的单指令流水线一个时钟周期读取一条指令,至少节约一个时钟周期,提高流水线执行效率,从而提高处理器的效率。
本发明实施方式的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本发明实施方式的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明实施方式,但并不构成对本发明实施方式的限制。在附图中:
图1是本发明一种实施方式提供的指令处理方法的流程图;
图2是本发明一种实施方式提供的指令处理系统的框图。
具体实施方式
以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
图1是本发明一种实施方式提供的指令处理方法的流程图。如图1所示,本实施方式提供一种指令处理方法,应用于处理器内部的流水线,所述流水线包括取指级、译码级和执行级,所述指令处理方法包括以下步骤:
S1、取指级取回指令并缓存,例如从处理器内部的总线取回需要流水线处理的指令。
S2、译码级读取所述取指级缓存的指令并对读取的指令进行译码处理,判断译码后的指令中是否存在IT指令,在确定存在IT指令时对所述IT指令的后续相关联的IT区块指令进行处理。
其中,所述译码级在确定存在IT指令时根据所述执行级反馈的当前执行结果状态信息判断与所述IT指令相关联的下一条或多条IT区块指令是否需要正常执行;在确定与所述IT指令相关联的下一条或多条IT区块指令不需要正常执行时根据当前的译码处理状态确定下一时钟周期从所述取指级读取指令的条数,对读取的指令中需要正常执行的指令进行译码处理。
S3、执行级执行译码后的指令,将当前执行结果状态信息反馈到译码级。举例而言,通过执行级的应用程序状态寄存器(APSR)保存当前执行结果状态信息,所述执行结果状态信息包括IT指令所需要的条件信息,通过应用程序状态寄存器将对应指令执行的条件信息反馈给译码级。
通常,一条IT指令后跟随有1至4条后续IT区块指令,该后续IT区块指令是否执行是根据该IT指令和处理器当前状态来决定的。一个IT区块包括一条IT指令以及该IT指令后面跟随的1至4条IT区块指令。所述译码级在确定存在IT指令时,根据执行级应用程序状态寄存器反馈的当前执行结果状态信息判断与所述IT指令相关联的下一条或多条IT区块指令是否需要正常执行。若所述IT指令的后续相关联的IT区块指令不需要正常执行,则根据当前的译码处理状态确定下一时钟周期从所述取指级读取多条指令(至少两条),多条指令中至多有一条需要正常执行的指令,译码级仅对该条需要正常执行的指令进行译码处理。
在具体的实施例中,所述译码级根据当前的译码处理状态确定下一时钟周期从所述取指级读取至少两条指令,所述至少两条指令中有一条需要正常执行的指令和至少一条不需要正常执行的指令,所述译码级仅对所述一条需要正常执行的指令进行译码处理。以下例举几种情况:
情况一、译码级当前正在处理IT指令或IT区块指令,且所述取指级缓存有一条IT区块指令和一条非IT区块指令,若判断所述一条IT区块指令不需要正常执行(有一条IT区块指令不可以正常执行),则确定下一时钟周期从取指级同时读取所述一条IT区块指令和一条非IT区块指令,译码级仅对所述一条非IT区块指令进行译码处理,不需要正常执行的那一条IT区块指令与该条非IT区块指令同时结束。这种情况下译码级在一个时钟周期读取两条指令,相较于现有的单指令流水线一个时钟周期读取一条指令,节约一个时钟周期。若译码级没有接收到相关联指令的不执行信息(即不能确定后续指令是否可以正常执行),译码级下一时钟周期从所述取指级读取一条指令并进行译码处理,即按照单指令流水线执行。
情况二、译码级当前正在处理IT指令或IT区块指令,且所述取指级缓存有两条IT区块指令,若判断所述两条IT区块指令中任意一条IT区块指令不需要正常执行(有一条IT区块指令不可以正常执行),则确定下一时钟周期从取指级同时读取所述两条IT区块指令,译码级仅对所述两条IT区块指令中需要正常执行的一条IT区块指令进行译码处理,不需要正常执行的那一条IT区块指令与需要正常执行的该条IT区块指令同时结束。这种情况下译码级在一个时钟周期读取两条指令,相较于现有的单指令流水线一个时钟周期读取一条指令,节约一个时钟周期。若译码级没有接收到相关联指令的不执行信息(即不能确定后续指令是否可以正常执行),译码级下一时钟周期从所述取指级读取一条指令并进行译码处理,即按照单指令流水线执行。
情况三、译码级当前正在处理IT指令或IT区块指令,且所述取指级缓存有两条IT区块指令,若判断所述两条IT区块指令的不需要正常执行(两条IT区块指令都不需要正常执行),则确定下一时钟周期从取指级同时读取所述两条IT区块指令,译码级将所述两条IT区块指令中的第二条IT区块指令作为无操作指令(NOP指令或空指令)进行处理,两条不需要正常执行的IT区块指令同时结束。这种情况下译码级在一个时钟周期读取两条指令,相较于现有的单指令流水线一个时钟周期读取一条指令,节约一个时钟周期。
情况四、译码级当前正在处理IT指令或IT区块指令,且所述取指级缓存有三条IT区块指令,若判断所述三条IT区块指令中有两条IT区块指令都不需要正常执行,则确定下一时钟周期从取指级同时读取所述三条IT区块指令,所述译码级仅对所述三条IT区块指令中需要正常执行的一条IT区块指令进行译码处理。若译码判断所述三条IT区块指令都不需要正常执行,则确定下一时钟周期从取指级同时读取所述三条IT区块指令,译码级将所述三条IT区块指令作为无操作指令(NOP指令或空指令)进行处理,三条不需要正常执行的IT区块指令同时结束。这种情况下译码级在一个时钟周期读取三条指令,相较于现有的单指令流水线一个时钟周期读取一条指令,节约两个时钟周期。
需要说明的是,译码级在处理IT指令时,根据执行级(或后面其它流水级)前传的执行结果状态信息来确定IT指令后续关联的IT区块指令是否可以正常执行,如果不能确定后续关联的IT区块指令是否可以正常执行(因为IT指令依赖的条件比较晚才能得到),指令的执行与标准的单发射流水线执行方式相同,一个时钟周期读取一条指令。在译码级没有处理IT指令、取指级没有IT区块指令时或者取指级只有一条指令时,指令的执行与标准的单发射流水线执行方式相同,一个时钟周期读取一条指令。
本实施方式提供的指令处理方法,译码级根据执行级前传的执行结果状态信息和当前的译码处理状态判断IT指令后续关联的IT区块指令是否可以正常执行,确定后续指令中有不需要正常执行的IT区块指令时在下一时钟周期从取指级读取多条(至少两条)指令,多条指令同时结束,相较于现有的单指令流水线一个时钟周期读取一条指令,至少节约一个时钟周期,提高流水线执行效率,从而提高处理器的效率。
图2是本发明一种实施方式提供的指令处理系统的框图。如图2所示,本实施方式提供一种指令处理系统,包括取指模块、译码模块和执行模块。所述取指模块用于取回需流水线处理的指令并缓存。所述译码模块用于读取所述取指模块缓存的指令并对读取的指令进行译码处理,判断译码后的指令中是否存在IT指令,在确定存在IT指令时对所述IT指令的后续相关联的IT区块指令进行处理。所述执行模块用于执行所述译码后的指令,将当前执行结果状态信息反馈到所述译码模块。具体为,通过执行级的应用程序状态寄存器(APSR)保存当前执行结果状态信息,所述执行结果状态信息包括IT指令所需要的条件信息,通过应用程序状态寄存器将对应指令执行的条件信息反馈给译码级。所述译码模块还用于在确定存在IT指令时根据所述执行模块反馈的当前执行结果状态信息判断与所述IT指令相关联的下一条或多条IT区块指令是否需要正常执行;在确定与所述IT指令相关联的下一条或多条IT区块指令不需要正常执行时根据当前的译码处理状态确定下一时钟周期从所述取指模块读取指令的条数,对读取的指令中需要正常执行的指令进行译码处理。
所述译码模块包括译码逻辑单元和指令读取逻辑单元。所述译码逻辑单元用于对读取的指令进行译码处理,判断译码后的指令中是否存在IT指令,在确定存在IT指令时根据所述执行模块反馈的当前执行结果状态信息判断与所述IT指令相关联的下一条或多条IT区块指令是否需要正常执行,将所述否需要正常执行的信息和当前的译码处理状态信息发送到所述指令读取逻辑单元。所述指令读取逻辑单元用于根据接收到的所述否需要正常执行的信息和所述当前的译码处理状态信息确定下一时钟周期从所述取指模块读取指令的条数。在具体的实施例中,指令读取逻辑单元根据接收到的关于IT区块指令是否需要正常执行的信息和当前的译码处理状态信息确定下一时钟周期从取指模块读取多条(至少两条)指令,所述至少两条指令中有一条需要正常执行的指令和至少一条不需要正常执行的指令,译码模块仅对所述一条需要正常执行的指令进行译码处理。以下例举几种情况:
情况一、译码模块当前正在处理IT指令或IT区块指令,且所述取指模块缓存有一条IT区块指令和一条非IT区块指令,若判断所述一条IT区块指令不需要正常执行(有一条IT区块指令不可以正常执行),则确定下一时钟周期从取指模块同时读取所述一条IT区块指令和一条非IT区块指令,译码模块仅对所述一条非IT区块指令进行译码处理,不需要正常执行的那一条IT区块指令与该条非IT区块指令同时结束。这种情况下译码模块在一个时钟周期读取两条指令,相较于现有的单指令流水线一个时钟周期读取一条指令,节约一个时钟周期。若译码模块没有接收到相关联指令的不执行信息(即不能确定后续指令是否可以正常执行),译码模块下一时钟周期从所述取指模块读取一条指令并进行译码处理,即按照单指令流水线执行。
情况二、译码模块当前正在处理IT指令或IT区块指令,且所述取指模块缓存有两条IT区块指令,若判断所述两条IT区块指令中任意一条IT区块指令不需要正常执行(有一条IT区块指令不可以正常执行),则确定下一时钟周期从取指模块同时读取所述两条IT区块指令,译码模块仅对所述两条IT区块指令中需要正常执行的一条IT区块指令进行译码处理,不需要正常执行的那一条IT区块指令与需要正常执行的该条IT区块指令同时结束。这种情况下译码模块在一个时钟周期读取两条指令,相较于现有的单指令流水线一个时钟周期读取一条指令,节约一个时钟周期。若译码模块没有接收到相关联指令的不执行信息(即不能确定后续指令是否可以正常执行),译码模块下一时钟周期从所述取指模块读取一条指令并进行译码处理,即按照单指令流水线执行。
情况三、译码模块当前正在处理IT指令或IT区块指令,且所述取指模块缓存有两条IT区块指令,若判断所述两条IT区块指令的不需要正常执行(两条IT区块指令都不可以正常执行),则确定下一时钟周期从取指模块同时读取所述两条IT区块指令,译码模块将所述两条IT区块指令中的第二条IT区块指令作为无操作指令(NOP指令或空指令)进行处理,两条不需要正常执行的IT区块指令同时结束。这种情况下译码模块在一个时钟周期读取两条指令,相较于现有的单指令流水线一个时钟周期读取一条指令,节约一个时钟周期。
情况四、译码模块当前正在处理IT指令或IT区块指令,且所述取指模块缓存有三条IT区块指令,若判断所述三条IT区块指令中有两条IT区块指令都不需要正常执行,则确定下一时钟周期从取指模块同时读取所述三条IT区块指令,所述译码模块仅对所述三条IT区块指令中需要正常执行的一条IT区块指令进行译码处理。若译码判断所述三条IT区块指令都不需要正常执行,则确定下一时钟周期从取指模块同时读取所述三条IT区块指令,译码模块将所述三条IT区块指令作为无操作指令(NOP指令或空指令)进行处理,三条不需要正常执行的IT区块指令同时结束。这种情况下译码模块在一个时钟周期读取三条指令,相较于现有的单指令流水线一个时钟周期读取一条指令,节约两个时钟周期。
需要说明的是,译码模块在处理IT指令时,根据执行模块(或后面其它流水模块)前传的执行结果状态信息来确定IT指令后续关联的IT区块指令是否可以正常执行,如果不能确定后续关联的IT区块指令是否可以正常执行(因为IT指令依赖的条件比较晚才能得到),指令的执行与标准的单发射流水线执行方式相同,一个时钟周期读取一条指令。在译码模块没有处理IT指令、取指模块没有IT区块指令时或者取指模块只有一条指令时,指令的执行与标准的单发射流水线执行方式相同,一个时钟周期读取一条指令。
本实施方式中,所述译码模块配置有加宽的第一接口,所述取指模块配置有与第一接口相适配的第二接口,第一接口和第二接口用于在一个时钟周期传送多条指令。译码模块通过第一接口可以在一个时钟周期内从取指模块的第二接口读取多条指令。本发明思想中,若有确定不需要正常执行的指令,均可以通过扩展取指模块与译码模块之间的接口宽度来实现多指令读取,忽略掉不需要正常执行的指令,使其与相邻的指令同时结束,以此增加处理器流水线的效率。
本发明实施方式提供的指令处理系统,译码模块根据执行模块前传的执行结果状态信息和当前的译码处理状态判断IT指令后续关联的IT区块指令是否可以正常执行,确定后续指令中有不需要正常执行的IT区块指令时在下一时钟周期从取指级读取多条(至少两条)指令,多条指令同时结束,相较于现有的单指令流水线系统一个时钟周期读取一条指令,至少节约一个时钟周期,提高流水线执行效率,从而提高处理器的效率。
本发明实施方式还提供一种处理器,所述处理器包括上述的指令处理系统。所述处理器的译码模块根据执行模块前传的相关指令的不执行信息和当前的译码处理状态判断后续的IT指令是否可以正常执行,在确定后续指令中有不需要正常执行的IT指令时下一时钟周期从取指模块读取至少两条指令,两条指令同时结束,相较于现有的单指令流水线一个时钟周期读取一条指令,至少节约一个时钟周期,提高流水线执行效率,从而提高处理器的效率。
本发明实施方式还提供一种芯片,所述芯片包括上述的指令处理系统。
本发明实施方式还提供一种存储介质,其上存储有计算机程序指令,所述计算机程序指令被执行时实现上述的指令处理方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、系统和计算机程序产品的流程图和方框图来描述的。应理解可由计算机程序指令实现流程图和方框图中的每一流程和方框、以及流程图和方框图中的流程和方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
Claims (13)
1.一种指令处理方法,应用于处理器内部的流水线,其特征在于,所述指令处理方法包括:
取指级取回指令并缓存;
译码级读取所述取指级缓存的指令并对读取的指令进行译码处理,判断译码后的指令中是否存在IT指令,在确定存在IT指令时对所述IT指令的后续相关联的IT区块指令进行处理;
执行级执行译码后的指令,将当前执行结果状态信息反馈到所述译码级;
其中,所述在确定存在IT指令时对所述IT指令的后续相关联的IT区块指令进行处理,包括:所述译码级在确定存在IT指令时,根据所述执行级反馈的当前执行结果状态信息判断与所述IT指令相关联的下一条或多条IT区块指令是否需要正常执行;在确定与所述IT指令相关联的下一条或多条IT区块指令不需要正常执行时,根据当前的译码处理状态确定下一时钟周期从所述取指级读取多条指令,所述多条指令中至多有一条需要正常执行的指令,所述译码级仅对读取的指令中需要正常执行的指令进行译码处理;
所述将当前执行结果状态信息反馈到所述译码级,包括:所述执行级通过应用程序状态寄存器保存当前执行结果状态信息,所述执行结果状态信息包括IT指令所需要的条件信息;通过应用程序状态寄存器将对应IT指令执行的条件信息反馈到所述译码级。
2.根据权利要求1所述的指令处理方法,其特征在于,在以下条件下,所述译码级根据当前的译码处理状态确定下一时钟周期从所述取指级读取两条指令:
所述译码级当前正在处理IT指令或IT区块指令,且所述取指级缓存有一条IT区块指令和一条非IT区块指令时,若判断所述一条IT区块指令不需要正常执行,则确定下一时钟周期从所述取指级同时读取所述一条IT区块指令和一条非IT区块指令,所述译码级仅对所述一条非IT区块指令进行译码处理。
3.根据权利要求1所述的指令处理方法,其特征在于,在以下条件下,所述译码级根据当前的译码处理状态确定下一时钟周期从所述取指级读取两条指令:
所述译码级当前正在处理IT指令或IT区块指令,且所述取指级缓存有两条IT区块指令时,若判断所述两条IT区块指令中任意一条IT区块指令不需要正常执行,则确定下一时钟周期从所述取指级同时读取所述两条IT区块指令,所述译码级仅对所述两条IT区块指令中需要正常执行的一条IT区块指令进行译码处理。
4.根据权利要求1所述的指令处理方法,其特征在于,在以下条件下,所述译码级根据当前的译码处理状态确定下一时钟周期从所述取指级读取三条指令:
所述译码级当前正在处理IT指令或IT区块指令,且所述取指级缓存有三条IT区块指令,若判断所述三条IT区块指令中有两条IT区块指令都不需要正常执行,则确定下一时钟周期从所述取指级同时读取所述三条IT区块指令,所述译码级仅对所述三条IT区块指令中需要正常执行的一条IT区块指令进行译码处理。
5.一种指令处理系统,其特征在于,所述系统包括:
取指模块,用于取回需流水线处理的指令并缓存;
译码模块,用于读取所述取指模块缓存的指令并对读取的指令进行译码处理,判断译码后的指令中是否存在IT指令,在确定存在IT指令时对所述IT指令的后续相关联的IT区块指令进行处理;
执行模块,用于执行所述译码后的指令,将当前执行结果状态信息反馈到所述译码模块;
其中,所述在确定存在IT指令时对所述IT指令的后续相关联的IT区块指令进行处理,包括:所述译码模块在确定存在IT指令时,根据所述执行模块反馈的当前执行结果状态信息判断与所述IT指令相关联的下一条或多条IT区块指令是否需要正常执行;在确定与所述IT指令相关联的下一条或多条IT区块指令不需要正常执行时,根据当前的译码处理状态确定下一时钟周期从所述取指模块读取多条指令,所述多条指令中至多有一条需要正常执行的指令,译码级仅对读取的指令中需要正常执行的指令进行译码处理;
所述将当前执行结果状态信息反馈到所述译码模块,包括:所述执行模块通过应用程序状态寄存器保存当前执行结果状态信息,所述执行结果状态信息包括IT指令所需要的条件信息;通过应用程序状态寄存器将对应IT指令执行的条件信息反馈到所述译码模块。
6.根据权利要求5所述的指令处理系统,其特征在于,所述译码模块包括译码逻辑单元和指令读取逻辑单元;
所述译码逻辑单元用于对读取的指令进行译码处理,判断译码后的指令中是否存在IT指令,在确定存在IT指令时,根据所述执行模块反馈的当前执行结果状态信息判断与所述IT指令相关联的下一条或多条IT区块指令是否需要正常执行,将所述否需要正常执行的信息和当前的译码处理状态信息发送到所述指令读取逻辑单元;
所述指令读取逻辑单元用于根据接收到的所述否需要正常执行的信息和所述当前的译码处理状态信息,确定下一时钟周期从所述取指模块读取指令的条数。
7.根据权利要求5所述的指令处理系统,其特征在于,在以下条件下,所述译码模块从所述取指模块读取两条指令:
所述译码模块当前正在处理IT指令或IT区块指令,且所述取指模块缓存有一条IT区块指令和一条非IT区块指令时,若判断所述一条IT区块指令不需要正常执行,则确定下一时钟周期从所述取指模块同时读取所述一条IT区块指令和一条非IT区块指令,所述译码模块仅对所述一条非IT区块指令进行译码处理。
8.根据权利要求5所述的指令处理系统,其特征在于,在以下条件下,所述译码模块从所述取指模块读取两条指令:
所述译码模块当前正在处理IT指令或IT区块指令,且所述取指模块缓存有两条IT区块指令时,若判断所述两条IT区块指令中任意一条IT区块指令不需要正常执行,则确定下一时钟周期从所述取指模块同时读取所述两条IT区块指令,所述译码模块仅对所述两条IT区块指令中需要正常执行的一条IT区块指令进行译码处理。
9.根据权利要求5所述的指令处理系统,其特征在于,在以下条件下,所述译码模块从所述取指模块读取三条指令:
所述译码模块当前正在处理IT指令或IT区块指令,且所述取指模块缓存有三条IT区块指令,若判断所述三条IT区块指令中有两条IT区块指令都不需要正常执行,则确定下一时钟周期从所述取指模块同时读取所述三条IT区块指令,所述译码模块仅对所述三条IT区块指令中需要正常执行的一条IT区块指令进行译码处理。
10.根据权利要求5所述的指令处理系统,其特征在于,所述译码模块配置有加宽的第一接口,所述取指模块配置有与所述第一接口相适配的第二接口,所述第一接口和所述第二接口用于在一个时钟周期传送多条指令。
11.一种处理器,其特征在于,所述处理器包括权利要求5-10中任一项权利要求所述的指令处理系统。
12.一种芯片,其特征在于,所述芯片包括权利要求5-10中任一项权利要求所述的指令处理系统。
13.一种存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被执行时实现权利要求1-4中任一项权利要求所述的指令处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110717773.1A CN113254083B (zh) | 2021-06-28 | 2021-06-28 | 指令处理方法、指令处理系统及处理器、芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110717773.1A CN113254083B (zh) | 2021-06-28 | 2021-06-28 | 指令处理方法、指令处理系统及处理器、芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113254083A CN113254083A (zh) | 2021-08-13 |
CN113254083B true CN113254083B (zh) | 2021-11-02 |
Family
ID=77189868
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110717773.1A Active CN113254083B (zh) | 2021-06-28 | 2021-06-28 | 指令处理方法、指令处理系统及处理器、芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113254083B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6073230A (en) * | 1997-06-11 | 2000-06-06 | Advanced Micro Devices, Inc. | Instruction fetch unit configured to provide sequential way prediction for sequential instruction fetches |
CN103336681A (zh) * | 2013-07-03 | 2013-10-02 | 同济大学 | 针对采用变长指令集的流水线结构处理器的取指方法 |
CN103838550A (zh) * | 2012-11-26 | 2014-06-04 | 上海芯豪微电子有限公司 | 一种分支处理系统和方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5995749A (en) * | 1996-11-19 | 1999-11-30 | Advanced Micro Devices, Inc. | Branch prediction mechanism employing branch selectors to select a branch prediction |
US20040230781A1 (en) * | 2003-05-16 | 2004-11-18 | Via-Cyrix, Inc. | Method and system for predicting the execution of conditional instructions in a processor |
GB2402510A (en) * | 2003-06-05 | 2004-12-08 | Advanced Risc Mach Ltd | Predication instruction within a data processing system |
US9626185B2 (en) * | 2013-02-22 | 2017-04-18 | Apple Inc. | IT instruction pre-decode |
US9792121B2 (en) * | 2013-05-21 | 2017-10-17 | Via Technologies, Inc. | Microprocessor that fuses if-then instructions |
-
2021
- 2021-06-28 CN CN202110717773.1A patent/CN113254083B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6073230A (en) * | 1997-06-11 | 2000-06-06 | Advanced Micro Devices, Inc. | Instruction fetch unit configured to provide sequential way prediction for sequential instruction fetches |
CN103838550A (zh) * | 2012-11-26 | 2014-06-04 | 上海芯豪微电子有限公司 | 一种分支处理系统和方法 |
CN103336681A (zh) * | 2013-07-03 | 2013-10-02 | 同济大学 | 针对采用变长指令集的流水线结构处理器的取指方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113254083A (zh) | 2021-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20030061473A1 (en) | Methods and apparatus to dynamically reconfigure the instruction pipeline of an indirect very long instruction word scalable processor | |
US20110072242A1 (en) | Configurable processing apparatus and system thereof | |
EP3757771A1 (en) | Methods, apparatuses, and media for processing loop instruction set | |
US11372646B2 (en) | Exit history based branch prediction | |
US7620804B2 (en) | Central processing unit architecture with multiple pipelines which decodes but does not execute both branch paths | |
JP2015133126A (ja) | プロシージャリターンシーケンスを加速するための方法およびシステム | |
US5416911A (en) | Performance enhancement for load multiple register instruction | |
JP4864840B2 (ja) | マイクロプロセッサ | |
US5088030A (en) | Branch address calculating system for branch instructions | |
KR930001055B1 (ko) | 가변 단어길이 명령의 병렬해독 및 병렬실행을 하는 데이터 처리장치 | |
CN112540792A (zh) | 指令处理方法及装置 | |
US10338926B2 (en) | Processor with conditional instructions | |
CN113254083B (zh) | 指令处理方法、指令处理系统及处理器、芯片 | |
CN112035170B (zh) | 用于分支预测器的方法和系统 | |
EP2972789A1 (en) | Method to improve speed of executing return branch instructions in a processor | |
CN116737241B (zh) | 一种指令融合方法、处理器核、处理器和计算机系统 | |
CN112559048B (zh) | 一种指令处理装置、处理器及其处理方法 | |
US6895496B1 (en) | Microcontroller having prefetch function | |
US20060200653A1 (en) | Decoding predication instructions within a superscalar data processing system | |
CN117008975A (zh) | 一种指令融合分割方法、处理器核和处理器 | |
JP5233078B2 (ja) | プロセッサ及びその処理方法 | |
CN111857830B (zh) | 一种提前转发指令数据的通路设计方法、系统及存储介质 | |
US20080022072A1 (en) | System, method and medium processing data according to merged multi-threading and out-of-order scheme | |
US20070063745A1 (en) | Support for conditional operations in time-stationary processors | |
US20090031118A1 (en) | Apparatus and method for controlling order of instruction |
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 |