程序与指令处理制造技术

技术编号:39679214 阅读:13 留言:0更新日期:2023-12-11 18:56
本公开实施例提供了一种程序处理方法与装置

【技术实现步骤摘要】
程序与指令处理、训练与预测方法与装置、处理器


[0001]本公开的一个或多个实施例涉及一种程序处理方法与装置

指令处理方法

取指模式的训练方法

取指模式的预测方法和处理器


技术介绍

[0002]现代处理器一般采用流水线
(Pipeline)
技术并行处理指令,以加速指令处理效率

处理器核内部包括多个流水阶段,比如,在流水线送入各种来源的程序计数器,通过多路选择器
(Mux)
选择出下一程序计数器
(PC)
之后,该程序计数器对应的指令要经过分支预测
(Branch prediction)、
指令提取
(Instruction fetch)、
指令译码
(Decode)、
指令分派与重命名
(Dispatch and Rename)、
指令执行
(Execute)、
指令结束
(Retire)


[0003]在处理分支指令时,为避免等待分支指令执行结果以决定分支方向的情况,可以采用分支预测
(Branch Prediction))
技术

通过分支预测技术可预测分支指令,包括分支方向等的分支预测结果,从而推动处理器进行下一步取指操作,避免由于等待分支指令的执行结果而导致的流水线延迟

现代处理器所采用的分支预测技术一般具有多级分支预测逻辑,在进行分支预测时,访问的分支预测逻辑的级数越高,分支预测的预测准确度越高

[0004]处理器内核在微架构内将每一条架构指令
(instruction)
翻译为一条或者多条微指令
(micro

op,uOp)
,每条微指令只执行有限的操作,这样可以保证不同的微指令发送到对应的执行部件,同时每个微指令的执行流水级比较短,并且多个微指令之间可以并行和乱序操作,从而提高处理器内核的性能


技术实现思路

[0005]本公开至少一实施例提供了一种程序处理方法,该程序处理方法包括:在目标程序中的第一位置创建
OP_BUILD_START
指令;在所述目标程序中位于所述第一位置后的第二位置创建与所述
OP_BUILD_START
指令对应的
OP_BUILD_END
指令,其中,所述
OP_BUILD_START
指令用于指示处理器将所述
OP_BUILD_START
指令之后的指令训练到微指令缓存中,所述
OP_BUILD_END
指令用于通知所述处理器从所述
OP_BUILD_END
指令之后的指令停止被训练到所述微指令缓存中

[0006]例如,本公开至少一实施例提供的程序处理方法还包括:在所述目标程序中确定对象循环体,将所述对象循环体的入口位置作为所述第一位置,将所述对象循环体的出口位置作为所述第二位置

[0007]例如,本公开至少一实施例提供的程序处理方法中,所述目标程序包括第一循环体和第二循环体;在所述目标程序中确定对象循环体,包括:响应于在所述第一循环体的执行次数或者指令数大于所述第二循环体的执行次数或者指令数,将所述第一循环体确定为所述对象循环体

[0008]例如,本公开至少一实施例提供的程序处理方法还包括:在所述目标程序中确定对象循环体;响应于所述对象循环体的程序指令数大于所述微指令缓存的存储容量,且响
应于所述对象循环体的程序指令数减所述微指令缓存存储的程序指令数的差值达到阈值,将所述对象循环体的入口位置作为所述第一位置,在对象循环体内部确定所述第二位置

[0009]例如,本公开至少一实施例提供的程序处理方法中,所述
OP_BUILD_START
指令和所述
OP_BUILD_END
指令均为空指令

[0010]例如,本公开至少一实施例提供的程序处理方法中,编译器被用于在所述第一位置创建所述
OP_BUILD_START
指令以及在所述第二位置创建所述
OP_BUILD_END
指令

[0011]本公开至少一实施例提供了一种指令处理方法,该指令处理方法包括:响应于在执行目标程序的过程中识别到
OP_BUILD_START
指令,将所述
OP_BUILD_START
指令之后的指令训练到微指令缓存中;响应于在执行所述目标程序的过程中识别到对应于所述
OP_BUILD_START
指令的
OP_BUILD_END
指令,将所述
OP_BUILD_END
指令之后的指令停止被训练到所述微指令缓存中,其中,所述
OP_BUILD_START
指令在所述目标程序的第一位置,所述
OP_BUILD_END
指令在所述目标程序中在所述第一位置之后的第二位置

[0012]例如,本公开至少一实施例提供的指令处理方法,其中,所述目标程序包括对象循环体,所述对象循环体的入口位置为所述第一位置,所述对象循环体的出口位置为所述第二位置

[0013]例如,本公开至少一实施例提供的指令处理方法还包括:响应于对所述
OP_BUILD_START
指令之后的第一对象指令的微指令缓存取指缺失而进入指令缓存取指模式,确定所述第一对象指令是否跳出所述对象循环体;响应于所述第一对象指令未跳出所述对象循环体,将所述第一对象指令以及所述第一对象指令之后的指令继续训练到所述微指令缓存中

