亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于增強(qiáng)分支預(yù)測效率的指令序列緩沖器的制作方法與工藝

文檔序號:11990762閱讀:217來源:國知局
用于增強(qiáng)分支預(yù)測效率的指令序列緩沖器的制作方法與工藝
本發(fā)明總體上涉及數(shù)字計算機(jī)系統(tǒng),尤其涉及一種用于選擇包括指令序列的指令的系統(tǒng)和方法。

背景技術(shù):
改進(jìn)計算機(jī)架構(gòu)性能是一項困難的任務(wù)。已經(jīng)通過頻率定標(biāo)、單指令多數(shù)據(jù)(SIMD)、超長指令字(VLIW)、多線程和多處理器技術(shù)尋求改進(jìn)。這些方法主要以程序執(zhí)行的吞吐量的改進(jìn)為目標(biāo)。許多技術(shù)要求軟件明確地揭示并行性。與之相反,頻率定標(biāo)對吞吐量和延時均有所改進(jìn)而并不要求軟件明確注明并行性。近來,頻率定標(biāo)碰上了功率壁壘,從而通過頻率定標(biāo)的改進(jìn)是困難的。因此,除非表達(dá)出大量明確的軟件并行化,否則難以提高吞吐量。關(guān)于單線程程序執(zhí)行,由支配程序控制流的分支指令對程序執(zhí)行進(jìn)行控制。當(dāng)分支指令是有條件的或者分支目標(biāo)是間接的時,程序指令序列是動態(tài)的。在這樣的情況下,處理器的提取邏輯針對條件分支查明該分支被采取還是未被采取是必需的。這使得提取邏輯能夠引入緊隨分支目標(biāo)或者緊隨分支指令本身的指令序列。然而,所存在的問題在于,在提取階段,分支條件的結(jié)果在分支本身執(zhí)行之前是未知的。在解決該問題的嘗試中,現(xiàn)有技術(shù)的設(shè)計已經(jīng)實施了分支預(yù)測邏輯以預(yù)測分支的結(jié)果。在微處理器的提取階段,所預(yù)測的結(jié)果使得提取邏輯能夠預(yù)期從哪里得到下一個指令序列。然而,由于該處理需要在本質(zhì)上是順序的,所以仍然存在問題。當(dāng)前分支需要首先被處理以便獲知從哪里得到下一個指令序列。因此,提取階段中處理分支的順序?qū)傩詫ξ⑻幚砥鞯膯尉€程執(zhí)行速度產(chǎn)生性能瓶頸。對于不正確分支預(yù)測的懲罰通常涉及更新微處理器的整個流水線、訪問高速緩存以及重新加載以新的指令序列。這些懲罰大幅減少了每次預(yù)測多于一個的分支的動機(jī)。

