專利名稱:采用由具有累加指令配置的編譯器控制的硬件結(jié)構(gòu)的處理器的功率控制的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及微處理器數(shù)字集成電路的功率控制,尤其涉及用于處理器部分的動(dòng)態(tài)功率控制的裝置和方法,其通過在編譯器產(chǎn)生的指令中嵌入功率控制信息來完成。
背景技術(shù):
處理器的動(dòng)態(tài)功率控制可分為兩個(gè)普遍的范疇,采用時(shí)鐘門控技術(shù)的逐周控制和基于功率節(jié)約模式的軟件設(shè)置的長(zhǎng)期控制。時(shí)鐘門控依賴邏輯電路分析在當(dāng)前時(shí)鐘周期內(nèi)是否要使用一個(gè)功能,如果不是,則阻止時(shí)鐘傳輸?shù)皆摴δ苁褂玫倪壿嫴糠帧_@個(gè)過程消耗分析邏輯的功率來節(jié)約計(jì)時(shí)邏輯的功率。此外,由于被計(jì)時(shí)的邏輯是“活動(dòng)”(active)的,因此對(duì)于時(shí)鐘被阻止的周期,只有功率消耗的動(dòng)態(tài)部分被消除。消除漏泄或靜態(tài)部分也是所希望的。功率節(jié)約模式用于長(zhǎng)期的功率節(jié)約,但需要更多的開銷以調(diào)用該模式和恢復(fù)正常操作。
美國(guó)專利4,980,836“APPARATUS FOR REDUCING COMPUTERSYSTEM POWER CONSUMPTION”(減少計(jì)算機(jī)系統(tǒng)功率消耗的裝置)教導(dǎo)了一種普遍的軟件控制功率節(jié)約模式的方法,其中每個(gè)單獨(dú)的處理器和I/O控制器具有功率降低模式,操作系統(tǒng)動(dòng)態(tài)地監(jiān)控每個(gè)單元的使用,并在發(fā)現(xiàn)沒有使用單元時(shí)關(guān)斷該單元。功率降低模式按慣例通過控制調(diào)節(jié)器產(chǎn)生電源電壓來實(shí)現(xiàn),這樣消除功率消耗的動(dòng)態(tài)和靜態(tài)部分。現(xiàn)有技術(shù)的這種全局模式方法有許多缺點(diǎn)。該方法需要操作系統(tǒng)以功率為代價(jià)監(jiān)控活動(dòng)性,并且該方法不能預(yù)測(cè)將來的活動(dòng)性。一個(gè)單元可被開啟或關(guān)斷許多次,使得實(shí)際的功率節(jié)約很小。
美國(guó)專利5,781,062“SEMICONDUCTOR INTEGRATED CIRCUIT”(半導(dǎo)體集成電路)教導(dǎo)了采用多閾值互補(bǔ)型金屬氧化物半導(dǎo)體(MTCMOS)結(jié)構(gòu)的邏輯,該結(jié)構(gòu)產(chǎn)生“虛擬Vdd”和“虛擬地”,所述邏輯可以包括“頁頭/頁尾”(header/footer)轉(zhuǎn)換結(jié)構(gòu),其由全局功率節(jié)約信號(hào)控制,如“備用控制信號(hào)(Standby Control Signal)”。功率節(jié)約控制的兩個(gè)模式在美國(guó)專利5,781,062中都有教導(dǎo)。在第一種模式中,在備用期間,頁頭/頁尾轉(zhuǎn)換裝置周期性地重復(fù)導(dǎo)電/不導(dǎo)電,以向“虛擬Vdd”和“虛擬地”提供漏泄功率,從而防止邏輯電路中的信息丟失。在第二種模式中,在備用期間不提供周期性的導(dǎo)電間隔,從而通過消除漏泄功率提高了功率節(jié)約,但這種消除是以對(duì)“虛擬Vdd”線路放電為代價(jià)的,而且“虛擬Vdd”線路必須在活動(dòng)期開始時(shí)重新充電到Vdd。如果對(duì)多個(gè)周期調(diào)用,則按這種方式關(guān)斷“虛擬Vdd”和“虛擬地”只比逐周時(shí)鐘門控節(jié)約更多的功率。該技術(shù)沒有教導(dǎo)確定關(guān)斷的邏輯部分不會(huì)用于以后的多個(gè)周期的方法,因此一種明確編程的全局模式是現(xiàn)有技術(shù)中唯一可用的方法以控制頁頭/頁尾轉(zhuǎn)換。
CMOS邏輯的功率消耗包括兩個(gè)部分當(dāng)電路轉(zhuǎn)換時(shí)消耗的有效功率;每當(dāng)Vdd和地加在邏輯上時(shí)消耗的靜態(tài)或漏泄功率。傳統(tǒng)的有效功率的功率控制依靠逐周基礎(chǔ)上的時(shí)鐘門控來在沒有使用邏輯時(shí)關(guān)斷時(shí)鐘。
參考圖1,示出了一種用于控制靜態(tài)CMOS邏輯12的漏泄功率的MTCMOS結(jié)構(gòu)。當(dāng)睡眠(SLEEP)信號(hào)有效時(shí),Vdd和地與剩余的邏輯被晶體管11和13斷開,因而沒有消耗漏泄功率。按照慣例,睡眠模式場(chǎng)效應(yīng)晶體管(FET)11和13的閾值高于剩余的邏輯FET,以保證最小的漏泄功率。這個(gè)技術(shù)有兩個(gè)缺點(diǎn)第一是睡眠模式FET的尺寸嚴(yán)格到不損害性能;第二是當(dāng)Vdd或地被斷開時(shí),邏輯會(huì)逐漸失去存儲(chǔ)的電荷,從而丟失所有對(duì)以前存儲(chǔ)的狀態(tài)的記憶。當(dāng)電源恢復(fù)以后,邏輯中所有被放電的節(jié)點(diǎn)必須重新充電,消耗功率。因此,睡眠模式控制必須對(duì)多個(gè)周期調(diào)用以達(dá)到真正的功率節(jié)約。
因?yàn)楹茈y預(yù)測(cè)處理器的邏輯在以后何時(shí)將被使用,因此現(xiàn)有技術(shù)依靠操作系統(tǒng)的全局控制以控制MTCMOS結(jié)構(gòu)的睡眠模式。參考圖2,示出了具有這種控制結(jié)構(gòu)的處理器22。處理器22由“虛擬Vdd”和“虛擬地”供電,該“虛擬Vdd”和“虛擬地”由采用根據(jù)睡眠模式鎖存器24(總是有電)的狀態(tài)產(chǎn)生的控制信號(hào)SLEEP的FET 21和23控制。該鎖存器24由處理器22通過設(shè)置(Set)信號(hào)25設(shè)置,該信號(hào)25是當(dāng)沒有操作時(shí)由處理器通過編程操作斷言的。操作系統(tǒng)核必須保存在斷言信號(hào)25之前恢復(fù)一些非易失性存儲(chǔ)器(未示出)中的操作所需的處理器22的狀態(tài)。一些外部事件26連接到睡眠模式鎖存器24的復(fù)位端(Reset)以恢復(fù)操作。從概念上講,對(duì)于“掛起”(Suspend)模式來說,這與一些計(jì)算機(jī)中使用的功率調(diào)節(jié)器關(guān)斷是一樣的。
因此,需要有一種裝置和方法,可更有效地控制數(shù)字集成電路中的功率。更需要有基于特定硬件結(jié)構(gòu)的未來使用知識(shí)的處理器的功率控制。
發(fā)明內(nèi)容
一種微處理器包括邏輯電路。選擇裝置連接到所述邏輯電路,所述選擇裝置基于存儲(chǔ)的邏輯值提供所述邏輯電路的開/關(guān)狀態(tài)的轉(zhuǎn)換。包括程序指令,其根據(jù)微處理器的指令序列,基于所述邏輯電路的預(yù)期使用設(shè)置存儲(chǔ)的邏輯值,以控制所述邏輯電路的開/關(guān)狀態(tài)。
在其它實(shí)施例中,選擇裝置可包括用于提供從電源電壓到至少一個(gè)處于開啟狀態(tài)的邏輯電路的電源線的連接的開關(guān)。選擇裝置還可包括用于提供從地到至少一個(gè)處于開啟狀態(tài)的邏輯電路的電源線的連接的開關(guān)。微處理器可包括連接到選擇裝置的寄存器,用于存放存儲(chǔ)的邏輯值。所述寄存器在若干指令周期后更新。輸入表可包括用于邏輯單元的指令序列和相關(guān)的資源需求,其中邏輯單元的預(yù)期使用是根據(jù)輸入表確定的。
在其它實(shí)施例中,邏輯單元的預(yù)期使用可包括在若干指令周期后邏輯裝置的使用。微處理器可包括具有與邏輯裝置的功率節(jié)約開/關(guān)狀態(tài)對(duì)應(yīng)的邏輯狀態(tài)的輸出表,程序指令可根據(jù)功率節(jié)約開/關(guān)狀態(tài)設(shè)置存儲(chǔ)的邏輯值以控制邏輯電路。
本發(fā)明的另一種微處理器包括多個(gè)被分成功能組的邏輯電路。每個(gè)功能組連接一個(gè)選擇裝置,每個(gè)選擇裝置基于寄存器中存儲(chǔ)的邏輯值提供對(duì)應(yīng)功能組的開/關(guān)狀態(tài)的轉(zhuǎn)換。程序指令設(shè)置寄存器中的邏輯值,以控制功能組的開/關(guān)狀態(tài)。編譯程序基于指令序列產(chǎn)生設(shè)置在寄存器中的邏輯值,其中指令序列預(yù)期每個(gè)功能組的使用。
每個(gè)選擇裝置可包括用于提供從電源電壓到處于開啟狀態(tài)的功能組的電源線的連接的開關(guān),或用于提供從地到處于開啟狀態(tài)的功能組的電源線的連接的開關(guān)。所述寄存器可包括用于每個(gè)功能組的存儲(chǔ)單元。優(yōu)選地,寄存器在若干指令周期后更新。微處理器可包括由編譯程序產(chǎn)生的輸入表,并可以包括用于每個(gè)功能組的指令序列和相關(guān)資源需求,其中功能組的使用是根據(jù)輸入表確定的。功能組的使用可包括在若干指令周期后功能組的使用。微處理器可包括輸出表,其包括與功能組的功率節(jié)約開/關(guān)狀態(tài)對(duì)應(yīng)的邏輯狀態(tài)。
根據(jù)本發(fā)明的一種用于產(chǎn)生嵌入指令序列以控制微處理器中邏輯電路的功率的方法,產(chǎn)生控制微處理器的功能程序的指令序列。分析指令序列以確定在每個(gè)指令周期中哪些邏輯電路是活動(dòng)的,將每個(gè)邏輯電路在當(dāng)前指令周期后不活動(dòng)的指令周期的個(gè)數(shù)與功能程序的每個(gè)指令周期的值進(jìn)行比較?;诒容^結(jié)果插入指令序列以打開或關(guān)閉每個(gè)邏輯電路。
在其它方法中,插入指令序列可包括對(duì)存有邏輯值的寄存器編程,其中每個(gè)邏輯電路基于邏輯值被打開或關(guān)閉。比較值可包括一個(gè)確定為在邏輯電路中提供凈功率節(jié)約的數(shù)值。還可包括一個(gè)可機(jī)讀的程序存儲(chǔ)裝置,其有形地包含可被機(jī)器執(zhí)行的指令的程序,用于執(zhí)行所述的方法。
從下面參照附圖對(duì)示例性實(shí)施例的詳細(xì)描述,本發(fā)明的這些和其它目的、特征和優(yōu)點(diǎn)將會(huì)很明顯。
下面將參考附圖通過對(duì)優(yōu)選實(shí)施例的描述詳細(xì)說明本發(fā)明,其中
圖1是根據(jù)現(xiàn)有技術(shù)的用于邏輯功能功率降低的多閾值CMOS(MTCMOS)結(jié)構(gòu)的示意圖;圖2是一種現(xiàn)有技術(shù)中具有全局睡眠模式控制的MTCMOS結(jié)構(gòu)的處理器的結(jié)構(gòu)示意圖;圖3是根據(jù)本發(fā)明的一個(gè)實(shí)施例構(gòu)造的處理器的示意圖,該處理器被分成若干個(gè)獨(dú)立控制的邏輯部分,每個(gè)部分具有單獨(dú)的MTCMOS控制;圖4是根據(jù)本發(fā)明的在用于圖3的處理器的編譯器的代碼產(chǎn)生的分析部分中構(gòu)造的表的示意圖;圖5是根據(jù)本發(fā)明的用于編譯器的代碼產(chǎn)生部分產(chǎn)生對(duì)圖3的處理器的轉(zhuǎn)換控制的系統(tǒng)/方法的框圖/流程圖;圖6是根據(jù)本發(fā)明的針對(duì)圖4的實(shí)施例插入功率變換控制指令而產(chǎn)生的指令序列。
具體實(shí)施例方式
本發(fā)明提供對(duì)微處理器的頁頭/頁尾裝置的控制,優(yōu)選地,微處理器為采用多閾值互補(bǔ)型金屬氧化物半導(dǎo)體(MTCMOS)結(jié)構(gòu)的數(shù)字集成電路,雖然也可以采用其它場(chǎng)效應(yīng)晶體管裝置或其它類型的結(jié)構(gòu)?;诳刂七壿嫴粫?huì)在以后用于一些周期的知識(shí),所選的頁頭/頁尾裝置被關(guān)閉。對(duì)特定裝置的需要的知識(shí)可從存儲(chǔ)裝置、查詢表或來自編譯器的指令序列中提取。然后使用這種對(duì)特定裝置的需要的知識(shí)開啟或關(guān)閉頁頭/頁尾開關(guān)。這些開關(guān)可包括CMOS場(chǎng)效應(yīng)晶體管或其它任何開關(guān)裝置。
在一個(gè)實(shí)施例中,當(dāng)針對(duì)處理器的指令產(chǎn)生后并且與在其執(zhí)行期間使用的指令的文本有關(guān)時(shí),裝置使用的知識(shí)能被編譯器提取。在一個(gè)特別有用的實(shí)施例中,采用了一種方法,用于將微處理器的邏輯裝置/電路細(xì)分為多個(gè)功率控制區(qū)域,這些區(qū)域能分別被控制,例如被自身的頁頭/頁尾開關(guān)控制。能產(chǎn)生指令以分別對(duì)多個(gè)控制區(qū)域控制功率。
本發(fā)明的一個(gè)方面提供了一種微處理器數(shù)字集成電路,其被分成多個(gè)獨(dú)立的邏輯組和微處理器指令集體系中的指令,其中每個(gè)邏輯組具有如獨(dú)立控制頁頭/頁尾開關(guān)的MTCMOS結(jié)構(gòu),指令允許程序控制開關(guān)的狀態(tài)。構(gòu)成用于微處理器的程序的指令序列可以由編譯程序產(chǎn)生,指令序列規(guī)定了按功能的邏輯劃分和頁頭/頁尾應(yīng)被開啟以達(dá)到功率節(jié)約的最小時(shí)間。優(yōu)選地,編譯器包括程序邏輯,其確定與任何一個(gè)功能有關(guān)的資源是否將不被用于與該功能有關(guān)的最小時(shí)間間隔。在程序邏輯中提供了一個(gè)代碼產(chǎn)生階段,其在邏輯組沒有被使用時(shí)插入關(guān)閉每個(gè)組所需的指令。程序邏輯加在編譯器以及運(yùn)行時(shí)間環(huán)境中以保存和恢復(fù)任何由于關(guān)斷“虛擬Vdd”和“虛擬地”而丟失的狀態(tài)。本發(fā)明的應(yīng)用將導(dǎo)致功率節(jié)約大于單獨(dú)的時(shí)鐘門控,并提供沒有與調(diào)用全局睡眠模式有關(guān)的消極系統(tǒng)影響的功率節(jié)約。
應(yīng)當(dāng)理解的是,附圖中所示的元件可采用硬件、軟件或軟硬件結(jié)合的多種形式實(shí)現(xiàn)。優(yōu)選地,這些元件采用硬件和軟件相結(jié)合實(shí)現(xiàn),并可以在一個(gè)或多個(gè)合適編程的通用數(shù)字計(jì)算機(jī)中被硬連線或存儲(chǔ)和執(zhí)行,其中計(jì)算機(jī)具有處理器、存儲(chǔ)器和輸入/輸出接口?,F(xiàn)在參考附圖,其中相同的數(shù)字代表相同的或相似的元件,并從圖3開始,示出了一個(gè)示例性電路100的示意圖以說明本發(fā)明,然而本發(fā)明也可擴(kuò)展和應(yīng)用于其它電路、集成電路或半導(dǎo)體芯片。
在本發(fā)明的一個(gè)實(shí)施例中,處理器100包括邏輯電路112、121和123。邏輯電路的功能組進(jìn)一步細(xì)分為與特定指令有關(guān)的組101-107、頁頭和頁尾FET 108,優(yōu)選地是MTCMOS,其對(duì)每個(gè)邏輯組101-107提供單獨(dú)的控制(線路110,為簡(jiǎn)化省略了用于組102-106的線路110)。根據(jù)本發(fā)明,處理器100由被分成一組沒有單獨(dú)控制的頁頭/頁尾開關(guān)的邏輯電路112的處理器邏輯構(gòu)成。該邏輯電路組112(或多個(gè)組)不包括單獨(dú)的用于整個(gè)組的MTCMOS頁頭/頁尾控制,雖然在其它的實(shí)施例中,組112的部分或整個(gè)電路可包括單獨(dú)的頁頭/頁尾控制。提供了與特定指令類型的執(zhí)行資源對(duì)應(yīng)的7個(gè)單獨(dú)控制的組101-107,均具有單獨(dú)可控的頁頭/頁尾開關(guān)108。
一些沒有這種控制的邏輯(112)實(shí)際上能被細(xì)分,為一些細(xì)分部分提供了功率控制,然而,圖3所示的劃分足以說明本發(fā)明的原理??梢岳斫獾氖牵景l(fā)明可應(yīng)用于許多不同的邏輯排列,并且這種邏輯電路的劃分能根據(jù)標(biāo)準(zhǔn)進(jìn)行,例如,芯片設(shè)計(jì)者利用常識(shí)原理確定可實(shí)行和有效的電路細(xì)分而定義的標(biāo)準(zhǔn)。
在一個(gè)實(shí)施例中,所有與處理器100的當(dāng)前狀態(tài)有關(guān)的邏輯,包含在邏輯112中的寄存器131、133和其它寄存器(未示出)中,且這些邏輯不由“虛擬Vdd/虛擬地”供電而保持“開”。可替換地,該邏輯可由如上所述的全局信號(hào)控制的“虛擬Vdd/虛擬地”供電。然而,由于當(dāng)前的處理器狀態(tài)不能丟失,因此該“虛擬Vdd/虛擬地”不能與真實(shí)的Vdd/地?cái)嚅_,除非處理器狀態(tài)已經(jīng)被保存在某些非易失性存儲(chǔ)器中。對(duì)于如上參考圖2描述的采用全局功率節(jié)約模式的狀態(tài)保存和恢復(fù),非易失性存儲(chǔ)器和操作系統(tǒng)支持是必需的。由于這種全面的功率控制替換方式是已知的,因此不在圖3中示出。
處理器100可包括多個(gè)不同的裝置。如圖3所示,整數(shù)單元121包括整數(shù)邏輯,例如加法器邏輯101、整數(shù)移位器邏輯102、整數(shù)邏輯單元103和整數(shù)乘法器邏輯104,還有整數(shù)寄存器131。浮點(diǎn)單元123包括浮點(diǎn)邏輯,例如浮點(diǎn)加法器邏輯105、浮點(diǎn)除法器邏輯106和浮點(diǎn)乘法器邏輯107,還有浮點(diǎn)寄存器133。
組112包括存儲(chǔ)器隊(duì)列和總線接口單元130,用于接收作為輸入的地址信息和數(shù)據(jù),數(shù)據(jù)存儲(chǔ)在高速緩存陣列132中的編址單元。緩存標(biāo)簽134可用于存儲(chǔ)在高速緩存陣列132中的數(shù)據(jù),以標(biāo)識(shí)高速緩存陣列132中現(xiàn)存的信息。指令隊(duì)列和調(diào)度邏輯單元136接收指令(例如專用單元指令、浮點(diǎn)指令和/或整數(shù)指令),并將其調(diào)度到合適的執(zhí)行資源處理(例如專用寄存器單元150、浮點(diǎn)單元123、整數(shù)單元121)。指令讀取單元138從下一順序的指令地址或分支目標(biāo)地址中讀取下一個(gè)將執(zhí)行的指令。分支單元140存放被指令讀取單元138讀取的所有分支指令,并確定在分支后將執(zhí)行的下一指令是下一順序的指令,還是從通過分支指令規(guī)定的信息計(jì)算的地址中讀取的已取分支目標(biāo)的指令。裝載/存儲(chǔ)單元142執(zhí)行所有的裝載和存儲(chǔ)指令,并在高速緩存陣列132和整數(shù)寄存器131、浮點(diǎn)寄存器133以及專用寄存器單元150中的專用寄存器如寄存器152之間提供數(shù)據(jù)傳輸接口。
根據(jù)本發(fā)明,由專用單元150中的位提供對(duì)每個(gè)邏輯組101-107的控制,其中專用單元150包括功率變換寄存器152。寄存器152中的值由特定的立即指令設(shè)置,該指令將值從指令文本裝載到寄存器152中。下面描述通過編譯器的代碼發(fā)生器插入這些指令。
參考圖4,在編譯的代碼分配階段的結(jié)束期間,編譯器構(gòu)造了具有圖4所示的信息的表200。表200的每一列對(duì)應(yīng)一組具有單獨(dú)控制的頁頭/頁尾FET 108(圖3)的邏輯(圖3中標(biāo)注為101-107的組),每一行201對(duì)應(yīng)按執(zhí)行順序排列的標(biāo)注為1-10的指令。在表200的單元中設(shè)置檢查標(biāo)志,表示該資源(如邏輯組)何時(shí)被對(duì)應(yīng)行的指令使用。每一列檢查標(biāo)志之間的距離越長(zhǎng),則邏輯組(101-107)被斷電就越長(zhǎng)。在優(yōu)選的實(shí)施例中,編譯器最好重排代碼以最大化每一列的檢查標(biāo)志之間的距離,與編譯器的最優(yōu)化指示一致。一旦表200被填充,就執(zhí)行圖5所示的方法以產(chǎn)生具有合適立即數(shù)據(jù)值的“裝載功率變換寄存器”的指令。在軟件中最好使用圖5所示的方法,其需要一個(gè)周期數(shù)作為輸入,該周期數(shù)被認(rèn)為是在發(fā)現(xiàn)真正的功率節(jié)約之前單元應(yīng)被關(guān)斷的最小周期數(shù)。
參考圖5,例如,假設(shè)在發(fā)現(xiàn)真正的功率節(jié)約之前單元應(yīng)被關(guān)斷的最小周期數(shù)是5周(指令)。構(gòu)造與圖4的表200有相同行數(shù)和列數(shù)的輸入表300,其中圖4中的每個(gè)檢查標(biāo)志用輸入表300中的邏輯“1”值表示。輸出表301有與輸入表300相同的行數(shù)和列數(shù),并且當(dāng)對(duì)邏輯(組101-107中有多個(gè)或沒有一個(gè))的開關(guān)108(圖3)的控制信號(hào)被設(shè)置為“非睡眠”(NOT SLEEP)時(shí)(如邏輯被供電),其對(duì)應(yīng)列的值為“1”。在模塊304中,該方法被初始化并從輸入表300的第一行開始。
該方法預(yù)測(cè)功率節(jié)約期望的最小周期數(shù)(在本說明例中最小周期(或指令)數(shù)是5),以查看是否有單元能被斷電,如果有,則設(shè)置輸出表301中對(duì)應(yīng)的單元為“1”。該步驟在模塊306中通過檢查輸入表300的第一行的每個(gè)單元來執(zhí)行。當(dāng)前的單元值用“C”表示,可有值“1”或“0”。輸出表中前一行的值用“P”表示。應(yīng)當(dāng)注意的是,輸出表301中全1的前行能被用作該方法認(rèn)為的第一行?,F(xiàn)在通過邏輯“或”與最小周期數(shù)(如5)對(duì)應(yīng)的最小行數(shù)來確定指令的有效性。該邏輯“或”操作的結(jié)果用N表示。
在模塊308,如果C=1,則繼續(xù)到模塊310。否則繼續(xù)到模塊312。在模塊310中,對(duì)應(yīng)C=1的單元的邏輯裝置或組應(yīng)保持開啟。因此,輸出表301中的對(duì)應(yīng)位置設(shè)置為“1”。在模塊312,如果邏輯單元或組(如組101-107中的一個(gè))不在5個(gè)周期內(nèi)使用(C=0,N=0),或在5個(gè)周期內(nèi)使用但已被斷電(C=0,P=0),則對(duì)應(yīng)該單元的邏輯單元或組將被保持?jǐn)嚯娭钡奖恍枰獣r(shí)。如果這些條件成立,則在輸出表301的對(duì)應(yīng)位置設(shè)置“0”。
在模塊314,針對(duì)是否所有行已完成進(jìn)行檢查。如果沒有完成所有行,則在模塊316中轉(zhuǎn)至下一行并返回模塊306。否則繼續(xù)到模塊318。
在模塊318,執(zhí)行功率控制指令“裝載功率變換”的插入。插入的“裝載功率變換(LPM)”指令的個(gè)數(shù)代表在關(guān)閉一些單元(如101-107)的功率節(jié)約與新指令浪費(fèi)的功率和指令空間之間的平衡。在極端的情況下,新的功率控制值能被每周期都裝載,這樣加倍了指令的個(gè)數(shù)。在其它情況下,功率控制指令可每x個(gè)周期執(zhí)行。這樣,最好堅(jiān)持每代碼單元的功率控制指令的最大個(gè)數(shù),通過考慮帶有LPM指令和不帶有LPM指令的程序的總尺寸以及執(zhí)行插入的LPM指令消耗的總功率來設(shè)置x的實(shí)際值。每個(gè)插入的LPM指令可降低程序的性能,因?yàn)橹噶钫加昧艘粋€(gè)執(zhí)行周期并在其讀取和執(zhí)行期間消耗功率,而執(zhí)行周期能用于其它指令。執(zhí)行LPM指令消耗的全部功率應(yīng)保持很好地低于通過關(guān)閉單元101-107(圖3)的“虛擬Vdd/虛擬地”節(jié)約的功率。
參考圖6,給出了一個(gè)實(shí)現(xiàn)圖4的表200的例子,其具有根據(jù)圖5的輸出表301增加的功率控制指令。注意在本例中,單元在其輸出表值從1到0的周期內(nèi)被關(guān)閉。如圖6所示,指令序列包括“裝載功率變換(LPM)”指令,在該指令中包括立即數(shù)字?jǐn)?shù)據(jù)組,如1111000,該指令將這個(gè)數(shù)字代碼從輸出表301裝載到功率變換寄存器152(圖3),以使能或禁止邏輯單元/組101-107的一些、全部或沒有一個(gè)。在本例中,數(shù)字代碼1111000使能單元101-104,禁止或保持單元105-107在關(guān)閉狀態(tài)。接下來,執(zhí)行指令1,其后是另一個(gè)LPM指令(0111000)、指令2和3、LPM指令(0011000)和指令4和5。然后,在指令5和6之間插入的LPM指令早一個(gè)周期打開另一個(gè)單元,以避免在下一周期插入另一功率掩蔽指令。然后,執(zhí)行指令6、7、8、LPM(1000110)、9和10。
用LPM指令主動(dòng)控制功率變換寄存器152的程序的正確操作提供了寄存器的正確狀態(tài)將在經(jīng)過程序中斷時(shí)保持。優(yōu)選地,功率變換寄存器152的狀態(tài)的處理集成了中斷處理程序。當(dāng)程序中斷發(fā)生時(shí),通常作為外部事件的結(jié)果,當(dāng)前正在運(yùn)行的具有相關(guān)功率變換寄存器狀態(tài)的程序被停滯,并調(diào)用中斷處理程序。中斷處理程序首先確保程序所需的所有執(zhí)行資源通過在功率變換寄存器152中設(shè)置適合于程序要求的值來供電。程序會(huì)延遲,直到LPM指令執(zhí)行并且執(zhí)行單元的功率狀態(tài)與寄存器152中裝載的狀態(tài)對(duì)應(yīng)為止。這個(gè)延遲是由于讀取指令(在本例中是LPM)和指令執(zhí)行(如打開所需的任意處于關(guān)閉的單元)之間正常的管道延遲。
在一個(gè)實(shí)施例中,被中斷程序的功率變換寄存器152的狀態(tài)能夠在裝載新的與中斷處理程序的執(zhí)行資源需求對(duì)應(yīng)的值之前被保存。這會(huì)允許中斷處理器就在被中斷的程序繼續(xù)進(jìn)行之前恢復(fù)功率變換寄存器的值。然而,這對(duì)于正確的程序操作來說是不需要的。
可替換地,被中斷的程序能通過功率掩蔽寄存器中全為“1”的值恢復(fù),而只有輕微的功率節(jié)約損失。在恢復(fù)的程序中執(zhí)行的下一個(gè)LPM指令將把功率掩蔽寄存器設(shè)置到正確的值。
本發(fā)明的上述說明提供了一種針對(duì)單發(fā)布順序處理器的裝置和編譯方法。這里描述的編譯器采用按概念機(jī)順序執(zhí)行的指令,并且編譯器在此基礎(chǔ)上進(jìn)行分析。然而,本發(fā)明也適用于多發(fā)布的非順序機(jī)。這可通過對(duì)這種機(jī)器的發(fā)布邏輯使用附加的硬件以分析LPM指令的掩蔽來實(shí)現(xiàn)。該邏輯與計(jì)分牌寄存器用途所需的邏輯相似,并且由于增加了邏輯,因此會(huì)減少功率節(jié)約。
已對(duì)采用由具有累加指令配置的編譯器控制的硬件結(jié)構(gòu)的處理器的功率控制的優(yōu)選實(shí)施例進(jìn)行了描述(僅為說明而非限制),值得注意的是,本領(lǐng)域技術(shù)人員能根據(jù)上述教導(dǎo)進(jìn)行修改和變化。因此需要理解的是,可在附加的權(quán)利要求確定的本發(fā)明的范圍和精神之內(nèi)對(duì)本發(fā)明的特定實(shí)施例進(jìn)行變化。根據(jù)專利法的要求詳細(xì)清楚地描述了本發(fā)明,所主張和期望得到保護(hù)的內(nèi)容在所附權(quán)利要求中闡述。
權(quán)利要求
1.一種微處理器,包括至少一個(gè)邏輯電路;選擇裝置,與至少一個(gè)邏輯電路連接,所述選擇裝置基于存儲(chǔ)的邏輯值提供至少一個(gè)邏輯電路的開/關(guān)狀態(tài)的轉(zhuǎn)換;以及程序指令,用于根據(jù)微處理器的指令序列,基于至少一個(gè)邏輯電路的預(yù)期使用,設(shè)置存儲(chǔ)的邏輯值,以控制至少一個(gè)邏輯電路的開/關(guān)狀態(tài)。
2.如權(quán)利要求1所述的微處理器,其中所述選擇裝置包括用于提供從電源電壓到至少一個(gè)處于開狀態(tài)的邏輯電路的電源線的連接的開關(guān)。
3.如權(quán)利要求1所述的微處理器,其中所述選擇裝置包括用于提供從地到至少一個(gè)處于開狀態(tài)的邏輯電路的電源線的連接的開關(guān)。
4.如權(quán)利要求1所述的微處理器,進(jìn)一步包括寄存器,與所述選擇裝置連接以存放存儲(chǔ)的邏輯值。
5.如權(quán)利要求4所述的微處理器,其中所述寄存器在若干指令周期后更新。
6.如權(quán)利要求1所述的微處理器,進(jìn)一步包括輸入表,其包括用于至少一個(gè)邏輯單元的指令序列和相關(guān)的資源需求,其中邏輯單元的預(yù)期使用是根據(jù)所述輸入表確定的。
7.如權(quán)利要求1所述的微處理器,其中所述至少一個(gè)邏輯單元的預(yù)期使用包括在若干指令周期后至少一個(gè)邏輯裝置的使用。
8.如權(quán)利要求1所述的微處理器,進(jìn)一步包括輸出表,其包括與至少一個(gè)邏輯裝置的功率節(jié)約開/關(guān)狀態(tài)對(duì)應(yīng)的邏輯狀態(tài),并且程序指令根據(jù)功率節(jié)約開/關(guān)狀態(tài)設(shè)置存儲(chǔ)的邏輯值以控制至少一個(gè)邏輯電路。
9.一種微處理器,包括多個(gè)被分成功能組的邏輯電路;選擇裝置,與每個(gè)功能組連接,每個(gè)選擇裝置基于存儲(chǔ)在寄存器內(nèi)的邏輯值,提供對(duì)應(yīng)功能組的開/關(guān)狀態(tài)的轉(zhuǎn)換;程序指令,用于設(shè)置寄存器內(nèi)的邏輯值以控制功能組的開/關(guān)狀態(tài);編譯程序,用于基于指令序列產(chǎn)生設(shè)置在寄存器中的邏輯值,其預(yù)期每個(gè)功能組的使用。
10.如權(quán)利要求9所述的微處理器,其中每個(gè)選擇裝置都包括用于提供從電源電壓到處于開狀態(tài)的功能組的電源線的連接的開關(guān)。
11.如權(quán)利要求9所述的微處理器,其中每個(gè)選擇裝置都包括用于提供從地到處于開狀態(tài)的功能組的電源線的連接的開關(guān)。
12.如權(quán)利要求9所述的微處理器,其中所述寄存器包括用于每個(gè)功能組的存儲(chǔ)單元。
13.如權(quán)利要求9所述的微處理器,其中所述寄存器在若干指令周期后更新。
14.如權(quán)利要求9所述的微處理器,進(jìn)一步包括編譯程序產(chǎn)生的輸入表,其包括用于每個(gè)功能組的指令序列和相關(guān)的資源需求,其中所述功能組的使用是根據(jù)所述輸入表確定的。
15.如權(quán)利要求9所述的微處理器,其中所述功能組的使用包括若干指令周期后的功能組的使用。
16.如權(quán)利要求9所述的微處理器,進(jìn)一步包括輸出表,其包括與功能組的功率節(jié)約開/關(guān)狀態(tài)對(duì)應(yīng)的邏輯狀態(tài)。
17.一種用于產(chǎn)生嵌入指令序列以控制微處理器中邏輯電路的功率的方法,包括步驟產(chǎn)生控制微處理器的功能程序的指令序列;分析指令序列,以確定在每個(gè)指令周期中哪些邏輯電路是活動(dòng)的;比較每個(gè)邏輯電路在當(dāng)前指令周期后不活動(dòng)的指令周期的個(gè)數(shù)與功能程序的每個(gè)指令周期的值;以及基于所述比較步驟,插入指令序列以打開或關(guān)閉每個(gè)邏輯電路。
18.如權(quán)利要求17所述的方法,其中所述插入指令序列的步驟包括對(duì)具有邏輯值的寄存器編程,其中每個(gè)邏輯電路基于邏輯值被打開或關(guān)閉。
19.如權(quán)利要求17所述的方法,其中所述比較步驟中的值包括確定為在邏輯電路中提供凈功率節(jié)約的數(shù)值。
20.一種可機(jī)讀的程序存儲(chǔ)裝置,有形地包括可被機(jī)器執(zhí)行的指令程序,以執(zhí)行如權(quán)利要求17所述的方法步驟。
全文摘要
一種微處理器包括邏輯電路。將選擇裝置連接到該邏輯電路,該選擇裝置基于存儲(chǔ)的邏輯值提供邏輯電路的開/關(guān)狀態(tài)的轉(zhuǎn)換。包括一個(gè)程序指令,其根據(jù)微處理器的指令序列,基于邏輯電路的預(yù)期使用設(shè)置存儲(chǔ)的邏輯值,以控制邏輯電路的開/關(guān)狀態(tài)。
文檔編號(hào)G06F1/32GK1625727SQ02828770
公開日2005年6月8日 申請(qǐng)日期2002年4月19日 優(yōu)先權(quán)日2002年4月19日
發(fā)明者E·R·奧爾特曼, C·J·格洛斯納三世, E·赫凱內(nèi)克, D·梅爾策, M·穆德吉爾 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司