CN109716293A - 在基于处理器的系统中使用融合处理器核心执行分布式分支预测 - Google Patents

在基于处理器的系统中使用融合处理器核心执行分布式分支预测 Download PDF

Info

Publication number
CN109716293A
CN109716293A CN201780057468.6A CN201780057468A CN109716293A CN 109716293 A CN109716293 A CN 109716293A CN 201780057468 A CN201780057468 A CN 201780057468A CN 109716293 A CN109716293 A CN 109716293A
Authority
CN
China
Prior art keywords
processor core
program identifier
pfe
core
instruction window
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
CN201780057468.6A
Other languages
English (en)
Inventor
A·克里希纳
V·R·克廷蒂·纳雷什
G·M·赖特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN109716293A publication Critical patent/CN109716293A/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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch

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)
  • Multi Processors (AREA)

Abstract

本发明揭示在基于处理器的系统中使用融合处理器核心执行分布式分支预测。在一个方面中,提供一种分布式分支预测器作为支持核心融合的多个处理器核心。每一处理器核心经配置以从所述处理器核心中的另一者(或从其自身)接收程序标识符,产生后续预测程序标识符,及将所述预测程序标识符(且任选地将全局历史指示符)转发至负责处置下一预测的适当处理器核心。所述处理器核心还提取用于所述接收程序标识符的标头及/或一或多个指令,且将所述标头及/或所述一或多个指令发送至所述适当处理器核心以供执行。所述处理器核心还确定将处置所述预测程序标识符的执行的处理器核心,且将那个信息作为指令窗跟踪器而发送至接收到所述预测程序标识符的处理器核心。

Description

