TWI768547B - 管線式電腦系統與指令處理方法 - Google Patents
管線式電腦系統與指令處理方法 Download PDFInfo
- Publication number
- TWI768547B TWI768547B TW109140343A TW109140343A TWI768547B TW I768547 B TWI768547 B TW I768547B TW 109140343 A TW109140343 A TW 109140343A TW 109140343 A TW109140343 A TW 109140343A TW I768547 B TWI768547 B TW I768547B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- address
- branch instruction
- branch
- predicted
- Prior art date
Links
- 238000003672 processing method Methods 0.000 title claims description 15
- 238000000034 method Methods 0.000 claims description 23
- 238000010586 diagram Methods 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3846—Speculative instruction execution using static prediction, e.g. branch taken strategy
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)
- Hardware Redundancy (AREA)
Abstract
管線式電腦系統包含處理器電路以及記憶體電路。處理器電路用以在執行一第一分支指令前根據該第一分支指令的一第一位址獲得該第一分支指令的一第一目標位址以及一第一預測指令的一第二位址,並在該第一分支指令的一預測結果為跳轉成立時依序預先取出該第一目標位址對應的一第一指令與該第一預測指令,其中該第一預測指令之執行順序次於該第一指令的執行順序。記憶體電路用以暫存該第一指令與該第一預測指令。
Description
本案是關於電腦系統,尤其是關於具有分支預測機制的管線式電腦系統及其指令處理方法。
指令管線化(instruction pipeline)可增加單位時間內被執行的指令數量。為了更進一步提高指令處理的效率,分支預測機制可用來預測分支指令(例如為跳轉指令、返回指令等等)的執行結果,以提前處理後續的指令。然而,當分支指令的預測結果為跳轉不成立(branch not-taken)時,現有的分支預測機制仍無法消除指令處理過程中的多數停頓(bubble)。
於一些實施例中,管線式電腦系統包含處理器電路以及記憶體電路。處理器電路用以在執行一第一分支指令前根據該第一分支指令的一第一位址獲得該第一分支指令的一第一目標位址以及一第一預測指令的一第二位址,並在該第一分支指令的一預測結果為跳轉成立時依序預先取出該第一目標位址對應的一第一指令與該第一預測指令,其中該第一預測指令之執行順序次
於該第一指令的執行順序。記憶體電路用以暫存該第一指令與該第一預測指令。
於一些實施例中,指令處理方法包含下列操作:在執行一第一分支指令前根據該第一分支指令的一第一位址獲得該第一分支指令的一第一目標位址以及一第一預測指令的一第二位址;以及在該第一分支指令的一預測結果為跳轉成立時依序預先取出該第一目標位址對應的一第一指令與該第一預測指令,其中該第一預測指令之執行順序次於該第一指令的執行順序。
有關本案的特徵、實作與功效,茲配合圖式作較佳實施例詳細說明如下。
100:管線式電腦系統
110:處理器電路
112:指令擷取電路
114:記憶體電路
120:主記憶體
130:輸入輸出裝置
200:指令處理方法
S210,S220:操作
1,2,2',3,4,4':指令
A,A',B,B',C,C',D,D':分支指令
1_IF:預先取出指令
2_IX:指令標籤比對
3_IB:指令緩衝
4_ID:指令解碼
5_IS:指令發送
6_OF:運算元取出
7_EX:執行
8_WB:寫回
T,T+1,T+2,T+3,T+4,T+5,T+6,T+7,T+8,T+9,T+10:期間
〔圖1〕為根據本案一些實施例繪製一種管線式電腦系統的示意圖;〔圖2〕為根據本案一些實施例繪製一種指令處理方法的流程圖;〔圖3A〕為根據本案一些實施例繪製圖1的管線式電腦系統依序執行多個指令的示意圖;〔圖3B〕為根據本案一些實施例繪製圖3A中多個指令的運行流程圖;〔圖4A〕為根據本案一些實施例繪製圖1的管線式電腦系統依序執行多個指令的示意圖;〔圖4B〕為根據本案一些實施例繪製圖3A中多個指令的運行流程圖;以及〔圖5〕為根據本案一些實施例繪製圖1的管線式電腦系統依序執行多個指令的示意圖。
本文所使用的所有詞彙具有其通常的意涵。上述之詞彙在普遍常用之字典中之定義,在本案的內容中包含任一於此討論的詞彙之使用例子僅為示例,不應限制到本案之範圍與意涵。同樣地,本案亦不僅以於此說明書所示出的各種實施例為限。
關於本文中所使用之『耦接』或『連接』,均可指二或多個元件相互直接作實體或電性接觸,或是相互間接作實體或電性接觸,亦可指二或多個元件相互操作或動作。如本文所用,用語『電路系統(circuitry)』可為由至少一電路(circuit)所形成的單一系統,且用語『電路』可為由至少一個電晶體與/或至少一個主被動元件按一定方式連接以處理訊號的裝置。
如本文所用,用語『與/或』包含了列出的關聯項目中的一個或多個的任何組合。在本文中,使用第一、第二與第三等等之詞彙,是用於描述並辨別各個元件。因此,在本文中的第一元件也可被稱為第二元件,而不脫離本案的本意。為易於理解,於各圖式中的類似元件將被指定為相同標號。
圖1為根據本案一些實施例繪製的一種管線式(pipeline)電腦系統100的示意圖。於一些實施例中,管線式電腦系統100可應用於一般電子產品,例如包含(但不限於)個人電腦、筆記型電腦、顯示卡、伺服器、平板電腦、智慧手機、電視、網路裝置等等。管線式電腦系統100包含處理器電路110、主記憶體120以及輸入輸出(input/output)裝置130。主記憶體120用以儲存指令與/或資料。I/O裝置130可接收(或輸出)指令(或資料)。
於一些實施例中,處理器電路110為管線式處理器電路,其可允許多個指令重疊運行。例如,處理器電路110可包含程式計數器電路(未示出)、指令記憶體(未示出)、至少一多工器電路(未示出)、至少一暫存器電路(未示出)以及至少一資料記憶體電路(未示出),其形成複數條資料路徑以平行處理多條指令。上述關於處理器電路110的資料路徑之設置方式用於示例,且本案並不以此為限。
於一些實施例中,處理器電路110的核心(core)部分包含指令擷取電路112,且處理器電路110更包含記憶體電路114。指令擷取電路112可用以決定分支指令的預測結果為跳轉成立(branch-taken)或跳轉不成立(branch-untaken),並依據預測結果自主記憶體120(或記憶體電路114)預先取出(prefetch)對應的指令。於一些實施例中,指令擷取電路112包含分支預測機制(未示出),其用來決定上述預測結果並儲存有一查找表(如後述的表l與表2)。於一些實施例中,該分支預測機制可根據先前指令執行的歷史記錄決定當前分支指令的預測結果,其中該歷史記錄可儲存為該查找表。於一些實施例中,該分支預測機制可執行全局分享(global-sharing,g-share)演算法,或執行具有標記幾何歷史長度的分支預測(tagged geometric history length branch prediction,TAGE)演算法,以決定分支指令的預測結果。關於上述的演算法種類用於示例,且本案並不以此為限。各種可用於分支預測的相關演算法皆為本案所涵蓋之範圍。關於上述分支預測以及預先取出的相關操作將於後述段落進行說明。
於一些實施例中,記憶體電路114可為暫存器,其用以暫存經指令擷取電路112預先取出的指令與/或資料。於一些實施例中,記憶體電路114可
為快取記憶體,其可包含完整的快取記憶體階層。例如,記憶體電路114可僅包含L1快取記憶體,或可包含L1快取記憶體與L2快取記憶體,或可包含L1快取記憶體、L2快取記憶體以及L3快取記憶體。上述關於記憶體電路114的種類用於示例,且本案並不以此為限。
圖2為根據本案一些實施例繪製一種指令處理方法200的流程圖。於一些實施例中,指令處理方法200可由(但不限於)圖1的處理器電路110執行。
於操作S210,在執行第一分支指令(例如為分支指令B)前根據第一分支指令的第一位址(例如為表1中的位址ADDRB)獲得第一分支指令的第一目標位址(例如為表1中的位址ADDR3)以及第一預測指令(例如為分支指令C)的第二位址(例如為表1中的位址ADDRC)。於操作S220,在第一分支指令的預測結果為跳轉成立時依序預先取出第一目標位址對應的第一指令與第一預測指令,其中第一預測指令之執行順序次於第一指令之執行順序。
上述多個操作僅為示例,並非限定需依照此示例中的順序執行。在不違背本案的各實施例的操作方式與範圍下,在指令處理方法200下的各種操作當可適當地增加、替換、省略。或者,在指令處理方法200下的一或多個操作可以是同時或部分同時執行。
為進一步說明指令處理方法200,參照圖3A與圖3B,圖3A為根據本案一些實施例繪製圖1的管線式電腦系統100依序執行多個指令的示意圖,且圖3B為根據本案一些實施例繪製圖3A中多個指令的運行流程圖。
如圖3A所示,處理器電路110由上而下依序執行一連串的多個指令1、A、2、B、3、C、4以及D。於此例中,假設指令A、指令B、指令C以
及指令D為分支指令,指令2為指令A的目標位址所對應之指令,指令3為指令B的目標位址所對應之指令、且指令4為指令C的目標位址所對應之指令。於一些實施例中,分支指令可為(但不限於)條件式分支(conditional branch)指令與/或無條件分支(unconditional branch)指令。
在上表1中,分支指令的位址(即第一位址)代表此分支指令於主記憶體120(或記憶體電路114)的儲存位址。分支指令的目標位址(即第一目標位址)為當此分支指令的預測結果為跳轉成立時欲執行的指令之儲存位址。次一預測指令的執行順序次於該目標位址所對應的指令之執行順序。例如,目標位址ADDR2所對應的指令為指令2,且次一預測指令為在指令2後被執行的指令B。如此,處理器電路110在執行分支指令A時,指令擷取電路112可根據分支指令A的儲存位址ADDRA搜尋查找表,以獲得目標位址ADDR2以及次一預測指令(即分支指令B)的位址ADDRB。換言之,分支指令的位址相當於查找表的標籤(tag)。若查找表中的標籤有被擊中(hit),代表處理器電路110正在執行對應此標籤的分支指令,且處理器電路110可獲得相對應的目標位址以及次一
預測指令的儲存位址(即第二位址)。如圖3A所示,指令擷取電路112可根據分支指令的位址預測(如虛線所示)目標位址以及次一預測指令的位址。
於不同實施例中,在上表1中之次一預測指令的位址可為一偏移值或是一絕對位址。若該次一預測指令的位址為偏移值,處理器電路110可相加對應的目標位址與對應的相對偏移值以決定次一預測指令的實際儲存位址。
於一些實施例中,如圖3B所示,管線式電腦系統100的指令處理過程可分為多級,其依序包含:預先取出指令(標示為1_IF)、指令標籤比對(標示為2_IX)、指令緩衝(3_IB)、指令解碼(標示為4_ID)、指令發送(標示為5_IS)、運算元取出(標示為6_OF)、執行(標示為7_EX)以及寫回(標示為8_WB)。上述關於指令處理過程的多個級數用於示例,且本案並不以此為限。於一些實施例中,在處理器電路110於第1級(即1_IF)處理分支指令(例如為分支指令B)前,指令擷取電路112可開始決定此分支指令的預測結果,並根據此分支指令的位址搜尋查找表(例如為上表1),以獲得此分支指令的目標位址以及次一預測指令的位址。若預測結果為跳轉成立,處理器電路110可於第3級(即3_IB)預先取出目標位址對應的指令(例如為指令3)。接著,處理器電路110可於第4級(即4_ID)預先取出次一預測指令(例如為分支指令C)。應當理解,依據實際硬體架構不同,處理器電路110(與/或指令擷取電路112)可於更前級或更後級預先取出目標位址對應的指令以及次一預測指令。
詳細而言,於期間T時,處理器電路110開始處理指令1。於期間T+1時,處理器電路110開始處理分支指令A,且指令擷取電路112開始決定分支指令A的預測結果。同時,指令擷取電路112根據位址ADDRA讀取查找表,
以獲得目標位址ADDR2以及次一預測指令的位址ADDRB(即圖2的操作S210)。
於期間T+2時,由於尚未確認分支指令A是否跳轉成立,處理器電路110開始處理次於分支指令A的下一指令(例如為圖5的指令A')。於此例中,分支指令A的預測結果為跳轉成立,故處理器電路110沖刷(flush)該下一指令。於此條件下,會於期間T+2產生一次停頓(bubble)。
於期間T+3,指令擷取電路112確認分支指令A的預測結果為跳轉成立(標示為3_IB/direct2)。響應於此預測結果,處理器電路110可根據目標位址ADDR2預先取出指令2(即圖2的操作S220)。同時,若位址ADDRB所對應的次一預測指令(即指令B)為分支指令,指令擷取電路112可開始決定分支指令B的預測結果,並根據分支指令B的位址ADDRB讀取查找表,以獲得目標位址ADDR3以及次一預測指令(即分支指令C)的位址ADDRC(即圖2的操作S210)。
於期間T+4,處理器電路110開始處理分支指令B(即圖2的操作S220)。換言之,分支指令B的預測結果可在此分支指令B被執行(即期間T+4)之前一期間(即期間T+3)開始決定。
於期間T+5,指令擷取電路112確認分支指令B的預測結果為跳轉成立(標示為3_IB/direct3)。響應於此預測結果,處理器電路110可根據目標位址ADDR3開始處理(即預先取出)指令3(即圖2的操作S220)。換言之,在執行指令B後,處理器電路110可在無時間延遲(即不造成停頓)下預先取出指令3。同時,由於位址ADDRC所對應的次一預測指令為分支指令C,指令擷取電路112可開始決定分支指令C的預測結果,並根據位址ADDRC讀取查找
表,以獲得目標位址ADDR4以及次一預測指令(即分支指令D)的位址ADDRD(即圖2的操作S210)。於期間T+6,處理器電路110預先取出對應於位址ADDRC的分支指令C,以開始處理分支指令C(即圖2的操作S220)。換言之,在期間T+4至期間T+6的運作過程中,處理器電路110可在未造成停頓下依序執行分支指令B、指令2以及分支指令C。依此類推,在期間T+7至期間T+10,若後續的分支指令C與分支指令D的預測結果皆為跳轉成立,指令處理過程中的多個停頓將被消除。
於一些相關技術中,分支預測機制僅根據分支指令的位址預先取出跳轉成立時的目標位址。於上述技術中,即便分支指令的預測結果為跳轉成立,在執行目標位址所對應的指令前仍會產生一次停頓。相對於上述技術,藉由上表1的設置方式,在指令處理過程中之多數停頓可被消除。如此,可改善處理器電路110的指令處理效率。
參照圖4A與圖4B,圖4A為根據本案一些實施例繪製圖1的管線式電腦系統100依序執行多個指令的示意圖,且圖4B為根據本案一些實施例繪製圖4A中多個指令的運行流程圖。
於此例中,處理指令1、分支指令A、指令2、分支指令B以及指令3的多個操作相同於圖3B,故於此不再贅述。於期間T+5,指令擷取電路112開始決定分支指令C的預測結果,並根據分支指令C的位址ADDRC讀取查找表,以獲得目標位址ADDR4以及次一預測指令的位址ADDRD(即圖2的操作S210)。於期間T+6,處理器電路110開始處理分支指令C。同時,指令擷取電路112開始決定分支指令C'的預測結果,並根據分支指令C'的位址ADDRC'讀取查找表,以獲得目標位址ADDR4'以及次一預測指令(即分支指令D')的位址
ADDRD'(即圖2的操作S210)。應當理解,分支指令C'的執行順序次於分支指令C的執行順序,且分支指令D'的執行順序次於目標位址ADDR4'對應的指令4'之執行順序。於期間T+7,指令擷取電路112確認分支指令C的預測結果為跳轉不成立。因此,處理器電路110於期間T+7開始處理(即循序預先取出)分支指令C'。於期間T+8,指令擷取電路112確認分支指令C'的預測結果為跳轉成立(標示為3_IB/direct4'),並根據分支指令D'的位址ADDRD'搜尋查找表,以獲得對應的目標位址以及次一預測指令(未示出)的位址(即圖2的操作S210)。同時,指令擷取電路112可於期間T+8開始決定分支指令D'的預測結果,且處理器電路110可於期間T+8預先取出指令4',並於期間T+9預先取出分支指令D'。換言之,在此例中,在分支指令C為預測結果為跳轉不成立的條件下,處理器電路110可在未造成停頓下依序執行分支指令C'、指令4'以及分支指令D'。
於前述的相關技術中,若遇到分支指令的預測指令為跳轉不成立時,仍會產生至少一個停頓。於另一些相關技術中,分支預測機制是根據分支指令的目標位址獲得次一分支指令(若預測結果為跳轉成立)之目標位址。於上述技術中,若預測結果為跳轉不成立時,將產生數個(例如為4個)停頓。相對於上述相關技術,藉由上表1的設置方式,在分支指令的預測結果為跳轉不成立時,處理器電路110可在未產生停頓下執行多個指令。
參照圖5,圖5為根據本案一些實施例繪製圖1的管線式電腦系統100依序執行多個指令的示意圖。於一些實施例中,處理器電路110更用以根據分支指令(例如為分支指令A)的位址獲得另一預測指令(例如為分支指令A')的位址,並用以在分支指令A的預測結果為跳轉不成立時開始處理該另一
預測指令A'。換言之,相較於圖3A或圖4A,指令擷取電路112可根據分支指令的位址預測(如虛線所示)目標位址、次一預測指令(若跳轉成立)的位址以及次一預測指令(若跳轉不成立)的位址。
換言之,於此例中,查找表(即上表2)更用以紀錄分支指令的位址、分支指令的目標位址、次一預測指令(若預測結果為跳轉成立)的位址以及次一預測指令(若預測結果為跳轉不成立)的位址之間的對應關係。
例如,當處理器電路110開始處理分支指令A前,指令擷取電路112可根據分支指令A的位址ADDRA開始決定分支指令A的預測結果,並自表2獲得對應的目標位址ADDR2、次一預測指令B(若預測結果為跳轉成立)的位址ADDRB以及次一預測指令A'(若預測結果為跳轉不成立)的位址ADDRA'。依此類推,若分支指令A的預測結果為跳轉不成立,處理器電路110(與指令擷取電路112)可根據位址ADDRA'獲得分支指令A'的目標位址ADDR2'、次一預測指令(若預測結果為跳轉成立)的位址(未示出)以及次一預測指令(若預測
結果為跳轉不成立)的位址(未示出)。如此一來,若預測結果為跳轉不成立,處理器電路110(與指令擷取電路112)可開始處理(即預先取出)對應的次一預測指令,以消除更多的停頓。
綜上所述,藉由本案一些實施例中之管線式電腦系統與指令處理方法可有效的消除指令處理過程中的停頓,以增進整體指令處理效率。
雖然本案之實施例如上所述,然而該些實施例並非用來限定本案,本技術領域具有通常知識者可依據本案之明示或隱含之內容對本案之技術特徵施以變化,凡此種種變化均可能屬於本案所尋求之專利保護範疇,換言之,本案之專利保護範圍須視本說明書之申請專利範圍所界定者為準。
100:管線式電腦系統
110:處理器電路
112:指令擷取電路
114:記憶體電路
120:主記憶體
130:輸入輸出裝置
Claims (10)
- 一種管線式電腦系統,包含:一處理器電路,用以在執行一第一分支指令前根據該第一分支指令的一第一位址搜尋一查找表以獲得該第一分支指令的一第一目標位址以及一第一預測指令的一第二位址,並在該第一分支指令的一預測結果為跳轉成立時依序預先取出該第一目標位址對應的一第一指令與該第一預測指令,其中該第一預測指令之執行順序次於該第一指令的執行順序,且該查找表用以紀錄該第一位址、該第一目標位址以及該第二位址之間的一對應關係;以及一記憶體電路,用以暫存該第一指令與該第一預測指令。
- 如請求項1之管線式電腦系統,其中該處理器電路用以根據該第一位址搜尋該查找表以獲得一偏移值,並相加該第一目標位址與該偏移值以決定該第二位址。
- 如請求項1之管線式電腦系統,其中該處理器電路更用以根據一第二分支指令的一第三位址獲得該第二分支指令的一第二目標位址以及一第二預測指令的一第四位址,其中該第二分支指令之執行順序次於該第一分支指令之執行順序,且若該預測結果為跳轉不成立,該處理器電路更用以開始處理該第二分支指令。
- 如請求項1之管線式電腦系統,其中該第一分支指令的該預測結果是在該第一分支指令被執行的前一期間開始決定。
- 如請求項1之管線式電腦系統,其中該處理器電路更用以根據該第一位址獲得一第二預測指令的一第三位址,並用以在該預測結果為跳轉不成立時開始處理該第二預測指令。
- 如請求項5之管線式電腦系統,其中該處理器電路用以根據該第一位址搜尋該查找表以獲得該第一目標位址、該第二位址以及該第三位址,且該查找表更用以紀錄該第一位址、該第一目標位址、該第二位址以及該第三位址之間的一對應關係。
- 一種指令處理方法,包含:在執行一第一分支指令前根據該第一分支指令的一第一位址搜尋一查找表以獲得該第一分支指令的一第一目標位址以及一第一預測指令的一第二位址,其中該查找表用以紀錄該第一位址、該第一目標位址以及該第二位址之間的一對應關係;以及在該第一分支指令的一預測結果為跳轉成立時依序預先取出該第一目標位址對應的一第一指令與該第一預測指令,其中該第一預測指令之執行順序次於該第一指令的執行順序。
- 如請求項7之指令處理方法,更包含:根據一第二分支指令的一第三位址獲得該第二分支指令的一第二目標位址以及一第二預測指令的一第四位址,其中該第二分支指令之執行順序次於該第一分支指令之執行順序;以及若該預測結果為跳轉不成立,開始處理該第二分支指令。
- 如請求項8之指令處理方法,其中該第二預測指令的執行順序次於該第二目標位址所對應之一指令的執行順序。
- 如請求項7之指令處理方法,更包含:根據該第一位址獲得一第二預測指令的一第三位址;以及在該預測結果為跳轉不成立時開始處理該第二預測指令。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109140343A TWI768547B (zh) | 2020-11-18 | 2020-11-18 | 管線式電腦系統與指令處理方法 |
US17/412,296 US20220156079A1 (en) | 2020-11-18 | 2021-08-26 | Pipeline computer system and instruction processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109140343A TWI768547B (zh) | 2020-11-18 | 2020-11-18 | 管線式電腦系統與指令處理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202221499A TW202221499A (zh) | 2022-06-01 |
TWI768547B true TWI768547B (zh) | 2022-06-21 |
Family
ID=81587686
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109140343A TWI768547B (zh) | 2020-11-18 | 2020-11-18 | 管線式電腦系統與指令處理方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20220156079A1 (zh) |
TW (1) | TWI768547B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11848980B2 (en) * | 2020-07-09 | 2023-12-19 | Boray Data Technology Co. Ltd. | Distributed pipeline configuration in a distributed computing system |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200636584A (en) * | 2005-04-04 | 2006-10-16 | Faraday Tech Corp | Branch instruction prediction and skipping using addresses of precedent instructions |
CN101176060A (zh) * | 2005-03-23 | 2008-05-07 | 高通股份有限公司 | 每索引存储两个或更多分支目标地址的分支目标地址高速缓冲存储器 |
US20090276611A1 (en) * | 2008-05-05 | 2009-11-05 | Terrence Matthew Potter | Ram Block Branch History Table in a Global History Branch Prediction System |
US20150046691A1 (en) * | 2013-08-12 | 2015-02-12 | International Business Machines Corporation | Global branch prediction using branch and fetch group history |
TW201737068A (zh) * | 2016-03-31 | 2017-10-16 | 高通公司 | 在基於處理器系統中基於負載路徑歷史使用位址預測表以提供負載位址預測 |
US20200012497A1 (en) * | 2018-07-09 | 2020-01-09 | Advanced Micro Devices, Inc. | Multiple-table branch target buffer |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2596712B2 (ja) * | 1993-07-01 | 1997-04-02 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 近接した分岐命令を含む命令の実行を管理するシステム及び方法 |
US6256784B1 (en) * | 1998-08-14 | 2001-07-03 | Ati International Srl | Interpreter with reduced memory access and improved jump-through-register handling |
US6651162B1 (en) * | 1999-11-04 | 2003-11-18 | International Business Machines Corporation | Recursively accessing a branch target address cache using a target address previously accessed from the branch target address cache |
US7234046B2 (en) * | 2004-12-01 | 2007-06-19 | Faraday Technology Corp. | Branch prediction using precedent instruction address of relative offset determined based on branch type and enabling skipping |
US20060224871A1 (en) * | 2005-03-31 | 2006-10-05 | Texas Instruments Incorporated | Wide branch target buffer |
US20120311308A1 (en) * | 2011-06-01 | 2012-12-06 | Polychronis Xekalakis | Branch Predictor with Jump Ahead Logic to Jump Over Portions of Program Code Lacking Branches |
US9135011B2 (en) * | 2012-04-30 | 2015-09-15 | The Regents Of The University Of Michigan | Next branch table for use with a branch predictor |
US10241557B2 (en) * | 2013-12-12 | 2019-03-26 | Apple Inc. | Reducing power consumption in a processor |
US11182166B2 (en) * | 2019-05-23 | 2021-11-23 | Samsung Electronics Co., Ltd. | Branch prediction throughput by skipping over cachelines without branches |
CN111459549B (zh) * | 2020-04-07 | 2022-11-01 | 上海兆芯集成电路有限公司 | 具有高度领先分支预测器的微处理器 |
US11403103B2 (en) * | 2020-04-14 | 2022-08-02 | Shanghai Zhaoxin Semiconductor Co., Ltd. | Microprocessor with multi-step ahead branch predictor and having a fetch-target queue between the branch predictor and instruction cache |
-
2020
- 2020-11-18 TW TW109140343A patent/TWI768547B/zh active
-
2021
- 2021-08-26 US US17/412,296 patent/US20220156079A1/en not_active Abandoned
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101176060A (zh) * | 2005-03-23 | 2008-05-07 | 高通股份有限公司 | 每索引存储两个或更多分支目标地址的分支目标地址高速缓冲存储器 |
TW200636584A (en) * | 2005-04-04 | 2006-10-16 | Faraday Tech Corp | Branch instruction prediction and skipping using addresses of precedent instructions |
US20090276611A1 (en) * | 2008-05-05 | 2009-11-05 | Terrence Matthew Potter | Ram Block Branch History Table in a Global History Branch Prediction System |
US20150046691A1 (en) * | 2013-08-12 | 2015-02-12 | International Business Machines Corporation | Global branch prediction using branch and fetch group history |
TW201737068A (zh) * | 2016-03-31 | 2017-10-16 | 高通公司 | 在基於處理器系統中基於負載路徑歷史使用位址預測表以提供負載位址預測 |
US20200012497A1 (en) * | 2018-07-09 | 2020-01-09 | Advanced Micro Devices, Inc. | Multiple-table branch target buffer |
Also Published As
Publication number | Publication date |
---|---|
TW202221499A (zh) | 2022-06-01 |
US20220156079A1 (en) | 2022-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5410281B2 (ja) | 非シーケンシャル命令アドレスをプリフェッチするための方法および装置 | |
JP5313279B2 (ja) | 非アラインドメモリアクセス予測 | |
US6178498B1 (en) | Storing predicted branch target address in different storage according to importance hint in branch prediction instruction | |
US7444501B2 (en) | Methods and apparatus for recognizing a subroutine call | |
US7769983B2 (en) | Caching instructions for a multiple-state processor | |
KR20070108939A (ko) | 포워드 룩킹 브렌치 타겟 어드레스 캐싱 | |
KR101016541B1 (ko) | 슬라이딩―윈도우 블록-기반 브랜치 타깃 어드레스 캐시 | |
JP2009536770A (ja) | ブロックに基づく分岐先アドレスキャッシュ | |
JP2006520964A (ja) | 分岐ターゲットに基づいて分岐予測をするための方法および装置 | |
TWI397816B (zh) | 減少在分支目標位址快取記憶體搜尋的方法與裝置 | |
US8943301B2 (en) | Storing branch information in an address table of a processor | |
TWI768547B (zh) | 管線式電腦系統與指令處理方法 | |
US7346737B2 (en) | Cache system having branch target address cache | |
US20040225866A1 (en) | Branch prediction in a data processing system | |
CN114546494A (zh) | 管线式电脑系统与指令处理方法 | |
US6219784B1 (en) | Processor with N adders for parallel target addresses calculation | |
US11151054B2 (en) | Speculative address translation requests pertaining to instruction cache misses | |
US7343481B2 (en) | Branch prediction in a data processing system utilizing a cache of previous static predictions | |
KR20080000944A (ko) | 파이프라인 구조를 갖는 프로세서 및 그 제어방법 |