CN107209662B - 指令的相依性预测 - Google Patents

指令的相依性预测 Download PDF

Info

Publication number
CN107209662B
CN107209662B CN201580049604.8A CN201580049604A CN107209662B CN 107209662 B CN107209662 B CN 107209662B CN 201580049604 A CN201580049604 A CN 201580049604A CN 107209662 B CN107209662 B CN 107209662B
Authority
CN
China
Prior art keywords
instruction
conditionality
dependency
branch
instructions
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.)
Expired - Fee Related
Application number
CN201580049604.8A
Other languages
English (en)
Other versions
CN107209662A (zh
Inventor
布莱恩·迈克尔·斯坦普尔
詹姆斯·诺里斯·迪芬德尔费尔
迈克尔·斯科特·麦克勒瓦伊内
梅林达·乔伊丝·布朗
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.)
Qualcomm Inc
Original Assignee
Qualcomm 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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN107209662A publication Critical patent/CN107209662A/zh
Application granted granted Critical
Publication of CN107209662B publication Critical patent/CN107209662B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length 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
    • 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
    • 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
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

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

用于相依性预测的系统和方法包含:执行处理器的指令管线中的指令;以及检测条件性强加控制指令,例如如果‑那么IT指令,其对一或多个相依指令的条件性块大小强加相依行为。在执行第一指令之前,基于所述条件性块大小以及所述指令管线的一个或多个参数,做出相依性预测来确定所述第一指令是否为所述条件性强加控制指令的相依指令。基于所述相依性预测来执行所述第一指令。当所述第一指令被相依性误预测时,减轻相关联的相依性误预测惩罚。如果所述第一指令是分支指令,那么所述减轻涉及训练分支预测跟踪机制来正确地相依性预测所述第一指令的将来出现。

Description

