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

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

Info

Publication number
CN107092467A
CN107092467A CN201710260951.6A CN201710260951A CN107092467A CN 107092467 A CN107092467 A CN 107092467A CN 201710260951 A CN201710260951 A CN 201710260951A CN 107092467 A CN107092467 A CN 107092467A
Authority
CN
China
Prior art keywords
branch
sequence
instruction
buffer
extraction module
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.)
Granted
Application number
CN201710260951.6A
Other languages
English (en)
Other versions
CN107092467B (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
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN107092467A publication Critical patent/CN107092467A/zh
Application granted granted Critical
Publication of CN107092467B publication Critical patent/CN107092467B/zh
Expired - Fee Related 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, 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/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, 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/38Concurrent instruction execution, e.g. pipeline, 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

Abstract

本申请涉及用于增强分支预测效率的指令序列缓冲器。根据本发明,提出一种用于输出可替换指令序列的方法。该方法包括追踪重复命中以确定微处理器的频繁命中指令序列的集合。标识频繁错失预测的分支指令,其中该分支指令的预测结果经常是错误的。将分支指令目标的可替换指令序列存储到缓冲器中。对于在分支指令的预测结果错误的情况下针对分支指令的后续命中,从缓冲器输出可替换指令序列。

Description

用于增强分支预测效率的指令序列缓冲器
本申请是国际申请号为PCT/US2011/055917,国际申请日为2011/10/12, 进入国家阶段的申请号为201180057070.5,题为“用于增强分支预测效率的指 令序列缓冲器”的发明专利申请的分案申请。
技术领域
本发明总体上涉及数字计算机系统,尤其涉及一种用于选择包括指令序列 的指令的系统和方法。
背景技术
改进计算机架构性能是一项困难的任务。已经通过频率定标、单指令多数 据(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快速输 出可替换指令序列。这避免了更新整个流水线、访问高速缓存以及重新汇编新 的可替换指令序列(例如,重新提取指令等)的必要性。
图5的实施例示出了部分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 (10)

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

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US39239110P 2010-10-12 2010-10-12
US61/392,391 2010-10-12
CN201180057070.5A CN103282874B (zh) 2010-10-12 2011-10-12 用于增强分支预测效率的指令序列缓冲器

Related Parent Applications (1)

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

Publications (2)

Publication Number Publication Date
CN107092467A true CN107092467A (zh) 2017-08-25
CN107092467B CN107092467B (zh) 2021-10-29

Family

ID=45938943

Family Applications (2)

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

Family Applications Before (1)

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

Country Status (5)

Country Link
US (3) US9678755B2 (zh)
EP (1) EP2628072B1 (zh)
CN (2) CN103282874B (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
EP2477109B1 (en) 2006-04-12 2016-07-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
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 소프트 머신즈, 인크. 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측
WO2012051281A2 (en) * 2010-10-12 2012-04-19 Soft Machines, Inc. An instruction sequence buffer to store branches having reliably predictable instruction sequences
TWI541721B (zh) 2010-10-12 2016-07-11 軟體機器公司 使用指令序列緩衝器來增強分支預測效能的方法、系統及微處理器
TWI533129B (zh) 2011-03-25 2016-05-11 軟體機器公司 使用可分割引擎實體化的虛擬核心執行指令序列程式碼區塊
US9274793B2 (en) 2011-03-25 2016-03-01 Soft Machines, Inc. Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
KR101620676B1 (ko) 2011-03-25 2016-05-23 소프트 머신즈, 인크. 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 레지스터 파일 세그먼트
EP2710481B1 (en) 2011-05-20 2021-02-17 Intel Corporation Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines
KR101639854B1 (ko) 2011-05-20 2016-07-14 소프트 머신즈, 인크. 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 상호접속 구조
EP2783281B1 (en) 2011-11-22 2020-05-13 Intel Corporation A microprocessor accelerated code optimizer
KR101842550B1 (ko) 2011-11-22 2018-03-28 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
US8930674B2 (en) 2012-03-07 2015-01-06 Soft Machines, Inc. Systems and methods for accessing a unified translation lookaside buffer
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
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
US9710399B2 (en) 2012-07-30 2017-07-18 Intel Corporation Systems and methods for flushing a cache with modified data
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
US9678882B2 (en) 2012-10-11 2017-06-13 Intel Corporation Systems and methods for non-blocking implementation of cache flush instructions
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
EP2972845B1 (en) 2013-03-15 2021-07-07 Intel Corporation A method for executing multithreaded instructions grouped onto blocks
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
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
KR102083390B1 (ko) 2013-03-15 2020-03-02 인텔 코포레이션 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법
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
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
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
US20220308888A1 (en) * 2021-03-27 2022-09-29 Redpine Signals, Inc. Method for reducing lost cycles after branch misprediction in a multi-thread microprocessor
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

Citations (3)

* 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
CN1357837A (zh) * 2000-12-12 2002-07-10 智原科技股份有限公司 适用于处理器的存储器数据存取装置及其存取方法
CN101763249A (zh) * 2008-12-25 2010-06-30 世意法(北京)半导体研发有限责任公司 对非控制流指令减少分支检验

Family Cites Families (47)

* 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
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
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
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
US6457120B1 (en) * 1999-11-01 2002-09-24 International Business Machines Corporation Processor and method including a cache having confirmation bits for improving address predictable branch instruction target predictions
US6594755B1 (en) 2000-01-04 2003-07-15 National Semiconductor Corporation System and method for interleaved execution of multiple independent threads
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
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
TWI541721B (zh) 2010-10-12 2016-07-11 軟體機器公司 使用指令序列緩衝器來增強分支預測效能的方法、系統及微處理器
WO2012051281A2 (en) 2010-10-12 2012-04-19 Soft Machines, Inc. An instruction sequence buffer to store branches having reliably predictable instruction sequences
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 (3)

* 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
CN1357837A (zh) * 2000-12-12 2002-07-10 智原科技股份有限公司 适用于处理器的存储器数据存取装置及其存取方法
CN101763249A (zh) * 2008-12-25 2010-06-30 世意法(北京)半导体研发有限责任公司 对非控制流指令减少分支检验

Also Published As

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

Similar Documents

Publication Publication Date Title
CN107092467A (zh) 用于增强分支预测效率的指令序列缓冲器
CN103262027B (zh) 用于存储具有可可靠预测的指令序列的分支的指令序列缓冲器
Merten et al. A hardware-driven profiling scheme for identifying program hot spots to support runtime optimization
CN103250131B (zh) 包括用于早期远分支预测的影子缓存的单周期多分支预测
CN100397347C (zh) 用于smt处理器上的cpi调度的系统和方法
CN105701032B (zh) 具备多种替换策略的组相联高速缓存存储器
TWI564718B (zh) 取決於模式而可動態配置以選擇分配至全部或是一個組的多模式組相聯快取記憶體
US20020144101A1 (en) Caching DAG traces
CN105701034B (zh) 处理器以及用于操作处理器的方法
CN108027771A (zh) 基于块的处理器核复合寄存器
CN104040491A (zh) 微处理器加速的代码优化器
CN104040490A (zh) 用于多引擎微处理器的加速的代码优化器
CN104040492A (zh) 微处理器加速的代码优化器和依赖性重排序方法
CN1127899A (zh) 具有推测指令取指的数据处理器及操作方法
CN102064977A (zh) 基于gpu的高速网络报文内容检测方法
CN109643237A (zh) 分支目标缓冲器压缩
Chung et al. Application data prefetching on the IBM Blue Gene/Q supercomputer
CN105404635B (zh) 字符串匹配的方法、设备和异构计算系统
CN105706049B (zh) 操作系统例行程序的预测历程储存器的部分使用
Kalaitzidis Advanced speculation to increase the performance of superscalar processors
Mitrevski et al. Prediction and speculation techniques in ILP
CN117951434A (zh) 一种处理器隐藏计数器逆向工程方法及其利用方法
Moure et al. Optimizing a decoupled front-end architecture: the Indexed Fetch Target Buffer (iFTB)
Ailamaki et al. Minimizing Memory Stalls
Narayanasamy et al. Creating converged trace schedules using string matching

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20211029

CF01 Termination of patent right due to non-payment of annual fee