專利名稱:超標(biāo)量處理器實(shí)現(xiàn)指令緩存路選擇的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及現(xiàn)代微處理器及其應(yīng)用系統(tǒng)的設(shè)計(jì),尤其涉及超標(biāo)量處理器實(shí)現(xiàn)指令緩存路選擇的方法及裝置。
背景技術(shù):
當(dāng)前處理器的設(shè)計(jì)不再以性能或能耗為唯一目標(biāo),而是綜合考慮兩種設(shè)計(jì)要素, 以高能效為主要設(shè)計(jì)目標(biāo)。為充分發(fā)掘超標(biāo)量處理器的指令級(jí)并行度,對(duì)處理器的指令緩存(ICacheJnstruction Cache)的取指帶寬和取指延遲均有著較高的要求,需要在處理器每個(gè)指令周期向流水線不間斷地提供多條指令。而指令緩存的組相聯(lián)結(jié)構(gòu)(即指令緩存中使用多個(gè)路結(jié)構(gòu)保存指令)往往會(huì)造成大量非命中路的能耗損失。因此,如何優(yōu)化超標(biāo)量處理器的指令緩存結(jié)構(gòu),使得在有效地降低取指能耗的同時(shí)能夠縮短取指延遲,從而獲得更高的能效性,是微處理器設(shè)計(jì)人員重點(diǎn)關(guān)注的問(wèn)題。路選擇技術(shù)是根據(jù)指令緩存的取指歷史只對(duì)指令緩存的一路進(jìn)行訪問(wèn),主要包括路預(yù)測(cè)技術(shù)與路歷史技術(shù)兩類。路預(yù)測(cè)技術(shù)針對(duì)順序行間取指情況和非順序取指情況,分別在每個(gè)Cache行 (Cache Line)和分支目標(biāo)緩沖器(BTB, Branch Target Buffer)的每一項(xiàng)中加入預(yù)測(cè)位, 如圖1所示。其中,在順序行間取指時(shí),當(dāng)前Cache行的預(yù)測(cè)位負(fù)責(zé)預(yù)測(cè)下一條指令所在的路(Way),如圖1中實(shí)線箭頭所指;在非順序取指時(shí),當(dāng)前BTB項(xiàng)的預(yù)測(cè)位負(fù)責(zé)預(yù)測(cè)分支目標(biāo)地址所在的路,如圖1中虛線箭頭所指。當(dāng)進(jìn)行路預(yù)測(cè)時(shí),讀取該預(yù)測(cè)路相應(yīng)Cache行的標(biāo)簽(Tag),并比較該Tag和相應(yīng)Cache行的地址,以驗(yàn)證路預(yù)測(cè)的正確性。此時(shí)能耗開(kāi)銷為對(duì)單路的Tag和數(shù)據(jù)的訪問(wèn)。如果發(fā)現(xiàn)預(yù)測(cè)錯(cuò)誤,則舍棄本周期取得的指令,在下一周期執(zhí)行傳統(tǒng)的ICache訪問(wèn),并更新之前使用的預(yù)測(cè)位,此時(shí)會(huì)造成一個(gè)周期的取指延遲和一路訪問(wèn)能耗損失。路歷史技術(shù)是對(duì)路預(yù)測(cè)技術(shù)的拓展,如圖2右端所示。對(duì)Cache行為和結(jié)構(gòu)的分析表明,通常,只有當(dāng)ICache進(jìn)行行替換時(shí)才有可能破壞已有的路預(yù)測(cè)關(guān)聯(lián),導(dǎo)致預(yù)測(cè)錯(cuò)誤。 路歷史技術(shù)利用此特性,對(duì)路預(yù)測(cè)的每個(gè)預(yù)測(cè)位增加有效位,以標(biāo)識(shí)該預(yù)測(cè)是否正確。該有效位與預(yù)測(cè)位合稱為路指針,置該有效位為有效或無(wú)效,相應(yīng)地表示置路指針為有效或無(wú)效。在ICache出現(xiàn)行替換時(shí),需將所有在ICache和BTB中指向替換行的路指針置為無(wú)效, 以避免使用這些無(wú)效的路指針引起取指錯(cuò)誤。當(dāng)路指針被置為無(wú)效時(shí),使用傳統(tǒng)的ICache 訪問(wèn)機(jī)制進(jìn)行訪問(wèn),更新路指針并設(shè)置有效位。當(dāng)路指針被置為有效時(shí),直接訪問(wèn)數(shù)據(jù),無(wú)需Tag的讀取與比較。路歷史技術(shù)與路預(yù)測(cè)技術(shù)的區(qū)別如圖2所示。從以上兩類技術(shù)的執(zhí)行過(guò)程可以看出,兩類技術(shù)對(duì)于不同的取指場(chǎng)景會(huì)表現(xiàn)出不同的性能第一,在順序行間取指時(shí),兩種路選擇技術(shù)在取指延遲上存在差異。路預(yù)測(cè)會(huì)因預(yù)測(cè)錯(cuò)誤而增大取指延遲;而路歷史避免了預(yù)測(cè)錯(cuò)誤情況。當(dāng)出現(xiàn) Cache行替換需要進(jìn)行更新時(shí),路歷史直接在索引連續(xù)的上一個(gè)Set中(請(qǐng)參見(jiàn)圖1),通過(guò)Tag比較找到指向被替換的Cache行的路指針,并將其置無(wú)效。該過(guò)程易于實(shí)現(xiàn),且可以隱藏在Cache行替換過(guò)程中,因而不會(huì)增大取指延遲。第二,對(duì)于超標(biāo)量處理器中特有的非對(duì)齊取指情況(特殊的順序行間取指情況,圖1中實(shí)線箭頭所指),已有的路選擇方法均未能很好的予以解決。當(dāng)一個(gè)取指組的指令分布在兩個(gè)地址連續(xù)的Cache行中時(shí),會(huì)出現(xiàn)取指組非對(duì)齊情況(Fetch Group Misalignment),此時(shí)處理器需要二次取指才可將全部指令取回。該問(wèn)題是超標(biāo)量處理器中 ICache獲得最大取指帶寬的重要障礙。現(xiàn)有的路歷史方法只有當(dāng)取到Cache行最后一條指令時(shí),才會(huì)讀取路指針對(duì)下一次取指所在的路進(jìn)行預(yù)測(cè),因此無(wú)法同時(shí)讀取兩部分指令 (即指兩個(gè)地址連續(xù)的Cache行中的指令)。而已有路預(yù)測(cè)方法還可能由于預(yù)測(cè)錯(cuò)誤,導(dǎo)致前上述兩部分指令中后一部分指令無(wú)法讀出。第三,在非順序取指時(shí),路歷史技術(shù)的更新機(jī)制較為復(fù)雜,會(huì)導(dǎo)致取指暫停以及丟失有用路指針的問(wèn)題。這是因?yàn)樵谑褂寐窔v史技術(shù)時(shí),BTB中會(huì)有多個(gè)路指針指向同一個(gè)Cache行。當(dāng) ICache出現(xiàn)行替換時(shí),需要立即將所有指向被替換Cache行的路指針置無(wú)效。根據(jù)已有研究的分析,由于可能出現(xiàn)BTB中大量路指針指向同一個(gè)Cache行的情況,因此必須實(shí)現(xiàn)BTB 中對(duì)整體路指針置無(wú)效的操作,這樣就有可能將其中本來(lái)有效的路指針也置為無(wú)效。由于超標(biāo)量處理器的分支轉(zhuǎn)移預(yù)測(cè)部件一般較大,全部路指針置無(wú)效需要的周期數(shù)很多。在完成對(duì)BTB中整體路指針置無(wú)效前,分支指令不能進(jìn)行預(yù)測(cè)而需要停頓,否則會(huì)出現(xiàn)本應(yīng)被置無(wú)效的路指針被錯(cuò)誤使用的情況。分支預(yù)測(cè)停頓會(huì)引起取指暫停,由此影響流水線中指令的發(fā)射效率。另外,由于對(duì)BTB中整體路指針置無(wú)效操作也會(huì)將與Cache行替換無(wú)關(guān)的有效路指針置無(wú)效,導(dǎo)致這些有效路指針無(wú)法正常使用,從而降低路選擇訪問(wèn)的比例。對(duì)于非順序取指,一方面路預(yù)測(cè)技術(shù)相比路歷史技術(shù)而言,無(wú)需對(duì)BTB中整體路指針置無(wú)效的操作;另一方面針對(duì)路歷史技術(shù)的已有研究發(fā)現(xiàn),當(dāng)進(jìn)行Cache行替換時(shí), BTB中需要置無(wú)效的路指針在整個(gè)路指針中所占的比例較??;這兩方面均說(shuō)明非順序取指時(shí)預(yù)測(cè)錯(cuò)誤的可能性較小,性能影響不大。由于現(xiàn)有的路歷史方法只針對(duì)單發(fā)射處理器進(jìn)行了探討和實(shí)驗(yàn),并都假設(shè)在 ICache出現(xiàn)行替換時(shí)對(duì)路指針的更新操作可以被忽略;而且現(xiàn)有的路選擇技術(shù)均未在進(jìn)行路選擇過(guò)程中針對(duì)取指模式將路預(yù)測(cè)和路歷史兩種技術(shù)結(jié)合起來(lái)使用,因此未能充分發(fā)揮兩者的優(yōu)勢(shì)。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種超標(biāo)量處理器實(shí)現(xiàn)指令緩存路選擇的方法及裝置,能夠融合路預(yù)測(cè)和路歷史技術(shù)而優(yōu)化處理器的能效。為了解決上述技術(shù)問(wèn)題,本發(fā)明提供了一種超標(biāo)量處理器實(shí)現(xiàn)指令緩存路選擇的方法,包括至少根據(jù)指令的取指請(qǐng)求判斷取指模式;根據(jù)取指模式屬于順序取指場(chǎng)景采用路歷史模式進(jìn)行路預(yù)測(cè),根據(jù)取指模式屬于非順序取指場(chǎng)景采用路預(yù)測(cè)模式進(jìn)行路預(yù)測(cè)。
進(jìn)一步地,根據(jù)取指模式屬于順序取指場(chǎng)景采用路歷史模式進(jìn)行路預(yù)測(cè),具體包括若取指模式屬于順序行內(nèi)取指,即取指模式為順序取指且當(dāng)前指令與下一指令在同一緩存行中,則在指令取指單元中增加當(dāng)前路指針來(lái)記錄當(dāng)前指令在緩存中所在的路及其是否有效,通過(guò)產(chǎn)生SRAM使能信號(hào)直接訪問(wèn)當(dāng)前路指針指向的路;若取指模式屬于順序行間取指,即取指模式為順序取指且當(dāng)前指令與下一指令不在同一緩存行中,則在每一緩存行增加順序路指針來(lái)指明的該緩存行最后一條指令順序執(zhí)行時(shí)下一條指令所在的路及其是否有效;當(dāng)判斷當(dāng)前指令所在的緩存行的順序路指針有效,通過(guò)產(chǎn)生SRAM使能信號(hào)直接訪問(wèn)該順序路指針指明的路;否則,采用傳統(tǒng)的緩存訪問(wèn)方式訪問(wèn)下一條指令,并更新該緩存行的順序路指針。進(jìn)一步地,在取指模式屬于順序行內(nèi)取指的場(chǎng)景下,當(dāng)前路指針包括第一預(yù)測(cè)位和第一有效位,其中,第一預(yù)測(cè)位的位數(shù)為L(zhǎng)ogN,用于記錄當(dāng)前指令在緩存中所在的路;有效位的位數(shù)至少為1,用于判斷記錄的的路是否有效;SRAM使能信號(hào)包括標(biāo)簽RAM和/或數(shù)據(jù)RAM的使能信號(hào);在取指模式屬于順序行間取指的場(chǎng)景下,順序路指針包括第二預(yù)測(cè)位和第二有效位,其中,第二預(yù)測(cè)位的位數(shù)為L(zhǎng)ogN,用于指明緩存行最后一條指令順序執(zhí)行時(shí)下一條指令所在的路;第二有效位的位數(shù)至少為1,用于判斷指明的路是否有效;SRAM使能信號(hào)包括標(biāo)簽RAM、數(shù)據(jù)RAM以及順序路指針RAM的使能信號(hào)中的一種或多種;N是緩存的組相聯(lián)度。進(jìn)一步地,根據(jù)取指模式屬于順序取指場(chǎng)景采用路歷史模式進(jìn)行路預(yù)測(cè),還包括若判斷取指模式屬于非對(duì)齊取指,即取指模式為所述順序取指,且同一個(gè)取指組的指令分布在地址連續(xù)的兩個(gè)緩存行中,當(dāng)判斷取指組保存在不同的SRAM中,則通過(guò)產(chǎn)生兩個(gè)數(shù)據(jù)RAM使能的SRAM使能信號(hào)同時(shí)獲取分布于兩個(gè)緩存行中的指令;若判斷取指組保存在相同的SRAM中,則通過(guò)產(chǎn)生一個(gè)數(shù)據(jù)RAM使能的SRAM使能信號(hào)取回當(dāng)前緩存行的指令。進(jìn)一步地,根據(jù)取指模式屬于非順序取指場(chǎng)景采用路預(yù)測(cè)模式進(jìn)行路預(yù)測(cè),具體包括若取指模式屬于非順序取指,即當(dāng)前指令與下一條指令的地址不連續(xù),則在分支目標(biāo)緩沖器的每一項(xiàng)中擴(kuò)展分支預(yù)測(cè)位,當(dāng)分支目標(biāo)緩沖器訪問(wèn)命中時(shí),通過(guò)分支預(yù)測(cè)位獲取預(yù)測(cè)的分支目標(biāo)地址和在緩存中預(yù)測(cè)的路,并通過(guò)路預(yù)測(cè)模式直接訪問(wèn)該預(yù)測(cè)的路。進(jìn)一步地,在分支目標(biāo)緩沖器的每一項(xiàng)中擴(kuò)展分支預(yù)測(cè)位,當(dāng)分支目標(biāo)緩沖器訪問(wèn)命中時(shí),通過(guò)分支預(yù)測(cè)位獲取預(yù)測(cè)的分支目標(biāo)地址和在緩存中預(yù)測(cè)的路,并通過(guò)路預(yù)測(cè)模式直接訪問(wèn)該預(yù)測(cè)的路,具體包括在建立分支目標(biāo)緩沖器的新項(xiàng)的同時(shí)擴(kuò)展分支預(yù)測(cè)位,該分支預(yù)測(cè)位的位數(shù)為 LogN,N是緩存的組相聯(lián)度;在取指過(guò)程中,若分支目標(biāo)緩沖器訪問(wèn)命中,則通過(guò)分支預(yù)測(cè)位同時(shí)得到分支目標(biāo)地址和預(yù)測(cè)的路,通過(guò)產(chǎn)生SRAM使能信號(hào)直接訪問(wèn)該預(yù)測(cè)的路,SRAM使能信號(hào)包括標(biāo)簽RAM和/或數(shù)據(jù)RAM的使能信號(hào);并通過(guò)路預(yù)測(cè)訪問(wèn)模式進(jìn)行路預(yù)測(cè)檢查;如果檢查所述路預(yù)測(cè)正確,則繼續(xù)下一組指令的取指操作;如果檢查路預(yù)測(cè)錯(cuò)誤, 則暫停下一組指令的取指操作,在下一周期通過(guò)執(zhí)行傳統(tǒng)緩存訪問(wèn)選出正確的路,并更新分支預(yù)測(cè)位。進(jìn)一步地,判斷取指模式還包括根據(jù)SRAM使能信號(hào)的反饋進(jìn)行判斷。為了解決上述技術(shù)問(wèn)題,一種超標(biāo)量處理器實(shí)現(xiàn)指令緩存路選擇的裝置,其特征在于,包括取指請(qǐng)求邏輯單元和路選擇融合緩存模塊,其中取指請(qǐng)求邏輯單元,用于至少根據(jù)緩存取指請(qǐng)求判斷取指模式;路選擇融合緩存模塊,用于根據(jù)取指模式屬于順序取指場(chǎng)景采用路歷史模式進(jìn)行路預(yù)測(cè),根據(jù)取指模式屬于非順序取指場(chǎng)景采用路預(yù)測(cè)模式進(jìn)行路預(yù)測(cè)。進(jìn)一步地,路選擇融合緩存模塊包括在取指單元中添加的當(dāng)前路指針寄存器、在分支目標(biāo)緩沖器中添加的分支預(yù)測(cè)位陣列,還包括路訪問(wèn)模式選擇單元和SRAM使能邏輯單元,其中當(dāng)前路指針寄存器,用于在取指模式屬于順序取指令場(chǎng)景,即取指模式為順序取指且當(dāng)前指令與下一指令在同一緩存行中,記錄當(dāng)前指令在緩存中所在的路及其是否有效,并輸出給路訪問(wèn)模式選擇單元;分支預(yù)測(cè)位陣列,用于在取指模式屬于非順序取指場(chǎng)景,即當(dāng)前指令與下一條指令的地址不連續(xù),并且在分支目標(biāo)緩沖器訪問(wèn)命中時(shí),指明分支目標(biāo)地址指令在緩存中所在的路,并將相應(yīng)項(xiàng)的分支預(yù)測(cè)位輸出給路訪問(wèn)模式選擇單元;路訪問(wèn)模式選擇單元,用于在輸入的當(dāng)前路指針有效且下一指令為連續(xù)取指時(shí), 選擇當(dāng)前路指針作為路預(yù)測(cè)的訪問(wèn)模式輸出,或者,在輸入的當(dāng)前路指針無(wú)效或下一指令為非連續(xù)取指,則選擇分支預(yù)測(cè)位作為路預(yù)測(cè)的訪問(wèn)模式;SRAM使能邏輯單元,用于根據(jù)路預(yù)測(cè)的訪問(wèn)模式產(chǎn)生SRAM使能信號(hào),包括Tag RAM和/或Data RAM的使能信號(hào),并反饋給取指請(qǐng)求邏輯單元。進(jìn)一步地,路選擇融合緩存模塊還包括添加在緩存中的順序路指針陣列,以及添加在路訪問(wèn)模式選擇單元和SRAM使能邏輯單元之間的順序路指針選擇單元和路指針選擇單元,其中路訪問(wèn)模式選擇單元將緩存中通過(guò)標(biāo)簽訪問(wèn)相應(yīng)數(shù)據(jù)的路序號(hào)傳輸給順序路指針選擇單元,并將選擇的當(dāng)前路指針或分支預(yù)測(cè)位作為路預(yù)測(cè)的訪問(wèn)模式輸出給路指針選擇單元;順序路指針陣列,用于在取指模式屬于順序行間取指場(chǎng)景,即取指模式為順序取指且當(dāng)前指令與下一指令不在同一緩存行中,根據(jù)標(biāo)簽比較歷史記錄中比較的命中路數(shù), 指明相應(yīng)的緩存行最后一條指令順序執(zhí)行時(shí)下一條指令所在的路及其是否有效,并輸出給順序路指針選擇單元;順序路指針選擇單元,用于根據(jù)路序號(hào)從順序路指針陣列中選擇相應(yīng)的順序路指針,并輸出給路指針選擇單元;路指針選擇單元,用于在下一指令為連續(xù)取指并與當(dāng)前指令處于同一緩存行中時(shí),選擇路訪問(wèn)模式選擇單元輸出的當(dāng)前路指針為路指針輸出,或者在下一指令為連續(xù)取指以及與當(dāng)前指令處于不同緩存行中,則選擇順序路指針選擇單元輸出的順序路指針作為路指針輸出;或者,在下一指令為非連續(xù)取指,則選擇路訪問(wèn)模式選擇單元輸出的分支預(yù)測(cè)位為路指針輸出;SRAM使能邏輯單元在路指針選擇單元輸出的路指針為順序路指針時(shí),若判斷該順序路指針有效,則根據(jù)該順序路指針指出的路產(chǎn)生標(biāo)簽RAM、數(shù)據(jù)RAM以及順序路指針RAM 的三種使能信號(hào)中的一種或多種作為SRAM使能信號(hào)反饋給取指請(qǐng)求邏輯單元;當(dāng)判斷該順序路指針無(wú)效,則產(chǎn)生標(biāo)簽RAM、數(shù)據(jù)RAM以及順序路指針RAM三種使能信號(hào)作為SRAM使能信號(hào)反饋給取指請(qǐng)求邏輯單元,并更新該順序路指針。進(jìn)一步地,SRAM使能邏輯單元在路指針選擇單元輸出的所述路指針為順序路指針時(shí),若判斷為非對(duì)齊取指,即為順序取指的下一指令與當(dāng)前指令處于同一取指組且分布在地址連續(xù)的兩個(gè)緩存行中,則將本緩存行的順序路指針與當(dāng)前路指針進(jìn)行比較,根據(jù)比較結(jié)果為不同判斷取指組保存在不同的SRAM中,則將產(chǎn)生的兩個(gè)相應(yīng)的數(shù)據(jù)RAM使能信號(hào)作為SRAM使能信號(hào);根據(jù)比較結(jié)果為相同判斷取指組保存在相同的SRAM中,則將產(chǎn)生的一個(gè)數(shù)據(jù)RAM 使能信號(hào)作為SRAM使能信號(hào);將SRAM使能信號(hào)反饋給取指請(qǐng)求邏輯單元。進(jìn)一步地,當(dāng)前路指針包括第一預(yù)測(cè)位和第一有效位,其中,第一預(yù)測(cè)位的位數(shù)為L(zhǎng)ogN,用于記錄當(dāng)前指令在所述緩存中所在的路;第一有效位的位數(shù)至少為1,用于判斷記錄的所述的路是否有效;順序路指針包括第二預(yù)測(cè)位和第二有效位,其中,第二預(yù)測(cè)位的位數(shù)為 LogN,用于指明緩存行最后一條指令順序執(zhí)行時(shí)下一條指令所在的路;第二有效位的位數(shù)至少為1,用于判斷指明的路是否有效;分支預(yù)測(cè)位的位數(shù)為L(zhǎng)ogN,用于指明分支目標(biāo)地址指令在緩存中所在的路;N是所述緩存的組相聯(lián)度。進(jìn)一步地,取指請(qǐng)求邏輯單元還根據(jù)SRAM使能邏輯單元反饋的SRAM使能信號(hào)判斷取指模式。本發(fā)明通過(guò)融合路選擇技術(shù)將路預(yù)測(cè)和路歷史二者結(jié)合起來(lái),針對(duì)不同取指場(chǎng)景分成多個(gè)不同路選擇策略供選擇,因而使得超標(biāo)量處理器從整體上取得了更好的能效性。 由于指令緩存中絕大部份為路選擇訪問(wèn),從而避免了大量非必要路的Tag比較及Data訪問(wèn),另一方面由于使用額外資源較少,使處理器的整體能耗降低。本發(fā)明提供的路選擇融合技術(shù)雖然也會(huì)受到預(yù)測(cè)錯(cuò)誤的影響,但是這種影響只有在非順序取指時(shí)才可能發(fā)生,所占比例很?。徊⑶?,該技術(shù)有效地縮短了非對(duì)齊取指組的取指延遲,減少了取指隊(duì)列(IFQ,Instruction Queue)空閑的情況,從而避免了其造成的流水線發(fā)射暫停,因此性能上相對(duì)于基礎(chǔ)處理器也有所上升。
圖1為現(xiàn)有的路預(yù)測(cè)技術(shù)示意圖;圖2為現(xiàn)有的路歷史技術(shù)與路預(yù)測(cè)技術(shù)的比較示意圖;圖3為本發(fā)明的超標(biāo)量處理器實(shí)現(xiàn)指令緩存路選擇的裝置實(shí)施例的結(jié)構(gòu)示意圖;圖4為本發(fā)明的超標(biāo)量處理器實(shí)現(xiàn)指令緩存路選擇的方法實(shí)施例流程圖。
具體實(shí)施例方式以下結(jié)合附圖和實(shí)施例對(duì)本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)地說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明的技術(shù)方案。本發(fā)明在傳統(tǒng)的ICache結(jié)構(gòu)上融合了路預(yù)測(cè)和路歷史兩種路選擇技術(shù),根據(jù)不同的取指場(chǎng)景選擇不同的路選擇策略,提供了超標(biāo)量處理器實(shí)現(xiàn)指令緩存路選擇的方法實(shí)施例及相應(yīng)的裝置實(shí)施例。其中,本發(fā)明的方法實(shí)施例的流程如圖3所示,包括如下步驟101 根據(jù)取指請(qǐng)求和SRAM使能信號(hào)判斷取指模式;102 116 根據(jù)取指模式分別屬于順序取指場(chǎng)景或非順序取指場(chǎng)景,相應(yīng)地采用路歷史模式或路預(yù)測(cè)模式進(jìn)行路預(yù)測(cè)。在上述方法實(shí)施例中,根據(jù)取指模式屬于順序取指場(chǎng)景采用路歷史模式進(jìn)行路預(yù)測(cè),具體包括102 105、109 若判斷取指模式屬于順序行內(nèi)取指,即取指模式為順序取指且當(dāng)前指令與下一指令在同一 Cache行中,則在指令取指單元(IFU,Instruction Fetch Unit) 中增加當(dāng)前路指針(CWL,Current Way Linker),用于記錄當(dāng)前指令在ICache中所在的路, 通過(guò)產(chǎn)生SRAM使能信號(hào)直接訪問(wèn)CWL指向的路;每一個(gè)CWL包括預(yù)測(cè)位和有效位,其中,預(yù)測(cè)位的位數(shù)為L(zhǎng)ogN,N是ICache的組相聯(lián)度;有效位的位數(shù)至少為1。SRAM使能信號(hào)包括I1ag RAM和/或Data RAM的使能信號(hào),來(lái)訪問(wèn)CTL所指向的路。106 108、109 若判斷取指模式屬于順序行間取指,即取指模式為順序取指且當(dāng)前指令與下一指令不在同一 Cache行中,則在ICache中的每一個(gè)Cache行增加順序路指針 (SWL, Sequential Way Linker),用于指明的該Cache行最后一條指令順序執(zhí)行時(shí)下一條指令所在的路;當(dāng)判斷當(dāng)前指令所在Cache行的SWL有效,則通過(guò)產(chǎn)生SRAM使能信號(hào)直接訪問(wèn)該SWL指明的路;否則,采用傳統(tǒng)的ICache訪問(wèn)方式下一條指令,并更新該Cache行的 SffL ;SRAM使能信號(hào)包括Tag RAM,Data RAM以及SWL RAM的使能信號(hào)中的一種或多種, 來(lái)訪問(wèn)SffL所指明的路。110、108、111 若判斷取指模式屬于非對(duì)齊取指,即取指模式為順序取指且一個(gè)取指組的指令分布在地址連續(xù)的兩個(gè)Cache行中,若判斷非對(duì)齊取指組保存在不同的SRAM 中,則通過(guò)SRAM使能邏輯同時(shí)產(chǎn)生兩個(gè)Data RAM來(lái)獲取分布于兩個(gè)Cache行中的指令;若判斷非對(duì)齊取指組保存在相同的SRAM中,則取回當(dāng)前Cache行的指令。在上述順序行間取指模式下,每一個(gè)SWL包括預(yù)測(cè)位和有效位,其中,預(yù)測(cè)位的位數(shù)為L(zhǎng)ogN,N是ICache的組相聯(lián)度;有效位的位數(shù)至少為1。如果判斷SWL有效,即其有效位的值為有效,則下一指令在ICache中的位置是唯一確定的,則可直接訪問(wèn)該確定位置下的數(shù)據(jù),無(wú)需采用路歷史訪問(wèn)模式下對(duì)所有Tag 以及其它路Data的訪問(wèn);否則,即SffL的有效位的值為無(wú)效,對(duì)下一條指令采用傳統(tǒng)的ICache訪問(wèn)方式。在上述非對(duì)齊取指模式下,每一個(gè)CWL或SWL包括預(yù)測(cè)位和有效位,其中,預(yù)測(cè)位的位數(shù)為L(zhǎng)ogN,N是ICache 的組相聯(lián)度;有效位的位數(shù)至少為1。在每次取指時(shí),根據(jù)程序計(jì)數(shù)器(PC)中的低位地址值,判斷該取指組為非對(duì)齊, 并在每次進(jìn)入一新Cache行取指時(shí),讀取并保存其SWL ;比較本Cache行的SWL與OVL,當(dāng)據(jù)SWL與CWL均有效且相應(yīng)預(yù)測(cè)位的值不同判斷出非對(duì)齊取指組中的指令保存在不同的SRAM時(shí),通過(guò)SARM使能邏輯產(chǎn)生2個(gè)Data RAM的使能信號(hào)來(lái)同時(shí)獲取分布于兩個(gè)Cache行中的指令;否則,均假設(shè)兩個(gè)SRAM相同,將在當(dāng)前 Cache行的指令取回。本發(fā)明使用以上方法的優(yōu)點(diǎn)在于,只利用現(xiàn)有部件,而不對(duì)ICache的結(jié)構(gòu)進(jìn)行修改,譬如進(jìn)行更改數(shù)據(jù)排布方式或增加讀口的修改。在上述方法實(shí)施例中,根據(jù)取指模式屬于非順序取指場(chǎng)景,采用路預(yù)測(cè)模式進(jìn)行路預(yù)測(cè),具體包括113 116、109 若判斷取指模式屬于非順序取指,即當(dāng)前指令與下一條指令的地址不連續(xù),則通過(guò)在BTB中的每一項(xiàng)擴(kuò)展的分支預(yù)測(cè)位(BWP,Branch Way Predictor)在 BTB訪問(wèn)命中時(shí)獲取預(yù)測(cè)的分支目標(biāo)地址和在ICache中預(yù)測(cè)的路,通過(guò)路預(yù)測(cè)模式直接訪問(wèn)該BWP預(yù)測(cè)的路。在上述非順序取指模式下,每一個(gè)BWP的預(yù)測(cè)位的位數(shù)為L(zhǎng)ogN,N是ICache的組相聯(lián)度。在建立BTB新項(xiàng)時(shí)建立BWP ;在取指過(guò)程中,如果訪問(wèn)BTB命中,則同時(shí)得到預(yù)測(cè)的分支目標(biāo)地址和BWP預(yù)測(cè)位預(yù)測(cè)的ICache的路,并通過(guò)SRAM使能邏輯直接訪問(wèn)該BWP預(yù)測(cè)的路,以及通過(guò)路預(yù)測(cè)訪問(wèn)模式進(jìn)行檢查;如果檢查預(yù)測(cè)正確,則繼續(xù)下一組指令的取指;如果檢查預(yù)測(cè)錯(cuò)誤,則暫停下一組指令的取指,下一周期執(zhí)行傳統(tǒng)ICache訪問(wèn),選出正確的路,并更新BTB中BWP。SRAM使能邏輯通過(guò)產(chǎn)生iTag RAM,Data RAM以及SWL RAM的使能信號(hào)中的一種或多種訪問(wèn)該BWP預(yù)測(cè)的路。本發(fā)明的裝置實(shí)施例的結(jié)構(gòu)如圖4所示,包括取指請(qǐng)求邏輯單元和本發(fā)明的路選擇融合緩存模塊實(shí)施例,其中取指請(qǐng)求邏輯單元,用于根據(jù)ICache取指請(qǐng)求和路選擇融合緩存裝置反饋的 SRAM使能信號(hào)判斷取指模式;路選擇融合緩存模塊,用于根據(jù)取指模式分別屬于順序取指場(chǎng)景或非順序取指場(chǎng)景,相應(yīng)地采用路歷史模式或路預(yù)測(cè)模式進(jìn)行路預(yù)測(cè)。在本發(fā)明的上述裝置實(shí)施例中,路選擇融合緩存模塊實(shí)施例包括ICache、在取指單元(圖4中未示出)中加入的CWL寄存器、在BTB中加入的BWP陣列,還包括Mode Sel 單元和SRAM使能邏輯單元,其中ICache,用于通過(guò)標(biāo)簽(Tag)訪問(wèn)相應(yīng)Cache行地址下的數(shù)據(jù);CffL寄存器,用于在取指模式屬于順序取指令場(chǎng)景時(shí),記錄當(dāng)前指令在ICache中所在的路及其是否有效,并輸出給Mode Sel單元;
BffP陣列,用于在取指模式屬于非順序取指場(chǎng)景且BTB訪問(wèn)命中時(shí)指明分支目標(biāo)地址指令在ICache中所在的路,并將相應(yīng)項(xiàng)的BWP輸出給ModeSel單元;Mode Sel (路訪問(wèn)模式選擇)單元,用于在輸入的CWL有效且下一指令為連續(xù)取指,則選擇CWL為路預(yù)測(cè)的訪問(wèn)模式輸出,或者在輸入的CWL無(wú)效或下一指令為非連續(xù)取指,則選擇BWP為路預(yù)測(cè)的訪問(wèn)模式輸出;SRAM使能邏輯單元,用于根據(jù)不同的路預(yù)測(cè)的訪問(wèn)模式產(chǎn)生SRAM使能信號(hào),包括 Tag RAM和/或Data RAM,并反饋給取指請(qǐng)求邏輯單元。上述裝置實(shí)施例中,還包括添加在ICache中的SWL陣列,以及添加在Mode Sel單元和SRAM使能邏輯單元之間的SWL Sel單元和Linker Sel單元,其中Mode Sel單元將ICache通過(guò)I^ag訪問(wèn)相應(yīng)數(shù)據(jù)的路序號(hào)傳輸給SWL Sel單元,并將選擇的路預(yù)測(cè)的訪問(wèn)模式輸出給Linker Sel單元;SffL陣列,用于在取指模式屬于順序行間取指場(chǎng)景下根據(jù)Tag比較歷史記錄的結(jié)果(即記錄的比較命中路數(shù)),指明相應(yīng)的Cache行最后一條指令順序執(zhí)行時(shí)下一條指令所在的路及其是否有效,并輸出給SWL Sel單元;SffL (順序路指針選擇)單元,用于根據(jù)Mode Sel單元傳輸?shù)穆沸蛱?hào)從SffL陣列中選擇相應(yīng)的SflfL,并輸出給Linker Sel單元;Linker 路指針選擇)單元,用于在下一指令為連續(xù)取指以及處于同一 Cache 行中,則選擇Mode Sel單元輸出的CffL為路指針,或者在下一指令為連續(xù)取指以及處于不同Cache行中,則選擇SWL Sel單元輸出的SffL為路指針;或者,在下一指令為非連續(xù)取指, 則選擇Mode Sel單元輸出的BWP為路指針;SRAM使能邏輯單元在Linker Sel單元選擇的路指針為SWL時(shí),若判斷該SWL有效,則根據(jù)觀L指出的路產(chǎn)生I1ag RAM,Data RAM以及SWL RAM三種使能信號(hào)中的一種或多種反饋給取指請(qǐng)求邏輯單元;當(dāng)判斷該SWL無(wú)效,則產(chǎn)生Tag RAM、Data RAM以及SWL RAM 三種使能信號(hào)給取指請(qǐng)求邏輯單元,并對(duì)SWL進(jìn)行更新。SRAM使能邏輯單元在Linker Sel單元選擇的路指針為SffL時(shí),若判斷為非對(duì)齊取指,即為順序取指下一指令與當(dāng)前指令處于同一取指組且分布在地址連續(xù)的兩個(gè)Cache行中,則將本Cache行的SWL與CWL進(jìn)行比較,根據(jù)比較結(jié)果為不同判斷非對(duì)齊取指組保存在不同SRAM中,則產(chǎn)生兩個(gè)相應(yīng)的Data RAM使能信號(hào)反饋給取指請(qǐng)求邏輯單元;根據(jù)比較結(jié)果為相同判斷非對(duì)齊取指組保存在相同SRAM中,則產(chǎn)生一個(gè)Data RAM使能信號(hào)反饋給取指請(qǐng)求邏輯單元。本發(fā)明的面向超標(biāo)量處理器中的指令緩存裝置,融合了兩種路選擇技術(shù),能夠根據(jù)不同取指場(chǎng)景中使用不同路選擇策略,因而從整體上取得了更好的能效性。一方面,由于指令緩存中幾乎全部為路選擇訪問(wèn),從而避免了絕大部分的Tag比較以及幾乎全部的非必要路的Data訪問(wèn);另一方面,由于指令緩存使用額外資源少,故從整體上降低了處理器能
^^ ο本發(fā)明的指令緩存裝置雖然也會(huì)受到預(yù)測(cè)錯(cuò)誤的影響,但是這種影響只有在非順序取指時(shí)才可能發(fā)生,故所占比例很小;并且,由于有效地縮短了非對(duì)齊取指組的取指延遲,減少了取指隊(duì)列空閑的情況,從而避免了由其造成的流水線發(fā)射暫停,因此性能就是相對(duì)于基礎(chǔ)處理器也有所上升。
12
對(duì)于本領(lǐng)域的專業(yè)人員來(lái)說(shuō),在了解了本發(fā)明內(nèi)容和原理后,能夠在不背離本發(fā)明的原理和范圍的情況下,根據(jù)本發(fā)明的方法進(jìn)行形式和細(xì)節(jié)上的各種修正和改變,但是這些基于本發(fā)明的修正和改變?nèi)栽诒景l(fā)明的權(quán)利要求保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種超標(biāo)量處理器實(shí)現(xiàn)指令緩存路選擇的方法,包括至少根據(jù)指令的取指請(qǐng)求判斷取指模式;根據(jù)所述取指模式屬于順序取指場(chǎng)景采用路歷史模式進(jìn)行所述路預(yù)測(cè),根據(jù)所述取指模式屬于非順序取指場(chǎng)景采用路預(yù)測(cè)模式進(jìn)行所述路預(yù)測(cè)。
2.按照權(quán)利要求1所述的方法,其特征在于,根據(jù)所述取指模式屬于順序取指場(chǎng)景采用路歷史模式進(jìn)行所述路預(yù)測(cè),具體包括若所述取指模式屬于順序行內(nèi)取指,即所述取指模式為順序取指且當(dāng)前指令與下一指令在同一緩存行中,則在指令取指單元中增加當(dāng)前路指針來(lái)記錄當(dāng)前指令在緩存中所在的路及其是否有效,通過(guò)產(chǎn)生SRAM使能信號(hào)直接訪問(wèn)所述當(dāng)前路指針指向的路;若所述取指模式屬于順序行間取指,即所述取指模式為順序取指且當(dāng)前指令與下一指令不在同一緩存行中,則在每一緩存行增加順序路指針來(lái)指明的該緩存行最后一條指令順序執(zhí)行時(shí)下一條指令所在的路及其是否有效;當(dāng)判斷當(dāng)前指令所在的緩存行的所述順序路指針有效,通過(guò)產(chǎn)生SRAM使能信號(hào)直接訪問(wèn)該順序路指針指明的路;否則,采用傳統(tǒng)的緩存訪問(wèn)方式訪問(wèn)下一條指令,并更新該緩存行的順序路指針。
3.按照權(quán)利要求2所述的方法,其特征在于,在所述取指模式屬于順序行內(nèi)取指的場(chǎng)景下,所述當(dāng)前路指針包括第一預(yù)測(cè)位和第一有效位,其中,第一預(yù)測(cè)位的位數(shù)為L(zhǎng)ogN,用于記錄所述當(dāng)前指令在所述緩存中所在的路; 所述有效位的位數(shù)至少為1,用于判斷記錄的所述的路是否有效;所述SRAM使能信號(hào)包括標(biāo)簽RAM和/或數(shù)據(jù)RAM的使能信號(hào);在所述取指模式屬于順序行間取指的場(chǎng)景下,所述順序路指針包括第二預(yù)測(cè)位和第二有效位,其中,第二預(yù)測(cè)位的位數(shù)為L(zhǎng)ogN,用于指明所述緩存行最后一條指令順序執(zhí)行時(shí)下一條指令所在的路;第二有效位的位數(shù)至少為1,用于判斷指明的路是否有效;所述SRAM使能信號(hào)包括標(biāo)簽RAM、數(shù)據(jù)RAM以及順序路指針RAM的使能信號(hào)中的一種或多種;所述N是所述緩存的組相聯(lián)度。
4.按照權(quán)利要求2所述的方法,其特征在于,根據(jù)所述取指模式屬于順序取指場(chǎng)景采用路歷史模式進(jìn)行所述路預(yù)測(cè),還包括若判斷所述取指模式屬于非對(duì)齊取指,即所述取指模式為所述順序取指,且同一個(gè)取指組的指令分布在地址連續(xù)的兩個(gè)緩存行中,當(dāng)判斷所述取指組保存在不同的SRAM中,則通過(guò)產(chǎn)生兩個(gè)數(shù)據(jù)RAM使能的SRAM使能信號(hào)同時(shí)獲取分布于兩個(gè)緩存行中的指令;若判斷所述取指組保存在相同的SRAM中,則通過(guò)產(chǎn)生一個(gè)數(shù)據(jù)RAM使能的SRAM使能信號(hào)取回當(dāng)前緩存行的指令。
5.按照權(quán)利要求1所述的方法,其特征在于,根據(jù)所述取指模式屬于非順序取指場(chǎng)景采用路預(yù)測(cè)模式進(jìn)行所述路預(yù)測(cè),具體包括若所述取指模式屬于非順序取指,即當(dāng)前指令與下一條指令的地址不連續(xù),則在分支目標(biāo)緩沖器的每一項(xiàng)中擴(kuò)展分支預(yù)測(cè)位,當(dāng)所述分支目標(biāo)緩沖器訪問(wèn)命中時(shí),通過(guò)分支預(yù)測(cè)位獲取預(yù)測(cè)的分支目標(biāo)地址和在緩存中預(yù)測(cè)的路,并通過(guò)路預(yù)測(cè)模式直接訪問(wèn)該預(yù)測(cè)的路。
6.按照權(quán)利要求5所述的方法,其特征在于,所述在分支目標(biāo)緩沖器的每一項(xiàng)中擴(kuò)展分支預(yù)測(cè)位,當(dāng)所述分支目標(biāo)緩沖器訪問(wèn)命中時(shí),通過(guò)分支預(yù)測(cè)位獲取預(yù)測(cè)的分支目標(biāo)地址和在緩存中預(yù)測(cè)的路,并通過(guò)路預(yù)測(cè)模式直接訪問(wèn)該預(yù)測(cè)的路,具體包括在建立所述分支目標(biāo)緩沖器的新項(xiàng)的同時(shí)擴(kuò)展所述分支預(yù)測(cè)位,該分支預(yù)測(cè)位的位數(shù)為L(zhǎng)ogN,所述N是所述緩存的組相聯(lián)度;在取指過(guò)程中,若所述分支目標(biāo)緩沖器訪問(wèn)命中,則通過(guò)所述分支預(yù)測(cè)位同時(shí)得到所述分支目標(biāo)地址和所述預(yù)測(cè)的路,通過(guò)產(chǎn)生SRAM使能信號(hào)直接訪問(wèn)該預(yù)測(cè)的路,所述SRAM 使能信號(hào)包括標(biāo)簽RAM和/或數(shù)據(jù)RAM的使能信號(hào);并通過(guò)路預(yù)測(cè)訪問(wèn)模式進(jìn)行路預(yù)測(cè)檢查;如果檢查所述路預(yù)測(cè)正確,則繼續(xù)下一組指令的取指操作;如果檢查所述路預(yù)測(cè)錯(cuò)誤, 則暫停所述下一組指令的取指操作,在下一周期通過(guò)執(zhí)行傳統(tǒng)緩存訪問(wèn)選出正確的路,并更新所述分支預(yù)測(cè)位。
7.按照權(quán)利要求2至6任一項(xiàng)所述的方法,其特征在于,所述判斷取指模式還包括根據(jù)所述SRAM使能信號(hào)的反饋進(jìn)行所述判斷。
8.一種超標(biāo)量處理器實(shí)現(xiàn)指令緩存路選擇的裝置,其特征在于,包括取指請(qǐng)求邏輯單元和路選擇融合緩存模塊,其中取指請(qǐng)求邏輯單元,用于至少根據(jù)緩存取指請(qǐng)求判斷取指模式; 路選擇融合緩存模塊,用于根據(jù)所述取指模式屬于順序取指場(chǎng)景采用路歷史模式進(jìn)行所述路預(yù)測(cè),根據(jù)所述取指模式屬于非順序取指場(chǎng)景采用路預(yù)測(cè)模式進(jìn)行所述路預(yù)測(cè)。
9.按照權(quán)利要求8所述的裝置,其特征在于,所述路選擇融合緩存模塊包括在取指單元中添加的當(dāng)前路指針寄存器、在分支目標(biāo)緩沖器中添加的分支預(yù)測(cè)位陣列,還包括路訪問(wèn)模式選擇單元和SRAM使能邏輯單元,其中當(dāng)前路指針寄存器,用于在所述取指模式屬于順序取指令場(chǎng)景,即所述取指模式為順序取指且當(dāng)前指令與下一指令在同一緩存行中,記錄當(dāng)前指令在緩存中所在的路及其是否有效,并輸出給路訪問(wèn)模式選擇單元;分支預(yù)測(cè)位陣列,用于在所述取指模式屬于非順序取指場(chǎng)景,即當(dāng)前指令與下一條指令的地址不連續(xù),并且在分支目標(biāo)緩沖器訪問(wèn)命中時(shí),指明分支目標(biāo)地址指令在所述緩存中所在的路,并將相應(yīng)項(xiàng)的分支預(yù)測(cè)位輸出給路訪問(wèn)模式選擇單元;路訪問(wèn)模式選擇單元,用于在輸入的所述當(dāng)前路指針有效且下一指令為連續(xù)取指時(shí), 選擇所述當(dāng)前路指針作為路預(yù)測(cè)的訪問(wèn)模式輸出,或者,在輸入的所述當(dāng)前路指針無(wú)效或所述下一指令為非連續(xù)取指,則選擇所述分支預(yù)測(cè)位作為路預(yù)測(cè)的訪問(wèn)模式;SRAM使能邏輯單元,用于根據(jù)所述路預(yù)測(cè)的訪問(wèn)模式產(chǎn)生SRAM使能信號(hào),包括Tag RAM和/或Data RAM的使能信號(hào),并反饋給所述取指請(qǐng)求邏輯單元。
10.按照權(quán)利要求9所述的裝置,其特征在于,所述路選擇融合緩存模塊還包括添加在所述緩存中的順序路指針陣列,以及添加在所述路訪問(wèn)模式選擇單元和所述SRAM使能邏輯單元之間的順序路指針選擇單元和路指針選擇單元,其中所述路訪問(wèn)模式選擇單元將所述緩存中通過(guò)標(biāo)簽訪問(wèn)相應(yīng)數(shù)據(jù)的路序號(hào)傳輸給順序路指針選擇單元,并將選擇的所述當(dāng)前路指針或所述分支預(yù)測(cè)位作為所述路預(yù)測(cè)的訪問(wèn)模式輸出給路指針選擇單元;順序路指針陣列,用于在所述取指模式屬于順序行間取指場(chǎng)景,即所述取指模式為順序取指且當(dāng)前指令與下一指令不在同一緩存行中,根據(jù)標(biāo)簽比較歷史記錄中所述比較的命中路數(shù),指明相應(yīng)的緩存行最后一條指令順序執(zhí)行時(shí)下一條指令所在的路及其是否有效, 并輸出給順序路指針選擇單元;順序路指針選擇單元,用于根據(jù)所述路序號(hào)從所述順序路指針陣列中選擇相應(yīng)的順序路指針,并輸出給路指針選擇單元;路指針選擇單元,用于在下一指令為連續(xù)取指并與當(dāng)前指令處于同一緩存行中時(shí),選擇所述路訪問(wèn)模式選擇單元輸出的所述當(dāng)前路指針為路指針輸出,或者在下一指令為連續(xù)取指以及與當(dāng)前指令處于不同緩存行中,則選擇順序路指針選擇單元輸出的所述順序路指針作為路指針輸出;或者,在下一指令為非連續(xù)取指,則選擇所述路訪問(wèn)模式選擇單元輸出的所述分支預(yù)測(cè)位為路指針輸出;所述SRAM使能邏輯單元在所述路指針選擇單元輸出的所述路指針為所述順序路指針時(shí),若判斷該順序路指針有效,則根據(jù)該順序路指針指出的路產(chǎn)生標(biāo)簽RAM、數(shù)據(jù)RAM以及順序路指針RAM的三種使能信號(hào)中的一種或多種作為所述SRAM使能信號(hào)反饋給所述取指請(qǐng)求邏輯單元;當(dāng)判斷該順序路指針無(wú)效,則產(chǎn)生標(biāo)簽RAM、數(shù)據(jù)RAM以及順序路指針RAM 三種使能信號(hào)作為所述SRAM使能信號(hào)反饋給所述取指請(qǐng)求邏輯單元,并更新該順序路指針。
11.按照權(quán)利要求10所述的裝置,其特征在于,所述SRAM使能邏輯單元在所述路指針選擇單元輸出的所述路指針為所述順序路指針時(shí),若判斷為非對(duì)齊取指,即為順序取指的下一指令與當(dāng)前指令處于同一取指組且分布在地址連續(xù)的兩個(gè)緩存行中,則將本緩存行的所述順序路指針與所述當(dāng)前路指針進(jìn)行比較, 根據(jù)比較結(jié)果為不同判斷所述取指組保存在不同的SRAM中,則將產(chǎn)生的兩個(gè)相應(yīng)的數(shù)據(jù) RAM使能信號(hào)作為所述SRAM使能信號(hào);根據(jù)比較結(jié)果為相同判斷所述取指組保存在相同的 SRAM中,則將產(chǎn)生的一個(gè)數(shù)據(jù)RAM使能信號(hào)作為所述SRAM使能信號(hào);將所述SRAM使能信號(hào)反饋給取指請(qǐng)求邏輯單元。
12.按照權(quán)利要求10所述的裝置,其特征在于,所述當(dāng)前路指針包括第一預(yù)測(cè)位和第一有效位,其中,第一預(yù)測(cè)位的位數(shù)為L(zhǎng)ogN,用于記錄所述當(dāng)前指令在所述緩存中所在的路;第一有效位的位數(shù)至少為1,用于判斷記錄的所述的路是否有效;所述順序路指針包括第二預(yù)測(cè)位和第二有效位,其中,第二預(yù)測(cè)位的位數(shù)為L(zhǎng)ogN,用于指明所述緩存行最后一條指令順序執(zhí)行時(shí)下一條指令所在的路;第二有效位的位數(shù)至少為1,用于判斷指明的路是否有效;所述分支預(yù)測(cè)位的位數(shù)為L(zhǎng)ogN,用于指明所述分支目標(biāo)地址指令在所述緩存中所在的路;所述N是所述緩存的組相聯(lián)度。
13.按照權(quán)利要求9至12任一項(xiàng)所述的裝置,其特征在于,所述取指請(qǐng)求邏輯單元還根據(jù)所述SRAM使能邏輯單元反饋的所述SRAM使能信號(hào)判斷所述取指模式。
全文摘要
本發(fā)明披露了超標(biāo)量處理器實(shí)現(xiàn)指令緩存路選擇的方法及裝置,其中方法包括至少根據(jù)指令的取指請(qǐng)求判斷取指模式;根據(jù)取指模式屬于順序取指場(chǎng)景采用路歷史模式進(jìn)行路預(yù)測(cè),根據(jù)取指模式屬于非順序取指場(chǎng)景采用路預(yù)測(cè)模式進(jìn)行路預(yù)測(cè)。本發(fā)明使得超標(biāo)量處理器從整體上取得了更好的能效性;由于避免了大量非必要路的Tag比較及Data訪問(wèn),以及由于使用額外資源較少,故使得處理器的整體能耗降低。
文檔編號(hào)G06F9/38GK102306092SQ20111021654
公開(kāi)日2012年1月4日 申請(qǐng)日期2011年7月29日 優(yōu)先權(quán)日2011年7月29日
發(fā)明者佟冬, 宋天寶, 程旭, 謝子超, 陸俊林 申請(qǐng)人:北京北大眾志微系統(tǒng)科技有限責(zé)任公司