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

一種降低cpu功耗的方法、裝置及一種低功耗cpu的制作方法

文檔序號:6607880閱讀:141來源:國知局
專利名稱:一種降低cpu功耗的方法、裝置及一種低功耗cpu的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及微處理器技術(shù)領(lǐng)域,特別是涉及一種降低CPU功耗的方法、裝置及一 種低功耗CPU。
背景技術(shù)
CPU的流水線結(jié)構(gòu)最初在RISC (精簡指令集)CPU的硬件設計上得到廣泛應用,但 今天無論是RISC CPU還是CISC(復雜指令集)CPU,在硬件實現(xiàn)上都采用了多極流水線結(jié) 構(gòu)。以經(jīng)典的RISC CPU五級流水線結(jié)構(gòu)為例,參照圖1所示,包括五個步驟IF、DE、EX、MEM 和WB,各步驟功能如下1) IF步驟包括從指令存儲器(例如RAM、Cache等)中讀出指令,然后將指令存 入IF/DE流水線寄存器Rif等;2)DE步驟包括把從Rif取出來的指令進行譯碼,生成當前指令的控制信息,從寄 存器堆GRF讀出數(shù)據(jù),把控制信息和數(shù)據(jù)存入DE/EX流水線寄存器Rde等。其中,控制信 息包括對后續(xù)步驟EX的控制信息(E)、對步驟MEM的控制信息(M)和對步驟WB的控制信 息(W),E包括運算操作控制(ALUop)、ALU數(shù)據(jù)來源選擇(ALUSrc)等;M包括是否讀內(nèi)存 (Memread)、是否寫內(nèi)存(Memwrite)等;W包括是否寫GRF (GRFWrite)、GRF數(shù)據(jù)來源選擇 (MemReg)、所寫GRF寄存器地址(GRFWaddr)等;3) EX步驟包括從Rde獲得Ε、M、W,從bypass或Rde獲得執(zhí)行數(shù)據(jù)運算用的數(shù)據(jù), 根據(jù)E執(zhí)行數(shù)據(jù)運算,把運算結(jié)果寫入EX/MEM流水線寄存器Rex,把M、W寫入Rex等;4) MEM步驟包括從Rex獲得M、W,根據(jù)M對從bypass或Rex獲得的內(nèi)容進行相應 的操作,根據(jù)M對操作結(jié)果進行訪問內(nèi)存的操作,根據(jù)M對操作結(jié)果或從bypass或Rex獲得 的內(nèi)容進行寫入MEM/WB流水線寄存器Rmem的操作,把W寫入Rmem等;5) WB步驟包括從Rmem獲得W,根據(jù)W對從Rmem獲得的內(nèi)容進行寫入GRF的操作等。 如果虛線所示的bypass路徑存在,則將相應內(nèi)容存入MEM/WB流水線寄存器R 。還需要說明的是,圖1中1) INSTx, INSTX+1,INSTx+2,INSTx+3,INSTx+4……代表 CPU 順序執(zhí)行的連續(xù)的指令, 每條指令都要流過CPU流水線上五個處理步驟;2)Ty, Ty+1,Ty+2,Ty+3,Ty+4,Ty+5,……代表CPU中每個時鐘周期的開始時刻,兩個相 鄰的時間點相差一個CPU的時鐘周期; 3)指令間的連線代表CPU中的bypass路徑,如Rex到EX的連線,Rmem到MEM或EX 的連線,Rwb到MEM或EX的連線。bypass被用來把流水線上一條指令產(chǎn)生的數(shù)據(jù)在其寫入 寄存器堆GRF之前向流水線上使用該數(shù)據(jù)的后續(xù)指令直接傳輸。其中虛線表示的bypass路 徑可能存在也可能不存在,這取決于GRF設計,如果位于DE步驟的讀GRF發(fā)生在下降沿,位 于WB步驟的寫GRF發(fā)生在上升沿,并且時鐘上升沿寫入的數(shù)據(jù)當拍時鐘下降沿能夠讀到, 那么此bypass路徑不需要,否則就需要安排這個路徑; 4)如果上述虛線所示的bypass路徑存在,則WB步驟后就存在流水線寄存器Rwb,否則無需此流水線寄存器;5)圖中只示出了指令I(lǐng)NSTx到其后三條指令的bypass路徑,實際上,每條指令都 存在直接將數(shù)據(jù)傳輸?shù)胶罄m(xù)指令的bypass路徑。上述Bypass裝置優(yōu)化了 CPU流水線結(jié)構(gòu),如果沒有Bypass裝置,CPU的指令執(zhí)行 效率會出現(xiàn)非常巨大的損失,降到一半甚至更差。因為指令的執(zhí)行一般需要先從寄存器堆 GRF中讀取原操作數(shù),指令執(zhí)行完畢后需要將結(jié)果即目標操作數(shù)寫入GRF。而程序通常普遍 具有緊密的“寫-讀”數(shù)據(jù)依賴,即一條指令產(chǎn)生的數(shù)據(jù)(寫)被緊隨其后的第1、2、3…條 指令所使用(讀)。由于指令的執(zhí)行是流水線方式,讀GRF與寫GRF之間相距數(shù)個時鐘周 期,而相鄰的指令之間為了執(zhí)行效率的緣故盡可能只相隔一個周期。后面指令要使用前面 指令的執(zhí)行結(jié)果,如果沒有bypass路徑,這條指令就需要等到前面的指令將結(jié)果寫入GRF 后再將它讀出來,這樣會阻塞流水線多個周期。Bypass是一個旁路裝置,在不影響該數(shù)據(jù)寫 入GRF的情況下將此數(shù)據(jù)直接送給需要使用它的緊隨其后的第1、2、3…條指令,數(shù)據(jù)可以 直接送達使用它們的電路,而不是按節(jié)拍經(jīng)過流水線各級裝置。在CPU運行過程中每條指令的執(zhí)行因該指令而定,有些進行所有五個步驟,有些 可能只進行其中幾個。進行哪些步驟由DE步驟中譯碼后的控制信息進行控制。如果某個 步驟不執(zhí)行,那么該步驟之前流水線寄存器中的內(nèi)容要在該步驟對應的工作時間里,被傳 遞到該步驟之后的那個流水線寄存器。從上述CPU設計來看,目前的CPU流水線結(jié)構(gòu)由于有了 Bypass裝置的優(yōu)化,大大 提高了 CPU的執(zhí)行效率。但是,在保證效率的同時如何降低CPU的功耗,生產(chǎn)盡可能低功耗 的CPU,是微處理器領(lǐng)域未來的一個發(fā)展趨勢,也是本發(fā)明要解決的一個問題。

發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種降低CPU功耗的方法、裝置及一種低功耗 CPU,以降低CPU功耗。為了解決上述問題,本發(fā)明公開了一種降低CPU功耗的方法,包括比較當前指令與后η級指令的寫寄存器堆操作,如果當前指令與后η級指令中的 至少一條指令都執(zhí)行寫操作,并且至少一條指令的所寫寄存器地址與當前指令所寫寄存器 地址相同,則省略當前指令寫該寄存器地址的操作;其中,η的取值為CPU流水線上bypass 路徑的最大跨度值。優(yōu)選的,所述方法還包括如果后η級指令中沒有指令執(zhí)行寫操作,或者后η級指 令中的至少一條指令執(zhí)行寫操作,但執(zhí)行寫操作的指令中所有的寫寄存器地址都與當前指 令所寫寄存器地址不同,則執(zhí)行當前指令寫該寄存器地址的操作。優(yōu)選的,所述比較包括獲得當前指令和后η級指令的寫寄存器堆的控制信息,其 中每條指令的控制信息包括是否寫的信息和所寫寄存器地址;當根據(jù)所述控制信息判斷當 前指令為寫寄存器堆時,對后η級指令每條進行如下判斷判斷是否寫寄存器堆,如果寫, 則繼續(xù)判斷該指令的所寫寄存器地址是否與當前指令的所寫寄存器地址相同。優(yōu)選的,所述方法還包括如果省略當前指令寫該寄存器地址的操作,則后η級指 令中的某條指令通過bypass路徑獲得當前指令要寫入該寄存器地址的結(jié)果;如果執(zhí)行當 前指令寫該寄存器地址的操作,則后η級指令中的某條指令從該寄存器地址中讀取當前指令寫入的結(jié)果,或者,通過bypass路徑獲得當前指令要寫入該寄存器地址的結(jié)果。優(yōu)選的,所述方法通過以下方式獲得當前指令和后η級指令的寫寄存器堆的控制 信息:CPU五級流水線的寄存器依次為Rif、Rde、Rex、Rmem^ Rwb,則η的最大值為3 ;當前指令的 寫寄存器堆的控制信息從流水線寄存器Rmem獲得;后面第一級指令的寫寄存器堆的控制信 息從流水線寄存器Rex獲得;后面第二級指令的寫寄存器堆的控制信息從流水線寄存器Rde 獲得;后面第三級指令的寫寄存器堆的控制信息從寫入流水線寄存器Rde之前的指令譯碼 結(jié)果中獲得。相應的本發(fā)明還提供了一種降低CPU功耗的裝置,包括比較模塊,用于比較當前指令與后η級指令的寫寄存器堆操作;其中,η的取值為 CPU流水線上bypass路徑的最大跨度值;操作控制模塊,用于當前指令與后η級指令中的至少一條指令都執(zhí)行寫操作,并 且至少一條指令的所寫寄存器地址與當前指令所寫寄存器地址相同時,控制當前指令寫該 寄存器地址的操作省略。優(yōu)選的,如果后η級指令中沒有指令執(zhí)行寫操作,或者后η級指令中的至少一條指 令執(zhí)行寫操作,但執(zhí)行寫操作的指令中所有的寫寄存器地址都與當前指令所寫寄存器地址 不同,則所述操作控制模塊控制當前指令寫該寄存器地址的操作執(zhí)行。優(yōu)選的,所述比較模塊包括控制信息獲取子模塊,用于獲得當前指令和后η級指令的寫寄存器堆的控制信 息,其中每條指令的控制信息包括是否寫的信息和所寫寄存器地址;判斷子模塊,用于根據(jù)所述控制信息判斷當前指令為寫寄存器堆時,對后η級指 令每條進行如下判斷判斷是否寫寄存器堆,如果寫,則繼續(xù)判斷該指令的所寫寄存器地址 是否與當前指令的所寫寄存器地址相同。相應的,本發(fā)明還提供了一種低功耗CPU,包括寄存器堆,用于存儲指令執(zhí)行所需的原操作數(shù)和指令執(zhí)行后的目標操作數(shù);寫寄存器堆控制裝置,用于控制是否執(zhí)行寫寄存器堆的操作,具體包括比較模塊,用于比較當前指令與后η級指令的寫寄存器堆操作;其中,η的取值為 CPU流水線上bypass路徑的最大跨度值;操作控制模塊,用于當前指令與后η級指令中的至少一條指令都執(zhí)行寫操作,并 且至少一條指令的所寫寄存器地址與當前指令所寫寄存器地址相同時,向當前指令的寫寄 存器地址輸出不允許寫的控制信號,表示省略當前指令寫該寄存器地址的操作。優(yōu)選的,所述比較模塊包括控制信息獲取子模塊,用于獲得當前指令和后η級指令的寫寄存器堆的控制信 息,其中每條指令的控制信息包括是否寫的信息和所寫寄存器地址;判斷子模塊,用于根據(jù)所述控制信息判斷當前指令為寫寄存器堆時,對后η級指 令每條進行如下判斷判斷是否寫寄存器堆,如果寫,則繼續(xù)判斷該指令的所寫寄存器地址 是否與當前指令的所寫寄存器地址相同。優(yōu)選的,所述寫寄存器堆控制裝置的操作控制模塊還用于,當后η級指令中沒有 指令執(zhí)行寫操作,或者后η級指令中的至少一條指令執(zhí)行寫操作,但執(zhí)行寫操作的指令中 所有的寫寄存器地址都與當前指令所寫寄存器地址不同時,向當前指令的寫寄存器地址輸出允許寫的控制信號;相應的,所述CPU還包括寫操作模塊,用于根據(jù)所述允許寫的控制信號執(zhí)行當前 指令寫該寄存器地址的操作。優(yōu)選的,當所述CPU為五級流水線結(jié)構(gòu)時,還包括五個流水線寄存器,依次為Rif、 Rde> Rex、Rmem、RWB,則η的最大值為3 ;所述寫寄存器堆控制裝置的控制信息獲取子模塊從流 水線寄存器R-獲得當前指令的寫寄存器堆的控制信息;從流水線寄存器Rex獲得后面第一 級指令的寫寄存器堆的控制信息;從流水線寄存器Rde獲得后面第二級指令的寫寄存器堆 的控制信息;從寫入流水線寄存器Rde之前的指令譯碼結(jié)果中獲得后面第三級指令的寫寄 存器堆的控制信息。優(yōu)選的,所述寄存器堆包括多個寫端口,每個寫端口對應一個寄存器地址,則所述 指令的寫寄存器地址包括多個。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點首先,本發(fā)明提供了一種降低CPU功耗的方法如果A和B是流水線上的指令,A 在前,B在后,指令A要寫GRF某個寄存器,但該流水線上后面的指令B要重寫GRF的該寄存 器時,通過在CPU流水線的WB步驟中增加邏輯模塊,該邏輯模塊可以在W(WB的控制信息) 中已經(jīng)設定要寫GRF的情況下,判斷寫GRF的操作是否可以不執(zhí)行,如果判斷結(jié)果為可以不 執(zhí)行,則不進行寫GRF的操作,而是使用bypass路徑把A要寫入GRF的結(jié)果傳輸給流水線 上后續(xù)的指令B。由上可知,本發(fā)明通過省略WB步驟中多余的寫GRF操作來降低CPU的功
^^ ο其次,從硬件設計角度,本發(fā)明只需在原有的CPU結(jié)構(gòu)上增加所述邏輯模塊即可, 因此本發(fā)明可以充分利用現(xiàn)有的電路而無需增加很多硬件單元。再次,在本發(fā)明提出之前,本領(lǐng)域技術(shù)人員很少會發(fā)現(xiàn)CPU流水線結(jié)構(gòu)中存在多 余的寫GRF操作,在bypass路徑的優(yōu)化下,仍普遍認為指令譯碼后判斷為寫GRF就執(zhí)行寫 操作是順其自然的,即使出于降低CPU功耗的目的,也很少考慮從CPU流水線的執(zhí)行步驟來 尋找降低的方法,因為CPU流水線結(jié)構(gòu)已經(jīng)是非常成熟的CPU設計方法,現(xiàn)有的CPU普遍都 遵循這種設計。但本發(fā)明的發(fā)明人恰恰打破這種慣性思維,發(fā)現(xiàn)CPU流水線結(jié)構(gòu)中還存在 著耗費CPU功耗的寫操作,所以本發(fā)明在兼顧指令執(zhí)行效率的情況下,對現(xiàn)有的CPU流水線 中的操作步驟進行了上述改進。


