CN114661434A - 用于难以预测的分支的替代路径解码 - Google Patents

用于难以预测的分支的替代路径解码 Download PDF

Info

Publication number
CN114661434A
CN114661434A CN202111388869.4A CN202111388869A CN114661434A CN 114661434 A CN114661434 A CN 114661434A CN 202111388869 A CN202111388869 A CN 202111388869A CN 114661434 A CN114661434 A CN 114661434A
Authority
CN
China
Prior art keywords
path
instruction
conditional branch
decoding
alternate
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
CN202111388869.4A
Other languages
English (en)
Inventor
N·桑达拉拉詹
S·萨布拉蒙尼
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 CN114661434A publication Critical patent/CN114661434A/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/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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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
    • 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
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

本申请公开了用于难以预测的分支的替代路径解码。一种集成电路的实施例可以包括:核;前端单元,耦合至核,用于对一条或多条指令解码,其中,前端单元包括:第一解码路径;第二解码路径;以及电路,用于:预测一条或多条指令中的条件分支指令的被采用分支;在第一解码路径上对被采用分支的所预测的路径解码;确定条件分支指令是否对应于难以预测的条件分支指令以及第二解码路径是否可用;以及如果确定如此,则在第二解码路径上对难以预测的条件分支指令的不被采用分支的替代路径解码。公开并要求保护其他实施例。

Description

