指令处理方法及装置、处理器的制造方法

文档序号:6509673阅读:224来源:国知局
指令处理方法及装置、处理器的制造方法
【专利摘要】本发明公开了指令处理方法及装置、处理器,当从处理器的第二缓存中按序读取多条指令时,若确定所述多条指令中存在特殊指令序列,则确定所述特殊指令序列中各指令对应的控制码;将所述特殊指令序列中各指令及其对应的控制码保存到所述处理器的第一缓存中;若确定从所述处理器的第一缓存中读取的指令存在对应的控制码,则根据所述控制码调整所述处理器的微结构,使得所述处理器的流水线不停顿,可以优化处理器执行指令的工作效率。
【专利说明】指令处理方法及装置、处理器

【技术领域】
[0001] 本发明实施例涉及计算机【技术领域】,尤其涉及一种指令处理方法及装置、处理器。

【背景技术】
[0002] 基于数据挖掘方法研究处理器硬件发现:一些特殊指令序列存在缓存缺失率高、 分支预测失误率高等问题,例如,〈load,load,load〉指令序列中的load指令由于缓存缺 失会导致处理器流水线的停顿;又例如,〈branch,store,load,compare〉指令序列中的 branch指令由于分支预测失误也会导致处理器流水线的停顿。
[0003] 由此可见,现有处理器的一些特殊指令序列由于缓存缺失率高或分支预测失误等 原因导致处理器工作流水线的停顿,从而影响了处理器执行指令的工作效率。


【发明内容】

[0004] 本发明提供一种指令处理方法及装置、处理器,用以解决现有处理器的一些指令 序列由于缓存缺失率高或分支预测失误等原因导致处理器工作流水线的停顿,以及处理器 执行指令序列的效率低的问题。
[0005] 第一方面,提供一种指令处理方法,包括:
[0006] 从处理器的第二缓存中按序读取多条指令,若确定所述多条指令中存在特殊指令 序列,则确定所述特殊指令序列中各指令对应的控制码;
[0007] 将所述特殊指令序列中各指令及其对应的控制码保存到所述处理器的第一缓存 中;
[0008] 若确定从所述处理器的第一缓存中读取的指令存在对应的控制码,则根据所述控 制码调整所述处理器的微结构,使得所述处理器的流水线不停顿;
[0009] 所述特殊指令序列是指造成所述处理器的流水线停顿的特殊指令序列。
[0010] 基于第一方面,在第一种可能的实现方式中,所述从处理器的第二缓存中按序读 取多条指令,若确定所述多条指令中存在特殊指令序列,则确定所述特殊指令序列中各指 令对应的控制码,包括:
[0011] 从所述处理器的第二缓存中按序读取多条指令,根据指令与预译码值之间的对应 关系,按序分别确定所述多条指令中每条指令对应的预译码值;
[0012] 根据所述多条指令中每条指令对应的预译码值组成的序列,若确定存在特殊指令 序列对应的预译码值序列,则确定所述多条指令中包括特殊指令序列;
[0013] 根据所述特殊指令序列中各指令和控制码之间的对应关系,确定所述特殊指令序 列中各指令对应的控制码。
[0014] 基于第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式 中,所述控制码包括关闭加载之后指令预测执行部件的代码或关闭分支预测部件的代码;
[0015] 所述根据所述控制码调整所述处理器的微结构,包括:
[0016] 根据所述关闭加载之后指令预测执行部件的代码,关闭加载之后所述处理器的指 令预测执行部件;或
[0017] 根据所述关闭分支预测部件的代码,关闭所述处理器的分支预测部件。
[0018] 第二方面,提供一种指令处理装置,包括:
[0019] 确定模块,用于从处理器的第二缓存中按序读取多条指令,若确定所述多条指令 中存在特殊指令序列,则确定所述特殊指令序列中各指令对应的控制码;
[0020] 保存模块,用于将所述特殊指令序列中各指令及其对应的控制码保存到所述处理 器的第一缓存中;
[0021] 调整模块,用于若确定从所述处理器的第一缓存中读取的指令存在对应的控制 码,则根据所述控制码调整所述处理器的微结构,使得所述处理器的流水线不停顿;
[0022] 所述特殊指令序列是指造成所述处理器的流水线停顿的特殊指令序列。
[0023] 基于第二方面,在第一种可能的实现方式中,所述确定模块具体包括:
[0024] 第一确定单元,用于从所述处理器的第二缓存中按序读取多条指令,根据指令与 预译码值之间的对应关系,按序分别确定所述多条指令中每条指令对应的预译码值;
[0025] 第二确定单元,用于根据所述多条指令中每条指令对应的预译码值组成的序列, 若确定存在特殊指令序列对应的预译码值序列,则确定所述多条指令中包括特殊指令序 列;
[0026] 第三确定单元,用于根据所述特殊指令序列中各指令和控制码之间的对应关系, 确定所述特殊指令序列中各指令对应的控制码。
[0027] 基于第二方面或第二方面的第一种可能的实现方式,在第二种可能的实现方式 中,所述控制码包括关闭加载之后指令预测执行部件的代码或关闭分支预测部件的代码;[0028] 所述调整模块具体用于:
[0029] 根据所述关闭加载之后指令预测执行部件的代码,关闭加载之后所述处理器的指 令预测执行部件;或
[0030] 根据所述关闭分支预测部件的代码,关闭所述处理器的分支预测部件。
[0031] 第三方面,提供一种处理器,包括:上述指令处理装置。
[0032] 第四方面,提供一种终端设备,包括:上述处理器。
[0033] 本发明实施例通过对从处理器的第二缓存中按序读取多条指令,检测是否存在特 殊指令序列,若存在特殊指令序列,则确定所述特殊指令序列中各指令对应的控制码;并将 所述特殊指令序列中各指令及其对应的控制码保存到所述处理器的第一缓存中;之后,若 确定从所述处理器的第一缓存中读取的指令存在对应的控制码,则根据所述控制码调整所 述处理器的微结构,使得所述处理器的流水线不停顿;上述提供的方案可以避免在执行特 殊指令序列时,由于缓存缺失或分支预测失误等原因造成的处理器流水线停顿的问题;因 此,可以优化处理器执行指令的工作效率。