指令的相依性预测
技术领域
所揭示的方面涉及在指令管线中执行的指令的相依性预测。更明确地说,一些方面是针对预测一或多个指令是否为条件性强加控制指令的相依指令,且在相依性的不正确预测的情况下,减轻相关联的惩罚。
背景技术
指令的条件性执行是处理系统的常规特征。实例是条件性指令,例如条件性分支指令,其中条件性分支指令所采用的方向可取决于条件如何解决。举例来说,条件性分支指令可表示为“if<condition1>jump1”,其中,如果条件1评估为真,那么指令执行的操作流跳到jump1标记所指定的目标地址(此情形还可被称作正“采用”分支指令(jump1))。另一方面,如果条件1评估为假,那么在所述条件性分支指令之后,操作流可继续执行下一循序指令,而不跳到目标地址。(此情形也被称作不采用所述分支指令,或“不被采用”)。在某些指令集架构(ISA)下,不同于分支指令的指令可为条件性的,其中所述指令的行为将取决于相关条件。
一般来说,其中将解决条件性指令的条件的方式将是未知的,直到所述条件性指令被执行为止。等待直到所述条件性指令被执行来确定条件为止可在经配置以用于并行和乱序执行的现代处理器中强加非所要的延迟。在条件性分支指令的情况下,所述延迟特别具有破坏性,因为其中分支指令得到解决的方向将决定跟随所述分支指令的指令操作流。
为了改进指令级并行度(ILP)且最小化延迟,现代处理器可包含在条件性指令的执行之前预测条件性指令的条件的解决方案的机制。举例来说,实施分支预测机制来预测在执行条件性分支指令之前,将采用还是不采用所述条件性分支指令的方向。如果预测结果是错误的,那么将冲洗基于不正确的预测不当执行的指令。这导致被称为分支误预测惩罚的惩罚。如果预测结果是正确的,那么不会遇到分支误预测惩罚。
分支预测机制可为静态或动态的。分支预测本身将等待时间添加到管线,另外被称为分支预测惩罚。当从指令高速缓冲存储器取指令并在指令管线中处理时,分支预测机制必须确定所取的指令是否为条件性指令,以及其是否为分支指令,且接着对条件性分支指令的可能方向做出预测。最小化与指令执行管线中的分支预测过程有关的暂停或气泡是合乎需要的。因此,分支预测机制力求在指令管线中尽可能早地做出预测。有时,与分支指令有关的预解码位或元数据存储在指令高速缓冲存储器中,这实现了分支预测的加速。此类预解码位可包含关于分支类型的信息(例如因为其涉及程序计数器(PC)值、其是直接还是间接分支,其是否是来自子例程的返回等)。预解码位还可包含关于分支指令的条件性的信息。
虽然针对条件性指令存在以上预测机制,例如条件性在条件性指令本身内提供的条件性分支指令,但存在另一类较难预测的指令。此类包含行为由条件性强加控制指令控制的一或多个相依指令的块。举例来说,一些处理器ISA包含所谓的如果-那么(IT)类指令。IT指令通过对一或多个相依指令强加条件性来控制一或多个相依指令的IT块的行为。IT块中的相依指令跟随IT控制指令。更具体地说,IT控制指令可具有“如果”条件,基于其解决方案,确定一或多个相依“那么”指令的行为。以此方式,IT指令的使用使得有可能控制一或多个相依指令的块的行为。举例来说,“ITTTT”块可包含具有条件DE“如果”指令,接着是四个“那么”指令,其行为取决于条件性强加“如果”控制指令如何评估。以此方式,可针对其中一或多个指令的块取决于相同条件的情况实现编程效率。
这些相依指令难以使用针对常规条件性指令的上述预测机制来预测,因为相依指令的行为由条件性强加控制指令控制。如果构成相依指令的相同指令前面不是条件性强加控制指令,那么其行为是非条件性的。因此,相依指令的可能行为无法存储在相依指令本身的预解码位中。换句话说,例如作为非条件性分支指令的相依指令的可能行为的预测是困难的,因为所述分支指令本身是非条件性的,且应始终预测为“采用”。然而,分支指令的实际方向取决于条件性强加控制指令,且因此,分支指令的行为可有效地为“采用”或“不采用”。
此外,有时,不可能事先知晓特定指令是否为条件性强加控制指令的相依指令。这是因为含有条件性强加控制指令和对应相依指令的代码块可跨越指令存储器中的高速缓冲存储线边界。此外,条件性强加控制指令可以许多类型出现,并基于条件性强加控制指令的块大小(即,代码块中的一或多个相依指令的数目)而影响相依指令的不同数目。支持ARM架构的ISA例如包含被称为THUMB指令的一类指令。THUMB指令可为32位或16位。由于THUMB指令以多个指令长度出现,因此不可能知晓何时处理条件性强加控制指令(例如IT指令),对应的相依指令是否将包含在相同高速缓冲存储线内,因为IT指令的代码块中的字节的数目将取决于每一相依指令的长度。
处置此类相依指令的执行的常规方法趋向于低效、复杂且费时。常规方法通过降低处理器的执行频率以便允许充分的时间来从条件性强加控制指令确定相依指令的条件性来操作。或者,常规方法引入管线暂停,以便在执行相依指令之前解决条件,或将条件性的解决方案移到后续管线级,从而增加分支预测惩罚。因此,本领域中需要避免常规方法的前述缺点。
发明内容
本发明的示范性方面是针对用于执行处理器的指令管线中的指令的系统和方法。
举例来说,示范性方面是针对一种用于执行处理器的指令管线中的指令的方法,其中所述方法包括:检测条件性强加控制指令,其对一或多个相依指令的条件性块大小数目强加相依行为。在执行第一指令之前,所述方法包含:基于条件性块大小以及指令管线的一个或多个参数,相依性预测第一指令是条件性强加控制指令的相依指令;以及基于所述相依性预测来执行所述第一指令。当第一指令被相依性误预测时,减轻与相依性误预测相关联的惩罚。
另一示范性方面是针对处理系统,其包括处理器,所述处理器经配置以执行指令管线中的指令。所述处理系统包含相依性预测逻辑,其经配置以:检测条件性强加控制指令,其对一或多个相依指令的条件性块大小数目强加相依行为;以及在执行第一指令之前,基于所述条件性块大小以及指令管线的一个或多个参数,相依性预测所述第一指令是条件性强加控制指令的相依指令。所述处理器经配置以基于所述相依性预测来执行所述第一指令。所述处理系统进一步包含经配置以在第一指令被相依性误预测时减轻与相依性误预测相关联的惩罚的逻辑。
另一示范性方面是针对处理系统,其包括:用于执行指令管线中的指令的装置;用于检测对一或多个相依指令的条件性块大小数目强加相依行为的条件性强加控制指令的的装置;用于在执行第一指令之前,基于所述条件性块大小以及所述指令管线的一个或多个参数,相依性预测所述第一指令是条件性强加控制指令的相依指令的装置,其中所述用于执行指令管线中的指令的装置包括:用于基于相依性预测来执行第一指令的装置;以及用于在所述第一指令被相依性误预测时,减轻与相依性误预测相关联的惩罚的装置。
另一示范性方面是针对包括代码的非暂时性计算机可读存储媒体,所述代码在由处理器执行时,致使所述处理器实施操作来执行处理器的指令管线中的指令,所述非暂时性计算机可读存储媒体包括:用于检测对一或多个相依指令的条件性块大小数目强加相依行为的条件性强加控制指令的代码;用于在执行第一指令之前,基于所述条件性块大小以及所述指令管线的一个或多个参数,相依性预测所述第一指令是条件性强加控制指令的相依指令的代码;用于基于所述相依性预测来执行所述第一指令的代码;以及用于在第一指令被相依性误预测时,减轻与相依性误预测相关联的惩罚的代码。
附图说明
呈现附图来辅助描述本发明的方面,且仅仅为了说明而非限制所述方面而提供附图。
图1说明根据所揭示的方面的经配置以用于相依性预测的处理系统的示意图。
图2A到2B说明关于指令大小和相依性预测规则的示范性表。
图3说明根据示范性方面的相依性预测方法的操作流。
图4说明本发明的一方面可有利地用于其中的示范性无线装置400。
具体实施方式
在以下针对本发明的特定方面的描述和相关图式中揭示本发明的方面。可在不脱离本发明的范围的情况下设计替代方面。另外,将不会详细描述或将省略本发明的众所周知的元件以免混淆本发明的相关细节。
词语“示范性”在本文中用于表示“充当实例、例子或说明”。本文中描述为“示范性”的任何方面未必理解为比其它方面优选或有利。同样,术语“本发明的方面”并不要求本发明的所有方面都包含所论述的特征、优点或操作模式。
本文中所使用的术语仅出于描述特定方面的目的,且无意限制本发明的方面。如本文所使用,单数形式“一”和“所述”意在还包括复数形式,除非上下文另外清楚地指示。应进一步理解,术语“包括(comprises、comprising)”和/或“包含(includes、including)”当在本文中使用时指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但并不排除一或多个其它特征、整数、步骤、操作、元件、组件和/或其群组的存在或添加。
另外,依据将由(例如)计算装置的元件执行的动作的序列来描述许多方面。将认识到,本文中所描述的各种动作可由特定电路(例如,专用集成电路(ASIC))、由正由一或多个处理器执行的程序指令或由所述两者的组合来执行。另外,可认为本文中所述的这些动作序列完全体现于任何形式的计算机可读存储媒体内,所述计算机可读存储媒体中存储有一组对应的计算机指令,所述计算机指令在被执行时将导致相关联的处理器执行本文中所述的功能性。因此,本发明的各种方面可以数个不同形式来体现,预期所有形式属于所主张的标的物的范围内。另外,对于本文所描述的方面中的每一者,任何此类方面的对应形式可在本文中描述为(例如)“经配置以”执行所描述动作的“逻辑”。
示范性方面是针对加速跟随条件性强加控制指令的指令的执行,其中跟随条件性强加控制指令的此类指令包含条件性强加控制指令的相依指令。在这点上,做出关于一或多个指令为相依指令的可能性的假定。基本假定是仅跟随条件性强加控制指令的指令可为相依指令,且在条件性强加控制指令前面的任何指令将不是相依指令。进一步假定可基于与条件性强加控制指令有关的一或多个特性或参数。
一般来说,所述一个或多个参数可包含以下各项中的一或多者:经配置以执行指令的处理器的指令管线的最大宽度;处理器所实施的指令集架构(ISA)所支持的指令长度;和/或指令管线的管线级内的潜在相依指令所占用的一或多个预指定通道。
更详细地说,所述参数包含如先前描述的“块大小”,指代行为取决于条件性强加控制指令所强加的条件性的相依指令的数目。所述参数还涉及处理器或处理系统中所实施的指令集架构(ISA)所支持的指令集操作模式和/或指令长度。指令集操作模式可包含(例如)支持32位指令的ARM模式,以及支持16位和32位指令的THUMB模式。因此与条件性强加控制指令有关的参数还可包含指令管线的最大宽度或每一时钟周期中处理的指令数据位的数目。在这点上,可考虑每时钟周期两个或更多个指令的并行执行,其中所述两个或更多个指令中的每一者可与管线级内的一或多个预指定通道或位置对准。举例来说,处理器可经配置以每时钟周期处理最大64个位的指令数据。将所述64个位划分并排序为具有预指定位置的四个16位或半字通道。举例来说,这些通道中的每一者可包含一个16位指令、32位指令的二分之一,或64位指令的四分之一。因此,关于指令是条件性强加控制指令的相依指令的可能性的假定还可基于例如指令管线的管线级内的指令所占用的一或多个预指定通道等参数。
基于以上特性和/或参数中的一或多者,本发明的各方面涉及预测特定指令是否取决于指令执行管线中早期的条件性强加控制指令。此预测在本发明中还被称作“相依性预测”,因为其涉及预测指令是否取决于条件性强加控制指令。换句话说,相依性预测涉及预测指令是否在“条件性块”(例如前述的IT块)内,其是指行为由条件性强加控制指令所强加的条件性确定的一或多个指令的块。所揭示的“相依性预测”区别于涉及将分支的方向预测为采用或不采用的常规分支预测。为了阐释,可跟随条件性强加控制指令的分支指令可具有两种相异类型的相关联预测。第一预测可涉及分支指令是否取决于条件性强加控制指令的相依性预测。第二预测可涉及常规分支预测技术,其可就位来基于例如分支指令的历史等方面来预测分支指令的方向。如果基于相依性预测,预测分支指令取决于条件性强加控制指令,那么分支的行为也将基于条件性强加控制指令所强加的条件性。因此,一旦已预测分支指令取决于条件性强加控制指令,就可基于常规预测机制来预测分支指令的行为,即将采用还是不采用所述分支。
然而,在一些情况下,有可能指令的相依性预测可为错误的,或如本文可参考,所述指令可被“相依性误预测”。举例来说,在分支指令的情况下,第一非条件性分支指令可被相依性预测为管线中的早期条件性强加控制指令的相依指令,但在后续管线级中,可确定所述相依性预测是不正确的,因为第一非条件性分支指令实际上不在所述条件性强加控制指令的条件性块内。因此,在这些情况下,第一非条件性分支指令可能已被视为条件性的,且基于从条件性强加控制指令导出的条件,第一非条件性分支指令可能已被预测为不采用。被预测为不采用的非条件性分支指令是导致“相依性误预测惩罚”的不正确方向预测和异常。虽然在本发明中更详细地论述关于分支指令的这些方面,但将理解,甚至在不是分支指令的指令被相依性误预测的情况下,也可能引发类似的相依性误预测惩罚。因此,如果第一非分支指令是基于相依性预测非分支指令为条件性强加控制指令的相依指令而不当指派的条件性行为,那么此相依性误预测也可能引发相依性误预测惩罚。如果第一非分支指令被相依性误预测,那么提交被相依性误预测的第一非分支指令将是不正确的。因此,将理解,如本文所论述,“相依性误预测惩罚”涉及当针对指令的相依性预测(所述指令是分支指令还是非分支指令)不正确时所引发的惩罚。以下章节中将连同关于减轻相依性误预测惩罚的示范性方面论述各种相依性误预测惩罚。
在非条件性分支指令被不当相依性预测为取决于条件性强加控制指令的以上实例中,相依性误预测还导致不正确的方向预测或方向误预测。对应的相依性误预测惩罚可涉及非条件性分支指令,以及跟随将不当执行的非条件性分支指令的指令。一些方面涉及通过从提交/更新存储器冲洗或阻止可能已跟随相依性误预测指令的任何指令(例如在被不当预测为条件性且不采用的第一非条件性分支指令之后执行的任何指令),来减轻此相依性误预测惩罚。与减轻相依性误预测惩罚有关的另一方面涉及对被相依性误预测的第一非条件性分支指令进行方向预测,以获得对分支指令的方向的预测。所述方面进一步包括允许被相依性误预测的第一非条件性分支指令用方向误预测来更新动态分支预测跟踪机制(例如跟踪分支预测及其准确性的分支历史寄存器或分支历史表)。用方向误预测来更新动态分支预测跟踪机制致使动态分支预测跟踪机制经训练来习得第一非条件性分支指令是基于相依性误预测被方向误预测的。因此可训练动态分支预测跟踪机制,以避免针对第一非条件性分支指令的将来出现产生不正确的方向预测(即,非条件性分支指令的不采用预测)。其后,经训练的动态分支预测跟踪机制可正确地对第一指令的将来出现进行方向预测。因此,一旦已训练分支预测跟踪机制,就可减少基于相依性错误预测的分支错误预测的数目。
在第一非分支指令被不当相依性预测为取决于条件性强加控制指令的实例中,相依性误预测惩罚可涉及第一非分支指令将不当执行。另外,有可能第一非分支指令可具有与跟随第一非分支指令的指令的数据相依性(例如具有一或多个共用操作数)。因此,跟随第一非分支指令的具有对第一非分支指令的一或多个数据相依性的这一或多个指令也可能被不当执行。因此,示范性方面涉及通过阻止第一非分支指令提交或更新存储器来减轻此相依性误预测惩罚。在一些方面,所述减轻可进一步包括撤销或冲洗(或阻止提交或更新存储器)第一非分支指令,以及可能已跟随被相依性误预测的第一非分支指令的具有一或多个数据相依性的这一或多个指令。与减轻相依性误预测惩罚有关的另一方面涉及允许被相依性误预测的第一非分支指令更新例如条件性历史表等结构,其跟踪条件性指令的历史(此类结构可类似于分支历史表,但经配置以用于非分支条件性指令)。可用指令执行的历史来训练条件性历史表,使得如果允许被相依性误预测的第一非分支指令用其对其相依性误预测的第一出现的不正确执行来更新所述条件性历史表,那么对于之后的出现,条件性历史表可为第一非分支指令习得正确行为。因此,一旦已习得第一非分支指令的正确行为,就可使用所述条件性历史表来超驰第一非分支指令的相依性误预测。
因此,示范性方面可克服常规技术的前述缺点,并实现条件性强加控制指令的相依指令的迅捷且高效的执行,同时减少或消除频率降级、分支预测惩罚和/或管线暂停。如从上文的论述看出,方面是针对早期指令的相依性预测的加速,从而避免首先通过引入管线暂停或减缓执行频率等来准确地确定指令是否实际上是相依指令的必要。
此外,还将理解,在示范性方面中,硬件成本可能没有显著增加,且示范性方面可并入现有处理系统中。另外,因为示范性方面可避免管线暂停,且在相依性错误预测的情况下实施前述减轻,因此可降低总电力消耗。
下文将关于图1的处理系统100来论述上文方面的示范性实施方案。出于说明性目的,将关于条件性强加控制指令的相依指令是分支指令的情况来论述示范性方面。然而,从上文的论述看出,此类相依指令不限于分支指令,而是可为行为是基于条件性强加控制指令的条件性如何评估的任何其它指令。举例来说,在一些方面,相依指令可为非分支指令,例如条件性添加指令,其中如果满足条件,那么使用一或多个源寄存器来执行添加操作,并将结果写入到目标寄存器。如果不满足条件,那么不执行添加操作,且目标寄存器保持其先前值。因此,在此情况下,添加指令的相依“行为”涉及是否执行添加指令(而在分支指令的情况下,相依“行为”涉及采用还是不采用分支指令)。举例来说,包含于条件性强加控制指令中的条件的评估可基于比较指令的结果。
现参考图1,说明处理系统100的示意性表示。处理系统100可经配置以实施示范性方面。处理系统100可包含处理器110,其耦合到指令高速缓冲存储器或I高速缓冲存储器108,如所说明。处理器110可经配置以接收来自指令高速缓冲存储器108的指令,且例如使用执行管线112来执行所述指令。虽然在此表示中说明指令高速缓冲存储器,但所属领域的技术人员将理解,所述指令还可从寄存器堆导出,例如所述寄存器堆可集成在与处理器110相同的集成电路或芯片上。执行管线112可包含一或多个管线化级,代表性地说明为以下级:指令获取(IF);指令解码(ID);一或多个执行级EX1、EX2等,以及回写(WB)级。所属领域的技术人员将认识到对执行管线112的大量修改和添加,如此项技术中已知。处理器110还可耦合到本文为简单起见尚未明确示出并描述的大量其它组件(例如数据高速缓冲存储器、IO裝置、存储器等)。
在一个方面中,示出I高速缓冲存储器108包括高速缓冲存储线102中的实例指令集102a到d。如所说明,高速缓冲存储线的64个位可由四个16位半字组成,标记为102a到d。如本文所论述,半字102a到d分别占用执行管线112的通道A到D,且特定指令以及其前面的那些指令所跨越的通道可为用于相依性预测特定指令是否为条件性强加控制指令的相依指令的参数。将认识到,尽管32位指令的获取和解码可与半字边界或通道A到D对准,但可执行32位指令的执行单元不需要一定符合这些通道。换句话说,执行管线112的EX1、EX2级中的逻辑可对横跨通道A和B的32位指令的所有32个位操作,而不管所述32个位实际上散布在两个通道上的事实。32位指令的回写也无需在16位组块中执行。因此,图1中尚未用16位宽的通道界限来说明指令管线112的EX1、EX2和WB级,而是用通道界限来示出IF和ID级。此外,还将理解,I高速缓冲存储器108可具有对应于高速缓冲存储线102的额外信息,例如地址、标记和元数据,其在此处未明确说明。
如先前所提到,处理系统100可经配置以支持一或多种格式或模式的指令,包含但不限于16位模式和32位模式。16位指令将配合在四个半字通道A到D中的一者内,而32位指令将需要两个半字通道。处理系统100还可经配置以包含一或多个条件性强加控制指令。条件性强加控制指令可为16位指令或32位指令,且其可对16位相依指令、32位相依指令或这两者强加条件。
先前已将实例条件性强加控制指令描述为如果-那么或IT指令,其对一个相依指令强加条件性。换句话说,已知IT指令影响一个相依指令的块。类似地,ITT或ITE指令将对两个相依指令强加条件,或影响两个相依指令的块(“ITE”指令表示“如果-那么-否则”指令,其将这样操作:“如果”条件,如果为真,将致使第一相依(那么)执行的行为根据为真的条件,且第二相依(否则)指令的行为将根据为假的条件。换句话说,否则指令是基于如果条件的相反解决方案或错误解决方案)。类似地,ITTT、ITTE和ITEE影响三个相依指令的块;ITTTT、ITTTE、ITTEE和ITEEE影响四个相依指令的块,等等。一般来说,在本发明中可大体上被称作“IT类型”或“IT类”指令的一种类型或一类条件性强加控制指令包含跟随如果指令的那么或否则指令的任何此类组合。在下文的示范性方面中,将论述IT类指令的四个指令的最大块大小,而将理解,本发明的各方面不限于任何最大块大小。
在示范性方面中,有可能例如基于预解码位来确定管线中早期的上文条件性强加控制指令的块大小。举例来说,当从L2高速缓冲存储器(未图示)获得将放入I高速缓冲存储器108中的数据或指令时,可执行预解码来确定特定高速缓冲存储线102内存在条件性强加控制指令。当从I高速缓冲存储器108获取特定高速缓冲存储线102(例如在执行管线112的IF级期间)时,可确定条件性强加控制指令的块大小。可用此块大小或相依指令的数目的计数来初始化例如计数器(未明确示出)的逻辑,其可指示所述块内的所有相依指令是否包含在高速缓冲存储线102内,或是否可存在到后续高速缓冲存储线中的溢出。如先前所提到,举例来说,条件性强加控制指令可出现在存储器中或I高速缓冲存储器108中的任意位置。因此,条件性强加控制指令的相依指令可属于同一高速缓冲存储线内,或可溢出到以下高速缓冲存储线或获取群组中。在执行管线112中的一个循环期间获取并处理的指令块可被称为“获取群组”。举例来说,大小64位的获取群组可具有从两个(32个位)到四个(16个位)的任何地方的指令。(其还可能大小64位的获取群组具有三个指令,包含一个32位指令和两个16位指令。此外,指令的一部分处于一个获取群组,而同一指令的剩余部分处于后续获取群组的情况也是可能的)。
使用上述信息,方面经配置以检测条件性强加控制指令,并基于某些特性和/或参数,做出指令是否可为条件性强加控制指令的相依指令或换句话说,属于条件性强加控制指令的条件性块内的相依性预测。所述参数可包含条件性强加控制指令的块大小,以及与指令执行管线(例如管线级)有关的信息,指令模式和关于可能指令长度的相关信息,以及与潜在相依指令有关的并行执行的位置/通道。
代表性地,指令是否为条件性强加控制指令的相依指令的相依性预测示出为在标记为图1的相依性预测103的框中执行。然而,将理解,相依性预测103的功能性可在硬件与软件的任何组合中或处理器110的任何其它逻辑块内实施,而不需要独立逻辑块。在实例中,如果获取群组中存在条件性强加控制指令,其可符合从I高速缓冲存储器108获取的高速缓冲存储线102,那么可有可能在获取所述获取群组的相同时钟循环内确定条件性强加控制指令的块大小。然而,归因于确定块大小所引发的等待时间,可能不可能精确地确定获取群组中跟随条件性强加控制指令的哪些指令是相依指令。换句话说,可有可能例如使用操作码的选定位来快速检测局部信息,其中所述局部信息可涉及确定获取群组中的指令是条件性强加控制指令。然而,可能不可能快速确定剩余相关信息,例如块大小。
参考执行管线112的管线级,在示范性方面中,可在来自I高速缓冲存储器108的IF管线级期间获取高速缓冲存储线102的四个半字或64个位。条件性强加控制指令的块大小的检测还可在此第一时钟循环或IF管线级中执行(从上文来看,预解码可揭示高速缓冲存储线102中是否存在条件性强加控制指令)。在第二时钟循环或ID管线级中,可从高速缓冲存储线102的64个位解码至多四个16位指令。(或者,可将64个位解码成包括两个16位指令和一个32位指令的三个指令,或包括两个32位指令的两个指令)。相依性预测103和分支预测(例如在标记为分支预测的框104中)可在此第二时钟循环或ID级中操作。然而,分支预测输出107在ID级中可能不具有充足的时间来考虑也在ID级中计算的条件性或相依性预测。因此,将相依性预测103和分支预测104的结果管线化为第三时钟循环或EX1级。可使考虑相依性预测103和分支预测104的结果的最终分支预测输出107在此EX1级中可用。EX1级中的分支预测输出107可揭示例如非条件性分支是否被不当相依性预测,且因此产生被预测为不采用的错误后果。
因此,考虑特定情况,块大小=2的16位条件性强加控制指令(例如“ITT”指令)可存在于获取群组的第一通道A内。可在第一时钟循环或IF管线级中获取所述获取群组。由于块大小可潜在地为三或高于三(即,形式ITTT或ITTTT的条件性强加控制指令),因此通道A中的所述检测到的16位条件性强加控制指令可潜在地横跨整个获取群组。换句话说,获取群组的所有剩余通道B到D可潜在地为相依指令。因此,如果在获取群组中检测到条件性强加控制指令,那么有可能所述块大小可横跨整个获取群组。处于同一获取群组中的潜在相依指令(例如分支指令)可具有被正确地相依性预测或可被不当地相依性预测(或换句话说,被相依性误预测)。因此,在通道A中的上述IT指令的情况下,虽然相依性预测针对通道B和C中的16位分支指令将为正确的,那么相依性预测针对通道D中的16位分支指令可为错误的。
记住上述实例情况,以下规则可通常适用于在处理系统100中相依性预测指令是否为IT指令的相依指令。如果考虑中的指令(例如第一指令)跟随IT指令,且处于与IT指令相同的获取群组中,那么相依性预测为第一指令是IT指令的相依指令。
如果第一指令不在与IT指令相同的获取群组,那么相依性预测是基于如下的示范性参数。确定IT指令的条件性块中的相依指令的块大小或数目。确定条件性块中剩余的相依指令的数目,即不在与IT指令相同的获取群组中的剩余相依指令的数目。如果条件性块中剩下的剩余相依指令的数目为一(1),那么前两个通道,即通道A和B,被相依性预测以包含相依指令。第二两个通道,即通道C和D,被相依性预测为不包含IT指令的相依指令。如果条件性块中剩余的剩余相依指令的数目为二(2)、三(3)或四(4),那么所有四个通道A到D被相依性预测为IT指令的相依指令。如果获取宽度大于四个通道,如在上述示范性情况下,那么上述一般规则适用于相依性预测,其中针对IT指令的条件性块中的每一剩余相依指令,使用使被相依性预测为包含相依指令的通道的数目扩大相依指令可占用的通道的最大数目的模式。举例来说,在上述实例中,其中最大相依指令是32位指令,32位指令可占用的最大数目的通道是两个通道。因此,被相依性预测为包含相依指令的通道的数目扩大条件性块中剩余的每一相依指令的两个通道。
继续参看图1,为了在相依性预测103中实施上述规则,例如一旦确定条件性强加控制指令的块大小,可实施计数器来跟踪后续时钟循环中的后续获取群组中可存在的任何剩余相依指令。在一个方面中,此计数器可在执行管线112的ID级中实施。由于相依指令可属于两个或更多个获取群体,因此相依指令可存在于其中检测到条件性强加控制指令的时钟循环之后的两个或更多个后续时钟循环中。因此,上述一般规则基于获取群组中的剩余相依指令来提供相依性预测。
在另一说明性实例中,条件性强加控制指令是在第一时钟循环中在第一获取群组的通道D中出现的ITTTT指令。因此,ITTTT指令的条件性块包含四个32位指令。在图1的处理系统100中的两个后续时钟循环中将获取四个32位相依指令。由于在通道D中的第一时钟循环中获取ITTTT指令,因此将通过第一时钟循环的结束来确定块大小。由于ITTTT指令处于通道D中,且指令的任何相依指令需要跟随ITTTT指令,所以已知在第一时钟循环中可能尚未获取相依指令。因此,通过后续时钟循环或第二时钟循环的开始,将已知条件性块中的剩余相依指令的数目为四,且尚未获取所有四个剩余相依指令。另一方面,如果在通道C而不是通道D中获取ITTTT指令,那么通道D中可存在至多一个相依指令。如果块大小为四,且如果在通道D中获取一个相依指令,那么计数器将在第二时钟循环中使剩余相依指令的数目从四递减到三。因此,在第二时钟循环中所获取的第二获取群组中,将精确地知晓剩余块大小或剩余相依指令的数目。
然而,剩余块大小或剩余相依指令的数目的了解不足以知晓哪些指令或第二获取群组中的通道A到D中的哪一者将包含相依指令,因为与指令管线、指令大小、模式、通道等有关的参数还将影响条件性块的覆盖度或范围。因此,如果第二获取群组中的剩余块大小为三,那么相依指令可为三个32位指令,且因此,所述相依指令可横跨第二获取群组的全部64个位,即通道A到D,并且还横跨第二获取群组之后的第三获取群组的32个位或通道A到B。如果相依指令是16位指令,那么其可仅横跨第二获取群组的前三个通道A到C。因此,针对第二获取群组中的相依性预测,用以评定指令是否为相依指令的参数可涉及最大可能横跨(例如基于32位指令)。在一些方面,相依性预测103可基于实施下文的示范性表1的特征。
参看图2A,表1提供出现在四个通道A到D中的所有可能指令的列表,其中通道A包含最老指令,且通道B到D包含连续较年轻的指令或跟随最老指令的指令。16位指令表示为T16,而32位指令表示为T32。
在对第一指令的相依性预测的情况下,其中第一指令处于与其中检测到条件性强加控制指令的一个获取群组相同的获取群组中,以下可能情形适用,参考图2A的表1。参考行202,对于四个通道A到D中的每一者中的T16指令,产生24中情形,其中条件性强加控制指令可在通道A到C中的任一者中,且对应的下一通道或较年轻的指令包含第一指令。参考行204,通道A到C包含T16指令,且通道D包含T32指令的第一半,其产生12种情形,其中通道A到B可包含条件性强加控制指令,且对应的下一通道包含第一指令。通道D中的局部指令与第一指令的相依性预测无关。以类似方式,参看行206,通道A和B包含T16指令,且通道C和D分别包含T32第一半和T32第二半,其产生12种情形。在行208中,通道A包含T16指令,通道B和C分别包含T32第一半和T32第二半,且通道D包含T16指令,其产生12种情形。在行210中,通道A包含T16指令,通道B和C分别包含T32第一半和T32第二半,且通道D包含另一T32第一半,其产生4种情形。在行212中,通道A和B包含T32第一半和T32第二半,而通道C和D包含T16指令,从而产生12种情形。在行214中,通道A和B分别包含T32第一半和T32第二半,通道C包含T16指令,且通道D包含另一T32第一半,其产生4种情形。最后,在行216中,行A和B分别包含T32第一半和T32第二半,而行C和D分别包含另一T32第一半和T32第二半,从而产生4种情形。因此,总的来说,考虑行202到216,相依性预测涉及84种情形,其中第一指令处于与其中检测到条件性强加控制指令的一个获取群组相同的获取群组。
在针对第一指令的相依性预测的情况下,其中第一指令不在与其中检测到条件性强加控制指令的获取群组相同的获取群组中,即其中第一指令处于在其中检测到条件性强加控制指令的一获取群组之后的获取群组中,以下可能情形适用,再次参考图2A的表1。将理解,在图2A中,唯一的假定是条件性强加控制指令不在与第一指令相同的获取群组中,举例来说,与获取群组中的条件性强加控制指令在其自身的获取群组中的位置。举例来说,条件性强加控制指令可能已存在于第一获取群组的任一通道中,这导致剩余相依指令包含将存在于或属于第二获取群组的第一指令。图2A是指此第二获取群组,其例如跟随其中获取条件性强加控制指令的第一获取群组。
参考行202,对于四个通道A到D中的每一者中的T16指令,产生4种情形,其中第一指令可在通道A到D中的任一者中。参考行204,通道A到C包含T16指令,且通道D包含T32指令的第一半,其产生4种情形,其中第一指令可处于通道A到C的任一者中。以类似方式,参看行206,通道A和B包含T16指令,且通道C和D分别包含T32第一半和T32第二半,其产生12种情形。在行208中,通道A包含T16指令,通道B和C分别包含T32第一半和T32第二半,且通道D包含T16指令,其产生12种情形。在行210中,通道A包含T16指令,通道B和C分别包含T32第一半和T32第二半,且通道D包含另一T32第一半,其产生8种情形。在行212中,通道A和B包含T32第一半和T32第二半,而通道C和D包含T16指令,从而产生12种情形。在行214中,通道A和B分别包含T32第一半和T32第二半,通道C包含T16指令,且通道D包含另一T32第一半,其产生8种情形。最后,在行216中,行A和B分别包含T32第一半和T32第二半,而行C和D分别包含另一T32第一半和T32第二半,从而产生8种情形。因此,总的来说,考虑行202到216,相依性预测涉及88种情形,其中第一指令不在与其中检测到条件性强加控制指令的一获取群组相同的获取群组。
虽然参考表1的的相依性预测中所涉及的可能情形的上述描述是穷尽性的,但图2B提供包含上文所识别的情形中的选定情形的表2。在表2中,第一获取群组包含条件性强加控制指令。同样,无法在第一时钟循环的开头知晓条件性块的块大小或大小。第二获取群组是在第二时钟循环中获取的后续获取群组。剩余块大小或剩余相依指令的数目在第二时钟循环的开头已知。与本发明不特定相关的指令已简单地指示不操作或NOP,包含16位NOP,“T16NOP”,以及32位NOP,“T32NOP”。然而,这不是限制性,且T16NOP和T32NOP可分别为任何有效16位指令(T16)或32位指令(T32)。类似地,已将潜在相依指令描述为分支指令“B”,为了说明起见,16位分支指令表示为T16B,且32位分支指令表示为T32B。同样,行为取决于条件性强加控制指令的其它种类的指令,例如上述添加指令,也可为相依指令。实例16位和32位指令已在表1中示出为对准到四个上述通道A到D中的一或多者。在块252到266中所示的情况中的每一者的最后一个列中示出分支指令B是被正确地还是不当地评定。
在块252到254中,示出第一获取群组,因为其与第一时钟循环有关。更具体地说,参考块252,在通道A中获取条件性块大小=3的条件性强加控制指令(例如ITTE或ITTT)。然而,由于此为第一获取群组,块大小在第一时钟循环的开头是未知的。因此,通道D中的指令B被相依性预测为相依指令。此相依性预测是基于关于表2的上述情形中的一者,其中指令B处于与条件性强加控制指令相同的获取群组中。指令B的相依性预测对于块202来说是正确的,因为通道D属于ITTE或ITTT指令的条件性块内。
在块254中,在第一群组和第一时钟循环中获取块大小=2的条件性强加控制指令(例如ITT/ITE)。同样,由于块大小在第一时钟循环的开头是未知的,因此通道D中的指令B以与块252中类似的方式被相依性预测为相依指令。然而,在此情况下,相依性预测是错误的。指令B被相依性误预测,因为通道A中的ITT/ITE指令中的条件性块大小二不应包含其条件块内的通道D中的T16B。在此情况下,归因于相依性误预测,示范性方面涉及减轻相依性误预测惩罚。具体地说,减轻涉及允许分支指令B有条件地执行,即使其实际上是非条件性指令。如先前所描述,此减轻技术涉及校正进一步沿执行管线112的不正确执行,这将在下文进一步论述。
参考块256到266,示出第二获取群组。将已经在先前时钟循环中,在第一获取群组中检测到条件性强加控制指令。条件性强加控制指令的剩余相依指令的数目或剩余块大小将已确定,且在第二时钟循环的开头可用。
具体地说,参考块256,剩余块大小=4。这表示先前循环中的条件性块延伸到所有四个通道A到D,由于基于指令是16位指令还是32位指令,块大小4可横跨从64个位到128个位的任何地方。因此,基于与指令大小和通道有关的上述参数,通道D中的指令B将被相依性预测为相依指令。相依性预测将为正确的,因为指令B(T16B)是16位指令,在此情况下,其实际上属于条件性块内。
在块258中,另一方面,剩余块大小=3。同样,条件性块可潜在地包含所有四个通道A到D。然而,实际上,通道A到C中的每一者包含16位指令,其将耗尽条件块,如图所示。因此,对于与块256中相同的参数,作为相依指令的指令B的相依性预测在块258中将不正确。同样,此相依性误预测导致误预测惩罚,其通过下文进一步论述的上述减轻技术来减轻。
参考块260,剩余块大小=2。然而,同样,如在块256到258中,条件性块可横跨从通道A到D的整个第二获取群组,因为获取群组中可存在两个32位指令。作为相依指令的相依性预测指令B可基于与上述指令大小和通道有关的参数。由于指令B实际上为跟随另一32位指令的跨越通道C到D的32位指令(T32B),因此在此情况下,指令B指令B的相依性预测是正确的。
在块262中,同样剩余块大小=2。因此,同样,关于延伸到整个第二获取群组的条件性块,与块256到260中相同的参数适用。然而,在此情况下,指令不是32位指令。通道D中的指令B(T16B)并不属于条件块内,因为所述条件块将被包括16位指令的通道到B耗尽。因此,在此情况下,作为相依指令的指令B的相依性预测将是不正确的。同样,此相依性误预测导致误预测惩罚,其通过下文进一步论述的上述减轻技术来减轻。
在块264中,剩余块大小=1。不管条件块横跨一个16位指令还是一个32位指令,条件性块将在第二获取群组的前两个通道A到B内耗尽。因此,与条件块的范围有关的参数假定条件性块无法涵盖通道C到D,且因此,通道D中的指令T16B将已知为非条件性的,或不是相依指令。因此,指令B将被正确地相依性预测为不是相依指令。
在块266中,剩余块大小=1。同样,使用与块264中相同的与延伸到通道A和B的条件块的范围有关的参数。然而,如所说明,所述条件块被通道A中的一个16位指令耗尽。因此,作为相依指令的指令B(T16B)的相依性预测将是不正确的。同样,此相依性误预测导致误预测惩罚,其通过下文进一步论述的上述减轻技术来减轻。
因此,基于条件性强加控制指令的上述特性以及与指令大小和通道位置有关的参数,潜在指令的相依性预测可由相依性预测103正确地或不当地执行。在这些潜在相依指令为分支指令的情况下,将提供以下阐释,重新提到图1。更具体地说,将针对根据图2A到B的表1和2来进行相依性预测的分支指令的相依性预测来论述图1的剩余逻辑块,包含分支预测104、BHT 106和更新逻辑114。
继续参看图1,处理器110包含分支预测104以及动态分支预测跟踪机制,分支历史表(BHT)106。举例来说,BHT 106可包括遍历或已遍历通过执行管线112的条件性分支指令的行为历史。BHT 106可补充有从分支预测104导出的条件性分支指令的动态预测的提示。
分支预测104可接收存储在高速缓冲存储线102中的指令的地址或程序计数器(PC)值。这些指令可包含真实条件性分支指令,即行为不是以情况而定的或取决于条件性强加控制指令的分支指令。真实条件性分支指令的条件性在指令本身内存在,且并不具有其从例如条件性强加控制指令的另一指令强加或导出的条件性。分支预测104还可从相依性预测103接收已经被相依性预测为相依分支指令的分支指令的地址。分支预测104可包含最近被执行的分支指令(包含真实分支指令和经相依性预测的分支指令)的全局历史。举例来说,全局历史与任一类型的分支指令的对应地址散列,以索引到BHT 106中,以便读出2位饱和计数器值。2位饱和计数器用于通过基于连续预测的正确性,遍历通过以下四个状态来训练分支预测:强预测为不采用、弱预测为不采用,弱预测为采用,以及强预测为采用。举例来说,通过对PC值和预测状态实施散列或XOR功能的逻辑来执行散列和编索引。之后,存储在BHT 106的经编索引的位置中的值可读出为分支预测输出107,其表示接收到的分支指令的经预测评估。在一个示范性方面中,分支预测输出107可在指令管线112的EX1级中可用。将回忆起来,被相依性预测103相依性预测为相依指令的所述分支指令中的一些实际上可为已经被相依性误预测的非条件性分支指令。
包含真实条件性分支指令和经相依性预测的分支指令(包含经相依性误预测的那些指令)的所有接收到的分支指令在下文将被称作经方向预测的分支指令。术语“方向预测”、“经方向预测的”、“正方向预测”等是指分支指令的“方向”的预测,且区别于“相依性”或“相依性预测”的预测,如先前所描述。
分支预测输出107可为到执行管线112的输入。使用分支预测输出107,可将经方向预测的分支指令的方向设定为采用/不采用,且可基于已设定的方向来推测地执行经方向预测的分支指令。一旦获得经方向预测的分支指令的实际评估,在遍历执行管线112的各个级(例如EX1、EX2等)之后,可从执行管线112输出所述评估作为评估113。可提供更新逻辑114来接受评估113作为一个输入以及分支预测输出107作为另一输入来看预测和实际评估是否匹配。如果存在失配,那么经方向预测的分支指令将已被误预测。在经方向预测的分支指令的推测性执行之后推测地执行的任何指令将在管线级WB中被冲洗且被阻止写回或提交。此外,还可跟踪已被方向误预测的任何非条件性分支指令,因为这些将对应于被相依性误预测的分支指令。更新逻辑114可将经更新的预测115发出到分支预测104和BHT 106,以更新分支指令的预测/历史。
倘若考虑中的指令是非分支指令,如先前所提到,那么可在一些方面中实施条件性历史表(图1中未示出)。可用类似于BHT 106的逻辑来实施条件性历史表,且其可用以使用更新逻辑114来更新非分支指令的评估。本发明中将避免关于非分支指令的穷尽性的细节,因为所属领域的技术人员将能够将关于分支指令的示范性方面的论述延伸到指令不是分支指令的情况。
现在将针对相依性误预测对非条件性分支指令发生的情况论述前述减轻技术。在这点上,将用在相依性预测103被不当相依性误预测的非条件分支指令的方向误预测来更新BHT 106。因此,BHT 106将形成关于这些经方向误预测的非条件分支指令的正确行为的历史或训练。举例来说,前述2位饱和计数器将朝经方向误预测的非条件性分支指令的下一次出现的弱预测采用状态训练。对于经相同方向误预测的非条件分支的后续出现,2位饱和计数器将在强预测采用状态下饱和。因此,对于在相依性预测103中被不当相依性误预测且发送到分支预测104和BHT 106以获得分支预测输出107的后续经方向误预测的非条件分支指令,可获得正确的方向预测(即,非条件性分支指令将被正确地方向预测为采用)。以此方式,可在示范性方面中实现相依性误预测惩罚的减轻。
类似地,对于经相依性误预测的非分支指令,更新和训练条件性历史表(未图示)可用于减轻相关联的相依性误预测惩罚。
将了解,方面包含用于执行本文中所揭示的过程、功能和/或算法的各种方法。举例来说,如图3中所示,方面可包含执行处理器(例如处理器110)的指令管线(例如指令管线112)中的指令的方法(300),所述方法包括:检测条件性强加控制指令(例如检测图2的块202的通道A中的ITTE指令;使用例如逻辑块,图1的相依性预测103),其对一或多个相依指令的条件性块大小数目强加相依行为(例如图2的块202的通道B、C和D中的三个相依指令;使用例如逻辑块,图1的相依性预测103)-框302;在执行第一指令之前,基于所述条件性块大小以及指令管线的一个或多个参数(例如包含以下各项的参数:经获取以在执行管线112的循环中执行的获取群组中的指令位的最大数目、处理器110所支持的指令大小等;使用例如图1的相依性预测103),来相依性预测第一指令是条件性强加控制指令的相依指令(例如使用图1的相依性预测103)-框304;基于所述相依性预测来执行第一指令(例如在图1的管线112中,在其中第一指令是分支指令的情况下,基于相依性预测103、分支预测104和分支历史表106)-框306;以及当第一指令被相依性误预测时,减轻与相依性误预测相关联的惩罚(例如通过训练图1的分支预测104、分支历史表106和执行管线112)-框308。
现参看图4,描绘根据示范性方面配置的无线装置的框图,并将其大体上表示为400。无线装置400包含图1的处理器110,包括块相依性预测103、分支预测104、分支历史表106、执行管线112和更新逻辑114,如上文所论述。处理器110可与存储器410通信。I高速缓冲存储器108在此视图中未明确示出,但可为处理器110的一部分,或可为耦合在处理器110与存储器410之间的单独块,如此项技术中已知。
图4还示出耦合到处理器110且耦合到显示器428的显示器控制器426。译码器/解码器(编码解码器)434(例如,音频和/或话音编码解码器)可耦合到处理器110。还说明例如无线控制器440(其可包含调制解调器)等其它组件。扬声器436和麦克风438可耦合到编码解码器434。图4还指示无线控制器440可耦合到无线天线442。在特定方面,处理器110、显示器控制器426、存储器410、编码解码器434和无线控制器440包含在系统级封装或系统单芯片装置422中。
在特定方面中,输入装置430和电源444耦合到芯片上系统装置422。此外,在特定方面,如图4中所示,显示器428、输入装置430、扬声器436、麦克风438、无线天线442和电源444在芯片上系统装置422外部。然而,显示器428、输入装置430、扬声器436、麦克风438、无线天线442和电源444中的每一者可耦合到芯片上系统装置422的组件,例如接口或控制器。
应注意,尽管图4描绘无线通信装置,但处理器110和存储器410也可集成到机顶盒、音乐播放器、视频播放器、娱乐单元、导航装置、个人数字助理(PDA)、固定位置数据单元、计算机、膝上型计算机、平板计算机、移动电话或其它类似裝置中。
所属领域的技术人员将了解,可使用多种不同技术和技法中的任一者来表示信息和信号。举例来说,可通过电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示在整个上文描述中可能参考的数据、指令、命令、信息、信号、位、符号和码片。
另外,所属领域的技术人员将了解,结合本文所揭示的方面而描述的各种说明性逻辑块、模块、电路和算法步骤可实施为电子硬件、计算机软件或两者的组合。为清晰地说明硬件与软件的这种可互换性,上文已大体就其功能性来描述了各种说明性组件、块、模块、电路和步骤。此功能性是实施为硬件还是软件取决于特定应用以及强加于整个系统的设计约束。熟练的技术人员可针对每一特定应用以不同方式来实施所描述的功能性,但这样的实施方案决策不应被解释为会引起脱离本发明的范围。
结合本文中所揭示的方面描述的方法、序列和/或算法可直接用硬件、用由处理器执行的软件模块或用这两者的组合来实施。软件模块可驻留在RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可装卸磁盘、CD-ROM,或此项技术中已知的任何其它形式的存储媒体中。示范性存储媒体耦合到处理器,使得处理器可从存储媒体读取信息并且将信息写入到存储媒体。在替代方案中,存储媒体可与处理器成一体式。
因此,本发明的一方面可包含一种体现用于非条件性分支的经加速预测的方法的计算机可读媒体。因此,本发明不限于所说明的实例,且任何用于执行本文中所描述的功能性的装置包含于本发明的方面中。
虽然前述揭示内容示出本发明的说明性方面,但应注意,在不脱离如所附权利要求书界定的本发明的范围的情况下,可在其中做出各种改变和修改。无需以任何特定次序来执行根据本文中所述的本发明的方面的方法权利要求的功能、步骤和/或动作。此外,尽管可能以单数形式描述或主张本发明的元件,但除非明确陈述限于单数形式,否则也涵盖复数形式。

Claims (30)

1.一种执行处理器的指令管线中的指令的方法,所述方法包括:
检测对条件性块大小数目的一或多个相依指令强加相依行为的条件性强加控制指令;
在执行第一指令之前,基于所述条件性块大小以及所述指令管线的一个或多个参数,相依性预测所述第一指令是所述条件性强加控制指令的相依指令;
基于所述相依性预测来执行所述第一指令;以及
当所述第一指令被相依性误预测时,减轻与所述相依性误预测相关联的惩罚。
2.根据权利要求1所述的方法,其中所述第一指令和所述条件性强加控制指令属于同一获取群组。
3.根据权利要求1所述的方法,其中所述第一指令属于其中获取所述条件性强加控制指令的第一获取群组之后的第二获取群组。
4.根据权利要求1所述的方法,其中所述一个或多个参数包括以下各项中的一或多者:所述指令管线的最大宽度;所述处理器中所实施的指令集架构ISA所支持的指令长度;或所述第一指令在所述指令管线的管线级内占用的一或多个预指定通道。
5.根据权利要求1所述的方法,其中所述第一指令是分支指令。
6.根据权利要求5所述的方法,其进一步包括方向预测所述分支指令以获得所述分支指令的方向的预测。
7.根据权利要求6所述的方法,其进一步包括确定所述方向预测不正确,其中所述分支指令是非条件性分支指令,且减轻所述惩罚包括通过用所述不正确方向预测更新分支预测跟踪机制来训练所述分支预测跟踪机制。
8.根据权利要求7所述的方法,其进一步包括基于所述经训练的分支预测跟踪机制来正确地方向预测所述第一指令的将来出现。
9.根据权利要求1所述的方法,其中减轻所述惩罚包括阻止所述第一指令提交或更新存储器。
10.根据权利要求9所述的方法,其进一步包括阻止跟随所述第一指令且具有与所述第一指令的数据相依性的一或多个指令提交或更新所述存储器。
11.根据权利要求1所述的方法,其中所述条件性强加控制指令属于如果-那么IT类指令。
12.一种处理系统,其包括:
处理器,其经配置以执行指令管线中的指令;
相依性预测逻辑,其经配置以:
检测对条件性块大小数目的一或多个相依指令强加相依行为的条件性强加控制指令;以及
在执行第一指令之前,基于所述条件性块大小以及所述指令管线的一个或多个参数,相依性预测所述第一指令是所述条件性强加控制指令的相依指令;
其中所述处理器经配置以基于所述相依性预测来执行所述第一指令;以及
经配置以在所述第一指令被相依性误预测时减轻与所述相依性误预测相关联的惩罚的逻辑。
13.根据权利要求12所述的处理系统,其中所述第一指令和所述条件性强加控制指令属于同一获取群组。
14.根据权利要求12所述的处理系统,其中所述第一指令属于其中获取所述条件性强加控制指令的第一获取群组之后的第二获取群组。
15.根据权利要求12所述的处理系统,其中所述一个或多个参数包括以下各项中的一或多者:所述指令管线的最大宽度;所述处理器中所实施的指令集架构ISA所支持的指令长度;或所述第一指令在所述指令管线的管线级内占用的一或多个预指定通道。
16.根据权利要求12所述的处理系统,其中所述第一指令是分支指令。
17.根据权利要求16所述的处理系统,其进一步包括用以方向预测所述分支指令以获得所述分支指令的方向的预测德分支预测跟踪机制。
18.根据权利要求17所述的处理系统,其进一步包括经配置以确定所述方向预测不正确的逻辑,其中所述分支指令是非条件性分支指令,且其中所述经配置以减轻所述惩罚的逻辑包括经配置以通过使用所述不正确的方向预测更新所述分支预测跟踪机制来训练所述分支预测跟踪机制。
19.根据权利要求18所述的处理系统,其中所述分支预测跟踪机制进一步经配置以基于所述经训练的分支预测跟踪机制来正确地方向预测所述第一指令的将来出现。
20.根据权利要求12所述的处理系统,其中所述经配置以减轻所述惩罚的逻辑包括经配置以阻止所述第一指令提交或更新存储器的逻辑。
21.根据权利要求20所述的处理系统,其进一步包括经配置以阻止跟随所述第一指令且具有与所述第一指令的数据相依性的一或多个指令提交或更新所述存储器的逻辑。
22.根据权利要求12所述的处理系统,其中所述条件性强加控制指令属于如果-那么IT类指令。
23.一种处理系统,其包括:
用于执行指令管线中的指令的装置;
用于检测对条件性块大小数目的一或多个相依指令强加相依行为的条件性强加控制指令的装置;
用于在执行第一指令之前,基于所述条件性块大小以及所述指令管线的一个或多个参数来相依性预测所述第一指令是所述条件性强加控制指令的相依指令的装置;
其中所述用于执行所述指令管线中的所述指令的装置包括用于基于所述相依性预测来执行所述第一指令的装置;以及
用于在所述第一指令被相依性误预测时减轻与所述相依性误预测相关联的惩罚的装置。
24.根据权利要求23所述的处理系统,其中所述第一指令和所述条件性强加控制指令属于同一获取群组。
25.根据权利要求23所述的处理系统,其中所述第一指令属于其中获取所述条件性强加控制指令的第一获取群组之后的第二获取群组。
26.根据权利要求23所述的处理系统,其中所述一个或多个参数包括以下各项中的一或多者:所述指令管线的最大宽度;所述用于执行指令管线中的指令的装置中所实施的指令集架构ISA所支持的指令长度;或所述第一指令在所述指令管线的管线级内占用的一或多个预指定通道。
27.根据权利要求23所述的处理系统,其进一步包括用于方向预测所述第一指令以获得所述第一指令的方向的预测的装置,其中所述第一指令是分支指令。
28.根据权利要求27所述的处理系统,其进一步包括用于确定所述方向预测不正确的装置,其中所述分支指令是非条件性分支指令,且其中所述用于减轻所述惩罚的装置包括用于使用所述不正确方向预测来训练分支预测跟踪机制的装置。
29.根据权利要求28所述的处理系统,其进一步包括用于基于所述经训练的分支预测跟踪机制来正确地方向预测所述第一指令的将来出现的装置。
30.一种包括代码的非暂时性计算机可读存储介质,所述代码在由处理器执行时,致使所述处理器执行用于执行所述处理器的指令管线中的指令的操作,所述非暂时性计算机可读存储介质包括:
用于检测对条件性块大小数目的一或多个相依指令强加相依行为的条件性强加控制指令的代码;
用于在执行第一指令之前,基于所述条件性块大小以及所述指令管线的一个或多个参数来相依性预测所述第一指令是所述条件性强加控制指令的相依指令的代码;
用于基于所述相依性预测来执行所述第一指令的代码;以及
用于在所述第一指令被相依性误预测时减轻与所述相依性误预测相关联的惩罚的代码。
CN201580049604.8A 2014-09-26 2015-09-08 指令的相依性预测 Expired - Fee Related CN107209662B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/498,938 2014-09-26
US14/498,938 US10108419B2 (en) 2014-09-26 2014-09-26 Dependency-prediction of instructions
PCT/US2015/048959 WO2016048651A1 (en) 2014-09-26 2015-09-08 Dependency-prediction of instructions

Publications (2)

Publication Number Publication Date
CN107209662A CN107209662A (zh) 2017-09-26
CN107209662B true CN107209662B (zh) 2020-11-03

Family

ID=54207725

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580049604.8A Expired - Fee Related CN107209662B (zh) 2014-09-26 2015-09-08 指令的相依性预测

Country Status (4)

Country Link
US (1) US10108419B2 (zh)
EP (1) EP3198400B1 (zh)
CN (1) CN107209662B (zh)
WO (1) WO2016048651A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10324727B2 (en) * 2016-08-17 2019-06-18 Arm Limited Memory dependence prediction
US11709681B2 (en) 2017-12-11 2023-07-25 Advanced Micro Devices, Inc. Differential pipeline delays in a coprocessor
US11567554B2 (en) * 2017-12-11 2023-01-31 Advanced Micro Devices, Inc. Clock mesh-based power conservation in a coprocessor based on in-flight instruction characteristics
CN110336803B (zh) * 2019-06-21 2020-08-11 中国科学院软件研究所 一种目标主机分支预测单元的安全性评估方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6179490B1 (en) * 1993-12-23 2001-01-30 Telefonaktiebolaget Lm Ericsson Method and apparatus for creating a flowchart using a programmed computer which will automatically result in a structured program
CN1790256A (zh) * 2004-12-17 2006-06-21 国际商业机器公司 用于微处理器的分支前瞻预取
CN101506774A (zh) * 2006-08-29 2009-08-12 高通股份有限公司 相依指令线程调度
CN101523344A (zh) * 2006-09-27 2009-09-02 高通股份有限公司 用于解析同时所预测分支指令的方法及系统

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6499101B1 (en) 1999-03-18 2002-12-24 I.P. First L.L.C. Static branch prediction mechanism for conditional branch instructions
US7404070B1 (en) 2000-11-28 2008-07-22 Hewlett-Packard Development Company, L.P. Branch prediction combining static and dynamic prediction techniques
US7003649B2 (en) * 2002-03-08 2006-02-21 Hitachi, Ltd. Control forwarding in a pipeline digital processor
US20040003213A1 (en) * 2002-06-28 2004-01-01 Bockhaus John W. Method for reducing the latency of a branch target calculation by linking the branch target address cache with the call-return stack
US20040123075A1 (en) * 2002-12-19 2004-06-24 Yoav Almog Extended loop prediction techniques
US20050154859A1 (en) 2004-01-14 2005-07-14 Arm Limited Branch prediction in a data processing apparatus
US7234043B2 (en) 2005-03-07 2007-06-19 Arm Limited Decoding predication instructions within a superscaler data processing system
US8676785B2 (en) * 2006-04-06 2014-03-18 Teradata Us, Inc. Translator of statistical language programs into SQL
US20090217017A1 (en) * 2008-02-26 2009-08-27 International Business Machines Corporation Method, system and computer program product for minimizing branch prediction latency
KR20120036210A (ko) 2010-10-07 2012-04-17 삼성전자주식회사 파이프라인 제어 위험 감소를 위한 처리장치 및 컴파일 장치와, 파이프라인 제어 위험 감소를 위한 동적 조건 분기 처리 방법
US9201654B2 (en) 2011-06-28 2015-12-01 International Business Machines Corporation Processor and data processing method incorporating an instruction pipeline with conditional branch direction prediction for fast access to branch target instructions

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6179490B1 (en) * 1993-12-23 2001-01-30 Telefonaktiebolaget Lm Ericsson Method and apparatus for creating a flowchart using a programmed computer which will automatically result in a structured program
CN1790256A (zh) * 2004-12-17 2006-06-21 国际商业机器公司 用于微处理器的分支前瞻预取
CN101506774A (zh) * 2006-08-29 2009-08-12 高通股份有限公司 相依指令线程调度
CN101523344A (zh) * 2006-09-27 2009-09-02 高通股份有限公司 用于解析同时所预测分支指令的方法及系统

