专利名称::对非控制流指令减少分支检验的制作方法
技术领域:
:本发明一般涉及微处理器,特别是为分支预测降低能耗。
背景技术:
:微处理器是响应于实现计算机程序的指令来执行各种计算操作的电子设备。实现计算机程序的通用技术是以预定序列发送多个指令到微处理器的执行单元,然后顺序地执行这些指令。在一些情况下,程序跳出了次序来执行不是序列里的下条指令的指令。可以引起执行跳出序列的指令的一个例子是分支指令。当执行一分支指令时,微处理器可以跳到由分支指令标识的目标指令,并且微处理器下一步执行的是该目标指令,而非下一顺序指令。如图示,图1显示程序执行序列的示例,其中以顺序方式执行五个顺序指令1-5,指令1首先执行,然后第二执行指令2等等。在该示例中,指令5是一分支指令,其指定指令2为其目标指令。执行分支指令5后,微处理器跳出了顺序指令的次序,接下来执行程序执行顺序中的指令2,而非下一顺序指令6。微处理器经常使用几个阶段来处理指令,其可包括指令取阶段,其中从指令高速缓存中取出指令;指令解码阶段,其中对取来的指令进行解码;指令执行阶段,其中执行指令。为了提高通过各种阶段处理多个指令的速度,一些微处理器采用已知的流水线技术。流水线在流水线的多个阶段对几个不同的指令同时执行处理的不同部分的意义上类似于装配线。流水线技术的一个例子是,在第一计算周期中由流水线的第一阶段处理第一指令1。在第二周期中,第一指令1进入到流水线的第二阶段,并且第二指令2开始流水线的第一阶段。在第三周期中,第一指令1进入到流水线的第三阶段,第二指令2进入到流水线的第二阶段,并且第三指令3开始流水线的第一阶段等等。流水线可以使得多个指令执行得比微处理器每次只处理一条指令的情况更快速。例如,流水线技术允许在每个周期完成不同指令的处理。分支指令会降低流水线技术的效率。当执行一分支指令时,微处理器可能试图跳出顺序的次序,而执行并不在流水线中的目标指令。要跳到目标指令,微处理器可能放弃已经在流水线中的指令,然后开始重新启动在目标指令开始的流水线。结果当目标指令被取和由流水线的初始阶段进行处理时,可能发生延迟,导致通过流水线处理指令时速度的总体下降。分支预测是已用来提高执行分支指令的流水线微处理器的速度的技术。分支预测通过使能微处理器在执行分支指令之前就取出分支指令后有可能执行的指令,可提高流水线微处理器的速度。分支预测可以包括预测条件分支是否采用、和/或预测分支目标,其是分支指令的目标指令。例如,当微处理器确定条件分支可能被采用时,可以在执行分支指令之前将预测的目标指令取入到流水线中,以为分支操作的流水线作准备。分支历史表是可以存储关于之前分支是否被采用的历史信息的分支预测单元,该历史信息可用于预测未来的分支是否将被采用。分支目标缓冲器是可以预测分支指令的目标的分支预测单元。一些微处理器使用分支历史表和分支目标缓冲器来执行分支预测。
发明内容—些实施例涉及一种执行指令的微处理器。微处理器取一组指令,所述指令包括至少一个控制流指令和至少一个非控制流指令。微处理器包括控制指令标识单元和分支预测单元。控制指令标识单元存储控制指令标识信息,所述控制指令标识信息标识已取指令组中该至少一个非控制流指令。分支预测单元检验对应该至少一个控制流指令的已存储的分支预测信息,不检验对应该至少一个非控制流指令的已存储的分支预测信息。—些实施例涉及在微处理器中检验分支预测信息的方法,其中在该组已取指令中标识一个或多个控制流指令。对于控制流指令进行分支预测信息的检验,而对于非控制流指令不进行分支预测信息的检验。附图中,每个相同的或几乎相同的组件在不同图中用相似的数字表示。为了清楚起见,并非每个附图的所有组件都进行标注。附图中显示包括分支指令的程序执行顺序的示例;显示根据一些实施例的超标量微处理器的前端流水线;显示根据一些实施例,具有对于非控制流指令索引输入可被禁止的分支目图l图2图3标缓冲器;图4史表;图5图6显示根据一些实施例,具有对于非控制流指令索引输入可被禁止的分支历显示根据一些实施例的指令高速缓存标签数组,其存储控制指令标识信息;显示根据一些实施例的控制指令标识单元的示例,其可以存储控制标识信息以使(多个)索引输入对BHT和/或BTB使能/禁止;图7.显示根据一些实施例的电路,其为分支目标缓冲器和/或分支历史表产生掩码信号;具体实施例如上所述,分支指令会降低微处理器流水线的速度,一些微处理器包括(多个)硬件组件诸如分支历史表(branchhistorytable,BHT)和/或分支目标缓冲器(branchtargetbuffer,BTB),其提供可用于提高流水线的速度的分支预测信息。一些微处理器,例如超标量微处理器,使用分支历史表和分支目标缓冲器来改善性能。超标量微处理器是一种利用微处理器核心内几个功能单元,例如算术逻辑单元和/或其它的功能单元在一个周期中执行多于一个指令的处理器。在超标量微处理器中,可以从指令高速缓存中并行地取出几个指令。当指令取正被执行时,可以同时检验BHT和/或BTB的关于该被取指令的分支预测信息。例如,如果在指令取阶段取出四个指令,可以检验BHT和/或BTB的对应于该四条被取指令的任何分支预测信息。如果一个或多个指令是分支指令,BHT和/或BTB可以提供对应的分支预测信息,其可用于改善流水线的速度。例如,如果预测要采用一条件分支,微处理器可以在执行该分支指令之前取出目标指令来提前准备。5我们已经意识到,为分支预测访问BHT和/或BTB会消耗大量的功率,特别是当并行检验多个指令时。根据现有技术,如果并行取几个指令,都将由BHT和/或BTB检验所有的被取指令的对应分支预测信息。然而,也已经意识到的是,检验所有已取指令会消耗大量的功率,而且检验所有的已取指令可能并不是必要的。特别是已经意识到,只有控制流指令有可能执行分支操作,而非控制流指令可能不执行分支操作。控制流指令可以引起关于将由微处理器执行的程序流的判断,而且具有引起分支操作的可能性。然而非控制流指令对程序流没有影响,也没有引起分支操作的可能性。因此,在BHT和/或BTB中检验非控制流指令是不必要的,因为非控制流指令不进行分支操作,并且BHT和BTB将没有与非控制流指令对应的分支预测信息。因此已经意识到,通过减少或阻止对BHT和/或BTB访问非控制流指令可节省大量的功率。在一些实施例中,将微处理器配置成在BHT和/或BTB中对已取指令组中的控制流指令检验对应的分支预测信息,对已取指令组中的非控制流指令不检验分支预测信息。该技术可以降低在BHT和/或BTB中查找的指令数,并因此降低由BHT和/或BTB的消耗的功率量。对于许多应用已经显示出了仿真结果,只有少量的已取指令是可以引发分支操作的控制流指令。例如,在具有四个指令的取带宽的微处理器中,大部分的取指令块(fetchblock)可能包括0、1个或2个控制流指令,极少的取指令块可能包括3个或者4个控制流指令。对于一些指令集结构(ISA),如MIPS(MicroprocessorwithoutInterlockedPipelineStages,无互锁流水线阶段的微处理器),控制指令后面有延迟槽指令,延迟槽指令不是控制流指令。在这样的体系结构中,四指令的取指令块可能包括不多于两个控制流指令。因为控制流指令的数量相对少,可以通过防止一些或全部非控制流指令对BTB和/或BHT访问,来降低对BTB或BHT的访问数量,这能显著节省BTB和/或BHT内的功率。在一些实施例中,控制流指令和非控制流指令可以在执行之前进行标识,以减少或消除基于非控制流指令对BTB和/或BHT的访问。当确定一组已取指令中的哪些指令是非控制流指令后,对于非控制流指令可以阻止或减少对BTB和/或BHT的访问。已经显示了仿真结果是使用这样的技术可以节约大量功率,在一些情况下BTB和BHT的总功耗可以降低58.38%。然而功耗降低量会根据特定的实现方式而更高或更低。图2显示了根据一些实施例的超标量微处理器的前端流水线。在该实例中,流水线的第一阶段是指令取阶段,其中指令从指令高速缓存23中取出用于后续的处理和执行。访问BTB21、BHT22、指令转换后备缓冲器(ITLB)24和控制指令标识单元(CII)25也在该阶段同指令取同时执行。BTB21、BHT22和控制指令标识单元25的操作将在下文中更详细地论述。在一些实施例中,使用微处理器的程序计数器(PC)作为记录在指令执行序列中程序的当前位置的索引来访问设备21-25,该程序计数器。例如,BTB21和BHT22可以利用正从指令高速缓存中取出的指令的一个或多个PC来索引,BTB21和/或BHT22可以利用该索引来搜索对应的分支预测信息。图3显示根据一些实施例存储分支预测信息的分支目标缓冲器21的示例。分支目标缓冲器21存储了几个分别代表分支指令的标签31,还存储它们的对应预测分支目标的索引作为目标PC32。通过比较该索引和标签31,可以检验分支目标缓冲器21的分支预测信息,以确定是否有BTB"击中",其意味着BTB21存储了对应于正被查找的索引所对应6的分支预测信息。可以通过多于一个索引同时访问BTB21来查找取指令组中的多于一个的指令。例如,如果正从指令高速缓存中同时取出一组四个指令,分支目标缓冲器21可以根据四个已取指令的四个程序计数器被同时访问。例如,对于诸如RISC(精简指令集计算机)这样的指令集体系结构,每个指令的长度可能是四字节(32位)。在一些微处理器存储器系统中,最小的可寻址单元是一字节。因此在RISC微处理器中,用于访问BTB21的索引可以以四字节的增量来分开。例如,在具有四指令的取指令带宽的RISC微处理器中,可以使用四个索引来同时访问BTB21,如PC,PC+4,PC+8和PC+12。如图3所示,所有四个索引可以提供给BTB21,并用于在同一时间访问分支目标缓冲器。如果有一BTB"击中",该"击中"指令的目标PC可用于将指令取重新指向到分支指令对应的目标PC。如果对该组已取指令出现多个BTB击中,程序序列中最早指令的目标PC可用于将指令取重新指向到对应的目标PC。尽管已经讨论过RISC的实现方式,其中每个指令的长度是四字节,此处所描述的技术并不局限于此实现方式,可以使用任何合适长度的指令,例如多于或少于四字节。此处描述的技术也包括使用在指令长度不固定的微处理器上,其具有可变指令长度。在这样的微处理中,相邻指令的地址差可能不等于四。如上所述,应当意识到,通过对于非控制流指令减少访问BTB21的次数,可以降低BTB21的消耗的功率。一旦识别出已取指令组中的控制流指令,可以限制对BTB21的访问,使得在BTB21中只查找控制流指令。如图3所示,一些实施例中,BTB21包括"使能"输入,其可用于使能或禁止在BTB21中查找对应的指令。图3所示的BTB21包括四个使能输入,每个使能输入对应可被同时查找的四个指令索引中的一个。在本实施例中,输入使能0'用于使能第一指令索引(PC),输入使能1'用于使能第二指令索引(PC+4),输入使能2'用于使能第三指令索引(PC+8),输入使能3'用于使能第四指令索引(PC+12)。如果对应的使能输入接收到具有高逻辑值的信号,那么对应的指令索引输入可被使能,允许该指令在BTB21中查找。如果对应的使能输入接收到具有低逻辑值的信号,那么对应的指令索引输入可被禁止,阻止该指令在BTB21中查找。然而,这仅是一个例子,应当意识到的是此处描述的技术可使用任何合适的逻辑电平。在一些实施例中,图3所示的使能信号可以由一个或多个逻辑电路33提供给BTB21,如图3所示的与(AND)门。在该示例中,四个AND各具有两个输入可用于使能指令索引输入的所有操作的对应的使能信号,可用于对于非控制流指令禁止指令索引输入的对应的掩码输入信号。产生这些掩码信号的示例性技术将在下文中参考图7作进一步的讨论。图4显示根据一些实施例的分支历史表22的示例,该分支历史表可存储关于在先分支和预测未来分支的分支历史信息。分支历史表22可以存储关于之前的条件分支是否已被采用的分支历史信息。分支历史表22可以利用分支历史信息来预测一条件分支将来是否被采用。如图4所示,分支历史表22包括预测单元41和42,其可以使用任何合适的技术来执行各种不同类型的分支预测。分支历史表22还包括选择器43,其选择使用哪种类型的分支预测,并可能选择使用哪个预测单元,如预测单元41或42。如图4所示,与分支目标缓冲器21相同,如果从指令高速缓存中取出四个指令,可以使用四个对应的索引来同时对分支历史表22进行访问,如PC,PC+4,PC+8,PC+12。如上所述,已经意识到的是通过基于非控制流指令来减少对BHT22的访问数量,可以降低BHT22消耗的功率。一旦标识出已取指令组中的控制流指令,可以限制对BHT22的访问,使得在BHT22中只查找控制流信息,以得到任何对应的分支预测信息。如图4所示,一些实施例中,BHT22包括"使能"输入,其可用于使能或禁止在BHT22中查找对应的指令。在一些实施例中,这些使能输入功能上类似于之前针对BTB21讨论的使能输入。在一些微处理器中,BTB和BHT的预测结果可被传送到解码阶段,其中会对BTB和BHT的预测结果进行比较。根据一些技术,当来自BTB和BHT的预测结果互相不一致时,可使用BHT的预测结果。然而,应当意识到的是,由于本发明并不局限于特定分支预测技术或设备的使用,可以使用BTB和BHT的预测结果之一或全部。—些实施例是关于从指令高速缓存中取出一组指令之前标识一组已取指令中的控制流指令。例如,在标识控制指令之后,控制指令的PC可以用于访问BTB和/或BHT,而不是已取指令组中的所有指令。在一些实施例中,微处理器包括指令高速缓存标签数组(tagarray),其存储标识控制流指令的控制指令标识信息。该控制标识信息可以存储在指令高速缓存标签数组中,或是其它合适的位置。图5显示根据一些实施例的指令高速缓存标签数组50的示例,其与存储多个指令的指令高速缓存23相关联。指令高速缓存可能包括许多"行",每个行存储多个控制指令,并且每行可能同指令高速缓存标签数组的高速缓存标签51相关联。对于指令高速缓存中的每行,指令标签数组可能存储对应的控制指令标识信息52,其包括控制指令标识位。在该示例中,每一高速缓存行存储16个指令,指令高速缓存标签数组为每一高速缓存行存储16个控制指令标识位的对应的集合。每一控制指令标识位标识在该指令高速缓存中对应的指令是控制流指令还是非控制流指令。在该示例中,"1"表示对应指令为控制流指令,"0"表示对应指令为非控制流指令。然而这仅是一示例,可以使用任何合适类型的控制标识信息来标识控制流指令和/或非控制流指令。为了获得存储在指令高速缓存标签数组中的控制指令标识信息,一个或多个解码器53可以预解码指令,以产生控制指令标识信息52。当例如执行指令高速缓存行重填时,或在另一合适的时间时,可以存储指令高速缓存中一行的控制指令标识信息52。一些微处理器使用重填单元,其负责从通过存储总线接收到的指令重填数据数组和指令高速缓存标签数组。重填单元可以提供指令给一个或多个解码器,解码器从每个指令中提取信息,基于所提取的信息确定每个指令是控制流指令还是非控制流指令。例如,解码器可以提取指令的optcode,其表示指令是哪种类型。通过检查每条指令的optcode,解码器可以确定哪些指令是控制流指令,哪些指令是非控制流指令。指令高速缓存标签数组50的一个可能的限制是在指令从指令高速缓存取出的同时访问BHT22和BTB21,在那时来自指令高速缓存标签数组50的控制指令标识信息52可能对于BHT22和BTB21不可用。指令高速缓存标签数组50不能足够快地访问控制指令标识信息52,以用于BHT22和/或BTB21的使能/禁止输入。要给BHT22和BTB21提供这种控制标识信息52,可以使用另一装置,以下称其为控制指令标识单元(controlinstructionidentification皿it,CII)图6显示根据一些实施例描述控制指令标识单元25的示例,其可以存储控制指令标识信息52,以用于BTB21和/或BHT22的使能/禁止输入。可以认为控制指令标识单元25是个象BTB或BHT的预测单元,可以预测下一高速缓存行地址。通过预测下一高速缓存行地址,CII25可以提前获得下一高速缓存行的控制指令标识信息52,这样当由取单元访问下一高速缓存行时,该高速缓存行的控制标识信息52在CII中可用,并且该信息可以提供给BTB和/或BHT,以便BTB和/或BHT只对于控制流指令可被访问。控制指令标识单元25可以对指令高速缓存中的一行存储三种类型的信息高速缓存行地址61,控制指令标识信息52,和饱和计数器62。特定高速缓存行条目(entry)的高速缓存行地址61可以是指令高速缓存中的预测的下一行。高速缓存行的控制指令标识信息52是为指令高速缓存中相关行标识控制流指令或非控制流指令。饱和计数器62可以包括两位,其功能上类似于用于其它预测单元,如BHT,的饱和计数器,也可以用于提高预测精度。在一些实现中,当饱和计数器62的值等于2或以上时,由CII单元25做出下一高速缓存行的预测,因为预测被确定为强。然而当饱和计数器的值低于2时,该预测可被确定为不够精确,可能并不做出预测。然而应当意识到的,可以使用任何合适的预测技术,此处所描述的技术并不局限于使用饱和计数器。控制指令标识单元25可以从指令高速缓存标签数组50接收和存储控制指令标识信息52,伴随相应的高速缓存行地址61。在BHT、BTB、指令高速缓存和ITBL使用正被取的当前PC的同时访问控制指令标识单元25。每一周期,控制指令标识单元25可以为该组指令预测下一高速缓存行地址。每一周期,由控制指令标识单元25预测的高速缓存行地址可以与正从指令高速缓存中取出的当前PC进行比较。如果两地址匹配,则由控制指令标识单元25提供的预测是正确的,由控制指令标识单元25提供的对应控制指令标识信息正确地对标识了已取指令块中的控制流指令和非控制流指令。然后可以根据标识的控制流指令来访问BTB21和BHT22,而对于非控制流指令,不访问BTB21和BHT22。然而,如果两个地址不匹配,那么在之前周期预测的地址是不正确的,所提供的控制标识信息可能与当前正取的指令并不对应。当预测高速缓存行被确定为不正确时,在BHT和/或BTB中检验所有的所取指令。现在说明控制指令标识单元25的操作的示例。在第一周期(周期_0),指令高速缓存的第一行(高速缓存行J))的程序计数器(PC_0)可用于访问CII25。在程序计数器用于访问指令高速缓存、BTB和BHT的同时,可以使用PC_0访问CII25。哈希功能单元63可以在程序计数器PC_0上计算一哈希函数来产生索引(索引_0),且该索引可用于访问CII25以查找下一高速缓存行信息。在后面的周期(周期jii),可以访问指令高速缓存的下一行(高速缓存行_1)。高速缓存行_1的地址可以从指令取单元获得。如果对于高速缓存行_1在指令高速缓存中有高速缓存行击中,可以基于该指令高速缓存标签数组中对应的条目获得控制指令标识信息52。如果在指令高速缓存中未得到高速缓存行(高速缓存行_1),高速缓存行则从存储器中取出,并被重填到该指令高速缓存。当该高速缓存行被重填时,对应的控制指令标识信息可由重填单元的(多个)解码器53产生。当接收到高速缓存行_1的控制指令信息时,可知高速缓存行_1是高速缓存行J)的下一高速缓存行。在周期_0中,CII单元作出谁是CII[索引O]的预测。在CII25中在CII[索引—0]中的控制指令标识信息可从CII25中读出,以在当访问下一高速缓存行(高速缓存行_1)的另一周期(周期_m)期间使用,且该信息可用于使能或禁止BTB和/或BHT的输入。如果高速缓存行_1地址等于在周期_0中预测的CII[索引0]地址,这意味着周期_0中的预测是正确的,因此来自周期J)的控制指令信息请求可在该周期中使用以使能/禁止BTB/BHT访问。此外,CII[索引0]中的饱和计数器62增加"l",这意味着CII单元25做出了正确的预测。然而,如果所取的高速缓存行地址不等于CII[索引O]地址,这意味着周期_0中的预测是错误的,而且在周期O中请求的控制指令标识信息52不是对应于高速缓存行_1的信息。在这种情况下,可以执行CII信息校正。随着BHT信息校正,CII条目可能不会立刻被新高速缓存行信息替换。在替换在CII[索引O]的信息之前,可以检验饱和计数器62的CII[索引0]。在一些实现方式中,如果计数器不等于"0",该CII[索引0]不被替换,且"计数器"可减少1。如果CII[索引0]的饱和计数器62等于"0",可以用高速缓存行_1的信息替换CII[索引0]。图7显示根据一些实施例的说明掩码信号产生电路的示图,其从控制指令标识单元25接收预测地址和控制标识信息并产生掩码信号,该掩码信号可用于使能/禁止BTB和/或BHT的输入。在本示例中,控制标识信息25被提供给16:4多路复用器(MUX)72,其从16个指令中选择对应正被取的4个指令的4个指令。当前取PC的低位位可用于选择对应于正被取的四个指令的控制指令标识信息25。例如,如果高速缓存行包括16个指令,MUX72可使用取PC的低位位来确定当前正取的是哪四个指令。由16:4MUX72所产生的四个信号分别提供给掩码信号产生逻辑73的四个OR门的相应的第一输入。如图7所示,比较单元71将对应高速缓存行地址的取PC的高位位同来自控制指令标识单元25的预测地址进行比较。OR门的第二输入接收在实际地址和预测地址之间比较的结果的补充(complement)。基于第一和第二输入,OR门产生掩码信号掩码0-掩码3,其可用于如图3和4中所示的BTB和/或BHT的使能/禁止输入。如果两个比较的地址是相等的,则OR门的第二输入为低,掩码信号等于该四个指令的控制标识信息。如果两地址不相等,则由控制指令标识单元25预测的地址不正确,这意味着控制标识信息并没有与当前正取的指令对应。因此,0R门的第二输入是高,导致所有的掩码信号为高,允许所有指令在BTB和BHT中查找。然而,应当意识到的是这仅是一示例,可以使用任何适合的掩码信号产生电路。如上所述,一些指令是控制流指令,而一些指令是非控制流指令。此处使用的术语"非控制流指令"指不是控制流指令的指令。控制流指令的例子包括能够执行跳转操作或分支操作的指令。在MIPS32体系结构中,例如,下列指令是控制流指令b,bal,beq,beql,bgez,bgezal和bgezall(同分支相关的指令);以及j,jal,jr和jalr(同跳转相关的指令)。然而,应当意识到的是这不是指令的唯一列表。此外,可以使用任何合适的体系结构,MIPS32仅是一个例子。本发明并不局限于应用于之前如图所示或所述的构造细节和组件布置。本发明可有可以各种不同方式予以实施或实现的其它实施例。而且,此处所用措词和术语是为了描述之用,不应被看做是限制。使用"包括"、"包含"、或"具有"、"含有"、"有"和其它表达方式,意味着囊括了此后所列的术语和其等价物以及附加的术语。已经这样描述了本发明的至少一个实施例的几个方面,应该理解对于本领域技术人员可以很容易产生不同变化、修改和改进。这些变化、修改和改进应该是本发明公开的一部分,应该属于本发明的精神和范围之内。因此,前述说明书和附图仅仅是举例的方式。权利要求一种执行指令的微处理器,其中该微处理器取一组指令,所述指令包括至少一个控制流指令和至少一个非控制流指令,该微处理器包括控制指令标识单元,其存储控制指令标识信息,所述控制指令标识信息标识已取指令组中该至少一个非控制流指令;分支预测单元,其检验对应于该至少一个控制流指令的分支预测信息,并且不检验对应于该至少一个非控制流指令的分支预测信息。2.如权利要求1所述的微处理器,其中分支预测单元包含分支历史表。3.如权利要求1所述的微处理器,其中分支预测单元包含分支目标缓冲器。4.如权利要求1所述的微处理器,其中微处理器是并行取该组指令的超标量处理器。5.如权利要求1所述的微处理器,其中微处理器根据包括多个阶段的流水线执行指令,其中分支预测单元在该多个阶段的第一阶段检验分支预测信息,该微处理器进一步包括指令高速缓存,在流水线的该第一阶段中从所述指令高速缓存中取出该组指令。6.如权利要求5所述的微处理器,进一步包括存储控制指令标识信息的指令高速缓存标签数组,其中该控制指令标识信息标识该至少一个控制流指令,其中控制指令标识单元从指令高速缓存标签数组中接收控制指令标识信息。7.如权利要求6所述的微处理器,进一步包括至少一个解码器,其对指令进行解码以产生控制指令标识信息,其中指令高速缓存标签数组从该至少一个解码器接收该控制指令标识信息。8.如权利要求5所述的微处理器,其中该控制指令标识单元预测该指令高速缓存的地址。9.如权利要求8所述的微处理器,其中该微处理器使用程序计数器对指令高速缓存进行访问,其中该微处理器进一步包括比较单元,其对程序计数器的至少一部分同由控制指令标识单元预测的地址进行比较。10.如权利要求9所述的微处理器,其中当程序计数器的该至少一部分同由控制指令标识单元预测的地址匹配时,分支预测单元检验对应于该至少一个控制流指令的分支预测信息,并且不检验对应于该至少一个非控制流指令的分支预测信息。11.在执行指令的微处理器中,检验分支预测信息的方法,该方法包括取一组指令,包括至少一个控制流指令和至少一个非控制流指令;对应于该至少一个控制流指令检验分支预测单元的分支预测信息,对应于该至少一个非控制流指令不检验分支预测单元的分支预测信息。12.如权利要求ll所述的方法,进一步包括预解码该组指令,以产生标识该至少一个控制流指令和该至少一个非控制流指令的控制指令标识信息。13.如权利要求12所述的方法,进一步包括在指令高速缓存标签数组中存储该控制指令标识信息。14.如权利要求12所述的方法,进一步包括在控制指令标识单元中存储该控制指令标识信息。15.如权利要求ll所述的方法,进一步包括访问指令高速缓存,以取出该组指令;在访问该指令高速缓存的同时,访问存储控制指令标识信息的控制指令标识单元,所述控制指令标识信息标识该至少一个控制流指令和该至少一个非控制流指令;以及在访问指令高速缓存的同时,基于控制指令标识信息检验分支预测单元。全文摘要本发明涉及对非控制流指令减少分支检验。一些微处理器在分支历史表和/或分支目标缓冲器中检验分支预测信息。要检验分支预测信息,微处理器可以标识哪些指令是控制流指令,哪些指令是非控制流指令。要降低分支历史表和/或分支目标缓冲器中的功耗,分支历史表和/或分支目标缓冲器可以检验对应于控制流指令的分支预测信息,而不检验对应于非控制流指令的分支预测信息。文档编号G06F9/38GK101763249SQ200810190998公开日2010年6月30日申请日期2008年12月25日优先权日2008年12月25日发明者吴永强,孙红霞,王凯峰申请人:世意法(北京)半导体研发有限责任公司