[0014]本公开至少一实施例提供了一种用于处理器的取指模式的训练方法,在执行包括
OP_BUILD_START
指令和
OP_BUILD_END
指令的目标程序的过程中,该训练方法包括:获取在所述
OP_BUILD_END
指令之前紧邻的对象分支指令的分支指令信息;根据所述分支指令信息确定所述对象分支指令是否跳转以确定是否更新与所述对象分支指令对应的启动微指令缓存取指模式的信心值的方式;读取与所述对象分支指令对应的分支预测缓冲表项并写入更新后的所述启动微指令缓存取指模式的信心值,其中,所述
OP_BUILD_START
指令用于指示处理器将所述
OP_BUILD_START
指令之后的指令训练到微指令缓存中,所述
OP_BUILD_END
指令用于通知所述处理器从所述
OP_BUILD_END
指令之后的指令停止被训练到所述微指令缓存中,所述
OP_BUILD_START...

【技术保护点】

【技术特征摘要】
1.
一种程序处理方法,包括:在目标程序中的第一位置创建
OP_BUILD_START
指令;在所述目标程序中位于所述第一位置后的第二位置创建与所述
OP_BUILD_START
指令对应的
OP_BUILD_END
指令,其中,所述
OP_BUILD_START
指令用于指示处理器将所述
OP_BUILD_START
指令之后的指令训练到微指令缓存中,所述
OP_BUILD_END
指令用于通知所述处理器从所述
OP_BUILD_END
指令之后的指令停止被训练到所述微指令缓存中
。2.
根据权利要求1所述的程序处理方法,还包括:在所述目标程序中确定对象循环体,将所述对象循环体的入口位置作为所述第一位置,将所述对象循环体的出口位置作为所述第二位置
。3.
根据权利要求2所述的程序处理方法,其中,所述目标程序包括第一循环体和第二循环体,在所述目标程序中确定对象循环体,包括:响应于在所述第一循环体的执行次数或者指令数大于所述第二循环体的执行次数或者指令数,将所述第一循环体确定为所述对象循环体
。4.
根据权利要求1所述的程序处理方法,还包括:在所述目标程序中确定对象循环体;响应于所述对象循环体的程序指令数大于所述微指令缓存的存储容量,且响应于所述对象循环体的程序指令数减所述微指令缓存存储的程序指令数的差值达到阈值,将所述对象循环体的入口位置作为所述第一位置,在所述对象循环体内部确定所述第二位置
。5.
根据权利要求1‑4任一所述的程序处理方法,其中,所述
OP_BUILD_START
指令和所述
OP_BUILD_END
指令均为空指令
。6.
根据权利要求1‑4任一所述的程序处理方法,其中,编译器被用于在所述第一位置创建所述
OP_BUILD_START
指令以及在所述第二位置创建所述
OP_BUILD_END
指令
。7.
一种指令处理方法,包括:响应于在执行目标程序的过程中识别到
OP_BUILD_START
指令,将所述
OP_BUILD_START
指令之后的指令训练到微指令缓存中;响应于在执行所述目标程序的过程中识别到对应于所述
OP_BUILD_START
指令的
OP_BUILD_END
指令,所述
OP_BUILD_END
指令之后的指令被停止训练到所述微指令缓存中,其中,所述
OP_BUILD_START
指令在所述目标程序的第一位置,所述
OP_BUILD_END
指令在所述目标程序中在所述第一位置之后的第二位置
。8.
根据权利要求7所述的指令处理方法,其中,所述目标程序包括对象循环体,所述对象循环体的入口位置为所述第一位置,所述对象循环体的出口位置为所述第二位置
。9.
根据权利要求8所述的指令处理方法,还包括:响应于对所述
OP_BUILD_START
指令之后的第一对象指令的微指令缓存取指缺失而进入指令缓存取指模式,确定所述第一对象指令是否跳出所述对象循环体;响应于所述第一对象指令未跳出所述对象循环体,将所述第一对象指令以及所述第一对象指令之后的指令继续训练到所述微指令缓存中

10.
一种用于处理器的取指模式的训练方法,在执行包括
OP_BUILD_START
指令和
OP_BUILD_END
指令的目标程序的过程中,包括:获取在所述
OP_BUILD_END
指令之前紧邻的对象分支指令的分支指令信息;根据所述分支指令信息确定所述对象分支指令是否跳转以确定是否更新与所述对象分支指令对应的启动微指令缓存取指模式的信心值的方式;读取与所述对象分支指令对应的分支预测缓冲表项并写入更新后的所述启动微指令缓存取指模式的信心值,其中,所述
OP_BUILD_START
指令用于指示处理器将所述
OP_BUILD_START
指令之后的指令训练到微指令缓存中,所述
OP_BUILD_END
指令用于通知所述处理器从所述
OP_BUILD_END
指令之后的指令停止被训练到所述微指令缓存中,所述
OP_BUILD_START
指令在所述目标程序的第一位置,所述
OP_BUILD_END
指令在所述目标程序中在所述第一位置之后的第二位置
。11.
根据权利要求
10
所述的训练方法,其中,获取在所述
OP_BUILD_END
指令之前紧邻的对象分支指令的分支指令信息,包括:当所述
OP_BUILD_END
指令到达释放阶段时,确定所述对象分支指令的分支指令信息
。12.
根据权利要求
11
所述的训练方法,其中,所述目标程序包括对象循环体,所述对象循环体的入口位置为所述第一位置,所述对象循环体的出口位置为所述第二位置
。13.
根据权利要求
12
所述的训练方法,还包括:响应于所述循环体的指令长度小于或等于所述...

【专利技术属性】
技术研发人员:张克松耿恒生
申请(专利权)人:海光信息技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1