CN110321166A - 处理器中的基于一致性操作的分支预测 - Google Patents

处理器中的基于一致性操作的分支预测 Download PDF

Info

Publication number
CN110321166A
CN110321166A CN201910228217.0A CN201910228217A CN110321166A CN 110321166 A CN110321166 A CN 110321166A CN 201910228217 A CN201910228217 A CN 201910228217A CN 110321166 A CN110321166 A CN 110321166A
Authority
CN
China
Prior art keywords
instruction
branch
processor
field
entry
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
CN201910228217.0A
Other languages
English (en)
Inventor
C·威尔克森
B·帕姆
P·陆
J·W·斯塔克四世
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 CN110321166A publication Critical patent/CN110321166A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • 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/3004Arrangements for executing specific machine instructions to perform operations on 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/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/30094Condition code generation, e.g. Carry, Zero flag
    • 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/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers

Landscapes

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

Abstract

本申请公开了处理器中的基于一致性操作的分支预测。在实施例中,处理器包括分支预测电路和多个处理引擎。分支预测电路用于:检测与第一存储器地址相关联的一致性操作;标识与第一存储器地址相关联的第一分支指令;以及基于检测到的一致性操作来预测所标识的分支指令的方向。描述了其他实施例并要求它们的权利。

Description

处理器中的基于一致性操作的分支预测
技术领域
实施例总体涉及计算机处理器。更具体地,实施例涉及计算机处理器中的分支预测。
背景技术
一些处理器可以执行包括分支的程序代码、或可以使得执行流在两个可能方向中的一个中分叉的条件指令(例如,IF指令)。这两个可能方向可以是“未采用分支”(即,处理在代码的下一个顺序部分中继续)和“采用分支”(即,处理跳转到代码的不同的非顺序部分)。
附图简述
图1是根据本发明的实施例的系统的部分的框图。
图2是根据本发明的实施例的处理器的框图。
图3是根据本发明的另一实施例的多域处理器的框图。
图4是包括多个核的处理器的实施例。
图5是根据本发明的一个实施例的处理器核的微架构的框图。
图6是根据另一实施例的处理器核的微架构的框图。
图7是根据又一实施例的处理器核的微架构的框图。
图8是根据更进一步的实施例的处理器核的微架构的框图。
图9是根据本发明的另一实施例的处理器的框图。
图10是根据本发明的实施例的代表性SoC的框图。
图11是根据本发明的实施例的另一示例SoC的框图。
图12是可以与实施例一起使用的示例系统的框图。
图13是可以与实施例一起使用的另一示例系统的框图。
图14是代表性计算机系统的框图。
图15A-15B是根据本发明的实施例的系统的框图。
图16是图示根据实施例的用于制造集成电路以执行操作的IP核开发系统的框图。
图17A-17B是图示根据本发明的实施例的通用向量友好指令格式及其指令模板的框图;
图18A-D是图示根据本发明的实施例的示例性专用向量友好指令格式的框图;
图19是根据本发明的一个实施例的寄存器架构的框图;
图20A是图示根据本发明的实施例的示例性有序流水线以及示例性寄存器重命名、乱序发布/执行流水线的框图。
图20B是图示根据本发明的实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核两者的框图;
图21A-B图示更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块之一(包括相同类型和/或不同类型的其他核);
图22是根据本发明的实施例的可具有多于一个的核、可具有集成存储器控制器、并且可具有集成图形的处理器的框图;
图23-24是示例性计算机架构的框图;以及
图25是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
图26A是根据一个或多个实施例的示例系统的框图。
图26B是根据一个或多个实施例的示例处理引擎的框图。
图27是根据一个或多个实施例的示例处理器操作的示图。
图28A是根据一个或多个实施例的示例跟踪表的示图。
图28B是根据一个或多个实施例的示例分支指令的示图。
图29是根据一个或多个实施例的用于基于一致性的预测的示例方法的流程图。
图30A是根据一个或多个实施例的示例方法的流程图。
图30B是根据一个或多个实施例的示例方法的流程图。
图31是根据一个或多个实施例的示例方法的流程图。
图32是根据一个或多个实施例的示例方法的流程图。
具体实施方式
一些计算机处理器可以包括分支预测器,该分支预测器可以是在分支的实际方向已经被确定之前尝试预测分支将走哪条路的电路。所预测的分支方向然后可以用于取出一组指令,使得它们可以在分支实际上已经被评估之前被准备以供执行和/或被推测性地执行。以此方式,分支预测器可以减少处理器的执行时间。然而,如果分支预测器提供不正确的预测,则可能增加执行时间,从而降低处理器的性能。
根据一个或多个实施例,处理器的预测逻辑可以基于一致性操作进行分支预测。在一些实施例中,预测逻辑可以更新跟踪表以包括具有关于所执行的分支指令和相关联的所跟踪的对象的信息的条目。跟踪表条目可以包括对所跟踪的对象是否已经经受一致性操作的指示。在一些示例中,影响所跟踪的对象的一致性操作可以提供相关联的分支指令可能在特定方向上执行的提示。以此方式,预测电路可以使用跟踪表来进行分支预测,该分支预测反映由相关联的一致性操作提供的提示。因此,一些实施例可以提供改善的预测准确度。下面参考图26A-32进一步描述一些实施例的各种细节。此外,下面参考图1-25描述示例性系统和架构。
示例性系统和架构
尽管参考特定实现描述下列实施例,但实施例不限于此方面。具体而言,构想可以将本文所述的实施例的类似的技术和教导应用到其他类型的电路、半导体器件、处理器、系统等。例如,所公开的实施例可以任一类型的计算机系统实现,包括服务器计算机(例如,塔、机架、刀片、微服务器等等)、通信系统、存储系统、任意配置的台式计算机、膝上型计算机、笔记本和平板计算机(包括2:1平板、平板手机等等)。
此外,所公开的实施例也可用于其他设备,诸如手持式设备、芯片上系统(SoC)以及嵌入式应用。手持式设备的一些示例包括:诸如智能电话之类的蜂窝电话、网际协议设备、数码相机、个人数字助理(PDA)和手持式PC。嵌入式应用典型地可包括:微控制器、数字信号处理器(DSP)、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机、可穿戴设备、或能够执行下文所教导的功能和操作的任何其他系统。此外,实施例可以在具有标准语音功能的移动终端中实现,诸如移动电话、智能电话和平板电话,和/或在不具有标准无线语音功能通信能力的非移动终端中实现,诸如许多可穿戴设备、平板电脑、笔记本、台式机、微服务器、服务器等等。
现在参考图1,所示的是根据本发明的实施例的系统的部分的框图。如图1中所示,系统100可以包括各种组件,其包括所示为多核处理器的处理器110。处理器110可经由外部电压调节器160耦合到电源150,该外部电压调节器160可执行第一电压转换以将经调节的主电压Vreg提供给处理器110。
可以看出,处理器110可以是包括多个核120a-120n的单管芯处理器。另外,每一个核可以与集成的电压调节器(IVR)125a-125n相关联,这些集成的电压调节器接收经调节的主电压,并生成操作电压,操作电压被提供到与IVR相关联的处理器的一个或多个代理。相应地,可提供IVR实现方式以允许对每一个单个核的电压进而对功率和性能进行细粒度的控制。由此,每一个核都可在独立的电压和频率下操作,从而允许极大的灵活性,并提供平衡功耗与性能的广泛机会。在一些实施例中,对多个IVR的使用允许将组件分组到不同的功率层中,使得功率被IVR调节并且仅被提供给组中的那些组件。在功率管理期间,当处理器被置于某个低功率状态时,一个IVR的给定的功率层可以被掉电或断电,而另一IVR的另一功率层保持为活动的或完全供电的。类似地,核120可包括诸如一个或多个锁相环(PLL)的独立的时钟发生电路或与其相关联以独立地控制每个核120的操作频率。
仍参考图1,附加的组件可存在于处理器内,包括输入/输出接口(IF)132、另一接口134以及集成存储器控制器(IMC)136。可以看出,这些组件中的每一个都可以由另一集成的电压调节器125X来供电。在一个实施例中,接口132可以为快速路径互连(QPI)互连使能操作,该互连在包括多个层的高速缓存一致性协议中提供点对点(PtP)链路,多个层包括物理层、链路层和协议层。进而,接口134可以经由外围组件互连快速(PCIeTM)协议来通信。
还示出了功率控制单元(PCU)138,其可包括包含用于针对处理器110执行功率管理操作的硬件、软件和/或固件的电路。可以看出,PCU 138经由数字接口162将控制信息提供给外部电压调节器160以使该电压调节器生成合适的经调节的电压。PCU 138也经由另一数字接口163将控制信息提供给多个IVR 125以控制所生成的操作电压(或使对应的IVR在低功率模式下被禁用)。在各实施例中,PCU 138可以包括用于执行基于硬件的功率管理的各种功率管理逻辑单元。此类功率管理可以是完全被处理器控制的(例如,通过各种处理器硬件,并且其可以是被工作负荷和/或功率、热或其他处理器约束触发的),并且/或者功率管理可以响应于外部源(诸如平台或管理功率源或系统软件)而被执行。
在图1中,PCU 138被图示为作为处理器的分开的逻辑来呈现。在其他情况下,PCU138可在核120中给定的一个或多个核上执行。在一些情况下,可将PCU 138实现为被配置成用于执行其自身的专用功率管理代码(有时被称作P代码)的微控制器(专用的或通用的)或其他控制逻辑。在另外的其他实施例中,将由PCU 138执行的功率管理操作可对于处理器外部地实现,诸如通过分开的功率管理集成电路(PMIC)或处理器外部的另一组件的方式。在另外的其他实施例中,将由PCU 138执行的功率管理操作可在BIOS或其他系统软件内实现。
尽管在图1中未示出,但是在一些实施例中,处理器110和/或核120可以包括下文参考图26A-32描述的所有或部分的组件和/或过程。
实施例可尤其适合于多核处理器,其中,多个核中的每一个可以以独立的电压和频率点进行操作。如本文中所使用的术语“域”用于意指以同一电压和频率点进行操作的硬件和/或逻辑的集合。另外,多核处理器可以进一步包括其他非核处理引擎,诸如固定功能单元、图形引擎等等。此类处理器可包括除核以外的独立的域,诸如与图形引擎相关联的一个或多个域(本文中被称作图形域)以及与非核电路相关联的一个或多个域(本文中被称作系统代理)。虽然多域处理器的许多实现方式可以在单个半导体管芯上形成,但其他实现方式可以由多芯片封装来实现,其中,不同的域可以呈现在单个封装的不同半导体管芯上。
尽管为了易于说明没有示出,但应理解诸如非核逻辑和其他组件(诸如,内部存储器(例如,一个或多个层级的高速缓存存储器层次结构等))之类的附加组件可存在于处理器110内。此外,尽管在图1的实现中示出为具有集成的电压调节器,但是,多个实施例不限于此。例如,可以将其他经调节的电压从外部电压调节器160或经调节的电压的一个或多个附加的外部源提供给芯片上资源。
注意,本文中所描述的功率管理技术可以独立于基于操作系统(OS)的功率管理(OSPM)机制,并与其互补。根据一个示例OSPM技术,处理器可在各种性能状态或等级(所谓的P状态,即从P0到PN)上操作。一般而言,P1性能状态可对应于可由OS请求的最高保证的性能状态。除此P1状态之外,OS可进一步请求更高的性能状态,即,P0状态。该P0状态因此可以是机会型状态、超频或睿频(turbo)模式状态,在该状态中,当功率和/或热预算是可用的时,处理器硬件可配置处理器或其至少多个部分,以便以高于保证频率的频率进行操作。在许多实现中,处理器可包括在制造期间融合或以其他方式写入到处理器中的、高于P1保证的最大频率的多个所谓的元(bin)频率,该频率超出特定处理器的最大峰值频率。此外,根据一个OSPM机制,处理器可以在各种功率状态或等级上进行操作。对于功率状态,OSPM机制可以指定不同的功耗状态,一般将其称为C状态(C0、C1到Cn状态)。当核是活动的时,它以C0状态运行,而当该核是空闲的时,可将其置于核低功率状态,也将其称为核非零C状态(例如,C1-C6状态),每一个C状态都处于更低的功耗等级(使得C6是比C1更深的低功率状态,等等)。
应理解许多不同类型的功率管理技术可以在不同实施例中单独使用或组合使用。作为代表性示例,功率控制器可以控制处理器由一些形式的动态电压频率缩放(DVFS)来管理功率,在DVFS中一个或多个核或其他处理器逻辑的操作电压和/或操作频率可以被动态地控制以在某些情形下减少功耗。在示例中,可以使用加利福尼亚州圣克拉拉市的英特尔公司提供的增强型Intel SpeedStepTM技术来执行DVFS,以在最低功耗水平提供最优性能。在另一示例中,可以使用Intel TurboBoostTM技术来执行DVFS以使得一个或多个核或其他计算引擎能基于条件(例如,工作负荷和可用性)以高于保证操作频率的频率进行操作。
可以在某些示例中使用的另一功率管理技术是在不同计算引擎之间动态交换工作负荷。例如,处理器可以包括在不同功耗水平操作的非对称核或其他处理引擎,从而在功率约束的情形下,一个或多个工作负荷可以被动态地切换以在较低功率核或其他计算引擎上执行。另一示例性功率管理技术是硬件轮停(HDC),其可以使得核和/或其他计算引擎根据工作周期被周期性地启用和禁用,使得一个或多个核在工作周期的不活动时段变为不活动的,而在工作周期的活动时段变为活动的。
当操作环境中存在约束时也可以使用功率管理技术。例如,当遭遇功率和/或热约束时,可以通过降低操作频率和/或电压来减少功率。其他功率管理技术包括扼制指令执行速率或限制对指令的调度。此外,使给定的指令集架构的指令包括关于功率管理操作的显式的或隐式的方向是可能的。虽然以这些特定示例描述,但应理解许多其他功率管理技术可以在特定实施例中使用。
可在用于各种市场的处理器(包括服务器处理器、台式机处理器、移动处理器等)中实现多个实施例。现在参考图2,所示为根据本发明的实施例的处理器的框图。如图2中所示,处理器200可以是包括多个核210a–210n的多核处理器。在一个实施例中,每一个此类核可以是独立的功率域,并且可配置成基于工作负荷进入和退出活动状态和/或最大性能状态。一个或多个核210相对于其他核可以是异构的,例如,具有不同的微架构、指令集架构、流水线深度、功率和性能能力。可经由互连215将各种核耦合到包括各种组件的系统代理220。可以看出,系统代理220可包括共享高速缓存230,共享高速缓存230可以是末级高速缓存。此外,系统代理可以包括集成存储器控制器240,用于例如经由存储器总线与系统存储器(图2中未示出)通信。系统代理220还包括各种接口250和功率控制单元255,功率控制单元255可包括用于执行本文中所描述的功率管理技术的逻辑。
此外,通过接口250a-250n,可完成向诸如外围设备、大容量存储设备等的各种芯片外组件的连接。尽管在图2的实施例中以此特定实现方式示出,但是本发明的范围不限于该方面。
尽管在图2中未示出,但是在一些实施例中,处理器200可以包括下文参考图26A-32描述的所有或部分的组件和/或过程。
现在参考图3,所示出的是根据本发明的另一实施例的多域处理器的框图。如图3的实施例中所示,处理器300包括多个域。具体而言,核域310可以包括多个核310a–310n,图形域320可以包括一个或多个图形引擎,并且还可以存在系统代理域350。在一些实施例中,系统代理域350能以独立于核域的独立频率执行,并且可在全部的时刻保持被供电以处理功率控制事件和功率管理,使得可以控制域310和320动态地进入和退出高功率状态和低功率状态。域310和320中的每一个能以不同的电压和/或功率操作。注意,虽然仅以三个域示出,但是应理解,本发明的范围不限于此方面,并且附加的域可存在于其他实施例中。例如,多个核域可存在,每一个核域包括至少一个核。
一般而言,除各种执行单元和附加的处理元件之外,核310a–310n中的每一个还可包括多个低层级高速缓存。进而,各种核可彼此耦合,并且耦合到共享高速缓存存储器,该共享高速缓存存储器由末级高速缓存(LLC)340a–340n的多个单元形成。在各实施例中,可在多个核与图形引擎以及各种媒体处理电路之间共享LLC 340。如所示,环形互连330由此将多个核耦合到一起,并且在多个核、图形域320和系统代理域350之间提供互连。在一个实施例中,互连330可以是核域的部分。然而,在其他实施例中,该环形互连可以是其自身域中的。
如进一步所示,系统代理域350可包括显示控制器352,该显示控制器352可提供对相关联的显示器的控制以及到它的接口。如进一步所示,系统代理域350可包括功率控制单元355,该功率控制单元355可包括用于执行本文中所描述的功率管理技术的逻辑。
如图3中进一步所示,处理器300还可包括集成存储器控制器(IMC)370,其可提供到诸如动态随机存取存储器(DRAM)之类的系统存储器的接口。可以存在多个接口380a–380n以实现处理器与其他电路之间的互连。例如,在一个实施例中,可提供至少一个直接媒体接口(DMI)接口以及一个或多个PCIeTM接口。此外,为了提供诸如附加处理器或其他电路的其他代理之间的通信,还可以提供一个或多个QPI接口。尽管在图3的实施例中在该高层级示出,但是会理解,本发明的范围不限于该方面。
尽管在图3中未示出,但是在一些实施例中,处理器300可以包括下文参考图26A-32描述的所有或部分的组件和/或过程。
参考图4,图示出包括多个核的处理器的实施例。处理器400包括任何处理器或处理器件,诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持式处理器、应用处理器、协同处理器、片上系统(SoC)、或用于执行代码的其它器件。在一个实施例中,处理器400包括至少两个核——核401和402,它们可包括非对称核或对称核(所图示的实施例)。然而,处理器400可包括可以是对称的或非对称的任何数量的处理元件。
在一个实施例中,处理元件指的是用于支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、进程单元、上下文、上下文单元、逻辑处理器、硬件线程、核和/或能够保持处理器的诸如执行状态或架构状态之类的状态的任何其他元件。换言之,在一个实施例中,处理元件指的是能够与诸如软件线程、操作系统、应用、或其他代码之类的代码独立地相关联的任何硬件。物理处理器通常指的是集成电路,其潜在地包括诸如核或硬件线程之类的任意数量的其他处理元件。
核通常指的是位于集成电路上的能够维持独立架构状态的逻辑,其中每个独立维持的架构状态与至少一些专用执行资源相关联。与核相反,硬件线程通常指的是位于集成电路上的能够维持独立架构状态的任何逻辑,其中独立维持的架构状态共享对执行资源的访问。如可见,当某些资源是共享的而其他资源是专用于架构状态的时候,硬件线程与核的术语之间的界线交叠。但核和硬件线程常常被操作系统视为单个的逻辑处理器,其中,操作系统能够分别在每一个逻辑处理器上调度操作。
如图4中所图示,物理处理器400包括两个核——核401和402。在此,核401和402被认为是对称核,即,这些核具有相同的配置、功能单元和/或逻辑。在另一实施例中,核401包括乱序处理器核,而核402包括有序处理器核。然而,核401和402可以是从任何类型的核中单独地选出的,诸如原生核、受软件管理的核、适于执行原生指令集架构(ISA)的核、适于执行经转换ISA的核、协同设计的核或其他已知核。不过,为进一步讨论,以下将更详细地描述在核401中所图示的多个功能单元,因为核402中的多个单元以类似方式操作。
如所描绘,核401包括两个架构状态寄存器401a和401b,它们可以与两个硬件线程相关联(还被称为硬件线程槽)。因此,在一个实施例中,诸如操作系统之类的软件实体潜在地将处理器400视为四个单独的处理器,即能够并发地执行四个软件线程的四个逻辑处理器或处理元件。如上所述,第一线程与架构状态寄存器401a相关联,第二线程与架构状态寄存器401b相关联,第三线程可与架构状态寄存器402a相关联,并且第四线程可与架构状态寄存器402b相关联。在此,架构状态寄存器(401a、401b、402a和402b)可与处理元件、线程槽或线程单元相关联,如上所述。如所图示,架构状态寄存器401a被复制在架构状态寄存器401b中,因此能够为逻辑处理器401a和逻辑处理器401b存储各个架构状态/上下文。在核401中,也可复制用于线程401a和401b的其他较小资源,诸如,指令指针以及分配器和重命名器块430中的重命名逻辑。可通过分区来共享诸如重排序/引退单元435中的重排序缓冲器、分支目标缓冲器和指令转换后备缓冲器(BTB和I-TLB)420、加载/存储缓冲器和队列之类的一些资源。可潜在地完全共享诸如通用内部寄存器、(多个)页表基寄存器、低层级数据高速缓存和数据TLB 450、(多个)执行单元440和重排序/引退单元435的多个部分之类的其他资源。
处理器400通常包括其他资源,它们可被完全共享,可通过分区被共享,或可由处理元件专用/专用于处理元件。在图4中,图示出具有处理器的说明性逻辑单元/资源的纯示例性处理器的实施例。注意,处理器可包括或省略这些功能单元中的任何单元,并包括未描绘出的任何其他已知的功能单元、逻辑或固件。如所图示,核401包括简化的、代表性的乱序(OOO)处理器核。但是,在不同实施例中,可利用有序处理器。
核401还包括耦合到取出单元以用于解码所取出的元素的解码模块425。在一个实施例中,取出逻辑包括分别与线程槽401a、401b相关联的各个序列发生器。通常,核401与第一ISA相关联,该第一ISA定义/指定在处理器400上可执行的指令。作为第一ISA的部分的机器代码指令常包括引用/指定要被执行的指令或操作的指令的部分(被称为操作码)。解码模块425包括从这些指令的操作码识别出这些指令并在流水线上传递经解码的指令以进行第一ISA所定义的处理的电路。例如,在一个实施例中,解码器模块425包括被设计成用于或适于识别诸如事务性指令之类的特定指令的逻辑。作为由解码器模块425识别的结果,架构或核401采取特定的、预定义的动作以执行与适当指令相关联的任务。重要的是应注意,本文中所描述的任务、块、操作和方法中的任何一个可响应于单条或多条指令来执行;它们中的一些可以是新指令或旧指令。
在一个示例中,分配器和重命名器块430包括用于保留资源的分配器,诸如,用于存储指令处理结果的寄存器堆。然而,线程401a和401b潜在地能够进行乱序执行,其中,分配器和重命名器块430还保留其他资源(诸如,用于跟踪指令结果的重排序缓冲器)。重命名器块430还可包括寄存器重命名器,其用于将程序/指令引用寄存器重命名为处理器400内部的其他寄存器。重排序/引退单元435包括用于支持被无序执行的指令的无序执行和稍后的有序引退的、诸如上述的重排序缓冲器、加载缓冲器和存储缓冲器之类的组件。
在一个实施例中,调度器和(多个)执行单元块440包括调度器单元,其用于在多个执行单元上调度指令/操作。例如,在具有可用的浮点执行单元的执行单元的端口上调度浮点指令。还包括与执行单元相关联的寄存器堆,其用于存储信息指令处理结果。示例性的执行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元以及其他已知的执行单元。
较低层级的数据高速缓存和数据转换后备缓冲器(D-TLB)450耦合到(多个)执行单元440。数据高速缓存用于存储最近使用/操作的元素(诸如,数据操作数),潜在地在存储器一致性状态下保持这些元素。D-TLB用于存储最近的虚拟/线性至物理地址转换。作为特定示例,处理器可包括页表结构,用于将物理存储器分解成多个虚拟页。
在此,核401和402共享对用于对最近被取出元素进行高速缓存的、较高层级或进一步远离的高速缓存410的访问。注意,较高层级或进一步远离指的是高速缓存层级增加或进一步远离(多个)执行单元。在一个实施例中,较高层级高速缓存410是末级数据高速缓存(处理器400上的存储器层次结构中的末级高速缓存),诸如,第二或第三级数据高速缓存。然而,较高层级高速缓存410不限于此,因为它可与指令高速缓存相关联或包括指令高速缓存。替代地,跟踪高速缓存(指令高速缓存的类型)可耦合在解码器模块425之后,用于存储最近经解码的跟踪。
在所描绘的配置中,处理器400还包括总线接口模块405和可执行根据本发明的实施例的功率管理的功率控制单元460。在该情形下,总线接口405用于与在处理器400外部的设备(诸如系统存储器和其他组件)通信。
存储器控制器470可以与诸如一个或多个存储器的其他设备对接。在示例中,总线接口405包括环形互连,其与用于对接存储器的存储器控制器和用于对接图形处理器的图形控制器互连。在SoC环境中,诸如网络接口、协同处理器、存储器、图形处理器以及任何其它已知计算机器件/接口之类的甚至更多的器件可被集成到单个管芯或集成电路上,以提供具有高功能性和低功耗的小形状因数。
尽管在图4中未示出,但是在一些实施例中,处理器400可以包括下文参考图26A-32描述的所有或部分的组件和/或过程。
现在参考图5,所示为根据本发明的一个实施例的处理器核的微架构的框图。如图5所示,处理器核500可以是多级流水线类型的乱序处理器。核500可以基于所接收的操作电压在各种电压下操作,所接收的操作电压可以接收自集成电压调节器或外部电压调节器。
如图5所示,核500包括前端单元510,前端单元510可用于取出会被执行的指令并将这些指令准备好以供稍后在处理器流水线中使用。例如,前端单元510可包括取出单元501、指令高速缓存503和指令解码器505。在某些实现中,前端单元510可进一步包括跟踪高速缓存、微代码存储以及微操作存储。取出单元501可(例如,从存储器或指令高速缓存503)取出宏指令并将它们馈送至指令解码器505以将它们解码为原语,即用于通过处理器执行的微操作。
乱序(OOO)引擎515耦合在前端单元510与执行单元520之间,乱序引擎515可用于接收微指令并将它们准备好以供执行。更具体地,OOO引擎515可包括多个缓冲器,多个缓冲器用于重排序微指令流并分配执行所需的多个资源,以及提供对多个寄存器堆(例如,寄存器堆530和扩展寄存器堆535)中的存储位置上的逻辑寄存器的重命名。寄存器堆530可包括用于整数和浮点操作的单独的寄存器堆。为了配置、控制和附加操作,还可以存在一组机器专用寄存器(MSR)538并且可由核500内(以及核外部)的各种逻辑来访问。
在执行单元520中可存在多种资源,包括例如多种整数、浮点和单指令多数据(SIMD)逻辑单元等其它专门硬件。例如,除了这些执行单元以外,此类执行单元可包括一个或多个算术逻辑单元(ALU)522和一个或多个向量执行单元524。
来自执行单元的结果可被提供至引退逻辑,即重排序缓冲器(ROB)540。更具体地,ROB 540可包括多种阵列和逻辑以接收与被执行的指令相关联的信息。然后,通过ROB 540检查该信息以确定指令是否可以有效引退并且结果数据是否被提交至处理器的架构状态,或阻止指令的正常引退的一个或多个异常是否发生。当然,ROB 540可处理与引退相关联的其他操作。
如图5所示,ROB 540耦合到高速缓存550,在一个实施例中,高速缓存550可以是低层级高速缓存(例如,L1高速缓存),尽管本发明的范围不限于此。而且,执行单元520可直接耦合到高速缓存550。从高速缓存550,可发生与更高层级高速缓存、系统存储器等等的数据通信。虽然在图5的实施例中以此高级别示出,但应理解本发明的范围不限于此方面。例如,虽然图5的实现方式涉及了诸如具有x86指令集架构(ISA)的乱序机器,但本发明的范围在此方面不受限制。即,其他实施例可在以下处理器中实现:有序处理器;诸如基于ARM的处理器的精简指令集计算(RISC)处理器;或具有另一类型ISA的处理器,该另一类型的ISA可经由仿真引擎和相关联的逻辑电路来仿真不同ISA的指令和操作。
尽管在图5中未示出,但是在一些实施例中,核500可以包括下文参考图26A-32描述的所有或部分的组件和/或过程。
现在参考图6,所示为根据另一实施例的处理器核的微架构的框图。在图6的实施例中,核600可以是具有不同的微架构的低功率核,诸如设计为降低功耗的具有相对受限制的流水线深度的基于凌动TM(AtomTM)的处理器如所示,核600包括耦合以将指令提供到指令解码器615的指令高速缓存610。分支预测器605可以耦合到指令高速缓存610。注意,指令高速缓存610可以进一步耦合到高速缓存存储器的另一层级,诸如L2高速缓存(为了易于说明,图6中未示出)。进而,指令解码器615将经解码的指令提供到发出队列(IQ)620以供存储和传递到给定的执行流水线。微代码ROM 618耦合到指令解码器615。
浮点流水线630包括浮点(FP)寄存器堆632,其可包括具有给定位宽(诸如128、256或512位)的多个架构寄存器。流水线630包括浮点调度器634,用于调度指令以在流水线的多个执行单元之一上执行。在所示的实施例中,此类执行单元包括算术逻辑单元(ALU)635、混洗单元636和浮点(FP)加法器638。进而,在这些执行单元中生成的结果可以被往回提供到缓冲器和/或寄存器堆632的寄存器。当然,应理解虽然以这几个示例执行单元示出,但是在另一实施例中可以存在附加的或不同的浮点执行单元。
还可以提供整数流水线640。在所示的实施例中,流水线640包括整数(INT)寄存器堆642,其可包括具有给定位宽(诸如128或256位)的多个架构寄存器。流水线640包括整数执行(IE)调度器644,用于调度指令以在流水线的多个执行单元之一上执行。在所示的实施例中,此类执行单元包括ALU 645、移位器单元646和跳转执行单元(JEU)648。进而,在这些执行单元中生成的结果可以被往回提供到缓冲器和/或寄存器堆642的寄存器。当然,应理解虽然以这几个示例执行单元示出,但是在另一实施例中可以存在附加的或不同的整数执行单元。
存储器执行(ME)调度器650可以调度存储器操作以在地址生成单元(AGU)652中执行,地址生成单元652还耦合到TLB 654。如所示,这些结构可以耦合到数据高速缓存660,数据高速缓存660可以是L0和/或L1数据高速缓存,其进而耦合到高速缓存存储器层次结构的附加层级,包括L2高速缓存存储器。
为了提供对乱序执行的支持,可以提供分配器/重命名器670以作为重排序缓冲器680的附加,重排序缓冲器680配置为对被乱序地执行的指令进行重排序以供有序引退。虽然以图6的图示中的该特定流水线架构示出,但是应理解许多变型和替代是可能的。
尽管在图6中未示出,但是在一些实施例中,核600可以包括下文参考图26A-32描述的所有或部分的组件和/或过程。
注意,在具有非对称核的处理器中,诸如根据图5和6的微架构,由于功率管理的原因,可以在核之间动态地交换工作负荷,因为这些核虽然具有不同的流水线设计和深度,但是可以具有相同或相关的ISA。可以按照对用户应用(并且也可能对内核)透明的方式来执行此类动态核交换。
参考图7,所示为根据又一实施例的处理器核的微架构的框图。如图7所图示,核700可以包括多级有序流水线以在非常低的功耗水平处执行。作为一个此类示例,核700可以具有根据可从加利福尼亚州桑尼威尔市的ARM控股有限公司得到的ARM Cortex A53设计的微架构。在实现中,可以提供配置为执行32位和64位代码的8级流水线。核700包括取出单元710,取出单元710配置为取出指令并将这些指令提供到解码单元715,解码单元715可以解码指令,例如具有给定ISA(诸如ARMv8ISA)的宏指令。此外,注意队列730可以耦合到解码单元715以存储经解码的指令。经解码的指令被提供到发出逻辑725,其中可以将经解码的指令发出到多个执行单元中的给定的一个。
进一步参考图7,发出逻辑725可以将指令发出到多个执行单元中的一个。在所示的实施例中,这些执行单元包括整数单元735、乘法单元740、浮点/向量单元750、双发出单元760和加载/存储单元770。可以将这些不同的执行单元的结果提供到写回(WB)单元780。应理解,虽然为了便于说明示出单个写回单元,但是在一些实现中,分开的多个写回单元可以与执行单元中的每一个相关联。此外,应理解,虽然图7中示出的单元中的每一个和逻辑被表示为在高层级,但是特定实现可以包括多个或不同的结构。可以在许多不同的最终产品(从移动设备扩展到服务器系统)中实现使用一个或多个具有如图7中的流水线的核来设计的处理器。
尽管在图7中未示出,但是在一些实施例中,核700可以包括下文参考图26A-32描述的所有或部分的组件和/或过程。
参考图8,所示为根据更进一步的实施例的处理器核的微架构的框图。如图8所图示,核800可以包括多级多发出乱序流水线以在非常高性能水平处执行(其可在高于图7的核700的功耗水平处发生)。作为一个此类示例,处理器800可以具有根据ARM Cortex A57设计的微架构。在实现中,可以提供配置为执行32位和64位代码的15(或更大)级流水线。此外,流水线可以提供3路(或更大)宽度和3路(或更大)发出操作。核800包括取出单元810,取出单元810配置为取出指令并将指令提供给耦合到高速缓存820的解码器/重命名器/分派器单元815。单元815可解码指令,指令例如具有ARMv8指令集架构的宏指令,重命名指令内的寄存器引用,并将指令(最终)分派到所选择的执行单元。经解码的指令可以存储在队列825中。注意,虽然为了便于说明在图8中示出单个队列结构,但是应理解分开的多个队列可以被提供给多个不同类型的执行单元中的每一个。
在图8中还示出发出逻辑830,存储在队列825中的经解码的指令可以被从发出逻辑830发出到所选择的执行单元。在特定实施例中,发出逻辑830还可以实现为与发出逻辑830耦合的多个不同类型的执行单元中的每一个具有单独的发出逻辑。
可以将经解码的指令发出到多个执行单元中的给定的一个。在所示的实施例中,这些执行单元包括一个或多个整数单元835、乘法单元840、浮点/向量单元850、分支单元860和加载/存储单元870。在实施例中,浮点/向量单元850可以配置为处理128或256位的SIMD或向量数据。此外,浮点/向量执行单元850可以执行IEEE-754双精度浮点操作。可以将这些不同的执行单元的结果提供到写回单元880。注意,在一些实现中,分开的写回单元可以与执行单元中的一个相关联。此外,应理解,虽然图8中示出的单元中的每一个和逻辑被表示为在高层级,但是特定实现可以包括多个或不同的结构。
尽管在图8中未示出,但是在一些实施例中,核800可以包括下文参考图26A-32描述的所有或部分的组件和/或过程。
注意,在具有非对称核的处理器中,诸如根据图7和8的微架构,由于功率管理的原因,可以动态地交换工作负荷,因为这些核虽然具有不同的流水线设计和深度,但是可以具有相同或相关的ISA。可以按照对用户应用(并且也可能对内核)透明的方式来执行此类动态核交换。
可以在许多不同的最终产品(从移动设备扩展到服务器系统)中实现设计为使用一个或多个具有图5-8中的任意一个或多个中的流水线的核的处理器。现在参考图9,所示是根据本发明的另一实施例的处理器的框图。在图9的实施例中,处理器900可以是包括多个域的SoC,可控制其中的每一个域在独立的操作电压和操作频率下进行操作。作为特定的说明性示例,处理器900可以是基于架构核TM的处理器(诸如,i3、i5、i7)或可从英特尔公司得到的另一个此类处理器。然而,诸如可从加利福尼亚州桑尼威尔的超微半导体有限公司(AMD)得到的、来自ARM控股有限公司或其被许可方的基于ARM的设计的、或来自加利福尼亚州桑尼威尔的MIPS技术公司或它们的被许可方或采用者的基于MIPS的设计之类的其他低功率处理器可替代地存在于诸如苹果A7处理器、高通骁龙处理器或德州仪器OMAP处理器之类的其他实施例中。此类SoC可用于诸如智能电话、平板计算机、平板手机计算机、超极本TM计算机或其他便携式计算设备之类的低功率系统中,其可包含具有基于异构系统架构的处理器设计的异构系统架构。
在图9所示的高层级视图中,处理器900包括多个核单元910a-910n。每一个核单元都可包括一个或多个处理器核、一个或多个高速缓存存储器和其他电路。每一个核单元910都可支持一个或多个指令集(例如,x86指令集(具有与较新版本一起添加的一些扩展);MIPS指令集;ARM指令集(具有诸如NEON的可选附加扩展))或其他指令集或其组合。注意,核单元中的一些可以是异构资源(例如,具有不同设计)。此外,每一个此类核可耦合到高速缓存存储器(未示出),在实施例中,该高速缓存存储器可以是共享层级2(L2)高速缓存存储器。可使用非易失性存储器930来存储各种程序和其他数据。例如,可以使用该存储设备来存储微代码的至少多个部分、诸如BIOS之类的引导信息、其他系统软件等。
每一个核单元910还可包括诸如总线接口单元之类的接口,其用于实现向处理器的附加电路的互连。在实施例中,每一个核单元910都耦合到一致性结构,该一致性结构可充当进而耦合到存储器控制器935的主高速缓存一致性管芯上互连。存储器控制器935转而控制与诸如DRAM之类的存储器(为了易于说明,在图9中未示出)的通信。
除这些核单元之外,附加的处理引擎也存在于该处理器内,包括至少一个图形单元920,该图形单元920可包括用于执行图形处理以及可能在图形处理器上执行通用操作(所谓的GPGPU操作)的一个或多个图形处理单元(GPU)。此外,可以存在至少一个图像信号处理器925。信号处理器925可配置成用于处理从一个或多个捕捉设备(无论是SoC内部的还是芯片外的)接收到的传入的图像数据。
也可以存在其他加速器。在图9的图示中,视频译码器950可执行译码操作,包括对于视频信息的编码和解码,例如,提供对高清晰度视频内容的硬件加速支持。可进一步提供显示控制器955以加速显示操作,包括提供对系统的内部和外部显示器的支持。此外,可以存在安全处理器945,其用于执行诸如安全引导操作、各种加密操作等的安全操作。
多个单元中的每一个可以经由功率管理器940控制其功耗,功率管理器940可以包括用于执行本文中所描述的各种功率管理技术的控制逻辑。
在一些实施例中,处理器900还可包括耦合到一致性结构(各种外围设备可耦合到该一致性结构)的非一致性结构。一个或多个接口960a-960d实现与一个或多个芯片外设备的通信。此类通信可以经由各种通信协议,诸如,PCIeTM、GPIO、USB、I2C、UART、MIPI、SDIO、DDR、SPI、HDMI以及其他类型的通信协议。尽管在图9的实施例中在该高层级示出,但是会理解,本发明的范围不限于该方面。
尽管在图9中未示出,但是在一些实施例中,处理器900可以包括下文参考图26A-32描述的所有或部分的组件和/或过程。
现在参考图10,所示为代表性SoC的框图。在所示实施例中,SoC 1000可以是针对低功率操作所配置的多核SoC,该多核多管芯SoC待优化以便结合进智能电话或诸如平板计算机或其他便携式计算设备之类的其他低功率设备中。作为示例,可使用诸如较高功率核和/或低功率核(例如,乱序核和有序核)的组合之类的非对称核或不同类型核来实现SoC1000。在不同的实施例中,这些核可以基于架构TM核设计或ARM架构设计。在另一些实施例中,可在给定的SoC中实现英特尔核和ARM核的混合。
如图10中所示,SoC 1000包括具有多个第一核1012a–1012d的第一核域1010。在示例中,这些核可以是诸如有序核之类的低功率核。在一个实施例中,可将这些第一核实现为ARM Cortex A53核。这些核转而耦合到核域1010的高速缓存存储器1015。此外,SoC 1000包括第二核域1020。在图10的图示中,第二核域1020具有多个第二核1022a–1022d。在示例中,这些核可以是比第一核1012消耗更高功耗的核。在实施例中,这些第二核可以是可实现为ARM Cortex A57核的乱序核。这些核转而耦合到核域1020的高速缓存存储器1025。注意,虽然图10中所示的示例在每个域中包括4个核,但是会理解,在其他示例中,更多或更少的核可存在于给定的域中。
进一步参考图10,也提供图形域1030,其可包括一个或多个图形处理单元(GPU),这些图形处理单元配置成用于独立地执行例如由核域1010和1020中的一个或多个核所提供的图形工作负荷。作为示例,除了提供图形和显示渲染操作之外,GPU域1030可以用于提供对各种屏幕尺寸的显示支持。
如所示,各种域耦合到一致性互连1040,在实施例中,该一致性互连可以是进而耦合到集成存储器控制器1050的高速缓存一致性互连结构。在一些示例中,一致性互连1040可包括共享高速缓存存储器,诸如,L3高速缓存。在实施例中,存储器控制器1050可以是用于提供与芯片外存储器进行的通信的多个通道(诸如,DRAM的多个通道(在图10中为了易于说明,没有示出))的直接存储器控制器。
在不同的示例中,核域的数量可以变化。例如,对于适于结合进移动计算设备的低功率SoC,可以存在诸如图10中所示的有限数量的核域。更进一步地,在此类低功率SoC中,包括较高功率核的核域1020可具有较少数量的此类核。例如,在一个实现中,可提供两个核1022以允许以降低的功耗等级进行的操作。此外,也可将不同的核域耦合到中断控制器以启用在不同域之间的工作负荷的动态交换。
在另一些实施例中,可以存在更大量的核域以及附加可选的IP逻辑,如此,可按比例将SoC放大到更高的性能(和功率)等级,以便结合进诸如台式机、服务器、高性能计算系统、基站等的其他计算设备中。作为一个此类示例,可提供各自具有给定数量的乱序核的4个核域。更进一步地,除了可选的GPU支持(作为示例,其可采取GPGPU的形式)之外,还可提供用于提供对特定功能(例如,web服务、网络处理、交换等)的优化的硬件支持的一个或多个加速器。此外,可以存在用于将此类加速器耦合到多个芯片外组件的输入/输出接口。
尽管在图10中未示出,但是在一些实施例中,SoC 1000可以包括下文参考图26A-32描述的所有或部分的组件和/或过程。
现在参考图11,所示为另一示例SoC的框图。在图11的实施例中,SoC 1100可包括用于允许多媒体应用、通信和其他功能的高性能的各种电路。由此,SoC 1100适于结合进多种便携式和其他设备,诸如,智能电话、平板计算机、智能电视等。在所示示例中,SoC 1100包括中央处理器单元(CPU)域1110。在实施例中,多个单独的处理器核可存在于CPU域1110中。作为一个示例,CPU域1110可以是具有4个多线程核的四核处理器。此类处理器可以是同构或异构处理器,例如,低功率和高功率处理器核的混合。
进而,提供GPU域1120以在一个或多个GPU中执行高级图形处理,从而处理图形并计算API。DSP单元1130可提供一个或多个低功率DSP,这些低功率DSP除了处理可在多媒体指令的执行期间发生的高级计算之外,还处理诸如音乐回放、音频/视频等的低功率多媒体应用。进而,通信单元1140可包括用于经由各种无线协议提供连接性的各种组件,各种无线协议诸如蜂窝通信(包括3G/4G LTE)、诸如蓝牙TM和IEEE 802.11之类的无线局域协议等。
更进一步地,可使用多媒体处理器1150来执行对高清晰度视频和音频内容的捕捉和回放,包括对用户姿势的处理。传感器单元1160可包括多个传感器和/或用于对接到存在于给定平台中的各种芯片外传感器的传感器控制器。图像信号处理器(ISP)1170可参照从平台的一个或多个相机(包括静止相机和视频相机)捕捉到的内容来执行图像处理。
显示处理器1180可提供对向给定像素密度的高清晰度显示器的连接的支持,包括无线地传递内容以在此类显示器上回放的能力。更进一步地,位置单元1190可包括具有对多个全球定位系统(GPS)星座图的支持的GPS接收机,以便向应用提供使用此类GPS接收机所获取的高精度定位信息。会理解,虽然在图11的示例中以该特定的一组组件示出,但是许多变型和替代是可能的。
尽管在图11中未示出,但是在一些实施例中,SoC 1100可以包括下文参考图26A-32描述的所有或部分的组件和/或过程。
现在参考图12,所示为可与多个实施例一起使用的示例系统的框图。如所见,系统1200可以是智能电话或其他无线通信器。基带处理器1205被配置成执行关于会从该系统传输或由该系统接收的通信信号的各种信号处理。进而,基带处理器1205被耦合到应用处理器1210,该应用处理器1210可以是系统的主CPU,以执行除了诸如许多公知的社交媒体与多媒体应用的用户应用之外的OS以及其他系统软件。应用处理器1210可以进一步被配置成为该设备执行各种其他计算操作。
进而,应用处理器1210可以耦合到用户接口/显示器1220,例如,触摸屏显示器。此外,应用处理器1210可耦合到包括非易失性存储器(即,闪存1230)和系统存储器(即,动态随机存取存储器(DRAM)1235)的存储器系统。如进一步所示,应用处理器1210进一步耦合到诸如可记录视频和/或静止图像的一个或多个图像捕捉设备之类的捕捉设备1241。
仍然参考图12,包括订户身份模块和可能的安全存储设备和加密处理器的通用集成电路卡(UICC)1240也耦合到应用处理器1210。系统1200可以进一步包括可以耦合到应用处理器1210的安全处理器1250。多个传感器1225可以耦合到应用处理器1210以实现各种感测到的信息的输入,诸如加速度计与其他环境信息。音频输出设备1295可提供接口,以便例如以语音通信、播放的或流音频数据等的形式输出声音。
如进一步所图示,提供近场通信(NFC)非接触式接口1260,其经由NFC天线1265在NFC近场中通信。尽管图12中示出分离的天线,请理解在一些实现中,可以提供一根天线或不同组的天线以实现各种无线功能。
功率管理集成电路(PMIC)1215耦合到应用处理器1210以执行平台级别功率管理。为此,PMIC 1215可以根据需要发出功率管理请求至应用处理器1210以进入某些低功率状态。此外,基于平台约束,PMIC1215也可以控制系统1200的其他组件的功率级别。
为了实现传送与接收通信,可以在基带处理器1205与天线1290之间耦合各种电路。具体而言,可以存在射频(RF)收发机1270与无线局域网(WLAN)收发机1275。一般而言,可以根据诸如3G或4G无线通信协议(诸如根据码分多址(CDMA)、全球移动通信系统(GSM)、长期演进(LTE)或其他协议)的给定的无线通信协议,使用RF收发机1270接收并传送无线数据和呼叫。此外,可以存在GPS传感器1280。也可以提供诸如无线电信号(例如,AM/FM与其他信号)的接收与传送的其他无线通信。此外,也可以经由WLAN收发机1275实现本地无线通信。
尽管在图12中未示出,但是在一些实施例中,系统1200可以包括下文参考图26A-32描述的所有或部分的组件和/或过程。
现在参考图13,所示为可与多个实施例一起使用的另一示例系统的框图。在图13的图示中,系统1300可以是诸如平板计算机、2:1平板、平板手机或其他转换式或独立式平板系统之类的移动低功率系统。如所图示,存在SoC 1310,并且SoC 1310可配置成作为设备的应用处理器进行操作。
各种设备可耦合到SoC 1310。在所示图示中,存储器子系统包括耦合到SoC 1310的闪存1340和DRAM 1345。此外,触摸面板1320耦合到SoC 1310以提供显示能力和经由触摸的用户输入,包括在触摸面板1320的显示器上提供虚拟键盘。为了提供有线网络连接性,SoC 1310耦合到以太网接口1330。外围中枢1325耦合到SoC 1310以启用与各种外围设备的对接,诸如,可通过各种端口或其他连接器中的任何一个而被耦合到系统1300。
除了SoC 1310中的内部功率管理电路和功能之外,PMIC1380也耦合到SoC 1310以提供基于平台的功率管理,例如,基于该系统是由电池1390供电还是经由交流适配器1395由交流电供电。除了该基于功率源的功率管理之外,PMIC 1380还可执行基于环境和使用条件的平台功率管理活动。更进一步地,PMIC 1380可将控制和状态信息传递给SoC 1310以引起SoC 1310中的各种功率管理动作。
仍然参考图13,为了提供无线能力,将WLAN单元1350耦合到SoC 1310,并转而耦合到天线1355。在各种实现中,WLAN单元1350可以根据一个或多个无线协议提供通信。
如进一步所图示,多个传感器1360可耦合到SoC 1310。这些传感器可包括各种加速度计、环境和其他传感器,包括用户姿势传感器。最后,将音频编解码器1365耦合到SoC1310以向音频输出设备1370提供接口。当然会理解,虽然以图13中的该特定实现示出,但是许多变型和替代是可能的。
尽管在图13中未示出,但是在一些实施例中,系统1300可以包括下文参考图26A-32描述的所有或部分的组件和/或过程。
现在参考图14,所示为诸如笔记本、超极本TM或其他小形状因数系统的代表性计算机系统1400的框图。在一个实施例中,处理器1410包括微处理器、多核处理器、多线程处理器、超低电压处理器、嵌入式处理器,或其他已知处理元件。在所图示出的实现方式中,处理器1410充当主处理单元以及用于与系统1400的各种组件中的许多组件进行通信的中央枢纽,并且可包括如本文中所描述的功率管理电路。作为一个示例,处理器1410被实现为SoC。
在一个实施例中,处理器1410与系统存储器1415通信。作为示例性示例,系统存储器1415被实现为经由多个存储器设备或模块来提供给定量的系统存储器。
为提供对诸如数据、应用、一个或多个操作系统等的信息的持续的存储,大容量存储设备1420也可耦合到处理器1410。在各种实施例中,为了实现更薄和更轻的系统设计以及为了改善系统响应,该大容量存储设备可以经由SSD被实现,或者该大容量存储设备可以主要使用具有较小量的SSD存储设备的硬盘驱动器(HDD)来实现,SSD存储设备充当SSD高速缓存,以在掉电事件期间实现对上下文状态和其他此类信息的非易失性存储,从而在系统活动重新启动时,快速上电可以发生。图14还示出,闪存设备1422可以例如经由串行外围接口(SPI)耦合到处理器1410。该闪存设备可以提供对系统软件(包括基本输入/输出软件(BIOS)以及系统的其他固件)的非易失性存储。
系统1400内可以存在各种输入/输出(I/O)设备。图14的实施例中具体示出显示器1424,显示器1424可以是进一步提供触摸屏1425的高清晰度LCD或LED面板。在一个实施例中,显示器1424可以经由显示互连耦合到处理器1410,该显示互连可实现为高性能图形互连。触摸屏1425可以经由另一互连(在实施例中,可以是I2C互连)耦合到处理器1410。如图14中进一步所示,除触摸屏1425之外,经由触摸的用户输入也可以经由触板1430进行,触板1430可以配置在机架内,并且还可以耦合到与触摸屏1425相同的I2C互连。
出于感知计算和其他目的,各种传感器可以存在于系统内,并且能以不同的方式耦合到处理器1410。某些惯性传感器和环境传感器可以通过传感器中枢1440(例如,经由I2C互连)耦合到处理器1410。在图14示出的实施例中,这些传感器可以包括加速度计1441、环境光传感器(ALS)1442、罗盘1443以及陀螺仪1444。其他环境传感器可以包括一个或多个热传感器1446,在一些实施例中,这些热传感器1446经由系统管理总线(SMBus)总线耦合到处理器1410。
图14中还如所见,各种外围设备可以经由低引脚计数(LPC)互连耦合到处理器1410。在所示的实施例中,各种组件可以通过嵌入式控制器1435耦合。此类组件可包括键盘1436(例如,经由PS2接口耦合)、风扇1437以及热传感器1439。在一些实施例中,触板1430还可以经由PS2接口耦合到EC 1435。此外,诸如可信任平台模块(TPM)1438的安全处理器也可经由该LPC互连耦合到处理器1410。
系统1400能以各种方式(包括以无线方式)与外部设备通信。在图14所示出的实施例中,存在各种无线模块,其中的每一个无线模块都可以对应于针对特定的无线通信协议而配置的无线电装置。用于在短距离(诸如,近场)内进行无线通信的一种方式可以经由NFC单元1445,在一个实施例中,该NFC单元1445可以经由SMBus与处理器1410进行通信。注意,经由该NFC单元1445,彼此紧邻的设备可以进行通信。
如图14中进一步所示,附加的无线单元可包括其他短距离无线引擎,包括WLAN单元1450和蓝牙TM单元1452。通过使用WLAN单元1450,可以实现Wi-FiTM通信,而通过蓝牙TM单元1452,可以发生短距离蓝牙TM通信。这些单元可以经由给定的链路与处理器1410通信。
另外,无线广域通信(例如,根据蜂窝式或其他无线广域协议)可以经由WWAN单元1456进行,该WWAN单元1456进而可以耦合到订户身份模块(SIM)1457。另外,为了允许接收并使用位置信息,还可以存在GPS模块1455。注意,在图14中示出的实施例中,WWAN单元1456和诸如相机模块1454的集成捕捉设备可以经由给定的链路进行通信。
为了提供音频输入和输出,可以经由数字信号处理器(DSP)1460来实现音频处理器,DSP 1460可以经由高清晰度音频(HDA)链路来耦合到处理器1410。类似地,DSP 1460可以与集成的编码器/解码器(编解码器)和放大器1462进行通信,集成的编解码器和放大器1462进而可以耦合到可以在机架内实现的输出扬声器1463。类似地,放大器和编解码器1462可以耦合到话筒1465以从话筒1465接收音频输入,在实施例中,话筒1465可以经由双阵列话筒(诸如数字话筒阵列)被实现,以提供高质量音频输入来实现对系统内的各种操作的语音激活的控制。另外注意,可以将音频输出从放大器/编解码器1462提供到头戴式耳机插孔1464。虽然在图14的实施例中利用这些特定组件示出,但应理解本发明的范围不限于此方面。
尽管在图14中未示出,但是在一些实施例中,系统1400可以包括下文参考图26A-32描述的所有或部分的组件和/或过程。
可在许多不同的系统类型中实现实施例。现在参考图15A,所示为根据本发明的实施例的系统的框图。如图15A所示,多处理器系统1500是点对点互连系统,且包括经由点对点互连1550耦合的第一处理器1570和第二处理器1580。如图15A所示,处理器1570和1580中的每一个可以是包括第一和第二处理器核(即处理器核1574a和1574b以及处理器核1584a和1584b)的多核处理器,尽管这些处理器中可能存在更多核。处理器中的每一个可包括PCU或其他功率管理逻辑以执行如本文中所描述的基于处理器的功率管理。
仍参考图15A,第一处理器1570还包括集成存储器控制器(IMC)1572和点对点(P-P)接口1576和1578。类似地,第二处理器1580包括IMC 1582和P-P接口1586与1588。如图15所示,IMC 1572和1582将多个处理器耦合到相应的存储器(即,存储器1532和存储器1534),这些存储器可以是本地附连到相应处理器的系统存储器(例如,DRAM)的多个部分。第一处理器1570与第二处理器1580可以分别经由P-P互连1562与1564耦合到芯片组1590。如图15A中所示,芯片组1590包括P-P接口1594和1598。
此外,芯片组1590包括通过P-P互连1539将芯片组1590与高性能图形引擎1538耦合的接口1592。进而,芯片组1590可以经由接口1596被耦合到第一总线1516。如图15A所示,各种输入/输出(I/O)设备1514以及总线桥接器1518可耦合到第一总线1516,总线桥接器1518将第一总线1516耦合到第二总线1520。在一个实施例中,各种设备可耦合到第二总线1520,包括例如,键盘/鼠标1522、通信设备1526以及诸如可包括代码1530的盘驱动器或者其他大容量存储设备之类的数据存储单元1528。此外,音频I/O 1524可以被耦合到第二总线1520。可将多个实施例合并到其他类型的系统中,包括诸如智能蜂窝电话、平板计算机、上网本、超极本TM等之类的移动设备。
尽管在图15A中未示出,但是在一些实施例中,系统1500可以包括下文参考图26A-32描述的所有或部分的组件和/或过程。
现在参考图15B,所示为根据本发明的实施例的更具体的第二示例性系统1501的框图。图15A和图15B中的类似元件使用类似附图标记,且在图15B中省略了图15A的某些方面以避免使图15B的其他方面模糊。
图15B示出处理器1570、1580可分别包括集成存储器和I/O控制逻辑(“CL”)1571和1581。由此,控制逻辑1571和1581包括集成存储器控制器单元,并包括I/O控制逻辑。图15B示出不仅存储器1532、1534耦合至控制逻辑1571和1581,而且I/O设备1513也耦合至控制逻辑1571和1581。传统I/O设备1515耦合至芯片组1590。
尽管在图15B中未示出,但是在一些实施例中,系统1501可以包括下文参考图26A-32描述的所有或部分的组件和/或过程。
至少一个实施例的一个或多个方面可由存储在机器可读介质上的代表性代码实现,代表性代码表示和/或定义诸如处理器的集成电路内的逻辑。例如,机器可读介质可包括表示处理器内的各种逻辑的指令。当被机器读取时,指令可使机器制造逻辑以执行本文所述的技术。被称为“IP核”的这些表示是集成电路的逻辑的可重用单元,这些可重用单元可存储在有形的机器可读介质上作为描述集成电路的结构的硬件模型。可将硬件模型提供给多个客户或生产设施,客户或生产设施将硬件模型加载到制造集成电路的制造机器上。集成电路可以被制造使得该电路执行与本文所述的实施例中的任一个相关联地描述的操作。
图16是图示出根据实施例的可用于制造集成电路以执行操作的IP核开发系统1600的框图。IP核开发系统1600可用于生成可被包含在较大的设计中或用于构建整个集成电路(例如,SoC集成电路)的模块化的、可重复使用的设计。设计设施1630可以高级编程语言(例如,C/C++)生成IP核设计的软件模拟1610。软件模拟1610可用于设计、测试或验证IP核的行为。然后可以从模拟模型创建或合成寄存器传送级(RTL)设计。RTL设计1615是对硬件寄存器之间的数字信号的流动建模的集成电路的行为的抽象,包括使用被建模的数字信号执行相关联的逻辑。除了RTL设计1615之外,还可创建、设计或合成在逻辑级或晶体管级的较低级设计。因此,初始设计和模拟的特定细节可以变化。
可通过设计设施进一步将RTL设计1615或等价物合成到硬件模型1620中,硬件模型1620可以是以硬件描述语言(HDL)或物理设计数据的一些其他表示。可进一步模拟或测试HDL以验证IP核设计。可使用非易失性存储器1640(例如,硬盘、闪存、或任何非易失性存储介质)存储IP核设计以传递到第三方生产设施1665。替代地,可以在有线连接1650或无线连接1660上传送(例如,经由互联网)IP核设计。生产设施1665然后可以制造至少部分地基于IP核设计的集成电路。所制造的集成电路可配置为执行根据下文参考图26A-32描述的组件和/或过程的操作。
下面描述的图17A-25详述了用于实现下面参考图26A-32描述的组件和/或过程的实施例的示例性架构和系统。在一些实施例中,图26A-32中所描述的一个或多个硬件组件和/或指令如下文所详述地仿真,或实现为软件模块。
以上详述的指令的实施例可按“通用向量友好指令格式”来实现,其在下文详述。在其他实施例中,不利用此类格式,并且使用另一指令格式,然而,下文对于写掩码寄存器、各种数据变换(混合、广播等)、寻址等的描述一般适用于上文对(多条)指令的实施例的描述。另外,在下文中详述示例性系统、架构和流水线。上文中(多条)指令的实施例可在此类系统、架构和流水线上执行,但是不限于详述的那些系统、架构和流水线。
指令集可包括一种或多种指令格式。给定的指令格式可定义各种字段(例如,位的数量、位的位置)以指定将要执行的操作(例如,操作码)以及将对其执行该操作的(多个)操作数和/或(多个)其他数据字段(例如,掩码),等等。通过指令模板(或子格式)的定义来进一步分解一些指令格式。例如,可将给定指令格式的指令模板定义为具有该指令格式的字段(所包括的字段通常按照相同顺序,但是至少一些字段具有不同的位的位置,因为较少的字段被包括)的不同子集,和/或定义为具有以不同方式进行解释的给定字段。由此,ISA的每一条指令使用给定的指令格式(并且如果经定义,则按照该指令格式的指令模板中的给定的一个指令模板)来表达,并包括用于指定操作和操作数的字段。例如,示例性ADD(加法)指令具有特定的操作码和指令格式,该特定的指令格式包括用于指定该操作码的操作码字段和用于选择操作数(源1/目的地以及源2)的操作数字段;并且该ADD指令在指令流中出现将使得在操作数字段中具有选择特定操作数的特定的内容。已经推出和/或发布了被称为高级向量扩展(AVX)(AVX1和AVX2)和利用向量扩展(VEX)编码方案的SIMD扩展集(参见例如2014年9月的64和IA-32架构软件开发者手册;并且参见2014年10月的高级向量扩展编程参考)。
示例性指令格式
本文中所描述的(多条)指令的实施例能以不同的格式体现。另外,在下文中详述示例性系统、架构和流水线。(多条)指令的实施例可在此类系统、架构和流水线上执行,但是不限于详述的那些系统、架构和流水线。
通用向量友好指令格式
向量友好指令格式是适于向量指令(例如,存在专用于向量操作的特定字段)的指令格式。尽管描述了其中通过向量友好指令格式支持向量和标量操作两者的实施例,但是替代实施例仅使用通过向量友好指令格式的向量操作。
图17A-图17B是图示根据本发明的实施例的通用向量友好指令格式及其指令模板的框图。图17A是图示根据本发明的实施例的通用向量友好指令格式及其A类指令模板的框图;而图17B是图示根据本发明的实施例的通用向量友好指令格式及其B类指令模板的框图。具体地,针对通用向量友好指令格式1700定义A类和B类指令模板,这两者都包括无存储器访问1705的指令模板和存储器访问1720的指令模板。在向量友好指令格式的上下文中的术语“通用”是指不束缚于任何特定指令集的指令格式。
尽管将描述其中向量友好指令格式支持以下情况的本发明的实施例:64字节向量操作数长度(或尺寸)与32位(4字节)或64位(8字节)数据元素宽度(或尺寸)(并且由此,64字节向量由16个双字尺寸的元素组成,或者替代地由8个四字尺寸的元素组成);64字节向量操作数长度(或尺寸)与16位(2字节)或8位(1字节)数据元素宽度(或尺寸);32字节向量操作数长度(或尺寸)与32位(4字节)、64位(8字节)、16位(2字节)或8位(1字节)数据元素宽度(或尺寸);以及16字节向量操作数长度(或尺寸)与32位(4字节)、64位(8字节)、16位(2字节)、或8位(1字节)数据元素宽度(或尺寸);但是替代实施例可支持更大、更小和/或不同的向量操作数尺寸(例如,256字节向量操作数)与更大、更小或不同的数据元素宽度(例如,128位(16字节)数据元素宽度)。
图17A中的A类指令模板包括:1)在无存储器访问1705的指令模板内,示出无存储器访问的完全舍入控制型操作1710的指令模板、以及无存储器访问的数据变换型操作1715的指令模板;以及2)在存储器访问1720的指令模板内,示出存储器访问的时效性1725的指令模板和存储器访问的非时效性1730的指令模板。图17B中的B类指令模板包括:1)在无存储器访问1705的指令模板内,示出无存储器访问的写掩码控制的部分舍入控制型操作1712的指令模板以及无存储器访问的写掩码控制的vsize型操作1717的指令模板;以及2)在存储器访问1720的指令模板内,示出存储器访问的写掩码控制1727的指令模板。
通用向量友好指令格式1700包括以下列出的按照在图17A-17B中图示的顺序的如下字段。
格式字段1740——该字段中的特定值(指令格式标识符值)唯一地标识向量友好指令格式,并且由此标识指令在指令流中以向量友好指令格式出现。由此,该字段对于仅具有通用向量友好指令格式的指令集是不需要的,在这个意义上该字段是任选的。
基础操作字段1742——其内容区分不同的基础操作。
寄存器索引字段1744——其内容直接或者通过地址生成来指定源或目的地操作数在寄存器中或者在存储器中的位置。这些字段包括足够数量的位以从PxQ(例如,32x512、16x128、32x1024、64x1024)寄存器堆中选择N个寄存器。尽管在一个实施例中N可多达三个源寄存器和一个目的地寄存器,但是替代实施例可支持更多或更少的源和目的地寄存器(例如,可支持多达两个源,其中这些源中的一个源还用作目的地;可支持多达三个源,其中这些源中的一个源还用作目的地;可支持多达两个源和一个目的地)。
修饰符(modifier)字段1746——其内容将指定存储器访问的以通用向量指令格式出现的指令与不指定存储器访问的以通用向量指令格式出现的指令区分开;即在无存储器访问1705的指令模板与存储器访问1720的指令模板之间进行区分。存储器访问操作读取和/或写入到存储器层次(在一些情况下,使用寄存器中的值来指定源和/或目的地地址),而非存储器访问操作不这样(例如,源和目的地是寄存器)。尽管在一个实施例中,该字段还在三种不同的方式之间选择以执行存储器地址计算,但是替代实施例可支持更多、更少或不同的方式来执行存储器地址计算。
扩充操作字段1750——其内容区分除基础操作以外还要执行各种不同操作中的哪一个操作。该字段是针对上下文的。在本发明的一个实施例中,该字段被分成类字段1768、α字段1752和β字段1754。扩充操作字段1750允许在单条指令而非2条、3条或4条指令中执行多组共同的操作。
比例字段1760——其内容允许用于存储器地址生成(例如,用于使用(2比例*索引+基址)的地址生成)的索引字段的内容的按比例缩放。
位移字段1762A——其内容用作存储器地址生成的一部分(例如,用于使用(2比例*索引+基址+位移)的地址生成)。
位移因数字段1762B(注意,位移字段1762A直接在位移因数字段1762B上的并置指示使用一个或另一个)——其内容用作地址生成的一部分;它指定将按比例缩放存储器访问的尺寸(N)的位移因数——其中N是存储器访问中的字节数量(例如,用于使用(2比例*索引+基址+按比例缩放的位移)的地址生成)。忽略冗余的低阶位,并且因此将位移因数字段的内容乘以存储器操作数总尺寸(N)以生成将在计算有效地址中使用的最终位移。N的值由处理器硬件在运行时基于完整操作码字段1774(稍后在本文中描述)和数据操纵字段1754C确定。位移字段1762A和位移因数字段1762B不用于无存储器访问1705的指令模板和/或不同的实施例可实现这两者中的仅一个或不实现这两者中的任一个,在这个意义上,位移字段1762A和位移因数字段1762B是任选的。
数据元素宽度字段1764——其内容区分将使用多个数据元素宽度中的哪一个(在一些实施例中用于所有指令;在其他实施例中只用于指令中的一些指令)。如果支持仅一个数据元素宽度和/或使用操作码的某一方面来支持数据元素宽度,则该字段是不需要的,在这个意义上,该字段是任选的。
写掩码字段1770——其内容逐数据元素位置地控制目的地向量操作数中的数据元素位置是否反映基础操作和扩充操作的结果。A类指令模板支持合并-写掩蔽,而B类指令模板支持合并-写掩蔽和归零-写掩蔽两者。当合并时,向量掩码允许在执行(由基础操作和扩充操作指定的)任何操作期间保护目的地中的任何元素集免于更新;在另一实施例中,保持其中对应掩码位具有0的目的地的每一元素的旧值。相反,当归零时,向量掩码允许在执行(由基础操作和扩充操作指定的)任何操作期间使目的地中的任何元素集归零;在一个实施例中,目的地的元素在对应掩码位具有0值时被设为0。该功能的子集是控制正被执行的操作的向量长度的能力(即,从第一个到最后一个正被修改的元素的跨度),然而,被修改的元素不一定要是连续的。由此,写掩码字段1770允许部分向量操作,这包括加载、存储、算术、逻辑等。尽管描述了其中写掩码字段1770的内容选择了多个写掩码寄存器中的包含要使用的写掩码的一个写掩码寄存器(并且由此,写掩码字段1770的内容间接地标识要执行的掩蔽)的本发明的实施例,但是替代实施例替代地或附加地允许掩码写字段1770的内容直接指定要执行的掩蔽。
立即数字段1772——其内容允许对立即数的指定。该字段在实现不支持立即数的通用向量友好格式中不存在且在不使用立即数的指令中不存在,在这个意义上,该字段是任选的。
类字段1768——其内容在不同类的指令之间进行区分。参考图17A-图17B,该字段的内容在A类和B类指令之间进行选择。在图17A-图17B中,圆角方形用于指示特定的值存在于字段中(例如,在图17A-图17B中分别用于类字段1768的A类1768A和B类1768B)。
A类指令模板
在A类非存储器访问1705的指令模板的情况下,α字段1752被解释为其内容区分要执行不同扩充操作类型中的哪一种(例如,针对无存储器访问的舍入型操作1710和无存储器访问的数据变换型操作1715的指令模板分别指定舍入1752A.1和数据变换1752A.2)的RS字段1752A,而β字段1754区分要执行所指定类型的操作中的哪一种。在无存储器访问1705的指令模板中,比例字段1760、位移字段1762A和位移比例字段1762B不存在。
无存储器访问的指令模板——完全舍入控制型操作
在无存储器访问的完全舍入控制型操作1710的指令模板中,β字段1754被解释为其(多个)内容提供静态舍入的舍入控制字段1754A。尽管在本发明的所述实施例中舍入控制字段1754A包括抑制所有浮点异常(SAE)字段1756和舍入操作控制字段1758,但是替代实施例可支持这两个概念,可将这两个概念编码为同一字段,或仅具有这些概念/字段中的一个或另一个(例如,可仅具有舍入操作控制字段1758)。
SAE字段1756——其内容区分是否禁用异常事件报告;当SAE字段1756的内容指示启用抑制时,给定的指令不报告任何种类的浮点异常标志,并且不唤起任何浮点异常处置程序。
舍入操作控制字段1758——其内容区分要执行一组舍入操作中的哪一个(例如,向上舍入、向下舍入、向零舍入以及就近舍入)。由此,舍入操作控制字段1758允许逐指令地改变舍入模式。在其中处理器包括用于指定舍入模式的控制寄存器的本发明的一个实施例中,舍入操作控制字段1750的内容覆盖(override)该寄存器值。
无存储器访问的指令模板-数据变换型操作
在无存储器访问的数据变换型操作1715的指令模板中,β字段1754被解释为数据变换字段1754B,其内容区分要执行多个数据变换中的哪一个(例如,无数据变换、混合、广播)。
在A类存储器访问1720的指令模板的情况下,α字段1752被解释为驱逐提示字段1752B,其内容区分要使用驱逐提示中的哪一个(在图17A中,对于存储器访问时效性1725的指令模板和存储器访问非时效性1730的指令模板分别指定时效性的1752B.1和非时效性的1752B.2),而β字段1754被解释为数据操纵字段1754C,其内容区分要执行多个数据操纵操作(也称为基元(primitive))中的哪一个(例如,无操纵、广播、源的向上转换以及目的地的向下转换)。存储器访问1720的指令模板包括比例字段1760,并任选地包括位移字段1762A或位移比例字段1762B。
向量存储器指令使用转换支持来执行来自存储器的向量加载以及向存储器的向量存储。如同寻常的向量指令,向量存储器指令以数据元素式的方式从/向存储器传输数据,其中实际被传输的元素由被选为写掩码的向量掩码的内容规定。
存储器访问的指令模板——时效性的
时效性的数据是可能足够快地被重新使用以从高速缓存操作受益的数据。然而,这是提示,并且不同的处理器能以不同的方式实现它,包括完全忽略该提示。
存储器访问的指令模板——非时效性的
非时效性的数据是不太可能足够快地被重新使用以从第一级高速缓存中的高速缓存操作受益且应当被给予驱逐优先级的数据。然而,这是提示,并且不同的处理器能以不同的方式实现它,包括完全忽略该提示。
B类指令模板
在B类指令模板的情况下,α字段1752被解释为写掩码控制(Z)字段1752C,其内容区分由写掩码字段1770控制的写掩蔽应当是合并还是归零。
在B类非存储器访问1705的指令模板的情况下,β字段1754的一部分被解释为RL字段1757A,其内容区分要执行不同扩充操作类型中的哪一种(例如,针对无存储器访问的写掩码控制部分舍入控制类型操作1712的指令模板和无存储器访问的写掩码控制VSIZE型操作1717的指令模板分别指定舍入1757A.1和向量长度(VSIZE)1757A.2),而β字段1754的其余部分区分要执行所指定类型的操作中的哪一种。在无存储器访问1705的指令模板中,比例字段1760、位移字段1762A和位移比例字段1762B不存在。
在无存储器访问的写掩码控制部分舍入控制型操作1710的指令模板中,β字段1754的其余部分被解释为舍入操作字段1759A,并且禁用异常事件报告(给定的指令不报告任何种类的浮点异常标志,并且不唤起任何浮点异常处置程序)。
舍入操作控制字段1759A——正如舍入操作控制字段1758,其内容区分要执行一组舍入操作中的哪一个(例如,向上舍入、向下舍入、向零舍入以及就近舍入)。由此,舍入操作控制字段1759A允许逐指令地改变舍入模式。在其中处理器包括用于指定舍入模式的控制寄存器的本发明的一个实施例中,舍入操作控制字段1750的内容覆盖该寄存器值。
在无存储器访问的写掩码控制VSIZE型操作1717的指令模板中,β字段1754的其余部分被解释为向量长度字段1759B,其内容区分要执行多个数据向量长度中的哪一个(例如,128字节、256字节或512字节)。
在B类存储器访问1720的指令模板的情况下,β字段1754的一部分被解释为广播字段1757B,其内容区分是否要执行广播型数据操纵操作,而β字段1754的其余部分被解释为向量长度字段1759B。存储器访问1720的指令模板包括比例字段1760,并任选地包括位移字段1762A或位移比例字段1762B。
针对通用向量友好指令格式1700,示出完整操作码字段1774包括格式字段1740、基础操作字段1742和数据元素宽度字段1764。尽管示出了其中完整操作码字段1774包括所有这些字段的一个实施例,但是在不支持所有这些字段的实施例中,完整操作码字段1774包括少于所有的这些字段。完整操作码字段1774提供操作代码(操作码)。
扩充操作字段1750、数据元素宽度字段1764和写掩码字段1770允许逐指令地以通用向量友好指令格式指定这些特征。
写掩码字段和数据元素宽度字段的组合创建各种类型的指令,因为这些指令允许基于不同的数据元素宽度应用该掩码。
在A类和B类内出现的各种指令模板在不同的情形下是有益的。在本发明的一些实施例中,不同处理器或处理器内的不同核可支持仅A类、仅B类、或者可支持这两类。举例而言,旨在用于通用计算的高性能通用乱序核可仅支持B类,旨在主要用于图形和/或科学(吞吐量)计算的核可仅支持A类,并且旨在用于通用计算和图形和/或科学(吞吐量)计算两者的核可支持A类和B类两者(当然,具有来自这两类的模板和指令的一些混合、但是并非来自这两类的所有模板和指令的核在本发明的范围内)。同样,单个处理器可包括多个核,这多个核全部都支持相同的类,或者其中不同的核支持不同的类。举例而言,在具有单独的图形核和通用核的处理器中,图形核中的旨在主要用于图形和/或科学计算的一个核可仅支持A类,而通用核中的一个或多个可以是具有旨在用于通用计算的仅支持B类的乱序执行和寄存器重命名的高性能通用核。不具有单独的图形核的另一处理器可包括既支持A类又支持B类的一个或多个通用有序或乱序核。当然,在本发明的不同实施例中,来自一类的特征也可在其他类中实现。将使以高级语言编写的程序成为(例如,及时编译或静态编译)各种不同的可执行形式,这些可执行形式包括:1)仅具有由用于执行的目标处理器支持的(多个)类的指令的形式;或者2)具有替代例程并具有控制流代码的形式,该替代例程使用所有类的指令的不同组合来编写,该控制流代码选择这些例程以基于由当前正在执行代码的处理器支持的指令来执行。
示例性专用向量友好指令格式
图18A-18C是图示根据本发明的实施例的示例性专用向量友好指令格式的框图。图18A示出专用向量友好指令格式1800,其指定各字段的位置、尺寸、解释和次序、以及那些字段中的一些字段的值,在这个意义上,该专用向量友好指令格式1800是专用的。专用向量友好指令格式1800可用于扩展x86指令集,并且由此字段中的一些字段与如在现有的x86指令集及其扩展(例如,AVX)中所使用的那些字段类似或相同。该格式保持与具有扩展的现有x86指令集的前缀编码字段、实操作码字节字段、MOD R/M字段、SIB字段、位移字段和立即数字段一致。图示来自图17A-17B的字段,来自图18A-18C的字段映射到来自图17A-17B的字段。
应当理解,虽然出于说明的目的在通用向量友好指令格式1700的上下文中参考专用向量友好指令格式1800描述了本发明的实施例,但是本发明不限于专用向量友好指令格式1800,除非另有声明。例如,通用向量友好指令格式1700构想了各种字段的各种可能的尺寸,而专用向量友好指令格式1800示出为具有特定尺寸的字段。作为具体示例,尽管在专用向量友好指令格式1800中数据元素宽度字段1764被图示为一位字段,但是本发明不限于此(即,通用向量友好指令格式1700构想数据元素宽度字段1764的其他尺寸)。
通用向量友好指令格式1700包括以下列出的按照图18A中图示的顺序的如下字段。
EVEX前缀(字节0-3)1802——以四字节形式进行编码。
格式字段1740(EVEX字节0,位[7:0])——第一字节(EVEX字节0)是格式字段1740,并且它包含0x62(在本发明的一个实施例中,为用于区分向量友好指令格式的唯一值)。
第二-第四字节(EVEX字节1-3)包括提供专用能力的多个位字段。
REX字段1805(EVEX字节1,位[7-5])——由EVEX.R位字段(EVEX字节1,位[7]–R)、EVEX.X位字段(EVEX字节1,位[6]–X)以及(EVEX.B字节1,位[5]–B)组成。EVEX.R、EVEX.X和EVEX.B位字段提供与对应的VEX位字段相同的功能,并且使用1补码的形式进行编码,即ZMM0被编码为1111B,ZMM15被编码为0000B。这些指令的其他字段对如在本领域中已知的寄存器索引的较低三个位(rrr、xxx和bbb)进行编码,由此可通过增加EVEX.R、EVEX.X和EVEX.B来形成Rrrr、Xxxx和Bbbb。
REX’字段1810——这是REX’字段1810的第一部分,并且是用于对扩展的32个寄存器集合的较高16个或较低16个寄存器进行编码的EVEX.R’位字段(EVEX字节1,位[4]–R’)。在本发明的一个实施例中,该位与以下指示的其他位一起以位反转的格式存储以(在公知x86的32位模式下)与BOUND指令进行区分,该BOUND指令的实操作码字节是62,但是在MODR/M字段(在下文中描述)中不接受MOD字段中的值11;本发明的替代实施例不以反转的格式存储该指示的位以及以下其他指示的位。值1用于对较低16个寄存器进行编码。换句话说,通过组合EVEX.R’、EVEX.R以及来自其他字段的其他RRR来形成R’Rrrr。
操作码映射字段1815(EVEX字节1,位[3:0]–mmmm)——其内容对隐含的前导操作码字节(0F、0F 38或0F 3)进行编码。
数据元素宽度字段1764(EVEX字节2,位[7]–W)——由记号EVEX.W表示。EVEX.W用于定义数据类型(32位数据元素或64位数据元素)的粒度(尺寸)。
EVEX.vvvv 1820(EVEX字节2,位[6:3]-vvvv)——EVEX.vvvv的作用可包括如下:1)EVEX.vvvv对以反转(1补码)形式指定的第一源寄存器操作数进行编码,并且对具有两个或更多个源操作数的指令有效;2)EVEX.vvvv对针对特定向量位移以1补码的形式指定的目的地寄存器操作数进行编码;或者3)EVEX.vvvv不对任何操作数进行编码,该字段被预留,并且应当包含1111b。由此,EVEX.vvvv字段1820对以反转(1补码)的形式存储的第一源寄存器指定符的4个低阶位进行编码。取决于该指令,额外不同的EVEX位字段用于将指定符尺寸扩展到32个寄存器。
EVEX.U 1768类字段(EVEX字节2,位[2]-U)——如果EVEX.U=0,则它指示A类或EVEX.U0;如果EVEX.U=1,则它指示B类或EVEX.U1。
前缀编码字段1825(EVEX字节2,位[1:0]-pp)——提供了用于基础操作字段的附加位。除了对以EVEX前缀格式的传统SSE指令提供支持以外,这也具有压缩SIMD前缀的益处(EVEX前缀仅需要2位,而不是需要字节来表达SIMD前缀)。在一个实施例中,为了支持使用以传统格式和以EVEX前缀格式两者的SIMD前缀(66H、F2H、F3H)的传统SSE指令,将这些传统SIMD前缀编码成SIMD前缀编码字段;并且在运行时在被提供给解码器的PLA之前被扩展成传统SIMD前缀(因此,在无需修改的情况下,PLA既可执行传统格式的这些传统指令又可执行EVEX格式的这些传统指令)。虽然较新的指令可将EVEX前缀编码字段的内容直接用作操作码扩展,但是为了一致性,特定实施例以类似的方式扩展,但允许由这些传统SIMD前缀指定的不同含义。替代实施例可重新设计PLA以支持2位SIMD前缀编码,并且由此不需要扩展。
α字段1752(EVEX字节3,位[7]–EH,也称为EVEX.EH、EVEX.rs、EVEX.RL、EVEX.写掩码控制、以及EVEX.N;也以α图示)——如先前所述,该字段是针对上下文的。
β字段1754(EVEX字节3,位[6:4]-SSS,也称为EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB,还以βββ图示)——如前所述,此字段是针对上下文的。
REX’字段1810——这是REX’字段的其余部分,并且是可用于对扩展的32个寄存器集合的较高16个或较低16个寄存器进行编码的EVEX.V’位字段(EVEX字节3,位[3]–V’)。该位以位反转的格式存储。值1用于对较低16个寄存器进行编码。换句话说,通过组合EVEX.V’、EVEX.vvvv来形成V’VVVV。
写掩码字段1770(EVEX字节3,位[2:0]-kkk)——其内容指定写掩码寄存器中的寄存器的索引,如先前所述。在本发明的一个实施例中,特定值EVEX.kkk=000具有暗示没有写掩码用于特定指令的特殊行为(这能以各种方式实现,包括使用硬连线到所有对象的写掩码或绕过掩蔽硬件的硬件来实现)。
实操作码字段1830(字节4)还被称为操作码字节。操作码的一部分在该字段中被指定。
MOD R/M字段1840(字节5)包括MOD字段1842、Reg字段1844和R/M字段1846。如先前所述的,MOD字段1842的内容将存储器访问操作和非存储器访问操作区分开。Reg字段1844的作用可被归结为两种情形:对目的地寄存器操作数或源寄存器操作数进行编码;或者被视为操作码扩展,并且不用于对任何指令操作数进行编码。R/M字段1846的作用可包括如下:对引用存储器地址的指令操作数进行编码;或者对目的地寄存器操作数或源寄存器操作数进行编码。
比例、索引、基址(SIB)字节(字节6)——如先前所述的,比例字段1850的内容用于存储器地址生成。SIB.xxx 1854和SIB.bbb 1856——先前已经针对寄存器索引Xxxx和Bbbb提及了这些字段的内容。
位移字段1762A(字节7-10)——当MOD字段1842包含10时,字节7-10是位移字段1762A,并且它与传统32位位移(disp32)一样地工作,并且以字节粒度工作。
位移因数字段1762B(字节7)——当MOD字段1842包含01时,字节7是位移因数字段1762B。该字段的位置与以字节粒度工作的传统x86指令集8位位移(disp8)的位置相同。由于disp8是符号扩展的,因此它仅能在-128和127字节偏移之间寻址;在64字节高速缓存行的方面,disp8使用可被设为仅四个真正有用的值-128、-64、0和64的8位;由于常常需要更大的范围,所以使用disp32;然而,disp32需要4个字节。与disp8和disp32对比,位移因数字段1762B是disp8的重新解释;当使用位移因数字段1762B时,通过将位移因数字段的内容乘以存储器操作数访问的尺寸(N)来确定实际位移。该类型的位移被称为disp8*N。这减小了平均指令长度(单个字节用于位移,但具有大得多的范围)。此类经压缩的位移基于有效位移是存储器访问的粒度的倍数的假设,并且由此地址偏移的冗余低阶位不需要被编码。换句话说,位移因数字段1762B替代传统x86指令集8位位移。由此,位移因数字段1762B以与x86指令集8位位移相同的方式被编码(因此,在ModRM/SIB编码规则中没有变化),唯一的不同在于,将disp8超载至disp8*N。换句话说,在编码规则或编码长度方面没有变化,而仅在有硬件对位移值的解释方面有变化(这需要将位移按比例缩放存储器操作数的尺寸以获得字节式地址偏移)。立即数字段1772如先前所述地操作。
完整操作码字段
图18B是图示根据本发明的一个实施例的构成完整操作码字段1774的具有专用向量友好指令格式1800的字段的框图。具体地,完整操作码字段1774包括格式字段1740、基础操作字段1742和数据元素宽度(W)字段1764。基础操作字段1742包括前缀编码字段1825、操作码映射字段1815和实操作码字段1830。
寄存器索引字段
图18C是图示根据本发明的一个实施例的构成寄存器索引字段1744的具有专用向量友好指令格式1800的字段的框图。具体地,寄存器索引字段1744包括REX字段1805、REX’字段1810、MODR/M.reg字段1844、MODR/M.r/m字段1846、VVVV字段1820、xxx字段1854和bbb字段1856。
扩充操作字段
图18D是图示根据本发明的一个实施例的构成扩充操作字段1750的具有专用向量友好指令格式1800的字段的框图。当类(U)字段1768包含0时,它表明EVEX.U0(A类1768A);当它包含1时,它表明EVEX.U1(B类1768B)。当U=0且MOD字段1842包含11(表明无存储器访问操作)时,α字段1752(EVEX字节3,位[7]–EH)被解释为rs字段1752A。当rs字段1752A包含1(舍入1752A.1)时,β字段1754(EVEX字节3,位[6:4]–SSS)被解释为舍入控制字段1754A。舍入控制字段1754A包括一位SAE字段1756和两位舍入操作字段1758。当rs字段1752A包含0(数据变换1752A.2)时,β字段1754(EVEX字节3,位[6:4]–SSS)被解释为三位数据变换字段1754B。当U=0且MOD字段1842包含00、01或10(表明存储器访问操作)时,α字段1752(EVEX字节3,位[7]–EH)被解释为驱逐提示(EH)字段1752B,并且β字段1754(EVEX字节3,位[6:4]–SSS)被解释为三位数据操纵字段1754C。
当U=1时,α字段1752(EVEX字节3,位[7]–EH)被解释为写掩码控制(Z)字段1752C。当U=1且MOD字段1842包含11(表明无存储器访问操作)时,β字段1754的一部分(EVEX字节3,位[4]–S0)被解释为RL字段1757A;当它包含1(舍入1757A.1)时,β字段1754的其余部分(EVEX字节3,位[6-5]–S2-1)被解释为舍入操作字段1759A,而当RL字段1757A包含0(VSIZE1757.A2)时,β字段1754的其余部分(EVEX字节3,位[6-5]-S2-1)被解释为向量长度字段1759B(EVEX字节3,位[6-5]–L1-0)。当U=1且MOD字段1842包含00、01或10(表明存储器访问操作)时,β字段1754(EVEX字节3,位[6:4]–SSS)被解释为向量长度字段1759B(EVEX字节3,位[6-5]–L1-0)和广播字段1757B(EVEX字节3,位[4]–B)。
示例性寄存器架构
图19是根据本发明的一个实施例的寄存器架构1900的框图。在所图示的实施例中,有32个512位宽的向量寄存器1910;这些寄存器被引用为zmm0到zmm31。较低的16个zmm寄存器的较低阶256个位覆盖(overlay)在寄存器ymm0-16上。较低的16个zmm寄存器的较低阶128个位(ymm寄存器的较低阶128个位)覆盖在寄存器xmm0-15上。专用向量友好指令格式1800对这些被覆盖的寄存器堆操作,如在以下表格中所图示。
换句话说,向量长度字段1759B在最大长度与一个或多个其他较短长度之间进行选择,其中每一个此类较短长度是前一长度的一半,并且不具有向量长度字段1759B的指令模板在最大向量长度上操作。此外,在一个实施例中,专用向量友好指令格式1800的B类指令模板对紧缩或标量单/双精度浮点数据以及紧缩或标量整数数据操作。标量操作是对zmm/ymm/xmm寄存器中的最低阶数据元素位置执行的操作;取决于实施例,较高阶数据元素位置要么保持与在指令之前相同,要么归零。
写掩码寄存器1915——在所图示的实施例中,存在8个写掩码寄存器(k0至k7),每一写掩码寄存器的尺寸是64位。在替代实施例中,写掩码寄存器1915的尺寸是16位。如先前所述,在本发明的一个实施例中,向量掩码寄存器k0无法用作写掩码;当将正常指示k0的编码用作写掩码时,它选择硬连线的写掩码0xFFFF,从而有效地禁止写掩蔽用于那条指令。
通用寄存器1925——在所示出的实施例中,有十六个64位通用寄存器,这些寄存器与现有的x86寻址模式一起使用以对存储器操作数寻址。这些寄存器通过名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP以及R8到R15来引用。
标量浮点栈寄存器堆(x87栈)1945,在其上面重叠了MMX紧缩整数平坦寄存器堆1950——在所图示的实施例中,x87栈是用于使用x87指令集扩展来对32/64/80位浮点数据执行标量浮点操作的八元素栈;而使用MMX寄存器来对64位紧缩整数数据执行操作,以及为在MMX与XMM寄存器之间执行的一些操作保存操作数。
本发明的替代实施例可以使用更宽的或更窄的寄存器。另外,本发明的替代实施例可以使用更多、更少或不同的寄存器堆和寄存器。
示例性核架构、处理器和计算机架构
处理器核能以不同方式、出于不同的目的、在不同的处理器中实现。例如,此类核的实现可以包括:1)旨在用于通用计算的通用有序核;2)旨在用于通用计算的高性能通用乱序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)CPU,其包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用乱序核;以及2)协处理器,其包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核。此类不同的处理器导致不同的计算机系统架构,这些计算机系统架构可包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相同的封装中但在分开的管芯上的协处理器;3)与CPU在相同管芯上的协处理器(在该情况下,此类协处理器有时被称为专用逻辑或被称为专用核,该专用逻辑诸如,集成图形和/或科学(吞吐量)逻辑);以及4)芯片上系统,其可以将所描述的CPU(有时被称为(多个)应用核或(多个)应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上。接着描述示例性核架构,随后描述示例性处理器和计算机架构。
示例性核架构
有序和乱序核框图
图20A是图示根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的乱序发布/执行流水线的框图。图20B是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核的框图。图20A-图20B中的实线框图示有序流水线和有序核,而虚线框的任选增加图示寄存器重命名的、乱序发布/执行流水线和核。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图20A中,处理器流水线2000包括取出级2002、长度解码级2004、解码级2006、分配级2008、重命名级2010、调度(也被称为分派或发布)级2012、寄存器读取/存储器读取级2014、执行级2016、写回/存储器写入级2018、异常处置级2022和提交级2024。
图20B示出处理器核2090,该处理器核2090包括前端单元2030,该前端单元2030耦合到执行引擎单元2050,并且前端单元2030和执行引擎单元2050两者都耦合到存储器单元2070。核2090可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或替代的核类型。作为又一选项,核2090可以是专用核,诸如例如,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核,等等。
前端单元2030包括分支预测单元2032,该分支预测单元2032耦合到指令高速缓存单元2034,该指令高速缓存单元2034耦合到指令转换后备缓冲器(TLB)2036,该指令转换后备缓冲器2036耦合到指令取出单元2038,该指令取出单元2038耦合到解码单元2040。解码单元2040(或解码器)可对指令解码,并且生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元2040可使用各种不同的机制来实现。合适机制的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核2090包括存储用于某些宏指令的微代码的微代码ROM或其他介质(例如,在解码单元2040中,或以其他方式在前端单元2030内)。解码单元2040耦合到执行引擎单元2050中的重命名/分配器单元2052。
执行引擎单元2050包括重命名/分配器单元2052,该重命名/分配器单元2052耦合到引退单元2054和一个或多个调度器单元的集合2056。(多个)调度器单元2056表示任何数量的不同调度器,包括预留站、中央指令窗等。(多个)调度器单元2056耦合到(多个)物理寄存器堆单元2058。(多个)物理寄存器堆单元2058中的每一个物理寄存器堆单元表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一种或多种不同的数据类型,诸如,标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点,状态(例如,作为要执行的下一条指令的地址的指令指针)等等。在一个实施例中,(多个)物理寄存器堆单元2058包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器和通用寄存器。(多个)物理寄存器堆单元2058由引退单元2054重叠,以图示可实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来文件、(多个)历史缓冲器、(多个)引退寄存器堆;使用寄存器映射和寄存器池,等等)。引退单元2054和(多个)物理寄存器堆单元2058耦合到(多个)执行集群2060。(多个)执行集群2060包括一个或多个执行单元的集合2062以及一个或多个存储器访问单元的集合2064。执行单元2062可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可包括仅一个执行单元或全都执行所有功能的多个执行单元。(多个)调度器单元2056、(多个)物理寄存器堆单元2058和(多个)执行集群2060示出为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线,和/或各自具有其自身的调度器单元、(多个)物理寄存器堆单元和/或执行集群的存储器访问流水线——并且在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行集群具有(多个)存储器访问单元2064的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,并且其余流水线可以是有序的。
存储器访问单元的集合2064耦合到存储器单元2070,该存储器单元2070包括数据TLB单元2072,该数据TLB单元2072耦合到数据高速缓存单元2074,该数据高速缓存单元2074耦合到第二级(L2)高速缓存单元2076。在一个示例性实施例中,存储器访问单元2064可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合到存储器单元2070中的数据TLB单元2072。指令高速缓存单元2034还耦合到存储器单元2070中的第二级(L2)高速缓存单元2076。L2高速缓存单元2076耦合到一个或多个其他级别的高速缓存,并最终耦合到主存储器。
作为示例,示例性寄存器重命名的乱序发布/执行核架构可如下所述地实现流水线2000:1)指令取出2038执行取出级2002和长度解码级2004;2)解码单元2040执行解码级2006;3)重命名/分配器单元2052执行分配级2008和重命名级2010;4)(多个)调度器单元2056执行调度级2012;5)(多个)物理寄存器堆单元2058和存储器单元2070执行寄存器读取/存储器读取级2014;执行集群2060执行执行级2016;6)存储器单元2070和(多个)物理寄存器堆单元2058执行写回/存储器写入级2018;7)各单元可牵涉到异常处置级2022;以及8)引退单元2054和(多个)物理寄存器堆单元2058执行提交级2024。
核2090可支持一个或多个指令集(例如,x86指令集(具有已与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集(具有诸如NEON的任选的附加扩展)),其中包括本文中描述的(多条)指令。在一个实施例中,核2090包括用于支持紧缩数据指令集扩展(例如,AVX1、AVX2)的逻辑,由此允许使用紧缩数据来执行由许多多媒体应用使用的操作。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如超线程化技术中的同时多线程化)。
尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管所图示的处理器的实施例还包括分开的指令和数据高速缓存单元2034/2074以及共享的L2高速缓存单元2076,但是替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如,第一级(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
具体的示例性有序核架构
图21A-图21B图示更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块(包括相同类型和/或不同类型的其他核)中的一个逻辑块。取决于应用,逻辑块通过高带宽互连网络(例如,环形网络)与一些固定的功能逻辑、存储器I/O接口和其他必要的I/O逻辑进行通信。
图21A是根据本发明的实施例的单个处理器核以及它至管芯上互连网络2102的连接及其第二级(L2)高速缓存的本地子集2104的框图。在一个实施例中,指令解码器2100支持具有紧缩数据指令集扩展的x86指令集。L1高速缓存2106允许对进入标量和向量单元中的、对高速缓存存储器的低等待时间访问。尽管在一个实施例中(为了简化设计),标量单元2108和向量单元2110使用分开的寄存器集合(分别为标量寄存器2112和向量寄存器2114),并且在这些寄存器之间传输的数据被写入到存储器,并随后从第一级(L1)高速缓存2106读回,但是本发明的替代实施例可以使用不同的方法(例如,使用单个寄存器集合或包括允许数据在这两个寄存器堆之间传输而无需被写入和读回的通信路径)。
L2高速缓存的本地子集2104是全局L2高速缓存的一部分,该全局L2高速缓存被划分成多个分开的本地子集,每个处理器核一个本地子集。每个处理器核具有到其自身的L2高速缓存的本地子集2104的直接访问路径。由处理器核读取的数据被存储在其L2高速缓存子集2104中,并且可以与其他处理器核访问其自身的本地L2高速缓存子集并行地被快速访问。由处理器核写入的数据被存储在其自身的L2高速缓存子集2104中,并在必要的情况下从其他子集转储清除。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2高速缓存和其他逻辑块之类的代理在芯片内彼此通信。每个环形数据路径为每个方向1012位宽。
图21B是根据本发明的实施例的图21A中的处理器核的一部分的展开图。图21B包括L1高速缓存2104的L1数据高速缓存2106A部分,以及关于向量单元2110和向量寄存器2114的更多细节。具体地,向量单元2110是16宽向量处理单元(VPU)(见16宽ALU 2128),该单元执行整数、单精度浮点以及双精度浮点指令中的一个或多个。该VPU通过混合单元2120支持对寄存器输入的混合,通过数值转换单元2122A-B支持数值转换,并且通过复制单元2124支持对存储器输入的复制。写掩码寄存器2126允许预测所得的向量写入。
图22是根据本发明的实施例的可具有多于一个的核、可具有集成存储器控制器、以及可具有集成图形器件的处理器2200的框图。图22中的实线框图示具有单个核2202A、系统代理2210、一个或多个总线控制器单元的集合2216的处理器2200,而虚线框的任选增加图示具有多个核2202A-N、系统代理单元2210中的一个或多个集成存储器控制器单元的集合2214以及专用逻辑2208的替代处理器2200。
因此,处理器2200的不同实现可包括:1)CPU,其中专用逻辑2208是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核2202A-N是一个或多个通用核(例如,通用有序核、通用乱序核、这两者的组合);2)协处理器,其中核2202A-N是旨在主要用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中核2202A-N是大量通用有序核。因此,处理器2200可以是通用处理器、协处理器或专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、嵌入式处理器,等等。该处理器可以被实现在一个或多个芯片上。处理器2200可以是一个或多个基板的一部分,和/或可使用多种工艺技术(诸如例如,BiCMOS、CMOS、或NMOS)中的任何技术被实现在一个或多个基板上。
存储器层次结构包括核内的一个或多个级别的高速缓存、一个或多个共享高速缓存单元的集合2206、以及耦合到集成存储器控制器单元的集合2214的外部存储器(未示出)。共享高速缓存单元的集合2206可包括一个或多个中间级别的高速缓存,诸如,第二级(L2)、第三级(L3)、第四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)和/或以上各项的组合。虽然在一个实施例中,基于环的互连单元2212将集成图形逻辑2208、共享高速缓存单元的集合2206以及系统代理单元2210/(多个)集成存储器控制器单元2214互连,但是替代实施例可使用任何数量的公知技术来互连此类单元。在一个实施例中,在一个或多个高速缓存单元2206与核2202A-N之间维持一致性。
在一些实施例中,一个或多个核2202A-N能够实现多线程化。系统代理2210包括协调和操作核2202A-N的那些部件。系统代理单元2210可包括例如功率控制单元(PCU)和显示单元。PCU可以是对核2202A-N以及集成图形逻辑2208的功率状态进行调节所需的逻辑和部件,或可包括这些逻辑和部件。显示单元用于驱动一个或多个外部连接的显示器。
核2202A-N在架构指令集方面可以是同构的或异构的;即,核2202A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。
示例性计算机架构
图23-24是示例性计算机架构的框图。本领域中已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。
现在参考图23,所示出的是根据本发明一个实施例的系统2300的框图。系统2300可以包括一个或多个处理器2310、2315,这些处理器耦合到控制器中枢2320。在一个实施例中,控制器中枢2320包括图形存储器控制器中枢(GMCH)2390和输入/输出中枢(IOH)2350(其可以在分开的芯片上);GMCH 2390包括存储器和图形控制器,存储器2340和协处理器2345耦合到该存储器和图形控制器;IOH 2350将输入/输出(I/O)设备2360耦合到GMCH2390。或者,存储器和图形控制器中的一个或这两者被集成在(如本文中所描述的)处理器内,存储器2340和协处理器2345直接耦合到处理器2310,并且控制器中枢2320与IOH 2350处于单个芯片中。
附加的处理器2315的任选性在图23中通过虚线来表示。每一处理器2310、2315可包括本文中描述的处理核中的一个或多个,并且可以是处理器2200的某一版本。
存储器2340可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢2320经由诸如前端总线(FSB)之类的多分支总线、诸如快速路径互连(QPI)之类的点对点接口、或者类似的连接2395来与(多个)处理器2310、2315进行通信。
在一个实施例中,协处理器2345是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。在一个实施例中,控制器中枢2320可以包括集成图形加速器。
在物理资源2310、2315之间可以存在包括架构、微架构、热、功耗特性等一系列品质度量方面的各种差异。
在一个实施例中,处理器2310执行控制一般类型的数据处理操作的指令。嵌入在这些指令内的可以是协处理器指令。处理器2310将这些协处理器指令识别为具有应当由附连的协处理器2345执行的类型。因此,处理器2310在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器2345。(多个)协处理器2345接受并执行所接收的协处理器指令。
现在参考图24,示出的是根据本发明的实施例的SoC 2400的框图。图22中的类似要素使用类似的附图标记。另外,虚线框是更先进的SoC上的任选的特征。在图24中,(多个)互连单元2402被耦合到:应用处理器2410,其包括一个或多个核的集合202A-N以及(多个)共享高速缓存单元2206;系统代理单元2210;(多个)总线控制器单元2216;(多个)集成存储器控制器单元2214;一个或多个协处理器的集合2420,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元2430;直接存储器访问(DMA)单元2432;以及用于耦合到一个或多个外部显示器的显示单元2440。在一个实施例中,(多个)协处理器2420包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器,等等。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或此类实现方式的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码应用于输入指令,以执行本文中描述的功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有处理器的任何系统,该处理器诸如例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可以用高级的面向过程的编程语言或面向对象的编程语言来实现,以便与处理系统通信。如果需要,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定的编程语言的范围。在任何情况下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制造用于执行本文中所述的技术的逻辑。被称为“IP核”的此类表示可以被存储在有形的机器可读介质上,并可被供应给各个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
此类机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非暂态、有形布置,其包括存储介质,诸如硬盘;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括非暂态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。
仿真(包括二进制变换、代码变形等)
在一些情况下,指令转换器可用于将指令从源指令集转换至目标指令集。例如,指令转换器可以将指令变换(例如,使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其他方式转换成要由核处理的一条或多条其他指令。指令转换器可以用软件、硬件、固件、或其组合来实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图25是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所图示的实施例中,指令转换器是软件指令转换器,但替代地,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图25示出可使用x86编译器2504来编译高级语言2502形式的程序,以生成可由具有至少一个x86指令集核的处理器2516原生执行的x86二进制代码2506。具有至少一个x86指令集核的处理器2516表示通过兼容地执行或以其他方式执行以下各项来执行与具有至少一个x86指令集核英特尔处理器基本相同的功能的任何处理器:1)英特尔x86指令集核的指令集的本质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器2504表示可操作用于生成x86二进制代码2506(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器2516上执行。类似地,图25示出可以使用替代的指令集编译器2508来编译高级语言2502形式的程序,以生成可以由不具有至少一个x86指令集核的处理器2514(例如,具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生执行的替代的指令集二进制代码2510。指令转换器2512用于将x86二进制代码2506转换成可以由不具有x86指令集核的处理器2514原生执行的代码。该转换后的代码不大可能与替代的指令集二进制代码2510相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作,并且由来自替代指令集的指令构成。因此,指令转换器2512通过仿真、模拟或任何其他过程来表示允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码2506的软件、固件、硬件或其组合。
基于一致性操作的分支预测
现在参考图26A,所示为根据一个或多个实施例的系统2600的框图。在一些实施例中,系统2600可以是电子设备或组件的全部或一部分。例如,系统2600可以是蜂窝电话、计算机、服务器、网络设备、芯片上系统(SoC)、控制器、无线收发机、电源单元等。此外,在一些实施例中,系统2600可以是相关或互连设备的群组的一部分,诸如数据中心、计算集群等。
如图26A所示,系统2600可以包括可操作地耦合至系统存储器2650的处理器2610。此外,尽管图26A未示出,但是系统2600可以包括其他组件。在一个或多个实施例中,系统存储器2650可以利用任何类型的计算机存储器(例如,动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、非易失性存储器(NVM)、DRAM和NVM的组合等)来实现。
在一个或多个实施例中,处理器2610可以是硬件处理设备(例如,中央处理单元(CPU)、芯片上系统(SoC)等)。如所示,处理器2610可以包括任何数量的处理引擎2620A-2620N(也统称为处理引擎2620)。处理引擎2620可以包括处理器核、图形单元、数学协处理器等。
在一些实施例中,每个处理引擎2620可以包括高速缓存2625和基于一致性的预测逻辑2630。高速缓存2625可以是处理引擎2620的私有高速缓存。在一些实施例中,基于一致性的预测逻辑2630可以至少部分地基于处理引擎2620之间的一致性操作来生成分支预测。如本文所使用的,术语“一致性操作”指的是维持被包括在处理引擎2620A-2620N中(例如,在高速缓存2625A-2625N中)的数据元素的副本之间的一致性或统一性的操作。例如,一致性操作可以包括第一处理引擎2620向其他处理引擎2620发送对所有权的请求。每个处理引擎2620可以监视或“监听”其他处理引擎2620的一致性操作。在一些实施例中,基于一致性的预测逻辑2630可以至少部分地在处理器2610的硬件中实现。下面参考图26B-31描述基于一致性的预测逻辑2630的各个方面。
现在参考图26B,示出了处理引擎2620的示例实施例的示图。如所示,在一些实施例中,处理引擎2620可以包括取出单元2622、解码单元2624、执行引擎2628、分支预测单元(BPU)2640、高速缓存2625和监听地址寄存器2638。在一个或多个实施例中,取出单元2622可以从高速缓存2625和/或外部存储器(例如,图26A所示的存储器2650)检取程序指令。解码单元2624可以将所检取的指令解码为微代码。此外,执行引擎2628可以执行该微代码。BPU 2640可以包括预测程序代码中的分支的功能。
如所示,在一些实施例中,BPU 2640包括基于一致性的预测逻辑2630和跟踪表2634。在一些实施例中,基于一致性的预测逻辑2630可以与跟踪表2634交互以跟踪关于一致性操作的信息,并且至少部分地基于此类信息作出分支预测。下面参考图28A描述跟踪表2634的示例实施例。在一个或多个实施例中,跟踪表2634可以存储在处理引擎2620的存储器单元中,该存储器单元专用于基于一致性的预测逻辑2630。例如,跟踪表2634可以被实现在被包括在BPU 2640中的内容可寻址存储器(CAM)中。
在一个或多个实施例中,监听地址寄存器2638可以存储与分支指令相关联的监听地址。如本文所使用的,术语“监听地址”指的是所跟踪的对象的地址或标识符。如本文所使用的,术语“所跟踪的对象”指的是用于确定分支指令的可能方向的数据对象或位置。例如,监听地址可以是与标志对象相关联的高速缓存行,该标志对象指示分支指令的执行的未来方向。在一些实施例中,监听地址寄存器2638可以由在程序代码中的分支指令之前的指令填充。此外,在一些实施例中,监听地址寄存器2638可以是处理引擎2620和/或处理器2610(图26A所示)的通用架构寄存器。
现在参考图27,示出了根据一个或多个实施例的示例处理器操作2700的示图。假设图27图示并行地处理的两个处理引擎的操作,即第一处理引擎PE-1和第二处理引擎PE-2。处理引擎PE-1、PE-2通常可以对应于处理引擎2620(图26A-26B所示)的示例实现。
假设在图27的示例中,第一处理引擎PE-1生成存储在名为DATA的对象中的数据输出,并且然后设置名为FLAG的所跟踪的对象以指示DATA准备好被使用。因此,如图27所示,第一处理引擎PE-1可以生成数据输出(框2710),将输出存储在DATA中(框2720),请求FLAG的所有权(框2730),并且当它获得FLAG的所有权时将FLAG设置为“Y”(框2740)。假设FLAG和DATA存储在第一处理引擎PE-1的本地高速缓存中(例如,图26B所示的高速缓存2625)。
此外,假设与第一处理引擎PE-1的操作并行地,第二处理引擎PE-2读取FLAG以确定DATA何时准备好,并且当FLAG指示值“Y”时读取DATA。因此,如图27所示,第二处理引擎PE-2可以读取和评估FLAG(框2750-2760)。如果FLAG等于“N”,则第二处理引擎PE-2循环回到框2750以继续读取FLAG。然而,如果FLAG等于“Y”,则第二处理引擎PE-2可以读取DATA(框2770)。
如所示,在一些实施例中,第二处理引擎PE-2可以接收一致性操作指示2780,即在框2730处由第一处理引擎PE-1作出了的对FLAG的所有权的请求。在一个或多个实施例中,第二处理引擎PE-2可以包括基于一致性的预测逻辑(例如,图26A-26B所示的基于一致性的预测逻辑2630),其可以基于从第一处理引擎PE-1接收的一致性操作指示2780作出分支预测。下面参考图28A-31更详细地描述使用一致性操作来作出分支预测。
现在参考图28A,所示为根据一个或多个实施例的跟踪表2800。跟踪表2800通常可以对应于跟踪表2634(图26B所示)的示例实施例。如所示,跟踪表2800可以包括任何数量的条目,其中每个条目与唯一的分支指令相关联。在一些实施例中,跟踪表2800的每个条目可以包括分支地址字段2810、监听地址字段2820、监听命中字段2830和偏置值字段2840。
在一个或多个实施例中,分支地址字段2810可以存储特定分支指令的地址或标识符(例如,存储器地址、指令地址、逻辑地址、寄存器、经编码的地址等)。监听地址字段2820可以存储数据对象的地址或标识符,该数据对象提供对分支指令的可能方向的指示。监听命中字段2830可以存储对由监听地址字段2820标识的对象是否已经经受一致性操作的指示。偏置值字段2840可以存储对分支指令的初始执行的方向的指示。在一些实施例中,跟踪表2800可以在内容可寻址存储器(CAM)中实现,该CAM被配置以用于搜索分支地址字段2810和/或监听地址字段2820。注意,尽管图28A将跟踪表2800示出为包括行和列的表,但是构想可以使用其他数据结构和/或布置。
在一个或多个实施例中,跟踪表2800可以仅存储与基于一致性的预测兼容的专用分支指令的数据。现在参考图28B,示出根据一个或多个实施例的专用于与基于一致性的预测一起使用的示例分支指令2850。如所示,分支指令2850可以包括指令名称2860、第一操作数2870和第二操作数2880。在一些实施例中,指令名称2860可以标识特定类型的分支指令。第一操作数2870可以指定分支指令2850的目标地址。此外,第二操作数2880可以指定与分支指令2850相关联的监听地址。
现在参考图29,所示为根据一个或多个实施例的用于基于一致性的预测的方法2900的流程图。框2910可以包括响应于分支指令的执行来更新跟踪表。框2920可以包括响应于一致性操作来更新跟踪表条目。框2930可以包括使用跟踪表来作出分支预测。在框2930之后,方法2900完成。下面参考图30A-31讨论根据一些实施例的框2910-2930的示例实现。
现在参考图30A,所示为根据一个或多个实施例的添加或更新跟踪表条目的方法3000的流程图。假设方法3000通常对应于框2910(图29所示)的示例实现。如图30A所示,第二处理引擎PE-2可以执行分支指令(框3005),填充与分支指令相关联的跟踪表条目(框3010),并且将跟踪表条目的监听命中字段设置为“N”(框3015)。在方法3000的示例实现中,参考图26B-28B,被包括在PE-2中的基于一致性的预测逻辑2630可以检测程序的当前执行中的分支指令“A”的初始执行。响应于检测到该初始执行,基于一致性的预测逻辑2630可以将新条目添加到跟踪表2800。此外,基于一致性的预测逻辑2630可以利用分支指令“A”的地址或标识符来填充新条目的分支地址字段2810。基于一致性的预测逻辑2630还可以利用所跟踪的对象“FLAG1”的监听地址来填充新条目的监听地址字段2820,“FLAG1”与分支指令“A”相关联。在一些实施例中,基于一致性的预测逻辑2630可以利用分支指令2850的第二操作数2880来填充监听地址字段2820(图28B所示)。在其他实施例中,分支指令2850的第二操作数2880可以指定存储监听地址的特定架构寄存器,该监听地址由基于一致性的预测逻辑2630填充到监听地址字段2820中。例如,第二操作数2880可以标识哪个寄存器是监听地址寄存器2638。
在一个或多个实施例中,基于一致性的预测逻辑2630还可以利用指示分支指令“A”的初始执行的分支方向的偏置值来填充新条目的偏置值字段2840。例如,在一些实施例中,偏置值“0”可以指示分支指令的第一方向,而偏置值“1”可以指示分支指令的第二方向。基于一致性的预测逻辑2630还可以利用否定命中指示符(即,由监听地址字段2820标识的对象“FLAG1”还未经受一致性操作的指示)来填充新条目的监听命中字段2830。
现在参考图30B,所示为根据一个或多个实施例的更新跟踪表条目的监听命中字段的方法3050的流程图。假设方法3050通常对应于框2920(图29所示)的示例实现。如图30B所示,第一处理引擎PE-1可以作出对所跟踪的对象的存储器请求(框3055)。此外,第二处理引擎PE-2可以检测来自第一处理引擎PE-1的请求(框3060),标识与所跟踪的对象相关联的跟踪表条目(框3065),并将所标识的条目的监听命中字段设置为“Y”(框3070)。在方法3050的示例实现中,参考图26B-28B,被包括在PE-2中的基于一致性的预测逻辑2630可以监听来自PE-2的对所跟踪的对象“FLAG1”的所有权请求。响应于检测到该请求,基于一致性的预测逻辑2630可以搜索跟踪表2800以标识在监听地址字段2820中具有与所跟踪的对象“FLAG1”匹配的值的任何条目。此外,在所标识的跟踪表条目中的每一个中,基于一致性的预测逻辑2630可以利用肯定命中指示符(即,由监听地址字段2820标识的对象“FLAG1”已经经受一致性操作的指示)来填充监听命中字段2830。
现在参考图31,所示为根据一个或多个实施例的用于基于一致性的预测的方法3100的流程图。假设方法3100通常对应于框2930(图29所示)的示例实现。框3110可以包括确定将在处理器的处理引擎中执行特定分支指令。例如,参考图26B-28B,PE-2的BPU 2640中的基于一致性的预测逻辑2630可以确定将在PE-2中执行分支指令“A”。
菱形3120可以包括作出关于是否存在与分支指令相关联的跟踪表条目的确定。例如,参考图26B-28B,基于一致性的预测逻辑2630可以确定跟踪表2800是否包括其中分支地址字段2810与分支指令“A”匹配的条目。
如果在菱形3120处确定不存在与分支指令相关联的跟踪表条目,则在框3130处,在不使用跟踪表的情况下生成分支预测。例如,参考图26B-28B,BPU 2640可以在不使用跟踪表2800的情况下为分支指令“A”生成分支预测。在框3130之后,方法3100完成。
然而,如果在菱形3120处确定存在与分支指令相关联的跟踪表条目,则在菱形3140处,作出关于跟踪表条目包括肯定命中指示符还是否定命中指示符的确定。例如,参考图26B-28B,基于一致性的预测逻辑2630可以确定跟踪表2800的匹配条目中的监听命中字段2830包括“Y”还是“N”。
如果在菱形3140处确定跟踪表条目包括否定命中指示符,则在框3150处,基于跟踪表条目中的偏置值生成分支预测。例如,参考图26B-28B,BPU 2640可以生成与由存储在跟踪表条目的偏置值字段2840中的偏置值指示的分支方向匹配的分支预测。在框3150之后,方法3100完成。
然而,如果在菱形3140处确定跟踪表条目包括肯定命中指示符,则在框3150处,基于跟踪表条目中的偏置值的反转生成分支预测。例如,参考图26B-28B,BPU 2640可以生成与由存储在跟踪表条目的偏置值字段2840中的偏置值指示的分支方向相反的分支预测。在框3160之后,方法3100完成。
现在参考图32,所示为根据一个或多个实施例的用于基于一致性的预测的方法3200的流程图。框3210可以包括由处理器的分支预测电路检测与第一存储器地址相关联的一致性操作。例如,参考图26B-30B,PE-2的基于一致性的预测逻辑2630可以监听来自PE-1的对所跟踪的对象“FLAG1”的所有权的请求。基于一致性的预测逻辑2630可以生成或更新跟踪表2800的一个或多个条目以包括监听命中指示符(例如,在监听命中字段2830中)。监听命中指示符可以指示已经检测到与一个或多个条目相关联的对象的一致性操作。
框3220可以包括由分支预测电路标识与第一存储器地址相关联的第一分支指令。框3230可以包括由分支预测电路基于检测到的一致性操作来预测所标识的分支指令的方向。例如,参考图26B-30B,基于一致性的预测逻辑2630可以检测到与第一存储器地址相关联的分支指令将由PE-2执行。作为响应,基于一致性的预测逻辑2630可以针对其中分支地址字段2810与第一存储器地址匹配的条目搜索跟踪表2800。然后,基于一致性的预测逻辑2630可以基于偏置值字段2840和监听命中字段2830生成对分支指令的预测。例如,如果监听命中字段2830包括肯定命中指示符,则预测可以在与由偏置值指示的方向相反的方向中。此外,如果监听命中字段2830包括否定命中指示符,则预测可以在与由偏置值指示的方向相同的方向中。在框3230之后,方法3200完成。
在各实施例中,以上参考图27和29-32描述的方法和/或操作(例如,方法2900、3000、3050、3100、3200)可以由处理逻辑执行,处理逻辑可以包括硬件(例如,处理设备、电路、专用逻辑、可编程逻辑、微代码等)软件(例如,在处理设备上运行的指令)或其组合。在一些实现方式中,可以使用图26A-28B所示的一个或多个组件(例如,基于一致性的预测逻辑2630、跟踪表2634、BPU 2640等)来执行前述方法和/或操作。在固件或软件实施例中,前述方法和/或操作可通过计算机执行的指令来实现,该计算机执行的指令被存储在例如光学、半导体或磁存储设备之类的非瞬态机器可读介质上。机器可读介质可存储数据,数据如果被至少一个机器使用,使该至少一个机器制造至少一个集成电路以执行方法。为了说明,可能已经参考图26A-31描述了前述方法和/或操作中涉及的动作,图26A-31示出根据一个或多个实施例的示例。然而,本文所讨论的各实施例的范围不限于此方面。
以下句子和/或示例涉及进一步的实施例。
在示例1中,一种用于分支预测的处理器包括分支预测电路和至少一个高速缓存存储器。分支预测电路用于:检测与第一存储器地址相关联的一致性操作;标识与第一存储器地址相关联的第一分支指令;以及基于检测到的一致性操作来预测所标识的分支指令的方向。
在示例2中,如示例1的主题可以可选地包括:处理器包括第一处理核和第二处理核,一致性操作是来自第一处理核的请求,并且分支预测电路被包括在第二处理核中。
在示例3中,如示例1-2的主题可以可选地包括:分支预测电路用于在由第二处理核执行时预测第一分支指令的方向。
在示例4中,如示例1-3的主题可以可选地包括:一致性操作是指定第一存储器地址的无效请求,并且分支预测电路用于响应于确定在无效请求中指定的第一存储器地址匹配存储在第一架构寄存器中的监听地址而标识第一分支指令。
在示例5中,如示例1-4的主题可以可选地包括:分支预测电路用于响应于第一分支指令的初始执行而填充跟踪表中的第一条目,其中第一条目与第一分支指令相关联。
在示例6中,如示例1-5的主题可以可选地包括:第一条目包括分支地址字段、监听地址字段、监听命中字段和偏置字段,并且分支预测电路用于响应于第一分支指令的初始执行而进行以下操作:将第一分支指令的地址存储在分支地址字段中;将与第一分支指令相关联的监听地址存储在监听地址字段中;将偏置值存储在偏置字段中,偏置值指示第一分支指令的首次执行中的分支方向;以及将监听命中字段设置为否定命中指示。
在示例7中,如示例1-6的主题可以可选地包括:分支预测电路用于响应于检测到一致性操作而进行以下操作:基于与一致性操作相关联的第一存储器地址来标识跟踪表中的第一条目;以及将所标识的第一条目的监听命中字段设置为肯定命中指示。
在示例8中,如示例1-7的主题可以可选地包括:分支预测电路用于响应于确定第一分支指令将被执行而进行以下操作:标识与第一分支指令相关联的跟踪表的第一条目;响应于确定所标识的第一条目的监听命中字段正在存储否定命中指示,基于所标识的第一条目的偏置字段中的偏置值来生成对第一分支指令的预测;以及响应于确定所标识的第一条目的监听命中字段正在存储肯定命中指示,基于所标识的第一条目的偏置字段中的偏置值的反转来生成对第一分支指令的预测。
在示例9中,一种用于分支预测的方法包括:由第一处理引擎的分支预测电路检测与所跟踪的对象相关联的一致性操作;由分支预测电路更新跟踪表的第一条目以指示检测到与所跟踪的对象相关联的一致性操作,第一条目与第一分支指令相关联;以及由分支预测电路基于跟踪表的第一条目来预测第一分支指令的方向。
在示例10中,如示例9的主题可以可选地包括:一致性操作是由第二处理引擎生成的无效请求,并且第一处理引擎和第二处理引擎被包括在处理器中。
在示例11中,如示例9-10的主题可以可选地包括:响应于第一分支指令的初始执行,生成跟踪表的第一条目。
在示例12中,如示例9-11的主题可以可选地包括:响应于第一分支指令的初始执行而进行以下操作:将第一分支指令的地址存储在第一条目的分支地址字段中;将与第一分支指令相关联的监听地址存储在第一条目的监听地址字段中;将偏置值存储在第一条目的偏置字段中,偏置值指示第一分支指令的首次执行中的分支方向;以及将第一条目的监听命中字段设置为否定命中指示。
在示例13中,如示例9-12的主题可以可选地包括:响应于检测到一致性操作,将第一条目的监听命中字段设置为肯定命中指示。
在示例14中,如示例9-13的主题可以可选地包括:在第一分支指令的初始执行之后,确定第一分支指令将被执行;以及响应于确定第一分支指令将被执行而进行以下操作:确定第一条目的监听命中字段正在存储否定命中指示还是肯定命中指示;响应于确定第一条目的监听命中字段正在存储否定命中指示,基于所标识的第一条目的偏置字段中的偏置值来生成对第一分支指令的预测;以及响应于确定所标识的第一条目的监听命中字段正在存储肯定命中指示,基于所标识的第一条目的偏置字段中的偏置值的反转来生成对第一分支指令的预测。
在示例15中,如示例9-14的主题可以可选地包括:标识将被执行的第二分支指令;以及响应于确定跟踪表不包括与第二分支指令相关联的条目,在不使用跟踪表的情况下生成对第二分支指令的预测。
在示例16中,一种用于分支预测的计算设备可以包括一个或多个处理器,以及具有存储于其中的多个指令的存储器,该多个指令当由该一个或多个处理器执行时,使该计算设备执行如示例9至15中的任一项的方法。
在示例17中,至少一种机器可读介质,具有存储于其上的数据,该数据如果由至少一个机器使用,则使该至少一个机器执行如示例9至15中的任一项的方法。
在示例18中,一种用于分支预测的电子设备包括用于执行如示例9至15中的任一项的方法的装置。
在示例19中,一种用于分支预测的系统包括处理器,该处理器包括:多个处理引擎和分支预测电路,以及耦合至该处理器的系统存储器。分支预测电路用于:检测与所跟踪的对象相关联的一致性操作;标识与所跟踪的对象相关联的第一分支指令;以及基于检测到的一致性操作来预测所标识的分支指令的方向。
在示例20中,如示例19的主题可以可选地包括:分支预测电路用于基于包括多个条目的跟踪表来标识第一分支指令,其中跟踪表的第一条目与第一分支指令唯一地相关联。
在示例21中,如示例19-20的主题可以可选地包括:分支预测电路用于响应于第一分支指令的首次执行而进行以下操作:将第一分支指令的分支地址存储在跟踪表的第一条目中;以及将所跟踪的对象的监听地址存储在跟踪表的第一条目中。
在示例22中,如示例19-21的主题可以可选地包括:分支预测电路用于从处理器的所指定的架构寄存器中读取所跟踪的对象的监听地址。
在示例23中,如示例19-22的主题可以可选地包括:分支预测电路用于响应于检测到一致性操作而进行以下操作:基于与一致性操作相关联的地址和第一条目中的所存储的监听地址的匹配来标识分支表中的第一条目;以及将所标识的第一条目的监听命中字段设置为肯定命中指示。
在示例24中,一种用于分支预测的设备包括:用于检测与所跟踪的对象相关联的一致性操作的装置;用于更新跟踪表的第一条目以指示检测到与所跟踪的对象相关联的一致性操作的装置,其中第一条目与第一分支指令相关联;以及用于基于跟踪表的第一条目来预测第一分支指令的方向的装置。
在示例25中,如示例24的主题可以可选地包括:第一分支指令由第一处理引擎执行,其中一致性操作是由第二处理引擎生成的无效请求,并且其中第一处理引擎和第二处理引擎被包括在处理器中。
在示例26中,如示例24-25的主题可以可选地包括:用于响应于第一分支指令的初始执行而生成跟踪表的第一条目的装置。
在示例27中,如示例24-26的主题可以可选地包括:用于响应于第一分支指令的初始执行而进行以下操作的装置:将第一分支指令的地址存储在第一条目的分支地址字段中;将与第一分支指令相关联的监听地址存储在第一条目的监听地址字段中;将偏置值存储在第一条目的偏置字段中,偏置值指示第一分支指令的首次执行中的分支方向;以及将第一条目的监听命中字段设置为否定命中指示。
在示例28中,如示例24-27的主题可以可选地包括:用于响应于检测到一致性操作而将第一条目的监听命中字段设置为肯定命中指示的装置。
在示例29中,如示例24-28的主题可以可选地包括用于进行以下操作的装置:在第一分支指令的初始执行之后,确定第一分支指令将被执行;响应于确定第一分支指令将被执行而进行以下操作:确定第一条目的监听命中字段正在存储否定命中指示还是肯定命中指示;响应于确定第一条目的监听命中字段正在存储否定命中指示,基于所标识的第一条目的偏置字段中的偏置值来生成对第一分支指令的预测;以及响应于确定所标识的第一条目的监听命中字段正在存储肯定命中指示,基于所标识的第一条目的偏置字段中的偏置值的反转来生成对第一分支指令的预测。
在示例30中,如示例24-29的主题可以可选地包括用于进行以下操作的装置:标识将被执行的第二分支指令;以及响应于确定跟踪表不包括与第二分支指令相关联的条目,在不使用跟踪表的情况下生成对第二分支指令的预测。
根据一个或多个实施例,提供了基于一致性操作的分支预测的示例。如上面参考图26A-32所讨论的,一些实施例可以包括更新跟踪表以包括存储关于所执行的分支指令和相关联的所跟踪的对象的信息的条目。可以更新一个或多个条目以指示所跟踪的对象是否已经经受一致性操作。预测电路可以使用跟踪表来作出至少部分地基于一致性操作的分支预测。因此,一些实施例可以提供改善的预测准确度。
注意,尽管图26A-32示出了各种示例实现方式,但是其他变型是可能的。例如,构想可以使用参考图1-25描述的示例设备和系统来实现一个或多个实施例。
注意,为了说明而提供图1-32所示的示例,并且图1-32所示的示例不旨在限制任何实施例。具体而言,尽管为了清楚可以以简化形式示出实施例,但是实施例可以包括任何数量和/或布置的处理器、核、和/或附加组件(例如,总线、存储介质、连接器、功率组件、缓冲器、接口等)。例如,构想一些实施例除了所示的那些组件可以包括任何数量的组件,并且所示组件的不同布置可以在某些实现方式中出现。此外,构想图1-32所示示例中的细节可以在一个或多个实施例中的任何地方使用。
应理解,以上示例的各种组合是可能的。实施例可在许多不同类型的系统中使用。例如,在一个实施例中,可以将通信设备布置为用于执行本文中所描述的各种方法和技术。当然,本发明的范围不限于通信设备,并且相反,其他实施例可以涉及用于处理指令的其他类型的装置、或者一种或多种机器可读介质,该机器可读介质包括指令,响应于在计算设备上执行这些指令,这些指令使该设备实行本文中所描述的方法与技术中的一者或多者。
在本说明书通篇中对“一个实施例”或“一实施例”的引用意味着结合该实施例描述的特定特征、结构或特性包括在本发明包含的至少一个实现中。因此,短语“一个实施例”或“在实施例中”的出现不一定指代同一实施例。此外,特定的特征、结构或特性可按照与所示特定实施例不同的其他适当形式来创立,而且所有此类形式可涵盖在本申请的权利要求中。
尽管已参照有限数量的实施例描述了本发明,但是本领域技术人员将从其中领会很多修改和变型。所附权利要求旨在涵盖落入本发明的真实精神与范围的所有此类修改与变型。

Claims (23)

1.一种用于分支预测的处理器,包括:
至少一个高速缓存存储器;以及
分支预测电路,用于:
检测与第一存储器地址相关联的一致性操作;
标识与所述第一存储器地址相关联的第一分支指令;以及
基于检测到的一致性操作来预测所标识的分支指令的方向。
2.如权利要求1所述的处理器,其特征在于,所述处理器包括第一处理核和第二处理核,其中所述一致性操作是来自所述第一处理核的请求,并且其中所述分支预测电路被包括在所述第二处理核中。
3.如权利要求2所述的处理器,其特征在于,所述分支预测电路用于在由所述第二处理核执行时预测所述第一分支指令的方向。
4.如权利要求1所述的处理器,其特征在于,所述一致性操作是指定所述第一存储器地址的无效请求,并且其中所述分支预测电路用于响应于确定在所述无效请求中指定的所述第一存储器地址匹配存储在第一架构寄存器中的监听地址而标识所述第一分支指令。
5.如权利要求1所述的处理器,其特征在于,所述分支预测电路用于:
响应于所述第一分支指令的初始执行,填充跟踪表中的第一条目,其中所述第一条目与所述第一分支指令相关联。
6.如权利要求5所述的处理器,其特征在于,所述第一条目包括分支地址字段、监听地址字段、监听命中字段和偏置字段,其中所述分支预测电路用于响应于所述第一分支指令的所述初始执行而进行以下操作:
将所述第一分支指令的地址存储在所述分支地址字段中;
将与所述第一分支指令相关联的监听地址存储在所述监听地址字段中;
将偏置值存储在所述偏置字段中,所述偏置值指示所述第一分支指令的所述首次执行中的分支方向;以及
将所述监听命中字段设置为否定命中指示。
7.如权利要求6所述的处理器,其特征在于,所述分支预测电路用于:
响应于检测到所述一致性操作而进行以下操作:
基于与所述一致性操作相关联的所述第一存储器地址来标识跟踪表中的所述第一条目;以及
将所标识的第一条目的所述监听命中字段设置为肯定命中指示。
8.如权利要求6所述的处理器,其特征在于,所述分支预测电路用于:
响应于确定所述第一分支指令将被执行而进行以下操作:
标识与所述第一分支指令相关联的所述跟踪表的所述第一条目;
响应于确定所标识的第一条目的所述监听命中字段正在存储否定命中指示,基于所标识的第一条目的所述偏置字段中的所述偏置值来生成对所述第一分支指令的预测;以及
响应于确定所标识的第一条目的所述监听命中字段正在存储肯定命中指示,基于所标识的第一条目的所述偏置字段中的所述偏置值的反转来生成对所述第一分支指令的预测。
9.一种用于分支预测的方法,包括:
由第一处理引擎的分支预测电路检测与所跟踪的对象相关联的一致性操作;
由所述分支预测电路更新跟踪表的第一条目以指示检测到与所述所跟踪的对象相关联的所述一致性操作,所述第一条目与第一分支指令相关联;以及
由所述分支预测电路基于所述跟踪表的所述第一条目来预测所述第一分支指令的方向。
10.如权利要求9所述的方法,其特征在于,所述一致性操作是由第二处理引擎生成的无效请求,并且其中所述第一处理引擎和所述第二处理引擎被包括在处理器中。
11.如权利要求9所述的方法,其特征在于,进一步包括:
响应于所述第一分支指令的初始执行,生成所述跟踪表的所述第一条目。
12.如权利要求11所述的方法,其特征在于,进一步包括,响应于所述第一分支指令的所述初始执行而进行以下操作:
将所述第一分支指令的地址存储在所述第一条目的分支地址字段中;
将与所述第一分支指令相关联的监听地址存储在所述第一条目的监听地址字段中;
将偏置值存储在所述第一条目的偏置字段中,所述偏置值指示所述第一分支指令的所述首次执行中的分支方向;以及
将所述第一条目的监听命中字段设置为否定命中指示。
13.如权利要求12所述的方法,其特征在于,进一步包括:
响应于检测到所述一致性操作,将所述第一条目的所述监听命中字段设置为肯定命中指示。
14.如权利要求13所述的方法,其特征在于,进一步包括:
在所述第一分支指令的所述初始执行之后,确定所述第一分支指令将被执行;
响应于确定所述第一分支指令将被执行而进行以下操作:
确定所述第一条目的所述监听命中字段正在存储否定命中指示还是肯定命中指示;
响应于确定所述第一条目的所述监听命中字段正在存储否定命中指示,基于所标识的第一条目的所述偏置字段中的所述偏置值来生成对所述第一分支指令的预测;以及
响应于确定所标识的第一条目的所述监听命中字段正在存储肯定命中指示,基于所标识的第一条目的所述偏置字段中的所述偏置值的反转来生成对所述第一分支指令的预测。
15.如权利要求14所述的方法,其特征在于,进一步包括:
标识将被执行的第二分支指令;以及
响应于确定所述跟踪表不包括与所述第二分支指令相关联的条目,在不使用所述跟踪表的情况下生成对所述第二分支指令的预测。
16.一种用于分支预测的计算设备,包括:
一个或多个处理器;以及
存储器,具有存储于其中的多个指令,所述多个指令当由所述一个或多个处理器执行时,使所述计算设备执行如权利要求9至15中的任一项所述的方法。
17.至少一种机器可读介质,具有存储于其上的数据,所述数据如果由至少一个机器使用,则使所述至少一个机器执行如权利要求9至15中的任一项所述的方法。
18.一种用于分支预测的电子设备,包括用于执行如权利要求9至15中的任一项所述的方法的装置。
19.一种用于分支预测的系统,包括:
处理器,包括多个处理引擎和分支预测电路,所述分支预测电路用于:
检测与所跟踪的对象相关联的一致性操作;
标识与所述所跟踪的对象相关联的第一分支指令;以及
基于检测到的一致性操作来预测所标识的分支指令的方向;以及
系统存储器,耦合至所述处理器。
20.如权利要求19所述的系统,其特征在于,所述分支预测电路用于基于包括多个条目的跟踪表来标识第一分支指令,其中所述跟踪表的第一条目与所述第一分支指令唯一地相关联。
21.如权利要求20所述的系统,其特征在于,所述分支预测电路用于响应于所述第一分支指令的首次执行而进行以下操作:
将所述第一分支指令的分支地址存储在所述跟踪表的所述第一条目中;以及
将所述所跟踪的对象的监听地址存储在所述跟踪表的所述第一条目中。
22.如权利要求21所述的系统,其特征在于,所述分支预测电路用于从所述处理器的所指定的架构寄存器中读取所述所跟踪的对象的所述监听地址。
23.如权利要求21所述的系统,其特征在于,所述分支预测电路用于响应于检测到所述一致性操作而进行以下操作:
基于与所述一致性操作相关联的地址和所述第一条目中的所存储的监听地址的匹配来标识分支表中的所述第一条目;以及
将所标识的第一条目的所述监听命中字段设置为肯定命中指示。
CN201910228217.0A 2018-03-29 2019-03-25 处理器中的基于一致性操作的分支预测 Pending CN110321166A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/940,408 2018-03-29
US15/940,408 US10521236B2 (en) 2018-03-29 2018-03-29 Branch prediction based on coherence operations in processors

Publications (1)

Publication Number Publication Date
CN110321166A true CN110321166A (zh) 2019-10-11

Family

ID=65657266

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910228217.0A Pending CN110321166A (zh) 2018-03-29 2019-03-25 处理器中的基于一致性操作的分支预测

Country Status (3)

Country Link
US (2) US10521236B2 (zh)
EP (1) EP3547116B1 (zh)
CN (1) CN110321166A (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10521236B2 (en) * 2018-03-29 2019-12-31 Intel Corporation Branch prediction based on coherence operations in processors
US10761855B2 (en) * 2018-05-02 2020-09-01 Micron Technology, Inc. Securing conditional speculative instruction execution
US11449427B2 (en) * 2020-02-13 2022-09-20 SK Hynix Inc. Microprocessor-based system memory manager hardware accelerator
CN115345122B (zh) * 2022-08-31 2023-03-17 沐曦科技(北京)有限公司 一种用于仿真的非标准总线协议的芯片验证装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8285670B2 (en) * 2008-07-22 2012-10-09 International Business Machines Corporation Dynamically maintaining coherency within live ranges of direct buffers
US20110295587A1 (en) * 2010-06-01 2011-12-01 Eeckhout Lieven Methods and systems for simulating a processor
US8417890B2 (en) * 2010-06-09 2013-04-09 International Business Machines Corporation Managing cache coherency for self-modifying code in an out-of-order execution system
US9146869B2 (en) * 2012-12-05 2015-09-29 Advanced Micro Devices, Inc. State encoding for cache lines
US9501284B2 (en) * 2014-09-30 2016-11-22 Apple Inc. Mechanism for allowing speculative execution of loads beyond a wait for event instruction
US10719327B1 (en) * 2015-05-19 2020-07-21 Apple Inc. Branch prediction system
US9864687B2 (en) * 2015-07-01 2018-01-09 Samsung Electronics Co., Ltd. Cache coherent system including master-side filter and data processing system including same
US10698691B2 (en) * 2016-08-30 2020-06-30 Advanced Micro Devices, Inc. Method and device for determining branch prediction history for branch prediction by partially combining shifted branch prediction history with branch signature
US10521236B2 (en) * 2018-03-29 2019-12-31 Intel Corporation Branch prediction based on coherence operations in processors

Also Published As

Publication number Publication date
EP3547116A3 (en) 2019-12-18
EP3547116A2 (en) 2019-10-02
US10521236B2 (en) 2019-12-31
EP3547116B1 (en) 2022-11-16
US11886884B2 (en) 2024-01-30
US20200081718A1 (en) 2020-03-12
US20190303162A1 (en) 2019-10-03

Similar Documents

Publication Publication Date Title
US20200218677A1 (en) Management of Processor Performance Based on User Interrupts
CN110832460A (zh) 基于中断率来修改处理器频率
CN113272889A (zh) 基于用户活动调整显示刷新率
CN110321166A (zh) 处理器中的基于一致性操作的分支预测
US20200272513A1 (en) Thread Scheduling Using Processing Engine Information
CN109791493B (zh) 用于乱序集群化解码中的负载平衡的系统和方法
CN108351811A (zh) 调度高度并行的应用
CN113474745A (zh) 在处理器中执行软扼制和硬扼制
CN108351785A (zh) 用于部分减少操作的指令和逻辑
EP3674847B1 (en) Controlling power state demotion in a processor
WO2019067126A1 (en) CONTROL BLOCKS FOR PROCESSOR FEED MANAGEMENT
US20210064110A1 (en) Control blocks for processor power management
US20190102227A1 (en) Thread scheduling using processing engine information
CN111752745A (zh) 对码字中相邻两位错误的检测
EP4198689A1 (en) Frequency budget in a processor
US20200004584A1 (en) Hardware Queue Manager for Scheduling Requests in a Processor
US20230100693A1 (en) Prediction of next taken branches in a processor
CN114661349A (zh) 用于代码预取的指令和逻辑
US11514551B2 (en) Configuration profiles for graphics processing unit
US11354213B2 (en) Utilization metrics for processing engines
US20240111598A1 (en) Sequencing circuit for a processor
US20220197635A1 (en) Instruction and logic for sum of square differences
CN116303210A (zh) 用于计算机处理器的寄存器接口
CN113396375A (zh) 调整处理器中的扼制阈值
CN115525135A (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