【专利附图】

【附图说明】
[0034] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发 明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以 根据这些附图获得其他的附图。
[0035] 图1为本发明一实施例提供的指令处理方法的流程示意图;
[0036] 图2为本发明另一实施例提供的指令处理装置的结构示意图;
[0037] 图3为图2所示实施例的原理框图;
[0038] 图4为本发明另一实施例提供的指令处理装置的结构示意图;
[0039] 图5为本发明另一实施例提供的处理器的结构示意图。

【具体实施方式】
[0040] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例 中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是 本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员 在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0041] 本发明的说明书和权利要求书及上述附图中的术语"第一"、"第二"、"第三""第 四"等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该 理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以 除了在这里图示或描述的那些以外的顺序实施。此外,术语"包括"和"具有"以及他们的任 何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、 产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于 这些过程、方法、产品或设备固有的其它步骤或单元。
[0042] 现有的处理器微结构设计主要是根据已经执行过的历史指令预测即将执行的指 令,调整对即将执行指令流的处理策略(例如预测跳转指令的跳转方向与跳转地址),从而 对处理器的指令流的整体执行效率进行优化。
[0043] 然而,有些特殊指令序列容易造成处理器的流水线的停顿,例如,指令序列 〈load,load,load〉中的Load指令就是要从存储器中取回数据到寄存器,如果数据高速缓 冲存储器(Cache)中包含这需要取回的数据,处理器执行指令的流水线就可以流畅运行,继 续执行Load指令之后进入流水线的指令。如果数据Cache不包含这一需要取回的数据,则 会发生一次数据缓存缺失(CacheMiss),这样就需要刷新处理器执行指令的流水线,也就 是说,在Load指令之后进入流水线的指令都要被清除掉,这样就导致了处理器执行指令的 流水线停顿。
[0044] 又例如,指令序列〈branch,store,load,compare〉中的branch指令是指进 行分支跳转的指令,根据现有的处理器微结构设计,当branch指令进入流水线时,由 于在处理器完成初始化工作以后,通常分支预测部件就开启,因此,会根据分支预测部 件提供的分支跳转方向,预测下一条指令的位置。而实验数据表明,当处理器在执行 〈branch,store,load,compare〉指令序列时,错误地将不需要执行的指令送入流水线,发现 分支预测错误后还需要清除掉这些指令,这样就导致了处理器流水线停顿。。
[0045] 上述仅仅以指令序列〈load,load,load〉、〈branch,store,load,compare〉为例进 行说明,可以理解,本领域的普通技术人员根据上述指令序列所联想到其他导致由于缓存 缺失率高或分支预测失误导致的指令序列也属于本专利的保护范围。
[0046] 由此可知,现有的处理器的微结构设计中,当出现某些特殊指令序列时,会由于缓 存缺失率高或分支预测失误或其他原因导致处理器的流水线停顿的问题,从而降低了处理 器执行指令的工作效率。
[0047] 基于上述现有技术存在的问题,本发明实施例提供一种指令处理方法,可以解决 在现有的处理器流水线微结构设计中,当出现某些特殊指令序列时,存在处理器的流水线 停顿的问题,可以优化处理器执行指令的工作效率。
[0048] 需要说明的是,本实施例所述的处理器的微结构(MicroArchitecture)具体是指 处理器内部的一些功能部件的集合,其中,功能部件例如包括指令预测执行部件或分支预 测部件等。
[0049]图1为本发明一实施例提供的指令处理方法的流程示意图,如图1所示,本实施例 的指令处理方法可以包括:
[0050] 101、从处理器的第二缓存中按序读取多条指令,若确定所述多条指令中存在特殊 指令序列,则确定所述特殊指令序列中各指令对应的控制码;
[0051] 在本发明的一个可选的实施方式中,步骤101具体包括:
[0052] 从所述处理器的第二缓存中按序读取多条指令,根据指令与预译码值之间的对应 关系,按序分别确定所述多条指令中每条指令对应的预译码值;
[0053] 根据所述多条指令中每条指令对应的预译码值组成的序列,若确定存在特殊指令 序列对应的预译码值序列,则确定所述多条指令中包括特殊指令序列;
[0054] 根据所述特殊指令序列中各指令和控制码之间的对应关系,确定所述特殊指令序 列中各指令对应的控制码。
[0055] 需要说明的是,本实施例所述的第二缓存例如为二级缓存L2Cache。
[0056] 需要说明的是,本实施例所述的特殊指令序列包括但不限于〈load,load,load〉 指令序列和〈branch,store,load,compare〉指令序列;
[0057] 其中,特殊指令序列〈load,load,load〉中的load指令的控制码为关闭加载之后 指令预测执行部件的代码;
[0058] 特殊指令序列〈branch,store,load,compare〉中branch指令的控制码为关闭分 支预测部件的代码,其中,需要说明的是,该特殊指令序列〈branch,store,load,compare〉 中的其他三个store、load、compare指令对应的控制码可以默认设为0,表示不需要进行处 理器的微结构的调整。
[0059] 102、将所述特殊指令序列中各指令及其对应的控制码保存到所述处理器的第一 缓存中;
[0060] 需要说明的是,本实施例所述的第一缓存例如为指令高速缓冲存储器 (Instruction-Cache,I-Cache)〇
[0061] 103、若确定所述处理器的第一缓存中读取的指令存在对应的控制码,则根据所述 控制码调整所述处理器的微结构,使得所述处理器的流水线不停顿。
[0062] 从处理器的第一缓存中读取的指令具体是指进入处理器的流水线的指令,也就是 即将执行的指令;
[0063] 假设即将执行的指令为特殊指令序列中〈load,load,load〉中的load指令时,为 了避免在执行load指令时,由于CacheMiss可能造成处理器的流水线停顿的问题,该load指令对应的控制码为关闭加载之后指令预测执行部件的代码;因此,步骤103具体为:根据 关闭加载之后指令预测执行部件的代码,关闭加载之后所述处理器的指令预测执行部件。
[0064] 需要说明的是,当执行完特殊指令序列中〈load,load,load〉中的三个load之后, 需要重新开启加载之后所述处理器的指令预测执行部件。
[0065] 假设即将执行的指令为特殊指令序列中〈branch,store,load,compare〉中的 branch指令时,为了避免在执行branch指令时分支预测部件的分支预测失误,该branch指 令对应的控制码为关闭分支预测部件的代码;因此,步骤103具体为:根据关闭分支预测部 件的代码,关闭所述处理器的分支预测部件。
[0066] 需要说明的是,当执行完特殊指令序列中〈branch,store,load,compare〉中的 branch指令之后,需要重新开启处理器的分支预测部件。
[0067] 本发明实施例通过对从处理器的第二缓存中按序读取多条指令,检测是否存在特 殊指令序列,若存在特殊指令序列,则确定所述特殊指令序列中各指令对应的控制码;并将 所述特殊指令序列中各指令及其对应的控制码保存到所述处理器的第一缓存中;之后,若 确定从所述处理器的第一缓存中读取的指令存在对应的控制码,则根据所述控制码调整所 述处理器的微结构;
[0068] 由于本实施例的控制码是为了避免当某些特殊指令序列进入处理器的流水线时 会造成流水线停顿的问题,针对某些特殊指令序列中的各指令设计的,例如,当检测出特殊 指令序列〈load,load,load〉即将进入处理器的流水线时,此时,处理器可以关闭加载之后 所述处理器的流水线的指令预测执行部件,从而避免在执行load指令时造成处理器的流 水线停顿的问题;又例如,当检测出特殊指令序列〈branch,store,load,compare〉即将进 入处理器的流水线时,为了避免分支预测部件的分支预测失误,处理器可以关闭分支预测 部件,从而可以避免在执行branch指令时造成的分支预测失误;因此,可以优化处理器执 行指令的工作效率。
[0069] 图2为本发明另一实施例提供的指令处理方法的流程示意图,图3为图2所示实 施例的原理框图,如图2和图3所示,本实施例的指令处理方法是图1所示实施例的具体实 现,包括:
[0070] 201、在第一个时钟周期内从L2Cache中按序读取4条指令。
[0071] 具体实现时,假设120&〇116读端口为16字段〇35^68),每条指令为4135^68,每个时 钟周期内只能读出4条指令(InstrO、Instrl、Instr2、Instr3)。
[0072] 202、确定第一个时钟周期内读取的4条指令对应的预译码值。
[0073] 表1为本发明实施例建立的第一关系对应表,如表1所不:
[0074]

