CN105468334A - 对非控制流指令减少分支检验 - Google Patents
对非控制流指令减少分支检验 Download PDFInfo
- Publication number
- CN105468334A CN105468334A CN201510808700.8A CN201510808700A CN105468334A CN 105468334 A CN105468334 A CN 105468334A CN 201510808700 A CN201510808700 A CN 201510808700A CN 105468334 A CN105468334 A CN 105468334A
- Authority
- CN
- China
- Prior art keywords
- instruction
- control flow
- steering order
- microprocessor
- branch
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000007689 inspection Methods 0.000 title claims abstract description 8
- 230000003247 decreasing effect Effects 0.000 title abstract 2
- 238000000034 method Methods 0.000 claims description 16
- 238000005516 engineering process Methods 0.000 description 10
- 229920006395 saturated elastomer Polymers 0.000 description 9
- 230000008569 process Effects 0.000 description 6
- 238000004590 computer program Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 101100480512 Caenorhabditis elegans tag-51 gene Proteins 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012905 input function Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本发明涉及对非控制流指令减少分支检验。一些微处理器在分支历史表和/或分支目标缓冲器中检验分支预测信息。要检验分支预测信息,微处理器可以标识哪些指令是控制流指令,哪些指令是非控制流指令。要降低分支历史表和/或分支目标缓冲器中的功耗,分支历史表和/或分支目标缓冲器可以检验对应于控制流指令的分支预测信息,而不检验对应于非控制流指令的分支预测信息。
Description
本申请是申请日为2008年12月25日、申请号为200810190998.0、发明名称为“对非控制流指令减少分支检验”的中国发明专利申请的分案申请。
技术领域
本发明一般涉及微处理器,特别是为分支预测降低能耗。
背景技术
微处理器是响应于实现计算机程序的指令来执行各种计算操作的电子设备。实现计算机程序的通用技术是以预定序列发送多个指令到微处理器的执行单元,然后顺序地执行这些指令。在一些情况下,程序跳出了次序来执行并不是序列里的下条指令的指令。可以引起执行跳出序列的指令的一个例子是分支指令。当执行一分支指令时,微处理器可以跳到由分支指令标识的目标指令,并且微处理器下一步执行的是该目标指令,而非下一顺序指令。
如图示,图1显示程序执行序列的示例,其中以顺序方式执行五个顺序指令1-5,指令1首先执行,然后第二执行指令2等等。在该示例中,指令5是一分支指令,其指定指令2为其目标指令。执行分支指令5后,微处理器跳出了顺序指令的次序,接下来执行程序执行顺序中的指令2,而非下一顺序指令6。
微处理器经常使用几个阶段来处理指令,其可包括:指令取阶段,其中从指令高速缓存中取出指令;解码指令阶段,其中对取来的指令进行解码分析;指令执行阶段,其中执行指令。为了提高通过各种阶段处理多个指令的速度,一些微处理器采用已知的流水线技术。流水线在流水线的多个阶段对几个不同的指令同时执行处理的不同部分的意义上类似于装配线。流水线技术的一个例子是,在第一计算周期中有流水线的第一阶段处理第一指令1。在第二周期中,第一指令1进入到流水线的第二阶段,并且第二指令2开始流水线的第一阶段。在第三周期中,第一指令1进入到流水线的第三阶段,第二指令2进入到流水线的第二阶段,并且第三指令3开始流水线的第一阶段等等。流水线可以使得多个指令执行得比微处理器每次只处理一条指令的情况更快速。例如,流水线技术允许在每个周期完成不同指令的处理。
分支指令会降低流水线技术的效率。当执行一分支指令时,微处理器可能试图跳出顺序的次序,而执行并不在流水线中的目标指令。要跳到目标指令,微处理器可能放弃已经在流水线中的指令,然后开始重新启动在目标指令开始的流水线。结果当目标指令被取和由流水线的初始阶段进行处理时,可能发生延迟,导致通过流水线处理指令时速度的总体下降。
分支预测是已用来提高执行分支指令的流水线微处理器的速度的技术。分支预测通过使能微处理器在执行分支指令之前就取出分支指令后有可能执行的指令,可提高流水线微处理器的速度。分支预测可以包括预测条件分支是否采用、和/或预测分支目标,其是分支指令的目标指令。例如,当微处理器确定条件分支可能被采用时,可以在执行分支指令之前将预测的目标指令取入到流水线中,以为分支操作的流水线作准备。
分支历史表是可以存储关于之前分支是否被采用的历史信息的分支预测单元,该历史信息可用于预测未来的分支是否将被采用。分支目标缓冲器是可以预测分支指令的目标的分支预测单元。一些微处理器使用分支历史表和分支目标缓冲器来执行分支预测。
发明内容
一些实施例涉及一种执行指令的微处理器。微处理器取一组指令,所述指令包括至少一个控制流指令和至少一个非控制流指令。微处理器包括控制指令标识单元和分支预测单元。控制指令标识单元存储控制指令标识信息,所述控制指令标识信息标识已取指令组中该至少一个非控制流指令。分支预测单元检验该对应至少一个控制流指令的已存储的分支预测信息,不检验对应该至少一个非控制流指令的已存储的分支预测信息。
一些实施例涉及在微处理器中检验分支预测信息的方法,其中在已取指令组中标识一个或多个控制流指令。对于控制流指令进行分支预测信息的检验,而对于非控制流指令不进行分支预测信息的检验。
附图说明
附图中,每个相同的或几乎相同的组件在不同图中用相似的数字表示。为了清楚起见,并非每个附图的所有组件都进行标注。附图中:
图1.显示包括分支指令的程序执行顺序的示例;
图2.显示根据一些实施例的超标量微处理器的前端流水线;
图3.显示根据一些实施例,具有对于非控制流指令索引输入可被禁止的分支目标缓冲器;
图4.显示根据一些实施例,具有对于非控制流指令索引输入可被禁止的分支历史表;
图5.显示根据一些实施例的指令高速缓存标签数组,其存储控制指令标识信息;
图6.显示根据一些实施例的控制指令标识单元的示例,其可以存储控制标识信息以使(多个)索引输入对BHT和/或BTB使能/禁止;
图7.显示根据一些实施例的电路,其为分支目标缓冲器和/或分支历史表产生掩码信号;
具体实施例
如上所述,分支指令会降低微处理器流水线的速度,一些微处理器包括(多个)硬件组件诸如分支历史表(branchhistorytable,BHT)和/或分支目标缓冲器(branchtargetbuffer,BTB),其提供可用于提高流水线的速度的分支预测信息。一些微处理器,例如超标量微处理器,使用分支历史表和分支目标缓冲器来改善性能。超标量微处理器是一种在其微处理器核心内利用几个功能单元在一个周期中来执行多于一个指令的处理器,例如算术逻辑单元和/或其它的功能单元。在超标量微处理器中,可以从指令高速缓存中并行地取出几个指令。当取指令正被执行时,可以同时检验BHT和/或BTB关于该被取指令的分支预测信息。例如,如果在取指令阶段取出四个指令,可以检验BHT和/或BTB的对应于该四条被取指令的任何分支预测信息。如果一个或多个指令是分支指令,BHT和/或BTB可以提供对应的分支预测信息,其可用于改善流水线的速度。例如,如果预测要采用一条件分支,微处理器可以在执行该分支指令之前取出目标指令来提前准备。
我们已经意识到,为分支预测访问BHT和/或BTB会消耗大量的功率,特别是当并行检验多个指令时。根据现有技术,如果并行取几个指令,都将由BHT和/或BTB检验所有的被取指令的对应的分支预测信息。然而,也已经意识到的是,检验所有已取指令会消耗大量的功率,而且检验所有的已取指令可能并不是必要的。特别是已经意识到,只有控制流指令有可能执行分支操作,而非控制流指令可能不执行分支操作。控制流指令可以引起关于微处理器执行程序流的判断,而且具有引起分支操作的可能性。然而非控制流指令对程序流没有影响,也没有引起分支操作的可能性。因此,在BHT和/或BTB中检验非控制流指令是不必要的,因为非控制流智能不进行分支操作,并且BHT和BTB将没有与非控制流指令对应的分支预测信息。因此已经意识到,通过减少或阻止对BHT和/或BTB访问非控制流指令可节省大量的功率。
在一些实施例中,将微处理器配置成在BHT和/或BTB中对已取指令组中的控制流指令检验对应的分支预测信息,对已取指令组中的非控制流指令不检验分支预测信息。该技术可以降低在BHT和/或BTB中查找的指令数,并因此降低由BHT和/或BTB的消耗的功率量。
对于许多应用已经显示出了仿真结果,只有少量的已取指令是可以引发分支操作的控制流指令。例如,在具有四个指令的获取带宽的微处理器中,大部分的取指令块(fetchblock)可能包括0、1个或2个控制流指令,极少的取指令块可能包括3个或者个控制流指令。对于一些指令集结构(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存储对应于正被查找的索引所对应的分支预测信息。
可以通过多于一个索引查找取指令组中的多于一个指令来实现对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,可以使用另一设备,以下称其为控制指令标识单元(controlinstructionidentificationunit,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),指令高速缓存的第一行(高速缓存行_0)的程序计数器(PC_0)可用于访问CII25。在程序计数器用于访问指令高速缓存、BTB和BHT的同时,可以使用PC_0来访问CII25。哈希功能单元63可以在程序计数器PC_0上计算一哈希函数来产生索引(索引_0),且该索引可用于访问CII25以查找下一高速缓存行信息。在后来的周期(周期_m),可以访问指令高速缓存的下一行(高速缓存行_1)。高速缓存行_1的地址可以从指令取单元获得。如果对于高速缓存行_1在指令高速缓存中有高速缓存行击中,可以基于指令高速缓存标签数组中对应的条目来获得控制指令标识信息52。如果在指令高速缓存中未得到高速缓存行(高速缓存行_1),则从存储器中取出高速缓存行,并重填到该指令高速缓存。当该高速缓存行被重填时,对应的控制指令标识信息可由重填单元的(多个)解码器53产生。当接收到高速缓存行_1的控制指令信息时,可知高速缓存行_1是高速缓存行_0的下一高速缓存行。在周期0中,CII单元进行谁是CII[索引_0]的预测。在CII25中在CII[索引_0]中的控制指令标识信息可从CII25中读出,以在当访问下一高速缓存行(高速缓存行_1)的后续周期(周期_m)期间使用,且该信息可用于使能或禁止BTB和/或BHT的输入。
如果高速缓存行_1地址等于CII[索引0]由周期_0预测的地址,这意味着周期_0中的预测是正确的,因此从周期_0请求的控制指令信息可在本周期内用以使能/禁止BTB/BHT访问。此外,CII[索引0]的饱和计数器62增加“1”,这意味着CII单元25做出了正确的预测。然而,如果所取的高速缓存行地址不等于CII[索引0]的地址,这意味着周期_0中的预测是错误的,而且在周期_0中请求的控制指令标识信息52不是对应于高速缓存行_1的信息。在这种情况下,可以执行CII信息校正。随着BHT信息校正,CII条目可能不会立刻被新高速缓存行信息替换。在替换在CII[索引0]的信息之前,可以检验CII[索引0]的饱和计数器62。在一些实现中,如果计数器不等于“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门的第二输入接收在实际地址和预测地址之间比较的结果的补充。基于第一和第二输入,OR门产生掩码信号mask0-mask3,其可用于如图3和4中所示的BTB和/或BHT的使能/禁止输入。如果两个比较的地址是相等的,则OR门的第二输入为低,掩码信号等于该四个指令的控制标识信息。如果两地址不相等,则由控制指令标识单元25预测的地址是不正确的,这意味着控制标识信息并没有与当前正取的指令对应。因此,OR门的第二输入是高,导致所有的掩码信号为高,允许所有指令在BTB和BHT中查找。然而,应当意识到的是这仅是一示例,可以使用任何适合的掩码信号产生电路。
如上所述,一些指令是控制流指令,而一些指令是非控制流指令。此处使用的术语“非控制流指令”指不是控制流指令的指令。控制流指令的例子包括能够执行跳转操作或分支操作的指令。在MIPS32体系结构中,例如,下列指令是控制流指令:b,bal,beq,beql,bgez,bgezal和bgezall(同分支相关的指令);以及j,jal,jr和jalr(同跳转相关的指令)。然而,应当意识到的是这不是指令的唯一列表。此外,可以使用任何合适的体系结构,MIPS32仅是一个例子。
本发明并不局限于应用于之前如图所示或所述的构造细节和组件布置。本发明可有可以各种不同方式予以实施或实现的其它实施例。而且,此处所用措词和术语是为了描述之用,不应被看做是限制。使用“包括”、“包含”、或“具有”、“含有”、“有”和其它表达方式,意味着囊括了此后所列的术语和其等价物以及附加的术语。
已经这样描述了本发明的至少一个实施例的几个方面,应该理解对于本领域技术人员可以很容易产生不同变化、修改和改进。这些变化、修改和改进应该是本发明公开的一部分,应该属于本发明的精神和范围之内。因此,前述说明书和附图仅仅是举例的方式。
Claims (13)
1.一种执行指令的微处理器,其中该微处理器取一组指令,所述指令包括至少一个控制流指令和至少一个非控制流指令,并且其中该微处理器根据包括多个阶段的流水线执行指令,该微处理器包括:
至少一个解码器,用于预解码所述一组指令,以产生控制指令标识信息,所述控制指令标识信息确定所述至少一个控制流指令和所述至少一个非控制流指令;
控制指令标识单元,其存储控制指令标识信息,所述控制指令标识信息被存储在指令高速缓存标签数组中且对于已取指令组的每个指令包括标识该指令是否是非控制流指令的信息;
分支预测单元,其基于控制指令标识信息来检验对应于该至少一个控制流指令的分支预测信息,并且不检验对应于该至少一个非控制流指令的分支预测信息;和
指令高速缓存,在流水线的该多个阶段的第一阶段中从所述指令高速缓存中取出该组指令,
其中该控制指令标识单元预测该指令高速缓存的地址。
2.如权利要求1所述的微处理器,其中分支预测单元包含分支历史表。
3.如权利要求1所述的微处理器,其中分支预测单元包含分支目标缓冲器。
4.如权利要求1所述的微处理器,其中微处理器是并行取该组指令的超标量处理器。
5.如权利要求1所述的微处理器,其中分支预测单元在该多个阶段的第一阶段检验分支预测信息。
6.如权利要求5所述的微处理器,其中控制指令标识单元从指令高速缓存标签数组中接收控制指令标识信息。
7.如权利要求6所述的微处理器,进一步包括至少一个解码器,其对指令进行解码以产生控制指令标识信息,其中指令高速缓存标签数组从该至少一个解码器接收该控制指令标识信息。
8.如权利要求1所述的微处理器,其中该微处理器使用程序计数器对指令高速缓存进行访问,其中该微处理器进一步包括:
比较单元,其对程序计数器的至少一部分同由控制指令标识单元预测的地址进行比较。
9.如权利要求8所述的微处理器,其中
当程序计数器的该至少一部分同由控制指令标识单元预测的地址匹配时,分支预测单元检验对应于该至少一个控制流指令的分支预测信息,并且不检验对应于该至少一个非控制流指令的分支预测信息。
10.在执行指令的微处理器中,检验分支预测信息的方法,该方法包括:
取一组指令,包括至少一个控制流指令和至少一个非控制流指令;
预解码所述一组指令,以产生控制指令标识信息,所述控制指令标识信息确定所述至少一个控制流指令和所述至少一个非控制流指令;
基于控制指令标识信息,对应于该至少一个控制流指令检验分支预测单元的分支预测信息,对应于该至少一个非控制流指令不检验分支预测单元的分支预测信息,所述控制指令标识信息被存储在指令高速缓存标签数组中且对于已取指令组的每个指令包括标识该指令是否是非控制流指令的信息;
根据包括多个阶段的流水线执行指令;
在流水线的该多个阶段的第一阶段中从指令高速缓存中取出该组指令;和
预测该指令高速缓存的地址。
11.如权利要求10所述的方法,进一步包括:
预解码该组指令,以产生标识该至少一个控制流指令和该至少一个非控制流指令的控制指令标识信息。
12.如权利要求11所述的方法,进一步包括:
在控制指令标识单元中存储该控制指令标识信息。
13.如权利要求10所述的方法,进一步包括:
在访问该指令高速缓存的同时,访问存储控制指令标识信息的控制指令标识单元;以及
在访问指令高速缓存的同时,基于控制指令标识信息检验分支预测单元。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810190998A CN101763249A (zh) | 2008-12-25 | 2008-12-25 | 对非控制流指令减少分支检验 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810190998A Division CN101763249A (zh) | 2008-12-25 | 2008-12-25 | 对非控制流指令减少分支检验 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105468334A true CN105468334A (zh) | 2016-04-06 |
Family
ID=42286332
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810190998A Pending CN101763249A (zh) | 2008-12-25 | 2008-12-25 | 对非控制流指令减少分支检验 |
CN201510808700.8A Pending CN105468334A (zh) | 2008-12-25 | 2008-12-25 | 对非控制流指令减少分支检验 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810190998A Pending CN101763249A (zh) | 2008-12-25 | 2008-12-25 | 对非控制流指令减少分支检验 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9170817B2 (zh) |
CN (2) | CN101763249A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111989676A (zh) * | 2018-04-24 | 2020-11-24 | Arm有限公司 | 使用间接控制流指令的推测 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120079303A1 (en) * | 2010-09-24 | 2012-03-29 | Madduri Venkateswara R | Method and apparatus for reducing power consumption in a processor by powering down an instruction fetch unit |
WO2012051262A2 (en) * | 2010-10-12 | 2012-04-19 | Soft Machines, Inc. | An instruction sequence buffer to enhance branch prediction efficiency |
US9122486B2 (en) | 2010-11-08 | 2015-09-01 | Qualcomm Incorporated | Bimodal branch predictor encoded in a branch instruction |
EP2549376B1 (en) | 2011-07-22 | 2019-03-13 | Telefonaktiebolaget LM Ericsson (publ) | Method and apparatus for branch prediction. |
US9396117B2 (en) | 2012-01-09 | 2016-07-19 | Nvidia Corporation | Instruction cache power reduction |
US9552032B2 (en) | 2012-04-27 | 2017-01-24 | Nvidia Corporation | Branch prediction power reduction |
US9547358B2 (en) | 2012-04-27 | 2017-01-17 | Nvidia Corporation | Branch prediction power reduction |
US9507597B2 (en) * | 2013-06-10 | 2016-11-29 | Via Alliance Semiconductor Co., Ltd. | Selective accumulation and use of predicting unit history |
US10241557B2 (en) * | 2013-12-12 | 2019-03-26 | Apple Inc. | Reducing power consumption in a processor |
WO2016169518A1 (zh) * | 2015-04-23 | 2016-10-27 | 上海芯豪微电子有限公司 | 一种基于指令和数据推送的处理器系统和方法 |
CN106201913A (zh) * | 2015-04-23 | 2016-12-07 | 上海芯豪微电子有限公司 | 一种基于指令推送的处理器系统和方法 |
US10198260B2 (en) * | 2016-01-13 | 2019-02-05 | Oracle International Corporation | Processing instruction control transfer instructions |
CN110069285B (zh) * | 2019-04-30 | 2021-06-01 | 成都海光微电子技术有限公司 | 一种检测分支预测的方法及处理器 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040111592A1 (en) * | 2002-12-06 | 2004-06-10 | Renesas Technology Corp. | Microprocessor performing pipeline processing of a plurality of stages |
US20050149769A1 (en) * | 2003-12-29 | 2005-07-07 | Intel Corporation | Methods and apparatus to selectively power functional units |
US20050268040A1 (en) * | 2004-05-29 | 2005-12-01 | Samsung Electronics Co., Ltd. | Cache system having branch target address cache |
CN1860435A (zh) * | 2003-07-09 | 2006-11-08 | 皇家飞利浦电子股份有限公司 | 用于分支预测的方法和系统 |
US20070192574A1 (en) * | 2006-02-13 | 2007-08-16 | Samsung Electronics Co. Ltd. | Branch target buffer, a branch prediction circuit and method thereof |
CN101256481A (zh) * | 2007-03-02 | 2008-09-03 | 富士通株式会社 | 数据处理器以及存储器读激活控制方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040181654A1 (en) * | 2003-03-11 | 2004-09-16 | Chung-Hui Chen | Low power branch prediction target buffer |
US7640422B2 (en) * | 2006-08-16 | 2009-12-29 | Qualcomm Incorporated | System for reducing number of lookups in a branch target address cache by storing retrieved BTAC addresses into instruction cache |
US7681021B2 (en) * | 2006-09-28 | 2010-03-16 | Freescale Semiconductor, Inc. | Dynamic branch prediction using a wake value to enable low power mode for a predicted number of instruction fetches between a branch and a subsequent branch |
-
2008
- 2008-12-25 CN CN200810190998A patent/CN101763249A/zh active Pending
- 2008-12-25 CN CN201510808700.8A patent/CN105468334A/zh active Pending
-
2009
- 2009-08-04 US US12/535,590 patent/US9170817B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040111592A1 (en) * | 2002-12-06 | 2004-06-10 | Renesas Technology Corp. | Microprocessor performing pipeline processing of a plurality of stages |
CN1860435A (zh) * | 2003-07-09 | 2006-11-08 | 皇家飞利浦电子股份有限公司 | 用于分支预测的方法和系统 |
US20050149769A1 (en) * | 2003-12-29 | 2005-07-07 | Intel Corporation | Methods and apparatus to selectively power functional units |
US20050268040A1 (en) * | 2004-05-29 | 2005-12-01 | Samsung Electronics Co., Ltd. | Cache system having branch target address cache |
US20070192574A1 (en) * | 2006-02-13 | 2007-08-16 | Samsung Electronics Co. Ltd. | Branch target buffer, a branch prediction circuit and method thereof |
CN101256481A (zh) * | 2007-03-02 | 2008-09-03 | 富士通株式会社 | 数据处理器以及存储器读激活控制方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111989676A (zh) * | 2018-04-24 | 2020-11-24 | Arm有限公司 | 使用间接控制流指令的推测 |
Also Published As
Publication number | Publication date |
---|---|
US20100169625A1 (en) | 2010-07-01 |
CN101763249A (zh) | 2010-06-30 |
US9170817B2 (en) | 2015-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105468334A (zh) | 对非控制流指令减少分支检验 | |
US7685410B2 (en) | Redirect recovery cache that receives branch misprediction redirects and caches instructions to be dispatched in response to the redirects | |
US6502185B1 (en) | Pipeline elements which verify predecode information | |
CN101876889B (zh) | 执行多个快速条件分支指令的方法以及相关的微处理器 | |
US7917731B2 (en) | Method and apparatus for prefetching non-sequential instruction addresses | |
US7609582B2 (en) | Branch target buffer and method of use | |
CN102841865B (zh) | 高性能缓存系统和方法 | |
US7062638B2 (en) | Prediction of issued silent store operations for allowing subsequently issued loads to bypass unexecuted silent stores and confirming the bypass upon execution of the stores | |
US20110320787A1 (en) | Indirect Branch Hint | |
US8578141B2 (en) | Loop predictor and method for instruction fetching using a loop predictor | |
JP5209633B2 (ja) | ワーキング・グローバル・ヒストリ・レジスタを備えるシステム及び方法 | |
WO2012051262A2 (en) | An instruction sequence buffer to enhance branch prediction efficiency | |
US20070266228A1 (en) | Block-based branch target address cache | |
CN102662640B (zh) | 双重分支目标缓冲器和分支目标处理系统及处理方法 | |
US20120311308A1 (en) | Branch Predictor with Jump Ahead Logic to Jump Over Portions of Program Code Lacking Branches | |
US6647490B2 (en) | Training line predictor for branch targets | |
US9378022B2 (en) | Performing predecode-time optimized instructions in conjunction with predecode time optimized instruction sequence caching | |
US20090210730A1 (en) | Method and system for power conservation in a hierarchical branch predictor | |
US20030159019A1 (en) | Prediction of instructions in a data processing apparatus | |
US7640422B2 (en) | System for reducing number of lookups in a branch target address cache by storing retrieved BTAC addresses into instruction cache | |
CN109783143B (zh) | 用于流水线指令流的控制方法和控制设备 | |
US20050216713A1 (en) | Instruction text controlled selectively stated branches for prediction via a branch target buffer | |
US20040168043A1 (en) | Line predictor which caches alignment information | |
US20040225866A1 (en) | Branch prediction in a data processing system | |
US6546478B1 (en) | Line predictor entry with location pointers and control information for corresponding instructions in a cache line |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160406 |