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

可變?nèi)航M組合分支目標(biāo)地址快取傳送每一快取列多目標(biāo)地址的制作方法

文檔序號:6637169閱讀:311來源:國知局
專利名稱:可變?nèi)航M組合分支目標(biāo)地址快取傳送每一快取列多目標(biāo)地址的制作方法
技術(shù)領(lǐng)域
本發(fā)明是有關(guān)于微處理器內(nèi)分支預(yù)測的領(lǐng)域,尤其是有關(guān)于分支目標(biāo)地址快取。
背景技術(shù)
許多現(xiàn)代管線化微處理器是包含一分支目標(biāo)地址快取(branch target address cache,其后簡稱BTAC),此BTAC快取先前被執(zhí)行的分支指令的目標(biāo)地址。當(dāng)從微處理器的指令快取擷取一快取列時,擷取地址是提供給BTAC,且BTAC是利用此擷取地址預(yù)測是否有分支指令出現(xiàn)在此快取列中,以及是否此BTAC包含一有效目標(biāo)地址給分支指令。如果分支指令是被預(yù)測發(fā)生,則處理器是分支至BTAC所提供的有效目標(biāo)地址。由于每一快取列是可儲存多指令,因此指令快取列是可能包含一個以上的分支指令。因此,一些BTAC是固定提供儲存器以快取每一快取列的兩個目標(biāo)地址,由于在此快取列內(nèi)的一分支指令是可能執(zhí)行而另一分支指令是可能不執(zhí)行,因此此方法是提供BTAC更精準(zhǔn)預(yù)測程序的流程。
在傳統(tǒng)BTAC中,兩目標(biāo)地址的儲存是固定于BTAC內(nèi)。亦即,無論是否兩分支指令出現(xiàn)在此快取列內(nèi)或是一分支指令出現(xiàn)在此快取列內(nèi),其空間是固定專用。事實上,在一被整合至指令快取的傳統(tǒng)BTAC中,甚至沒有分支指令出現(xiàn)在此快取列內(nèi),其空間仍是固定專用。然而,根據(jù)觀察所得,僅將近20%含有一分支指令的快取列是含有兩分支指令。因此,在BTAC內(nèi)第二目標(biāo)地址固定專用的額外空間是浪費快取列80%的空間。例如在一雙通道集合組合快取(2-way set associativecache)固定提供每一入口的兩個目標(biāo)地址儲存的BTAC中,由于僅有大約20%的快取列是含有兩個或兩個以上的分支指令,因此僅有大約60%的目標(biāo)地址儲存空間是被用于儲存有效的目標(biāo)地址。
因此,所需要的是一個更有空間效率的機制以預(yù)測在一擷取的快取列內(nèi)多分支指令。

發(fā)明內(nèi)容
本發(fā)明的目的是提供一分支預(yù)測裝置,其動態(tài)決定一群組入口的組合,此群組入口是由一指定的擷取地址索引依照此索引所指定的快取列內(nèi)所出現(xiàn)的分支指令數(shù)量而選取。由此僅以一單分支指令享有較多的索引組合以及以多分支指令享有較少的索引組合。
本發(fā)明是提供一微電腦內(nèi)的一裝置,用以預(yù)測從一指令快取的一擷取地址所擷取的每一快取列內(nèi)的一可變數(shù)量的分支指令的一目標(biāo)地址。此裝置是包含一第一與一第二雙通道集合組合快取存儲器(two-way set associative cache memory),每一雙通道集合組合快取存儲器是具有一索引輸入耦合接收此指令快取擷取地址的一部分。此索引選取復(fù)數(shù)個四入口(entry)群組其中之一。每一群組是具有一入口于每一第一及第二快取存儲器的每一通道。每一入口是用以快取一先前被執(zhí)行的分支指令的一目標(biāo)地址。此裝置亦包含一置換邏輯(replacement logic),是耦接至此第一與此第二快取,是用以選取更換入口其中之一,以回應(yīng)一分支指令的決定,以使得(a)在復(fù)數(shù)個群組的一第一子集微電腦操作期間,四入口是在每一四個不同快取列內(nèi)快取一分支指令的目標(biāo)地址;以及(b)在復(fù)數(shù)個群組的一第二子集微電腦操作期間,四入口是在每一兩個不同快取列內(nèi)快取一分支指令的目標(biāo)地址以及在一第三不同快取列內(nèi)快取兩分支指令的目標(biāo)地址以獲得三通道群組的組合。
本發(fā)明是提供一微電腦內(nèi)預(yù)測從一指令快取的一擷取地址所擷取的一快取列內(nèi)一可變數(shù)量的分支指令的一目標(biāo)地址的方法。此方法是包含提供一索引給一第一與一第二雙通道集合組合快取存儲器以選取復(fù)數(shù)個四入口群組其中之一。每一群組是包含一入口于每一第一與第二快取存儲器的每一通道。每一入口是快取一先前被執(zhí)行的分支指令的一目標(biāo)地址。此索引是指令快取擷取地址的一部分。此方法亦包含選取更換入口其中之一,以回應(yīng)一分支指令的決定,以使得(a)在復(fù)數(shù)個群組的一第一子集微電腦操作期間,四入口是在每一四個不同快取列內(nèi)快取一分支指令的目標(biāo)地址以獲得四通道群組的組合;以及(b)在復(fù)數(shù)個群組的一第二子集微電腦操作期間,四入口是在每一兩個不同快取列內(nèi)快取一分支指令的目標(biāo)地址以及在一第三不同快取列內(nèi)快取兩分支指令的目標(biāo)地址以獲得三通道群組的組合。
本發(fā)明是提供一微電腦內(nèi)的一裝置,用以預(yù)測從一指令快取的一擷取地址所擷取的一快取列內(nèi)一可變數(shù)量的分支指令的一目標(biāo)地址。此裝置是包含M個N通道集合組合快取存儲器,每一N通道集合組合快取存儲器是具有一索引輸入耦合接收此指令快取擷取地址的一部分。此索引選取復(fù)數(shù)個M×N入口群組其中之一。每一群組是包含一入口于每一M個快取存儲器的每一通道。每一入口是用以快取一先前被執(zhí)行的分支指令的一目標(biāo)地址。此裝置亦包含一置換邏輯,是耦接至此M個快取,是用以選取更換入口其中之一,以回應(yīng)一分支指令的決定,以使得(a)在復(fù)數(shù)個群組的一第一子集微電腦操作期間,M×N入口是在每一M×N個不同快取列內(nèi)快取一分支指令的目標(biāo)地址以獲得M×N通道群組組合;以及(b)在復(fù)數(shù)個群組的一第二子集微電腦操作期間,M×N入口是在每一(M×N-1)個不同快取列內(nèi)快取一分支指令的目標(biāo)地址以及在一第M×N不同快取列內(nèi)快取兩分支指令的目標(biāo)地址以獲得(M×N-1)通道群組的組合。
本發(fā)明是提供一微電腦內(nèi)預(yù)測從一指令快取的一擷取地址所擷取的一快取列內(nèi)一可變數(shù)量的分支指令的一目標(biāo)地址的方法。此方法是包含提供一索引給M個N通道集合組合快取存儲器以選取復(fù)數(shù)個M×N入口群組其中之一。每一群組是包含一入口于每一M個快取存儲器的每一通道。每一入口是快取一先前被執(zhí)行的分支指令的一目標(biāo)地址。此索引是指令快取擷取地址的一部分。此方法亦包含選取更換入口其中之一,以回應(yīng)一分支指令的決定,以使得(a)在復(fù)數(shù)個群組的一第一子集微電腦操作期間,M×N入口是在每一M×N個不同快取列內(nèi)快取一分支指令的目標(biāo)地址以獲得M×N通道群組的組合;以及(b)在復(fù)數(shù)個群組的一第二子集微電腦操作期間,M×N入口是在每一(M×N-1)個不同快取列內(nèi)快取一分支指令的目標(biāo)地址以及在一第M×N不同快取列內(nèi)快取兩分支指令的目標(biāo)地址以獲得(M×N-1)通道群組的組合。
本發(fā)明是提供一偕同計算機裝置使用的計算機程序產(chǎn)品,此計算機程序產(chǎn)品是包含一計算機可使用的媒體,其具有計算機可讀取的程序碼嵌入此媒體,使得在一微電腦內(nèi)的一裝置預(yù)測從一指令快取的一擷取地址所擷取的每一快取列內(nèi)一可變數(shù)量的分支指令的一目標(biāo)地址。此計算機可讀取的程序碼是包含一第一程序碼提供一第一與一第二雙通道集合組合快取存儲器,每一雙通道集合組合快取存儲器是具有一索引輸入耦合接收此指令快取擷取地址的一部分。此索引是選取復(fù)數(shù)個四入口群組其中之一。每一群組是具有一入口于每一第一及第二快取存儲器的每一通道。每一入口是用以快取一先前被執(zhí)行的分支指令的一目標(biāo)地址。此計算機可讀取的程序碼亦包含一第二程序提供一置換邏輯,是耦接至此第一與此第二快取,是用以選取更換入口其中之一,以回應(yīng)一分支指令的決定,以使得(a)在復(fù)數(shù)個群組的一第一子集微電腦操作期間,四入口是在每一四個不同快取列內(nèi)快取一分支指令的目標(biāo)地址以獲得四通道群組的組合;以及(b)在復(fù)數(shù)個群組的一第二子集微電腦操作期間,四入口是在每一兩個不同快取列內(nèi)快取一分支指令的目標(biāo)地址以及在一第三不同快取列內(nèi)快取兩分支指令的目標(biāo)地址以獲得三通道群組的組合。
本發(fā)明的一優(yōu)點是其可預(yù)測每一指令快取列占用的兩個目標(biāo)地址,亦可預(yù)測每一快取列索引占用的每一具有較高組合性的快取列的一單目標(biāo)地址。本發(fā)明是藉由排序每一入口的一單目標(biāo)地址以達到上述的目的,而并非藉由排序每一入口的多目標(biāo)地址,藉此相較于一傳統(tǒng)BTAC是更有效率地使用儲存空間。并且,如果指令快取的組合增加,則本發(fā)明的分支目標(biāo)地址預(yù)測是可適當(dāng)增加其有效組合以符合許多不具等比例增加分支目標(biāo)地址預(yù)測裝置的索引的指令快取的組合。