Also Published As

Publication number Publication date
CN107209662A (zh) 2017-09-26
EP3198400A1 (en) 2017-08-02
US10108419B2 (en) 2018-10-23
WO2016048651A1 (en) 2016-03-31
EP3198400B1 (en) 2023-11-22
US20160092221A1 (en) 2016-03-31

Similar Documents

Publication Publication Date Title
US8990543B2 (en) System and method for generating and using predicates within a single instruction packet
US7685410B2 (en) Redirect recovery cache that receives branch misprediction redirects and caches instructions to be dispatched in response to the redirects
US7478228B2 (en) Apparatus for generating return address predictions for implicit and explicit subroutine calls
US20110320787A1 (en) Indirect Branch Hint
US20160291982A1 (en) Parallelized execution of instruction sequences based on pre-monitoring
US20120079255A1 (en) Indirect branch prediction based on branch target buffer hysteresis
US20070083739A1 (en) Processor with branch predictor
US20160350116A1 (en) Mitigating wrong-path effects in branch prediction
US20130007425A1 (en) Processor and data processing method incorporating an instruction pipeline with conditional branch direction prediction for fast access to branch target instructions
US9851973B2 (en) Dynamic branch hints using branches-to-nowhere conditional branch
US10664280B2 (en) Fetch ahead branch target buffer
CN107209662B (zh) 指令的相依性预测
EP3767462A1 (en) Detecting a dynamic control flow re-convergence point for conditional branches in hardware
CN112740175A (zh) 基于加载路径历史的分支预测
WO2013158889A1 (en) Bimodal compare predictor encoded in each compare instruction
US20140281439A1 (en) Hardware optimization of hard-to-predict short forward branches
US20190004805A1 (en) Multi-tagged branch prediction table
US9489204B2 (en) Method and apparatus for precalculating a direct branch partial target address during a misprediction correction process
EP3278212A1 (en) Parallelized execution of instruction sequences based on premonitoring
US10296350B2 (en) Parallelized execution of instruction sequences
CN113176895A (zh) 预测冲刷之后指令的结果

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: 20201103

Termination date: 20210908

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