CN101452378B - 阻止指令提取调节的方法、处理器和装置 - Google Patents
阻止指令提取调节的方法、处理器和装置 Download PDFInfo
- Publication number
- CN101452378B CN101452378B CN2008101813441A CN200810181344A CN101452378B CN 101452378 B CN101452378 B CN 101452378B CN 2008101813441 A CN2008101813441 A CN 2008101813441A CN 200810181344 A CN200810181344 A CN 200810181344A CN 101452378 B CN101452378 B CN 101452378B
- Authority
- CN
- China
- Prior art keywords
- branch
- instruction
- extraction
- belief
- degree
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 44
- 230000002401 inhibitory effect Effects 0.000 title 1
- 238000000605 extraction Methods 0.000 claims description 148
- 239000000284 extract Substances 0.000 claims description 58
- 238000012360 testing method Methods 0.000 claims description 48
- 238000003860 storage Methods 0.000 claims description 23
- 230000001105 regulatory effect Effects 0.000 claims description 21
- 230000015572 biosynthetic process Effects 0.000 claims description 19
- 230000002265 prevention Effects 0.000 claims description 16
- 230000002045 lasting effect Effects 0.000 claims description 7
- 238000009825 accumulation Methods 0.000 description 19
- 238000005755 formation reaction Methods 0.000 description 16
- 239000013598 vector Substances 0.000 description 15
- 238000004134 energy conservation Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 230000008034 disappearance Effects 0.000 description 9
- 230000014509 gene expression Effects 0.000 description 9
- 230000004044 response Effects 0.000 description 9
- 230000008569 process Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 7
- 238000007667 floating Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 230000014759 maintenance of location Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 238000012544 monitoring process Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000003750 conditioning effect Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Images
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/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
-
- 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
-
- 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
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)
- Executing Machine-Instructions (AREA)
Abstract
信息处理系统包括一个处理器,每当该分支指令队列内的一组指令累积起来表现出的有关分支指令的分支预测的准确度的信任度低于第一预定阈值信任度阈值时,该处理器就对指令提取器进行调节。在一个实施例中,该处理器包括一个提取调节控制器,在当前发布的特定分支指令的有关分支预测的准确度的信任度小于第二预定阈值信任度阈值时,阻止对指令提取器进行提取调节。
Description
技术领域
本公开一般涉及流水线处理器,更具体地,涉及在信息处理系统中使用节能方法的流水线处理器。
背景技术
现代信息处理系统采用往往会产生大量热量的处理器。存在感测处理器的温度的热能调节技术。当处理器的温度超过预定阈值温度时,系统调节或降低处理器的时钟频率,从而相应地降低处理器的温度。这样,系统可以避免不希望的过热。作为选择,系统可以采用时钟选通,亦即,在某段时间内停止该处理器的至少一部分逻辑电路的处理器时钟,以降低处理器的温度。
功耗是影响新型处理器的最高运行频率的主要因素。可以使用感测处理器所消耗的功率的功率调节技术。当消耗的功率超过预定阈值功率标准时,功率调节系统会降低处理器的运行频率,使得处理器的功耗降低。
因此,需要能够进一步降低信息处理系统中的处理器的功耗的装置和方法。
发明内容
因此,在一个实施例中,公开了一种用于操作处理器的方法。该方法包括:利用提取器从指令源中提取指令,以提供包含有提取的分支指令的指令流。该方法还包括:利用分支预测器预测每个提取的分支指令的结果,进而为提取的分支指令提供相应的分支预测。该方法进一步包括:通过发布单元向分支执行单元发布提取的分支指令用于执行。更进一步,该方法还包括:如果作为一组的分支指令队列中 的提取的分支指令表现出低于第一预定分支预测信任度阈值,则通过提取调节控制器调节该提取器对于指令的提取。该方法还包括:如果该发布单元当前发布的特定的提取的分支指令表现出低于第二预定分支预测信任度阈值,则通过该提取调节控制器推测性地阻止对于指令提取的调节。
在另一个实施例中,公开了一种包含有用于存储指令的指令源的处理器。该处理器还包括:与该指令源相耦合的提取器,用于从该指令源中提取指令,以提供包含有提取的分支指令的指令流。该处理器还包括:用于预测每个提取的分支指令的结果的分支预测器,进而为提取的分支指令提供相应的分支预测。更进一步,该处理器还包括:与该提取器和分支执行单元相耦合的发布单元,用于向该分支执行单元发布提取的分支指令用以执行。该处理器还包括:与该提取器和该发布单元相耦合的提取调节控制器,如果作为一组的分支指令队列中的提取的分支指令表现出低于第一预定分支预测信任度阈值,则该提取调节控制器调节该提取器对于指令的提取。如果该发布单元当前发布的特定的提取的分支指令表现出低于第二预定分支预测信任度阈值,则该提取调节控制器推测性地阻止对于指令提取的调节。
附图说明
附图仅用于说明本发明的示例性的实施例,由于具有创造性的概念适用于其它等效实施例,所以附图并不限制本发明的范围。
图1表示采用了带有阻止功能的提取调节处理的所公开的处理器的框图;
图2表示图1所示处理器所包括的提取调节控制器的框图;
图3表示所公开的处理器的简化框图;
图4是一个流程图,表示图3所示的处理器执行提取调节操作的处理流程;以及
图5是采用图1所示处理器或图3所示处理器的信息处理系统(IHS)的框图。
具体实施方式
现代处理器通常使用推测执行技术,该技术使用分支预测以提高处理器的指令处理效率。处理器中的提取单元或指令提取器提取包含有分支指令的指令流。响应于分支预测,处理器可以推测性地执行分支指令之后的指令。更详细地,在指令译码器对指令流中的提取的分支指令进行译码之后,分支预测电路预测是否处理分支指令提供的分支。或者“处理”或者“不处理”该分支。分支预测电路通过使用分支历史信息,即,处理器先前遇到该特定分支指令时的分支结果,预测是否处理该分支。如果分支预测电路正确地预测了分支,则处理器保存在该分支之后的指令的结果。然而,如果分支预测是错误的,则处理器抛弃或清除在该分支之后的指令的结果。于是,处理器开始执行与该分支指令的正确目标地址相对应的重定向地址上的指令。
处理器推测性地执行指令会消耗大量电能。因此,希望在不会严重影响处理器性能的情况下,将推测性执行活动所耗费的电能降到最小。降低功耗的一种方法是,当处理器遇到一组分支指令时,如果处理器确定相对于分支预测(该组分支指令)累积地表现出低信任度,则调节指令的提取。处理器包括一个分支指令队列(BIQ)其存储有来自指令流的一组分支指令以及每个存储的分支指令的信任度信息。BIQ存储处于正待处理中(in-flight)的那些指令流分支,正待处理中的指令即处理器尚未解析的那些指令。如果BIQ中的低信任度分支的数目大于预定信任度阈值,则该处理器执行指令提取的调节,以降低处于上述低分支预测信任度条件下的功耗。申请日期为2007年10月04日,名称为“Method and Apparatus for Conserving Power by ThrottlingInstruction Fetching When a Processor Encounters Low ConfidenceBranches in an Information Handling System”,发明人为Bose等的共同转让美国专利申请11/733,589公开了这样一种提取调节的节能方法,这里全文引用该公开作为参考。尽管可以节能,但是该方法的确对处理器的 性能存在某些负面影响。因此,需要在尽量减少对处理器性能的负面影响的同时实现节能。
图1表示处理器100的一个实施例,该处理器100对一组低信任度分支进行提取调节,以减少处理器的耗能。处理器100包括诸如本地高速缓冲存储器的存储器105,高速缓冲存储器包括处理器100执行的指令流。因此,存储器105作为指令源。实际上,存储器105与更大的外部系统存储器(未示出)相连,外部系统存储器提供处理器执行的指令流或程序。提取器110与存储器105相连,用于从存储器105中提取指令用以执行。提取器110包括指令地址输入110A。译码器电路115与提取器110相耦合,以便对接收自提取器110的提取的指令进行译码。提取的指令流包括带有操作码和操作数的指令。指令流的某些指令是分支指令。发布单元/排序器电路117经寄存器重命名级116与译码器115相耦合。发布单元117确定合适的执行单元,后者应接收特定的经译码的指令用以执行。发布单元117与以下执行单元相耦合:定点执行单元(FXU)120、浮点执行单元(FPU)125、加载存储单元(LSU)130以及分支执行单元(BRU)135。定点执行单元(FXU)120包括寄存器文件120A。浮点执行单元125包括寄存器文件125A。
执行单元推测性地执行经过译码的分支指令之后的指令流中的指令。分支预测器140耦合在提取器110的指令地址输入110A和分支执行单元(BRU)135之间。分支预测器140包括一个分支历史表(BHT)142,后者跟踪先前执行的分支指令的历史结果。通过与分支单元(BRU)135合作,分支预测器140使用该历史分支执行信息对BRU 135当前接收的分支指令做分支预测。完成单元145与各执行单元相耦合,即,与FXU 120、FPU 125、LSU 130和BRU 135相耦合。更具体地,完成单元145与FXU寄存器文件120A和FPU寄存器文件125A相耦合。完成单元145确定以推测方式执行的指令是否应完成。如果分支预测器140正确地预测了分支,则该分支之后的指令应完成。例如,如果分支预测器140正确地预测了分支,则该分支之后的定点或 整数指令应完成。在这种情况中,完成单元145控制把该分支的定点结果写回到定点寄存器文件120A中。如果在正确预测的分支之后的指令为浮点指令,则完成单元145控制把该浮点指令的结果写回到浮点寄存器文件125A中。当指令完成时,它们将不再是推测性的。分支执行单元(BRU)135与完成单元145和分支预测器140协作,以便解析是否处理特定的分支指令。
更详细地,分支历史表(BHT)142包括先前执行的分支指令的历史。BHT 142中的每个条目包括一个方向位和一个信任度位。对于特定的分支指令,其在BHT中的条目包括一个用于指示“处理分支”或“不处理分支”的方向位。在一实施例中,如果上一次没有处理分支,则方向位为0,如果上一次处理了分支,则方向位为1。在一实施例中,对于特定的分支指令,方向位指示处理器下次遇到该分支指令时处理器是否处理该分支。方向位未必表示处理器上次遇到的分支指令的分支的方向。然而,在大部分时间内,方向位的确指示处理器上次遇到的分支指令的分支的方向。对于特定的分支指令,如果预测为处理或者不处理的分支具有低信任度,则信任度位为1。如果预测为处理或者不处理的分支具有高信任度,则信任度位为0。特定分支预测表现出低信任度的一个原因是,在前两次由处理器执行该特定分支指令时,在一种情况中该处理器处理该分支,而在另一种情况中没有处理该分支。特定分支预测表现出高信任度的原因包括,在前两次由处理器执行该特定分支指令时,处理器两次都处理该分支或两次均未处理该分支。
处理器100包括一个调节控制电路或是调节控制器200,其带有分支指令队列(BIQ)205。在该特定实施例中,分支指令队列(BIQ)205包括16个条目,亦即,由提取器提取的但处理器尚未完成的指令流中至多有16个分支指令。取决于特定应用,BIQ 205可以包括比16个条目更多或更少的条目。调节控制器200还包括一个信任度跟踪队列或信任度队列(CQ)210,后者和BIQ 205有关。CQ 210作为存储信任度信息的信任度信息存储存储器。对于BIQ 205中的每个分支 指令条目,CQ 210包括相应的信任度位。在该特定实施例中,CQ包括16个条目,即低信任度位。对于BIQ 205中的特定分支指令条目,如果CQ 210中相应的CQ信任度位条目为逻辑1,则表示用于该特定分支指令的分支预测具有低信任度。然而,对于BIQ 205中的特定分支指令条目,如果CQ 210中相应的CQ信任度位条目为逻辑0,则表示用于该特定分支指令的分支预测具有高信任度。调节控制器200访问分支历史表142,以协助信任度位在CQ 210中的填充。例如,在一个实施例中,对于BIQ 205存储的特定分支指令,为了利用相对应的信任度位填充CQ 210,如果分支预测器140和BRU 135错误预测了处理器上一次执行分支指令时的分支指令,则调节控制器200在CQ条目中的信任度位上存储1。然而,如果分支预测器140和BRU135正确预测了处理器上一次执行分支指令时的分支指令,则调节控制器200用0填充CQ中该分支的相应条目的信任度位。在一个实施例中,BHT 142保存或存储相应分支指令的信任度位或信任度值,并且在分支指令执行时,BHT 142进行自我更新。当提取器110提取特定分支指令时,CQ 210访问BHT 142,读取或存储与特定分支指令相对应的信任度位。
备选方法也可以导出一位或多位分支信任度信息。例如,一种方法可以从分支指令中存在的静态分支预测提示中导出信任度信息。该方法可以使用这些静态分支预测提示来直接设置分支指令包含的信任度位的信任度信息。作为选择,借助于逻辑等式,该方法可以使用这些静态分支预测提示来导出信任度位。例如,这种方法可以确定静态分支提示是否和分支预测器140的预测一致,其中静态分支提示指示着分支是否预测为处理或者不处理。
一种备选方法可以使用分支类型来推导分支预测信任度。例如,一个或多个无条件分支,从子例程返回的分支(Power ArchitectureTM中的blr)以及带有负偏移的条件相对分支,通常指示封闭循环分支,封闭循环分支可以用来推导表现出高信任度的分支。相反,一个或多个常见的间接分支(例如,Power ArchitectureTM中分支到计数寄存器)以及 条件相对正向分支,通常指示条件语句的赋值运算,可以利用条件语句的赋值运算来推导表现出低信任度的分支。另一个方法是当多个分支预测器分量一致时(“一致条件”)可以使用锦标赛预测器来推导高分支信任度。锦标赛选择器可以导出低信任度,当多个分量不一致时(“不一致条件”)或者在选择特定锦标赛预测器分量时锦标赛选择器具有弱信任度时。
在图1的实施例中,分支指令队列(BIQ)205是一个循环队列。BIQ 205包括概念上表示为头指针215的头指针和概念上表示为尾指针220的尾指针。头指针215指向BIQ 205中最新的分支指令,而尾指针220指向BIQ 205中最老的分支指令。由于BIQ 205从提取器110那里接收分支指令,所以头指针和尾指针每次移动一个分支指令条目,以致头指针215总是指向进入BIQ 205中的最新的分支指令,尾指针总是指向BIQ 205中最老的分支指令。
调节控制器200还包括控制逻辑225,后者与头指针215、尾指针220和信任度队列(CQ)210相耦合。因此,控制逻辑225接收当前的头指针,当前的尾指针以及CQ 210的所有信任度位。每当另一个分支指令进入BIQ 205时,头指针改变。每当某一分支指令完成时,尾指针改变。信任度队列(CQ)210存储BIQ 205中的每个分支指令条目的对应信任度位。换句话说,BIQ 205中的每个分支指令条目在CQ 210中都有一个相关联的对应信任度位。控制逻辑225计算或累加CQ 210中的所有信任度位的总和,以获得信任度位总和。在该特定实施例中,由于CQ 210存储低信任度位,所以控制逻辑225确定低信任度位总和。控制逻辑225执行第一测试,以确定当前的低信任度位总和是否大于预定阈值低信任度。如果控制逻辑225确定当前的低信任度位总和大于预定阈值低信任度或信任度不足,则调节控制器200通知提取器110开始提取调节,以降低处理器功耗。在推测执行的指令不太可能是正确的分支预测期间,通过按上述方式进行提取调节,处理器100可以降低功耗。然而,如果当前的低信任度位总和不大于预定阈值信任度级,则分支预测可能是正确的,控制逻辑225允许在不进行调节 的情况下全速提取指令并推测性地执行指令。因此,第一测试确定BIQ 205中的一组分支指令是否是累积地表现出低信任度的一组指令。另一种替代的方法可以使用不止一位来表示特定分支指令的多个分支预测信任度,例如,“很高”、“高”、“低”和“很低”信任度。另外,本领域的熟练技术人员懂得,可以用多种方式把上面的多个信任度值组合成能够概括与多个分支关联的多个信任度的一个信任度值。
发布单元117与带有阻止功能的提取调节状态机(FTSMWIF)230相耦合,以便向提取调节状态机230提供指令发布信息。这样,提取调节状态机230知道BIQ 230中的每个特定分支指令何时发布到执行单元。调节控制器200使用该发布信息以提高处理器效率和/或性能。如上所述,调节控制器200对作为一组的BIQ 205中的分支指令进行第一测试。实际上,第一测试确定BIQ 205中的一组分支指令累积起来就分支预测而言是否小于预定信任度值。换句话说,第一测试确定就其分支预测而言,该组指令累积起来较之预定信任度阈值更为缺乏信任度。
当发布单元117发布分支指令时,调节控制器200还要对BIQ 205中的每个分支指令执行第二测试。第二测试确定每一个当前发布的分支指令就其各自的分支预测而言是否小于预定信任度。FTSMWIF230对每一个分支指令执行第二测试,相反,调节控制器200对BIQ 205中有效分支指令组成的组执行第一测试。如果FTSMWIF 230确定当前发布的BIQ 205中的特定分支指令表现出低于分支预测信任度的预定量(亦即,表现出低信任度),则分支重定向是可能的,作为响应,FTSMWIF 230阻止对于提取的调节。如果重定向是可能的,则需要全速执行提取。因此,在上述情况下阻止对于提取的调节(即,重新启用全速提取)可以提高处理器的效率。然而,如果FTSMWIF 230确定BIQ 205中的特定分支指令没有表现出低于分支预测信任度的第一预定量,以致重定向是不太可能的,则FTSMWIF 230不会阻止对于提取的调节。换句话说,当BIQ 205中的分支指令作为一组指令累积起来表现出低信任度时,除非当前发布的特定分支指令表现出低于分 支预测信任度的第二预定量,否则继续提取的调节。
由于高扇出数和设置次数,所公开的流水线处理器可能需要判定调节指令提取,并且在实际提取周期前的几个周期对存储器结构和提取逻辑执行时钟选通。因此,在一个实施例中,基于预测性技术来保证不对提取逻辑进行时钟选通,从而确保在特定分支引起到达正确的新提取地址的重定向时提取周期的可用性,所述的预测性技术如涉及可能需要进行重定向的此类分支的信任度的技术。
为阻止对于提取的调节,所公开的处理器的不同实施例可以使用不同设置。一个实施例阻止在一个周期内执行提取调节,该周期恰好对应于已经禁用调节的当前分支可能引起与重定向相对应的第一提取的周期。所公开的处理器的另一个实施例在包括第一重定向周期的几个周期内阻止对于提取的调节,即,第一个提取响应于与阻止分支相对应的重定向,而第二个周期相当于与第一个提取周期后的提取相对应的下一个提取周期。
更进一步,在所公开的处理器的其它实施例中,设计师可以在设计时设置多个信任度阈值。作为选择,诸如管理程序、操作系统或应用程序的软件可以在处理器工作期间设置信任度阈值。第二阈值的一个可行选择是一个阈值设置,该阈值设置确保在任何对应于处理器响应于分支指令的执行而执行的可能的重定向的提取周期阻止对于提取的调节。
图2是图1的调节控制器200的更详细的框图。图2示出已参照图1进行了描述的分支指令队列(BIQ)205、信任度队列(CQ)210、控制逻辑225以及带有阻止功能的提取调节状态机(FTSMWIF)230。正如图2所示,BIQ 205包括16个分支指令条目BI-0,BI-1,...BI-15。信任度队列(CQ)包括用0-15标示的16个信任度位条目。但是在图2中,头指针215和尾指针220指向分支指令BI-0和BI-2,当新的分支指令从提取的指令流中进入BIQ 205时,头指针和尾指针移动。在处理器提取、执行和完成指令流中的分支指令时,BIQ 205存储的特定分支指令不断地变动。BIQ 205存储所提取的指令流中的16个最近提 取的分支指令。因此,在某一时刻,与BIQ 205中的各分支指令关联的信任度位表示,调节控制器220对作为一组的这些分支指令的预测的正确性具有低信任度。既然是那样,调节控制器200开始提取调节,以降低功耗。然而,在另一时刻,BIQ 205中填充了另一组分支指令。此时,与BIQ 205中的各分支指令关联的信任度位表示,调节控制器200对作为一组的分支指令的预测的正确性具有高信任度。因此,调节控制器200不会为了降低功耗而进行提取调节,相反,它指示提取器110执行全速提取。然而,如果FTSMWIF 230确定当前发布的特定分支指令表现出比预定的低信任度阈值更低的分支预测信任度,以致分支重定向是可能的,则FTSMWIF 230阻止对于提取的调节,允许提取以全处理器速度继续进行。
控制逻辑225包括一个AND(与)电路235,后者具有16行输入235A和16行输入235B。AND电路输入235A与CQ 210中的16个存储槽或存储位置相连,以便AND电路235接收来自CQ 210的16个信任度位。头指针215和尾指针220与有效向量生成电路240相连。有效向量生成电路240使用头指针和尾指针信息来生成一个16位向量,其中该向量的每一位对应于BIQ 205的一个不同条目。16位向量的每一位指示BIQ 205中的对应分支指令条目是否有效。如果16位向量的特定位为逻辑1,则BIQ 205中的对应分支指令条件是有效的,即,该分支指令仍然在处理中。然而,如果16位向量的特定位为逻辑0,则BIQ 205中的对应分支指令条目是无效的。BIQ 205中的有效条目从尾指针开始,向下扩展到头指针。例如,如果头指针位于条目BI-3而尾指针位于条目BI-7,则16位有效向量为0001111100000000。这意味着条目BI-3、BI-4、BI-5、BI-6和BI-7是有效的,而剩余条目是无效的。如果头指针在尾指针的上面,则有效向量回绕并且是不连续的。例如,如果头指针位于条目BI-14而尾指针位于条目BI-2,则有效向量为1110000000000011。这意味着条目BI-0、BI-1、BI-2、BI-14和BI-15是有效的,而剩余条目是无效的。在图2中,有效向量寄存器245表示有效向量245的16位。
因此,在输入235A,AND电路235接收来自CQ 210的16个低信任度位,而在输入235B,AND电路235接收有效向量的全部16位。当AND电路235对16个低信任度位和16个有效向量位进行逻辑与运算时,有效向量充当掩码,该掩码将去除AND电路235的输出端的16位结果中的所有低信任度位。因此,在该特定实施例中,与门235的输出端的16位结果仅包含有效的低信任度位。换句话说,AND电路235的输出端的16个低信任度位对应于BIQ 205中的各有效分支指令的低信任度位。
加法器250与AND电路235的输出端相耦合。加法器250计算从AND电路235那里接收的有效的低信任度位之和,以便在加法器250的输出端提供低信任度分支总和,即,个数总和(POPCOUNT)。因此,POPCOUNT表示特定时刻的BIQ 205中的有效低信任度分支的总数。比较器255包括一个输入,后者与加法器250相耦合,以接收来自加法器的低信任度分支总和POPCOUNT。比较器255的剩余输入与可编程阈值电路260相耦合,可编程阈值电路260向比较器255提供可编程信任度阈值。设计师或其它实体选择信任度阈值,以致信任度阈值表示低信任度,超过该信任度表示BIQ中的分支预测的信任度太低,所以开始提取的调节,从而开始节能。
比较器255的输出与带有阻止功能的提取调节状态机(FTSMWIF)230相耦合。如果低信任度分支的总数POPCOUNT超过预定的可编程阈值,则比较器255向提取调节状态机230输出一个逻辑1。作为响应,FTSMWIF 230向提取器输入110B发送一个THROTTLE信号,通知提取器110降低指令提取的速率。通过降低或调节指令提取的速率,降低处理器100执行不太可能处理的分支(亦即,低信任度分支)时消耗的电能。然而,如果低信任度分支的总数POPCOUNT没有超过预定的可编程阈值,则比较器255向FTSMWIF 230输出一个逻辑0。作为响应,提取调节状态机230向提取器输入110B发送一个THROTTLE信号,通知提取器110全速提取指令。既然是那样,处理器对于BIQ 205中的分支指令的预测表现出高信任度。因此,在不进 行提取器调节和功率降低的情况下,全速进行分支指令的推测执行。然而,当FTSMWIF 230在调节模式下运行时,当前发布的特定分支指令表现出低于预定的低信任度阈值级别的分支预测信任度,以致分支重定向是可能的,FTSMWIF 230将阻止对于提取的调节,并且允许提取以全处理器速度继续进行。
图3用处理器300表示所公开的处理器的简化表示。处理器300包括与处理器100中的部件相似的许多部件。如上所述,通过在处理低信任度分支指令组期间执行提取调节,所公开的节能方法可实现节能。尽管提取调节操作方法本身的确可以节能,但是就增加的提取等待时间而言,它会对处理器性能造成相当大的负面影响。正如上面说明的那样,希望在执行提取调节时降低对处理器性能的负面影响,同时仍然可以实现节能。
在某些状态下,可以阻止对于提取的调节以提高处理器的性能,而不会对节能造成过度影响。例如,如果当前发布的来自所提取的指令流的特定分支指令表现出低预测信任度,处理器300可以在先前打开提取调节之后关闭提取调节,原因在于BIQ 205中的这组分支指令表现出低预测信任度。
在一实施例中,处理器300是一个同步多线程(SMT)处理器,包括多个流水线级。处理器300包括提取器305,后者经由指令高速缓冲(ICACHE)存储器310与外部系统存储器(未示出)相耦合。指令高速缓冲310与译码器315相耦合,后者对从指令高速缓冲310中提取的指令进行译码。译码器315经由寄存器重命名电路320与发布级(即排序器)325相耦合。实际上,寄存器重命名电路325提供附加寄存器,以增强提取的指令的执行。发布级(即排序器)325向合适的功能单元发送经过译码的指令用以执行。处理器300包括以下功能单元:整数或者定点执行单元(FXU)330、浮点执行单元(FPU)335、加载/存储执行单元(LSU)340、向量介质扩展执行单元(VMX)345以及分支执行单元(BRU)350。FXU 330和FPU 335分别包括寄存器文件330A和335A,用于存储计算结果。
分支执行单元(BRU)350与发布级(即排序器)325相耦合,以便执行从排序器325那里接收的分支指令。BRU 350与分支预测器355和提取器305相耦合。执行单元FXU 330、LSU 340、FPU 335、VMX 345和BRU 350推测性地执行位于经过译码的分支指令之后的指令流中的指令。分支预测器355包括一个分支历史表(BHT)357并且与提取器305相耦合。分支历史表(BHT)357跟踪先前执行的分支指令的历史结果。分支单元(BRU)550使用该历史分支执行信息对当前接收的分支指令做出分支预测。
完成单元365与每个执行单元(即,FXU 330、FPU 335、LSU 340、VMX 345和BRU 350)相耦合。更具体地,完成单元365与FXU寄存器文件330A和FPU寄存器文件335A相连。完成单元365确定推测执行的指令是否应该完成。如果分支预测器355正确预测了分支,则该分支之后的指令应完成。例如,如果分支预测器355正确预测了分支,则该分支之后的定点或者整数指令应完成。如果正确预测的分支之后的指令为定点指令,则完成单元365控制把该分支的定点结果写回到定点寄存器文件330A中。如果正确预测的分支之后的指令为浮点指令,则完成单元365控制把该浮点指令的结果写回到浮点寄存器文件335A中。当指令完成时,它们将不再是推测性的。分支执行单元(BRU)350与完成单元365和BHT 357协作,以便解析是否处理特定的分支指令。
图3的处理器300包括一个提取调节控制器370,在一个实施例中,提取调节控制器370的运行方式类似于图1所示的提取调节控制器200。更具体地,在一个典型实施例中,提取调节控制器370包括分支指令队列(BIQ)372和信任度队列(CONF Q)374。提取调节控制器370还包括带有阻止功能的提取调节状态机(FTSMWIF)376,后者对提取器305的指令提取进行调节。分支指令队列(BIQ)372存储从提取器305那里接收的分支指令。对于BIQ 375中的每个分支指令,信任度队列374存储相应的信任度信息,该信任度信息指示分支预测器355提供的分支预测的信任度。BIQ 372可能同时包括有效和无效分支 指令。无效分支指令是完成单元365先前解析过的但仍然留在BIQ 372中的那些以推测方式执行的分支指令。BIQ 372中的剩余的有效分支指令是仍然处于待处理状态的那些分支指令,亦即,完成单元365尚未进行解析的那些以推测方式执行的分支指令。
提取调节控制器370包括带有阻止功能的提取调节状态机(FTSMWIF)376,在某些预定状态下,FTSMWIF 376通知提取器305对从指令高速缓冲存储器310中提取指令的操作进行调节,从而节能。如果BIQ 372中的有效分支指令累积起来表现出低于各分支预测的第一预定信任度,则FTSMWIF 376通知可以开始提取调节,从而节能。然而,调节操作一旦开始,如果当前发布的BIQ 372中的特定分支指令表现出低于第二预定信任度,FTSM 375就在预定的相对短的时间窗口内阻止对于提取的调节。
在一个实施例中,FTSMWIF 376进行第一和第二测试,以完成上述信任度确定。更具体地,FTSMWIF 376进行第一测试,以确定BIQ 372中的有效分支指令累积起来是否表现出低于第一预定信任度阈值。如果BIQ 372中的有效分支指令累积起来的信任度表现出低于第一预定信任度,则FTSMWIF 376通知可以开始提取调节。在FTSMWIF 376开始提取调节之后,FTSMWIF 376对当前发布的BIQ372中的特定分支指令进行第二测试,以确定当前发布的特定分支指令是否表现出低于第二预定信任度。如果第二项测试证实当前发布的特定分支指令的确表现出低于第二预定信任度,则FTSMWIF 376通知可以阻止对于提取的调节,以便在可能出现分支重定向时提高性能。
在一个实施例中,设计师利用在分支指令预测时导出的与信任度队列374为该分支存储的值相对应的信任度值,作为第二测试使用的分支预测的信任度的基础。在另一个实施例中,FTSMWIF 376依据诸如特定分支之属性的其它指令特性,获得该信任度信息。例如,间接分支或PC相对条件正向分支可推测出低信任度。相反,无条件分支语句,从子例程返回的分支指令(例如,Power ArchitectureTM中分支到连接寄存器的(blr)指令),以及PC相对反向条件分支指令,可推测出高 信任度。
在一个实施例中,处理器300在分支指令队列(BIQ)372或信任度队列(CONF Q)374中的至少一个中存储第二信任度测试的信任度信息。在另一个实施例中,处理器300直接在分支指令队列(BIQ)中与该分支一起存储该信任度信息,以减少在BIQ或CONF Q中执行读操作时的附加等待时间。
关于所公开的处理器300阻止对于提取的调节的期限,处理器的不同实施例可以使用不同的时间值或预定时间窗口设置。在一个实施例中,处理器300阻止在一个周期内执行提取调节,该周期对应于处理器禁用其提取调节的当前分支指令引起与重定向相对应的第一提取的周期。在另一个实施例中,处理器300可以使用多个周期的提取调节操作,多个周期包括第一重定向周期,亦即,响应于与阻止分支相对应的重定向的第一提取,还包括第二周期,对应于与第一个提取重定向周期后的提取相对应的下一个提取周期。处理器的一个实施例在进行硬件设计时确定用于第二测试的具体时间窗口设置。在另一个实施例中,电源管理工具、固件、管理程序、操作系统或应用程序可以对该时间窗口进行编程。
当分支指令队列(BIQ)370中的有效分支的预测的累积信任度低于第一预定信任度时,图3的提取调节控制器370调节提取器305提取指令的操作。换句话说,当与BIQ 372中的有效分支指令关联的CONF Q 374中的信任度位累积起来表示的累积信任度低于第一预定信任度时,提取调节控制器370开始提取调节。因此,第一项信任度测试是一个“累积信任度测试”,原因在于BIQ 372中的多个有效分支指令是作为一个组来考虑其总计信任度的。所公开的处理器可以使用其结构和机制不同于分支指令队列和信任度队列的提取调节控制器,以确定第一项累积信任度测试中的累积信任度。
提取控制器375还要进行第二信任度测试,亦即,对发布级(即排序器)325当前选择发布的每个分支指令进行信任度测试。这是一个“个体信任度测试”,原因在于提取调节控制器370在发布级(即 单元)325选择发布的每一个分支指令上进行该项测试。该项测试确定特定分支指令是否表现出低于第二预定信任度。如果特定分支指令表现出低于第二预定信任度,则提取调节控制器370在预定期限内阻止、抑制或废弃提取调节操作。换句话说,在上述状态下,提取调节控制器370在预定期限内重新启用指令提取操作而不管在第一项累积信任度测试中导出的提取调节指示,以提高处理器性能。在一个实施例中,为了阻止对于提取的调节,提取控制器370通知提取器305再次开始全速提取指令。这样,通过在发布时刻重新启用提取操作,分支单元(BRU)350及时生成供提取器305使用的重定向地址。从而可以显著提高处理器的性能。在该预定期限(即时间窗口)期满后,提取调节控制器370可以再次开始提取调节操作,前提是第一项累积信任度测试表示BIQ 370中的有效分支指令作为一组指令表现出的累积信任度低于第一预定信任度。阻止对于提取的调节包括废弃、终止和暂停提取调节。在一个备选实施例中,当第一累积信任度测试指示使用提取调节,并且第二个体信任度测试表示处理器应阻止或抑制指令提取时,该处理器按照低于处理器的正常提取速度的降级提取速度执行指令提取。在一个实施例中,当特定分支指令的信任度低于第二预定信任度时,预想到有可能出现分支重定向,提取调节控制器370会阻止对于提取的调节,就此意义而言,阻止对于提取的调节是推测性的。
图4是一个流程图,表示处理器300用来提高处理器性能的提取调节阻止方法。带有阻止功能的提取调节状态机(FTSMWIF)376生成一个调节信号(THROTTLE),该信号用于控制从指令高速缓冲存储器310提取指令的调节以及控制对从指令高速缓冲存储器310中提取指令的调节的阻止。根据初始化处理器框405,当处理器300初始化时处理流程开始。根据框410,通过向FTSMWIF 376提供合适的输入选择,处理器设计师、用户或其它实体启用或禁用FTSMWIF376。根据判定框415,FTSMWIF 376执行测试以确定FTSMWIF 376是否处于启用状态。根据框420,如果FTSMWIF 376不处于启用状态, 则提取器305继续全速提取指令,亦即,不需要进行提取调节。然而,如果FTSMWIF 376处于启用状态,则在某些合适状态下提取调节开始。
根据框425,如果FTSMWIF 376处于启用状态,则提取器305提取指令并且提取调节控制器370读取分支预测器355的分支历史表(BHT)357,以便观测所提取的指令流中的提取的分支指令的分支预测。提取器305向BIQ 372提供所提取的指令流的分支指令。根据框430,BIQ 372写入这些提取的分支指令,作为BIQ的条目。因此,BIQ 372存储一组分支指令,包括当前处于正待处理中的或尚未进行解析的指令流中的那些分支指令。处于正待处理中的分支指令为有效分支指令。BIQ 372还包括被提取调节控制器370视为无效分支指令的一些旧的经过解析的分支指令。同时,根据框430,信任度队列374存储信任度信息,如BIQ 372中的每个分支指令条目的信任度位。信任度位为1表示分支预测器355为相应分支指令做出的分支预测高信任度。信任度位为0表示分支预测器355为相应分支指令做出的分支预测低信任度。
根据框435,在一个实施例中,通过对信任度位和相应的有效位进行与运算,调节控制器370审核信任度队列374中的信任度位。根据框440,提取调节状态机(FTSMWIF)376确定BIQ 372中的有效分支指令的累积分支指令组(CBIG)信任度。在一个实施例中,FTSMWIF376计算BIQ 372中的有效分支指令的信任度队列374中的信任度位或信任度信息的总和,由此形成累积分支指令组(CBIG)信任度级。CBIG信任度表示BIQ 372中当前存储的有效分支指令的分支预测的信任度量。在处理器执行指令流中的指令时,该信任度随着BIQ 372中存储的分支指令的变化而变化。本领域的熟练技术人员可以调整或修改图4中公开的提取调节的阻止方法,通过修改和/或替换图4所示步骤430、435和440中的一个或多个步骤,可以和用于确定第一累积分支指令组(CBIG)信任度的其它方法一起工作。
根据判定框445,FTSMWIF 376进行第一项测试,以确定当前的累积分支指令组(CBIG)信任度是否小于第一预定信任度阈值。假如这 样的话,表示分支指令队列(BIQ)372中的有效分支指令的分支预测的总信任度低。在一个实施例中,设计师或其它实体选择第一预定信任度阈值,如果当前的CBIG信任度小于第一预定信任阈值,则较之不是BIQ 372中的分支而言出现分支误预测的可能性大。根据框450,如果判定框445中的测试确定CBIG信任度不小于第一预定信任度阈值,则提取调节控制器370不会开始提取调节。FTSMWIF 376生成一个THROTTLE信号,通知提取器305继续全速从ICACHE 310中提取指令。处理流程返回到框425,并且继续以全速进行指令提取。
然而,根据框455,如果判定框445中的测试确定当前的CBIG信任度小于第一预定信任度阈值,则提取调节控制器370开始提取调节操作,以降低处理器功耗。更具体地,FTSMWIF 376通过生成一个THROTTLE信号启动提取调节,该信号通知提取器305降低提取器305从ICACHE 310中提取指令的速率或速度。因此,当BIQ 372中的有效分支指令组的总的分支预测信任度较低时,提取调节操作开始,从而节能。几种不同的提取调节模式都是可行的,以获得不同的提取调节量。在一个实施例中,处理器可以基于具体的信任度值自适应地选择提取调节模式,以便对比较低的CBIG信任度值进行更激进的调节,同时对低于第一阈值的比较高的CBIG信任度值进行不太激进的调节。
根据框460,在一个实施例中,一旦提取调节开始,FTSMWIF 376就接收来自发布单元325的发布信息,以通知FTSMWIF 376发布单元325何时发布BIQ 372中的每条分支指令。发布信息包括分支发布信息,用于通知FTSMWIF 376发布单元325把当前发布的分支指令发送到BRU 350用以执行。根据框462,当发布单元325发布分支指令时,FTSMWIF 376检查当前发布的分支指令的信任度队列374中的各信任度。根据判定框465,FTSMWIF 376进行第二测试,以确定当前发布的BIQ 372中的特定分支指令的分支预测的信任度是否小于第二预定信任度阈值。
在一个实施例中,处理器300利用调节控制器370在分支指令预 测时导出的与信任度队列存储的信任度值相对应的信任度值,作为在第二测试中分析的分支预测的信任度的基础。处理器也可以根据诸如具体分支指令之属性的其它指令特性导出该信任度信息。例如,处理器推测间接分支指令或PC相对条件正向分支指令具有低信任度,反过来,处理器推测无条件分支指令、从子例程返回的分支指令(Power ArchitectureTM中的分支到连接寄存器blr指令)、以及PC相对反向条件分支指令具有高信任度。处理器的一实施例在至少一个信任度队列中存储用于第二测试的信任度信息。例如,为了使用信任度信息,提取调节控制器370从信任度队列374中取回信任度信息。在另一个实施例中,处理器直接在分支指令队列(BIQ)中与有关分支指令一起存储用于第二测试的信任度信息,以减少在BIQ或CQ中执行读操作的附加等待时间。
如果当前发布的特定分支指令的预测信任度不小于第二预定阈值,则FTSMWIF 376通知提取器305继续进行提取调节。此时,处理流程返回到提取框425。然而,根据框470,如果当前发布的特定分支指令的预测的信任度小于第二预定阈值,则FTSMWIF 376在预定持续时间的时间窗口内阻止对于提取的调节。在一个实施例中,该调节阻止时间窗口具有比较短的持续时间。处理器的不同实施例可以使用具有不同持续时间的时间窗口,提取调节控制器370在该时间窗口内阻止指令提取调节。在一个实施例中,提取调节控制器370在一个周期内阻止对于提取的调节,该周期对应于已经阻止调节的当前分支可能引起与重定向相对应的第一提取的周期。在另一个实施例中,处理器在多个周期内阻止对于提取的调节,包括第一重定向周期,亦即,响应于与阻止分支相对应的重定向的第一个提取操作,还包括第二周期,该第二周期相对于与第一个提取周期后的提取相对应的下一个提取周期。
根据框475,在该调节阻止时间窗口期满后,FTSMWIF 376停止阻止或废弃提取调节,以致提取调节再次开始。处理流程回到提取框425。在判定框445中,当累积分支指令组(CBIG)信任度大 于等于第一预定阈值时,提取调节停止,开始全速提取。
在上述实施例中,FTSMWIF 376监控一组分支指令的累积分支指令组(CBIG)信任度,以确定该信任度是否低到值得进行提取调节。在等效实施例中,FTSMWIF 376也可以监控一组分支指令预测中的累积分支信任度缺失,以确定信任度的缺失是否高到值得进行提取调节。FTSMWIF 376可以使用上述两个等效条件中的任何一个来触发提取调节。
在一个实施例中,响应于用于查明当前发布的特定分支指令的分支预测信任度低于第二预定信任度阈值的第二测试,在特定分支指令指示提取器305从内存中的某个新位置提取指令时,也可能在此后的一个或多个周期内,调节控制器370再次开始进行调节。换句话说,每当发布单元325选择低信任度分支指令进行发布时,FTSMWIF 376总是推测性地禁用提取调节。此时,通过及时地重新启用提取操作,分支单元350及时生成供提取器305使用的重定向地址。禁用提取调节等效于重新启用全速提取。
现在概括用于以下实施例的提取调节阻止,在该实施例中,FTSMWIF 376监控一组分支指令的累积分支指令组(CBIG)的信任度,以确定该信任度是否低到值得进行提取调节,即,是否小于第一预定阈值。根据图4所示流程图中的框465,在上面的实施例中,在当前发布的特定分支指令的信任度低于第二预定阈值时,FTSMWIF 376阻止对于提取的调节。
现在概括用于以下实施例的提取调节阻止,在该实施例中,FTSMWIF 376监控一组分支指令的累积分支指令组(CBIG)信任度的缺失,以确定信任度的缺失是否高到值得进行提取调节,即,是否大于第一预定缺失信任度阈值。在上面的实施例中,在当前发布的特定分支指令的信任度的缺失高于第二预定缺失信任度时,FTSMWIF 376阻止对于提取的调节。换句话说,FTSMWIF 376利用一项测试来替换图4所示流程图中的判定框465,该项测试确定当前发布的特定分支指令的分支预测的缺失信任度何时超过第二预定缺 失信任度阈值。
图5表示使用处理器100或300的信息处理系统(IHS)500。信息处理系统可以是采用数字方式、模拟方式或其它方式来处理、传送、传播、修改、存储或用别的方法处理信息的系统。信息处理系统500包括一条总线505,后者经由存储控制器520和存储总线522,把处理器100、300耦合到系统存储器510。视频图形控制器525耦合显示器530到总线505。非易失存储器535,如硬盘驱动器、CD驱动器、DVD驱动器或其它非易失存储器和总线505相耦合,目的是为信息处理系统500配备永久信息存储器。操作系统540被加载到内存510中,以管理信息处理系统500的操作。诸如键盘和鼠标定点设备的I/O设备545经由I/O控制器550和I/O总线555耦合到总线505。诸如USB、IEEE 1394总线、ATA、SATA、PCI、PCIE和其它总线的一条或多条扩展总线560与总线505相耦合,以便把外设或设备耦合到信息处理系统500。网络适配器565与总线505相耦合,以便采用有线方式或采用无线方式把信息处理系统500耦合到网络和其它信息处理器系统。尽管图5表示了使用处理器100或300的一个信息处理系统,但是信息处理系统可以采取多种形状。例如,信息处理系统500的形状可以是台式机、服务器、手提电脑、膝上型电脑、笔记本电脑、或其它形式的计算机或数据处理系统。信息处理系统500可以采取其它形式,如游戏机、个人数字助理(PDA)、便携电话设备、通信设备或包含有处理器和存储器的其它设备。
考虑到本发明的上述描述,本发明的修改和备选实施例对本领域的熟练技术人员是显然的。因此,本描述向本领域的熟练技术人员讲授执行本发明的方式,并且应该被解释为仅为说明性的。以上所示和描述的本发明的形式构成各实施例。本领域的熟练技术人员可以对部件的形状、尺寸和排列做出各种修改。例如,本领域的熟练技术人员可以用等效部件替换本文所示和描述的部件。此外,得益于本发明的描述,本领域的熟练技术人员可以在不使用其它功能部件的情况下使用本发明的某些功能部件,而并不背离本发明的范围。
Claims (20)
1.一种操作处理器的方法,该方法包括:
通过提取器从指令源中提取指令,以提供包含有提取的分支指令的指令流;
通过分支预测器预测该提取的分支指令的结果,进而为该提取的分支指令提供相应的分支预测;
通过发布单元向分支执行单元发布该提取的分支指令用以执行;
如果在一组分支指令的队列中提取的分支指令表现出低于第一预定分支预测信任度阈值,则通过提取调节控制器调节该提取器对于指令的提取;以及
如果该发布单元当前发布的特定的提取的分支指令表现出低于第二预定分支预测信任度阈值,则通过该提取调节控制器阻止对于指令提取的调节。
2.根据权利要求1的方法,其中调节步骤包括,通过该提取调节控制器执行第一测试,以确定作为该分支指令队列中一组的提取的分支指令累积起来是否小于该第一预定分支预测信任度阈值。
3.根据权利要求1的方法,其中所述如果该发布单元当前发布的特定的提取的分支指令表现出低于第二预定分支预测信任度阈值,则通过该提取调节控制器阻止对于指令提取的调节包括,通过该提取调节控制器执行第二测试,以确定该发布单元当前发布的特定的提取的分支指令是否小于该第二预定分支预测信任度阈值。
4.根据权利要求2的方法,其中该提取调节控制器对分支指令队列内正待处理中的分支指令进行第一测试。
5.根据权利要求1的方法,其中所述如果该发布单元当前发布的特定的提取的分支指令表现出低于第二预定分支预测信任度阈值,则通过该提取调节控制器阻止对于指令提取的调节包括,该提取调节控制器在预定持续时间的窗口内暂停对于指令提取的调节。
6.根据权利要求5的方法,还包括提取调节控制器在预定持续时间的窗口期满之后返回到对于指令提取的调节。
7.根据权利要求1的方法,还包括通过信任度存储存储器为该分支指令队列中的每一个提取的分支指令存储相应的分支预测信任度值。
8.一种处理器,包括:
存储指令的指令源;
与该指令源相耦合的提取器,用于从该指令源中提取指令,以提供包含有提取的分支指令的指令流;
用于预测该提取的分支指令的结果的分支预测器,从而为提取的分支指令提供相应的分支预测;
与该提取器和分支执行单元相耦合的发布单元,用于向该分支执行单元发布提取的分支指令用以执行;以及
与该提取器和该发布单元相耦合的提取调节控制器,如果作为在一组分支指令的队列中提取的分支指令表现出低于第一预定分支预测信任度阈值,则该提取调节控制器调节该提取器对于指令的提取,如果该发布单元当前发布的特定的提取的分支指令表现出低于第二预定分支预测信任度阈值,则该提取调节控制器阻止对于指令提取的调节。
9.根据权利要求8的处理器,其中该提取调节控制器执行第一测试,以确定作为该分支指令队列中一组的提取的分支指令累积起来是否小于该第一预定分支预测信任度阈值。
10.根据权利要求9的处理器,其中在该提取调节控制器阻止对于提取指令调节之前,该提取调节控制器执行第二测试,以确定该发布单元当前发布的特定的提取的分支指令是否小于该第二预定分支预测信任度阈值。
11.根据权利要求9的处理器,其中该提取调节控制器对分支指令队列内正待处理中的分支指令进行第一测试。
12.根据权利要求8的处理器,其中通过在预定持续时间的窗口内暂停对于指令提取的调节,该提取调节控制器推测性地阻止对于指令提取的调节。
13.根据权利要求12的处理器,其中在预定持续时间的窗口期满之后,该提取调节控制器返回到对于指令提取的调节。
14.根据权利要求8的处理器,其中该提取调节控制器包括该分支指令队列,该提取调节控制器还包括一个信任度存储存储器,后者为该分支指令队列中的每一个提取的分支指令存储相应的分支预测信任度值。
15.一种信息处理系统,包括:
存储器;
与该存储器相耦合的处理器,该处理器包括:
存储指令的指令源;
与该指令源相耦合的提取器,用于从该指令源中提取指令,以提供包含有提取的分支指令的指令流;
用于预测该提取的分支指令的结果的分支预测器,如此为提取的分支指令提供相应的分支预测;
与该提取器和分支执行单元相耦合的发布单元,用于向该分支执行单元发布提取的分支指令用以执行;以及
与该提取器和该发布单元相耦合的提取调节控制器,如果作为在一组分支指令的队列中提取的分支指令表现出低于第一预定分支预测信任度阈值,则调节该提取器对于指令的调节,如果该发布单元当前发布的特定的提取的分支指令表现出低于第二预定分支预测信任度阈值,则该提取调节控制器阻止对于指令提取的调节。
16.根据权利要求15的信息处理系统,其中该提取调节控制器执行第一测试,以确定作为该分支指令队列中一组的提取的分支指令累积起来是否小于该第一预定分支预测信任度阈值。
17.根据权利要求16的信息处理系统,其中在该提取调节控制器阻止对于提取指令调节之前,该提取调节控制器执行第二测试,以确定该发布单元当前发布的特定的提取的分支指令是否小于该第二预定分支预测信任度阈值。
18.根据权利要求16的信息处理系统,其中该提取调节控制器对分支指令队列内正待处理中的分支指令进行第一测试。
19.根据权利要求15的信息处理系统,其中通过在预定持续时间的窗口内暂停对于指令提取的调节,该提取调节控制器推测性地阻止对于指令提取的调节。
20.根据权利要求19的信息处理系统,其中在预定持续时间的窗口期满之后,该提取调节控制器返回到对于指令提取的调节。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/951,112 US8006070B2 (en) | 2007-12-05 | 2007-12-05 | Method and apparatus for inhibiting fetch throttling when a processor encounters a low confidence branch instruction in an information handling system |
US11/951,112 | 2007-12-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101452378A CN101452378A (zh) | 2009-06-10 |
CN101452378B true CN101452378B (zh) | 2011-11-23 |
Family
ID=40722887
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101813441A Active CN101452378B (zh) | 2007-12-05 | 2008-11-19 | 阻止指令提取调节的方法、处理器和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8006070B2 (zh) |
JP (1) | JP5285408B2 (zh) |
CN (1) | CN101452378B (zh) |
TW (1) | TW200939116A (zh) |
Families Citing this family (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7925853B2 (en) * | 2008-01-04 | 2011-04-12 | International Business Machines Corporation | Method and apparatus for controlling memory array gating when a processor executes a low confidence branch instruction in an information handling system |
US8020167B2 (en) * | 2008-05-05 | 2011-09-13 | Dell Products L.P. | System and method for automatic throttling of resources in an information handling system chassis |
US9335997B2 (en) | 2008-08-15 | 2016-05-10 | Apple Inc. | Processing vectors using a wrapping rotate previous instruction in the macroscalar architecture |
US9335980B2 (en) | 2008-08-15 | 2016-05-10 | Apple Inc. | Processing vectors using wrapping propagate instructions in the macroscalar architecture |
US9342304B2 (en) | 2008-08-15 | 2016-05-17 | Apple Inc. | Processing vectors using wrapping increment and decrement instructions in the macroscalar architecture |
US20100332812A1 (en) * | 2009-06-24 | 2010-12-30 | Doug Burger | Method, system and computer-accessible medium for low-power branch prediction |
CN101604235B (zh) * | 2009-07-10 | 2012-03-28 | 杭州电子科技大学 | 一种嵌入式处理器分支预测的方法 |
US9411599B2 (en) | 2010-06-24 | 2016-08-09 | International Business Machines Corporation | Operand fetching control as a function of branch confidence |
US9836304B2 (en) * | 2010-11-15 | 2017-12-05 | Advanced Micro Devices, Inc. | Cumulative confidence fetch throttling |
US9778934B2 (en) * | 2010-11-16 | 2017-10-03 | Advanced Micro Devices, Inc. | Power efficient pattern history table fetch in branch predictor |
EP2691854A1 (en) | 2011-03-30 | 2014-02-05 | Freescale Semiconductor, Inc. | A method and apparatus for controlling fetch-ahead in a vles processor architecture |
US9389860B2 (en) | 2012-04-02 | 2016-07-12 | Apple Inc. | Prediction optimizations for Macroscalar vector partitioning loops |
US9116686B2 (en) * | 2012-04-02 | 2015-08-25 | Apple Inc. | Selective suppression of branch prediction in vector partitioning loops until dependency vector is available for predicate generating instruction |
US9389868B2 (en) * | 2012-11-01 | 2016-07-12 | International Business Machines Corporation | Confidence-driven selective predication of processor instructions |
US11150721B2 (en) * | 2012-11-07 | 2021-10-19 | Nvidia Corporation | Providing hints to an execution unit to prepare for predicted subsequent arithmetic operations |
GB2514956B (en) | 2013-01-21 | 2015-04-01 | Imagination Tech Ltd | Allocating resources to threads based on speculation metric |
US9489204B2 (en) * | 2013-03-15 | 2016-11-08 | Qualcomm Incorporated | Method and apparatus for precalculating a direct branch partial target address during a misprediction correction process |
US9817663B2 (en) | 2013-03-19 | 2017-11-14 | Apple Inc. | Enhanced Macroscalar predicate operations |
US9348589B2 (en) | 2013-03-19 | 2016-05-24 | Apple Inc. | Enhanced predicate registers having predicates corresponding to element widths |
US10496410B2 (en) * | 2014-12-23 | 2019-12-03 | Intel Corporation | Instruction and logic for suppression of hardware prefetchers |
DE102015208591B4 (de) * | 2015-05-08 | 2016-12-08 | Physik Instrumente (Pi) Gmbh & Co. Kg | Piezoelektrischer Drehantrieb mit einem als Blattfeder ausgebildeten Spannmittel |
US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
US10169044B2 (en) | 2015-06-26 | 2019-01-01 | Microsoft Technology Licensing, Llc | Processing an encoding format field to interpret header information regarding a group of instructions |
US9946548B2 (en) | 2015-06-26 | 2018-04-17 | Microsoft Technology Licensing, Llc | Age-based management of instruction blocks in a processor instruction window |
US10191747B2 (en) | 2015-06-26 | 2019-01-29 | Microsoft Technology Licensing, Llc | Locking operand values for groups of instructions executed atomically |
US10175988B2 (en) | 2015-06-26 | 2019-01-08 | Microsoft Technology Licensing, Llc | Explicit instruction scheduler state information for a processor |
US11755484B2 (en) * | 2015-06-26 | 2023-09-12 | Microsoft Technology Licensing, Llc | Instruction block allocation |
US10409606B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Verifying branch targets |
US9952867B2 (en) | 2015-06-26 | 2018-04-24 | Microsoft Technology Licensing, Llc | Mapping instruction blocks based on block size |
US9940136B2 (en) | 2015-06-26 | 2018-04-10 | Microsoft Technology Licensing, Llc | Reuse of decoded instructions |
US10409599B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Decoding information about a group of instructions including a size of the group of instructions |
US10095519B2 (en) | 2015-09-19 | 2018-10-09 | Microsoft Technology Licensing, Llc | Instruction block address register |
US10061584B2 (en) * | 2015-09-19 | 2018-08-28 | Microsoft Technology Licensing, Llc | Store nullification in the target field |
US10474462B2 (en) | 2016-02-29 | 2019-11-12 | Qualcomm Incorporated | Dynamic pipeline throttling using confidence-based weighting of in-flight branch instructions |
US10331566B2 (en) | 2016-12-01 | 2019-06-25 | International Business Machines Corporation | Operation of a multi-slice processor implementing adaptive prefetch control |
CN108549400B (zh) * | 2018-05-28 | 2021-08-03 | 浙江工业大学 | 基于对数增强型双幂次趋近律和快速终端滑模面的四旋翼飞行器自适应控制方法 |
US10776122B2 (en) | 2018-06-14 | 2020-09-15 | International Business Machines Corporation | Prioritization protocols of conditional branch instructions |
US11507380B2 (en) * | 2018-08-29 | 2022-11-22 | Advanced Micro Devices, Inc. | Branch confidence throttle |
US11216279B2 (en) * | 2018-11-26 | 2022-01-04 | Advanced Micro Devices, Inc. | Loop exit predictor |
US11003454B2 (en) * | 2019-07-17 | 2021-05-11 | Arm Limited | Apparatus and method for speculative execution of instructions |
US11620224B2 (en) * | 2019-12-10 | 2023-04-04 | Advanced Micro Devices, Inc. | Instruction cache prefetch throttle |
CN111459550B (zh) * | 2020-04-14 | 2022-06-21 | 上海兆芯集成电路有限公司 | 具高度领先分支预测器的微处理器 |
US11403103B2 (en) | 2020-04-14 | 2022-08-02 | Shanghai Zhaoxin Semiconductor Co., Ltd. | Microprocessor with multi-step ahead branch predictor and having a fetch-target queue between the branch predictor and instruction cache |
US11508124B2 (en) * | 2020-12-15 | 2022-11-22 | Advanced Micro Devices, Inc. | Throttling hull shaders based on tessellation factors in a graphics pipeline |
US11776085B2 (en) | 2020-12-16 | 2023-10-03 | Advanced Micro Devices, Inc. | Throttling shaders based on resource usage in a graphics pipeline |
US11710207B2 (en) | 2021-03-30 | 2023-07-25 | Advanced Micro Devices, Inc. | Wave throttling based on a parameter buffer |
US20230205872A1 (en) * | 2021-12-23 | 2023-06-29 | Advanced Micro Devices, Inc. | Method and apparatus to address row hammer attacks at a host processor |
US11972264B2 (en) * | 2022-06-13 | 2024-04-30 | Arm Limited | Micro-operation supply rate variation |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1555006A (zh) * | 2003-12-24 | 2004-12-15 | 智慧第一公司 | 远跳跃及远呼叫指令的退回分支预测机制的处理器及方法 |
CN1560734A (zh) * | 2004-03-09 | 2005-01-05 | 中国人民解放军国防科学技术大学 | 双栈返回地址预测器设计方法 |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5742805A (en) * | 1996-02-15 | 1998-04-21 | Fujitsu Ltd. | Method and apparatus for a single history register based branch predictor in a superscalar microprocessor |
US5822577A (en) * | 1996-05-01 | 1998-10-13 | International Business Machines Corporation | Context oriented branch history table |
US6411156B1 (en) | 1997-06-20 | 2002-06-25 | Intel Corporation | Employing transistor body bias in controlling chip parameters |
US6415388B1 (en) | 1998-10-30 | 2002-07-02 | Intel Corporation | Method and apparatus for power throttling in a microprocessor using a closed loop feedback system |
US6233645B1 (en) * | 1998-11-02 | 2001-05-15 | Compaq Computer Corporation | Dynamically disabling speculative prefetch when high priority demand fetch opportunity use is high |
US7035997B1 (en) | 1998-12-16 | 2006-04-25 | Mips Technologies, Inc. | Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors |
US6484265B2 (en) | 1998-12-30 | 2002-11-19 | Intel Corporation | Software control of transistor body bias in controlling chip parameters |
US6272666B1 (en) | 1998-12-30 | 2001-08-07 | Intel Corporation | Transistor group mismatch detection and reduction |
US6393374B1 (en) | 1999-03-30 | 2002-05-21 | Intel Corporation | Programmable thermal management of an integrated circuit die |
US6363490B1 (en) | 1999-03-30 | 2002-03-26 | Intel Corporation | Method and apparatus for monitoring the temperature of a processor |
US6625744B1 (en) | 1999-11-19 | 2003-09-23 | Intel Corporation | Controlling population size of confidence assignments |
US6564328B1 (en) | 1999-12-23 | 2003-05-13 | Intel Corporation | Microprocessor with digital power throttle |
US6697932B1 (en) | 1999-12-30 | 2004-02-24 | Intel Corporation | System and method for early resolution of low confidence branches and safe data cache accesses |
US6766441B2 (en) | 2001-01-19 | 2004-07-20 | International Business Machines Corporation | Prefetching instructions in mis-predicted path for low confidence branches |
US6608528B2 (en) | 2001-10-22 | 2003-08-19 | Intel Corporation | Adaptive variable frequency clock system for high performance low power microprocessors |
US7032116B2 (en) | 2001-12-21 | 2006-04-18 | Intel Corporation | Thermal management for computer systems running legacy or thermal management operating systems |
US7281140B2 (en) | 2001-12-28 | 2007-10-09 | Intel Corporation | Digital throttle for multiple operating points |
US6931559B2 (en) | 2001-12-28 | 2005-08-16 | Intel Corporation | Multiple mode power throttle mechanism |
TW567408B (en) | 2002-03-29 | 2003-12-21 | Uniwill Comp Corp | Apparatus and method for controlling power and clock speed of electronic system |
TWI262380B (en) | 2002-04-25 | 2006-09-21 | Quanta Comp Inc | Dynamic adjustment method for power consumption of computer system |
US20040003215A1 (en) | 2002-06-28 | 2004-01-01 | Evgeni Krimer | Method and apparatus for executing low power validations for high confidence speculations |
US6934865B2 (en) * | 2002-07-09 | 2005-08-23 | University Of Massachusetts | Controlling a processor resource based on a compile-time prediction of number of instructions-per-cycle that will be executed across plural cycles by the processor |
US6762629B2 (en) | 2002-07-26 | 2004-07-13 | Intel Corporation | VCC adaptive dynamically variable frequency clock system for high performance low power microprocessors |
US6908227B2 (en) | 2002-08-23 | 2005-06-21 | Intel Corporation | Apparatus for thermal management of multiple core microprocessors |
US7076672B2 (en) | 2002-10-14 | 2006-07-11 | Intel Corporation | Method and apparatus for performance effective power throttling |
US7085945B2 (en) | 2003-01-24 | 2006-08-01 | Intel Corporation | Using multiple thermal points to enable component level power and thermal management |
US7124321B2 (en) | 2003-02-10 | 2006-10-17 | Sun Microsystems, Inc. | Adaptive throttling |
US7496776B2 (en) | 2003-08-21 | 2009-02-24 | International Business Machines Corporation | Power throttling method and apparatus |
JP4524251B2 (ja) * | 2003-08-26 | 2010-08-11 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 要求駆動型クロック・スロットリング電力低減を用いるプロセッサ |
US7240225B2 (en) | 2003-11-10 | 2007-07-03 | Dell Products L.P. | System and method for throttling power in one or more information handling systems |
US7363517B2 (en) | 2003-12-19 | 2008-04-22 | Intel Corporation | Methods and apparatus to manage system power and performance |
US7194641B2 (en) | 2004-01-22 | 2007-03-20 | International Business Machines Corporation | Method and apparatus for managing power and thermal alerts transparently to an operating system in a data processing system with increased granularity in reducing power usage and thermal generation |
US7334143B2 (en) | 2004-04-19 | 2008-02-19 | Hewlett-Packard Development Company, L.P. | Computer power conservation apparatus and method that enables less speculative execution during light processor load based on a branch confidence threshold value |
US7418608B2 (en) | 2004-06-17 | 2008-08-26 | Intel Corporation | Method and an apparatus for managing power consumption of a server |
US7330988B2 (en) | 2004-06-30 | 2008-02-12 | Sun Microsystems, Inc. | Method and apparatus for power throttling in a multi-thread processor |
US7392366B2 (en) | 2004-09-17 | 2008-06-24 | International Business Machines Corp. | Adaptive fetch gating in multithreaded processors, fetch control and method of controlling fetches |
US7478214B2 (en) * | 2006-01-04 | 2009-01-13 | Intel Corporation | Clock-gated random access memory |
US7627742B2 (en) * | 2007-04-10 | 2009-12-01 | International Business Machines Corporation | Method and apparatus for conserving power by throttling instruction fetching when a processor encounters low confidence branches in an information handling system |
US20080263325A1 (en) | 2007-04-19 | 2008-10-23 | International Business Machines Corporation | System and structure for synchronized thread priority selection in a deeply pipelined multithreaded microprocessor |
-
2007
- 2007-12-05 US US11/951,112 patent/US8006070B2/en not_active Expired - Fee Related
-
2008
- 2008-11-10 TW TW097143346A patent/TW200939116A/zh unknown
- 2008-11-19 CN CN2008101813441A patent/CN101452378B/zh active Active
- 2008-12-05 JP JP2008311299A patent/JP5285408B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1555006A (zh) * | 2003-12-24 | 2004-12-15 | 智慧第一公司 | 远跳跃及远呼叫指令的退回分支预测机制的处理器及方法 |
CN1560734A (zh) * | 2004-03-09 | 2005-01-05 | 中国人民解放军国防科学技术大学 | 双栈返回地址预测器设计方法 |
Also Published As
Publication number | Publication date |
---|---|
JP5285408B2 (ja) | 2013-09-11 |
JP2009140502A (ja) | 2009-06-25 |
CN101452378A (zh) | 2009-06-10 |
TW200939116A (en) | 2009-09-16 |
US8006070B2 (en) | 2011-08-23 |
US20090150657A1 (en) | 2009-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101452378B (zh) | 阻止指令提取调节的方法、处理器和装置 | |
US7627742B2 (en) | Method and apparatus for conserving power by throttling instruction fetching when a processor encounters low confidence branches in an information handling system | |
EP3001308B1 (en) | Loop predictor-directed loop buffer | |
US5719800A (en) | Performance throttling to reduce IC power consumption | |
CN100407137C (zh) | 推测性地执行程序指令的方法、微处理器及系统 | |
CN100480994C (zh) | 分支目标缓冲器及其使用方法 | |
EP2513752B1 (en) | A counter architecture for online dvfs profitability estimation | |
KR101513953B1 (ko) | 조건부 비-분기 명령들의 비-실행을 예측하기 위한 방법들 및 장치들 | |
JP5174191B2 (ja) | プロセッサリソースのアーキテクチャ脆弱性の検出 | |
CN101243372B (zh) | 用于控制微处理器中的功率参数的设备和方法 | |
US7925853B2 (en) | Method and apparatus for controlling memory array gating when a processor executes a low confidence branch instruction in an information handling system | |
CN101449238A (zh) | 本地和全局分支预测信息存储 | |
CN101876891A (zh) | 微处理器以及快速执行条件分支指令的方法 | |
US11972264B2 (en) | Micro-operation supply rate variation | |
US11663007B2 (en) | Control of branch prediction for zero-overhead loop | |
Burtscher et al. | Hybridizing and coalescing load value predictors | |
Santana et al. | A low-complexity fetch architecture for high-performance superscalar processors | |
Badulescu et al. | Power efficient instruction cache for wide-issue processors | |
Guy et al. | High performance branch prediction | |
AbdelHak et al. | Reducing misprediction penalty in the branch target buffer | |
Wang et al. | BBQ-A Simple and Effective Approach to Backward Branch Predictions for Embedded Processors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |