对非控制流指令减少分支检验的制作方法

文档序号:9708039阅读:223来源:国知局
对非控制流指令减少分支检验的制作方法【专利说明】对非控制流指令减少分支检验[0001]本申请是申请日为2008年12月25日、申请号为200810190998.0、发明名称为“对非控制流指令减少分支检验”的中国发明专利申请的分案申请。
技术领域
[0002]本发明一般涉及微处理器,特别是为分支预测降低能耗。【
背景技术
】[0003]微处理器是响应于实现计算机程序的指令来执行各种计算操作的电子设备。实现计算机程序的通用技术是以预定序列发送多个指令到微处理器的执行单元,然后顺序地执行这些指令。在一些情况下,程序跳出了次序来执行并不是序列里的下条指令的指令。可以引起执行跳出序列的指令的一个例子是分支指令。当执行一分支指令时,微处理器可以跳到由分支指令标识的目标指令,并且微处理器下一步执行的是该目标指令,而非下一顺序指令。[0004]如图示,图1显示程序执行序列的示例,其中以顺序方式执行五个顺序指令1-5,指令I首先执行,然后第二执行指令2等等。在该示例中,指令5是一分支指令,其指定指令2为其目标指令。执行分支指令5后,微处理器跳出了顺序指令的次序,接下来执行程序执行顺序中的指令2,而非下一顺序指令6。[0005]微处理器经常使用几个阶段来处理指令,其可包括:指令取阶段,其中从指令高速缓存中取出指令;解码指令阶段,其中对取来的指令进行解码分析;指令执行阶段,其中执行指令。为了提高通过各种阶段处理多个指令的速度,一些微处理器采用已知的流水线技术。流水线在流水线的多个阶段对几个不同的指令同时执行处理的不同部分的意义上类似于装配线。流水线技术的一个例子是,在第一计算周期中有流水线的第一阶段处理第一指令I。在第二周期中,第一指令I进入到流水线的第二阶段,并且第二指令2开始流水线的第一阶段。在第三周期中,第一指令I进入到流水线的第三阶段,第二指令2进入到流水线的第二阶段,并且第三指令3开始流水线的第一阶段等等。流水线可以使得多个指令执行得比微处理器每次只处理一条指令的情况更快速。例如,流水线技术允许在每个周期完成不同指令的处理。[0006]分支指令会降低流水线技术的效率。当执行一分支指令时,微处理器可能试图跳出顺序的次序,而执行并不在流水线中的目标指令。要跳到目标指令,微处理器可能放弃已经在流水线中的指令,然后开始重新启动在目标指令开始的流水线。结果当目标指令被取和由流水线的初始阶段进行处理时,可能发生延迟,导致通过流水线处理指令时速度的总体下降。[0007]分支预测是已用来提高执行分支指令的流水线微处理器的速度的技术。分支预测通过使能微处理器在执行分支指令之前就取出分支指令后有可能执行的指令,可提高流水线微处理器的速度。分支预测可以包括预测条件分支是否采用、和/或预测分支目标,其是分支指令的目标指令。例如,当微处理器确定条件分支可能被采用时,可以在执行分支指令之前将预测的目标指令取入到流水线中,以为分支操作的流水线作准备。[0008]分支历史表是可以存储关于之前分支是否被采用的历史信息的分支预测单元,该历史信息可用于预测未来的分支是否将被采用。分支目标缓冲器是可以预测分支指令的目标的分支预测单元。一些微处理器使用分支历史表和分支目标缓冲器来执行分支预测。【
发明内容】[0009]一些实施例涉及一种执行指令的微处理器。微处理器取一组指令,所述指令包括至少一个控制流指令和至少一个非控制流指令。微处理器包括控制指令标识单元和分支预测单元。控制指令标识单元存储控制指令标识信息,所述控制指令标识信息标识已取指令组中该至少一个非控制流指令。分支预测单元检验该对应至少一个控制流指令的已存储的分支预测信息,不检验对应该至少一个非控制流指令的已存储的分支预测信息。[0010]一些实施例涉及在微处理器中检验分支预测信息的方法,其中在已取指令组中标识一个或多个控制流指令。对于控制流指令进行分支预测信息的检验,而对于非控制流指令不进行分支预测信息的检验。【附图说明】[0011]附图中,每个相同的或几乎相同的组件在不同图中用相似的数字表示。为了清楚起见,并非每个附图的所有组件都进行标注。附图中:[0012]图1.显示包括分支指令的程序执行顺序的示例;[0013]图2.显示根据一些实施例的超标量微处理器的前端流水线;[0014]图3.显示根据一些实施例,具有对于非控制流指令索引输入可被禁止的分支目标缓冲器;[0015]图4.显示根据一些实施例,具有对于非控制流指令索引输入可被禁止的分支历史表;[0016]图5.显示根据一些实施例的指令高速缓存标签数组,其存储控制指令标识信息;[0017]图6.显示根据一些实施例的控制指令标识单元的示例,其可以存储控制标识信息以使(多个)索引输入对BHT和/或BTB使能/禁止;[0018]图7.显示根据一些实施例的电路,其为分支目标缓冲器和/或分支历史表产生掩码信号;具体实施例[0019]如上所述,分支指令会降低微处理器流水线的速度,一些微处理器包括(多个)硬件组件诸如分支历史表(branchhistorytable,BHT)和/或分支目标缓冲器(branchtargetbuffer,BTB),其提供可用于提高流水线的速度的分支预测信息。一些微处理器,例如超标量微处理器,使用分支历史表和分支目标缓冲器来改善性能。超标量微处理器是一种在其微处理器核心内利用几个功能单元在一个周期中来执行多于一个指令的处理器,例如算术逻辑单元和/或其它的功能单元。在超标量微处理器中,可以从指令高速缓存中并行地取出几个指令。当取指令正被执行时,可以同时检验BHT和/或BTB关于该被取指令的分支预测信息。例如,如果在取指令阶段取出四个指令,可以检验BHT和/或BTB的对应于该四条被取指令的任何分支预测信息。如果一个或多个指令是分支指令,BHT和/或BTB可以提供对应的分支预测信息,其可用于改善流水线的速度。例如,如果预测要采用一条件分支,微处理器可以在执行该分支指令之前取出目标指令来提前准备。[0020]我们已经意识到,为分支预测访问BHT和/或BTB会消耗大量的功率,特别是当并行检验多个指令时。根据现有技术,如果并行取几个指令,都将由BHT和/或BTB检验所有的被取指令的对应的分支预测信息。然而,也已经意识到的是,检验所有已取指令会消耗大量的功率,而且检验所有的已取指令可能并不是必要的。特别是已经意识到,只有控制流指令有可能执行分支操作,而非控制流指令可能不执行分支操作。控制流指令可以引起关于微处理器执行程序流的判断,而且具有引起分支操作的可能性。然而非控制流指令对程序流没有影响,也没有引起分支操作的可能性。因此,在BHT和/或BTB中检验非控制流指令是不必要的,因为非控制流智能不进行分支操作,并且BHT和BTB将没有与非控制流指令对应的分支预测信息。因此已经意识到,通过减少或阻止对BHT和/或BTB访问非控制流指令可节省大量的功率。[0021]在一些实施例中,将微处理器配置成在BHT和/或BTB中对已取指令组中的控制流指令当前第1页1 2 3 4 
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1