專利名稱:Java加速器環(huán)境中能力管理的系統(tǒng)和方法
涉及申請引用本申請涉及美國專利申請No.09/565,679(代理人卷號No.VTI1P333),提交于2000年5月4日,題目為“一種具有Java堆棧、算術(shù)邏輯單元并使用相同多堆棧點(diǎn)及方法的智能子系統(tǒng)體系結(jié)構(gòu)”,在此全文引入作為參考。
本申請同時(shí)還涉及美國專利申請No.09/670,496(代理人卷號No.PHILP337),題目為“校驗(yàn)Java隊(duì)列低上層邊界的系統(tǒng)和方法”,在此全文引入作為參考。
背景技術(shù):
1.發(fā)明領(lǐng)域本發(fā)明一般涉及硬件加速Java執(zhí)行,更具體而言是包含主/從Java加速環(huán)境的能力管理。
2.涉及領(lǐng)域描述當(dāng)今世界的計(jì)算機(jī)程序設(shè)計(jì)提供了許多高水平的編程語言。例如,Java就在相對較短的時(shí)間中獲得了廣泛的應(yīng)用,這在很大程度上歸功于無處不在的因特網(wǎng)的成功。Java的流行,至少在部分上是因?yàn)樗脚_的獨(dú)立性、面向?qū)ο蠛陀猩Φ谋拘?。而且,Java剔除了許多必須由包括存儲器管理和跨平臺接口的應(yīng)用程序員所執(zhí)行的乏味和易錯的任務(wù)。這樣,Java程序員能夠更好的將精力集中于設(shè)計(jì)和函數(shù)問題。
使用Java處理器來執(zhí)行Java應(yīng)用,可以僅僅通過Java虛擬機(jī)(JVM)的形式由軟件來象征性地實(shí)現(xiàn)。但是,因?yàn)榘殡S著執(zhí)行軟件中的程序,而要產(chǎn)生的問題是JVM操作緩慢的問題使人煩擾。
傳統(tǒng)上,兩種方法被用來提高Java編譯的性能,它們被稱為本地Java執(zhí)行和部分硬件編譯Java指令。本地Java執(zhí)行方法使用硬件來構(gòu)建真正的Java處理器。但是,這種方法面對著一個嚴(yán)峻的缺點(diǎn)就是它抹殺了Java“獨(dú)立于機(jī)器之外”的概念,從而排斥了大量的軟件,它們不再能夠在這樣的Java處理器上執(zhí)行。
部分硬件編譯Java指令方法使用硬件輔助來提高編譯過程。這一結(jié)構(gòu)通常被稱為Java加速器?;旧?,它在性能上近似于執(zhí)行0等待狀態(tài)存儲器之外的匯編語言編譯器。
一種Java加速器通過采用主/從結(jié)構(gòu)來實(shí)現(xiàn)。其中主處理器執(zhí)行除Java指令之外的所有指令;從處理器僅僅執(zhí)行Java指令。但是,使用該方法的傳統(tǒng)系統(tǒng)充斥著主處理器和從處理器之間能力管理的問題。當(dāng)兩個處理器均用在小型、由電池供電、移動設(shè)備時(shí)這個問題尤為突出,那里的節(jié)能就尤為重要。
歷史上,伴隨著計(jì)算設(shè)備能力管理的問題來源于嘗試著監(jiān)測系統(tǒng)或系統(tǒng)內(nèi)的各個部分的有意義的工作。通常,當(dāng)監(jiān)測設(shè)備的能力能夠被關(guān)閉時(shí),常規(guī)的能力管理系統(tǒng)協(xié)同空閑等待記時(shí)器,來監(jiān)測輸入和輸出信號(I/O)。
在其它的傳統(tǒng)能力管理系統(tǒng)中,處理器的接口頻率是變化的,因此來減少計(jì)算機(jī)系統(tǒng)的能力消耗。此外,其它的傳統(tǒng)能力管理系統(tǒng)使用被稱為時(shí)鐘遏制的方法來降低微處理器的能力消耗和計(jì)算機(jī)系統(tǒng)的能力消耗。在這種方法中,當(dāng)微處理器被認(rèn)為沒有進(jìn)行它的有意義工作時(shí),微處理器的輸入將改變,這就有效地通知微處理器停止使用內(nèi)部時(shí)鐘。通過改變微處理器的輸入,微處理器能夠減緩遏制的恢復(fù),這樣微處理器就不會被燒毀,而且同時(shí)減少計(jì)算機(jī)系統(tǒng)的能力消耗。盡管近期現(xiàn)有的能力管理技術(shù)判定程序已經(jīng)通過使它們成為操作系統(tǒng)(OS)的中心而得到了提高,但是許多傳統(tǒng)的能力管理判定僅僅是猜測。
盡管上述方法或許能夠達(dá)到減少能力消耗的結(jié)果,但卻沒有一種方法綜合地節(jié)減系統(tǒng)中每一個處理器的操作電壓,從而能進(jìn)一步減少系統(tǒng)的能力消耗。能夠既控制主處理器又控制Java處理器的操作電壓和操作頻率將允許優(yōu)化能力,平衡計(jì)算機(jī)系統(tǒng)的性能。
從發(fā)展的觀點(diǎn)來說,需要提供一種提高Java加速器能力管理的系統(tǒng)和方法。能力管理系統(tǒng)能夠控制主處理器和Java處理器操作電壓和操作頻率。而且,能力管理系統(tǒng)在操作狀態(tài)改變時(shí)能夠保證沒有能力供應(yīng)和數(shù)字電路應(yīng)力發(fā)生;并確保在處理器之間存儲器更新時(shí),有充沛的時(shí)間可被利用。
發(fā)明概述概括地說,本發(fā)明通過提供提高Java加速器的能力管理系統(tǒng)滿足這些需要。本發(fā)明的能力管理系統(tǒng)能夠控制主處理器和Java處理器操作電壓和操作頻率,因此允許優(yōu)化計(jì)算機(jī)系統(tǒng)中的能力和性能。在一種實(shí)施方案中,公開一種提供了基于Java加速器硬件能力管理的能力管理方法。最初,響應(yīng)初始化Java應(yīng)用,由主處理器提供Java模式信號。隨后,響應(yīng)Java模式信號,主處理器的能力被減少,Java處理器的能力增加。當(dāng)Java應(yīng)用的執(zhí)行被終止時(shí),從Java處理器產(chǎn)生一個Java完成信號,從而發(fā)送信號給系統(tǒng)將控制交還給主處理器。
在另一種實(shí)施方案中,公開一種提供了基于Java加速器硬件能力管理的能力管理方法。能力管理系統(tǒng)包括與能力產(chǎn)生電路連接的主處理器。主處理器包括能提供Java模式信號的Java模式信號端口。能力管理系統(tǒng)還包括與能力產(chǎn)生電路連接的Java處理器。Java處理器包括能提供Java完成信號的Java完成信號端口。在使用中,響應(yīng)接收的Java模式信號,能力產(chǎn)生電路減少主處理器的能力,增加Java處理器的能力。此外,響應(yīng)接收的Java完成信號,能力產(chǎn)生電路增加主處理器的能力,減少Java處理器的能力。
在本發(fā)明的進(jìn)一步實(shí)施方案中公開一種抑制提供給處理器變化的斜坡(ramp)電路方法。斜坡電路方法從獲得一個處理器所要設(shè)定的、代表希望的頻率或電壓的目標(biāo)值開始。隨后,目標(biāo)值和當(dāng)前值相比較而獲得一個差值。與目標(biāo)值類似,當(dāng)前值是處理器當(dāng)前操作的當(dāng)前頻率或電壓。當(dāng)差值在預(yù)定義的閾值之外時(shí),調(diào)整當(dāng)前值。這里的差值可以是值的范圍或者是一個單一的值,例如0。以上操作然后被重復(fù),直至差值在預(yù)定義的閾值之內(nèi)。
有利的是,本發(fā)明通過控制主處理器和Java處理器的操作頻率和操作電壓,允許優(yōu)化計(jì)算機(jī)系統(tǒng)的能力和性能。而且,當(dāng)頻率和電壓被控制時(shí),電壓在頻率增加之前而增加,頻率在電壓減少之前被減少。這就保證了系統(tǒng)不會在當(dāng)前電壓下,以過快的頻率運(yùn)行,從而,節(jié)約了能力。
最后,對本領(lǐng)域的技術(shù)人員來說,本發(fā)明中的能力管理系統(tǒng)在操作狀態(tài)改變時(shí)能夠保證沒有能力供應(yīng)和數(shù)字電路應(yīng)力發(fā)生;并確保在處理器之間存儲器更新時(shí),有充沛的時(shí)間可被利用。本發(fā)明的其它優(yōu)點(diǎn)在下面的詳細(xì)描述中將會是顯而易見的,結(jié)合附圖,本發(fā)明的原則將通過舉例的方式予以說明。
附圖簡述本發(fā)明,包含著更多的優(yōu)點(diǎn),最好通過參照下列描述、并結(jié)合附圖予以更好的理解。附圖中
圖1是說明結(jié)合本發(fā)明一種實(shí)施方案的,Java硬件加速器系統(tǒng)方塊圖。
圖2是說明結(jié)合本發(fā)明一種實(shí)施方案的,能力管理系統(tǒng)方塊圖。
圖3是說明結(jié)合本發(fā)明一種實(shí)施方案的,可效仿的斜坡電路方塊圖。
圖4是說明結(jié)合本發(fā)明一種實(shí)施方案的,為基于Java加速器硬件提供能力管理程序的流程圖。
圖5是說明結(jié)合本發(fā)明一種實(shí)施方案的,抑制提供給處理器變化的斜坡電路程序的流程圖。
優(yōu)選實(shí)施方案詳述本發(fā)明公開的是一種Java加速器能力管理系統(tǒng)。概括地說,本發(fā)明的能力管理系統(tǒng)在Java加速器中,通過Java程序被初始化時(shí)減少主處理器的能力,增加Java處理器的能力來管理能力。當(dāng)Java應(yīng)用被終止時(shí),該過程被逆轉(zhuǎn)。
在下面的描述中,許多細(xì)節(jié)被提出以提供一個對本發(fā)明的透徹了解。然而,對本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以無需特定部分或全部所有的細(xì)節(jié)而進(jìn)行實(shí)踐。另一方面,為了不必要地混淆本發(fā)明,眾所周知的程序步驟沒有進(jìn)行詳述。
圖1是說明結(jié)合本發(fā)明一種實(shí)施方案的,Java硬件加速器系統(tǒng)10的方塊圖。Java硬件加速器系統(tǒng)10包括與主處理器14、從(Java)處理器16和系統(tǒng)存儲器18連接的系統(tǒng)總線12。此外,Java硬件加速器系統(tǒng)10還包括在主處理器14與Java處理器16之間連接的總線仲裁20。
Java硬件加速器系統(tǒng)10是雙處理器系統(tǒng),其中Java處理器16來執(zhí)行很多Java指令,主處理器14來執(zhí)行包括復(fù)雜Java指令的所有其它指令。如同Java是天生的“機(jī)器中的機(jī)器”典范,Java處理器16是從處理器,作為“內(nèi)部機(jī)器”。Java處理器16被“外部機(jī)器”,即主處理器14所初始化和控制。
主處理器14可以被嵌入任何處理器,包括當(dāng)前的工業(yè)標(biāo)準(zhǔn)裝置,例如X86、ARM和MIPS裝置。Java處理器16優(yōu)選的是包含指令和數(shù)據(jù)緩存和內(nèi)部SRAM的基于堆棧的處理器。而且,Java處理器16優(yōu)選的包括基于寄存器堆棧,正如在涉及到的美國專利申請No.09/565,679(代理人卷號No.VTI1P333),提交于2000年5月4日,題目為“一種具有Java堆棧、算術(shù)邏輯單元和使用相類似的多堆棧點(diǎn)及方法的智能子系統(tǒng)體系”,它在此全文引入作為參考。
一般來講,主處理器14支持操作系統(tǒng)、非Java應(yīng)用和復(fù)雜的Java指令。在一種實(shí)施方案中,額外的專門ARM,或其等價(jià)物處理器(未示出)被用來處理復(fù)雜的Java指令。
Java處理器16通常至少能夠執(zhí)行下列Java指令加載、儲存、計(jì)算、跳轉(zhuǎn)、堆棧和分區(qū)。優(yōu)選的,Java處理器16內(nèi)建的支持所有的計(jì)算指令,包括整數(shù)和浮點(diǎn)。如前面所述,主處理器14執(zhí)行更復(fù)雜的指令,例如程序調(diào)用。當(dāng)復(fù)雜指令被解碼時(shí),Java處理器16產(chǎn)生一個中斷,所有的在數(shù)據(jù)緩存中標(biāo)記行被寫入系統(tǒng)存儲器18中。然后,Java處理器16停止執(zhí)行。
優(yōu)選的,Java處理器16包括用于快速訪問當(dāng)前被執(zhí)行的程序指令緩存。本地?cái)?shù)據(jù)被用來支持留駐內(nèi)部SRAM的程序,它是典型的單口,并且可被主處理器14和Java處理器16所訪問。當(dāng)Java處理器16執(zhí)行時(shí),主處理器14鎖定所有的本地?cái)?shù)據(jù)區(qū)和堆棧。此外,數(shù)據(jù)緩存包括快速訪問的非本地變量,如隊(duì)列。
圖2是說明結(jié)合本發(fā)明一種實(shí)施方案的,能力管理系統(tǒng)50的方塊圖。能力管理系統(tǒng)50包括主處理器端口52和Java處理器部分54。主處理器端口52包括與一組主常態(tài)操作電壓和頻率寄存器58和一組主低能力電壓和頻率寄存器60連接的主開關(guān)寄存器56。此外,能力管理系統(tǒng)50包括與主斜坡電路64和主處理器14連接的一組可編程電壓和頻率發(fā)生器62。主處理器14包括提供Java模式信號68的Java模式信號端口用于初始化Java應(yīng)用。
Java處理器部分54包括與一組Java常態(tài)操作電壓和頻率寄存器72、一組Java低能力電壓和頻率寄存器74和空閑延時(shí)記時(shí)器連接的Java開關(guān)寄存器70。此外,能力管理系統(tǒng)50包括與Java斜坡電路80和Java處理器16連接的一組可編程電壓和頻率發(fā)生器78。Java處理器16包括當(dāng)Java應(yīng)用完成時(shí),用來提供Java完成信號84的Java完成信號端口。
每個編程電壓和頻率發(fā)生器62和78為由主斜坡電路64和Java斜坡電路80提供的頻率變化提供真正的建立。在操作中,每個可編程控制器電壓和頻率發(fā)生器62和78用低頻時(shí)鐘信號鎖定,允許合適的斜坡電路為每個時(shí)鐘提供新的能力。
每個處理器14和16基本上有兩種操作模式,常態(tài)模式和低能力操作模式。在常態(tài)操作模式中,主處理器14和Java處理器16在通常被看作主處理器14或Java處理器16嵌入處理器通常工作狀態(tài)的電壓和頻率下操作。在低能力操作模式中,主處理器14或Java處理器16在低能力電壓和頻率下操作,它們低于主處理器14或Java處理器16嵌入的處理器通常工作狀態(tài)。
當(dāng)處理器14/16從運(yùn)行在有意義工作、使用常態(tài)操作,切換至處理器14/16沒有運(yùn)行在有意義工作、低能力操作模式時(shí),本發(fā)明提供了增強(qiáng)的能力節(jié)約。能力的節(jié)約通過當(dāng)每個處理器14/16不被使用時(shí),降低操作電壓和操作頻率,從而得到明顯的增強(qiáng)。
開始時(shí),主處理器的常態(tài)操作電壓和常態(tài)操作頻率值被儲存在一組常態(tài)操作電壓和頻率寄存器58中。主處理器低能力操作電壓值和主處理器的低頻率值被儲存在一組主低能力電壓和頻率寄存器72中。Java處理器低能力操作電壓和Java處理器低操作頻率值則被儲存在一組Java低電壓和頻率寄存器74中。
這樣,幾組主和Java常態(tài)操作電壓和頻率寄存器58和72各自定義主處理器14和Java處理器16的常態(tài)操作電壓和頻率。相類似,幾組主和Java低能力操作電壓和頻率寄存器60和74各自定義主處理器14和Java處理器16的低能力操作電壓和頻率。
在通常的操作中,主處理器14根據(jù)它的常態(tài)操作模式,即被主操作電壓和頻率寄存器所定義的模式進(jìn)行操作,同時(shí)Java處理器16根據(jù)被Java低能力和頻率寄存器74它的低能力操作模式進(jìn)行操作。如同先前討論的那樣,主處理器14通常執(zhí)行所有非Java指令,以及Java處理器不能執(zhí)行的復(fù)雜的Java指令,如程序調(diào)用。當(dāng)初化一個Java應(yīng)用時(shí),主處理器產(chǎn)生一個Java模式信號68,通知能力管理系統(tǒng)50一個Java應(yīng)用將要被Java處理器16所執(zhí)行。主寄存器開關(guān)56和Java寄存器開關(guān)70接收J(rèn)ava模式信號68,命令它們?nèi)デ袚Q主處理器14和Java處理器16操作模式。
當(dāng)接收到Java模式信號68,主寄存器開關(guān)56根據(jù)存儲在主低能力電壓和頻率寄存器60中的值,為主處理器14設(shè)定主目標(biāo)電壓和頻率值。與之相類似的,Java寄存器開關(guān)70根據(jù)存儲在Java常態(tài)操作電壓和頻率寄存器72中的值,為Java處理器16設(shè)定Java目標(biāo)電壓和頻率值。
此時(shí),主斜坡電路64使用主目標(biāo)電壓和頻率值,逐步地減少主處理器當(dāng)前的電壓和頻率到主目標(biāo)電壓和頻率值。在相類似的方法中,Java斜坡電路使用Java目標(biāo)電壓和頻率值,逐步地提高Java處理器當(dāng)前的電壓和頻率到Java目標(biāo)電壓和頻率值。
主斜坡電路64和Java斜坡電路80各自提供小的電壓和頻率增量隨著時(shí)間的變化而增加或減少,直到主處理器和Java處理器當(dāng)前的電壓和頻率達(dá)到它們各自的目標(biāo)電壓和頻率值。當(dāng)每次電壓和頻率減少之后,主斜坡電路64與主處理器14連接,為一組可編程的電壓和頻率發(fā)生器62提供新的電壓和頻率減量值。該組可編程的電壓和頻率發(fā)生器62然后為主處理器14的電壓和頻率設(shè)定新的電壓和頻率減量值。
相類似的,當(dāng)每次增加之后,Java斜坡80電路與Java處理器16連接,為一組可編程的電壓和頻率發(fā)生器78提供新的電壓和頻率增量值。該編程的電壓和頻率發(fā)生器78然后為Java處理器16的電壓和頻率設(shè)定新的電壓和頻率增量值。在此方法中,當(dāng)一個Java應(yīng)用被初始化時(shí),能力在主處理器14中被減少,在Java處理器16中增加,其結(jié)果就是能力實(shí)質(zhì)上在系統(tǒng)50中被恢復(fù)了。
然后,Java處理器16開始執(zhí)行Java應(yīng)用。Java處理器16將逐步地執(zhí)行Java應(yīng)用,直至其完成,或者直至遇到一個Java處理器16不能完成的復(fù)雜的Java指令。在此時(shí),Java處理器16產(chǎn)生一個Java完成信號84或者中斷,它將被主寄存器開關(guān)56和Java寄存器開關(guān)70接收,通知電源管理系統(tǒng)50,Java應(yīng)用的執(zhí)行被終止了。
當(dāng)接收到Java完成信號84,主寄存器開關(guān)56根據(jù)存儲在主常態(tài)操作電壓和頻率寄存器58中的值來設(shè)定主目標(biāo)電壓和頻率值。相類似的,Java寄存器開關(guān)70根據(jù)存儲在Java低能力操作電壓和頻率寄存器74中的值,為Java處理器16設(shè)定Java目標(biāo)電壓和頻率值。
在此時(shí),主斜坡電路64使用主目標(biāo)電壓和頻率值,逐步地增加主處理器14當(dāng)前電壓和頻率到主目標(biāo)電壓和頻率值。在相類似的方法中,Java斜坡電路80使用Java目標(biāo)電壓和頻率值,逐步地減少Java處理器14當(dāng)前電壓和頻率到Java目標(biāo)電壓和頻率值。
正如上面所提及的,主斜坡電路64和Java斜坡電路80各自提供小的電壓和頻率增量隨著時(shí)間的變化而增加或減少,直到主處理器和Java處理器當(dāng)前電壓和頻率達(dá)到它們各自的目標(biāo)電壓和頻率值。當(dāng)每次電壓和頻率增加之后,主斜坡電路64與主處理器14連接,為一組可編程的電壓和頻率發(fā)生器62提供新的電壓和頻率增量值。該組可編程的電壓和頻率發(fā)生器62系列然后為主處理器14的電壓和頻率設(shè)定新的電壓和頻率增量值。
相類似的,當(dāng)每次減少之后,Java斜坡電路80與Java處理器16連接,為一組可編程的電壓和頻率發(fā)生器78提供新的電壓和頻率減量值。該組可編程的電壓和頻率發(fā)生器78然后為Java處理器16的電壓和頻率設(shè)定新的電壓和頻率增量值。這樣,當(dāng)Java應(yīng)用的執(zhí)行被終止時(shí),能力在主處理器14中增加,在Java處理器16中被減少。此時(shí),主處理器14重新獲得系統(tǒng)的控制,繼續(xù)執(zhí)行計(jì)算機(jī)的指令。
在Java執(zhí)行中,Java處理器16在本地緩存中存儲用于執(zhí)行各種Java指令的信息。當(dāng)Java執(zhí)行被終止時(shí),這個信息通過系統(tǒng)總線使得主處理器14來說是可以獲取它。為了在Java處理器16被關(guān)閉來降低能力操作模式之前提供這樣的信息,本發(fā)明使用一個空閑延遲計(jì)時(shí)器76連接在Java寄存器開關(guān)70和Java斜坡電路80之間完成此項(xiàng)任務(wù)。
空閑延遲計(jì)時(shí)器76通過設(shè)定Java目標(biāo)電壓和頻率值到存儲在Java低操作電壓和頻率寄存器74中低值,來延遲Java電壓斜坡電路。延遲的長度是Java處理器16緩存大小的函數(shù),它被設(shè)定為在Java處理器16的能力被減少之前,緩存中的信息能同時(shí)被傳輸?shù)较到y(tǒng)存儲器。要說明的是,空閑延遲計(jì)時(shí)器76僅僅在Java處理器16產(chǎn)生一個Java完成信號84之后才起作用。
圖3是說明結(jié)合本發(fā)明一種實(shí)施方案的,可效仿的斜坡電路100的方塊圖??煞滦У男逼码娐?00使用的是頻率斜坡電路。但是,斜坡電路100同樣也可以使用電壓斜坡電路給寄存器提供電壓值而不是頻率值。
斜坡電路100包括與目標(biāo)頻率寄存器104、當(dāng)前頻率寄存器106和偏移量表108連接的比較器102。此外,斜坡電路100還包括與偏移量表108、當(dāng)前頻率寄存器106連接的偏移量頻率寄存器110。最后,斜坡電路100包括一個頻率狀態(tài)機(jī)器112,來提供對斜坡電路100的控制。應(yīng)當(dāng)指出的是,當(dāng)前頻率寄存器106同樣與可編程頻率發(fā)生器114連接。
當(dāng)能力模式在常態(tài)和低能力模式之間進(jìn)行切換時(shí),電壓和頻率的變化使得主處理器和Java處理器優(yōu)選地被抑制,以避免給能力供應(yīng)和數(shù)字邏輯增加應(yīng)力。
如同其后更加詳盡的說明,斜坡電路100提供給處理器電壓和頻率一個小的增量變化,確保這些變化的正確的優(yōu)先權(quán)。在一般情況下,當(dāng)處理器的能力由低能力模式切換到常態(tài)模式時(shí),電壓將在頻率增加前增加。與之相反,當(dāng)處理器的能力由常態(tài)能力模式到低能力模式進(jìn)行切換時(shí),頻率將在電壓減少前減少。
在操作中,斜坡電路100由頻率狀態(tài)機(jī)器112提供相對低的時(shí)鐘信號所封鎖。如同前面所討論的,斜坡電路100從一組常態(tài)操作或者低能力頻率寄存器獲得一個目標(biāo)頻率,這取決于當(dāng)前操作模式和存儲在頻率寄存器104中的值。相應(yīng)處理器當(dāng)前操作頻率存儲在當(dāng)前頻率寄存器106中。
在各個時(shí)鐘信號中,比較器102比較存儲在目標(biāo)頻率寄存器104與存儲在當(dāng)前頻率寄存器106中的值,而獲得差值。這個差值是目標(biāo)頻率寄存器104與存儲在當(dāng)前頻率寄存器106中的值的差。
如果差值在預(yù)定義的閾值之外,表格查找將使用差值和偏移表108。表格查找的結(jié)果將被存儲在頻率偏移寄存器110中。預(yù)定義的閾值可以是一定范圍的可接受的頻率值、信號值或0。設(shè)定閾值為0將使在差值不為0時(shí),其結(jié)果在閾值之外。任何差值在閾值的范圍之外都會使得其差值在閾值之外。
其后,存儲在頻率偏移寄存器110中的值將在存儲在當(dāng)前頻率寄存器106中值基礎(chǔ)上增加或減少,其結(jié)果存儲在當(dāng)前頻率寄存器中。優(yōu)選地,偏移表被設(shè)定為提供頻率偏移,其結(jié)果是頻率變化是平滑的線性頻率增長??蛇x擇的,頻率偏移寄存器110可以被忽略,偏移量將直接從當(dāng)前頻率寄存器114和偏移表108中增加或減去。新的頻率值存儲在當(dāng)前頻率寄存器106中,然后由可編程頻率發(fā)生器114編程,來設(shè)定相應(yīng)處理器到新的當(dāng)前頻率值。
斜坡電路100繼續(xù)上述操作,直至差值達(dá)到預(yù)定義的閾值之內(nèi)。此時(shí),相應(yīng)的處理器將在目標(biāo)頻率下操作,開始執(zhí)行適當(dāng)?shù)闹噶睢T谄渌膶?shí)施方案中,上述操作在閾值達(dá)到后將繼續(xù)。在這個實(shí)施方案中,0值將被存儲在偏移寄存器110中,其結(jié)果是當(dāng)前的頻率值不會有太多的變化。當(dāng)一個新的目標(biāo)頻率被存儲在目標(biāo)頻率寄存器中時(shí),斜坡電路100自動進(jìn)行操作來提升頻率到新的目標(biāo)值。
如上面所提到的,應(yīng)當(dāng)指出,斜坡電路100可以作為電壓斜坡電路來操作,即通過在斜坡電路100中改變頻率值來改變電壓值、將電路100連接到一個可編程電壓發(fā)生器。
圖4是說明結(jié)合本發(fā)明一種實(shí)施方案的,為基于Java加速器硬件提供能力管理程序200的流程圖。在202的初始化操作中,預(yù)處理操作被執(zhí)行。預(yù)處理操作包括初始化Java程序的計(jì)數(shù)和存儲指針,其它的預(yù)處理操作對本領(lǐng)域的技術(shù)人員來講中是淺顯的。
在Java模式操作204中,響應(yīng)初始化Java應(yīng)用,由主處理器提供一個Java模式信號。在常態(tài)的操作中,主處理器根據(jù)它的主常態(tài)操作電壓和頻率寄存器所定義的操作模式來進(jìn)行操作;而Java處理器則根據(jù)由Java低能力操作電壓和頻率寄存器所定義的,低能力操作模式來進(jìn)行操作。主處理器執(zhí)行所有非Java指令,包括Java處理器不能執(zhí)行的復(fù)雜Java指令,如程序調(diào)用。初始化Java應(yīng)用時(shí),主處理器產(chǎn)生一個Java模式信號,通知能力管理系統(tǒng),Java應(yīng)用將被Java處理器所執(zhí)行。然后,主寄存器開關(guān)和Java寄存器開關(guān)接收J(rèn)ava模式信號,命令它們來在主和Java處理器間切換操作模式。
接下來,在主能力降低操作206中,響應(yīng)Java模式信號,主處理器的能力被減少。接收到Java模式信號,主寄存器開關(guān)參照存儲在主低能力電壓和頻率寄存器中的值來設(shè)定主處理器的主目標(biāo)電壓和頻率值。然后,主斜坡電路參照存儲在主低能力電壓和頻率寄存器中的值,使用主目標(biāo)電壓和頻率值來逐步地減少當(dāng)前的電壓和頻率至主目標(biāo)電壓和頻率值。
如同前面所討論的那樣,主斜坡電路提供小的電壓和頻率增量隨著時(shí)間的變化來增加或減少,直到當(dāng)前的電壓和頻率達(dá)到它們各自的目標(biāo)電壓和頻率值。當(dāng)每次電壓和頻率減少之后,與主處理器連接的主斜坡電路為該組可編程的電壓和頻率發(fā)生器提供新的電壓和頻率減量值。該組可編程的電壓和頻率發(fā)生器然后為主處理器的電壓和頻率設(shè)定新的電壓和頻率減量值。
在Java能力增加操作208中,響應(yīng)Java模式信號,Java處理器的能力增加。當(dāng)接收到Java模式信號,Java寄存器參照存儲在Java常態(tài)電壓和頻率寄存器中的值為Java處理器開關(guān)設(shè)定Java目標(biāo)電壓和頻率值。Java斜坡電路則使用Java目標(biāo)電壓和頻率值逐步增加Java處理器的當(dāng)前電壓和頻率到相應(yīng)的Java目標(biāo)電壓和頻率值。
當(dāng)每次電壓和頻率增加之后,與Java處理器連接的Java斜坡電路為該組可編程的電壓和頻率發(fā)生器提供新的電壓和頻率增量值。該組可編程的電壓和頻率發(fā)生器然后為Java處理器的電壓和頻率設(shè)定新的電壓和頻率增量值。當(dāng)達(dá)到它的通常操作電壓和頻率時(shí),Java處理器開始執(zhí)行Java應(yīng)用,并且逐步地繼續(xù)執(zhí)行Java應(yīng)用,直至其完成,或者直至遇到一個Java處理器不能完成的復(fù)雜的Java指令。
在Java完成信號操作210中,當(dāng)Java應(yīng)用執(zhí)行被終止時(shí),Java處理器將產(chǎn)生一個Java完成信號。此時(shí),Java處理器產(chǎn)生一個由主寄存器開關(guān)和Java寄存器開關(guān)接收的Java完成信號或中斷。Java完成信號通知能力管理系統(tǒng),Java應(yīng)用的執(zhí)行被終止了。
然后,響應(yīng)Java完成信號,在Java完成操作212中,主處理器的能力被增加,Java處理器的能力被減少。接收到Java完成信號,主寄存開關(guān)參照由主常態(tài)操作電壓和頻率寄存器的值設(shè)定主目標(biāo)電壓和頻率值。相類似的,Java寄存器開關(guān)參照由Java低操作電壓和頻率寄存器的值設(shè)定Java目標(biāo)電壓和頻率值。
此時(shí),主斜坡電路使用主目標(biāo)電壓和頻率值,逐步地增加主處理器的當(dāng)前電壓和頻率值至主目標(biāo)電壓和頻率值。在相類似的方法中,Java斜坡電路使用Java目標(biāo)電壓和頻率值,逐步地減小Java處理器當(dāng)前電壓和頻率到Java目標(biāo)電壓和頻率值。
正如上面所提及的,主斜坡電路和Java斜坡電路各自提供小的電壓和頻率增量隨著時(shí)間的變化而增加或減少,直到主處理器和Java處理器當(dāng)前的電壓和頻率達(dá)到它們各自的目標(biāo)電壓和頻率值。當(dāng)每次電壓和頻率增加之后,主斜坡電路與主處理器連接,為一組可編程的電壓和頻率發(fā)生器提供新的電壓和頻率增量值。該組可編程的電壓和頻率發(fā)生器然后為主處理器的電壓和頻率設(shè)定新的電壓和頻率增量值。
相類似的,當(dāng)每次減少之后,Java斜坡電路與Java處理器連接,為一組可編程的電壓和頻率發(fā)生器提供新的電壓和頻率減量值。該組可編程的電壓和頻率發(fā)生器然后為Java處理器的電壓和頻率設(shè)定新的電壓和頻率減量值。在此方法中,當(dāng)Java應(yīng)用的執(zhí)行被終止時(shí),能力在主處理器中被增加,在Java處理器中被減少。此時(shí),主處理器重新獲得系統(tǒng)的控制,繼續(xù)執(zhí)行計(jì)算機(jī)的指令。
當(dāng)Java執(zhí)行被終止時(shí),存儲在本地存儲器緩沖區(qū)中的信息通過系統(tǒng)總線使得主處理器可以獲取它。為了在Java處理器被關(guān)閉來降低能力操作模式之前提供這樣的信息,本發(fā)明使用一個空閑延遲記時(shí)器連接在Java寄存器開關(guān)和Java斜坡電路之間協(xié)同完成此項(xiàng)任務(wù)。
空閑延遲記時(shí)器通過設(shè)定Java目標(biāo)電壓和頻率值到由Java低操作電壓和頻率寄存器中的低值,來延遲Java電壓斜坡電路。延遲的長度是Java處理器緩存大小的函數(shù),它被設(shè)定為在Java處理器的能力被減少之前,緩存中的信息被傳輸?shù)较到y(tǒng)存儲器中去。要說明的是,空閑延遲記時(shí)器被優(yōu)選地設(shè)為僅僅在Java處理器產(chǎn)生一個Java完成信號之后才起作用。
后處理操作然后在操作214中被執(zhí)行。后處理操作包括Java方法調(diào)用的執(zhí)行,其它的后處理操作對本領(lǐng)域的技術(shù)人員來說是淺顯的。有利地是,既能控制主處理器和Java處理器的操作頻率又能控制其操作電壓將在計(jì)算機(jī)系統(tǒng)中優(yōu)化能力和性能。
圖5是說明結(jié)合本發(fā)明一種實(shí)施方案的,抑制提供給處理器變化的斜坡電路程序300的流程圖。盡管斜坡電路程序300被描述為一個電壓斜坡電路程序,斜坡電路程序同樣可以被用于提升處理器頻率或電壓。通過用頻率值代替電壓值,斜坡電路程序300可以被用作頻率斜坡電路程序。在302進(jìn)程的初始化中,預(yù)處理被執(zhí)行。預(yù)處理操作包括初始化常態(tài)操作、低能力電壓和頻率寄存器,其它的預(yù)處理操作對本領(lǐng)域的技術(shù)人員來說是淺顯的。
在目標(biāo)值操作304中,目標(biāo)值從電壓和頻率寄存器中被獲取。目標(biāo)電壓是從常態(tài)操作或者低電壓寄存器中獲取得,它取決于當(dāng)前能力操作模式,并被存儲在目標(biāo)電壓寄存器中。相應(yīng)處理器的當(dāng)前操作電壓值存儲在當(dāng)前電壓寄存器中。
接下來,在比較器306中,目標(biāo)值和當(dāng)前值進(jìn)行比較,而獲得差值。在每個時(shí)鐘信號中,比較器比較存儲在目標(biāo)頻率寄存器和存儲在當(dāng)前頻率寄存器中的值,而獲得差值。這個差值是存儲在目標(biāo)頻率寄存器和存儲在當(dāng)前頻率寄存器中的值的差。
隨后,一個是否該差值在預(yù)定義的閾值之外的判定將在操作308中被執(zhí)行。預(yù)定的閾值可以是一定范圍的可接受的頻率值、信號值或0。設(shè)定閾值為0將使得當(dāng)差值不為0時(shí),其結(jié)果在閾值之外。設(shè)定閾值為單一值表示,則該值得范圍在0和該單一值之間。一旦該差值在閾值的范圍之外,均判斷差值超出閾值。如果差值超出了預(yù)定義的閾值,斜坡電路進(jìn)程300繼續(xù)執(zhí)行查表操作310。否則,斜坡電路操作300將在312操作中完成。
差值在查表操作310中進(jìn)行偏移表查表操作。偏移表提供包括多個電壓值。通過在偏移表中查找差值,可以獲得一個偏移電壓值。偏移表中的偏移值然后被儲存在偏移電壓寄存器中。優(yōu)選地,偏移表被設(shè)定為提供電壓偏移,其結(jié)果是電壓變化是平滑的線性電壓增長。
在調(diào)整操作314中,當(dāng)前的值基于在操作310中獲得的偏移電壓被調(diào)整。存儲在偏移電壓寄存器中的值被從存儲在當(dāng)前電壓寄存器中增加或者減去,結(jié)果存儲在當(dāng)前電壓寄存器中??蛇x擇的,電壓偏移寄存器可以被忽略,偏移量將直接從當(dāng)前電壓寄存器和偏移表中增加或減去。
在電壓編程操作316中,新的當(dāng)前電壓值被提供給可編程的電壓發(fā)生器。存儲在當(dāng)前電壓寄存器中的新的電壓值,被用來編寫可編程電壓發(fā)生器,設(shè)定所涉及處理器至新的當(dāng)前電壓值。斜坡電路程序300然后和操作304進(jìn)行其它比較,這里的當(dāng)前電壓寄存器包括新的調(diào)整過的當(dāng)前電壓值。
在操作312中,當(dāng)前的電壓值包含在預(yù)定的閾值內(nèi),斜坡電路程序300就完成了。此時(shí),所涉及的處理器將在目標(biāo)電壓下操作,可以開始執(zhí)行合適的指令。
在其它的實(shí)施方案中,當(dāng)預(yù)定的閾值達(dá)到之后,斜坡電路進(jìn)程300繼續(xù)和操作304的其它比較。在這個實(shí)施方案中,0值被存儲在偏移寄存器中,其結(jié)果是當(dāng)前的電壓不會發(fā)生任何的變化。當(dāng)新的目標(biāo)電壓被儲存在目標(biāo)電壓寄存器中時(shí),斜坡電路自動地繼續(xù)操作,提升當(dāng)前的電壓至新的目標(biāo)電壓。
斜坡電路300確保電壓和頻率變化的正確優(yōu)先權(quán)。在一般情況下,當(dāng)處理器的能力由低能力模式到常態(tài)模式進(jìn)行切換時(shí),電壓將在頻率增加前增加。與之相反,當(dāng)處理器的能力由常態(tài)能力模式到低能力模式進(jìn)行切換時(shí),頻率將在電壓減小前減小。
有利的是,斜坡電路300在操作狀態(tài)改變時(shí)能夠保證沒有能力供應(yīng)和數(shù)字電路應(yīng)力發(fā)生;并確保在處理器之間存儲器更新時(shí),有充沛的時(shí)間可被利用。
盡管前面發(fā)明細(xì)節(jié)的詳細(xì)描述其目在于理解的澄清,然而顯然會在附屬的權(quán)利要求范圍中會有一定的變化和調(diào)整。相應(yīng)的,本實(shí)施方案可以被看作是說明而不是限制,并且發(fā)明也并不局限于給定的細(xì)節(jié),但是,范圍內(nèi)的調(diào)整和其等價(jià)物或許會包含在附屬的權(quán)利要求中。
權(quán)利要求
1.一種提供了基于硬件的Java加速器能力管理的能力管理方法,該能力管理方法包括以下操作響應(yīng)初始化Java應(yīng)用,由主處理器(14)提供Java模式信號(68);響應(yīng)Java模式信號,減少主處理器(14)的能力;響應(yīng)Java模式信號,增加Java處理器(16)的能力;當(dāng)Java應(yīng)用的執(zhí)行終止時(shí),由Java處理器(16)產(chǎn)生一個Java完成信號(84)。
2.權(quán)利要求1中所述的能力管理方法,還包括以下操作響應(yīng)Java完成信號(84),增加主處理器(68)的能力;和響應(yīng)Java完成信號(84),減少Java處理器(16)的能力。
3.權(quán)利要求2中所述的能力管理方法,其中能力包括電壓和頻率。
4.權(quán)利要求2中所述的能力管理方法,其中使用斜坡電路處理使處理器的能力增加,它包括(a)獲得目標(biāo)能力值(104);(b)比較(102)目標(biāo)能力值(104)和當(dāng)前能力值(106);(c)在當(dāng)前能力值(106)小于目標(biāo)能力值(104)時(shí),增加當(dāng)前能力值(106);(d)重復(fù)操作(a)-(c),直至當(dāng)前能力值基本上等于目標(biāo)能力值。
5.權(quán)利要求4中所述的能力管理方法,其中當(dāng)前能力值(106)的增加是通過從偏移表(108)中獲取數(shù)值而得到的。
6.權(quán)利要求2中所述的能力管理方法,其中使用斜坡電路處理使處理器的能力降低,包括以下操作(a)獲得目標(biāo)能力值(104);(b)比較(102)目標(biāo)能力值(104)和當(dāng)前能力值(106);(c)在當(dāng)前能力值(106)大于目標(biāo)能力值(104)時(shí),減少當(dāng)前的能力值(106);(d)重復(fù)操作(a)-(c),直至當(dāng)前的能力值基本上等于目標(biāo)能力值。
7.權(quán)利要求6中所述的能力管理方法,其中當(dāng)前能力值(104)的減少是通過從偏移表(108)中獲取數(shù)值而得到的。
8.一種提供了基于硬件的Java加速器能力管理的能力管理方法,該能力管理系統(tǒng)包括與能力產(chǎn)生電路連接的主處理器(14),該主處理器(14)具有Java模式信號端口,能夠提供Java模式信號(68);與能力產(chǎn)生電路連接的Java處理器(16),該Java處理器(16)具有Java完成信號端口,能夠提供Java完成信號(84);其中響應(yīng)所接收到的Java模式信號(68),能力產(chǎn)生電路減少主處理器(14)的能力,增加Java處理器(16)的能力;響應(yīng)所接收到的Java完成信號(84),能力產(chǎn)生電路增加主處理器(14)的能力,減少Java處理器(16)的能力。
9.權(quán)利要求8中所述的能力管理系統(tǒng),其中響應(yīng)初始化Java應(yīng)用,由主處理器(14)提供Java模式信號(68)。
10.權(quán)利要求9中所述的能力管理系統(tǒng),其中當(dāng)Java應(yīng)用的執(zhí)行終止時(shí),由Java處理器(16)產(chǎn)生一個Java完成信號(84)。
11.權(quán)利要求8中所述的能力管理系統(tǒng),其中能力產(chǎn)生電路包括配套于主處理器(14)的第一組可編程電壓和頻率產(chǎn)生器(62);配套于Java處理器(16)的第二套可編程電壓和頻率產(chǎn)生器(78);其中第一組可編程電壓和頻率產(chǎn)生器(62)能夠調(diào)節(jié)主處理器(14)的電壓和頻率;第二套可編程電壓和頻率(78)產(chǎn)生器能夠調(diào)節(jié)Java處理器(16)的電壓和頻率。
12.權(quán)利要求11中所述的能力管理系統(tǒng),還包括配套于第一組可編程電壓和頻率產(chǎn)生器(62)的主斜坡電路(64),它能夠提供對第一組可編程電壓和頻率產(chǎn)生器(62)增加電壓和頻率的變化;配套于第二套可編程電壓和頻率產(chǎn)生器(78)的Java斜坡電路(80),它能夠提供對第二套可編程電壓和頻率產(chǎn)生器(78)增加電壓和頻率的變化;使得主斜坡電路(64)和Java斜坡電路(80)能夠抑止提供給主處理器(14)和Java處理器(16)的電壓和頻率變化。
13.權(quán)利要求12中所述的能力管理系統(tǒng),其中主斜坡電路(64)和Java斜坡電路(80)是通過使用偏移表來決定當(dāng)前電壓和頻率的變化數(shù)值的。
14.權(quán)利要求13中所述的能力管理系統(tǒng),其中常態(tài)操作電壓和頻率值(58)和低電壓和頻率值(60)被儲存在主處理器(14)中,而常態(tài)操作電壓和頻率值(72)和低電壓和頻率值(74)被儲存在Java處理器(16)中。
15.權(quán)利要求14中所述的能力管理系統(tǒng),其中主斜坡電路(64)提供增加電壓和頻率的變化是在由主處理器(14)的常態(tài)操作電壓和頻率值(58)和低電壓和頻率值(60)所定義的范圍值之內(nèi);而Java斜坡電路提供增加電壓和頻率的變化是在由Java處理器(16)的常態(tài)操作電壓和頻率值(72)和低電壓和頻率值(74)所定義的范圍值之內(nèi)。
16.一種抑止提供給處理器變化的斜坡電路方法,該方法包括以下操作(a)獲得目標(biāo)能力值(104);(b)比較(102)目標(biāo)能力值(104)和當(dāng)前能力值(106),從而獲得差值;(c)當(dāng)差值在預(yù)定義的閾值之外時(shí),調(diào)整當(dāng)前能力值(106);和(d)重復(fù)操作(a)-(c),直至差值在預(yù)定義的閾值之內(nèi)。
17.權(quán)利要求16中所述的斜坡電路方法,還包括以下操作由偏移表(108),使用差值決定偏移量(110);通過由偏移量(110)定義的數(shù)值調(diào)整當(dāng)前值(106)。
18.權(quán)利要求17中所述的斜坡電路方法,還包括為可編程能力產(chǎn)生器電路提供當(dāng)前值(106)以決定處理器的當(dāng)前操作狀態(tài)的操作。
19.權(quán)利要求16中所述的斜坡電路方法,其中目標(biāo)值(104)和當(dāng)前值(106)是電壓值。
20.權(quán)利要求16中所述的斜坡電路方法,其中目標(biāo)值(104)和當(dāng)前值(106)是頻率值。
全文摘要
一種提供了基于Java加速器硬件能力管理的能力管理方法被公開。最初,響應(yīng)初始化Java應(yīng)用,由主處理器產(chǎn)生Java模式信號。然后,主處理器的能力減少;響應(yīng)Java模式信號,Java處理器的能力增加。在Java應(yīng)用終止之后,由Java處理器產(chǎn)生Java完成信號,然后發(fā)送信號給系統(tǒng)交還控制給主處理器。
文檔編號G06F1/32GK1478224SQ01803287
公開日2004年2月25日 申請日期2001年8月17日 優(yōu)先權(quán)日2000年8月23日
發(fā)明者D·恩沃伊, L·戈夫, B·塞克斯頓, D 恩沃伊, 慫茍 申請人:皇家菲利浦電子有限公司