欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

更新微處理器中的分支目標(biāo)地址快取的方法及其微處理器的制作方法

文檔序號(hào):6608088閱讀:248來源:國知局

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