TW201814502A - 使用在一以處理器為基礎的系統中融合之處理器核心執行分佈式分支預測 - Google Patents

使用在一以處理器為基礎的系統中融合之處理器核心執行分佈式分支預測 Download PDF

Info

Publication number
TW201814502A
TW201814502A TW106127872A TW106127872A TW201814502A TW 201814502 A TW201814502 A TW 201814502A TW 106127872 A TW106127872 A TW 106127872A TW 106127872 A TW106127872 A TW 106127872A TW 201814502 A TW201814502 A TW 201814502A
Authority
TW
Taiwan
Prior art keywords
processor core
program identifier
processor
identifier
instruction window
Prior art date
Application number
TW106127872A
Other languages
English (en)
Inventor
安妮爾 克麗莎娜
納瑞許 維吉納 瑞迪 寇芬尼提
格雷戈里 麥可 懷特
Original Assignee
美商高通公司
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 美商高通公司 filed Critical 美商高通公司
Publication of TW201814502A publication Critical patent/TW201814502A/zh

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

使用在一以處理器為基礎的系統中融合之處理器核心執行分佈式分支預測
本發明之科技大體上係關於分支預測,且尤其係關於在能夠進行處理器核心融合之以處理器為基礎的系統中的分支預測。
一些處理器架構能夠進行「核心融合」,此為使多個個別處理器核心能夠邏輯上「融合」且一起作為較高效能之單執行緒處理器而工作的特徵。此等融合之核心可向執行程式提供較多算術邏輯單元(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說明例示性的以處理器為基礎的系統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且將其儲存於經分配PFE 206(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)之識別符儲存於PFE 206(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)解除分配PFE 206(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可駐存於遠端台中。在替代例中,處理器及儲存媒體可作為離散組件而駐存於遠端台、基地台或伺服器中。 亦應注意,描述本文中在任何例示性態樣中所描述之操作步驟以提供實例及論述。可以不同於所說明之集合的眾多不同集合執行所描述之操作。此外,實際上可以數個不同步驟執行單一操作步驟中所描述之操作。另外,可組合例示性態樣中所論述之一或多個操作步驟。應理解,流程圖中所說明之操作步驟可經受眾多不同修改,此對於熟習此項技術者而言將容易顯而易見。熟習此項技術者亦應理解,可使用多種不同科技及技術中之任一者表示資訊及信號。舉例而言,可藉由電壓、電流、電磁波、磁場或磁性粒子、光場或光學粒子或其任何組合來表示可貫穿以上描述所參考之資料、指令、命令、資訊、信號、位元、符號及碼片。 提供本發明之先前描述以使任何熟習此項技術者皆可製作或使用本發明。在不脫離本發明之精神或範疇的情況下,對本發明之各種修改對於熟習此項技術者而言將容易顯而易見,且本文中所定義之一般原理可應用於其他變化。因此,本發明並不意欲限於本文中所描述之實例及設計,而應符合與本文中所揭示之原理及新穎特徵相一致的最廣泛範疇。
100‧‧‧以處理器為基礎的系統
102(0)‧‧‧處理器核心
102(1)‧‧‧處理器核心
102(2)‧‧‧處理器核心
102(X)‧‧‧處理器核心
104‧‧‧融合之處理器核心
106(0)‧‧‧前端
106(1)‧‧‧前端
106(2)‧‧‧前端
106(X)‧‧‧前端
112(0)‧‧‧分支預測器
112(1)‧‧‧分支預測器
112(2)‧‧‧分支預測器
112(X)‧‧‧分支預測器
108(0)‧‧‧指令窗
108(1)‧‧‧指令窗
108(2)‧‧‧指令窗
108(X)‧‧‧指令窗
110(0)‧‧‧後端執行資源
110(1)‧‧‧後端執行資源
110(2)‧‧‧後端執行資源
110(X)‧‧‧後端執行資源
114‧‧‧指令區塊
116‧‧‧指令
116'‧‧‧指令
116''‧‧‧指令
118‧‧‧標頭
118'‧‧‧標頭
118''‧‧‧標頭
120‧‧‧融合之指令窗
122‧‧‧後端執行資源
124‧‧‧分佈式分支預測器
200‧‧‧分支預測資源/分支預測器資源
202‧‧‧指令快取記憶體
204‧‧‧標頭快取記憶體
206(0)‧‧‧預測及提取引擎(PFE)
206(Y)‧‧‧預測及提取引擎(PFE)
208‧‧‧程式識別符
210‧‧‧全域歷史指示符
210'‧‧‧全域歷史指示符
210''‧‧‧全域歷史指示符
212‧‧‧誤預測校正資料
212'‧‧‧誤預測校正資料
212''‧‧‧誤預測校正資料
214‧‧‧下一處理器核心指示符
216‧‧‧下一指令窗追蹤器指示符
218(0)‧‧‧作用中指令窗追蹤器
218(Z)‧‧‧作用中指令窗追蹤器
220(0)‧‧‧溢位指令窗追蹤器
220(Z)‧‧‧溢位指令窗追蹤器
300‧‧‧時間軸
302‧‧‧程式識別符
304‧‧‧全域歷史指示符
306‧‧‧程式識別符
308‧‧‧全域歷史指示符
310‧‧‧預測程式識別符
312‧‧‧全域歷史指示符
400‧‧‧指令窗追蹤器
402‧‧‧經提取資料
404‧‧‧指令窗追蹤器
406‧‧‧經提取資料
408‧‧‧指令窗追蹤器
410‧‧‧校正程式識別符
412‧‧‧清空信號
414‧‧‧存留期指示符
500‧‧‧區塊
502‧‧‧區塊
504‧‧‧區塊
506‧‧‧區塊
508‧‧‧區塊
510‧‧‧區塊
512‧‧‧區塊
514‧‧‧區塊
516‧‧‧區塊
518‧‧‧區塊
520‧‧‧區塊
600‧‧‧區塊
602‧‧‧區塊
604‧‧‧區塊
606‧‧‧區塊
608‧‧‧區塊
610‧‧‧區塊
612‧‧‧區塊
614‧‧‧區塊
616‧‧‧區塊
618‧‧‧區塊
700‧‧‧區塊
702‧‧‧區塊
704‧‧‧區塊
706‧‧‧區塊
708‧‧‧區塊
710‧‧‧區塊
800‧‧‧區塊
802‧‧‧區塊
804‧‧‧區塊
806‧‧‧區塊
808‧‧‧區塊
810‧‧‧區塊
812‧‧‧區塊
900‧‧‧區塊
902‧‧‧區塊
904‧‧‧區塊
906‧‧‧區塊
1000‧‧‧以處理器為基礎的系統
1002‧‧‧中央處理單元(CPU)
1006‧‧‧快取記憶體
1004‧‧‧處理器
1008‧‧‧系統匯流排
1010‧‧‧記憶體控制器
1012‧‧‧記憶體系統
1014‧‧‧輸入裝置
1016‧‧‧輸出裝置
1018‧‧‧網路介面裝置
1020‧‧‧顯示控制器
1022‧‧‧網路
1024(0)‧‧‧記憶體單元
1024(N)‧‧‧記憶體單元
1026‧‧‧顯示器
1028‧‧‧視訊處理器
圖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之多個處理器核心。

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可用。
TW106127872A 2016-09-21 2017-08-17 使用在一以處理器為基礎的系統中融合之處理器核心執行分佈式分支預測 TW201814502A (zh)

Applications Claiming Priority (2)

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

Publications (1)

Publication Number Publication Date
TW201814502A true TW201814502A (zh) 2018-04-16

Family

ID=59772801

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106127872A TW201814502A (zh) 2016-09-21 2017-08-17 使用在一以處理器為基礎的系統中融合之處理器核心執行分佈式分支預測

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)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109101276B (zh) * 2018-08-14 2020-05-05 阿里巴巴集团控股有限公司 在cpu中执行指令的方法
CN110109705A (zh) * 2019-05-14 2019-08-09 核芯互联科技(青岛)有限公司 一种支持嵌入式边缘计算的超标量处理器分支预测方法
CN112187494A (zh) * 2019-07-01 2021-01-05 中兴通讯股份有限公司 一种业务保护方法、网络设备及分布式业务处理系统
US11494191B1 (en) 2021-05-18 2022-11-08 Microsoft Technology Licensing, Llc Tracking exact convergence to guide the recovery process in response to a mispredicted branch

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6591342B1 (en) * 1999-12-14 2003-07-08 Intel Corporation Memory disambiguation for large instruction windows
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
US8874885B2 (en) * 2008-02-12 2014-10-28 International Business Machines Corporation Mitigating lookahead branch prediction latency by purposely stalling a branch instruction until a delayed branch prediction is received or a timeout occurs
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
US8127119B2 (en) * 2008-12-05 2012-02-28 The Board Of Regents Of The University Of Texas System Control-flow prediction using multiple independent predictors
US8433885B2 (en) * 2009-09-09 2013-04-30 Board Of Regents Of The University Of Texas System Method, system and computer-accessible medium for providing a distributed predicate prediction
US20110320787A1 (en) * 2010-06-28 2011-12-29 Qualcomm Incorporated Indirect Branch Hint
US9442736B2 (en) * 2013-08-08 2016-09-13 Globalfoundries Inc Techniques for selecting a predicted indirect branch address from global and local caches

Also Published As

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

Similar Documents

Publication Publication Date Title
US10255074B2 (en) Selective flushing of instructions in an instruction pipeline in a processor back to an execution-resolved target address, in response to a precise interrupt
TW201814502A (zh) 使用在一以處理器為基礎的系統中融合之處理器核心執行分佈式分支預測
US10684859B2 (en) Providing memory dependence prediction in block-atomic dataflow architectures
US10860328B2 (en) Providing late physical register allocation and early physical register release in out-of-order processor (OOP)-based devices implementing a checkpoint-based architecture
CN105009074B (zh) 消除指令处理电路中的冗余同步屏障和相关处理器系统、方法以及计算机可读媒体
US11729218B2 (en) Implementing a service mesh in the hypervisor
CN105683905A (zh) 在多核心处理器中并行功能的高效率硬件分派及相关的处理器系统、方法及计算机可读媒体
CN106462394A (zh) 使用共享硬件资源的群集处理器核心中硬件线程的动态负载平衡以及相关的电路、方法和计算机可读媒体
TW202307652A (zh) 用於最佳化迴圈緩衝效能之採用處理器中的迴圈特性預測的迴圈緩衝
JP2023531216A (ja) 命令再フェッチを減らすための、プロセッサにおけるハザードに応答した命令パイプライン・フラッシュ後のフェッチ、フラッシュされた命令の再利用
CN106104466B (zh) 在超越控制分支预测器中的推测历史转递以及相关电路、方法和计算机可读媒体
EP2856304B1 (en) Issuing instructions to execution pipelines based on register-associated preferences, and related instruction processing circuits, processor systems, methods, and computer-readable media
US20190065060A1 (en) Caching instruction block header data in block architecture processor-based systems
US20210191721A1 (en) Hardware micro-fused memory operations
TWI752354B (zh) 提供預測性指令分派節流以防止在基於亂序處理器(oop)的設備中的資源溢出
US10671425B2 (en) Lazy timer programming for virtual machines
WO2021055056A1 (en) Dynamic hammock branch training for branch hammock detection in an instruction stream executing in a processor
US11977907B2 (en) Hybrid push and pull event source broker for serverless function scaling
US20190294443A1 (en) Providing early pipeline optimization of conditional instructions in processor-based systems
US10545790B2 (en) Method and system for processing data
CN115885259A (zh) 虚拟三路解耦预测和获取