技術(shù)實現(xiàn)要素:
本發(fā)明的實施例實施了一種提高指令序列的分支產(chǎn)生過程的效率的算法(例如,方法和裝置)。在一個實施例中,本發(fā)明被實施為一種用于輸出可替換指令序列的方法。該方法包括追蹤重復(fù)命中以確定微處理器的頻繁命中指令序列的集合。其中標(biāo)識頻繁錯失預(yù)測的分支指令,其中該分支指令的預(yù)測結(jié)果經(jīng)常是錯誤的。將分支指令目標(biāo)的可替換指令序列存儲到緩沖器中。對于在分支指令的預(yù)測結(jié)果錯誤的情況下針對分支指令的后續(xù)命中,從緩沖器輸出可替換指令序列。前文是概述并且因此必然地包含細(xì)節(jié)的簡化、概括和省略,本領(lǐng)域技術(shù)人員將會意識到,該概述僅是說明性的而并非意在以任何方式進(jìn)行限制。僅由權(quán)利要求所限定的本發(fā)明的其他方面、發(fā)明特征和優(yōu)勢將在以下給出的非限制性詳細(xì)描述中變得顯而易見。附圖說明本發(fā)明在附圖的示圖中通過示例而非限制進(jìn)行圖示,并且其中相同的附圖標(biāo)記指代相似的要素。圖1示出了由本發(fā)明的一個實施例所操作的示例性指令序列。圖2示出了依據(jù)本發(fā)明的一個實施例的具有所圖示的每個分支的相應(yīng)代碼段的序列指令。圖3示出了依據(jù)本發(fā)明的一個實施例的用于輸出頻繁命中和頻繁錯失預(yù)測的分支的可替換指令序列的裝置的流程圖。圖4示出了依據(jù)本發(fā)明的一個實施例的用于輸出可替換指令序列的過程的步驟的概要流程圖。圖5示出了依據(jù)本發(fā)明的一個實施例的指令序列緩沖器的示圖。圖6示出了依據(jù)本發(fā)明的一個實施例的用于存儲頻繁命中的可可靠預(yù)測的分支的指令序列的指令序列緩沖器的示圖。圖7示出了依據(jù)本發(fā)明的一個實施例的用于輸出可可靠預(yù)測的指令序列的過程的步驟的概要流程圖。圖8示出了依據(jù)本發(fā)明的一個實施例的示例性微處理器流水線的示圖。具體實施方式雖然已經(jīng)結(jié)合一個實施例對本發(fā)明進(jìn)行了描述,但是本發(fā)明并非意在局限于這里所給出的具體形式。與之相反,其意在覆蓋諸如能夠合理包含于如由所附權(quán)利要求所定義的本發(fā)明的范圍之內(nèi)的替換、修改和等同形式。在以下詳細(xì)描述中,已經(jīng)給出了諸如具體方法順序、結(jié)構(gòu)、要素和連接之類的許多具體細(xì)節(jié)。然而,所要理解的是,這些和其他具體細(xì)節(jié)無需被用來實踐本發(fā)明的實施例。在其他情況下,公知的結(jié)構(gòu)、要素或連接已經(jīng)被省略,或者尚未特別詳細(xì)地進(jìn)行描述以避免對該描述造成不必要的混淆。說明書中對“一個實施例”或“實施例”的引用意在指示結(jié)合該實施例所描述的特定特征、結(jié)構(gòu)或特性包括在本發(fā)明的至少一個實施例中。在說明書中各處出現(xiàn)的短語“在一個實施例中”并不必全部指代相同的實施例,也并非是與其他實施例互相排斥的單獨或可替換實施例。此外,描述了可以被一些實施例而非其他實施例所表現(xiàn)的各個特征。類似地,描述了可以是針對一些實施例而非其他實施例的各種要求。以過程、步驟、邏輯塊、處理和對計算機(jī)存儲器內(nèi)的數(shù)據(jù)比特的操作的其他符號表示形式給出詳細(xì)描述中隨后的一些部分。這些描述和表示形式是數(shù)據(jù)處理領(lǐng)域的技術(shù)人員用來最為有效地向本領(lǐng)域其他技術(shù)人員傳達(dá)其工作實質(zhì)的手段。過程、計算機(jī)執(zhí)行的步驟、邏輯塊、處理等在這里以及總體上被理解為是導(dǎo)致所期望結(jié)果的步驟或指令的自一致序列。步驟是要求對物理量進(jìn)行物理操控的那些步驟。通常,雖然并非必然如此,但是這些量采取計算機(jī)可讀存儲介質(zhì)的電信號或磁信號的形式,并且能夠在計算機(jī)系統(tǒng)中進(jìn)行存儲、傳輸、合并、比較以及以其他方式進(jìn)行操控。有時主要出于普遍使用的原因,將這些信號稱作比特、數(shù)值、要素、符號、字符、術(shù)語、數(shù)字等已經(jīng)證明是便利的。然而,應(yīng)當(dāng)牢記的是,所有這些術(shù)語和類似術(shù)語將與適當(dāng)物理量相關(guān)聯(lián)并且僅是應(yīng)用于這些量的方便的標(biāo)記。除非被另外特別指出為從以下討論是顯而易見的,否則要意識到,貫穿本發(fā)明,利用諸如“處理”或“訪問”或“寫入”或“存儲”或“復(fù)制”等術(shù)語所進(jìn)行的討論是指計算機(jī)系統(tǒng)或類似電子計算設(shè)備的動作或處理,該電子計算設(shè)備對在計算機(jī)系統(tǒng)的寄存器和存儲器以及其他計算機(jī)可讀介質(zhì)內(nèi)表示為物理(電子)量的數(shù)據(jù)進(jìn)行操控并變換為在計算機(jī)系統(tǒng)存儲器或寄存器或者其他這樣的信息存儲、傳輸或顯示設(shè)備內(nèi)同樣地表示為物理量的其他數(shù)據(jù)。在一個實施例中,本發(fā)明實施了一種用于對頻繁命中和頻繁錯失預(yù)測的分支輸出可替換指令序列的算法(例如,方法和裝置)。該方法包括追蹤針對分支指令的重復(fù)命中以確定微處理器的頻繁命中指令序列的集合。隨后標(biāo)識頻繁錯失預(yù)測的分支指令,其中該分支指令的預(yù)測結(jié)果經(jīng)常是錯誤的。將分支指令的可替換指令序列存儲進(jìn)緩沖器(例如,指令序列緩沖器)中。對于在分支指令的預(yù)測結(jié)果錯誤的情況下針對分支指令的后續(xù)命中,從緩沖器輸出可替換指令序列。該可替換指令序列因此使得微處理器流水線免于被整體更新。例如,與更新整個流水線、訪問高速緩存并且匯編新的指令序列相反,該可替換指令序列直接從緩沖器提供。圖1示出了由本發(fā)明的實施例對其進(jìn)行操作的示例性指令序列。隨后,圖2示出了由多級分支所產(chǎn)生的可替換指令序列的流程圖,并且圖3示出了依據(jù)本發(fā)明的一個實施例的用于輸出可替換指令序列的過程的步驟的概要流程圖。在可替換實施例中,實施了指令序列緩沖器的存儲資源的雙重用途。不同于針對頻繁錯失預(yù)測的分支中的頻繁命中而存儲可替換指令序列,指令序列緩沖器的存儲資源被用來針對頻繁命中且可靠預(yù)測的分支存儲指令序列。因此,不同于針對被選取的情形和未被選取的情形存儲可替換指令序列,緩沖器600的存儲資源被用來存儲頻繁命中且可可靠預(yù)測的分支以及多個后續(xù)跟隨分支的指令序列。該可替換實施例在以下的圖6中被示出和描述。這兩個實施例能夠共存并且共享相同的存儲緩沖器,但是是以不同的方式進(jìn)行共享。圖1示出了由本發(fā)明的一個實施例進(jìn)行操作的示例性指令序列。如圖1中所描繪的,指令序列100包括從圖1的頂部開始進(jìn)行到底部的16個指令。如在圖1中可以看到的,序列100包括四個分支指令101-104。本發(fā)明的實施例的一個目的是針對頻繁命中并且頻繁錯失預(yù)測的分支輸出可替換指令序列。作為大幅減少重新匯編可替換指令序列的延時懲罰的手段來輸出可替換指令序列。依據(jù)不同實施例,這些指令可以包括原生指令(例如,微處理器架構(gòu)的原生指令,諸如x86指令、MIPS指令等)。可替換地,這些指令可以包括微代碼。如之前所描述的,指令序列包括的分支越多,出現(xiàn)并且需要處理的組合形式和可能的結(jié)果序列就越多。該特性在以下的圖2中進(jìn)行圖示。圖2示出了依據(jù)本發(fā)明的一個實施例的具有所圖示的每個分支的相應(yīng)代碼段的序列指令100。如以上所描述的,呈現(xiàn)在指令序列中的分支越多,需要消除歧義的指令序列的組合形式和可能性就越多。這在圖2中被示出,其示出了在選取分支c1被選取的情況下出現(xiàn)的第一結(jié)果序列“1”。如這里所提到的,如果程序執(zhí)行流移動至分支目標(biāo),則該分支被選取。這由處于每個分支指令末端的括號內(nèi)的兩個數(shù)字所指示。例如,分支c1具有目標(biāo)11并且導(dǎo)致跳過接下來的6個指令。類似地,分支c2具有目標(biāo)10并且導(dǎo)致跳過接下來的2個指令,依此類推。因此,示出了第二結(jié)果序列“2”,并且在分支c2被選取的情況下出現(xiàn)。第三結(jié)果序列“3”被示為在分支c3被選取的情況下出現(xiàn)。類似地,第四結(jié)果序列“4”被示為在分支c4被選取的情況下出現(xiàn)。本發(fā)明的實施例針對頻繁命中并且頻繁錯失預(yù)測的分支輸出可替換指令序列。如圖2中所示,在沿所預(yù)測指令序列的任意分支被錯失預(yù)測時出現(xiàn)不同的指令序列。本發(fā)明的實施例有利地將多個這些可替換指令序列存儲在與解碼器硬件非常接近的緩沖器中。作為大幅減少重新匯編可替換指令序列的延時懲罰的手段來輸出所存儲的可替換指令序列。以下在圖3中進(jìn)一步圖示該算法。圖3示出了依據(jù)本發(fā)明的一個實施例的用于針對頻繁命中并且頻繁錯失預(yù)測的分支輸出可替換指令序列的裝置300的流程圖。如圖3中所描繪的,裝置300包括序列預(yù)測器301、分支預(yù)測表302和穩(wěn)定性序列計數(shù)器303。在圖3的實施例中,裝置300通過追蹤重復(fù)命中以確定頻繁命中的分支及其相對應(yīng)的指令序列的集合來起作用。這些分支在圖3中被圖示為B0至B8。如以上所描述的,所預(yù)測的指令序列基于該分支的分支預(yù)測而被匯編。示出了將第一分支B0連接至跟隨分支B1和B5的線條,以及從B1和B5到其各自的跟隨分支B2、B4和B6的線條,依此類推。分支預(yù)測表302被用來保持追蹤分支預(yù)測以便確定哪些指令序列經(jīng)常被錯失預(yù)測以及哪些指令序列極少被錯失預(yù)測。在圖3的實施例中,分支被分析為比初始分支B0深三個等級。因此,例如,可以從B0至B1、至B2以及繼續(xù)至B3來匯編可替換指令序列。根據(jù)緩沖器的大小,可以分析并存儲跟隨分支的更大或更小數(shù)量的等級。序列預(yù)測器301通過預(yù)測分支的結(jié)果以匯編所預(yù)測的指令序列來起作用。因此,序列預(yù)測器可以監(jiān)視這些分支的執(zhí)行并且標(biāo)識頻繁錯失預(yù)測的分支指令。不同數(shù)量的機(jī)制可以被用來標(biāo)識頻繁錯失預(yù)測的分支指令。在一個實施例中,諸如序列穩(wěn)定性計數(shù)器303之類的標(biāo)簽結(jié)構(gòu)被用來將重復(fù)命中累加至相同指令序列(例如,頻繁提取的序列)。一旦已經(jīng)超過閾值,給定分支指令就可以被標(biāo)識并視為頻繁錯失預(yù)測的分支指令。圖4示出了依據(jù)本發(fā)明的一個實施例的用于輸出可替換指令序列的過程400的步驟的概要流程圖。過程400示出了例如微處理器的指令提取模塊的示例性操作步驟。過程400在步驟401開始,其中對訪問進(jìn)行追蹤以便確定頻繁命中指令序列的集合。如以上所描述的,序列預(yù)測器對所預(yù)測的指令序列進(jìn)行匯編。可以確定哪些指令序列被頻繁提取。在步驟402,從該集合之中,序列預(yù)測器標(biāo)識出頻繁錯失預(yù)測的分支指令。如以上所描述的,該分支指令的預(yù)測結(jié)果經(jīng)常是錯誤的。在步驟403,分支指令的可替換指令序列被存儲到緩沖器中。如以上所描述的,這種無法正確且可靠地預(yù)測該分支結(jié)果的現(xiàn)象會導(dǎo)致頻繁的流水線更新。然而,依據(jù)本發(fā)明的實施例,可替換指令序列被存儲在指令序列緩沖器內(nèi)。在步驟404,對于在預(yù)測結(jié)果錯誤的情況下針對分支指令的后續(xù)命中,從緩沖器輸出可替換指令序列。該可替換指令序列因此使得整個微處理器流水線免于被更新。例如,與更新整個流水線、訪問高速緩存并且匯編新的指令序列相反,該可替換指令序列直接從緩沖器提供。應(yīng)當(dāng)注意的是,在一個實施例中,分支預(yù)測表可以被用于使用分支預(yù)測表中的飽和計數(shù)器對針對某個分支的重復(fù)訪問的數(shù)量進(jìn)行計數(shù)來預(yù)審進(jìn)入標(biāo)簽結(jié)構(gòu)的指令序列。一旦達(dá)到飽和,則在該分支的結(jié)果處開始的指令序列地址被輸入到追蹤標(biāo)簽結(jié)構(gòu)中。該結(jié)構(gòu)具有較小數(shù)量的入口并且具有較大的飽和計數(shù)器。一旦計數(shù)器達(dá)到大的計數(shù)的閾值(其證明存儲該指令序列是合理的),則該指令序列被輸入到緩沖器中。應(yīng)當(dāng)注意的是,在一個實施例中,在被命中的序列基于良好預(yù)測的分支或者頻繁錯失預(yù)測的分支的情況下,可能使用不同的閾值。隨后,每次提取硬件跳轉(zhuǎn)至特定指令序列,就從該緩沖器訪問該指令序列并且由通向它的分支的地址進(jìn)行索引。圖5示出了依據(jù)本發(fā)明的一個實施例的指令序列緩沖器500的示圖。如圖5中所描繪的,緩沖器500包括三個部分501-503。緩沖器500和部分501-503示出了本發(fā)明的實施例的針對來自分支B0的每個可能的跟隨分支來存儲可替換指令序列的示例。對于B1至B8的每個分支,存儲根據(jù)被選取或未被選取的每個分支所產(chǎn)生的可能的結(jié)果指令序列。例如,針對被選取(例如,通向B1)或未被選取(例如,通向B5)的分支B0的指令序列被存儲到緩沖器500中。類似地,針對被選取(例如,通向B2)或未被選取(例如,通向B4)的分支B1的指令被存儲到緩沖器500中,以及針對每個跟隨分支依此類推。以這種方式,緩沖器500包括來自分支B0的所有可能指令序列。該屬性允許從分支B0的錯失預(yù)測進(jìn)行極其快速的恢復(fù)。例如,對于針對分支指令B0的后續(xù)命中(其中分支指令的預(yù)測結(jié)果是錯誤的),可以從緩沖器500快速輸出可替換指令序列。這避免了更新整個流水線、訪問高速緩存以及重新匯編新的可替換指令序列(例如,重新提取指令等)的必要性。圖500的實施例示出了部分501-503如何包括針對分支B0至B8中的每一個分支的被選取情形和未被選取情形二者的指令序列。例如,部分501示出了存儲在左手側(cè)部分的第一途徑上的針對被選取情形的指令。這由該部分的頂端的“T”所圖示。針對未被選取情形的指令被存儲在右手側(cè),如由該部分的頂端的“NT”所圖示。被選取情形和未被選取情形表示緩沖器部分或高速緩存可以被索引成的兩個途徑。這在該部分的頂端被圖示為途徑1“W1”和途徑2“W2”。針對其他部分502-503中的每一部分類似地圖示了這些屬性。圖5的下部圖示了對緩沖器500進(jìn)行索引的方式。在圖5的實施例中,為了訪問針對每個跟隨分支的被選取和未被選取情形二者的可替換指令序列,給定的跟隨分支的地址被用來對緩沖器500進(jìn)行索引。應(yīng)當(dāng)注意的是,可替換指令序列以正交方式被存儲在部分501-503中。換句話說,能夠從給定分支可能選取的可替換指令序列并不存在于相同部分中。例如,如圖5中所描繪的,分支B1和分支B5的可替換指令序列可以存在于部分501中,因為要么分支B1的指令序列要么分支B5的指令序列將會出現(xiàn)。這是因為分支B0將要么被選取要么不被選取。因此,不存在來自分支B1和分支B5的指令都將會出現(xiàn)的情形。類似地,在從分支B0移除的下一個等級,分支B2、分支B4和分支B6的可替換指令序列可以被存儲在部分502中。這些可替換指令序列是相互排斥的,因為三者中僅有一個能夠可能被執(zhí)行。類似地,在下一個等級,部分503存儲分支B3、分支B7和分支B8的可替換指令序列。圖6示出了依據(jù)本發(fā)明的一個實施例的被用來存儲頻繁命中的可可靠預(yù)測分支的指令序列的指令序列緩沖器600的示圖。如圖6中所示,緩沖器600包括四個部分601-604。部分601-604中的每一部分耦合至各自的比較邏輯組件611-614。圖6圖示了指令序列緩沖器的存儲資源的可替換用途。在圖6的實施例中,不同于存儲頻繁錯失預(yù)測的分支中的頻繁命中的可替換指令序列,存儲資源被用來存儲頻繁命中且可可靠預(yù)測的分支的指令序列。因此,不同于針對被選取和未被選取的情形存儲可替換指令序列,緩沖器600的存儲資源被用來存儲頻繁命中且可可靠預(yù)測的分支以及多個后續(xù)的跟隨分支的指令序列。存儲頻繁命中且可可靠預(yù)測的分支以及多個后續(xù)的跟隨分支的指令序列提供了多種優(yōu)勢。對于可可靠預(yù)測的分支應(yīng)得的后續(xù)命中,可預(yù)測分支以及多個后續(xù)的跟隨分支的指令序列可以直接從緩沖器600提供。這節(jié)省了關(guān)于匯編來自正常解碼器模塊流水線的可可靠預(yù)測分支的指令序列的延時的多個周期。以這種方式,本發(fā)明的實施例利用那些可可靠預(yù)測的指令序列以通過直接從緩沖器600提供這樣的序列來截除延時周期。應(yīng)當(dāng)注意的是,緩沖器600與圖5的緩沖器500實質(zhì)上為相同的結(jié)構(gòu)。不同之處在于對緩沖器600進(jìn)行索引的方式。如以上所描述的,緩沖器600被用來存儲來自多個分支的可可靠預(yù)測的指令序列。可可靠預(yù)測的指令序列被存儲在多個途徑中,如在部分601-604中每一部分的頂端的途徑1“W1”和途徑2“W2”所示。在一個實施例中,分支(例如,分支B1)的地址被用來對高速緩存進(jìn)行索引。例如,在可可靠預(yù)測的指令序列從B0流至B1至B2至B3的情形下,第一跟隨分支B1的地址被用來對緩沖器600進(jìn)行索引,而跟隨分支B2和跟隨分支B3則被用作標(biāo)簽。跟隨分支B2和跟隨分支B3將允許經(jīng)由具有兩個不同標(biāo)簽(b2和b3)的兩種不同途徑來訪問相同的索引。在一個實施例中,分支預(yù)測的比特(例如,從表302中的分支所提供的)也可以被用作標(biāo)簽。在一個實施例中,跟隨分支B1及其各自的跟隨分支B2和跟隨分支B3的散列可以被用來訪問緩沖器600。比較邏輯組件611-614通過比較分支序列預(yù)測來起作用。組件611-614將預(yù)測與序列命中進(jìn)行比較以對可可靠預(yù)測的序列的相對指標(biāo)(merit)進(jìn)行評分。例如,如果可可靠預(yù)測的序列出于某種原因而變成沒有那么可明顯預(yù)測的,則該組件將使得其從緩沖器600被逐出。在一個實施例中,如果該可可靠預(yù)測的序列變?yōu)轭l繁命中、頻繁錯失預(yù)測的序列,則該序列從圖6中所示的訪問和存儲方法移至圖5中所示的訪問和存儲方法。應(yīng)當(dāng)注意的是,緩沖器600可以被實施為統(tǒng)一的高速緩存架構(gòu)。在這樣的實施例中,頻繁命中、頻繁錯失預(yù)測的指令序列以及頻繁命中且可可靠預(yù)測的指令序列的指令序列均可以被存儲在緩沖器600的常用結(jié)構(gòu)中。不同之處將是對它們進(jìn)行訪問、索引和檢索的方法。在這樣的實施例中,將需要包括邏輯以確保由于沖突等而損壞的任何指令序列都被逐出。可替換地,在一個實施例中,緩沖器600可以被分區(qū)或者以其他方式進(jìn)行分配以使得存儲資源分別被專用于頻繁命中、頻繁錯失預(yù)測的指令序列以及被專用于可可靠預(yù)測的指令序列。這樣的專用分配將通過使得指令序列不太可能彼此損壞而簡化了緩沖器600的管理。圖7示出了依據(jù)本發(fā)明的一個實施例的用于輸出可可靠預(yù)測的指令序列的過程700的步驟的概要流程圖。過程700示出了例如微處理器的指令提取模塊的示例性操作步驟。過程700在步驟701開始,其中對訪問進(jìn)行追蹤以便確定頻繁命中指令序列的集合。如以上所描述的,序列預(yù)測器對所預(yù)測的指令序列進(jìn)行匯編??梢源_定哪些指令序列被頻繁提取。在步驟702,從該集合之中,序列預(yù)測器標(biāo)識出具有形成可可靠預(yù)測的指令序列的一系列后續(xù)跟隨分支指令的分支指令。在步驟703,分支指令的可可靠預(yù)測的指令序列被存儲到緩沖器(例如,緩沖器600)中。在步驟704,對于針對分支指令的后續(xù)命中,從緩沖器輸出可可靠預(yù)測的指令序列。這節(jié)省了關(guān)于匯編來自正常解碼器模塊流水線的可可靠預(yù)測分支的指令序列的延時的多個周期。以這種方式,本發(fā)明的實施例利用那些可可靠預(yù)測的指令序列以通過直接從緩沖器600提供這樣的序列來截除延時周期。圖8示出了依據(jù)本發(fā)明的一個實施例的示例性微處理器流水線800的示圖。微處理器流水線800包括提取模塊801,其實施如以上所描述的用于標(biāo)識并提取包括執(zhí)行的指令的過程的功能。在圖8的實施例中,該提取模塊后跟有解碼模塊802、分配模塊803、調(diào)度模塊804、執(zhí)行模塊805和指令引退模塊806。應(yīng)當(dāng)注意的是,微處理器流水線800僅是實施以上所描述的本發(fā)明的實施例的功能的流水線的一個示例。本領(lǐng)域技術(shù)人員將會認(rèn)識到,可以實施包括以上所描述的解碼模塊的功能的其他微處理器流水線。已經(jīng)出于解釋的目的而參考具體實施例對前述描述進(jìn)行了表述。然而,以上所闡明的討論并非意在是詳盡的或者將本發(fā)明限制為所公開的精確形式。鑒于以上教導(dǎo),許多修改和變化是可能的。選擇并描述了實施例以便最佳地解釋本發(fā)明的原理及其實際應(yīng)用,由此使得本領(lǐng)域其他技術(shù)人員能夠使用可以與設(shè)想的特定用途相適應(yīng)的各種修改來最佳地利用本發(fā)明和各個實施例。
當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1