在基于处理器的系统中使用融合处理器核心执行分布式分支 预测
优先权申请案
本申请案主张2016年9月21日申请且名为“在基于处理器的系统中使用融合处理器核心执行分布式分支预测(PERFORMING DISTRIBUTED BRANCH PREDICTION USING FUSEDPROCESSOR CORES IN PROCESSOR-BASED SYSTEMS)”的美国专利申请案第15/271,403号的优先权,所述专利申请案的全文以引用的方式并入本文中。
技术领域
本发明的科技大体上涉及分支预测,且尤其涉及在能够进行处理器核心融合的基于处理器的系统中的分支预测。
背景技术
一些处理器架构能够进行“核心融合”,这为使多个个别处理器核心能够逻辑上“融合”且一起作为较高性能的单线程处理器而工作的特征。此类融合核心可向执行程序提供较多算术逻辑单元(arithmetic logic unit;ALU)及其它执行资源,而同时启用较大指令窗(即,为处理器可见的来自执行程序的一组指令)。核心融合在由基于块的处理器架构使用时可尤其有益。然而,为了充分地开拓由较大指令窗及融合执行资源启用的指令级平行度,必须使指令窗在程序的正确控制流程路径上保持充满指令。
为了处理此挑战,需要一种高度准确的分支预测器。分支预测器为尝试预测指令提取流中的即将到来的不连续性且在必要时尝试推测式地确定被预测为接替所述不连续性的目标指令块或指令的处理器电路或逻辑。举例来说,在基于块的架构中,分支预测器可预测哪一指令块将跟随当前执行指令块,而常规处理器架构中的分支预测器可预测可被分支指令转移程序控制的目标指令。通过使用分支预测器,处理器可能无需等待直到给定指令块或分支指令已完成执行,之后分别提取后续指令块或目标指令。
在支持核心融合的处理器架构中,每一处理器核心可包含其自己的分支预测器。为了在处理器核心作为融合核心而操作时改善预测准确度,可增加(例如通过提供较大预测器表)可用于每一分支预测器的资源。然而,使每一处理器核心的分支预测器资源过大可能并不实用的或可实行的。因此,需要提供可联合成较大、逻辑上统一且较准确的分布式分支预测器以供在核心融合模式下操作时使用的逐核心分支预测器。
发明内容
具体实施方式中所揭示的方面包含在基于处理器的系统中使用融合处理器核心执行分布式分支预测。就此来说,在一个方面中,提供一种分布式分支预测器作为支持核心融合的多个处理器核心。每一处理器核心在资源及配置方面相同,且当充当融合处理器核心时,每一个别处理器核心与其它处理器核心协调地操作以提供分布式分支预测。用于所述处理器核心的个别分支预测器是地址交错的,使得每一处理器核心负责执行分支预测且提取用于程序标识符子集(例如程序计数器(PC)或地址)的标头及/或指令。每一处理器核心经配置以从所述处理器核心中的另一者(或从其自身)接收程序标识符(例如预测的下一指令或指令块的PC)。所述处理器核心产生后续预测程序标识符,且将所述预测程序标识符(且任选地将全局历史指示符)转发至负责处置所述预测程序标识符且负责使用所述预测程序标识符以进行下一预测的适当处理器核心。这引起从不同处理器核心不规则地移动的分支预测序列,在本文中被称作“预测及提取波(predict-and-fetch wave)”。所述处理器核心还提取用于所述接收程序标识符的标头及/或一或多个指令,且将所述标头及/或所述一或多个指令发送至所述适当处理器核心以供执行。执行序列从不同处理器核心按次序继续进行,且在本文中被称作“促进波(promote wave)”。最后,所述处理器核心还确定哪一处理器核心将处置用于所述预测程序标识符的所述指令的执行(例如基于由所述标头指示的大小及/或用于所述接收程序标识符的所述一或多个指令的大小)。接着将那个信息作为指令窗跟踪器而发送至接收到所述预测程序标识符的处理器核心,因此可将用于所述预测程序标识符的所述指令发送至负责执行的正确处理器核心。
在本文中所揭示的一些方面中,负责预测用于给定程序标识符的后置项的每一处理器核心还被假定为负责提取与所述给定程序标识符相关联的所述一或多个指令的处理器。在此类方面中,可供提取指令的指令高速缓冲存储器被假定为跨越所述处理器核心以与预测责任被分布相同的方式交错,且因此,一旦接收到所述程序标识符,进行预测的所述处理器核心就还可开始指令提取。替代地,一些方面可规定:执行指令的所述处理器核心经配置以还从无论哪些保持指令的处理器核心提取所述指令。在此类方面中,所述预测处理器核心处所需要的最少信息包含关于由当前程序标识符使用的执行资源的数目的信息,其足以允许所述处理器核心计算所述预测程序标识符将在何处执行。所述预测处理器核心可接着通知所述执行处理器核心在所述预测程序标识符处开始而提取及执行。
在另一方面中,提供一种用于基于多核心处理器的系统的分布式分支预测器。所述分布式分支预测器包含多个处理器核心,其经配置以作为融合处理器核心而交互操作。所述多个处理器核心中的每一者包含分支预测器及多个预测及提取引擎(predict-and-fetch engine;PFE)。所述多个处理器核心中的每一处理器核心经配置以从所述多个处理器核心中的第二处理器核心接收与指令块相关联且对应于所述处理器核心的程序标识符作为接收程序标识符。每一处理器核心经进一步配置以分配所述多个PFE中的PFE以用于存储所述接收程序标识符。每一处理器核心还经配置以使用所述分支预测器预测后续程序标识符作为预测程序标识符。每一处理器核心经另外配置以基于所述预测程序标识符识别所述多个处理器核心中对应于所述预测程序标识符的处理器核心作为目标处理器核心。每一处理器核心经进一步配置以将所述目标处理器核心的标识符存储于所述PFE中。每一处理器核心还经配置以将所述预测程序标识符发送至所述目标处理器核心。每一处理器核心经另外配置以基于所述接收程序标识符发起以下各者中的一者的提取:用于所述指令块的标头,及所述指令块的一或多个指令。
在另一方面中,提供一种分布式分支预测器。所述分布式分支预测器包含用于由多个处理器核心中的处理器核心从所述多个处理器核心中的第二处理器核心接收与指令块相关联且对应于所述处理器核心的程序标识符作为接收程序标识符的装置。所述分布式分支预测器进一步包含用于分配多个PFE中的PFE以用于存储所述接收程序标识符的装置。所述分布式分支预测器还包含用于使用所述处理器核心的分支预测器预测后续程序标识符作为预测程序标识符的装置。所述分布式分支预测器另外包含用于基于所述预测程序标识符识别所述多个处理器核心中对应于所述预测程序标识符的处理器核心作为目标处理器核心的装置。所述分布式分支预测器进一步包含用于将所述目标处理器核心的标识符存储于所述PFE中的装置。所述分布式分支预测器还包含用于将所述预测程序标识符发送至所述目标处理器核心的装置。所述分布式分支预测器另外包含用于基于所述接收程序标识符发起以下各者中的一者的提取的装置:用于所述指令块的标头,及所述指令块的一或多个指令。
在另一方面中,提供一种用于执行分布式分支预测的方法。所述方法包含由多个处理器核心中的处理器核心从所述多个处理器核心中的第二处理器核心接收与指令块相关联且对应于所述处理器核心的程序标识符作为接收程序标识符。所述方法进一步包含分配多个PFE中的PFE以用于存储所述接收程序标识符。所述方法还包含使用所述处理器核心的分支预测器预测后续程序标识符作为预测程序标识符。所述方法另外包含基于所述预测程序标识符识别所述多个处理器核心中对应于所述预测程序标识符的处理器核心作为目标处理器核心。所述方法进一步包含将所述目标处理器核心的标识符存储于所述PFE中。所述方法还包含将所述预测程序标识符发送至所述目标处理器核心。所述方法另外包含基于所述接收程序标识符发起以下各者中的一者的提取:用于所述指令块的标头,及所述指令块的一或多个指令。
附图说明
图1为示范性的基于处理器的系统的框图,所述基于处理器的系统提供经配置以作为融合处理器核心而操作的多个处理器核心;
图2为绘示图1的基于处理器的系统的处理器核心的示范性元件的框图,所述处理器核心用于执行分布式分支预测;
图3为绘示图1及2的多个处理器核心之间的示范性通信流程的图解,所述通信流程用于在所述处理器核心之间传播预测及提取波以用于预测程序控制流程;
图4为绘示图1及2的多个处理器核心之间的示范性通信流程的图解,所述通信流程用于在所述处理器核心之间传播促进波以用于检索经提取数据且将经提取数据转发至处理器核心以供执行;
图5A及5B为绘示图1及2的多个处理器核心中的处理器核心的示范性操作的流程图,所述处理器核心用于传播预测及提取波;
图6A及6B为绘示图1及2的多个处理器核心中的处理器核心的示范性操作的流程图,所述处理器核心用于传播促进波;
图7为绘示图1及2的多个处理器核心中的处理器核心的示范性操作的流程图,所述处理器核心用于接收及存储经提取数据;
图8为绘示图1及2的多个处理器核心中的处理器核心的示范性操作的流程图,所述处理器核心用于检测及处置分支误预测;
图9为绘示图1及2的多个处理器核心中的处理器核心的示范性操作的流程图,所述处理器核心用于接收及处置清空信号;及
图10为示范性的基于处理器的系统的框图,所述基于处理器的系统可包含图1及2的多个处理器核心。
具体实施方式
现在参考附图来描述本发明的若干示范性方面。词语“示范性”在本文中用以意指“充当实例、例子或说明”。本文中被描述为“示范性”的任何方面未必被认作比其它方面优选或有利。
具体实施方式中所揭示的方面包含在基于处理器的系统中使用融合处理器核心执行分布式分支预测。如本文中所描述,个别处理器核心经配置以接收先前预测程序标识符,预测下一程序标识符,及提取用于执行的数据且将所述数据转发至适当处理器核心。就此来说,图1绘示示范性的基于处理器的系统100,基于处理器的系统100提供可经配置以作为单一融合处理器核心104而操作的多个处理器核心102(0)至102(X)。在一些方面中,基于处理器的系统100可涵盖已知数字逻辑元件、半导体电路、处理核心及/或存储器结构以及其它元件或其组合中的任一者。本文中所描述的方面并不限于任何特定布置的元件,且所揭示的技术可容易扩展至半导体裸片或封装上的各种结构及布局。应理解,基于处理器的系统100可包含本文中出于清楚起见而未绘示的额外元件。
如在图1中所见,处理器核心102(0)至102(X)中的每一者包含对应前端106(0)至106(X)、指令窗108(0)至108(X),及后端执行资源110(0)至110(X)。前端106(0)至106(X)包含用于提取及分派指令块或指令的资源,且提供相应分支预测器112(0)至112(X)。处理器核心102(0)至102(X)的指令窗108(0)至108(X)表示当前为处理器核心102(0)至102(X)可见的指令。处理器核心102(0)至102(X)的后端执行资源110(0)至110(X)可包含算术逻辑单元(ALU)及/或其它执行单元。
取决于基于处理器的系统100的基础架构,融合处理器核心104可经配置以对指令块(例如基于块的架构)或对个别指令(在常规架构的状况下)进行操作。因此,在基于块的架构中,融合处理器核心104可处理指令块114,指令块114包含可在无任何控制流程敏感度的情况下被提取及执行的一或多个顺序指令116。指令块114可进一步包含标头118,标头118含有指示例如在指令块114内存在多少指令116的元数据。基于块的架构中的分支预测仅在指令块之间的边界处被需要,且尝试预测后继指令块。与此对比,在常规架构中,融合处理器核心104可提取指令116,且可在所遇到的每一分支指令处执行分支预测。应理解,尽管本文中所描述的实例可参考基于块的架构,但本文中所描述的方法及设备还可应用于常规架构,且反之亦然。
当作为融合处理器核心104而操作时,处理器核心102(0)至102(X)的许多个别元件可逻辑上联接以充当单一元件。举例来说,指令窗108(0)108(X)可被视为单一融合指令窗120,且当处理器核心102(0)至102(X)作为融合处理器核心104而操作时,后端执行资源110(0)至110(X)可被并合成一组统一融合后端执行资源122。相似地,跨越处理器核心102(0)至102(X)而分布的分支预测器112(0)至112(X)可被融合以作为单一分布式分支预测器124而操作。分布式分支预测器124可能能够保持较多状态,这使分布式分支预测器124能够存储过去预测及结果的较多存储器,且改善未来预测。当作为分布式分支预测器124而操作时,分支预测器112(0)至112(X)的分支预测资源可为地址交错的,使得需要预测的分支指令或指令块的地址可由与那个地址相关联的特定分支预测器112(0)至112(X)处置。举例来说,可通过对分支预测器112(0)至112(X)的地址及数目X执行模量运算来选择分支预测器112(0)至112(X)。
在执行分支预测时,分支预测器112(0)至112(X)必须在未来继续进行预测以便填充融合指令窗120,而不等待先前预测分支的执行及解析。因此,分支预测器112(0)至112(X)的每一预测馈送下一预测,这又以相似方式馈送下一预测等等。由于上文所描述的分支预测器112(0)至112(X)的地址交错,服务于当前地址的处理器核心102(0)至102(X)将负责预测下一地址。因为分支预测是基于程序控制流程,所以此分支预测序列(在本文中被称作“预测及提取波”)在处理器核心102(0)至102(X)之间移动的次序可不规则。这与“促进波”或与处理器核心102(0)至102(X)提取及执行指令116或指令块114的序列形成对比。处理器核心102(0)至102(X)中的每一者用以提取及执行指令116或指令块114直到其资源被耗尽,此时使用下一处理器核心102(0)至102(X)。促进波因此按顺序通过处理器核心102(0)至102(X)继续进行,这会简化在遭遇异常、中断或误预测的情况下的融合处理器核心104的状态的恢复。
因此,使用分支预测器112(0)至112(X)管理分布式分支预测可能会提出数个挑战。第一挑战为预测及提取波及促进波的管理以及预测及提取波与促进波之间的通信。具体地说,处理器核心102(0)至102(X)应允许预测及提取波在处理器核心102(0)至102(X)之间跳跃,同时跟踪促进波的位置,使得可将预测地址转发至用于提取及执行关联指令116或指令块114的正确处理器核心102(0)至102(X)。另一挑战是起因于预测及提取波可独立于促进波而传播的事实。预测及提取波相比于可由促进波进行的处置可在未来指令流中进一步预测。因此,处理器核心102(0)至102(X)应能够确定促进波何时已停止(例如由于执行资源的缺乏或过度的指令提取或执行时间),且相应地停止预测及提取波。最后,应提供一种机制以使促进波能够处置预测及提取波的误预测。这可包含:停止当前预测及提取波;开始新的正确预测及提取波;及移除与促进波相关联且相比于误预测较新的全部状态。
就此来说,图2绘示图1的基于处理器的系统100的处理器核心102(0)至102(X)中的一者(在此实例中,处理器核心102(0))的示范性元件,所述处理器核心用于执行分布式分支预测。尽管图2中仅展示处理器核心102(0),但应理解,关于本文中所描述的元件,处理器核心102(0)至102(X)全部相同。
处理器核心102(0)的分支预测器112(0)提供分支预测器资源200,其可包含用于启用分支预测的预测器表以及其它结构及数据。在一些方面中,处理器核心102(0)可包含指令高速缓冲存储器202及标头高速缓冲存储器204。标头高速缓冲存储器204可用以从例如图1的标头118的指令块标头高速缓冲存储元数据。相似地,指令高速缓冲存储器202可高速缓冲存储指令块的实际指令,例如图1的一或多个指令116。在一些方面中,处理器核心102(0)可提供指令高速缓冲存储器202及标头高速缓冲存储器204作为统一指令/标头高速缓冲存储器。指令高速缓冲存储器202及标头高速缓冲存储器204可为地址交错的,使得指令块或指令的地址可确定处理器核心102(0)至102(X)中的哪一者将高速缓冲存储标头118或一或多个指令116。
处理器核心102(0)还提供用于管理在分布式分支预测期间发生的预测及提取波及促进波的结构。具体地说,处理器核心102(0)提供预测及提取引擎(PFE)206(0)至206(Y)、活动指令窗跟踪器218(0)至218(Z),及溢出指令窗跟踪器220(0)至220(Z)。下文依次描述这些结构中的每一者的内容,而下文关于图3及4更详细地论述每一结构在管理分布式分支预测方面的功能性。
PFE 206(0)至206(Y)表示用于保持与预测及提取波相关联的状态的处理器核心102(0)的硬件资源,且是由处理器核心102(0)针对所进行的每一分支预测按顺序分配。当无PFE 206(0)至206(Y)保持供分配时,处理器核心102(0)延迟预测及提取波至下一处理器核心102(0)至102(X)的传播。以此方式,PFE 206(0)至206(Y)可用以通过限制处理器核心102(0)被允许进行的控制流程推测的深度来调节预测及提取波。
由每一PFE 206(0)至206(Y)保持的状态包含为在对应分支预测被证明为不正确的情况下校正对应分支预测所需要的数据。如在图2中所见,PFE 206(0)至206(Y)中的每一者包含程序标识符208、全局历史指示符210、误预测校正数据212、标头118或一或多个指令116、下一处理器核心指示符214,及下一指令窗跟踪器指示符216。程序标识符208存储与由处理器核心102(0)接收的最近预测指令块或指令相关联的地址(例如程序计数器(PC))或其它标识符。全局历史指示符210存储逐渐导至当前状态的指令及/或分支的新近历史。在一些方面中,全局历史指示符210可包含指定数目个过去程序标识符的哈希,或对应于指定数目个过去分支指令且指示分支被采取还是未被采取的一系列位。因为由全局历史指示符210表示的历史跨越全部处理器核心102(0)至102(X)是全局的,所以全局历史指示符210是在处理器核心102(0)至102(X)之间传递。
PFE 206(0)至206(Y)中的每一者的误预测校正数据212跟踪跨越处理器核心102(0)至102(X)的分支预测器资源(例如分支预测器资源200)中的哪一者在误预测的情况下应被更新。在一些方面中,误预测校正数据212指定哪些预测器表及/或哪些预测器表条目应被校正以回滚误预测。每一PFE 206(0)至206(Y)还存储针对程序标识符208所提取的标头118或一或多个指令116,及指示将被发送下一预测程序标识符的处理器核心102(0)至102(X)中的一者的下一处理器核心指示符214。当促进波到达处理器核心102(0)时,下一指令窗跟踪器指示符216用以存储指示处理器核心102(0)至102(X)中的哪一者将执行针对程序标识符208所提取的一或多个指令116的数据。连同标头118或一或多个指令116一起,下一指令窗跟踪器指示符216用以计算处理器核心102(0)至102(X)中的哪一者的哪一执行资源将由下一预测程序标识符使用,且产生用于所述下一预测程序标识符的指令窗跟踪器。
处理器核心102(0)的活动指令窗跟踪器218(0)至218(Z)表示用于控制处理器核心102(0)的基础执行及指令提取资源的硬件资源。全局历史指示符210'、误预测校正数据212'及存储于其中的标头118'或一或多个指令116'在处理器核心102(0)为可用于执行的处理器核心102(0)至102(X)中的下一者时是由处理器核心102(0)接收,且被指派给下一可用顺序活动指令窗跟踪器218(0)至218(Z)。全局历史指示符210'有效地表示在正由处理器核心102(0)执行的程序标识符被预测时的全局历史的快照。此全局历史指示符210'可由处理器核心102(0)使用以在误预测的情况下开始新预测及提取波。
处理器核心102(0)的溢出指令窗跟踪器220(0)至220(Z)模仿活动指令窗跟踪器218(0)至218(Z),但不与处理器核心102(0)的提取或执行资源相关联。当将预测指令块或指令指派给处理器核心102(0),但不可得到所需数目个活动指令窗跟踪器218(0)至218(Z)时,溢出指令窗跟踪器220(0)至220(Z)用以保持状态数据。如果溢出指令窗跟踪器220(0)至220(Z)在使用中,那么处理器核心102(0)经配置以延迟预测及提取波的传播。以此方式,溢出指令窗跟踪器220(0)至220(Z)可用以调节预测及提取波。溢出指令窗跟踪器220(0)至220(Z)中的每一者提供全局历史指示符210”、误预测校正数据212”及标头118”或一或多个指令116”,其全部存储与活动指令窗跟踪器218(0)至218(Z)的全局历史指示符210'、误预测校正数据212'及标头118'或一或多个指令116'相同的数据。
为了绘示用于在处理器核心102(0)至102(X)之间传播预测及提取波以用于预测程序控制流程的图1及2的处理器核心102(0)至102(X)之间的示范性通信流程,提供图3。图3展示表示从点零(0)至点17的时间流的时间轴300,且还展示作为融合处理器核心而操作的处理器核心102(0)、102(1)及102(2)。现在将描述处理器核心102(0)至102(2)中的每一者随着预测及提取波传播的操作。
起初,处理器核心102(0)开始于被假定为应供开始执行的非推测式程序标识符(“PRG ID 1”)302(例如指令块或指令的PC)的程序标识符。出于此实例的目的,基于如上文所描述的地址交错,程序标识符302对应于处理器核心102(2),且因此处理器核心102(2)为用于程序标识符302的“目标处理器核心”。此外,对应于程序标识符302的标头118及一或多个指令116应被供应至处理器核心102(0)以供执行,因此处理器核心102(0)被视为用于程序标识符302的“执行处理器核心”。
在时间点零(0),处理器核心102(0)将程序标识符302发送至目标处理器核心102(2)。随同程序标识符302一起,处理器核心102(0)还可发送使处理器核心102(2)进行下一分支预测所必要的任何其它状态信息。就此来说,在图3的实例中,处理器核心102(0)发送全局历史指示符(“GH 1”)304,其将提供关于任何新近分支预测的数据。在一些方面中,可代替全局历史指示符304而维持及使用局部历史,或可根本不使用历史信息。
处理器核心102(2)负责产生在程序标识符302之后的下一分支预测,且将预测及提取波扩展至服务于预测指令块或指令的处理器核心102(0)至102(2)。因此,处理器核心102(2)分配可用PFE(例如图2的PFE 206(0)至206(Y))以跟踪预测及提取波的状态,以及为将用于接收程序标识符302的标头118或指令116转发至适当处理器核心102(0)至102(2)所需要的状态数据。处理器核心102(2)还可查找误预测校正数据212且将其存储于经分配PFE206(0)至206(Y)中,以有助于从误预测的恢复。处理器核心102(2)在程序标识符302到达处理器核心102(2)之后的短时间产生预测程序标识符(“PRG ID 2”)306。处理器核心102(2)还可将数据附加至接收全局历史指示符304以产生更新全局历史指示符(“GH 2”)308。处理器核心102(2)接下来将预测程序标识符306及全局历史指示符308发送至处理器核心102(1),其在此实例中为用于预测程序标识符306的目标处理器核心102(1)。处理器核心102(2)接着发起对应于接收程序标识符302的标头118或一或多个指令116的提取。
预测及提取波接着继续以相同方式在处理器核心102(0)至102(2)之间移动。在接收到程序标识符306及全局历史指示符308之后,处理器核心102(1)针对为将用于接收程序标识符302的标头118或指令116转发至适当处理器核心102(0)至102(2)且存储误预测校正数据212所需要的状态数据分配可用PFE(例如图2的PFE 206(0)至206(Y)中的PFE 206(0))。如在图3中所见,处理器核心102(1)还在程序标识符306到达处理器核心102(1)之后的短时间产生预测程序标识符(“PRG ID 3”)310。在一些方面中,处理器核心102(1)还可更新接收全局历史指示符308以产生全局历史指示符(“GH 3”)312。处理器核心102(1)接着将预测程序标识符310及全局历史指示符312发送至处理器核心102(0),其在此实例中为用于预测程序标识符310的目标处理器核心102(0)。处理器核心102(1)发起对应于接收程序标识符310的标头118或一或多个指令116的提取。
预测及提取波因此继续不衰退直到满足以下条件中的一者:处理器核心102(0)至102(2)中的一者处的最后PFE 206(0)至206(Y)被分配;处理器核心102(0)至102(2)中的一者检测到溢出指令窗跟踪器220(0)至220(Z)在使用中;或清空信号被接收。前两(2)种状况指示预测及提取波远远早于促进波而前进,且因此预测及提取波的传播将暂停直到发起条件已提升。在最后状况下,将发起清空恢复,且将重新开始预测及提取波。
图4为绘示图1及2的处理器核心102(0)至102(X)之间的示范性通信流程的图解,所述通信流程用于在处理器核心102(0)至102(X)之间传播促进波以用于检索经提取数据且将经提取数据转发至处理器核心102(0)至102(X)以供执行。类似于图3,图4展示作为融合处理器核心而操作的处理器核心102(0)、102(1)及102(2),及表示从点零(0)至点17的时间流的相同时间轴300。因此,应理解,图4所展示的通信流程与图3的通信流程并行地发生。现在将描述处理器核心102(0)至102(2)中的每一者随着促进波传播的操作。
在图4的实例中,除了如图3所展示而发送程序标识符302及全局历史指示符304之外,且与如图3所展示而发送程序标识符302及全局历史指示符304并行地,处理器核心102(0)还将指令窗跟踪器(“IWT 1”)400发送至处理器核心102(2)。前已述及,尽管处理器核心102(2)负责预测在接收程序标识符302之后的下一程序标识符306,但处理器核心102(2)并非将执行与接收程序标识符302相关联的指令或指令块的处理器核心。因此,指令窗跟踪器400包含用以向处理器核心102(2)通知由处理器核心102(2)针对程序标识符302所提取的数据应被发送至处理器核心102(0)的活动指令窗跟踪器218(0)至218(Z)以供处理器核心102(0)执行的数据。因此,在用于程序标识符302的经提取数据(“FD 1”)402被处理器核心102(2)检索之后,处理器核心102(2)将经提取数据402发送至处理器核心102(0)。在一些方面中,处理器核心102(2)还可结合经提取数据402而将全局历史指示符304发送至处理器核心102(0)。
处理器核心102(2)还基于经提取数据402计算应被发送下一批次的经提取数据(即,由处理器核心102(1)针对预测程序标识符306所提取的数据)的处理器核心102(0)至102(2)。举例来说,处理器核心102(2)可基于经提取数据402的大小(例如如果经提取数据402为一或多个指令)或由经提取数据402指示的大小(例如如果经提取数据402为用于指令块的标头)确定处理器核心102(0)仍具有可用执行资源。因此,处理器核心102(2)推断,不管处理器核心102(0)至102(2)中的哪一者检索下一批次的经提取数据,那个经提取数据皆应被发送至处理器核心102(0)以供执行。基于此推断,处理器核心102(2)将作为执行处理器核心102(0)的处理器核心102(0)的标识符存储于PFE 206(0)中。处理器核心102(2)将指令窗跟踪器(“IWT 2”)404发送至处理器核心102(1)(其负责预测在程序标识符302之后的下一程序标识符310,如在图3中所见)。
从此点向前,促进波以经提取数据变得可用于促进波当前到达的处理器核心102(0)至102(2)中的无论哪一者的速率继续进行。在图4的实例中,促进波已到达处理器核心102(1)。在接收到指示应被发送由处理器核心102(1)从处理器核心102(2)接收的针对程序标识符306所提取的数据的处理器核心102(0)至102(2)的指令窗跟踪器404后,处理器核心102(1)就发起对应于程序标识符306的经提取数据(“FD 2”)406的提取。当经提取数据406被处理器核心102(1)接收时,处理器核心102(1)将经提取数据406发送至处理器核心102(0),如由指令窗跟踪器404所指示。基于经提取数据406的大小或由经提取数据406指示的大小,处理器核心102(1)还确定应被发送对应于由图3中的处理器核心102(1)预测的程序标识符310的下一批次的经提取数据的处理器核心102(0)至102(2)。处理器核心102(1)因此产生指令窗跟踪器(“IWT 3”)408,且将其发送至处理器核心102(0),处理器核心102(0)负责预测在程序标识符310之后的下一程序标识符。
图4还绘示分支误预测的检测及处置。在图4中,假定由处理器核心102(2)产生的预测程序标识符306结果是不正确的。这被处理器核心102(0)检测,处理器核心102(0)已执行对应于先前程序标识符302的指令或指令块。为了向处理器核心102(2)通知预测是不正确的,处理器核心102(0)识别与误预测程序标识符306相关联的活动指令窗跟踪器218(0),且使用存储于活动指令窗跟踪器218(0)至218(Z)中的误预测校正数据212'以校正处理器核心102(2)的分支预测器112(2)的分支预测器资源220。
处理器核心102(0)还确定校正程序标识符(“C PRG ID”)410,且识别多个处理器核心102(0)至102(X)中的处理器核心(在此实例中,处理器核心102(1))作为用于校正程序标识符410的执行处理器核心102(1)。处理器核心102(0)将来自活动指令窗跟踪器218(0)的全局历史指示符210'以及校正程序标识符410发送至处理器核心102(1),其中将重新开始预测及提取波。
处理器核心102(0)接着将清空信号412传输至处理器核心102(1)、102(2)以定位及终止当前预测及提取波。在接收到清空信号412后,处理器核心102(1)及102(2)就清空存储相比于由清空信号412提供的存留期指示符414较新的经提取数据的任何活动指令窗跟踪器218(0)至218(Z)。在一些方面中,可存在同时活动的多个清空信号412,且因此处理器核心102(0)至102(2)可提供某一形式的仲裁以识别要清空的最旧数据。
为了绘示用于传播预测及提取波的图1及2的多个处理器核心102(0)至102(X)中的处理器核心(例如处理器核心102(2))的示范性操作,提供图5A及5B。出于清楚起见,在描述图5A及5B时参考图1至3的元件。在图5A中,操作开始于多个处理器核心102(0)至102(X)中的处理器核心102(2)从多个处理器核心102(0)至102(X)中的第二处理器核心102(0)接收与指令块114相关联且对应于处理器核心102(0)的程序标识符302作为接收程序标识符302(框500)。就此来说,处理器核心102(2)可在本文中被称作“用于由多个处理器核心中的处理器核心从多个处理器核心中的第二处理器核心接收与指令块相关联且对应于处理器核心的程序标识符作为接收程序标识符的装置”。在一些方面中,处理器核心102(2)还可结合接收程序标识符302而接收用于接收程序标识符302的全局历史指示符304(框502)。
处理器核心102(2)接着分配多个PFE 206(0)至206(Y)中的PFE 206(0)以用于存储接收程序标识符302(框504)。因此,处理器核心102(2)可在本文中被称作“用于分配多个PFE中的PFE以用于存储接收程序标识符的装置”。一些方面可规定:处理器核心102(2)还将用于接收程序标识符302的全局历史指示符304存储于PFE 206(0)中(框506)。处理器核心102(2)接下来使用处理器核心102(2)的分支预测器112(0)预测后续程序标识符306作为预测程序标识符306(框508)。因此,处理器核心102(2)可在本文中被称作“用于使用处理器核心的分支预测器预测后续程序标识符作为预测程序标识符的装置”。
处理器核心102(2)基于预测程序标识符306识别多个处理器核心102(0)至102(X)中对应于预测程序标识符306的处理器核心102(1)作为目标处理器核心102(1)(框510)。就此来说,处理器核心102(2)可在本文中被称作“用于基于预测程序标识符识别多个处理器核心中对应于预测程序标识符的处理器核心作为目标处理器核心的装置”。处理接着在图5B的框512处继续。
现在参看图5B,处理器核心102(2)将目标处理器核心102(1)的标识符存储于PFE206(0)中(框512)。因此,处理器核心102(2)可在本文中被称作“用于将目标处理器核心的标识符存储于PFE中的装置”。根据一些方面,处理器核心102(2)可确定溢出指令窗跟踪器(例如溢出指令窗跟踪器220(0))是否在由处理器核心102(1)使用(框514)。如果是,那么处理器核心102(2)可延迟将预测程序标识符306发送至目标处理器核心102(1),直到无溢出指令窗跟踪器220(0)在由处理器核心102(1)使用(框516)。如果处理器核心102(2)在决策框514处确定无溢出指令窗跟踪器220(0)在由处理器核心102(1)使用(或如果处理器核心102(1)未使用溢出指令窗跟踪器220(0)),那么处理器核心102(2)将预测程序标识符306发送至目标处理器核心102(1)(框518)。因此,处理器核心102(2)可在本文中被称作“用于将预测程序标识符发送至目标处理器核心的装置”。处理器核心102(2)接着基于接收程序标识符302发起以下各者中的一者的提取:用于指令块114的标头118,及指令块114的一或多个指令116(框520)。就此来说,处理器核心102(2)可在本文中被称作“用于基于接收程序标识符发起以下各者中的一者的提取的装置:用于指令块的标头,及指令块的一或多个指令”。
提供图6A及6B以绘示图1及2的多个处理器核心102(0)至102(X)中的处理器核心102(2)的示范性操作,处理器核心102(2)用于传播促进波。出于清楚起见,在描述图6A及6B时参考图1至4的元件。图6A中的操作开始于处理器核心102(2)接收识别多个处理器核心102(0)至102(X)中的处理器核心102(0)作为用于接收程序标识符302的执行处理器核心102(0)的指令窗跟踪器400(框600)。因此,处理器核心102(2)可在本文中被称作“用于由处理器核心接收识别多个处理器核心中的处理器核心作为用于接收程序标识符的执行处理器核心的指令窗跟踪器的装置”。处理器核心102(2)将执行处理器核心102(0)的标识符存储于PFE 206(0)中(框602)。因此,处理器核心102(2)可在本文中被称作“用于将执行处理器核心的标识符存储于PFE中的装置”。
处理器核心102(2)接着接收以下各者中的一者作为经提取数据402:用于指令块114的标头118,及指令块114的一或多个指令116(框604)。就此来说,处理器核心102(2)可在本文中被称作“用于接收以下各者中的一者作为经提取数据的装置:用于指令块的标头,及指令块的一或多个指令”。处理器核心102(2)将经提取数据402发送至用于接收程序标识符302的执行处理器核心102(0)(框606)。因此,处理器核心102(2)可在本文中被称作“用于将经提取数据发送至用于接收程序标识符的执行处理器核心的装置”。在一些方面中,处理器核心102(2)还可结合经提取数据402而将全局历史指示符304发送至执行处理器核心102(0)(框608)。处理接着在图6B的框610处继续。
转至图6B,处理器核心102(2)接下来识别多个处理器核心102(0)至102(X)中的处理器核心102(0)作为用于预测程序标识符306的执行处理器核心102(0)(框610)。因此,处理器核心102(2)可在本文中被称作“用于识别多个处理器核心中的处理器核心作为用于预测程序标识符的执行处理器核心的装置”。一些方面可规定:处理器核心102(2)还基于预测程序标识符306更新全局历史指示符308(框612)。处理器核心102(2)可接着将全局历史指示符308存储于指令窗跟踪器404中(框614)。
处理器核心102(2)接着基于PFE 206(0)将识别用于预测程序标识符306的执行处理器核心102(0)的指令窗跟踪器404发送至目标处理器核心102(1)(框616)。就此来说,处理器核心102(2)可在本文中被称作“用于基于PFE将识别用于预测程序标识符的执行处理器核心的指令窗跟踪器发送至目标处理器核心的装置”。处理器核心102(2)解除分配PFE206(0)(框618)。因此,处理器核心102(2)可在本文中被称作“用于解除分配PFE的装置”。
为了绘示用于接收及存储经提取数据以供执行的图1及2的多个处理器核心102(0)至102(X)中的处理器核心102(0)的示范性操作,提供图7。出于清楚起见,在描述图7时参考图1至4的元件。在图7中,操作开始于处理器核心102(0)接收用于对应于处理器核心102(0)的程序标识符302的经提取数据402(框700)。根据一些方面,处理器核心102(0)还可结合经提取数据402而接收全局历史指示符304(框702)。处理器核心102(0)的一些方面可接下来确定多个活动指令窗跟踪器218(0)至218(Z)中的全部活动指令窗跟踪器218(0)至218(Z)是否已被分配(框704)。如果是,那么处理器核心102(0)分配多个溢出指令窗跟踪器220(0)至220(Z)中的溢出指令窗跟踪器220(0)以存储经提取数据402(框706)。如果处理器核心102(0)在决策框704处确定并非全部活动指令窗跟踪器218(0)至218(Z)已被分配(或如果处理器核心102(0)未使用溢出指令窗跟踪器220(0)至220(Z)),那么处理器核心102(0)分配多个活动指令窗跟踪器218(0)至218(Z)中的活动指令窗跟踪器218(0)以存储经提取数据402(框708)。在一些方面中,处理器核心102(0)还可将全局历史指示符304存储于活动指令窗跟踪器218(0)至218(Z)中(框710)。
图8绘示图1及2的多个处理器核心102(0)至102(X)中的处理器核心102(0)的示范性操作,处理器核心102(0)用于检测及处置分支误预测。出于清楚起见,在描述图8时参考图1至4的元件。图8中的操作开始于处理器核心102(0)检测误预测程序标识符306(框800)。作为响应,处理器核心102(0)识别与误预测程序标识符306相关联的活动指令窗跟踪器218(0)(框802)。处理器核心102(0)基于活动指令窗跟踪器218(0)的误预测校正数据212更新多个处理器核心102(0)至102(X)中的处理器核心102(2)的分支预测器112(2)的分支预测资源200(框804)。
处理器核心102(0)接下来确定校正程序标识符410(框806)。处理器核心102(0)识别多个处理器核心102(0)至102(X)中的处理器核心102(1)作为用于校正程序标识符410的执行处理器核心102(1)(框808)。由处理器核心102(1)将来自活动指令窗跟踪器218(0)的全局历史指示符210'以及校正程序标识符410发送至执行处理器核心102(0)(框810)。处理器核心102(0)接着将清空信号412发出至多个处理器核心102(0)至102(X),清空信号412包括用于误预测程序标识符306的存留期指示符414(框812)。
为了绘示用于接收及处置清空信号412的图1及2的多个处理器核心102(0)至102(X)中的处理器核心102(1)的示范性操作,提供图9。出于清楚起见,在描述图9时参考图1至4的元件。在图9中,处理器核心102(1)接收包括用于误预测程序标识符306的存留期指示符414的清空信号412(框900)。处理器核心102(1)接着基于存留期指示符414确定处理器核心102(1)是否存储与相比于误预测程序标识符306较新的经提取数据402相关联的一或多个活动指令窗跟踪器218(0)至218(Z)(框902)。如果是,那么处理器核心102(1)清空一或多个活动指令窗跟踪器218(0)至218(Z)(框904)。否则,处理器核心102(1)继续处理(框906)。应理解,用于接收及处置清空信号412的操作不仅由处理器核心102(1)进行,而且由接收清空信号412的全部处理器核心102(0)至102(X)进行。
根据本文中所揭示的方面的在基于处理器的系统中使用融合处理器核心执行分布式分支预测可提供于或集成至任何基于处理器的装置中。在无限制的情况下,实例包含机顶盒、娱乐单元、导航装置、通信装置、固定位置数据单元、移动位置数据单元、全球定位系统(GPS)装置、移动电话、蜂窝电话、智能电话、会话发起协议(SIP)电话、平板计算机、平板手机、服务器、计算机、便携式计算机、移动计算装置、可穿戴式计算装置(例如智能手表、健康或保健跟踪器、眼用佩戴品等等)、桌上型计算机、个人数字助理(PDA)、监视器、计算机监视器、电视、调谐器、无线电、卫星无线电、音乐播放器、数字音乐播放器、便携式音乐播放器、数字视频播放器、视频播放器、数字视频光盘(DVD)播放器、便携式数字视频播放器、汽车、车辆组件、航电系统、无人机,及多旋翼直升机(multicopter)。
就此来说,图10绘示基于处理器的系统1000的实例,其可对应于图1的基于处理器的系统100,且包含图1及2所绘示的处理器核心102(0)至102(X)。在此实例中,基于处理器的系统1000包含一或多个中央处理单元(CPU)1002,其各自包含一或多个处理器1004。在一些方面中,一或多个处理器1004可对应于图1及2的处理器核心102(0)至102(X)。CPU 1002可为主控装置。CPU 1002可具有耦合至处理器1004以用于快速存取暂时存储数据的高速缓冲存储器1006。CPU 1002耦合至系统总线1008且可将包含于基于处理器的系统1000中的主控装置与从属装置相互耦合。如所熟知,CPU 1002通过经由系统总线1008交换地址、控制及数据信息而与这些其它装置通信。举例来说,CPU 1002可将总线事务请求传达至作为从属装置的实例的存储器控制器1010。
其它主控装置及从属装置可连接至系统总线1008。如图10所绘示,作为实例,这些装置可包含存储器系统1012、一或多个输入装置1014、一或多个输出装置1016、一或多个网络接口装置1018,及一或多个显示控制器1020。输入装置1014可包含任何类型的输入装置,包含但不限于输入按键、开关、语音处理器等等。输出装置1016可包含任何类型的输出装置,包含但不限于音频、视频、其它视觉指示器等等。网络接口装置1018可为经配置以允许至及从网络1022的数据交换的任何装置。网络1022可为任何类型的网络,包含但不限于有线或无线网络、私用或公用网络、局域网(LAN)、广域网(WLAN),及互联网。网络接口装置1018可经配置以支持任何类型的所要通信协议。存储器系统1012可包含一或多个存储器单元1024(0)至1024(N)。
CPU 1002还可经配置以经由系统总线1008存取显示控制器1020以控制发送至一或多个显示器1026的信息。显示控制器1020将信息发送至显示器1026以经由一或多个视频处理器1028而显示,视频处理器1028将待显示的信息处理成适合于显示器1026的格式。显示器1026可包含任何类型的显示器,包含但不限于阴极射线管(CRT)、液晶显示器(LCD)、等离子体显示器等等。
所属领域技术人员应进一步了解,结合本文中所揭示的方面所描述的各种说明性逻辑块、模块、电路及算法可被实施为电子硬件、存储于存储器中或存储于另一计算机可读媒体中且由处理器或其它处理装置执行的指令,或这两者的组合。作为实例,本文中所描述的主控装置及从属装置可用于任何电路、硬件组件、集成电路(IC)或IC芯片中。本文中所揭示的存储器可为任何类型及大小的存储器,且可经配置以存储任何类型的所要信息。为了清楚地说明此互换性,上文已大体上在功能性方面描述了各种说明性组件、块、模块、电路及步骤。如何实施此类功能性取决于特定应用、设计选择,及/或强加于整个系统的设计约束。所属领域技术人员可针对每一特定应用而以变化的方式实施所描述功能性,但此类实施决策不应被解释为造成脱离本发明的范围。
可运用经设计以执行本文中所描述的功能的处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件或其任何组合来实施或执行结合本文中所揭示的实施例所描述的各种说明性逻辑块、模块及电路。处理器可为微处理器,但在替代例中,处理器可为任何常规处理器、控制器、微控制器或状态机。处理器还可被实施为计算装置的组合,例如DSP与微处理器的组合、多个微处理器、结合DSP核心的一或多个微处理器,或任何其它此类配置。
本文中所揭示的方面可以硬件及以指令予以实施,指令存储于硬件中,且可驻留于例如随机存取存储器(RAM)、闪速存储器、只读存储器(ROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、动态RAM(DRAM)、同步DRAM(SDRAM)、硬盘、可卸除式磁盘、CD-ROM或所属领域中所知的任何其它形式的计算机可读媒体中。示范性存储媒体耦合至处理器,使得处理器可从存储媒体读取信息及将信息写入至存储媒体。在替代例中,存储媒体可与处理器成整体。处理器及存储媒体可驻留于ASIC中。ASIC可驻留于远程站中。在替代例中,处理器及存储媒体可作为离散组件而驻留于远程站、基站或服务器中。
还应注意,描述了本文中在任何示范性方面中所描述的操作步骤以提供实例及论述。可以不同于所说明的集合的众多不同集合执行所描述的操作。此外,实际上可以数个不同步骤执行单一操作步骤中所描述的操作。另外,可组合示范性方面中所论述的一或多个操作步骤。应理解,流程图中所绘示的操作步骤可经受众多不同修改,这对于所属领域技术人员来说将容易显而易见。所属领域技术人员还应理解,可使用多种不同科技及技术中的任一者表示信息及信号。举例来说,可通过电压、电流、电磁波、磁场或磁性粒子、光场或光学粒子或其任何组合来表示可贯穿以上描述所参考的数据、指令、命令、信息、信号、位、符号及码片。
提供本发明的先前描述以使任何所属领域技术人员皆可制作或使用本发明。在不脱离本发明的精神或范围的情况下,对本发明的各种修改对于所属领域技术人员来说将容易显而易见,且本文中所定义的一般原理可应用于其它变化。因此,本发明并不意图限于本文中所描述的实例及设计,而应符合与本文中所揭示的原理及新颖特征相一致的最广泛范围。

Claims (28)

1.一种用于基于多核心处理器的系统的分布式分支预测器,其包括:
多个处理器核心,其经配置以作为融合处理器核心而交互操作,且各自包括:
分支预测器;及
多个预测及提取引擎PFE;且
所述多个处理器核心中的每一处理器核心经配置以进行以下操作:
从所述多个处理器核心中的第二处理器核心接收与指令块相关联且对应于所述处理器核心的程序标识符作为接收程序标识符;
分配所述多个PFE中的PFE以用于存储所述接收程序标识符;
使用所述分支预测器预测后续程序标识符作为预测程序标识符;
基于所述预测程序标识符识别所述多个处理器核心中对应于所述预测程序标识符的处理器核心作为目标处理器核心;
将所述目标处理器核心的标识符存储于所述PFE中;
将所述预测程序标识符发送至所述目标处理器核心;及
基于所述接收程序标识符发起以下各者中的一者的提取:用于所述指令块的标头,及所述指令块的一或多个指令。
2.根据权利要求1所述的分布式分支预测器,其中所述多个处理器核心中的每一处理器核心经进一步配置以进行以下操作:
接收识别所述多个处理器核心中的处理器核心作为用于所述接收程序标识符的执行处理器核心的指令窗跟踪器;
将所述执行处理器核心的标识符存储于所述PFE中;
接收以下各者中的所述一者作为经提取数据:用于所述指令块的所述标头,及所述指令块的所述一或多个指令;
将所述经提取数据发送至用于所述接收程序标识符的所述执行处理器核心;
识别所述多个处理器核心中的处理器核心作为用于所述预测程序标识符的执行处理器核心;
基于所述PFE将识别用于所述预测程序标识符的所述执行处理器核心的指令窗跟踪器发送至所述目标处理器核心;及
解除分配所述PFE。
3.根据权利要求2所述的分布式分支预测器,其中所述多个处理器核心中的每一处理器核心经配置以基于所述接收程序标识符与所述预测程序标识符之间的数个指令识别所述多个处理器核心中的所述处理器核心作为用于所述预测程序标识符的所述执行处理器核心。
4.根据权利要求2所述的分布式分支预测器,其中所述多个处理器核心中的每一处理器核心经进一步配置以进行以下操作:
结合所述接收程序标识符而接收用于所述接收程序标识符的全局历史指示符;
将用于所述接收程序标识符的所述全局历史指示符存储于所述PFE中;
结合所述经提取数据而将所述全局历史指示符发送至用于所述接收程序标识符的所述执行处理器核心;
基于所述预测程序标识符更新所述全局历史指示符;及
在发送用于所述预测程序标识符的所述指令窗跟踪器之前,将所述全局历史指示符存储于用于所述预测程序标识符的所述指令窗跟踪器中。
5.根据权利要求2所述的分布式分支预测器,其中:
所述多个处理器核心中的每一处理器核心进一步包括多个活动指令窗跟踪器;且
所述多个处理器核心中的每一处理器核心经进一步配置以进行以下操作:
接收用于对应于所述处理器核心的程序标识符的经提取数据;及
分配所述多个活动指令窗跟踪器中的活动指令窗跟踪器以存储所述经提取数据。
6.根据权利要求5所述的分布式分支预测器,其中:
所述多个处理器核心中的每一处理器核心进一步包括多个溢出指令窗跟踪器;
所述多个处理器核心中的每一处理器核心经进一步配置以在分配所述活动指令窗跟踪器之前进行以下操作:
确定所述多个活动指令窗跟踪器中的全部活动指令窗跟踪器是否已被分配;及
响应于确定所述多个活动指令窗跟踪器中的全部活动指令窗跟踪器已被分配,分配所述多个溢出指令窗跟踪器中的溢出指令窗跟踪器以存储所述经提取数据;且
所述多个处理器核心中的每一处理器核心经配置以响应于确定所述多个活动指令窗跟踪器中并非全部活动指令窗跟踪器已被分配而分配所述多个活动指令窗跟踪器中的所述活动指令窗跟踪器以存储所述经提取数据。
7.根据权利要求6所述的分布式分支预测器,其中:
所述多个处理器核心中的每一处理器核心经进一步配置以在将所述预测程序标识符发送至所述目标处理器核心之前进行以下操作:
确定溢出指令窗跟踪器是否在由所述目标处理器核心使用;及
响应于确定溢出指令窗跟踪器在由所述目标处理器核心使用,延迟将所述预测程序标识符发送至所述目标处理器核心,直到无溢出指令窗跟踪器在由所述目标处理器核心使用;且
所述多个处理器核心中的每一处理器核心经配置以响应于确定无溢出指令窗跟踪器在由所述目标处理器核心使用而将所述预测程序标识符发送至所述目标处理器核心。
8.根据权利要求5所述的分布式分支预测器,其中所述多个处理器核心中的每一处理器核心经进一步配置以进行以下操作:
结合所述经提取数据而接收全局历史指示符;及
将所述全局历史指示符存储于所述活动指令窗跟踪器中。
9.根据权利要求8所述的分布式分支预测器,其中所述多个处理器核心中的每一处理器核心经进一步配置以进行以下操作:
检测误预测程序标识符;
响应于检测到所述误预测程序标识符,识别与所述误预测程序标识符相关联的活动指令窗跟踪器;
基于所述活动指令窗跟踪器的误预测校正数据更新所述多个处理器核心中的处理器核心的分支预测器的分支预测资源;
确定校正程序标识符;
识别所述多个处理器核心中的处理器核心作为用于所述校正程序标识符的执行处理器核心;
将来自所述活动指令窗跟踪器的所述全局历史指示符以及所述校正程序标识符发送至所述执行处理器核心;及
将清空信号发出至所述多个处理器核心,所述清空信号包括用于所述误预测程序标识符的存留期指示符。
10.根据权利要求9所述的分布式分支预测器,其中所述多个处理器核心中的每一处理器核心经进一步配置以进行以下操作:
接收包括用于所述误预测程序标识符的所述存留期指示符的所述清空信号;
基于所述存留期指示符确定所述处理器核心是否存储与相比于所述误预测程序标识符较新的经提取数据相关联的一或多个活动指令窗跟踪器;及
响应于确定所述处理器核心存储与相比于所述误预测程序标识符较新的经提取数据相关联的一或多个活动指令窗跟踪器,清空所述一或多个活动指令窗跟踪器。
11.根据权利要求1所述的分布式分支预测器,其中:
所述多个处理器核心中的每一处理器核心进一步包括地址交错指令高速缓冲存储器;且
所述多个处理器核心中的每一处理器核心经配置以通过存取所述地址交错指令高速缓冲存储器发起以下各者中的所述一者的所述提取:用于所述指令块的所述标头,及所述指令的所述一或多个指令。
12.根据权利要求1所述的分布式分支预测器,其中:
所述多个处理器核心中的每一处理器核心经进一步配置以在分配所述多个PFE中的所述PFE以用于存储所述接收程序标识符之前进行以下操作:
确定所述多个PFE中的PFE是否可用;及
响应于确定所述多个PFE中无PFE可用,延迟将所述预测程序标识符发送至所述目标处理器核心,直到所述多个PFE中的PFE变得可用;且
所述多个处理器核心中的每一处理器核心经配置以响应于确定所述多个PFE中的PFE可用而分配所述多个PFE中的所述PFE以用于存储所述接收程序标识符。
13.根据权利要求1所述的分布式分支预测器,其集成至集成电路IC中。
14.根据权利要求1所述的分布式分支预测器,其集成至选自由以下各者组成的群组的装置中:机顶盒;娱乐单元;导航装置;通信装置;固定位置数据单元;移动位置数据单元;全球定位系统GPS装置;移动电话;蜂窝电话;智能电话;会话发起协议SIP电话;平板计算机;平板手机;服务器;计算机;便携式计算机;移动计算装置;可穿戴式计算装置(例如智能手表、健康或保健跟踪器、眼用佩戴品等等);桌上型计算机;个人数字助理PDA;监视器;计算机监视器;电视;调谐器;无线电;卫星无线电;音乐播放器;数字音乐播放器;便携式音乐播放器;数字视频播放器;视频播放器;数字视频光盘DVD播放器;便携式数字视频播放器;汽车;车辆组件;航电系统;无人机;及多旋翼直升机。
15.一种分布式分支预测器,其包括:
用于由多个处理器核心中的处理器核心从所述多个处理器核心中的第二处理器核心接收与指令块相关联且对应于所述处理器核心的程序标识符作为接收程序标识符的装置;
用于分配多个预测及提取引擎PFE中的PFE以用于存储所述接收程序标识符的装置;
用于使用所述处理器核心的分支预测器预测后续程序标识符作为预测程序标识符的装置;
用于基于所述预测程序标识符识别所述多个处理器核心中对应于所述预测程序标识符的处理器核心作为目标处理器核心的装置;
用于将所述目标处理器核心的标识符存储于所述PFE中的装置;
用于将所述预测程序标识符发送至所述目标处理器核心的装置;及
用于基于所述接收程序标识符发起以下各者中的一者的提取的装置:用于所述指令块的标头,及所述指令块的一或多个指令。
16.根据权利要求15所述的分布式分支预测器,其进一步包括:
用于由所述处理器核心接收识别所述多个处理器核心中的处理器核心作为用于所述接收程序标识符的执行处理器核心的指令窗跟踪器的装置;
用于将所述执行处理器核心的标识符存储于所述PFE中的装置;
用于接收以下各者中的所述一者作为经提取数据的装置:用于所述指令块的所述标头,及所述指令块的所述一或多个指令;
用于将所述经提取数据发送至用于所述接收程序标识符的所述执行处理器核心的装置;
用于识别所述多个处理器核心中的处理器核心作为用于所述预测程序标识符的执行处理器核心的装置;
用于基于所述PFE将识别用于所述预测程序标识符的所述执行处理器核心的指令窗跟踪器发送至所述目标处理器核心的装置;及
用于解除分配所述PFE的装置。
17.一种用于执行分布式分支预测的方法,其包括:
由多个处理器核心中的处理器核心从所述多个处理器核心中的第二处理器核心接收与指令块相关联且对应于所述处理器核心的程序标识符作为接收程序标识符;
分配多个预测及提取引擎PFE中的PFE以用于存储所述接收程序标识符;
使用所述处理器核心的分支预测器预测后续程序标识符作为预测程序标识符;
基于所述预测程序标识符识别所述多个处理器核心中对应于所述预测程序标识符的处理器核心作为目标处理器核心;
将所述目标处理器核心的标识符存储于所述PFE中;
将所述预测程序标识符发送至所述目标处理器核心;及
基于所述接收程序标识符发起以下各者中的一者的提取:用于所述指令块的标头,及所述指令块的一或多个指令。
18.根据权利要求17所述的方法,其进一步包括:
由所述处理器核心接收识别所述多个处理器核心中的处理器核心作为用于所述接收程序标识符的执行处理器核心的指令窗跟踪器;
将所述执行处理器核心的标识符存储于所述PFE中;
接收以下各者中的所述一者作为经提取数据:用于所述指令块的所述标头,及所述指令块的所述一或多个指令;
将所述经提取数据发送至用于所述接收程序标识符的所述执行处理器核心;
识别所述多个处理器核心中的处理器核心作为用于所述预测程序标识符的执行处理器核心;
基于所述PFE将识别用于所述预测程序标识符的所述执行处理器核心的指令窗跟踪器发送至所述目标处理器核心;及
解除分配所述PFE。
19.根据权利要求18所述的方法,其中识别所述多个处理器核心中的所述处理器核心作为用于所述预测程序标识符的所述执行处理器核心是基于所述接收程序标识符与所述预测程序标识符之间的数个指令。
20.根据权利要求18所述的方法,其进一步包括:
结合所述接收程序标识符而接收用于所述接收程序标识符的全局历史指示符;
将用于所述接收程序标识符的所述全局历史指示符存储于所述PFE中;
结合所述经提取数据而将所述全局历史指示符发送至用于所述接收程序标识符的所述执行处理器核心;
基于所述预测程序标识符更新所述全局历史指示符;及
在发送用于所述预测程序标识符的所述指令窗跟踪器之前,将所述全局历史指示符存储于用于所述预测程序标识符的所述指令窗跟踪器中。
21.根据权利要求18所述的方法,其进一步包括:
接收用于对应于所述处理器核心的程序标识符的经提取数据;及
分配多个活动指令窗跟踪器中的活动指令窗跟踪器以存储所述经提取数据。
22.根据权利要求21所述的方法,其进一步包括在分配所述活动指令窗跟踪器之前进行以下操作:
确定所述多个活动指令窗跟踪器中的全部活动指令窗跟踪器是否已被分配;及
响应于确定所述多个活动指令窗跟踪器中的全部活动指令窗跟踪器已被分配,分配多个溢出指令窗跟踪器中的溢出指令窗跟踪器以存储所述经提取数据;
其中分配所述多个活动指令窗跟踪器中的所述活动指令窗跟踪器以存储所述经提取数据是响应于确定所述多个活动指令窗跟踪器中并非全部活动指令窗跟踪器已被分配。
23.根据权利要求22所述的方法,其进一步包括在将所述预测程序标识符发送至所述目标处理器核心之前进行以下操作:
确定溢出指令窗跟踪器是否在由所述处理器核心使用;及
响应于确定溢出指令窗跟踪器在由所述处理器核心使用,延迟将所述预测程序标识符发送至所述目标处理器核心,直到无溢出指令窗跟踪器在由所述处理器核心使用;
其中将所述预测程序标识符发送至所述目标处理器核心是响应于确定无溢出指令窗跟踪器在由所述处理器核心使用。
24.根据权利要求21所述的方法,其进一步包括:
结合所述经提取数据而接收全局历史指示符;及
将所述全局历史指示符存储于所述活动指令窗跟踪器中。
25.根据权利要求24所述的方法,其进一步包括:
检测误预测程序标识符;
响应于检测到所述误预测程序标识符,识别与所述误预测程序标识符相关联的活动指令窗跟踪器;
基于所述活动指令窗跟踪器的误预测校正数据更新所述多个处理器核心中的处理器核心的分支预测器的分支预测资源;
确定校正程序标识符;
识别所述多个处理器核心中的处理器核心作为用于所述校正程序标识符的执行处理器核心;
将来自所述活动指令窗跟踪器的所述全局历史指示符以及所述校正程序标识符发送至所述执行处理器核心;及
将清空信号发出至所述多个处理器核心,所述清空信号包括用于所述误预测程序标识符的存留期指示符。
26.根据权利要求25所述的方法,其进一步包括:
接收包括用于所述误预测程序标识符的所述存留期指示符的所述清空信号;
基于所述存留期指示符确定所述处理器核心是否存储与相比于所述误预测程序标识符较新的经提取数据相关联的一或多个活动指令窗跟踪器;及
响应于确定所述处理器核心存储与相比于所述误预测程序标识符较新的经提取数据相关联的一或多个活动指令窗跟踪器,清空所述一或多个活动指令窗跟踪器。
27.根据权利要求17所述的方法,其中发起以下各者中的所述一者的所述提取包括存取所述处理器核心的地址交错指令高速缓冲存储器:用于所述指令块的所述标头,及所述指令块的所述一或多个指令。
28.根据权利要求17所述的方法,其进一步包括在分配所述多个PFE中的所述PFE以用于存储所述接收程序标识符之前进行以下操作:
确定所述多个PFE中的PFE是否可用;及
响应于确定所述多个PFE中无PFE可用,延迟将所述预测程序标识符发送至所述目标处理器核心,直到所述多个PFE中的PFE变得可用;
其中分配所述多个PFE中的所述PFE以用于存储所述接收程序标识符是响应于确定所述多个PFE中的PFE可用。
CN201780057468.6A 2016-09-21 2017-08-24 在基于处理器的系统中使用融合处理器核心执行分布式分支预测 Pending CN109716293A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/271,403 US20180081690A1 (en) 2016-09-21 2016-09-21 Performing distributed branch prediction using fused processor cores in processor-based systems
US15/271,403 2016-09-21
PCT/US2017/048378 WO2018057222A1 (en) 2016-09-21 2017-08-24 Performing distributed branch prediction using fused processor cores in processor-based systems

Publications (1)

Publication Number Publication Date
CN109716293A true CN109716293A (zh) 2019-05-03

Family

ID=59772801

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780057468.6A Pending CN109716293A (zh) 2016-09-21 2017-08-24 在基于处理器的系统中使用融合处理器核心执行分布式分支预测

Country Status (6)

Country Link
US (1) US20180081690A1 (zh)
EP (1) EP3516507A1 (zh)
CN (1) CN109716293A (zh)
BR (1) BR112019005230A2 (zh)
TW (1) TW201814502A (zh)
WO (1) WO2018057222A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110109705A (zh) * 2019-05-14 2019-08-09 核芯互联科技(青岛)有限公司 一种支持嵌入式边缘计算的超标量处理器分支预测方法
WO2021000647A1 (zh) * 2019-07-01 2021-01-07 中兴通讯股份有限公司 一种业务保护方法、网络设备、分布式业务处理系统及存储介质

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109101276B (zh) * 2018-08-14 2020-05-05 阿里巴巴集团控股有限公司 在cpu中执行指令的方法
US11494191B1 (en) 2021-05-18 2022-11-08 Microsoft Technology Licensing, Llc Tracking exact convergence to guide the recovery process in response to a mispredicted branch

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030196075A1 (en) * 1999-12-14 2003-10-16 Intel Corporation Memory disambiguation for large instruction windows
US20090204797A1 (en) * 2008-02-12 2009-08-13 International Business Machines Corporation Method and system for mitigating lookahead branch prediction latency with branch presence prediction at the time of instruction fetching
US20100146249A1 (en) * 2008-12-05 2010-06-10 Intellectual Ventures Management, Llc Control-Flow Prediction Using Multiple Independent Predictors
CN102934075A (zh) * 2010-06-28 2013-02-13 高通股份有限公司 用于使用预先通知技术改变程序的顺序流程的方法和设备
CN105183449A (zh) * 2009-09-09 2015-12-23 德克萨斯系统大学董事会 提供分布式判定预测的方法和系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW510532U (en) * 2001-07-25 2002-11-11 Wen-Chen Wei Flexible heat tube structure
US20090020479A1 (en) * 2007-07-19 2009-01-22 Gvs Gesellschaft Fur Verwertungssysteme Gmbh Device and method for treatment of waste products including feces
US20100014624A1 (en) * 2008-07-17 2010-01-21 Global Nuclear Fuel - Americas, Llc Nuclear reactor components including material layers to reduce enhanced corrosion on zirconium alloys used in fuel assemblies and methods thereof
US9442736B2 (en) * 2013-08-08 2016-09-13 Globalfoundries Inc Techniques for selecting a predicted indirect branch address from global and local caches

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030196075A1 (en) * 1999-12-14 2003-10-16 Intel Corporation Memory disambiguation for large instruction windows
US20090204797A1 (en) * 2008-02-12 2009-08-13 International Business Machines Corporation Method and system for mitigating lookahead branch prediction latency with branch presence prediction at the time of instruction fetching
US20100146249A1 (en) * 2008-12-05 2010-06-10 Intellectual Ventures Management, Llc Control-Flow Prediction Using Multiple Independent Predictors
CN105183449A (zh) * 2009-09-09 2015-12-23 德克萨斯系统大学董事会 提供分布式判定预测的方法和系统
CN102934075A (zh) * 2010-06-28 2013-02-13 高通股份有限公司 用于使用预先通知技术改变程序的顺序流程的方法和设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110109705A (zh) * 2019-05-14 2019-08-09 核芯互联科技(青岛)有限公司 一种支持嵌入式边缘计算的超标量处理器分支预测方法
WO2021000647A1 (zh) * 2019-07-01 2021-01-07 中兴通讯股份有限公司 一种业务保护方法、网络设备、分布式业务处理系统及存储介质

Also Published As

Publication number Publication date
WO2018057222A1 (en) 2018-03-29
EP3516507A1 (en) 2019-07-31
BR112019005230A2 (pt) 2019-06-04
US20180081690A1 (en) 2018-03-22
TW201814502A (zh) 2018-04-16

Similar Documents

Publication Publication Date Title
US11809321B2 (en) Memory management in a multiple processor system
CN109716293A (zh) 在基于处理器的系统中使用融合处理器核心执行分布式分支预测
CN105393240B (zh) 具有辅助异步向量处理器的异步处理器的方法和装置
CN109313555A (zh) 使用初始高预提取预测置信度状态以节制基于处理器的系统中的下一行预提取的下一行预提取器
CN105009074B (zh) 消除指令处理电路中的冗余同步屏障和相关处理器系统、方法以及计算机可读媒体
CN105518640A (zh) 在嵌入式存储器中提供命令排队
CN109716292A (zh) 在块原子数据流架构中提供存储器相依性预测
TW201211777A (en) Apparatus and method for handling access operations issued to local cache structures within a data processing apparatus
US20140372786A1 (en) Virtual Per-Processor Timers for Multiprocessor Systems
CN105683905A (zh) 在多核心处理器中并行功能的高效率硬件分派及相关的处理器系统、方法及计算机可读媒体
CN109284305A (zh) 一种数据的更新方法、装置及系统
CN106462394A (zh) 使用共享硬件资源的群集处理器核心中硬件线程的动态负载平衡以及相关的电路、方法和计算机可读媒体
CN111158867B (zh) 时间同步处理方法、线程调度方法、装置及电子设备
CN117813588A (zh) 元数据预测器
CN108780399A (zh) 提供有待由处理器执行的近期提供的指令的先前解码的指令的参考
CN109635020A (zh) 一种业务的处理方法、装置、设备及系统
CN104854556B (zh) 建立分支目标指令高速缓冲存储器条目的方法和系统
CN107077335A (zh) 使用所预测值表来提供循环不变值预测,以及相关设备、方法和计算机可读媒体
CN110427426A (zh) 一种数据同步处理方法及装置
CN106104466B (zh) 在超越控制分支预测器中的推测历史转递以及相关电路、方法和计算机可读媒体
CN107111487A (zh) 在乱序(ooo)处理器中提供早期指令执行,以及相关设备、方法和计算机可读媒体
US20220334888A1 (en) Methods and apparatus to synchronize threads
CN103782277A (zh) 用于管理便携式计算装置上的平行资源请求的方法及系统
CN105700855A (zh) 改进的simd k最近邻实现
CN106605207A (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
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20190503