CN104423927B - 指令处理方法及装置、处理器 - Google Patents

指令处理方法及装置、处理器 Download PDF

Info

Publication number
CN104423927B
CN104423927B CN201310389245.3A CN201310389245A CN104423927B CN 104423927 B CN104423927 B CN 104423927B CN 201310389245 A CN201310389245 A CN 201310389245A CN 104423927 B CN104423927 B CN 104423927B
Authority
CN
China
Prior art keywords
instruction
processor
load
sequence
special
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
CN201310389245.3A
Other languages
English (en)
Other versions
CN104423927A (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.)
Huawei Technologies Co Ltd
Institute of Computing Technology of CAS
Original Assignee
Huawei Technologies Co Ltd
Institute of Computing Technology of CAS
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 Huawei Technologies Co Ltd, Institute of Computing Technology of CAS filed Critical Huawei Technologies Co Ltd
Priority to CN201310389245.3A priority Critical patent/CN104423927B/zh
Priority to PCT/CN2014/083879 priority patent/WO2015027809A1/zh
Publication of CN104423927A publication Critical patent/CN104423927A/zh
Application granted granted Critical
Publication of CN104423927B publication Critical patent/CN104423927B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP

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

指令处理方法及装置、处理器
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种指令处理方法及装置、处理器。
背景技术
基于数据挖掘方法研究处理器硬件发现:一些特殊指令序列存在缓存缺失率高、分支预测失误率高等问题,例如,<load,load,load>指令序列中的load指令由于缓存缺失会导致处理器流水线的停顿;又例如,<branch,store,load,compare>指令序列中的branch指令由于分支预测失误也会导致处理器流水线的停顿。
由此可见,现有处理器的一些特殊指令序列由于缓存缺失率高或分支预测失误等原因导致处理器工作流水线的停顿,从而影响了处理器执行指令的工作效率。
发明内容
本发明提供一种指令处理方法及装置、处理器,用以解决现有处理器的一些指令序列由于缓存缺失率高或分支预测失误等原因导致处理器工作流水线的停顿,以及处理器执行指令序列的效率低的问题。
第一方面,提供一种指令处理方法,包括:
从处理器的第二缓存中按序读取多条指令,若确定所述多条指令中存在特殊指令序列,则确定所述特殊指令序列中各指令对应的控制码;
将所述特殊指令序列中各指令及其对应的控制码保存到所述处理器的第一缓存中;
若确定从所述处理器的第一缓存中读取的指令存在对应的控制码,则根据所述控制码调整所述处理器的微结构,使得所述处理器的流水线不停顿;
所述特殊指令序列是指造成所述处理器的流水线停顿的特殊指令序列。
基于第一方面,在第一种可能的实现方式中,所述从处理器的第二缓存中按序读取多条指令,若确定所述多条指令中存在特殊指令序列,则确定所述特殊指令序列中各指令对应的控制码,包括:
从所述处理器的第二缓存中按序读取多条指令,根据指令与预译码值之间的对应关系,按序分别确定所述多条指令中每条指令对应的预译码值;
根据所述多条指令中每条指令对应的预译码值组成的序列,若确定存在特殊指令序列对应的预译码值序列,则确定所述多条指令中包括特殊指令序列;
根据所述特殊指令序列中各指令和控制码之间的对应关系,确定所述特殊指令序列中各指令对应的控制码。
基于第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述控制码包括关闭加载之后指令预测执行部件的代码或关闭分支预测部件的代码;
所述根据所述控制码调整所述处理器的微结构,包括:
根据所述关闭加载之后指令预测执行部件的代码,关闭加载之后所述处理器的指令预测执行部件;或
根据所述关闭分支预测部件的代码,关闭所述处理器的分支预测部件。
第二方面,提供一种指令处理装置,包括:
确定模块,用于从处理器的第二缓存中按序读取多条指令,若确定所述多条指令中存在特殊指令序列,则确定所述特殊指令序列中各指令对应的控制码;
保存模块,用于将所述特殊指令序列中各指令及其对应的控制码保存到所述处理器的第一缓存中;
调整模块,用于若确定从所述处理器的第一缓存中读取的指令存在对应的控制码,则根据所述控制码调整所述处理器的微结构,使得所述处理器的流水线不停顿;
所述特殊指令序列是指造成所述处理器的流水线停顿的特殊指令序列。
基于第二方面,在第一种可能的实现方式中,所述确定模块具体包括:
第一确定单元,用于从所述处理器的第二缓存中按序读取多条指令,根据指令与预译码值之间的对应关系,按序分别确定所述多条指令中每条指令对应的预译码值;
第二确定单元,用于根据所述多条指令中每条指令对应的预译码值组成的序列,若确定存在特殊指令序列对应的预译码值序列,则确定所述多条指令中包括特殊指令序列;
第三确定单元,用于根据所述特殊指令序列中各指令和控制码之间的对应关系,确定所述特殊指令序列中各指令对应的控制码。
基于第二方面或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述控制码包括关闭加载之后指令预测执行部件的代码或关闭分支预测部件的代码;
所述调整模块具体用于:
根据所述关闭加载之后指令预测执行部件的代码,关闭加载之后所述处理器的指令预测执行部件;或
根据所述关闭分支预测部件的代码,关闭所述处理器的分支预测部件。
第三方面,提供一种处理器,包括:上述指令处理装置。
第四方面,提供一种终端设备,包括:上述处理器。
本发明实施例通过对从处理器的第二缓存中按序读取多条指令,检测是否存在特殊指令序列,若存在特殊指令序列,则确定所述特殊指令序列中各指令对应的控制码;并将所述特殊指令序列中各指令及其对应的控制码保存到所述处理器的第一缓存中;之后,若确定从所述处理器的第一缓存中读取的指令存在对应的控制码,则根据所述控制码调整所述处理器的微结构,使得所述处理器的流水线不停顿;上述提供的方案可以避免在执行特殊指令序列时,由于缓存缺失或分支预测失误等原因造成的处理器流水线停顿的问题;因此,可以优化处理器执行指令的工作效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的指令处理方法的流程示意图;
图2为本发明另一实施例提供的指令处理装置的结构示意图;
图3为图2所示实施例的原理框图;
图4为本发明另一实施例提供的指令处理装置的结构示意图;
图5为本发明另一实施例提供的处理器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
现有的处理器微结构设计主要是根据已经执行过的历史指令预测即将执行的指令,调整对即将执行指令流的处理策略(例如预测跳转指令的跳转方向与跳转地址),从而对处理器的指令流的整体执行效率进行优化。
然而,有些特殊指令序列容易造成处理器的流水线的停顿,例如,指令序列<load,load,load>中的Load指令就是要从存储器中取回数据到寄存器,如果数据高速缓冲存储器(Cache)中包含这需要取回的数据,处理器执行指令的流水线就可以流畅运行,继续执行Load指令之后进入流水线的指令。如果数据Cache不包含这一需要取回的数据,则会发生一次数据缓存缺失(Cache Miss),这样就需要刷新处理器执行指令的流水线,也就是说,在Load指令之后进入流水线的指令都要被清除掉,这样就导致了处理器执行指令的流水线停顿。
又例如,指令序列<branch,store,load,compare>中的branch指令是指进行分支跳转的指令,根据现有的处理器微结构设计,当branch指令进入流水线时,由于在处理器完成初始化工作以后,通常分支预测部件就开启,因此,会根据分支预测部件提供的分支跳转方向,预测下一条指令的位置。而实验数据表明,当处理器在执行<branch,store,load,compare>指令序列时,错误地将不需要执行的指令送入流水线,发现分支预测错误后还需要清除掉这些指令,这样就导致了处理器流水线停顿。。
上述仅仅以指令序列<load,load,load>、<branch,store,load,compare>为例进行说明,可以理解,本领域的普通技术人员根据上述指令序列所联想到其他导致由于缓存缺失率高或分支预测失误导致的指令序列也属于本专利的保护范围。
由此可知,现有的处理器的微结构设计中,当出现某些特殊指令序列时,会由于缓存缺失率高或分支预测失误或其他原因导致处理器的流水线停顿的问题,从而降低了处理器执行指令的工作效率。
基于上述现有技术存在的问题,本发明实施例提供一种指令处理方法,可以解决在现有的处理器流水线微结构设计中,当出现某些特殊指令序列时,存在处理器的流水线停顿的问题,可以优化处理器执行指令的工作效率。
需要说明的是,本实施例所述的处理器的微结构(Micro Architecture)具体是指处理器内部的一些功能部件的集合,其中,功能部件例如包括指令预测执行部件或分支预测部件等。
图1为本发明一实施例提供的指令处理方法的流程示意图,如图1所示,本实施例的指令处理方法可以包括:
101、从处理器的第二缓存中按序读取多条指令,若确定所述多条指令中存在特殊指令序列,则确定所述特殊指令序列中各指令对应的控制码;
在本发明的一个可选的实施方式中,步骤101具体包括:
从所述处理器的第二缓存中按序读取多条指令,根据指令与预译码值之间的对应关系,按序分别确定所述多条指令中每条指令对应的预译码值;
根据所述多条指令中每条指令对应的预译码值组成的序列,若确定存在特殊指令序列对应的预译码值序列,则确定所述多条指令中包括特殊指令序列;
根据所述特殊指令序列中各指令和控制码之间的对应关系,确定所述特殊指令序列中各指令对应的控制码。
需要说明的是,本实施例所述的第二缓存例如为二级缓存L2Cache。
需要说明的是,本实施例所述的特殊指令序列包括但不限于<load,load,load>指令序列和<branch,store,load,compare>指令序列;
其中,特殊指令序列<load,load,load>中的load指令的控制码为关闭加载之后指令预测执行部件的代码;
特殊指令序列<branch,store,load,compare>中branch指令的控制码为关闭分支预测部件的代码,其中,需要说明的是,该特殊指令序列<branch,store,load,compare>中的其他三个store、load、compare指令对应的控制码可以默认设为0,表示不需要进行处理器的微结构的调整。
102、将所述特殊指令序列中各指令及其对应的控制码保存到所述处理器的第一缓存中;
需要说明的是,本实施例所述的第一缓存例如为指令高速缓冲存储器(Instruction-Cache,I-Cache)。
103、若确定所述处理器的第一缓存中读取的指令存在对应的控制码,则根据所述控制码调整所述处理器的微结构,使得所述处理器的流水线不停顿。
从处理器的第一缓存中读取的指令具体是指进入处理器的流水线的指令,也就是即将执行的指令;
假设即将执行的指令为特殊指令序列中<load,load,load>中的load指令时,为了避免在执行load指令时,由于Cache Miss可能造成处理器的流水线停顿的问题,该load指令对应的控制码为关闭加载之后指令预测执行部件的代码;因此,步骤103具体为:根据关闭加载之后指令预测执行部件的代码,关闭加载之后所述处理器的指令预测执行部件。
需要说明的是,当执行完特殊指令序列中<load,load,load>中的三个load之后,需要重新开启加载之后所述处理器的指令预测执行部件。
假设即将执行的指令为特殊指令序列中<branch,store,load,compare>中的branch指令时,为了避免在执行branch指令时分支预测部件的分支预测失误,该branch指令对应的控制码为关闭分支预测部件的代码;因此,步骤103具体为:根据关闭分支预测部件的代码,关闭所述处理器的分支预测部件。
需要说明的是,当执行完特殊指令序列中<branch,store,load,compare>中的branch指令之后,需要重新开启处理器的分支预测部件。
本发明实施例通过对从处理器的第二缓存中按序读取多条指令,检测是否存在特殊指令序列,若存在特殊指令序列,则确定所述特殊指令序列中各指令对应的控制码;并将所述特殊指令序列中各指令及其对应的控制码保存到所述处理器的第一缓存中;之后,若确定从所述处理器的第一缓存中读取的指令存在对应的控制码,则根据所述控制码调整所述处理器的微结构;
由于本实施例的控制码是为了避免当某些特殊指令序列进入处理器的流水线时会造成流水线停顿的问题,针对某些特殊指令序列中的各指令设计的,例如,当检测出特殊指令序列<load,load,load>即将进入处理器的流水线时,此时,处理器可以关闭加载之后所述处理器的流水线的指令预测执行部件,从而避免在执行load指令时造成处理器的流水线停顿的问题;又例如,当检测出特殊指令序列<branch,store,load,compare>即将进入处理器的流水线时,为了避免分支预测部件的分支预测失误,处理器可以关闭分支预测部件,从而可以避免在执行branch指令时造成的分支预测失误;因此,可以优化处理器执行指令的工作效率。
图2为本发明另一实施例提供的指令处理方法的流程示意图,图3为图2所示实施例的原理框图,如图2和图3所示,本实施例的指令处理方法是图1所示实施例的具体实现,包括:
201、在第一个时钟周期内从L2Cache中按序读取4条指令。
具体实现时,假设L2Cache读端口为16字段(Bytes),每条指令为4Bytes,每个时钟周期内只能读出4条指令(Instr0、Instr1、Instr2、Instr3)。
202、确定第一个时钟周期内读取的4条指令对应的预译码值。
表1为本发明实施例建立的第一关系对应表,如表1所示:
指令Instruction 预译码值Precode
load 1
store 2
branch 3
compare 4
others 0
该第一关系对应表中保存的每个指令与其预译码值之间的对应关系,如图3所示,预译码器(Pre-decoder)中保存有第一关系对应表,可以根据表1所示的对应关系,确定第一个时钟周期内读取的4条指令对应的预译码值(precode0、precode1、precode2、precode3)。
需要说明的是,上述第一关系对应表可以采用硬件模块进行设置;或者也可以采用软件模块进行定义。
203、在第二个时钟周期内从L2Cache中按序读取4条指令。
为了保证不会漏掉任一特殊指令序列,需要从L2Cache中按序连续读取8条指令,因此,本实施例中,需要将在第一个时钟周期内读出四条指令及其对应的预译码值缓存一拍,之后,在第二个时钟周期内从L2Cache中按序读取4条指令(Instr4、Instr5、Instr6、Instr7)。
204、确定第二个时钟周期内读取的4条指令对应的预译码值。
预译码器(Pre-decoder)根据表1所示的对应关系,可以确定第二个时钟周期内读取的4条指令对应的预译码值(precode4、precode5、precode6、precode7)。
205、根据8条按序读出的指令以及对应的预译码值进行特殊指令序列检测,并根据检测结果产生第一个时钟周期内读取的4条指令的控制码。
如图3所示,第一个时钟周期内读取的4条指令(Instr0、Instr1、Instr2、Instr3)的控制码分别为(ctlcode0、ctlcode1、ctlcode2、ctlcode3)。
表2为本发明实施例建立的第二关系对应表,如表2所示:
预译码值序列 特殊指令序列
1、1、1 <load,load,load>
3、2、1、4 <branch,store,load,compare>
第二关系对应表中保存有每个特殊指令序列与其预译码值序列之间的对应关系;如图3所示,指令序列模式检测器(Instruction Sequential Pattern Check)中保存有第二关系对应表,根据上述按序读出的连续8条指令以及对应的预译码值,查询第二关系对应表,可以确定上述按序读出的连续8条指令中是否存在特殊指令序列即将进入处理器的流水线。
需要说明的是,上述第二关系对应表可以采用硬件模块进行设置;或者也可以采用软件模块进行定义。
本实施例以<load,load,load>指令序列为例进行特殊指令序列检测的说明:
若在第一个时钟周期内连续读取的4条指令的预译码值中存在3个连续为1的预译码值时,可以确定第一个时钟周期内连续读取的4条指令中存在<load,load,load>的特殊指令序列;或者
若在第二个时钟周期内连续读取的4条指令的预译码值中存在3个连续为1的预译码值时,可以确定第二个时钟周期内连续读取的4条指令中存在<load,load,load>的特殊指令序列;或者
若在第一个时钟周期内读取的最后2条指令的预译码值为1时,且在第二个时钟周期内读取第1条指令的预译码值也为1时,则可以确定上述按序读出的连续8条指令中存在<load,load,load>的特殊指令序列;或者
若在第一个时钟周期内读取的最后1条指令的预译码值为1时,且在第二个时钟周期内读取第1条和第2条指令的预译码值也为1时,则可以确定上述按序读出的连续8条指令中存在<load,load,load>的特殊指令序列;
表3为本发明实施例建立的第三关系对应表,如表3所示:
该第三关系对应表中保存有特殊指令序列中各指令与其控制码之间的对应关系,根据表3所示的对应关系,可以确定检测出的特殊指令序列中各指令的控制码。需要说明的是,上述第二关系对应表可以采用硬件模块进行设置;或者也可以采用软件模块进行定义。
本实施例以<load,load,load>指令序列为例进行第一个时钟周期内读取的指令的控制码的产生说明:
当确定第一个时钟周期内连续读取的4条指令中存在<load,load,load>的特殊指令序列,例如第一个时钟周期内连续读取的第1、2、3个指令都是load时,第4个指令是除load指令外的其他指令时,根据表3所示的对应关系,确定第1、2、3个load指令对应的控制码,其中,第4个其他指令的控制码缺省设置为0,即表示当执行第4个其他指令时,不需要对处理器的微结构进行调整,按照现有的处理器的微结构设计进行调整。
若在第一个时钟周期内读取的最后2条指令的预译码值为1时,且在第二个时钟周期内读取第1条指令的预译码值也为1时,则可以确定上述按序读出的连续8条指令中存在<load,load,load>的特殊指令序列;由于在第一个时钟周期内读取的第1、2个指令为除load指令外的其他指令,此时,第一个时钟周期内读取的第1、2个指令对应的控制码为0,而第一个时钟周期内读取的最后2条指令为特殊指令序列<load,load,load>中的第1、2个load指令,根据表3所示的对应关系,可以确定特殊指令序列<load,load,load>中的第1、2个load指令对应的控制码,从而可以确定第一个时钟周期内读取的最后2个load指令对应的控制码。
206、将第一个时钟周期内读取的4条指令以及对应的控制码保存到I-Cache中。
207、从I-Cache中读取指令,确定该指令是否绑定有控制码,若是,则执行步骤208,否则执行步骤209。
208、根据该指令的控制码,调整处理器的微结构。
例如,若该指令是特殊指令序列<load,load,load>中的load指令,则需要关掉加载之后的指令预测执行部件;当执行完特殊指令序列<load,load,load>中的3个load指令之后,重新开启加载之后处理器的指令预测执行部件。
209、不调整处理器的微结构。
也就是说,按照现有的处理器的微结构设计进行调整。
本发明实施例利用在L2Cache回填I-Cache的过程中,根据连续读取的8条指令以及对应预译码值,检测是否存在特殊指令序列,若存在,则确定该特殊指令序列中各指令对应的控制码,并将该特殊指令序列中各指令以及对应的控制码绑定保存到I-Cache中,使得当该特殊指令序列中各指令进入流水线时,根据该特殊指令序列中各指令对应的控制码调整处理器的微结构,如关掉Load之后指令预测执行部件,关闭分支预测部件等,从而可以避免在执行特殊指令序列中的指令时造成的流水线停顿的问题或分支预测失误的问题,可以优化处理器执行指令的工作效率。
图4为本发明另一实施例提供的指令处理装置的结构示意图,如图4所示,包括:
确定模块41,用于从处理器的第二缓存中按序读取多条指令,若确定所述多条指令中存在特殊指令序列,则确定所述特殊指令序列中各指令对应的控制码;
保存模块42,用于将所述特殊指令序列中各指令及其对应的控制码保存到所述处理器的第一缓存中;
调整模块43,用于若确定从所述处理器的第一缓存中读取的指令存在对应的控制码,则根据所述控制码调整所述处理器的微结构,使得所述处理器的流水线不停顿。
举例来说,所述确定模块41具体包括:
第一确定单元411,用于从所述处理器的第二缓存中按序读取多条指令,根据指令与预译码值之间的对应关系,按序分别确定所述多条指令中每条指令对应的预译码值;
第二确定单元412,用于根据所述多条指令中每条指令对应的预译码值组成的序列,若确定存在特殊指令序列对应的预译码值序列,则确定所述多条指令中包括特殊指令序列;
第三确定单元413,用于根据所述特殊指令序列中各指令和控制码之间的对应关系,确定所述特殊指令序列中各指令对应的控制码。
举例来说,所述控制码包括但不限于关闭加载之后指令预测执行部件的代码或关闭分支预测部件的代码;
所述调整模块43具体用于:
根据关闭加载之后指令预测执行部件的代码,关闭加载之后所述处理器的指令预测执行部件;或
根据关闭分支预测部件的代码,关闭所述处理器的分支预测部件。
本发明实施例通过对从处理器的第二缓存中按序读取多条指令,检测是否存在特殊指令序列,若存在特殊指令序列,则确定所述特殊指令序列中各指令对应的控制码;并将所述特殊指令序列中各指令及其对应的控制码保存到所述处理器的第一缓存中;之后,若确定从所述处理器的第一缓存中读取的指令存在对应的控制码,则根据所述控制码调整所述处理器的微结构;
由于本实施例的控制码是为了避免当某些特殊指令序列进入处理器的流水线时会造成流水线停顿的问题,针对某些特殊指令序列中的各指令设计的,例如,当检测出特殊指令序列<load,load,load>即将进入处理器的流水线时,此时,处理器可以关闭加载之后所述处理器的指令预测执行部件,从而避免在执行load指令时造成处理器的流水线停顿的问题;又例如,当检测出特殊指令序列<branch,store,load,compare>即将进入处理器的流水线时,为了避免分支预测部件的分支预测失误,处理器可以关闭分支预测部件,从而可以避免在执行branch指令时造成的分支预测失误;因此,可以优化处理器执行指令的工作效率。
本发明实施例还提供一种处理器,包括:图4所示实施例所述的指令处理装置,详细内容不再赘述。
图5为本发明另一实施例提供的处理器的结构示意图,如图5所示,包括:第一缓存器51、第二缓存器52、预译码器53和特殊指令序列检测器54;第一缓存器51、第二缓存器52、预译码器53和特殊指令序列检测器54之间通过通信总线进行连接。
其中,第二缓存器52,用于按序连续读取多条指令;
预译码器53,用于根据第二缓存器52按序读取的多条指令,利用指令与预译码值之间的对应关系,按序分别确定该多条指令对应的预译码值;
特殊指令序列检测器54,用于根据预译码器53按序分别确定的多条指令对应的预译码值组成的序列,若确定存在特殊指令序列对应的预译码值序列,则确定该多条指令中存在特殊指令序列,则进一步根据该特殊指令序列与该特殊指令序列中各指令的控制码之间的对应关系,确定该特殊指令序列中各指令对应的控制码;
第一缓存器51,用于保存特殊指令序列检测器54确定的特殊指令序列中各指令及其对应的控制码;
需要说明的是,第一缓存器51,还用于保存上述多条指令中除特殊指令序列之外的其他指令。
对应地,当第一缓存器51中保存的指令进入处理器的流水线时,若确定进入处理器的流水线的指令存在对应的控制码,则根据控制码调整该处理器的微结构,使得处理器的流水线不停顿。
举例来说,第一缓存器51可以是I-Cache,第二缓存器52可以是L2CACHE。
举例来说,上述特殊指令序列包括但不限于<load,load,load>指令序列和<branch,store,load,compare>指令序列。
举例来说,若所述特殊指令序列为<load,load,load>指令序列时,则特殊指令序列<load,load,load>中各load指令的控制码为关掉加载之后的指令预测执行部件的代码,相应地,根据load指令的控制码,掉加载之后的指令预测执行部件;
举例来说,若所述特殊指令序列为<branch,store,load,compare>指令序列时,则<branch,store,load,compare>中branch指令的控制码为关闭分支预测部件的代码,相应地,根据branch指令的控制码,关闭分支预测部件。
本发明实施例通过对从处理器的第二缓存器中按序读取多条指令,检测是否存在特殊指令序列,若存在特殊指令序列,则确定所述特殊指令序列中各指令对应的控制码;并将所述特殊指令序列中各指令及其对应的控制码绑定后保存到所述处理器的第一缓存器中;之后,当从所述处理器的第一缓存器中读取的指令中绑定有对应的控制码,则根据所述控制码调整所述处理器的微结构;
由于本实施例的控制码是为了避免当某些特殊指令序列进入处理器的流水线时会造成流水线停顿的问题,针对某些特殊指令序列中的各指令设计的,例如,当检测出特殊指令序列<load,load,load>即将进入处理器的流水线时,此时,处理器可以关闭加载之后所述处理器的指令预测执行部件,从而避免在执行load指令时造成处理器的流水线停顿的问题;又例如,当检测出特殊指令序列<branch,store,load,compare>即将进入处理器的流水线时,为了避免分支预测部件的分支预测失误,处理器可以关闭分支预测部件,从而可以避免在执行branch指令时造成的分支预测失误;因此,可以优化处理器执行指令的工作效率。
本发明实施例还提供一种终端设备,包括:图5所示实施例所述的处理器,详细内容不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以以代码的形式存储在一个计算机可读取存储介质中。上述代码存储在一个计算机可读存储介质中,包括若干指令用以使处理器或硬件电路执行本发明各个实施例所述方法的部分或全部步骤。而前述的存储介质包括:通用串行总线接口的无需物理驱动器的微型高容量移动存储盘、移动硬盘、只读存储器(英文:Read-Only Memory,简称ROM)、随机存取存储器(英文:Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的保护范围。

Claims (10)

1.一种指令处理方法,其特征在于,包括:
从处理器的第二缓存中按序读取多条指令,若确定所述多条指令中存在特殊指令序列,则确定所述特殊指令序列中各指令对应的控制码;
将所述特殊指令序列中各指令及其对应的控制码保存到所述处理器的第一缓存中;
若确定从所述处理器的第一缓存中读取的指令存在对应的控制码,则根据所述控制码调整所述处理器的微结构,使得所述处理器的流水线不发生停顿;当执行完特殊指令序列之后,开启处理器的指令预测执行部件或分支预测部件;
所述特殊指令序列是指造成所述处理器的流水线停顿的特殊指令序列;所述特殊指令序列包括连续出现的load指令或包含branch的指令。
2.根据权利要求1所述的方法,其特征在于,所述从处理器的第二缓存中按序读取多条指令,若确定所述多条指令中存在特殊指令序列,则确定所述特殊指令序列中各指令对应的控制码,包括:
从所述处理器的第二缓存中按序读取多条指令,根据指令与预译码值之间的对应关系,按序分别确定所述多条指令中每条指令对应的预译码值;
在所述多条指令所对应的预译码值组成的序列中,若确定存在特殊指令序列对应的预译码值序列,则确定所述多条指令中包括特殊指令序列;
根据所述特殊指令序列中各指令和控制码之间的对应关系,确定所述特殊指令序列中各指令对应的控制码。
3.根据权利要求1-2中任一项所述的方法,其特征在于,所述控制码包括关闭加载之后指令预测执行部件的代码或关闭分支预测部件的代码;若所述特殊指令序列包括连续出现的load指令;
则所述根据所述控制码调整所述处理器的微结构,包括:
根据所述关闭加载之后指令预测执行部件的代码,关闭加载之后所述处理器的指令预测执行部件。
4.根据权利要求1-2中任一项所述的方法,其特征在于,所述控制码包括关闭加载之后指令预测执行部件的代码或关闭分支预测部件的代码;若所述特殊指令序列包括包含branch的指令;
则所述根据所述控制码调整所述处理器的微结构,包括:
根据所述关闭分支预测部件的代码,关闭所述处理器的分支预测部件。
5.一种指令处理装置,其特征在于,包括:
确定模块,用于从处理器的第二缓存中按序读取多条指令,若确定所述多条指令中存在特殊指令序列,则确定所述特殊指令序列中各指令对应的控制码;
保存模块,用于将所述特殊指令序列中各指令及其对应的控制码保存到所述处理器的第一缓存中;
调整模块,用于若确定从所述处理器的第一缓存中读取的指令存在对应的控制码,则根据所述控制码调整所述处理器的微结构,使得所述处理器的流水线不停顿;当执行完特殊指令序列之后,开启处理器的分支预测部件;
所述特殊指令序列是指造成所述处理器的流水线停顿的特殊指令序列;所述特殊指令序列包括连续出现的load指令或包含branch的指令。
6.根据权利要求5所述的装置,其特征在于,所述确定模块具体包括:
第一确定单元,用于从所述处理器的第二缓存中按序读取多条指令,根据指令与预译码值之间的对应关系,按序分别确定所述多条指令中每条指令对应的预译码值;
第二确定单元,用于根据所述多条指令中每条指令对应的预译码值组成的序列,若确定存在特殊指令序列对应的预译码值序列,则确定所述多条指令中包括特殊指令序列;
第三确定单元,用于根据所述特殊指令序列中各指令和控制码之间的对应关系,确定所述特殊指令序列中各指令对应的控制码。
7.根据权利要求5-6中任一项所述的装置,其特征在于,所述控制码包括关闭加载之后指令预测执行部件的代码或关闭分支预测部件的代码;若所述特殊指令序列包括连续出现的load指令;
所述调整模块具体用于:
根据所述关闭加载之后指令预测执行部件的代码,关闭加载之后所述处理器的指令预测执行部件。
8.根据权利要求5-6中任一项所述的装置,其特征在于,所述控制码包括关闭加载之后指令预测执行部件的代码或关闭分支预测部件的代码;若所述特殊指令序列包括包含branch的指令;
所述调整模块具体用于:
根据所述关闭分支预测部件的代码,关闭所述处理器的分支预测部件。
9.一种处理器,其特征在于,包括:如权利要求5-8任一项所述的指令处理装置。
10.一种终端设备,其特征在于,包括:如权利要求9所述的处理器。
CN201310389245.3A 2013-08-30 2013-08-30 指令处理方法及装置、处理器 Active CN104423927B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201310389245.3A CN104423927B (zh) 2013-08-30 2013-08-30 指令处理方法及装置、处理器
PCT/CN2014/083879 WO2015027809A1 (zh) 2013-08-30 2014-08-07 指令处理方法及装置、处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310389245.3A CN104423927B (zh) 2013-08-30 2013-08-30 指令处理方法及装置、处理器

Publications (2)

Publication Number Publication Date
CN104423927A CN104423927A (zh) 2015-03-18
CN104423927B true CN104423927B (zh) 2018-07-13

Family

ID=52585536

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310389245.3A Active CN104423927B (zh) 2013-08-30 2013-08-30 指令处理方法及装置、处理器

Country Status (2)

Country Link
CN (1) CN104423927B (zh)
WO (1) WO2015027809A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019200618A1 (zh) * 2018-04-21 2019-10-24 华为技术有限公司 一种指令执行方法及装置
CN110688160B (zh) * 2019-09-04 2021-11-19 苏州浪潮智能科技有限公司 一种指令流水线处理方法、系统、设备及计算机存储介质
CN111783954B (zh) * 2020-06-30 2023-05-02 安徽寒武纪信息科技有限公司 一种用于确定神经网络的性能的方法、电子设备和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101377734A (zh) * 2008-07-10 2009-03-04 威盛电子股份有限公司 运算系统及设定运算系统的方法
CN101770358A (zh) * 2010-02-10 2010-07-07 北京龙芯中科技术服务中心有限公司 微处理器跳转指令分支预测处理系统和方法
CN103150146A (zh) * 2013-01-31 2013-06-12 西安电子科技大学 基于可扩展处理器架构的专用指令集处理器及其实现方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7873818B2 (en) * 2008-02-22 2011-01-18 International Business Machines Corporation System and method for search area confined branch prediction

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101377734A (zh) * 2008-07-10 2009-03-04 威盛电子股份有限公司 运算系统及设定运算系统的方法
CN101770358A (zh) * 2010-02-10 2010-07-07 北京龙芯中科技术服务中心有限公司 微处理器跳转指令分支预测处理系统和方法
CN103150146A (zh) * 2013-01-31 2013-06-12 西安电子科技大学 基于可扩展处理器架构的专用指令集处理器及其实现方法

Also Published As

Publication number Publication date
CN104423927A (zh) 2015-03-18
WO2015027809A1 (zh) 2015-03-05

Similar Documents

Publication Publication Date Title
CA2253560C (en) Method relating to handling of conditional jumps in a multi-stage pipeline arrangement
CN102934075B (zh) 用于使用预先通知技术改变程序的顺序流程的方法和设备
US9632788B2 (en) Buffering instructions of a single branch, backwards short loop within a virtual loop buffer
CN104423927B (zh) 指令处理方法及装置、处理器
CN109918130A (zh) 一种具有快速数据旁路结构的四级流水线risc-v处理器
CN101965554A (zh) 选择性地提交已执行指令的结果的系统和方法
CN105975252A (zh) 一种处理指令的流水线的实现方法、装置及处理器
KR101026978B1 (ko) 리턴 스택을 운용하는 방법 및 장치
CN1761940B (zh) 指令处理设备,指令执行方法和装置,指令编译方法和装置
US7103757B1 (en) System, circuit, and method for adjusting the prefetch instruction rate of a prefetch unit
CN106843816B (zh) 一种分支预测控制方法及装置
US20090089551A1 (en) Apparatus and method of avoiding bank conflict in single-port multi-bank memory system
JP5012084B2 (ja) 情報処理装置
JPH0769812B2 (ja) データ処理装置
CN103294567A (zh) 一种单发射五级流水处理器的精确异常处理方法
US7370136B2 (en) Efficient and flexible sequencing of data processing units extending VLIW architecture
CN102292705B (zh) 网络处理器的指令处理方法和网络处理器
US20020188817A1 (en) Store buffer pipeline
CN106796505B (zh) 指令执行的方法及处理器
EP3646172A1 (en) Multi-tagged branch prediction table
CN103744642A (zh) 用于改进处理器中直接跳转的方法及系统
JP2010015375A (ja) メモリ制御回路および集積回路
JP2003263313A (ja) デジタルプロセッサおよび命令の選択方法
KR100861073B1 (ko) 적응형 파이프라인을 적용한 병렬 처리 프로세서 구조
CN105679320B (zh) 用于家用电器的语音控制装置和语音控制方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant