CN114430821A - 用于在处理器中执行的指令流中的分支集合活动检测的动态集合活动分支训练 - Google Patents

用于在处理器中执行的指令流中的分支集合活动检测的动态集合活动分支训练 Download PDF

Info

Publication number
CN114430821A
CN114430821A CN202080066218.0A CN202080066218A CN114430821A CN 114430821 A CN114430821 A CN 114430821A CN 202080066218 A CN202080066218 A CN 202080066218A CN 114430821 A CN114430821 A CN 114430821A
Authority
CN
China
Prior art keywords
branch
instruction
set activity
training
conditional
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202080066218.0A
Other languages
English (en)
Inventor
V·R·克廷蒂·纳雷什
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN114430821A publication Critical patent/CN114430821A/zh
Pending legal-status Critical Current

Links

Images

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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/323Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect 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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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
    • G06F9/381Loop buffering
    • 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/3812Instruction prefetching with instruction modification, e.g. store into instruction stream

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Evolutionary Computation (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

公开了用于在处理器中执行的指令流中的分支集合活动检测的动态集合活动分支训练。分支集合活动检测电路被配置为在指令流的运行时处理期间动态地检测指令流中的分支集合活动。响应于所标识的条件分支指令,分支集合活动检测电路开始由条件分支指令预测的潜在分支集合活动的训练过程。分支集合活动检测电路被配置为基于根据是否采用分支将潜在会聚点设置为针对条件分支指令的目标地址来确定所标识的训练中分支集合活动是否是实际分支集合活动。如果在所设置的会聚点处处理指令,这意味着所设置的会聚点可以是实际会聚点,并且可以将训练中分支集合活动检测为实际分支集合活动。

Description

用于在处理器中执行的指令流中的分支集合活动检测的动态 集合活动分支训练
技术领域
本公开的技术涉及采用中央处理单元(CPU)(也被称为“处理器”)的基于处理器的系统,更具体地涉及处理可以包括分支指令的计算机软件指令的处理器中的指令处理电路。
背景技术
中央处理单元(CPU)(也被称为“处理器”)执行针对各种应用的计算任务。常规处理器包括一个或多个处理器核,也被称为“CPU核”。处理器执行从指令存储器提取的计算机程序指令(“指令”),也被称为“软件指令”。处理器将从存储器提取的指令执行成指令流,该指令流由指令处理电路处理以基于指令类型和数据操作数来执行操作并生成结果。例如,从指令程序提取的指令的指令流可以在处理器中的(多个)指令流水线中被流水线化,由此可以通过将每条指令的处理拆分成一系列步骤来提高处理器正在执行的计算机指令的吞吐量。
计算机指令包括分支指令。分支指令是如下指令:可以使计算机在与该分支指令之后的下一指令不同的分支目标地址处开始处理不同指令序列,并因此偏离其按顺序处理指令的默认行为。例如,分支指令可以是不基于任何条件而分支到指令流中的分支目标地址的立即分支指令。因此,针对立即分支指令,总是“采用”分支。条件分支指令是仅当包含在条件分支指令中的某个条件为真时才分支到指令流中的分支目标地址以继续处理指令的分支指令。如果条件为真,则这被称为“分支采用”,并且指令处理电路跳转到指令流中的分支目标地址以继续执行指令。如果条件为假,则这被称为“分支未采用”,并且指令处理电路将落空到指令流中的条件分支指令之后的下一指令以用于执行。
条件分支指令可以使分支集合活动(hammock)存在于指令程序中。分支集合活动是一个短的前向分支,其以if-then(如果-那么)或if-then-else(如果-那么-否则)构造的形式横跨指令流中的一些指令。分支集合活动可以是单侧集合活动(SSH)或双侧集合活动(DSH)。图1A是分支SSH 100的图形表示,其是分支DSH的一种变体。条件分支指令102控制是否采用分支。如果条件分支指令102的条件被确定为真,则分支发生到分支采用路径106中的分支目标104。如果条件分支指令102的条件被确定为假,则不发生分支,从而落空到分支未采用路径108中的分支落空,去往直接在条件分支指令102之后的指令110。分支采用路径106跳过分支未采用路径108中的指令。分支采用路径106和分支未采用路径108会聚回到分支会聚点112处。图1B图示了图1A中的分支SSH 100的两(2)个其他变体。图1B中的变体分支SSH 114在分支采用路径118中具有分支116,其立即分支到分支未采用路径122中的分支会聚点120。变体分支SSH 124具有去往分支未采用路径134中的分支目标130、132的立即分支126、128,其最终将与分支采用路径136会聚在分支会聚点138处。
图2A是分支DSH 200的图形表示,其是分支DSH的一种变体。条件分支指令202控制是否采用分支。如果条件分支指令202的条件被确定为真,则分支发生到分支采用路径206中的分支目标204。如果条件分支指令202的条件被确定为假,则不发生分支,因此落空到分支未采用路径210中的分支落空208,去往直接在条件分支指令202之后的指令212。分支未采用路径210包括去往分支采用路径206和分支未采用路径210的分支再会聚点216的分支214。图2B图示了图2A中的分支DSH 200的三个(3个)其他变体的图。图2B中的变体分支DSH218具有分支未采用路径220,其具有分支222,分支222跳过分支采用路径224去往分支会聚点226。图2B中的变体分支DSH 228具有分支采用路径230,其具有分支232,分支222跳转到分支未采用路径236中的分支会聚点234。图2B中的变体分支DSH 238具有分支未采用路径240,其具有分支242和第二分支244,第二分支244跳转到分支采用路径248中的分支会聚点246。
标识分支集合活动的动态特性可以用于提高处理器效率。然而,必须在指令流中标识分支集合活动才能够标识分支集合活动的特性。如上文在图1A-图2B中所讨论的,SSH和DSH分支可以在具有处理器提前未知的不同的分支目标和分支路径的变体中被实现。
发明内容
本文中所公开的方面包括用于在处理器中执行的指令流中的分支集合活动检测的动态集合活动分支训练。处理器被配置为执行计算机软件指令以执行操作。该处理器包括指令处理电路,该指令处理电路可以包括多个指令处理级,该多个指令处理级被配置为根据数据流执行对从指令程序提取的指令流中的指令的处理和执行进行流水线化。集合活动分支可以存在于指令程序中,其由指令程序中存在的条件分支指令断言(predicate)。通过在指令流的运行时数据流执行中标识集合活动分支的特性,可以提高运行时处理器效率。
在该点上,指令处理电路包括分支集合活动检测电路,其被配置为在指令流的运行时处理期间动态地检测指令流中的分支集合活动。在示例中,分支集合活动检测电路被配置为接收存在于正在指令处理电路中处理的指令流中的条件分支指令的指示(例如,条件分支指令的程序计数器(PC))。响应于条件分支指令被标识,分支集合活动检测电路开始由条件分支指令断言的潜在分支集合活动的训练过程,以确定是否存在实际分支集合活动。分支集合活动检测电路被配置为:基于根据条件分支指令的指令处理电路是否采用分支而捕获条件分支指令的分支地址来确定所标识的训练中分支集合活动是否是实际分支集合活动。目标地址被用于设置训练中分支集合活动的潜在会聚点。如果分支集合活动检测电路确定指令流中的指令在所设置的会聚点处被处理(即,到达),这意味着所设置的会聚点被确定为实际会聚点。作为响应,训练中分支集合活动被检测为实际分支集合活动。分支集合活动检测电路还可以被配置为跟踪关于在训练中分支集合活动的训练过程期间处理的指令的信息。以这种方式,当训练中分支集合活动被确认是实际分支集合活动时,可以重新使用该跟踪信息以优化处理。当在指令流中再次遇到用于所确认的实际分支集合活动的相同的条件分支指令时,该跟踪信息可能对指令处理电路有用。
本文中所公开的示例包括能够检测分支单侧集合活动(SSH)和/或分支双侧集合活动(DSH)的分支集合活动检测电路。在分支SSH中,会聚点是条件分支指令的分支目标地址,如第一变体(例如,变体-0)分支SSH,或者是条件分支指令之后的下一个指令的分支落空地址,如第二变体(例如,变体-1)分支SSH。因此,为了检测分支SSH,在训练中只需要处理用于变体-0分支SSH的分支未采用路径或用于变体-1分支SSH的分支采用路径,以用于将训练中分支SSH检测为实际分支SSH。当针对训练中分支SSH不采用分支时,在假设分支集合活动是第一变体或“变体-0”分支集合活动的情况下,被用来设置潜在会聚地址的目标地址可以是来自条件分支指令的分支目标地址。这是因为针对变体-0分支集合活动的未采用分支,在到达分支目标地址之前首先处理未采用指令流路径。然而,当条件分支指令的分支被采用时,在假设分支集合活动是第二变体或“变体-1”分支集合活动的情况下,被用来设置潜在会聚地址的目标地址可以是来自条件分支指令的分支落空地址。这是因为针对变体-1分支集合活动的所采用分支,在到达分支落空地址之前首先处理所采用指令流路径。在任一情况下,作为非限制性示例,如果所设置的潜在会聚地址处的指令在返回指令或另一分支指令被处理之前到达,这意味着所设置的潜在会聚地址是条件分支指令的实际会聚点,并因此训练中分支SSH被检测为实际分支SSH。如果假设训练中分支SSH是第二变体(变体-1)分支SSH,则检测到的实际分支SSH将被检测为第二变体(变体-1)分支SSH。如果假设训练中分支SSH是第一变体(变体-0)分支SSH,则检测到的实际分支SSH将被检测为第一变体(变体-0)分支SSH。如果返回指令或另一分支指令在到达指令设置的潜在会聚地址之前被处理,则训练失败且训练中分支SSH不被标识为分支SSH。请注意,如果训练中分支SSH失败,这并不一定意味着训练中分支SSH不是实际分支SSH;这只是意味着没有足够的信息可用来将训练中分支SSH确认为实际分支SSH。
在分支DSH中,与分支SSH相反,采用路径和分支未采用路径两者包含在到达会聚点之前要处理的指令。因此,在本文中所公开的示例中,基于正在处理的条件分支指令的分支采用路径和分支未采用路径来对训练中分支DSH进行训练,以确定是否可以将训练中分支DSH检测为实际分支DSH。作为非限制性示例,如果针对训练中分支集合活动的SSH训练失败,则可以执行训练中分支DSH的训练。在该点上,分支集合活动检测电路被配置为针对来自训练中分支DSH的条件分支指令的分支采用或分支未采用路径执行训练过程。分支指令的分支目标被记录为潜在会聚地址,这是由于条件分支指令之后的指令流路径中的指令作为训练的一部分被处理。在一个示例中,一旦指令流路径中的当前指令(例如,程序计数器(PC))地址与条件分支指令的地址相匹配,或者在条件分支指令之后处理的指令的路径长度超过所定义的阈值,或者捕获到的分支目标的数目超过所定义的阈值,则针对指令流路径中处理的后续指令执行分支集合活动训练确认过程。在分支集合活动训练确认过程中,随着指令在指令流路径中被处理,分支指令的分支目标被记录为潜在会聚地址。如果指令流路径中处理的当前指令在所记录的分支目标地址列表中作为所设置的潜在会聚地址,则者意味着该指令流路径中存在会聚,并且认为训练通过。作为响应,训练中分支DSH被检测为实际分支DSH。然而,如果在分支集合活动训练确认过程期间处理的指令流路径中的后续指令在当前指令地址与条件分支指令地址相匹配之前没有所记录的目标地址的地址作为所设置的潜在会聚地址,或者在路径条件分支指令之后处理的指令的路径长度超过所定义的阈值,或者捕获到的分支目标的数目超过所定义的阈值,这意味着无法为训练中分支DSH确认会聚。在这种情况下,训练中分支DSH的训练被视为失败,并且训练中分支DSH未被检测为实际分支DSH。请注意,如果训练中分支DSH失败,这并不一定意味着训练中分支DSH不是实际分支DSH;这只是意味着没有足够的信息可用来确认训练中分支DSH是实际分支DSH。
注意,分支集合活动检测电路可以被配置为响应于条件分支指令而发起针对分支SSH和分支DSH两者的训练。可以执行训练中分支SSH和训练中分支DSH的训练过程以确定条件分支指令是实际分支SSH还是实际分支DSH的一部分。
在该点上,在一个示例性方面,提供了一种用于检测分支集合活动的分支集合活动检测电路。分支集合活动检测电路被配置为接收正在处理器中处理的指令流中的条件分支指令记录,该条件分支指令记录包括指令流中的条件分支指令的指令标识符以及条件分支指令的指令流中的分支目标地址。分支集合活动检测电路还被配置为响应于采用指示符指示未采用状态,将由条件分支指令断言的指令流中的训练中分支集合活动的潜在会聚地址设置为指令流中的分支目标地址。分支集合活动检测电路还被配置为接收指令流中的条件分支指令之后的由处理器处理的指令流中的一个或多个指令的地址。分支集合活动检测电路还被配置为确定条件分支指令之后的一个或多个经处理指令的地址是否是训练中分支集合活动的潜在会聚地址。响应于条件分支指令之后的一个或多个经处理指令的指令的地址是训练中分支集合活动的潜在会聚地址,分支集合活动检测电路还被配置为生成分支集合活动指示符,其指示训练中分支集合活动是与条件分支指令相对应的实际分支集合活动。
在另一示例性方面,提供了一种检测由在处理器中执行的指令流中的条件分支指令断言的分支集合活动的方法。该方法包括接收正在处理器中处理的指令流中的条件分支指令记录,该条件分支指令记录包括指令流中的条件分支指令的指令标识符以及条件分支指令的指令流中的分支目标地址。该方法还包括响应于采用指示符指示未采用状态,将由条件分支指令断言的指令流中的训练中分支集合活动的潜在会聚地址设置为指令流中的分支目标地址。该方法还包括接收指令流中的条件分支指令之后的由处理器处理的指令流中的一个或多个指令的地址。该方法还包括确定条件分支指令之后的一个或多个经处理指令的地址是否是训练中分支集合活动的潜在会聚地址。该方法还包括:响应于条件分支指令之后的一个或多个经处理指令的指令的地址是训练中分支集合活动的潜在会聚地址,生成分支集合活动指示符,其指示所述训练中分支集合活动是与所述条件分支指令相对应的实际分支集合活动。
在阅读与所附附图相关联的优选实施例的以下具体实施方式之后,本领域技术人员将了解本公开的范围并实现其附加方面。
附图说明
并入并形成本说明书的一部分的附图图示了本公开的若干方面,并且与描述一起解释本公开的原理。
图1A是单侧集合活动(SSH)分支的图;
图1B是分支SSH变体的图;
图2A是双侧集合活动(DSH)分支的图;
图2B是分支DSH变体的图;
图3A是用以图示会聚点是条件分支指令的分支目标地址的第一变体分支SSH的图,以说明检测第一变体分支SSH的原理;
图3B是用以图示会聚点是条件分支指令之后的分支落空地址的第二变体分支SSH的图,以说明检测第二变体分支SSH的原理;
图4A是示例性的基于处理器的系统的示图,该系统包括具有多个中央处理单元(CPU)核的处理器,每个中央处理单元(CPU)核被配置为处理从存储器提取的指令;
图4B是示例性指令处理电路的示图,其可以包括在图4A中的处理器中并包括用于处理计算机指令以用于执行的一个或多个指令流水线,其中指令处理电路包括被配置为动态地检测正在处理的指令流中的分支集合活动的分支集合活动检测电路;
图5A是示例性的分支集合活动检测电路以及分支集合活动训练器电路的示图,该分支集合活动检测电路可以被包括在图4B中的处理器中的指令处理电路中,其中该分支集合活动检测电路包括分支状态表,该分支状态表包括用于跟踪经处理指令流中的标识的训练中和实际分支集合活动的信息的多个分支状态条目,并且该分支集合活动训练器电路被配置为基于从指令流中的经处理指令接收的信息来动态地检测训练中分支集合活动是否是实际分支集合活动;
图5B是可以设置在图5A中的分支集合活动检测电路中或由其访问的示例性分支状态表电路,其跟踪经处理指令流中的所标识的训练中和实际分支集合活动的信息;
图6是图示了图4B和图5A中的分支集合活动检测电路的示例性过程的流程图,其用于接收关于在指令流中处理的条件分支指令的信息并建立要由分支集合活动训练器电路训练的训练中分支集合活动;
图7是图5A中的分支集合活动检测电路中的另一示例性分支集合活动训练器电路的示图;
图8是图示了分支集合活动训练器电路对所标识的训练中分支SSH实施动态训练过程以确定训练中分支SSH是否是实际分支SSH的示例性过程的流程图;
图9A是包括第一变体分支SSH的指令流的示例,其可以由图4B和图5A中的分支集合活动检测电路检测;
图9B是包括第二变体分支SSH的指令流的示例,其可以由图4B和图5A中的分支集合活动检测电路检测;
图10A是用以图示来自包含到达会聚点之前的指令的条件分支指令的分支采用路径和分支未采用路径两者的第一变体分支DSH的图,以说明检测第一变体分支DSH的理论;
图10B是用以图示来自包含到达会聚点之前的指令的条件分支指令的分支采用路径和分支未采用路径两者的第二变体分支DSH的图,以说明检测第二变体分支DSH的理论;
图11是图示了分支集合活动训练器电路对所标识的训练中分支DSH进行动态训练过程以确定训练中分支DSH是否是实际分支SSH的示例性过程的流程图;以及
图12是示例性的包括处理器的基于处理器的系统的框图,该处理器包括分支集合活动检测电路,包括但不限于图4B和图5A中的分支集合活动检测电路,该分支集合活动检测电路被配置为动态地检测正在处理器中处理的指令流中的分支集合活动。
具体实施方式
本文中所公开的方面包括用于在处理器中执行的指令流中的分支集合活动检测的动态集合活动分支训练。处理器被配置为执行计算机软件指令以执行操作。该处理器包括指令处理电路,该指令处理电路可以包括多个指令处理级,该多个指令处理级被配置为根据数据流执行来流水线化从指令程序提取的指令流中的指令的处理和执行。集合活动分支可以存在于指令程序中,其由指令程序中存在的条件分支指令断言。通过在指令流的运行时数据流执行中标识集合活动分支的特性,可以提高运行时处理器效率。
图3A是可以存在于由处理器处理的指令流中的第一变体分支单面集合活动(SSH)300的图。第一变体分支集合活动在本文中也被称为“变体-0”分支集合活动。因此,第一分支SSH 300在本文中也被称为“变体-0分支SSH 300”。变体-0分支SSH 300包括条件分支指令302,该条件分支指令302控制分支是在分支采用路径304中被采用还是在分支未采用路径306中不被采用。如果分支被采用,则使分支去往分支目标地址308。作为示例,使变体-0分支SSH300成为分支集合活动的原因是分支采用路径304和分支未采用路径306再会聚到包括控制独立性(CI)指令312的分支采用路径304中的再会聚点310。因此,如果根据条件分支指令302,分支未被采用,则如果在条件分支指令302之后处理的指令与条件分支指令302的分支目标地址308相匹配,则可以确认变体-0分支SSH 300是分支集合活动。
图3B是可以存在于由处理器处理的指令流中的第二变体分支SSH 314的图。第二变体分支集合活动在本文中也被称为“变体-1”分支集合活动。因此,第二分支SSH 314在本文中也被称为“变体-1分支SSH 314”。变体-1分支SSH 314包括条件分支指令316,该条件分支指令316控制分支是在分支采用路径318中被采用还是在分支未采用路径320中不被采用。如果分支未被采用,则指令处理落空到分支落空地址322处的指令。如果分支被采用,则使分支去往分支目标地址324。分支采用路径318包括去往分支未采用路径320中的再会聚点328的另一分支指令326。作为示例,使变体-1分支SSH 314成为分支集合活动的原因是分支采用路径318和分支未采用路径320再会聚到包括控制独立性(CI)指令330的分支未采用路径320中的再会聚点328。因此,如果根据条件分支指令316,分支被采用,则如果条件分支指令之后的指令是条件分支指令316的分支落空地址322,则可以确认变体-1分支SSH 314是分支集合活动。
如将在下面更详细讨论的,公开了示例性分支集合活动检测电路,其被配置为在指令流的运行时处理期间动态地检测指令流中的分支集合活动。在示例中,分支集合活动检测电路被配置为接收存在于正在指令处理电路中处理的指令流中的条件分支指令的指示(例如,条件分支指令的程序计数器(PC))。响应于条件分支指令被标识,分支集合活动检测电路开始由条件分支指令断言的潜在分支集合活动的训练过程,以确定是否存在实际分支集合活动。分支集合活动检测电路被配置为:基于根据条件分支指令的指令处理电路是否采用分支而捕获条件分支指令的分支地址来确定所标识的训练中分支集合活动是否是实际分支集合活动。目标地址被用于设置训练中分支集合活动的潜在会聚点。如果分支集合活动检测电路确定指令流中的指令在所设置的会聚点处被处理(即,到达),这意味着所设置的会聚点被确定为实际会聚点。作为响应,训练中分支集合活动被检测为实际分支集合活动。分支集合活动检测电路还可以被配置为跟踪关于在训练中分支集合活动的训练过程期间处理的指令的信息。以这种方式,当训练中分支集合活动被确认为实际分支集合活动时,可以重新使用该跟踪信息以优化处理。当在指令流中再次遇到用于所确认的实际分支集合活动的相同的条件分支指令时,该跟踪信息可能对指令处理电路有用。
在讨论被配置为在指令流的运行时处理期间动态地检测指令流中的分支集合活动的分支集合活动检测电路的示例之前,首先关于图4A和图4B讨论示例性的基于处理的系统,其包括具有一个或多个中央处理单元(CPU)核的处理器和示例性指令处理电路,该指令处理电路可以包括在一个或多个CPU核中的每一个中以处理已提取指令以用于执行。
在该点上,图4A是示例性的基于处理器的系统400的示图,该系统包括被配置为向存储器系统404发出存储器请求(即,数据读取和数据写入请求)的中央处理单元(CPU)或处理器402,存储器系统404包括高速缓存存储器系统406和主存储器408。例如,主存储器408可以是在单独的DRAM芯片中设置的动态随机存取存储器(DRAM)。处理器402包括一个或多个相应的CPU核410(1)-410(N),其中'N'是一个正整数,表示包括在处理器402中的CPU核的数目。处理器402可以被封装在集成电路(IC)芯片412中。高速缓存存储器系统406包括一个或多个高速缓存存储器414(1)-414(X),其可以在基于处理器的系统400中的不同层次结构处且逻辑上位于CPU核410(1)-410(N)与主存储器408之间,其中'X'是正整数,表示包括在处理器402中的CPU核的数目。存储器控制器416控制对主存储器408的访问。例如,作为请求设备的CPU核410(1)-410(N)可以响应于处理加载指令而发出数据请求418以读取数据。数据请求418包括要从存储器读取的数据的目标地址。以CPU核410(1)为例,如果被请求数据不在私有高速缓存存储器414(1)中(即,高速缓存未命中到高速缓存存储器414(1)),其可以被认为是一级(L1)高速缓存存储器,则在该示例中,私有高速缓存存储器414(1)通过互连总线420将数据请求418发送到与所有CPU核410(1)-410(N)共享的共享高速缓存存储器414(X),其可以是(3)级高速缓存。被请求数据最终在高速缓存存储器414(1)-414(X)或主存储器408(如果未被包含在高速缓存存储器414(1)-414(X)中的任何高速缓存存储器)中被获得。
图4B图示了在CPU核410中设置的指令处理电路422,CPU核410可以是图4A中的处理器402中的CPU核410(1)-410(N)中的任何CPU核。作为示例,指令处理电路422包括一个或多个指令流水线I0-IN,用于处理由指令提取电路426从存储在指令高速缓存存储器428或指令存储器430中的一系列指令424提取以用于执行的所提取的计算机指令424F。指令高速缓存存储器428可以作为图4A中基于处理器的系统400中的高速缓存存储器系统406中的高速缓存存储器414(1)-414(X)的一部分被设置。指令存储器430可以在图4A中的基于处理器的系统400中的主存储器408中被设置或作为其一部分设置。指令提取电路426被配置为在已提取指令424F到达执行电路434以被执行之前将已提取指令424F作为指令处理电路422中的指令流432提供到一个或多个指令流水线I0-IN中以进行预处理。跨指令处理电路422的不同处理电路或级设置指令流水线I0-IN以在可以同时执行的一系列步骤中对已提取指令424F进行预处理和处理,从而在由执行电路434执行已提取指令424F之前提高吞吐量。
继续参考图4B,指令处理电路422包括指令解码电路436,该指令解码电路436被配置为将由指令提取电路426提取的已提取指令424F解码为解码指令424D,以确定指令类型和所需的动作。解码指令424D被放置在一个或多个指令流水线I0-IN中并接下来被提供给指令处理电路422中的重命名电路438以确定是否需要对解码指令424D中的任何寄存器名称进行重命名以打破任何会阻止并行或乱序处理的寄存器依赖项。重命名电路438被配置为调用寄存器映射表(RMT)440以对逻辑源寄存器操作数进行重命名和/或将解码指令424D的目标寄存器操作数写入到物理寄存器文件(PRF)444中的可用物理寄存器442(1)-442(X)(P0,P1,…,PX)。RMT 440包含多个映射条目,每个映射条目被映射到相应的逻辑寄存器R0-RP(即,与之相关联)。映射条目被配置为以地址指针的形式存储信息以指向PRF 444中的物理寄存器442(1)-442(X)。PRF中的每个物理寄存器442(1)-442(X)444包含被配置为存储用于解码指令424D的源和/或目的地寄存器操作数的数据的数据条目。
指令处理电路422还包括寄存器访问(RACC)电路446,其被配置为基于映射到解码指令424D的源寄存器操作数的RMT 440中的逻辑寄存器R0-RP的映射条目来访问PRF 444中的物理寄存器442(1)-442(X),以从执行电路434中的已执行指令424E检索产生值。RACC电路446还被配置为提供从已执行的解码指令424E检索的产生值作为要执行的解码指令424D的源寄存器操作数。此外,在指令处理电路422中,调度器电路448被设置在指令流水线I0-IN中并且被配置为将解码指令424D存储在保留条目中,直到用于解码指令424D的所有源寄存器操作数都可用。调度器电路448向执行电路434发出准备好在执行通道L0-LK中执行的解码指令424D。在指令处理电路422中还设置写入电路450以将来自已执行指令424E的产生值写回或提交到存储器,诸如PRF 444、高速缓存存储器系统406或主存储器408。
继续参考图4B,如将在下面更详细讨论的,在该示例中,指令处理电路422还包括分支集合活动检测电路452。分支集合活动检测电路452被配置为接收关于在指令处理电路422中的指令流432中的要处理的已提取指令424F的指令信息454。例如,指令信息454可以包括已提取指令424F中的条件分支指令424F的标识。例如,指令信息454可以包括构造分支记录,其包括条件分支指令424F的指令标识符、指令流432中的分支目标地址和指令流432中的落空分支地址。例如,指令标识符可以是条件分支指令424F的程序计数器(PC)。分支集合活动检测电路452被配置为开始由条件分支指令424F断言的潜在分支集合活动作为“训练中分支集合活动”的训练过程以确定是否存在实际分支集合活动。指令信息454中的分支目标地址和落空分支地址以及关于条件分支指令424F之后的其他指令424F的信息可以用于设置训练中分支集合活动的潜在会聚点。如果分支集合活动检测电路452确定在所设置的会聚点处的指令流中的指令被处理(即,到达),这意味着所设置的会聚点被确定为实际会聚点。作为响应,训练中分支集合活动被指定为实际分支集合活动。分支集合活动检测电路452被配置为响应于接收到与先前确认的分支集合活动相匹配的指令信息454而生成分支集合活动预测器456。
图5A是示例性分支集合活动检测电路452的示图,其可以包括在图4B的处理器402中的指令处理电路422中并被配置为检测指令处理电路422的指令流432中的分支集合活动。在该示例中,分支集合活动检测电路452包括分支训练控制电路500。分支训练控制电路500包括分支集合活动控制电路502和分支集合活动训练器电路504。分支训练控制电路500被配置为从图4B中的指令处理电路422接收条件分支指令424F的指示符。例如,条件分支指令424F的指示符可以是条件分支指令424F在指令流432中的地址的程序计数器(PC)。条件分支指令424F的指示可以包含在由分支集合活动检测电路452接收的条件分支指令记录506中,其还包括条件分支指令424F的分支目标地址以及条件分支指令424F的分支落空地址。每个接收到的条件分支指令424F的指示符发起启动分支训练控制电路500以发起训练过程以检测分支集合活动是否在由条件分支指令424F断言的指令流432中。处理器可以使用对条件分支指令424F的分支集合活动的检测来优化处理,包括在稍后时间何时再次处理条件分支指令424F。例如,由分支集合活动中的指令产生的数据可以用于预测条件分支指令424F的后续接收和处理之后的指令所产生的数据。
继续参考图5A,在该示例中,为了能够跟踪关于由条件分支指令记录506中的条件分支指令424F的通知断言的潜在分支集合活动的信息,在分支训练控制电路500中的分支集合活动控制电路502发起被称为训练中分支集合活动的训练过程。换言之,最初假设指令流432中的条件分支指令424F之后的指令424F是分支集合活动。然而,分支集合活动被标识为“训练中”分支集合活动以确认指令处理电路422的动态操作中的实际分支集合活动。这是因为条件分支指令424F之后的指令424F必须被遵循以确认来自条件分支指令424F的所采用指令流路径和未采用指令流路径会聚在指令流432中的会聚地址处。为了发起针对训练中分支集合活动的训练过程,分支集合活动控制电路502被配置为将与用于分支条件指令的指示符(例如PC)相关联的分支状态条目508分配在分支状态表电路510中的多个分支状态条目508(1)-508(B)之中。如将在下面更详细讨论的,每个分支状态条目508(1)-508(B)包括可以用于在指令处理电路422处理条件分支指令424F之后的指令时跟踪和存储关于训练中分支集合活动的信息的条目。分支状态条目508(1)-508(B)不仅可以用于记录动态信息以帮助确认或不确认训练中分支集合活动是实际分支集合活动,而且分支状态条目508(1)-508(B)还可以用于记录关于在条件分支指令424F之后执行的指令424F的信息,以用于在条件分支指令424F被再次提取到指令处理电路422中时预测指令424F的未来值。关于在条件分支指令424F之后处理的指令424F的信息通过指令信息454从指令处理电路422接收,诸如从指令提取电路426接收。
继续参考图5A,分支集合活动检测电路452还包括分支集合活动训练器电路504。分支集合活动训练器电路504包括多个训练器电路512(1)-512(T)。如将在下面更详细讨论的,训练器电路512(1)-512(T)被配置为:响应于在接收到的条件分支指令记录506中接收到条件分支指令424F的指示符,对在分支状态表电路510中的分支状态条目508(1)-508(B)中分配的训练中分支集合活动执行训练过程。将训练器电路512(1)-512(T)分配给训练中分支集合活动以在训练中状态时执行训练过程。一旦训练中分支集合活动被确认为实际分支集合活动或者将训练中分支集合活动确认为实际分支集合活动的训练失败,训练器电路512(1)-512(T)就与训练中分支集合活动解除关联。如果期望的话,该架构允许训练器电路512(1)-512(T)根据需要进行关联和解除关联以节省资源,而不是必须为分支状态表电路510中的每个分支状态条目508(1)-508(B)设置专用训练器电路512(1)-512(T)。如将在下面更详细讨论的,当在训练中分支集合活动的训练期间,关联的训练器电路512(1)-512(T)使用在来自指令处理电路422的指令信息454中接收到的信息来执行训练过程并确定训练中分支集合活动是否是实际分支集合活动。作为训练过程的一部分,训练器电路512(1)-512(T)可以在分配给训练中分支集合活动的分支状态条目508(1)-508(B)中生成训练中分支集合活动数据514,其包括分支集合活动指示符515,其指示训练中分支集合活动是与条件分支指令424F相对应的实际分支集合活动。此外,训练器电路512(1)-512(T)被配置为生成作为训练中分支集合活动数据514一部分的分支集合活动指示符515,其指示训练中分支集合活动被确认为实际分支集合活动,以为训练中分支集合活动更新分支状态表电路510中的关联的分支状态条目508(1)-508(B)。当断言分支集合活动的条件分支指令424F再次被检测到时,所捕获的对分支状态表电路510中的分支状态条目508(1)-508(B)中的实际分支集合活动的确认可以作为分支集合活动预测器456提供给指令处理电路422。
图5B图示了可以设置在图5A中的分支集合活动检测电路452中或由其访问的示例性分支状态表电路510,其跟踪图4B中的指令处理电路422中经处理指令流432中的所标识的训练中和实际分支集合活动的信息。如其中所示,每个分支状态条目508(1)-508(B)包含各种可能的条目以存储关于训练中分支集合活动和作为训练过程的结果从训练中分支集合活动确认的实际分支集合活动的信息。例如,当针对条件分支指令424F的分支状态条目508(1)-508(B)被分配时,分支状态条目508(1)-508(B)中的PC条目518可以记录在条件分支指令记录506中接收到的条件分支指令424F的PC。分支状态条目508(1)-508(B)还可以包含已训练条目520以指示与由PC条目518标识的条件分支指令424F相关联的训练中分支集合活动被训练还是未被训练。分支状态条目508(1)-508(B)还可以包含SSH条目522以记录与条件分支指令424F相关联的训练中分支集合活动是否被训练器电路512(1)-512(T)确认是分支SSH。例如,逻辑状态“1”可以表示分支SSH状态,而逻辑状态“0”可以表示非分支SSH状态。分支状态条目508(1)-508(B)还可以包含DSH条目524以记录与条件分支指令424F相关联的训练中分支集合活动是否被训练器电路512(1)-512(T)确认是分支DSH。例如,逻辑状态“1”可以表示分支DSH状态,而逻辑状态“0”可以表示非分支DSH状态。分支状态条目508(1)-508(B)还可以包含变体-1条目526以记录与条件分支指令424F相关联的训练中分支集合活动是否被确认为变体-1分支集合活动或变体-0分支集合活动。例如,逻辑状态“1”可以表示变体-1,而逻辑状态“0”可以表示变体-0。分支状态条目508(1)-508(B)还可以包含路径长度条目528以作为训练中分支集合活动训练的一部分记录在由PC条目518标识并由训练器电路512(1)-512(T)处理的条件分支指令424F之后的由指令处理电路422处理的指令流路径的数目。如果在训练中分支集合活动可以被确认为实际分支之前路径长度太长,则训练器电路512(1)-512(T)可以被配置为无法将训练中分支集合活动确认为实际分支集合活动。
继续参考图5B,分支状态条目508(1)-508(B)还可以包含路径数据条目530(1)-530(D)以记录在由PC条目518标识的条件分支指令424F之后的由指令处理电路422处理的指令产生的数据。关联的训练器电路512(1)-512(T)可以接收作为指令信息454的一部分由指令产生的这个指令数据,并且提供该信息作为将被存储在关联的分支状态条目508(1)-508(B)中的训练中分支集合活动数据514的一部分。这个已存储数据可以预测由在条件分支指令424F的下一次出现之后的指令产生的数据。分支状态条目508(1)-508(B)还可以包含会聚地址条目532以记录由PC条目518标识的条件分支指令424F的潜在会聚地址,以用于确定由条件分支指令424F断言的训练中分支集合活动是否是实际分支集合活动。分支状态条目508(1)-508(B)还可以包含置信度条目534以记录置信度指示,其指示相应的分支状态条目508(1)-508(B)中的其他条目中的数据的相对置信度是有效的,包括与分支状态条目508(1)-508(B)相关联的训练中分支集合活动是否被确认为实际分支集合活动。置信度条目534可以是在针对由特定条件分支指令424F断言的训练中分支集合活动而言训练通过时提高并且在训练未通过时降低的计数器。分支状态条目508(1)-508(B)还可以包含计数条目536以记录条件分支指令424F的出现计数。如上面所讨论的,为被确认为实际分支集合活动的训练中分支集合活动所捕获的数据保留在分支状态表电路510中的其分支状态条目508(1)-508(B)中,以用于生成分支集合活动预测器456。然而,最终需要逐出分支状态条目508(1)-508(B),以便为新的训练中分支集合活动腾出空间。分支状态条目508(1)-508(B)的计数条目536可以被用于替换策略以确定哪个分支状态条目508(1)-508(B)首先被逐出(例如,最少出现首先被逐出策略)。
图6是图示了分支集合活动检测电路452的示例性过程600的流程图,更具体地,其分支集合活动控制电路502接收由图4B中的指令处理电路422提取的条件分支指令424F的通知并建立用于训练的分支状态表电路510中的分支状态条目508(1)-508(B)中的训练中分支集合活动。在该点上,如图6中所示,分支集合活动训练开始于分支集合活动控制电路502接收包括条件分支指令424F的指示符(例如,其PC)的条件分支指令记录506(块602)。分支集合活动控制电路502在分支状态表电路510中查找条件分支指令424F的指示符(块604)以确定分支状态表电路510中是否存在已经为条件分支指令424F建立的分支状态条目508(1)-508(B)(块606)。如果否,则分支集合活动控制电路502确定是否可以在分支状态表电路510中建立新的分支状态条目508(1)-508(B)(块608)。如果否,则停止针对条件分支指令424F的训练(块612)。然而,如果分支集合活动控制电路502确定可以在分支状态表电路510中建立新的分支状态条目508(1)-508(B)(块610),则分支集合活动控制电路502在分支状态表电路510中建立用于条件分支指令424F的新的分支状态条目508(1)-508(B)以创建训练中分支集合活动(块612)。如果在块606中,分支状态表电路510中存在已经为条件分支指令424F建立的分支状态条目508(1)-508(B),则条件分支指令记录506中的新信息被合并到现有的分支状态条目508(1)-508(B)中。分支集合活动控制电路502然后确定在分支集合活动训练器电路504中是否存在可用的空闲分支训练器512(1)-512(T)以训练新分支状态条目508(1)-508(B)中的训练中分支集合活动(块616)。如果是,则在分支集合活动训练器电路504中被指派的训练器电路512(1)-512(T)中发起训练中分支集合活动的分支集合活动训练(块618)。
分支集合活动控制电路502可以生成如图5A中所示的开始训练指示符538,以使训练器电路512(1)-512(T)例如基于条件分支指令424F的指示符开始关联的训练中分支集合活动的训练。作为训练过程的一部分,还可以将来自条件分支指令记录506的其他数据提供给所指派的训练器电路512(1)-512(T)以供训练中分支集合活动使用。这在图7中通过示例示出,这是另一示例性的训练器电路512,其可以是图5A中的分支集合活动训练器电路504中的训练器电路512(1)-512(T)中的任何训练器电路。如图7中所示,训练器电路512被配置为从分支集合活动控制电路502接收开始训练指示符538以开始对被指派给训练器电路512的训练中分支集合活动的训练过程。训练器电路512还被配置为在条件分支指令记录506中接收用于训练中分支集合活动的信息,包括条件分支指令424F的PC、条件分支指令424F的分支目标地址、条件分支指令424F的分支落空地址、条件分支指令424F的分支是否被指令处理电路422采用以及其他输入状态数据。
图7中的训练器电路512还被配置为接收关于由指令处理电路422处理的指令的指令信息454,包括正在处理的指令424F的当前PC,当前处理的指令是否是分支指令的指示(IS_BRANCH),当前处理的指令是否是无条件指令的指示(IS_JUMP),当前处理的指令是否是返回指令的指示(IS_RET),当前处理的指令是否是另一个条件分支指令的指示(IS_TAKEN),以及另一个条件分支指令的分支目标地址(BR_TARGET)。所有这些接收到的信息可以用于执行针对被指派给训练器电路512的训练中分支集合活动的训练过程以确定训练中分支集合活动是否可以被确认为实际分支集合活动。
如先前所讨论的,分支集合活动可以是分支SSH或分支DSH。可能期望配置训练器电路512以确认训练中分支集合活动是分支SSH还是DSH。在该点上,图8是图示了分支集合活动训练器电路504中的训练器电路512的示例性过程800的流程图,其对所标识的训练中分支集合活动实施动态训练过程以确定训练中分支集合活动是否是实际分支SSH。
参考图8,确定训练中分支集合活动是否是分支SSH的训练过程响应于开始训练指示符538的接收而开始(块802)。训练器电路512接收条件分支指令424F的PC、条件分支指令424F的分支目标地址、条件分支指令424F的分支落空地址、条件分支指令424F的分支是否被指令处理电路422采用以及来自条件分支指令记录506的其他输入状态数据(块804)。训练器电路512接收与训练中分支集合活动相关联的分支状态表电路510中的分支状态条目508(1)-508(B)中的已训练条目520中的训练状态(块804)。训练开始于训练器电路512接收由指令处理电路422处理的指令的指令信息454(块806)。接收由指令处理电路422处理的下一指令424F的指令信息454(块808)。训练器电路512确定指令处理电路422中的当前PC是否等于所设置的潜在会聚地址(RCPC)(块810)。在图8中训练过程的第一次迭代中,当前PC不等于所设置的潜在会聚地址(RCPC)。
继续参考图8,训练器电路512然后根据接收到的条件分支指令记录506确定断言训练中分支集合活动的条件分支指令424F的分支是否被采用(块812)。如果否,则这意味着可以执行训练以确定训练中分支集合活动是否是变体-0分支SSH。如前面参考图3A所讨论的,形成变体-0分支SSH的原因是分支采用路径和分支未采用路径再会聚到分支采用路径中的再会聚点。因此,如果来自针对训练中分支集合活动的条件分支指令424F的分支未被采用,则如果在条件分支指令424F之后处理的指令与条件分支指令424F的分支目标地址相匹配,则训练中分支集合活动可以被确认是变体-0分支SSH。在该点上,当条件分支指令424F未被采用时,训练器电路512将训练中分支集合活动的潜在会聚地址(RCPC)设置为条件分支指令424F的分支目标地址(BRTGT)(块814)。如果接收到的指令信息454中的当前PC将训练中分支集合活动的潜在会聚地址与分支目标地址相匹配,则这意味着潜在会聚地址被确认为训练中集合活动的会聚地址并且训练中集合活动可以被确认为分支SSH。在训练器电路512将训练中分支集合活动的潜在会聚地址设置为条件分支指令424F的分支目标地址之后(块814),针对在指令信息454中接收到的每个新指令,在分支状态表电路510中的分支状态条目508(1)-508(B)中的路径长度条目528由训练器电路512经由训练中分支集合活动数据514更新(块818)。还经由训练器电路512的训练中分支集合活动数据514在分支状态表电路510中的分支状态条目508(1)-508(B)中更新由于在条件分支指令424F之后指令处理电路422处理指令424F而来自指令信息454中接收到的数据的指令路径数据(块818)。
继续参考图8,训练器电路512确定针对训练中分支集合活动的分支状态表电路510中的分支状态条目508(1)-508(B)中的路径长度条目528中的路径长度(PL)是否大于已定义路径长度阈值,或者当前PC是否等于条件分支指令424F的PC(BRPC)(块820)。如果是,在这个示例中,则针对训练中分支集合活动的训练将失败,因为不能被确认为分支SSH(块824)。训练器电路512可以生成分支集合活动指示符515作为训练中分支集合活动数据514的一部分,该指示符指示训练中分支集合活动没有被检测为实际SSH集合活动(块824)。同样在该示例中,针对训练中分支集合活动的分支状态表电路510中的分支状态条目508(1)-508(B)中的置信度条目534的置信度由训练器电路512更新以被降低(块824)。针对训练中分支集合活动的分支状态表电路510中的分支状态条目508(1)-508(B)中的计数条目536中的计数由训练器电路512更新以增加(块824)。针对训练中分支集合活动的分支状态表电路510中的分支状态条目508(1)-508(B)中的已训练条目520中的训练状态被训练器电路512更新以被增加并被设置为未训练状态,这意味着条件分支指令424F无法被确认为断言分支集合活动。训练器电路512然后确定接收到的指令信息454中的当前指令是返回指令还是分支指令(块822)。如果是,则训练再次失败,因为分支SSH在遇到指令流432中的会聚地址之前没有遇到返回指令或分支指令。作为响应,可以执行块824中的步骤。
如果在条件分支指令424F的分支未被采用的情况下针对当前PC的训练没有失败,并且接收到的指令信息454中的当前指令不是返回指令或分支指令(块822),则该过程重复回到块808以接收针对将由指令处理电路422处理的下一指令424F的指令信息454并且处理该信息以用于训练中分支集合活动的训练。如果在块824中训练失败之前当前PC等于块810中所设置的潜在会聚点(RCPC),则训练中分支集合活动的训练将通过(块826)。训练器电路512可以生成分支集合活动指示符515作为训练中分支集合活动数据514的一部分,该指示符指示训练中分支集合活动被检测为实际分支SSH(块826)。针对训练中分支集合活动的分支状态表电路510中的分支状态条目508(1)-508(B)中的已训练条目520中的已训练状态被训练器电路512更新以被增加并被设置为已训练状态,这意味着条件分支指令424F被确认为断言分支集合活动(块826)。针对训练中分支集合活动的分支状态表电路510中的分支状态条目508(1)-508(B)中的SSH条目522由训练器电路512更新以指示条件分支指令424F被确认为断言分支SSH(块826)。针对训练中分支集合活动的分支状态表电路510中的分支状态条目508(1)-508(B)中的变体-1条目526由训练器电路512更新以指示条件分支指令424F被确认为断言变体-0分支SSH(块826)。针对训练中分支集合活动的分支状态表电路510中的分支状态条目508(1)-508(B)中的置信度条目534的置信度由训练器电路512更新以被提高(块826)。针对训练中分支集合活动的分支状态表电路510中的分支状态条目508(1)-508(B)中的计数条目536中的计数由训练器电路512更新以被增加(块826)。继续参考图8,如果在块812中,训练器电路512根据接收到的条件分支指令记录506确定断言训练中分支集合活动的条件分支指令424F的分支未被采用(块812),这意味着可以执行训练以确定训练中分支集合活动是否是变体-0分支SSH。如前面参考图3B所讨论的,形成变体-0分支SSH的原因是分支采用路径和分支未采用路径再会聚到分支未采用路径中的再会聚点。因此,如果来自针对训练中分支集合活动的条件分支指令424F的分支未被采用,则如果在条件分支指令424F之后处理的指令与条件分支指令424F的分支落空地址相匹配,则训练中分支集合活动可以被确认是变体-0分支SSH。在该点上,当条件分支指令424F被采用时,训练器电路512将训练中分支集合活动的潜在会聚地址(RCPC)设置为条件分支指令424F的分支落空地址(BRFT)(块816)。如果接收到的指令信息454中的当前PC将训练中分支集合活动的潜在会聚地址与分支目标地址相匹配,则这意味着潜在会聚地址被确认为训练中集合活动的会聚地址并且训练中集合活动可以被确认为分支SSH。在训练器电路512将训练中分支集合活动的潜在会聚地址设置为条件分支指令424F的分支落空地址之后(块816),针对在指令信息454中接收到的每个新指令,在分支状态表电路510中的分支状态条目508(1)-508(B)中的路径长度条目528由训练器电路512经由训练中分支集合活动数据514更新(块818)。还经由训练器电路512的训练中分支集合活动数据514在分支状态表电路510中的分支状态条目508(1)-508(B)中更新由于在条件分支指令424F之后指令处理电路422处理指令424F而来自指令信息454中接收到的数据的指令路径数据(块818)。
继续参考图8,训练器电路512然后确定针对训练中分支集合活动的分支状态表电路510中的分支状态条目508(1)-508(B)中的路径长度条目528中的路径长度(PL)是否大于已定义路径长度阈值,或者当前PC是否等于条件分支指令424F的PC(BRPC)(块820)。如果是,在这个示例中,则针对训练中分支集合活动的训练将失败,因为不能被确认为分支SSH(块824)。在该示例中,针对训练中分支集合活动的分支状态表电路510中的分支状态条目508(1)-508(B)中的置信度条目534的置信度由训练器电路512更新以被降低(块824)。针对训练中分支集合活动的分支状态表电路510中的分支状态条目508(1)-508(B)中的计数条目536中的计数由训练器电路512更新以被增加(块824)。针对训练中分支集合活动的分支状态表电路510中的分支状态条目508(1)-508(B)中的已训练条目520中的训练状态被训练器电路512更新以被增加并被设置为未训练状态,这意味着条件分支指令424F不能被确认为断言分支集合活动。训练器电路512然后确定接收到的指令信息454中的当前指令是返回指令还是分支指令(块822)。如果是,则训练再次失败,因为分支SSH在遇到指令流432中的会聚地址之前没有遇到返回指令或分支指令。作为响应,可以执行块824中的步骤。
如果在条件分支指令424F的分支被采用的情况下针对当前PC的训练没有失败,并且接收到的指令信息454中的当前指令不是返回指令或分支指令(块822),则该过程重复回到块808以接收由指令处理电路422处理的下一指令424F的指令信息454并且处理该信息以用于训练中分支集合活动的训练。如果在块824中训练失败之前当前PC(PC)等于块810中所设置的潜在会聚点(RCPC),则训练中分支集合活动的训练将通过(块826)。针对训练中分支集合活动的分支状态表电路510中的分支状态条目508(1)-508(B)中的已训练条目520中的训练状态被训练器电路512更新以被增加并被设置为已训练状态,这意味着条件分支指令424F被确认为断言分支集合活动。针对训练中分支集合活动的分支状态表电路510中的分支状态条目508(1)-508(B)中的SSH条目522由训练器电路512更新以指示条件分支指令424F被确认为断言分支SSH。针对训练中分支集合活动的分支状态表电路510中的分支状态条目508(1)-508(B)中的变体-1条目526由训练器电路512更新以指示条件分支指令424F被确认为断言变体-1分支SSH。
为了进一步说明分支SSH的检测,图9A是包括变体-0分支SSH的指令流900的示例,该变体-0分支SSH可以根据图6和图8中的示例性过程600和800的由图4B和图5A中的分支集合活动检测电路452检测。块902示出了指令流900的处理以检测变体-0分支SSH。如图9A中块902的904(1)所示,条件分支指令“A”作为到指令“C”(Br C)的分支将导致图5A中的分支集合活动检测电路452中的分支集合活动控制电路502在分支状态表电路510中建立新的分支状态条目508(0)-508(B),并且按照图6中的过程600指派分支集合活动训练器电路504中的训练器电路512(1)-512(T)。在904(2)中,如果作为接收到的条件分支指令记录506的一部分,通过由指令处理电路422处理条件分支指令“A”并没有采用分支,则所指派的训练器电路512(1)-512(T)在当前PC等于“A”的情况下被启动,并且将潜在会聚地址(RCPC)设置为指令“C”的分支目标地址以训练针对变体-0SSH的训练中分支集合活动(也参见图8中的块814)。然而,在904(3)中,作为接收到的条件分支指令记录506的一部分,通过由指令处理电路422处理条件分支指令“A”来采用分支,并且所指派的训练器电路512(1)-512(T)在当前PC等于“A”的情况下被启动并将潜在会聚地址(RCPC)被设置为指令“B”的分支落空地址来训练时针对变体-1SSH的训练中分支集合活动(也参见图8中的块816)。
在该示例中,假设在904(4)中路径长度(PL)的路径长度阈值被设置为八(8)。在904(5)中,所指派的训练器电路512(1)-512(T)然后接收路径长度小于一(1)的下一指令“B”的指令信息454,并且确定指令“B”的地址不是所设置的潜在会聚地址(RCPC)(也参见图8中的块818、820)。同样在904(5)中,所指派的训练器电路512(1)-512(T)确定训练中分支集合活动的路径长度(PL)小于路径长度阈值。在904(6)中,所指派的训练器电路512(1)-512(T)然后接收地址等于潜在会聚地址(RCPC)的下一指令“C”的指令信息454。因为路径长度现在是二(2)并且指令“C”的地址与所设置的潜在会聚地址(RCPC)相匹配,所以训练通过并完成,并且训练中分支集合活动被确定为实际变体-0分支SSH(参见图8中的块820、810、826)。分支状态表电路510中的分支状态条目508(0)-508(B)由训练器电路512(1)-512(T)针对已通过的训练来进行更新,如上面所讨论的(参见图8中的块826)。
图9B是包括变体-1分支SSH的指令流910的示例,该变体-1分支SSH可以根据图6和图8中的示例性过程600和800由图4B和图5A中的分支集合活动检测电路452检测。块912示出了指令流900的处理以检测变体-0分支SSH。如图9A中块912的914(1)所示,条件分支指令“A”作为到指令“C”(Br C)的分支将导致图5A中的分支集合活动检测电路452中的分支集合活动控制电路502在分支状态表电路510中建立新的分支状态条目508(0)-508(B),并且按照图6中的过程600指派分支集合活动训练器电路504中的训练器电路512(1)-512(T)。在914(2)中,如果作为接收到的条件分支指令记录506的一部分,通过由指令处理电路422处理条件分支指令“A”来采用分支,则所指派的训练器电路512(1)-512(T)在当前PC等于“A”的情况下被启动,并且将潜在会聚地址(RCPC)设置为指令“B”的分支落空地址以训练针对变体-1SSH的训练中分支集合活动(也参见图8中的块816)。然而,在914(3)中,作为接收的条件分支指令记录506的一部分,通过由指令处理电路422处理条件分支指令“A”并没有采用分支,并且所指派的训练器电路512(1)-512(T)在当前PC等于“A”的情况下被启动并将潜在会聚地址(RCPC)设置为指令“C”的分支目标地址以训练针对变体-1SSH的训练中分支集合活动(也参见图8中的块814)。
在该示例中,假设在914(4)中路径长度(PL)的路径长度阈值被设置为八(8)。在914(5)中,所指派的训练器电路512(1)-512(T)然后接收路径长度小于一(1)的下一指令“C”的指令信息454,并且确定指令“C”的地址不是所设置的潜在会聚地址(RCPC)(也参见图8中的块818、820)。同样在914(5)中,所指派的训练器电路512(1)-512(T)确定训练中分支集合活动的路径长度(PL)小于路径长度阈值。在914(6)中,所指派的训练器电路512(1)-512(T)然后接收地址不等于潜在会聚地址(RCPC)的下一指令“C”的指令信息454。在914(7)中,所指派的训练器电路512(1)-512(T)确定下一指令“B”是否等于潜在会聚地址(RCPC)。因为路径长度现在是三(3)并且指令“B”的地址与所设置的潜在会聚地址(RCPC)相匹配,所以训练通过并完成,并且训练中分支集合活动被确定为实际变体-1分支SSH(参见图8中的块820、810、826)。
即使训练中分支集合活动未能被确认为分支SSH,也可以对其进行训练以确定它是否是分支DSH。图10A是第一变体分支DSH1000的图,在本文中也被称为“变体-0分支DSH1000”。变体-0分支DSH 100可以存在于由图4B中的指令处理电路422处理的指令流432中。变体-0分支DSH 1000包括条件分支指令1002,其控制是在未采用路径1006中还是在分支采用路径1004中采用分支。如果分支被采用,则使分支去往分支目标地址1008。如果分支未被采用,指令处理落空到分支落空地址1010。使变体-0分支DSH 1000成为分支集合活动的原因是分支采用路径1004和分支未采用路径1006都包含它们相应的控制相关指令,其具有去向包括控制独立性(CI)指令1014的再会聚点1012的分支采用路径1004和分支未采用路径1006的末端。因此,必须分析分支采用路径1004和分支未采用路径1006二者以确定两条路径是否会聚到再会聚点1012。
图10B是可以存在于由图4B中的指令处理电路422处理的指令流432中的第二变体分支DSH 1016的图。第二变体分支DSH 1016在本文中也被称为“变体-1分支DSH 1016”。变体-1分支DSH 1016包括条件分支指令1018,其控制是在分支未采用路径1022中还是在分支采用路径1020中采用分支。如果分支未被采用,则指令处理落空到分支落空地址1024处的指令。如果分支被采用,则使分支去往分支目标地址1026。分支采用路径1020包括到分支未采用路径1022中的再会聚点1030的另一分支指令1028。使变体-1分支DSH 1016成为分支集合活动的原因是分支采用路径1020和分支未采用路径1022再会聚到包括控制独立性(CI)指令1032的再会聚点1030。因此,必须分析分支采用路径1020和分支未采用路径1022二者以确定两条路径是否会聚到再会聚点1030。
因此,用于检测分支DSH的训练过程可以涉及对分支采用路径和分支未采用路径两者的训练。在该点上,图11是图示了图5B中的分支集合活动训练器电路504中的训练器电路512的示例性过程1100的流程图,其对所标识的训练中分支集合活动实施动态训练过程以确定训练中分支集合活动是否是实际分支DSH。
参考图11,确定训练中分支集合活动是否是分支DSH的训练过程响应于开始训练指示符538的接收而开始(块1102)。所指派的训练器电路512接收条件分支指令424F的PC、条件分支指令424F的分支目标地址、条件分支指令424F的分支落空地址、条件分支指令424F的分支是否被指令处理电路422采用以及来自条件分支指令记录506的其他输入状态数据(块1104)。训练器电路512接收与训练中分支集合活动相关联的分支状态表电路510中的分支状态条目508(1)-508(B)中的已训练条目520中的训练状态(块1104)。针对训练过程的第一次迭代,训练中等待确认指示符被设置为不等待确认状态。所指派的训练器电路512确定针对训练中分支集合活动的采用状态指示符是否等于采用状态以及训练中等待确认指示符是否等于未等待确认状态(块1106)。如果否,则训练开始于训练器电路512接收由指令处理电路422处理的指令的指令信息454(块1108)。接收由指令处理电路422处理的下一指令424F的指令信息454(块1110)。训练器电路512确定训练中等待确认指示符是否是等待确认状态(块1112)。如果否,则由训练器电路512经由训练中分支集合活动数据514更新分支状态表电路510中的分支状态条目508(1)-508(B)中的路径长度条目528(块1114)。还经由训练器电路512的训练中分支集合活动数据514在分支状态表电路510中的分支状态条目508(1)-508(B)中更新由于在条件分支指令424F之后指令处理电路422处理指令424F而来自指令信息454中接收到的数据的指令路径数据(块1114)。作为接收到的指令信息454中的当前指令的分支指令的目标也被捕获为潜在会聚地址(块1114)。训练器电路512确定针对训练中分支集合活动的分支状态表电路510中的分支状态条目508(1)-508(B)中的路径长度条目528中的路径长度(PL)是否大于已定义路径长度阈值,或者当前PC是否等于条件分支指令424F的PC(BRPC),或者所捕获的作为潜在会聚地址的分支目标的数目是否大于已定义目标阈值(块1116),则针对训练中分支集合活动的训练将退出,因为已经在一个分支路径中进行了训练(块1118)。在该示例中,等待确认指示符被设置为等待状态(块1118)。将所捕获的分支目标作为潜在会聚地址存储在与训练中分支集合活动相关联的分支状态表电路510中的分支状态条目508(1)-508(B)中(块1118)。如果等待确认指示符先前被设置为等待状态,则训练中分支集合活动可能会失败(块1118)。
继续参考图11,如果训练器电路512确定是否针对训练中分支集合活动的分支状态表电路510中的分支状态表508(1)-508(B)中的路径长度条目528中的路径长度(PL)不大于已定义路径长度阈值,当前PC不等于条件分支指令424F的PC(BRPC),并且所捕获的作为潜在会聚地址的分支目标的数目是否不大于已定义目标阈值(块1116),则该过程由指令信息454重复以接收由指令处理电路422处理的下一指令424F(块1110)。如果在块1112中,训练器电路512确定训练中等待确认指示符是否是等待确认状态(块1112),这意味着用于条件分支指令424F的训练中分支集合活动的一个路径已经被训练并且现在训练中分支集合活动的第二条路径可以被训练以确定训练中分支集合活动是否是分支DSH。在该点上,如果训练器电路512确定训练中等待确认指示符是等待确认状态(块1112),则在分支状态表电路510中的分支状态条目508(1)-508(B)中的路径长度条目528由训练器电路512经由训练中分支集合活动数据514更新(块1119)。还经由训练器电路512的训练中分支集合活动数据514在分支状态表电路510中的分支状态条目508(1)-508(B)中更新由于在条件分支指令424F之后指令处理电路422处理指令424F而来自指令信息454中接收到的数据的指令路径数据(块1119)。作为接收到的指令信息454中的当前指令的分支指令的目标也被捕获为潜在会聚地址(块1119)。
训练器电路512确定当前PC是否被包含在所捕获的分支目标中作为潜在会聚地址(块1120)。如果否,则过程进行到块1116以处理下一指令424F。如果是,则通过并确认将训练中分支集合活动训练为分支DSH(块1122)。训练器电路512可以生成分支集合活动指示符515作为训练中分支集合活动数据514的一部分,该指示符指示训练中分支集合活动未被检测为实际分支DSH(块1122)。训练中分支集合活动的分支状态表电路510中的分支状态条目508(1)-508(B)中的已训练条目520中的训练状态被训练器电路512更新以被增加并被设置为已训练状态,这意味着条件分支指令424F被确认为断言分支集合活动(块1122)。针对训练中分支集合活动的分支状态表电路510中的分支状态条目508(1)-508(B)中的DSH条目524由训练器电路512更新以指示条件分支指令424F被确认为断言分支DSH(块1122)。在该示例中,针对训练中分支集合活动的分支状态表电路510中的分支状态条目508(1)-508(B)中的置信度条目534的置信度由训练器电路512更新以被提高(块1122)。针对训练中分支集合活动的分支状态表电路510中的分支状态条目508(1)-508(B)中的计数条目536中的计数由训练器电路512更新以被增加(块1122)。
图12是包括处理器1202(例如,微处理器)的示例性的基于处理器的系统1200的框图,处理器1202包括指令处理电路1204。作为示例,基于处理器的系统1200可以是图4A中的基于处理器的系统400。作为示例,指令处理电路1204可以是图4B中的指令处理电路422,其包括图4B和图5A中的分支集合活动检测电路452并可以执行图6、图8和图11中的分支集合活动检测过程600、800、1110。基于处理器的系统1200可以是被包括在电子板卡中的一个或多个电路,诸如印刷电路板(PCB)、服务器、个人计算机、台式计算机、膝上型计算机、个人数字助理(PDA))、计算板、移动设备或任何其他设备,并且可以表示例如服务器或用户的计算机。在该示例中,基于处理器的系统1200包括处理器1202。处理器1202表示一个或多个通用处理电路,诸如微处理器、中央处理单元等。更具体地,处理器1202可以是EDGE指令集微处理器,或者实现支持显式消费者命名的指令集的其他处理器,以用于传达由生产者指令的执行所导致的产生值。处理器1202被配置为执行指令中的处理逻辑,以用于执行本文中所讨论的操作和步骤。在该示例中,处理器1202包括指令高速缓存1208,用于指令处理电路1204可访问的指令的临时、快速访问存储器存储。通过系统总线1212从诸如主存储器1210的存储器提取或预提取的指令被存储在指令高速缓存1208中。指令处理电路1204被配置为处理被提取到指令高速缓存1208中的指令并处理指令以用于执行。处理器1202可以包括本地高速缓存存储器1214以将高速缓存的数据存储在主存储器1210中。也可以设置在本地高速缓存存储器1214和主存储器1210之间的处理器1202外部的高速缓存存储器1216以提供高速缓存存储器系统1218。
处理器1202和主存储器1210耦接到系统总线1212并可以互连包括在基于处理器的系统1200中的外围设备。众所周知,处理器1202通过经由系统总线1212交换地址、控制和数据信息与这些其他设备通信。例如,处理器1202可以将总线事务请求传送到主存储器1210中的存储器控制器1219(作为从设备的示例)。尽管图12中未图示,但是可以设置多个系统总线1212,其中每个系统总线构成不同的结构。在该示例中,存储器控制器1219被配置为向主存储器1210中的存储器阵列1220提供存储器访问请求。存储器阵列1220包括用于存储数据的存储位单元的阵列。作为非限制性示例,主存储器1210可以是只读存储器(ROM)、闪存、动态随机存取存储器(DRAM)诸如同步DRAM(SDRAM)等以及静态存储器(例如,闪存、静态随机存取存储器(SRAM)等)。
其他设备可以连接到系统总线1212。如图12中所图示,作为示例,这些设备可以包括主存储器1210、一个或多个输入设备1222、一个或多个输出设备1224、调制解调器1226和一个或多个显示控制器1228。(多个)输入设备1222可以包括任何类型的输入设备,包括但不限于输入键、开关、语音处理器等。(多个)输出设备1224可以包括任何类型的输出设备,包括但不限于音频、视频、其他视觉指示器等。调制解调器1226可以是被配置为允许交换去往和来自网络1230的数据的任何设备。网络1230可以是任何类型的网络,包括但不限于有线或无线网络、专用或公共网络、局域网(LAN)、无线局域网(WLAN)、广域网(WAN)、BLUETOOTHTM网络和互联网。调制解调器1226可以被配置为支持任何类型的所需通信协议。处理器1202还可以被配置为通过系统总线1212访问(多个)显示控制器1228以控制发送到一个或多个显示器1232的信息。(多个)显示器1232可以包括任何类型的显示器,包括但不限于阴极射线管(CRT)、液晶显示器(LCD)、等离子显示器等。
图12中的基于处理器的系统1200可以包括一组指令1234,其将由处理器1202针对根据指令所期望的任何应用来执行。指令1234可以被存储在主存储器1210、处理器1202和/或指令高速缓存1208中,作为非暂时性计算机可读介质1236的示例。指令1234也可以完全或至少部分地驻留在主存储器中存储器1210内和/或在它们的执行期间驻留在处理器1202内。指令1234还可以经由调制解调器1226在网络1230上被传输或接收,因此网络1230包括计算机可读介质1236。
虽然计算机可读介质1236在示例性实施例中被示为单个介质,但是术语“计算机可读介质”应被理解为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库、和/或关联的高速缓存和服务器)。术语“计算机可读介质”还应被理解为包括能够存储、编码或承载一组指令以供处理设备执行并且使处理设备执行本文中所公开的实施例的任何一个或多个方法的任何介质。因此,术语“计算机可读介质”应包括但不限于固态存储器、光介质和磁介质。
本文中所公开的实施例包括各种步骤。本文所公开的实施例的步骤可以由硬件组件形成,或者可以被体现在机器可执行指令中,机器可执行指令可以用于使利用指令编程的通用或专用处理器执行这些步骤。备选地,可以通过硬件和软件的组合来执行这些步骤。
本文所公开的实施例可以作为计算机程序产品或软件提供,其可以包括其上存储有指令的机器可读介质(或计算机可读介质),该指令可以用于对计算机系统(或其他电子设备)进行编程以执行根据本文中所公开的实施例的过程。机器可读介质包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制。例如,机器可读介质包括:机器可读存储介质(例如,ROM、随机存取存储器(“RAM”)、磁盘存储介质、光存储介质、闪存设备等)等等。
除非另有明确说明并且从前面的讨论中显而易见,否则应当了解,在整个描述中,利用诸如“处理”、“计算”、“确定”、“显示”等术语的讨论是指计算机系统或类似电子计算设备的操作和过程,其操纵并变换以计算机系统的寄存器内的物理(电子)量表示的数据和存储器,并且将其变换为类似地表示为计算机系统存储器或寄存器或其他此类信息存储、传输或显示设备内的物理量的其他数据。
本文所提出的算法和显示与任何特定计算机或其他装置并不内在相关。根据本文的教导,各种系统可以与程序一起使用,或者可以证明构造更专业的设备来执行所需的方法步骤是方便的。各种这些系统所需的结构将从上面的描述中显现。此外,本文所描述的实施例没有参考任何特定的编程语言来描述。应当了解,可以使用多种编程语言来实现本文所描述的实施例的教导。
本领域技术人员将进一步了解,结合本文中所公开的实施例描述的各种说明性逻辑块、模块、电路和算法可以被实现为电子硬件、存储在存储器中或另一计算机可读介质中并由处理器或其他处理设备执行的指令或两者的组合。作为示例,本文所描述的分布式天线系统的组件可以被用于任何电路、硬件组件、集成电路(IC)或IC芯片中。本文中所公开的存储器可以是任何类型和大小的存储器,并且可以被配置为存储所期望的任何类型的信息。为了清楚地说明这种可互换性,各种说明性组件、块、模块、电路和步骤已在上面大体上根据它们的功能性进行了描述。如何实现这种功能性取决于特定应用、设计选择和/或施加在整个系统上的设计约束。熟练的技术人员可以针对每个特定应用以不同的方式实现所描述的功能性,但是这样的实现决策不应被解释为导致偏离本实施例的范围。
结合本文中所公开的实施例而描述的各种说明性逻辑块、模块和电路可以用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑器件、分立门或晶体管逻辑、分立硬件组件或被设计用于执行本文所述的功能的其任何组合来实现和执行。此外,控制器可以是处理器。处理器可以是微处理器,但在备选方案中,处理器可以是任何常规的处理器、控制器、微控制器或状态机。处理器还可以被实现为计算设备的组合(例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器与DSP核结合,或者任何其他此类配置)。
本文中所公开的实施例可以以硬件和以存储在硬件中的指令来体现,并且可以驻留在例如RAM、闪存、ROM、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可移动磁盘、CD-ROM或本领域已知的任何其他形式的计算机可读介质中。示例性存储介质耦接到处理器,以使得处理器可以从存储介质读取信息和将信息写入到存储介质。在备选方案中,存储介质可以被集成到处理器中。处理器和存储介质可以驻留在ASIC中。ASIC可以驻留在远程站中。在备选方案中,处理器和存储介质可以作为分立组件驻留在远程站、基站或服务器中。
还应注意,本文中的示例性实施例中的任何示例性实施例中所描述的操作步骤被描述以提供示例和讨论。所描述的操作可以以除了所图示的顺序之外的许多不同顺序来执行。此外,在单个操作步骤中描述的操作实际上可以在多个不同的步骤中被执行。此外,可以组合在示例性实施例中讨论的一个或多个操作步骤。本领域技术人员还将理解,可以使用多种技术和科技中的任何一种技术和科技来表示信息和信号。例如,在以上整个描述中可以作为参考的数据、指令、命令、信息、信号、位、符号和芯片可以由电压、电流、电磁波、磁场或粒子、光场或粒子或其任意组合来表示。
除非另有明确说明,否则本文中所阐述的任何方法绝不旨在被解释为要求其步骤以特定顺序执行。因此,如果方法权利要求实际上并未记载其步骤所遵循的顺序,或者在权利要求或描述中没有另外具体陈述这些步骤将被限制为特定顺序,则绝不旨在推断任何特定顺序。
对本领域技术人员来说显而易见的是,在不脱离本发明的精神或范围的情况下可以进行各种修改和变化。由于本领域技术人员可以想到结合本发明的精神和实质的所公开的实施例的修改、组合、子组合和变化,因此本发明应被解释为包括在所附权利要求及其等价物的范围内的所有内容。

Claims (15)

1.一种用于检测分支集合活动的分支集合活动检测电路,所述分支集合活动检测电路被配置为:
接收正在处理器中处理的指令流中的条件分支指令记录,所述条件分支指令记录包括所述指令流中的条件分支指令的指令标识符以及针对所述条件分支指令的所述指令流中的分支目标地址;
响应于所采用指示符指示未采用状态,将由所述条件分支指令断言的所述指令流中的针对训练中分支集合活动的潜在会聚地址设置为所述指令流中的分支目标地址;
接收所述指令流中的所述条件分支指令之后的由所述处理器处理的所述指令流中的一个或多个指令的地址;
确定所述条件分支指令之后的所述一个或多个经处理指令的地址是否是针对所述训练中分支集合活动的所述潜在会聚地址;以及
响应于所述条件分支指令之后的所述一个或多个经处理指令的指令的所述地址是针对所述训练中分支集合活动的所述潜在会聚地址:
生成分支集合活动指示符,所述分支集合活动指示符指示所述训练中分支集合活动是与所述条件分支指令相对应的实际分支集合活动。
2.根据权利要求1所述的分支集合活动检测电路,还被配置为:响应于接收到所述条件分支指令记录,在包括多个分支状态条目的分支状态表电路中为与所述分支条件指令相关联的所述训练中分支集合活动分配分支状态条目。
3.根据权利要求2所述的分支集合活动检测电路,其中所述分支状态表电路中的每个分支状态条目包括至少一个路径数据条目;以及
所述分支集合活动检测电路还被配置为将通过对一个或多个指令的处理而产生的指令数据存储在与所述训练中分支集合活动相关联的所述分支状态表电路中的所述分支状态条目中的所述至少一个路径数据条目的路径数据条目中。
4.根据权利要求2所述的分支集合活动检测电路,其中所述分支状态表电路中的每个分支状态条目包括训练路径长度条目;以及
所述分支集合活动检测电路还被配置为:响应于来自所述指令流中的所述条件分支指令之后的由所述处理器处理的所述指令流中的所述一个或多个指令中的每个指令,更新与所述训练中分支集合活动相关联的所述分支状态表电路中的所述分支状态条目中的所述训练路径长度条目中的针对所述训练中分支集合活动的训练路径长度。
5.根据权利要求4所述的分支集合活动检测电路,还被配置为确定所述分支状态表电路中的相关联的分支状态条目中的针对所述训练中分支集合活动的所述训练路径长度是否超过所定义的路径长度阈值;以及
响应于针对所述训练中分支集合活动的所述训练路径长度超过所定义的所述路径长度阈值,在所述条件分支指令之后的所述一个或多个经处理指令的指令的所述地址之前是针对所述训练中分支集合活动的所述潜在会聚地址:
生成所述分支集合活动指示符,所述分支集合活动指示符将所述训练中分支集合活动指示为与所述条件分支指令相对应的失败分支集合活动。
6.根据权利要求2所述的分支集合活动检测电路,其中所述分支状态表电路中的每个分支状态条目包括置信度条目;以及
所述分支集合活动检测电路还被配置为:响应于指示所述训练中分支集合活动是实际分支集合活动的针对所述训练中分支集合活动的所述分支集合活动指示符的生成,提高与所述训练中分支集合活动相关联的所述分支状态表电路中的所述分支状态条目中的所述置信度条目中的针对所述训练中分支集合活动的所述置信度条目中的置信度状态。
7.根据权利要求6所述的分支集合活动检测电路,还被配置为:响应于指示所述训练中分支集合活动作为所述失败分支集合活动的针对所述训练中分支集合活动的所述分支集合活动指示符的生成,降低与所述训练中分支集合活动相关联的所述分支状态表电路中的所述分支状态条目中的所述训练路径长度条目中的针对所述训练中分支集合活动的所述置信度条目中的置信度状态。
8.根据权利要求1所述的分支集合活动检测电路,其中所述条件分支指令记录还包括针对所述条件分支指令的所述指令流中的分支落空地址;
所述分支集合活动检测电路还被配置为:在确定所述条件分支指令之后的所述一个或多个经处理指令的所述地址是否是针对所述训练中分支集合活动的所述潜在会聚地址之前,响应于所述所采用指示符指示所采用状态,将针对与所述条件分支指令相对应的所述训练中分支集合活动的所述潜在会聚地址设置为所述条件分支指令的所述分支落空地址;以及
所述分支集合活动检测电路还被配置为:响应于所述条件分支指令之后的所述一个或多个经处理指令的指令的所述地址是针对所述训练中分支集合活动的所述潜在会聚地址:
生成指示所述训练中分支集合活动是与所述条件分支指令相对应的实际分支单侧集合活动(SSH)的所述分支集合活动指示符。
9.根据权利要求8所述的分支集合活动检测电路,还被配置为:响应于所述条件分支指令之后的所述一个或多个经处理指令的所述指令的所述地址是所述条件分支指令之后的所述一个或多个经处理指令的所述指令的所述地址之前的返回指令或分支指令,是针对所述训练中分支集合活动的所述潜在会聚地址:
生成指示训练中分支集合活动是与所述条件分支指令相对应的失败分支SSH的所述分支集合活动指示符。
10.根据权利要求8所述的分支集合活动检测电路,被配置为:响应于所述条件分支指令之后的所述一个或多个经处理指令的指令的所述地址是针对包括所述条件分支指令的所述分支目标地址的所述训练中分支集合活动的所述潜在会聚地址,将所述训练中分支集合活动指定为与所述条件分支指令相对应的实际第一(变体-0)分支单侧集合活动(SSH)。
11.根据权利要求8所述的分支集合活动检测电路,被配置为:响应于所述条件分支指令之后的所述一个或多个经处理指令的所述指令的所述地址是包括所述条件分支指令的所述分支落空地址的针对所述训练中分支集合活动的所述潜在会聚地址,将所述训练中分支集合活动指定为与所述条件分支指令相对应的实际第二(变体-1)分支单侧集合活动(SSH)。
12.根据权利要求1所述的分支集合活动检测电路,被配置为:
在所述条件分支指令的第一分支指令流路径中接收所述指令流中的所述条件分支指令之后的由所述处理器处理的所述指令流中的一个或多个指令的所述地址;
所述分支集合活动检测电路还被配置为:
将训练中等待确认指示符设置为不等待确认状态;
记录针对所述训练中分支集合活动的所述第一分支指令流路径中的由所述处理器处理的至少一个分支指令的至少一个第一分支目标地址;
接收正在所述处理器中处理的所述指令流中的第二条件分支指令记录,所述第二条件分支指令记录包括所述指令流中的第二条件分支指令的第二指令标识符以及针对所述第二条件分支指令的所述指令流中的第二分支目标地址;
确定所述第二条件分支指令是否与所述训练中分支集合活动的所述第一条件分支指令相匹配;以及
响应于所述第二条件分支指令与所述训练中分支集合活动的所述第一条件分支指令相匹配:
在不是所述第一分支指令流路径的所述条件分支指令的第二分支指令流路径中接收所述指令流中的所述条件分支指令之后的由所述处理器处理的所述指令流中的一个或多个指令的第二地址;
确定针对所述训练中分支集合活动的所述训练中等待确认指示符是否是等待确认状态;以及
响应于所述训练中等待确认指示符是所述等待确认状态:
记录针对所述训练中分支集合活动的所述第二分支指令流路径中的由所述处理器处理的至少一个分支指令的至少一个第二分支目标地址;
确定所述第二分支指令流路径中的所述指令流中的所述条件分支指令之后的所述一个或多个经处理指令的所述第二地址是否与所记录的所述至少一个第一分支目标地址和所记录的所述至少一个第二分支目标地址之中的分支目标地址相匹配;以及
响应于所述第二地址与所记录的所述至少一个第一分支目标地址和所记录的所述至少一个第二分支目标地址之中的所述分支目标地址相匹配,生成所述分支集合活动指示符,所述分支集合活动指示符指示所述训练中分支集合活动是与所述条件分支指令相对应的实际分支双侧集合活动(DSH)。
13.根据权利要求12所述的分支集合活动检测电路,还被配置为:响应于所述第二地址与所记录的所述至少一个第一分支目标地址和所记录的所述至少一个第二分支目标地址之中的所述分支目标地址不匹配:
确定所述条件分支指令之后的所述一个或多个经处理指令的所述指令的地址是否与所述分支目标地址相匹配;以及
响应于确定所述条件分支指令之后的所述一个或多个经处理指令的所述指令的所述地址与所述分支目标地址不匹配:
在所述第二分支指令流路径中接收所述指令流中的所述条件分支指令之后的由所述处理器处理的所述指令流中的一个或多个指令的另一第二地址;以及
确定针对所述训练中分支集合活动的所述训练中等待确认指示符是否是所述等待确认状态。
14.根据权利要求13所述的分支集合活动检测电路,还被配置为响应于:确定所述条件分支指令之后的所述一个或多个经处理指令的所述指令的所述地址与所述分支目标地址相匹配:
将训练中等待确认指示符设置为所述等待确认状态。
15.一种检测由在处理器中执行的指令流中的条件分支指令断言的分支集合活动的方法,包括:
接收正在处理器中处理的指令流中的条件分支指令记录,所述条件分支指令记录包括所述指令流中的条件分支指令的指令标识符以及针对所述条件分支指令的所述指令流中的分支目标地址;
响应于所采用指示符指示未采用状态,将由所述条件分支指令断言的所述指令流中的针对训练中分支集合活动的潜在会聚地址设置为所述指令流中的分支目标地址;
接收所述指令流中的所述条件分支指令之后的由所述处理器处理的所述指令流中的一个或多个指令的地址;
确定所述条件分支指令之后的一个或多个经处理指令的地址是否是针对所述训练中分支集合活动的所述潜在会聚地址;以及
响应于所述条件分支指令之后的所述一个或多个经处理指令的指令的所述地址是针对所述训练中分支集合活动的所述潜在会聚地址,生成分支集合活动指示符,所述分支集合活动指示符指示所述训练中分支集合活动是与所述条件分支指令相对应的实际分支集合活动。
CN202080066218.0A 2019-09-20 2020-06-20 用于在处理器中执行的指令流中的分支集合活动检测的动态集合活动分支训练 Pending CN114430821A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/577,264 2019-09-20
US16/577,264 US11269642B2 (en) 2019-09-20 2019-09-20 Dynamic hammock branch training for branch hammock detection in an instruction stream executing in a processor
PCT/US2020/038852 WO2021055056A1 (en) 2019-09-20 2020-06-20 Dynamic hammock branch training for branch hammock detection in an instruction stream executing in a processor

Publications (1)

Publication Number Publication Date
CN114430821A true CN114430821A (zh) 2022-05-03

Family

ID=71575816

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080066218.0A Pending CN114430821A (zh) 2019-09-20 2020-06-20 用于在处理器中执行的指令流中的分支集合活动检测的动态集合活动分支训练

Country Status (5)

Country Link
US (1) US11269642B2 (zh)
EP (1) EP4031964A1 (zh)
KR (1) KR20220061232A (zh)
CN (1) CN114430821A (zh)
WO (1) WO2021055056A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11494191B1 (en) * 2021-05-18 2022-11-08 Microsoft Technology Licensing, Llc Tracking exact convergence to guide the recovery process in response to a mispredicted branch

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5093778A (en) * 1990-02-26 1992-03-03 Nexgen Microsystems Integrated single structure branch prediction cache
US7363477B2 (en) * 2003-12-03 2008-04-22 Intel Corporation Method and apparatus to reduce misprediction penalty by exploiting exact convergence
US20050216714A1 (en) * 2004-03-25 2005-09-29 Intel Corporation Method and apparatus for predicting confidence and value
US7685411B2 (en) 2005-04-11 2010-03-23 Qualcomm Incorporated Multi-mode instruction memory unit
US7487340B2 (en) 2006-06-08 2009-02-03 International Business Machines Corporation Local and global branch prediction information storage
US20100262813A1 (en) 2009-04-14 2010-10-14 International Business Machines Corporation Detecting and Handling Short Forward Branch Conversion Candidates
US8959320B2 (en) 2011-12-07 2015-02-17 Apple Inc. Preventing update training of first predictor with mismatching second predictor for branch instructions with alternating pattern hysteresis
US9557999B2 (en) 2012-06-15 2017-01-31 Apple Inc. Loop buffer learning
US10209992B2 (en) 2014-04-25 2019-02-19 Avago Technologies International Sales Pte. Limited System and method for branch prediction using two branch history tables and presetting a global branch history register
CN105511838B (zh) 2014-09-29 2018-06-29 上海兆芯集成电路有限公司 处理器及其执行方法
US10372459B2 (en) 2017-09-21 2019-08-06 Qualcomm Incorporated Training and utilization of neural branch predictor
US11126714B2 (en) 2017-11-29 2021-09-21 Arm Limited Encoding of input to storage circuitry
US11645078B2 (en) * 2019-07-19 2023-05-09 Intel Corporation Detecting a dynamic control flow re-convergence point for conditional branches in hardware

Also Published As

Publication number Publication date
EP4031964A1 (en) 2022-07-27
WO2021055056A1 (en) 2021-03-25
US11269642B2 (en) 2022-03-08
US20210089313A1 (en) 2021-03-25
KR20220061232A (ko) 2022-05-12

Similar Documents

Publication Publication Date Title
US11023243B2 (en) Latency-based instruction reservation station clustering in a scheduler circuit in a processor
US20170039144A1 (en) Loading data using sub-thread information in a processor
CN106991073B (zh) 用于向量运算的数据读写调度器及保留站
US11068273B2 (en) Swapping and restoring context-specific branch predictor states on context switches in a processor
CN114008587A (zh) 在处理器中的推测性错误预测恢复中限制基于负载的控制无关(ci)指令的重放
US11726787B2 (en) Reusing fetched, flushed instructions after an instruction pipeline flush in response to a hazard in a processor to reduce instruction re-fetching
US11061824B2 (en) Deferring cache state updates in a non-speculative cache memory in a processor-based system in response to a speculative data request until the speculative data request becomes non-speculative
CN114430821A (zh) 用于在处理器中执行的指令流中的分支集合活动检测的动态集合活动分支训练
US20210089312A1 (en) Tracking and communication of direct/indirect source dependencies of producer instructions executed in a processor to source dependent consumer instructions to facilitate processor optimizations
US10956162B2 (en) Operand-based reach explicit dataflow processors, and related methods and computer-readable media
US11074077B1 (en) Reusing executed, flushed instructions after an instruction pipeline flush in response to a hazard in a processor to reduce instruction re-execution
US11392410B2 (en) Operand pool instruction reservation clustering in a scheduler circuit in a processor
US11093401B2 (en) Hazard prediction for a group of memory access instructions using a buffer associated with branch prediction
US11803389B2 (en) Reach matrix scheduler circuit for scheduling instructions to be executed in a processor
US11327763B2 (en) Opportunistic consumer instruction steering based on producer instruction value prediction in a multi-cluster processor
US20230418615A1 (en) Providing extended branch target buffer (btb) entries for storing trunk branch metadata and leaf branch metadata

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