用于使用常量高速緩沖存儲器將字面數(shù)產(chǎn)生的數(shù)據(jù)更高效地轉(zhuǎn)發(fā)到依賴指令的方法和設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及微處理器。
【背景技術(shù)】
[0002]在典型中央處理單元(CPU)管線流中,管線中的指令將首先獲得其操作數(shù),并且接著執(zhí)行,然后最終回寫結(jié)果,并且可能將結(jié)果轉(zhuǎn)發(fā)到后續(xù)的依賴性消耗指令。根據(jù)CPU微型架構(gòu),這個進(jìn)程通??缭蕉鄠€管線級發(fā)生以便優(yōu)化性能和頻率。
[0003]在含有多個執(zhí)行管線的超標(biāo)量處理器中,將一個指令的結(jié)果轉(zhuǎn)發(fā)到管線中的一或多個消耗指令,可能是對性能至關(guān)重要的功能,如果無法高效地執(zhí)行這個功能,可能會導(dǎo)致管線停滯。數(shù)據(jù)相依性停滯是最常見的停滯,其涉及指令嘗試分派到其相應(yīng)管線以便執(zhí)行,其中停滯的指令等待操作數(shù)的產(chǎn)生者完成。將所需的操作數(shù)從其產(chǎn)生者轉(zhuǎn)發(fā)到停滯的指令時的延遲,會導(dǎo)致CPU性能降低。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的實施例涉及用于使用用于存儲常量(字面數(shù)或立即數(shù))的高速緩沖存儲器將字面數(shù)產(chǎn)生的數(shù)據(jù)更高效地轉(zhuǎn)發(fā)到依賴指令的系統(tǒng)和方法。
[0005]在一個實施例中,處理器包含寄存器、第一管線、高速緩沖存儲器和控制器。所述控制器響應(yīng)于第一管線對指令進(jìn)行解碼而在高速緩沖存儲器中的條目中存儲值,其中所述指令在完成執(zhí)行后即刻將所述值寫入到所述寄存器,并且其中在所述第一管線對所述指令進(jìn)行解碼時確定所述值或者所述值是可用的。所述控制器在所述條目中設(shè)置標(biāo)記字段以用所述寄存器標(biāo)記所述條目,并且將所述條目中的標(biāo)記字段設(shè)置成指示所述條目是有效的。所述指令可以是移動立即數(shù)指令。
[0006]在另一實施例中,一種方法包含:在第一管線中對第一指令進(jìn)行解碼,其中所述第一指令在完成執(zhí)行后即刻將值寫入到寄存器,并且其中在所述第一管線對所述第一指令進(jìn)行解碼時,確定所述值或者所述值是可用的。所述方法進(jìn)一步包含在高速緩沖存儲器中的條目中存儲所述值;用所述寄存器標(biāo)記所述條目;以及將所述條目設(shè)置成有效。
[0007]在另一實施例中,一種處理器包含:用以對第一指令進(jìn)行解碼的第一管線,其中所述第一指令在完成執(zhí)行后即刻將值寫入到寄存器,并且其中在所述第一管線對所述第一指令進(jìn)行解碼時,確定所述值或者所述值是可用的。所述處理器進(jìn)一步包含:用于存儲的裝置,所述用于存儲的裝置用以在高速緩沖存儲器中的條目中存儲值;用于標(biāo)記的裝置,所述用于標(biāo)記的裝置用以用寄存器標(biāo)記所述條目;以及用于設(shè)置的裝置,所述用于設(shè)置的裝置用以將所述條目設(shè)置成有效的。
[0008]在另一實施例中,一種非暫時性計算機(jī)可讀媒體存儲有指令以使處理器執(zhí)行一個進(jìn)程。所述進(jìn)程包含:在第一管線中對第一指令進(jìn)行解碼,其中所述第一指令在完成執(zhí)行后即刻將值寫入到寄存器,并且其中在所述第一管線對所述第一指令進(jìn)行解碼時確定所述值或者所述值是可用的;在高速緩沖存儲器中的條目中存儲所述值;用所述寄存器標(biāo)記所述條目;以及將所述條目設(shè)置成有效的。
【附圖說明】
[0009]呈現(xiàn)附圖以協(xié)助描述本發(fā)明的實施例,且提供所述圖式僅用于說明實施例而非對其加以限制。
[0010]圖1說明根據(jù)實施例的處理器。
[0011 ] 圖2說明根據(jù)實施例的方法。
[0012]圖3說明可以應(yīng)用實施例的無線通信系統(tǒng)。
【具體實施方式】
[0013]在以下針對本發(fā)明的特定實施例的描述和相關(guān)圖式中揭示本發(fā)明的若干方面??稍诓幻撾x本發(fā)明的范圍的情況下設(shè)計替代實施例。另外,將不會詳細(xì)描述或?qū)⑹÷员景l(fā)明的眾所周知的元件以免混淆本發(fā)明的相關(guān)細(xì)節(jié)。
[0014]本文中使用詞語“示范性”意指“充當(dāng)實例、例子或說明”。在本文中被描述為“示范性”的任何實施例未必被解釋為比其它實施例優(yōu)選或有利。同樣,術(shù)語“本發(fā)明的實施例”并非要求本發(fā)明的所有實施例包含所論述的特征、優(yōu)勢或操作模式。
[0015]本文中所使用的術(shù)語僅僅是為了描述特定實施例的目的,且并不希望限制本發(fā)明的實施例。如本文中所使用,單數(shù)形式“一”、“一個”和“所述”意圖還包含復(fù)數(shù)形式,除非上下文另外清楚地指示。將進(jìn)一步理解,術(shù)語“包括”和/或“包含”在于本文中使用時指定所陳述的特征、整數(shù)、步驟、操作、元件和/或組件的存在,但并不排除一或多個其它特征、整數(shù)、步驟、操作、元件、組件和/或其群組的存在或添加。
[0016]另外,依據(jù)待由(例如)計算裝置的元件執(zhí)行的動作序列來描述許多實施例。將認(rèn)識到,可由特定電路(例如,專用集成電路(ASIC))、由通過一或多個處理器執(zhí)行的程序指令或由兩者的組合來執(zhí)行本文中所述的各種動作。另外,可認(rèn)為本文中所描述的這些動作序列完全體現(xiàn)于任何形式的計算機(jī)可讀存儲媒體內(nèi),所述計算機(jī)可讀存儲媒體中存儲有對應(yīng)計算機(jī)指令集合,所述指令在被執(zhí)行時將使相關(guān)聯(lián)的處理器執(zhí)行本文中所描述的功能性。因此,本發(fā)明的各種方面可以若干不同形式來體現(xiàn),所有所述形式均被涵蓋在所主張的主題的范圍內(nèi)。另外,對于本文中所描述的實施例中的每一者來說,任何此些實施例的對應(yīng)形式可在本文中被描述為(例如)“經(jīng)配置以(執(zhí)行所描述的動作)的邏輯”。
[0017]圖1說明處理器100的組件,其中為了便于說明,并未說明所有組件。許多處理器是超標(biāo)量處理器,采用一個以上管線。圖1中說明了兩個管線,標(biāo)記為102a和102b,但是實際上超標(biāo)量處理器中可能存在兩個以上管線。為簡單起見,每一管線中展示了三個級,但是實際上很可能使用不止三個級。
[0018]圖1的管線中說明的是指令提取級104a和104b,解碼級106a和106b,和執(zhí)行級108a和108b。管線可以包含其它級,僅舉幾例,例如寄存器提取、危險檢查、高速緩沖存儲器命中檢測、數(shù)據(jù)提取和用于加載和寄存器到寄存器操作的回寫??刂破鞴δ軉卧?,標(biāo)記為110,控制管線102a和102b 0
[0019]移動指令是用于將數(shù)據(jù)從一個位置移動(復(fù)制或?qū)懭?到另一位置的常用指令。移動指令通常寫成MOV,并且這里將遵照這條慣例。移動指令的一個常見用法是將常量的值復(fù)制到架構(gòu)式寄存器中。有待復(fù)制的常量值可被稱為立即數(shù)(immediate)或字面數(shù)(literal)。用于將常量移動到寄存器的移動指令可以稱為移動立即數(shù)指令和并且寫成MOVRm#constant,其中constant是指常量值,并且Rm是指常量值被寫入的架構(gòu)式寄存器。在圖1中,寄存器Rm標(biāo)記為118,并且被說明為寄存器堆120內(nèi)的一個寄存器。
[0020]在對移動立即數(shù)指令進(jìn)行解碼后,實施例即刻將常量作為條目的一部分存儲在高速緩沖存儲器中,所述高速緩沖存儲器被稱作常量高速緩沖存儲器,并且在圖1中標(biāo)記為112。常量高速緩沖存儲器112中的條目在圖1中標(biāo)記為114,并且包括三個字段:標(biāo)記字段,標(biāo)記為114a ;常量字段,標(biāo)記為114b,和旗標(biāo)字段,標(biāo)記為114c。正如其名稱暗示的,常量字段114b存儲與條目相關(guān)聯(lián)的常量值。標(biāo)記字段114a識別常量值將要寫入(或移動)到的寄存器。旗標(biāo)字段114c包括一或多個位,用以指示條目114的狀態(tài)。對于一些實施例,旗標(biāo)字段114c的寬度可以是一位,指示條目是否有效。
[0021]常量高速緩沖存儲器112可以在處理器100中作為寄存器堆實現(xiàn)。在圖1的圖示中,常量高速緩沖存儲器112展示為與寄存器堆120分開的結(jié)構(gòu)。然而,常量高速緩沖存儲器112未必需要獨立于寄存器堆120。舉例來說,常量高速緩沖存儲器112可以是寄存器堆120的一部分,或者這兩個結(jié)構(gòu)都可以包含于較大的寄存器堆結(jié)構(gòu)中。
[0022]移動立即數(shù)指令不需要隨后執(zhí)行以計算其結(jié)果。通常,當(dāng)產(chǎn)生一個常量時,所述常量立即被隨后(按編程順序)消耗指令消耗掉。通過利用常量高速緩沖存儲器112,在將常量值寫入到目的地架構(gòu)式寄存器之前,隨后消耗指令可以存取所存儲的常量值。
[0023]常量高速緩沖存儲器112的內(nèi)容可以被看作組織成一個表格,其中存儲于條目中的常量值通過移動立即數(shù)指令寫入,并且根據(jù)移動立即數(shù)指令的目的地寄存器而被標(biāo)記。考慮存儲于常量高速緩沖存儲器112中的移動立即數(shù)指令的結(jié)果(常量值)和依賴于移動立即數(shù)指令的隨后(按編程順序)指令,其中隨后指令的操作數(shù)是移動立即數(shù)指令將要移動到目的地寄存器的常量值。所述隨后指令是消耗指令,并且目的地寄存器是移動指令的目標(biāo)寄存器。
[0024]對于一個實施例,執(zhí)行消耗指令不需要等待轉(zhuǎn)發(fā)移動立即數(shù)指令的結(jié)果,也不需要等待移動立即數(shù)指令完成執(zhí)行。實情為,消耗指令可以使用存儲于常量高速緩沖存儲器112中與其依賴的移動立即數(shù)指令相關(guān)聯(lián)的條目中的