TWI651648B - 用於使用串流長度預測之分支預測器搜尋資格之電腦程式產品、電腦實施方法及系統 - Google Patents

用於使用串流長度預測之分支預測器搜尋資格之電腦程式產品、電腦實施方法及系統 Download PDF

Info

Publication number
TWI651648B
TWI651648B TW106138706A TW106138706A TWI651648B TW I651648 B TWI651648 B TW I651648B TW 106138706 A TW106138706 A TW 106138706A TW 106138706 A TW106138706 A TW 106138706A TW I651648 B TWI651648 B TW I651648B
Authority
TW
Taiwan
Prior art keywords
branch
predictor
search
stream
branch predictor
Prior art date
Application number
TW106138706A
Other languages
English (en)
Other versions
TW201823969A (zh
Inventor
詹姆士 J 波納諾
麥可 J 二世 卡帝甘
亞當 B 柯路拉
丹尼爾 利普茲
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 TW201823969A publication Critical patent/TW201823969A/zh
Application granted granted Critical
Publication of TWI651648B publication Critical patent/TWI651648B/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/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/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

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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本發明提供一種電腦實施方法,其包括藉由一處理器的一基於串流之索引加速器預測器來判定一指令位址與結束一指令串流之一已選取分支之間的一預測串流長度。搜尋該處理器的一階層式非同步預看分支預測器之一第一級分支預測器,以找出由該指令位址及該預測串流長度定界的一搜尋範圍中之一或多個項目中的一分支預測。基於未能在該搜尋範圍中定位該分支預測而觸發對該階層式非同步預看分支預測器之一第二級分支預測器的一搜尋。

Description

用於使用串流長度預測之分支預測器搜尋資格之電腦程式產品、電腦實施方法及系統
本發明係關於微處理器設計之領域,且更特定言之,係關於使用串流長度預測之分支預測器搜尋資格。
分支預測係管線式高頻微處理器之效能關鍵組件。分支預測用於預測每一分支指令之方向(已選取的相對於未選取的)及目標位址。此為有益的,因為分支預測允許處理沿分支的所預測路徑繼續,而非必須等待分支之結果得到判定。若不正確地預測分支,則引發懲罰。管線式分支預測器耗用若干循環以作出預測。
傳統地,分支預測用於沿將在程式內執行之程式碼的最可能路徑指引指令流沿處理器管線向下。分支預測使用歷史資訊預測是否選取或不選取給定分支,諸如基於在過去執行程式碼之哪一部分而預測IF-THEN-ELSE結構中所包括的程式碼之哪一部分將執行。隨後提取且推測地執行預期為首先選取之分支的分支。若稍後判定該預測係錯誤的,則捨棄經推測地執行或部分執行的指令且管線以指令沿正確分支路徑前進至分支而重新開始,由此引發分支與將執行之下一指令之間的延遲。
用於提供分支預測之結構的存取次數限制了該等結構之容量。階層 式分支預測器可提供具有較大容量之系統。在此等設計中,來自第一級預測器之多個連續搜尋之分支預測的缺失通常用作「一級未命中」之指示,該指示可用於觸發搜尋及「一級未命中」附近之多個分支自二級結構至一級結構中的成批傳送。然而,預測的缺失可歸因於容量問題,在此情況下,存取階層之第二級係有益的,或預測的缺失可歸因於無分支指令定位於所搜尋的程式碼區段中。非同步預看分支預測器通常無法區分此兩種情況。因此,改良階層式分支預測器內之搜尋及傳送程序將為有利的。
根據一實施例,一種電腦實施方法包括藉由一處理器的一基於串流之索引加速器預測器來判定一指令位址與結束一指令串流之一已選取分支之間的一預測串流長度。搜尋該處理器的一階層式非同步預看分支預測器之一第一級分支預測器,以找出由該指令位址及該預測串流長度定界的一搜尋範圍中之一或多個項目中的一分支預測。基於未能在該搜尋範圍中定位該分支預測而觸發對該階層式非同步預看分支預測器之一第二級分支預測器的一搜尋。
根據其他實施例,一種系統包括一處理器的一基於串流之索引加速器預測器,其可操作以判定一指令位址與結束一指令串流之一已選取分支之間的一預測串流長度。該系統亦包括該處理器的一階層式非同步預看分支預測器,其包含一第一級分支預測器及一第二級分支預測器。該階層式非同步預看分支預測器可操作以:搜尋該第一級分支預測器,以找出由該指令位址與該預測串流長度定界的一搜尋範圍中之一或多個項目中的一分支預測,及基於未能在該搜尋範圍中定位該分支預測而觸發對該第二級分支預測器的一搜尋。
根據另外其他實施例,一種電腦程式產品包括具有實施有程式指令的一電腦可讀儲存媒體,其中該電腦可讀儲存媒體本質上並非一暫時性信號。該等程式指令可由一處理器執行以使得該處理器執行一方法,該方法包括藉由該處理器的一基於串流之索引加速器預測器來判定一指令位址與結束一指令串流之一已選取分支之間的一預測串流長度。搜尋該處理器的一階層式非同步預看分支預測器之一第一級分支預測器,以找出由該指令位址及該預測串流長度定界的一搜尋範圍中之一或多個項目中的一分支預測。基於未能在該搜尋範圍中定位該分支預測而觸發對該階層式非同步預看分支預測器之一第二級分支預測器的一搜尋。
100‧‧‧電腦系統
102‧‧‧通信網狀架構
104‧‧‧電腦處理器
105‧‧‧分支預測器
106‧‧‧記憶體
107‧‧‧索引加速器
108‧‧‧持續儲存器
110‧‧‧通信單元
112‧‧‧輸入/輸出(I/O)介面
116‧‧‧快取記憶體
118‧‧‧外部裝置
120‧‧‧顯示器
200‧‧‧系統
202‧‧‧BTB1搜尋及命中邏輯
204‧‧‧第一級分支預測器(BTB1)
205‧‧‧階層式非同步預看分支預測器
206‧‧‧第二級分支預測器(BTB2)
207‧‧‧基於串流之分支預測索引加速器
208‧‧‧BTB2搜尋追蹤器
209‧‧‧準確度計數器
210‧‧‧BTB2搜尋及命中邏輯
300‧‧‧BTB項目
302‧‧‧分支位址標籤
306‧‧‧預測目標位址
310‧‧‧BTB列
312‧‧‧BTB列
400‧‧‧系統
401‧‧‧第一級分支預測器
402‧‧‧BTB1搜尋及命中邏輯
403‧‧‧分支目標緩衝器預載入表(BTBP)
404‧‧‧第一級分支預測器(BTB1)
405‧‧‧階層式非同步預看分支預測器
406‧‧‧第二級分支預測器(BTB2)
407‧‧‧基於串流之分支預測索引加速器
408‧‧‧BTB2搜尋追蹤器
409‧‧‧準確度計數器
410‧‧‧BTB2搜尋及命中邏輯
500‧‧‧正常搜尋程序
502‧‧‧開始搜尋位址
504‧‧‧預設搜尋深度
600‧‧‧搜尋程序
602‧‧‧開始搜尋位址
604‧‧‧預設搜尋深度
606‧‧‧預測串流長度
700‧‧‧搜尋程序
702‧‧‧開始搜尋位址
704‧‧‧預設搜尋深度
706‧‧‧預測串流長度
800‧‧‧程序
802‧‧‧區塊
804‧‧‧區塊
806‧‧‧區塊
在本說明書之結尾處的申請專利範圍中特別地指出且明顯地主張本標的。實施例的前述及其他特徵及優勢將自結合隨附圖式進行的以下詳細描述顯而易見,在隨附圖式中:圖1為根據一實施例之計算裝置之組件的方塊圖;圖2為根據一實施例之系統的方塊圖;圖3描繪根據一實施例之分支目標緩衝器中的項目;圖4為根據一實施例之另一系統的方塊圖;圖5描繪根據一實施例之分支預測器搜尋;圖6描繪根據一實施例之分支預測器擴展搜尋;圖7描繪根據一實施例之分支預測器縮小搜尋;及圖8為描繪根據一實施例之電腦實施方法的流程圖。
實施例結合一基於串流之分支預測索引加速器(SPRED)使用一處理 器的一階層式非同步預看分支預測器以用於分支預測程序。一階層式非同步預看分支預測器包括一第一級分支預測器及一第二級分支預測器,當未能在該第一級分支預測器中定位一分支時,搜尋該第二級分支預測器。該第一級分支預測器及該第二級分支預測器可各自包括具有不同大小及效能特性之一或多個分支目標緩衝器(BTB)。BTB為儲存分支、目標資訊及視情況儲存其他預測支援資訊的結構。
自以指令提取開始之處理器管線非同步地進行非同步預看分支預測。當在與指令提取相同的時間框處在所指定的指令位址處重新開始時,分支預測在重新開始位址處或其之後獨立地搜尋第一級分支預測器以找出第一分支。在找到分支後,分支預測邏輯將其報告至指令提取邏輯及管線邏輯,以允許分支預測與解碼中之指令之間的最終相關性。獨立於管線之其餘部分,分支預測邏輯利用預測之已選取分支之預測目標位址對自身重新索引。對於所預測的未選取分支,分支預測邏輯繼續依序搜尋。分支預測邏輯接著尋找下一分支。此程序接著重複。索引分支預測器、自該等分支預測器讀取內容及判定是否存在所預測的已選取分支及在所預測的已選取分支存在之情況下判定其目標位址在現代高頻設計中可耗用多個處理器循環。
第一級分支預測器係大體上使用一指令位址來索引且按某一量遞增以繼續依序搜尋以在程式碼區域內尋找分支。每當諸如針對錯誤分支重新開始處理器指令串流時,搜尋開始且開始新串流。因此,每一所預測的已選取分支開始新串流。實施例利用來自SPRED之串流長度資訊以判定作用於可能之第一級分支預測器未命中的方式。當SPRED指示結束搜尋當前串流之已選取分支預測的指令位址大於當前搜尋位址時,當彼當前搜尋 位址遠遠超出開始點(當未發現分支預測時,開始點可另外被報告為一級未命中)時,可避免全動作,諸如第二級分支預測器之全搜尋。當SPRED較早預測到串流末端,但未發現分支時(例如,在固定未命中極限之前),該未命中可加速。
圖1描繪電腦系統100,其為包括實施例之系統之實例。電腦系統100包括通信網狀架構102,其提供包括分支預測器105及索引加速器107之電腦處理器104、記憶體106、持續儲存器108、通信單元110、輸入/輸出(I/O)介面112及快取記憶體116之間的通信。通信網狀架構102可經實施具有經設計以用於在系統內之處理器(諸如微處理器、通信及網路處理器等)、系統記憶體、周邊裝置及任何其他硬體組件之間傳遞資料及/或控制資訊的任何架構。舉例而言,通信網狀架構102可經實施具有一或多個匯流排。
記憶體106及持續儲存器108為電腦可讀儲存媒體。在此實施例中,記憶體106包括隨機存取記憶體(RAM)。大體而言,記憶體106可包括任何合適的揮發性或非揮發性電腦可讀儲存媒體。快取記憶體116為快速記憶體,其藉由保存最近存取的資料及靠近最近自記憶體106存取之資料的資料而增強處理器104之效能。快取記憶體116可分佈於處理器104內及/或其外且可包括指令(例如,指令快取)及/或資料(例如,資料快取)。
用於實踐實施例之程式指令及資料可儲存於持續儲存器108中以用於由各別處理器104中之一或多者經由快取記憶體116及記憶體106中的一或多個記憶體執行。在一實施例中,持續儲存器108包括磁性硬碟機。另外,或除磁性硬碟機之外,持續儲存器108可包括固態硬碟、半導體儲存裝置、唯讀記憶體(ROM)、可抹除可程式化唯讀記憶體(EPROM)、快閃 記憶體或能夠儲存程式指令或數位資訊的任何其他電腦可讀儲存媒體。
由持久儲存器108使用之媒體亦可為抽取式的。舉例而言,抽取式硬碟可用於持久儲存器108。其他實例包括光碟及磁碟、隨身碟及智慧卡,該等裝置經插入至磁碟機中以用於傳送至亦為持續儲存器108之部分的另一電腦可讀儲存媒體上。
在此等實例中,通信單元110提供與其他資料處理系統或裝置之通信。在此等實例中,通信單元110包括一或多個網路介面卡。通信單元110可經由使用實體及無線通信鏈路之任一者或兩者而提供通信。用於實踐實施例之程式指令及資料可經由通信單元110下載至持續儲存器108。
I/O介面112允許利用可連接至每一電腦系統的其他裝置輸入及輸出資料。舉例而言,I/O介面112可提供至諸如鍵盤、小鍵盤、觸控式螢幕及/或某一其他合適之輸入裝置的外部裝置118之連接。外部裝置118亦可包括可攜式電腦可讀儲存媒體,諸如例如隨身碟、可攜式光碟或磁碟及記憶卡。用於實踐實施例之軟體及資料可儲存於此等可攜式電腦可讀儲存媒體上且可經由I/O介面112加載至持續儲存器108上。I/O介面112亦連接至顯示器120。顯示器120提供用以向使用者顯示資料之機構且可為(例如)電腦監視器。
分支預測器105及索引加速器107可包括能夠對於指令串流中之分支之位置作出預測且儲存該等預測的一或多組硬體邏輯組件。本文中參看圖2至圖8來進一步描述分支預測器105及索引加速器107之實例實施例。
圖2描繪系統200,其包括作為圖1之分支預測器105之實施例的階層式非同步預看分支預測器205,及作為圖1之索引加速器107之實施例的SPRED 207。圖2之實例階層式非同步預看分支預測器205包括第一級分 支預測器(BTB1)204、BTB1搜尋及命中邏輯202、第二級分支預測器(BTB2)206、BTB2搜尋追蹤器208及BTB2搜尋及命中邏輯210。BTB1搜尋及命中邏輯202控制BTB1 204中之BTB項目的存取及更新,而BTB2搜尋及命中邏輯210控制BTB2 206中之BTB項目的存取及更新。在一例示性實施例中,BTB1 204為主要或第一級BTB,且BTB2 206為次要或第二級BTB。BTB2搜尋追蹤器208可組態為篩選器,該篩選器用於基於SPRED限定之BTB1未命中而搜尋及控制來自BTB2 206之多個BTB項目的成批傳送。SPRED限定之BTB1未命中可由與記憶體之同一區域相關聯之指令快取未命中進一步限制。雖然分別描繪了BTB1搜尋及命中邏輯202、SPRED 207及BTB2搜尋及命中邏輯210,但應瞭解,該等裝置可組合成單一邏輯區塊或進一步再分。
BTB1 204及BTB2 206中之每一者為集合相聯的(set associative),包括BTB項目之多個集合。BTB2 206為分支預測資訊之較高層級快取。BTB2 206之容量大於BTB1 204之容量以儲存項目,且BTB1 204涵蓋大於或等於圖1之快取記憶體116之指令快取記憶體的指令覆蓋區。BTB項目之一般實例在圖3中被描繪為BTB項目300(亦被稱作項目300),其包括分支位址標籤302及預測目標位址306。繼續參看圖1至圖3,分支位址標籤302用於在BTB列310中定位項目,其中圖2之BTB1 204及BTB2 206中之每一者可包括多個BTB列312及每個BTB列310的多個集合相聯之BTB項目。BTB1 204及BTB2 206可相對於彼此具有不同數目個BTB列312及行。每一BTB項目300可包括其他分支預測資訊(未描繪),諸如指示相關聯分支是否被選取之分支方向。
在一例示性實施例中,對應於圖1之處理器104中之指令提取的重新 開始的搜尋位址被發送至BTB1搜尋及命中邏輯202,該BTB1搜尋及命中邏輯隨後與指令提取非同步地操作,直至下一次重新開始。當尋找分支預測時,BTB1 204經讀取且在其含有具有匹配搜尋位址之分支位址標籤302的項目之情況下可提供分支預測。BTB1 204將輸入提供至BTB1搜尋及命中邏輯202以基於搜尋位址而判定是否找到匹配或「命中」。若發現匹配,則BTB1搜尋及命中邏輯202輸出一預測目標位址。若未發現匹配,則在搜尋範圍中繼續BTB1 204之依序搜尋,隨後宣告BTB1未命中且經由BTB2搜尋追蹤器208採取另一動作。
可由SPRED 207建立BTB1 204之搜尋範圍。在實施例中,SPRED 207判定一指令位址與結束一指令串流之一已選取分支之間的一預測串流長度。搜尋BTB1 204以找出由該指令位址及該預測串流長度定界的搜尋範圍中之一或多個項目300中之一分支預測。基於未能在該搜尋範圍中定位該分支預測,可觸發對BTB2 206之搜尋。
在一些實施例中,可省略BTB2搜尋追蹤器208。在包括BTB2搜尋追蹤器208之實施例中,可按BTB2頁面之粒度來追蹤BTB1未命中。舉例而言,若BTB2成批傳送粒度(頁面大小)為4KB,則同一4KB頁面中的任何限定之BTB1未命中被視為同一頁面未命中。若BTB2搜尋追蹤器208中之搜尋追蹤器對於特定頁面中之BTB1未命中起作用,則當彼搜尋追蹤器起作用時且當彼頁面位址被識別為最近完成時,忽略彼同一頁面中之任何後續未命中。在偵測到係BTB2搜尋追蹤器208中的具有有效指令快取未命中有效性指示符(例如,位元被設定為「1」)之作用中搜尋追蹤器之複本的BTB1未命中後,但BTB1未命中有效性指示符無效(例如,位元被設定為「0」),搜尋追蹤器之相關聯BTB1未命中有效性指示符可設定為有效 (例如,「1」)。
獨立於BTB1未命中,當指令快取未命中出現時,其可被發送至BTB2搜尋追蹤器208。每一搜尋追蹤器亦可追蹤指令快取未命中。指令快取未命中可按與BTB2成批轉移相同之頁面粒度或按不同指令快取粒度來追蹤。若指令快取未命中位址匹配對BTB1未命中(BTB1未命中位址)起作用而非對指令快取未命中起作用之追蹤器的位址,則指令快取未命中有效性指示符可設定為有效(例如,「1」)。
作用中搜尋追蹤器可用於執行BTB2 206之搜尋。在例示性實施例中,當搜尋追蹤器對BTB1未命中及指令快取未命中兩者起作用時,整頁傳送可發生。搜尋頁面內之BTB2 206的所有列,且將命中寫入至BTB1 204中。對BTB1未命中及指令快取未命中兩者起作用之搜尋追蹤器可保持在作用中,直至BTB2成批傳送完成。
SPRED 207可追蹤對應於在指令串流中所接收之第一指令之位址的列之索引,且讀取SPRED 207之當前列中所包括的資訊。在各種實施例中,視位址空間之寬度而定,各種數目的唯一指令位址可存在,且因此,在各種實施例中,不同數目的列可為SPRED 207所需的。大體而言,僅將給定指令之指令位址的位元之一子集用於識別含有給定指令之分支預測資料的SPRED 207中之列數目。舉例而言,在使用32位元指令位址(包括位元0至位元31)之實施例中,每一指令位址可分成以下部分:由指令位址的前17個位元(位元0至位元16)組成之左標籤(L標籤)、由指令位址的接下來10個位元(位元17至位元26)組成之索引及由指令位址的最後5個位元(位元27至位元31)組成之右標籤(R標籤)。在此實施例中,因為僅用作索引的指令位址之十個位元係用於判定彼指令之分支預測資料儲存所在的 SPRED 207中之列,所以SPRED 207包括1024個列。此外,在一些實施例中,SPRED 207經設計以含有與BTB1 204數目相同的列,且可基於與BTB1 204相同的指令位址之10位元而索引。在其他實施例中,BTB1 204及SPRED 207使用不同數目的位元以判定各別表中的哪一列含有彼指令之分支預測資訊。在此等實施例中,BTB1 204及SPRED 207可能具有不同數目的列而同時仍允許正確操作。
可讀取對應於當前指令的SPRED 207之列中所含之資料以判定分支對於當前指令是否為預期的。應瞭解,在使用頻疊之實施例中,SPRED 207的一列可對應於大量指令位址,且在此等實施例中,多個指令位址可對應於SPRED 207中的同一列。在一實施例中,儲存於SPRED 207之當前列中之資料的第一位元含有已選取預測是否存在於BTB1 204之對應列中的二元指示。在此實施例中,使用指示在遇到用以結束串流之已選取分支之前需對BTB1 204進行多少次搜尋的位移欄位進行判定已選取預測是否存在於BTB1 204之對應列中。
處理器104可識別SPRED 207之當前所選列中所指示的第一已選取分支預測之目標位址。在一些實施例中,諸如變化目標緩衝器(CTB)之額外結構可用於預測用於由SPRED 207之一或多個列指示的第一已選取預測的目標位址。在此等實施例中,可省略第一已選取預測之目標位址,且BTB1 204之行的指示可用於使用諸如CTB之其他結構更容易地識別第一已選取預測之目標位址。
可在自SPRED 207得到預測的同時自BTB1 204得到預測。自SPRED 207得到的預測可被視為有效的,直至由自BTB1 204得到的預測確認或懷疑。在各種實施例中,SPRED 207中所包括的位元之資料可為用於將 SPRED 207重新索引至預測之目標位址的位元之資料。在將資料之更多或更少位元用於重新索引SPRED 207之實施例中,SPRED 207之給定列中所包括的數字之長度可不同。一旦識別出第一已選取分支預測之目標位址,處理器104即重新索引SPRED 207及BTB1 204至對應於第一已選取分支預測之目標位址的列。一旦SPRED 207及BTB1 204經重新索引,處理器104即重新開始搜尋BTB1 204及SPRED 207以找出新目標位址處之分支預測的程序。
處理器104可判定是否有更多位址空間要搜尋。若諸如BTB1搜尋及命中邏輯202之搜尋邏輯決定搜尋應停止,則分支預測搜尋結束。重新開始開始分支預測邏輯中之新搜尋串流。一旦重新開始發生,處理器104可保持對分支之依序搜尋。在其他態樣中,當SPRED 207發現串流結束時,處理器104亦可加速重新索引,因此處理器104重導向分支預測器105以開始新串流中的搜尋。若以跟隨前一指令位址之指令位址接收到重新開始的請求,則處理器104可繼續搜尋BTB1 204及SPRED 207的下一順序列以用於預測分支之存在。大體而言,BTB1 204及SPRED 207之索引可遞增,此係因為BTB1 204及SPRED 207中之下一列含有指令串流中存在的指令之下一順序集合的分支預測資訊。
SPRED 207可判定結束串流之預測退出點或已選取分支。舉例而言,在串流0之開始處,開始指令位址0x00可用於索引至SPRED 207中,且SPRED 207之輸出可指示退出點為自串流0開始起的X個位置/指令處。一旦在串流0中搜尋了X個位置/指令,SPRED 207之輸出即可用於加速索引至串流1中。索引可自開始指令位址前進以產生Y個位置/指令之輸出,從而指示串流1之退出點的駐存處等。利用此方法,自(例如)串流之開始 搜尋位址起,SPRED 207可僅需每個串流讀取一次。SPRED 207之項目可包括含有至預測退出點之位移的資訊,該位移作為指令位址與結束指令串流之已選取分支之間的預測串流長度。
在一些實施例中,基於SPRED 207正確預測預測串流長度且使用正確預測的次數而更新準確度計數器209(亦即,準確度計數器)。由指令位址及預測串流長度定界的搜尋範圍之使用可基於判定準確度計數器209高於準確度臨限值。若SPRED 207照顧準確度低於準確度臨限值,則SPRED 207可被視為不準確的,從而導致基於判定準確度計數器209低於準確度臨限值而停用搜尋範圍之使用且啟用預設搜尋深度之使用。舉例而言,預設搜尋範圍可設定為預定值,諸如在宣告未命中前搜尋三個項目。與此對比,SPRED 207可基於指令位址與結束指令串流之已選取分支之間的預測串流長度而設定比預設搜尋範圍更大或更小的搜尋範圍。
圖4描繪系統400,其包括作為圖1之分支預測器105之實施例的階層式非同步預看分支預測器405及作為圖1之索引加速器107之實施例的SPRED 407。圖4之實例階層式非同步預看分支預測器405包括具有BTB1 404及分支目標緩衝器預載入表(BTBP)403的第一級分支預測器401、BTB1搜尋及命中邏輯402、第二級分支預測器(BTB2)406、BTB2搜尋追蹤器408及BTB2搜尋及命中邏輯410。
BTBP 403可為小BTB,平行於較大主BTB(BTB1 404)搜尋該小BTB以預測分支指令之目標且視情況預測其方向。因為BTB1 404較大,所以其可用大SRAM陣列來實施,該等大SRAM陣列可具有有限數目個讀取埠及寫入埠(通常為1或2個讀取埠及單一寫入埠,限制為不可能在同一循環中對同一組進行讀取及寫入)。然而,由於BTBP 403遠小於BTB1 404,因此BTBP 403可用例如SRAM暫存器檔案來實施。BTBP 403可具有可同時使用的許多讀取埠及寫入埠。因此,分支預測資訊之多個源可藉由首先被寫入至BTBP 403而利用BTBP 403寫入頻寬。BTBP 403可經建構以充當用於BTB1 404之篩選器,其中BTB1 404自BTBP 403接收分支預測資訊。在例示性實施例中,BTBP 403推動被視為最有用之分支(例如,至少一次搜尋命中)自BTBP 403進入BTB1 404中。BTBP 403亦可藉由儲存最近自BTB1 404收回之分支預測資訊而充當集合相聯的受害者BTB快取。BTBP 403可支援軟體預載入安裝且可與諸如BTB2 406之其他結構介接。
類似於圖2之實施例,BTB1搜尋及命中邏輯402控制BTB1 404(及視情況BTBP 403)中之BTB項目的存取及更新,而BTB2搜尋及命中邏輯410控制BTB2 406中之BTB項目的存取及更新。在一例示性實施例中,BTBP 403及BTB1 404共同形成第一級分支預測器401,且BTB2 406為次要或第二級BTB。BTB2搜尋追蹤器408可經組態為篩選器,該篩選器用於基於SPRED限定之BTB1未命中而搜尋及控制BTB項目自BTB2 406至BTBP 403之成批傳送。SPRED限定之BTB1未命中可由與記憶體之同一區域相關聯之指令快取未命中進一步限制。雖然分別描繪了BTB1搜尋及命中邏輯402、SPRED 407及BTB2搜尋及命中邏輯410,但應理解,該等裝置可組合成單一邏輯區塊或進一步再分。並非將複數個分支自BTB2 406直接傳送至BTB1 404,BTB2搜尋及命中邏輯410可將分支傳送至BTBP 403。在識別出BTBP 403內之分支的「命中」後,可將位於BTBP 403中之分支傳送至BTB1 404。
在一些實施例中,平行於由SPRED 407定義的搜尋範圍而搜尋BTB1 404及BTBP 403。在其他實施例中,由SPRED 407定義的搜尋範圍限制對BTB1 404之搜尋,但不限制BTBP 403之搜尋範圍。可類似於圖2之BTB1 204及BTB2 206而結構化BTB1 404及BTB2 406。SPRED 407、BTB2搜尋追蹤器408、準確度計數器409及BTB2搜尋及命中邏輯410可類似於圖2之SPRED 207、BTB2搜尋追蹤器208、準確度計數器209及BTB2搜尋及命中邏輯210而操作。
圖5至圖7描繪在啟用及不啟用圖2及圖4之SPRED 207、407的情況下所執行的第一級分支預測器搜尋的實例。當停用SPRED 207、407時,可執行正常搜尋程序500。對於包括準確度計數器209、409之實施例,當準確度計數器209、409低於準確度臨限值時,可自位移0處之開始搜尋位址502起檢測BTB1 204、404,且在到達預設搜尋深度504之前於位移1及位移2處繼續搜尋。若在到達預設搜尋深度504之後未發現匹配,則指示未命中,其導致對BTB2 206、406之進一步搜尋。若準確度計數器209、409高於準確度臨限值(或準確度計數器209、409被省略),則在由指令位址及來自SPRED 207、407之預測串流長度定界的搜尋範圍上執行搜尋。預測串流長度可擴展超出預設搜尋深度504,此防止過早觸發對BTB2 206、406的不需要搜尋,或預測串流長度可小於預設搜尋深度504,此可允許提早觸發對BTB2 206、406的搜尋。
搜尋程序600為SPRED啟用之擴展搜尋的實例。可自位移0處之開始搜尋位址602起檢測BTB1 204、404,且在到達預設搜尋深度604之前於位移1及位移2處繼續搜尋。替代宣告未命中,搜尋擴展超出預設搜尋深度604至位移3及4,直至到達預測串流長度606以指示未命中。若已選取分支如SPRED 207、407所預測地定位於位移4處,則準確度計數器209、 409可遞增;否則,可觸發對BTB2 206、406之搜尋且準確度計數器209、409可遞減。
搜尋程序700為SPRED啟用之縮小搜尋的實例。可自位移0處之開始搜尋位址702起檢測BTB1 204、404。而不是在到達預設搜尋深度704之前於位移1及位移2處繼續搜尋。在在預測串流長度706處到達位移0後,在預設搜尋深度704之前提早指示未命中。若已選取分支如由SPRED 207、407所預測地定位於位移0處,則準確度計數器209、409可遞增;否則,可觸發對BTB2 206、406之搜尋且準確度計數器209、409可遞減。
現轉向圖8,現將在一例示性實施例中描述用於使用串流長度預測之分支預測器搜尋資格的程序800。程序800係參看圖1至圖7來描述且可由圖1之分支預測器105及索引加速器107來實施。
在區塊802處,處理器104的SPRED 207、407判定一指令位址與結束一指令串流之一已選取分支之間的一預測串流長度。在區塊804處,搜尋處理器104的階層式非同步預看分支預測器205、405之第一級分支預測器(BTB1 204、404及/或BTP 403)以找出由該指令位址及該預測串流長度定界的一搜尋範圍中之一或多個項目中的一分支預測。
在區塊806處,基於未能在該搜尋範圍中定位該分支預測而觸發對階層式非同步預看分支預測器205、405之第二級分支預測器(BTB2 206、406)的一搜尋。搜尋之觸發可導致複數個分支自BTB2 206、406成批傳送至BTB1 204、404及/或至BTBP 403。如圖2、圖4及圖6之實例中所描繪,SPRED 207、407之使用可使對BTB2 206、406之搜尋擴展超出一預設搜尋深度(其可由指令快取未命中進一步限定)。如圖2、圖4及圖7之實例中所描繪,SPRED 207、407可替代地在到達預設搜尋深度(其可由指令 快取未命中限定)之前觸發對BTB2 206、406之搜尋。
如先前所描述,在一些實施例中,可基於SPRED 207、407正確預測該預測串流長度且使用該正確預測的次數而更新準確度計數器209、409。可基於判定準確度計數器209、409高於準確度臨限值而啟用該搜尋範圍之使用。基於判定準確度計數器209、409低於準確度臨限值,可停用該搜尋範圍之使用且可啟用該預設搜尋深度之使用。
本發明可為在整合之任何可能技術細節層級的系統、方法及/或電腦程式產品。電腦程式產品可包括一(或多個)電腦可讀儲存媒體,其上具有用於使一處理器執行本發明之態樣的電腦可讀程式指令。
電腦可讀儲存媒體可為有形裝置,其可保持及儲存指令以供指令執行裝置使用。電腦可讀儲存媒體可為(例如,但不限於)電子儲存裝置、磁性儲存裝置、光學儲存裝置、電磁儲存裝置、半導體儲存裝置或前述各者之任何合適組合。電腦可讀儲存媒體之更特定實例之非窮盡性清單包括以下各者:可攜式電腦磁片、硬碟、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、可抹除可程式化唯讀記憶體(EPROM或快閃記憶體)、靜態隨機存取記憶體(SRAM)、可攜式光碟唯讀記憶體(CD-ROM)、數位化通用光碟(DVD)、記憶棒、軟碟、機械編碼裝置(諸如打孔卡或凹槽中之凸起結構,其上記錄有指令)及前述各者之任何合適組合。如本文中所使用,不應將電腦可讀儲存媒體解釋為本質上係暫時性信號,諸如無線電波或其他自由傳播的電磁波、經由波導或其他傳輸媒體傳播的電磁波(例如,通過光纖纜線的光脈衝)或經由導線傳輸的電信號。
本文中所描述之電腦可讀程式指令可自電腦可讀儲存媒體下載至各別計算/處理裝置,或經由網路(例如,網際網路、區域網路、廣域網路及/ 或無線網路)下載至外部電腦或外部儲存裝置。網路可包含銅傳輸纜線、光傳輸光纖、無線傳輸、路由器、防火牆、切換器、閘道器電腦及/或邊緣伺服器。每一計算/處理裝置中之網路配接卡或網路介面自網路接收電腦可讀程式指令且轉遞該等電腦可讀程式指令以儲存在各別計算/處理裝置內之電腦可讀儲存媒體中。
用於執行本發明之操作的電腦可讀程式指令可為以一或多種程式設計語言之任何組合撰寫的組譯器指令、指令集架構(ISA)指令、機器指令、機器相關指令、微碼、韌體指令、狀態設定資料、積體電路之組態資料或原始碼或目標碼,該一或多種程式設計語言包括諸如Smalltalk、C++或類似者的物件導向式程式設計語言,及諸如「C」程式設計語言的程序程式設計語言或類似程式設計語言。電腦可讀程式指令可完全在使用者之電腦上、部分在使用者之電腦上、作為獨立套裝軟體、部分在使用者之電腦上且部分在遠端電腦上或完全在遠端電腦或伺服器上而執行。在後種情境中,遠端電腦可經由任何類型之網路(包括區域網路(LAN)或廣域網路(WAN))連接至使用者之電腦,或可(例如,經由使用網際網路服務提供者的網際網路)連接至外部電腦。在一些實施例中,電子電路(包括,例如,可程式化邏輯電路、場可程式化閘陣列(FPGA)或可程式化邏輯陣列(PLA))可藉由利用電腦可讀程式指令之狀態資訊來個人化電子電路而執行電腦可讀程式指令,以便執行本發明之態樣。
本文中參考根據本發明之實施例的方法、設備(系統)及電腦程式產品之流程圖說明及/或方塊圖來描述本發明之態樣。應理解,可藉由電腦可讀程式指令來實施流程圖說明及/或方塊圖之每一區塊,及流程圖說明及/或方塊圖中之區塊之組合。
可將此等電腦可讀程式指令提供至通用電腦、專用電腦或其他可程式化資料處理設備之處理器以製造機器,以使得經由電腦或其他可程式化資料處理裝置之處理器執行的指令創建用於實施流程圖及/或方塊圖區塊中所指定之功能/動作的構件。此等電腦可讀程式指令亦可儲存於電腦可讀儲存媒體中,其可命令電腦、可程式化資料處理設備及/或其他裝置以特定方式作用,使得其中儲存有指令之電腦可讀儲存媒體包含製品,該製品包括實施流程圖及/或方塊圖區塊中所指定之功能/動作的態樣的指令。
電腦可讀程式指令亦可加載至電腦、其他可程式資料處理設備或其他裝置上,以使一系列操作步驟在電腦、其他可程式化設備或其他裝置上執行以產生電腦實施處理程序,使得在電腦、其他可程式化設備或其他裝置上執行的指令實施流程圖及/或方塊圖區塊中所指定之功能/動作。
圖式中之流程圖及方塊圖說明根據本發明之各種實施例的系統、方法及電腦程式產品之可能實施的架構、功能性及操作。就此而言,流程圖或方塊圖中之每一區塊可表示模組、區段或指令之部分,其包含用於實施所指定之邏輯功能的一或多個可執行指令。在一些替代實施中,區塊中所指出之功能可不按圖式中所指出之次序發生。舉例而言,視所涉及之功能性而定,連續展示的兩個區塊實際上可實質上同時執行,或該等區塊有時可以相反次序執行。亦應注意,方塊圖及/或流程圖說明之每一區塊,及方塊圖及/或流程圖說明中之區塊的組合可藉由執行指定功能或動作或執行專用硬體及電腦指令之組合的基於硬體之專用系統來實施。
已出於說明目的呈現出本發明之各種實施例的描述,但該等描述並不意欲為詳盡的或限於所揭示之實施例。在不脫離所描述實施例之範疇及精神的情況下,許多修改及變化對一般熟習此項技術者而言將顯而易見。 本文中所使用的術語經選擇以最佳地解釋實施例之原理、實際應用或對市場中發現的技術之技術改良,或使得其他一般熟習此項技術者能夠理解本文中所揭示之實施例。

Claims (20)

  1. 一種電腦實施方法,其包含:藉由一處理器的一基於串流之索引加速器預測器來判定一指令位址與結束從包含該指令位元址之記憶體提取之多個指令的一指令串流之一已選取分支之間的一預測串流長度,該基於串流之索引加速器預測器包含多行分支預測數據,該基於串流之索引加速器預測器追蹤對應於在該指令串流中接收的一第一指令之指令位元址以及以作為結束該指令串流之已選取分支之退出點之一個或多個行之索引;搜尋該處理器的一階層式非同步預看分支預測器之一第一級分支預測器,以找出由該指令位址及該預測串流長度定界的一搜尋範圍中之一或多個項目中的一分支預測,其中該第一級分支預測器經組態以響應於搜尋該第一級分支預測器提供作為分支預測之預測目標位址;及基於未能在該搜尋範圍中定位該分支預測而觸發對該階層式非同步預看分支預測器之一第二級分支預測器的一搜尋,其中該第二級分支預測器包含比該第一級分支預測器更大容量以儲存該項目。
  2. 如請求項1之電腦實施方法,其中該第一級分支預測器包含一分支目標緩衝器及一分支目標緩衝器預載入表。
  3. 如請求項2之電腦實施方法,其進一步包含基於對該第二級分支預測器的該搜尋而將複數個分支自該第二級分支預測器傳送至該分支目標緩衝器或該分支目標緩衝器預載入表。
  4. 如請求項1之電腦實施方法,其中在到達一預設搜尋深度之前,執行觸發對該階層式非同步預看分支預測器之該第二級分支預測器的該搜尋。
  5. 如請求項1之電腦實施方法,其中對該階層式非同步預看分支預測器之該第二級分支預測器的該搜尋經擴展超出一預設搜尋深度。
  6. 如請求項1之電腦實施方法,其進一步包含:基於該基於串流之索引加速器預測器正確預測該預測串流長度且使用該正確預測的一次數而更新一準確度計數器。
  7. 如請求項6之電腦實施方法,其進一步包含:基於判定該準確度計數器高於一準確度臨限值而啟用該搜尋範圍之使用;及基於判定該準確度計數器低於該準確度臨限值而停用該搜尋範圍之使用且啟用一預設搜尋深度之使用。
  8. 一種系統,其包含:一處理器的一基於串流之索引加速器預測器,其可操作以判定一指令位址與結束從包含該指令位元址之記憶體提取之多個指令的一指令串流之一已選取分支之間的一預測串流長度,該基於串流之索引加速器預測器包含多行分支預測數據,該基於串流之索引加速器預測器追蹤對應於在該指令串流中接收的一第一指令之指令位元址以及以作為結束該指令串流之已選取分支之退出點之一個或多個行之索引;及該處理器的一階層式非同步預看分支預測器,其包含一第一級分支預測器及一第二級分支預測器,該階層式非同步預看分支預測器可操作以:搜尋該第一級分支預測器,以找出由該指令位址及該預測串流長度定界的一搜尋範圍中之一或多個項目中的一分支預測,其中該第一級分支預測器經組態以響應於搜尋該第一級分支預測器提供作為分支預測之預測目標位址;及基於未能在該搜尋範圍中定位該分支預測而觸發對該第二級分支預測器的一搜尋,其中該第二級分支預測器包含比該第一級分支預測器更大容量以儲存該項目。
  9. 如請求項8之系統,其中該第一級分支預測器包含一分支目標緩衝器及一分支目標緩衝器預載入表。
  10. 如請求項9之系統,其中該階層式非同步預看分支預測器可操作以基於對該第二級分支預測器的該搜尋而將複數個分支自該第二級分支預測器傳送至該分支目標緩衝器或該分支目標緩衝器預載入表。
  11. 如請求項8之系統,其中在到達一預設搜尋深度之前,觸發對該階層式非同步預看分支預測器之該第二級分支預測器的該搜尋。
  12. 如請求項8之系統,其中對該階層式非同步預看分支預測器之該第二級分支預測器的該搜尋經擴展超出一預設搜尋深度。
  13. 如請求項8之系統,其中基於該基於串流之索引加速器預測器正確預測該預測串流長度且使用該正確預測的一次數而更新一準確度計數器。
  14. 如請求項13之系統,其中基於判定該準確度計數器高於一準確度臨限值而啟用該搜尋範圍之使用,且基於判定該準確度計數器低於該準確度臨限值而停用該搜尋範圍之使用且啟用一預設搜尋深度之使用。
  15. 一種電腦程式產品,其包含實施有程式指令的一電腦可讀儲存媒體,其中該電腦可讀儲存媒體本質上並非一暫時性信號,該等程式指令可由一處理器執行以使得該處理器執行一方法,該方法包含:藉由該處理器的一基於串流之索引加速器預測器來判定一指令位址與結束從包含該指令位元址之記憶體提取之多個指令的一指令串流之一已選取分支之間的一預測串流長度,該基於串流之索引加速器預測器包含多行分支預測數據,該基於串流之索引加速器預測器追蹤對應於在該指令串流中接收的一第一指令之指令位元址以及以作為結束該指令串流之已選取分支之退出點之一個或多個行之索引;搜尋該處理器的一階層式非同步預看分支預測器之一第一級分支預測器,以找出由該指令位址及該預測串流長度定界的一搜尋範圍中之一或多個項目中的一分支預測,其中該第一級分支預測器經組態以響應於搜尋該第一級分支預測器提供作為分支預測之預測目標位址;及基於未能在該搜尋範圍中定位該分支預測而觸發對該階層式非同步預看分支預測器之一第二級分支預測器的一搜尋,其中該第二級分支預測器包含比該第一級分支預測器更大容量以儲存該項目。
  16. 如請求項15之電腦程式產品,其中該第一級分支預測器包含一分支目標緩衝器及一分支目標緩衝器預載入表。
  17. 如請求項16之電腦程式產品,其中該等程式指令進一步使該處理器執行以下操作:基於對該第二級分支預測器的該搜尋而將複數個分支自該第二級分支預測器傳送至該分支目標緩衝器或該分支目標緩衝器預載入表。
  18. 如請求項15之電腦程式產品,其中在到達一預設搜尋深度之前,執行觸發對該階層式非同步預看分支預測器之該第二級分支預測器的該搜尋。
  19. 如請求項15之電腦程式產品,其中對該階層式非同步預看分支預測器之該第二級分支預測器的該搜尋經擴展超出一預設搜尋深度。
  20. 如請求項15之電腦程式產品,其中該等程式指令進一步使該處理器執行以下操作:基於該基於串流之索引加速器預測器正確預測該預測串流長度且使用該正確預測的一次數而更新一準確度計數器;基於判定該準確度計數器高於一準確度臨限值而啟用該搜尋範圍之使用;及基於判定該準確度計數器低於該準確度臨限值而停用該搜尋範圍之使用且啟用一預設搜尋深度之使用。
TW106138706A 2016-12-13 2017-11-09 用於使用串流長度預測之分支預測器搜尋資格之電腦程式產品、電腦實施方法及系統 TWI651648B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/376,847 US10394559B2 (en) 2016-12-13 2016-12-13 Branch predictor search qualification using stream length prediction
US15/376,847 2016-12-13

Publications (2)

Publication Number Publication Date
TW201823969A TW201823969A (zh) 2018-07-01
TWI651648B true TWI651648B (zh) 2019-02-21

Family

ID=60569917

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106138706A TWI651648B (zh) 2016-12-13 2017-11-09 用於使用串流長度預測之分支預測器搜尋資格之電腦程式產品、電腦實施方法及系統

Country Status (7)

Country Link
US (1) US10394559B2 (zh)
JP (1) JP7034159B2 (zh)
CN (1) CN109791494B (zh)
DE (1) DE112017005014B4 (zh)
GB (1) GB2571899B (zh)
TW (1) TWI651648B (zh)
WO (1) WO2018108574A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11550588B2 (en) * 2018-08-22 2023-01-10 Advanced Micro Devices, Inc. Branch target filtering based on memory region access count
US11614944B2 (en) * 2020-11-09 2023-03-28 Centaur Technology, Inc. Small branch predictor escape
US11928471B2 (en) 2021-08-19 2024-03-12 International Business Machines Corporation Metadata predictor
US11556474B1 (en) 2021-08-19 2023-01-17 International Business Machines Corporation Integrated semi-inclusive hierarchical metadata predictor
US11782919B2 (en) 2021-08-19 2023-10-10 International Business Machines Corporation Using metadata presence information to determine when to access a higher-level metadata table

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090217016A1 (en) * 2008-02-22 2009-08-27 International Business Machines Corporation System and method for search area confined branch prediction
TW201030606A (en) * 2008-11-05 2010-08-16 Intel Corp Optimizing performance of instructions based on sequence detection or information associated with the instructions
US20130339695A1 (en) * 2012-06-15 2013-12-19 International Business Machines Corporation Asynchronous lookahead second level branch target buffer

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5507028A (en) * 1992-03-30 1996-04-09 International Business Machines Corporation History based branch prediction accessed via a history based earlier instruction address
US5574871A (en) 1994-01-04 1996-11-12 Intel Corporation Method and apparatus for implementing a set-associative branch target buffer
US6076141A (en) * 1996-01-24 2000-06-13 Sun Microsytems, Inc. Look-up switch accelerator and method of operating same
US6092187A (en) 1997-09-19 2000-07-18 Mips Technologies, Inc. Instruction prediction based on filtering
US6185675B1 (en) * 1997-10-24 2001-02-06 Advanced Micro Devices, Inc. Basic block oriented trace cache utilizing a basic block sequence buffer to indicate program order of cached basic blocks
US6742111B2 (en) 1998-08-31 2004-05-25 Stmicroelectronics, Inc. Reservation stations to increase instruction level parallelism
US6263427B1 (en) 1998-09-04 2001-07-17 Rise Technology Company Branch prediction mechanism
US6339822B1 (en) * 1998-10-02 2002-01-15 Advanced Micro Devices, Inc. Using padded instructions in a block-oriented cache
US7082520B2 (en) 2002-05-09 2006-07-25 International Business Machines Corporation Branch prediction utilizing both a branch target buffer and a multiple target table
US8443176B2 (en) * 2008-02-25 2013-05-14 International Business Machines Corporation Method, system, and computer program product for reducing cache memory pollution
US9235419B2 (en) 2012-06-11 2016-01-12 International Business Machines Corporation Branch target buffer preload table
US9250912B2 (en) * 2012-06-12 2016-02-02 International Business Machines Corporation Fast index tree for accelerated branch prediction
US9280351B2 (en) 2012-06-15 2016-03-08 International Business Machines Corporation Second-level branch target buffer bulk transfer filtering
US9348599B2 (en) 2013-01-15 2016-05-24 International Business Machines Corporation Confidence threshold-based opposing branch path execution for branch prediction
JP6523274B2 (ja) 2013-10-25 2019-05-29 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated 分岐予測ユニット及びレベル1命令キャッシュにおける帯域幅の増加
US9563430B2 (en) 2014-03-19 2017-02-07 International Business Machines Corporation Dynamic thread sharing in branch prediction structures
US20170046159A1 (en) * 2015-08-14 2017-02-16 Qualcomm Incorporated Power efficient fetch adaptation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090217016A1 (en) * 2008-02-22 2009-08-27 International Business Machines Corporation System and method for search area confined branch prediction
TW201030606A (en) * 2008-11-05 2010-08-16 Intel Corp Optimizing performance of instructions based on sequence detection or information associated with the instructions
US20130339695A1 (en) * 2012-06-15 2013-12-19 International Business Machines Corporation Asynchronous lookahead second level branch target buffer

Also Published As

Publication number Publication date
CN109791494A (zh) 2019-05-21
GB201909974D0 (en) 2019-08-28
CN109791494B (zh) 2023-08-11
GB2571899A (en) 2019-09-11
WO2018108574A1 (en) 2018-06-21
GB2571899B (en) 2021-07-21
DE112017005014T5 (de) 2019-07-11
US20180165094A1 (en) 2018-06-14
DE112017005014B4 (de) 2023-11-23
TW201823969A (zh) 2018-07-01
JP2020501242A (ja) 2020-01-16
JP7034159B2 (ja) 2022-03-11
US10394559B2 (en) 2019-08-27

Similar Documents

Publication Publication Date Title
TWI651648B (zh) 用於使用串流長度預測之分支預測器搜尋資格之電腦程式產品、電腦實施方法及系統
CN108351777B (zh) 用于管理处理系统中的辅助分支预测的方法和系统
US9411598B2 (en) Semi-exclusive second-level branch target buffer
US9280351B2 (en) Second-level branch target buffer bulk transfer filtering
US9250912B2 (en) Fast index tree for accelerated branch prediction
KR101081674B1 (ko) 워킹 글로벌 히스토리 레지스터를 이용하기 위한 시스템 및 방법
US10795683B2 (en) Predicting indirect branches using problem branch filtering and pattern cache
BRPI0610926A2 (pt) método e equipamento para predizer instruções de ramificação
US11163573B2 (en) Hierarchical metadata predictor with periodic updates
US10423420B2 (en) Stream based branch prediction index accelerator for multiple stream exits
US11099849B2 (en) Method for reducing fetch cycles for return-type instructions
KR102635965B1 (ko) 마이크로 프로세서의 프론트 엔드 및 이를 이용한 컴퓨터 구현 방법
US10691460B2 (en) Pointer associated branch line jumps for accelerated line jumps
US8909907B2 (en) Reducing branch prediction latency using a branch target buffer with a most recently used column prediction
US20200364055A1 (en) Efficient load value prediction
US20160239305A1 (en) Branch target buffer column predictor
US10430195B2 (en) Stream based branch prediction index accelerator with power prediction
US9250909B2 (en) Fast index tree for accelerated branch prediction
US11182165B2 (en) Skip-over offset branch prediction
US11151054B2 (en) Speculative address translation requests pertaining to instruction cache misses