CN104919418B - 用于分支预测的系统、方法及存储介质 - Google Patents
用于分支预测的系统、方法及存储介质 Download PDFInfo
- Publication number
- CN104919418B CN104919418B CN201380070347.7A CN201380070347A CN104919418B CN 104919418 B CN104919418 B CN 104919418B CN 201380070347 A CN201380070347 A CN 201380070347A CN 104919418 B CN104919418 B CN 104919418B
- Authority
- CN
- China
- Prior art keywords
- branch
- thread
- branch instruction
- path
- instruction
- 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 36
- 238000003860 storage Methods 0.000 title claims description 13
- 230000008859 change Effects 0.000 claims description 2
- 238000004590 computer program Methods 0.000 description 22
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 230000009471 action Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 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/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
-
- 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/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
Abstract
实施例涉及用于分支预测的基于置信度阈值的相对路径执行。一个方面包括,为在执行第一线程期间所遇到的第一分支指令确定分支预测,其中,该分支预测指示该第一分支指令的主路径和相对路径。另一个方面包括,由第一线程执行该主路径。另一个方面包括,确定该分支预测的置信度,并将该分支预测的置信度与置信度阈值进行比较。又一个方面包括,基于该分支预测的置信度低于该置信度阈值,启动执行第一分支指令的相对路径的第二线程,其中,第二线程与第一线程并行执行。
Description
背景技术
本发明一般地涉及计算机处理器中的分支预测,更具体地,涉及用于分支预测的基于置信度阈值的相对路径(opposing path)执行。
计算机系统中的处理器可以通过在一系列小的步骤或操作中执行指令来处理指令。在某些情况下,为了提高处理器所处理的指令数目,并因而提高处理器的速度,可以对处理器流水线化。流水线化指的是在处理器中提供分离的阶段(stage),其中,每个阶段完成对于执行一个指令来说所必须的小步骤中的一个或多个。作为在流水线中执行指令的一个例子,当接收到第一指令时,第一流水线阶段可以处理该指令的一小部分。当第一流水线阶段完成对该小部分指令的处理时,第二流水线阶段可以开始处理该第一指令的另一小部分,与此同时,第一流水线阶段接收并开始处理第二指令的一小部分。这样,处理器可以在同一时间并行地处理两个或更多个指令。
计算机程序可以包括分支指令,如果满足分支指令限定的条件,该分支指令使得计算机程序从一个指令分支到一个目标指令(从而跳过顺序指令,如果有的话)。如果条件不满足,则执行在顺序上在该分支指令之后的下一指令,而不分支到目标指令。典型地,直到该分支指令被执行并且其条件被检测,才知道被检测的条件的结果。这样,直到条件被检测时,才知道要在分支指令之后执行的正确的下一指令。
在利用流水线来执行指令时,分支指令的结果直到分支解析(branchresolution)之后才能被知道,此时该分支指令已经经过了流水线的几个阶段。这样,直到分支指令已经经过了确定条件的结果所必须的阶段之后,才能够知道在分支指令之后要被执行的正确的下一指令。在某些情况下,流水线中的指令的执行可能会被停顿(例如,可能不能使用在该分支指令之前的流水线的阶段来执行指令),直到分支解析。当流水线被停顿时,流水线不能用于并行地执行很多指令,降低了整个处理器效率。
在另外一些情况下,为了提高处理器效率,可以使用分支预测来预测分支指令的结果。例如,在遇到一个分支指令时,处理器可以预测在知道了条件的结果之后哪个指令或路径会被执行。然后,在发出分支指令时,处理器不会停顿流水线,而是会继续发出从该预测的下一指令开始的指令。分支指令的预测路径可以被称为主路径,非预测路径可以被称为相对路径。
然而,在某些情况下,分支预测可能是不正确的(例如,处理器可能预测了分支指令的一个结果,但在分支解析时,产生了相反的结果)。当分支指令的结果被错误预测时,会将基于该分支预测向流水线发出的预测指令从流水线移去,这些指令的原本要作为检查点的效果被撤销。这被称为冲洗流水线。然后,在流水线被冲洗之后,对于该分支指令,会向流水线发出对应于相对路径的正确的下一指令,并继续指令的执行。当分支指令的结果被错误地预测并且对应于主路径的一组错误预测的指令被从流水线冲洗、从而撤销流水线之前所做工作时,处理器的效率会降低。
发明内容
实施例包括用于分支预测的基于置信度阈值的相对路径执行的系统、方法和计算机程序产品。一个方面包括,为在执行第一线程期间所遇到的第一分支指令确定分支预测,其中,该分支预测为该第一分支指令指示主路径和相对路径。另一个方面包括,由第一线程执行该主路径。另一个方面包括,确定该分支预测的置信度,并将该分支预测的置信度与置信度阈值进行比较。又一个方面包括,基于该分支预测的置信度低于该置信度阈值,启动执行第一分支指令的相对路径的第二线程,其中,第二线程与第一线程并行执行。
附图说明
作为实施例的主题在说明书后面的权利要求书中特别地指出并要求保护。这些实施例的前述和其他特征和优点从结合附图进行的下面的描述中变得明显,其中:
图1显示了根据一个实施例的用于分支预测的基于置信度阈值的相对路径执行的计算机系统;
图2显示了根据一个实施例的流水线;
图3显示了根据一个实施例的分支目标缓存器/分支历史表;
图4显示了根据一个实施例的用于分支目标缓存器/分支历史表的条目(entry);
图5A-B显示了根据一个实施例的用于分支预测的基于置信度阈值的相对路径执行的流程;
图6显示了根据一个实施例的用于分支预测的基于置信度阈值的相对路径执行的执行;以及
图7显示了根据一个实施例的计算机程序产品。
具体实施方式
这里提供了用于分支预测的基于置信度阈值的相对路径执行的系统和方法的实施例,其例示性实施例将在下面详细描述。可以以高置信度或低置信度预测分支指令。可以基于在处理器中定义的置信度阈值来确定置信度级别。对于以低置信度预测的分支指令,预测路径(即主路径)和非预测路径(即相对路径)可以作为对应于包括该分支指令的程序的两个单独的线程并行地执行。随着分支指令的条件的解析,在正确路径被确定时,对应于正确路径的线程可以作为程序的主线程继续执行,而对应于错误路径的线程可以被中止。如果确定相对路径线程是正确路径,相对路径线程作 为程序的主线程,替代被中止的主路径线程。为了能够相对精确地确定预测置信度,可以在分支目标缓冲器/分支历史表(BTB/BHT)中为每个分支指令维护用来跟踪正确的和错误的分支预测的计数器。
处理器可以包括同时多线程(SMT)处理器,其能够并行地执行多个线程。SMT处理器可以具有由SMT处理器一次能够处理的最大数目的线程。处理器另外还可以包括事务存储器资源。事务存储器允许一组指令被定义为一个事务,执行该事务的结果可以存储在事务存储器中,而不必存储在处理器的高速缓冲存储器中。如果事务被中止,处理器通过将事务存储器中的事务结果无效并舍弃,可以将包含该事务的一组指令倒回到该事务的起始。如果该事务被成功完成,则事务的结果被提交(committed),即,从事务存储器传送到高速缓冲存储器。对应于分支指令的相对路径的线程可以运行为一个使用事务存储器资源的事务。因此,如果在分支解析时确定该对应于相对路径的线程是错误路径,在该相对路径线程被中止时,相对路径线程的结果可以被倒回。另一方面,如果在分支解析时确定相对路径线程是正确路径,则事务结束,由相对路径线程执行的操作可以从事务存储器提交到高速缓冲存储器中。
图1显示了用于分支预测的基于置信度阈值的相对路径执行的计算系统100的例示性实施例。计算系统100包括具有流水线102的处理器101。处理器101与计算系统100的主存储器108通信,在执行诸如应用程序109的计算机程序期间发出的指令由流水线102处理。处理器101是SMT处理器,其能够利用SMT资源103同时并行地运行多个线程。处理器101还包括事务存储器104。对于被定义为事务的指令集合,由该事务执行的所有操作的结果可以存储在事务存储器104中,直到该事务被提交,此时,可以将事务的结果从事务存储器104传送到高速缓存存储器107。高速缓存存储器107可以包括任何适当数目和类型的高速缓存器,包括但不限于指令高速缓存器和数据高速缓存器。分支预测由分支预测逻辑105处理。分支选择缓冲器/分支历史表BTB/BHT 106保持对应于用于分支预测的分支指令地址的条目,将在后面参考附图3和4对其进行更详细说明。分支预测逻辑105还基于根据BTB/BHT 106中的信息作出的分支预测的置信度,确定是否启动分支指令的相对路径的线程。可以基于在分支预测逻辑105中预定的置信度阈值以及正在由SMT资源103处理的线程个数来 作出该确定。在某些实施例中,由分支预测逻辑105用来确定是否启动相对路径线程的置信度阈值可以包括可变的置信度阈值;在这样的实施例中,置信度阈值可以基于正在由SMT资源103处理的并行线程的个数而变化。例如,如果只有主线程正在执行,置信度阈值可以相对较低,随着另外的相对线程开始执行,置信度阈值可以增大。另外,在一些实施例中,基于与一个线程相关联的预测置信度以及该线程是主线程还是相对线程,该线程在执行期间对于处理器101的资源可以具有更高的访问优先级。分支预测逻辑105另外还可以启动对在分支解析处确定为不正确的线程的中止。
图2显示了具有多个阶段201-208的流水线200的例示实施例,其可以包括图1中的流水线102。指令从取指(fetch)阶段201到写回阶段208经过流水线200。在取指、译码和调度(dispatch)阶段201-203,指令是按序处理的。在发出/执行阶段204,随着执行指令所必须的数据可用,指令可以无序执行。然后在重排序阶段205将这些指令重新排序,并在完成、检查点和写回阶段206-208按序执行。在不同的实施例中,分支指令的分支预测可以在流水线的前端、例如在取指阶段201、译码阶段202或更早时执行,而分支指令的分支解析可以发生在发出/执行阶段204。在检查点阶段207,确定在指令执行期间是否发生了错误(例如,晶体管经历了意外的位翻转)。如果未发生错误,可以将指令结果在写回阶段208写到处理器的高速缓冲存储器107中。图2仅仅出于例示目的;在不同的实施例中,流水线可以具有任何合适数目的阶段。
图3显示了系统300的一个实施例,该系统300包括BTB/BHT 302以及相关逻辑,BTB/BHT 302可以包括图1中的BTB/BHT 106。图3所示的BTB/BHT 302包括一个全关联的BTB/BHT。由BTB/BHT 302在检索地址输入301从分支预测逻辑105接收一个包括分支指令地址的检索地址,并确定条目303A-N中的任何一个是否对应于在检索地址输入301接收的检索地址。如果确定在BTB/BHT 302中存在匹配该检索地址的条目、例如条目303A,则命中逻辑304确定目标地址和预测数据并在目标地址和预测输出305将其从条目303A输出到分支预测逻辑105。预测数据可以包含分支方向预测、目标地址预测和置信度数据,将在下面参考附图4更加详细地讨论。 图3仅仅出于例示目的;BTB/BHT可以包括任何适当数目的条目,并且,在不同的实施例中,可以将这些条目组织成两个或更多个同余类(congruenceclasses)。
图4显示了BTB/BHT条目400的一个实施例,其可以包含如图3所示的BTB/BHT条目303A-N中的每一个。BTB/BHT条目400包括对应于分支指令的指令地址的标签401;如果标签401匹配检索地址,则确定条目303A-N中的一个条目与在检索地址输入301所接收的特定检索地址相匹配。BTB/BHT条目400还包括目标地址402,其包括要在对应于条目400的选择分支指令之后执行的目标指令、即下一个指令的地址。饱和预测计数器403指示对应于目标地址402的指令是预测或主路径,还是非预测或相对路径。在一些实施例中,饱和预测计数器403可以包括一个2位的饱和计数器;饱和预测计数器403可以包括可以用于分支预测的任何合适的计数器,并且可以已任何适当的方式增大和减小。
由于处理器101中执行额外线程的SMT资源103有限,只有置信度低于置信度阈值的分支指令才会启动新的相对路径线程。正确计数器404和错误计数器405跟踪对应于条目400的分支指令的正确预测和错误预测的数目,并用于确定由饱和预测计数器403给出的分支预测的置信度。由饱和预测计数器403给出的分支预测的置信度可以由正确计数器404的值除以正确计数器404的值与错误计数器405的值之和来给出。如果在对应于条目400的分支指令的分支解析处确定分支方向已由饱和预测计数器403正确地预测,则正确计数器404增大;如果确定分支方向已被错误地预测,则错误计数器405增大。可以在对应于条目400的分支指令的分支解析之后的任何合适的点及时地进行正确计数器404或错误计数器405的增大以及饱和预测计数器403的增大/减小。在一些实施例中,正确计数器404和错误计数器405中每个可以包括4位计数器,并且,如果正确/错误计数器404/405中的一个饱和(即,达到最大计数值),两个计数器404/405都被除以二,将计数器值向右移动一位,并保留作为最高有效位的位。
图5A-B显示了用于分支预测的基于置信度阈值的相对路径执行的方法500的流程。参考附图1-4对方法500进行讨论。首先,在图5A的方框501,在执行对应 于计算机程序的主线程期间,遇到分支指令,在BTB/BHT 106/302中检索具有对应于分支指令的指令地址的标签401的条目。当在BTB/BHT 106/302中确定一个对应的条目(例如,条目303A/400),则在方框502,基于所确定的条目303A/400中的饱和预测计数器403,对分支指令作出分支预测。饱和预测计数器403指示对应于目标地址402的指令是否是预测的下一指令(即,选择指令)。接着,在方框503,由分支预测逻辑105基于正确计数器404和错误计数器405为在方框502作出的分支预测确定置信度。置信度可以等于正确计数器404的值除以正确计数器404的值与错误计数器405的值之和。接着,流程进行到方框504,其中,由分支预测逻辑105将在方框503确定的置信度与一个置信度阈值进行比较。在不同的实施例中,置信度阈值可以是任何适当的值,并且在一些实施例中可以包括可变的置信度阈值。在这样的实施例中,置信度阈值可以基于目前正被SMT资源103所处理的并行线程的个数来变化。
在方框504,如果确定所确定的置信度大于置信度阈值,流程进行到方框505,其中,如方框502所作出的预测所指示的,主线程继续沿主路径执行计算机程序。主路径线程可以对应于在对应于计算机程序中的条目303A/400的不选择分支指令之后的下一指令,或者经由选择分支到达对应于在条目303A/400中限定的目标地址402的指令,这取决于在方框502由饱和预测计数器403所给出的分支预测。然后,当在方框505中启动的主路径线程到达方框506中的分支解析时,确定在方框502作出的预测是否正确,并根据分支解析更新对应于该分支指令的BTB/BHT条目303A/400中的计数器。如果预测正确,对应于分支指令的BTB/BHT条目303A/400中的正确计数器404被增大。如果预测错误,流水线102被冲洗,对应于分支指令的BTB/BHT条目303A/400中的错误计数器405被增大。饱和预测计数器403也被更新,以反映正确或错误的分支预测。
然而,如果在方框504确定分支预测的置信度小于置信度阈值,则流程从方框504进行到方框507,主线程对应于主路径继续执行,并由分支预测逻辑105为非预测(即相对)路径开始一个新的并行线程。相对路径线程可以对应于计算机程序中在对应于条目303A/400的分支指令之后的下一个顺序指令,也可以对应于在对应于条目303A/400中限定的目标地址402的指令,这取决于在方框502由饱和预测计数器 403所给出的预测。由SMT资源103处理相对路径线程。可以将对应于相对路径线程的一组指令定义为采用事务存储器104的事务,这样,由相对路径线程完成的操作的结果可以存储在事务存储器104中,直到分支完成。
在方框507启动相对路径线程受限于目前正由处理器101中的SMT资源103处理的线程数目,因为SMT资源103一次能够处理的线程会有一个最大数目限制。如果在处理器101中执行的线程数目在其最大数目上,则在一些实施例中,不能在方框507启动相对路径线程。在其他实施例中,可以将在方框503为相对路径线程确定的置信度与另一个已经存在的目前正在由SMT资源103执行的相对路径线程的置信度进行比较,如果当前相对路径线程的置信度低于已经存在的相对路径线程,则中止已经存在的相对路径线程,在该处启动当前相对路径线程。在一些实施例中,主路径线程可以具有高于相对路径线程的优先级。在一些实施例中,还可以基于在方框503确定的置信度来分配优先级。
流程从方法500的方框507进行到图5B中的方框508,其中,对应于BTB/BHT条目400/303A的分支指令的分支解析出现在流水线102/200中,并且知道了分支指令的正确路径。接着,在方框509,基于方框508的分支解析,确定在方框502为分支指令作出的分支预测是否正确。如果在方框509确定分支预测是正确的,流程进行到方框510,在这里,分支预测逻辑105使得相对路径线程中止。中止相对路径线程可以包括由事务存储器104退回对应于相对路径线程的事务。主路径线程继续计算机程序的执行。最后,在方框511,对应于分支指令的BTB/BHT条目303A/400中的正确计数器404被增大,饱和预测计数器403也被更新,以反映正确的分支预测。
然而,如果在方框508基于方框507的分支解析确定在方框502为分支指令作出的分支预测是错误的,则流程从方框509进行到方框512,在这里,分支预测逻辑105使得主路径线程中止。在一些实施例中,中止主路径线程可以包括冲洗流水线101/200中对应于主路径线程的任何指令。接着,在方框513,对应于分支指令的BTB/BHT条目303A/400中的错误计数器405被增大,饱和预测计数器403也被更 新,以反映错误的分支预测。最后,在方框514,对应于相对路径线程的事务被结束,并从事务存储器104提交给高速缓冲存储器107,相对路径线程作为计算机程序的主线程继续执行。可以在分支到达流水线102/200中的完成阶段206之后提交该事务,因为分支解析是无序执行的,而完成是按序执行的。在一些情况下,有可能对于对应于一个较早分支的另一个线程,确定分支预测错误,并在较晚分支已经到达分支解析之后并且该较晚分支到达完成之前,冲洗掉这个较晚的分支。
如在图5A-B的方法500的方框510和512中所执行的,中止线程使得SMT资源103的专用于被中止的线程的一部分能够被恢复到自由池中,以供用于为将来的低置信度分支预测启动相对路径线程。取决于处理器101中的SMT资源103所支持的线程数目,可以作为主路径线程或相对路径线程之下的事务启动另外的相对路径线程。如果在主或相对路径线程中遇到预测置信度低于置信度阈值的分支指令,可以启动另外的相对路径线程,直至达到SMT资源103所支持的最大线程数目,如图6所示。
图6显示了用于分支预测的基于置信度阈值的相对路径执行的一个例子。图6的例子在SMT资源最大线程限制为4的处理器上执行。如图6所示,在由处理器执行一个程序的过程中,遇到一个低置信度分支601,其置信度低于预定的置信度阈值。对分支601是低置信度的确定使得相对路径线程603与主路径线程602并行启动。主路径线程602包括低置信度分支指令601的预测路径,相对路径线程603包括非预测路径。相对路径线程603可以作为一个事务启动。主路径线程602是包含低置信度分支指令601的程序的主线程。在执行主路径线程602期间,遇到一个高置信度分支指令604,其置信度大于置信度阈值。由于分支604是高置信度分支指令,在遇到高置信度分支604之后,主路径线程602作为主路径线程605继续执行,不为高置信度分支604启动相对路径线程。接着,在进一步执行主路径线程602的过程中,遇到另一个低置信度分支指令606,其使得另一个主-相对路径线程608与主-相对路径线程607并行启动。主-相对路径线程608也可以作为一个事务启动。
在执行与主路径线程602并行发生的相对路径线程603的过程中,首先遇到一个高置信度分支指令609;在高置信度分支指令609之后,相对路径线程603作为相对路径线程610继续执行,并且不启动另外的相对路径线程。然后,在执行相对路径线程610期间,遇到一个低置信度分支指令611,使得相对-相对路径线程613与相对-主路径线程612并行启动。相对-主路径线程612是相对于相对-相对路径线程613来说的主路径。相对-相对路径线程613也可以作为一个事务启动。主-主路径线程607、主-相对路径线程608、相对-主路径线程612以及相对-相对路径线程613也都可以采用处理器中的SMT资源并行地执行。在一些实施例中,对于所有线程607-608和612-613来说,流水线102/220的前端、包括取指阶段210、译码阶段202和发出阶段204可以是平等的;在另一些实施例中,基于一特定线程是否是主线程以及/或者与该线程相关联的置信度值,线程607-608和612-613中的一些线程对于流水线102/220的资源可以具有更高的访问优先级。
在图6的例子中,因为处理器中的SMT资源的最大线程限制是4,直到这四个线程中的一个被中止,才会启动另外的线程。主-主路径线程607和主-相对路径线程608中的一个可以在低置信度分支指令606的分支解析处被中止;相对-主路径线程612和相对-相对路径线程613中的一个可以在低置信度分支指令611的分支解析处被中止。主-主路径线程607和主-相对路径线程608或者相对-主路径线程612和相对-相对路径线程613可以在低置信度分支指令601的分支解析处被中止。
在一些实施例中,如果在执行主-主路径线程607、主-相对路径线程608、相对-主路径线程612和相对-相对路径线程613中的任一个的过程中遇到另外的低置信度分支指令,可以将该另外的低置信度分支指令的预测置信度与低置信度分支指令606和511的置信度进行比较,并且,如果该另外的低置信度分支指令的置信度比低置信度分支指令606和611的更低,则可以分别中止主-相对路径线程608或相对-相对路径线程613,并且可以在所中止线程之处启动该另外的低置信度分支指令的相对路径。
所属技术领域的技术人员知道,本发明的一个或多个方面可以实现为系统、方法或计算机程序产品。因此,本发明的一个或多个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的一个或多个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
现在参考图7,在一个例子中,计算机程序产品700包括,例如,一个或多个可以为有形的和/和非易失性的存储介质702,在其上存储有计算机可读的程序代码装置或逻辑704,以提供并方便本发明的一个或多个方面。
当程序代码被创建并存储在有形介质(包括但不限于电子存储模块(RAM)、闪存、光盘(CD)、DVD、磁带等)上时,其经常被称为“计算机程序产品”。计算机程序产品介质典型地可由优选地位于计算机系统中的处理电路读取以由处理电路执行。可以采用例如编译程序或汇编指令的汇编程序来生成这种程序代码,其在执行时可实现本发明的各个方面。
技术效果和益处包括提高计算机系统中的处理器效率。
在此使用的术语仅是为了描述特定实施例,且不旨在限制本发明。如在此使用的,单数形式“一”、“一个”和“该”也旨在包括复数形式,除非上下文另外清楚地指明。还将理解,当在说明书中使用时,术语“包括”和/或“包含”指明存在所述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或附加一个或多个其他特征、整体、步骤、操作、元件和/或组件。
所附权利要求书中的所有装置或步骤加功能元件的相应结构、材料、操作以及等价物,旨在包括用于结合如特别要求保护的其他所要求保护的元件来执行所述功能的任何结构、材料或操作。呈现本发明的说明是为了示出和描述的作用,但不是穷尽性的或将本发明限制于所公开的形式。许多修改和变化对本领域普通技术人员来说是明显的,且不脱离本发明的范围。选择和描述实施例是为了最佳地解释本发明的原理和实际应用,并使得本领域普通技术人员能针对适于考虑的特定用途的具有各种修改的各种实施例理解本发明。
可以以一种或多种程序设计语言的任意组合来编写用于执行各个实施例的各个方面的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
上面参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了各个实施例的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置 的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
Claims (17)
1.一种用于分支预测的基于置信度阈值的相对路径执行的计算机系统,所述系统包括:
处理器,所述处理器被配置为执行一个方法,所述方法包括:
为在执行第一线程期间所遇到的第一分支指令确定分支预测,其中,所述分支预测指示所述第一分支指令的主路径和相对路径;
由所述第一线程执行所述主路径;
确定所述分支预测的置信度;
将所述分支预测的所述置信度与置信度阈值进行比较;以及
基于所述分支预测的所述置信度低于所述置信度阈值,启动执行所述第一分支指令的所述相对路径的第二线程,其中,所述第二线程与所述第一线程并行执行,
所述计算机系统进一步包括:
确定所述第一分支指令的分支解析,其中,所述分支解析指示所述主路径和所述相对路径中的一个是否包括所述第一分支指令的一个正确路径;
基于所述第一分支指令的分支解析指示所述相对路径是所述第一分支指令的正确路径,中止所述第一线程;以及
基于所述第一分支指令的分支解析指示所述主路径是所述第一分支指令的正确路径,中止所述第二线程。
2.如权利要求1所述的计算机系统,其中,所述第二线程作为在所述处理器的事务存储器中执行的事务启动,所述计算机系统进一步包括:
基于所述第一分支指令的分支解析指示所述相对路径是所述第一分支指令的正确路径,结束并提交对应于所述第二线程的所述事务;以及
基于所述第一分支指令的分支解析指示所述主路径是所述第一分支指令的正确路径,退回对应于所述第二线程的所述事务。
3.如权利要求1所述的计算机系统,其中,所述处理器包括同时多线程处理器,其中,启动所述第二线程还基于当前正由所述处理器处理的线程的总数目小于所述同时多线程处理器的线程最大数。
4.如权利要求3所述的计算机系统,其中,所述置信度阈值基于当前正由所述处理器处理的线程的总数目而变化。
5.如权利要求3所述的计算机系统,进一步包括,基于当前正由所述处理器处理的线程的总数目等于所述处理器的线程最大数:
确定与当前正在所述处理器中执行的第三线程相关联的分支预测的置信度,所述第三线程对应于第二分支指令的相对路径;
将与所述第二分支指令相关联的置信度与所述第一分支指令相关联的置信度进行比较;以及
基于与所述第二分支指令相关联的置信度小于与所述第一分支指令相关联的置信度,中止所述第三线程,并启动执行所述第一分支指令的所述相对路径的所述第二线程。
6.如权利要求1所述的计算机系统,其中,基于在对应于处理器的分支选择缓冲器/分支历史表(BTB/BHT)中的所述第一分支指令的条目中的饱和预测计数器,确定所述第一分支指令的分支预测,以及,其中,基于在对应于所述第一分支指令的条目中的正确计数器和错误计数器,确定所述分支预测的置信度。
7.如权利要求6所述的计算机系统,其中,所述分支预测的置信度等于所述正确计数器的值除以所述正确计数器的值与所述错误计数器的值之和。
8.如权利要求6所述的计算机系统,进一步包括,基于所述正确计数器和所述错误计数器中的一个到达最大计数器值,将所述正确计数器和所述错误计数器中的每一个除以二。
9.如权利要求6所述的计算机系统,进一步包括:
确定所述第一分支指令的分支解析;
基于所述第一分支指令的所述分支解析指示所述相对路径是所述第一分支指令的正确路径,增大对应于所述第一分支指令的所述条目中的所述错误计数器;以及
基于所述第一分支指令的所述分支解析指示所述主路径是所述第一分支指令的正确路径,增大对应于所述第一分支指令的所述条目中的所述正确计数器。
10.如权利要求1所述的计算机系统,其中,所述第一线程的执行的优先级高于所述第二线程的执行的优先级,并且,其中,进一步基于所确定的置信度确定所述第一线程的执行的优先级和所述二线程的执行的优先级。
11.一种用于分支预测的基于置信度阈值的相对路径执行的计算机实现的方法,所述方法包括:
由计算机的处理器为在执行第一线程期间所遇到的第一分支指令确定分支预测,其中,所述分支预测指示所述第一分支指令的主路径和相对路径;
由所述第一线程执行所述主路径;
确定所述分支预测的置信度;
将所述分支预测的所述置信度与置信度阈值进行比较;以及
基于所述分支预测的所述置信度低于所述置信度阈值,启动执行所述第一分支指令的所述相对路径的第二线程,其中,所述第二线程与所述第一线程并行执行,
所述方法进一步包括:
确定所述第一分支指令的分支解析,其中,所述分支解析指示所述主路径和所述相对路径中的一个是否包括所述第一分支指令的一个正确路径;
基于所述第一分支指令的分支解析指示所述相对路径是所述第一分支指令的正确路径,中止所述第一线程;以及
基于所述第一分支指令的分支解析指示所述主路径是所述第一分支指令的正确路径,中止所述第二线程。
12.如权利要求11所述的方法,其中,所述第二线程作为在所述处理器的事务存储器中执行的事务启动,所述方法进一步包括:
基于所述第一分支指令的分支解析指示所述相对路径是所述第一分支指令的正确路径,结束并提交对应于所述第二线程的所述事务;以及
基于所述第一分支指令的分支解析指示所述主路径是所述第一分支指令的正确路径,退回对应于所述第二线程的所述事务。
13.如权利要求11所述的方法,其中,所述处理器包括同时多线程处理器,其中,启动所述第二线程还基于当前正由所述处理器处理的线程的总数目小于所述同时多线程处理器的线程最大数。
14.如权利要求11所述的方法,其中,基于在对应于处理器的分支选择缓冲器/分支历史表(BTB/BHT)中的所述第一分支指令的条目中的饱和预测计数器,确定所述第一分支指令的分支预测,以及,其中,基于在对应于所述第一分支指令的条目中的正确计数器和错误计数器,确定所述分支预测的置信度。
15.如权利要求14所述的方法,其中,所述分支预测的置信度等于所述正确计数器的值除以所述正确计数器的值与所述错误计数器的值之和。
16.一种用于分支预测的基于置信度阈值的相对路径执行的由处理器读取的有形存储介质,其上存储有由所述处理器执行的用于实现一个方法的指令,所述方法包括:
为在执行第一线程期间所遇到的第一分支指令确定分支预测,其中,所述分支预测指示所述第一分支指令的主路径和相对路径;
由所述第一线程执行所述主路径;
确定所述分支预测的置信度;
将所述分支预测的所述置信度与置信度阈值进行比较;以及
基于所述分支预测的所述置信度低于所述置信度阈值,启动执行所述第一分支指令的所述相对路径的第二线程,其中,所述第二线程与所述第一线程并行执行,
所述方法进一步包括:
确定所述第一分支指令的分支解析,其中,所述分支解析指示所述主路径和所述相对路径中的一个是否包括所述第一分支指令的一个正确路径;
基于所述第一分支指令的分支解析指示所述相对路径是所述第一分支指令的正确路径,中止所述第一线程;以及
基于所述第一分支指令的分支解析指示所述主路径是所述第一分支指令的正确路径,中止所述第二线程。
17.如权利要求16所述的存储介质,其中,所述第二线程作为在所述处理器的事务存储器中执行的事务启动,所述方法进一步包括:
基于所述第一分支指令的分支解析指示所述相对路径是所述第一分支指令的正确路径,结束并提交对应于所述第二线程的所述事务;以及
基于所述第一分支指令的分支解析指示所述主路径是所述第一分支指令的正确路径,退回对应于所述第二线程的所述事务。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/741,597 US9348599B2 (en) | 2013-01-15 | 2013-01-15 | Confidence threshold-based opposing branch path execution for branch prediction |
US13/741,597 | 2013-01-15 | ||
PCT/IB2013/059500 WO2014111758A1 (en) | 2013-01-15 | 2013-10-21 | Confidence threshold-based opposing branch path execution for branch prediction |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104919418A CN104919418A (zh) | 2015-09-16 |
CN104919418B true CN104919418B (zh) | 2018-01-02 |
Family
ID=51166182
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380070347.7A Active CN104919418B (zh) | 2013-01-15 | 2013-10-21 | 用于分支预测的系统、方法及存储介质 |
Country Status (5)
Country | Link |
---|---|
US (2) | US9348599B2 (zh) |
JP (1) | JP6304694B2 (zh) |
CN (1) | CN104919418B (zh) |
DE (1) | DE112013005882B4 (zh) |
WO (1) | WO2014111758A1 (zh) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9348599B2 (en) | 2013-01-15 | 2016-05-24 | International Business Machines Corporation | Confidence threshold-based opposing branch path execution for branch prediction |
GB2522910B (en) * | 2014-02-10 | 2021-04-07 | Advanced Risc Mach Ltd | Thread issue control |
US10261826B2 (en) | 2014-06-02 | 2019-04-16 | International Business Machines Corporation | Suppressing branch prediction updates upon repeated execution of an aborted transaction until forward progress is made |
US9477469B2 (en) * | 2014-06-02 | 2016-10-25 | International Business Machines Corporation | Branch predictor suppressing branch prediction of previously executed branch instructions in a transactional execution environment |
US10289414B2 (en) * | 2014-06-02 | 2019-05-14 | International Business Machines Corporation | Suppressing branch prediction on a repeated execution of an aborted transaction |
US10503538B2 (en) | 2014-06-02 | 2019-12-10 | International Business Machines Corporation | Delaying branch prediction updates specified by a suspend branch prediction instruction until after a transaction is completed |
US10235172B2 (en) | 2014-06-02 | 2019-03-19 | International Business Machines Corporation | Branch predictor performing distinct non-transaction branch prediction functions and transaction branch prediction functions |
US10685318B2 (en) * | 2015-01-30 | 2020-06-16 | United Parcel Service Of America, Inc. | Concepts for address prediction or correction |
US11755484B2 (en) * | 2015-06-26 | 2023-09-12 | Microsoft Technology Licensing, Llc | Instruction block allocation |
US20170046159A1 (en) * | 2015-08-14 | 2017-02-16 | Qualcomm Incorporated | Power efficient fetch adaptation |
GB2544489B (en) * | 2015-11-17 | 2017-12-06 | Advanced Risc Mach Ltd | Branch prediction in a data processing apparatus |
US10474462B2 (en) * | 2016-02-29 | 2019-11-12 | Qualcomm Incorporated | Dynamic pipeline throttling using confidence-based weighting of in-flight branch instructions |
US20190369283A1 (en) * | 2016-09-09 | 2019-12-05 | Vermeer Corporation | Cross-bore detection during horizontal directional drilling |
US10394559B2 (en) * | 2016-12-13 | 2019-08-27 | International Business Machines Corporation | Branch predictor search qualification using stream length prediction |
US10387152B2 (en) * | 2017-07-06 | 2019-08-20 | Arm Limited | Selecting branch instruction execution paths based on previous branch path performance |
WO2019200618A1 (zh) * | 2018-04-21 | 2019-10-24 | 华为技术有限公司 | 一种指令执行方法及装置 |
CN110503740B (zh) * | 2018-05-18 | 2021-11-26 | 杭州海康威视数字技术股份有限公司 | 一种车辆状态判定方法、装置、计算机设备及系统 |
US10776122B2 (en) | 2018-06-14 | 2020-09-15 | International Business Machines Corporation | Prioritization protocols of conditional branch instructions |
US10901743B2 (en) * | 2018-07-19 | 2021-01-26 | International Business Machines Corporation | Speculative execution of both paths of a weakly predicted branch instruction |
US11086629B2 (en) * | 2018-11-09 | 2021-08-10 | Arm Limited | Misprediction of predicted taken branches in a data processing apparatus |
US11188340B2 (en) * | 2018-12-20 | 2021-11-30 | International Business Machines Corporation | Multiple streams execution for hard-to-predict branches in a microprocessor |
US10846097B2 (en) * | 2018-12-20 | 2020-11-24 | Samsung Electronics Co., Ltd. | Mispredict recovery apparatus and method for branch and fetch pipelines |
US11416257B2 (en) * | 2019-04-10 | 2022-08-16 | International Business Machines Corporation | Hybrid and aggregrate branch prediction system with a tagged branch orientation predictor for prediction override or pass-through |
CN110825442B (zh) * | 2019-04-30 | 2021-08-06 | 成都海光微电子技术有限公司 | 一种指令预取方法及处理器 |
US11113063B2 (en) * | 2019-06-24 | 2021-09-07 | Samsung Electronics Co., Ltd. | Method and apparatus to control the use of hierarchical branch predictors based on the effectiveness of their results |
US11249762B2 (en) * | 2019-10-24 | 2022-02-15 | Arm Limited | Apparatus and method for handling incorrect branch direction predictions |
US20210149676A1 (en) * | 2019-11-14 | 2021-05-20 | Higon Austin R&D Center Corporation | Branch Prediction Method, Branch Prediction Unit and Processor Core |
US11473418B1 (en) | 2020-01-22 | 2022-10-18 | Vermeer Manufacturing Company | Horizontal directional drilling system and method |
US20220075624A1 (en) * | 2020-09-04 | 2022-03-10 | Advanced Micro Devices, Inc. | Alternate path for branch prediction redirect |
US11847458B2 (en) * | 2021-07-02 | 2023-12-19 | International Business Machines Corporation | Thread priorities using misprediction rate and speculative depth |
CN113918225A (zh) * | 2021-11-04 | 2022-01-11 | 成都海光微电子技术有限公司 | 指令预测方法、指令数据处理装置、处理器以及存储介质 |
CN114911528B (zh) * | 2022-05-31 | 2024-09-13 | 上海阵量智能科技有限公司 | 分支指令处理方法、处理器、芯片、板卡、设备及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101515231A (zh) * | 2009-03-23 | 2009-08-26 | 浙江大学 | 基于数据流分析的单线程程序并行化的实现方法 |
CN101587434A (zh) * | 2008-05-22 | 2009-11-25 | 国际商业机器公司 | 在推测多线程计算系统中处理访存请求的方法及其设备 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6029228A (en) * | 1996-12-31 | 2000-02-22 | Texas Instruments Incorporated | Data prefetching of a load target buffer for post-branch instructions based on past prediction accuracy's of branch predictions |
JPH1196005A (ja) * | 1997-09-19 | 1999-04-09 | Nec Corp | 並列処理装置 |
US6625744B1 (en) * | 1999-11-19 | 2003-09-23 | Intel Corporation | Controlling population size of confidence assignments |
US6560693B1 (en) | 1999-12-10 | 2003-05-06 | International Business Machines Corporation | Branch history guided instruction/data prefetching |
US7051192B2 (en) | 2000-05-31 | 2006-05-23 | Sun Microsystems, Inc. | Facilitating value prediction to support speculative program execution |
US6886093B2 (en) | 2001-05-04 | 2005-04-26 | Ip-First, Llc | Speculative hybrid branch direction predictor |
JP4009248B2 (ja) | 2003-12-05 | 2007-11-14 | 富士通株式会社 | 分岐予測装置および分岐予測方法 |
US20050223203A1 (en) * | 2004-03-30 | 2005-10-06 | Gabriel Loh | Segmented branch predictor |
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 |
US20060168432A1 (en) | 2005-01-24 | 2006-07-27 | Paul Caprioli | Branch prediction accuracy in a processor that supports speculative execution |
US7673122B1 (en) | 2005-09-29 | 2010-03-02 | Sun Microsystems, Inc. | Software hint to specify the preferred branch prediction to use for a branch instruction |
US7930695B2 (en) | 2006-04-06 | 2011-04-19 | Oracle America, Inc. | Method and apparatus for synchronizing threads on a processor that supports transactional memory |
US7487340B2 (en) * | 2006-06-08 | 2009-02-03 | International Business Machines Corporation | Local and global branch prediction information storage |
US20070288731A1 (en) | 2006-06-08 | 2007-12-13 | Bradford Jeffrey P | Dual Path Issue for Conditional Branch Instructions |
US8195898B2 (en) | 2007-12-27 | 2012-06-05 | Intel Corporation | Hybrid transactions for low-overhead speculative parallelization |
US20100162247A1 (en) | 2008-12-19 | 2010-06-24 | Adam Welc | Methods and systems for transactional nested parallelism |
US8909908B2 (en) | 2009-05-29 | 2014-12-09 | Via Technologies, Inc. | Microprocessor that refrains from executing a mispredicted branch in the presence of an older unretired cache-missing load instruction |
US20110047357A1 (en) * | 2009-08-19 | 2011-02-24 | Qualcomm Incorporated | Methods and Apparatus to Predict Non-Execution of Conditional Non-branching Instructions |
US8464261B2 (en) | 2010-03-31 | 2013-06-11 | Oracle International Corporation | System and method for executing a transaction using parallel co-transactions |
US9389868B2 (en) * | 2012-11-01 | 2016-07-12 | International Business Machines Corporation | Confidence-driven selective predication of processor instructions |
US9348599B2 (en) | 2013-01-15 | 2016-05-24 | International Business Machines Corporation | Confidence threshold-based opposing branch path execution for branch prediction |
-
2013
- 2013-01-15 US US13/741,597 patent/US9348599B2/en not_active Expired - Fee Related
- 2013-10-21 CN CN201380070347.7A patent/CN104919418B/zh active Active
- 2013-10-21 DE DE112013005882.0T patent/DE112013005882B4/de active Active
- 2013-10-21 WO PCT/IB2013/059500 patent/WO2014111758A1/en active Application Filing
- 2013-10-21 JP JP2015552148A patent/JP6304694B2/ja active Active
-
2014
- 2014-09-30 US US14/501,452 patent/US9519485B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101587434A (zh) * | 2008-05-22 | 2009-11-25 | 国际商业机器公司 | 在推测多线程计算系统中处理访存请求的方法及其设备 |
CN101515231A (zh) * | 2009-03-23 | 2009-08-26 | 浙江大学 | 基于数据流分析的单线程程序并行化的实现方法 |
Also Published As
Publication number | Publication date |
---|---|
US9348599B2 (en) | 2016-05-24 |
WO2014111758A1 (en) | 2014-07-24 |
JP6304694B2 (ja) | 2018-04-04 |
US20140201508A1 (en) | 2014-07-17 |
US9519485B2 (en) | 2016-12-13 |
US20150058607A1 (en) | 2015-02-26 |
DE112013005882T5 (de) | 2015-08-27 |
CN104919418A (zh) | 2015-09-16 |
JP2016507092A (ja) | 2016-03-07 |
DE112013005882B4 (de) | 2020-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104919418B (zh) | 用于分支预测的系统、方法及存储介质 | |
US10037211B2 (en) | Operation of a multi-slice processor with an expanded merge fetching queue | |
US9495167B2 (en) | Load queue entry reuse for operand store compare history table update | |
CN103348318A (zh) | 控制依赖于相同数据条件的相邻指令的执行 | |
KR101976295B1 (ko) | 멀티스레드된 프로세서 내 스레드들의 실행 제어 | |
US11061680B2 (en) | Instructions controlling access to shared registers of a multi-threaded processor | |
CN109690536A (zh) | 将多核指令踪迹从虚拟平台仿真器取到性能模拟模型的方法和系统 | |
CN109791494A (zh) | 使用流长度预测的分支预测器搜索资格 | |
US9086888B2 (en) | Using a plurality of tables for improving performance in predicting branches in processor instructions | |
US20160092358A1 (en) | Cache coherency verification using ordered lists | |
CN113918225A (zh) | 指令预测方法、指令数据处理装置、处理器以及存储介质 | |
US10776122B2 (en) | Prioritization protocols of conditional branch instructions | |
US11520591B2 (en) | Flushing of instructions based upon a finish ratio and/or moving a flush point in a processor | |
US20230195981A1 (en) | Hazard generating for speculative cores in a microprocessor | |
US10713057B2 (en) | Mechanism to stop completions using stop codes in an instruction completion table | |
Puiggalí et al. | Out-of-order execution in master/slave speculative parallelization architecture for computer clusters |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |