CN103282874B - 用于增强分支预测效率的指令序列缓冲器 - Google Patents

用于增强分支预测效率的指令序列缓冲器 Download PDF

Info

Publication number
CN103282874B
CN103282874B CN201180057070.5A CN201180057070A CN103282874B CN 103282874 B CN103282874 B CN 103282874B CN 201180057070 A CN201180057070 A CN 201180057070A CN 103282874 B CN103282874 B CN 103282874B
Authority
CN
China
Prior art keywords
branch
sequence
buffer
frequently
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
Application number
CN201180057070.5A
Other languages
English (en)
Other versions
CN103282874A (zh
Inventor
M·阿卜杜拉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Soft Machines Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Soft Machines Inc filed Critical Soft Machines Inc
Priority to CN201710260951.6A priority Critical patent/CN107092467B/zh
Publication of CN103282874A publication Critical patent/CN103282874A/zh
Application granted granted Critical
Publication of CN103282874B publication Critical patent/CN103282874B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative 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

用于增强分支预测效率的指令序列缓冲器
技术领域
本发明总体上涉及数字计算机系统,尤其涉及一种用于选择包括指令序列的指令的系统和方法。
背景技术
改进计算机架构性能是一项困难的任务。已经通过频率定标、单指令多数据(SIMD)、超长指令字(VLIW)、多线程和多处理器技术寻求改进。这些方法主要以程序执行的吞吐量的改进为目标。许多技术要求软件明确地揭示并行性。与之相反,频率定标对吞吐量和延时均有所改进而并不要求软件明确注明并行性。近来,频率定标碰上了功率壁垒,从而通过频率定标的改进是困难的。因此,除非表达出大量明确的软件并行化,否则难以提高吞吐量。
关于单线程程序执行,由支配程序控制流的分支指令对程序执行进行控制。当分支指令是有条件的或者分支目标是间接的时,程序指令序列是动态的。在这样的情况下,处理器的提取逻辑针对条件分支查明该分支被采取还是未被采取是必需的。这使得提取逻辑能够引入紧随分支目标或者紧随分支指令本身的指令序列。然而,所存在的问题在于,在提取阶段,分支条件的结果在分支本身执行之前是未知的。
在解决该问题的尝试中,现有技术的设计已经实施了分支预测逻辑以预测分支的结果。在微处理器的提取阶段,所预测的结果使得提取逻辑能够预期从哪里得到下一个指令序列。然而,由于该处理需要在本质上是顺序的,所以仍然存在问题。当前分支需要首先被处理以便获知从哪里得到下一个指令序列。因此,提取阶段中处理分支的顺序属性对微处理器的单线程执行速度产生性能瓶颈。对于不正确分支预测的惩罚通常涉及更新微处理器的整个流水线、访问高速缓存以及重新加载以新的指令序列。这些惩罚大幅减少了每次预测多于一个的分支的动机。
发明内容
本发明的实施例实施了一种提高指令序列的分支产生过程的效率的算法(例如,方法和装置)。
在一个实施例中,本发明被实施为一种用于输出可替换指令序列的方法。该方法包括追踪重复命中以确定微处理器的频繁命中指令序列的集合。其中标识频繁错失预测的分支指令,其中该分支指令的预测结果经常是错误的。将分支指令目标的可替换指令序列存储到缓冲器中。对于在分支指令的预测结果错误的情况下针对分支指令的后续命中,从缓冲器输出可替换指令序列。
前文是概述并且因此必然地包含细节的简化、概括和省略,本领域技术人员将会意识到,该概述仅是说明性的而并非意在以任何方式进行限制。仅由权利要求所限定的本发明的其他方面、发明特征和优势将在以下给出的非限制性详细描述中变得显而易见。
附图说明
本发明在附图的示图中通过示例而非限制进行图示,并且其中相同的附图标记指代相似的要素。
图1示出了由本发明的一个实施例所操作的示例性指令序列。
图2示出了依据本发明的一个实施例的具有所图示的每个分支的相应代码段的序列指令。
图3示出了依据本发明的一个实施例的用于输出频繁命中和频繁错失预测的分支的可替换指令序列的装置的流程图。
图4示出了依据本发明的一个实施例的用于输出可替换指令序列的过程的步骤的概要流程图。
图5示出了依据本发明的一个实施例的指令序列缓冲器的示图。
图6示出了依据本发明的一个实施例的用于存储频繁命中的可可靠预测的分支的指令序列的指令序列缓冲器的示图。
图7示出了依据本发明的一个实施例的用于输出可可靠预测的指令序列的过程的步骤的概要流程图。
图8示出了依据本发明的一个实施例的示例性微处理器流水线的示图。
具体实施方式
虽然已经结合一个实施例对本发明进行了描述,但是本发明并非意在局限于这里所给出的具体形式。与之相反,其意在覆盖诸如能够合理包含于如由所附权利要求所定义的本发明的范围之内的替换、修改和等同形式。
在以下详细描述中,已经给出了诸如具体方法顺序、结构、要素和连接之类的许多具体细节。然而,所要理解的是,这些和其他具体细节无需被用来实践本发明的实施例。在其他情况下,公知的结构、要素或连接已经被省略,或者尚未特别详细地进行描述以避免对该描述造成不必要的混淆。
说明书中对“一个实施例”或“实施例”的引用意在指示结合该实施例所描述的特定特征、结构或特性包括在本发明的至少一个实施例中。在说明书中各处出现的短语“在一个实施例中”并不必全部指代相同的实施例,也并非是与其他实施例互相排斥的单独或可替换实施例。此外,描述了可以被一些实施例而非其他实施例所表现的各个特征。类似地,描述了可以是针对一些实施例而非其他实施例的各种要求。
以过程、步骤、逻辑块、处理和对计算机存储器内的数据比特的操作的其他符号表示形式给出详细描述中随后的一些部分。这些描述和表示形式是数据处理领域的技术人员用来最为有效地向本领域其他技术人员传达其工作实质的手段。过程、计算机执行的步骤、逻辑块、处理等在这里以及总体上被理解为是导致所期望结果的步骤或指令的自一致序列。步骤是要求对物理量进行物理操控的那些步骤。通常,虽然并非必然如此,但是这些量采取计算机可读存储介质的电信号或磁信号的形式,并且能够在计算机系统中进行存储、传输、合并、比较以及以其他方式进行操控。有时主要出于普遍使用的原因,将这些信号称作比特、数值、要素、符号、字符、术语、数字等已经证明是便利的。
然而,应当牢记的是,所有这些术语和类似术语将与适当物理量相关联并且仅是应用于这些量的方便的标记。除非被另外特别指出为从以下讨论是显而易见的,否则要意识到,贯穿本发明,利用诸如“处理”或“访问”或“写入”或“存储”或“复制”等术语所进行的讨论是指计算机系统或类似电子计算设备的动作或处理,该电子计算设备对在计算机系统的寄存器和存储器以及其他计算机可读介质内表示为物理(电子)量的数据进行操控并变换为在计算机系统存储器或寄存器或者其他这样的信息存储、传输或显示设备内同样地表示为物理量的其他数据。
在一个实施例中,本发明实施了一种用于对频繁命中和频繁错失预测的分支输出可替换指令序列的算法(例如,方法和装置)。该方法包括追踪针对分支指令的重复命中以确定微处理器的频繁命中指令序列的集合。随后标识频繁错失预测的分支指令,其中该分支指令的预测结果经常是错误的。将分支指令的可替换指令序列存储进缓冲器(例如,指令序列缓冲器)中。对于在分支指令的预测结果错误的情况下针对分支指令的后续命中,从缓冲器输出可替换指令序列。该可替换指令序列因此使得微处理器流水线免于被整体更新。例如,与更新整个流水线、访问高速缓存并且汇编新的指令序列相反,该可替换指令序列直接从缓冲器提供。图1示出了由本发明的实施例对其进行操作的示例性指令序列。随后,图2示出了由多级分支所产生的可替换指令序列的流程图,并且图3示出了依据本发明的一个实施例的用于输出可替换指令序列的过程的步骤的概要流程图。
在可替换实施例中,实施了指令序列缓冲器的存储资源的双重用途。不同于针对频繁错失预测的分支中的频繁命中而存储可替换指令序列,指令序列缓冲器的存储资源被用来针对频繁命中且可靠预测的分支存储指令序列。因此,不同于针对被选取的情形和未被选取的情形存储可替换指令序列,缓冲器600的存储资源被用来存储频繁命中且可可靠预测的分支以及多个后续跟随分支的指令序列。该可替换实施例在以下的图6中被示出和描述。这两个实施例能够共存并且共享相同的存储缓冲器,但是是以不同的方式进行共享。
图1示出了由本发明的一个实施例进行操作的示例性指令序列。如图1中所描绘的,指令序列100包括从图1的顶部开始进行到底部的16个指令。如在图1中可以看到的,序列100包括四个分支指令101-104。
本发明的实施例的一个目的是针对频繁命中并且频繁错失预测的分支输出可替换指令序列。作为大幅减少重新汇编可替换指令序列的延时惩罚的手段来输出可替换指令序列。依据不同实施例,这些指令可以包括原生指令(例如,微处理器架构的原生指令,诸如x86指令、MIPS指令等)。可替换地,这些指令可以包括微代码。如之前所描述的,指令序列包括的分支越多,出现并且需要处理的组合形式和可能的结果序列就越多。该特性在以下的图2中进行图示。
图2示出了依据本发明的一个实施例的具有所图示的每个分支的相应代码段的序列指令100。如以上所描述的,呈现在指令序列中的分支越多,需要消除歧义的指令序列的组合形式和可能性就越多。
这在图2中被示出,其示出了在选取分支c1被选取的情况下出现的第一结果序列“1”。如这里所提到的,如果程序执行流移动至分支目标,则该分支被选取。这由处于每个分支指令末端的括号内的两个数字所指示。例如,分支c1具有目标11并且导致跳过接下来的6个指令。类似地,分支c2具有目标10并且导致跳过接下来的2个指令,依此类推。
因此,示出了第二结果序列“2”,并且在分支c2被选取的情况下出现。第三结果序列“3”被示为在分支c3被选取的情况下出现。类似地,第四结果序列“4”被示为在分支c4被选取的情况下出现。
本发明的实施例针对频繁命中并且频繁错失预测的分支输出可替换指令序列。如图2中所示,在沿所预测指令序列的任意分支被错失预测时出现不同的指令序列。本发明的实施例有利地将多个这些可替换指令序列存储在与解码器硬件非常接近的缓冲器中。作为大幅减少重新汇编可替换指令序列的延时惩罚的手段来输出所存储的可替换指令序列。以下在图3中进一步图示该算法。
图3示出了依据本发明的一个实施例的用于针对频繁命中并且频繁错失预测的分支输出可替换指令序列的装置300的流程图。如图3中所描绘的,装置300包括序列预测器301、分支预测表302和稳定性序列计数器303。
在图3的实施例中,装置300通过追踪重复命中以确定频繁命中的分支及其相对应的指令序列的集合来起作用。这些分支在图3中被图示为B0至B8。如以上所描述的,所预测的指令序列基于该分支的分支预测而被汇编。示出了将第一分支B0连接至跟随分支B1和B5的线条,以及从B1和B5到其各自的跟随分支B2、B4和B6的线条,依此类推。
分支预测表302被用来保持追踪分支预测以便确定哪些指令序列经常被错失预测以及哪些指令序列极少被错失预测。
在图3的实施例中,分支被分析为比初始分支B0深三个等级。因此,例如,可以从B0至B1、至B2以及继续至B3来汇编可替换指令序列。根据缓冲器的大小,可以分析并存储跟随分支的更大或更小数量的等级。
序列预测器301通过预测分支的结果以汇编所预测的指令序列来起作用。因此,序列预测器可以监视这些分支的执行并且标识频繁错失预测的分支指令。不同数量的机制可以被用来标识频繁错失预测的分支指令。在一个实施例中,诸如序列稳定性计数器303之类的标签结构被用来将重复命中累加至相同指令序列(例如,频繁提取的序列)。一旦已经超过阈值,给定分支指令就可以被标识并视为频繁错失预测的分支指令。
图4示出了依据本发明的一个实施例的用于输出可替换指令序列的过程400的步骤的概要流程图。过程400示出了例如微处理器的指令提取模块的示例性操作步骤。
过程400在步骤401开始,其中对访问进行追踪以便确定频繁命中指令序列的集合。如以上所描述的,序列预测器对所预测的指令序列进行汇编。可以确定哪些指令序列被频繁提取。
在步骤402,从该集合之中,序列预测器标识出频繁错失预测的分支指令。如以上所描述的,该分支指令的预测结果经常是错误的。
在步骤403,分支指令的可替换指令序列被存储到缓冲器中。如以上所描述的,这种无法正确且可靠地预测该分支结果的现象会导致频繁的流水线更新。然而,依据本发明的实施例,可替换指令序列被存储在指令序列缓冲器内。
在步骤404,对于在预测结果错误的情况下针对分支指令的后续命中,从缓冲器输出可替换指令序列。该可替换指令序列因此使得整个微处理器流水线免于被更新。例如,与更新整个流水线、访问高速缓存并且汇编新的指令序列相反,该可替换指令序列直接从缓冲器提供。
应当注意的是,在一个实施例中,分支预测表可以被用于使用分支预测表中的饱和计数器对针对某个分支的重复访问的数量进行计数来预审进入标签结构的指令序列。一旦达到饱和,则在该分支的结果处开始的指令序列地址被输入到追踪标签结构中。该结构具有较小数量的入口并且具有较大的饱和计数器。一旦计数器达到大的计数的阈值(其证明存储该指令序列是合理的),则该指令序列被输入到缓冲器中。
应当注意的是,在一个实施例中,在被命中的序列基于良好预测的分支或者频繁错失预测的分支的情况下,可能使用不同的阈值。随后,每次提取硬件跳转至特定指令序列,就从该缓冲器访问该指令序列并且由通向它的分支的地址进行索引。
图5示出了依据本发明的一个实施例的指令序列缓冲器500的示图。如图5中所描绘的,缓冲器500包括三个部分501-503。缓冲器500和部分501-503示出了本发明的实施例的针对来自分支B0的每个可能的跟随分支来存储可替换指令序列的示例。对于B1至B8的每个分支,存储根据被选取或未被选取的每个分支所产生的可能的结果指令序列。例如,针对被选取(例如,通向B1)或未被选取(例如,通向B5)的分支B0的指令序列被存储到缓冲器500中。类似地,针对被选取(例如,通向B2)或未被选取(例如,通向B4)的分支B1的指令被存储到缓冲器500中,以及针对每个跟随分支依此类推。
以这种方式,缓冲器500包括来自分支B0的所有可能指令序列。该属性允许从分支B0的错失预测进行极其快速的恢复。例如,对于针对分支指令B0的后续命中(其中分支指令的预测结果是错误的),可以从缓冲器500快速输出可替换指令序列。这避免了更新整个流水线、访问高速缓存以及重新汇编新的可替换指令序列(例如,重新提取指令等)的必要性。
图500的实施例示出了部分501-503如何包括针对分支B0至B8中的每一个分支的被选取情形和未被选取情形二者的指令序列。例如,部分501示出了存储在左手侧部分的第一途径上的针对被选取情形的指令。这由该部分的顶端的“T”所图示。针对未被选取情形的指令被存储在右手侧,如由该部分的顶端的“NT”所图示。被选取情形和未被选取情形表示缓冲器部分或高速缓存可以被索引成的两个途径。这在该部分的顶端被图示为途径1“W1”和途径2“W2”。针对其他部分502-503中的每一部分类似地图示了这些属性。
图5的下部图示了对缓冲器500进行索引的方式。在图5的实施例中,为了访问针对每个跟随分支的被选取和未被选取情形二者的可替换指令序列,给定的跟随分支的地址被用来对缓冲器500进行索引。应当注意的是,可替换指令序列以正交方式被存储在部分501-503中。换句话说,能够从给定分支可能选取的可替换指令序列并不存在于相同部分中。例如,如图5中所描绘的,分支B1和分支B5的可替换指令序列可以存在于部分501中,因为要么分支B1的指令序列要么分支B5的指令序列将会出现。这是因为分支B0将要么被选取要么不被选取。因此,不存在来自分支B1和分支B5的指令都将会出现的情形。类似地,在从分支B0移除的下一个等级,分支B2、分支B4和分支B6的可替换指令序列可以被存储在部分502中。这些可替换指令序列是相互排斥的,因为三者中仅有一个能够可能被执行。类似地,在下一个等级,部分503存储分支B3、分支B7和分支B8的可替换指令序列。
图6示出了依据本发明的一个实施例的被用来存储频繁命中的可可靠预测分支的指令序列的指令序列缓冲器600的示图。如图6中所示,缓冲器600包括四个部分601-604。部分601-604中的每一部分耦合至各自的比较逻辑组件611-614。
图6图示了指令序列缓冲器的存储资源的可替换用途。在图6的实施例中,不同于存储频繁错失预测的分支中的频繁命中的可替换指令序列,存储资源被用来存储频繁命中且可可靠预测的分支的指令序列。因此,不同于针对被选取和未被选取的情形存储可替换指令序列,缓冲器600的存储资源被用来存储频繁命中且可可靠预测的分支以及多个后续的跟随分支的指令序列。
存储频繁命中且可可靠预测的分支以及多个后续的跟随分支的指令序列提供了多种优势。对于可可靠预测的分支应得的后续命中,可预测分支以及多个后续的跟随分支的指令序列可以直接从缓冲器600提供。这节省了关于汇编来自正常解码器模块流水线的可可靠预测分支的指令序列的延时的多个周期。以这种方式,本发明的实施例利用那些可可靠预测的指令序列以通过直接从缓冲器600提供这样的序列来截除延时周期。
应当注意的是,缓冲器600与图5的缓冲器500实质上为相同的结构。不同之处在于对缓冲器600进行索引的方式。如以上所描述的,缓冲器600被用来存储来自多个分支的可可靠预测的指令序列。可可靠预测的指令序列被存储在多个途径中,如在部分601-604中每一部分的顶端的途径1“W1”和途径2“W2”所示。在一个实施例中,分支(例如,分支B1)的地址被用来对高速缓存进行索引。例如,在可可靠预测的指令序列从B0流至B1至B2至B3的情形下,第一跟随分支B1的地址被用来对缓冲器600进行索引,而跟随分支B2和跟随分支B3则被用作标签。跟随分支B2和跟随分支B3将允许经由具有两个不同标签(b2和b3)的两种不同途径来访问相同的索引。在一个实施例中,分支预测的比特(例如,从表302中的分支所提供的)也可以被用作标签。在一个实施例中,跟随分支B1及其各自的跟随分支B2和跟随分支B3的散列可以被用来访问缓冲器600。
比较逻辑组件611-614通过比较分支序列预测来起作用。组件611-614将预测与序列命中进行比较以对可可靠预测的序列的相对指标(merit)进行评分。例如,如果可可靠预测的序列出于某种原因而变成没有那么可明显预测的,则该组件将使得其从缓冲器600被逐出。在一个实施例中,如果该可可靠预测的序列变为频繁命中、频繁错失预测的序列,则该序列从图6中所示的访问和存储方法移至图5中所示的访问和存储方法。
应当注意的是,缓冲器600可以被实施为统一的高速缓存架构。在这样的实施例中,频繁命中、频繁错失预测的指令序列以及频繁命中且可可靠预测的指令序列的指令序列均可以被存储在缓冲器600的常用结构中。不同之处将是对它们进行访问、索引和检索的方法。在这样的实施例中,将需要包括逻辑以确保由于冲突等而损坏的任何指令序列都被逐出。
可替换地,在一个实施例中,缓冲器600可以被分区或者以其他方式进行分配以使得存储资源分别被专用于频繁命中、频繁错失预测的指令序列以及被专用于可可靠预测的指令序列。这样的专用分配将通过使得指令序列不太可能彼此损坏而简化了缓冲器600的管理。
图7示出了依据本发明的一个实施例的用于输出可可靠预测的指令序列的过程700的步骤的概要流程图。过程700示出了例如微处理器的指令提取模块的示例性操作步骤。
过程700在步骤701开始,其中对访问进行追踪以便确定频繁命中指令序列的集合。如以上所描述的,序列预测器对所预测的指令序列进行汇编。可以确定哪些指令序列被频繁提取。
在步骤702,从该集合之中,序列预测器标识出具有形成可可靠预测的指令序列的一系列后续跟随分支指令的分支指令。
在步骤703,分支指令的可可靠预测的指令序列被存储到缓冲器(例如,缓冲器600)中。
在步骤704,对于针对分支指令的后续命中,从缓冲器输出可可靠预测的指令序列。这节省了关于汇编来自正常解码器模块流水线的可可靠预测分支的指令序列的延时的多个周期。以这种方式,本发明的实施例利用那些可可靠预测的指令序列以通过直接从缓冲器600提供这样的序列来截除延时周期。
图8示出了依据本发明的一个实施例的示例性微处理器流水线800的示图。微处理器流水线800包括提取模块801,其实施如以上所描述的用于标识并提取包括执行的指令的过程的功能。在图8的实施例中,该提取模块后跟有解码模块802、分配模块803、调度模块804、执行模块805和指令引退模块806。应当注意的是,微处理器流水线800仅是实施以上所描述的本发明的实施例的功能的流水线的一个示例。本领域技术人员将会认识到,可以实施包括以上所描述的解码模块的功能的其他微处理器流水线。
已经出于解释的目的而参考具体实施例对前述描述进行了表述。然而,以上所阐明的讨论并非意在是详尽的或者将本发明限制为所公开的精确形式。鉴于以上教导,许多修改和变化是可能的。选择并描述了实施例以便最佳地解释本发明的原理及其实际应用,由此使得本领域其他技术人员能够使用可以与设想的特定用途相适应的各种修改来最佳地利用本发明和各个实施例。

Claims (15)

1.一种用于输出可替换指令序列的方法,包括:
追踪重复命中以确定微处理器的频繁命中指令序列的集合,其中所述追踪包括监视分支的执行并且预测所述分支的结果以汇编所述频繁命中指令序列的集合;
标识多个频繁错失预测的分支指令,其中所述多个频繁错失预测分支指令的每个频繁错失预测分支指令的所述预测结果经常是错误的;
将所述多个频繁错失预测分支指令的所述每个频繁错失预测分支指令的可替换指令序列存储到缓冲器中,其中所述可替换指令序列被存储用于针对每个分支的被选取和未被选取的情况;
对于在频繁错失预测分支指令的所述预测结果错误的情况下针对所述频繁错失预测分支指令的后续命中,从所述缓冲器输出对应的所述可替换指令序列。
2.根据权利要求1所述的方法,其中可替换指令序列被存储为跟随分支的若干数量的等级那么深。
3.根据权利要求1所述的方法,其中从所述缓冲器输出所述可替换指令序列避免了引起所述微处理器的指令流水线的整体更新。
4.根据权利要求1所述的方法,其中从所述缓冲器输出所述可替换指令序列减少了由于错误地预测分支指令而产生的性能惩罚。
5.根据权利要求1所述的方法,其中标签结构被用来标识所述频繁命中指令序列的集合。
6.一种用于输出可替换指令序列的系统,所述系统包括:
提取模块,所述提取模块访问包括多个分支指令的多个指令;
缓冲器,所述缓冲器存储可替换指令序列;
序列预测器,可操作以监视分支的执行并且预测所述分支的结果,以便从所述多个指令来汇编频繁命中指令序列的集合;以及
计数器,可操作以将重复命中累加到指令序列以标识多个频繁错失预测分支指令,其中所述多个频繁错失预测分支指令的每个频繁错失预测分支指令的预测结果经常是错误的;
其中所述提取模块将所述多个分支指令的每个分支指令的可替换指令序列存储到所述缓冲器中,其中所述可替换指令序列被存储用于每个分支的被选取和未被选取的情况;
其中对于在频繁错失预测分支指令的所述预测结果错误的情况下针对所述频繁错失预测分支指令的后续命中,所述提取模块从所述缓冲器输出对应的所述可替换指令序列。
7.根据权利要求6所述的系统,其中可替换指令序列被存储为跟随分支的若干数量的等级那么深。
8.根据权利要求6所述的系统,其中从所述缓冲器输出所述可替换指令序列避免了引起微处理器的指令流水线的整体更新。
9.根据权利要求6所述的系统,其中从所述缓冲器输出所述可替换指令序列减少了由于错误地预测分支指令而产生的性能惩罚。
10.根据权利要求6所述的系统,其中标签结构被用来标识所述频繁命中指令序列的集合。
11.一种实施标识指令的方法的微处理器,所述微处理器包括:
微处理器流水线;
提取模块,所述提取模块包括在所述微处理器流水线中,其中所述提取模块访问包括多个分支指令的多个指令;以及
缓冲器,所述缓冲器耦合至所述提取模块;
序列预测器,可操作以监视分支的执行并且预测所述分支的结果,以便从所述多个指令来汇编频繁命中指令序列的集合;以及
计数器,可操作以将重复命中累加到指令序列以标识多个频繁错失预测分支指令,其中所述多个频繁错失预测分支指令的每个频繁错失预测分支指令的预测结果经常是错误的;
其中所述提取模块将所述多个分支指令的每个分支指令的可替换指令序列存储到所述缓冲器中,其中所述可替换指令序列被存储用于每个分支的被选取和未被选取的情况;
其中对于在频繁错失预测分支指令的所述预测结果错误的情况下针对所述频繁错失预测分支指令的后续命中,所述提取模块从所述缓冲器输出对应的所述可替换指令序列。
12.根据权利要求11所述的微处理器,其中可替换指令序列被存储为跟随分支的若干数量的等级那么深。
13.根据权利要求11所述的微处理器,其中从所述缓冲器输出所述可替换指令序列避免了引起所述微处理器的指令流水线的更新。
14.根据权利要求11所述的微处理器,其中从所述缓冲器输出所述可替换指令序列减少了由于错误地预测分支指令而产生的性能惩罚。
15.根据权利要求11所述的微处理器,其中标签结构被用来标识所述频繁命中指令序列的集合。
CN201180057070.5A 2010-10-12 2011-10-12 用于增强分支预测效率的指令序列缓冲器 Active CN103282874B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710260951.6A CN107092467B (zh) 2010-10-12 2011-10-12 用于增强分支预测效率的指令序列缓冲器

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US39239110P 2010-10-12 2010-10-12
US61/392,391 2010-10-12
PCT/US2011/055917 WO2012051262A2 (en) 2010-10-12 2011-10-12 An instruction sequence buffer to enhance branch prediction efficiency

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201710260951.6A Division CN107092467B (zh) 2010-10-12 2011-10-12 用于增强分支预测效率的指令序列缓冲器

Publications (2)

Publication Number Publication Date
CN103282874A CN103282874A (zh) 2013-09-04
CN103282874B true CN103282874B (zh) 2017-03-29

Family

ID=45938943

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201710260951.6A Expired - Fee Related CN107092467B (zh) 2010-10-12 2011-10-12 用于增强分支预测效率的指令序列缓冲器
CN201180057070.5A Active CN103282874B (zh) 2010-10-12 2011-10-12 用于增强分支预测效率的指令序列缓冲器

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201710260951.6A Expired - Fee Related CN107092467B (zh) 2010-10-12 2011-10-12 用于增强分支预测效率的指令序列缓冲器

Country Status (5)

Country Link
US (3) US9678755B2 (zh)
EP (1) EP2628072B1 (zh)
CN (2) CN107092467B (zh)
TW (1) TWI541721B (zh)
WO (1) WO2012051262A2 (zh)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8327115B2 (en) 2006-04-12 2012-12-04 Soft Machines, Inc. Plural matrices of execution units for processing matrices of row dependent instructions in single clock cycle in super or separate mode
EP2523101B1 (en) 2006-11-14 2014-06-04 Soft Machines, Inc. Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes
KR101685247B1 (ko) 2010-09-17 2016-12-09 소프트 머신즈, 인크. 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측
EP2628072B1 (en) 2010-10-12 2016-10-12 Soft Machines, Inc. An instruction sequence buffer to enhance branch prediction efficiency
TWI525541B (zh) * 2010-10-12 2016-03-11 軟體機器公司 輸出可靠可預測指令序列的方法與系統,以及實施識別指令方法的微處理器
KR101966712B1 (ko) 2011-03-25 2019-04-09 인텔 코포레이션 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트
CN108376097B (zh) 2011-03-25 2022-04-15 英特尔公司 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
EP2689327B1 (en) 2011-03-25 2021-07-28 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
KR101639853B1 (ko) 2011-05-20 2016-07-14 소프트 머신즈, 인크. 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 자원들 및 상호접속 구조들의 비집중 할당
CN103649931B (zh) 2011-05-20 2016-10-12 索夫特机械公司 用于支持由多个引擎执行指令序列的互连结构
KR101703401B1 (ko) 2011-11-22 2017-02-06 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
WO2013077876A1 (en) 2011-11-22 2013-05-30 Soft Machines, Inc. A microprocessor accelerated code optimizer
US8930674B2 (en) 2012-03-07 2015-01-06 Soft Machines, Inc. Systems and methods for accessing a unified translation lookaside buffer
US9740612B2 (en) 2012-07-30 2017-08-22 Intel Corporation Systems and methods for maintaining the coherency of a store coalescing cache and a load cache
US9229873B2 (en) 2012-07-30 2016-01-05 Soft Machines, Inc. Systems and methods for supporting a plurality of load and store accesses of a cache
US9710399B2 (en) 2012-07-30 2017-07-18 Intel Corporation Systems and methods for flushing a cache with modified data
US9916253B2 (en) 2012-07-30 2018-03-13 Intel Corporation Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput
US9678882B2 (en) 2012-10-11 2017-06-13 Intel Corporation Systems and methods for non-blocking implementation of cache flush instructions
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
WO2014151018A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for executing multithreaded instructions grouped onto blocks
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
WO2014151043A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
CN104156196B (zh) * 2014-06-12 2017-10-27 龚伟峰 重命名预处理方法
US10318303B2 (en) 2017-03-28 2019-06-11 Oracle International Corporation Method and apparatus for augmentation and disambiguation of branch history in pipelined branch predictors
US11068612B2 (en) * 2018-08-01 2021-07-20 International Business Machines Corporation Microarchitectural techniques to mitigate cache-based data security vulnerabilities
US11099851B2 (en) 2018-10-26 2021-08-24 International Business Machines Corporation Branch prediction for indirect branch instructions
US10846097B2 (en) * 2018-12-20 2020-11-24 Samsung Electronics Co., Ltd. Mispredict recovery apparatus and method for branch and fetch pipelines
US11520590B2 (en) * 2020-09-02 2022-12-06 Microsoft Technology Licensing, Llc Detecting a repetitive pattern in an instruction pipeline of a processor to reduce repeated fetching
US20220308887A1 (en) * 2021-03-27 2022-09-29 Redpine Signals, Inc. Mitigation of branch misprediction penalty in a hardware multi-thread microprocessor
WO2022212220A1 (en) * 2021-03-27 2022-10-06 Ceremorphic, Inc. Mitigation of branch misprediction penalty in a hardware multi-thread microprocessor
US20220308888A1 (en) * 2021-03-27 2022-09-29 Redpine Signals, Inc. Method for reducing lost cycles after branch misprediction in a multi-thread microprocessor

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5881277A (en) * 1996-06-13 1999-03-09 Texas Instruments Incorporated Pipelined microprocessor with branch misprediction cache circuits, systems and methods
CN1305150A (zh) * 1999-11-01 2001-07-25 国际商业机器公司 具有改进的地址目标预测的处理器和方法

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5539911A (en) * 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US6253316B1 (en) 1996-11-19 2001-06-26 Advanced Micro Devices, Inc. Three state branch history using one bit in a branch prediction mechanism
US5903750A (en) 1996-11-20 1999-05-11 Institute For The Development Of Emerging Architectures, L.L.P. Dynamic branch prediction for branch instructions with multiple targets
US6256728B1 (en) 1997-11-17 2001-07-03 Advanced Micro Devices, Inc. Processor configured to selectively cancel instructions from its pipeline responsive to a predicted-taken short forward branch instruction
US6609189B1 (en) 1998-03-12 2003-08-19 Yale University Cycle segmented prefix circuits
US6157998A (en) 1998-04-03 2000-12-05 Motorola Inc. Method for performing branch prediction and resolution of two or more branch instructions within two or more branch prediction buffers
US6115809A (en) 1998-04-30 2000-09-05 Hewlett-Packard Company Compiling strong and weak branching behavior instruction blocks to separate caches for dynamic and static prediction
US6205545B1 (en) 1998-04-30 2001-03-20 Hewlett-Packard Company Method and apparatus for using static branch predictions hints with dynamically translated code traces to improve performance
US6256727B1 (en) 1998-05-12 2001-07-03 International Business Machines Corporation Method and system for fetching noncontiguous instructions in a single clock cycle
US6260138B1 (en) 1998-07-17 2001-07-10 Sun Microsystems, Inc. Method and apparatus for branch instruction processing in a processor
US6332189B1 (en) 1998-10-16 2001-12-18 Intel Corporation Branch prediction architecture
US6247097B1 (en) 1999-01-22 2001-06-12 International Business Machines Corporation Aligned instruction cache handling of instruction fetches across multiple predicted branch instructions
US6418530B2 (en) 1999-02-18 2002-07-09 Hewlett-Packard Company Hardware/software system for instruction profiling and trace selection using branch history information for branch predictions
US6643770B1 (en) 1999-09-16 2003-11-04 Intel Corporation Branch misprediction recovery using a side memory
US6594755B1 (en) 2000-01-04 2003-07-15 National Semiconductor Corporation System and method for interleaved execution of multiple independent threads
CN1156760C (zh) * 2000-12-12 2004-07-07 智原科技股份有限公司 适用于处理器的存储器数据存取装置及其存取方法
US7024545B1 (en) 2001-07-24 2006-04-04 Advanced Micro Devices, Inc. Hybrid branch prediction device with two levels of branch prediction cache
US6718440B2 (en) 2001-09-28 2004-04-06 Intel Corporation Memory access latency hiding with hint buffer
US6938151B2 (en) 2002-06-04 2005-08-30 International Business Machines Corporation Hybrid branch prediction using a global selection counter and a prediction method comparison table
JP3845043B2 (ja) 2002-06-28 2006-11-15 富士通株式会社 命令フェッチ制御装置
JP3982353B2 (ja) 2002-07-12 2007-09-26 日本電気株式会社 フォルトトレラントコンピュータ装置、その再同期化方法及び再同期化プログラム
US7191349B2 (en) 2002-12-26 2007-03-13 Intel Corporation Mechanism for processor power state aware distribution of lowest priority interrupt
US7178010B2 (en) 2003-01-16 2007-02-13 Ip-First, Llc Method and apparatus for correcting an internal call/return stack in a microprocessor that detects from multiple pipeline stages incorrect speculative update of the call/return stack
US7143273B2 (en) 2003-03-31 2006-11-28 Intel Corporation Method and apparatus for dynamic branch prediction utilizing multiple stew algorithms for indexing a global history
US7010676B2 (en) 2003-05-12 2006-03-07 International Business Machines Corporation Last iteration loop branch prediction upon counter threshold and resolution upon counter one
JP2005032018A (ja) * 2003-07-04 2005-02-03 Semiconductor Energy Lab Co Ltd 遺伝的アルゴリズムを用いたマイクロプロセッサ
TWI281121B (en) 2003-10-06 2007-05-11 Ip First Llc Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence
EP1628235A1 (en) * 2004-07-01 2006-02-22 Texas Instruments Incorporated Method and system of ensuring integrity of a secure mode entry sequence
JP4287799B2 (ja) 2004-07-29 2009-07-01 富士通株式会社 プロセッサシステムおよびスレッド切り替え制御方法
US7152155B2 (en) 2005-02-18 2006-12-19 Qualcomm Incorporated System and method of correcting a branch misprediction
US20060200655A1 (en) 2005-03-04 2006-09-07 Smith Rodney W Forward looking branch target address caching
US7475231B2 (en) 2005-11-14 2009-01-06 Texas Instruments Incorporated Loop detection and capture in the instruction queue
US20080126771A1 (en) 2006-07-25 2008-05-29 Lei Chen Branch Target Extension for an Instruction Cache
US7707396B2 (en) 2006-11-17 2010-04-27 International Business Machines Corporation Data processing system, processor and method of data processing having improved branch target address cache
US20080235500A1 (en) 2006-11-21 2008-09-25 Davis Gordon T Structure for instruction cache trace formation
WO2008077088A2 (en) 2006-12-19 2008-06-26 The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations System and method for branch misprediction prediction using complementary branch predictors
US7685410B2 (en) * 2007-02-13 2010-03-23 Global Foundries Inc. Redirect recovery cache that receives branch misprediction redirects and caches instructions to be dispatched in response to the redirects
US7711935B2 (en) 2007-04-30 2010-05-04 Netlogic Microsystems, Inc. Universal branch identifier for invalidation of speculative instructions
US7870371B2 (en) 2007-12-17 2011-01-11 Microsoft Corporation Target-frequency based indirect jump prediction for high-performance processors
CN105468334A (zh) * 2008-12-25 2016-04-06 世意法(北京)半导体研发有限责任公司 对非控制流指令减少分支检验
US8099586B2 (en) 2008-12-30 2012-01-17 Oracle America, Inc. Branch misprediction recovery mechanism for microprocessors
US20120005462A1 (en) 2010-07-01 2012-01-05 International Business Machines Corporation Hardware Assist for Optimizing Code During Processing
TWI525541B (zh) 2010-10-12 2016-03-11 軟體機器公司 輸出可靠可預測指令序列的方法與系統,以及實施識別指令方法的微處理器
EP2628072B1 (en) 2010-10-12 2016-10-12 Soft Machines, Inc. An instruction sequence buffer to enhance branch prediction efficiency
US10795683B2 (en) 2014-06-11 2020-10-06 International Business Machines Corporation Predicting indirect branches using problem branch filtering and pattern cache
CN105511838B (zh) 2014-09-29 2018-06-29 上海兆芯集成电路有限公司 处理器及其执行方法
US9875106B2 (en) 2014-11-12 2018-01-23 Mill Computing, Inc. Computer processor employing instruction block exit prediction
JP2018005488A (ja) 2016-06-30 2018-01-11 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5881277A (en) * 1996-06-13 1999-03-09 Texas Instruments Incorporated Pipelined microprocessor with branch misprediction cache circuits, systems and methods
CN1305150A (zh) * 1999-11-01 2001-07-25 国际商业机器公司 具有改进的地址目标预测的处理器和方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
嵌入式处理器中分支目标缓冲器的研究与设计;王晨旭 等;《微电子学与计算机》;20120105;第29卷(第1期);27-31 *

Also Published As

Publication number Publication date
US20130311759A1 (en) 2013-11-21
US10083041B2 (en) 2018-09-25
US9921850B2 (en) 2018-03-20
US20170068544A1 (en) 2017-03-09
EP2628072A4 (en) 2014-03-05
TWI541721B (zh) 2016-07-11
WO2012051262A3 (en) 2012-06-14
US20180121206A1 (en) 2018-05-03
EP2628072A2 (en) 2013-08-21
EP2628072B1 (en) 2016-10-12
US9678755B2 (en) 2017-06-13
WO2012051262A2 (en) 2012-04-19
CN107092467A (zh) 2017-08-25
CN107092467B (zh) 2021-10-29
CN103282874A (zh) 2013-09-04
TW201237751A (en) 2012-09-16

Similar Documents

Publication Publication Date Title
CN103282874B (zh) 用于增强分支预测效率的指令序列缓冲器
CN103262027B (zh) 用于存储具有可可靠预测的指令序列的分支的指令序列缓冲器
Roth et al. Dependence based prefetching for linked data structures
CN100397347C (zh) 用于smt处理器上的cpi调度的系统和方法
TWI564718B (zh) 取決於模式而可動態配置以選擇分配至全部或是一個組的多模式組相聯快取記憶體
CN105701033B (zh) 取决于模式而可动态配置的高速缓存存储器
US20020144101A1 (en) Caching DAG traces
CN104380264A (zh) 运行时间检测报告
CN103207772A (zh) 一种优化实时任务wcet的指令预取内容选取方法
CN109643232B (zh) 执行程序的计算机系统和在计算机系统上执行程序的方法
US20160092182A1 (en) Methods and systems for optimizing execution of a program in a parallel processing environment
CN106529296A (zh) 一种基于模糊聚类的软件保护虚拟机攻击方法
CN103440122A (zh) 一种新的使用逆向扩展控制流图的静态函数识别方法
Mitrevski et al. Prediction and speculation techniques in ILP
CN101887360A (zh) 微处理器的数据预先撷取器及方法
EP3391192A1 (en) Broadening field specialization
Moure et al. Optimizing a decoupled front-end architecture: the Indexed Fetch Target Buffer (iFTB)
Falsafi et al. Data prefetching
Narayanasamy et al. Creating converged trace schedules using string matching
Kim et al. Application Data Prefetching on the IBM Blue Gene/Q Supercomputer

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20170320

Address after: American California

Patentee after: Intel Corporation

Address before: American California

Patentee before: Soft Machines Inc.

TR01 Transfer of patent right