用于难以预测的分支的替代路径解码
背景
1.技术领域
本公开总体上关于处理器技术、指令解码技术、和推测性解码技术。
2.背景技术
一些中央处理器单元(CPU)核可利用推测性执行以避免流水线停止并实现更好的性能,这允许执行继续而无需等待对分支目标的架构解析。分支预测技术利用数字电路,该数字电路在分支指令被执行之前猜测分支将去往哪条路。正确的预测/猜测改善指令流水线中的流。一般而言,对条件分支的分支预测可以被理解为将分支预测为“被采用”相对于“不被采用”。分支预测单元(BPU)可通过在预测点之前基于分支指令指针(IP)、分支类型和控制流历史(也称为分支历史)为CPU的前端提供分支预测来支持推测性执行。
附图说明
以示例方式且非限制方式在附图的各图中图示本发明的各实施例,在附图中:
图1是根据实施例的集成电路的示例的框图;
图2A至图2C是根据实施例的方法的示例的流程图;
图3是根据实施例的装置的示例的框图;
图4是根据实施例的乱序处理器的示例的框图;
图5A是根据实施例的分支指令的示例的示图;
图5B是根据实施例的方法的另一示例的流程图;
图6A是图示根据本发明的实施例的示例性有序流水线和示例性的寄存器重命名的乱序发布/执行流水线两者的框图。
图6B是图示根据本发明的实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核两者的框图;
图7A-图7B图示更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块之一(包括相同类型和/或不同类型的其他核);
图8是根据本发明的实施例的可具有多于一个的核、可具有集成存储器控制器、并且可具有集成图形器件的处理器的框图;
图9-图12是示例性计算机架构的框图;以及
图13是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
本文中讨论的实施例以各种方式提供用于对难以预测(H2P)的分支的替代分支的推测性解码的技术和机制。本文中描述的技术可以在一个或多个电子设备中实现。可以利用本文中描述的技术的电子设备的非限制性示例包括任何种类的移动设备和/或固定式设备,诸如,相机、蜂窝电话、计算机终端、台式计算机、电子阅读器、传真机、自动服务机、膝上型计算机、上网本计算机、笔记本计算机、互联网设备、支付终端、个人数字助理、媒体播放器和/或记录器、服务器(例如,刀片服务器,机架安装服务器,其组合等)、机顶盒、智能电话、平板个人计算机、超移动个人计算机、有线电话、上述各项的组合,等等。更一般地,本文中描述的技术可在各种电子设备中的任何电子设备中被采用,各种电子设备包括可操作用于解码指令的集成电路。
在下列描述中,讨论了众多细节,以提供对本公开的实施例的更透彻的解释。然而,对本领域的技术人员将显而易见的是,可以在没有这些特定细节的情况下实施本公开的实施例。在其他实例中,以框图形式,而不是详细地示出公知的结构和设备,以避免使本公开的实施例变得模糊。
注意,在实施例的对应附图中,利用线来表示信号。一些线可以较粗以指示更多数量的成份信号路径,和/或在一个或多个末端处具有箭头以指示信息流的方向。此类指示不旨在是限制性的。相反,线结合一个或多个示例性实施例使用,以促进对电路或逻辑单元的更容易的理解。如由设计需要或偏好所规定,任何所表示的信号都可实际包括可在任一方向上行进的一个或多个信号,并可利用任何合适类型的信号方案来实现。
贯穿说明书以及在权利要求书中,术语“连接的”意指所连接的物体之间的诸如电气、机械、或磁性连接之类的无需任何中介设备的直接连接。术语“耦合的”意指直接的或间接的连接,诸如所连接的物体之间的直接的电气、机械、或磁性连接或者通过一个或多个无源或有源中介设备的间接连接。术语“电路”或“模块”可以指布置成用于彼此合作以提供期望功能的一个或多个无源和/或有源组件。术语“信号”可指至少一个电流信号、电压信号、磁信号、或数据/时钟信号。“一(a/an)”和“该”的含义包括复数引用。“在……中”的含义包括“在……中”和“在……上”。
术语“设备”一般可以指根据使用那个术语的上下文的装置。例如,设备可以指层或结构的堆叠、单个结构或层、具有有源和/或无源元件的各种结构的连接,等等。一般而言,设备是三维结构,具有沿x-y-z笛卡尔坐标系的x-y方向的平面以及沿z方向的高度。设备的平面也可以是包括该设备的装置的平面。
术语“缩放”一般指将设计(示意图和布局)从一种工艺技术转换为另一种工艺技术,并随后在布局区域中被减小。术语“缩放”一般还指在同一技术节点内缩小布局和设备的尺寸。术语“缩放”还可指信号频率相对于另一参数(例如,功率供给水平)的调整(例如,减速或加速——即,分别为缩小或放大)。
术语“基本上”、“接近”、“近似”、“附近”以及“大约”一般指处于目标值的+/-10%内。例如,除非在其使用的明确的上下文中以其他方式指定,否则术语“基本上相等”、“大约相等”和“近似相等”意指在如此描述的物体之间仅存在偶然变化。在本领域中,此类变化典型地不大于预定的目标值的+/-10%。
应当理解,如此使用的术语在适当情况下是可互换的,例如使得本文中所描述的本发明的实施例能够以不同于本文中所图示或以其他方式描述的那些取向的其他取向来操作。
除非另外指定,否则使用序数形容词“第一”、“第二”、“第三”等来描述公共对象,仅仅指示类似对象的不同实例被提及,并且不旨在暗示如此描述的对象必须在时间上、空间上、排名上、或以任何其他方式处于给定序列中。
在说明书和权利要求书中的术语“左”、“右”、“前”、“后”、“顶”、“底”、“在……上方”、“在……下方”等(如果有)用于描述性目的,并且不一定用于描述永久的相对位置。例如,如本文中所使用的术语“在……上方”、“在……下方”、“前侧”、“后侧”、“顶”、“底”,“在……上方”、“在……下方”和“在……上”是指一个组件、结构或材料相对于设备中其他所引用的组件、结构或材料的相对位置,其中此类物理关系是显著的。本文仅出于描述性目的采用这些术语,并且这些术语主要在设备z轴的上下文内,因此这些术语可以相对于设备的取向。因此,如果设备相对于所提供的图的上下文上下颠倒地取向,则在本文中所提供的图中的上下文中在第二材料“上方”的第一材料也可以在该第二材料“下方”。在材料的上下文中,设置在另一材料上方或下方的一种材料可直接接触,或者可具有一种或多种中介材料。此外,设置在两种材料之间的一种材料可直接与这两个层接触,或者可具有一个或多个中介层。相比之下,在第二材料“上”的第一材料与该第二材料直接接触。在组件组装件的上下文中进行类似的区分。
可在设备的z轴、x轴或y轴的上下文中采用术语“在……之间”。在两种其他材料之间的材料可以与那两种材料中的一种或两种接触,或者该材料可通过一种或多种中介材料来与其他那两种材料两者分开。因此,在两种其他材料“之间”的材料可以与其他那两种材料中的任一种接触,或者该材料可通过中介材料耦合至其他那两种材料。在两个其他设备之间的设备可直接连接至那两个设备中的一个或两个,或者该设备可通过一个或多个中介设备与其他那两个设备两者分开。
如贯穿说明书以及在权利要求书中所使用,由术语“中的至少一个”或“中的一个或多个”联接的项列表可意指所列举的项的任何组合。例如,短语“A、B或C中的至少一个”可意指A;B;C;A和B;A和C;B和C;或A、B和C。应指出,附图的具有与任何其他附图的要素相同的附图标记(或名称)的那些要素能以与所描述的方式类似的任何方式操作或起作用,但不被限于此。
此外,本公开中讨论的组合逻辑和时序逻辑的各种元件可涉及物理结构(诸如,AND门、OR门或XOR门),或涉及实现作为所讨论的逻辑的布尔等效的逻辑结构的器件的合成的或以其他方式优化的集合。
随着流水线的宽度和深度在乱序处理器核中增加,每次分支误预测的损失也增加。当分支误预测之后跟随不期望的核前端事件(诸如微操作(微op)高速缓存未命中)时,损失(例如,其也可称为误预测成本)可能会加剧,这可能导致在将正确路径微操作提供给核的后端时的更高的等待时间(以及例如气泡)。例如,如果微操作高速缓存未命中,则传统的解码路径(例如,MITE)可能必须按要求取出并解码指令,并且然后将指令推送到后端以供执行。在一些核中,与访问微操作高速缓存相比,MITE解码可能具有更长的等待时间、更低的带宽和更高的功率利用,并且因此此类事件序列可能会在一大类工作负载上恶化CPU前端的瓶颈。
分支预测可指使条件分支的两条路径能够同时被取出、解码和分配到后端的技术。基于分支执行,来自路径中的一条路径的指令被选择,而另一条路径从流水线中被移除。由于分支预测导致两条路径都被分配到后端,因此处理器核中的额外资源被推测性地保留,这可能全局地降低诸如每周期指令(IPC)之类的性能指标。高效的分支预测通常还需要编译器支持以提供提示,从而使需要被预测的分支最小化。
在一些处理器核中,用于所预测的被采用分支的解码路径可以是用于将指令提供到后端中的主解码路径。例如,与传统解码路径(例如,诸如MITE路径)相比,主解码指令路径可以被更高效地利用(例如,在许多场景下大于约80%)。在这些时段期间,传统解码路径可能是可用的,并且可能具有空闲周期。一些实施例可以提供以下技术:在替代路径可能实际被需要之前(例如,用于在未来分支误预测的情况下利用),伺机利用传统解码路径来提前取出并解码来自难以预测(H2P)的分支的替代路径的指令。例如,替代路径可以指未被分支预测器预测为被采用的程序路径。有利的是,一些实施例可以帮助隐藏在检测到分支已经被误预测之后取出并解码这些指令的等待时间。例如,一些实施例可以有效地并且推测性地利用MITE路径来减轻处理器核的CPU前端气泡(例如,等待时间损失)。在一些实施例中,微操作高速缓存条目可以仅基于可用性进行分配,这可能产生与分支预测技术相比对稀缺的CPU资源的更好的利用。此外,一些实施例在没有编译器支持的情况下可以是有效的。
参照图1,集成电路100的实施例可以包括核111、以及耦合至核111的用于对一条或多条指令解码的前端单元112。前端单元112可以包括:第一解码路径113(例如,主解码路径,其对先前看到的指令进行高速缓存),第二解码路径114(例如,传统解码路径,用于对新看到的指令解码),以及电路115,该电路115用于:预测一条或多条指令中的条件分支指令的被采用分支,发送来自第一解码路径113的被采用分支的所预测的路径的指令,确定条件分支指令是否对应于难以预测(H2P)的条件分支指令以及第二解码路径114是否可用,并且如果确定如此,则在第二解码路径114上对H2P条件分支指令的不被采用分支的替代路径解码。例如,电路115可以被配置为在第二解码路径114的空闲周期上对H2P条件分支指令的替代路径解码。在一些实施例中,前端单元112可以进一步包括指令高速缓存116,并且电路115可以进一步被配置为:仅在H2P条件分支指令在指令高速缓存116中的高速缓存行上命中的情况下,在第二解码路径114上对H2P条件分支指令的替代路径解码。在一些实施例中,电路115还可以被配置为确定一条或多条指令是否包括用于指示H2P条件分支指令的指令集架构(ISA)扩展,并且如果确定如此,则基于ISA扩展的扩展位来确定一条或多条指令是否包括H2P条件分支指令。
在一些实施例中,前端单元112可以进一步包括经解码微操作(微op)高速缓存117,并且电路115可以进一步被配置为:将一组通道指派给经解码微操作高速缓存117,保留该组通道的子集用于来自替代路径的经解码的指令,并且在通道的保留子集中捕捉来自替代路径的经解码的指令。例如,电路115还可以被配置为一旦所预测的路径被确定为是正确的就使通道的保留子集中的条目无效,和/或如果所预测的路径被确定为不正确则将来自通道的保留子集的经解码的指令提供至后端单元。
前端单元112、第一解码路径113、第二解码路径114、电路115、指令高速缓存116和/或经解码微操作高速缓存117的实施例可以并入处理器中,处理器包括例如,核990(图6B)、核1102A-N(图8、图12)、处理器1210(图9)、协处理器1245(图9)、处理器1370(图10-图11)、处理器/协处理器1380(图10-图11)、协处理器1338(图10-图11)、协处理器1520(图12)、和/或处理器1614、1616(图13)。具体而言,电路115、指令高速缓存116和/或经解码微操作高速缓存117的实施例可以并入前端单元930(图6B)。
参照图2A至图2C,方法200的实施例可以包括:在框221处,预测一条或多条指令中的条件分支指令的被采用分支;在框222处,在第一解码路径上对被采用分支的所预测的路径解码;在框223处,确定条件分支指令是否对应于H2P条件分支指令以及第二解码路径是否可用;以及如果确定如此,则在框224处,在第二解码路径上对H2P条件分支指令的不被采用分支的替代路径解码。例如,方法200可以包括:在框225处,在第二解码路径的空闲周期上对H2P条件分支指令的替代路径解码。方法200还可以包括:在框226处,仅在H2P条件分支指令在指令高速缓存中的高速缓存行上命中的情况下,在第二解码路径上对H2P条件分支指令的替代路径解码。方法200的一些实施例可以进一步包括:在框227处,确定一条或多条指令是否包括用于指示H2P条件分支指令的ISA扩展,并且如果确定如此,则在框228处,基于ISA扩展的扩展位确定一条或多条指令是否包括H2P条件分支指令。
方法200的一些实施例可以进一步包括:在框229处,将一组通道指派给经解码微操作高速缓存;在框230处,保留该组通道的子集用于来自替代路径的经解码的指令;以及在框231处,在通道的保留子集中捕捉来自替代路径的经解码的指令。方法200还可以包括:在框232处,一旦所预测的路径被确定为是正确的就使通道的保留子集中的条目无效,和/或在框233处,如果所预测的路径被确定为不正确则将来自通道的保留子集的经解码的指令提供至后端单元。
参照图3,装置300的实施例可以包括用于执行一条或多条经解码的指令的后端单元311,以及通信地耦合至后端单元311的、用于对一条或多条指令解码的前端单元312。前端单元312可以包括:第一解码路径313,第二解码路径314,以及电路315,该电路315用于:预测一条或多条指令中的条件分支指令的被采用分支,在第一解码路径313上对被采用分支的所预测的路径解码,确定条件分支指令是否对应于H2P条件分支指令以及第二解码路径314是否可用,并且如果确定如此,则在第二解码路径314上对H2P条件分支指令的不被采用分支的替代路径解码。例如,电路315可以被配置为在第二解码路径314的空闲周期上对H2P条件分支指令的替代路径解码。在一些实施例中,前端单元312可以进一步包括指令高速缓存316,并且电路315可以进一步被配置为:仅在难以预测的条件分支指令在指令高速缓存316中的高速缓存行上命中的情况下,在第二解码路径314上对H2P条件分支指令的替代路径解码。在一些实施例中,电路315还可以被配置为:确定一条或多条指令是否包括用于指示H2P条件分支指令的指令集架构(ISA)扩展,并且如果确定如此,则基于ISA扩展的扩展位来确定一条或多条指令是否包括H2P条件分支指令。
在一些实施例中,前端单元312可以进一步包括经解码微操作高速缓存317,并且电路315可以进一步被配置为:将一组通道指派给经解码微操作高速缓存317,保留该组通道的子集用于来自替代路径的经解码的指令,并且在通道的保留子集中捕捉来自替代路径的经解码的指令。例如,电路315还可以被配置为:一旦所预测的路径被确定为是正确的就使通道的保留子集中的条目无效,和/或如果所预测的路径被确定为不正确则将来自通道的保留子集的经解码的指令提供至后端单元311。
前端单元312、第一解码路径313、第二解码路径314、电路315、指令高速缓存316和/或经解码微操作高速缓存317的实施例可以并入处理器中,处理器包括例如,核990(图6B)、核1102A-N(图8、图12)、处理器1210(图9)、协处理器1245(图9)、处理器1370(图10-图11)、处理器/协处理器1380(图10-图11)、协处理器1338(图10-图11)、协处理器1520(图12)、和/或处理器1614、1616(图13)。具体而言,电路315、指令高速缓存316和/或经解码微操作高速缓存317的实施例可以并入前端单元930(图6B)。
一些实施例提供通过微架构和ISA扩展、通过对替代代码路径的推测性取出和解码的用于动态H2P分支实例的损失缓解的技术。分支误预测损失可能导致空闲的乱序(OOO)后端,其中后端被暴露或停止,直到前端能够提供正确的路径指令。例如,分支误预测可能导致流水线转储清除,并且需要从正确路径重新定向。为了隐藏当微操作高速缓存未命中时取出和解码正确路径的等待时间,一些实施例提供用于急切地取出和解码替代路径的技术。一些实施例可以监测和/或检测到传统解码路径足够空闲以至于不会延迟已经在流水线中的指令。一般来说,绝大部分(例如,>80%)的引退指令可能来自微操作高速缓存,这表明传统解码路径总体上足够空闲来伺机支持对某些动态分支的替代路径的急切的取出和解码。
代替于对每个分支实例执行推测(例如,这可能会浪费资源),一些实施例仅针对H2P分支。例如,H2P分支可能占动态误预测的绝大部分(例如,>90%),但可能对应于静态程序计数器(PC)的小得多的百分比(例如,仅在约13-28%之间)。根据一些实施例,对于与H2P分支对应的PC,刚好在所预测的路径进入后端之后(例如,在所预测的路径被分配到指令解码队列(IDQ)中之后),替代路径被取出,被解码,并被存储在微操作高速缓存中。如果分支实例实际上被正确地预测,则推测是不必要的,并且存储替代路径的微操作高速缓存通道可以被立即无效(例如,启用对该通道的重新使用)。在不需要时释放微操作高速缓存通道大大降低了微操作高速缓存的压力,而急切地取出和解码替代路径高效地隐藏了在由前端重新定向事件启动的关键流水线转储清除时的取出和解码等待时间。
通过急切地取出和解码H2P(例如,有时也被称为“薄片(flaky)”)分支的替代路径上的指令(例如,在从微操作高速缓存馈送到后端的其他指令的影子中),一些实施例可以有利地缓解具有宽且深的流水线的乱序处理器核中的大的分支误预测损失和低能效。在一些实施例中,低复杂度的实现方式可以通过将所预取和传统的解码路径微操作存储在微操作高速缓存中并明智地管理推测性地获得的资源来有利地改善处理器功率和性能。例如,一些实施例提供了具有重点干预的技术,以仅标识某些条件分支(例如,H2P、薄片等)并且对其执行推测,这些条件分支对应于应用中的所有分支的小得多的子集。有利的是,一些实施例可以显著地减少分支误预测后的IDQ写入气泡(例如,取决于指令高速缓存命中率),这可以直接转换为成比例的执行周期减少和显著的CPU功率节约,因为后端本来将已经是完全停止的并且消耗功率。
参照图4,OOO处理器核400的实施例包括:存储器子系统411,BPU 413,指令取出电路415,预解码电路417,指令队列418,解码器419,微操作高速缓存421,多路复用器423,IDQ425,分配/重命名电路427,乱序核431,预留站(RS)433,重排序缓冲器(ROB)435,和加载/存储缓冲器437,如图所示连接。存储器子系统411包括:L1指令高速缓存(I-高速缓存),L1数据高速缓存(DCU),L2高速缓存,L3高速缓存,指令转换后备缓冲器(ITLB),数据转换后备缓冲器(DTLB),共享转换后备缓冲器(STLB),和页表,如图所示连接。OOO核431包括预留站(RS)、执行电路和地址生成电路,如图所示连接。OOO处理器400的微架构进一步包括H2P跟踪器电路445,以及其他电路,以使对H2P分支的替代路径的急切取出能够隐藏分支误预测等待时间。可以利用任何合适的技术来标识H2P分支。例如,H2P跟踪器可以维护小表,其跟踪具有最多误预测的分支的指令指针(IP)。
如图4所示,虚线被编号以图示示例过程流。在箭头1处,传入的高速缓存行从指令高速缓存进入流水线。括号2表示OOO处理器400的主解码路径。例如,主解码路径对应于已经被看到并解码的指令的高速缓存。在箭头3处,微操作高速缓存421捕捉来自主解码路径的所预测的路径的指令。在箭头4处,H2P跟踪器445标识H2P分支已经进入流水线,并且在箭头5处,H2P跟踪器445启动对来自替代路径的指令的“早”取出。如果指令高速缓存在替代路径上未命中,则H2P跟踪器445不触发从更低级别的高速缓存的取出。括号7表示OOO处理器400的传统解码路径。例如,传统解码路径可以对应于替代经解码指令路径(例如,有时在一些处理器中被称为MITE)。如果替代路径在指令高速缓存中命中,则替代路径被发送通过传统解码路径以供解码。由于微操作高速缓存421对来自主解码路径的指令提供高覆盖率,因此传统解码路径通常具有足够的空闲周期来解码替代路径。OOO处理器400可以进一步包括用于确保替代路径仅在传统解码路径的空闲周期上被解码的电路。
在对替代路径的取出和解码之后,与替代路径对应的经解码的微操作被存储在微操作高速缓存中(例如,可以进行检查以确定经解码的操作是否还未存在于微操作高速缓存421中以避免重复)。微操作高速缓存421可以具有每组N个通道(例如,在某个处理器中,N可以在8-16的范围内)。在框7处,一些实施例可以仅保留每组有限的可调整数量的通道(例如,每组约2-4个通道)以用于替代路径。由于微操作高速缓存421可能是小结构,并且BPU413可能以相对高的准确度进行预测,因此一般而言,用于替代路径的条目利用可以被配置为限制对微操作高速缓存421的压力。在箭头8处,在分支完成执行并且分支预测结果是正确的之后,使与替代路径对应的微操作无效。如果分支预测结果是不正确的,则将来自替代路径的、被高速缓存在微操作高速缓存421中的保留通道中的所高速缓存的微操作迅速提供至后端。在一些实施例中,在当前经解码的行不能被分配到微操作高速缓存421中时,或者在另一个H2P分支进入流水线时,沿替代路径的取出可以被停止。
OOO处理器400的实施例可以利用MITE来伺机早解码指令,并且经解码的指令被存储在微操作高速缓存421中以更快地馈送至后端。一些H2P条件分支的两条路径可能是确定性的,并且对此类H2P分支的误预测可能主导整体性能瓶颈。有利的是,对此类H2P分支的替代路径的急切的早解码的实施例在微操作高速缓存421中捕捉对应的经解码的微操作,并帮助显著地隐藏分支误预测的等待时间。
由于微操作高速缓存421可能是小尺寸的结构,因此对过多条件分支的替代路径的推测性的取出和解码可能增加微操作高速缓存421中的分配压力并降低其效果(例如,因为替代路径仅在分支误预测时才有用)。H2P分支包括那些经常误预测并导致性能损失的条件分支。有利的是,一些实施例标识H2P分支的IP,并且仅在所标识的分支IP进入流水线时解码对应的替代路径,以推测性地取出/解码一组有限的误预测IP,同时以微操作高速缓存421中所需的相对有限的空间在微操作高速缓存421中为误预测提供大量覆盖。
参照图5A,分支指令500的实施例包括分支操作511和ISA扩展位512。例如,一些实施例可以包括用于取出和解码替代路径的ISA扩展。根据一些实施例,如上所述,跟踪H2P分支和取出替代路径可以在硬件中透明地完成。然而,在一些实施例中,该技术的效率可以通过经由ISA扩展而到来的编译器提示来增强,其有助于标识一组最佳的分支PC来急切地取出替代路径。
参照图5B,用于标识特定分支的替代路径是否需要被推测性地取出和解码的方法550的实施例以在框551处对分支程序计数器解码开始。然后,方法550包括:在框552处确定分支是否是ISA扩展的,并且如果否,则在框553处应用默认策略。如果在框552处确定分支是ISA扩展的,则方法550可以继续在框554处确定扩展位是否被设置。如果是,则方法550可以继续在框555处取出替代路径。否则,方法550可以在框556处阻止对替代路径的取出。有利的是,利用简单的ISA扩展,可以缩小要对其推测性地取出和解码替代路径的一组分支,以更好地或最优地使用资源。先前的概况分析信息可以被编译器使用以设置扩展位,以增强分配到不同的表中。
有利的是,一些实施例显著减少了IDQ写入气泡(例如,IDQ在分支误预测后必须等待指令到达IDQ的周期数量的减少),当指令高速缓存命中率更高时提供更多的减少(其可能是代码预取器的尺寸、质量、激进度等的函数)。分支误预测后的所暴露的IDQ写入气泡的减少可以直接转换为性能增益(例如,减少引退气泡,这进而产生成比例的IPC增益)。
尽管推测性地取出和解码替代路径来隐藏分支误预测等待时间的一些实施例仅适用于在指令高速缓存中命中的实例,但其他实施例涵盖当替代路径在指令高速缓存中未命中的情况。取决于H2P分支何时解析,例如,可以完成对在指令高速缓存中未命中的替代路径的推测性地取出和解码,或者可以以其他方式帮助覆盖误预测损失的一部分。因此,即使替代路径未命中指令高速缓存,实施例也可以提供性能增益。
本领域技术人员将领会,各种设备可受益于前述实施例。以下示例性核架构、处理器和计算机架构是可受益地并入本文中描述的技术的实施例的设备的非限制性示例。
示例性核架构、处理器和计算机架构
处理器核能以不同方式、出于不同的目的、在不同的处理器中实现。例如,此类核的实现可以包括:1)旨在用于通用计算的通用有序核;2)旨在用于通用计算的高性能通用乱序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)CPU,其包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用乱序核;以及2)协处理器,其包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核。此类不同的处理器导致不同的计算机系统架构,这些计算机系统架构可包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相同的封装中但在分开的管芯上的协处理器;3)与CPU在相同管芯上的协处理器(在该情况下,此类协处理器有时被称为专用逻辑或被称为专用核,该专用逻辑诸如,集成图形和/或科学(吞吐量)逻辑);以及4)芯片上系统,其可以将所描述的CPU(有时被称为(多个)应用核或(多个)应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上。接着描述示例性核架构,随后描述示例性处理器和计算机架构。
示例性核架构
有序和乱序核框图
图6A是图示根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的乱序发布/执行流水线的框图。图6B是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核的框图。图6A-图6B中的实线框图示有序流水线和有序核,而虚线框的任选增加图示寄存器重命名的、乱序发布/执行流水线和核。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图6A中,处理器流水线900包括取出级902、长度解码级904、解码级906、分配级908、重命名级910、调度(也被称为分派或发布)级912、寄存器读取/存储器读取级914、执行级916、写回/存储器写入级918、异常处置级922和提交级924。
图6B示出处理器核990,该处理器核990包括前端单元930,该前端单元930耦合到执行引擎单元950,并且前端单元930和执行引擎单元950两者都耦合到存储器单元970。核990可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或替代的核类型。作为又一选项,核990可以是专用核,诸如例如,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核,等等。
前端单元930包括分支预测单元932,该分支预测单元932耦合到指令高速缓存单元934,该指令高速缓存单元934耦合到指令转换后备缓冲器(TLB)936,该指令转换后备缓冲器936耦合到指令取出单元938,该指令取出单元938耦合到解码单元940。解码单元940(或解码器)可对指令解码,并且生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元940可使用各种不同的机制来实现。合适机制的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核990包括存储用于某些宏指令的微代码的微代码ROM或其他介质(例如,在解码单元940中,或以其他方式在前端单元930内)。解码单元940耦合到执行引擎单元950中的重命名/分配器单元952。
执行引擎单元950包括重命名/分配器单元952,该重命名/分配器单元952耦合到引退单元954和一个或多个调度器单元的集合956。(多个)调度器单元956表示任何数量的不同调度器,包括预留站、中央指令窗等。(多个)调度器单元956耦合到(多个)物理寄存器堆单元958。(多个)物理寄存器堆单元958中的每一个物理寄存器堆单元表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一种或多种不同的数据类型,诸如,标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点,状态(例如,作为要执行的下一条指令的地址的指令指针)等等。在一个实施例中,(多个)物理寄存器堆单元958包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器和通用寄存器。(多个)物理寄存器堆单元958由引退单元954重叠,以图示可实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来文件、(多个)历史缓冲器、(多个)引退寄存器堆;使用寄存器映射和寄存器池,等等)。引退单元954和(多个)物理寄存器堆单元958耦合到(多个)执行集群960。(多个)执行集群960包括一个或多个执行单元的集合962以及一个或多个存储器访问单元的集合964。执行单元962可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可包括仅一个执行单元或全都执行所有功能的多个执行单元。(多个)调度器单元956、(多个)物理寄存器堆单元958和(多个)执行集群960示出为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线,和/或各自具有其自身的调度器单元、(多个)物理寄存器堆单元和/或执行集群的存储器访问流水线——并且在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行集群具有(多个)存储器访问单元964的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,并且其余流水线可以是有序的。
存储器访问单元的集合964耦合到存储器单元970,该存储器单元970包括数据TLB单元972,该数据TLB单元972耦合到数据高速缓存单元974,该数据高速缓存单元974耦合到第二级(L2)高速缓存单元976。在一个示例性实施例中,存储器访问单元964可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合到存储器单元970中的数据TLB单元972。指令高速缓存单元934还耦合到存储器单元970中的第二级(L2)高速缓存单元976。L2高速缓存单元976耦合到一个或多个其他级别的高速缓存,并最终耦合到主存储器。
作为示例,示例性寄存器重命名的乱序发布/执行核架构可如下所述地实现流水线900:1)指令取出938执行取出级902和长度解码级904;2)解码单元940执行解码级906;3)重命名/分配器单元952执行分配级908和重命名级910;4)(多个)调度器单元956执行调度级912;5)(多个)物理寄存器堆单元958和存储器单元970执行寄存器读取/存储器读取级914;执行集群960执行执行级916;6)存储器单元970和(多个)物理寄存器堆单元958执行写回/存储器写入级918;7)各单元可牵涉到异常处置级922;以及8)引退单元954和(多个)物理寄存器堆单元958执行提交级924。
核990可支持一个或多个指令集(例如,x86指令集(具有已与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集(具有诸如NEON的任选的附加扩展)),其中包括本文中描述的(多条)指令。在一个实施例中,核990包括用于支持紧缩数据指令集扩展(例如,AVX1、AVX2)的逻辑,由此允许使用紧缩数据来执行由许多多媒体应用使用的操作。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如
Figure BDA0003367980640000161
超线程化技术中的同时多线程化)。
尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管所图示的处理器的实施例还包括分开的指令和数据高速缓存单元934/974以及共享的L2高速缓存单元976,但是替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如,第一级(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
具体的示例性有序核架构
图7A-图7B图示更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块(包括相同类型和/或不同类型的其他核)中的一个逻辑块。取决于应用,逻辑块通过高带宽互连网络(例如,环形网络)与一些固定的功能逻辑、存储器I/O接口和其他必要的I/O逻辑进行通信。
图7A是根据本发明的实施例的单个处理器核以及它至管芯上互连网络1002的连接及其第二级(L2)高速缓存的本地子集1004的框图。在一个实施例中,指令解码器1000支持具有紧缩数据指令集扩展的x86指令集。L1高速缓存1006允许对进入标量和向量单元中的、对高速缓存存储器的低等待时间访问。尽管在一个实施例中(为了简化设计),标量单元1008和向量单元1010使用分开的寄存器集合(分别为标量寄存器1012和向量寄存器1014),并且在这些寄存器之间传输的数据被写入到存储器,并随后从第一级(L1)高速缓存1006读回,但是本发明的替代实施例可以使用不同的方法(例如,使用单个寄存器集合或包括允许数据在这两个寄存器堆之间传输而无需被写入和读回的通信路径)。
L2高速缓存的本地子集1004是全局L2高速缓存的一部分,该全局L2高速缓存被划分成多个分开的本地子集,每个处理器核一个本地子集。每个处理器核具有到其自身的L2高速缓存的本地子集1004的直接访问路径。由处理器核读取的数据被存储在其L2高速缓存子集1004中,并且可以与其他处理器核访问其自身的本地L2高速缓存子集并行地被快速访问。由处理器核写入的数据被存储在其自身的L2高速缓存子集1004中,并在必要的情况下从其他子集转储清除。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2高速缓存和其他逻辑块之类的代理在芯片内彼此通信。每个环形数据路径为每个方向1012位宽。
图7B是根据本发明的实施例的图7A中的处理器核的一部分的展开图。图7B包括L1高速缓存1006的L1数据高速缓存1006A部分,以及关于向量单元1010和向量寄存器1014的更多细节。具体地,向量单元1010是16宽向量处理单元(VPU)(见16宽ALU 1028),该单元执行整数、单精度浮点以及双精度浮点指令中的一个或多个。该VPU通过混合单元1020支持对寄存器输入的混合,通过数值转换单元1022A-B支持数值转换,并且通过复制单元1024支持对存储器输入的复制。写掩码寄存器1026允许掩蔽所得的向量写入。
图8是根据本发明的实施例的可具有多于一个的核、可具有集成存储器控制器、以及可具有集成图形器件的处理器1100的框图。图8中的实线框图示具有单个核1102A、系统代理1110、一个或多个总线控制器单元的集合1116的处理器1100,而虚线框的任选增加图示具有多个核1102A-N、系统代理单元1110中的一个或多个集成存储器控制器单元的集合1114以及专用逻辑1108的替代处理器1100。
因此,处理器1100的不同实现可包括:1)CPU,其中专用逻辑1108是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核1102A-N是一个或多个通用核(例如,通用有序核、通用乱序核、这两者的组合);2)协处理器,其中核1102A-N是旨在主要用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中核1102A-N是大量通用有序核。因此,处理器1100可以是通用处理器、协处理器或专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、嵌入式处理器,等等。该处理器可以被实现在一个或多个芯片上。处理器1100可以是一个或多个基板的一部分,和/或可使用多种工艺技术(诸如例如,BiCMOS、CMOS、或NMOS)中的任何技术被实现在一个或多个基板上。
存储器层次结构包括核1102A-N内的一个或多个级别的相应的高速缓存1104A-N、一个或多个共享高速缓存单元的集合1106、以及耦合到集成存储器控制器单元的集合1114的外部存储器(未示出)。共享高速缓存单元的集合1106可包括一个或多个中间级别的高速缓存,诸如,第二级(L2)、第三级(L3)、第四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)和/或以上各项的组合。虽然在一个实施例中,基于环的互连单元1112将集成图形逻辑1108、共享高速缓存单元的集合1106以及系统代理单元1110/(多个)集成存储器控制器单元1114互连,但是替代实施例可使用任何数量的公知技术来互连此类单元。在一个实施例中,在一个或多个高速缓存单元1106与核1102A-N之间维持一致性。
在一些实施例中,一个或多个核1102A-N能够实现多线程化。系统代理1110包括协调和操作核1102A-N的那些部件。系统代理单元1110可包括例如功率控制单元(PCU)和显示单元。PCU可以是对核1102A-N以及集成图形逻辑1108的功率状态进行调节所需的逻辑和部件,或可包括这些逻辑和部件。显示单元用于驱动一个或多个外部连接的显示器。
核1102A-N在架构指令集方面可以是同构的或异构的;即,核1102A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。
示例性计算机架构
图9-图12是示例性计算机架构的框图。本领域中已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。
现在参考图9,所示出的是根据本发明一个实施例的系统1200的框图。系统1200可以包括一个或多个处理器1210、1215,这些处理器耦合到控制器中枢1220。在一个实施例中,控制器中枢1220包括图形存储器控制器中枢(GMCH)1290和输入/输出中枢(IOH)1250(其可以在分开的芯片上);GMCH 1290包括存储器和图形控制器,存储器1240和协处理器1245耦合到该存储器和图形控制器;IOH 1250将输入/输出(I/O)设备1260耦合到GMCH1290。或者,存储器和图形控制器中的一个或这两者被集成在(如本文中所描述的)处理器内,存储器1240和协处理器1245直接耦合到处理器1210,并且控制器中枢1220与IOH1250处于单个芯片中。
附加的处理器1215的任选性在图9中通过虚线来表示。每一处理器1210、1215可包括本文中描述的处理核中的一个或多个,并且可以是处理器1100的某一版本。
存储器1240可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢1220经由诸如前端总线(FSB)之类的多分支总线、诸如快速路径互连(QPI)之类的点对点接口、或者类似的连接1295来与(多个)处理器1210、1215进行通信。
在一个实施例中,协处理器1245是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。在一个实施例中,控制器中枢1220可以包括集成图形加速器。
在物理资源1210、1215之间可以存在包括架构、微架构、热、功耗特性等一系列品质度量方面的各种差异。
在一个实施例中,处理器1210执行控制一般类型的数据处理操作的指令。嵌入在这些指令内的可以是协处理器指令。处理器1210将这些协处理器指令识别为具有应当由附连的协处理器1245执行的类型。因此,处理器1210在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1245。(多个)协处理器1245接受并执行所接收的协处理器指令。
现在参见图10,所示出的是根据本发明的实施例的第一更具体的示例性系统1300的框图。如图10中所示,多处理器系统1300是点对点互连系统,并且包括经由点对点互连1350耦合的第一处理器1370和第二处理器1380。处理器1370和1380中的每一个都可以是处理器1100的某一版本。在本发明的一个实施例中,处理器1370和1380分别是处理器1210和1215,而协处理器1338是协处理器1245。在另一实施例中,处理器1370和1380分别是处理器1210和协处理器1245。
处理器1370和1380示出为分别包括集成存储器控制器(IMC)单元1372和1382。处理器1370还包括作为其总线控制器单元的一部分的点对点(P-P)接口1376和1378;类似地,第二处理器1380包括P-P接口1386和1388。处理器1370、1380可以经由使用点对点(P-P)接口电路1378、1388的P-P接口1350来交换信息。如图10中所示,IMC 1372和1382将处理器耦合到相应的存储器,即存储器1332和存储器1334,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器1370、1380可各自经由使用点对点接口电路1376、1394、1386、1398的各个P-P接口1352、1354来与芯片组1390交换信息。芯片组1390可以任选地经由高性能接口1339和接口1392来与协处理器1338交换信息。在一个实施例中,协处理器1338是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。
共享高速缓存(未示出)可被包括在任一处理器中,或在这两个处理器的外部但经由P-P互连与这些处理器连接,使得如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
芯片组1390可以经由接口1396耦合到第一总线1316。在一个实施例中,第一总线1316可以是外围部件互连(PCI)总线或诸如PCI快速总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图10中所示,各种I/O设备1314可连同总线桥1318一起耦合到第一总线1316,该总线桥1318将第一总线1316耦合到第二总线1320。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器1315耦合到第一总线1316。在一个实施例中,第二总线1320可以是低引脚数(LPC)总线。在一个实施例中,各种设备可耦合到第二总线1320,这些设备包括例如键盘和/或鼠标1322、通信设备1327以及存储单元1328,该存储单元1328诸如可包括指令/代码和数据1330的盘驱动器或者其他大容量存储设备。此外,音频I/O 1324可以被耦合到第二总线1320。注意,其他架构是可能的。例如,代替图10的点对点架构,系统可以实现多分支总线或其他此类架构。
现在参考图11,示出的是根据本发明的实施例的第二更具体的示例性系统1400的框图。图10和图11中的类似元件使用类似的附图标记,并且从图11中省略了图10的某些方面以避免混淆图11的其他方面。
图11图示处理器1370、1380可分别包括集成存储器和I/O控制逻辑(“CL”)1472和1482。因此,CL 1472、1482包括集成存储器控制器单元,并包括I/O控制逻辑。图11图示不仅存储器1332、1334耦合到CL 1472、1482,而且I/O设备1414也耦合到控制逻辑1472、1482。传统I/O设备1415被耦合到芯片组1390。
现在参考图12,示出的是根据本发明的实施例的SoC 1500的框图。图8中的类似要素使用类似的附图标记。另外,虚线框是更先进的SoC上的任选的特征。在图12中,(多个)互连单元1502被耦合到:应用处理器1510,其包括一个或多个核的集合1102A-N以及(多个)共享高速缓存单元1106;系统代理单元1110;(多个)总线控制器单元1116;(多个)集成存储器控制器单元1114;一个或多个协处理器的集合1520,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1530;直接存储器访问(DMA)单元1532;以及用于耦合到一个或多个外部显示器的显示单元1540。在一个实施例中,(多个)协处理器1520包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器,等等。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或此类实现方式的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码(诸如,图10中图示的代码1330)应用于输入指令,以执行本文中描述的功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有处理器的任何系统,该处理器诸如例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可以用高级的面向过程的编程语言或面向对象的编程语言来实现,以便与处理系统通信。如果需要,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定的编程语言的范围。在任何情况下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制造用于执行本文中所述的技术的逻辑。被称为“IP核”的此类表示可以被存储在有形的机器可读介质上,并可被供应给各个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
此类机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非暂态、有形布置,其包括存储介质,诸如硬盘;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括非暂态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。
仿真(包括二进制变换、代码变形等)
在一些情况下,指令转换器可用于将指令从源指令集转换至目标指令集。例如,指令转换器可以将指令变换(例如,使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其他方式转换成要由核处理的一条或多条其他指令。指令转换器可以用软件、硬件、固件、或其组合来实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图13是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所图示的实施例中,指令转换器是软件指令转换器,但替代地,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图13示出可使用x86编译器1604来编译高级语言1602形式的程序,以生成可由具有至少一个x86指令集核的处理器1616原生执行的x86二进制代码1606。具有至少一个x86指令集核的处理器1616表示通过兼容地执行或以其他方式处理以下各项来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能的任何处理器:1)英特尔x86指令集核的指令集的实质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器1604表示可操作用于生成x86二进制代码1606(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器1616上执行。类似地,图13示出可以使用替代的指令集编译器1608来编译高级语言1602形式的程序,以生成可以由不具有至少一个x86指令集核的处理器1614(例如,具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生执行的替代的指令集二进制代码1610。指令转换器1612用于将x86二进制代码1606转换成可以由不具有x86指令集核的处理器1614原生执行的代码。该转换后的代码不大可能与替代的指令集二进制代码1610相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作,并且由来自替代指令集的指令构成。因此,指令转换器1612通过仿真、模拟或任何其他过程来表示允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码1606的软件、固件、硬件或其组合。
本文中描述了用于ISA操作码参数化的技术和架构。在上文描述中,出于解释的目的,阐述了众多具体细节以提供对某些实施例的透彻理解。然而,对本领域技术人员而言将显而易见的是,某些实施例可在无需这些具体细节的情况下实施。在其他实例中,以框图形式示出结构和设备以避免使描述含糊。
附加注解与示例
示例1包括一种集成电路,包括:核;以及前端单元,耦合至核,用于对一条或多条指令解码,其中,前端单元包括:第一解码路径;第二解码路径;以及电路,用于:预测一条或多条指令中的条件分支指令的被采用分支;在第一解码路径上对被采用分支的所预测的路径解码;确定条件分支指令是否对应于难以预测的条件分支指令以及第二解码路径是否可用;以及如果确定如此,则在第二解码路径上对难以预测的条件分支指令的不被采用分支的替代路径解码。
示例2包括如示例1的集成电路,其中,电路进一步用于:在第二解码路径的空闲周期上对难以预测的条件分支指令的替代路径解码。
示例3包括如示例1至2中任一项的集成电路,其中,前端单元进一步包括指令高速缓存,并且其中,电路进一步用于:仅在难以预测的条件分支指令在指令高速缓存中的高速缓存行上命中的情况下,在第二解码路径上对难以预测的条件分支指令的替代路径解码。
示例4包括如示例1至3中任一项的集成电路,其中,电路进一步用于:确定一条或多条指令是否包括用于指示难以预测的条件分支指令的指令集架构扩展;以及如果确定如此,则基于指令集架构扩展的扩展位来确定一条或多条指令是否包括难以预测的条件分支指令。
示例5包括如示例1至4中任一项的集成电路,其中,前端单元进一步包括解码微操作高速缓存,并且其中,电路进一步用于:将一组通道指派给解码微操作高速缓存;保留该组通道的子集用于来自替代路径的经解码的指令;以及在通道的保留子集中捕捉来自替代路径的经解码的指令。
示例6包括如示例5的集成电路,其中,电路进一步用于:一旦所预测的路径被确定为是正确的,就使通道的保留子集中的条目无效。
示例7包括如示例5至6中任一项的集成电路,其中,电路进一步用于:如果所预测的路径被确定为不正确,则将来自通道的保留子集的经解码的指令提供至后端单元。
示例8包括一种方法,包括:预测一条或多条指令中的条件分支指令的被采用分支;在第一解码路径上对被采用分支的所预测的路径解码;确定条件分支指令是否对应于难以预测的条件分支指令以及第二解码路径是否可用;以及如果确定如此,则在第二解码路径上对难以预测的条件分支指令的不被采用分支的替代路径解码。
示例9包括如示例8的方法,进一步包括:在第二解码路径的空闲周期上对难以预测的条件分支指令的替代路径解码。
示例10包括如示例8至9中任一项的方法,进一步包括:仅在难以预测的条件分支指令在指令高速缓存中的高速缓存行上命中的情况下,在第二解码路径上对难以预测的条件分支指令的替代路径解码。
示例11包括如示例8至10中任一项的方法,进一步包括:确定一条或多条指令是否包括用于指示难以预测的条件分支指令的指令集架构扩展;以及如果确定如此,则基于指令集架构扩展的扩展位来确定一条或多条指令是否包括难以预测的条件分支指令。
示例12包括如示例8至11中任一项的方法,进一步包括:将一组通道指派给解码微操作高速缓存;保留该组通道的子集用于来自替代路径的经解码的指令;以及在通道的保留子集中捕捉来自替代路径的经解码的指令。
示例13包括如示例12的方法,进一步包括:一旦所预测的路径被确定为是正确的,就使通道的保留子集中的条目无效。
示例14包括如示例12至13中任一项的方法,进一步包括:如果所预测的路径被确定为不正确,则将来自通道的保留子集的经解码的指令提供至后端单元。
示例15包括一种装置,包括:后端单元,用于执行一条或多条经解码的指令;以及前端单元,通信地耦合至后端单元,用于对一条或多条指令解码,前端单元包括:第一解码路径;第二解码路径;以及电路,用于:预测一条或多条指令中的条件分支指令的被采用分支;在第一解码路径上对被采用分支的所预测的路径解码;确定条件分支指令是否对应于难以预测的条件分支指令以及第二解码路径是否可用;以及如果确定如此,则在第二解码路径上对难以预测的条件分支指令的不被采用分支的替代路径解码。
示例16包括如示例15的装置,其中,电路进一步用于:在第二解码路径的空闲周期上对难以预测的条件分支指令的替代路径解码。
示例17包括如示例15至16中任一项的装置,其中,前端单元进一步包括指令高速缓存,并且其中,电路进一步用于:仅在难以预测的条件分支指令在指令高速缓存中的高速缓存行上命中的情况下,在第二解码路径上对难以预测的条件分支指令的替代路径解码。
示例18包括如示例15至17中任一项的装置,其中,电路进一步用于:确定一条或多条指令是否包括用于指示难以预测的条件分支指令的指令集架构扩展;以及如果确定如此,则基于指令集架构扩展的扩展位来确定一条或多条指令是否包括难以预测的条件分支指令。
示例19包括如示例15至18中任一项的装置,其中,前端单元进一步包括解码微操作高速缓存,并且其中,电路进一步用于:将一组通道指派给解码微操作高速缓存;保留该组通道的子集用于来自替代路径的经解码的指令;以及在通道的保留子集中捕捉来自替代路径的经解码的指令。
示例20包括如示例19的装置,其中,电路进一步用于:一旦所预测的路径被确定为是正确的,就使通道的保留子集中的条目无效。
示例21包括如示例19至20中任一项的装置,其中,电路进一步用于:如果所预测的路径被确定为不正确,则将来自通道的保留子集的经解码的指令提供至后端单元。
示例22包括一种前端设备,包括:用于预测一条或多条指令中的条件分支指令的被采用分支的装置;用于在第一解码路径上对被采用分支的所预测的路径解码的装置;用于确定条件分支指令是否对应于难以预测的条件分支指令以及第二解码路径是否可用的装置;以及如果确定如此,则用于在第二解码路径上对难以预测的条件分支指令的不被采用分支的替代路径解码的装置。
示例23包括如示例22的设备,进一步包括:用于在第二解码路径的空闲周期上对难以预测的条件分支指令的替代路径解码的装置。
示例24包括如示例22至23中任一项的设备,进一步包括:用于仅在难以预测的条件分支指令在指令高速缓存中的高速缓存行上命中的情况下,在第二解码路径上对难以预测的条件分支指令的替代路径解码的装置。
示例25包括如示例22至24中任一项的设备,进一步包括:用于确定一条或多条指令是否包括用于指示难以预测的条件分支指令的指令集架构扩展的装置;以及如果确定如此,则用于基于指令集架构扩展的扩展位来确定一条或多条指令是否包括难以预测的条件分支指令的装置。
示例26包括如示例22至25中任一项的设备,进一步包括:用于将一组通道指派给解码微操作高速缓存的装置;用于保留该组通道的子集用于来自替代路径的经解码的指令的装置;以及用于在通道的保留子集中捕捉来自替代路径的经解码的指令的装置。
示例27包括如示例26的设备,进一步包括:用于一旦所预测的路径被确定为是正确的就使通道的保留子集中的条目无效的装置。
示例28包括如示例26至27中任一项的设备,进一步包括:用于如果所预测的路径被确定为不正确则将来自通道的保留子集的经解码的指令提供至后端单元的装置。
示例29包括至少一种非暂态机器可读介质,包括多条指令,多条指令响应于在计算设备上被执行而使计算设备用于:预测一条或多条指令中的条件分支指令的被采用分支;在第一解码路径上对被采用分支的所预测的路径解码;确定条件分支指令是否对应于难以预测的条件分支指令以及第二解码路径是否可用;以及如果确定如此,则在第二解码路径上对难以预测的条件分支指令的不被采用分支的替代路径解码。
示例30包括如示例29的至少一种非暂态机器可读介质,包括多条进一步的指令,多条进一步的指令响应于在计算设备上被执行而使计算设备用于:在第二解码路径的空闲周期上对难以预测的条件分支指令的替代路径解码。
示例31包括如示例29至30中任一项的至少一种非暂态机器可读介质,包括多条进一步的指令,多条进一步的指令响应于在计算设备上被执行而使计算设备用于:仅在难以预测的条件分支指令在指令高速缓存中的高速缓存行上命中的情况下,在第二解码路径上对难以预测的条件分支指令的替代路径解码。
示例32包括如示例29至31中任一项的至少一种非暂态机器可读介质,包括多条进一步的指令,多条进一步的指令响应于在计算设备上被执行而使计算设备用于:确定一条或多条指令是否包括用于指示难以预测的条件分支指令的指令集架构扩展;以及如果确定如此,则基于指令集架构扩展的扩展位来确定一条或多条指令是否包括难以预测的条件分支指令。
示例33包括如示例29至32中任一项的至少一种非暂态机器可读介质,包括多条进一步的指令,多条进一步的指令响应于在计算设备上被执行而使计算设备用于:将一组通道指派给解码微操作高速缓存;保留该组通道的子集用于来自替代路径的经解码的指令;以及在通道的保留子集中捕捉来自替代路径的经解码的指令。
示例34包括如示例33的至少一种非暂态机器可读介质,包括多条进一步的指令,多条进一步的指令响应于在计算设备上被执行而使计算设备用于:一旦所预测的路径被确定为是正确的,就使通道的保留子集中的条目无效。
示例35包括如示例33至34中任一项的至少一种非暂态机器可读介质,包括多条进一步的指令,多条进一步的指令响应于在计算设备上被执行而使计算设备用于:如果所预测的路径被确定为不正确,则将来自通道的保留子集的经解码的指令提供至后端单元。
在说明书中对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。在本说明书中的不同位置处出现短语“在一个实施例中”不一定全都指同一个实施例。
本文中的详细描述的一些部分在对计算机存储器内的数据位的操作的算法和符号表示方面来呈现。这些算法描述和表示是由计算领域的普通技术人员使用以向本领域其他技术人员最有效地传递其工作的实质的手段。算法在此一般被理解为导致所需结果的自洽的步骤序列。这些步骤是需要对物理量进行物理操纵的那些步骤。通常但非必须,这些量采用能够被存储、传输、组合、比较、以及以其他方式操纵的电信号或磁信号的形式。主要出于常见用途的考虑,将这些信号称为位、值、元素、符号、字符、项、数字等已被证明有时是方便的。
然而,应当记住,所有这些和类似的术语用于与适当的物理量关联,并且仅仅是应用于这些量的方便的标记。除非以其他方式明确指明,否则如从本文的讨论中显而易见的,可以理解,贯穿说明书,利用诸如“处理”或“计算”或“运算”或“确定”或“显示”等术语的讨论,指的是计算机系统或类似电子计算设备的动作和进程,该计算机系统或类似电子计算设备操纵在该计算机系统的寄存器和存储器内表示为物理(电子)量的数据并将其转换成在该计算机系统存储器或寄存器或其他此类信息存储、传输或显示设备内类似地表示为物理量的其他数据。
某些实施例还涉及用于执行本文中的操作的装置。该装置可专门构造来用于所需目的,或其可包括通用计算机,该通用计算机由存储在该计算机内的计算机程序有选择地激活或重新配置。此类计算机程序可以存储在计算机可读存储介质中,这些计算机可读存储介质诸如但不限于任何类型的盘,包括软盘、光盘、CD-ROM、磁光盘、只读存储器(ROM)、诸如动态随机存取存储器(RAM)(DRAM)的RAM、EPROM、EEPROM、磁卡或光卡、或适用于存储电子指令且耦合至计算机系统总线的任何类型的介质。
本文中呈现的算法和显示并非固有地与任何特定计算机或其他装置相关。可以将各种通用系统与根据本文中的教导的程序一起使用,或可以证明构造更专门的装置来执行所要求的方法步骤是方便的。各种这些系统的所需结构将从本文中的描述呈现。此外,某些实施例不是参考任何特定编程语言来描述的。将会理解,可以使用各种编程语言来实现本文所描述的此类实施例的教导。
除了本文所描述的内容,可对所公开的实施例及其实现方式作出各种修改而不背离其范围。因此,本文中的说明和示例应当被解释成说明性的,而非限制性的。本发明的范围应当仅通过参照所附权利要求书来界定。

Claims (25)

1.一种集成电路,包括:
核;以及
前端单元,耦合至所述核,用于对一条或多条指令解码,其中,所述前端单元包括:
主解码路径;
替代解码路径;以及
电路,用于:
预测所述一条或多条指令中的条件分支指令的被采用分支;
在所述主解码路径上对所述被采用分支的所预测的路径解码;
确定所述条件分支指令是否对应于难以预测的条件分支指令以及所述替代解码路径是否可用;以及如果确定如此,则
在所述替代解码路径上对所述难以预测的条件分支指令的不被采用分支的替代路径解码。
2.如权利要求1所述的集成电路,其中,所述电路进一步用于:
在所述替代解码路径的空闲周期上对所述难以预测的条件分支指令的所述替代路径解码。
3.如权利要求1至2中任一项所述的集成电路,其中,所述前端单元进一步包括指令高速缓存,并且其中,所述电路进一步用于:
仅在所述难以预测的条件分支指令在所述指令高速缓存中的高速缓存行上命中的情况下,在所述替代解码路径上对所述难以预测的条件分支指令的所述替代路径解码。
4.如权利要求1至2中任一项所述的集成电路,其中,所述电路进一步用于:
确定所述一条或多条指令是否包括用于指示难以预测的条件分支指令的指令集架构扩展;以及如果确定如此,则
基于所述指令集架构扩展的扩展位来确定所述一条或多条指令是否包括所述难以预测的条件分支指令。
5.如权利要求1至2中任一项所述的集成电路,其中,所述前端单元进一步包括解码微操作高速缓存,并且其中,所述电路进一步用于:
将一组通道指派给所述解码微操作高速缓存;
保留所述一组通道的子集用于来自所述替代路径的经解码的指令;以及
在所述通道的保留子集中捕捉来自所述替代路径的所述经解码的指令。
6.如权利要求5所述的集成电路,其中,所述电路进一步用于:
一旦所述所预测的路径被确定为是正确的,就使所述通道的保留子集中的条目无效。
7.如权利要求5所述的集成电路,其中,所述电路进一步用于:
如果所述所预测的路径被确定为不正确,则将来自所述通道的保留子集的所述经解码的指令提供至后端单元。
8.一种方法,包括:
预测一条或多条指令中的条件分支指令的被采用分支;
在主解码路径上对所述被采用分支的所预测的路径解码;
确定所述条件分支指令是否对应于难以预测的条件分支指令以及替代解码路径是否可用;以及如果确定如此,则
在所述替代解码路径上对所述难以预测的条件分支指令的不被采用分支的替代路径解码。
9.如权利要求8所述的方法,进一步包括:
在所述替代解码路径的空闲周期上对所述难以预测的条件分支指令的所述替代路径解码。
10.如权利要求8至9中任一项所述的方法,进一步包括:
仅在所述难以预测的条件分支指令在指令高速缓存中的高速缓存行上命中的情况下,在所述替代解码路径上对所述难以预测的条件分支指令的所述替代路径解码。
11.如权利要求8至9中任一项所述的方法,进一步包括:
确定所述一条或多条指令是否包括用于指示难以预测的条件分支指令的指令集架构扩展;以及如果确定如此,则
基于所述指令集架构扩展的扩展位来确定所述一条或多条指令是否包括所述难以预测的条件分支指令。
12.如权利要求8至9中任一项所述的方法,进一步包括:
将一组通道指派给解码微操作高速缓存;
保留所述一组通道的子集用于来自所述替代路径的经解码的指令;以及
在所述通道的保留子集中捕捉来自所述替代路径的所述经解码的指令。
13.如权利要求12所述的方法,进一步包括:
一旦所述所预测的路径被确定为是正确的,就使所述通道的保留子集中的条目无效。
14.如权利要求12所述的方法,进一步包括:
如果所述所预测的路径被确定为不正确,则将来自所述通道的保留子集的所述经解码的指令提供至后端单元。
15.一种装置,包括:
后端单元,用于执行一条或多条经解码的指令;以及
前端单元,通信地耦合至所述后端单元,用于对一条或多条指令解码,所述前端单元包括:
主解码路径;
替代解码路径;以及
电路,用于:
预测所述一条或多条指令中的条件分支指令的被采用分支;
在所述主解码路径上对所述被采用分支的所预测的路径解码;
确定所述条件分支指令是否对应于难以预测的条件分支指令以及所述替代解码路径是否可用;以及如果确定如此,则
在所述替代解码路径上对所述难以预测的条件分支指令的不被采用分支的替代路径解码。
16.如权利要求15所述的装置,其中,所述电路进一步用于:
在所述替代解码路径的空闲周期上对所述难以预测的条件分支指令的所述替代路径解码。
17.如权利要求15至16中任一项所述的装置,其中,所述前端单元进一步包括指令高速缓存,并且其中,所述电路进一步用于:
仅在所述难以预测的条件分支指令在所述指令高速缓存中的高速缓存行上命中时,在所述替代解码路径上对所述难以预测的条件分支指令的所述替代路径解码。
18.如权利要求15至16中任一项所述的装置,其中,所述电路进一步用于:
确定所述一条或多条指令是否包括用于指示难以预测的条件分支指令的指令集架构扩展;以及如果确定如此,则
基于所述指令集架构扩展的扩展位来确定所述一条或多条指令是否包括所述难以预测的条件分支指令。
19.如权利要求15至16中任一项所述的装置,其中,所述前端单元进一步包括解码微操作高速缓存,并且其中,所述电路进一步用于:
将一组通道指派给所述解码微操作高速缓存;
保留所述一组通道的子集用于来自所述替代路径的经解码的指令;以及
在所述通道的保留子集中捕捉来自所述替代路径的所述经解码的指令。
20.如权利要求19所述的装置,其中,所述电路进一步用于:
一旦所述所预测的路径被确定为是正确的,就使所述通道的保留子集中的条目无效。
21.如权利要求19所述的装置,其中,所述电路进一步用于:
如果所述所预测的路径被确定为不正确,则将来自所述通道的保留子集的所述经解码的指令提供至所述后端单元。
22.一种前端设备,包括:
用于预测一条或多条指令中的条件分支指令的被采用分支的装置;
用于在主解码路径上对所述被采用分支的所预测的路径解码的装置;
用于确定所述条件分支指令是否对应于难以预测的条件分支指令以及替代解码路径是否可用的装置;以及如果确定如此,则
用于在所述替代解码路径上对所述难以预测的条件分支指令的不被采用分支的替代路径解码的装置。
23.如权利要求22所述的设备,进一步包括:
用于在所述替代解码路径的空闲周期上对所述难以预测的条件分支指令的所述替代路径解码的装置。
24.如权利要求22至23中任一项所述的设备,进一步包括:
用于仅在所述难以预测的条件分支指令在指令高速缓存中的高速缓存行上命中的情况下在所述替代解码路径上对所述难以预测的条件分支指令的所述替代路径解码的装置。
25.如权利要求22至23中任一项所述的设备,进一步包括:
用于确定所述一条或多条指令是否包括用于指示难以预测的条件分支指令的指令集架构扩展的装置;以及如果确定如此,则
用于基于所述指令集架构扩展的扩展位来确定所述一条或多条指令是否包括所述难以预测的条件分支指令的装置。
CN202111388869.4A 2020-12-22 2021-11-22 用于难以预测的分支的替代路径解码 Pending CN114661434A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/130,706 US20220197650A1 (en) 2020-12-22 2020-12-22 Alternate path decode for hard-to-predict branch
US17/130,706 2020-12-22

Publications (1)

Publication Number Publication Date
CN114661434A true CN114661434A (zh) 2022-06-24

Family

ID=77913015

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111388869.4A Pending CN114661434A (zh) 2020-12-22 2021-11-22 用于难以预测的分支的替代路径解码

Country Status (3)

Country Link
US (1) US20220197650A1 (zh)
EP (1) EP4020191A1 (zh)
CN (1) CN114661434A (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11983533B2 (en) * 2022-06-28 2024-05-14 Arm Limited Control flow prediction using pointers
GB2622362A (en) * 2022-09-09 2024-03-20 Advanced Risc Mach Ltd Methods and apparatus controlling prediction units

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5860017A (en) * 1996-06-28 1999-01-12 Intel Corporation Processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction
US20080162905A1 (en) * 2006-06-08 2008-07-03 Luick David A Design structure for double-width instruction queue for instruction execution
US7793080B2 (en) * 2007-12-31 2010-09-07 Globalfoundries Inc. Processing pipeline having parallel dispatch and method thereof
US20100262813A1 (en) * 2009-04-14 2010-10-14 International Business Machines Corporation Detecting and Handling Short Forward Branch Conversion Candidates
US10387152B2 (en) * 2017-07-06 2019-08-20 Arm Limited Selecting branch instruction execution paths based on previous branch path performance
US10754655B2 (en) * 2018-06-28 2020-08-25 Intel Corporation Automatic predication of hard-to-predict convergent branches
US10901743B2 (en) * 2018-07-19 2021-01-26 International Business Machines Corporation Speculative execution of both paths of a weakly predicted branch instruction
US10884749B2 (en) * 2019-03-26 2021-01-05 International Business Machines Corporation Control of speculative demand loads
US11249762B2 (en) * 2019-10-24 2022-02-15 Arm Limited Apparatus and method for handling incorrect branch direction predictions
US11321089B2 (en) * 2020-04-20 2022-05-03 Intel Corporation Instruction set architecture based and automatic load tracking for opportunistic re-steer of data-dependent flaky branches

Also Published As

Publication number Publication date
US20220197650A1 (en) 2022-06-23
EP4020191A1 (en) 2022-06-29

Similar Documents

Publication Publication Date Title
JP2015534188A (ja) ユーザレベルのスレッディングのために即時のコンテキスト切り替えを可能とする新規の命令および高度に効率的なマイクロアーキテクチャ
EP3716055A1 (en) System, apparatus and method for symbolic store address generation for data-parallel processor
US20190310853A1 (en) Adaptive spatial access prefetcher apparatus and method
CN114661434A (zh) 用于难以预测的分支的替代路径解码
CN113535236A (zh) 基于指令集体系结构的和自动的加载跟踪的方法和装置
CN116302106A (zh) 用于促进分支预测单元的改善的带宽的设备、方法和系统
US10579378B2 (en) Instructions for manipulating a multi-bit predicate register for predicating instruction sequences
US10083033B2 (en) Apparatus and method for efficient register allocation and reclamation
US10877765B2 (en) Apparatuses and methods to assign a logical thread to a physical thread
US11907712B2 (en) Methods, systems, and apparatuses for out-of-order access to a shared microcode sequencer by a clustered decode pipeline
US20220197660A1 (en) Context-based loop branch prediction
US20220197661A1 (en) Context-based memory indirect branch target prediction
EP3905034A1 (en) A code prefetch instruction
US20220197821A1 (en) Device, system and method for selectively dropping software prefetch instructions
US11126438B2 (en) System, apparatus and method for a hybrid reservation station for a processor
US20230091167A1 (en) Core-based speculative page fault list
EP3989063B1 (en) High confidence multiple branch offset predictor
US20220129763A1 (en) High confidence multiple branch offset predictor
EP4202664B1 (en) System, apparatus and method for throttling fusion of micro-operations in a processor
US20230185572A1 (en) Instruction decode cluster offlining
US20240103878A1 (en) Short pipeline for fast recovery from a branch misprediction
US20230195634A1 (en) Prefetcher with low-level software configurability
US11693780B2 (en) System, method, and apparatus for enhanced pointer identification and prefetching
US11809873B2 (en) Selective use of branch prediction hints
US20220405102A1 (en) Count to empty for microarchitectural return predictor security

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