处理器及其执行方法

文档序号:9750522阅读:592来源:国知局
处理器及其执行方法
【专利说明】 处理器及其执行方法
[0001]本申请是申请日为2014年9月29日、申请号为201410512577.0、发明名称为“循环预测器指导的循环缓冲器”的发明专利申请的分案申请。
技术领域
【背景技术】
[0002]计算机程序普遍包含循环。循环是通常被称为循环本体的、重复地运行的指令序列,该循环本体重复地运行直到导致循环退出并进行到接着该循环的下一条指令的条件(condit1n)发生为止。在机器语言级别,一般来说,循环以通常回到位于循环本体的开始处的指令的条件分支指令来结束,但是当条件发生时,循环不再被采用(not taken)并且向下执行顺序的下一条指令。例如,条件可以是被初始化为正值然后通过循环每次递减的变量达到O。
[0003]对于现代处理器,循环呈现潜在的性能问题,因为它们包括条件分支指令,尤其是对于流水线和/或超标量处理器。一般而言,为了足够快地取指和解码指令以将它们提供给运行指令的处理器的功能单元,取指单元必须预测指令流中条件分支指令的存在并预测它们的结果,即,它们是将被采用(taken)或是不被采用(not taken)以及它们的目标地址。如果条件分支指令被误预测,则误预测必须被纠正,当流水线的前端开始在被纠正的地址处取指和解码指令时,会造成执行单元由于缺乏要执行的指令而饥饿的一个时段,常被称作流水线气泡。另外,对执行发生之前的所获取的指令的解码可能是复杂的,尤其对于一些指令集架构,并且因此引入的延迟也可能导致流水线气泡。
[0004]现代处理器中另外关心的是功耗。这在很多环境中是存在的。例如,在诸如移动电话或笔记本电脑或平板电脑的电池供电的环境中,总是希望减少处理器功耗以便延长所需要的电池再充电之间的时间。又例如,在服务器环境中,除了环境考虑之外,相对大的-确实有时候巨大的-数量的服务器导致功耗方面非常显著的成本。如上面讨论的,包括循环本体指令的指令解码可能是复杂的,因此除了由取指逻辑和从其获取指令的指令高速缓存以及预测所获取的循环的条件分支指令的分支预测器所消耗的功率之外,解码逻辑需要消耗相当大量的功率。
[0005]因此,理想的是提供一种装置用于处理器在运行循环时提高性能和/或减少功耗。

【发明内容】