圖1是現(xiàn)有技術(shù)的RISC CPU五級流水線示意圖;圖2是本發(fā)明實施例所述五步CPU流水線中邏輯模塊的處理流程圖;圖3是現(xiàn)有技術(shù)的CPU硬件結(jié)構(gòu)示意圖;圖4是本發(fā)明實施例所述的CPU硬件結(jié)構(gòu)示意圖;圖5是本發(fā)明實施例所述一種降低CPU功耗的裝置結(jié)構(gòu)圖;圖6是本發(fā)明實施例所述一種低功耗的CPU結(jié)構(gòu)圖。
具體實施例方式為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和具體實施方式
對本發(fā)明作進一步詳細的說明。為了盡可能的降低CPU功耗,本發(fā)明從以下角度進行分析,最終提出一種降低CPU 功耗的方法,具體分析如下從圖1對RISC指令的分析來看,絕大部分指令從GRF讀一個、兩個甚至更多操作 數(shù),只有極少數(shù)指令不從GRF讀操作數(shù),而且大部分指令(約70%)寫GRF。由此可知,CPU 運行過程中GRF的讀寫操作消耗相當可觀的功耗。更進一步分析發(fā)現(xiàn),CPU處理流水線上的指令經(jīng)常遇到這樣的情況A和B是流水 線上的指令,A在前,B在后,指令A要寫GRF的某個寄存器,但后面的指令B要重寫GRF的 同一個寄存器,A和B之間可以存在使用A要寫入GRF的結(jié)果的指令C(例如A是R2 = R1+R3,C是R5 = R2+R6, B是R2 = R2+R4)。如果B進入指令譯碼步驟時A還在流水線上, 并且根據(jù)流水線結(jié)構(gòu)B與A之間的指令(包括B)都可以通過bypass路徑得到A指令準備 寫入GRF的結(jié)果,不需要讀GRF,那么A指令的寫GRF操作就是多余的,會造成CPU功耗的浪 費,因此可以取消A指令的寫GRF操作以節(jié)省功耗。因為B指令很快將重寫A指令所寫的 寄存器,而B與A之間的指令(包括B)如果需要使用A指令的結(jié)果,基于RISC指令集CPU 的流水線結(jié)構(gòu)(如圖1所示),這個結(jié)果并非通過GRF傳遞而是通過bypass路徑傳遞。綜上分析得知,CPU運行過程中存在著大量無需寫GRF的多余操作,耗費了 CPU的 功耗?;谠摲治鼋Y(jié)果,本發(fā)明提出了一種降低CPU功耗的方法,通過省略WB步驟中多余 的寫GRF操作來降低CPU的功耗。本發(fā)明的核心思路是假設A和B是流水線上的指令,A在前,B在后,指令A要 寫GRF某個寄存器,但該流水線上后面的指令B要重寫GRF的同一個寄存器時,通過在CPU 流水線的WB步驟中增加邏輯模塊,該邏輯模塊可以在W(WB的控制信息)中已經(jīng)設定要寫 GRF的情況下,判斷寫GRF的操作是否可以不執(zhí)行,如果判斷結(jié)果為可以不執(zhí)行,則不進行 寫GRF的操作,而是使用bypass路徑把A要寫入GRF的結(jié)果傳輸給流水線上后續(xù)的指令B。需要說明的是,在本發(fā)明提出之前,本領(lǐng)域技術(shù)人員很少會發(fā)現(xiàn)CPU流水線結(jié)構(gòu) 中存在多余的寫GRF操作,普遍認為指令譯碼后判斷為寫GRF就執(zhí)行寫操作是順其自然的, 即使出于降低CPU功耗的目的,也很少考慮從CPU流水線的執(zhí)行步驟來尋找降低的方法,因 為CPU流水線結(jié)構(gòu)已經(jīng)是非常成熟的CPU設計方法,現(xiàn)有的CPU普遍都遵循這種設計。但 本發(fā)明的發(fā)明人恰恰打破這種慣性思維,發(fā)現(xiàn)CPU流水線結(jié)構(gòu)中還存在著耗費CPU功耗的 操作,所以本發(fā)明在兼顧指令執(zhí)行效率的情況下,對現(xiàn)有的CPU流水線中的操作步驟進行 了上述改進。下面通過實施例進行詳細說明?,F(xiàn)在考慮兩種比較常見的流水線設計①如圖1中無虛線bypass路徑,沒有寄存器Rwb ;②如圖1中有虛線bypass路徑,有寄存器R 。如果CPU流水線設計為上述第①種情況,指令A要寫GRF的某個寄存器,指令B要 使用并重寫GRF,且B是A后第1、2條指令之一,A和B之間可以存在使用A要寫入GRF的 結(jié)果的指令C,那么A的寫GRF的操作無需發(fā)生,因為C和B可以使用bypass獲得A要寫 入GRF的結(jié)果來完成C和B的操作,不用讀GRF來獲得A要寫入GRF的結(jié)果。所以,這時, 如果按照A的控制信息來執(zhí)行相應的寫GRF的操作是多余的,會造成CPU功耗的浪費。其中,C和B中使用A要寫入GRF的結(jié)果能夠從自己的EX/MEM步驟與當時CPU時鐘周期的前 一個CPU時鐘周期里A的對應步驟后的流水線寄存器間的bypass獲得。一條指令中EX和 MEM的結(jié)果可能相同,也可能不同,用哪個步驟對應的bypass要看實際的情況。如果B只是重寫GRF,且B是A后第1、2條指令其一,C可以使用bypass獲得A要 寫入GRF的結(jié)果來完成C的操作,不用讀GRF來獲得A要寫入GRF的結(jié)果。那么,按照A的 控制信息來執(zhí)行相應的寫GRF的操作是多余的,會造成CPU功耗的浪費。其中,C中使用A 要寫入GRF的結(jié)果能夠從自己的EX/MEM步驟與當時CPU時鐘周期的前一個CPU時鐘周期 里A的對應步驟后的流水線寄存器間的bypass獲得。一條指令中EX和MEM的結(jié)果可能相 同,也可能不同,用哪個步驟對應的bypass要看實際的情況。如果CPU流水線設計為上述第②種情況,B要使用并重寫GRF,且B是A后第1、2、 3條指令其一,那么A的寫GRF的操作無需發(fā)生,因為C和B可以使用bypass獲得A要寫 入GRF的結(jié)果來完成C和B的操作,不用讀GRF來獲得A要寫入GRF的結(jié)果。所以,這時, 如果按照A的控制信息來執(zhí)行寫GRF的操作是無用的,會造成CPU功耗的浪費。同樣,如果B只是重寫GRF,且B是A后第1、2、3條指令其一,C可以使用bypass 獲得A要寫入GRF的結(jié)果來完成C的操作,不用讀GRF來獲得A要寫入GRF的結(jié)果。那么, 按照A的控制信息來執(zhí)行相應的寫GRF的操作是多余的,會造成CPU功耗的浪費。上述兩種CPU流水線設計,無論是哪一種設計,本發(fā)明都可以在WB步驟中增加邏 輯模塊,通過邏輯判斷來省略WB步驟中多余的寫GRF操作,從而降低CPU的功耗。在實際應用中,經(jīng)典的CPU流水線分為五個步驟,但也存在大于五步的流水線結(jié) 構(gòu),大于五步的CPU流水線相當于把五步流水線的一個或多個步驟分成幾個子步驟。為了 更清楚介紹本發(fā)明WB步驟中邏輯模塊的處理流程,下面分別對五步CPU流水線和大于五步 的CPU流水線進行說明。當然,大于五步驟的CPU流水線的處理流程同樣適用于五步CPU 流水線。1、五步CPU流水線五步CPU流水線可參照圖1所示,五個步驟分別為IF、DE、EX、MEM*WB,E#$& 的流水線寄存器分別是Rif、Rde、Rex、Rmem,如果包括虛線的bypass路徑,則還包括流水線寄 存器Rto。其中,實線的bypass路徑所涉及的指令為INSTX,INSTX+1,INSTx+2 ;虛線的bypass 路徑所涉及的指令為 INSTX,INSTX+1,INSTx+2,INSTx+3。參照圖2,是本發(fā)明實施例所述五步CPU流水線中邏輯模塊的處理流程圖。所述邏輯模塊在WB步驟中執(zhí)行,如前所述,WB步驟的功能是從Rmem獲得W(WB的 控制信息),根據(jù)W對從Rmem獲得的內(nèi)容進行寫入GRF的操作等。如果虛線所示的bypass路 徑存在,則將相應內(nèi)容存入MEM/WB流水線寄存器Rm。其中,W包括是否寫GRF(GRFWrite)、 GRF數(shù)據(jù)來源選擇(MemReg)、所寫GRF寄存器地址(GRFWaddr)等控制信息。所述邏輯模塊在WB步驟中主要負責寫GRF的控制,即判斷寫GRF的操作是否是多 余的,是否可以不執(zhí)行。邏輯模塊判斷寫GRF的操作是否多余的方法是比較當前指令與后 η級指令的寫寄存器堆操作,如果當前指令與后η級指令中的至少一條指令都執(zhí)行寫操作 并且所寫寄存器地址相同,則省略當前指令的寫寄存器堆操作;其中,η的取值為CPU流水 線上bypass路徑的最大跨度值。在實際應用中,邏輯模塊實現(xiàn)上述判斷的方式有多種,下面給出一種實現(xiàn)的示例,后面在大于五步的CPU流水線中給出另一種實現(xiàn)示例。所述邏輯模塊的完整執(zhí)行過程如下步驟201,獲得當前指令和后η級指令的寫寄存器堆GRF的控制信息W,每條指令 的控制信息W包括是否寫GRF的信息和所寫寄存器地址;假設CPU流水線的WB步驟對應的指令是INSTx,即所述的當前指令,那么當bypass 路徑為圖1中的實線路徑時,η的取值為2,則后η級指令指當前指令后面的指令I(lǐng)NSTX+1和 INSTx+2 ;當bypass路徑包括圖1中的實線和虛線路徑時,η的取值為3,則后η級指令指當 前指令后面的指令I(lǐng)NSTX+1、INSTx+2和INSTx+3。步驟202,根據(jù)當前指令和后η級指令的控制信息判斷每條指令是否寫寄存器堆, 如果當前指令寫寄存器堆,并且后η級指令中也存在寫寄存器堆的指令,則執(zhí)行步驟203 ; 否則,邏輯模塊的執(zhí)行結(jié)束;本步驟是判斷寫GRF是否多余的第一個判斷步驟,即判斷是否需要寫GRF。一般情況下,指令的執(zhí)行都是從GRF中讀取原操作數(shù),并在指令執(zhí)行完畢后將目 標操作數(shù)寫入GRF。因此,如果指令I(lǐng)NSTx要寫GRF,只要后面的指令I(lǐng)NSTX+1和INSTx+2 (虛 線的bypass路徑還包括INSTx+3)中有一個指令也需要寫GRF,就需要繼續(xù)執(zhí)行步驟203的 第二個判斷。但在某些情況下,INSTx后面的指令雖然都使用指令I(lǐng)NSTx要寫入GRF的結(jié)果, 但都不寫GRF,這種情況下,指令I(lǐng)NSTx還需要執(zhí)行寫GRF的操作。步驟203,將當前指令的所寫寄存器地址分別與后η級指令中寫寄存器堆的指令 的所寫寄存器地址進行比較,判斷是否相同,如果有一組比較結(jié)果為相同,則省略當前指令 寫該寄存器地址的操作;如果任何一組比較結(jié)果都為不同,則執(zhí)行當前指令寫該寄存器地 址的操作。本步驟是判斷寫GRF是否多余的第二個判斷步驟,即判斷是否寫GRF的同一個寄存器。假設指令I(lǐng)NSTx后面的指令I(lǐng)NSTX+1、INSTx+2、INSTx+3 (包括虛線的bypass路徑)都 寫寄存器堆,所述“組”的概念是指指令I(lǐng)NSTx與指令I(lǐng)NSTX+1為一組比較所寫寄存器地址, 指令I(lǐng)NSTx與指令I(lǐng)NSTx+2為一組比較所寫寄存器地址,存在虛線的bypass路徑時,還包括 指令I(lǐng)NSTx與指令I(lǐng)NSTx+3為一組比較所寫寄存器地址。如果至少有一組比較結(jié)果為相同,表明指令I(lǐng)NSTx后面至少有一條指令會重寫GRF 的同一個寄存器,此時指令I(lǐng)NSTx寫GRF的操作就是多余的,可以省略此操作來節(jié)省CPU的 功耗。如果任何一組比較結(jié)果都為不同,表明雖然指令I(lǐng)NSTx后面的3條指令(包括虛線 的bypass路徑)都要寫寄存器堆,但沒有指令要寫入GRF的同一個寄存器,此時指令I(lǐng)NSTx 就需要執(zhí)行寫GRF的操作。上述步驟中,如果省略當前指令I(lǐng)NSTx的寫GRF操作,則后η級指令中的某條指令 通過bypass路徑可以獲得當前指令I(lǐng)NSTx要寫入GRF的結(jié)果。如果執(zhí)行當前指令I(lǐng)NSTx的 寫GRF操作,則后η級指令中的某條指令可以從所寫入的GRF中讀取當前指令I(lǐng)NSTx寫入 的結(jié)果,也可以通過bypass路徑獲得當前指令要寫入寄存器堆的結(jié)果;當然,bypass路徑 是對CPU流水線的優(yōu)化,因此通過bypass路徑獲得是一種優(yōu)選的方式。2、大于五步的CPU流水線如前所述,大于五步的CPU流水線相當于把五步流水線的一個或多個步驟分成幾個子步驟,因此邏輯模塊的執(zhí)行與五步CPU流水線相同。下面通過另一個實施例進行說明本實施例中,邏輯判斷在WB步驟中執(zhí)行,而且在WB步驟中,已經(jīng)獲得了 WB的控制 信息W,但還未按照W進行任何操作的時候執(zhí)行。如下1)假設CPU流水線的WB步驟對應的指令是INSTx ;2)設 GRFWrite || GRFffaddr = H ;其中,GRFffrite表示是否寫GRF,GRFffaddr表示所寫GRF寄存器地址,“ Il,,代表 連接。Hx代表INSTx所對應的H,可以從Rmem中的W中獲得;Hx+1代表INSTX+1所對應的H,依 此類推,Hx+n代表INSTx+n所對應的H。3)判斷Hx中的GRFWrite是否為真(即當前指令是否寫GRF),如果為真進入下一 步,否則退出;即首先判斷當前指令I(lǐng)NSTx是否寫GRF,如果寫,則繼續(xù)下面的判斷,即判斷當前指 令的寫GRF操作是否多余;如果當前指令不寫GRF,則邏輯模塊就不再進行下面的判斷。4)比較Hx和Hx+1是否相等,比較Hx和Hx+2是否相等,……,比較Hx和Hx+n是否相 等。如果有一組相等,則該WB步驟中的寫GRF操作可以省略;否則,該WB步驟中的寫GRF 操作要被執(zhí)行。其中,“η”的大小取決于流水線上bypass路徑的最大跨度。上述每一組比較中,以Hx和Hx+1的比較為例,具體包括以下兩個步驟第一步,判斷Hx+1中的GRFWrite是否為真(即下一級指令I(lǐng)NSTX+1是否寫GRF),如 果為真進入下一步,否則退出;第二步,比較Hx中的GRFWaddr和Hx+1中的GRFWaddr是否相等,如果相等,則表示 Hx和Hx+1相等;否則,表示Hx和Hx+1不相等。需要說明的是,根據(jù)指令集的不同,GRF的寫端口可以是多個,對應每個寫端口 都有相應的 GRFWrite 和 GRFWaddr,即 W 中包括 GRFWritel、GRFWrite2…和 GRFWaddrl、 GRFWaddr2···等信息。上面五步和大于五步的CPU流水線的實施例都是以一個寫端口為例 進行說明,而對于多個寫端口的情況,可以采用與一個寫端口相同的方法判斷每個寫端口 的寫操作是否多余。其中,在對后η級指令逐條進行判斷時,需要對每條指令的多個寫端口 都判斷是否寫GRF并且所寫寄存器地址相同。例如,以比較Hx和Ηχ+1是否相等為例,如果 CPU有m個寫端口,則對指令I(lǐng)NSTx的每一個寫端口 i (i = 1 m),都進行Hix和Hjx+1的比 較,其中j = 1 m。如果i端口與INSTX+1中任何一個j端口的H相同,就可以省略對i端 口的寫操作。在具體實現(xiàn)時,可以在上述邏輯模塊中分別增加對每個寫端口的邏輯判斷,也 可以分別增加對應每個寫端口的邏輯模塊。由于多端口的判斷與上述一個寫端口的邏輯判 斷相同,本文將不再對多個寫端口的情況進行詳細說明。由上述邏輯判斷可知,在大于五步的CPU流水線所述的實施例中,邏輯模塊的實 現(xiàn)方式是獲得當前指令和后Π級指令的寫寄存器堆的控制信息(每條指令的控制信息包 括是否寫的信息和所寫寄存器地址)后,當根據(jù)所述控制信息判斷當前指令為寫寄存器堆 時,對后η級指令每條進行如下判斷判斷是否寫寄存器堆,如果寫,則繼續(xù)判斷該指令的 所寫寄存器地址是否與當前指令的所寫寄存器地址相同。如果當前指令與后η級指令中的 至少一條指令都執(zhí)行寫操作并且所寫寄存器地址相同,則省略當前指令寫該寄存器地址的 操作;如果后η級指令中沒有指令執(zhí)行寫操作,或者后η級指令中的至少一條指令執(zhí)行寫操 作但與當前指令的所寫寄存器地址不同,則執(zhí)行當前指令寫該寄存器地址的操作。當然,如
12果根據(jù)控制信息判斷當前指令不寫寄存器堆,則不需要后續(xù)的一系列判斷。本實施例所述實現(xiàn)方式略不同于圖2的示例本例中“ Il ”表示在對后η級指令中 的每一條指令進行判斷時,并列判斷是否同時滿足“寫寄存器堆”和“寫同一個寄存器地址” 兩個條件;而圖2的示例是對后η級指令的所有指令先判斷是否滿足“寫寄存器堆”,然后再 對后η級指令中寫寄存器堆的指令判斷是否滿足“寫同一個寄存器地址”。它們在邏輯上是 等價的,只是表述方式不同。在硬件實現(xiàn)時兩種方式?jīng)]有本質(zhì)區(qū)別。此外,除上述列舉的兩種邏輯模塊實現(xiàn)方法外,還可能存在其它的實現(xiàn)方式,如通 過其他方式判斷是否寫GRF而不是通過控制信息中的GRFWrite判斷,等等,但只要總思路 遵循“判斷當前指令與后η級指令中的至少一條指令都執(zhí)行寫寄存器堆操作并且所寫寄存 器地址相同,則省略當前指令的寫寄存器堆操作”,均屬于本發(fā)明的保護范圍,具體實現(xiàn)方 式不再一一列舉?;谏鲜鰞?nèi)容,下面仍以一個寫端口的情況為例,結(jié)合CPU的硬件結(jié)構(gòu)進行更詳 細的說明。為了對比說明,首先介紹現(xiàn)有技術(shù)中的CPU硬件結(jié)構(gòu)。參照圖3,是現(xiàn)有技術(shù)的CPU硬件結(jié)構(gòu)示意圖。CPU包括Rif、Rde, Rex, Rmem, Rwb (存在虛線的bypass路徑)五個流水線寄存器和一 個寄存器堆GRF,圖中未示出Rif。以五步流水線為例,如前所述,DE步驟進行指令譯碼并生成控制信息,其中包括 WB步驟的控制信息W,W又包括是否寫GRF(GRFWrite)、GRF數(shù)據(jù)來源選擇(MemReg)、所寫 GRF寄存器地址(GRFWaddr)等。圖中的流水線寄存器RDE、REX、Rmem不僅存儲了數(shù)據(jù)部分 (DATA),還在譯碼之后存儲了控制信息部分,圖中僅示出了存儲控制信息W的GRFWaddr和 GRFffrite0此外,圖中GRF中的Din表示數(shù)據(jù)寫入信號,WAddress表示寫寄存器地址,TO表 示是否允許寫信號?,F(xiàn)有技術(shù)中,WB步驟的功能是從Rmem獲得W,根據(jù)W對從Rmem獲得的內(nèi)容進行寫 入GRF的操作等。如果虛線所示的bypass路徑存在,則將相應內(nèi)容存入MEM/WB流水線寄 存器Rw。WB步驟的執(zhí)行由圖中的Logicl模塊實現(xiàn),即根據(jù)W中的GRFWrite決定送給GRF 的WE信號,根據(jù)W中的GRFWaddr決定寫入GRF的WAddress,當WE信號為允許寫時,Logicl 模塊發(fā)送Din信號將準備寫入GRF的數(shù)據(jù)寫入WAddress表示的寄存器中。當存在虛線表 示的bypass路徑時,還將數(shù)據(jù)寫入Rwb(如圖中虛線所示的連接)。其中,根據(jù)流水線設計的不同,要寫入GRF的數(shù)據(jù)有所變化,可能包括數(shù)據(jù)來源 選擇(來源于EX計算結(jié)果或MEM取數(shù)),數(shù)據(jù)類型擴展(如Sbit — 32bit或16bit — 32bit 的符號或無符號等),等等。以32位CPU的數(shù)據(jù)類型擴展為例,Logicl模塊的執(zhí)行可以包括以下1)從Rmem流水線寄存器中取出數(shù)據(jù)DATA,判斷是否需要作數(shù)據(jù)擴展;2)如果無需擴展,則直接將DATA送出;3)如果需要擴展,從Rmem得到符號擴展類型(有符號或無符號)、當前數(shù)據(jù)類型 (8bit 或 16bit);4)根據(jù)當前數(shù)據(jù)類型從DATA取出相應位低Sbit或16bit作為當前數(shù)據(jù),高24 或16位根據(jù)符號擴展類型填充O (無符號擴展)或當前數(shù)據(jù)的符號位(符號擴展)。符號位位于當前數(shù)據(jù)的最高位,8bit位于bit7 (bitO是最低位)16bit位于bitl5 (bitO是最低 位)。填充完成后送出。參照圖4,是本發(fā)明實施例所述的CPU硬件結(jié)構(gòu)示意圖。與圖3相比,增加了 Logic2模塊(即上述的邏輯模塊)。相應的,還增加了 Rde、 Rex、Rmem到Logic2模塊的連接,以便從這些流水線寄存器中讀取控制信息,如控制信息W中 的GRFWaddr和GRFWrite。此外,存在虛線表示的bypass路徑時,還增加了 DE譯碼之后指 向Logic2模塊的連接,以及寫入Rto的連接(如圖中虛線所示的連接)。仍以五步流水線為例,并且存在虛線表示的bypass路徑,當指令I(lǐng)NSTx執(zhí)行到WB 步驟時,Logic2模塊需要獲得后續(xù)指令I(lǐng)NSTX+1、INSTx+2、INSTx+3的控制信息,來判斷是否存 在多余的寫GRF操作。Logic2模塊通過讀取Rmem可以獲得指令I(lǐng)NSTx的控制信息GRFWaddr和GRFWrite。 根據(jù)流水線結(jié)構(gòu),下一級指令I(lǐng)NSTX+1此時正在執(zhí)行步驟MEM,因此Logic2模塊可以通過讀 取Rex獲得指令I(lǐng)NSTX+1的控制信息GRFWaddr和GRFWrite。同樣,第二級指令I(lǐng)NSTx+2此時 正在執(zhí)行步驟EX,因此Logic2模塊可以通過讀取Rde獲得指令I(lǐng)NSTx+2的控制信息GRFWaddr 和GRFWrite。第三級指令I(lǐng)NSTx+3此時正在執(zhí)行步驟DE,因此Logic2模塊可以通過讀取 DE步驟中譯碼之后 生成的但還未寫入Rde的控制信息,來獲得指令I(lǐng)NSTx+3的GRFWaddr和 GRFWrite。Logic2模塊的具體處理流程可參照圖2所示流程和大于五步的CPU流水線的示 例,當判斷可以省略當前指令的寫GRF操作時,Logic2模塊向GRF輸出不允許寫的信號 (WE);當需要執(zhí)行寫GRF的操作時,Logic2模塊向GRF輸出允許寫的信號(WE)。Logicl模 塊根據(jù)WE信號的控制進行寫入操作?;谏鲜鰞?nèi)容,本發(fā)明還提供了一種降低CPU功耗的裝置實施例。參照圖5,是本發(fā)明實施例所述一種降低CPU功耗的裝置結(jié)構(gòu)圖。所述裝置主要包括比較模塊51,用于比較當前指令與后η級指令的寫寄存器堆操作;其中,η的取值 為CPU流水線上bypass路徑的最大跨度值;操作控制模塊52,用于當前指令與后η級指令中的至少一條指令都執(zhí)行寫操作, 并且至少一條指令的所寫寄存器地址與當前指令所寫寄存器地址相同時,控制當前指令寫 該寄存器地址的操作省略。相應的,如果后η級指令中沒有指令執(zhí)行寫操作,或者后η級指令中的至少一條指 令執(zhí)行寫操作,但執(zhí)行寫操作的指令中所有的寫寄存器地址都與當前指令所寫寄存器地址 不同,則所述操作控制模塊52控制當前指令寫該寄存器地址的操作執(zhí)行。優(yōu)選的,所述比較模塊51具體可以包括控制信息獲取子模塊511,用于獲得當前指令和后η級指令的寫寄存器堆的控制 信息,其中每條指令的控制信息包括是否寫的信息和所寫寄存器地址;判斷子模塊512,用于根據(jù)所述控制信息判斷當前指令為寫寄存器堆時,對后η級 指令每條進行如下判斷判斷是否寫寄存器堆,如果寫,則繼續(xù)判斷該指令的所寫寄存器地 址是否與當前指令的所寫寄存器地址相同。上述裝置相當于圖4中的Logic2模塊,可以設置在CPU的流水線寄存器Rmem與寄存器堆GRF之間,通過向GRF輸出是否寫的控制信號TO,控制將當前指令中多余的寫GRF操 作不執(zhí)行,從而降低CPU功耗。相應的,本發(fā)明還提供了一種低功耗的CPU實施例。參照圖6,是本發(fā)明實施例所述一種低功耗的CPU結(jié)構(gòu)圖。所述CPU包括寄存器堆61和寫寄存器堆控制裝置62,其中寄存器堆61,用于存儲指令執(zhí)行所需的原操作數(shù)和指令執(zhí)行后的目標操作數(shù);寫寄存器堆控制裝置62,用于控制是否執(zhí)行寫寄存器堆61的操作,具體包括比較模塊,用于比較當前指令與后η級指令的寫寄存器堆操作;其中,η的取值為 CPU流水線上bypass路徑的最大跨度值;操作控制模塊,用于當當前指令與后η級指令中的至少一條指令都執(zhí)行寫操作, 并且至少一條指令的所寫寄存器地址與當前指令所寫寄存器地址相同時,向寄存器堆61 輸出不允許寫的控制信號,表示省略當前指令寫該寄存器地址的操作。優(yōu)選的,所述比較模塊具體可以包括控制信息獲取子模塊,用于獲得當前指令和后η級指令的寫寄存器堆的控制信 息,其中每條指令的控制信息包括是否寫的信息和所寫寄存器地址;判斷子模塊,用于根據(jù)所述控制信息判斷當前指令為寫寄存器堆時,對后η級指 令每條進行如下判斷判斷是否寫寄存器堆,如果寫,則繼續(xù)判斷該指令的所寫寄存器地址 是否與當前指令的所寫寄存器地址相同。優(yōu)選的,所述寫寄存器堆控制裝置62的操作控制模塊還用于,當后η級指令中沒 有指令執(zhí)行寫操作,或者后η級指令中的至少一條指令執(zhí)行寫操作,但執(zhí)行寫操作的指令 中所有的寫寄存器地址都與當前指令所寫寄存器地址不同時,向寄存器堆61輸出允許寫 的控制信號;相應的,所述CPU還可以包括寫操作模塊63,用于根據(jù)所述允許寫的控制信號執(zhí)行當前指令寫該寄存器地址的 操作。其中,根據(jù)指令集的不同,所述寄存器堆61可以有多個寫端口,每個寫端口都對 應一個寄存器地址。而針對每個寫端口,可以分別設置一個寫寄存器堆控制裝置62,也可以 針對所有寫端口集成到一個寫寄存器堆控制裝置62中,寫寄存器堆控制裝置62都會控制 寫操作模塊63是否向每個端口寫入數(shù)據(jù)。此夕卜,當所述CPU為五級流水線結(jié)構(gòu)時,還包括五個流水線寄存器,依次為Rif、Rde、 Rex> R e > Rwb (當存在虛線表示的bypass路徑時),則η的最大值為3。所述寫寄存器堆控制裝置62的控制信息獲取子模塊從流水線寄存器Rmem獲得當 前指令的寫寄存器堆的控制信息;從流水線寄存器Rex獲得后面第一級指令的寫寄存器堆的控制信息;從流水線寄存器Rde獲得后面第二級指令的寫寄存器堆的控制信息;當存在虛線表示的bypass路徑時,所述控制信息獲取子模塊還從寫入流水線寄 存器Rde之前的指令譯碼結(jié)果中獲得后面第三級指令的寫寄存器堆的控制信息。而且,所述 寫操作模塊63還執(zhí)行寫入Rto的操作。圖6中,虛線的連接表示存在bypass路徑時的連接 情況。
綜上所述,所述CPU通過增加寫寄存器堆控制裝置62來節(jié)省功耗,從硬件設計角 度,可以充分利用現(xiàn)有的電路而無需增加很多硬件單元。本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與 其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。對于裝置實施例 而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關(guān)之處參見方法實施例的部 分說明即可。以上對本發(fā)明所提供的一種降低CPU功耗的方法、裝置及一種低功耗CPU,進行了 詳細介紹,本文中應用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的 說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依 據(jù)本發(fā)明的思想,在具體實施方式
及應用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容 不應理解為對本發(fā)明的限制。
權(quán)利要求
一種降低CPU功耗的方法,其特征在于,包括比較當前指令與后n級指令的寫寄存器堆操作,如果當前指令與后n級指令中的至少一條指令都執(zhí)行寫操作,并且至少一條指令的所寫寄存器地址與當前指令所寫寄存器地址相同,則省略當前指令寫該寄存器地址的操作;其中,n的取值為CPU流水線上bypass路徑的最大跨度值。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括如果后η級指令中沒有指令執(zhí)行寫操作,或者后η級指令中的至少一條指令執(zhí)行寫操 作,但執(zhí)行寫操作的指令中所有的寫寄存器地址都與當前指令所寫寄存器地址不同,則執(zhí) 行當前指令寫該寄存器地址的操作。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述比較包括獲得當前指令和后η級指令的寫寄存器堆的控制信息,其中每條指令的控制信息包括 是否寫的信息和所寫寄存器地址;當根據(jù)所述控制信息判斷當前指令為寫寄存器堆時,對后η級指令每條進行如下判斷判斷是否寫寄存器堆,如果寫,則繼續(xù)判斷該指令的所寫寄存器地址是否與當前指令 的所寫寄存器地址相同。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,還包括如果省略當前指令寫該寄存器地址的操作,則后η級指令中的某條指令通過bypass路 徑獲得當前指令要寫入該寄存器地址的結(jié)果;如果執(zhí)行當前指令寫該寄存器地址的操作,則后η級指令中的某條指令從該寄存器地 址中讀取當前指令寫入的結(jié)果,或者,通過bypass路徑獲得當前指令要寫入該寄存器地址 的結(jié)果。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,通過以下方式獲得當前指令和后η級指令 的寫寄存器堆的控制信息CPU五級流水線的寄存器依次為Rif、Rde、Rex、Rmem、Rwb,則η的最大值為3 ; 當前指令的寫寄存器堆的控制信息從流水線寄存器Rmem獲得; 后面第一級指令的寫寄存器堆的控制信息從流水線寄存器Rex獲得; 后面第二級指令的寫寄存器堆的控制信息從流水線寄存器Rde獲得; 后面第三級指令的寫寄存器堆的控制信息從寫入流水線寄存器Rde之前的指令譯碼結(jié) 果中獲得。
6. 一種降低CPU功耗的裝置,其特征在于,包括比較模塊,用于比較當前指令與后η級指令的寫寄存器堆操作;其中,η的取值為CPU 流水線上bypass路徑的最大跨度值;操作控制模塊,用于當前指令與后η級指令中的至少一條指令都執(zhí)行寫操作,并且至 少一條指令的所寫寄存器地址與當前指令所寫寄存器地址相同時,控制當前指令寫該寄存 器地址的操作省略。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于如果后η級指令中沒有指令執(zhí)行寫操作,或者后η級指令中的至少一條指令執(zhí)行寫操 作,但執(zhí)行寫操作的指令中所有的寫寄存器地址都與當前指令所寫寄存器地址不同,則所述操作控制模塊控制當前指令寫該寄存器地址的操作執(zhí)行。
8.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述比較模塊包括控制信息獲取子模塊,用于獲得當前指令和后η級指令的寫寄存器堆的控制信息,其 中每條指令的控制信息包括是否寫的信息和所寫寄存器地址;判斷子模塊,用于根據(jù)所述控制信息判斷當前指令為寫寄存器堆時,對后η級指令每 條進行如下判斷判斷是否寫寄存器堆,如果寫,則繼續(xù)判斷該指令的所寫寄存器地址是否 與當前指令的所寫寄存器地址相同。
9.一種低功耗CPU,其特征在于,包括寄存器堆,用于存儲指令執(zhí)行所需的原操作數(shù)和指令執(zhí)行后的目標操作數(shù); 寫寄存器堆控制裝置,用于控制是否執(zhí)行寫寄存器堆的操作,具體包括 比較模塊,用于比較當前指令與后η級指令的寫寄存器堆操作;其中,η的取值為CPU 流水線上bypass路徑的最大跨度值;操作控制模塊,用于當前指令與后η級指令中的至少一條指令都執(zhí)行寫操作,并且至 少一條指令的所寫寄存器地址與當前指令所寫寄存器地址相同時,向當前指令的寫寄存器 地址輸出不允許寫的控制信號,表示省略當前指令寫該寄存器地址的操作。
10.根據(jù)權(quán)利要求9所述的CPU,其特征在于,所述比較模塊包括控制信息獲取子模塊,用于獲得當前指令和后η級指令的寫寄存器堆的控制信息,其 中每條指令的控制信息包括是否寫的信息和所寫寄存器地址;判斷子模塊,用于根據(jù)所述控制信息判斷當前指令為寫寄存器堆時,對后η級指令每 條進行如下判斷判斷是否寫寄存器堆,如果寫,則繼續(xù)判斷該指令的所寫寄存器地址是否 與當前指令的所寫寄存器地址相同。
11.根據(jù)權(quán)利要求10所述的CPU,其特征在于所述寫寄存器堆控制裝置的操作控制模塊還用于,當后η級指令中沒有指令執(zhí)行寫操 作,或者后η級指令中的至少一條指令執(zhí)行寫操作,但執(zhí)行寫操作的指令中所有的寫寄存 器地址都與當前指令所寫寄存器地址不同時,向當前指令的寫寄存器地址輸出允許寫的控 制信號;所述CPU還包括寫操作模塊,用于根據(jù)所述允許寫的控制信號執(zhí)行當前指令寫該寄存器地址的操作。
12.根據(jù)權(quán)利要求10所述的CPU,其特征在于當所述CPU為五級流水線結(jié)構(gòu)時,還包括五個流水線寄存器,依次為Rif、Rde、Rex、Rmem^ R ,則η的最大值為3 ;所述寫寄存器堆控制裝置的控制信息獲取子模塊從流水線寄存器R-獲得當前指令的 寫寄存器堆的控制信息;從流水線寄存器Rex獲得后面第一級指令的寫寄存器堆的控制信息; 從流水線寄存器Rde獲得后面第二級指令的寫寄存器堆的控制信息; 從寫入流水線寄存器Rde之前的指令譯碼結(jié)果中獲得后面第三級指令的寫寄存器堆的 控制信息。
13.根據(jù)權(quán)利要求9至12任一所述的CPU,其特征在于所述寄存器堆包括多個寫端口,每個寫端口對應一個寄存器地址,則所述指令的寫寄存器地址包括多個。
全文摘要
本發(fā)明提供了一種降低CPU功耗的方法、裝置及一種低功耗CPU,以降低CPU功耗。所述方法包括比較當前指令與后n級指令的寫寄存器堆操作,如果當前指令與后n級指令中的至少一條指令都執(zhí)行寫操作,并且至少一條指令的所寫寄存器地址與當前指令所寫寄存器地址相同,則省略當前指令寫該寄存器地址的操作;其中,n的取值為CPU流水線上bypass路徑的最大跨度值。綜上所述,本發(fā)明通過省略WB步驟中多余的寫GRF操作來降低CPU的功耗。而且從硬件設計角度,本發(fā)明只需在原有的CPU結(jié)構(gòu)上增加所述邏輯模塊即可,因此本發(fā)明可以充分利用現(xiàn)有的電路而無需增加很多硬件單元。
文檔編號G06F1/32GK101923386SQ201010256830
公開日2010年12月22日 申請日期2010年8月18日 優(yōu)先權(quán)日2010年8月18日
發(fā)明者姜君, 張緊, 晏曉京 申請人:北京君正集成電路股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
德庆县| 建水县| 延庆县| 临沭县| 新干县| 宁强县| 资溪县| 民县| 合作市| 宁安市| 舞阳县| 阜平县| 贵阳市| 应用必备| 宁都县| 武川县| 米林县| 无为县| 杂多县| 鄂托克前旗| 武汉市| 临朐县| 安平县| 清涧县| 隆德县| 铜陵市| 富源县| 图们市| 涟源市| 偏关县| 太谷县| 南乐县| 新建县| 锡林郭勒盟| 逊克县| 兰州市| 永善县| 门头沟区| 锡林郭勒盟| 合水县| 赤峰市|