【权利要求】
1. 一种指令处理方法,其特征在于,包括: 从处理器的第二缓存中按序读取多条指令,若确定所述多条指令中存在特殊指令序 列,则确定所述特殊指令序列中各指令对应的控制码; 将所述特殊指令序列中各指令及其对应的控制码保存到所述处理器的第一缓存中; 若确定从所述处理器的第一缓存中读取的指令存在对应的控制码,则根据所述控制码 调整所述处理器的微结构,使得所述处理器的流水线不发生停顿; 所述特殊指令序列是指造成所述处理器的流水线停顿的特殊指令序列。
2. 根据权利要求1所述的方法,其特征在于,所述从处理器的第二缓存中按序读取多 条指令,若确定所述多条指令中存在特殊指令序列,则确定所述特殊指令序列中各指令对 应的控制码,包括: 从所述处理器的第二缓存中按序读取多条指令,根据指令与预译码值之间的对应关 系,按序分别确定所述多条指令中每条指令对应的预译码值; 在所述多条指令所对应的预译码值组成的序列中,若确定存在特殊指令序列对应的预 译码值序列,则确定所述多条指令中包括特殊指令序列; 根据所述特殊指令序列中各指令和控制码之间的对应关系,确定所述特殊指令序列中 各指令对应的控制码。
3. 根据权利要求1-2中任一项所述的方法,其特征在于,所述控制码包括关闭加载之 后指令预测执行部件的代码或关闭分支预测部件的代码; 所述根据所述控制码调整所述处理器的微结构,包括: 根据所述关闭加载之后指令预测执行部件的代码,关闭加载之后所述处理器的指令预 测执行部件;或 根据所述关闭分支预测部件的代码,关闭所述处理器的分支预测部件。
4. 一种指令处理装置,其特征在于,包括: 确定模块,用于从处理器的第二缓存中按序读取多条指令,若确定所述多条指令中存 在特殊指令序列,则确定所述特殊指令序列中各指令对应的控制码; 保存模块,用于将所述特殊指令序列中各指令及其对应的控制码保存到所述处理器的 第一缓存中; 调整模块,用于若确定从所述处理器的第一缓存中读取的指令存在对应的控制码,则 根据所述控制码调整所述处理器的微结构,使得所述处理器的流水线不停顿; 所述特殊指令序列是指造成所述处理器的流水线停顿的特殊指令序列。
5. 根据权利要求4所述的装置,其特征在于,所述确定模块具体包括: 第一确定单元,用于从所述处理器的第二缓存中按序读取多条指令,根据指令与预译 码值之间的对应关系,按序分别确定所述多条指令中每条指令对应的预译码值; 第二确定单元,用于根据所述多条指令中每条指令对应的预译码值组成的序列,若确 定存在特殊指令序列对应的预译码值序列,则确定所述多条指令中包括特殊指令序列; 第三确定单元,用于根据所述特殊指令序列中各指令和控制码之间的对应关系,确定 所述特殊指令序列中各指令对应的控制码。
6. 根据权利要求4-5中任一项所述的装置,其特征在于,所述控制码包括关闭加载之 后指令预测执行部件的代码或关闭分支预测部件的代码; 所述调整模块具体用于: 根据所述关闭加载之后指令预测执行部件的代码,关闭加载之后所述处理器的指令预 测执行部件;或 根据所述关闭分支预测部件的代码,关闭所述处理器的分支预测部件。
7. -种处理器,其特征在于,包括:如权利要求4-6任一项所述的指令处理装置。
8. -种终端设备,其特征在于,包括:如权利要求7所述的处理器。
【文档编号】G06F9/38GK104423927SQ201310389245
【公开日】2015年3月18日 申请日期:2013年8月30日 优先权日:2013年8月30日
【发明者】侯锐, 郭旭斌, 冯煜晶, 王曦爽, 李晔 申请人:华为技术有限公司, 中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1