[0006]在本发明的一方面中提供了一种处理器。处理器包括指令高速缓存、执行引擎、指令缓冲器和循环预测器。循环预测器训练(train)分支指令来确定循环的经训练的循环计数。循环包括以分支指令的目标开始并以该分支指令结束的指令序列。循环预测器还判断循环的尺寸是否不大于指令缓冲器的尺寸。当循环的尺寸不大于指令缓冲器的尺寸时,处理器停止从指令高速缓存取指,将循环指令从指令缓冲器发送到执行引擎而不从指令高速缓存取指循环指令,维持一循环弹出计数,其指示分支指令从指令缓冲器被发送到执行引擎而不从指令高速缓存取指的次数,当循环弹出计数少于经训练的循环计数时预测分支指令为被采用,否则,则预测分支指令为不被采用。在另一个方面中,本发明提供了通过具有指令高速缓存、指令缓冲器和执行引擎的处理器执行的方法。该方法包括训练分支指令来确定循环的经训练的循环计数。循环包括以分支指令的目标开始并以分支指令结束的指令序列。该方法还包括判断循环的尺寸是否不大于指令缓冲器的尺寸。该方法还包括,当循环的尺寸不大于指令缓冲器的尺寸时:停止从指令高速缓存取指,将循环指令从指令缓冲器发送到执行引擎而不从指令高速缓存取指循环指令,维持一循环弹出计数,其指示分支指令从指令高速缓存发送到执行引擎而不从指令高速缓存取指的次数,当循环弹出计数少于经训练的循环计数时预测分支指令为被采用,否则,则预测分支指令为不被采用。
[0007]具体地,根据本发明一方面,提供一种处理器,包括:指令高速缓存;执行引擎;指令缓冲器;以及循环预测器,其判断循环的尺寸是否不大于该指令缓冲器的尺寸,其中该循环之循环指令包括以分支指令的目标开始并且以该分支指令结束的指令序列。其中,当该循环的尺寸不大于该指令缓冲器的尺寸时,该处理器:停止从该指令高速缓存取指;将该些循环指令从该指令缓冲器发送到该执行引擎而不从该指令高速缓存取指;维持一循环弹出计数,其指示将该分支指令从该指令缓冲器发送到该执行引擎而不从该指令高速缓存取指的次数;以及当该循环弹出计数达到阈值,该处理器在该分支指令之后的顺序下一指令处恢复从该指令高速缓存取指。
[0008]其中该循环预测器还训练该分支指令来确定该循环的经训练的循环计数,其中在维持该循环弹出计数时,该处理器:当该循环弹出计数小于该经训练的循环计数时,预测该分支指令为被采用,否则,则预测该分支指令为不被采用。
[0009]所述的处理器进一步包括:其中,当该循环的尺寸大于该指令缓冲器的尺寸时,处理器:从该指令高速缓存取指该些循环指令,解码该些循环指令并将其发送到该执行引擎;维持一循环取指计数,其指示从该指令高速缓存取指该分支指令的次数;以及当该循环取指计数小于该经训练的循环计数时,预测该分支指令为被采用,否则,则预测该分支指令为不被米用。
[0010]其中该阈值是该循环的经训练的循环计数减去((A*C)/B);其中该经训练的循环计数是该循环预测器训练该分支指令来确定的;其中A是该处理器从该指令高速缓存获取指令、解码指令并将指令提供给该指令缓冲器所需要的处理器时钟周期的预定数量;其中B是该些循环指令的数量;以及其中C是每个时钟周期该处理器能够从该指令缓冲器发送到该执行引擎的指令的数量。
[0011]其中该指令缓冲器保存已经从该指令高速缓存取指然后被解码但是尚未发送到该执行引擎的指令。
[0012]其中该处理器在该循环完成至少一次执行例程之后,判断该循环的尺寸是否不大于该指令缓冲器的尺寸。
[0013]其中该经训练的循环计数指示在该循环的一个执行例程期间该循环分支指令被采用的次数。
[0014]根据本发明另一方面,提供一种通过具有指令高速缓存、指令缓冲器和执行引擎的处理器执行的方法,该方法包括:判断循环的尺寸是否不大于该指令缓冲器的尺寸,其中该循环之循环指令包括以分支指令的目标开始并且以该分支指令结束的指令序列;以及当该循环的尺寸不大于该指令缓冲器的尺寸时:停止从该指令高速缓存取指;将该些循环指令从该指令缓冲器发送到执行引擎而不从该指令高速缓存取指;维持一循环弹出计数,其指示该分支指令从该指令缓冲器被发送到该执行引擎而不从该指令高速缓存取指的次数;以及当该循环弹出计数达到阈值,该处理器在该分支指令之后的顺序下一指令处恢复从该指令高速缓存取指。
[0015]所述的方法进一步包括:训练该分支指令来确定该循环的经训练的循环计数;以及当该循环弹出计数小于该经训练的循环计数时,预测该分支指令为被采用,否则,则预测该分支指令为不被采用。
[0016]所述的方法进一步包括:当该循环的尺寸不大于该指令缓冲器的尺寸时:从该指令高速缓存取指该些循环指令,解码该些循环指令并将其发送到该执行引擎;维持一循环取指计数,其指示从该指令高速缓存取指该分支指令的次数;以及当该循环取指计数小于该经训练的循环计数时,预测该分支指令为被采用,否则,则预测该分支指令为不被采用。
[0017]其中该阈值是该循环的经训练的循环计数减去((A*C)/B);其中该经训练的循环计数是该循环预测器训练该分支指令来确定的;其中A是该处理器从该指令高速缓存获取指令、解码指令并将指令提供给该指令缓冲器所需要的处理器时钟周期的预定数量;其中B是该些循环指令的数量;以及其中C是每个时钟周期该处理器能够从该指令缓冲器发送到该执行引擎的指令的数量。
[0018]其中该经训练的循环计数指示在该循环的一个执行例程期间该循环分支指令被采用的次数。
[0019]本发明的上述处理器及其执行方法在循环缓冲器模式中利用循环预测器结合指令缓冲器工作的方式来潜在地精确预测循环退出,从而避免不具有循环预测器指导的循环缓冲器模式操作的优点的常规处理器所经历的误预测。
【附图说明】
[0020]图1是示出处理器的框图。
[0021]图2是示出图1的循环预测器的框图。
[0022]图3是示出图1的处理器的操作的流程图。
[0023]图4是示出图1的处理器的操作的流程图。
[0024]被统称为图5的图5A和5B是示出图1的处理器的操作的流程图。
[0025]图6是进一步示出根据替换实施例的图1的处理器的操作的流程图。
[0026]图7是作为示例示出向图1的执行引擎提供嵌套循环的指令的工作在循环缓冲器模式中的图1的指令缓冲器的框图。
【具体实施方式】
[0027]现在参照图1,显示了示出处理器100的框图。处理器100包括取指单元108,其控制从指令高速缓存104的指令的获取,这些指令被提供到指令解码单元118。解码单元118将经解码的指令提供到指令缓冲器114,在此也被称为循环缓冲器(loop buffer) 114,指令缓冲器114将指令提供给执行引擎112用于执行。取指单元108耦接到解码单元118、指令缓冲器114和执行引擎112。处理器100还包括多个分支预测器。在一个实施例中,分支预测器包
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1