專利名稱::更新微處理器中的分支目標地址快取的方法及其微處理器的制作方法
技術領域:
:本發明是關于微處理器,特別是關于微處理器中的分支目標地址快取(branchtargetaddresscaches)0
背景技術:
:傳統的分支目標地址快取(branchtargetaddresscache;BTAC)大約只能將兩個分支指令儲存至指令數據的一給定對齊(aligned)的16字節片段中。此設計選擇是為了縮短耗時并減少功率消耗與晶粒尺寸。允許儲存三個或四個分支指令要比儲存兩個分支指令復雜的多。雖然從指令快取中提取三個或多個分支指令(其初始字節皆在相同的16字節中)的情況并不多見,但此情況確實會發生并且會對效能產生負面影響。
發明內容本發明提供一種微處理器,包括一分支目標地址快取、一執行單元以及一更新邏輯電路。分支目標地址快取中的各個項目用以儲存至多N個分支指令的多個分支預測信息。執行單元用以執行事先從一指令快取的一提取總量中提取的一分支指令。更新邏輯電路耦接至分支目標地址快取與執行單元,更新邏輯電路用以判斷分支目標地址快取是否已經儲存位于提取總量中的N個分支指令的分支預測信息,其中N至少等于二;若分支目標地址快取尚未儲存位于提取總量中的N個分支指令的分支預測信息,則使用分支指令的分支信息來更新分支目標地址快取;若分支目標地址快取已經儲存位于提取總量中的N個分支指令的分支預測信息,則判斷分支指令的替換優先權是否高于分支目標地址快取中的N個分支指令的替換優先權;以及若分支指令的替換優先權高于分支目標地址快取中的N個分支指令的替換優先權,則使用分支指令的分支信息來更新分支目標地址快取。本發明提供一種更新微處理器中的一分支目標地址快取(BTAC)的方法,其中分支目標地址快取中的各個項目用以儲存來自一指令快取的一提取總量中至多N個分支指令的多個分支預測信息。上述方法包括執行事先從指令快取的提取總量中提取的一分支指令。判斷分支目標地址快取是否已經儲存位于提取總量中的N個分支指令的分支預測信息,其中N至少等于二。若分支目標地址快取尚未儲存位于提取總量中的N個分支指令的分支預測信息,則使用分支指令的分支信息來更新分支目標地址快取。若分支目標地址快取已經儲存位于提取總量中的N個分支指令的分支預測信息,則判斷分支指令的替換優先權是否高于分支目標地址快取中的N個分支指令的替換優先權。若分支指令的替換優先權高于分支目標地址快取中的N個分支指令的替換優先權,則使用分支指令的分支信息來更新分支目標地址快取。為讓本發明的上述和其它目的、特征、和優點能更明顯易懂,下文特舉出較佳實施例,并配合所附圖式,作詳細說明如下。104-、提取單元;106廣、指令解碼器;108-、指令隊列;112廣、加法器;116-、寄存器別名表;118廣、保留站;122-、執行單元;124廣、引退單元;126-、第二分支歷史表;128廣、分支目標地址快取;132-、返回堆棧;134廣、控制邏輯電路;136-、更新邏輯電路;138廣、虛擬隨機產生器;142-、提取地址;144-、下一個序列提取地址146-、預測分支目標地址;148--預測返回地址;152-、正確目標地址;154廣、分支目標地址;162-、整體分支樣式;164廣、第一分支歷史表;166-、虛擬隨機指標;168廣、通用寄存器;202-、快取線;302廣項目;304-、分支目標地址預測;306--方向預測;308-、分支指令型式;312-、有效位。具體實施例方式為了減少上述問題所造成的效能影響,以下實施例將提供一種替換策略(replacementpolicy),適用于從指令快取中提取的快取線的相同部分或總量(例如16字節)中具有額外分支指令(例如第三分支指令)的情況。此替換策略為一種以相關分支指令的型式為基礎的優先機制(priorityscheme),并且具有取代優先機制的虛擬隨機措施(pseudo-randomprovision)用以適應不同的極端狀況(cornercases)。圖1為本發明實施例的微處理器100的方塊圖。微處理器100包括一指令快取102以及一提取單元104,提取單元104提供的提取地址142用以存取指令快取102。提取單元104通過選擇不同來源所提供的多個地址中的一者來輸出提取地址142,上述來源包括提取地址142本身、用以遞增提取地址142的加法器112所提供的下一個序列提取地址144、分支目標地址快取(BTAC)128提供的預測分支目標地址146、返回堆棧(returnstack)132提供的預測返回地址148、執行單元122提供的正確目標地址152,以及指令解碼器106提供的分支目標地址154。控制邏輯電路134用以根據來自第一分支歷史表164與第二分支歷史表126的方向預測以及分支目標地址快取128的信息,控制提取單元104選擇多個輸入中的一者。舉例而言,分支目標地址快取128的信息包括方向預測與分支指令預測的6型式(例如呼叫/返回指令、間接分支(indirectbranch)指令、條件相對(conditionalrelative)指令、非條件相對(unconditionalrelative)指令)。指令快取102根據提取地址142提供指令字節的快取線202至指令解碼器106。指令快取102在每個時鐘周期提供部分快取線202而不是整個快取線202。如圖2所示,在本實施例中各個快取線202為64字節,并且指令快取102在每個時鐘周期提供部分快取線202(16字節)至指令解碼器106或指令緩沖器(圖未顯示)。指令解碼器106用以將指令字節解碼。在本實施例中,指令解碼器106將x86架構指令轉譯成微指令(microinstructions)并提供至指令隊列(instructionqueue)108。當指令解碼器106將一分支指令解碼時(該分支指令的目標地址是以相對于分支指令的地址的偏移量來計算),指令解碼器106計算分支目標地址154并將分支目標地址154提供至提取單元104。此外,指令解碼器106將分支指令的地址提供至第二分支歷史表(branchhistorytable)126。第二分支歷史表126儲存關于先前執行的分支指令的方向歷史信息。若分支指令地址命中于(hitsin)第二分支歷史表126,則分支指令地址預測分支指令會被取用(taken)并將預測結果傳送至控制邏輯電路134。控制邏輯電路134使用上述預測來控制提取單元104。指令隊列108將程序順序中的指令提供至寄存器別名表(registeraliastable;RAT)116,寄存器別名表116用以維護并產生各個指令的相依性信息(d印endencyinformation)。寄存器別名表116將指令配送(dispatch)至保留站(reservationstation)118,保留站118用以將指令(可能是程序順序外的指令)發送至執行單元122。執行單元122用以執行分支指令。執行單元122也顯示不同的分支預測器(分支目標地址快取128、返回堆棧132、第二分支歷史表126以及第一分支歷史表164)是否已正確地預測分支指令。執行單元122也根據分支指令的執行,使用歷史信息來更新上述不同的分支預測器。執行單元122也將正確目標地址152提供至提取單元104。執行單元122也更新微處理器100所儲存的整體分支樣式(globalbranchpattern)162,當提取地址142出現于第一分支歷史表164時,第一分支歷史表164會使用整體分支樣式162來執行方向預測。在執行單元122執行指令之后,引退單元(retireunit)124用以引退由重排序緩沖器(圖未顯示)所儲存的程序順序中的指令。請參考圖3,圖3為圖1中的分支目標地址快取128的配置方塊圖。分支目標地址快取128用以儲存關于先前執行的分支指令的信息,并且在后續執行期間使用此信息來預測這些分支指令的目標地址、方向以及型式。如圖3所示,分支目標地址快取128中的各個項目(entry)302包括一有效位312、一分支目標地址預測304、一方向預測306(即分支指令是否會被取用(taken)或不取用(nottaken))以及一分支指令型式308。在一實施例中,分支指令型式308用以指定分支指令是否為一呼叫/返回指令、間接分支指令、條件相對分支指令或非條件相對分支指令。微處理器100中的更新邏輯電路136的優點在于使用分支指令型式308用以明智地替換分支目標地址快取128中的項目302,細節將在以下做進一步說明。如圖3所示,分支目標地址快取128可在指令快取102中的快取線202的各個部分或提取總量(fetchquantum)(例如16字節)中儲存兩個項目302(標記為“A”與“B”)。換言之,分支目標地址快取128可儲存部分快取線202中的至多兩個分支指令的預測信息。如上所述,在部分快取線202中具有超過兩個分支指令的情況下,此限制會降低分支預測的效能。然而,更新邏輯電路136使用一明智的替換策略用以降低效能影響,細節將在以下做進一步說明。在一實施例中,分支目標地址快取128也包括各個A/B項目對(entrypairs)的一最近最少使用(least-recently-used;LRU)位(圖未顯示),用以顯示最近最少使用A側還是B側以便決定是否要替換A項目302或B項目302。在本實施例中,雖然分支目標地址快取128儲存每個部分快取線202(16字節)中的兩個分支指令的預測信息,但可依據設計需要來改變部分快取線202的大小以及每個部分快取線202中的分支指令的數目。參考回圖1,當提取地址142出現于分支目標地址快取128時,分支目標地址快取128將信息提供至提取單元104、指令解碼器106、返回堆棧132以及控制邏輯電路134。仔細而言,分支目標地址快取128將作為預測分支目標地址146的分支目標地址預測304提供至提取單元104,并且將方向預測306與分支指令型式308提供至控制邏輯電路134。此外,分支指令型式308沿著具有分支指令的管線傳遞,并且執行單元122隨后將分支指令型式308提供至更新邏輯電路136以便執行分支目標地址快取128的替換策略,細節將在以下做進一步說明。返回堆棧132用以儲存由呼叫指令產生的返回地址。當分支目標地址快取128顯示提取地址142所指定的部分快取線202包含一呼叫指令時,返回堆棧132將具有一返回地址。當分支目標地址快取128顯示提取地址142所指定的部分快取線202包含一返回指令時,返回堆棧132將預測返回地址148提供至提取單元104。微處理器100也包括一虛擬隨機產生器138用以提供一虛擬隨機指針166至更新邏輯電路136。更新邏輯電路136的優點在于使用虛擬隨機指針166來執行分支目標地址快取128的替換策略,用以改善以嚴格優先權為基礎(strictlypriority-based)的替換策略,細節將在以下做進一步說明。在一實施例中,虛擬隨機產生器138為一15位的線性反饋移位寄存器(linearfeedbackshiftregister;LFSR),用以在虛擬隨機順序中的所有215個狀態(除了全為0狀態)內循環,并且在虛擬隨機產生器138產生相同的重復產生樣式(generationpatternr印eats)之前,時鐘周期數量為32767個時鐘周期。當有需要時,可從15位中取樣5位來產生虛擬隨機指針166。因此,虛擬隨機指標166大約每32個時鐘周期平均為真值(true)—次。請參考圖4,圖4為圖1中的更新邏輯電路136所使用的分支指令型式優先權的結構圖。如圖4所示,間接型式的分支指令具有最高優先權(表示最后才被替換),呼叫/返回型式的分支指令具有第二高優先權,條件相對型式的分支指令具有第三高優先權,而非條件相對型式的分支指令具有最低優先權(表示可最先被替換)。相對型式的分支指令的目標地址是以相對于分支指令的地址的總偏移量來計算,并且偏移量為指令本身中的字段。因此,指令解碼器106可正確地計算相對型式的分支指令(包括條件相對分支指令以及非條件相對分支指令)的分支目標地址154。此外,由于已經知道非條件相對分支指令的方向,因此指令解碼器106可準確地解析(resolve)非條件相對分支指令。因此,分支目標地址快取128誤預測(mispredict)—非條件相對分支指令所產生的代價(penalty),相對小于誤預測其它型式的分支指令所產生的代價。在一實施例中,誤預測代價在最糟的情況下大約為七個時鐘周期,但根據指令隊列108的使用率(fullness),誤預測代價也會少于七個時鐘周期。這就是為什么非條件相對分支指令具有8)。在一實施例中,分支目標地址快取128的項目302包括一旗標(flag)用以顯示分支指令是否為一非條件相對分支指令,因此若部分快取線202中具有超過兩個分支指令,則更新邏輯電路136替換分支目標地址快取128中的非條件相對分支指令,并且更新邏輯電路136通常不會將其它型式的分支指令替換為一非條件相對分支指令。與相對型式的分支指令相比,微處理器100的通用寄存器168中的某些操作數(operand)或存儲器位置中的某些操作數可用來計算一間接型式的分支指令目標地址。因此,指令解碼器106不會預測間接分支指令,并且是由執行單元122來計算間接分支指令目標地址。因此,分支目標地址快取128誤預測一間接分支指令所產生的代價,通常會大于誤預測其它型式的分支指令所產生的代價。這就是為什么間接分支指令具有最高優先權(表示最后才被替換)。此外,替換分支目標地址快取128中的呼叫/返回指令(返回堆棧132中具有該呼叫/返回指令的一有效返回地址),會導致返回堆棧132未對齊(misaligned)使得返回堆棧132很有可能在之后會誤預測,因而產生負面效能影響。這就是為什么呼叫/返回指令具有第二高優先權。最后,雖然通過指令解碼器106(目標地址)、第二分支歷史表126(方向)以及分支目標地址快取128來預測條件相對分支指令,但由于在本實施例中的分支目標地址快取128的大小大于第二分支歷史表126,因此分支目標地址快取128的方向預測會比較準確。此外,從分支目標地址快取128中移除條件相對分支指令會導致整體分支樣式162產生誤差。基于上述理由,條件相對分支指令是高于非條件相對分支指令因而具有第三高優先權。請參考圖5,圖5為圖1中的微處理器100的操作流程圖。流程從步驟502開始。在步驟502中,執行單元122執行一全新的分支指令并提供相關信息至更新邏輯電路136。流程前進至步驟504。在步驟504中,更新邏輯電路136使用上述分支指令的地址用以在分支目標地址快取128中建立索引。流程前進至判斷步驟506。在判斷步驟506中,更新邏輯電路136檢查A項目302與B項目302的有效位312,用以判斷快取線202的相同部分(sameportion)中是否具有超過兩個分支指令。若有,流程前進至步驟512;若沒有,流程前進至步驟508。在步驟508中,更新邏輯電路136使用與上述分支指令相關的執行信息來更新分支目標地址快取128。換言之,更新邏輯電路136寫入無效的A項目302或B項目302。流程結束于步驟508。在步驟512中,更新邏輯電路136檢查執行單元122所提供的上述分支指令的分支指令型式308,以及A項目302與B項目302中的兩個有效分支指令(根據不同實施例,上述兩個有效分支指令是來自于分支目標地址快取128或執行單元122)的分支指令型式308。流程前進至判斷步驟514。在判斷步驟514中,更新邏輯電路136判斷上述分支指令的分支指令型式308是否高于A項目302與B項目302中的兩個有效分支指令的分支指令型式308。若是,流程前進至步驟516;若否,流程前進至步驟518。在步驟516中,更新邏輯電路136使用與上述分支指令相關的執行信息來更新分9支目標地址快取128。換言之,更新邏輯電路136替換A項目302與B項目302中的兩個有效分支指令中的一者。在一實施例中,更新邏輯電路136根據LRU位選擇索引集合(indexedset)與選擇路徑(selectedway)的A項目302或B項目302。流程結束于步驟516。參考步驟518,更新邏輯電路136檢查虛擬隨機指針166。流程前進至判斷步驟522。在判斷步驟522中,更新邏輯電路136判斷上述分支指令是否為一非條件相對型式的分支指令。若是,流程前進至判斷步驟524;若否,流程前進至判斷步驟532。在判斷步驟524中,更新邏輯電路136檢查虛擬隨機指針166是否為真值。若是,流程前進至步驟526;若否,流程前進至步驟528。在步驟526中,更新邏輯電路136使用新執行的分支指令的分支信息來更新分支目標地址快取128。流程結束于步驟526。在步驟528中,更新邏輯電路136不使用新執行的分支指令的分支信息來更新分支目標地址快取128。流程結束于步驟528。在判斷步驟532中,更新邏輯電路136判斷三個分支指令(即新執行的分支指令以及A項目302與B項目302中的兩個分支指令)是否皆為條件相對分支指令。若是,流程前進至判斷步驟534;若否,流程前進至步驟528。在判斷步驟534中,更新邏輯電路136判斷指令解碼器106或第二分支歷史表126是否正確地預測新執行的分支指令。若是,流程前進至判斷步驟524;若否,流程前進至步驟526。本發明人觀察到在部分快取線202中具有三個分支指令的情況下,程序有時會按順序執行其指令而造成重復執行這三個分支指令的情形,因此有可能會替換分支目標地址快取128中的另一個分支指令。然而,大部分的時間只會執行這三個分支指令中的兩個(或一個)分支指令,這將影響上述步驟502516中以嚴格優先權為基礎的替換策略的效能。舉例而言,假設程序具有一外循環與一內循環,其中外循環包括一條件相對分支指令(例如第一X86JCC指令),內循環包括一第二X86JCC指令與一非條件相對分支指令(例如X86JMP指令),并且內循環跟隨在X86JCC指令之后,x86JMP指令跟隨在第二x86JCC指令之后。在此情況下,通常希望分支目標地址快取128的A項目302與B項目302中包含內循環中的分支指令(第二X86JCC指令與X86JMP指令),而不是包含外循環中的分支指令(第一X86JCC指令)。然而,由于X86JCC指令是高于x86JMP指令,因此根據以嚴格優先權為基礎的替換策略,分支目標地址快取128中的A項目302與B項目302會包含兩個x86JCC指令,并且更新邏輯電路136不會將這兩個X86JCC指令中的任一者替換為X86JMP指令,這種結果是不理想的。為了降低效能影響,虛擬隨機產生器138提供虛擬隨機指針166至更新邏輯電路136,相關細節請參考上述步驟518528。值得注意的是,虛擬隨機指針166隨著微處理器100的時鐘周期呈現規律性的變化,但由于大部分程序并不隨著時鐘周期規律地執行一給定的分支指令,因此虛擬隨機指針166與分支指令的執行呈現隨機性的變化。因此,假設虛擬隨機指標166大約每32個時鐘周期平均為真值(true)—次,步驟518528所實現的替換策略會使得更新邏輯電路136將外循環中的第一x86JCC指令替換為內循環的第32個執行實例(executioninstance)中的x86JMP指令,并且內循環中的10X86JMP指令會儲存在分支目標地址快取128中,直到外循環中的第一x86JCC指令再次被執行。此外,若在一給定的部分快取線202中具有三個X86JCC指令,更新邏輯電路136會檢查指令解碼器106或第二分支歷史表126是否正確地預測X86JCC指令,若有正確地預測X86JCC指令,則根據步驟532、534以及528,更新邏輯電路136通常不會替換其它兩個X86JCC指令中的一者。由于在本實施例中,第二分支歷史表126的大小與所使用的算法復雜度皆小于分支目標地址快取128與第一分支歷史表164,因此必須將難以預測(hard-to-predict)的x86JCC指令儲存在方向預測最準確的分支目標地址快取128中。然而,為了避免上述類似情況(較常查見(see)三個x86JCC指令中的兩者,并且很少執行三個X86JCC指令中的一者),根據步驟532、534以及526,更新邏輯電路136會允許運作良好(well-behaved)的x86JCC指令(即內循環中被指令解碼器106或第二分支歷史表126所正確預測的x86JCC指令)繼續執行(goahead),并且替換其它X86JCC指令中的一者(通常位于內循環的第32個執行實例(executioninstance)中)。本發明雖以各種實施例揭露如上,然其僅為范例參考而非用以限定本發明的范圍,任何本領域技術人員,在不脫離本發明的精神和范圍內,當可做些許的更動與潤飾。舉例而言,可使用軟件來實現本發明所述的裝置與方法的功能、構造、模塊化、模擬、描述及/或測試。此目的可通過使用一般程序語言(例如C、C++)、硬件描述語言(包括Verilog或VHDL硬件描述語言等等)、或其它可用的程序來實現。該軟件可被設置在任何計算機可用的媒體,例如半導體、磁盤、光盤(例如⑶-R0M、DVD-R0M等等)中。本發明實施例中所述的裝置與方法可被包括在一半導體智慧財產權核心(semiconductorintellectualpropertycore),例如以硬件描述語言(HDL)實現的微處理器核心中,并被轉換為硬件型態的集成電路產品。此外,本發明所描述的裝置與方法可通過結合硬件與軟件的方式來實現。因此,本發明不應該被本文中的任一實施例所限定,而當視所附的權利要求范圍與其等效物所界定者為準。特別是,本發明是實現于一般用途計算機的微處理器裝置中。最后,任何本領域技術人員,在不脫離本發明的精神和范圍內,當可作些許更動與潤飾,因此本發明的保護范圍當視所附的權利要求范圍所界定者為準。權利要求一種微處理器,包括一分支目標地址快取,其中上述分支目標地址快取中的各個項目用以儲存至多N個分支指令的多個分支預測信息;一執行單元,用以執行事先從一指令快取的一提取總量中提取的一分支指令;以及一更新邏輯電路,耦接至上述分支目標地址快取與上述執行單元,上述更新邏輯電路用以判斷上述分支目標地址快取是否已經儲存位于上述提取總量中的上述N個分支指令的上述分支預測信息,其中N至少等于二;若上述分支目標地址快取尚未儲存位于上述提取總量中的上述N個分支指令的上述分支預測信息,則使用上述分支指令的分支信息來更新上述分支目標地址快取;若上述分支目標地址快取已經儲存位于上述提取總量中的上述N個分支指令的上述分支預測信息,則判斷上述分支指令的替換優先權是否高于上述分支目標地址快取中的上述N個分支指令的替換優先權;以及若上述分支指令的上述替換優先權高于上述分支目標地址快取中的上述N個分支指令的上述替換優先權,則使用上述分支指令的上述分支信息來更新上述分支目標地址快取。2.根據權利要求1所述的微處理器,其中一間接型式的分支指令的替換優先權高于一呼叫/返回型式的分支指令的替換優先權,并且上述呼叫/返回型式的分支指令的上述替換優先權高于一條件相對型式的分支指令的替換優先權,并且上述條件相對型式的分支指令的上述替換優先權高于一非條件相對型式的分支指令的替換優先權。3.根據權利要求1所述的微處理器,其中一非條件相對型式的分支指令的替換優先權低于其它型式的分支指令的替換優先權。4.根據權利要求1所述的微處理器,還包括一虛擬隨機產生器,耦接至上述更新邏輯電路,用以產生一虛擬隨機指標;其中上述更新邏輯電路還用以若上述分支指令的上述替換優先權不高于上述分支目標地址快取中的上述N個分支指令的上述替換優先權,則判斷上述虛擬隨機指標是否為一真值;若上述虛擬隨機指標為上述真值,則使用上述分支指令的上述分支信息來更新上述分支目標地址快取;以及若上述虛擬隨機指標為一偽值,則不使用上述分支指令的上述分支信息來更新上述分支目標地址快取,其中上述虛擬隨機產生器包括一線性反饋移位寄存器。5.根據權利要求1所述的微處理器,上述更新邏輯電路還用以若上述分支指令的上述替換優先權不高于上述分支目標地址快取中的上述N個分支指令的上述替換優先權,則判斷上述分支指令是否為一非條件相對型式的分支指令;若上述分支指令為上述非條件相對型式的分支指令,則判斷一虛擬隨機指標是否為一真值;若上述虛擬隨機指標為上述真值,則使用上述分支指令的上述分支信息來更新上述分支目標地址快取;以及若上述虛擬隨機指標為一偽值,則不使用上述分支指令的上述分支信息來更新上述分支目標地址快取。6.根據權利要求5所述的微處理器,上述更新邏輯電路還用以若上述分支指令不是上述非條件相對型式的分支指令,則判斷上述分支指令與上述N個分支指令是否皆為一條件相對型式的分支指令;以及若上述分支指令與上述N個分支指令不是皆為上述條件相對型式的分支指令,則不使用上述分支指令的上述分支信息來更新上述分支目標地址快取。7.根據權利要求6所述的微處理器,還包括一指令解碼器,用以通過解碼來預測上述分支指令;其中上述更新邏輯電路還用以若上述分支指令與上述N個分支指令皆為上述條件相對型式的分支指令,則判斷上述指令解碼器是否正確地預測上述分支指令;若上述指令解碼器沒有正確地預測上述分支指令,或上述虛擬隨機指標為上述真值,則使用上述分支指令的上述分支信息來更新上述分支目標地址快取;以及若上述指令解碼器正確地預測上述分支指令,或上述虛擬隨機指標為上述偽值,則不使用上述分支指令的上述分支信息來更新上述分支目標地址快取。8.一種更新微處理器中的一分支目標地址快取的方法,其中上述分支目標地址快取中的各個項目用以儲存來自一指令快取的一提取總量中至多N個分支指令的多個分支預測信息,上述方法包括執行事先從上述指令快取的上述提取總量中提取的一分支指令;判斷上述分支目標地址快取是否已經儲存位于上述提取總量中的上述N個分支指令的上述分支預測信息,其中N至少等于二;若上述分支目標地址快取尚未儲存位于上述提取總量中的上述N個分支指令的上述分支預測信息,則使用上述分支指令的分支信息來更新上述分支目標地址快取;若上述分支目標地址快取已經儲存位于上述提取總量中的上述N個分支指令的上述分支預測信息,則判斷上述分支指令的替換優先權是否高于上述分支目標地址快取中的上述N個分支指令的替換優先權;以及若上述分支指令的上述替換優先權高于上述分支目標地址快取中的上述N個分支指令的上述替換優先權,則使用上述分支指令的上述分支信息來更新上述分支目標地址快取。9.根據權利要求8所述的更新微處理器中的分支目標地址快取的方法,其中一間接型式的分支指令的替換優先權高于一呼叫/返回型式的分支指令的替換優先權,并且上述呼叫/返回型式的分支指令的上述替換優先權高于一條件相對型式的分支指令的替換優先權,并且上述條件相對型式的分支指令的上述替換優先權高于一非條件相對型式的分支指令的替換優先權。10.根據權利要求8所述的更新微處理器中的分支目標地址快取的方法,其中一非條件相對型式的分支指令的替換優先權低于其它型式的分支指令的替換優先權。11.根據權利要求8所述的更新微處理器中的分支目標地址快取的方法,還包括若上述分支指令的上述替換優先權不高于上述分支目標地址快取中的上述N個分支指令的上述替換優先權,則判斷一虛擬隨機指標是否為一真值;若上述虛擬隨機指標為上述真值,則使用上述分支指令的上述分支信息來更新上述分支目標地址快取;以及若上述虛擬隨機指標為一偽值,則不使用上述分支指令的上述分支信息來更新上述分支目標地址快取。12.根據權利要求8所述的更新微處理器中的分支目標地址快取的方法,還包括若上述分支指令的上述替換優先權不高于上述分支目標地址快取中的上述N個分支指令的上述替換優先權,則判斷上述分支指令是否為一非條件相對型式的分支指令;若上述分支指令為上述非條件相對型式的分支指令,則判斷一虛擬隨機指標是否為一真值;若上述虛擬隨機指標為上述真值,則使用上述分支指令的上述分支信息來更新上述分支目標地址快取;以及若上述虛擬隨機指標為一偽值,則不使用上述分支指令的上述分支信息來更新上述分支目標地址快取。13.根據權利要求12所述的更新微處理器中的分支目標地址快取的方法,還包括若上述分支指令不是上述非條件相對型式的分支指令,則判斷上述分支指令與上述N個分支指令是否皆為一條件相對型式的分支指令;以及若上述分支指令與上述N個分支指令不是皆為上述條件相對型式的分支指令,則不使用上述分支指令的上述分支信息來更新上述分支目標地址快取。14.根據權利要求13所述的更新微處理器中的分支目標地址快取的方法,還包括若上述分支指令與上述N個分支指令皆為上述條件相對型式的分支指令,則判斷一指令解碼器是否正確地預測上述分支指令;若上述指令解碼器沒有正確地預測上述分支指令,或上述虛擬隨機指標為上述真值,則使用上述分支指令的上述分支信息來更新上述分支目標地址快取;以及若上述指令解碼器正確地預測上述分支指令,或上述虛擬隨機指標為上述偽值,則不使用上述分支指令的上述分支信息來更新上述分支目標地址快取。全文摘要本發明提供一種更新微處理器中的分支目標地址快取的方法及其微處理器,其中該微處理器包括分支目標地址快取(BTAC)、執行單元及更新邏輯電路。執行單元執行事先從一指令快取的提取總量中提取的分支指令。更新邏輯電路耦接至BTAC與執行單元,更新邏輯電路判斷BTAC是否已經儲存位于提取總量中的N個分支指令的分支預測信息,其中N至少等于二;若BTAC尚未儲存N個分支指令的分支預測信息,則使用分支指令的分支信息來更新BTAC;若BTAC已經儲存N個分支指令的分支預測信息,則判斷分支指令的替換優先權是否高于BTAC中的N個分支指令的替換優先權;以及若分支指令的替換優先權高于BTAC中的N個分支指令的替換優先權,則使用分支指令的分支信息來更新BTAC。文檔編號G06F9/38GK101916184SQ20101026037公開日2010年12月15日申請日期2010年8月20日優先權日2009年8月28日發明者湯瑪斯·C·麥當勞申請人:威盛電子股份有限公司