TWI229815B - Apparatus and method for target address replacement in speculative branch target address cache - Google Patents
Apparatus and method for target address replacement in speculative branch target address cache Download PDFInfo
- Publication number
- TWI229815B TWI229815B TW090132650A TW90132650A TWI229815B TW I229815 B TWI229815 B TW I229815B TW 090132650 A TW090132650 A TW 090132650A TW 90132650 A TW90132650 A TW 90132650A TW I229815 B TWI229815 B TW I229815B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- branch
- item
- btac
- address
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 230000015654 memory Effects 0.000 claims description 164
- 238000000605 extraction Methods 0.000 claims description 42
- 230000002079 cooperative effect Effects 0.000 claims description 35
- 230000009471 action Effects 0.000 claims description 22
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 238000006073 displacement reaction Methods 0.000 claims description 4
- 238000007689 inspection Methods 0.000 claims 1
- 230000003442 weekly effect Effects 0.000 claims 1
- 239000000872 buffer Substances 0.000 description 35
- 238000010586 diagram Methods 0.000 description 27
- 230000008859 change Effects 0.000 description 13
- 230000000875 corresponding effect Effects 0.000 description 13
- 230000004044 response Effects 0.000 description 9
- 230000008901 benefit Effects 0.000 description 8
- 230000009977 dual effect Effects 0.000 description 7
- 238000013519 translation Methods 0.000 description 7
- 238000012937 correction Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 5
- 101100074291 Gallus gallus LDB1 gene Proteins 0.000 description 4
- 238000009434 installation Methods 0.000 description 4
- 239000003550 marker Substances 0.000 description 4
- 201000004071 non-specific interstitial pneumonia Diseases 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000018199 S phase Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 241000219112 Cucumis Species 0.000 description 2
- 235000015510 Cucumis melo subsp melo Nutrition 0.000 description 2
- 229910001219 R-phase Inorganic materials 0.000 description 2
- FJJCIZWZNKZHII-UHFFFAOYSA-N [4,6-bis(cyanoamino)-1,3,5-triazin-2-yl]cyanamide Chemical compound N#CNC1=NC(NC#N)=NC(NC#N)=N1 FJJCIZWZNKZHII-UHFFFAOYSA-N 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000009191 jumping Effects 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 102100034033 Alpha-adducin Human genes 0.000 description 1
- 101000799076 Homo sapiens Alpha-adducin Proteins 0.000 description 1
- 101000629598 Rattus norvegicus Sterol regulatory element-binding protein 1 Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 235000013405 beer Nutrition 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 239000000295 fuel oil Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 235000012054 meals Nutrition 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 239000008267 milk Substances 0.000 description 1
- 210000004080 milk Anatomy 0.000 description 1
- 235000013336 milk Nutrition 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 238000009738 saturating Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000001356 surgical procedure Methods 0.000 description 1
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
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)
Description
1229815 A7 --------B7 五、發明說明(ί ) 相關申請案的交互參照 [0001]本申請餘關於下觸美國專财請案,且有相 同的申請日射請人。藉完整地參照這每個㈣案了可配 合任何目的將养納入本申諸奉中: Docket # 專利名稱 .~ CNTR:2021 ' 假想分支目標位址換敗記悴偫 ~~ CNTR:2022 * 用於_與更正錯誤的假想分支目標位址 快取記憶體分支之裝置、系統及方法 CNTR:2023 假想混合分支方向預測裝置 ~ CNTR:2050 雙呼叫/返回堆疊分支預測系統 ~^ CNTR:2052 附有由第二預測裝置依據分支指令類ϋ 行之選擇性覆蓋的假想分支目標位址快取 記憶體 CNTR:2062 依據指令快取記憶體之快取線選取儲存於 一假想分支目標位址快取記憶體之多個目 標位址其中之一的裝置及方法 ^___一__________裝___ (請先閱讀背面之注意事項寫本頁) 線· 經濟部智慧財產局員工消費合作社印製 (一)發明技術領域: [0002] 本發明係關於微處理器(microprocessor)之分支 預測(branch prediction)的技術領域,尤指分支目標位址 (branch target address)的快取技術。 (二)發明技術背景: [0003] 電腦指令一般都儲存於記憶體内可定址之相連位 2 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 1229815 A7 B7 五、發明說明(>〇 經 濟 部 智 慧 財 產 局 員 工 消 費 合 作 社 印 製 置。中央處理單元(Central Processing Unit,CPU)或處理 器由相連的記憶體位置提取這些指令,並加以執行。Cpu 從記憶體每提取一個指令,其内的程式計數器(pr〇gramcounter,簡稱PC)或指令指位器(instructionpointer,簡稱 IP)就會遞增,使其内含序列(sequence)中下個指令的位 址’此即為T個循序指令指標(next sequential instruction pointer,簡稱NSIP)。指令的提取、程式計數器的遞增以 及指令的執行便藉由記憶體呈線性持續進行,直到遇到程 式控制指令(program control instruction)為止。 [0004] 程式控制指令也稱為分支指令(branch instruction),在執行時會改變程式計數器内的位址,並改 變控制的流程。換言之,分支指令指定了改變程式計數器 内容的條件。因執行一分支指令使程式計數器的值改變, 會導致指令執行順序的中斷。這是數位電腦的一項重要特 徵’因為它提供對程式執行流程的控制,以及分支至程式 之不同部分的能力。程式控制指令的例子包括跳躍 (jump)、條件跳躍(conditi〇nal jump)、呼叫(call)以 及返回(return)。 [0005] 跳躍指令使cpu無條件地將程式計數器的内容 改變至一特定值,這個值就是程式要繼續執行的指令所在 之目標位址。條件跳躍指令使CPU去測試一狀態暫存器 (statusregister)的内容,或者可能比較兩個值,而後基於 測試或比較的結果,不是繼續循序執行就是跳躍至一新位 址,稱為目標位址。呼叫指令使CPU無條件地跳躍至一新 (請先閱讀背面之注意事項^^寫本頁) 寫太 訂: •線·
1229815 A7 B7 五、發明說明( 目標位址’而且儲存程式計數器的值以使cpu可返回至先 前離開的程式位置’回指令使CPU去棘程式計數器於 前次呼叫齡執行時所存之值,並使程歧㈣回至賴 取的指令位址。 [〇〇〇6]對早期的微處理器而言,程式控制指令的執行並 不會造成處kji麟的賴,因為這些微處理^被設計為 -次只執行-健令。如果所執行的指令是程式控制指 令,在執行完畢之前,微處理器會知道它是否要分支,而 如果是的話,它會知道分支的目標位址為何。因此,不論 下個指令是循序的,或是分支的結果,皆會被提取和執行。 [0007] 現代的微處理器則非如此單純。相反地,對現代 的微處理器來說,在微處理器的不同區塊或管線階段 (pipeline stage )内同時處理數個指令乃很平常的事。 Hennessy 與 Patterson 將管線化(pipeiining)定義為「一種 多個指令得以重疊執行的實作技術。」(引述自c〇mputer ArchitecturejA Quantitative Approach,2nd edition,by John L· Hennessy and David A. Patterson » Morgan Kaufmann Publishers , San Francisco,CA,1996)作者接著對管線化 做了下列精彩的說明: [0008] 「一個管線就像是條裝配線。在汽車的裝配線上, 有許多步驟,每個步驟對汽車的製造都有所貢獻。每個步 驟與其他步驟同時並行,然而是在不同的汽車上進行。在 一電腦管線中,每個步驟完成一個指令的部分,就像裝配 線’不同的步驟並行地完成不同指令的不同部分。每個這 __ 4 本紙張尺i通用中國國家標準(CNS)A4規格(21〇 X 297公釐) ' (請先閲讀背面之注意事項 I I . ϋ I 寫本頁) 線. 經濟部智慧財產局員工消費合作社印製 A7 1229815 五、發明說明(ψ ) 些步驟稱為一管道階段(pipe stage)或管道區段(pipe segment)。這些階段一個接連著下一個,形成一個管道— 一指令從一端進入,歷經這些階段,然後從另一端出去, 就像汽車在裝配線上一樣。」 [0009] 因此,當指令被提取時,就被導入管線的一端。 指令於微處k器中經歷管線階段,直到執行完畢。在這種 管線化的微處理器中,一分支指令是否會改變程式流程, 通常都得等它到達管線的後期階段才能得知。然而在這之 前,微處理器已經提取了其它指令,且正於管線的早期階 段執行。如果一分支指令改變了程式流程,所有在這分支 指令之後進入管線的指令都必須被丟棄。此外,則必須提 取此分支指令之目標位址上的指令。丟棄已在執行中的指 令及提取目標位址上的指令,會造成微處理器在處理上的 延遲,稱為分支懲罰(branchpenalty)。 [0010] 為減輕這種延遲問題,許多管線化的微處理器在 管線之一早期階段使用分支預測機制來預測分支指令。分 支預測機制預測分支指令的結果或方向,亦即是否要進行 分支。分支預測機制也預測分支指令的分支目標位址,亦 即分支指令所要分支到的指令之位址。處理器接著就分支 至所預測的分支目標位址,亦即依據分支預測提取後績的 指令,這會比沒有分支預測時來得早,因而若確定要進行 分支,藉此便降低了懲罰的可能性。 [0011] 這種用來快取先前所執行分支指令之目標位址的 分支預測機制,稱為分支目標位址快取記憶體(branchtarget (請先閱讀背面之注意事項|^!|寫本頁) 寫太 -線- 經濟部智慧財產局員工消費合作社印製
4 1229815 A7 發明說明( ------------f裝—— (請先閱讀背面之注意事項寫本頁) address cache,簡稱BTAC)或者分支目標緩衝器(branch target buffer ,簡稱 BTB)。在一簡單的 BTAC 或 BTB 中, 當處理器解碼一分支指令,處理器便提供分支指令的位址 給BTAC。若該位址命中BTAC且預測分支會進行,處理器 就可以利用BTAC中的快取目標位址開始提取目標位‘址的 指令而非T個循序(sequential)位址的指令。 [0012] 相較於只預測是否採行分支的預測裝置,像是分 支經歷表(branch history table,簡稱 BHT ),BTAC 的好處 是除了確定是否遇到一分支指令所需的時間外,它節省了 計算目標位址所需的時間。典型的做法是分支預測資訊(例 如被採行/不被採行(taken/nottaken))隨著目標位址皆儲 存於BTAC。BTAC運用於管線的指令解碼階段,這是因為 處理器必須先判斷分支指令是否存在。 [0013] 處理器使用BTB的一個例子是Intel Pentium Π與 --線·
Pentium ΠΙ處理器。現請參閱圖一,其繪示Pentium II/m處 理器100相關部分之方塊圖。處理器1〇〇包含一 BTB 134, 用來快取分支目標位址。處理器100從一指令快取記憶體 經濟部智慧財產局員工消費合作社印製 (instruction cache) 102提取指令,該指令快取記憶體1Q2 快取了指令108與前解碼(pre-decoded)分支預測資訊1〇4。 前解碼分支預測資訊104可能包含像是指令類型或指令長 度這樣的訊息。指令從指令快取記憶體102提取,並送到 指令解碼邏輯(instruction decode logic) 132,由其來解碼 或解譯指令。 [0014] —般是從下個循序提取位址112來提取指令。該
1229815 A7 B7 五、發明說明( 下個循序提取位址112是由遞增裝置(incrementer) 118將 現行指令快取記憶體102的提取位址122直接加上一指令 快取記憶體102的快取線之大小所得。然而,如果一分支 指令已由指令解碼邏輯132解碼’接著控制邏輯(con|j〇i logic) 114便選擇性地控制一多工器(muitiplexer) 1Ϊ6選 取ΒΤΒ 134所提供之分支目標位址,作為指令快取記憶體 102之提取仅址122,而非選取下個循序提取位址η〕。控 制邏輯114根據指令快取記憶體1〇2提供之前解碼資訊1〇4 以及ΒΤΒ 134預測該分支指令是否會被採行(依用來檢索 ΒΤΒ 134之指令指標138而定),來選取指令快取記憶體 102的提取位址122。 [0015] Pentium Π/ΙΙΙ在檢索ΒΤΒ 134時,並非藉由分支 指令本身的指令指標,而是利用先於被預測之分支指令之 指令的指令指標138來進行。這使得BTB 134在分支指令 被解碼之時,就能查詢目標位址136。否則,在分支指令解 碼後,處理器100必須再等待BTB 134的查詢,才能進行 分支,這樣便多了此延遲之分支懲罰。一旦分支指令被指 令解碼邏輯132解碼,且處理器100知道目標位址136的 產生是基於確定有分支指令的存在,處理器1〇〇才會分支 到BTB134根據指令指標138索引所提供之目標位址136。 [0016] 另個使用BTAC的例子是AMD Athlon處理 器。現請參閱圖二,其繪示Athl〇n處理器2〇〇相關部分之 方塊圖。處理器200包含與圖一 Pentium π/瓜編號類似的元 件。Athlon處理器200將其BTAC整合進指令快取記憶體 請 先 閲 讀 背 面 之 注 項 訂 經濟部智慧財產局員工消費合作社印製 1229815 A7 五、發明說明( 202中。也就是,指令快取記憶體202除了指令資料108與 前解碼分支預測資訊104之外,還快取了分支目標位址 206。對於每個指令位元組對(instruction byte pair ),指令 快取記憶體202保留了兩個位元作為預測分支指令的方向 之用。指令快取記憶體202在一快取線中,相當於每16個 位元組,的指令即保留兩個分支目標位址的空間。 [0017]挺圖二可以看出,指令快取記憶體2〇2是由提取 位址下個循序提取位址來作索引。因BTAC已整合進指令 快取記憶體202,所以也是由提取位址122來作索引。因此, 才曰令快取s己憶體202之一快取線若有一命中發生,就可確 定快取分支目標位址對應至存在於被檢索之指令快取記憶 體202快取線中一分支指令。 [0018]雖然習知的方法改進了分支預測,但仍有缺點。 前述兩種習知方法的一個缺點是,指令前解碼資訊以及 Athlon例子中的分支目標位址大幅增加了指令快取記憶體 的大小。據推測,對Athlon而言,分支預測資訊可能使指 濟 部 智 慧 財 產 局 員 工 消 費 合 作 社 印 製 令快取記憶體的大小加倍。此外,Pentium Π/ΠΙΒΤΒ為每個 分支指令儲存了相當大量的分支經歷資訊,用以預測分支 方向,因而也增加了 BTB的大小。 [〇〇19]Athlon的整合式BTAC的一個缺點是,將BTAC 整合進指令快取記憶體會使空間的使用缺乏效率。也就 是’整合式的指令快取記憶體/BTAC對於分支指令以及非 分支指令,皆須快取其分支指令資訊,因而佔用過多儲存 空間。在Athlon指令快取記憶體中,許多由額外的分支預
1229815 B7
五、發明說明(飞) 測資訊所使用的空間是浪費掉的’這是因為指令快取記憶 體中分支指令的集中度相當低。例如,一特定的指令快^ 線中可能未包含任何分支,因此快取線中所有儲存目標位 址與其它分支預測資訊的空間就沒用到而浪費掉了。 [0020] Athlon整合式的BTAC的另一個缺點是,設叶目 標間的衝突ά也就是,關於指令快取記憶體的大小,除了 分支預測機制之設計目標外,可能有其它不同的設計目標 會對此加以規定。以快取線而論,要求BTAC的大小要^ 指令快取記憶體相同,是Athlon架構所固有的,但可能無 法理想地達到兩組設計目標。例如,可能選定了指令快取 記憶體的大小,以達成一特定的快取命中率(cache七红 ratio)。然而,情況可能是,用比較小的BTAC,就可能達 成所要的分支目標位址預測率(predicti〇nrate)。 [0021] 再者,因為BTAC是整合在指令快取記憶體中, 獲得快取分支目標位址所需的資料存取時間必然相同於獲 得快取指令位元組。Athlon的例子中,指令快取記憶體相, 當大,存取時間可能會相當長。較小的、非整合式btac 經 濟 部 智 慧 財 產 局 員 工 消 費 合 作 社 印 製 之資料存取時間可能比整合式的指令快取記憶體要 明顯減少。 [0022] 由於pentium ΜΠ BTB並未整合在指令快取記憶 體中’Pentium II/III的方法不會遭遇前述ϋ〇η整合式指令 快取記憶體/BTAC的問題。然而,由於在檢索pentium ^ BTB時,乃利用一已解碼指令的指令指標,而非指令快取 圯憶體的提取位址,所以Pentiumn/m的解決方案於進行分 9
A7 1229815 B7 五、發明說明(1 ) 支時可能無法像Athlon解決方案那樣早,因此可能也無法 那樣有效地減少分支懲罰。pentiumn/m解決方案處理這個 問題的方式是,使用一先前指令或先前指令群的指令指 標,而非實際的分支指令指標,來檢索BTB,如前所述。 [0023] 然而,Pentium Mil方法的一個缺點是,使用先 前指令,的指令指標而非實際的分支指令指標,會犧牲掉一 些分支預測的準確度。準確度的降低,一部份是由於分支 指令在程式中可能經由多個指令路徑遭遇到。也就是,多 個先於分支指令之指令可能因相同的分支指令而快取於 BTB中。因此,為了這樣一個分支指令,必須消耗掉btB 中多個項目(entry),於是就減少了 BTB中可快取的分支 指令總數。所用的先於分支指令之指令數量愈多,可到達 分支指令的路徑也愈多。 [0024] 除此之外,由於使用一先前的指令指標造成可能 有多個路徑到達同一個分支指令,pentiumII/IIIBTB中之方 向預測裝置可能需要更長的時間來「暖機」。Pentiumn/m BTB保持著分支經歷資訊,用以預測分支的方向。當一新 的分支指令被引入處理器且快取住,到達該分支指令的多 個路徑可能會使分支經歷在更新時,變得比只有單一路徑 到達該分支指令的情形還慢,造成預測較不準確。 [0025] 因此,我們所需要的是,一種能有效利用晶片固 有資源(chip real estate),又能在管線早期就提供準確分支 的分支預測裝置,以減少分支懲罰。 10 本紙張尺度適用中國國家標準(CNS)A4規格(21〇 X 297公爱 (請先閱讀背面之注意事項寫本頁) 訂- i線· 經濟部智慧財產局員工消費合作社印製 1229815
五、發明說明( 經濟部智慧財產局員工消費合作社印製 (三)發明簡要說明: [0026] 本發明提供一種分支預測方法及裝置,能有效利 用晶片固有資源,又能在管線早期就提供準確的分支,以 減少分支懲罰。於是,為達到前述目的,本發明的一項特 徵疋,k供一種裝置,在一被採行(丨此邱)的分支指令執 行時將該被採行分支指令之一目標位址寫入一分支目標 位址快取記憶體(BTAC),該BTAC具有複數個儲存元件, 用以快取複數個已執行(executed)分支指令之目標位址, 每個儲存元件包含第一與第二項目,以儲存目標位址。該 裝置包含一全域指示器(global indicator),在btac複數 個儲存元件之第一與第二項目中指定一全域項目。該裝置 亦包含分支控制邏輯(branch control logic),耦接至該全域 指示器,依據全域指示器選取該第一與第二項目其中之 一,以寫入被採行分支指令之目標位址。 [0027] 另一方面,本發明的一項特徵是,提供一種裝置, 在一被採行的分支指令執行時,將一目標位址寫入一分支 目標位址快取記舰。該裝置包含一分支目標位址快取記 憶體(BTAC),其具有複油儲存補快取複數個 已執行分支指令之目標位址。每一該複數個儲存元件皆包 含第一與第二項目,以儲存目標位址。該裝置亦包含一入 域指示器,儲存一全域指示,當該複數個儲存元件^中= -最後被寫人者中’其第-與第二項目至少有—個無效 時,該全域指示即指出在任何該複數個儲存元件中,是 -與第二項目中的哪-個最後被寫到。該裝置亦包含^支 ------------»!裝 (請先閱讀背面之注意事項¥ 寫本頁) 訂· -丨線」 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公£7 1229815 A7 B7_____ 五、發明說明(ί 〇 ~' ^ 控制邏輯,耦接至該全域指示器,依據全域指示器選取該 第-與第二項目其中之一以寫入被猜分支指令之目標位 址。 ’ [0028]另一方面,本發明的一項特徵是’提供一種在— 分支目標位址快取記憶體(BTAC)中置換目標位址妁方 法,該BTAC具有複數個儲存位置,每個皆有一 a項目與 一 B項目以快取目標位址。該方法包含執行一分支指令與 產生該为支心令之一目標位址;依據該分支指令之一指令 指標選取BTAC之複數個儲存位置其中之一;以及確定所 選取BTAC儲存位置之a與B項目兩者是否皆為無效。該 方法亦包含檢查由該複數個BTAC儲存位置全域共享之— 置換狀態旗標(replacement status flag);以及若所選取 BTAC儲存位置之A與B項目兩者皆為無效,則依據該置 換狀態旗標將該目標位址寫入所選取BTAC儲存位置之A 與B項目其中之一。 [0029]另一方面,本發明的一項特徵是,提供一種在一 分支目標位址快取記憶體(BTAC)中置換目標位址的方 法,該BTAC具有複數個儲存位置,每個皆具n個項目以 快取目標位址,其中N為大於一的整數。該方法包含執行 一分支指令與產生該分支指令之一目標位址;依據該分支 指令之一指令指標選取BTAC之複數個儲存位置其中之 一;以及確定所選取BTAC儲存位置所有N個項目是否皆 為無效。該方法亦包含檢查由該複數個BTAC儲存位置全 域共享之一置換狀態旗標,以及若所選取BTAC儲存位置
本紙張尺度適用中國國家標準(CNS)A4規格(210 X (請先閱讀背面之注意事項 ϋ I · ^1 1 寫本頁) --線. 經濟部智慧財產局員工消費合作社印製 12 1229815 A7 經濟部智慧財產局員工消費合作社印製 五、發明說明(丨^斤有項目皆為無效,·據該置換狀祕標將該目標位 址寫入所選取BTAC儲存位置之N個項目其中之一。 錢[Γ3()]另—方面,本發明的―項特徵是,提供一種管線 ^處理器。該微處黯包含—分支目標位址快取記憶體 σ AC),其具有複數條快取線,每條儲存N個目標位址。 ^疋^於-的整數。該微處理器亦包含執行邏輯(咖⑶飯 1了)’減至㈣就,執行—分支指令並產生該分支指 、<-目標位址以存於BTAC。該微處理器亦包含位址選擇 邏輯(address selection logic),輕接至BTAC,選取該已執 行刀支}"之彳日令指標以更新BTAC。該微處理器亦包含 一狀態暫存器,麵接至執行邏輯,儲存該複數條btac快 取線之全域置換狀態。該微處理器亦包含分支控制邏輯,、 在儲存於該指令指標所選取其巾-該複數條絲線内之n 個目標位址中,選取其中一個,以該分支指令之目標位址 來置換。分支控制邏輯在該N個目標位址中所選取之目標 位址,是依儲存於狀態暫存器之全域置換狀態而定。 [0031] 本發明的一項優點是,附加非常少量的硬體,就 能解決此處所述之目標位址的置換問題。 [0032] 本發明的另一項優點是,BTAC不需為多埠的 (multi-ported),而且可便於使用單埠的bTAC。 [0033] 本發明之其它特徵與優點,在考察本說明書其餘 部分與圖示後,將可更加明白。 曰、、(四)發明圖示說明: 圖一係為Pentium Π/ΠΙ處理器先前技術之相關部分方 ----------- 裝 (請先閲讀背面之注意事項寫‘ 本頁} Ίδτ· .線」 13 本纸張尺度適用中國國豕標準(CNS)A4規格(21〇 X 297公爱 1229815 A7
五、發明說明(丨)) 塊圖。 圖二係為Athlon處理器先前技術之相關部分方塊圖。 圖二係依本發明繪示之管線化微處理器之方塊圖。 圖四係依本發明繪示圖三處理器之假想分支預測裝置。 圖五係圖四之指令快取記憶體之方塊圖。 ‘ 圖六,係依本發明繪示圖四分支目標位址快取記憶體 (6TAC)之方塊圖。 圖七係依本發明繪示圖四BTAC之圖六項目之格式的 方塊圖。 圖八係依本發明繪示之圖四假想分支預測裝置之運作 的流程圖。 圖九係依本發明繪示之圖四假想分支預測裝置使用圖 八步驟之一運作範例之方塊圖。 圖十係依本發明繪示之圖四假想分支預測裝置偵測與 更正錯誤的假想分支預測之運作流程圖。 濟 部 智 慧 財 產 局 員 工 消 費 合 社 印 製 圖十一係依本發明列舉之程式碼片段及一表格,為說明 圖十假想分支預測錯誤之偵測與更正之一範例。 圖十二係依本發明繪示之圖四分支預測裝置包含一混 口饭心刀支方向預測裝置(hybrid speculative branch direction predictor)之另一具體實施例的方 塊圖。 圖十二係為圖四之雙呼叫/返回堆疊(dual call/retum stacks)之運作流程圖。 圖十四係為說明圖四之分支預測裝置選擇性地以非假 14
1229815 五 、發明說明(丨+) 想妓糊來覆蓋(Gve]Tide)假想分域測,藉 以改進本發明之分支預測準確度之運作流程圖/ 圖十五係依本發明繪示之用以進行圖四btac中目標 位址置換工作之裝置的方塊圖。 不 圖十六係依本發明繪示圖十五裝置之一運作方法的流 程_ 〇 圖十七係依本發明之另一具體實施例繪示圖十五裝置 之一運作方式的流程圖。 圖十八係依本發明之另一具體實施例繪示之用以進行 圖四BTAC中目標位址置換動作之裝置方塊圖。 圖十九係依本發明之另一具體實施例繪示之用以進行 圖四BTAC中目標位址置換動作之裝置方塊圖。 (請先閱讀背面之注意事
裝— t寫本頁> 經濟部智慧財產局員工消費合作社印製 圖號說明: 100 Pentiumll/III 處理器 104前解碼分支預測資訊 112下個循序提取位址 116多工器 122提取位址 134分支目標緩衝器 138指令指標 200 Athlon處理器 206快取分支目標位址 300管線化微處理器 102指令快取記憶體 108指令資料 114控制邏輯 118遞增裝置 132指令解碼邏輯 136分支目標位址 202指令快取記憶體 302 I-階段 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) Ϊ229815 A7 B7 五、發明說明(//) 304 B-階段 308 V-階段 314 X·階段 ,318 A-階段 324 G-階段 328卜階砹 342指令A衝器 346 X-階段指令佇列 353假想返回位址 355 非假想返回位址 306 U-階段 312 F-階段 316 R-階段 322 D-階段 326 E-階段 1 332 W-階段 344 F-階段指令佇列 352假想分支目標位址 354非假想分支目標位址 356解析目標位址 ___:__________^___ (請先閱讀背面之注意事項寫本頁) 經濟部智慧財產局員工消費合作社印製 400假想分支預測裝置 402假想分支目標位址快取記憶體(BTAC) 404控制邏輯 406假想呼叫/返回堆聂 408預測檢查邏輯 且 412非假想分支方向預測裝置 414 非假想呼叫/返回堆疊 416非假想目標位址計算器 418 比較器 424儲存多工化/暫存器 428 比較器 434加法器 436指令格式化與解碼邏輯 438假想分支(SB)位元 444非假想分支方向預測 422多工器 426遞增裝置 432指令快取記憶體 442更新訊號 446 BEG位元 訂- 線· 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐 1229815 A7 B7 五、發明說明(丨‘) 446A A項目之BEG位元 446BB項目之BEG位元 448 LEN位元 452命中訊號 454假想分支資訊(SBI) 45φ ERR訊號 466 下個循序指令指標(NSIP) 468瑪行指令指標(CIP) 472控制訊號 474比較赛418之輸出 478控制訊號 481解析分支方向(DIR) 482控制訊號
476比較器428之輪出 (請先閱讀背面之注 意事項mi 經濟部智慧財產局員工消費合作社印製 484訊號 486 FULL 訊號 488 返回位址 491 假想返回位址 493指令位元組 495提取位址 497 比較器 498儲存多工化/暫存器424之輸出 499下個循序提取位址 502轉換參照緩衝器(TLb) 504標記陣列 508比較器 514實體標記 602 BTAC402 之項目 483控制訊號 485 比較器489的輪出 487比較器497的輸出 489比較器 492指令解碼資訊 494指令位元組快取線 496指令位元組 506資料陣列 512實體分頁號碼 518命中訊號 602A項目602之A邊 .寫本頁) :骏 -tj· 17 1229815 A7 B7 經濟部智慧財產局員工消費合作社印製 五、發明說明(/7) 602B項目602之B邊 606路選擇多工器 612資料陣列 616標記 622 A/B選擇訊號 626 B項目' 702 VALID 位元 702A A項目之VALID位元 702B B項目之VALID位元 704 CALL位元 706 RET 位元 708 WRAP 位元 712分支方向預測資訊(BDPI) 714分支目標位址 722 T/NT攔位 722A A項目之T/NT欄位 722B B項目之T/NT欄位 724 SELECT 位元 802〜834假想分支的運作步驟 1002〜1054偵測與更正錯誤的假想分支預測之步驟 1100依本發明列舉之程式碼 實例片段及一表格 1200混合假想分支方向預測裝置 1202分支經歷表(BHT) 1204互斥或邏輯 1206全域分支經歷暫存器 1208多工器 1212分支指令方向結果 1214訊號 1216互斥或邏輯1204的輸出 18 604 比較器 608 A/B選擇多工器 614標記陣列 618控制訊號 624 A項目 1 (請先閱讀背面之注意事項^填寫本頁) 1· :裝 0 . 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 1229815
經 濟 部 智 慧 財 產 局 員 工 消 費 合 作 社 印 製 五、發明說明((f) 1218更新訊號 1224T/NT 位元 1302〜1326雙呼叫/返回堆疊的運作步驟 • 1402〜1432 BTAC 402 _性地以非假想分支預測來覆蓋假 想分支預測之運作步驟 * 1502 LastWritten 暫存器 1504 A/B LRU 位元 1506多工S 1512更新正 1514訊號 1516讀/寫控制訊號 1602〜1646 A/B項目置換方法的步驟 1716〜1726另-實施例中Λ/g項目置換方法的衍生步驟 1812額外的陣列 1902 含 LastWritten 值與 LastWrittenPrev 值之暫存器 1928訊號 (五)發明詳細說明: [0053] 現請參閱圖三,其繪示本發明之一管線化裰處理 器300之方塊圖。處理器管線3〇〇包含階段302至階段332。 [0054] 第一階段是I-階段302,或稱指令提取階段 (instruction fetch stage )。在 I-階段 302,處理器 300 提供 提取位址至一指令快取記憶體432 (見圖四),以提取指令 供處理器300執行。指令快取記憶體432在關於圖四的部 分時會更加詳細地說明。在一具體實施例中,此指令快取 記憶體432是一雙週期(two-cycle)快取記憶體。β_階段 304是指令快取記憶體432的存取之第二階段。指令快取記 19 本紙張尺度適用中國國家標準(CNS)A4規格(210 x 297公釐) 1222 Τ/ΝΤ__Λ/Β 位元 (請先閱讀背面 I ϋ _1 I I Λ— I 0 ϋ 之注意事項寫本頁) 1229815 A7 — ______B7__ 五、發明說明(1) 憶體432提供其資料至u-階段306,在此階段資料被問鎖 住(latched) 階段306提供指令快取記憶體的資料至 V-階段308。 [0055] 在本發明中,處理器3〇〇還包含一 BTAC 402(見 圖四),在其餘圖示的部分會詳細說明。BTAC 402並未整 合在指令快取記憶體432。然而,在I-階段302,BTAC 402 是與指令快取記憶體432藉使用指令快取記憶體432之提 取位址495來平行地(in parallel)存取的(見圖四),從而 致能相當快速的分支以減少分支懲罰。BTAC 402提供一假 想分支目標位址352,而該位址則被提供至I-階段302。處 理器300選擇性地選取目標位址352作為指令快取記憶體 432提取位址,以達成分支至假想目標位址352,這在其餘 圖示的部分會詳加說明。 [0056] 有利地,從圖三可以看出,在u-階段306,由 BTAC 402所提供之分支目標位址352能使處理器300在管 線300之相當早期就進行分支,如此僅產生一雙週期的指 令泡沫(instructionbubble)。亦即,若處理器300分支至 假想目標位址352,只有兩個階段的指令必須被清除。換言 之,在兩個週期内,典型的情況下,於U-階段306就可得 知分支的目標指令,亦即,如果這些目標指令存在於指令 快取記憶體432中。 [0057] 有利地,在多數情況下,雙週期的指令泡沫夠 小,可以由一指令緩衝器342、F-階段指令佇列344及/或 X-階段指令佇列346來加以吸收,此將說明於後。因此, 20 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) -----------裝 — (請先閱讀背面之注意事^^填寫本頁} 訂.. 經濟部智慧財產局員工消費合作社印製 A7 1229815 ..... B7 五、發明說明(P ) 在許多情形下’假想BTAC 402使處理器300能達到零懲罰 的分支。 [0058] 處理器300更包含一假想呼叫/返回堆疊4〇6 (見 .圖四),在關於圖四、圖八與圖十三的部分有詳細說明。 假想呼叫/返回堆疊406與假想BTAC 402協同運作/以產 生一假想返囟位址353,亦即,提供至^階段3〇2之返回指 令的目彳示位址。處理器300選擇性地選取假想返回位址353 作為心令快取§己憶體432提取位址,以達成分支至假想返 回位址353,就如關於圖八部分所詳細說明的。 [0059] 在V-階段308,指令被寫入指令緩衝器342。指 令緩衝器342暫存指令以提供至F_階段312。v_階段3〇8 亦包含解碼邏輯,以提供關於指令位元組之資訊給指令緩 衝器342,像是χ86前置(prefix)與mod R/M資訊,以及 指令位元組是否為分支運算碼值(⑻她0pC0(jevaiue)。 [0060] F-階段312 ’或稱指令格式化階段(instruction format stage) 312,包含指令格式化與解碼邏輯436 (見圖 四)以格式化指令。較佳者,處理器300是一 χ86處理器, 其指令集(instructionset)可容許不同長度的指令。指令格 式化邏輯436從指令緩衝器342接收指令位元組流 (stream) ’並將該指令位元組流解析成分離的位元組群, 每個群構成一 x86指令,尤其還提供每個指令的長度。 [0061] F-階段312也包含分支指令目標位址計算邏輯 (branch instruction target address calculation logic) 416,依 據一指令解碼產生一非假想分支目標位址354,而不是假想 21 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) (請先閱讀背面之注意事項9寫本頁) I!裝 經濟部智慧財產局員工消費合作社印製 1229815 五、發明說明(> ) 地依據指令快取記憶體432提取位址來產生,如在I-階段 302 BTAC 402所作的。F-階段312亦包含一呼叫/返回堆疊 414 (見圖四),依據一指令解碼產生一非假想返回位址 355,而不是假想地依據指令快取記憶體432提取位址來產 生,如在I-階段302 BTAC 402所作的。F-階段312非假想 位址354與355被送至I-階段302。處理器300選擇性地選 取F-階段312非假想位址354或355作為指令快取記憶體 432提取位址,以達成分支至位址354或355兩者之一,就 如下文所詳細說明的。 [0062] F-階段指令佇列344接收格式化的指令。格式化 指令由F-階段指令佇列344送至X-階段314中一指令轉譯 器(instructiontranslator)。 [0063] X-階段314,或稱轉譯階段314,指令轉譯器將 x86 巨指令(macroinstruction )轉譯成微指令 (microinstruction),讓其餘的管線階段可加以執行。χ_階 段314將轉譯過的微指令送至X-階段指令佇列346。 經濟部智慧財產局員工消費合作社印製 [0064] Χ-階段指令佇列346將轉譯過的微指令送至R-階段316,或稱暫存器階段316。R-階段316包含使用者可 見(user-visible)之χ86暫存器集合,以及非使用者可見之 暫存器。微指令之指令運算元(0perancl)存於R-階段316 暫存器,供管線300之後續階段執行微指令。 [0065] A_階段 318,或稱位址階段(address stage) 318, 包含位址產生邏輯(address generation logic),從R-階段 316接收運算元與微指令,並產生微指令所需之位址,像是 22 」本紙張Γ度適用中國國家標準規格咖χ挪公楚) 經濟部智慧財產局員工消費合作社印製 1229815 A7 ____ B7____ 五、發明說明(>>) 用以載入/儲存的記憶體位址。 [0066] D_階段322,或稱資料階段(datastage) 322,包 含存取資料的邏輯,該資料由A-階段318產生之位址所指 定。特別是,D-階段322包括一資料快取記憶體,用來快 取處理器300内從系統記憶體而來之資料。在一具體實施 例中,資料快取記憶體是雙週期快取記憶體。G_階段似 疋資料快取記憶體存取的第二階段,而在E-階段326,可取 得資料快取記憶體之資料。 [0067] E-階段 326,或稱執行階段(executi〇n stage)326, 包含執行邏輯(execution logic),像是算數邏輯單元 (arithmetic logic unit),依據先前階段提供之資料及運算 元執行微指令。特別是,E_階段326會產生btaC 402指出 一返回指令可能存在於由提取位址495指定之指令快取記 憶體432快取線中所有分支指令之解析(__)目標位 址356。亦即,E-階段326目標位址356被認為是所有分支 才曰令之正確目標.位址,所有預測的目標位址必須與其吻 合。此外,E-階段326產生一所有分支指令之解析方向(dir) 481 (見圖四)。 [0068] S-PU又328 ’或稱儲存階段(st〇re伽供)奶,從 E-階段326接收微指令的執行結果,將其儲存至記憶體。此 外,還將E-階段326所計算之分支指令的目標位址说在 I-階段302時從S-階段328送至指令快取記憶體极。再者, I-階段302之BTAC 402藉由從s-階段328而來之分支指令 之解析目標位址來予以更新。此外,在BTAC 4〇2之其它假 裝·! (請先閱讀背面之注意事項3寫本頁) 訂· --線」 23
1229815 A7 B7 五、發明說明 想分支資訊(speculative branch information,簡稱 SBI) 454 (見圖四)亦從S-階段328來更新。假想分支資訊454包 含分支指令長度,在一指令快取裝置432快取線内的位置, 分支指令是否涵蓋多條指令快取裝置432快取線,分支是 否爲一呼叫或返回指令,以及用來預測分支指令之方向的 資訊,如關於圖七的部分所描述的。 [0069JW-階段332,或稱回寫階段(stage ), 將S-階段328處理之結果回寫入R-階段316暫存器,藉以 更新處理器300的狀態。 [0070] 指令緩衝器342、F_階段指令符列344以及X-階 段指令佇列346除了別的功能外,還能將分支對於處理器 300每個指令值之時脈所造成的衝擊減至最小。 [0071] 現請參閱圖四,其繪示依本發明圖三處理器3⑻ 之一假想分支預測裝置400。處理器3〇〇包含指令快取記憶 體432,以快取來自系統記憶體之指令位元組496。指令快 取圮憶體432由提取位址匯流排上之提取位址495來定 址,對指令快取記憶體432内一快取線作檢索。較佳者, 提取位址495包含一 32位元之虛擬位址。亦即,提取位址 i 並非才曰令的實體§己憶體位址(physical memory I address)。在一具體實施例中,虛擬提取位址495是一 X86 I 射生(linear)指令指標。在一具體實施例巾,指令快取記 消 費 合 作 社 印 製 I 憶體432具有32個位元組的寬度;因此,只用到提取位址 495的則27個位元來檢索指令快取記憶體432。一選定之 指令位元組快取線494則由指令快取記憶體432輸出。指 24
1229815 A7 _____________ B7 五、發明說明(舛) 令快取記憶體432在接下來圖五部分會更詳細地說明。 [0072] 現請參照圖五,其繪示圖四指令快取記憶體432 之一具體實施例的方塊圖。指令快取記憶體432包含用來 將圖四之虛擬提取位址495轉譯成實體位址之邏輯(圖上 未顧示)。指令快取記憶體432包含一轉換參照緩衝器 (translation'lookaside buffer,簡稱 TLB) 502,以快取先前 轉譯邏輯從虚擬提取位址495轉譯之實體位址。在一具體 實施例中,TLB 502接收虛擬提取位址495之位元[31:12], 當虛擬提取位址495命中TLB 502時,則輸出一對應之2〇 位元的實體分頁號碼(physical page number) 512。 [0073] 指令快取記憶體432包含一快取指令位元組之資 料陣列506。資料陣列506配置成複數條快取線,以虛擬提 取位址495的一部份來作索引。在一具體實施例中,資料 陣列506儲存了 64KB的指令位元組,其以32個位元組之 快取線來配置。在一具體實施例中,指令快取記憶體432 疋一四路集合關聯快取記憶體(4-way set associative cache)。因此,資料陣列506包含512條指令位元組線, 以提取位址495的位元[13:5]來作索引。 [0074] 虛擬提取位址495所選取之指令位元組線494, 由指令快取記憶體432輸出至指令緩衝器342,如圖四所 示。在一具體實施例中,一次將選定之指令位元組線的一 半送至指令緩衝器342,亦即,分成兩週期,每週期送16 個位元組。在本說明書中,快取線或指令位元線可用以指 稱由提取位址495於指令快取記憶體432内所選定之一快 25 本紙張尺度適用中國國家標準(CNS)A4規格(21〇 χ 297公釐) (請先閲讀背面之注意事項S寫本頁)
I I 經濟部智慧財產局員工消費合作社印製 1229815五、發明說明(/) A7 B7 取線的部分’像是半快取線(half-cacheline)或其它再細分 的部分。 [0075] 指令快取記憶體432亦包含一快取標記之標記陣 列(tag array) 504。標記陣列504,如同資料陣列506,皆 由虛擬提取位址495之相同位元來作索引。實體位址之位 元快取於標記陣列504,作為實體標記。由提取位址495位 元選定之實體標記514則送至標記陣列504的輸出端。 [0076] 指令快取記憶體432亦包含一比較器508,將實 體標記514與TLB 502所提供之實體分頁號碼512作比較, 以產生一命中訊號(hit signal) 518,指明虛擬提取位址495 是否命中指令快取記憶體432。命中訊號518真正指出了是 否有快取現行的工作指令(task instruction),因為指令快 取記憶體432將虛擬提取位址495轉換為一實體位址,並 用此實體位址來測定是否有命中。 先 閱 讀 背 面
訂 經 濟 部 智 慧 財 產 局 員 工 消 費 合 作 社 印 製 [0077]前述指令快取記憶體432的運作與BTAC 402的 運作成對比,後者僅依虛擬位址,亦即提取位址495,來測 定是否命中,而非依據實體位址。此種運作上不同所造成 的結果是,虛擬別名化(virtual aliasing)可能會發生,以致 於BTAC 402產生錯誤的目標位址352,如下所述。 [0078;!請再參閱圖四,圖三之指令緩衝器342從指令快 取記憶體432接收快取線之指令位元組494並予以緩衝, 直至其被格式化與轉譯為止。如前文關於圖三之Vh!皆段3〇8 所述,指令緩衝器342也儲存了其它分支預測的相關資訊, 像是X86前置與m〇dR/M資訊,以及指令位元組是否為分 26
1229815 A7 B7 五、發明說明(/ ) 經濟部智慧財產局員工消費合作社印製 支運算碼值。 [0079] 此外,指令緩衝器342為其内所存之每個指令位 元組儲存了一假想分支(Speculativeiy branched,簡稱sb ) 位元。如果處理器300假想地分支至BTAC 402所提供之假 想目’標位址352或假想返回位址353,其由假想呼叫/返回 堆疊406依據快取於BTAC 402中之SBI454所提供,則設 定SBI 45个所指出之指令位元組的SB位元438。也就是, 如果處理器300進行假想分支是基於如下假設:在指令快 取記憶體432提供之指令位元組線494中有一分支指令存 在’而其SBI454快取於BTAC 402中,則設定存於指令緩 衝器342之指令位元組494其中之一的SB位元438。在一 具體實施例中,則是針對SBI454所指出假定的分支指令之 運算碼位元組,設定其SB位元438。 [0080] 指令解碼邏輯436從指令緩衝器342接收指令位 元組493 (包含分支指令位元組)以將其解碼,產生指令解 碼資訊492。指令解碼資訊492用來進行分支指令預測,以 及偵測與更正錯誤的假想分支。指令解碼邏輯436提供指 令解碼資訊492至管線300之後段。此外,指令解碼邏輯 436在解碼現行指令時,會產生下個循序指令指標(nsip) 466 以及現行指令指標(current instmcti〇n pointer,CEP) 468。此外,指令解碼邏輯436提供指令解碼資訊492至非 假想目標位址計算器(non-speculative target address calculator) 416、非假想呼叫/返回堆疊414以及非假想分支 方向預測裝置(non_speculative branch direction predictor) 27 本咸張尺度適用中國國家標準(CNS)A4規格(2_i〇 X 297公爱) (請先閱讀背面之注意事項 --- 寫本頁) . 線」 A7 1229815 B7 —_ 五、發明說明(β) 412。較佳者,非假想呼叫/返回堆疊414、非假想分支方向 預測裝置412以及非假想目標位址計算器416屬於管線300 的F-階段312。
[0081] 非假想分支方向預測裝置412產生一分支指令方 向乏非假想預測444 ,亦即是否要進行分支,以回應從指令 解碼邏輯436接收之指令解碼資訊492。較佳者,非假想分 支方向預測·裝置412包含一個或更多分支經歷表,以儲存 已執行之分支指令之解析方向的歷程。較佳者,分支經歷 表連同由指令解碼邏輯436提供之分支指令本身的解碼資 訊,用於預測條件分支指令的方向。非假想分支方向預測 裝置412的一個示範實施例詳述於美國專利申請序號 09/434,984 HYBRID_BRANCH PRFmrTnp wyTH M?R〇VED SELECTOR TABT UPDATE lUFrmxfTSM,目 有一共同申請人,藉參考此案可併入本發明。較佳者,最 後解析出分支指令方向的邏輯屬於管線3〇〇的^階段326。 [0082] 非假想呼叫/返回堆疊414產生圖三之非假想返 回位址355 ’以回應從指令解碼邏輯436接收之指令解碼資 訊492。除了別的以外,指令解碼資訊攸_明現行解碼 的指令是否為呼叫指令、返回指令或兩者皆否。 [0〇83]此外,如果正由指令解碼邏輯436解碼之指令為 -哔叫指令,指令解碼資訊492還會包含—返回位址柳。 較佳者,返回位址488包含現行解碼之呼叫指令之指令指 標加上呼叫齡的長度所得之值。當齡解碼f訊4曰9^ 示現行解碼之指令馬-呼叫指令時,返回位址會被推 28 張尺度適用中國國家標準(CNS)A4規格(i10 X 297公釐ΐ___________ (請先閱讀背面之注意事項寫本頁) !裝 •線: 經濟部智慧財產局員工消費合作社印製 1229815 A7 B7 五、發明說明(>?) 入非假想哞叫/返回堆疊414,如此在指令解碼邏輯436進 (請先閱讀背面之注意事項寫本頁) 行後續返回指令的解碼時,返回位址488就能做為非假想 返回位址355。 [0084]非假想呼叫/返回堆疊414的一個示範實施例詳 述於美國專利申請序號09/271,591 METHOD AND APPARATUS__FOR CORRECTING AN TMTFRNAT. —LL^TTO1^LSTACK in a microprocessor that 亚ECULATIVELX_JXECUTES call and return INSTRUCTIONS,具有一共同申請人,藉參考此案可併入 本發明。 經濟部智慧財產局員工消費合作社印製 [0085]非假想目標位址計算器416產生圖三之非假想目 標位址354,以回應從指令解碼邏輯436接收之指令解碼資 訊492。較佳者,非假想目標位址計算器416包括一算數邏 輯單元,以計算程式計數器相關(PC-reiative,下文稱pc 相關)類型或直接類型(direct type)分支指令之分支目標 位址。較佳者,算數邏輯單元將分支指令的長度與一指令 指標加到内含於分支指令之一帶正負號之位移量(signed offset) ’來計算pc相關類型分支指令的目標位址。較佳者, 非假想目標位址計算器416包含一相當小的分支目標緩衝 器(BTB),以快取間接類型(indirecttype)分支指令的分 支目標位址。非假想目標位址計算器416的一個示範實施 例詳述於美國專利申請序號09/438,907 APPARATUS戀 PERFORMING BRANCH TARGET ADD1?frr CALCULATION BASED ON BRANCH TYPE,具有一共同 29 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 1229815 A7
五、發明說明(1 ) 申請人,藉參考此案可併入本發明。 [0086] 分支預測裝置4〇〇包含假想分支目標位址快取記 憶體(BTAC) 402。BTAC 402藉提取位址匯流排上之提取 位址495進行定址,檢索btAC 402内一快取線。BTAC 402 並未整合在指令快取記憶體432,而是分離且不同於指令快 取記憶體432,如圖所示。也就是,BTAC 402與指令快取 記憶體432·在實體上與概念上皆有所區別。BTAC 402與指 令快取記憶體432實體上的區別,在於兩者在處理器3〇〇 内處於不同的空間位置。BTAC 402與指令快取記憶體432 概念上的區別,在於兩者具有不同的大小,亦即在一具體 實施例中,它們包含不同數量的快取線。BTAC 402與指令 快取記憶體432概念上的區別,也在於指令快取記憶體432 將長:取位址495轉換成實體位址,以決定指令位元組線的 命中與否;BTAC 402卻以虛擬提取位址495作為一虛擬位 址來作索引,而沒有將其轉換為實體位址。 [0087] 較佳者’ BTAC 402屬於管線3〇〇的I-階段302。 經 濟 部 智 慧 財 產 局 員 工 消 費 合 作 社 印 製 BTAC 402快取了先前執行分支指令之目標位址。當處理器 300執行一分支指令時,該分支指令之解析目標位址藉由更 新訊號442快取於BTAC 402。該分支指令之指令指標1512 (見圖十五)用來更新BTAC402,如下文關於圖十五部分 所描述的。 [0088] 為了產生圖三之快取分支目標位址352,BTAC 402連同指令快取§己憶體432皆由指令快取記憶體432之提 取位址495平行地(in parallel)檢索。BTAC 4〇2回應提取 30 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 1229815 A7 _______Β7 五、發明說明(弘) 經濟部智慧財產局員工消費合作社印製 位址495而提供假想分支目標位址352。較佳者,提取位址 495的32個位元全都用來從BTAC 402選取假想目標位址 352,如下文將更詳細敘述的,主要是關於圖六到圖九的部 分。假想分支目標位址352被送至包含一多工器422之位 址邊擇邏輯422。 、 [0089] 多工器422從複數個位址(包括btAC 402目標 位址352)中選取提取位址495,下文將會予以討論。多工 器422輸出提取位址495至指令快取記憶體432與BTAC 402。若多工器422選取了 BTAC 402目標位址352,接著 處理器300便會分支到BTAC 402目標位址352。也就是, 處理器300將開始從指令快取記憶體432提取位於BTAC 402目標位址352的指令。 [0090] 在一具體實施例中,BTAC 402比指令快取記憶 體432還小。特別是,BTAC 402快取目標位址所用的快取 線數量比指令快取記憶體432所含的還少。BTAC 402未整 合在指令快取記憶體432的結果是(雖然使用指令快取記 憶體432之提取位址495作為索引),若處理器300分支 至BTAC 402所產生之目標位址352,它是以假想方式進行 的。此分支是假想的,乃因根本無法確定在所選定之指令 快取記憶體432快取線中,是否有一分支指令存在,更別 說是目標位址352因之而被快取的分支指令了。命中btaC 402僅表示一分支指令先前存在於提取位址495所選取之指 令快取記憶體432快取線中。之所以無法確定一分支指令 是否存在於所選取之快取線中,至少有兩個理由。 31 (請先閱讀背面之注意事項 寫本頁) 裝 丄«
丨線J 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) A7 1229815 ------------ —__B7 _ 五、發明說明()() ------------^裝—— (請先閱讀背面之注意事項一^寫本頁) [〇〇91]無法確定一分支指令是否在提取位址495所檢索 之和令快取記憶體432快取線中,其第一個理由是提取位 址495是一虛擬位址;因此,虛擬別名化可能會發生。也 就是,兩個不同的實體位址可能對應到相同的虛擬提取位 址495。一給定之提取位址495,其為虛擬的,可能轉譯成 兩個不同的實體位址,這兩個位址關聯於一多工 (multitasking)處理器(像是處理器3〇〇)的兩個不同行程 或工作。指令快取記憶體432利用圖五之轉換參照緩衝器 502執行虛擬到實體的轉譯工作,以提供準確的指令資料。 然而’ BTAC 402依據虛擬提取位址495執行其查詢工作, 而沒有執行虛擬到實體位址的轉譯工作。藉btac 402避免 虛擬到實體位址的轉譯工作是有利的,因為比起有執行虛 擬到實體位址轉譯工作的情形,它使假想分支能更快速地 執行。 經濟部智慧財產局員工消費合作社印製 [0092]執行工作轉換之作業系統,提供了虛擬別名化情 形可能會發生的一個例子。在工作轉換之後,處理器3⑻ 會從指令快取記憶體432提取位於關聯新行程之虛擬提取 位址495的指令,該關聯新行程之虛擬提取位址495等同 於關聯舊行程之虛擬提取位址495,而舊行程則包含一分支 指令,其目標位址快取於BTAC 402。指令快取記憶體432 會依據從虛擬提取位址495轉譯之實體位址來產生新行程 的指令,如上文關於圖五部分所描述的;然而,BTAC 402 會只用虛擬提取位址495以產生舊行程的目標位址352,因 而造成一錯誤的分支。有利的是,錯誤的假想分支只會在 32 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 1229815 A7 _____ B7 五、發明說明( 新行程的指令第一次執行時發生,此因在發現錯誤後, BTAC 402目標位址352將變為無效,如下文關於圖十部分 說明的。 Λ [0093] 因此,分支到BTAC 402目標位址352是假想的, 乃囱在有些情況下,由於分支指令並不存在於指令快取記 憶體432之提取位址495(例如,因為虛擬別名化的關係), 處理器300將分支至BTAC 402所產生之不正確的目標位址 352。相反地,從這方面來看前述圖二之Athl〇n整合式 BTAC/指令快取記憶體202以及圖一之Pentium ΙΙ/ΙΠ分支目 標緩衝器134,就是非假想性的。尤其,Athlon的方法因為 在分支指令位元組108旁並列儲存了圖二的目標位址2〇6 而假設虛擬別名化並未發生,所以是非假想性的。也就是, Athlon BTAC 202的查詢工作是基於實體位址來執行的。 Pentium II/III的方法,則因分支目標緩衝器134只在從指令 快取記憶體102提取分支指令以及指令解碼邏輯132確定 有一分支指令存在後,才產生一分支目標位址136。 經濟部智慧財產局員工消費合作社印製 ------------裝--- (請先閱讀背面之注意事項一^寫本頁) [0094] 此外,非假想目標位址計算器416、非假想呼叫/ 返回堆疊414以及非假想分支方向預測裝置412也是非假 想性的,此因它們只在從指令快取記憶體432提取分支指 令以及由指令解碼邏輯436解碼後,才產生分支預測,如 下文將要說明的。 [0095] 應該了解到,雖然非假想分支方向預測裝置412 所產生之方向預測444是「非假想性的」,亦即是在一分 支指令已由指令解碼邏輯436解碼並確定該分支指令存在 33 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 1229815 A7 B7 五、發明說明) (請先閱讀背面之注意事項寫本頁) 於現行指令流的情況下產生,非假想方向預測444仍是一 「預測」。也就是,如果分支指令是條件分支指令,像是 X86JCC指令,則在分支指令之任何既定的執行中,分支可 能會進行,也可能不會。 [0096] 相類似地,非假想目標位址計算器416所產生之 目標位址354以及非假想呼叫/返回堆疊414所產生之返回 位址355也是非假想性的,因為這些位址是在確定有一分 支指令存在於現行指令流的情況下而產生;儘管如此,它 們仍然是預測。例如,以透過記憶體進行之x86間接跳躍 而言,自前次執行間接跳躍以來,記憶體内容可能已有改 變。如此,目標位址可能隨之改變。因此,在本說明書中, 就分支方向而言,「非假想的」不能與「無條件的」相混 淆;就目標位址而言,「非假想的」則不能與「確定的」 (certain)相混淆。 線, 經 濟 部 智 慧 財 產 局 員 工 消 費 合 作 社 印 製 [0097] 無法確定一分支指令是否在提取位址495所檢索 之指令快取記憶體432快取線中,其第二個理由是自我修 改碼(self-modifyingcode)的存在。自我修改碼可能會改變 才曰令快取C憶體432的内容,但這改變並不會反映在btaC 402中。因此,一先前包含分支指令之指令快取記憶體432 快取線可能命中了 BTAC 402,但此分支指令已被修改或置 換為不同的指令。 [0098] 分支預測裝置4〇〇亦包含假想呼叫/返回堆疊 406。假想呼叫/返回堆疊4〇6儲存返回指令之假想目標位 址。假想呼叫/返回堆疊40ό因應控制邏輯4〇4產生之控制
1229815 A7 ---—-_____ 五、發明說明(外) 訊號483,產生圖三之假想返回位址353。假想返回位址3幻 被送至多工器422之一輸入。當多工器422選取了假想呼 叫/返回堆疊406所產生之假想返回位址353,處理器3〇〇 便分支至假想返回位址353。 [0099] 當BTAC 402指出一返回指令可能存在於由提取 位址495指定之指令快取記憶體432快取線中時,控制邏 輯404會產生控制訊號483,以控制假想呼叫/返回堆疊4〇6 來^^:供假想返回位址353。較佳者,當所選取之btac 402 項目602的VALID 702與RET 706位元(見圖七)被設定, 且BTAC 402命中訊號452顯示已命中BTAC 402標記陣列 614時,則BTAC 402指出一返回指令可能存在於由提取位 址495指定之指令快取記憶體432快取線中。 [0100] BTAC 402回應提取位址495而產生命中訊號452 以及假想分支資訊(SBI) 454。命中訊號452顯示提取位 址495命中了 BTAC 402之一快取標記,此於下文關於圖六 的部分說明。SBI454也會在下文關於圖六部分作更詳盡的 說明。 [0101] SBI 454包含一 BEG 446訊號(指令快取記憶體 432 快取線内之分支指令起始位元組位移量(beginning byte offset))與—LEN 448訊號(分支指令長度)。beg 446 之值、LEN 448之值與提取位址495由加法器434予以加 總,而產生返回位址491。返回位址491由加法器434輸出 至假想呼叫/返回堆疊406,如此返回位址491就能被推入 假想呼叫/返回堆疊406。控制邏輯404藉由訊號483與 35 本紙張尺度週用中國國家標準(CNS)A4規格⑽χ挪公爱) (請先閱讀背面之注意事項* 裝--- - π寫本頁) 訂. 經濟部智慧財產局員工消費合作社印製 1229815 A7 經濟部智慧財產局員Η消費合作社印製 ___B7___ 五、發明說明(V) BTAC 402協同運作,將返回位址491推入假想呼叫/返回堆 疊406。只有在所選定的BTAC 402項目602之VALID 702 與CALL 704位元(見圖七)被設定且命中訊號452顯示已 命中BTAC 402之標記陣列614 (見圖六)時,返回位址491 才會被推入堆疊。假想呼叫/返回堆疊406的運作方式在後 文關於圖八與圖十三部分會更詳細地說明。 [0102] 分支預測裝置400也包含控制邏輯404。控制邏 輯404藉控制訊號478控制多工器422,以選取複數個位址 輸入之一,作為提取位址495。控制邏輯404也藉訊號482 設定指令緩衝器342中之SB位元438。 [0103] 控制邏輯404接收命中訊號452、SBI454、來自 非假想分支方向預測裝置412之非假想分支方向預測444 以及來自指令緩衝器342之FULL訊號486。 [0104] 分支預測裝置400亦包含預測檢查邏輯408。預 測檢查邏輯408產生一 ERR訊號456,其被送至控制邏輯 404,以指出已依據一 BTAC 402之命中而執行一錯誤的假 想分支,如後文關於圖十部分所描述的。預測檢查邏輯4〇8 透過訊號484從指令緩衝器342接收SB位元438,訊號484 亦被送至控制邏輯404。預測檢查邏輯408也從BTAC 402 接收SBI 454。預測檢查邏輯408也從指令解碼邏輯436接 收指令解碼資訊492。預測檢查邏輯408也接收圖三E-階段 326所產生之解析分支方向DIR481。 [0105] 預測檢查邏輯408也接收比較器489的輸出 485。比較器489將BTAC 402產生之假想目標位址352與 (請先閱讀背面之注意事項Λ寫本頁)
I I 訂: --線. 36
本紙張尺度適用中國國家標準(CNS)A4規格(210 X 1229815 A7 經濟部智慧財產局員工消費合作社印製 B7 _ 五、發明說明〇乙) 圖三Ε-階段產生之解析目標位址356作比較。BTAC 402產 生之假想目標位址352被存於暫存器,並順著指令管線3〇〇 而下至比較器489。 [0106] 預測檢查邏輯408也接收比較器497的輸出 487。比較器497將假想呼叫/返回堆疊406產生之假想返回 位址353與'解析目標位址356作比較。假想返回位址353 被存於暫存器,並順著指令管線300而下至比較器497。 [0107] BTAC 402之假想目標位址352被存於暫存器, 並順著指令管線300而下,由比較器428將其與非假想目 標位址計算器416之目標位址354作比較。比較器428之 輸出476被送至控制邏輯404。相類似地,假想呼叫/返回 堆疊406產生之假想返回位址353也被存於暫存器,並順 著指令管線300而下,由比較器418將其與非假想返回位 址355作比較。比較器418之輸出474亦被送至控制邏輯 404 〇 [0108] 分支預測裝置400亦包含一儲存多工化/暫存器 (save multiplexed/register,以下簡稱 Save mux/reg )424。save mux/reg 424由控制邏輯404所產生之控制訊號472來控 制。save mux/reg 424之輸出498作為多工器422的一個輸 入。save mux/reg 424接收自己的輸出498以及BTAC 402 之假想目標位址352作為輸入。 [0109] 多工器422亦接收S-階段328之分支位址356作 為其輸入。多工器422也接收提取位址495本身作為輸入。 多工器422亦接收由遞增裝置426產生之下個循序提取位 37 本紙張尺度適用中國國家標準(CNS)A4規格(21〇><297公釐) " --- (請先閱讀背面之注意事項^^寫本頁) 裝 訂-· ,線: A7 B7 1229815 五、發明說明(》;〇 址499,遞增裝置426接收提取位址495,並遞增其值至指 令快取記憶體432之下條循序快取線。 [0110] 現請參照圖六,其為依本發明繪示之圖四BTAC 402之方塊圖。在圖六所示之昇體實施例中,BTAC 402包 含一四路集合關聯快取記憶體。BTAC402包括一資料陣列 612與一標記陣列614。資料陣列612包含一儲存元件的陣 列,以儲存快取分支目標位址與假想分支資訊的項目。標 記陣列614包含一儲存元件的陣列,以儲存位址標記。 [0111] 資料陣列612與標記陣列614各自皆配置成四 路’圖示為路0、路1、路2以及路3。較佳者,資料陣列 612之每一路儲存兩個快取分支目標位址與假想分支資訊 的項目,稱為A與B。由此,每次讀取資料陣列612時, 就會產生八個項目602。此八個項目602被送至一八對二路 選擇多工器(way select mux ) 606。 [0112] 資料陣列612與標記陣列614皆由圖四指令快取 記憶體432之提取位址495來作索引。提取位址495之較 低有效位元(significantbit)選定了陣列612與614内各一 條快取線。在一具體實施例中,每個陣列包含了 128條快 取線。因此,BTAC 4〇2能夠快取多達1〇24個目標位址⑴8 條快取線之每條具四個路,每路可儲存兩個目標位址)。 較佳者,陣列6丨2與614是藉提取位址物5之位元 作索引。 [0113] 標記陣列614為每路產生一標記616。較佳者, 每個標記616包含虛擬魏的2G個位元,且四個標記616 T紙張尺度適用中關家標準(CNS)A4規格(21G χ (請先閲讀背面之注意事項η 裝i I f寫本頁) —線· 經 濟 部 智 慧 財 產 局 員 工 消 費 合 作 社 印 製 38 A7 1229815 五、發明說明(作) 的每一個皆由比較器604將其與提取位址495之位元[31:12] 作比較。比較器604產生圖四之命中訊號452,其依據是否 有一標記616與提取位址495之最高有效位元相吻合,以 指出是否有命中BTAC。命中訊號452被送至圖四之控制邏 輯 404 〇 暴 [0114]此外,比較器604產生控制訊號618,以控制路 選擇多工器.606。路選擇多工器606因而在BTAC 402產生 之快取線中,選取四個路之一的A項目624與B項目626。 將A項目624與B項目626送至A/B選擇多工器608以及 控制邏輯404。控制邏輯404因應命中訊號452、A項目024 與B項目626、提取位址495及其他控制訊號而產生一控制 訊號622,來控制A/B選擇多工器608°A/B選擇多工器608 便選取A項目624或B項目626兩者之一作為圖三BTAC 402之目標位址352及圖四之SBI454。 [(^⑸較佳者’:^八匸搬是一單埠^呢㈣⑽⑷快 取記憶體。單埠快取記憶體的優點是尺寸上比較小,因而 比起雙埠(dual-ported)快取記憶體,在同樣大小的空間中 能夠快取更多的目標位址。然而,雙埠快取記憶體的考量 是使同時地讀寫BTAC 402變得容易。雙埠BTAC 402所具 備之可同時讀寫的特徵’由於更新寫入的動作不需等待讀 取動作,使得BTAC 402的更新能更快速地進行。一般而言 更快速的更新可得到更正確的預測,此因BTAC 402内的資 訊是更為現時的(current)。 [0116]在一具體實施例中,指令快取記憶體432内每條
本紙張尺度適用中國國家標準(CNS)A4規格(210 X — — — — — — — — — — · I I (請先閱讀背面之注意事項寫本頁) 訂: 線· 經濟部智慧財產局員工消費合作社印製 39 1229815 A7 B7 五、發明說明(Η 經濟部智慧財產局員工消費合作社印製 快取線包含32個位元組。然而,指令快取記憶體432有時 會提供指令位元組之半快取線494。在一具體實施例中, BTAC 402的每條快取線儲存了兩個項目602,因而包含了 兩個目標位址714,用於指令快取記憶體432之每條半快取 線。 [0117] 現清參閱圖七’其為依本發明緣示圖四btac 402之圖六項目602之格式方塊圖。項目602包含了圖四之 SBI (假想分支資訊)454與一分支目標位址(TA) 714。 SBI 454 包含一 VALID 位元 702、圖四之 BEG 446 與 LEN 448、一 CALL 位元 704、一 RET 位元 706、一 WRAP 位元 708以及分支方向預測資訊(BDPI) 712。在圖三之管線300 執行一分支後,該分支之解析目標位址即被快取於TA棚位 (field) 714,而解碼與執行分支指令所得之sbi 454則被 快取於BTAC 402之項目602的SBI454欄位中。 [0118] VALID位元702指出了項目602是否可用於將處 理器300假想分支至關聯之目標位址714。特別是,VAUD 位元702最初是處於清除狀態,此因BTAC 402由於未快取 任何有效之目標位址而是空的。當處理器300執行一分支 指令,且與該分支指令關聯之解析目標位址與假想分支資 訊被快取於項目602時,VALID位元702就被設定。之後, 如果BTAC 402依據項目602作了錯誤的預測,VALID位 元702就被清除,如下文關於圖十部分所述。 [0119] BEG欄位446指定了指令快取記憶體432之一快 取線内分支指令之起始位元組位移量。在偵測到有一呼叫 40 (請先閱讀背面之注意事項再If寫本頁) 裝 訂·· --線- 本紙張尺度適用中國國豕標準(CNS)A4規格(21〇 X 297公楚)
五、發明說明(w。) 1229815 指令命中BTAC 402時,BEG襴位446被用來計算一返回 位址,以儲存於圖四之假想呼叫/返回堆疊4〇6。此外, 棚位446被用來確定所選取BTAC搬路之圖六項目a似 或項目B 626兩者中哪一個導致了 BTAC 4〇2之命中,如下 文關於圖八部分所述。較佳者,由項目a624與項目B626 所指定之分支指令位置,在指令快取記憶體432之快取線 内不需有任何特糾順序。也就是,在指令快取記憶體432 之快取線中,項目B626之分支指令可能還早於項目A624 之分支指令。 [0120] LEN448攔位指出分支指令位元組的長度。在偵 測到一呼叫指令命中BTAC 402時,LEN 448攔位被用來計 算一返回位址,以儲存於圖四之假想呼叫/返回堆疊4〇6。 [0121] CALL位元704指出所快取之目標位址714是否 關聯到一呼叫指令。也就是’如果一呼叫指令由處理器3q〇 執行,且該呼叫指令的目標位址快取於項目6〇2,則call 位元704將被設定。 [0122] RET位元706指出所快取之目標位址714是否關 聯到一返回指令。也就是,如果一返回指令由處理器3〇〇 執行,且該返回指令的目標位址快取於項目602,則RET 位元706將被設定。 [0123] WRAP位元708在分支指令位元組橫跨兩條指令 快取記憶體432之快取線時,會被設定。在一具體實施例 中,WRAP位元708在分支指令位元組橫跨兩條指令快取 記憶體432之半快取線時,會被設定。 41 本紙張尺度適用中國國家標準(CNS)A4規格(21{} x 297公楚) (請先閱讀背面之注意事項再_寫本頁) 訂: --線· 經濟部智慧財產局員工消費合作社印製 A7 1229815 五 經濟部智慧財產局員工消費合作社印製 發明說明(^)
[0124] BDPI(分支方向預測資訊)搁位712包含一 t/nt (taken/not taken,即採行/不採行)襴位瓜與一犯LECT (請先閱讀背面之注意事項再 寫本頁) 位元724。T/NT攔位722包含分支的方向預測,亦即,它 指明了分支S預測會採行或不會採行。較佳者,T/NT棚位 722包含-兩位元之上/下數飽和計數器(up/d(mnsaturating counter),用以指定四種狀態··極可能採行(str〇nglytaken)、 有可能採行(weakly taken )、有可能不採行(weakly n〇t taken ) 與極可月b不採行(strong not taken )。在另一實施例中,τ/ΝΤ 欄位722包含單一 Τ/ΝΤ位元。 ,線· [0125] SELECT位元724用來在下列兩者中作一選擇: BTAC 402 T/NT方向預測722與由BTAC 402之外的分支經 歷表(BHT)(見圖十二)所做的方向預測,如關於圖十二 部分所述。在一具體實施例中,如果在分支執行後,所選 定的預測裝置(亦即,BTAC 402或BHT 1202)準確地預 測了方向,SELECT位元724就不會更新。然而,如果所選 定的預測裝置沒有準確地預測方向而另一個預測裝置正確 地預測方向,SELECT位元724就會更新,以指明是非選定 的預測裝置,而不是所選定的預測裝置。 [0126] 在一具體實施例中,SELECT位元724包含一兩 位元之上/下數飽和計數器,用以指定四種狀態··極可能是 BTAC ( strongly BTAC )、有可能是 BTAC ( weakly BTAC )、 有可能是BHT (weakly BHT)與極可能是BHT (strong BHT)。在此實施例中,如果在分支執行後,所選定的預測 裝置(亦即,BTAC 402或BHT 1202)準確地預測了方向, 42 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 1229815 A7 經濟部智慧財產局員工消費合作社印製 ______________B7_______ 五、發明說明(W) 飽和計數器即朝所選定的預測裝置來計數。如果所選定的 預測裝置沒有準確地預測方向而另一個預測裝置正確地預 測方向,飽和計數器即朝非選定的預測裝置來計數。 [0127] 現請參照圖八,其為依本發明繪示之圖四假想分 支蕷測裝置400之運作流程圖。圖四之BTAC 4〇2由圖四之 提取位址49'5作索引。因此,圖六之bTAC 402比較器604 回應圖六之BTAC 402標記陣列614之虛擬標記616,以產 生圖四之命中訊號452。在步驟802中,圖四之控制邏輯 404檢查命中訊號452,以確定提取位址495是否命中BTAC 402 〇 [0128] 如果BTAC 402之命中並未發生,則在步驟822 中控制邏輯404便不進行假想分支。也就是,控制邏輯404 藉由圖四之控制訊號478控制多工器422,以選取除了 BTAC 402之目標位址352與假想呼叫/返回堆疊406之返回 位址353外的一個輸入。 [0129] 然而,如果BTAC 402之命中確實發生,在步驟 804中,控制邏輯404便會確定圖六之A項目624是否有 效,被看見(seen)與被採行(taken)。 [0130] 若圖七VALID位元702被設定,控制邏輯404 便確定項目624為「有效的」。如果VALID位元702被設 定,由提取位址495所選取之指令快取記憶體432快取線 就被假定為包含一分支指令,而該分支指令之分支預測資 訊則已先快取於A項目624;然而,如上文所討論的,並不 確定所選取的指令快取記憶體快取線包含有分支指令。 43 本藏尺度適用中國國家標準(CNS)A4規格(21() x 297公釐) (請先閱讀背面之注意事項再If寫本頁)
I 訂· 線. 1229815 A7 五、發明說明 [0131] 若項目A 6M之T/NT襴位722指出,所假定的 分支指令方向預期會被採行,則控制邏輯404便確定項目 624「被採行」(taken)。在下述圖十二的具體實施例中, 若所選取的方向指示裝置(direction indicator)指出,所假 疋的分支指令方向預期會被採行,則控制邏輯404便確定 項目624「被採行」。 [0132] 若圖七之beg欄位446大於或等於提取位址495 相對應之最低有效位元(least significant bits ),則控制邏輯 404便確定項目624「被看見」(seen)。也就是,BEG攔 位446與提取位址495相對應之最低有效位元作比較,以 決疋下個指令提取的位置是否位在指令快取記憶體中 對應於A項目624的分支指令位置之前。例如,假設a項 目624之BEG欄位446包含一數值3,而提取位址495之 較低位元值為8。在這種情況下,可能就不會藉此提取位址 495刀支至A項目624的分支指令。因此,控制邏輯4Q4 將不會假想分支至A項目624的目標位址714。這在提取位 址495疋分支指令的目標位址時特別有關係。 [0133] 若A項目624是有效的、預期會被採行且被看 見,在步驟806中,控制邏輯404會檢查圖六之b項目626 是否為有效、被看見與採行。控制邏輯4〇4是以類似於步 驟804對A項目624所用的方式,來決定B項目626是否 為有效、被看見與採行。 [0134] 若A項目624是有效的、預期會被採行且被看 見’但B項目626不是有效的、預期不被採用或者不被看 (請先閱讀背面之注意事項 裝— 寫本頁) 訂· 經濟部智慧財產局員工消費合作社印製 1229815 A7
見,則在步驟812中,控制邏輯404檢查圖七之ret攔位 706 ’以決疋A項目624是否已快取返回指令之資訊。若 RET位元706未被設定’則在步驟8丨4中,控制邏輯404 ,控制圖六之A/B多工器608以選取項目a 624,並藉由控制 訊號478控制多工器422,以假想分支至目標位址訊號352 所提併之BtAC 402項目A 624之目標位址714。相反地, 若RET位先706指出,在提取位址495所選取之指令快取 記憶體432快取線中,可能存在一返回指令,則在步驟818 中,控制邏輯404藉由控制訊號478控制多工器422,以假 想分支至圖四假想呼叫/返回堆疊406之返回位址353。 [0135] 在步驟814或步驟818進行假想分支後,於步驟 816中,控制邏輯404產生一指示於控制訊號482中,表示 已回應BTAC 402而執行一假想分支。也就是,不論處理器 300假想分支至假想呼叫/返回堆疊406之返回位址353,或 是BTAC 402項目A 624之目標位址352,控制邏輯404皆 經 濟 部 智 慧 財 產 局 員 工 消 費 合 作 社 印 製 會於控制訊號482中,顯示已執行一假想分支。當一指令 位元組從指令快取記憶體432進行至圖三之指令緩衝器342 時,控制訊號482會用來設定SB位元438。在一具體實施 例中,控制邏輯404利用項目602之BEG 446欄位,來設 定指令緩衝器342内關聯於分支指令之運算碼位元組之SB 位元438。此分支指令之SBI454在提取位址495命中BTAC 4〇2時,是假定已快取於BTAC 402中。 [0136] 若A項目624是無效的,或預期不被採行,或不 被看見,如步驟804中所確定的,則控制邏輯404在步驟 45 本紙張尺度適用中國國家標準(CNS)A4規格(21〇 X 297公釐) 1229815 A7 B7 五、發明說明(α) 824中便會確定β項目626是否為有效、被看見與被採行。 控制邏輯404是以類似於步驟8〇4對a項目624所用的方 式,來決定B項目626是否為有效、被看見與採行。 [0137] 若B項目626是有效的、預期會被採行且被看 見’則在步驟832中,控制邏輯404檢查RET攔位706, 以決定B項目626是否已快取返回指令之資訊。若RET位 元706未被設定,則在步驟834中,控制邏輯4〇4控制圖 六之A/B多工器608以選取項目β 626,並藉由控制訊號 478控制多工器422,以假想分支至目標位址訊號352所提 供之BTAC 402項目B 626之目標位址714。相反地,若RET 位元706指出,在提取位址495所選取之指令快取記憶體 432快取線中,可能存在一返回指令,則在步驟818中,控 制邏輯404藉由控制訊號478控制多工器422,以假想分支 至假想呼叫/返回堆疊406之返回位址353。 [0138] 在步驟834或步驟818進行假想分支後,於步驟 «16中,控制邏輯404產生一指示於控制訊號482中,表示 已回應BTAC 402而執行一假想分支。 [0139] 若A項目624與B項目626皆是無效的,預期不 被採行,或不被看見,則在步驟822中,控制邏輯404便 不會進行假想分支。 [0140] 若A項目624與B項目626兩者皆為有效的,預 期被採行,且被看見,則在步驟808中,控制邏輯404便 會去確定,在假定的分支指令(其資訊快取於A項目624 與B項目626)中,哪一個是指令快取記憶體432之快取線 46 >紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) ^ (請先閱讀背面之注意事項¾填寫本頁) 訂:
經濟部智慧財產局員工消費合作社印製 1229815 A7 B7 五、發明說明(“) 指令位元組494内,最先被看見之有效且被採行的分支指 令。也就是,如果兩個假定的分支指令都被看見、有效且 被採行,控制邏輯404便藉由比較A項目624與B項目626 之BEG 446攔位,來決定哪一個假定的分支指令具有較小 之記憶體位址。若B項目626之BEG 446的值比A項目624 之BEG 446的值還小,則控制邏輯404便進行至步驟832, 依據B項目626進行假想分支。否則,控制邏輯404便進 行至步驟812,依據A項目624進行假想分支。 [0141] 在一具體實施例中,假想呼叫/返回堆疊406並不 存在。所以,步驟812、818與832皆未執行。 經 濟 部 智 慧 財 產 局 員 工 消 費 合 作 社 印 製 [0142] 從圖八可以看出’本發明有利地提供一裝置,用 以將多個分支指令之目標位址與假想分支資訊快取於一分 支目標位址快取記憶體中一特定之指令快取線,而該分支 目標位址快取記憶體並未整合在指令快取記憶體内。特別 是,分支指令的位置資訊快取於快取線内之BEG攔位446, 有利地使控制邏輯404無需前解碼快取線,就能夠從快取 線内可能的多個分支指令中,決定要假想分支至哪一個。 也就是,BTAC 402在慮及可能有兩個或更多分支指令存在 於所選取快取線之情況下,決定目標位址,而不用知道有 多少分支指令存在於快取線中,假若有的話。 [0143] 現請參閱圖九,其為依本發明繪示之圖四假想分 支預測裝置400使用圖八步驟選取圖四目標位址352之一 運作範例的方塊圖。此範例顯示一值為0x10000009之提取 位址495進行指令快取記憶體432與BTAC 402之檢索,且 47 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 1229815
五、發明說明(θ) 經 濟 部 智 慧 財 產 局 員 工 消 費 合 作 社 印 製 該提取位址495也被送至圖四之控制邏輯4〇4。為了簡明起 見’關於指令快取記憶體432與BTAC 402之多路關聯性 (multi-way associativity)的資訊,像是圖六之多個路與路 多工器606,並未顯示出來。指令快取記憶體432之一快取 線494由提取位址495選取。快取線494包含快取於位址 0x10000002'之一 x86條件跳躍指令(JCC)與快取於位址 OxlOOOOOOC 之一 x86 CALL 指令。 [0144] 此範例也顯示了提取位址495所選取之BTAC 402快取線内A項目602A與B項目602B之一些組成部份。 項目A 602A包含CALL指令之快取資訊,而項目b 602B 包含JCC指令之快取資訊。項目a 602A顯示其VALID位 元702A被設為1,表示其為一有效之項目A6〇2A,亦即, 圖七相關聯之目標位址714與SBI 454是有效的。項目a 602A也顯示出一值為〇x〇c之BEG攔位446A,對應於該 CALL指令之指令指標位址之最低有效位元。項目a 602A 也顯示了 一值為「被採行」之T/NT欄位722A,表示該CALL 指令預期會被採行。回應提取位址495,A項目602A藉由 圖六之訊號624送至控制邏輯404。 [0145] 項目B 602B顯示其VALID位元702B被設為1, 表示其為一有效之項目B602B。項目B602B也顯示出一值 為0x02之BEG欄位446B,對應於該JCC指令之指令指標 位址之最低有效位元。項目B 602B也顯示了 一值為「被採 行」之T/NT欄位722B,表示該JCC指令預期會被採行。 回應提取位址495,B項目602B藉由圖六之訊號626送至 請 先 閱 讀 背 面 之 注
訂 >
48
A7 1229815 五、發明說明(4 ) 控制邏輯404。 (請先閱讀背面之注意事項再d寫本頁) [0146] 此外,BTAC 402將命中訊號#2設定為真,以 顯示提取位址495命中了 BTAC 402。控制邏輯404接收項 目A 602A與項目B 602B,並依照圖八所述之方法,根據命 中訊號452、提取位址495之值以及602A與602B兩個項 目,產生圖六之A/B選擇訊號622。 [0147] 在步驟802中,控制邏輯404依據命中訊號452 被設定為真,而確定BTAC 402有一命中發生。接著於步驟 804中,控制邏輯404依據VALID位元702A被設定,而確 定項目A 602A是有效的。而因T/NT欄位722A顯示為被 採行,控制邏輯404也於步驟804確定項目A 602A是被採 行的。由於BEG攔位446A之值OxOC大於或等於提取位址 495之值0x09對應的較低位元,控制邏輯4〇4亦於步驟804 確定項目A 602A被看見。既然項目A 602A是有效的、被 採行與被看見,控制邏輯404便進行至步驟806。 經濟部智慧財產局員工消費合作社印製 [0148] 於步驟806中,控制邏輯404依據VALID位元 702B被設定,而確定項目B 602B是有效的。而因τ/ΝΤ欄 位722B顯示為被採行,控制邏輯404也於步驟806確定項 目B 602B是被採行的。由於BEG欄位446B之值0x02小 於提取位址495之值0x09對應的較低位元,控制邏輯404 亦於步驟806確定項目B602B未被看見。既然項目B602B 未被看見,控制邏輯404便進行至步驟812。 [0149] 在步驟812中,控制邏輯404透過圖七被清除之 RET位元706而確定關聯於項目A602A所快取的指令不是 49 五、發明說明) 返回指令,並進行至步驟814。在步驟814中,控制邏輯 404產生一 A/B選擇訊號622之值,以驅使圖六之a/b多 工器608選取訊號624上之項目A 602A。這個選擇的動作 導致項目A 602A之圖七目標位址714被選為圖三之目標位 址352 ,送至圖四之提取位址495選擇多工器422。‘ [0150] 因此,從圖九的範例可以看出,圖四之分支預測 裝置400有利地運作,以選取最先、有效、被看見、被採 行之所選定BTAC 402快取線的項目602,將處理器300假 想分支至其中關聯之目標位址714。有利的是,即使有多個 分支指令存在於對應之選定的指令快取記憶體432快取線 494 ’裝置400仍能在不知快取線494内容的情況下,完成 假想分支的動作。 [0151] 現請參閱圖十,其為依本發明繪示之圖四假想分 支預測裝置400偵測與更正錯誤的假想分支預測之運作流 程圖。從指令緩衝器342接收一指令後,在步驟1002中, 圖四之指令解碼邏輯436便解碼該指令。尤其、指令解碼 邏輯436將指令位元組流(stream instmcti〇n)格式 化成一不同的X86巨指令,並確定該指令的長度以及是否 為分支指令。 [0152] 接著,在步驟1〇〇4中,圖四之預測檢查邏輯4〇8 測定所解碼指令中,是否有任何指令位元組之SB位元438 被設定。也就是,預測檢查邏輯4〇8測定是否先前已基於 現行解碼的指令命中BTAC 402,而執行一假想分支。若沒 有執行任何假想分支,則不會採取行動去更正。 50 本紙張尺度適用中國國家標準(CNS)A4規^^ 297公釐) 1229815 A7 B7 五、發明說明(π ) [0153] 若有執行一假想分支,則在步驟1012中,預測 檢查邏輯408會檢查現行解碼的指令,以確定該指令是否 為非分支指令。較佳者,預測檢查邏輯408會測定該指令 是否為x86指令集之非分支指令。 [0154] 如果該指令不是分支指令,則在步驟1022.中, 預測檢查邏輯408將圖四之ERR訊號456設定為真,以表 示偵測到一'錯誤的假想分支。此外,藉由圖四之更新訊號 442,BTAC 402得以更新,而清除圖六對應之BTAC 402 項目602之圖七VALID位元702。再者,圖三之指令緩衝 器342會清除掉因此一錯誤的假想分支而從指令快取記憶 體432誤取的指令。 [0155] 如果該指令不是分支指令,則在步驟1〇24中, 控制邏輯404接著控制圖四之多工器422,以分支至指令解 碼邏輯436所產生之CIP 468,更正該錯誤的假想分支。步 驟1024中所進行的分支,將使得包含該指令之指令快取記 憶體432快取線重新被提取與作假想預測。然而,這次該 指令之VALID位元702將被清除;因此,該指令將不執行 任何假想分支,藉以更正先前錯誤之假想分支。 [0156] 若在步驟1012中已確定該指令為一有效的分支 指令,則在步驟1014中,預測檢查邏輯408會確定在所解 碼指令的指令位元組内’位於非運算碼(n〇n-〇pC〇Cie)位元 組位置的指令,有否任何位元組之SB位元438被設定。也 就是,雖然一位元組可能包含一處理器300指令集之有效 運算碼值,該有效運算碼值卻可能位於一個就指令格式而 51 本紐:張尺度適用中國國家標準(CNS)A4規格(210 X 297公餐了 (請先閱讀背面之注意事項再^寫本頁) ^寫士 線· 經濟部智慧財產局員工消費合作社印製 A7 B7 1229815 五、發明說明(4) 0是無效之位元組位置。對一 x86指令而言,除了前置位 元組外,運算碼位元組應該是指令的第一個位元組。例如, 對於在指令的立即資料(immediate data)或位移欄位 (displacement field)中,或者因虛擬別名化而在一娜指 令 mod R/M 或 S]:B ( Scale Index Base,比例-索引 _基底)位 元組中所含的分支運算碼值,SB位元438可能因之而錯誤 地被设定。若分支運算碼位元組位於非運算碼位元組位 置,則執行步驟1022與1024以更正錯誤的假想預測。 [0157] 若在步驟1〇12中,預測檢查邏輯408確定該指 令為一有效的分支指令,且在步驟1〇14中,確定沒有非運 算碼位元組的SB位元438被設定,則在步驟1016中,預 測檢查邏輯408會確定是否有假想與非假想指令長度上的 不吻合。也就是,預測檢查邏輯408將步驟1002中指令解 碼邏輯436產生之非假想指令的長度與BTAC 402產生之圖 七假想LEN 448攔位作一比較。若指令長度不吻合,則執 行步驟1022與1024以更正錯誤的假想預測。 經濟部智慧財產局員工消費合作社印製 [0158] 若在步驟1〇12中,預測檢查邏輯408確定該指 令為一有效的分支指令,且在步驟1014中,確定只有運算 碼位元組的SB位元438被設定,以及在步驟1016確定指 令長度吻合,則該指令便順著管線300而下,直至抵達圖 三之E-階段326。在步驟1032中,E-階段326解析出圖三 之正確的分支指令目標位址356,並確定圖四之正確的分支 方向 DIR481。 [0159] 接著,在步驟1034中,預測檢查邏輯408確定 52 張尺度適用中國國家標準(CNS)A4規格(210 X 297公' A7 B7
1229815 五、發明說明(j:V) BTAC4〇2是否錯誤預測了分支指令的方向。也就是,細 檢查邏輯408將E-階段326所解析之正確方向DIR 481與 BTAC 402產生之圖七預測722作比較,以確定是否已執行 1 一錯誤的假想分支。 [0160] 若BTAC 4〇2預測了 一錯誤的方向,則在步驟 1042中,預測檢查邏輯408將ERR訊號456設定為真,以 告知控制邏輯404此錯誤。因此,控制邏輯4〇4便藉由圖 四之更新訊號442,來更新圖六對應之btac 402項目602 之BTAC 402方向預測722。最後,在步驟1〇42中,控制 邏輯404會清除掉管線300中因該錯誤的假想分支而^指 令快取§己憶體432誤取的指令。接著,在步驟1Q44中,控 制邏輯404驅使多工器422選取圖四之NSIP 466,使處理 器300分支至分支指令之下個指令,以更正該錯誤的假想 分支。 經濟部智慧財產局員工消費合作社印製 [0161] 若在步驟1034中無方向的錯誤,則在步驟IQ% 中,預測檢查邏輯408會確定是否BTAC 402或假想呼叫/ 返回堆疊406錯誤地預測了分支指令之目標位址。也就是, 若處理器300假想分支至BTAC 402目標位址352,則預測 檢查邏輯408會檢查圖四比較器489的結果485,以確定是 否假想目標位址352不吻合所解析的正確目標位址356。另 一種情況是’若處理器300假想分支至假想呼叫/返回堆疊 406返回位址353,則預測檢查邏輯408會檢查圖四比較器 497的結果487,以確定是否假想返回位址353不吻合所解 析的正確目標位址356。 53 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 1229815 A7
請 先 閱 讀 背 面 之 注 意 f裝 暑裝
1229815 Α7 Β7 五、發明說明d) LEN448與WRAP 708攔位寫入通當的值,圖七之CALL704 與RET 706位元則被清除。在此範例中,假定T/NT欄位 722顯示出所快取之分支將被採行,且JMP快取於BTAC 402快取線之A項目624中。 [0165] 現行程式碼序列包含一位於0x00000010之ADD (算術加)指令,與先前程式碼序列中之JMP指令的虛擬 位址相同。‘現行程式碼序列中位置0x00001234是SUB (算 術減)指令,位置0x00001236則是INC (算術遞增)指令。 [0166] 表格1100包含八行(c〇iumn)與六列(row)。 第一列的後七行代表七個時脈週期(clock cycle),從1至 7。第一行的後五列代表管線300最先的五個階段,即I-階 段302、B-階段304、U-階段306、V-階段308與F-階段312。 表格1100之其它方格則顯示當執行現行程式碼序列時,在 不同時脈週期中每個階段的内容。 [0167] 在時脈週期丨期間,BTAC 402與指令快取記憶 體432被存取。ADD指令顯示於I-階段302。圖四值為 0x00000010之提取位址495檢索BTAC 402與指令快取記 憶體432 ’依據圖八之流程決定是否需要進行一假想分支。 在圖十一的範例中’ 一值為〇χ〇〇〇〇〇〇1〇之提取位址495會 命中BTAC 402,如下所述。 [〇168]在時脈週期2期間,ADD指令顯示於B-階段 304。這是指令快取記憶體432提取週期㈤也cyde)之第 二個時脈。標記陣列614提供標記616,而資料陣列612提 供圖六之項目602,每個項目602包括圖七之目標位址714 張尺度適用中國國^1^ns)A4規格⑵G χ 297公楚)--- (請先閱讀背面之注意事項寫本頁) »!裝 訂· 經濟部智慧財產局員工消費合作社印製 A7 1229815 B7 y —------ 五、發明說明(^) 與SBI454。因為先前程式碼序列之jMP指令在執行後已被 快取,圖六之比較器604便根據圖八之步驟8〇2產生一標 記命中(tag hit)於訊號452上。比較器604也藉訊號618 控制路多工器606去選取適當的路。控制邏輯4〇4檢查A 項目624與B項目626之SBI 454,在此例中並選擇A項目 624以提供目標位址352與SBI 454。在此例中,控制邏輯 404也依據步驟804與812來決定項目是有效、被採行、被 看見且不是返回指令。 [0169] 在時脈週期3期間,ADD指令顯示於U-階段 306。ADD指令由指令快取記憶體432提供,並問鎖於u-階段306。因為圖八之步驟802至814是在時脈週期2中執 行,控制邏輯404便藉控制訊號478控制圖四之多工器 422,以選取BTAC 402所提供之目標位址352。 [0170] 在時脈週期4期間,ADD指令進行至V-階段 308,在此階段被寫入指令緩衝器342。時脈週期4是假想 分支週期。也就是,處理器300依據圖八之步驟814,開始 提取位於值為0x00001234之快取目標位址352的指令。亦 即,根據圖八,提取位址495被改為位址0x00001234,以 完成假想分支至該位址的動作。因此,位於位址〇x〇〇〇〇1234 之SUB指令,在時脈週期4是顯示於I-階段302。此外, 控制邏輯404藉圖四之訊號482指出,已執行一假想分支。 所以,根據圖八之步驟816,指令缓衝器342中一 SB位元 438對應於ADD指令被設定。 [0171] 在時脈週期5期間,偵測到假想分支中的錯誤。 56 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公爱) (請先閱讀背面之注意事項寫本頁) S·. 裝 經濟部智慧財產局員工消費合作社印製 1229815 A7 B7 經濟部智慧財產局員工消費合作社印製 五、發明說明(si) ADD指令進行到F-階段312。SUB指令進行至B-階段304。 位於下個循序指令指標之INC指令,則顯示於j·階段3〇2。 圖四之F_階段312指令解碼邏輯436解碼ADD指令,並產 、生圖四之CIP 468。預測檢查邏輯408依據步驟1〇〇4,藉訊 號484偵測到關聯於ADD指令之SB位元438被設定。預 測檢查邏輯408依據步驟1012,也偵測到ADD指令是一非 分支指令,並接著依據步驟1022將圖四之ERR訊號456 設為真,以表示在週期4中已執行錯誤的假想分支。 [0172] 在時脈週期6期間,使錯誤的假想分支無效。依 據步驟1022,指令緩衝器342被清空。尤其,ADD指令從 指令緩衝器342中清除。此外,依據步驟1〇22,導致錯誤 假想分支之項目602所關聯之VAUD位元702則被清除, 以更新BTAC 402。再者,控制邏輯404控制多工器422, 以選取CIP 468作為下個週期之提取位址495。 [0173] 在時脈週期7期間,更正錯誤的假想分支。處理 器300開始從指令快取記憶體·432提取位於ADD指令之指 令指標的指令,該ADD指令是在時脈週期5偵測到錯誤 時,由指令解碼邏輯436所解碼的。也就是,處理器3〇〇 依據步驟1024分支至對應於ADD指令之CIP 468,藉以更 正在時脈週期5所執行之錯誤的假想分支。因此,AbD指 令在時脈週期7是顯示於I-階段302。這次,ADD指令將 順著管線300而下並執行。 [0174] 現請參閱圖十二,其為依本發明繪示之圖四分支 預測裝置400包含一混合假想分支方向預測裝置12〇〇的 (請先閱讀背面之注意事項^^寫本頁) i!裝 上δΊ· 57 1229815 __B7五、發明說明(l7) 經 濟 部 智 慧 財 產 局 員 工 消 費 合 作 社 印 製 一具體實施例之方塊圖。簡單就可以看出,BTAC 402的分 支方向預測愈準確’假想分支至BTAC 402產生之假想目標 位址352就愈能有效地減少分支延遲懲罰。反過來說,錯 誤的假想分支愈不常被更正,如關於圖十部分所述,假想 分支至BTAC 402產生之假想目標位址352就愈能有效地減 少處理器30Θ之平均分支延遲懲罰。方向預測裝置12〇〇包 含圖四之阶八0 402、一分支經歷表(8町)12〇2、互斥或 邏輯(exclusive OR logic ) 1204'全域分支經歷暫存器(gl〇balbranch history registers ) 1206 與一多工器 12〇8 〇 [0175] 全域分支經歷暫存器1206包含一移位暫存器 (shiftregister),對於處理器300所執行之所有分支指令, 全域分支經歷暫存器1206接收其分支指令方向結果(branch instruction direction outcomes) 1212,而該移位暫存器則儲 存分支}曰令方向結果1212的全域經歷。每次處理器3⑻執 行一分支指令,圖四之DIR位元481就被寫入移位暫存器 1206,若分支方向被採行,該位元值為設定;若分支方向 不被採行,該位元值為清除。由此,最老的(〇ldest)位元 就被移出移位暫存器1206。在一具體實施例中,移位暫存 器1206儲存了全域經歷的13個位元。全域分支經歷的儲 存,在分支預測的技術領域中是為人熟知的,對於程式中 咼度依存於其他分支指令的分支指令,可改良其結果的預 測。 [0176] 全域分支經歷1206藉訊號1214送至互斥或邏輯 1204’以與圖四之提取位址495進行一邏輯的互斥或運算。 請 先 閱 讀 背 面 之 注
訂 «
58
1229815 A7 _______B7____ 五、發明說明(il) [0180] 多工器1208從分支經歷表1202接收兩個方向預 測位元T/NT-A/B 1222,並從BTAC 402接收A項目624 與B項目626各自之圖七τ/ΝΤ方向預測722。多工器1208 亦從BTAC 402接收A項目624與B項目626各自之 SELECT位元724,作為選擇控制訊號。a項目624之 SELECT位元724從兩個A輸入中選取一 T/NT給A項目 624。B項g 626之SELECT位元724從兩個B輸入中選取 一 T/NT給B項目626。所選取的兩個τ/ΝΤ位元1224被送 至控制邏輯404,透過圖四之訊號478,用於控制多工器 42,2。在圖十二之實施例中,所選取的兩個T/NT位元1224 分別包含於項目A 624與項目B 626,被送至控制邏輯404, 如圖六所示。 [0181] 可以看出,若處理器300分支至目標位址352, 經 濟 部 智 慧 財 產 局 員 工 消 費 合 作 社 印 製 且該位址352是BTAC 402依據(至少部分是)分支經歷表 1202所提供之方向預測1222而產生,則該分支是以假想的 方式進行。談分支是假想的,此因雖然命中BTAC 402已指 出一分支指令先前存在於提取位址495所選取之指令快取 記憶體432快取線中,但仍無法確定一分支指令位於所選 取之指令快取記憶體432快取線中,如上所討論的。 [0182] 也可以看出,比起單單只有bTAC 402方向預測 722,圖十二之混合分支方向預測裝置12〇〇可能有利地提 供一更準確的分支方向預測。尤其,一般而言,對於高度 依存於其它分支經歷的分支而言,分支經歷表1202提供了 較準確的預測;反之,對於並非高度依存於其它分支經歷 60 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公楚)"' ---- 1229815 A7 --------- B7___ 五、發明說明(j| ) —^ ' 互斥或邏輯觀的輸出1216作為分支經歷表㈣之拿 引。在分支預測的技術領域中,互斥或邏輯12〇4所執行的 功能一般都稱為gshare運算。 、[0Π7]分支經歷表12〇2 &含—儲存元件的陣列,以儲 存複數個刀支;曰令之分支方向結果的經歷。該陣列由互斥 或邏輯贈的輸幻216作為索引。當處理器300執行-分支指令,·由互斥或邏輯12G4的輸出1216所檢索之分支 經絲1202之陣列元件便透過訊號1218選擇性地加以更 新,而訊號1218的内容則視解析分支方向DIR481而定。 [0178] 在一具體實施例中,分支經歷表12〇:2陣列中的 每個儲存元件包含兩個方向制:A與B方向刪。較佳 者,如圖所示,分支經歷表12〇2產生A與B方向預測於 T/NT一A/B 1222訊號上,針對bTAC 402產生之圖六a項目 624與B項目626各指定一方向預測以供選取。在一具體實 施例中,分支經歷表1202之儲存元件陣列包含4096個項 目,每個可儲存兩個方向預測。 經濟部智慧財產局員工消費合作社印製 [0179] 在一具體實施例中,a與b預測各包含單一 Τ/Ντ (taken/not taken,即採行/不採行)位元。在此實施例中, 該T/NT位元更新為DIR位元481之值。在另一具體實施例 中,A與B預測各包含一兩位元之上/下數飽和計數器,指 定了四種狀態:極可能採行(str〇ngly taken)、有可能採行 (weakly taken )、有可能不採行(weakiy n〇t taken )與極可 能不採行(strong not taken)。在此實施例中,飽和計數器 朝DIR位元481指出的方向來計數。
1229815
經濟部智慧財產局員工消費合作社印製 的分支而言,則是BTAC 402提供了較準確的預測。就一既 定之分支而言,藉由SELECT位元724能選擇較準確的預 利裝置因此,可以看出,圖十二之方向預测裝置〗2〇〇能 .有利地與BTAC 402協同運作,以使用BTAC 402所提供之 目標位址352進行更準確的假想分支。 · [0183] 現請參閱圖十三,其為圖四之雙呼叫/返回堆疊 406、/、414之運作流程圖。電腦程式的一項特性是,可能從 程式内多個位置來呼叫副程式(subr〇utine)。所以,副程 式内一返回指令之返回位址可能變來變去。因此,可以看 出,利用分支目標位址快取記憶體去預測返回位址通常很 不容易,從而呼叫/返回堆疊的出現,實有其必要。本發明 之雙呼叫/返回位址堆疊的架構提供了本發明之假想BTAC 的好處,像是在管線300早期即預測分支目標位址,以減 少分支懲罰。除此之外,還廣泛提供了呼叫/返回堆疊的優 點,亦即,比一簡單的BTAC402更準確地預測返回位址。 [0184] 在步驟1302中,圖四之BTAC 402由圖四之提取 位址495作索引,而圖四之控制邏輯4〇4檢查命中訊號 452,以確定提取位址495是否命中BTAC 402,還檢查SBI 454之VALID位元702 ’以確定所選取之btaC 402項目 602是否有效。若BTAC 402之命中未發生或VALI〇位元 702未被設定,則控制邏輯404並不會使處理器3⑻進行假 想分支。 [0185] 若在步驟1302期間一有效之BTAC 4〇2命中發 生’則在步驟1304中,控制邏輯4〇4會檢查圖四弧454 61
(請先閲讀背面之注意事
t: ·
本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公着) A7 1229815 五、發明說明(Gf ) 之圖七CALL位元704,以確定所快取之分支指令假想地或 大概地是否為一呼叫指令。若CALL位元704被設定,則 在步驟1306中,控制邏輯404控制假想呼叫/返回堆疊4〇6, 以將假想返回位址491推入其中。也就是,該假定的呼叫 指令之叙想返回位址491,其為圖四之提取位址495 v HEG 446與LEN 448之總和,儲存於假想呼叫/返回堆疊4〇6。假 想返回位址'491之所以為假想的,乃因在命中BTAC 402 之提取位址495所關聯之指令快取記憶體432快取線中, 並不確定真有包含一呼叫指令,更別說是BEG 446與LEN 448因之而被快取於BTAC 402的呼叫指令了。假想返回位 址491,或目標位址,在下一次執行返回指令時,可由返回 位址訊號353提供,以便假想分支至此返回位址491,就如 下文關於步驟1312至1318所述。 [0186]若Call位元704被設定,則在步驟1308中,控 制邏輯404接著控制多工器422去選取圖三之BTAC 402 目標位址352,以假想分支至目標位址352。 [〇 187]若控制邏輯404在步驟1304確定CALL位元704 未被設定,則在步驟1312中,控制邏輯404會檢查SBI454 之圖七RET位元706,以確定所快取之分支指令假想地或 大概地是否為一返回指令。若RET位元706被設定,則在 步驟1314中,控制邏輯404控制假想呼叫/返回堆疊406, 以將圖三之假想返回位址353從堆疊頂端取出。 [0188]在取出假想返回位址353後,則在步驟1316中, 控制邏輯接著控制多工器422去選取從假想呼叫/返回堆疊 (請先閱讀背面之注意事項^寫本頁) __良 線“ 經濟部智慧財產局員工消費合作社印製 62 1229815
五、發明說明((Η 經濟部智慧財產局員工消費合作社印製 406取出之假想返回位址353,以假想分支至返回位址353。 [0189] 返回指令順著管線3〇〇而下,直至抵達圖三之F_ 階段312,圖四之指令解碼邏輯436則解碼此假定之返回指 々右此假疋之返回指令的確是一返回指令,則圖四之非 假想呼叫/返回堆疊414產生此返回指令之圖三非假想返回 位址355。在步驟1318中,圖四之比較器418將假想返回 位址353與非假想返回位址355作比較,並將結果714送 至控制邏輯404。 [0190] 在步驟1318中,控制邏輯404檢查比較器418 的結果474 ’以確定是否有不吻合發生。若假想返回位址 353與非假想返回位址355不相吻合,則在步驟1326中, 控制邏輯404會控制多工器422選取非假想返回位址355, 以使處理器300分支至非假想返回位址355。 [0191] 若控制邏輯404於步驟1304中確定CALL位元 704並未設定’且於步驟1312中確定证了位元7〇6也未設 定’則在步驟1322中,控制邏輯404會控制多工器422假 想分支至圖三之BTAC 402目標位址352,如圖八步驟814 或834所描述的。 [0192] 因此’從圖十三可看出,圖四之雙重坪叫/返回堆 疊的運作可減少呼叫與返回指令的分支懲罰。這種分支懲 罰的減少’是藉由將處理器3〇〇結合BTAC 402,使呼叫與 返回指令在管線更早期就進行分支,同時也克服以下現 象··由於副程式一般都從一些不同的程式位置來呼叫,返 回指令因而會返回至多個不同的返回位址。 63 本紙張尺度適用巾關家標準(CNS)A4規格(210 X 297公爱) (請先—slf 寫本頁) 裝 訂: --線: A7 1229815 B7 五、發明說明(“) [0193] 現請參照圖十四,係為說明圖四之分支預測裝置 400以非假想分支預測來選擇性地覆蓋(〇veiTide)假想分 支預測,藉以改進本發明之分支預測準確度之運作流程 圖。在從指令緩衝器342接收一指令後,在步驟14〇2中, 圖四之指令解碼邏輯436便解碼該指令,圖四之非假想目 標位址計算器416 '非假想呼叫/返回堆疊414以及非假想 分支方向預侧裝置412則依圖四之指令解碼資訊492產生 非假想分支預測。指令解碼邏輯436在步驟1402中,產生 該指令之類型資訊於指令解碼資訊492中。 [0194] 尤其,指令解碼邏輯436會確定該指令是否為分 支指令、指令之長度以及分支指令的類型。較佳者,指令 解碼邏輯436會確定分支指令是否為條件或無條件類型分 支才曰令pc相關類型分支指令、返回指令、直接類型分支 指令或間接類型分支指令。 [0195] 若該指令為-分支指令,非假想分支方向預測裝 置412會產生圖四之非假想方向預測444。此外,非假想目 標位址計算器416則計算圖三之非假想目標位址354。最 後,若該指令為一返回指令,則非假想呼叫/返回堆疊414 產生圖三之非假想返回位址355。 [0196] 在步驟1404中,控制邏輯404會確定分支指令 是否為條件分支指令。也就是,控制邏輯彻會確定該指 令疋否依罪一條件而被採行或不被採行,該條件像是旗標 (flag )位兀是否設定,如零旗標(_ flag )、進位旗標(^胃 flag)等等。在x86齡集中,JCC指令是條件類型的分支 64 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐Ί-------——- (請先閱讀背面之注意事項冷填寫本頁) :裝 經濟部智慧財產局員工消費合作社印製 A7 1229815 B7____ 五、發明說明(以) 指令。相對地,RET、CALL與JUMP指令,則是無條件分 支指令,因為這些指令總會有一被採行的方向。 [0197] 若該指令為條件類型的分支指令,則在步驟1412 中,控制邏輯404會確定非假想分支方向預測裝置412所 預須!1之非假想方向預測444以及BTAC 402所預測SBI 454 中圖七之假想方向722兩者間,是否不相吻合。 [0198] 若有方向預測上的不吻合,則在步驟1414中, 控制邏輯404會確定非假想方向預測444是否要被採行。 若非假想方向預測444不被採行,則在步驟1414中,控制 邏輯404會控制多工器422選取圖四之NSIP 466,以分支 至現行分支指令後之指令。也就是,控制邏輯404選擇性 地覆蓋假想的BTAC 402方向預測。假想方向預測722之所 以被覆蓋,是因非假想方向預測444 一般比較準確。 [0199] 若非假想方向預測444被採行,則在步驟1432 中,控制邏輯404會控制多工器422分支至非假想目標位 址354。同樣地,假想方向預測722之所以被覆蓋,是因非 假想方向預測444 一般比較準確。 [0200] 若控制邏輯404於步驟1412確定並無方向預測 上之不吻合,且已執行分支指令之假想分支(亦即,若SB 位元438被設定),則在步驟1428中,控制邏輯4〇4會確 定假想目標位址352與非假想目標位址354間是否不相吻 合。若有一條件類型分支之目標位址的不吻合,則在步驟 1432中,控制邏輯404會控制多工器422分支至非假想目 標位址354。假想目標位址預測352會被覆蓋,此因非假想
本紙張尺度適用中國國家標準(CNS)A4規格(210 X (請先閱讀背面之注意事項再填寫本頁) 裝--------訂-------- 經濟部智慧財產局員工消費合作社印製 65 1229815 五 發明說明(〖/) A7
目標位址預測354 —般更為準確。若沒有一條件類型分支 之目標位址的不吻合,則不會採取任何行動。也就是,允 許進行假想分支,並接受錯誤更正的管制,如關於圖十部 分所述。 [0201] 若在步驟1404中,控制邏輯4〇4確定該分支指 令不是條件類型的分支,則於步驟14〇6控制邏輯404會確 定該分支指令是否為返回指令。若該分支指令是返回指 令’則在步驟1418中,控制邏輯404會確定假想啤叫/返回 堆疊406產生之假想返回位址353與非假想呼叫/返回堆疊 414產生之非假想返回位址355兩者間,是否不相吻合。 經 濟 部 智 慧 財 產 局 消 費 合 作 社 印 製 [0202] 若假想返回位址353與非假想返回位址355兩者 不相吻合,則在步驟1422中,控制邏輯404會控制多工器 422分支至非假想返回位址355。也就是,控制邏輯4〇4選 擇性地覆盍假想返回位址353。假想返回位址353之所以被 覆蓋,是因非假想返回位址355 —般比較準確。若沒有一 直接類型分支之目標位址的不吻合,則不會採取任何行 動。也就是,允許進行假想分支,並接受錯誤更正的管制, 如關於圖十部分所述。請注意步驟1418與1422分別對應 到圖十三之步驟1324與1326。 [0203] 若在步驟1406中,控制邏輯404確定該分支指 令不是返回指令,則於步驟1408控制邏輯404會確定該分 支指令是否為PC相關類型的分支指令。在x86指令集中, pC相關類型的分支指令所指定之帶正負號之位移量會加上 現行程式計數器之值,以計算目標位址。 66 本紙張尺度適用中國國家標準(CNS)A4規格(21〇 x 297公釐) 1229815 A7 B7 五、發明說明 [0204] 在另一具體實施例中,控制邏輯4〇4於步驟14〇8 也會確定該分支指令是否為直接類型的分支指令。在χ86 指令集中,直接類型的分支指令於自身内即指定目標位 址。直接類型的分支指令也被稱為立即類型(immediate type)的分支指令’因為目標位址被指定於指令之立即欄位 (immediate'field) 〇 [0205] 若該分支指令為pc相關類型的分支指令,則在 步驟1424中,控制邏輯404會確定假想目標位址352與非 假想目標位址354間是否不相吻合。若有一 Pc相關類型分 支之目標位址的不吻合,則在步驟1426中,控制邏輯404 會控制多工器422分支至非假想目標位址354。假想目標位 址預測352會被覆蓋,此因非假想目標位址預測354對pC 相關類型的分支而言一般更為準確。若沒有一 PC相關類型 分支之目標位址的不吻合,則不會採取任何行動。也就是, 允許進行假想分支,並接受錯誤更正的管制,如關於圖十 部分所述。 [0206] 若在步驟1408中,控制邏輯404確定該分支指 令不是PC相關類型的分支指令,則不會採取任何行動。也 就是,允許進行假想分支,並接受錯誤更正的管制,如關 於圖十部分所述。在一具體實施例中,非假想目標位址計 算器416在F-階段312包含一相當小的分支目標緩衝器 (branch target buffer,BTB),僅用來快取間接類型分支指 令之分支目標位址,如前面關於圖四部分所述。
[0207] 可以看出,對間接類型的分支指令而言,BTAC 67 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) (請先閱讀背面之注意事項^寫本頁)
I I 裝 經濟部智慧財產局員工消費合作社印製 1229815 A7 B7 經 濟 部 智 慧 財 產 局 員 五、發明說明(6;?) 402之預測一般是比相當小之F-階段312 BTB更為準確。 所以,若確定该分支為一間接類型的分支指令,控制邏輯 404不會覆蓋BTAC 402之假想預測。也就是,若一間接類 型分支指令之假想分支因圖八所述之BTAC 402命中而執 行,則控制邏輯404會藉由分支至間接類型的BTB目標位 址,而不覆蓋該假想分支。然而,即使在此間接類型的分 支中,BTAC 402所產生之假想目標位址352未被非假想目 標位址354給覆蓋,在管線300稍後仍會於假想目標位址 352與圖三從S-階段328接收之非假想目標位址356兩者 間,做一目標位址的比較,以執行圖十之步驟1036,偵測 錯誤的假想分支。 [0208] 現請參照圖十五,其為依本發明繪示之用來置換 圖四BTAC 402中目標位址之裝置的方塊圖。為了簡明起 見,關於BTAC 402之多路關聯性的資訊,像是圖六之多路 與路多工器606,並未顯示。圖六BTAC 402之資料陣列612 顯示其包含了一選定之BTAC 402快取線,其中具有項目A 602A與項目B 602B,分別藉由圖六之訊號624與626送至 控制邏輯404。項目A602A與項目B602B各包含其相關之 圖七VALID位元702。 [0209] 該選定之BTAC 402快取線亦包括一 A/B LRU (least recently used )位元1504 (亦可稱為指示器 (indicator)),以指出項目A 602A與項目B 602B兩者中, 哪一個最近最少被使用到。在一具體實施例中,每次一發 生命中BTAC 402之一既定目標位址714,A/B LRU位元 68 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公楚) (請先閱讀背面之注意- ϋ 1 ·1 I -I ϋ •事項寫本頁) A7
五、發明說明(Gp 1229815 1504就被更新’以指定發生命中項目的相對項目。也就是, 若控制邏輯404因項目A 602A發生命中而進行至圖八之步 驟812,則A/B LRU位元1504就被更新成顯示項目B 602B。相反地,若控制邏輯404因項目B 602B發生命中而 進行至圖八之步驟832,則A/B LRU位元1504就被更新成 顯示項目A '602A。A/B LRU位元1504也被送至控制邏輯 404 〇 [0210] 此置換裝置也包含一多工器1506。多工器15〇6 接收圖四提取位址495與一更新指令指標(ip)作為輸入。 多工器1506依據控制邏輯404提供之讀/寫控制訊號1516 來選取其中一輸入。讀/寫控制訊號1516亦被送至BTAC 402。當讀/寫控制訊號1516顯示為「讀」,則多工器1506 選取提取位址495,經由訊號1514送至BTAC 402,以讀取 BTAC 402。當讀/寫控制訊號1516顯示為「寫」,則多工 器1506選取更新IP 1512,經由訊號1514送至BTAC 402, 以藉圖四訊號442將一更新目標位址714與/或SBI 454與/ 或 A/B LRU 位元 1504 寫入 BTAC 402。 經 濟 部 智 慧 財 產 局 員 工 消 费 合 作 社 印 製 [0211] 當一分支指令執行且被採行,該分支指令之目標 位址714以及相關聯之SBI 454會被寫入,或快取於,一 BTAC 402項目602。也就是,用已執行之分支指令的新目 標位址714及相關聯之SBI 454來更新BTAC 402。控制邏 輯404必須決定在BTAC 402的哪一邊,A或B,來更新由 更新IP 1512選取之BTAC 402快取線與路。也就是,控制 邏輯404必須決定是否要置換所選取之快取線與路的項目 69 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 1229815
五、發明說明( A 602A或項目B 602B。控制邏輯4〇4如下表一所示來決定 置換哪一邊。
VaUdA Ο Ο JValid^ Ο 1 Ο 丄 表一
Replace -LastWritten A B LRU (請先閱讀背面之注意* --裝 事項寫丄 寫本頁) [0212] 表-為具有兩個輸入之真值表(祕職),兩 個輸入為項目A 602A之VAUD位元7Q2與項目B 6〇2b之 VALID位兀7〇2。該真值表的輸出用以決定要置換btac 402的哪一邊。如表一所示,若A項目罐無效且b項 目602B有效,則控制邏輯姻將a項目6〇2A置換掉。 若A項目602A有效且B項目602B無效,則控制邏輯4〇4 將B項目6_置換掉。若A項目6·與B項目⑽b 皆有效,則控制邏輯4〇4將最近較少被使用之項目置換掉, 而此項目是由更新IP 1512所選取BTAC 快取線與路中 之A/BLRU位元1504來指定。 ^ [0213] 若A項目602A與B項目麵皆無效,則控 邏輯4〇4必須決定要置換哪—邊。一種解決方式是總是寫 到某-邊,如A。然、而,這種解決方式會造成如下程^鬼 列1所示之問題。 w 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297
經濟部智慧財產局員工消費合作社印製 1229815
五、發明說明(y) 經濟部智慧財產局員工消費合作社印製 0x00000010 JMP 0X00000014 0x00000014 ADD BX,1 0x00000016 CALL 0x12345678 程式碼序列1 ι [0214] 在程式碼序列1中,此三個指令都位在相同的指 令快取記憶體432之快取線内,因為其指令指標位址除了 較低的四個位址位元外餘皆相同;因此,jMp與CALL指 令選取相同的BTAC 402快取線與路。假設此範例中,當指 令執行時,由JMP與CALL指令所選取BTAC 402快取線 與路内之A項目602A與B項目602B皆無效。使用「當 兩個項目皆無效時,總是更新A這一邊」的解決方式,JMP 指令將見到兩邊皆為無效,且將更新A項目602A。 [0215] 然而,由於在程式序列中CAll指令相當接近 JMP指令,若管線相當長,如處理器300,則在A項目602A 的VALID位元702被更新前,有相當多數量之週期可能會 通過。因此,在BTAC 402被已執行的JMP指令更新前, 特別是在A項目602A的VALID位元702與所選取BTAC 402快取線之BTAC 402路置換狀態被JMP指令更新之前, CALL指令非常有可能會選取BTAC 402。所y,CALL指 令將見到兩邊皆為無效,而且也將依「當兩個項目皆無效 時,總是更新A這一邊」的解決方式,來更新A項目602A。 這樣做是有問題的,因為JMP指令之目標位址714將由於 71 本紙張尺度適用中國國豕標準(CNS)A4規格(210 X 297公爱) (請先閱讀背面之注意事 ·!·裝 场 寫本頁) 訂-
1229815 A7 __ B7 五、發明說明(") 一空的亦即無效的B項目602B可用來快取CALL指令之 目標位址714而不必要地被取代。 [0216] 為解決如表一所示的問題,若a項目6〇2八與]3 項目602B皆無效,則控制邏輯404會有利地選取存於一全 域查換狀態旗標暫存器LastWritten 1502 (亦可稱為指示器 (indicator))之一邊或其相反邊。LastWritten暫存器1502 包3於置換裝置’並由其來更新。LastWritten暫存器1502 儲存一指示,其顯示就BTAC 402整體而言,其A邊或B 邊是否為最後被寫到一無效的BTAC 402項目602。有利 地,此方法使用LastWritten暫存器1502以避免前面程式碼 序列1所示之問題,如現在關於圖十六與十七部分所要敘 述的。 [0217] 現印參照圖十六,其係依本發明繪示圖十五裝置 之一運作方法的流程圖。圖十六闡明了上述表一之一呈 實施例。 [0218] 當控制邏輯404需要去更新BTAC 402之項目 經 濟 部 智 慧 財 產 局 呈 消 費 合 作 社 印 製 602時’控制邏輯404會分別檢查所選取之a項目6〇2A與 B項目602B之VALID位元702。在步驟1602中,控制邏 輯404會確定是否a項目602A與B項目602B兩者皆為 有效。若兩個項目皆有效,則在步驟16〇4中,控制邏輯4〇4 會檢查A/BLRU位元1504以確定A項目602A或B項目 6〇2B為最近最少被使用者。若A項目602A為最近最少被 使用者,則控制邏輯404於步驟16〇6將A項目6〇2A置換 掉。若B項目602B為最近最少被使用者,則控制邏輯4〇4
A7 1229815 —----—--—-___— 五、發明說明 於步驟1608將B項目602B置換掉。 [0219] 若控制邏輯404於步驟1602中確定並非兩個項 目都無效,則在步驟1612中,控制邏輯4〇4會確定是否為 A項目602A有效而B項目602B無效。若是,則控制邏& 404於步驟1614將B項目602B置換掉。不然,在步驟1622 中,控制邏輯404會確定是否為a項目6〇2A無效而3項 目602B有效。若是,則控制邏輯4〇4於步驟1624將A項 目602A置換掉。否則,在步驟1632中,控制邏輯4〇4會 檢查LastWritten暫存器1502。
[0220] 若 LastWritten 暫存器 1502 顯示 BTAC 402 之 A 邊並非最後被寫到一選定之快取線與路中,而在此選定之 快取線與路中A項目602A與B項目602B皆為無效,則 控制邏輯404於步驟1634將A項目602A置換掉。控制邏 輯404接著於步驟1636更新LastWritten暫存器1502,以指 定BTAC 402之A邊為最後被寫到一選定快取線與路之 邊,而在此選定之快取線與路中A項目6〇2A與B項目 602B皆為無效。
[0221] 若 LastWritten 暫存器 1502 顯示 BTAC 402 之 B 邊並非最後被寫到一選定之快取線與路中,而在此選定之 快取線與路中A項目602A與B項目602B皆為無效,則 控制邏輯404於步驟1644將B項目602B置換掉。控制邏 輯404接著於步驟1646更新LastWritten暫存器1502,以指 定BTAC 402之B邊為最後被寫到一選定快取線與路之 邊,而在此選定之快取線與路中A項目6〇2A與B項目 73 本紙張尺度適用中國國豕標準(CNS)A4規格(21〇 X 297公爱) (請先閲讀背面之注意事項5i填寫本頁} CS· rl裝 經濟部智慧財產局員工消費合作社印製 1229815 A7 五、發明說明(/7$) 602B皆為無效。 [0222] 可以看出,圖十六的方法可避免在上述程式碼序 列1中,以CALL指令的目標位址覆寫掉】]^指令的目標 位址。假設當JMP指令執行時,LastWritten暫存器15〇2指 疋了 A邊。既然B邊並不是最後被寫的,控制邏輯4〇4將 依據圖十六與表一來更新B項目6〇2B。此外,控制邏輯 404將更新LastWritten暫存器1502以指定B邊。因此,當 CALL指令執行時,控制邏輯4〇4將依據圖十六更新a項目 602A ’此因當BTAC 402被選取時,兩個項目皆無效,且 LastWritten暫存器1502指明了 a邊並不是最後被寫到。因 此’有利地,JMP與CALL指令兩者的目標位址將快取於 BTAC402,供後續的假想分支使用。 [0223] 現印參照圖十七,其係依本發明之另一具體實施 例繪示圖十五裝置之一運作方法的流程圖。圖十七之步驟 除了兩個額外步驟外,其餘皆與圖十六之步驟相同。在此 另一具體實施例中,控制邏輯4〇4在置換一無效的項目後, 會更新LastWritten暫存器1502,即使另一項目為有效的。 [0224] 因此,在圖十七,於步驟1614置換了 B項目6〇2b 後,在步驟1716中,控制邏輯4〇4將更新LastWritten暫存 器1502以指定B邊。此外,於步驟1624置換了 A項目6〇2a 後,在步驟1726中,控制邏輯404將更新LastWritten暫存 器1502以指定A邊。 [0225] 雖然實際的模擬並未看到圖十六與十七的實施 例在效能上有顯著差別,但可看出圖十六實施例解決了圖 74 本紙張尺度適用中國國家標準(CNS)A4規格(21〇 X 297公£ (請先閱讀背面之注意事項再填寫本頁) »!裝 訂: 經 濟 部 智 慧 財 產 局 員 工 消 費 合 作 社 印 製 1229815 Α7 Β7 經濟部智慧財產局員工消費合作社印製 五、發明說明( 十七實施例所無法處理的一個問題。此問題以下述程式碼 序列2來解說。 0x00000010 JMP 0x12345678 0x12345678 JMP 0x00000014 ' 0x00000014 JMP 0x20000000 程式碼序列2 [0226] 位於指令指標0x00000010與ΟχΟΟΟΟΟΟΜ的兩個 JMP指令都在同一條指令快取記憶體432快取線中,並選 取BTAC 402内相同之快取線。位於指令指標〇χΐ2345678 的JMP指令則在另一條指令快取記憶體432快取線中,並 選取BTAC 402内另一條不同之快取線。當JMP 0x12345678 指令執行時,假設有下列情況存在。LastWritten暫存器1502 指定了 B 邊。由 JMP 0x12345678 指令與 JMP 0x20000000 指令之指令指標所選取BTAC 402快取線與路中的A項目 602A與B項目602B兩者皆為無效。由JMP Οχ〇〇〇〇〇〇ΐ4 指令之指令指標所選取的BTAC 402快取線與路則顯示a 項目602A有效而B項目602B無效。假設在JMP 0x12345678 指令更新 BTAC 402 前,執行 JMP 0x20000000 指令。因此,JMP 0x12345678 與 JMP 0x20000000 指令之指 令指標在相同BTAC 402快取線中選取相同的路。 [0227] 依據圖十六與十七,當_ 0χ12345678執行時, 控制邏輯404將於步驟1634以JMP 0x12345678之目標位 75 (請先閱讀背面之注意 11 填寫本頁) 裝 •線: 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) A7 B7 1229815 五、發明說明(<) 址來置換A項目602A,並在步驟1636更新LastWritten暫 存器1502以指定a邊。依據圖十六與十七,當JMp 0x00_014執行時,控制邏輯4〇4將於步驟1614以JMp 0x00000014之目標位址來置換b項目602B。依據圖十七, 控帝j邏輯404將於步驟1716更新LastWritten暫存器11502 以指定B邊'。然而,依據圖十六,控制邏輯4〇4將不會更 新 LastWritten 暫存器 1502;而是,LastWritten 暫存器 1502 將繼續指定A邊。因此,當jMp 0x00000020執行時,依據 圖十七’控制邏輯404將於步驟1634以JMP 0x00000020 之目標位址來置換A項目6〇2A,藉以needlessly d〇bbering JMP 0x12345678之目標位址。相反地,依據圖十六,當jmp 0x00000020執行時,控制邏輯404將於步驟1644置換B項 目602B ’藉以有利地使a項目602A中JMP 0x12345678 之目標位址保持不變。 [0228] 現請參照圖十八,其係依本發明之另一具體實施 例繪示之用以進行圖四BTAC 402中目標位址置換動作之 裝置方塊圖。圖十八之實施例類似於圖十五之實施例。然 而,在圖十八之實施例中,A/BLRU位元1504與兩個項目 之 T/NT 位元 722,顯示為 T/NT A 722A 與 T/NT B 722B, 儲存於一另外的陣列1812,而非資料陣列612。 [0229] 此額外的陣列1812是雙埠的;而資料陣列612 卻是單埠。因為A/B LRU位元1504與T/NT位元722比起 項目602之其它攔位更常被更新,對較常被更新的攔位提 供雙埠的存取,可減低在高存取量期間於BTAC 402形成瓶 76 尽紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) (請先閱讀背面之注意事項再填寫本頁) 言· · r 經濟部智慧財產局員工消費合作社印製 1229815 A7 -—~ ---_βΖ____ 五、發明說明) 頸的可能性。然而,由於雙埠的快取記憶體陣列比單埠的 陕取纪憶體陣列來得大,且消耗更多功率,較少被存取的 欄位就儲存在單埠的資料陣列612。 [0230] 現請參照圖十九,其係依本發明之另一具體實施 例絝示之用以進行圖四BTAC 402中目標位址置換動作之 裝置方塊圖'。圖十九之實施例類似於圖十五之實施例。然 而,圖十九之實施例中,每一 BTAC 402快取線與路皆包含 一第二項目’項目C 602C。項目C 602C藉訊號1928送至 控制邏輯404。有利地,圖十九之實施例支援假想分支至三 個分支指令中任一個的能力,而此三個分支指令快取由提 取位址495所選取之一對應的指令快取記憶體432快取線 中;或者,在一實施例中,支援假想分支至快取於一對應 之指令快取記憶體432半快取線之三個分支指令中的任一 個。 [0231] 除此之外’圖十九之實施例不使用LastWritten暫 存器1502 ,取而代之的是一暫存器19〇2,其包含一 LastWritten 值與一 LastWrittenPrev 值。當 LastWritten 值要 更新時,控制邏輯404在更新LastWritten值之前,便將 LastWritten 值的内容複製到 LastWrittenPrev 值。LastWritten 值與LastWrittenPrev值這兩個值一起使得控制邏輯404得 以確定三個項目中哪一個是最近最少被寫到的,如現在於 表二及其後之等式所描述的。 77 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) ----------------R #舉 (請先閱讀背面之注意事項 寫本頁) 訂· --線: 經濟部智慧財產局員工消費合作社印製 1229815 A7 ___Β7 五、發明說明(”)
Valid A Valid B Valid C Replace 0 0 0 LRW 0 0 1 LRWofAandB 0 1 0 LRWofAandC Λ 0 1 1 A 1 0 0 LRWofBandC 1 0 1 B 1 1 0 C 1 1 1 LRU 表二 LRW = AOlderThanB ? LRWofAandC : LRWofBandC LRWofAandB = AOlderThanB ? A : B LRWofAandC = AOlderThanC ? A : C LRWofBandC = BOlderThanC ? B : C AOlderThanB = (lw=B) | ((lwp==B & (lw!=A)) BOlderThanC = (lw=C) | ((lwp==C & (lw!=B)) 經濟部智慧財產局員工消費合作社印製 AOlderThanC = (lw=C) | ((lwp==C & (lw!=A)) [0232]表二類似於表一,除了表二有三個輸入,包括項 目C602C之附加的VALID位元7〇2。在等式中,qw」對 應至 LastWritten 值,「lwp」LastWrittenPrev 值。在一具體 實施例中,只有當所有三個項目皆為無效時,才更新 78 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 1229815 A7
五、發明說明(
LastWritten與LastWrittenPrev的值,類似於圖十六的方法。 在另一具體實施例中,任何時候控制邏輯4〇4更新了一無 政的項目,LastWritten與LastWrittenPrev的值就會更新, 類似於圖十七的方法。 [0233]雖然、本發明及其目的、特徵與優點已詳細敛述 了,其;S具體實施例仍涵蓋在本發明之範圍内。例如,btac 可用任何數量之快取記憶體來配置,包括直接映射 (direct-mapped)、完全關聯(滅y ass〇dative)或不同數 目的路快取記憶體。再者,BTAC的大小可增或減。而且, 一提取位址,而不是位於實際包含被預測分支指令之快取 線的提取位址,可用來檢索BTAC與分支經歷表。例如, 先前提取指令之提取位址可絲在分支前減低指令泡珠的 大小。此外,儲存於快取記憶體之每一路的目標位址數量 可能改變。另外,分支經歷表的大小可能改變,且存於其 中之位元的數目與方向預測資訊的形式,以及檢索分支經 歷表的演算法(algorithm)也可能改變。再者,指令快取記 憶體的大小可能改變,且用以檢索指令快取記憶體與btac 之虛擬提取位址的類型也可能改變。 總之,以上所述者,僅為本發明之較佳實施例而已,當 不月b以之限定本發明所實施之範圍。大凡依本發明申請專 利範圍所作之均等變化與修飾,皆應仍屬於本發明專利涵 蓋之範圍内,謹請貴審查委員明鐘,並祈惠准,是所至禱。 79 本紙張尺度適用中國國家標準(CNS)A4規^1〇~χ 297公釐
Claims (1)
1229815
尽紙g _m (cns)a4 規格 (木號弟〇九〇-二—六五.〇號專利案之申轉利範圍修正本) 1. -,用以將—被採行分支指令之—目標位址寫入一分支 目標位址絲記,_ (職)岐置,該寫人係於該被 ,行的分支指令執行時精,該_具倾數個儲存元 件,用於快取複數個已執行分支指令之複數個目標位 ^ ’每-該複數個儲存姑包含第—與第二項目以儲存 一目標位址,該裝置包含: 王_域才曰不為(gl〇bal indicat〇r),在腿複數個儲存 元件之第-與第二項目中指定—全域項目; 一分支控制邏輯’祕至該全域指㈣,依據全域指示 =_第-與第二項目其中之―,以寫人該被採行 分支指令之目標位址。 2·如申請專利範圍第r項所述之裝置,其中該第—與第二 項目之全域項目在任—該複數個儲存元件之第—與第二 Ϊ:無效時’於該些無效的項目中指定何者為最後: 3. 如申請專利範圍第2項所述之裝置,其 輯選取該全域指示騎指定該第—與第二項目 目之-相對項目’以寫人賴採行分支指令之目標位址。 4. ^申請專利範圍第3項所述之打,其中該分支控制邏 輯更新該全域指示器以指定該選取的項目。 5· ^申請專利範圍第4項所述之裝置,其中該分支控制邏 輯連同於BTAC將該被採行分支指令之目標位址寫入該選 取項目的動作,而更新該全域指示器。 80 (21〇χ29ΤΙ^
t ---- --------t---------- (請先閲讀背面之注意事項再填寫本頁) 1229815 A8 B8 C8 D8
申請專利範圍 經 濟 部 智 慧 財 產 局 員 工 消 費 合 作 社 tP 方年7θ/γ日修正丨 MS 6. 如申凊專利範圍第4項所述之 一與第-ji曰n λ 罝’其申對於每一該第 :弟—項目’ §亥後數個儲存 效指示器(valid lndlcator) ’妙^相關聯之有 與第二項目之目標位址是否有效。4細每—該第一 7. 如中請專利範圍第6項所述n 更新的其中-該複數個儲存元件之所有有==要 相關聯之第-與第二項目“ ^从μ顯不 "又的^况下,分支控制邏 ^依據好域指示器選取該些無效的第-與第二項目其 T 之一 〇 ’、 δ.如申請專利翻第6項所述之灯,其中若在選擇要更 新的該複數個儲存雜之—中,其第—與第二項目只有 一個為無效,則分支控㈣輯不管該全域指示器,而選 擇寫入該無效的項目。 9·如申請專利範圍第6項所述之裝置,其中對於每一該該 複數個儲存元件,BTAC包含-相關聯之最近最少被使用 指示态(least recently used indicator),以指出相 關聯儲存元件之第一與第二項目中,何者為最近最少被 使用的。 1〇·如申請專利範圍第9項所述之裝置,其中若在選擇要更 新的該複數個儲存元件之一中,其第一與第二項目皆為 有效’則分支控制邏輯依據該最近最少被使用指示器, 選擇寫入該有效的苐一與第二項目其中之一,而不管該 全域指示器。 11·如申請專利範圍第6項所述之裝置,其中該分支控制邏
(請先閱讀背面之注意事項再填寫本頁)
1229815 Α8 Β8 C8 D8 六、申請專利範圍 輯只有在選擇要更新的該複數個儲存元件之一中,其第 一與第二項目皆為無效的情況下,更新該全域指示器。 12·如申請專利範圍第1項所述之裝置,其中BTAC依據該被 採行分支指令之一指令指標,選取該複數個儲存元件其 中之一,以寫入該被採行分支指令之目標位址。 13. —種用以將一目標位址寫入一分支目標位址快取記憶體 (BTAC)的裝置,該寫入係於一被採行的分支指令執行 時進行,該裝置包含: 一分支目標位址快取記憶體(BTAC),包含複數個儲存 元件’用以快取複數個已執行分支指令之目標位址, 每一該複數個儲存元件包含第一與第二項目以儲存 一目標位址; 一全域指示器(global indicator),組態為儲存一全域 指示’當該複數個儲存元件其中之一最後被寫入者 中’該第一與第二項目至少有一個無效時,該全域指 不即指出在任何該複數個儲存元件中,是該第一與第 —項目中的哪一個最後被寫到;以及 一分支控制邏輯,耦接至該全域指示器,依據全域指示 為選取該第一與第二項目其中之一以寫入被採行分 支指令之目標位址。 種在一分支目標位址快取記憶體(BTAC)中置換一目 的方法,4 BTAC具有複數個儲存位置,每個儲存 位置皆有一A項目與一B項目,以快取一目標位址,該 方法包含: 不來浓又度週用〒鸟囷豕標準(CNS)A4規格(21〇 χ 29?公釐 (請先閱讀背面之注意事項再填寫本頁) n it n n 訂--------- 經濟部智慧財產局員工消費合作社印製 I 229815 p年7月"r日
經濟部智慧財產局員工消費合作社印製 A8 B8 C8 D8 申請專利範圍 執行一分支指令與產生該分支指令之一目標位址; 依據該分支指令之一指令指標選取ΒΤΑ(:之複 位置其中之一; 绪存 確定所選取BTAC儲存位置之項目兩者是否皆 效; 白马… 檢查由該複數個BTAC儲存位置全域共享之一 旗標;以及 狀恕 右所廷取BTAC儲存位置之A與B項目兩者皆為無效 依據該置換狀態旗標將所產生之該目標位址寫入所 選取BTAC儲存位置之a與β項目i中之一。 15·Γγ=細第14項所叙綠,射該較所選取 八:子位置之Α與Β項目兩者是否皆為無效的動作包 含· 檢查關聯於各A與B項目之—有效狀態指示器,該有效 狀怨指示11包含於所選取之BTAG f轉位置。, 專利範圍第14項所述之方法,其中該檢查置換狀 悲旗彳示的動作包含: # 二^為複數個儲存位置的動作,其中該被寫 ^之儲存位置的項目兩者皆無效,以確定A與 6項目中何者為最後被寫入的。 申月專利範圍第16項所述之方法,其中該寫入目標位 址的動作包合官入A t A與β項目中一並非最後被寫入的項 ^置換狀態旗標所指出的。 如申請__ 14韻狀綠,射雜查置換狀 i紙張尺度適用。國 83 (210 x 297 公 f (請先閲讀背面之注意事項再填寫本頁)
1229815 P年7月日修正ί
申請專利範圍 恶旗標的動作包含·· 猎由-寫人任—職數麵存位置的_, 入之錯存位置的Α與Β項目中至少有—項目=寫 19 疋A與β項目中何者為最後被寫人的。〜 .如申h專利範圍第18項所述之方法, 址的動作包含w項目中一並非:二: 目,如該置換狀態旗標所指出的。 ”·’ 、員 20·如申請專利範圍第14項所述之方法,更包含: 確定所選取BTAC儲存位置之項目中是否只有一個 為無效;以及 右A與B項目中只有一個為無效,則將所產生之該目枰 位址寫入所選取職儲存位置之A與β項目中之^ 無效者。 人 21.如申請專利範圍第14項所述之方法,更包含: 確疋所選取BTAC儲存位置之Α與Β項目兩者是否·皆有 效;以及 依據關聯於所選取BTAC儲存位置之一置換狀態旗標,將 所產生之該目標位址寫入所選取BTAC儲存位置之A 與B項目其中之一。 22·如申請專利範圍第21項所述之方法,其中該依據關聯於 所選取BTAC儲存位置之該置換狀態旗標,將該目標位址 寫入所選取BTAC儲存位置的a與B項目其中之該項目的 動作包含: 所寫入A與B項目其中之該項目為最近最少被使用的, (請先閲讀背面之注意事項再填寫本頁) 訂--------- 經濟部智慧財產局員工消費合作社印製
1229815 A8 B8 C8 D8 为年7月/介
六、申請專利範圍 如關聯於所選取BTAC儲存位置之該置換狀態旗標 指出的。 ' 23.—種在一分支目標位址快取記憶體(ΒΤΑ〇中置換一目 標位址的方法,該BTAC具有複數個儲存位置,每個儲 位置皆有N個項目,以快取一目標位址,其中 於—的整數,該方法包含: ' 執行-分支齡與產生該分支指令之—目標位址; 依據該分支齡之-指令指標選取之複數麵存 位置其中之', 確2選取腿儲存位置之所“個項目是否皆為無 BTAC 若戶位置之所有項目皆為無效,則依據該 βτΑ(:ϋ、::所產生之該目標位址寫入所選取 B1AC儲存位置之ν個項目其中之一 24. 如申請專利範圍第烈項所述 。 經濟部智慧財產局員工消費合作社印制衣 換狀態旗標的動作包含: 法’其中該檢查全域置 在複數個寫入任一該複數個 被寫入之儲存位置的所有^^動1中,=該 Ν個項时何者綠近最少被^ 4無效,描定 25. 如申請專利範圍第24項所述之 : 址的動作包含所寫入Ν個項目复中、中該寫入目標位 被寫入的,如該全域置換狀態旗標所H目為最近最少 (210 χ 297 £-¾ (請先閲讀背面之注意事項再填寫本頁) ^ S @ (CNsuTi^ 1229815 Α8 Β8 C8 D8
、申請專利範圍 26. 經 濟 部 智 慧 財 產 局 Μ 消 費 合 社 ip 製 '種管線化微處理器,包含: 一分支目標位址快取記憶體(BTAG),包含複數條快取 線,每一該複數條快取線儲存N個目標位址,N是一 大於一的整數; 一執行邏輯,編妾至該職,組態為執行—分支指令並 產生該分支指令之一目標位址,以存MBTAC; -位址選擇邏輯,_至職,_為縣該已執行分 支指令之一指令指標以更新BTAC; 狀恶暫存β,搞接至該執行邏輯,儲存該複數條職 快取線之全域置換狀態; 一分支控制邏輯,_為麵存_指令指標所選取其 中一該複數條快取線内之Ν個目標位址中,選取其中 一個’以該分支指令之目標位絲置換,分支控制邏 輯組態為對該Ν個目標位址其中之該目標位址所作 的選取,是隨著儲存於狀態暫存器之該全域置換狀態 而定。 。 27·如申請專利範圍第26項所述之微處理器,更包含: 一指令快取記憶體,由一提取位址作索引; 其中該位址選擇邏輯選取該提取位址以讀取btac。 28·如申料概圍第26項職之微處·,射該分支控 ,邏輯_為只有在存於所選取快取線中之所有N個^ 標位址皆無效的情況下,為了置換存_選取快取線中 的N個目標位址之一而作的選取,是隨著該 態而定。 ^置換狀 86 本紙張尺度適用中國國豕標準(CNS)A4規格(210 X 297公釐 (請先閱讀背面之注意事項再填寫本頁)
n m u . , n 一δ, t n n n n I -i n 1 I 1229815 A8 B8 C8 D8 六、申請專利範圍 經 濟 部 智 慧 財 產 局 員 工 消 費 合 作 社 29·如申請專利範圍第28項所述之微處理器,其中該控制邏 輯在複數個先前寫入該複數條快取線之一的動作中,其 中該先前被寫入之快取線的所有N個目標位址皆無效, 去選取該N個目標位址中一最近最少被寫入者。 30.如申請專利範圍第28項所述之微處理器,其中該控制邏 輯在複數個先前寫入該複數條快取線之一的動作中,其 中該先前被寫入之快取線至少有一無效的目標位址,去 遥取該N個目標位址中一最近最少被寫入者。 31·如申請專利範圍第26項所述之微處理器,其中該分支控 制邏輯組態為只有在存於所選取快取線之該N個目標^ 址中有多於一個為無效的情況下,為了置換存於所^取 快取線中的該N個目標位址之一而作的選取,是隨著該 全域置換狀態而定。 ^ 32· t申請專利範圍第31項所述之微處理器,其中該控制邏 輯在複數個先前寫入該複數條快取線之一的動作中,其 中該先前被寫入之快取線有多於一個之無效目標位址/,、 去選取該N個目標位址中一最近最少被寫入者。τ (210^ 297 ^ (請先閱讀背面之注意事項再填寫本頁)
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/849,800 US6895498B2 (en) | 2001-05-04 | 2001-05-04 | Apparatus and method for target address replacement in speculative branch target address cache |
Publications (1)
Publication Number | Publication Date |
---|---|
TWI229815B true TWI229815B (en) | 2005-03-21 |
Family
ID=25306554
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW090132651A TW530261B (en) | 2001-05-04 | 2001-12-28 | Dual call/return stack branch prediction system |
TW090132650A TWI229815B (en) | 2001-05-04 | 2001-12-28 | Apparatus and method for target address replacement in speculative branch target address cache |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW090132651A TW530261B (en) | 2001-05-04 | 2001-12-28 | Dual call/return stack branch prediction system |
Country Status (3)
Country | Link |
---|---|
US (2) | US6895498B2 (zh) |
CN (1) | CN1217262C (zh) |
TW (2) | TW530261B (zh) |
Families Citing this family (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6895498B2 (en) * | 2001-05-04 | 2005-05-17 | Ip-First, Llc | Apparatus and method for target address replacement in speculative branch target address cache |
US7707397B2 (en) * | 2001-05-04 | 2010-04-27 | Via Technologies, Inc. | Variable group associativity branch target address cache delivering multiple target addresses per cache line |
US7165168B2 (en) * | 2003-01-14 | 2007-01-16 | Ip-First, Llc | Microprocessor with branch target address cache update queue |
US7203824B2 (en) * | 2001-07-03 | 2007-04-10 | Ip-First, Llc | Apparatus and method for handling BTAC branches that wrap across instruction cache lines |
US7162619B2 (en) * | 2001-07-03 | 2007-01-09 | Ip-First, Llc | Apparatus and method for densely packing a branch instruction predicted by a branch target address cache and associated target instructions into a byte-wide instruction buffer |
US7234045B2 (en) | 2001-07-03 | 2007-06-19 | Ip-First, Llc | Apparatus and method for handling BTAC branches that wrap across instruction cache lines |
US6823444B1 (en) * | 2001-07-03 | 2004-11-23 | Ip-First, Llc | Apparatus and method for selectively accessing disparate instruction buffer stages based on branch target address cache hit and instruction stage wrap |
US7159097B2 (en) * | 2002-04-26 | 2007-01-02 | Ip-First, Llc | Apparatus and method for buffering instructions and late-generated related information using history of previous load/shifts |
US7185186B2 (en) * | 2003-01-14 | 2007-02-27 | Ip-First, Llc | Apparatus and method for resolving deadlock fetch conditions involving branch target address cache |
US7152154B2 (en) * | 2003-01-16 | 2006-12-19 | Ip-First, Llc. | Apparatus and method for invalidation of redundant branch target address cache entries |
US7143269B2 (en) * | 2003-01-14 | 2006-11-28 | Ip-First, Llc | Apparatus and method for killing an instruction after loading the instruction into an instruction queue in a pipelined microprocessor |
TWI242744B (en) * | 2003-01-14 | 2005-11-01 | Ip First Llc | Apparatus, pipeline microprocessor and method for avoiding deadlock condition and storage media with a program for avoiding deadlock condition |
US7178010B2 (en) * | 2003-01-16 | 2007-02-13 | Ip-First, Llc | Method and apparatus for correcting an internal call/return stack in a microprocessor that detects from multiple pipeline stages incorrect speculative update of the call/return stack |
US7237098B2 (en) * | 2003-09-08 | 2007-06-26 | Ip-First, Llc | Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence |
JP4362096B2 (ja) * | 2004-09-30 | 2009-11-11 | 富士通株式会社 | 情報処理装置,リプレース方法,リプレースプログラム及びリプレースプログラムを記録したコンピュータ読取可能な記録媒体 |
US20060200655A1 (en) * | 2005-03-04 | 2006-09-07 | Smith Rodney W | Forward looking branch target address caching |
US7437543B2 (en) * | 2005-04-19 | 2008-10-14 | International Business Machines Corporation | Reducing the fetch time of target instructions of a predicted taken branch instruction |
US7562191B2 (en) * | 2005-11-15 | 2009-07-14 | Mips Technologies, Inc. | Microprocessor having a power-saving instruction cache way predictor and instruction replacement scheme |
US7496771B2 (en) * | 2005-11-15 | 2009-02-24 | Mips Technologies, Inc. | Processor accessing a scratch pad on-demand to reduce power consumption |
US7873820B2 (en) * | 2005-11-15 | 2011-01-18 | Mips Technologies, Inc. | Processor utilizing a loop buffer to reduce power consumption |
EP1990713B1 (en) * | 2006-02-28 | 2013-04-10 | Fujitsu Ltd. | Branch predicting device for computer |
US7783869B2 (en) * | 2006-12-19 | 2010-08-24 | Arm Limited | Accessing branch predictions ahead of instruction fetching |
US7830873B1 (en) * | 2007-01-09 | 2010-11-09 | Marvell Israel (M.I.S.L.) Ltd. | Implementation of distributed traffic rate limiters |
GB2448118B (en) * | 2007-04-03 | 2011-08-24 | Advanced Risc Mach Ltd | Error recovery following erroneous execution with an instruction processing pipeline |
US7921260B2 (en) * | 2007-10-24 | 2011-04-05 | International Business Machines Corporation | Preferred write-mostly data cache replacement policies |
US7890739B2 (en) * | 2008-02-19 | 2011-02-15 | Oracle America, Inc. | Method and apparatus for recovering from branch misprediction |
US7895422B2 (en) * | 2008-02-29 | 2011-02-22 | Freescale Semiconductor, Inc. | Selective postponement of branch target buffer (BTB) allocation |
US7937573B2 (en) * | 2008-02-29 | 2011-05-03 | Freescale Semiconductor, Inc. | Metric for selective branch target buffer (BTB) allocation |
US8205068B2 (en) * | 2008-07-29 | 2012-06-19 | Freescale Semiconductor, Inc. | Branch target buffer allocation |
CN101819522B (zh) * | 2009-03-04 | 2012-12-12 | 威盛电子股份有限公司 | 微处理器以及相关指令解析的方法 |
US8832418B2 (en) * | 2009-08-28 | 2014-09-09 | Via Technologies, Inc. | Efficient branch target address cache entry replacement |
CN101916184B (zh) * | 2009-08-28 | 2014-02-12 | 威盛电子股份有限公司 | 更新微处理器中的分支目标地址快取的方法及其微处理器 |
WO2012093489A1 (ja) * | 2011-01-07 | 2012-07-12 | 富士通株式会社 | 演算処理装置および分岐予測方法 |
US9235419B2 (en) | 2012-06-11 | 2016-01-12 | International Business Machines Corporation | Branch target buffer preload table |
US9146739B2 (en) | 2012-06-14 | 2015-09-29 | International Business Machines Corporation | Branch prediction preloading |
US9311099B2 (en) * | 2013-07-31 | 2016-04-12 | Freescale Semiconductor, Inc. | Systems and methods for locking branch target buffer entries |
US9582285B2 (en) * | 2014-03-24 | 2017-02-28 | Qualcomm Incorporated | Speculative history forwarding in overriding branch predictors, and related circuits, methods, and computer-readable media |
CN103870249B (zh) * | 2014-04-01 | 2017-08-25 | 龙芯中科技术有限公司 | 指令地址获取方法和即时编译器 |
US9329850B2 (en) | 2014-06-24 | 2016-05-03 | International Business Machines Corporation | Relocation of instructions that use relative addressing |
CN106201913A (zh) * | 2015-04-23 | 2016-12-07 | 上海芯豪微电子有限公司 | 一种基于指令推送的处理器***和方法 |
US10691460B2 (en) | 2016-12-13 | 2020-06-23 | International Business Machines Corporation | Pointer associated branch line jumps for accelerated line jumps |
US11106466B2 (en) | 2018-06-18 | 2021-08-31 | International Business Machines Corporation | Decoupling of conditional branches |
US11461103B2 (en) * | 2020-10-23 | 2022-10-04 | Centaur Technology, Inc. | Dual branch execute and table update with single port |
US11614944B2 (en) * | 2020-11-09 | 2023-03-28 | Centaur Technology, Inc. | Small branch predictor escape |
Family Cites Families (106)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3905023A (en) * | 1973-08-15 | 1975-09-09 | Burroughs Corp | Large scale multi-level information processing system employing improved failsaft techniques |
US4200927A (en) * | 1978-01-03 | 1980-04-29 | International Business Machines Corporation | Multi-instruction stream branch processing mechanism |
US4181942A (en) * | 1978-03-31 | 1980-01-01 | International Business Machines Corporation | Program branching method and apparatus |
US4860197A (en) * | 1987-07-31 | 1989-08-22 | Prime Computer, Inc. | Branch cache system with instruction boundary determination independent of parcel boundary |
US5193205A (en) | 1988-03-01 | 1993-03-09 | Mitsubishi Denki Kabushiki Kaisha | Pipeline processor, with return address stack storing only pre-return processed address for judging validity and correction of unprocessed address |
US5142634A (en) | 1989-02-03 | 1992-08-25 | Digital Equipment Corporation | Branch prediction |
US5226126A (en) * | 1989-02-24 | 1993-07-06 | Nexgen Microsystems | Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags |
JP2548415B2 (ja) * | 1990-01-08 | 1996-10-30 | シャープ株式会社 | 電力供給装置 |
US5163140A (en) | 1990-02-26 | 1992-11-10 | Nexgen Microsystems | Two-level branch prediction cache |
JPH0820950B2 (ja) | 1990-10-09 | 1996-03-04 | インターナショナル・ビジネス・マシーンズ・コーポレイション | マルチ予測型分岐予測機構 |
WO1992006426A1 (en) * | 1990-10-09 | 1992-04-16 | Nexgen Microsystems | Method and apparatus for parallel decoding of instructions with branch prediction look-up |
US5394530A (en) * | 1991-03-15 | 1995-02-28 | Nec Corporation | Arrangement for predicting a branch target address in the second iteration of a short loop |
US5961629A (en) * | 1991-07-08 | 1999-10-05 | Seiko Epson Corporation | High performance, superscalar-based computer system with out-of-order instruction execution |
WO1993004432A2 (en) * | 1991-08-16 | 1993-03-04 | Multichip Technology | High-performance dynamic memory system |
US5832289A (en) * | 1991-09-20 | 1998-11-03 | Shaw; Venson M. | System for estimating worst time duration required to execute procedure calls and looking ahead/preparing for the next stack operation of the forthcoming procedure calls |
DE69227465T2 (de) * | 1992-02-27 | 1999-06-10 | Samsung Electronics Co. Ltd., Suwon, Kyungki | Cpu mit pipeline-einheit und effektiv-adressenrechnungseinheit mit möglichkeit zur beibehaltung von virtuellen operandenadressen. |
US5313634A (en) * | 1992-07-28 | 1994-05-17 | International Business Machines Corporation | Computer system branch prediction of subroutine returns |
US5434985A (en) * | 1992-08-11 | 1995-07-18 | International Business Machines Corporation | Simultaneous prediction of multiple branches for superscalar processing |
JP3057934B2 (ja) * | 1992-10-30 | 2000-07-04 | 日本電気株式会社 | 共有バス調停機構 |
US5463748A (en) * | 1993-06-30 | 1995-10-31 | Intel Corporation | Instruction buffer for aligning instruction sets using boundary detection |
US5623614A (en) * | 1993-09-17 | 1997-04-22 | Advanced Micro Devices, Inc. | Branch prediction cache with multiple entries for returns having multiple callers |
SG52391A1 (en) * | 1994-01-03 | 1998-09-28 | Intel Corp | Method and apparatus for implementing a four stage branch resolution system in a computer processor |
US5604877A (en) * | 1994-01-04 | 1997-02-18 | Intel Corporation | Method and apparatus for resolving return from subroutine instructions in a computer processor |
TW253946B (en) * | 1994-02-04 | 1995-08-11 | Ibm | Data processor with branch prediction and method of operation |
SG47981A1 (en) * | 1994-03-01 | 1998-04-17 | Intel Corp | Pipeline process of instructions in a computer system |
US5530825A (en) | 1994-04-15 | 1996-06-25 | Motorola, Inc. | Data processor with branch target address cache and method of operation |
US5623615A (en) * | 1994-08-04 | 1997-04-22 | International Business Machines Corporation | Circuit and method for reducing prefetch cycles on microprocessors |
US5732243A (en) * | 1994-10-18 | 1998-03-24 | Cyrix Corporation | Branch processing unit with target cache using low/high banking to support split prefetching |
US5706491A (en) * | 1994-10-18 | 1998-01-06 | Cyrix Corporation | Branch processing unit with a return stack including repair using pointers from different pipe stages |
US5790881A (en) * | 1995-02-07 | 1998-08-04 | Sigma Designs, Inc. | Computer system including coprocessor devices simulating memory interfaces |
US5606682A (en) * | 1995-04-07 | 1997-02-25 | Motorola Inc. | Data processor with branch target address cache and subroutine return address cache and method of operation |
US5687360A (en) * | 1995-04-28 | 1997-11-11 | Intel Corporation | Branch predictor using multiple prediction heuristics and a heuristic identifier in the branch instruction |
US5968169A (en) * | 1995-06-07 | 1999-10-19 | Advanced Micro Devices, Inc. | Superscalar microprocessor stack structure for judging validity of predicted subroutine return addresses |
US5867701A (en) | 1995-06-12 | 1999-02-02 | Intel Corporation | System for inserting a supplemental micro-operation flow into a macroinstruction-generated micro-operation flow |
US5752069A (en) * | 1995-08-31 | 1998-05-12 | Advanced Micro Devices, Inc. | Superscalar microprocessor employing away prediction structure |
US5634103A (en) * | 1995-11-09 | 1997-05-27 | International Business Machines Corporation | Method and system for minimizing branch misprediction penalties within a processor |
US5864707A (en) * | 1995-12-11 | 1999-01-26 | Advanced Micro Devices, Inc. | Superscalar microprocessor configured to predict return addresses from a return stack storage |
US5734881A (en) * | 1995-12-15 | 1998-03-31 | Cyrix Corporation | Detecting short branches in a prefetch buffer using target location information in a branch target cache |
US5828901A (en) * | 1995-12-21 | 1998-10-27 | Cirrus Logic, Inc. | Method and apparatus for placing multiple frames of data in a buffer in a direct memory access transfer |
US5964868A (en) | 1996-05-15 | 1999-10-12 | Intel Corporation | Method and apparatus for implementing a speculative return stack buffer |
US5805877A (en) * | 1996-09-23 | 1998-09-08 | Motorola, Inc. | Data processor with branch target address cache and method of operation |
US5850543A (en) | 1996-10-30 | 1998-12-15 | Texas Instruments Incorporated | Microprocessor with speculative instruction pipelining storing a speculative register value within branch target buffer for use in speculatively executing instructions after a return |
KR100240591B1 (ko) | 1996-11-06 | 2000-03-02 | 김영환 | 분기명령어의 효율적인 처리를 위한 브랜치 타겟 버퍼 및 그를 이용한 분기 예측방법 |
US6088793A (en) * | 1996-12-30 | 2000-07-11 | Intel Corporation | Method and apparatus for branch execution on a multiple-instruction-set-architecture microprocessor |
EP0851343B1 (en) * | 1996-12-31 | 2005-08-31 | Metaflow Technologies, Inc. | System for processing floating point operations |
US5850532A (en) | 1997-03-10 | 1998-12-15 | Advanced Micro Devices, Inc. | Invalid instruction scan unit for detecting invalid predecode data corresponding to instructions being fetched |
TW357318B (en) | 1997-03-18 | 1999-05-01 | Ind Tech Res Inst | Branching forecast and reading device for unspecified command length extra-purity pipeline processor |
JP3189727B2 (ja) * | 1997-04-15 | 2001-07-16 | 日本電気株式会社 | コプロセッサ内蔵パケット型メモリlsi、それを用いたメモリシステム及びそれらの制御方法 |
US6122729A (en) | 1997-05-13 | 2000-09-19 | Advanced Micro Devices, Inc. | Prefetch buffer which stores a pointer indicating an initial predecode position |
US6073230A (en) * | 1997-06-11 | 2000-06-06 | Advanced Micro Devices, Inc. | Instruction fetch unit configured to provide sequential way prediction for sequential instruction fetches |
US5872946A (en) * | 1997-06-11 | 1999-02-16 | Advanced Micro Devices, Inc. | Instruction alignment unit employing dual instruction queues for high frequency instruction dispatch |
US6381692B1 (en) * | 1997-07-16 | 2002-04-30 | California Institute Of Technology | Pipelined asynchronous processing |
US6157988A (en) * | 1997-08-01 | 2000-12-05 | Micron Technology, Inc. | Method and apparatus for high performance branching in pipelined microsystems |
US6154833A (en) * | 1997-08-11 | 2000-11-28 | Intel Corporation | System for recovering from a concurrent branch target buffer read with a write allocation by invalidating and then reinstating the instruction pointer |
US6185676B1 (en) * | 1997-09-30 | 2001-02-06 | Intel Corporation | Method and apparatus for performing early branch prediction in a microprocessor |
US5978909A (en) * | 1997-11-26 | 1999-11-02 | Intel Corporation | System for speculative branch target prediction having a dynamic prediction history buffer and a static prediction history buffer |
US6065103A (en) * | 1997-12-16 | 2000-05-16 | Advanced Micro Devices, Inc. | Speculative store buffer |
US6041405A (en) * | 1997-12-18 | 2000-03-21 | Advanced Micro Devices, Inc. | Instruction length prediction using an instruction length pattern detector |
US5931944A (en) * | 1997-12-23 | 1999-08-03 | Intel Corporation | Branch instruction handling in a self-timed marking system |
US6081884A (en) * | 1998-01-05 | 2000-06-27 | Advanced Micro Devices, Inc. | Embedding two different instruction sets within a single long instruction word using predecode bits |
US5974543A (en) | 1998-01-23 | 1999-10-26 | International Business Machines Corporation | Apparatus and method for performing subroutine call and return operations |
US5881260A (en) * | 1998-02-09 | 1999-03-09 | Hewlett-Packard Company | Method and apparatus for sequencing and decoding variable length instructions with an instruction boundary marker within each instruction |
US6151671A (en) * | 1998-02-20 | 2000-11-21 | Intel Corporation | System and method of maintaining and utilizing multiple return stack buffers |
US6374349B2 (en) * | 1998-03-19 | 2002-04-16 | Mcfarling Scott | Branch predictor with serially connected predictor stages for improving branch prediction accuracy |
US6108773A (en) | 1998-03-31 | 2000-08-22 | Ip-First, Llc | Apparatus and method for branch target address calculation during instruction decode |
US6256727B1 (en) * | 1998-05-12 | 2001-07-03 | International Business Machines Corporation | Method and system for fetching noncontiguous instructions in a single clock cycle |
US6260138B1 (en) * | 1998-07-17 | 2001-07-10 | Sun Microsystems, Inc. | Method and apparatus for branch instruction processing in a processor |
US6122727A (en) * | 1998-08-24 | 2000-09-19 | Advanced Micro Devices, Inc. | Symmetrical instructions queue for high clock frequency scheduling |
US6134654A (en) * | 1998-09-16 | 2000-10-17 | Sun Microsystems, Inc. | Bi-level branch target prediction scheme with fetch address prediction |
US6279106B1 (en) * | 1998-09-21 | 2001-08-21 | Advanced Micro Devices, Inc. | Method for reducing branch target storage by calculating direct branch targets on the fly |
US6163839A (en) * | 1998-09-30 | 2000-12-19 | Intel Corporation | Non-stalling circular counterflow pipeline processor with reorder buffer |
US6279105B1 (en) * | 1998-10-15 | 2001-08-21 | International Business Machines Corporation | Pipelined two-cycle branch target address cache |
US6170054B1 (en) * | 1998-11-16 | 2001-01-02 | Intel Corporation | Method and apparatus for predicting target addresses for return from subroutine instructions utilizing a return address cache |
US6175897B1 (en) * | 1998-12-28 | 2001-01-16 | Bull Hn Information Systems Inc. | Synchronization of branch cache searches and allocation/modification/deletion of branch cache |
US6601161B2 (en) | 1998-12-30 | 2003-07-29 | Intel Corporation | Method and system for branch target prediction using path information |
US6314514B1 (en) | 1999-03-18 | 2001-11-06 | Ip-First, Llc | Method and apparatus for correcting an internal call/return stack in a microprocessor that speculatively executes call and return instructions |
US6233676B1 (en) * | 1999-03-18 | 2001-05-15 | Ip-First, L.L.C. | Apparatus and method for fast forward branch |
EP1050810A1 (en) * | 1999-05-03 | 2000-11-08 | STMicroelectronics SA | A computer system comprising multiple functional units |
US6321321B1 (en) * | 1999-06-21 | 2001-11-20 | Vlsi Technology, Inc. | Set-associative cache-management method with parallel and single-set sequential reads |
US6457120B1 (en) * | 1999-11-01 | 2002-09-24 | International Business Machines Corporation | Processor and method including a cache having confirmation bits for improving address predictable branch instruction target predictions |
US6748441B1 (en) * | 1999-12-02 | 2004-06-08 | Microsoft Corporation | Data carousel receiving and caching |
US6560696B1 (en) * | 1999-12-29 | 2003-05-06 | Intel Corporation | Return register stack target predictor |
US6502185B1 (en) | 2000-01-03 | 2002-12-31 | Advanced Micro Devices, Inc. | Pipeline elements which verify predecode information |
US6351796B1 (en) * | 2000-02-22 | 2002-02-26 | Hewlett-Packard Company | Methods and apparatus for increasing the efficiency of a higher level cache by selectively performing writes to the higher level cache |
US6353421B1 (en) * | 2000-09-14 | 2002-03-05 | Ball Aerospace And Technologies Corp. | Deployment of an ellectronically scanned reflector |
US6754808B1 (en) * | 2000-09-29 | 2004-06-22 | Intel Corporation | Valid bit generation and tracking in a pipelined processor |
US7165168B2 (en) * | 2003-01-14 | 2007-01-16 | Ip-First, Llc | Microprocessor with branch target address cache update queue |
US7200740B2 (en) | 2001-05-04 | 2007-04-03 | Ip-First, Llc | Apparatus and method for speculatively performing a return instruction in a microprocessor |
US6895498B2 (en) * | 2001-05-04 | 2005-05-17 | Ip-First, Llc | Apparatus and method for target address replacement in speculative branch target address cache |
US6886093B2 (en) * | 2001-05-04 | 2005-04-26 | Ip-First, Llc | Speculative hybrid branch direction predictor |
US20020194461A1 (en) | 2001-05-04 | 2002-12-19 | Ip First Llc | Speculative branch target address cache |
US7165169B2 (en) | 2001-05-04 | 2007-01-16 | Ip-First, Llc | Speculative branch target address cache with selective override by secondary predictor based on branch instruction type |
US7134005B2 (en) | 2001-05-04 | 2006-11-07 | Ip-First, Llc | Microprocessor that detects erroneous speculative prediction of branch instruction opcode byte |
US7203824B2 (en) * | 2001-07-03 | 2007-04-10 | Ip-First, Llc | Apparatus and method for handling BTAC branches that wrap across instruction cache lines |
US6823444B1 (en) * | 2001-07-03 | 2004-11-23 | Ip-First, Llc | Apparatus and method for selectively accessing disparate instruction buffer stages based on branch target address cache hit and instruction stage wrap |
US7162619B2 (en) * | 2001-07-03 | 2007-01-09 | Ip-First, Llc | Apparatus and method for densely packing a branch instruction predicted by a branch target address cache and associated target instructions into a byte-wide instruction buffer |
US7024545B1 (en) * | 2001-07-24 | 2006-04-04 | Advanced Micro Devices, Inc. | Hybrid branch prediction device with two levels of branch prediction cache |
US7240157B2 (en) * | 2001-09-26 | 2007-07-03 | Ati Technologies, Inc. | System for handling memory requests and method thereof |
US6898699B2 (en) * | 2001-12-21 | 2005-05-24 | Intel Corporation | Return address stack including speculative return address buffer with back pointers |
US7159097B2 (en) * | 2002-04-26 | 2007-01-02 | Ip-First, Llc | Apparatus and method for buffering instructions and late-generated related information using history of previous load/shifts |
US6968444B1 (en) | 2002-11-04 | 2005-11-22 | Advanced Micro Devices, Inc. | Microprocessor employing a fixed position dispatch unit |
US7152154B2 (en) * | 2003-01-16 | 2006-12-19 | Ip-First, Llc. | Apparatus and method for invalidation of redundant branch target address cache entries |
US7143269B2 (en) * | 2003-01-14 | 2006-11-28 | Ip-First, Llc | Apparatus and method for killing an instruction after loading the instruction into an instruction queue in a pipelined microprocessor |
US7185186B2 (en) * | 2003-01-14 | 2007-02-27 | Ip-First, Llc | Apparatus and method for resolving deadlock fetch conditions involving branch target address cache |
US7178010B2 (en) * | 2003-01-16 | 2007-02-13 | Ip-First, Llc | Method and apparatus for correcting an internal call/return stack in a microprocessor that detects from multiple pipeline stages incorrect speculative update of the call/return stack |
US7237098B2 (en) * | 2003-09-08 | 2007-06-26 | Ip-First, Llc | Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence |
-
2001
- 2001-05-04 US US09/849,800 patent/US6895498B2/en not_active Expired - Lifetime
- 2001-12-28 TW TW090132651A patent/TW530261B/zh not_active IP Right Cessation
- 2001-12-28 TW TW090132650A patent/TWI229815B/zh not_active IP Right Cessation
-
2002
- 2002-04-27 CN CN02118551.4A patent/CN1217262C/zh not_active Expired - Lifetime
-
2004
- 2004-11-01 US US10/978,812 patent/US7398377B2/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US20020188834A1 (en) | 2002-12-12 |
US20050114636A1 (en) | 2005-05-26 |
CN1217262C (zh) | 2005-08-31 |
CN1397876A (zh) | 2003-02-19 |
US7398377B2 (en) | 2008-07-08 |
TW530261B (en) | 2003-05-01 |
US6895498B2 (en) | 2005-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI229815B (en) | Apparatus and method for target address replacement in speculative branch target address cache | |
TW523712B (en) | Speculative branch target address cache with selective override by secondary predictor based on branch instruction type | |
TWI225214B (en) | Speculative hybrid branch direction predictor | |
TW538336B (en) | Apparatus, system and method for detecting and correcting erroneous speculative branch target address cache branches | |
TW535109B (en) | Speculative branch target address cache | |
TW552503B (en) | Apparatus and method for selecting one of multiple target addresses stored in a speculative branch target address cache per instruction cache line | |
US7200740B2 (en) | Apparatus and method for speculatively performing a return instruction in a microprocessor | |
US6339822B1 (en) | Using padded instructions in a block-oriented cache | |
US6106573A (en) | Apparatus and method for tracing microprocessor instructions | |
JP3866918B2 (ja) | ルックアヘッド結果を発生し移動命令、比較命令および簡単な算術命令をまとめるよう構成されるプロセッサ | |
US6061786A (en) | Processor configured to select a next fetch address by partially decoding a byte of a control transfer instruction | |
US5850532A (en) | Invalid instruction scan unit for detecting invalid predecode data corresponding to instructions being fetched | |
US6167506A (en) | Replacing displacement in control transfer instruction with encoding indicative of target address, including offset and target cache line location | |
EP1095330A1 (en) | Register renaming in which moves are accomplished by swapping rename tags | |
GB2456859A (en) | Instruction pre-decoding of multiple instruction sets | |
US5968163A (en) | Microcode scan unit for scanning microcode instructions using predecode data | |
US6240503B1 (en) | Cumulative lookahead to eliminate chained dependencies | |
US6134649A (en) | Control transfer indication in predecode which identifies control transfer instruction and an alternate feature of an instruction | |
US5859992A (en) | Instruction alignment using a dispatch list and a latch list | |
US5852727A (en) | Instruction scanning unit for locating instructions via parallel scanning of start and end byte information | |
US7917735B2 (en) | Data processing apparatus and method for pre-decoding instructions | |
US7747839B2 (en) | Data processing apparatus and method for handling instructions to be executed by processing circuitry | |
US6141745A (en) | Functional bit identifying a prefix byte via a particular state regardless of type of instruction | |
TW564369B (en) | Apparatus and method for handling BTAC branches that wrap across instruction cache lines | |
EP1073949B1 (en) | Processor and method employing control transfer bit in predecode for identifying control transfer instructions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MK4A | Expiration of patent term of an invention patent |