為進一步說明本發(fā)明的具體技術(shù)內(nèi)容,以下結(jié)合實施例及附圖詳細說明如后,其中圖1是本發(fā)明的一微處理器的方塊圖;圖2是圖1的分支目標(biāo)地址預(yù)測裝置的方塊圖;圖3是圖2的分支目標(biāo)地址預(yù)測裝置在被讀取產(chǎn)生一預(yù)測目標(biāo)地址的操作的流程圖;以及圖4是圖2的分支目標(biāo)地址預(yù)測裝置在被更新回應(yīng)一決定分支指令的操作的流程圖。
具體實施例方式
請參照圖1,其為本發(fā)明的一微處理器100的方塊圖。微處理器100是包含一管線化微處理器。在一實施例中,微處理器100是包含一微處理器,此微處理器的指令集是實質(zhì)符合×86架構(gòu)指令集。
微處理器100是包含一指令擷取器102。指令擷取器102亦控制一擷取地址多工器136,而擷取地址多工器136輸出一目前指令快取擷取地址162。目前指令快取擷取地址162指定擷取目前執(zhí)行程序的指令字節(jié)的下一個快取列的地址以供微處理器100執(zhí)行。如果快取地址162是命中(hit)于一指令快取104,則指令快取104輸出由擷取地址162所指定的指令的快取列;否則,指令擷取器102從一存儲器(例如一耦接至微處理器100的系統(tǒng)存儲器)擷取未命中(missing)的指令,并且指令快取104快取從存儲器所擷取的指令以供微處理器100的后序使用。尤其從指令快取104所擷取的快取列是有可能包含0、1、2或更多個分支指令。在一實施例中,指令快取104是包含一64KB的四通道集合組合一階快取(4-way set associative level-l cache);然而,本發(fā)明是可被用于連接各種大小與各種組合的指令快取。
微處理器100亦包含一分支目標(biāo)地址預(yù)測裝置142(詳細討論如下)。分支目標(biāo)地址預(yù)測裝置142快取有關(guān)先前被執(zhí)行的分支指令的信息。當(dāng)指令擷取器102從指令快取104擷取一快取列時,分支目標(biāo)地址預(yù)測裝置142依據(jù)分支目標(biāo)地址預(yù)測裝置142內(nèi)所快取的信息預(yù)測是否有一個或更多個分支指令是出現(xiàn)在此快取列內(nèi),并且提供分支指令其中之一的一被預(yù)測目標(biāo)地址給多工器136。如果預(yù)測分支指令將發(fā)生,則多工器136是選取被預(yù)測目標(biāo)地址164當(dāng)成在下一時脈周期上的擷取地址162以實現(xiàn)微處理器100的一分支對被預(yù)測目標(biāo)地址164。
尤其,分支目標(biāo)地址預(yù)測裝置142是快取先前被執(zhí)行的分支指令的目標(biāo)地址、快取列內(nèi)分支指令的偏移值、是否分支指令會發(fā)生的一預(yù)測、含有分支指令的快取列的一標(biāo)簽(tag)以及一有效的指示(indicator)。如下列的詳述,分支目標(biāo)地址預(yù)測裝置142是包含多集合的組合分支目標(biāo)地址快取存儲器以及置換邏輯。置換邏輯是以動態(tài)變更每一索引群組的有效組合的方法將多快取的更換視為一體控制,由此,對某些多分支指令是出現(xiàn)在指令快取104的一對應(yīng)快取列的群組,組合性是較少容納多分支,并且,對某些僅有一單一分支指令是出現(xiàn)在對應(yīng)快取列的群組,組合性是較多。一索引群組或群組,是包含由擷取地址162的索引部分選取的所有快取的所有集合內(nèi)的所有入口,如圖2所示。
如某些傳統(tǒng)分支預(yù)測器,如果從指令快取104所擷取的一快取列是包含多分支指令,則分支目標(biāo)地址預(yù)測裝置142是可提供多目標(biāo)地址;然而,不像快取列多分支的分支預(yù)測器,本發(fā)明的分支目標(biāo)地址預(yù)測裝置142內(nèi)的每一入口是包含儲存器以快取僅有單一分支目標(biāo)地址與其相關(guān)信息,而非像傳統(tǒng)預(yù)測器是包含儲存器以快取多分支目標(biāo)地址,傳統(tǒng)預(yù)測器中,傳統(tǒng)儲存空間是浪費快取列的一基本百分比。因此,本發(fā)明的分支目標(biāo)地址預(yù)測裝置142使儲存空間的使用更有效率,并且提供更多組合,由此潛在增加分支預(yù)測的精準(zhǔn)度。
所應(yīng)了解的是,快取列或列的名詞的使用,在此除了在其它方面表明之外,是參照每一時脈周期由指令快取器102從指令快取104所擷取的指令字節(jié)的總量,其可能是指令快取104與主存儲器間所實際傳送的一些字節(jié)的一子集。例如在圖1的實施例中,微處理器100在系統(tǒng)存儲器與指令快取104之間可能一次傳送32字節(jié)的指令;然而,指令快取器102每一時脈周期從指令快取104僅擷取16字節(jié)。如以下所討論,在一實施例中,分支目標(biāo)地址預(yù)測裝置142預(yù)測每一時脈周期是否一個或多個分支指令出現(xiàn)在一快取列,或是16字節(jié)總量。
微處理器100亦包含一指令緩沖器106耦接至指令快取104。指令緩沖器106接收來自指令快取104的指令字節(jié)的快取列,并且緩沖快取列直到他們可以被格式化成區(qū)別的指令而由微處理器100所執(zhí)行。在一實施例中,指令緩沖器106是包含四個入口以儲存到四個快取列。
微處理器100亦包含一指令格式化器108耦合至指令緩沖器106。指令格式化器108接收來自指令緩沖器106的指令位,并且由此產(chǎn)生已格式化的指令。亦即,指令格式化器108查看指令緩沖器106內(nèi)指令字節(jié)的一字符串,決定此字節(jié)包含下一指令與其長度,并且輸出下一指令與其長度。在一實施例中,已格式化的指令是包含實質(zhì)上符合×86架構(gòu)指令集的指令。
微處理器100亦包含一格式化指令佇列112耦接至指令格式化器108。格式化指令佇列112接收來自指令格式化器108的格式化指令,并且緩沖格式化指令直到他們可以被轉(zhuǎn)換成微指令。在一實施例中,格式化指令佇列112是包含入口以儲存到12個格式化指令。
微處理器100亦包含一指令轉(zhuǎn)譯器114耦接至格式化指令佇列112。指令轉(zhuǎn)譯器114將儲存于格式化指令佇列112的格式化宏指令轉(zhuǎn)譯成微指令。在一實施例中,微處理器100是包含一執(zhí)行精簡的微指令或本機指令集的精簡指令集計算機(reduced instruction set computer;RISC)核。
微處理器100亦包含一轉(zhuǎn)譯指令佇列116耦接至指令轉(zhuǎn)譯器114。轉(zhuǎn)譯指令佇列116接收來自指令轉(zhuǎn)譯器114的轉(zhuǎn)譯微指令,并且緩沖微指令直到他們可以被剩余的微處理器管線所執(zhí)行。
微處理器100亦包含一暫存器階段118耦接至轉(zhuǎn)譯指令佇列116。暫存器階段118是包含復(fù)數(shù)個暫存器用以儲存指令操作數(shù)與結(jié)果。暫存器階段118包含一使用者可見的暫存器組用以儲存微處理器100的使用者可見的狀態(tài)。
微處理器100亦包含一地址階段122耦接至?xí)捍嫫麟A段118。地址階段122是包含地址產(chǎn)生邏輯用以產(chǎn)生存儲器地址給存取存儲器的指令,例如加載或儲存指令以及分支指令。
微處理器100亦包含資料階段124耦接至地址階段122。資料階段124是包含邏輯用以從存儲器加載資料以及一個或多個快取用以快取從存儲器所加載的資料。
微處理器100亦包含執(zhí)行階段126耦接至資料階段124。執(zhí)行階段126是包含執(zhí)行單元用以執(zhí)行指令,例如算術(shù)及邏輯單元用以執(zhí)行算術(shù)及邏輯指令。在一實施例中,執(zhí)行階段126是包含一整數(shù)執(zhí)行單元;一浮點執(zhí)行單元;一MMX執(zhí)行單元;以及一SSE執(zhí)行單元。執(zhí)行階段126亦包含邏輯用以決定分支指令,尤其執(zhí)行階段126決定一分支指令是否會發(fā)生以及此分支指令的實際目標(biāo)地址。
微處理器100亦包含一儲存階段128耦接至執(zhí)行階段126。儲存階段128是包含邏輯用以回應(yīng)儲存微指令儲存資料至存儲器。此外,儲存階段128產(chǎn)生一更新請求176用以更新具有決定分支指令目標(biāo)地址的分支目標(biāo)地址預(yù)測裝置142,并回應(yīng)決定分支指令的執(zhí)行階段126。更新請求176是尚包含被決定分支指令地址與被決定目標(biāo)地址,在一實施例中,其等的每一是32位。BTAC更新請求176亦包含信息(將于圖2詳細討論),其與分支指令以管線下送(piped down),其中分支指令是當(dāng)分支目標(biāo)地址預(yù)測裝置142是與包含來自指令快取104的快取列同時存取與擷取時而獲得。
微處理器100亦包含一寫回階段132耦接至儲存階段128。寫回階段132是包含邏輯用以將一指令結(jié)果寫至?xí)捍嫫麟A段118。
除了接收預(yù)測目標(biāo)地址164,多工器136亦接收擷取地址162與一下一緊隨的擷取地址166。一加法器134是藉由增加目前擷取地址一快取列的大小而產(chǎn)生下一緊隨的擷取地址166。在從指令快取104正??烊∫豢烊×泻螅喙て?36是選取下一緊隨的擷取地址166以輸出如目前擷取地址162,于下一時脈周期。如果指令緩沖器106是滿的,則多工器136是選取擷取地址162而非下一緊隨的擷取地址166。如上所述,如果分支目標(biāo)地址預(yù)測裝置142指示其已提供一有效被預(yù)測目標(biāo)地址164給一在目前從指令快取104所擷取的快取列內(nèi)的分支指令,并且分支指令是被預(yù)測將發(fā)生,則多工器136選取預(yù)測目標(biāo)地址164當(dāng)成擷取地址162于下一時脈周期。雖然未繪出,多工器136亦從儲存階段128接收一正確地址。如果儲存階段128指示一分支指令是預(yù)測錯誤,則多工器136是選取正確地址以更正此分支預(yù)測錯誤。
請參照圖2,其為圖1的分支目標(biāo)地址預(yù)測裝置142的方塊圖。分支目標(biāo)地址預(yù)測裝置142是包含控制邏輯202,其控制分支目標(biāo)地址預(yù)測裝置142的各種操作,例如BTAC 208的讀取與寫入以及一如下所述的LRU陣列212??刂七壿?02是接收微處理器100的一指令指標(biāo)222,其指示目前被擷取執(zhí)行的程序指令的地址。
分支目標(biāo)地址預(yù)測裝置142亦包含一兩輸入地址多工器216。此地址多工器216的一輸入是接收圖1的指令快取104擷取地址162,以及其另一輸入是接收由控制邏輯202所產(chǎn)生的一更新地址232。當(dāng)BTAC 208及/或LRU陣列212被讀取時,控制邏輯202是控制地址多工器216以輸出擷取地址,并且當(dāng)BTAC 208及/或LRU陣列212被寫入時,控制邏輯202是控制地址多工器216以選取更新地址232。
分支目標(biāo)地址預(yù)測裝置142亦包含兩分支目標(biāo)地址快取(branch target address cache;BTAC)存儲器,其等是分別標(biāo)示為第一BTAC 208A與第BTAC 208B。第一BTAC208A與第二BTAC 208B是一般BATC 208的個別稱呼以及整體稱為BATCs 208。第一BTAC 208A與第二BTAC 208B在此亦被稱為第一側(cè)與第二側(cè)。每一BATC 208是耦合以接收一由多工器216所輸出地址的索引部分274。在一實施例中,索引274是包含由多工器216所輸出地址的第4~13位。每一BTAC 208是雙通道集合的組合。每一唯一索引274值是從每一BTACs 208選取一不同集合的兩通道(在圖2中標(biāo)示通道0與通道1)。每一通道0與通道1具有一入口264用以快取一先前被執(zhí)行的分支指令的一目標(biāo)地址254;一有效指示238指示入口264是否有效;一偏移266是指定從指令快取104所擷取的對應(yīng)快取列內(nèi)先前被執(zhí)行的分支指令的位置或開始的字節(jié)偏移;先前被執(zhí)行的分支指令的一發(fā)生/不發(fā)生預(yù)測276;以及包含先前被執(zhí)行的分支指令的快取列地址的一標(biāo)簽242。BTACs 208是可個別更新,因此,控制邏輯202產(chǎn)生個別寫入信號給每一BTACs 208。
由一索引274值所選取的四個入口264(兩入口264是來自每一兩BTACs 208),在此是整體被稱為一索引群組262或群組262,如圖2所示。圖2是圖解說明三個被標(biāo)示為262A、262B以及262C的典型群組262。在一實施例中,分支目標(biāo)地址預(yù)測裝置142是具有1024個群組262。每次指令快取器102從指令快取104擷取一快取列時,BTACs 208是輸出被快取在由擷取地址162的索引274所選取的群組的所有四個入口內(nèi)的信息252。
群組262A例示在分支目標(biāo)地址預(yù)測裝置142內(nèi)群組262的一子集,其正快取在四個不同指令快取列的每一快取列內(nèi)的一單一先前被執(zhí)行分支指令的一分支目標(biāo)地址與相關(guān)信息。此四個不同目標(biāo)地址是被標(biāo)示為W、X、Y、Z于群組262A。亦即,四個不同快取列的每一快取列的快取標(biāo)簽是獨一無二的。因此,雖然兩個BTACs 208僅是雙通道集合的組合,但是整體查看兩個BTACs 208,由于對某些索引274值,群組262A是快取四個不同快取列內(nèi)的一單一分支指令的一目標(biāo)地址,因此群組262A實際上是一四通道組合群組262。
群組262B例示在分支目標(biāo)地址預(yù)測裝置142內(nèi)群組262的一子集,其正快取在兩個不同指令快取列的每一快取列內(nèi)的一單一先前被執(zhí)行分支指令的一分支目標(biāo)地址與相關(guān)信息,以及在一第三不同指令快取列內(nèi)的兩個先前被執(zhí)行分支指令的兩分支目標(biāo)地址與相關(guān)信息。此四個不同目標(biāo)地址是被標(biāo)示為W1、X、Y、W2于群組262B。W1與W2是標(biāo)示在相同快取列內(nèi)的兩個不同分支指令的目標(biāo)地址。亦即,與目標(biāo)地址W1與W2有關(guān)的快取標(biāo)簽是完全相似,但與目標(biāo)地址X與Y有關(guān)的快取標(biāo)簽卻是獨一無二的。因此,整體查看兩個BTACs 208,由于對某些索引274值,群組262B是快取在兩個不同指令快取列內(nèi)的一單一分支指令的一目標(biāo)地址,以及快取在一第三不同指令快取列內(nèi)的兩個不同分支指令的兩個目標(biāo)地址,因此群組262B實際上是一三通道組合群組262。
群組262C例示在分支目標(biāo)地址預(yù)測裝置142內(nèi)群組262的一子集,其正快取在兩個不同指令快取列的每一快取列內(nèi)的兩個先前被執(zhí)行分支指令的一分支目標(biāo)地址與相關(guān)信息。此四個不同目標(biāo)地址是被標(biāo)示為W1、X1、X2、W2于群組262C。W1與W2是標(biāo)示在一第一指令快取列內(nèi)的兩個不同分支指令的目標(biāo)地址,以及X1與X2是標(biāo)示在一第二指令快取列內(nèi)的兩個不同分支指令的目標(biāo)地址。亦即,與目標(biāo)地址W1與W2有關(guān)的快取標(biāo)簽是完全相似,與目標(biāo)地址X1與X2有關(guān)的快取標(biāo)簽是完全相似,但與目標(biāo)地址W1與W2有關(guān)的快取標(biāo)簽和與目標(biāo)地址X1與X2有關(guān)的快取標(biāo)簽卻是不同的。因此,整體查看兩個BTACs 208,由于對某些索引274值,群組262C是快取在兩個不同快取列的每一快取列內(nèi)兩個不同分支指令的一目標(biāo)地址,因此群組262C實際上是一雙通道組合群組262。
無論分支目標(biāo)地址預(yù)測裝置142內(nèi)的一特定索引群組262是依據(jù)目前執(zhí)行程序內(nèi)的先前被執(zhí)行分支指令的分布而成為雙通道、三通道或四通道組合群組262的子集,尤其是依據(jù)儲存目前執(zhí)行程序指令的快取列內(nèi)的先前被執(zhí)行分支指令的分布。其優(yōu)點是,當(dāng)微處理器100執(zhí)行且終于決定一新的分支指令,并且以新的分支指令的目標(biāo)地址與相關(guān)信息更新分支目標(biāo)地址預(yù)測裝置142時,分支目標(biāo)地址預(yù)測裝置142可能更換被選取群組262內(nèi)的一存在入口264以變更群組262的組合以符合需求。尤其,分支目標(biāo)地址預(yù)測裝置142可能減少組合性的階層以容納在一快取列內(nèi)有兩分支指令或甚至在兩快取列內(nèi)有兩分支指令的一特定索引274分支指令的一分布;相反地,分支目標(biāo)地址預(yù)測裝置142可能增加組合性的階層以容納在每一快取列內(nèi)僅具有一單一分支指令的一特定索引274分支指令的一分布。
分支目標(biāo)地址預(yù)測裝置142亦包含一最近最少使用(least recently used,其后簡稱LRU)存儲器陣列212。LRU陣列212亦接收索引274,此索引274是選取LRU陣列212內(nèi)的一入口。在LRU陣列212內(nèi)的每一入口是儲存由索引274所選取在BTACs 208內(nèi)的一對應(yīng)群組262的更換信息。因此,LRU陣列212是一共享于兩BTACs 208之間的總體資源。在一實施例中,更換信息是包含一位用以指示與被選取群組262有關(guān)的第一BTAC 208A或第二BTAC 208B是否為最近最少使用;一位用以指示由索引274所選取在第一BTAC 208A內(nèi)的集合有關(guān)的第一BTAC 208A的通道0或通道1是否為最近最少使用;以及一位用以指示由索引274所選取在第BTAC 208B內(nèi)的集合有關(guān)的第二BTAC 208B的通道0或通道1是否為最近最少使用。每次指令快取器102從指令快取104擷取一快取列時,LRU陣列212輸出由索引274所選取的入口的更換信息236??刂七壿?02產(chǎn)生更新數(shù)據(jù)234提供給BTACs 208與LRU陣列212當(dāng)成輸入。當(dāng)以更新數(shù)據(jù)234更新BTACs 208及/或LRU陣列212時,控制邏輯202是使地址選擇多工器216選取更新地址232。在一實施例中,更新資料234可能包含更新LRU信息、目標(biāo)地址、標(biāo)簽、有效位、分支指令偏移值以及發(fā)生/不發(fā)生(T/NT)預(yù)測。當(dāng)一分支指令是被決定且管線產(chǎn)生一更新請求176,控制邏輯202是使用更換信息236以決定更換在一群組262內(nèi)的那一入口,如下列與圖4相關(guān)的更詳細描述??刂七壿?02亦依據(jù)儲存在BTACs 208內(nèi)的信息的使用而更新在LRU陣列212內(nèi)的更換信息。在一實施例中,在BTACs 208內(nèi)的一入口264,如果其是被分配用于更換且如果其有關(guān)的分支指令是有效的以及當(dāng)BTACs 208被讀取時預(yù)測發(fā)生,則是被視為用于最近最少使用的目的。
分支目標(biāo)地址預(yù)測裝置142亦包含四個比較器214以助于偵測快取地址162是否命中于BTACs 208內(nèi)。每一比較器214是接收一標(biāo)簽242當(dāng)成地址274,此標(biāo)簽242是由BTACs 208從多工器216所輸出的擷取地址162的索引274部分所選取的群組262的一個別入口264輸出。每一比較器214比較其個別標(biāo)簽242與擷取地址162的標(biāo)簽部分272,如果個別標(biāo)簽242是匹配于擷取地址162標(biāo)簽272,則產(chǎn)生一真值(true)于一個匹配指示244。匹配指示244是被提供給控制邏輯202。
控制邏輯202亦接收一有效指示238、分支指令偏移266以及由BTACs 208從索引274所選取的群組262的一個別入口264所輸出的T/NT預(yù)測276。控制邏輯202產(chǎn)生四個命中指示258對應(yīng)于群組262的四個入口264。如果對應(yīng)有效指示238與匹配信號244兩者是為“真”時,則控制邏輯202產(chǎn)生一真值于命中指示258。當(dāng)分支指令被決定時,命中指示258是與用于決定更換在一群組262內(nèi)那一入口264的分支指令一起以管線下送微處理器100的管線。
分支目標(biāo)地址預(yù)測裝置142亦包含一兩輸入的第一通道選擇多工器206A與一兩輸入的第二通道選擇多工器206B。第一通道選擇多工器206A是接收來自索引274所選取的群組262內(nèi)的第一BTAC 208A的每一入口264的目標(biāo)地址254。控制邏輯202經(jīng)由命中信號258使第一通道選擇多工器206A選取輸出當(dāng)成第一側(cè)目標(biāo)地址256A,第一側(cè)目標(biāo)地址256A是擷取地址162所命中的目標(biāo)地址254的通道0或通道1。同理,第二通道選擇多工器206B是接收來自索引274所選取的群組262內(nèi)的第BTAC 208B的每一入口264的目標(biāo)地址254,且控制邏輯202使第二通道選擇多工器206B選取輸出當(dāng)成第二側(cè)目標(biāo)地址256B,第二側(cè)目標(biāo)地址256B是擷取地址址162所命中的目標(biāo)地址254的通道0或通道1。
分支目標(biāo)地址預(yù)測裝置142亦包含一兩輸入的側(cè)選擇多工器204,其接收來自通道選擇多工器206的第一側(cè)目標(biāo)地址256A與第二側(cè)目標(biāo)地址256B。控制邏輯202經(jīng)由一選擇信號278使側(cè)選擇多工器204輸出如同圖1的被預(yù)測目標(biāo)地址164,被預(yù)測目標(biāo)地址164是在被選取群組262內(nèi)的第一、有效、發(fā)生、可見的分支指令的目標(biāo)地址256。如下列有關(guān)圖3的詳細描述。
控制邏輯202接收圖1的更新請求176。更新請求176是包含有關(guān)于被決定分支指令的信息(例如其地址與目標(biāo)地址)。當(dāng)分支目標(biāo)地址預(yù)測裝置142在分支指令開始從指令快取104擷取,并且是透過微處理器100管線與分支指令一起以管線下傳存取時,更新請求176亦包含有效位238、偏移266、T/NT預(yù)測276、匹配指示244以及LRU信息236輸出。如果被決定的分支指令并非一新的分支指令(例如如果分支目標(biāo)地址預(yù)測裝置142已經(jīng)快取被決定的分支指令的預(yù)測信息),則更新請求176亦包含兩BTACs 208以及在BTAC 208已提供被決定的分支指令的預(yù)測信息的兩個通道的一指示。
在一實施例中,BTACs 208的每一BTAC是包含個別的存儲器陣列用以快取分支預(yù)測信息。例如在一實施例中,分支目標(biāo)地址254與分支指令偏移266是被快取在一第一存儲器陣列內(nèi);標(biāo)簽242與有效位238是被快取在一第二存儲器陣列內(nèi);以及T/NT預(yù)測276是被儲存在一第三存儲器陣列內(nèi)。在一實施例中,個別T/NT儲存陣列的儲存組件是兩位飽和上數(shù)/下屬計數(shù)器用以指示一極可能發(fā)生、發(fā)生、不發(fā)生或極不可能發(fā)生的預(yù)測。在另一實施例中,T/NT預(yù)測276除了BTACs 208的外是由一完整個別分支預(yù)測器所產(chǎn)生,例如一分支歷史表格。
從圖2與其它圖標(biāo)可觀察到的,本發(fā)明的分支目標(biāo)地址預(yù)測裝置142使儲存空間的使用比傳統(tǒng)每一快取列多分支的分支預(yù)測器更有效率,其中傳統(tǒng)每一快取列多分支的分支預(yù)測器是藉由包含儲存器用以快取僅有的一單一分支目標(biāo)地址與其每一入口相關(guān)信息,而不是固定包含儲存器用以快取每一入口多分支目標(biāo)地址。然而,儲存空間的效率是消耗每一BTAC 208快取標(biāo)簽而獲得,在圖2的實施例中的快取標(biāo)簽是一單一傳統(tǒng)每一快取列多分支BTAC的兩倍。然而,標(biāo)簽基本上比分支目標(biāo)地址與相關(guān)預(yù)測信息具有較少位(在一實施例中,每一入口是快取20位的標(biāo)簽,而每一入口是快取42位的分支預(yù)測信息);因此,其優(yōu)點是,分支目標(biāo)預(yù)測裝置142的整體大小是較小的。并且,分支目標(biāo)預(yù)測裝置142有利于提供每一群組可變的組合性,其潛在改良其性能超越一傳統(tǒng)BTAC。
請參照圖3,其為圖2的分支目標(biāo)地址預(yù)測裝置142在被讀取以產(chǎn)生一被預(yù)測目標(biāo)地址164的操作流程圖。流程開始于步驟302。
在步驟302,指令擷取器102產(chǎn)生擷取地址162以從圖1的指令快取104擷取一快取列的指令。擷取地址162亦被提供用以存取圖1的分支目標(biāo)地址預(yù)測裝置142?;貞?yīng)擷取地址162,控制邏輯202控制地址多工器216以選取擷取地址162用以輸出做為圖2的地址274。索引274部分的擷取地址162是選取圖2的BTACs 208的群組262其中的一群組。如的前所述,群組262是包含每一第一BTAC 208A與第BTAC 208B的每一通道0與1的一入口264。接著執(zhí)行至步驟304。
在步驟304,BTACs 208是輸出標(biāo)簽242、有效位238、偏移266、T/NT預(yù)測276以及在步驟302所被選取的組群262的每一入口的圖2的目標(biāo)地址254。接著執(zhí)行至步驟306。
在步驟306,比較器214是比較擷取地址162標(biāo)簽272與被選取群組262的每一標(biāo)簽242以產(chǎn)生圖2的匹配指示244用于群組262內(nèi)的每一入口264。接著執(zhí)行至步驟308。
在步驟308,控制邏輯202產(chǎn)生命中指示258給被選取的群組262的每一入口,其是依據(jù)他們對應(yīng)匹配指示244與有效指示238??刂七壿?02亦控制通道選擇多工器206以選取擷取地址162命中的目標(biāo)地址254的通道。接著執(zhí)行至步驟312。
在步驟312,側(cè)選擇多工器204是依據(jù)指令指標(biāo)222、命中指示258、T/NT預(yù)測276以及偏移266值選取具有第一、有效、發(fā)生、可見的分支指令的BTAC 208??刂七壿?02從T/NT預(yù)測276是否會發(fā)生決定。在一實施例中,如果分支指令的T/NT預(yù)測是發(fā)生或極可能發(fā)生,則分支指令是發(fā)生。如果一分支指令的偏移266值是大于或等于目前指令指標(biāo)222的對應(yīng)最少象征位的值時,此分支指令是可見。如果一分支指令的對應(yīng)有效位238是為真時,此分支指令是有效的。如果一分支指令在快取列是最早的,此分支指令在其快取列是第一的,例如如果其具有較低偏移266值。因此,如果擷取地址162是命中于第一BTAC 208A與第二BTAC 208B之內(nèi)(例如如果分支目標(biāo)地址預(yù)測裝置142是包含一有效目標(biāo)地址用于目前被擷取的快取列內(nèi)的兩分支指令的每一分支指令),并且兩分支指令是被預(yù)測發(fā)生以及兩分支指令的偏移266是大于指令指標(biāo)222(例如雙分支是可見),則控制邏輯202使得側(cè)選擇多工器204選取具有最低偏移266值的分支指令的目標(biāo)地址256。如果擷取地址162是僅命中于第一BTAC 208A與第二BTAC 208B其中之一時(例如如果分支目標(biāo)地址預(yù)測裝置142是包含一有效目標(biāo)地址用于目前被擷取的快取列內(nèi)的僅有的一分支指令),或僅有一分支指令是被預(yù)測發(fā)生或僅有一分支指令的偏移266是小于指令指標(biāo)222,則控制邏輯202使得側(cè)選擇多工器204選取有效、發(fā)生、可見的分支指令。流程結(jié)束于步驟312。
請參照圖4,其為圖1的分支目標(biāo)地址預(yù)測裝置142在被更新以回應(yīng)一被決定分支指令操作的流程圖。流程開始于步驟402。
在步驟402,微處理器100的管線決定一分支指令與回應(yīng)產(chǎn)生圖1的一更新請求176,其包含被決定的分支指令的地址、分支指令的被決定的目標(biāo)地址以及當(dāng)分支目標(biāo)地址預(yù)測裝置142潛在產(chǎn)生分支指令一被預(yù)測目標(biāo)地址時,產(chǎn)生以管線向下輸送的信息。接著執(zhí)行至步驟404。
在步驟404,控制邏輯202檢查更新請求176內(nèi)以管線向下輸送的信息以測定被決定的分支指令是否為一新分支指令,例如是否沒有BTAC 208已快取被決定分支指令的有效預(yù)測信息。如果被決定的分支指令是一新分支指令,則流程是執(zhí)行至步驟408;否則,流程是執(zhí)行至步驟406。
在步驟406,控制邏輯202更新在第一BTAC 208A或第二BTAC 208B內(nèi)已正在快取被決定分支指令的有效信息的通道,如由更新請求176內(nèi)以管線向下傳輸?shù)男畔⑺甘?。例如如果以管線向下傳輸?shù)男畔⒅甘镜贐TAC 208B的通道1是正在快取被決定分支指令的預(yù)測信息,則控制邏輯202更新在更新請求176內(nèi)分支指令地址索引274所選取的群組262的第二BTAC 208B的通道1內(nèi)的入口,其中更新請求176在分支目標(biāo)預(yù)測裝置142的更新期間是被當(dāng)成更新地址232提供給多工器216。流程結(jié)束于步驟406。
在步驟408,控制邏輯202檢查更新請求176內(nèi)以管線向下輸送的信息以測定被決定的分支指令的擷取地址部分是否僅命中于第一BTAC 208A之內(nèi)。亦即,控制邏輯202測定是否分支目標(biāo)預(yù)測裝置142正預(yù)測第一BTAC 208A而非第二BTAC 208B是正在含有被決定分支指令的快取列內(nèi)快取一分支指令的有效預(yù)測信息,但其并非被決定的分支指令。如果不是,則流程是執(zhí)行至步驟414;否則,流程是執(zhí)行至步驟412。
在步驟412,控制邏輯202更換群組262的第二BTAC 208B內(nèi)的最近最少使用的通道,其中群組262是由更新請求176內(nèi)的分支指令地址的索引274所選取,其中更新請求176是被當(dāng)成更新地址232提供給多工器216。亦即,控制邏輯202檢查用于被選取群組262的LRU信息236以測定通道0或通道1是最近最少使用,并且以被決定分支指令的預(yù)測信息更換在第二BTAC 208B之內(nèi)的最近最少使用的通道。因此其優(yōu)點是,被選取群組262將被快取兩分支指令的分支預(yù)測信息于相同快取列,使得被選取群組262依據(jù)群組262內(nèi)的其它兩入口2264之內(nèi)容,不是一雙通道組合就是一三通道組合的群組262。流程結(jié)束于步驟412。
在步驟414,控制邏輯202檢查更新請求176內(nèi)以管線向下輸送的信息以測定被決定的分支指令的擷取地址部分是否僅命中于第二BTAC 208B之內(nèi)。亦即,控制邏輯202測定是否分支目標(biāo)預(yù)測裝置142正預(yù)測第二BTAC 208B而非第一BTAC 208A是正在含有被決定分支指令的快取列內(nèi)快取一分支指令的有效預(yù)測信息,但其并非被決定的分支指令。如果不是,則流程是執(zhí)行至步驟418;否則,流程是執(zhí)行至步驟416。
在步驟416,控制邏輯202更換群組262的第一BTAC 208A內(nèi)的最近最少使用的通道,其中群組262是由更新請求176內(nèi)的分支指令地址的索引274所選取,其中更新請求176是被當(dāng)成更新地址232提供給多工器216。亦即,控制邏輯202檢查用于被選取群組262的LRU信息236以測定通道0或通道1是最近最少使用,并且以被決定分支指令的預(yù)測信息更換在第一BTAC 208A之內(nèi)的最近最少使用的通道。因此其優(yōu)點是,被選取群組262將被快取兩分支指令的分支預(yù)測信息于相同快取列,使得被選取群組262依據(jù)群組262內(nèi)的其它兩入口264之內(nèi)容,不是一雙通道組合就是一三通道組合的群組262。流程結(jié)束于步驟416。
在步驟418,控制邏輯202檢查更新請求176內(nèi)以管線向下輸送的信息以測定被決定的分支指令的擷取地址部分是否命中于第一BTAC 208A與第二BTAC 208B兩者內(nèi)。亦即,控制邏輯202測定是否分支目標(biāo)預(yù)測裝置142正預(yù)測第二BTAC 208B與第一BTAC 208A是正在含有被決定分支指令的快取列內(nèi)快取一不同分支指令的有效預(yù)測信息,但其并非被決定的分支指令。如果不是,則流程是執(zhí)行至步驟424;否則,流程是執(zhí)行至步驟422。
在步驟422,控制邏輯202更換群組262的BTAC208內(nèi)的最近最少使用的命中通道,其中群組262是由更新請求176內(nèi)的分支指令地址的索引274所選取,其中更新請求176是被當(dāng)成更新地址232提供給多工器216。亦即,控制邏輯202檢查用于被選取群組262的LRU信息236以測定在被選取的群組262內(nèi)是第一BTAC 208A或是第BTAC 208B是最近最少使用,然后控制邏輯202檢查在更新請求176內(nèi)以管線向下輸送的信息以測定通道0或通道1命中于最近最少使用BTAC 208內(nèi),并且以被決定分支指令的預(yù)測信息更換在BTAC 208之內(nèi)的最近最少使用的通道。因此其優(yōu)點是,被選取群組262仍將被快取兩分支指令的分支預(yù)測信息于相同快取列內(nèi),使得被選取群組262依據(jù)群組262內(nèi)的其它兩入口264之內(nèi)容,不是一雙通道組合就是一三通道組合的群組262。流程結(jié)束于步驟422。
在步驟424,沒有BTAC 208命中,例如在更新請求176內(nèi)以管線向下輸送的信息指示被決定分支指令的擷取地址部分既沒有在第一BTAC 208A之內(nèi)命中,亦沒有在第二BTAC 208B之內(nèi)命中。亦即,既不是第二BTAC 208B也不是第一BTAC 208A正在含有被決定分支指令的快取列內(nèi)快取一分支指令的有效預(yù)測信息。因此,控制邏輯202依據(jù)在被選取群組262內(nèi)的有效入口數(shù)量與依據(jù)最近最少使用的BTAC 208,挑選一BTAC 208與通道更換。尤其,控制邏輯202是挑選群組262的最近最少使用的BTAC 208,除非一BTAC 208的雙通道是有效的以及并非其它BTAC 208的雙通道是有效的,在此例中,控制邏輯202更換其它BTAC 208,如下列程序碼所述。流程結(jié)束于步驟424。
下列程序碼是描述控制邏輯202所使用的更換方法,其是總結(jié)歸納于圖4的流程圖。
////Btac update logic////Define some signals needed belowwire[1:0]xbpBtacRdHitA_W,xbpBtacRdHitB_W;
rregs #(2)rhaw(xbpBtacRdHitA_W,xbpBtacRdHitA_S,clk);
rreg s#(2)rhbw(xbpBtacRdHitB_W,xbpBtacRdHitB_S,clk);
wire xcfBtacAHit_W = |xbpBtacRdHitA_W;
wire xcfBtacBHit_W = |xbpBtacRdHitB_W;
wire xcfBtacHitAB_W = xcfBtacAHit_W & xcfBtacBHit_W;
wire[1:0]xbpBtacRdValA_W,xbpBtacRdValB_W;
rregs #(2)rvaw(xbpBtacRdValA_W,xbpBtacRdValA_S,clk);
rregs #(2)rvbw(xbpBtacRdValB_W,xbpBtacRdValBS,clk);
wire xcfBtacAFull_W = & xbpBtacRdValA_W;
wire xcfBtacBFull_W = & xbpBtacRdValB_W;
//Definition of what the 3 bits in the lru mean:
//lru data//bit 2-side A mru//bit 1-A way 1 mru
//bit 0-B way 1 mru// For this 16 B//New Branch HitAHitB Method// 0 - - Use staged way/side// 1 0 0 Use 3 b mru// 1 0 1 Use 1 b A mru// 1 1 0 Use 1 b B mru// 1 1 1 Use 1 b side mru tochoose side,then replace way that hit//For case of new branch,nohits for this 1 6 B.To chooseside A vs.B:
//// Valids//Side A Side B Method// 2 2A/B mru// 2 1Choose B// 1 2Choose A// 2 0Choose B// 0 2Choose A// 1 1A/B mru// 1 0A/B mru// 0 1A/B mru// 0 0A/B mru////The mru bit is used for the last four cases for properbehavior for case of 2 branches//inthe same 16 B seen close together.The btac validbits staged down for the second//branch may not include the write of the first branch.Using the A/B mru bit allows//for each branch to be correctly placed on opposite btacsides.
////Note that if,for instance,side A is marked as havingboth ways valid,while side B//has no ways valid,then if the mru bit indicates B wasmru,one of 3 cases has
//occurred:
//1)2 branches in the same 1 6 B were seen close together.The first branch was written//to side B,so the second branch should be written toside A,even though it will//displace another branch.
//2)A branch on side B was mru,but it has since beeninvalidated due to aliasing or//self-modifying code.
//3)2branches with the same index,not in the same 16 B,were seen close together.The//first branch was written to side B,but the secondbranch should be also written to//side B,to avoid displacing another branch.
//Case 1 should be more common than case 2,but not morecommon that case 3.So//should choose the side that is not already full.
//lru read addr from E,lru write addr 3 cycles later//E-read address to lru//S-lru read,capture in xcfetch//W-use lru data to determine replacement way,capturenew lru write data//Z-write lruwire[2:0] xcfBtacLruRdData_W;
rregs_io#(3)lrurd(xcfBtacLruRdData_W,btacLruRdData_P,clk);
wire xcfBtacSideAMRU_W = xcfBtacLruRdData_W[2];
wire xcfBtacAWay 1 MRU_W = xcfBtacLruRdData_W[1];
wire xcfBtacBWay 1 MRU_W = xcfBtacLruRdData_W
;
//if this 1 6 B has no hits in either A or B,use normallruwire xcfBtacAReplaceWay 0_W = (xcfBtacAWay 1 MRU_W &xbpBtacRdValA_W[1])|~xbpBtacRdValA_W
;
wire xcfBtacBReplaceWay 0_W = (xcfBtacBWay 1 MRU_W &xbpBtacRdVa1B_W[1])|~xbpBtacRdValB_W
;
//Choose side to write based on mru bit and validswire xcfBtacLruSelSideA_W = (~xcfBtacAFull_W &xcfBtacBFul1_W)|(~xcfBtacSideAMRU_W &~(xcfBtacAFull_W &~xcfBtacBFul1_W));
wire xcfBtacBaseReplace 0_W = xcfBtacLruSelSideA_W xcfBtacAReplaceWay 0_W:
xcfBtacBReplaceWay 0_W;
//if this 1 6 B already has a hit in either A or B,mustwrite to opposite sidewire xcfBtacForceSideA_W = ~xcfBtacAHit_W &xcfBtacBHit_W;
wire xcfBtacForceSideB_W = xcfBtacAHit_W &~xcfBtacBHit_W:
//if this 1 6 B already has a hit in both A and B,mustreplace onewire xcfBtacReplaceHitSideA_W = xcfBtacHitAB_W &~xcfBtacSideAMRU_W:
wire xcfBtacReplaceHitSideB_W = xcfBtacHitAB_W &xcfBtacSideAMRU_W;
wire xcfBtacUseBaseReplace_W = ~xcfBtacAHit_W &~xcfBtacBHit_W:
wire xcfBtacReplaceWay 0_W = (xcfBtacForceSideA_W &xcfBtacAReplaceWay 0_W)|(xcfBtacForceSideB_W &xcfBtacBReplaceWay 0_W)|(xcfBtacReplaceHitSideA_W &xbpBtacRdHitA_W
)|(xcfBtacReplaceHitSideB_W &xbpBtacRdHitB_W
)|(xcfBtacUseBaseReplace_W &xcfBtacBaseReplace 0_W);
wire[1:0]xcfBtacReplaceWay_W = {~xcfBtacReplaceWay 0_W,xcfBtacReplaceWay 0_W};
wire xcfBtacReplaceA_W = xcfBtacForceSideA_W|xcfBtacReplaceHitSideA_W|(~xcfBtacForceSideB_W & ~xcfBtacHitAB_W &xcfBtacLruSelSideA_W);
////Determine if this branch is already in the btac.//if so,rewrite using the staged way and side,not thelru-chosen victim:
//Choose replacement side only for real new branches.Must qualify WrNew with//~(Valid and MatchAB),which indicates we are actuallyre-writing an existing//branch due to cache miss,bad target,etc.xbpBtacSelA_W handles these cases.wire xcfBtacValidMatch_W = xbpBtacValid_W &xbpBtacMatch_W;
wire xcfBtacWrNewReal_W = xcfBtacWrNew_W &~xcfBtacValidMatch_W;
//Choose replacement side for new branchwire xcfBtacWrQA_W = xcfBtacWrNewReal_W xcfBtacReplaceA_W:
xbpBtacSelA_W;
//If btac was valid for the 1 6 B containing the ins,replace same way,else use//lru-chosen victim.wire[1:0]xcfBtacStagedWay_W = xbpBtacSelA_W xbpBtacRdHitA_W:
xbpBtacRdHitB_W;
wire[1:0]xcfBtacWrQWay_W = xcfBtacWrNewReal_W xcfBtacReplaceWay_W:
xcfBtacStagedWay_W;
//lru write//lru update on both allocate and use//write the lru if the branch was seen and predicted taken//or when initializingwire xcfBtacLruWrEn_W = xcfBranchT_W|xcfInitBtac_P;
rregs lrup(xcfBtacLruWrEn_P,xcfBtacLruWrEn_W,clk);
//lru data//bit 2-side B mru//bit 1-A way 1 mru//bit 0-B way 1 mruwire[2:0]xcfBtacLruWrData_W;
assign xcfBtacLruWrData_W[2] = ~xcfBtacWrQA_W;
assign xcfBtacLruWrData_W[1] = (xcfBtacWrQA_W &~xcfBtacReplaceWay 0_W)|(~xcfBtacWrQA_W &btacLruRdData_P[1]);
assign xcfBtacLruWrData_W
=(~xcfBtacWrQA_W &~xcfBtacReplaceWay 0_W)|(xcfBtacWrQA_W &btacLruRdData_P
);//force 0 0 0 when initialzingrregs #(3)lrudp(xcfBtacLruWrData_P,xcfBtacLruWrData_W&{3{~xcfInitBtac_P}},clk);
雖然本發(fā)明及其目的、特征與優(yōu)點已被詳細描述,然而其它實施例是被本發(fā)明所包含。例如雖然一具有兩側(cè)且每一側(cè)是雙通道集合的組合的分支預(yù)測裝置的實施例已被描述,然而其它實施例是被預(yù)期的。例如一裝置具有四側(cè)且每一側(cè)是一直接映像快取的一實施例是被預(yù)期的。此實施例的一優(yōu)點為,其致能某些群組以預(yù)測在相同快取列內(nèi)的三個分支指令的目標(biāo)地址,以及在一不同快取列內(nèi)的一個分支指令的目標(biāo)地址,以有效獲得群組的雙通道組合,并且致能某些群組以預(yù)測在相同快取列內(nèi)的四個分支指令的目標(biāo)地址,以有效獲得群組的單通道組合。此實施例對于相對大規(guī)模的快取列擷取是可能有助益的。然而,此實施例的一缺點為,其比起控制邏輯在快取列內(nèi)的兩個分支指令中選取第一、有效、發(fā)生、可見的分支指令,要求更多時間給控制邏輯在快取列內(nèi)的三個或四個分支指令中選取第一、有效、發(fā)生、可見的分支指令。此額外的時間是可能要求處理器時脈頻率減少或要求額外管線階段。有關(guān)此實施例的額外時間成本必須權(quán)衡基于三個或四個分支指令將被包含于相同快取列內(nèi)的可能性的優(yōu)勢,其可能隨著快取列大小增加而增加。
并且,各個實施例已描述在一群組內(nèi)通到的數(shù)量是為4,然而其它實施例是包含每一群組含有其它數(shù)量的入口,例如所包含的一實施例,其中裝置具有兩側(cè)且每一側(cè)是一直接映像快取以使得每一群組是包含兩入口。又例如所包含的另一實施例,其中裝置具有兩側(cè)且每一側(cè)是四通道集合的組合快取以使得每一群組是包含8入口。又例如所包含的另一實施例,其中裝置具有四側(cè)且每一側(cè)是一雙通道集合的組合快取以使得每一群組是包含8入口。更普遍地,所包含的實施例,其中裝置具有N側(cè)且每一側(cè)是一M通道集合的組合快取以使得每一群組是包含M×N入口。因此某些群組是可能有效獲得M×N通道組合,并且預(yù)測在M×N個不同快取列內(nèi)僅有的一單一分支指令的一目標(biāo)地址;其它群組是可能有效獲得(M×N-1)通道組合,并且預(yù)測在(M×N-1)個不同快取列內(nèi)僅有的一單一分支指令的一目標(biāo)地址,以及預(yù)測在一第二不同快取列內(nèi)兩個分支指令的一目標(biāo)地址;其它群組是可能有效獲得(M×N-2)通道組合,并且預(yù)測在(M×N-2)個不同快取列內(nèi)僅有的一單一分支指令的一目標(biāo)地址,以及預(yù)測在一第二不同快取列內(nèi)兩個分支指令的一目標(biāo)地址,并且預(yù)測在一第三不同快取列內(nèi)兩個分支指令的一目標(biāo)地址;以及依上述方式進行直到最后其它群組可能有效獲得N通道組合,并且預(yù)測N個不同快取列的每一快取列內(nèi)M個分支指令的一目標(biāo)地址。
并且,每一快取列分支指令的數(shù)量的變化組合在一特定群組組合級別是可能被達成。例如假設(shè)一裝置具有四側(cè)且每一側(cè)是一雙通道集合的組合。一群組是可能有效獲得四通道組合,藉由預(yù)測(1)四分支在一第一快取列內(nèi)、兩分支在一第二快取列內(nèi)以及一分支在第三與第四快取列內(nèi);(2)三分支在一第一快取列內(nèi)、兩分支在一第二與第三快取列內(nèi)以及一分支在一第四快取列內(nèi);(3)三分支在一第一快取列內(nèi)、三分支在一第二快取列內(nèi)以及一分支在第三與第四快取列內(nèi);或(4)兩分支在四個不同快取列的每一快取列內(nèi)。
盡管本發(fā)明的許多實施例已被描述如上,然而所應(yīng)了解的是這些實施例是由范例的方式呈現(xiàn)而并非限制。對于熟習(xí)此項技藝者而言,在沒有脫離本發(fā)明的精神與范疇所為的形式或細節(jié)的修改,是為顯而易知。
例如除了使用硬件(例如在其內(nèi)或耦接至一中央處理單元(CPU)、微處理器、微控制器、數(shù)字信號處理器、處理器核、系統(tǒng)芯片(SOC)或任何其它可程序化裝置)的外,亦可嵌入軟件(例如計算機可讀取碼、程序碼、指令及/或任何形式資料配置(例如來源、目的或機械語言))配置實行,例如在一計算機可使用(例如可讀取)媒體儲存軟件,此類軟件是可致能在此所描述的裝置與方法的,例如功能、制造、模塊、仿真、性質(zhì)及/或測試。例如上述是可透過使用一般程序語言(例如C、C++)、GDSII database、硬件描述語言(HDL)包含Verilog HDL、VHDL等或其它可用的程序、數(shù)據(jù)庫及/或電路(例如圖標(biāo))抓取工具而完成。此類軟件是可被配置在任何已知計算機可使用的媒體內(nèi),包含半導(dǎo)體、磁盤、光盤(例如CR-ROM、DVD-ROM),并且當(dāng)成嵌入一計算機可使用(例如可讀取)傳輸媒介(例如載波或任何其它媒介包含數(shù)字、光或模擬應(yīng)用的媒介)內(nèi)的一計算機資料信號。如此,軟件是可透過通信網(wǎng)路(是包含網(wǎng)際網(wǎng)絡(luò)(Internet)與內(nèi)部網(wǎng)絡(luò)(intranet))而被傳輸。
所應(yīng)了解的是,在此所述的裝置與方法可能被包含在一半導(dǎo)體智能財產(chǎn)權(quán)核心,例如一微處理器核(例如嵌入HDL)以及在集成電路的產(chǎn)品被轉(zhuǎn)換成硬件。此外,在此所述的裝置與方法可能被嵌入做為一硬件與軟件的組合。因此,本發(fā)明不應(yīng)受限于上述的示范實施例,其應(yīng)以下列的權(quán)利范圍與其等效為準(zhǔn)。
權(quán)利要求
1.一微處理器內(nèi)的一裝置,該裝置預(yù)測每一快取列內(nèi)一可變數(shù)量的分支指令的一目標(biāo)地址,該每一快取列是擷取自一指令快取的一擷取地址,其特征在于,該裝置包含一第一與一第二雙通道集合組合快取存儲器,每一雙通道集合組合快取存儲器是具有一索引輸入耦合以接收一部分的指令快取擷取地址,其中該索引是選取復(fù)數(shù)個四入口群組其中之一群組,每一該群組是包含每一該第一與該第二快取存儲器的每一通道內(nèi)的一入口,其中每一該些入口是用以快取一先前被執(zhí)行分支指令的一目標(biāo)地址;以及一置換邏輯,是耦接至該第一與該第二快取,用以選取更換該些入口其中之一入口,由此回應(yīng)一分支指令的決定以使得(a)該微處理器在操作該復(fù)數(shù)個群組的一第一子集期間,該四入口快取在四個不同快取列的每一快取列內(nèi)一分支指令的目標(biāo)地址,以獲得四通道群組的組合;以及(b)該微處理器在操作該復(fù)數(shù)個群組的一第二子集期間,該四入口快取在兩個不同快取列的每一快取列內(nèi)一分支指令的目標(biāo)地址以及在一第三不同快取列內(nèi)兩分支指令的目標(biāo)地址,以獲得三通道群組的組合。
2.如權(quán)利要求1所述的微處理器內(nèi)的一裝置,其特征在于,其中對該復(fù)數(shù)個群組的該第二子集,如果指令快取擷取地址是命中于該第一與該第二快取存儲器兩者之內(nèi)時,該第一與該第二快取是提供該第三快取列內(nèi)該兩分支指令的該目標(biāo)地址。
3.如權(quán)利要求2所述的微處理器內(nèi)的一裝置,其特征在于,還包含一側(cè)選擇多工器,是耦接至該第一與該第二快取存儲器,其中該側(cè)選擇多工器是依據(jù)與該微處理器的一指令指標(biāo)有關(guān)的該第三快取列內(nèi)該兩分支指令的每一分支指令的一位置,選取該第三快取列內(nèi)該兩分支指令的該些目標(biāo)地址其中之一目標(biāo)地址。
4.如權(quán)利要求3所述的微處理器內(nèi)的一裝置,其特征在于,其中該側(cè)選擇多工器是用以選取與該指令指標(biāo)有關(guān)的該兩分支指令其中之一第一有效、發(fā)生、可見的分支指令的該些目標(biāo)地址其中之一目標(biāo)地址。
5.如權(quán)利要求4所述的微處理器內(nèi)的一裝置,其特征在于,當(dāng)該兩分支指令的每一分支指令是位于該第三快取列內(nèi)的該指令指標(biāo)或在該指令指標(biāo)之后時,該兩分支指令的每一分支指令是可見。
6.如權(quán)利要求4所述的微處理器內(nèi)的一裝置,其特征在于,當(dāng)該兩分支指令的每一分支指令其所對應(yīng)的該入口指示其所對應(yīng)的該目標(biāo)地址是有效時,該兩分支指令的每一分支指令是有效。
7.如權(quán)利要求4所述的微處理器內(nèi)的一裝置,其特征在于,當(dāng)該微處理器產(chǎn)生一該分支指令是否將發(fā)生的預(yù)測時,該兩分支指令的每一分支指令是發(fā)生,其中該預(yù)測指示該分支指令將發(fā)生而非不發(fā)生。
8.如權(quán)利要求7所述的微處理器內(nèi)的一裝置,其特征在于,其中每一該些入口是更用以快取該預(yù)測。
9.如權(quán)利要求8所述的微處理器內(nèi)的一裝置,其特征在于,其中該第一與該第二快取存儲器的每一快取存儲器是包含個別儲存陣列用以快取該些目標(biāo)地址與該些預(yù)測。
10.如權(quán)利要求4所述的微處理器內(nèi)的一裝置,其特征在于,當(dāng)該兩分支指令中的一分支指令在該第三快取列內(nèi)的位置是在該兩分支指令中的另一分支指令之前時,該兩分支指令的該分支指令是第一。
11.如權(quán)利要求3所述的微處理器內(nèi)的一裝置,其特征在于,其中每一該些入口是更用以快取該快取列內(nèi)該分支指令的該位置。
12.如權(quán)利要求3所述的微處理器內(nèi)的一裝置,其特征在于,還包含一第一與一第二通道選擇多工器,是分別耦接于該側(cè)選擇多工器與該第一與該第二快取存儲器之間,其中該第一與該第二通道選擇多工器是依據(jù)該指令快取地址命中的該些通道,分別選取該第一與該第二快取存儲器的該些通道其中之一通道的該目標(biāo)地址,并且提供該被選取兩目標(biāo)地址給該側(cè)選擇多工器。
13.如權(quán)利要求1所述的微處理器內(nèi)的一裝置,其特征在于,其中每一該些入口是更用以快取一快取列的一標(biāo)簽,該快取列是包含該分支指令。
14.如權(quán)利要求13所述的微處理器內(nèi)的一裝置,其特征在于,其中該置換邏輯是更用以選取更換該些入口其中之一入口,以回應(yīng)一分支指令的決定,由此對該復(fù)數(shù)個群組的該第二子集內(nèi)每一群組,每一該第一與該第二快取存儲器是快取該第三不同快取列的該標(biāo)簽,其中該第三不同快取列是包含該兩分支指令。
15.如權(quán)利要求13所述的微處理器內(nèi)的一裝置,其特征在于,當(dāng)該快取列的該入口的標(biāo)簽是有效且匹配該擷取地址的一標(biāo)簽部分時,該指令快取擷取地址是命中于該第一與該第二快取存儲器的該些通道其中之一通道內(nèi),其中該快取列是包含該分支指令。
16.如權(quán)利要求13所述的微處理器內(nèi)的一裝置,其特征在于,其中每一該第一與該第二快取存儲器是包含個別儲存陣列用以快取該些目標(biāo)地址與該些標(biāo)簽。
17.如權(quán)利要求1項所述的微處理器內(nèi)的一裝置,其特征在于,其中在該復(fù)數(shù)個群組的該第二子集內(nèi),該兩入口快取該第三不同快取列內(nèi)該兩分支指令的該些目標(biāo)地址是在不同的該第一與該第二快取存儲器內(nèi)。
18.如權(quán)利要求1所述的微處理器內(nèi)的一裝置,其特征在于,還包含一置換存儲器,是耦接至該置換邏輯,用以儲存與每一該復(fù)數(shù)個群組有關(guān)的更換信息,該更換信息是由該置換邏輯用以選取更換該些入口其中之一入口以回應(yīng)該分支指令的決定。
19.如權(quán)利要求18所述的微處理器內(nèi)的一裝置,其特征在于,其中如果該被決定分支指令沒有其目標(biāo)地址已被快取在該第一與該第二快取存儲器之內(nèi),且如果該被決定分支指令的擷取地址僅命中于該第一與該第二快取存儲器其中之一時,該置換邏輯是選取更換該第一與該第二快取存儲器其中的另一該些通道其中之一通道。
20.如權(quán)利要求19所述的微處理器內(nèi)的一裝置,其特征在于,其中該更換信息是包含對每一該群組的該兩集合的每一集合的該兩通道是最近最少使用的一指示,其中該置換邏輯是用以選取更換該最近最少使用的通道。
21.如權(quán)利要求18所述的微處理器內(nèi)的一裝置,其特征在于,其中該更換信息是包含該第一與該第二快取存儲器是最近最少使用的一指示,其中如果該被決定分支指令沒有其目標(biāo)地址已被快取在該第一與該第二快取存儲器之內(nèi),且如果該被決定分支指令的擷取地址是命中于該第一與該第二快取存儲器兩者之內(nèi)時,該置換邏輯是選取更換該第一與該第二快取存儲器其中之一該最近最少使用的快取存儲器。
22.如權(quán)利要求18所述的微處理器內(nèi)的一裝置,其特征在于,其中該更換信息是包含該第一與該第二快取存儲器是最近最少使用的一指示,其中如果該被決定分支指令沒有其目標(biāo)地址已被快取在該第一與該第二快取存儲器之內(nèi),且如果該被決定分支指令的擷取地址是沒有命中于該第一與該第二快取存儲器之內(nèi)時,該置換邏輯是選取更換該第一與該第二快取存儲器其中之一該最近最少使用的快取存儲器。
23.如權(quán)利要求22所述的微處理器內(nèi)的一裝置,其特征在于,其中如果該被決定分支指令沒有其目標(biāo)地址已被快取在該第一與該第二快取存儲器之內(nèi),且如果該被決定分支指令的擷取地址是沒有命中于該第一與該第二快取存儲器之內(nèi)時,該置換邏輯是選取更換該第一與該第二快取存儲器其中之一該最近最少使用的快取存儲器;然而,如果該第一與該第二快取存儲器其中之一的兩該通道是有效且比該第一與該第二快取存儲器其中的另一兩該通道是有效少時,則該置換邏輯是選取更換該第一與該第二快取存儲器其中的該另一快取存儲器。
24.如權(quán)利要求1所述的微處理器內(nèi)的一裝置,其特征在于,其中該置換邏輯是更用以選取更換該些入口其中之一入口,以回應(yīng)一分支指令的決定,使得(c)該微處理器在操作該復(fù)數(shù)個群組的一第三子集期間,該四入口快取在兩個不同快取列的每一快取列內(nèi)兩分支指令的目標(biāo)地址,以獲得雙通道群組的組合。
25.如權(quán)利要求24所述的微處理器內(nèi)的一裝置,其特征在于,其中在該復(fù)數(shù)個群組的該第三子集內(nèi),該兩入口快取該兩不同快取列的每一快取列內(nèi)該兩分支指令的該些目標(biāo)地址是在不同的該第一與該第二快取存儲器內(nèi)。
26.如權(quán)利要求24所述的微處理器內(nèi)的一裝置,其特征在于,其中對該復(fù)數(shù)個群組的該第三子集,如果指令快取擷取地址是命中于該第一與該第二快取存儲器兩者之內(nèi)時,該第一與該第二快取是用以提供該兩不同快取列其中之一快取列內(nèi)該兩分支指令的該些目標(biāo)地址。
27.如權(quán)利要求24所述的微處理器內(nèi)的一裝置,其特征在于,其中每一該些入口是更用以快取一快取列的一標(biāo)簽,該快取列是包含該分支指令,其中該置換邏輯是更用以選取更換該些入口其中之一入口以回應(yīng)一分支指令的決定,以使得對該復(fù)數(shù)個群組的該第三子集內(nèi)的每一群組,每一該第一與該第二快取存儲器是快取該兩不同快取列的每一快取列的該標(biāo)簽,其中該兩不同快取列是包含該兩分支指令。
28.如權(quán)利要求1所述的微處理器內(nèi)的一裝置,其特征在于,其中該置換邏輯更依據(jù)由該第一與該第二雙通道集合組合快取存儲器在其存取期間與含有來自指令快取的該被決定分支指令的快取列擷取短暫同時發(fā)生所提供的信息,該置換邏輯是用以選取更換該些入口其中之一入口。
29.如權(quán)利要求1所述的微處理器內(nèi)的一裝置,其特征在于,其中一計算機程序產(chǎn)品使該裝置動作,該計算機程序產(chǎn)品是包含一計算機可使用的媒體具有計算機可讀取的程序碼,其中該計算機程序產(chǎn)品是用以與一計算機裝置一起使用。
30.如權(quán)利要求1所述的微處理器內(nèi)的一裝置,其特征在于,其中一計算機資料信號被嵌入在一傳輸媒介之內(nèi)是包含計算機可讀取的程序碼提供該裝置。
31.一方法,該方法預(yù)測一微處理器內(nèi)的一快取列內(nèi)一可變數(shù)量的分支指令的一目標(biāo)地址,該快取列是擷取自一指令快取的一擷取地址,其特征在于,該方法包含提供一索引給一第一與一第二雙通道集合組合快取存儲器以選取復(fù)數(shù)個四入口群組其中之一群組,每一群組是包含每一該第一與該第二快取存儲器的每一通道內(nèi)的一入口,每一該些入口快取一先前被執(zhí)行分支指令的一目標(biāo)地址,該索引是該指令快取擷取地址的一部分;以及選取更換該些入口其中之一,以回應(yīng)一分支指令的決定,使得(a)該微處理器在操作該復(fù)數(shù)個群組的一第一子集期間,該四入口快取在四個不同快取列的每一快取列內(nèi)一分支指令的目標(biāo)地址,以獲得四通道群組的組合;以及(b)該微處理器在操作該復(fù)數(shù)個群組的一第二子集期間,該四入口快取在兩個不同快取列的每一快取列內(nèi)一分支指令的目標(biāo)地址以及在一第三不同快取列內(nèi)兩分支指令的目標(biāo)地址,以獲得三通道群組的組合。
32.如權(quán)利要求31所述的方法,其特征在于,還包含對該復(fù)數(shù)個群組的該第二子集,測定指令快取擷取地址是否命中于該第一與該第二快取存儲器兩者之內(nèi);以及由每一該第一與該第二快取存儲器提供在該第三快取列內(nèi)該兩分支指令的該目標(biāo)地址。
33.如權(quán)利要求32所述的方法,其特征在于,還包含依據(jù)與該微處理器的一指令指標(biāo)有關(guān)的該第三快取列內(nèi)每一該兩分支指令的一位置,選取該第三快取列內(nèi)該兩分支指令的該些目標(biāo)地址其中之一。
34.如權(quán)利要求33所述的方法,其特征在于,其中該選取該些目標(biāo)地址其中之一是包含選取與該指令指標(biāo)有關(guān)的該兩分支指令其中之一第一有效、發(fā)生、可見的分支指令的該些目標(biāo)地址其中之一。
35.如權(quán)利要求33所述的方法,其特征在于,還包含快取該快取列內(nèi)該分支指令的該位置于該選取之前。
36.如權(quán)利要求33所述的方法,其特征在于,還包含依據(jù)該指令快取擷取地址命中的該些通道,分別選取該第一與該第二快取存儲器的該通道其中之一通道的該目標(biāo)地址;以及提供該被選取兩目標(biāo)地址給該選取該些目標(biāo)地址其中之一。
37.如權(quán)利要求31所述的方法,其特征在于,還包含快取一快取列的一標(biāo)簽,該快取列是包含該分支指令。
38.如權(quán)利要求31所述的方法,其特征在于,還包含儲存與每一該復(fù)數(shù)個群組有關(guān)的更換信息以用于該選取更換該些入口其中之一入口,以回應(yīng)該分支指令的決定。
39.如權(quán)利要求38所述的方法,其特征在于,其中如果該被決定分支指令沒有其目標(biāo)地址已被快取在該第一與該第二快取存儲器之內(nèi),且如果該被決定分支指令的該擷取地址是僅命中于該第一與該第二快取存儲器其中之一時,該選取更換是包含選取更換其它的該第一與該第二快取存儲器的該些通道其中之一。
40.如權(quán)利要求39所述的方法,其特征在于,其中該更換信息是包含對每一該群組的該兩集合的每一集合的該兩通道是最近最少使用的一指示,其中該選取更換是包含選取更換該最近最少使用的通道。
41.如權(quán)利要求38所述的方法,其特征在于,其中該更換信息是包含該第一與該第二快取存儲器是最近最少使用的一指示,其中如果該被決定分支指令沒有其目標(biāo)地址已被快取在該第一與該第二快取存儲器之內(nèi),且如果該被決定分支指令的擷取地址是命中于該第一與該第二快取存儲器兩者之內(nèi)時,該選取更換是包含選取更換該第一與該第二快取存儲器其中之一該最近最少使用的快取存儲器。
42.如權(quán)利要求38所述的方法,其特征在于,其中該更換信息是包含該第一與該第二快取存儲器是最近最少使用的一指示,其中如果該被決定分支指令沒有其目標(biāo)地址已被快取在該第一與該第二快取存儲器之內(nèi),且如果該被決定分支指令的擷取地址是沒有命中于該第一與該第二快取存儲器之內(nèi)時,該選取更換是包含選取更換該第一與該第二快取存儲器其中之一該最近最少使用的快取存儲器。
43.如權(quán)利要求42所述的方法,其特征在于,其中如果該被決定分支指令沒有其目標(biāo)地址已被快取在該第一與該第二快取存儲器之內(nèi),且如果該被決定分支指令的擷取地址是沒有命中于該第一與該第二快取存儲器之內(nèi)時,該選取更換是包含選取更換該第一與該第二快取存儲器其中之一該最近最少使用的快取存儲器;然而,如果該第一與該第二快取存儲器其中之一的兩該通道是有效且比該第一與該第二快取存儲器其中的另一兩該通道是有效少時,則該選取更換是包含選取更換該第一與該第二快取存儲器其中的該另一。
44.如權(quán)利要求31所述的方法,其特征在于,其中該選取更換是包含選取更換該些入口其中之一入口,以回應(yīng)一分支指令的決定,使得(c)該微處理器在操作該復(fù)數(shù)個群組的一第三子集期間,該四入口快取在兩個不同快取列的每一快取列內(nèi)兩分支指令的目標(biāo)地址,以獲得雙通道群組的組合。
45.如權(quán)利要求44所述的方法,其特征在于,還包含對該復(fù)數(shù)個群組的該第三子集,測定該指令快取擷取地址是否命中于該第一與該第二快取存儲器兩者之內(nèi);以及由每一該第一與該第二快取提供該兩不同快取列其中之一快取列內(nèi)該兩分支指令的該些目標(biāo)地址。
46.一微處理器內(nèi)的一裝置,該裝置預(yù)測一快取列內(nèi)一可變數(shù)量的分支指令的一目標(biāo)地址,該快取列是擷取自一指令快取的一擷取地址,其特征在于,該裝置包含M個N通道集合組合快取存儲器,每一該N通道集合組合快取存儲器是具有一索引輸入耦合以接收一部分的該指令快取擷取地址,其中該索引是選取復(fù)數(shù)個MxN入口群組其中之一群組,每一該群組是包含每一該M個快取存儲器的每一通道內(nèi)的一入口,其中每一該些入口是用以快取一先前被執(zhí)行的分支指令的一目標(biāo)地址;以及一置換邏輯,是耦接至該M個快取,用以選取更換該些入口其中之一入口,由此回應(yīng)一分支指令的決定,以使得(a)該微處理器在操作該復(fù)數(shù)個群組的一第一子集期間,該MxN入口快取在MxN個不同快取列的每一快取列內(nèi)一分支指令的目標(biāo)地址,以獲得MxN通道群組的組合;以及(b)該微處理器在操作該復(fù)數(shù)個群組的一第二子集期間,該MxN入口快取在(MxN-1)個不同快取列的每一快取列內(nèi)一分支指令的目標(biāo)地址以及在一第MxN不同快取列內(nèi)兩分支指令的目標(biāo)地址,以獲得(MxN-1)通道群組的組合。
47.如權(quán)利要求46所述的微處理器內(nèi)的一裝置,其特征在于,其中對該復(fù)數(shù)個群組的該第二子集,如果指令快取擷取地址是命中于該M個快取存儲器其中的兩者之內(nèi)時,該M個快取是用以提供在該第MxN快取列內(nèi)該兩分支指令的該些目標(biāo)地址。
48.如權(quán)利要求47所述的微處理器內(nèi)的一裝置,其特征在于,還包含一側(cè)選擇多工器,是耦接至該M個快取存儲器,其中該側(cè)選擇多工器是依據(jù)與該微處理器的一指令指標(biāo)有關(guān)的該第MxN快取列內(nèi)的每一該兩分支指令的一位置,選取該第MxN快取列內(nèi)該兩分支指令的該些目標(biāo)地址其中之一。
49.如權(quán)利要求48所述的微處理器內(nèi)的一裝置,其特征在于,其中該側(cè)選擇多工器是用以選取與該指令指標(biāo)有關(guān)的該兩分支指令其中之一第一有效、發(fā)生、可見的分支指令的該些目標(biāo)地址其中之一。
50.如權(quán)利要求48所述的微處理器內(nèi)的一裝置,其特征在于,還包含N通道選擇多工器,是分別耦接于該側(cè)選擇多工器與該M個快取存儲器之間,其中該N通道選擇多工器是依據(jù)該指令快取擷取地址命中的該些通道,分別選取該N個快取存儲器的該些通道其中之一通道的該目標(biāo)地址,并且提供該被選取N個目標(biāo)地址給該側(cè)選擇多工器。
51.如權(quán)利要求46所述的微處理器內(nèi)的一裝置,其特征在于,還包含一置換存儲器,是耦接至該置換邏輯,該置換存儲器是用以儲存與每一該復(fù)數(shù)個群組有關(guān)的更換信息,該更換信息是由該置換邏輯用以選取更換該些入口其中之一入口,以回應(yīng)該分支指令的決定。
52.如權(quán)利要求51所述的微處理器內(nèi)的一裝置,其特征在于,其中如果該被決定分支指令沒有其目標(biāo)地址已被快取在該M個快取存儲器之內(nèi),且如果該被決定分支指令的擷取地址未命中于至少一該M個快取存儲器之內(nèi)時,該置換邏輯是選取更換該至少一該M個快取存儲器的該些通道其中之一。
53.如權(quán)利要求52所述的微處理器內(nèi)的一裝置,其特征在于,其中該更換信息是包含對每一該群組的該M個集合的每一集合的該N通道是最近最少使用的一指示,其中該置換邏輯是用以選取更換該最近最少使用的通道。
54.如權(quán)利要求51所述的微處理器內(nèi)的一裝置,其特征在于,其中該更換信息是包含該M個快取存儲器是最近最少使用的一指示,其中如果該被決定分支指令沒有其目標(biāo)地址已被快取在該M個快取存儲器之內(nèi),且如果該被決定分支指令的擷取地址是命中于全部該M個快取存儲器之內(nèi)時,該置換邏輯是選取更換該M個快取存儲器其中之一該最近最少使用的快取存儲器。
55.如權(quán)利要求51所述的微處理器內(nèi)的一裝置,其特征在于,其中該更換信息是包含該M個快取存儲器是最近最少使用的一指示,其中如果該被決定分支指令沒有其目標(biāo)地址已被快取在該M個快取存儲器之內(nèi),且如果該被決定分支指令的擷取地址是沒有命中于該M個快取存儲器之內(nèi)時,該置換邏輯是選取更換該M個快取存儲器其中之一該最近最少使用的快取存儲器。
56.如權(quán)利要求55所述的微處理器內(nèi)的一裝置,其特征在于,其中如果該被決定分支指令沒有其目標(biāo)地址已被快取在該M個快取存儲器之內(nèi),且如果該被決定分支指令的擷取地址是沒有命中于該M個快取存儲器之內(nèi)時,該置換邏輯是選取更換該M個快取存儲器其中之一該最近最少使用的快取存儲器;然而,如果一個或多個該M個快取存儲器的全部該些通道是有效且比其余該M個快取存儲器的全部該些通道是有效少時,則該置換邏輯是選取更換該其余該M個快取存儲器。
57.如權(quán)利要求46所述的微處理器內(nèi)的一裝置,其特征在于,其中該置換邏輯是更用以選取更換該些入口其中之一入口,以回應(yīng)一分支指令的決定,使得(c)該微處理器在操作該復(fù)數(shù)個群組的一第三子集期間,該MxN入口快取在(MxN-2)個不同快取列的每一快取列內(nèi)一分支指令的目標(biāo)地址以及在兩個不同快取列的每一快取列內(nèi)兩分支指令的目標(biāo)地址,以獲得(MxN-2)通道群組的組合。
58.如權(quán)利要求46所述的微處理器內(nèi)的一裝置,其特征在于,其中該置換邏輯是更用以選取更換該些入口其中之一入口,以回應(yīng)一分支指令的決定,使得(c)該微處理器在操作該復(fù)數(shù)個群組的一第三子集期間,該MxN入口快取在N個不同快取列的每一快取列內(nèi)M個分支指令的目標(biāo)地址,以獲得N通道群組的組合。
59.如權(quán)利要求46所述的微處理器內(nèi)的一裝置,其特征在于,其中一計算機程序產(chǎn)品使該裝置動作,該計算機程序產(chǎn)品是包含一計算機可使用的媒體具有計算機可讀取的程序碼,其中該計算機程序產(chǎn)品是用以與一計算機裝置一起使用。
60.一方法,該方法預(yù)測一微處理器內(nèi)的一快取列內(nèi)一可變數(shù)量的分支指令的一目標(biāo)地址,該快取列是擷取自一指令快取的一擷取地址,其特征在于,該方法包含提供一索引給M個N通道集合組合快取存儲器以選取復(fù)數(shù)個MxN入口群組其中之一群組,每一群組是包含每一該M個快取存儲器的每一通道內(nèi)的一入口,每一該些入口快取一先前被執(zhí)行分支指令的一目標(biāo)地址,該索引是該指令快取擷取地址的一部分;以及選取更換該些入口其中之一,以回應(yīng)一分支指令的決定,使得(a)該微處理器在操作該復(fù)數(shù)個群組的一第一子集期間,該MxN入口快取在MxN個不同快取列的每一快取列內(nèi)一分支指令的目標(biāo)地址,以獲得MxN通道群組的組合;以及(b)該微處理器在操作該復(fù)數(shù)個群組的一第二子集期間,該MxN入口快取在(MxN-1)個不同快取列的每一快取列內(nèi)一分支指令的目標(biāo)地址以及在一第(MxN-1)不同快取列內(nèi)兩分支指令的目標(biāo)地址,以獲得(MxN-1)通道群組的組合。
61.如權(quán)利要求60所述的方法,其特征在于,還包含對該復(fù)數(shù)個群組的該第二子集,測定指令快取擷取地址是否命中于該M個快取存儲器其中的兩個快取存儲器之內(nèi);以及由該M個快取存儲器其中的該兩個快取存儲器的每一快取存儲器提供在該第MxN快取列內(nèi)該兩分支指令的該些目標(biāo)地址。
62.如權(quán)利要求61所述的方法,其特征在于,還包含依據(jù)與該微處理器的一指令指標(biāo)有關(guān)的該第MxN快取列內(nèi)的每一該兩分支指令的一位置,選取在該第MxN快取列內(nèi)該兩分支指令的該些目標(biāo)地址其中之一。
63.如權(quán)利要求62所述的方法,其特征在于,其中該選取該些目標(biāo)地址其中之一是包含選取與該指令指標(biāo)有關(guān)的該兩分支指令其中之一第一有效、發(fā)生、可見的分支指令的該些目標(biāo)地址其中之一。
64.如權(quán)利要求60所述的方法,其特征在于,還包含儲存與每一該復(fù)數(shù)個群組有關(guān)的更換信息以用于該選取更換該些入口其中之一入口,以回應(yīng)該分支指令的決定。
65.如權(quán)利要求64所述的方法,其特征在于,其中如果該被決定分支指令沒有其目標(biāo)地址已被快取在該M個快取存儲器之內(nèi),且如果該被決定分支指令的該擷取地址未命中于至少一該M個快取存儲器之內(nèi)時,該選取更換是包含選取更換該至少一該M個快取存儲器的該些通道其中之一。
66.如權(quán)利要求65所述的方法,其特征在于,其中該更換信息是包含對每一群組的該M個集合的每一集合的該N通道是最近最少使用的一指示,其中該選取更換是包含選取更換最近最少使用的通道。
67.如權(quán)利要求64所述的方法,其特征在于,其中該更換信息是包含該M個快取存儲器是最近最少使用的一指示,其中如果該被決定分支指令沒有其目標(biāo)地址已被快取在該M個快取存儲器之內(nèi),且如果該被決定分支指令的擷取地址是命中于全部該M個快取存儲器之內(nèi)時,該選取更換是包含選取更換該M個快取存儲器其中之一該最近最少使用的快取存儲器。
68.如權(quán)利要求64所述的方法,其特征在于,其中該更換信息是包含該M個快取存儲器是最近最少使用的一指示,其中如果該被決定分支指令沒有其目標(biāo)地址已被快取在該M個快取存儲器之內(nèi),且如果該被決定分支指令的擷取地址是沒有命中于該M個快取存儲器之內(nèi)時,該選取更換是包含選取更換該M個快取存儲器其中之一該最近最少使用的快取存儲器。
69.如權(quán)利要求68所述的方法,其特征在于,其中如果該被決定的分支指令沒有其目標(biāo)地址已被快取在該M個快取存儲器之內(nèi),且如果該被決定分支指令的擷取地址是沒有命中于該M個快取存儲器之內(nèi)時,該選取更換是包含選取更換該M個快取存儲器其中之一該最近最少使用的快取存儲器;然而,如果一個或多個該M個快取存儲器的所有該些通道是有效且比其余該M個快取存儲器的所有該些通道是有效少時,則該選取更換是包含選取更換該其余該M個快取存儲器其中之一。
70.如權(quán)利要求60所述的方法,其特征在于,其中該選取更換是包含選取更換該些入口其中之一入口,以回應(yīng)一分支指令的決定,使得(c)該微處理器在操作該復(fù)數(shù)個群組的一第三子集期間,該MxN入口快取在(MxN-2)個不同快取列的每一快取列內(nèi)一分支指令的目標(biāo)地址以及在兩不同快取列的每一快取列內(nèi)兩分支指令的目標(biāo)地址,以獲得(MxN-2)通道群組的組合。
71.如權(quán)利要求70所述的方法,其特征在于,還包含對該復(fù)數(shù)個群組的該第三子集,測定該指令快取擷取地址是否命中于該M個快取存儲器其中的兩個快取存儲器之內(nèi);以及由該M個快取存儲器其中的該兩個快取存儲器的每一快取存儲器提供該兩個不同快取列其中之一快取列內(nèi)該兩分支指令的該些目標(biāo)地址。
72.如權(quán)利要求60所述的方法,其特征在于,其中該選取更換是包含選取更換該些入口其中之一入口,以回應(yīng)一分支指令的決定,使得(c)該微處理器在操作該復(fù)數(shù)個群組的一第三子集期間,該MxN入口快取在N個不同快取列的每一快取列內(nèi)M個分支指令的目標(biāo)地址,以獲得N通道群組的組合。
73.如權(quán)利要求72所述的方法,其特征在于,還包含對該復(fù)數(shù)個群組的該第三子集,測定該指令快取擷取地址是否命中于所有的該M個快取存儲器之內(nèi);以及由每一該M個快取提供該N個不同快取列其中之一快取列內(nèi)該N個分支指令的該些目標(biāo)地址。
74.一計算機程序產(chǎn)品,其用以與一計算機裝置一起使用,其特征在于,該計算機程序產(chǎn)品包含一計算機可使用的媒體,是具有計算機可讀取的程序碼嵌入該媒體,用以使一微電腦內(nèi)的一裝置預(yù)測每一快取列內(nèi)一可變數(shù)量的分支指令的一目標(biāo)地址,該每一快取列是擷取自一指令快取的一擷取地址,該計算機可讀取的程序碼包含一第一程序碼用以提供一第一與一第二雙通道集合組合快取存儲器,每一雙通道集合組合快取存儲器是具有一索引輸入耦合接收該指令快取擷取地址的一部分,其中該索引選取復(fù)數(shù)個四入口群組其中之一群組,每一該群組是包含每一該第一與該第二快取存儲器的每一通道內(nèi)的一入口,其中每一該些入口快取一先前被執(zhí)行分支指令的一目標(biāo)地址;以及一第二程序碼用以提供置換邏輯,是耦接至該第一與該第二快取,用以選取更換該些入口其中之一入口,由此回應(yīng)一分支指令的決定,使得(a)該微處理器在操作該復(fù)數(shù)個群組的一第一子集期間,該四入口快取在四個不同快取列的每一快取列內(nèi)一分支指令的目標(biāo)地址,以獲得四通道群組的組合;以及(b)該微處理器在操作該復(fù)數(shù)個群組的一第二子集期間,該四入口快取在兩個不同快取列的每一快取列內(nèi)一分支指令的目標(biāo)地址以及在一第三不同快取列內(nèi)兩分支指令的目標(biāo)地址,以獲得三通道群組的組合。
75.如權(quán)利要求74所述的計算機程序產(chǎn)品,其特征在于,其中該計算機可讀取的程序碼還包含一第四程序碼用以提供該置換邏輯,其中該置換邏輯是更用以選取更換該些入口其中之一入口,以回應(yīng)一分支指令的決定,使得(c)該微處理器在操作該復(fù)數(shù)個群組的一第三子集期間,該四入口快取在兩個不同快取列的每一快取列內(nèi)兩分支指令的目標(biāo)地址,以獲得雙通道群組的組合。
全文摘要
本發(fā)明是揭露一分支預(yù)測裝置,其具有兩個雙通道集合組合快取存儲器,其中每一雙通道集合組合快取存儲器是由一指令快取擷取地址的一較低部分所索引。此索引選取四個入口的一群組,每一入口是選自每一快取列的每一通道。每一入口儲存一不同的先前被執(zhí)行分支指令的一單一目標(biāo)地址。依據(jù)程序內(nèi)分支指令的分布,對某些群組,此四個入口快取在四個不同快取列的每一快取列內(nèi)的一分支指令的目標(biāo)地址,以獲得四通道群組的組合;對其他群組,此四個入口快取在兩個不同快取列的每一快取列內(nèi)的一分支指令的目標(biāo)地址以及在一第三不同快取列內(nèi)的兩分支指令的目標(biāo)地址,以獲得三通道群組的組合。
文檔編號G06F9/38GK1821953SQ200510091909
公開日2006年8月23日 申請日期2005年8月4日 優(yōu)先權(quán)日2004年8月4日
發(fā)明者G·葛蘭亨利, 湯瑪斯·麥克唐納 申請人:威盛電子股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
赤城县| 定兴县| 西林县| 子长县| 柏乡县| 商南县| 中宁县| 乌拉特后旗| 鹰潭市| 绵竹市| 陇西县| 上饶县| 定陶县| 安丘市| 宁海县| 汉沽区| 武乡县| 辛集市| 金阳县| 百色市| 石景山区| 故城县| 白朗县| 景德镇市| 根河市| 礼泉县| 东丽区| 闻喜县| 无锡市| 临澧县| 阿合奇县| 五大连池市| 塘沽区| 吴旗县| 贡觉县| 九龙县| 南陵县| 丁青县| 大兴区| 澳门| 格尔木市|