專利名稱:處理涵蓋跨越指令高速線的分支目標地址高速區(qū)的分支的裝置及方法
技術(shù)領(lǐng)域:
本發(fā)明是有關(guān)于微處理器中的分支目標地址高速區(qū)的領(lǐng)域,且特別是有關(guān)于一種涵蓋跨越指令高速線的分支指令。
指令提取階段是提取目前執(zhí)行程序中的下個指令。下個指令通常為具有下個連續(xù)存儲器地址的指令。然而,就執(zhí)行(taken)的分支指令而言,下個指令為通過此分支指令所指定的存儲器地址的指令,通常是做為分支目標地址的參考。指令提取階段是提取自指令高速緩存(cache)的指令。如果指令不存在于指令高速緩存中,則會從存儲器組織階層中的較高階層(如從較高階的高速緩存或從系統(tǒng)存儲器)提取指令至高速緩存。所提取的指令用于指令譯碼階段。
指令譯碼階段包括用以譯碼自指令提取階段所接收到的指令字節(jié)的指令譯碼邏輯。就可支持可變長度指令的處理器(如x86結(jié)構(gòu)的處理器)而言,指令譯碼階段的功能之一就是將指令字節(jié)流(stream)格式化成分離的指令。格式化指令流包括決定每個指令的長度。也就是,指令格式化邏輯是接收自指令提取階段的未區(qū)分的指令流,并且將指令字節(jié)流格式化(或符合語法)成各自的字節(jié)的群組。每個字節(jié)的群組為一個指令,此指令是組成通過處理器所執(zhí)行的程序。指令譯碼階段也可能包括將宏指令(如x86指令)轉(zhuǎn)換成可通過其余的管線所能執(zhí)行的微指令。
執(zhí)行階段包括用以執(zhí)行自指令譯碼階段所接收到的已格式化及已譯碼的指令的執(zhí)行邏輯。執(zhí)行邏輯是運作來自處理器的緩存器組及/或來自存儲器的數(shù)據(jù)。寫回階段是將通過執(zhí)行邏輯所產(chǎn)生的結(jié)果儲存至處理器的緩存器組。
管線處理器的效能的一個重要的方面就是保持處理器的每個階段都忙碌的執(zhí)行其設(shè)計用來執(zhí)行的功能。特別是,如果當指令譯碼階段已準備好提取下個指令而指令提取階段未提供指令,則處理器的效能將變差。為了避免指令譯碼階段的匱乏,指令緩沖器通常置于指令高速緩存及指令格式化邏輯之間。指令提取階段會試圖保持擁有指令字節(jié)的多個指令于指令緩沖器中,以使得指令譯碼階段將有指令字節(jié)可以譯碼,而不會匱乏。
通常,指令高速緩存提供高速線的指令字節(jié),通常一次為16或32字節(jié)。指令提取階段自指令高速緩存提取一條或多條高速線的指令字節(jié)至指令緩沖器。當指令譯碼階段已準備好譯碼指令時,其會存取指令字節(jié)于指令緩沖器中,而不用等待指令高速緩存。
指令高速緩存提供用于指令提取階段的指令高速緩存的提取地址所選擇到的高速線的指令字節(jié)。在正常的程序運作期間,因為預(yù)先使程序指令循序的執(zhí)行,所以提取地址只會經(jīng)由高速線的大小而增加。所增加的提取地址是做為下個循序提取地址的參考。然而,如果分支指令是經(jīng)由指令譯碼邏輯來譯碼及分支指令執(zhí)行被執(zhí)行(或預(yù)測執(zhí)行),則更新的提取地址會送至分支指令的目標地址(以高速線的大小為模(modulo)),而下個循序提取地址不會更新。
然而,到將更新提取地址送至分支目標地址的時候,在分支指令之后,指令緩沖器可能已含有下個循序指令的指令字節(jié)。因為分支已發(fā)生,在分支指令之后的指令必需不被譯碼及執(zhí)行。也就是,正確的程序執(zhí)行需要在分支目標地址時的指令來執(zhí)行,而不是在分支指令之后的下個循序指令。在指令緩沖器中,以程序中的循序指令流程的較通常預(yù)期狀況所預(yù)取的指令是錯誤的。為了修正此錯誤,處理器必須清除(flush)在分支指令后的所有的指令,其中包括指令緩沖器中的指令字節(jié)。
在執(zhí)行分支指令后,立即清除指令緩沖器的代價是很高的,這是因為此時的指令譯碼階段在指令緩沖器從指令高速緩存再獲得之前,都是匱乏的。此問題的一個解決方案就是在譯碼分支指令前做分支。此可通過使用分支目標地址高速緩存(branch target addresscache,簡稱BTAC)來達成,而指令高速線的高速緩存預(yù)取地址包含先前執(zhí)行的分支指令及其相關(guān)的目標地址。
用于BTAC的指令高速緩存預(yù)取地址實質(zhì)上是與用于指令高速緩存的預(yù)取地址并行。就包含分支指令的高速線的指令高速緩存預(yù)取地址而言,高速線用于指令緩沖器中。除此之外,當預(yù)取地址擊入BTAC中時,BTAC會提供相關(guān)的分支目標地址。當預(yù)取地址擊入預(yù)測要執(zhí)行的BTAC中時,更新的指令高速緩存預(yù)取地址會送到由BTAC所提供的目標地址。因此,包含目標指令的高速線,也就是在目標地址的指令,將儲存于包含分支指令的高速線后的指令緩沖器中。
然而,因為處理器中會執(zhí)行可變長度指令的事實,所以分支指令可能涵蓋跨越二條高速線,而使情況變的復(fù)雜。也就是,分支指令字節(jié)的第一部份可能包含于第一高速線,而分支指令字節(jié)的第二部份可能包含于下個高速線。因此,為了獲得具有分支指令的第二部份,下個循序提取地址必須施加至指令高速緩存,而不是目標地址。然后,目標地址必須以某種方式施加至指令高速緩存,以獲得目標指令。
因此,所需要的就是就涵蓋的BTAC分支而言,能提供正確的程序運作的分支控制裝置。
此外,為了達成上述的目的,本發(fā)明的一個特征就是提出一種在具有指令高速緩存的微處理器中的分支控制裝置,耦接至地址總線,用以將數(shù)個高速線送至指令緩沖器。此裝置包括分支指令的目標地址。分支目標地址高速緩存(BTAC)會送出目標地址。此裝置也包括涵蓋信號,由BTAC所送出,其表示分支指令是否涵蓋跨越第一高速線及第二高速線。此裝置也包括地址緩存器,耦接至BTAC,用以儲存目標地址。當涵蓋信號表示分支指令涵蓋跨越第一高速線及第二高速線時,地址緩存器會將地址總線上的目標地址送到指令高速緩存,用以選擇一第三高速線。第三高速線包含分支指令的目標指令。
在另一方面,本發(fā)明的一個特征就是提出一種具有管線的微處理器。此微處理器包括指令高速緩存,耦接至地址總線,用以接收用于選擇第一高速線的第一提取地址。此微處理器也包括BTAC,耦接至地址總線,用以送出用于表示分支指令是否涵蓋超過第一高速線的涵蓋指針。此微處理器也包括地址緩存器,耦接至BTAC,用以儲存分支指令的目標地址。目標地址由BTAC所送出。此微處理器也包括多任務(wù)器,耦接至分支目標地址高速緩存,當涵蓋指針為真時,用以選擇用于地址總線上的第二提取地址。第二提取地址選擇包含涵蓋超過第一高速線的分支指令的一部份的第二高速線。在選擇用于地址總線上的第二提取地址之后,多任務(wù)器會自地址緩存器選擇用于地址總線上的目標地址。
在另一方面,本發(fā)明的一個特征就是提出一種在微處理器中的分支控制裝置。此分支控制裝置包括BTAC,用以高速數(shù)個先前執(zhí)行的分支指令是否涵蓋跨越二條高速線的數(shù)個指示。此分支控制裝置也包括緩存器,耦接至BTAC,用以接收來自BTAC的這些先前執(zhí)行的分支指令中的一個的目標地址。此分支控制裝置也包括控制邏輯,耦接至BTAC,用以接收這些指示中的一個。當這些指示中的此一個表示出這些先前執(zhí)行的分支指令中的此一個涵蓋跨越二條高速線時,在提取含有這些先前執(zhí)行的分支指令中的此一個的二條高速線之后,控制邏輯會使微處理器分支成目標地址。
在另一方面,本發(fā)明的一個特征就是提出一種微處理器分支控制裝置。此分支控制裝置包括增加器,耦接至指令高速緩存地址總線,用以送出地址總線上的第一提取地址。第一提取地址選擇含有分支指令的第一部份的第一高速線。此分支控制裝置也包括BTAC,耦接至地址總線,用以響應(yīng)于第一提取地址,而送出分支指令的目標地址。此分支控制裝置也包括地址緩存器,耦接至BTAC,當BTAC表示分支指令涵蓋超過第一高速線時,用以儲存目標地址。增加器會送出地址總線上的第二提取地址。第二提取地址選擇含有分支指令的第二部份的第二高速線。地址緩存器會送出地址總線上的目標地址。目標地址選擇含有分支指令的目標指令的第三高速線。
在另一方面,本發(fā)明的一個特征就是提出一種具有指令高速緩存的微處理器的執(zhí)行方法。此方法包括將第一提取地址用于指令高速緩存,用以選擇至少含有分支指令的一部份的第一高速線;響應(yīng)于第一提取地址而送出分支指令的目標地址;以及決定分支指令是否涵蓋超過第一高速線。此方法也包括當分支指令涵蓋超過第一高速線時,將目標地址儲存于緩存器中;當分支指令涵蓋超過第一高速線時,將第二提取地址用于指令高速緩存,用以選擇含有分支指令的其余部分的第二高速線;將來自緩存器的目標地址送到指令高速緩存,用以選擇含有分支指令的目標指令的第三高速線。
本發(fā)明的優(yōu)點就是即使分支涵蓋跨越多條高速線,其可使用通過使處理器能做BTAC分支的BTAC,而改善具有管線的微理器中的分支效能。本發(fā)明甚至可使處理器中的涵蓋分支在處理器的預(yù)先譯碼階段中的電路不會暫停,因此可避免有關(guān)將分支錯誤預(yù)測為不要執(zhí)行的分支損失,以及接下來會修正錯誤預(yù)預(yù)測。分支損失的避免特別有助于具有許多管線階段的處理器。
100管線處理器101C階段102I階段 104B階段106U階段108V階段112F階段114X階段116R階段118A階段122D階段126E階段128S階段132W階段142指令緩沖器 144F階段指令隊列146X階段指令隊列152推測的分支目標地址154非推測的分支目標地址 156可分辨的目標地址162提取地址 202指令高速緩存204MISS信號 206BIU208響應(yīng)緩沖器 212、242、244、266數(shù)據(jù)總線214指令格式化邏輯 216BTAC218多任務(wù)器 222控制邏輯224增加器 226儲存多任務(wù)器228儲存緩存器 232旗標緩存器234HIT信號 236SBI238RBRDY信號246FULL信號248指令長度信號 262下個循序提取地址268,276控制信號274備份提取地址282提取地址緩存器組 284儲存的目標地址286WRAP信號 302高速線A304高速線B
402、404、406、412、414、416、422、424、426、428、432、436、438、442、444、448、452、454方框408、434、446、418判斷方框管線處理器100的第一階段為指令高速緩存(instruction cache)產(chǎn)生階段或簡稱為C階段101。C階段101產(chǎn)生用以選擇指令高速緩存202(見圖2)中的高速線的提取地址162。
下個階段為I階段102,或指令預(yù)取(instruction fetch)階段。為了提取指令給到管線處理器100執(zhí)行,I階段102為管線處理器100提供提取地址162至指令高速緩存202(見圖2)的階段。指令高速緩存202將配合圖2做更詳細的敘述。在一實施例中,指令高速緩存202為二個周期(two-cycle)的高速緩存。B階段104為指令高速緩存202存取的第二階段。指令高速緩存202提供其數(shù)據(jù)至U階段106,在此的數(shù)據(jù)會被栓鎖住。U階段106提供指令高速緩存數(shù)據(jù)至V階段108。
在本發(fā)明中,管線處理器100更包括推測(speculative)的分支目標地址緩沖分支目標地址高速緩存(BTAC)216(見圖2),將詳細敘述如下。在使用指令高速緩存202的提取地址162的I階段102中,推測的存取BTAC 216與指令高速緩存202,因此,可相當快速的分支,以降低分支的效能損失。BTAC 216提供用于I階段102的推測的分支目標地址152。管線處理器100可選擇推測的分支目標地址152當做指令高速緩存202的提取地址162,以達成推測的目標地址152的分支。
由
圖1可知,本發(fā)明的優(yōu)點是,在U階段106中的由BTAC 216所提供的推測的分支目標地址152,可使管線處理器100在管線處理器100中相當早就能做分支,其只引起二個周期的指令泡影(bubble)。也就是,當管線處理器100分支至推測的目標地址152時,只必須清除具有二個階段的指令。換句話說,在通常的情況中,在二個周期內(nèi),在U階段106的分支的目標指令為可用的。也就是目標指令存在于指令高速緩存202中。
在大部分的情況中,本發(fā)明的二個周期的指令泡影足夠小,而使得指令緩沖器142、F階段指令隊列144及/或X階段指令隊列146(底下將敘述)可吸收此泡影,對提高效能也是有好處的。因此,在大部分的情況中,推測的BTAC 216可使管線處理器100達成零損失(zero-penalty)分支。
V階段108是將指令寫入至指令緩沖器142的階段。指令緩沖器142暫存用于F階段112的指令。指令緩沖器142包括用以儲存來自指令高速緩存202所接收到的指令字節(jié)的多個階段或緩存器。在一實施例中,指令緩沖器142相似于稱為“APPARATUS ANDMETHOD FOR SELECTIVELY ACCESSING DISPARATEINSTRUNCTION BUFFER STAGES BASED ON BRANCH TARGETADDRESS CACHE HIT AND INSTRUNCTION STAGE WRAP”的美國專利申請案中所敘述的指令緩沖器,以上將并入做為參考。V階段108也包括譯碼邏輯,用以提供關(guān)于指令字節(jié)到指令緩沖器142的信息(如x86的前置(pretix)及模數(shù)(mod)R/M信息),以及指令字節(jié)是否為分支運作碼(opcode)值。
F階段112(或指令格式化(instruction format)階段112)包括用以格式化指令的指令格式化邏輯214(見圖2)。微處理器100最好是在其指令集中,允許可變長度指令的x86處理器。指令格式化邏輯214是接收來自指令緩沖器142的指令字節(jié)流及將符合語法的此流送至構(gòu)成x86指令的字節(jié)的離散群組,以及特別是提供每個指令的長度。
F階段112也包括用以產(chǎn)生非推測的分支目標地址154的分支指令目標地址計算邏輯。而非推測的分支目標地址154是以指令譯碼為基準,而不是以推測的指令高速緩存202的提取地址為基準(如在I階段102中的BTAC 216)。F階段112的非推測的分支目標地址154用于I階段102。微處理器100選擇F階段112的非推測的分支目標地址154當做指令高速緩存202的提取地址,以完成非推測的分支目標地址154的分支。
F階段指令隊列144接收格式化的指令。由F階段指令隊列144所提供的格式化的指令送至X階段114中的指令轉(zhuǎn)換器中。
X階段114(或轉(zhuǎn)換(translation)階段114)的指令轉(zhuǎn)換器是將x86的宏指令轉(zhuǎn)換成可由其余的管線階段所能執(zhí)行的微指令。由X階段114所提供的轉(zhuǎn)換的微指令送至X階段指令隊列146。
X階段指令隊列146提供轉(zhuǎn)換的微指令至R階段116(或緩存器階段116)。R階段116包括使用者可見的x86緩存器組,除此之外還包括非使用者可見的緩存器。用于儲存于R階段116的緩存器中的轉(zhuǎn)換的微指令的指令操作數(shù),用以執(zhí)行微處理器100的接下來的階段的微指令。
A階段118(或地址(address)階段118)包括地址產(chǎn)生邏輯,用以接收來自R階段116的操作數(shù)及微指令,并且產(chǎn)生微指令所需的地址,如用于加載/儲存的存儲器地址。
D階段122(或數(shù)據(jù)(data)階段122)包括用以存取通過A階段118所產(chǎn)生的地址的指定的數(shù)據(jù)的邏輯。特別是,D階段122包括在微處理器100內(nèi),用以高速來自系統(tǒng)存儲器的數(shù)據(jù)的數(shù)據(jù)高速緩存。在一實施例中,數(shù)據(jù)高速緩存為二周期的高速緩存。D階段122提供數(shù)據(jù)高速緩存的數(shù)據(jù)至E階段126。
E階段126(或執(zhí)行(execution)階段126)包括執(zhí)行邏輯(如算術(shù)邏輯單元),用以執(zhí)行來自先前階段所提供的數(shù)據(jù)及操作數(shù)為基準的微指令。特別是,E階段126會產(chǎn)生全部分支指令的可分辨的目標地址156。也就是,所知之E階段126的可分辨的目標地址156為全部分支指令的正確的目標地址,其必須與全部預(yù)測的目標地址一致。除此之外,E階段126會產(chǎn)生用于全部分支指令的可分辨的方向,也就是是否分支要執(zhí)行或不要執(zhí)行。
S階段128(或儲存(store)階段128)用以將來自E階段126所接到的微指令執(zhí)行的結(jié)果儲存至存儲器。除此之外,在E階段126所計算得出的分支指令的可分辨的目標地址156用于來自S階段128的I階段102中的指令高速緩存202。此外,自S階段128所更新的I階段102的BTAC 216具有用于BTAC 216中的高速的經(jīng)由微處理器100所執(zhí)行的分支指令的可分辨的目標地址156。除此之外,來自S階段128的其它的平行整數(shù)分支信息(speculative branchinformation,簡稱SBI)236(見圖2)是在BTAC 216中被更新。SBI 236包括分支指令長度、在分支指令的指令高速緩存202線內(nèi)的位置、是否分支指令涵蓋過多條指令高速緩存202線、是否分支為呼叫或返回指令、以及用于預(yù)測分支指令方向的信息。
W階段132(或?qū)懟?write-back)階段132)是將來自S階段128的結(jié)果寫回至R階段116,因此更新了微處理器100的狀態(tài)。
在其它的情形中,指令緩沖器142、F階段指令隊列144、以及X階段指令隊列146是用以使分支對于微處理器100的每個指令值時脈的影響減至最小。
現(xiàn)在參照圖2,其是根據(jù)本發(fā)明圖1中的包括分支控制裝置的微處理器部分的方框圖。
微處理器100包括用以高速指令字節(jié)的指令高速緩存202。指令高速緩存202包括用以儲存指令字節(jié)的高速線的陣列。高速線的陣列是由圖1的提取地址162來索引。也就是,提取地址162會選擇陣列中的一條高速線。指令高速緩存202是通過數(shù)據(jù)總線242,而將選到的指令字節(jié)的高速線送到指令緩沖器142。
在一實施例中,指令高速緩存202包括每向具有32字節(jié)的高速線的64K字節(jié)的4向集組合高速緩存(4-way set associative cache)。在一實施例中,指令高速緩存202一次送出選到的指令字節(jié)的高速線的一半,也就是在每個分離周期的期間,送出16字節(jié)。
在一實施例中,指令高速緩存202相似于具有共同讓渡人的美國專利申請案序號09/849,736的稱為“SPECULATIVE BRANCHTARGET ADDRESS CACHE”(文件編號CNTR2021)中所述的指令高速緩存,其全部的目的在此并入做為參考。當在指令高速緩存202中,提取地址162誤失(miss)時,指令高速緩存202會使MISS信號204產(chǎn)生真(true)值。
微處理器100也包括總線接口單元(bus interface unit,簡稱BIU)206,是通過數(shù)據(jù)總線266而從存儲器提取高速線。特別是,當指令高速緩存202使MISS信號204產(chǎn)生真值時,BIU 206會從存儲器提取高速線。指令高速緩存202也提供MISS信號204至BIU 206。
微處理器100也包括響應(yīng)緩沖器208。響應(yīng)緩沖器208接收來自BIU 206的高速線。響應(yīng)緩沖器208也通過數(shù)據(jù)總線212而接收來自第2階高速的高速線。響應(yīng)緩沖器208是通過數(shù)據(jù)總線244而將指令字節(jié)的高速線送到指令緩沖器142。當響應(yīng)緩沖器208將指令字節(jié)的高速線送到指令緩沖器142時,響應(yīng)緩沖器208會對RBRDY信號238產(chǎn)生真實的信號。
當不是來自于指令高速緩存202,就是來自于響應(yīng)緩沖器208的高速線存入指令緩沖器142時,會使得指令緩沖器142變成占滿(full),而指令緩沖器142會使FULL信號246產(chǎn)生真值,以表示目前不能接受指令字節(jié)。
微處理器100也包括指令格式化邏輯214。指令格式化邏輯214接收來自指令緩沖器142的指令字節(jié)。指令格式化邏輯214會將所接收到的指令字節(jié)格式化(或符合語法)成指令。特別是,指令格式化邏輯214會決定出指令的字節(jié)的大小。指令格式化邏輯214會通過指令長度信號而送出目前格式化指令的長度。指令格式化邏輯214會將格式化指令送到微處理器100的其余部分,以進一步的譯碼及執(zhí)行。在一實施例中,指令格式化邏輯214在每個微處理器100時脈周期,可格式化多個指令。
微處理器100也包括BTAC 216。BTAC 216也接收指令高速緩存202的提取地址162。BTAC 216包括儲存元件的陣列,用以高速先前所執(zhí)行的分支指令的提取地址及其相關(guān)的分支目標地址。儲存元件也儲存其它的平行整數(shù)分支信息,有關(guān)于用以高速目標地址的分支指令。特別是,所儲存的儲存元件是表示是否多個字節(jié)分支指令涵蓋跨越二條指令高速線。提取地址162索引BTAC 216中的儲存元件的陣列,以選擇儲存元件中的一個。
BTAC 216輸出圖1的推測的分支目標地址152及來自通過提取地址162所選擇的儲存元件的分支推測數(shù)據(jù)SBI 236。在一實施例中,SBI 236包括分支指令長度、在高速線中的分支指令的位置、是否分支為呼叫及返回指令、以及是否分支指令將要執(zhí)行或不要執(zhí)行的預(yù)測。
BTAC 216也輸出HIT信號234,是表示是否提取地址162擊中BTAC 216。在一實施例中,BTAC 216相似于美國專利申請案的稱為“SPECULATIVE BRANCH TARGET ADDRESS CACHE”中所敘述的BTAC,以上將并入作為參考。在一實施例中,BTAC 216為平行的BTAC,這是因為在經(jīng)由高速高速緩存202所送出的指令高速線被譯碼之前,微處理器100會分支成經(jīng)由BTAC 216所送出的推測的分支目標地址152,用以知道是否分支指令剛好存在于經(jīng)由提取地址所選擇到的高速線中。也就是,即使沒有分支指令存在于經(jīng)由提取地址擊入BTAC 216而選擇到的高速線中的可能性存在,微處理器100仍會以平行整數(shù)的方式來分支。
BTAC 216也輸出WRAP信號286,指出是否分支指令涵蓋(wrap)跨越二條高速線。在分支指令執(zhí)行后,在BTAC 216中的WRAP信號286的值會伴隨分支指令目標地址被高速。
現(xiàn)在參照圖3,其是包含涵蓋跨越二條高速線的分支指令的二條高速線的表格。此表格顯示出以高速線A 302所代表的第一高速線,其最后的指令字節(jié)包含用于x86 JCC(條件跳躍)指令的操作碼字節(jié)。此表格也顯示出以高速線B 304所代表的第二高速線,其第一指令字節(jié)包含用于JCC(條件跳躍)指令的符號位移字節(jié)。每當微處理器100執(zhí)行分支指令及高速含有BTAC中的分支指令與分支指令的目標地址的高速線的提取地址時,也會高速是否分支指令涵蓋跨越二條高速線的指針,如圖3的JCC指令。當提取地址循序擊入BTAC216,BTAC 216會提供WRAP信號286的高速涵蓋指針。為了獲得用于分支指令的全部的指令字節(jié),涵蓋指針會使分支控制裝置知道必須送至指令高速緩存202的二條高速線的提取地址。
再次參照圖2,微處理器100也包括控制邏輯222。HIT信號234、SBI 236、WRAP信號286、MISS信號204、FULL信號246、RBRDY信號238、以及指令長度信號248全部都當做控制邏輯222的輸入。控制邏輯222的運作將于底下做更詳細的敘述。
微處理器100也包括多任務(wù)器218。多任務(wù)器218接收至少六個地址當做輸入,以及響應(yīng)控制邏輯222所產(chǎn)生的控制信號268,而選擇輸入中的一個當做提取地址162,送到指令高速緩存202。多任務(wù)器218接收來自BTAC 216的推測的分支目標地址152。多任務(wù)器218也接收下個循序提取地址262。下個循序提取地址262為先前的提取地址通過增加器224,而以指令高速緩存202的高速線的大小增加而得出的。增加器224會接收提取地址162及將下個循序提取地址262送到多任務(wù)器218。
多任務(wù)器218也接收圖1中的可分辨的目標地址156??煞直娴哪繕说刂?56是由微處理器100中的執(zhí)行邏輯所送出。執(zhí)行邏輯計算以分支指令的執(zhí)行為基準的可分辨的目標地址156。當在分支成由BTAC 216所送出的推測的分支目標地址152之后,微處理器100稍后會決定出此分支是錯誤的,微處理器100會通過清除管線及分支成不是可分辨的目標地址156,就是分支成包括接著分支指令的指令的高速線的提取地址,而修正錯誤。在一實施例中,當微處理器100決定出沒有分支指令存在于如假設(shè)的高速線中時,微處理器100會通過清除管線及分支成包括分支指令本身的高速線的提取地址,而修正錯誤。錯誤修正如具有共同讓渡人的美國專利申請案序號09/849,658的稱為“APPARATUS,SYSTEM AND METHODFOR DETECTING AND CORRECTING ERRONEOUSSPECULATIVE BRANCH TARGET ADDRESS CACHEBRANCHES”(文件編號CNTR2022)所述,其全部的目的在此并入做為參考。
在一實施例中,多任務(wù)器218也接收圖1中的非推測的分支目標地址154。非推測的分支目標地址154是由其它的分支預(yù)測元件而產(chǎn)生,如呼叫/返回堆棧及分支目標緩沖器(branch target buffer,簡稱BTB),是用以高速以分支指令指針為基準之間接分支指令的目標地址。多任務(wù)器218會優(yōu)先選擇由BTAC 216所送出的推測的分支目標地址152與非推測的分支目標地址154,如具有共同讓渡人的美國專利申請案序號09/849,799的稱為“SPECULATIVE BRANCHTARGET ADDRESS CACHE WITH SELECTIVE OVERRIDE BYSECONDARY PREDICTOR BASED ON BRANCH INSTRUNCTIONTYPE”(文件編號CNTR2052)所述,以及其全部的目的在此并入做為參考。
多任務(wù)器218也接收備份提取地址274。微處理器100包括提取地址緩存器組282,用以將備份提取地址274送到多任務(wù)器218。在微處理器100的一實施例中,從C階段101到V階段108不能停止(stall)。也就是,在每個時脈周期,全部的狀態(tài)不會存于這些階段。因此,當高速線送到指令緩沖器142且指令緩沖器142已占滿時,此高速線會漏失。當指令緩沖器142相當大時,會因為在微處理器100中沒有狀態(tài)儲存邏輯而有助于降低復(fù)雜度及節(jié)省空間。
雖然微處理器100的上面的階段或許不會停止,但是由于占滿的指令緩沖器142而漏失的高速線的提取地址會儲存于提取地址緩存器組282及送到多任務(wù)器218當做備份提取地址274。當高速線送到微處理器100的預(yù)先譯碼的管線階段時,由多任務(wù)器218所送出的相對應(yīng)的推測的分支目標地址152會送到提取地址緩存器組282。備份提取地址274的使用將配合其余的圖而于底下做詳細的敘述。
多任務(wù)器218也接收儲存的目標地址284。儲存的目標地址284為由BTAC 216所輸出的推測的分支目標地址152的先前值。儲存的目標地址284儲存于儲存緩存器228中。儲存緩存器228接收儲存多任務(wù)器226的輸出。儲存多任務(wù)器226接收BTAC 216中的推測的分支目標地址152。儲存多任務(wù)器226也接收儲存緩存器228的輸出,用以保持儲存的目標地址284的值。儲存多任務(wù)器226是由控制邏輯222所產(chǎn)生的控制信號276來控制。
微處理器100也包括旗標緩存器232。每當涵蓋的BTAC 216的分支指令延后時,控制邏輯222會將旗標緩存器232設(shè)定成真值。也就是,旗標緩存器232表示儲存緩存器228目前所儲存的用于涵蓋跨越二條高速線的分支指令的推測的分支目標地址152。
現(xiàn)在參照圖4,其是根據(jù)本發(fā)明圖2中的分支控制裝置的運作的流程圖。在圖4的接下來的敘述中,有關(guān)于高速線A的提取地址的提取地址A至少包含分支指令的第一部份,如圖3的高速線A302。有關(guān)于高速線B的提取地址的提取地址B包含涵蓋的分支指令的第二部份,如圖3的高速線B 304。有關(guān)于高速線的高速線T包含分支指令的一個或更多的目標指令,是由分支指令的目標地址來選擇。為清楚及簡化起見,圖4的流程圖假設(shè)高速線A及高速線T都擊入圖2中的指令高速緩存202。圖4的流程圖具體說明出當高速線B擊入指令高速緩存202時的運作及具體說明出當高速線B沒有擊入指令高速緩存202時的運作。流程從方框402開始。
在方框402,圖2中的多任務(wù)器218會將如提取地址162的送至圖2中的指令高速緩存202及BTAC 216。在通常的情況中,程序的流程會循序地執(zhí)行,因此多任務(wù)器218會選擇圖2中的下個循序提取地址262當做提取地址A。流程會從方塊402到方框404執(zhí)行。
在方框404,指令高速緩存202響應(yīng)于在步驟402期間的所使用的提取地址A,而送出圖2中的數(shù)據(jù)總線242上的線A。線A至少包含分支指令的第一部份,并且提取地址A于BTAC 216中被高速。是否高速線A包含全部或部分的分支指令將取決于底下所述的判斷方框408。BTAC 216響應(yīng)提取地址A,而送出用于高速分支指令的圖1中的推測的分支目標地址152。流程會從方框404到方框406執(zhí)行。
在方框406,在步驟404期間的由BTAC 216所送出的推測的分支目標地址152儲存于圖2中的儲存緩存器228。因為BTAC 216的擊中已發(fā)生(如圖2的HIT信號所表示),控制邏輯222會控制圖2中的儲存多任務(wù)器226,而選擇來自BTAC 216的推測的分支目標地址152,并儲存于儲存緩存器228中。在將推測的分支目標地址152存入儲存緩存器228后,控制邏輯222會立即將旗標緩存器232設(shè)定成真值。流程會從方框406到判斷方框408執(zhí)行。
在判斷方框408,圖2中的控制邏輯222會決定出是否分支指令涵蓋超過高速線A,也就是跨越二條高速線。特別是,控制邏輯222會檢查WRAP信號,以決定出是否其為真值。如果不是,則分支指令完全包含于高速線A中,并且會執(zhí)行方框412的流程。否則,分支指令的第一部份會包含于高速線A中,而分支指令的第二部份會包含于高速線B中,并且會執(zhí)行方框428的流程。
在方框412,在步驟404期間的由BTAC 216所送出的推測的分支目標地址152會被多任務(wù)器218選擇到,并且當做提取地址162,而送到指令高速緩存202。如果流程到達方框412,則BTAC 216分支指令不是涵蓋的分支指令。因此,在提取地址A之后會使用到推測的分支目標地址152,這是因為將提取地址B送至指令高速緩存202是不正確的,以及因為全部的分支指令包含于高速線A中。流程會從方框412到方框414執(zhí)行。
在方框414,高速線A儲存于指令緩沖器142中,流程會從方框414到方框416執(zhí)行。
在方框416,指令高速緩存202會送出高速線T,其包含分支指令的目標指令,指令高速緩存202會響應(yīng)在步驟412期間的用于指令高速緩存202的推測的分支目標地址152,而送出高速線T。流程會從方框416到判斷方框418執(zhí)行。
在判斷方框418,控制邏輯222會決定出是否指令緩沖器142為占滿。特別是,控制邏輯222會檢查由指令緩沖器142所產(chǎn)生的圖2中的FULL信號246的值,以知道是否其為正。如果不是,會執(zhí)行方框422的流程。否則,會執(zhí)行方框424的流程。
在方框422,高速線T儲存于指令緩沖器142中。此時,分支指令及其目標指令會儲存于指令緩沖器142中,以使得它們可經(jīng)由圖2中的指令格式化邏輯214來格式化。在將高速線T存入指令緩沖器142后,控制邏輯222會立即將旗標緩存器232設(shè)定成偽(false)值。如果分支指令為非涵蓋的分支,也就是如果執(zhí)行的流程為從判斷方框408到方框412,則指令緩沖器142會包含含有全部分支指令的高速線A,以及含有目標指令的高速線T。然而,如果分支指令為涵蓋的分支,也就是如果執(zhí)行的流程為從判斷方框408到方框428,則指令緩沖器142將包含含有分支指令的第一部份的高速線A、含有分支指令的第二部份的高速線B、以及含有目標指令的高速線T,如底下所述。流程會在方框422結(jié)束。
在方框424,控制邏輯222會等待指令緩沖器142變成未占滿。也就是,控制邏輯222會檢查FULL信號246,直到其變成偽的。當控制邏輯222正等待FULL信號246變成偽時,儲存的目標地址284會繼續(xù)保持于儲存緩存器228中。流程會從方框424到方框426執(zhí)行。
在方框426,多任務(wù)器218會選擇由儲存緩存器228所送出的儲存的目標地址284及使用儲存的目標地址284當做提取地址162,而送到指令高速緩存202。儲存的目標地址284儲存于在步驟406期間的儲存緩存器228中。如果從底下所述的方框454到達方框426的流程,則BTAC 216分支指令為涵蓋的分支指令。在此情況中,在提取地址B之后,會使用到推測的分支目標地址152,以使得在指令緩沖器142中所儲存的全部分支指令會優(yōu)先于在指令緩沖器142中所儲存的高速線T中的分支目標指令。流程會從方框426到方框416執(zhí)行。
在方框428,高速線A儲存于指令緩沖器142中。在此情況中,高速線A只包含涵蓋的分支指令的第一部份,而沒有包含全部分支指令。流程會從方框428到方框432執(zhí)行。
在方框432,多任務(wù)器218會選擇由圖2中的增加器224所送出的下個循序提取地址262,其將為提取地址B,以及使用提取地址B當做提取地址162,而送至指令高速緩存202。為了獲得高速線B,使用提取地址B是必須的,其包含涵蓋的分支指令的第二部分,以使得分支指令的全部指令字節(jié)都可儲存于用于譯碼的指令緩沖器中。流程會從方框432到判斷方框434執(zhí)行。
在判斷方框434,圖2中的控制邏輯222及BIU 206會決定是否提取地址B會擊入指令高速緩存202。特別是,控制邏輯222及BIU 206會檢查經(jīng)由指令高速緩存202所產(chǎn)生的圖2中的MISS信號204,以決定是否為真值。如果不是,會執(zhí)行方框436的流程。否則,會執(zhí)行方框444的流程。
在方框436,不是BIU 206自存儲器提取的高速線B,就是由第二階高速緩存送出高速線B。當高速線B到達圖2的響應(yīng)緩沖器208時,響應(yīng)緩沖器208會對RBRDY信號238產(chǎn)生真值,以通知控制邏輯222,高速線B為可用的。流程會從方框436到方框438執(zhí)行。
在方框438,來自響應(yīng)緩沖器208的高速線B儲存于指令緩沖器142中。流程會從方框438到判斷方框442執(zhí)行。
在方框442,多任務(wù)器218會選擇由增加器224所送出的下個循序提取地址262,以及使用下個循序提取地址262當做提取地址162,而送至指令高速緩存202。也就是,當高速線B不存在于指令高速緩存202中時,此狀況視為BTAC 216的誤失。當圖1中的E階段126稍后決定分支值令要執(zhí)行時,測誤的預(yù)測會經(jīng)由分支成可分辨的目標地址156而修正。圖4的實施例比圖8的實施例(底下所述的處理涵蓋的BTAC 216分支的情況,其第二高速線會于指令高速緩存202中誤失)具有需要較少控制邏輯的優(yōu)點。在微處理器100中,分支指令會涵蓋及產(chǎn)生對于其第二部分的指令高速緩存202的誤失的可能性非常的低。因為分支指令所需的復(fù)雜度較小,所以圖4的實施例是有助益的。流程會在方框422結(jié)束。
在方框444,指令高速緩存202會響應(yīng)在步驟412期間所使用的提取地址B,而送出數(shù)據(jù)總線242上的高速線B。高速線B包含分支指令的第二部分。流程會從方框444到判斷方框446執(zhí)行。
在判斷方框446,控制邏輯222經(jīng)由檢查FULL信號246的值是否為真,而決定出是否指令緩沖器142為占滿。也就是,控制邏輯222會決定在步驟428期間的儲存至指令緩沖器142的高速線A是否會填滿指令緩沖器142。如果是,會執(zhí)行方框448的流程。如果不是,會執(zhí)行方框454的流程。
在方框448,控制邏輯222會等待指令緩沖器142變成沒有占滿。也就是,控制邏輯222會檢查FULL信號246,直到其變成偽。流程會從方框448到方框452執(zhí)行。
在方框452,多任務(wù)器218會選擇由圖2中的提取地址緩存器組282所送出的圖2中的備份提取地址274,其會當做提取地址B,并且使用提取地址B當做提取地址162,而送至指令高速緩存202。為了獲得高速線B,使用提取地址B是必需的,其包含涵蓋的分支指令的第二部分。從方框448到方框452所執(zhí)行的流程是用來決定是否所使用的備份提取地址B會擊入指令高速緩存202。
在方框454,高速線B儲存于指令緩沖器142中。高速線B包含涵蓋的分支指令的第二部分。從方框454到方框426所執(zhí)行的流程是用以將得到的高速線T(其包含分支目標指令)送至指令緩沖器142。
由圖4的流程圖可知,本發(fā)明對于只將全部涵蓋的BTAC 216分支視為BTAC 216誤失所產(chǎn)生的BTAC 216分支問題,提供一個改良方案。涵蓋BTAC 216分支的機率是不可以忽略的,并且本發(fā)明提供一種分支的裝置,而不是沒有分支且必須修正的裝置,因此可省去許多時脈周期。此裝置特別對于階段的數(shù)目相當大的微處理器100有幫助。
現(xiàn)在總括參照圖5、圖6、圖7、以及圖9,其是根據(jù)本發(fā)明的圖2中的分支控制裝置的運作例子的時序圖。圖5、圖6、以及圖7顯示出依照圖4的流程圖來運作,而圖9顯示出依照底下所述的圖8的變化實施例的流程圖來運作。時序圖包括具有7列及33行的存儲單元(cell)的矩陣。第一行,由第二列開始,分別表示C、I、B、U、V、以及F,相對應(yīng)于圖1中的C階段101、I階段102、B階段104、U階段106、V階段108、以及F階段112。第一列,由第二行開始,分別表示從1到32,相對應(yīng)于微處理器100的32個時脈周期。
在矩陣中的每個存儲單元具體表示出在指定的時脈周期期間的指定階段的內(nèi)容。為清楚及簡化起見,每個存儲單元在此以(s,c)來表示,其中s為階段,以及c為時脈周期。例如,存儲單元(V,5)表示在時脈周期5期間的V階段108的內(nèi)容。存儲單元不是空的,就是具有A、B、C、或T四個字母中的一個。字母A標示圖4中的不是提取地址A,就是高速線A,或者是兩者,取決于階段的內(nèi)容。同樣地,字母B標示圖4中的不是提取地址B,就是高速線B,或者是兩者,以及字母T標示圖4中的不是分支指令的BTAC 216目標地址,就是高速線T,或者是兩者。字母C標示不是在提取地址B之后的下個循序提取地址,就是在高速線B之后的下個循序高速線,或者是兩者。例如,在圖5中,相對應(yīng)于在時脈周期2期間的I階段102的內(nèi)容的存儲單元(以(I,2)表示)包含A,指出在時脈周期2期間的I階段102會接收到提取地址A。也就是,使用地址A當做圖1中的提取地址162,而送至如關(guān)于圖4的方框402所述的圖2中的指令高速緩存202。
除此之外,在矩陣之下,所顯示的是在32個時脈周期中的每一個期間的WRAP信號286、FULL信號246、MISS信號204、以及RBRDY信號238。為了說明的目的,會選擇一種極性常規(guī),而使得如果信號為低時,則此值為偽。例如,當FULL信號246為低時,此值為偽,也就是圖1中的指令緩沖器142為沒有占滿的;反之,當FULL信號246為高時,此值為真,也就是圖1中的指令緩沖器142為占滿的。然而,此發(fā)明可使用任一種極性常規(guī)。而至于方框號碼(如方框412),用于圖4的流程圖的方框。
現(xiàn)在參考圖5,其是,依照圖4的流程圖的在非涵蓋的BTAC 216分支的情況中的圖1中的微處理器100的運作的例子的時序圖,其中當高速線T開始準備好存入指令緩沖器142時,指令緩沖器142為占滿。因此,在圖5的從頭到尾的時脈周期中,WRAP信號286、MISS信號204、以及RBRDY信號238都是偽的,以及在時脈周期的一部份期間(特別是從6到10的時脈周期),F(xiàn)ULL信號246為真。
在存儲單元(C,1)中,圖2中的多任務(wù)器218會選擇提取地址A當做提取地址162。在存儲單元(I,2)中,I階段102會依照方框402,而將提取地址A送到指令高速緩存202及BTAC 216。在存儲單元(B,3)中,指令高速緩存202會選擇到在其第二存取周期期間的高速線A。在存儲單元(U,4)中,指令高速緩存202會依照方框404,而送出高速線A。
在存儲單元(V,5)中,會依照方框414,而將高速線A寫到指令緩沖器142。在圖5的例子中,將高速線A存于指令緩沖器142中,會使得指令緩沖器142變成占滿。因此,在時脈6的期間,F(xiàn)ULL信號246為真。在圖5的例子中,F(xiàn)ULL信號246直到時脈11都保持為真。
在存儲單元(C,4)中,多任務(wù)器218會選擇在方框404期間的由BTAC 216所送出的推測的分支目標地址152,來當做提取地址162。在存儲單元(I,5)中,因為此例中的WRAP信號286是偽的,所以會依照方框412,而將推測的分支目標地址152送到指令高速緩存202。
在從(V,6)到(V,11)的存儲單元中,高速線A會保持于指令緩沖器142中且不會送到指令格式化邏輯214,這是因為指令格式化邏輯214正在格式化在高速線A之前的其它指令。會使指令緩沖器142保持占滿持續(xù)數(shù)個時脈周期的一個例子是,在此有需要多個時脈周期才能執(zhí)行的一個或更多的指令(如浮點除法)于在管線中被執(zhí)行。這些指令會使在執(zhí)行階段126之上的微處理器100中的階段暫停。
在存儲單元(B,6)中,指令高速緩存202在其第二存取周期期間,會選擇到高速線T。在存儲單元(U,7)中,指令高速緩存202會依照方框416,而送出高速線T。然而,在時脈周期7的期間,指令緩沖器142為占滿,如在方框418期間所決定的。因此,在時脈周期8的期間,因為指令緩沖器142不能接受高速線T(這是因為指令緩沖器142為占滿),所以高速線T會漏失。圖2中的控制邏輯222會依照方框424而等待,直到FULL信號246是偽的。
在存儲單元(C,11)中,多任務(wù)器218會選擇儲存緩存器228所送出的儲存的目標地址284,來當做提取地址162,這是因為控制邏輯222已確定在時脈周期11中,此時的FULL信號246是偽的。在存儲單元(I,12)中,儲存的目標地址284會依照方框426,而送到指令高速緩存202。在存儲單元(B,13)中,指令高速緩存202在其第二存取周期期間,會選擇到高速線T。在存儲單元(U,14)中,指令高速緩存202會依照方框416,而送出高速線T。
在存儲單元(F,15)中,高速線A會送到用來格式化分支指令的指令格式化邏輯214。在存儲單元(V,15)中,會依照方框422而將高速線T寫到指令緩沖器142,這是因為指令緩沖器142不再是占滿,如在方框418期間所決定的。在存儲單元(F,16)中,高速線T會送到用來格式化分支目標指令的指令格式化邏輯214。
現(xiàn)在參考圖6,與圖5相似,其是根據(jù)本發(fā)明的依照圖4的流程圖的圖2中的分支控制裝置的運作的第二個例子的時序圖。圖6是依照圖4的流程圖的涵蓋的BTAC 216分支的情況中的圖1中的微處理器100的運作的例子的時序圖,其中包含于高速線B中的分支指令的第二部分會誤失于指令高速緩存202中。因此,在圖6的從頭到尾的時脈周期中,F(xiàn)ULL信號246是偽的,以及在時脈周期的一部份期間(特別是在各自的時脈周期4、5、以及24),WRAP信號286、MISS信號204、以及RBRDY信號238為真。
存儲單元(C,1)、(I,2)、(B,3)、(U,4)、以及(V,5)相似于圖5的相對應(yīng)的存儲單元,具有沿著微處理器100管線的較高的階段執(zhí)行的提取地址A及高速線A。在時脈周期4的期間,WRAP信號286為真,指出表示分支指令的BTAC 216會涵蓋跨越高速線A及B。在存儲單元(F,6)中,高速線A會送到F階段112執(zhí)行。
在存儲單元(C,2)中,多任務(wù)器218會選擇下個循序提取地址262(其為提取地址B)當做提取地址162,這是因為控制邏輯222會依照方框408,而確定分支指令為涵蓋的BTAC 216分支。在存儲單元(I,3)中,因為此例中的WRAP信號286為真,所以會依照方框432,而將提取地址B送到指令高速緩存202。在存儲單元(B,4)中,指令高速緩存202在其第二存取周期期間,會選擇到高速線B。然而,在時脈5的期間,指令高速緩存202會決定提取地址B為誤失,以及相對應(yīng)的使MISS信號204致能。因此,指令高速緩存202不能送出高速線B。
在從時脈周期7到23的期間,微處理器100會依照方框436,而等待自存儲器提取高速線B,并送至響應(yīng)緩沖器208。在時脈24的期間,當高速線B到達時,圖2中的響應(yīng)緩沖器208會使RBRDY信號致能。在存儲單元(V,24)中,來自響應(yīng)緩沖器208的高速線B會依照方框438,而儲存到指令緩沖器142。在存儲單元(F,25)中,高速線B會送到F階段112執(zhí)行。
在存儲器單元((C,25)中,多任務(wù)器218會依照方框442,而選擇下個循序提取地址262(其為提取地址C)當做提取地址162,這是因為控制邏輯222已確定高速線B誤失于指令高速緩存202中。因此,微處理器100通過不要分支成BTAC 216所送出的推測的分支目標地址152,而取代為所提取的下個循序地址,而將圖6中的情況視為BTAC 216誤失。在存儲單元(I,26)中,I階段102會將提取地址C送到指令高速緩存202。在存儲單元(B,27)中,指令高速緩存202在其第二存取周期期間,會選擇到高速線C。在存儲單元(U,28)中,指令高速緩存202會送出高速線C。在存儲單元(V,29)中,會將高速線C寫入指令緩沖器142。在存儲單元(F,30)中,高速線C會送到F階段112執(zhí)行。
現(xiàn)在參考圖7,與圖5相似,其是根據(jù)本發(fā)明的依照圖4的流程圖的圖2中的分支控制裝置的運作的第三個例子的時序圖。圖7是依照圖4的流程圖的涵蓋的BTAC 216分支的情況中的圖1中的微處理器100的運作的例子的時序圖,其中高速線A會填滿指令緩沖器142。因此,在圖7的從頭到尾的時脈周期中,MISS信號204及RBRDY信號238是偽的,以及在時脈周期的一部份期間,WRAP信號286及FULL信號246為真。特別是,在時脈周期4的期間,WRAP信號286為真,以及在時脈周期從4到6的期間,F(xiàn)ULL信號246為真。
存儲單元(C,1)、(I,2)、(B,3)、(U,4)、(V,5)到(V,14)、以及(F,15)相似于圖5的相對應(yīng)的存儲單元,具有沿著微處理器100管線的較高的階段到F階段112執(zhí)行的提取地址A及高速線A。在時脈周期4的期間,WRAP信號286為真,指出表示分支指令的BTAC 216會涵蓋跨越高速線A及B。
存儲單元(C,2)、(I,3)、以及(B,4)相似于圖6的相對應(yīng)的存儲單元,具有沿著微處理器100管線的C、I、以及B階段執(zhí)行的提取地址B及高速線B。在存儲單元(U,5)中,因為提取地址B擊入指令高速緩存202,所以指令高速緩存202會依照方框444而送出高速線B。
然而,在時脈周期6的期間,因為高速線A已填滿指令緩沖器142,所以指令緩沖器142會使FULL信號246致能。因此,控制邏輯222會依照方框448,而等待FULL信號246變成偽,其發(fā)生于時脈周期11中。
在存儲單元(C,11)中,多任務(wù)器218會響應(yīng)FULL信號246變成偽,而選擇來自提取地址緩存器組282的備分提取地址274(其為提取地址B)。在存儲單元(I,12)中,會依照方框452,而將提取地址B送到指令高速緩存202。在存儲單元(B,13)中,指令高速緩存202在其第二存取周期期間,會選擇到高速線B。在存儲單元(U,14)中,因為提取地址B擊入指令高速緩存202,所以指令高速緩存202會依照方框444而送出高速線B。在存儲單元(V,15)中,因為指令緩沖器142沒有占滿,所以會依照方框454而將高速線B寫入指令緩沖器142。在存儲單元(F,16)中,高速線B會送到F階段112執(zhí)行。
在存儲單元(C,12)中,多任務(wù)器218會選擇來自儲存緩存器228的儲存的目標地址284。在存儲單元(I,13)中,會依照方框426,而將儲存的目標地址284送到指令高速緩存202。在存儲單元(B,14)中,指令高速緩存202在其第二存取周期期間,會選擇到高速線B。在存儲單元(U,15)中,指令高速緩存202會依照方框416而送出高速線T。在存儲單元(V,16)中,因為指令緩沖器142沒有占滿,所以會依照方框422而將高速線T寫入指令緩沖器142。在存儲單元(F,17)中,高速線T會送到F階段112執(zhí)行。
現(xiàn)在參照圖8,其是根據(jù)本發(fā)明變化的實施例的圖2中的分支控制裝置的運作的流程圖。除了圖8沒有包括方框438及442之外,圖8的流程圖與圖4的流程圖是相同的。而取代為從方框436到判斷方框446的執(zhí)行流程。也就是,圖8的實施例會處理此狀況,而不是將指令高速緩存202中的提取地址B的誤失視為BTAC 216誤失。在指令緩沖器142不再是占滿之后,此實施例會經(jīng)由備份至提取地址B而處理此狀況,以及接下來會使用儲存的目標地址284,以獲得高速線T,如參照圖9所示。
現(xiàn)在參照圖9,與圖6相似,其是根據(jù)本發(fā)明圖8的流程圖的圖2中的分支控制裝置的運作的例子的流程圖。圖9是依照圖8的流程圖的涵蓋的BTAC 216分支的情況中的圖1中的微處理器100的運作的例子,其中包含分支指令的第二部分的高速線B會誤失于指令高速緩存202中,并且高速線A會填滿指令緩沖器142。除了在圖9中的時脈周期從6到25的期間,F(xiàn)ULL信號246為真外,圖9中的時脈周期從1到23與相對應(yīng)的圖6中的那些相同。
當在時脈周期24的期間,高速線B到達響應(yīng)緩沖器208時,指令緩沖器142為占滿,如根據(jù)方框446所決定。因此,不會將高速線B寫到指令緩沖器142,而是寫到指令高速緩存202。
在此例中,在時脈周期26的期間,F(xiàn)ULL信號246會變成偽,如在方框448的期間所決定。因此,在存儲單元(C,26)中,多任務(wù)器218會選擇備份提取地址274當做提取地址162。在存儲單元(I,27)中,會依照方框452而將備份提取地址274送到指令高速緩存202。在存儲單元(B,28)中,指令高速緩存202在其第二存取周期期間,會選擇到高速線B。在存儲單元(U,29)中,指令高速緩存202會依照方框444而送出高速線B。在時脈周期25的期間,來自響應(yīng)緩沖器208的高速線B會先寫入指令高速緩存202。在存儲單元(V,30)中,因為指令緩沖器142沒有占滿,所以會依照方框454而將高速線B寫入指令緩沖器142。在存儲單元(F,31)中,高速線B會送到F階段112執(zhí)行。
在存儲單元(C,27)中,多任務(wù)器218會選擇儲存的目標地址284當做提取地址162。在存儲單元(I,28)中,會依照方框426而將儲存的目標地址284送到指令高速緩存202。在存儲單元(B,29)中,指令高速緩存202在其第二存取周期期間,會選擇到高速線T。在存儲單元(U,30)中,指令高速緩存202會依照方框416而送出高速線T。在存儲單元(V,31)中,因為指令緩沖器142沒有占滿,所以會依照方框422而將高速線T寫入指令緩沖器142。在存儲單元(F,32)中,高速線B會送到F階段112執(zhí)行。
如自圖8,圖9可知,變化的實施例不會帶來具有相關(guān)于修正錯誤預(yù)測的使用分支的額外的時脈周期,也就是因為其涵蓋及包含有分支的第二部分的第二高速線會誤失于指令高速緩存202中,所以BTAC 216擊中會將BTAC 216視為誤失。更確切的說,如圖9可知,在提取地址B之后的最早的可用時脈周期,會將BTAC 216的推測的分支目標地址152送到指令高速緩存202。
雖然本發(fā)明及其目的、特征、以及優(yōu)點已詳細敘述,但是可經(jīng)由本發(fā)明所包含的其它實施例。例如,在管線中階段的數(shù)目的安排可以變化。BTAC、指令高速緩存、或指令緩沖器的大小及結(jié)構(gòu)可以變化。高速線的大小可以變化。
權(quán)利要求
1.一種在具有指令高速緩存的微處理器中的分支控制裝置,耦接至一地址總線,用以將多個高速線送至一指令緩沖器,其特征是,該裝置包括一分支指令之一目標地址,該目標地址是由一分支目標地址高速緩存所送出;一涵蓋信號,是由該分支目標地址高速緩存所送出,用以表示該分支指令是否涵蓋跨越一第一高速線及一第二高速線;以及一地址緩存器,耦接至該分支目標地址高速緩存,用以儲存該目標地址;其中當該涵蓋信號表示該分支指令涵蓋跨越該第一高速線及該第二高速線時,該地址緩存器會將該地址總線上的該目標地址送到該指令高速緩存,用以選擇一第三高速線,該第三高速線包含該分支指令的一目標指令。
2.如權(quán)利要求1所述的在具有指令高速緩存的微處理器中的分支控制裝置,其特征是,在用于該第二高速線的一提取地址送到該地址總線上之后,該地址緩存器會送出該地址總線上的該目標指令。
3.如權(quán)利要求2所述的在具有指令高速緩存的微處理器中的分支控制裝置,其特征是,該分支目標地址高速緩存耦接至該地址總線,其中該分支目標地址高速緩存響應(yīng)于該地址總線上所送出的一提取地址,而送出該目標地址。
4.如權(quán)利要求3所述的在具有指令高速緩存的微處理器中的分支控制裝置,其特征是,該分支目標地址高速緩存響應(yīng)于該第一高速線的一提取地址,而送出該目標地址。
5.如權(quán)利要求4所述的在具有指令高速緩存的微處理器中的分支控制裝置,其特征是,該第一高速線包含該分支指令的一第一部份。
6.如權(quán)利要求2所述的在具有指令高速緩存的微處理器中的分支控制裝置,更包括一占滿信號,耦接至該指令緩沖器,用以表示該指令緩沖器是否占滿。
7.如權(quán)利要求6所述的在具有指令高速緩存的微處理器中的分支控制裝置,其特征是,只有當該占滿信號表示該指令緩沖器不為占滿時,該地址緩存器才會將該目標地址送到該指令高速緩存。
8.如權(quán)利要求6所述的在具有指令高速緩存的微處理器中的分支控制裝置,更包括一備份緩存器,耦接至該地址總線,當該指令高速緩存送出儲存于該指令緩沖器中的該第二高速線時,如果該占滿信號表示該指令緩沖器為占滿,用以儲存該第二高速線的該提取地址。
9.如權(quán)利要求8所述的在具有指令高速緩存的微處理器中的分支控制裝置,其特征是,如果該占滿信號表示該指令緩沖器不再為占滿,該備份緩存器會送出該地址總線上的該第二高速線的該提取地址。
10.如權(quán)利要求1所述的在具有指令高速緩存的微處理器中的分支控制裝置,其特征是,當該第二高速線的一提取地址誤失于該指令高速緩存中時,在該第二高速線儲存于該指令緩沖器之后,該地址緩存器會將該目標地址送到該指令高速緩存。
11.如權(quán)利要求1所述的在具有指令高速緩存的微處理器中的分支控制裝置,其特征是,當該第二高速線的一提取地址擊入該指令高速緩存中時,該地址緩存器會將該目標地址送到該指令高速緩存。
12.一種具有管線的微處理器,其特征是,包括一指令高速緩存,耦接至一地址總線,所組成是用以接收用于選擇一第一高速線的一第一提取地址;一分支目標地址高速緩存,耦接至該地址總線,用以送出用于表示一分支指令是否涵蓋超過該第一高速線的一涵蓋指針;一地址緩存器,耦接至該分支目標地址高速緩存,用以儲存該分支指令的一目標地址,由該分支目標地址高速緩存所送出的該目標地址;一多任務(wù)器,耦接至該分支目標地址高速緩存,當該涵蓋指針為真時,用以選擇用于該地址總線上的一第二提取地址,該第二提取地址選擇包含涵蓋超過該第一高速線的該分支指令的一部份的一第二高速線;其中在選擇用于該地址總線上的該第二提取地址之后,該多任務(wù)器會自該地址緩存器選擇用于該地址總線上的該目標地址。
13.如權(quán)利要求12所述的具有管線的微處理器,其特征是,該多任務(wù)器在選擇該第一提取地址之后,會選擇該第二提取地址。
14.如權(quán)利要求12所述的具有管線的微處理器,其特征是,該分支目標地址高速緩存響應(yīng)于該地址總線上所接收的該第一提取地址,而送出該目標地址。
15.如權(quán)利要求14所述的具有管線的微處理器,其特征是,該分支目標地址高速緩存所送出的該目標地址與該指令高速緩存所送出的該第一高速線大體上為同時。
16.如權(quán)利要求12所述的具有管線的微處理器,其特征是,該第二提取地址為送至該第一提取地址的一下個循序提取地址。
17.如權(quán)利要求12所述的具有管線的微處理器,其特征是,該多任務(wù)器選擇用于選擇該指令高速緩存中的一第三高速線的該目標地址,該第三高速線包含該分支指令的一目標指令。
18.如權(quán)利要求17所述的具有管線的微處理器,其特征是,該多任務(wù)器選擇用以使該第一高速線、該第二高速線及該第三高速線依次儲存于一指令緩沖器中的該第一提取地址、該第二提取地址及該目標地址。
19.一種在微處理器中的分支控制裝置,其特征是,包括一分支目標地址高速緩存,用以高速多個先前執(zhí)行的分支指令是否涵蓋跨越二條高速線的多個指示;一緩存器,耦接至該分支目標地址高速緩存,用以接收來自該分支目標地址高速緩存的儲存于其中的該些先前執(zhí)行的分支指令中的一個的一目標地址;以及一控制邏輯,耦接至該分支目標地址高速緩存,用以接收相對應(yīng)于該些先前執(zhí)行的分支指令中的該一的該些指示中的一個;其中當該些指示中的該一表示出該些先前執(zhí)行的分支指令中的該一涵蓋跨越二條高速線時,在提取含有該些先前執(zhí)行的分支指令中的該一的該二條高速線之后,該控制邏輯會使該微處理器分支成該目標地址。
20.如權(quán)利要求19所述的在微處理器中的分支控制裝置,其特征是,所組成的該控制邏輯用以自一指令高速緩存中提取含有該些先前執(zhí)行的分支指令中的該一的一部份的該二條高速線中的一第一條。
21.如權(quán)利要求20所述的在微處理器中的分支控制裝置,其特征是,所組成的該控制邏輯用以接收來自該指令高速緩存的一誤失指針。
22.如權(quán)利要求21所述的在微處理器中的分支控制裝置,其特征是,當該誤失指針顯示出該二條高速線中的一第二條正誤失于該指令高速緩存時,所組成的該控制邏輯用以自一內(nèi)存中,而不是自該指令高速緩存中,提取含有該些先前執(zhí)行的分支指令中的該一的一部份的該二條高速線中的該第二條。
23.如權(quán)利要求22所述的在微處理器中的分支控制裝置,其特征是,在該二條高速線中的該第二條,含有該些先前執(zhí)行的分支指令中的該一的一目標指令的一第三高速線之后,所組成的該控制邏輯會自該指令高速緩存中提取該第三高速線。
24.如權(quán)利要求23所述的在微處理器中的分支控制裝置,其特征是,自該指令高速緩存中所提取的該第三高速線使用儲存于該緩存器中的該目標地址。
25.一種微處理器分支控制裝置,其特征是,包括一增加器,耦接至一指令高速緩存地址總線,用以送出該地址總線上的一第一提取地址,該第一提取地址選擇含有一分支指令的一第一部份的一第一高速線;一分支目標地址高速緩存,耦接至該地址總線,用以響應(yīng)于該第一提取地址,而送出該分支指令的一目標地址;一地址緩存器,耦接至該分支目標地址高速緩存,當該分支目標地址高速緩存表示該分支指令涵蓋超過該第一高速線時,用以儲存該目標地址;其中該增加器會送出該地址總線上的一第二提取地址,該第二提取地址選擇含有該分支指令的一第二部份的一第二高速線;其中該地址緩存器會送出該地址總線上的該目標地址,該目標地址選擇含有該分支指令的一目標指令的一第三高速線。
26.如權(quán)利要求25項所述的微處理器分支控制裝置,其特征是,更包括一旗標緩存器,用以儲存該地址緩存器存有涵蓋超過該第一高速線的該目標地址的一指示。
27.如權(quán)利要求26項所述的微處理器分支控制裝置,其特征是,當該旗標緩存器表示該地址緩存器存有涵蓋超過該第一高速線的該目標地址時,以及當該第二提取地址誤失于耦接至該地址總線一指令高速緩存中時,該增加器會將一第三提取地址循序的送到該地址總線上的該第二提取地址,以及該地址緩存器不會送出該地址總線上的該目標地址。
28.一種具有指令高速緩存的微處理器的執(zhí)行方法,其特征是,該方法包括將一第一提取地址用于該指令高速緩存,用以選擇至少含有一分支指令的一部份的一第一高速線;響應(yīng)于該第一提取地址而送出該分支指令的一目標地址;決定該分支指令是否涵蓋超過該第一高速線;當該分支指令涵蓋超過該第一高速線時,將該目標地址儲存于一緩存器中;當該分支指令涵蓋超過該第一高速線時,將一第二提取地址用于該指令高速緩存,用以選擇含有該分支指令的一其余部分的一第二高速線;將來自該緩存器的該目標地址送到該指令高速緩存,用以選擇含有該分支指令的一目標指令的一第三高速線。
29.如權(quán)利要求28所述的具有指令高速緩存的微處理器的執(zhí)行方法,更包括在執(zhí)行該分支指令之后及在該使用該第一提取地址之前,會高速該分支指令是否涵蓋超過該第一高速線的一指示。
30.如權(quán)利要求29所述的具有指令高速緩存的微處理器的執(zhí)行方法,其特征是,該決定該分支指令是否涵蓋超過該第一高速線包括檢查該指示。
31.如權(quán)利要求28所述的具有指令高速緩存的微處理器的執(zhí)行方法,其特征是,更包括在先前的執(zhí)行該分支指令之后及該響應(yīng)于該第一提取地址而送出該分支指令的該目標地址之前,會高速該分支指令的該目標地址。
32.如權(quán)利要求28所述的具有指令高速緩存的微處理器的執(zhí)行方法,其特征是,更包括決定該第二提取地址是否誤失于該指令高速緩存中。
33.如權(quán)利要求32所述的具有指令高速緩存的微處理器的執(zhí)行方法,其特征是,更包括當該第二提取地址誤失于該指令高速緩存中時,會自一內(nèi)存中,而不是自該指令高速緩存中,獲得該第二高速線。
34.如權(quán)利要求33所述的具有指令高速緩存的微處理器的執(zhí)行方法,其特征是,在該自一內(nèi)存中,而不是自該指令高速緩存中,獲得該第二高速線之后,會執(zhí)行該將來自該緩存器的該目標地址送到該指令高速緩存。
35.如權(quán)利要求28所述的具有指令高速緩存的微處理器的執(zhí)行方法,其特征是,更包括儲存該第一高速線、該第二高速線及該第三高速線于一指令緩沖器中。
36.如權(quán)利要求35所述的具有指令高速緩存的微處理器的執(zhí)行方法,其特征是,該儲存該第一高速線、該第二高速線及該第三高速線于該指令緩沖器中包括依次儲存該第一高速線、該第二高速線及該第三高速線于該指令緩沖器中。
全文摘要
一種在微處理器中的分支控制裝置。此裝置包括分支目標地址高速緩存,用以高速分支指令是否涵蓋跨越二條高速線的指示。當含有分支指令的第一部分的第一高速線的指令高速緩存提取地址擊入分支目標地址高速緩存時,分支目標地址高速緩存會輸出分支指令的目標地址及表示出涵蓋狀況。目標地址儲存于緩存器中。下個循序提取地址會選擇含有分支指令的第二部分的第二高速線。在提取含有分支指令的二條高速線之后,為了提取含有分支的目標指令的第三高速線,會將來自緩存器的目標地址送到指令高速緩存。三條高速線依次儲存于指令緩沖器中,用以譯碼。
文檔編號G06F9/00GK1369780SQ02107138
公開日2002年9月18日 申請日期2002年3月11日 優(yōu)先權(quán)日2001年7月16日
發(fā)明者布蘭特, 比恩, G·葛蘭, 亨利, 湯瑪斯C·麥當勞 申請人:智權(quán)第一公司