41 963 〇 ^ A7 B7 經濟部智慧財產局員工消費合作社印製 五、發明說明(ί) [發明背景] 管線式(pipelined)處理器之性能係嚴格受限於執行條件 分支所需要的時間。常態而言,一處理器係以一順序方式 來擷取並執行指令;亦即,自位址η所擷取的一指令E i 之後所立即執行的指令E i + 1 ( E i之後繼者)之位址 係藉由將E i的長度加上η而找到。一無條件分支係一指 令,其執行將令控制轉移到在一非順序位址處之一指令。 因此’ 一分支Β之後繼者係擷取自一任意的目標位址。於 某些電腦中,分支指令Β的目標位址係含於指令內;而在 其他的電腦中,目標位址係藉由將指令Β本身被擷取自之 位址加上含於指令Β內之一偏移(offset)而構成。 一條件分支指令係基於測試某些段之資料,而有條件 地造成控制之轉移。隨同一目標位址之規格,此一指令係 含有一待測試的條件。典型而言,此條件係一數字之一小 組代數性質之一者:此數字係零或非零、此數字係正數或 非正數、此數字係負數或非負數、…等。若是符合該條件 ,便採取該分支;亦即,後繼指令係擷取自該分支的目標 位址。若不符合該條件,後繼指令係於序列中的下一指令 ,正如同對於非分支指令者。 管線式電腦係透過由數個處理級(stage)(通常至少 爲五個)所組成的一管線而通過各個指令。於各時脈週期 中,一新的指令係可送入到該管線中。結果,一管線式電 腦係可同時具有在不同執行級之數個指令,因而使得在各 級之硬體資源的利用爲最大化。 3 (請先閱讀背面之注意事項再填寫本頁} 裝---- -- 訂-- - ----— —镇 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 4 19 63 經濟部智慧財產局員工消費合作社印製 A7 B7 五、發明說明(V ) 由管線式電腦中條件分支所造成的性能變差,係產生 於當此分支爲在欲測試的代數條件被決定之前而擷取時。 在分支指令本身係指明欲測試之資料位置的該等電腦中, 此現象係變得更糟。對代數條件求値,係僅在已行經該管 線之數級後才作出。由於此舉係直到分支指令被擷取之後 才得以開始,欲測試的條件係直到該分支被擷取後的數個 時脈週期方爲可知。由於直到資料已被測試之前,欲被擷 取的下一指令之位置係無法確知,故並無指令係可被擷取 達數個時脈週期。 ,分支預測係試圖在擷取一條件分支時立即預測此條件 分支是否將被採取,而無需等待決定該測試之結果。以此 方式,指令可繼續在全速率下被擷取。若預測到分支,便 需要驗效(validate)此預測並從一不正確的預測中回復。若 該預測爲不正確’則所有在不正確預測的壞的(bad) # )分支所擷取之後所擷取的指令係錯誤,且因而其執行 的影響均須倒反。用於記錄 '驗效、以及修護預測分支的 技術係並非本發明之主題。 由於所有在一壞的分支之後所擷取的指令都必須被棄 置,故其代表浪費掉的努力。因此,機器之性能係直接與 分支預測的精確度有關。 分支預測架構可爲靜態式或是動態式。於一靜態式架 構中,分支指令本身含有所述預測;此典型地係由產生程 式的編譯器所提供,基於此編譯器對一典型資料組執行該 程式。靜態式預測係僅在電腦的指令組於設計時已將其考 4 本紙張尺度適用中國國家標準(CNS)A4規格(21G X 297公爱) 〈請先間讀背面之注意事項再填寫本頁) 裝 ------ 訂· !!1* 線 經濟部智慧財產局員工消費合作社印製 A7 B7 五、發明說明) 慮而方爲可能。大多數商業上成功的指令組係並不提供可 容許靜態式分支預測之方便性。 動態式分支預測利用有關於分支之資訊,其由硬體於 程式執行中所集聚。硬體僅可〃知曉(know)〃有關於一給 定分支指令的過去執行形態,因此其動態式預測必須基於 此項資訊。由於條件分支係相當頻繁(密集到每五個指令 就有一次)’因此若無一非常大的記憶體容量,對於各條 件分支可被儲存之歷史(history)的量便無法很大。典型而言 ’分支預測資訊係於一程式中被保持在分支之僅僅一小、 但變動的子集上。 於一程式執行中的任一時間點,一給定分支指令的正 確執行歷史係可予表示成二元符號1和〇的一序列。此序 列係告知分支指令是否被採取(1)或未被採取(〇)。 每當一分支指令被執行時,該分支的歷史係藉由加上1或 是0到其尾端予以擴增,視該分支之正確的(不必是所預 測的)執行是否係被採取而定。 一分支指令的執行歷史係可予分成運行(runs)。一 分支運行係其緊接以1在前並後隨之接續的0之一序列, 或反之亦然。亦即,於該歷史中的各符號係處於正好一運 行,並且各運行係由所有的0或是所有的1所組成。一運 行的長度係在其中之符號的數目。 先前技藝之動態式分支預測機制係發現以下之觀察, 即對於一程式中的許多分支而言,所有的(或幾乎所有的 )◦之運行係長度爲1。此等係通常爲結束環路的分支。 5 ----I----I ί I ----I I--^ - I I I I —---線 (請先閱讀背面之沒意事項再填寫本頁) 本紙張尺度適用t國國家標準(CNS)A4規格(210 X 297公釐) 經濟部智慧財產局員工消費合作社印製 A7 ___B7___ 五、發明說明(^ ) 一環路(loop)係典型藉由置放一條件分支在構成爲環路主體 的指令序列之結束位置而實施。條件分支測試該環路結束 條件,且若此條件係僞’則分支到係爲環路主體之序列中 的第一指令。若該分支未被採取,該環路便終止。下一次 該分支被執行時將係該環路之下一致動中的第一執行,其 將被採取,除非此致動在一次通過後便終止。因此,係有 由代表環路終止之單一個0所構成的一運行。(某些編譯 器係在主體開始時以一條件分支來建構環路,而非在結束 時。此一環路係以採取該分支而終止。此環路建構係以由 單一個1所構成的運行來建立執行歷史。) 先前技藝之分支預測器係將各預測爲基於對於各分支 所儲存歷史之兩個位元。此等位元係一四狀態之狀態機器 (圖1 )的狀態。此狀態機器的效果係預測該分支將具有 如同大於1之最後運行的相同結果。因此,在總是通過多 於一次之環路的例子中,爲使得其執行歷史不具有兩個或 多個0的運行,該預測將爲定値。 先前技藝之狀態機器的預測精確度係直接與1之運行 長度有關。若平均運行長度爲η,則每η次正確預測係有 一次不正確預測。因此,對於較短運行之效率係較差。本 發明之目的即在於改善短運行長度的分支之預測精確度。 [發明槪要] 許多分支均具有固定或是緩慢改變的運行長度,即數 個1之接續運行係爲相同長度者。本發明藉由加上兩個小 的計數器(即一上數計數器和一下數計數器)而增強對於 6 本紙張尺度適用令國國家標準(CNS)A4規格(210 X 297公釐) <請先閱讀背面之注項再填寫本頁) 裝---1 ----訂---I I---線 41 963 0 i Α7 ____Β7 — 五、發明說明(^) 各分支所儲存的歷史。該等計數器係配合先前技藝之狀態 機器分支預測器而操作。 該上數計數器係計數目前運行的長度。若此運行在計 數器溢流(overflow)之前結束,則該上數計數器値係被複製 到該下數計數器,並且該上數計數器係被重行初始化爲零 該下數計數器係接著於下〜蓮行期間向下計數。所利用 的預測爲由該狀態機器所作出者,直到下數計數器到達零 。於下數計數器爲零時的第〜次執行,該狀態機器預測係 被作互補運行。若是目前運行長度係等於先前運行長度, 此舉將係正確。只要運行長度保持固定,本發明之預測準 確度係1 0 0 %。若是運行係長於可被計數者,計數器係 被禁能(disabled) ’並且該預測係僅係基於該狀態機器。 每當任一條件分支指令β被發出(issued)時,其預測歷 史係被檢查以決定是否要預測該分支爲所採取者,並且該 歷史係部分基於該預測而被立即更新。所述更新係亦視此 是否爲該條件分支指令B之重行發出而定。條件分支指令 B之重行發出係僅發生於當B之任何執行b E被錯誤預測 、正確方向係已知曉、且並無任何在B E之前的分支執行 係已知被錯誤預測時。在此情況下,對B E之一分支修理 係發生:B E以及所有任一後續指令之執行係被棄置’並 且B係被重行發出。 用於更新計數器之演算法係基於以下之假設’即狀態 機器預測器總是預測相同的方向。因此,一運行之結束係 僅由該等計數器所預測《—重行發出(re-issue)係意請著運 7 本紙張尺度適用t國國家標準(CNS)A4規格(210 X 297公釐) (請先閱讀背面之注意事項再填寫本頁) 裝----II訂·-------破 經濟部智慧財產局貝工消費合作社印製 4 1 963 0 从 經濟部智慧財產局具工消費合作社印製 五、發明說明(么) 行長度未被正確地預測:不論是未對運行長度作出預測’ 或是運行長度被預測爲太短或太長。若因爲先前運行係太 長而無法計數以至於運行長度根本尙未被預測’則該上數 計數器係被設定爲0,而若新開始的運行係夠短以可計數 ,該下數計數器係被設定爲- 1,其禁能計數器之預測器 。若所述重行發出分支係因爲該運行結束得較預期爲早而 已被錯誤預測,新的、較短的長度係自該上數計數器被複 製到該下數計數器,並且該上數計數器係被重置爲0。若 是所預測的運行長度係太短,該上數計數器便繼續增量以 計數正確的、較長的長度,並且該下數計數器係被設定爲 - 1,由於已知此較長運行之結束係無法被正確預測。 於發出任何並非一重行發出之一分支時,若該上數計數器 已達到其最大計數,該計數器便停留在該計數並且該下數 計數器被設定爲-1,以防止計數器之任何運行長度預測 。否則,該上數計數器係被增量,除非該下數計數器是爲 0,其表示運行之預測結束;在此情況下’該上數計數器 係被複製到該下數計數器,且然後係重置爲〇。若是該上 數計數器係非處於其最大値且該下數計數器係未被禁能, 則該下數計數器被增量,除非其已達到0。 該必須由本發明對於各分支作儲存之加入狀態資訊係大量 的。所幸,一小數目位元係可提供一高性能增益。三位元 計數器係正確預測少於七之所有固定運行長度。未被正確 預測的最短運行長度(七)具有單獨由該狀態機器預測器 之準確度爲8 7 %。四位元計數器係提供至少9 3 %之準 8 本紙張尺度適用中國國家&準^C^S)A4規格(210 X 297公釐)" (請先閱讀背面之注Ϊ項再填寫本頁) A7 41^63 0 4 五、發明說明(^)) 確度。 [圖式簡單說明] 圖1係於先前技藝之一分支預測器的一狀態機器圖; 圖2係本發明一實施例之一分支預測器的一方塊圖; 圖3係於圖2中之一預測模組的一電路圖; 圖4係圖2之更新模組所操作之演算法的一流程圖; 圖5 A係說明根據本發明之分支預測器對於一組指令 的操作,該組指令具有一定値運行長度之一條件分支指令 :及 圖5 B係說明根據本發明之分支預測器對於一組指令 的操作,該組指令具有變動運行長度之條件分支指令。 [元件符號說明] 10 分支預測RAM 11 程式計數暫存器 13 位址匯流排 1 4 A 一 D 輸出匯流排 1 5 A - D 多工器 1 6 A - D 預測模組 1 9 A 資料匯流排 1 9 B 位址匯流排 1 9 C 寫入致能控制線 2 0 分支擱置體(shelf) 2 1 A - D 資料匯流排 2 2 A - D 一位元匹配線 9 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) (請先閱讀背面之注奇¥項再填寫本頁) I 裝------訂·!-線 經濟部智慧財產局員工消費合作社印製 4 1 9 63 Ο A7 B7 五 、發明說明( 2 3 N 0 R閘 2 4 互斥0 R閘 2 5 指令解碼F I F 0 2 6 A - D 輸入埠 3 0 位址輸入填 3 1 A - D 資料匯流排 3 2 A 一 D 位址匯流排 3 5 選擇控制線 3 6 多工器 3 7 A 資料匯流排 3 7 B 位址匯流排 3 8 更新模組 3 9 線路 4 0 加入條目信號 4 1 採取信號 5 0 指令發出邏輯 (請先閲讀背面之注意事項再填寫本頁)
------ 訂---------M 經濟部智慧財產局員工消費合作社印製 [較佳實施例之詳細說明] 本發明之較佳實施例係於一超純量(superscalar)處理 器。一超純量處理器係於每時脈週期擷取並發出多個指令 進入管線,於此例中,其係多達四個指令。可由本發明獲 益之一超純量處理器的一實例係揭示於Popescu等人在 1990年12月5日所提出申請名稱爲11處理器架構( Processor Architecture) H的美國專利申請案序號 07/622,893 案件。由於並非該處理器的所有元件皆與本發明有關,所 泰紙張尺度適用_國國家標準<CNS)A4規格(210 X 297公釐) 經濟部智慧財產局員工消費合作社印製 4+1 9 63 0 A7 B7 五、發明說明(7) 以其某些元件並未包括在本發明的描述中。 如圖2所示,關於本發明之分支指令預測’所有分支 的執行歷史係儲存於兩結構中’即於該處理器中的分支預 測RAM 1 0和分支擱置體2 0。分支預測RAM1 〇儲 存分支執行的所有歷史,多達但並不包括最舊且未解決的 預測分支。分支擱置體2 0保有所有分支執行的歷史,其 係未解決的預測分支或跟隨一未解決的預測分支者。 在較佳實施例中,該分支預測Rami〇係由ικ ( 1024)個字組所構成爲了讀取分支預測RAM 1 〇,該 處理器的程式計數暫存器11係以一値PC透過一位址匯 流排1 3來定址RAM 1 〇。値P C係處理器中下一個欲 擷取之指令的記憶體位址。分支預測RAM 1 0具有四個 資料輸出埠,D〇ut〇 -Dout3,其分別被連接到 輸出線1 4 A - 1 4 D。對於分別在四個位址P C、P C + l、PC + 2、以及PC + 3處之指令的分支預測狀態 係通過所述四個璋,以配合於該處理器的超純量特性。當 然,必須理解的是,本發明係同樣可適用於一簡單的純量 處理。 分支預測R AM 1 〇係雙字組定址。亦即,透過該位 址匯流排1 3之P C的最低有效位元係被忽略。因此,兩 個接續的指令(一者爲偶數P C値而另一者爲下一個較高 的奇數P C値)係需自分支預測RAM 1 〇被派予相同預 測歷史。假設係罕見出現兩個接續的分支指令,且以此方 式’ 1 K字組的RAM 1 0將可儲存多達2K指令之獨特 本紙張尺度適用中國國家標準(CNS)Α4規格(210 X 297公t ) (請先閲讀背面之注意事項再填寫本頁) 裂i!i —訂ί ! — -線 經濟部智慧財產局員工消費合作社印製 i 9b3 0 % A7 B7 五、發明說明(/ύ) 的預測歷史。 分支預測R Α Μ 1 〇係非一高速緩衝(快取)記憶體 (cache);其內容係可以抑或可以不是確實地反應一給定分 支指令的預測狀態。例如,二個其P C値相異正好爲2 K 之倍數的指令將假化(alias)。二指令的歷史將被儲存在 相同的R AM字組,且因此將可能會具破壞性地干擾。此 舉係被容許,因爲分支預測RAM 1 〇僅係一預測機構; 每一分支預測係稍後被加以驗證,並且若不正確係作修護 。因此,破壞性假化情形係僅僅造成預測準確度方面以及 因而在性能方面之潛在降級情形;分支預測R AM 1 〇之 尺寸係可平衡該性能降級情形。 分支擱置體2 0係一1 2個單元、內容可定址的先入 先出(F I F 0)結構,其儲存所有假想分支指令的預測 歷史。一預測分支執行或跟隨一預測分支執行(其正確方 向未知)的所有指令執行係假想執行。該分支擱置體2 〇 具有連接到位址匯流排1 3之一搜尋(Search)埠、連接 到三條線37B、39和40 (其稍候描述)之一輸入( Input)埠、以及連接到分支預測R Α Μ 1 〇之一更新( Update)璋。 分支擱置體2 0係以假想分支執行被發出的順序來儲 存其分支預測歷史。儲存於分支擱置體2 0中的各條目 (entry)具有與本發明有關之兩個部分:一條件分支指令的 預測歷史和該指令的位址。在每一時脈週期下,當加入條 目信號4 0爲真時(亦即邏輯〃 ),一個新的條目係 12 本紙張尺度適用中國團家標準(CNS)A4規格(210 X 297公釐) — — — — — — — — — — — — I I I I I I I — — — — — — — I (請先閲讀背面之注f項再填寫本頁) 經濟部智慧財產局員工消費合作社印製 1 9 63 ο Α7 ___Β7_____ 五、發明說明(/ / ) 經由該輸入淳被加入該分支擱置體2 0。 分支擱置體2 0係操作如同爲一堆疊的擱置體。每一 條目係被寫入”最底的(bottommost) ”空位置。所述最底位 置係可經由該更新埠而予移入該分支預測R AM 1 〇。該 更新埠具有三條線:一資料線1 9 A,傳送該分支擱置體 2 0之最底位置中的條件分支指令預測歷史資料;一位址 匯流排1 9 B,傳送該最底位置中的條件分支指令位址; 以及一寫入致能(Write Enable)控制線1 9 C,對該分支 預測RAM 1 〇發出一寫入操作將被執行的信號。當此移 除發生時,該分支擱置體2 0中的所有條目係被下移一位 。分支修護係涉及刪除對於被發現到已被錯估之分支執行 的條目,以及刪除此條目之上的所有條目。以此方式,該 分支擱置體2 0中之所有的有效條目係從最底條目以其被 登錄的順序而連續地儲存。
當一PC値係透過該位址匯流排13被施加於分支擱 置體2 0的搜尋埠時,若該加入條目信號係真,則該P C 、P C + 1、P C + 2、以及P C + 3位址係同時與所儲 存分支指令位址之各者作比較,以及與該輸入埠處的位址 作比較。此等比較結果係自分支擱置體2 0被送到四個資 料輸出埠B out〇 — Bout3上。分支擱置體2 0之 各資料輸出埠具有兩個部分並且係連接到兩組線。一組線 爲一位元匹配(Match)線,對於各埠B 〇 u t 〇 - B 〇 u t 3分別爲2 2 A - 2 2 D。另一組線爲一資料匯流排, 對於各埠B out〇 — Bout3分別爲2 1 A — 2 1 D 13 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) -----11 — I I I I 裝! 訂------線 f (請先閱讀背面之注意事項再填寫本頁) S3 0 經濟部智慧財產局員工消費合作社印製 A7 B7 五、發明說明( ,用於所儲存分支指令位址之各者的預測歷史資料。在此 等輸出埠上的匹配線2 2 A - 2 2 D係載有一邏輯” 1 ” ’ 若且唯若係有至少一個所儲存位址爲分別與P C、P C + l、PC + 2、或PC + 3相匹配。對於其匹配線2 2 A - 2 2 D爲邏輯"1 ”的任何璋,在該埠處的對應預測歷史 資料係爲其位址相匹配者(此處在該輸入埠的値係視作最 頂者)之儲存於最頂(topmost)(最新近登錄)的條目。 匹配線2 2 A _ 2 2 D係分別連接到2對1 (2-to-l)多 工器1 5 A - 1 5 D,並對其控制。對於具有一匹配線2 2 A — 2 2 D處於邏輯1之各資料輸出埠B 〇 u t 0 -B 〇 u t 3,對應的多工器1 5 A _ 1 5 D係自分支擱置體 2 0選取資料匯流排2 1 A - 2 1 D。來自該埠的預測歷 史資料係被選取作爲是用於多工器1 5 A — 1 5 D的輸出 。若資料輸出埠匹配線2 2 A - 2 2 D係爲邏輯〇,對應 之多工器1 5 A — 1 5 D的輸出係自匯流排1 4 A - 1 4 D上之分支預測R AM 1 〇的對應資料輸出埠D 〇 u t 0 一Do u t 3選取預測歷史資料。 以此配置,四個多工器1 5 A - 1 5 D的輸出係爲對 於PC、PC + 1、PC + 2,以及PC + 3之任何分支 的最近預測歴史。在任何時間點處,若在P c + i有一分 支指令B (其中i = 〇、1、2、3 ),則係有兩種可能 性:不存在B之假想執行,或者是存在有—個或多個假想 執行。在前者的例子中,來自於分支擱置體2 〇對應於p C + 1的匹配線2 2 A- 2 2 D係爲邏輯〇,故多工器1 14 本紙張尺度適用中國國家標準(CNS)A4規格(21〇 x 297公釐) ----- ----I I I I 裝 ---I I--訂------ - --续 (請先閱讀背面之注意事項再填寫本頁) 經濟部智慧財產局員工消費合作社印製 41 963 0 “ A7 _ B7 五、發明說明(q) 5 A — 1 5 D的輸出係來自位在對應輸出匯流排1 4 A _ 1 4 D上之分支預測r AM 1 〇。來自多工器1 5 A - 1 5 D的輸出信號係代表分支指令B上達其最近執行(其在 此例中爲非假想性)之歷史。 若係有一B之假想執行,則來自分支擱置體2 〇的輸出璋 Bout〇-B〇ut3 之一者的一匹配線 2 2 A — 2 2 D係載有一邏輯1信號,並且該埠的預測歷史輸出係在B 之最近假想執行後者。由於所有假想執行係較之所有非假 想執行爲近者,故此爲最近的執行,並且係由對應的多工 器1 5 A - 1 5 D所選擇作爲輸出。 各多工器1 5 A — 1 5 D的輸出匯流排係四個相同預測 模組1 6 A — 1 6 D之一者的輸出匯流排。如圖3所示, 各預測模組1 6 A — 1 6 D檢驗來自其個別多工器1 5 A 一 1 5 D的預測歷史資料,以決定對於分支指令之目前執 行的預測。預測歷史資料具有八位元,由二位元預測狀態 、三位元上數計數器値、以及三位元下數計數器値所構成 。預測歷史資料係載送在形成爲各多工器1 5 A _ :L 5 D 之輸出匯流排的八條匯流排線上。 各預測模組1 6 A — 1 6 D具有一反或(N 0 R)閘 2 3和一互斥或(Exclusive-〇R )聞2 4。反或聞2 3接 收下數計數器的三個位元作爲輸入,且反或閘2 3的輸出 係作爲一輸入而連接到互斥或閘2 4。到互斥或閘2 4之 一第二輸入係預測狀態位元之預測狀態的高有效位元,狀 態丨1丨。如圖3中所示,低有效位元(狀態丨〇丨)以及 15 -----------I I I I 訂_ 1 I i i I ! 線 · (請先閱讀背面之注意事項再填寫本頁) 本紙張尺度適用中國國家標準(CNS>A4規格(210 X 297公釐〉 4 1 963 Ο Α7 _Β7______ 五、發明說明(丨4*) 上數計數器的三個位元係通過預測模組1 6 A - 1 6 D, 而並無連接到反或閘2 3與互斥或閘2 4。 可看出的是,由狀態機器所給定的預測係等於狀態的 最高有效位元,狀態{ 1 }。一爲零的下數計數器値(所 有三個位元皆等於邏輯〇 )將令反或閘2 3產生一輸出邏 輯1,其轉而令互斥或閘2 4將狀態{ 1 }的値作互補。 若該下數計數器係非零,則反或閘2 3具有一爲邏輯〇的 輸出,其令互斥或閘2 4輸出狀態{ 1 }的値。互斥或鬧 2 4的輸出係爲該預測値。 預測模組1 6 Α - 1 6 D的輸出,即八個位元之預測 歷史資料加上對於在PC+i (i=0到3)之四個指令 各者的目前預測,係分別連接到一指令解碼F I F◦2 5 的輸入掉2 6A_2 6D。指令解碼F I F〇2 5係五個 指令單元,並儲存從其被自指令高速緩衝記憶體(未示出 )擷取時開始直到其可被發出到處理器管線執行級時爲止 的指令。對於多達四個指令的預測歷史資料係可在各時脈 週期於輸入埠2 6 A - 2 6 D處加入。該預測歷史資料係 從最底的空位置以增加位址的順序被加入。亦即,經由輸 入埠2 6 A (其接收對於在P C處之指令的預測歷史)的 資料係進入該指令解碼F I F 0 2 5之最底的空條目。經 由輸入埠2 6 B的資料係進入正好其上方的條目,以此類 推。 雖然指令的預測歷史係被提供到輸入埠2 6 A,此指 令的位址(P C )係由匯流排1 3經由指令解碼F I F 0 16 (請先閱讀背面之注意事項再填寫本頁) I I I I I I 訂· I ! I I 丨 ! 經濟部智慧財產局員工消費合作社印製 本纸張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 4 19 63 0 ‘ A7 _B7_____ 五、發明說明(/ 0 2 5之一位址輸入埠3 0所提供。指令解碼F I F 0 2 5 含有將儲存於其之各指令與該指令被擷取之位址產生關聯 的邏輯。 指令發出邏輯5 0將檢驗指令解碼F I F 〇 2 5中之 四個最底的指令。指令發出邏輯5 0的主要任務係,對於 指令解碼F I F◦2 5的各指令而決定此指令何時可予"發 出(issued)",亦即進展到處理器管線中的後續級。指令 發出邏輯5 0必須執行的兩項工作是:(1 )追蹤各發出 指令之結果的可用性和位置,與(2 )決定指令解碼F I F Ο 2 5中之各指令與先前發出指令的相依性。關於此等 工作如何執行之特定細節係與本發明並無關聯。 當該指令發出邏輯係發出指令到後續管線級時,其從 指令解碼F I F〇2 5的底部移走指令。在較佳實施例中 ,除非該指令解碼F I F 0中之此指令”以下(below) ”的 所有指令係亦發出,則將無指令被發出;因此,指令解碼 F I F 0 2 5係確實爲先入先出。 若指令解碼F I F 0 2 5含有分支指令,指令發出邏 輯5 0便檢驗最底的此指令。若係一無條件採取的分支, 則該指令發出邏輯係實施兩項特定步驟:(1 )其如由分 支指令所指引而改變程式計數暫存器11,以便更改指令 被擷取的順序;(2)其自指令解碼FIF 0 2 5之"頂部 (Top) ”移走該等後隨著不應被執行之分支的指令。 若指令解碼F I F 0 2 5中之最底分支指令係一條件 分支’則指令發出邏輯5 0係以上述方式決定出:(1 ) 17 本紙張尺度適用中國國家標準(CNS)A4規格(210 x 297公釐) (請先閱讀背面之泫意事項再填寫本頁) 裝! ΪΙ —訂_!!---線 經濟部智慧財產局員工消費合作社印製 經濟部智慧財產局員工消費合作社印製 41 963 Ο - Α7 _____Β7___ 五、發明說明(丨t) 此分支相依於哪個先前所發出的指令;以及(2 )該等前 行指令的結果是否爲可用,並且若爲是的話’則此等結果 的値爲何。若該分支所相依之結果所有者均爲已知,則指 令發出邏輯5 0對其求値以決定出該分支指令應否被採取 。若該分支將被採取,則該指令發出邏輯執行上述兩步驟 ,即改變程式計數暫存器1 1並自指令解碼F I F 0 2 5 移走任何後隨的棄置指令。 若指令解碼F I F 0 2 5中的最底分支指令係一條件 分支並且其所相依的結果均不可用,指令發出邏輯5 0便 利用一預測來決定該分支之處置。該預測係由一預測模組 1 6 A - 1 6 D所產生,並係以該分支指令經由一輸入埠 2 6 A — 2 6 D而寫入於該指令解碼F I F 0。再次地, 若該分支係預測爲將被採取,程式計數暫存器1 1的內容 係被更改並且後隨該分支的指令係自指令解碼F I F〇2 5被棄置。 指令發出邏輯5 0係產生有三個控制信號輸出,其控 制分支擱置體2 0的寫入操作。加入條目信號4 0在每一 時脈週期於一條件分支指令被發出時(亦即自F I F 0 2 5 之底部移走時)係爲邏輯1。每當加入條目信號4 0係爲一 邏輯1時,所述二位元選擇分支信號3 5係正被發出的分 支指令之該F I F 0中的索引,並且若該分支被採取時則 採取(Taken)信號4 1係一邏輯1,或是若該分支未被採 取時則採取信號4 1係一邏輯0。 指令解碼F I F 0 2 5具有四個輸出埠F 〇 u t 〇 - 18 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) "" <請先閱讀背面之注意事項再填寫本頁) 裝-----訂-------線 ! 4 1 9 63 0 ^ A7 B7 經濟部智慧財產局員工消費合作社印製 五、發明說明(j) F 〇 u t 3,其上分別連接一資料匯流排3 1 A — 3 ID 和一位址匯流排3 2 A _ 3 2 D。此等輸出埠F o u t Ο 一 F o u t 3之各者產生兩項資訊:一預測歷史,被儲存 於資料匯流排3 1 A- 3 1 D之一者上的指令解碼F I F 〇2 5中;以及對應位址匯流排3 2 A _ 3 2 D上之有關 的指令位址。此四個輸出埠F〇ut〇_F〇ut3係輸 出於指令解碼F I F 0 2 5中的最底四個條目。 資料匯流排3 1 A - 3 1 D和位址匯流排3 2 A — 3 2 D係連接到一多工器3 6的輸入終端’該多工器3 6具 有兩條選擇控制線3 5。由指令發出邏輯5 0所產生於該 控制線3 5上的一選擇分支控制信號係指令解碼F I F0 2 5之四個輸出之中用於最久的條件分支(若有的話)之 索引。此控制信號將令多工器3 6從輸出埠F 〇 u t 0 — F 〇 u t 3之一者選擇用於該最久分支的位址和預測狀態 資訊,分別作爲用於一位址匯流排3 7 B和資料匯流排3 7 A的輸出。位址匯流排3 7 B係直接連接到分支擱置體 2 0的輸入埠1 8 B。 於資料匯流排3 7 A上的預測狀態資訊係通往一更新 模組3 8。模組3 8將''更新"(如下所述)該預測狀態並 將該資料放置到一線路3 9上’此線路3 9則係連接到分 支擱置體2 0的輸入璋1 8 A。來自指令發出邏輯5 〇之 一控制線4 0上的一加入條目信號,將令在該等輸入埠1 8A和18B處的位址和更新狀態資訊被寫入分支擱置體 2 0 ’其當指令解碼F I F◦2 5中之一條件分支指令正 19 (請先Μ讀背面之注項再填寫本頁) 裝------ 訂. --------線 本紙張尺度適用中國國家標準(CNS)A4規格(210 x 297公釐) 經濟部智慧財產局員工消費合作社印製 4 1 9 63 0 、 A7 —__ B7 五、發明說明(α) 被發出時。 更新模組38(其可實施爲隨機邏輯或基於ROM的 記憶體)將對四態分支預測器與上、下數計數器二者產生 新的値。該分支預測器的新値係如圖1之狀態圖所算出。 至該狀態機器的輸入係爲由指令發出邏輯5 0所產生的採 取信號4 1。若該分支被採取,則其値爲邏輯1 ;而若該 分支未被採取,則其値爲邏輯0。 圖4顯示更新模組3 8算出用於上、下數計數器之新 値的演算法。更新模組3 8首先由步驟1 0 1決定出該分 支的預測方向是否已知爲不正確。此舉係要求該分支所相 依的資料爲已知,並且要求所預測的方向(由預測模組1 6 A — 1 6 D所產生並儲存在指令解碼f I F 0 2 5中) 係並非正確的方向。 若該項預測係不知爲錯者,則依循路徑2 0 2,並且 在步驟1 0 2,上數計數器係檢驗以決定出其是否已達到 其最大値。若爲是’分支運行長度係明顯太長而無法由此 等計數器加以追縱。在步驟1 〇 3,路徑2 0 3被依循並 且下數計數器被設定爲最大値(在本發明之此實施例中爲 7)。此舉具有禁能該分支運行預測的作用,由於下數計 數器不會減量以及因而永遠不會達到零。由於上數計數器 已達到最大値,所以其係不變。 若上數計數器已達到其最大値,則依循路徑2 〇 4。 由步驟1 0 4和1 0 5,下數計數器係被檢驗以查看其是 否係處於最大値、零、或是一中間値。若該計數器爲處於 20 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公楚) -----------裝-----訂-丨-----線 (請先閲讀背面之注意事項再填寫本頁) 經濟部智慧財產局員工消費合作社印製 41 963 0 ★ A7 B7 五、發明說明(q) 一中間値(在步驟1 0 4和1 0 5之後分別依循路徑2 0 5和206),此意謂對於此分支之分支運行預測係並未 被禁能並且該分支運行尙未達到被預測運行的終止。因此 ,在步驟1 0 7,該下數計數器係被減量1,因爲其現在 係更接近於被預測運行的終止之一個分支執行。 若該下數計數器係在步驟1 0 4被決定爲處於其最大 値或者是在步驟1 0 4和1 0 5被決定爲處於一中間値, 則該上數計數器係在步驟1 0 8被增量1。因此,目前運 行的長度係總是被維持在該上數計數器中(直到此計數器 係命中該最大値),即使該分支運行預測器係被禁能(步 驟1 0 4之後所依循的路徑2 0 7 )。 若該下數計數器在步驟1 0 5係被決定爲零,則路徑 2 0 8係被依循。該下數計數器係在步驟1 0 9被重行載 入以上數計數器的目前値,然後上數計數器係在步驟11 0被重行初始化爲零。該下數計數器處於零時係表示被預 測運行之終止,亦即在相反方向上去進行的第一分支。複 製下數計數器到上數計數器係預測出,下一運行將爲如同 剛結束之運行的相同長度。設定上數計數器爲0係預測出 ,此一相反分支之後的下一分支將爲一新的運行中的第一 者。因此,帶有固定長度(少於最大計數器値)運行之一 分支(在反向上由單一分支所分離)將總是被正確地預測 〇 參看步驟1 0 1,若該分支預測已知爲錯誤,則將依 循路徑2 1 0。在步驟1 1 1,該上數計數器係被核對以 21 本紙張尺度適用中國國家標準(CNS)A4規格(210 x 297公1 ) (請先閱讀背面之注項再填寫本頁) I I I II I I 111!11線 963 〇 Α7 Β7 經濟部智慧財產局員工消費合作社印製 五、發明說明(v>) 決定出其是否係處於最大値。若該計數器已達到最大値’ 則剛完成的目前運行(由錯誤的預測所指示出)對於計數 器而言係太長,但是下一運行可能係足夠短。路徑2 1 1 係被依循,並且在步驟1 1 2 ’該下數計數器係被設定到 最大値以禁能該分支運行預測器’但該上數計數器係在步 驟110被重行初始化到零。 若該上數計數器係在步驟111被決定爲尙未達到其 最大値,則路徑2 1 2被依循。該下數計數器係在步驟1 1 3被核對是否爲零。若該下數計數器係處於零’則目前 的運行係被錯誤地預測爲已結束’亦即被預測的長度爲太 短。在此情況中,該上數計數器已計數此運行的確實長度 ,並且應繼續如此作出。路徑2 1 3係被依循並且該下數 計數器係在步驟114被設定到最大値’以避免於目前運 行中更多的預測,並且該上數計數器係在步驟1 〇 8被增 量。 若該下數計數器係經步驟1 1 3決定爲未處於零,則 目前的運行係被錯誤地預測爲尙未結束’亦即被預測的長 度爲太長。路徑2 1 6係被依循。該上數計數器(其保有 目前運行的確實長度)係被複製到該下數計數器,以便以 步驟1 0 9預測下一運行係具有該相同長度者。然後,該 上數計數器係在步驟11〇被重行初始化爲零。 圖5 A顯示帶有固定運行長度三之一分支上的分支預測器 之穩態行爲。最左邊的一行係表示分支預測器的狀態’ ”上 (Up) ”這一行表示上數計數器値,"下(Down)"這一行表示 22 (請先閱讀背面之注意事項再填寫本頁) -I裝 --------訂·---I--—線 本紙張尺度適用中國國家標準(CNS)A4規袼(210 X 297公釐) 41 963 0 〜 Α7 __Β7 五、發明說明(γ\) (請先閱讀背面之注意事項再填寫本頁) 下數計數器値,且"預測(Prediction)”這一行表示來自分支預 測器的預測位元。最右邊的一行係表示分支的確實方向’ 其中1代表所採取的分支,0代表未採取的分支(雖然將 此等値反過來亦將得到相同的行爲)。此行顯示出一個〇 接著三個1的重覆形態。在此情況中,由於主宰方向是1 ,該四態預測器總是預測1。其預測係該狀態的最高有效 位元;由於0的相反運行係不長於1,僅此狀態機器之狀 態的最低有效位元曾改變。 如圖5 A之第一列中所示,該下數計數器係零且該上 數計數器係等於三之運行長度。下數計數器爲零的値將令 由該分支預測器狀態機器所給定的預測(此預測爲1)係 由預測模組1 6 A- 1 6 D作互補。由於此〇分支係被發 出並被寫入分支擱置體2 0,故更新模組3 8係回應於該 上數計數器係小於最大値並且該下數計數器係爲零之事實 ,在步驟1 0 9將該上數計數器複製到該下數計數器,並 在步驟1 1 0將該上數計數器重置爲零。 經濟部智慧財產局員工消費合作社印製 此分支下一次被擷取時,在圖5 A之第二列中所給定 的値係自分支擱置體2 0或是自分支預測RAM 1 〇所讀 取。此時該預測模組1 6 A _ 1 6 D將察知一非零的下數 計數器値(値1 ),並因而致能未修改的狀態機器預測爲 1。當此分支被發出時,更新模組3 8將察知該上數計數 器爲低於最大値且該下數計數器爲處於一介於零和最大値 之間的中間値。因此,該模組係在步驟1 〇 7單純減量該 下數計數器,且係在步驟1 0 8單純增量該上數計數器。 23 $紙張尺度適用中國國家標準(CNS)A4規格(21G X 297公楚) ' · 經濟部智慧財產局員工消費合作社印製 4 1 963 Ο 4 Α7 ____Β7____ 五、發明說明 此相同的行爲係接著重覆兩次,該分支係被擷取且之後被 發出。在此1之運行的結束處,由圖5A之列5所示,該 下數計數器係再度達到零,並且因而該預測係再度被作互 補運算,且該等計數器被重行初始化以計數下一個運行。 圖5 B顯示出一行爲,即當長度爲三的運行係後隨以 一長度較短的運行(在此例中爲長度二)時,此長度較短 的運行則轉而後隨以一長度爲四之較長的運行。在由圖5 B之列1所示的狀態中,長度三的先前運行之結束已被正 確地預測,如圖5 A中所見。在假設下一運行亦將爲長度 三之下,該等計數器係被重行初始化(列2)。透過列3 和4,該上數計數器係被增量而該下數計數器係被減量。 在列4中,預測係仍然爲1,因爲被預測的運行尙未完成 ,但確實的方向是〇。 下一時刻,在列4中所發出分支的正確方向係變成已 知。該分支修護機構將棄置該分支以及其隨後所有指令的 結果。然後,該分支將被重行擷取並重行發出。該狀態機 器和該等計數器的値在重行擷取時(由列4’所示)係相 同於其在原來擷取時的値(由列4所示)。此係爲真,因 爲分支修護機構已移走原來發出之所有結果,包括任何對 於分支擱置體2 0之修改;所述修改係因爲該分支尙未被 解決而從未寫入於分支預測RAM1 0。 當接著修護後該分支被重行發出時,更新模組3 8便 將該項預測(其再度爲1 )比較於0的已知正確方向,以 決定出該預測係錯誤。路徑2 1 0在步驟1 0 1之後被依 24 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公爱) --- --------- i I--!訂--J·! — — 線 I 《請先閱讀背面之注意事項再填寫本頁) 41 963 0 - Α7 Β7
循。由於該上數計數器係少於最大値且該下數計數器係非 爲零,更新模組3 8便將上數計數器複製到下數計數器並 重置該上數計數器爲0,如圖5 B之列5所示。因此,該 分支運行預測器係被設定以預測下一運行將爲長度二。 該上數計數器和下數計數器係在列6和7中計數出一 預測運行長度爲二。在列7中所發出的分支係被預測爲運 行之結束,因爲下數計數器係零。因此,該預測被改變爲 0。此接著被發現爲一不正確的預測,致使得分支以相同 的値對該預測器重行發出。如列7’中所示。此時,更新 模組3 8係在步驟1 0 1決定出該預測係錯誤,並且路徑 2 1 0係再度被依循α在步驟1 1 1決定出該上數計數器 非處於最大値之後,後續的步驟1 1 3決定出該下數計數 器係爲零。在此情況下,運行的實際長度仍然未知,並且 因而其結束無法被預測。因此,該下數計數器係在步驟1 1 4被設定爲最大値,以避免任何試圖以預測該運行之結 束。該上數計數器繼續在步驟1 0 8增量,以計數目前運 行的長度。 在列8和9的預測係直接取自該狀態機器預測器,因 爲該下數計數器係被禁能。在列9所發出的分支係被預測 爲1但發現係爲0,此表示長度爲四(列5、6、7和8 )之一運行的結束。當此分支被重行發出(列9’)時’ 更新模組3 8再次在步驟1 0 1決定出該預測係錯誤。在 步驟1 1 1和路徑2 1 2之後,該下數計數器係在步驟1 1 3被決定係非爲零,所以該上數計數器係在步驟1 0 9 25 本紙張尺度適用t國國家標準(CNS)A4規格(210 X 297公釐) (請先閲讀背面之注意事項再填寫本頁) 裝 ----訂---------線 經濟部智慧財產局員工消費合作杜印製 經濟部智慧財產局員工消費合作社印製 41 963 Ο ^ Α7 ___ Β7 五、發明說明(/y> 被複製到該下數計數器,且該上數計數器係在步驟i丄〇 被重行初始化。因此,在列1 〇,該分支運行預測器係被 設定以預測下一運行將爲長度四。 ' 若無分支運行預測器,圖5 B所示例子中的所有分支 均將被預測爲1。因此,在列4和9中的分支將被錯誤地 預測,但是在列7中的分支將被正確地預測。亦即,每當 一短於7的運行後隨以一較長的運行時,將發生一額外的 分支修護。當一長度爲七或少於七的運行係後隨以一較短 的運行時,如在列4中,無論係有或無分支運行預測器均 發生一修護。每當一短運行後隨以相同長度的運行時,該 分支運行預測器可免除一分支修護。 經由運用本發明,對於固定或緩慢改變運行長度分支 之分支預測率係可大爲改善。快速改變運行長度之分支則 可能具有較差之性能,視運行長度之確實分配而定。 雖然上述爲本發明較佳實施例之一完整描述,但可運 用各種替代、修改以及等效者。應係明顯的是,本發明係 同樣可適用於藉由對上述實施例作適當修改者。是以,上 述說明係不應視爲限制本發明的範疇,蓋本發明之範疇係 由隨附申請專利範圍所界定。 26 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) -1----1----II^------訂--- ----— ·線 I <請先閱讀背面之注意事項再填寫本頁)