專利名稱:根據(jù)中央處理單元運行特征控制計算機運行的方法和系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及計算機中央處理單元(CPU)實時控制,尤其涉及根據(jù)檢測的動態(tài)運行特征,比如由CPU內實時活動程度而產(chǎn)生的CPU溫度、溫度變化和功耗,而調整中央處理單元(CPU)的時鐘頻率裝置和方法。
在個人計算機工業(yè)的早期發(fā)展階段,可移動式或便攜帶式的計算機是很普遍的。早期的便攜式計算機采用大電源,而實際上是一臺小型的臺式個人計算機。然而,現(xiàn)代的便攜式計算機比起臺式個人計算機要小,并且重量更輕,用戶可以使用與臺式計算機所使用的相同的軟件。
第一代“便攜式”計算機僅采用壁式交流電源工作。更近的或者下一代個人計算機采用電池電源,這樣才真正稱得上是便攜式的。這種便攜程度的增大得益于顯示技術、磁盤存儲容量以及元件重量和體積技術的發(fā)展。
盡管這些進步有助于減小便攜式計算機的尺寸,但仍然存在操作上的限制。例如,現(xiàn)代的便攜式計算機所運行的軟件一般與臺式個人計算機所運行的軟件相同。所以,便攜式計算機必須提供所有臺式計算機的性能,而不管對以電池供電的便攜式計算機才特有的功能限制和考慮。一方面,便攜式計算機與臺式計算機具有相同的數(shù)據(jù)流速率,而另一方面,比起臺式計算機,在短時間內僅具有有限的功率值,并具有更有限的熱耗散能力。現(xiàn)代的便攜式計算機對于它們用來工作的軟件中的不同平臺,不作特定的調節(jié)。操作系統(tǒng)(例如MS-DOS)、基本輸入/輸出系統(tǒng)(BIOS)軟件和第三方應用軟件對于便攜式計算機和臺式計算機來說基本上是相同的。對于軟件系統(tǒng)處理CPU的不同動態(tài)操作特征的方式來說,尤其是這樣。
當軟件工程師和程序員開發(fā)了更強功能的軟件系統(tǒng)時,臺式計算機在大體所有的系統(tǒng)性能領域中繼續(xù)提供增強的性能。從更高計算性能CPU的引入,到增大存儲器和更快的高性能磁盤驅動器,對臺式系統(tǒng)操作的要求正快速增大。便攜式計算機制造商除了試圖與這些要求保持同步以外,實在沒有其他的選擇。
然而至今,便攜式計算機繼續(xù)以交流電或者以既大又笨重的電池工作。在試圖保持臺式計算機性能要求和采用新軟件時,某些便攜式計算機采用貴重的元件,來降低對電源的要求。但即便是這樣,計算機所使用的笨重電池仍然不能長時間供電。這意味著,普通便攜式計算機的用戶必須采用壁式交流電源工作方式或很短時間的電池工作方式,以便具有第三方軟件系統(tǒng)所期待的性能。
在試圖設計節(jié)電從而以電池工作較長時間的便攜式計算機時,某些便攜式計算機電源系統(tǒng)在用戶不使用計算機時,降低便攜式計算機的功耗。其他的便攜式計算機設計者在通過不使用鍵盤時,關閉顯示器來節(jié)電。雖而用這些系統(tǒng)幫助節(jié)電,但由于這些系統(tǒng)妨礙了計算機運行,或者當最大的功耗電發(fā)生在計算機內而無法節(jié)電,因而都不實用。至今,在操作者使用計算機進行有意義的工作時,沒有一個用于便攜式計算機的節(jié)電系統(tǒng)是節(jié)電的。
但這不是便攜式計算機供電系統(tǒng)唯一的問題。在現(xiàn)代的便攜式計算機系統(tǒng)中,是沒有響應于CPU動態(tài)操作特征的智能系統(tǒng)的。CPU的動態(tài)操作特征包括廣泛的特征,包括CPU溫度、溫度變化、功耗等等。目前還沒有控制電池電源節(jié)電或最佳使用的方法或系統(tǒng)。還沒有響應于計算密集的指令而恰當監(jiān)視和控制CPU高速運行和密集的電子電路的溫度的方法或系統(tǒng)。另外,還不存在這樣的方法和系統(tǒng),來確保當CPU與其輸入/輸出電路實際上是隔開的時候,不會發(fā)生來自CPU動態(tài)操作特征的不良影響。可能發(fā)生的不良情況或影響的種類包括當CPU執(zhí)行一組大量的不包括任何輸入/輸出功能的指令時,CPU過度地耗電或達到過高的溫度。
人們需要一種預計CPU中的活動程度并用該預計來自動控制CPU動態(tài)操作特征的裝置和方法。
人們需要一種能夠進行自動活動程度預計的用戶修改以及用經(jīng)修改的預計自動操縱CPU動態(tài)操作特征的反饋方法和裝置。
人們還需要一種根據(jù)控制CPU的動態(tài)操作特征提供時鐘速度實時減小和恢復,從而使CPU從不工作的時間間隔恢復到其全處理速度,而其方式對軟件程序和用戶是透明的裝置和方法。
再有,人們還需要一種根據(jù)動態(tài)操作特征來確定CPU可以還是應當根據(jù)CPU活動程度進行睡眠、以及根據(jù)該確定啟動硬件選擇器的裝置和方法。如果CPU可以睡眠,則硬件選擇器在睡眠時鐘電平上施加振蕩。如果CPU必須工作,那么硬件選擇器在高速時鐘電平下振蕩。
本發(fā)明檢查CPU的活動以及操作者和任何目前正在工作的應用軟件程序的活動狀態(tài)。本發(fā)明實時進行該活動取樣,調整CPU的操作強度以控制節(jié)電、計算機電力和發(fā)熱情況以及任何其他的恰當和要求的動態(tài)操作特征。這些調整是在CPU循環(huán)內完成的,并且不會影響用戶對性能或其他軟件程序運行的感知。
按照一種較佳實施例,本發(fā)明提供了一種控制檢測的CPU動態(tài)操作特征的方法和裝置,并且包括檢測至少一個CPU動態(tài)操作特征的步驟。該方法和裝置在檢測操作特征的時候檢測CPU的時鐘頻率。本發(fā)明采用的方法的下一個步驟是,按照相對于與至少一個動態(tài)操作特征所關聯(lián)的預定設定點建立的預定關系的至少一個動態(tài)操作特征,判定設定點中斷情況的存在。如果設定點中斷情況存在,本發(fā)明的方法和裝置或者控制CPU的時鐘頻率、調整預定設定點,或者以另一種方式控制CPU動態(tài)操作特征。另一方面,如果設定點中斷情況不存在,則本方法和裝置就重復上述判定和控制步驟,從而有效地控制CPU動態(tài)操作特征。
因此,當操作系統(tǒng)/BIOS的第三方軟件的操作者不在使用計算機,為了節(jié)電,本發(fā)明可以在需要使用之前快速關斷CPU,或者使CPU放慢速度,從而使操作特征變成較慢的狀態(tài)。需要時,在不影響覺察到的性能的情況下,本系統(tǒng)立即恢復到全CPU運行。這種從“放慢”方式變回到全運行無需用戶進行請求,不會因為計算機回到“就緒”狀態(tài)而造成計算機操作的延遲。
本發(fā)明提供的一個技術優(yōu)點是能夠預示或預計CPU的操作特征。通過計算指令數(shù)并判定其類型,本發(fā)明判定CPU是否將處在受計算量限制的運行模式,在這種模式下,較少或沒有輸入/輸出,并且因此CPU不會放慢速度、沒有輸入/輸出功能。這種預示使得可以判定在受計算量限制的模式期間,一個或多個CPU動態(tài)操作特征是否會達到一相關的預定設定點。如果是,則本發(fā)明調整時鐘頻率、修改預定的設定點或改變CPU的運行,以避免形成預定設定點的不利影響。
本發(fā)明的再一個技術優(yōu)點是能夠不僅在單個計算機系統(tǒng)中,而且能夠在多個或并行CPU計算機系統(tǒng)中提供CPU動態(tài)操作特征中的調整。事實上,可以用本發(fā)明來構造一組并行CPU,從而在所有的CPU中保持所要求的平均時鐘頻率,而一個或多個CPU根據(jù)相對于CPU的動態(tài)操作特征而產(chǎn)生的中斷情況進行調整。
在結合附圖對較佳實施例作了詳細描述以后,本領域的技術人員將清楚地理解本發(fā)明的特性和優(yōu)點。其中
圖1是描述本發(fā)明較佳實施例自調節(jié)方面的流程圖2a-2d是描述本發(fā)明實施例使用的主動節(jié)電監(jiān)視器的流程圖;圖3描述采用的熱控制方法的簡化流程圖;圖4是本發(fā)明使用的受計算量限制的判定步驟的流程圖;圖5代表與本發(fā)明實施例采用的硬件相關聯(lián)的主動節(jié)電的簡化示意圖;圖6描述的是本發(fā)明一種實施例睡眠硬件的示意圖;圖7描述的是本發(fā)明另一個實施例睡眠硬件的示意圖;圖8包括的是本發(fā)明另一種實施例的多個CPU動態(tài)操作特征控制性能的流程圖。
下面的討論涉及本發(fā)明的節(jié)電方面。然而,除了節(jié)電或耗電以外,本發(fā)明還包括控制其他CPU動態(tài)操作特征。
如果檢查任一給定系統(tǒng)中計算機活動的時間間隔,CPU和相關的元件具有一使用百分比。例如,如果用戶從鍵盤輸入數(shù)據(jù),擊鍵之間的時間與CPU的周期相比很長。在這段時間內,計算機可以完成許多事情,比如打印一份報告。即使在打印報告的時間內,還是有時間進行其他的操作,比如更新時鐘/日歷顯示背景。即便是這樣,CPU不在使用時,總還有富余的時間。本發(fā)明提供了一種在富余時間內關斷或放慢CPU速度的方法,從而實現(xiàn)了實時節(jié)電,使計算機電池的壽命得以延長。
按照本發(fā)明的較佳實施例,為了在MS-DOS以及其他操作系統(tǒng)(比如OS/2、UNIX、WindowTM以及用于“蘋果”計算機的其他系統(tǒng))下控制CPU動態(tài)操作特征,需要將硬件和軟件組合起來。應當注意,因為本實施例工作于任意系統(tǒng)中,并且由于執(zhí)行過程隨系統(tǒng)的不同而略有不同,所以,本發(fā)明的范圍應當不局限于在MS/DOS或任意其他特定的操作系統(tǒng)下運行的計算機系統(tǒng)。
盡管控制量或變化量可以隨系統(tǒng)的不同而不同,但按照本發(fā)明的較佳實施例,計算機系統(tǒng)元件放慢或停止使功耗減小,降低了運行溫度或者控制了動態(tài)操作特征。所以,按照本發(fā)明,使時鐘停止(當可以實現(xiàn)時,然而,某些CPU時鐘不可能停止)而減小了功耗,而不是僅僅使時鐘放慢。
一般說來,可以粗略地認為,CPU每秒的操作(或指令)次數(shù)與CPU時鐘成正比指令/秒=指令/循環(huán)*循環(huán)/秒(1)為簡單起見,假設重復執(zhí)行同一指令,從而每秒的指令數(shù)是常量,那么可以有下述表述式Fq=K1*Clk (2)這里,F(xiàn)q代表每秒的指令數(shù),K1代表以每一循環(huán)具有的指令為單位的值,而C1K也代表每秒的循環(huán)次數(shù)。所以,粗略地說來,執(zhí)行的速率隨CPU時鐘的頻率而增加。
在任何給定值下,計算機使用的電力值還與CPU時鐘的頻率有關,所以也與CPU的執(zhí)行速率有關。一般說來,下述表達式表達了這種關系P=K2+(K3*Clk) (3)這里,P是用瓦表示的功率,K2代表以瓦為單位的常數(shù)值,K3是表示瓦-秒/循環(huán)的常數(shù),而Clk等于CPU時鐘的循環(huán)/秒。所以,從等式(3)可以得到,CPU時鐘頻率增加時,在任意給定的時刻,CPU消耗的功率數(shù)量也增加。
可以將給定的時間間隔T劃分成n個間隔,從而在每一個時間間隔內功率P是常數(shù),而在總的時間間隔內CPU消耗的能量E可以表示為E=P(1)ΔT1+P(2)ΔT2+…+P(n)ΔTN(4)進一步假設CPU時鐘Clk只有兩種狀態(tài),即,“接通(ON)”或“關斷(OFF)”。這里,“ON”狀態(tài)代表CPU時鐘狀態(tài)處在其最大頻率下,而“OFF”狀態(tài)表示時鐘狀態(tài)處在CPU可以操作的最小頻率下。注意,該最小時鐘頻率對于時鐘可停止的CPU來說可以是“零”。對于CPU始終處在“ON”的情況,上述等式中的每一P(i)相等,并且總能量為E(max)=P(ON)*(ΔT1+ΔT2+…+ΔTN)=P(ON)*T (5)這里,P(ON)代表時鐘處在“ON”狀態(tài)時所消耗的功率,而P(OFF)代表時鐘處在“OFF”時使用的功率。這代表不采取措施來控制CPU動態(tài)操作特征時計算機的最大功耗。如果CPU時鐘在間隔1到間隔4的部分內為“OFF”,那么每一間隔可以包括兩個功率電平。如果時鐘為“ON”,所有時間間隔累加為量T(ON),而所有為“OFF”時間間隔累加為T(OFF),那么下述表述式成立T=T(ON)+T(OFF)(6)現(xiàn)在,在該時間內CPU使用的能量可以寫成下面的形式E=[P(ON)*T(ON)+[P(OFF)*T(OFF)](7)在這些條件下,CPU消耗的總能量可以通過增大時間間隔T(OFF)來減小。所以,通過控制時鐘處在“OFF”狀態(tài)的時間,本實施例減小了CPU使用的能量數(shù)量。在時間T內,通過將T(OFF)時間間隔劃分成大量的間隔,本實施例清楚地表明,當每一間隔的寬度趨于零時,能耗接近其最大值。相反,當T(OFF)間隔的寬度增大時,能耗降低。
排列“OFF”間隔,使之與CPU通常為不工作的時間一致,使計算機系統(tǒng)運行,從而使用者不會覺察到性能的下降,而本實施例從E(max)狀態(tài)減小了總能耗。為了使T(OFF)間隔與CPU不工作的時間一致,本實施例用一閉合循環(huán)路(例如圖1所描述的閉合循環(huán)10)來確定CPU活動水平寬度T(OFF)間隔。繼續(xù)描述圖1,CPU活動水平是在步驟12確定的。如果該水平比緊接著的前一確定增大,那么詢問框14將處理流程送到步驟16,在那里,本實施例降低T(OFF)間隔。步驟16處理流程至步驟12,確定CPU活動水平。另一方面,如果CPU活動水平比前一確定減小,則本發(fā)明就如圖18所示,增加T(OFF)間隔,并且處理流程再次繼續(xù)到步驟12,確定CPU活動水平。這樣,閉合環(huán)路10經(jīng)常調節(jié)T(OFF)間隔,使之與CPU活動水平一致。
在任一操作系統(tǒng)中,存在兩個主要的邏輯點(1)操作系統(tǒng)內的空閑(IDLE)環(huán)路,或者“空操作”環(huán)路,以及(2)通常用作應用軟件所需業(yè)務的操作系統(tǒng)請示通道。通過使邏輯與這些邏輯點一致,本實施例可以估計應用軟件進行或將進行的活動請求的類型。有了這種類型的信息,本實施例可以實現(xiàn)控制CPU動態(tài)操作特征的反饋和控制處理。例如,知道了活動請求的類型,可以進行節(jié)電,并開始確定片(slice)時間間隔。一個片時間間隔是在活動水平計算的時間內T(ON)對T(OFF)間隔的數(shù)。
本實施例有一個確定CPU活動水平的假設。本實施例假設,需要服務的軟件程序通常需要其他的服務,并且服務請求之間的時間可以用來確定在計算機上運行、控制CPU動態(tài)操作特征(例如電源)的任意應用軟件的活動水平,以及提供用于節(jié)電的時間片計數(shù)(slice counts)。
一旦本實施例在節(jié)電時間片期間,即,比如在T(OFF)期間,使CPU中斷,那么CPU在引向中斷軟件之前存儲該被中斷的程序狀態(tài)。因為節(jié)電軟件是在該節(jié)電時間片期間運行的,所以本實施例使控制返回到節(jié)電環(huán)路,該環(huán)路簡單地監(jiān)視CPU時鐘,以判定節(jié)電模式的退出條件的存在,從而從T(OFF)狀態(tài)退到T(ON)狀態(tài)。如結合附圖1所討論的那樣,處理流程按照被監(jiān)視的活動水平調整下一個節(jié)電狀態(tài)的時間間隔。某些設備可以通過硬件邏輯自動從T(OFF)退出,從而在T(ON)間隔內為執(zhí)行CPU指令自動強迫從節(jié)電環(huán)路退出。
圖2a到2d描述的是本實施例主動功率監(jiān)視功能20。運行中,CPU或者通過CPU只讀存儲器(ROM)存儲的程序,或者從在隨機存取存儲器(RAM)中存儲程序的外部裝置,來安裝主動功率監(jiān)視功能。一旦CPU裝入了主動功率監(jiān)視功能20,那么主動功率監(jiān)視功能20的處理流程就進入INIT(初始化)步驟22,執(zhí)行系統(tǒng)中斷初始化、用戶結構設立和系統(tǒng)/應用專用初始化的步驟。用于IDLE或“空操作”功能的硬件或軟件中斷執(zhí)行IDLE分支24,這在圖2b中特別示出。進入IDLE或“空操作”循環(huán)(即計劃的不動作)的CPU產(chǎn)生這種類型的中斷。由于操作系統(tǒng)或I/O服務請求或通過一應用程序或內部操作系統(tǒng)功能的軟件或硬件中斷執(zhí)行將在圖2d中作更完整描述的活動(ACTIVITY)流程圖的ACTIVITY分支。
例如,程序可以是磁盤I/O功能、讀取、打印、裝入或另一種服務的請求。無論選擇的分支是什么,RETURN(返回)向量21最終使處理流程返回到CPU操作系統(tǒng)。只有當CPU通過程序將主動功率監(jiān)視功能20裝入ROM時,或者每次在加電時如果CPU裝入來自外部裝置的RAM的監(jiān)視功能20,本較佳實施例才執(zhí)行圖2a作更詳細描述的INIT分支22。在主動功率監(jiān)視功能20的INIT分支22完全執(zhí)行了監(jiān)視功能20以后,視CPU動作的類型而定,IDLE分支24或ACTIVITY(活動)分支26使處理流程分支。無論何時操作系統(tǒng)進入節(jié)電模式,視CPU活動的類型而定,選擇IDLE分支24或ACTIVITY分支26。即,用于計劃不活動期間的節(jié)電時,選擇IDLE分支24,而用于CPU活動期間的節(jié)電時,選擇ACTIVITY分支26。
繼續(xù)參看圖2a,進一步看一看INIT分支22,在對所有的系統(tǒng)中斷和變量進行初始化以后,程序在步驟30處繼續(xù),將POWER_LEVEL(功率電平)參數(shù)設定成與DEFAULT_LEVEL(缺省電平)相等。在用戶已對POWER_LEVEL輸入控制的操作系統(tǒng)中,程序在步驟32處檢查是否已經(jīng)選擇了USER_LEVEL(用戶電平)參數(shù)。如果USER_LEVEL參數(shù)小于零或者大于MAXIMUM_LEVEL(最大電平),那么系統(tǒng)就采用DEFAULT_LEVEL參數(shù)值。否則,INIT分支22繼續(xù)到步驟34,將POWER_LEVEL參數(shù)值設定成與USER_LEVEL參數(shù)相等。
按照本發(fā)明的當前實施例,INIT分支22在步驟36處將變量IDLE_TICK(空閑標記)設定成零,并將變量ACTIVITY_TICK(活動標記)設定成零。在MS/DOS應用下,IDLE_TICK變量表示在“空操作”循環(huán)中出現(xiàn)的中斷數(shù)。ACTIVITY_TICK變量代表活動中斷引起的中斷數(shù)。該中斷又確定了CPU活動水平。Tick(標記)計數(shù)代表一個中斷的Δ(delta)時間ΔTi。IDLE_TICK是一個從一個標記到另一標記的恒定Δ時間ΔTi,除非出現(xiàn)軟件中斷來重寫該時間間隔。即,軟件中斷可以重新程序設定中斷之間的Δ時間。
在將IDLE_TICK和ACTIVITY_TICK變量設定為零以后,INIT分支28繼續(xù)到SETUP步驟38,此時,INIT分支22按照系統(tǒng)特定的細節(jié),處理任一應用的特定的結構細調,并且SETUP步驟38使主動功率監(jiān)示功能20初始化。接著,INIT分支22在步驟40處,用給硬件的指令進入中斷I/O。這向硬件指出,它可以在下一個中斷處進行控制。接著INIT分支22通過RETURN向量28,退至操作系統(tǒng),或者任何原先調用主動功率監(jiān)視20的功能。
圖2b更完整地描述了主動功率監(jiān)視功能20的IDLE分支24。根據(jù)CPU的計劃不活動時間間隔,主動功率監(jiān)視功能20首先判定活動中斷A是否為當前忙,來檢查是否允許進入IDLE分支24。如果如詢問42所測試的那樣,參數(shù)BUSY_A等于再進入標記BUSY_FLAG的值,那么這意味著CPU為忙,并且此時不能進入睡眠。所以,主動功率監(jiān)視功能20立即進入RETURN I步驟44,并退出該程序。RETURN I步驟44將間接向量提供給先前的操作系統(tǒng)IDLE向量中斷,以進行正常處理。CPU在進入主動功率監(jiān)視功能20之前,存儲該間接向量。換言之,RETURN I步驟44使中斷返回到最后的鏈接向量。
如果詢問框42判定BUSY_A中斷標志不忙,則在步驟46處主動功率監(jiān)視功能20檢查BUSY_IDLE中斷標志是否與BUSY_FLAG相等。如果是,這表示主動功率監(jiān)視功能已經(jīng)在IDLE分支24中,因而不應當有CPU中斷。如果BUSY_I等于BUSY_FLAG,則IDLE分支24處理流程進入步驟44。
然而,如果BUSY_A再進入標志和BUSY_I再進入標志都未曾設定,那么IDLE分支24就在步驟48處設置BUSY_I,用于再進入保護,即,將BUSY_I設定成與BUSY_FLAG值相等。在步驟50處,使IDLE_TICK變量遞增1。IDLE_TICK變量在T(OFF)間隔之前是T(ON)數(shù)。IDLE和中斷,SETUP(建立)中斷數(shù)以及CPU活動水平確定IDLE_TICK的值。IDLE_TICK變量遞增1,使得事件順利。這使得臨界I/O動作能夠控制順利。
在步驟52處,主動功率監(jiān)視功能20檢查IDLE_TICK變量是否等于預定的常數(shù)值IDLE_MAXTICKS(最大標記)。IDLE_MAXTICKS是由INIT分支38的建立步驟38初始化并對給定的CPU保持為常數(shù)的多個常數(shù)中的一個常數(shù)。在當前實施例中,常數(shù)參數(shù)IDLE_MAXTICKS能夠進行活動水平的自調節(jié)。如果變量IDLE_TICKS不等于常數(shù)IDLE_MAXTICKS,那么IDLE分支24在步驟54處清除BUSY_I標志,并通過使RETURN I間接IDLE分支24回到向量44而退出處理流程。然而,如果IDLE_TICK變量等于IDLE_MAXTICKS,那么在步驟56處,IDLE_TICKS變量等于IDLE_START_TICKS(空閑啟動標記)常數(shù)(它可以為零,也可以不為零)。一般說來,如果可以使特定的CPU時鐘停止,并且仍然能恰當?shù)男惺构δ?,那么IDLE_START_TICKS將等于零。否則,IDLE_START_TICKS取適合于給定CPU的某一預定值。該步驟通過指定主動功率監(jiān)視功能20可以執(zhí)行余下睡眠功能的頻繁程度,來確定本實施例的自調節(jié)方面。通過將IDLE_START_TICKS設定成等于IDLE_MAXTICKS減1,本實施例實現(xiàn)一連續(xù)的T(OFF)間隔。在詢問框58處,IDLE分支24檢查POWER_LEVEL(功率電平)參數(shù)水平。如果POWER_LEVEL參數(shù)等于零,那么在POWER_LEVEL參數(shù)54處,IDLE分支24清除BUSY_I標志,并使RETURNI間接向量44返回到控制操作系統(tǒng),從而它可以繼續(xù)在進入主動功率監(jiān)視功能20之前原先所做的事情。
然而,如果POWER_LEVEL參數(shù)值在詢問框60處不等于零,那么IDLE分支24就確定中斷屏蔽是否到位。系統(tǒng)/應用軟件設置INTERRUPT_MASK(中斷屏蔽)變量,并確定對主動功率監(jiān)視功能20是否存在中斷。如果詢問框60判定中斷是NOT_AVAILABLE(不存在),則IDLE分支24清除BUSY_I再進入標志,并返回到控制操作系統(tǒng),使得CPU能夠繼續(xù)它在進入主動功率監(jiān)視功能20之前所做的事情。操作系統(tǒng)以及應用軟件可以通過將中斷屏蔽設定成等于NOT_AVAILABLE值或標志,設定T(ON)間隔,以產(chǎn)生一連續(xù)的T(ON)狀態(tài)。
當某一中斷是AVAILABLE(存在)時,主動功率監(jiān)視功能20進至在硬件狀態(tài)建立的一個T(OFF)周期內完全執(zhí)行的SAVE POWER(節(jié)電)子程序62。例如,在該較佳實施例中,最長的可能間隔可以是18毫秒,這在來自實時時鐘的兩個標記或中斷之間是最長的時間。在SAVE POWER子程序62期間,CPU時鐘下降到睡眠時鐘的水平。
一旦臨界的I/O操作迫使T(ON)間隔開始,那么IDLE分支24中斷就趨向于對額外的臨界I/O請求保持就緒。當CPU臨界I/O變的忙時,就只有很少的T(OFF)間隔。相反,當臨界I/O請求降低時,以及它們之間的時間間隔增大時,就只有更多的T(OFF)間隔。IDLE分支24根據(jù)CPU活動水平變慢時來自趨向于提供更多T(OFF)間隔的工作活動中斷的反饋,提供一自調節(jié)系統(tǒng)。
圖2c以及相關的文字更完整地描述了一旦主動功率監(jiān)視功能20完成了SAVEPOWER子程序250,BUSY_I再進入標志就在步驟54處進行清除,并且控制通過RETURN I向量44回到原先請求主動功率監(jiān)視功能20的那個操作系統(tǒng)。更詳細地參見圖2c,它示出了描述節(jié)電(SAVE POWER)子程序62的流程圖。在步驟82主動功率監(jiān)視功能20確定I/O硬件的高速時鐘。節(jié)電(SAVE POWER)程序62的下一個步驟84將(SURRENT_CLOVK_RATE)當前時鐘頻率設定為等于相關的高速時鐘并在具有多水平高速時鐘的CPU中保存該數(shù)值。因此,如果某一CPU具有12MHz和6MHz的高速時鐘,則主動功率監(jiān)視功能20必須確定在主動功率監(jiān)視功能20降低功率之前是哪一種高速時鐘控制著CPU。這確保了CPU在喚醒時重新在合適的高速時鐘下工作。在步驟84,(SAVE POWER)子程序將SAVE_CLOCK_RATE((SAVE_CLOCK_RATE))頻率變量設定為等于步驟82確定的當前時鐘頻率。當只有一個高速時鐘用于CPU時,不使用保存時鐘頻率84。主動功率監(jiān)視功能20現(xiàn)在繼續(xù)至睡眠時鐘(SLEEP CLOCK)步驟86,該步驟向硬件選擇器(示于圖5)發(fā)送一個脈沖功能20以通過降低或停止時鐘頻率使CPU時鐘處于睡眠狀態(tài)。I/O端口硬件的睡眠時鐘的振蕩要比一般采用的CPU時鐘低得多。
因此,可能會發(fā)生兩個事件。即發(fā)生系統(tǒng)/應用中斷或者實時時鐘中斷。如果發(fā)生系統(tǒng)/應用中斷88,主動功率監(jiān)視功能20進入中斷程序90。(SAVE POWER)子程序62盡可能快地處理中斷,在步驟92待命中斷I/O,并返回以在詢問框94確定是否有中斷存在。由于已經(jīng)有中斷,所以步驟96采用(SAVE_CLOCK_RATE)數(shù)值來確定返回CPU至哪個高速時鐘。(SAVE POWER)子程序62的流程圖80終止于RETURN向量98。但是如果詢問框94確定沒有系統(tǒng)/應用中斷,則SAVEPOWER子程序62持續(xù)等待到發(fā)生實時時鐘中斷發(fā)生為止。一旦發(fā)生這樣的中斷,SAVE POWER子程序62以存儲的SAVE_CLOCK_RATE重新建立CPU。如果睡眠時鐘頻率不是停止的時鐘頻率,即睡眠時鐘頻率不為零,則控制以低速時鐘傳遞并且SAVE POWER子程序62通過詢問框94過程中SAVE POWER以及步驟88至92執(zhí)行中斷循環(huán)。另一方面,如果睡眠時鐘頻率為零時傳遞控制,則SAVE POWER子程序62執(zhí)行中斷循環(huán),在使CPU時鐘返回SAVE_CLOCK_RATE96之前,只執(zhí)行一次循環(huán),該循環(huán)包括詢問框94和步驟88至92,隨后處理流程繼續(xù)至RETURN向量98。
現(xiàn)在考慮圖2d,其中流程圖100示出了ACTIVITY(活動)分支26的處理流程,其中應用/系統(tǒng)活動請求經(jīng)操作系統(tǒng)觸發(fā)服務請求中斷。ACTIVITY(活動)分支26開始于重進入保護。主動功率監(jiān)視功能20在步驟102確定BUSY變量是否設定為BUSY_FLAG值。如果已設定,則主動功率監(jiān)視功能20系統(tǒng)已經(jīng)處于IDLE分支24并且無法被中斷。如果BUSY等于BUSY_FLAG值,則主動功率監(jiān)視功能20通過RETURN I向量44而退出,該向量為一般處理用至老的活動向量中斷的間接向量。RETURNI向量44使CPU操作在操作系統(tǒng)完成需要的服務之后經(jīng)中斷向量返回正常位置。
如果BUSY標志變量不等于BUSY_FLAG值,這意味著主動功率監(jiān)視功能20不再訪問IDLE分支22。如果BUSY標志等于BUSY_FLAG值,則主動功率監(jiān)視在詢問框104的功能20。如果這樣,ACTIVITY分支26在該點向計算機系統(tǒng)返回控制。這意味著ACTIVITY分支26已經(jīng)使用并且不能中斷。如果BUSY標志沒有設定,即BUSY不等于BUSY_FLAG值,則為了防止執(zhí)行時發(fā)生中斷,主動功率監(jiān)視功能20在步驟106將BUSY參數(shù)設定為等于BUSY_FLAG值。在詢問框108,ACTIVITY分支26確定POWER_LEVEL參數(shù)值。如果POWER_LEVEL參數(shù)值等于零,則在清除BUSY重入標志的步驟110之后主動功率監(jiān)視功能20分支退出ACTIVITY26。但是如果POWER_LEVEL參數(shù)不等于零,則ACTIVITY分支接著確定I/O硬件CUEEENT_CLOCK_RATE參數(shù)的值。如圖2的SAVE POWER子程序的步驟84所示,如果給定CPU有多水平高速時鐘,則圖2d的ACTIVITY分支26采用CUEEENT_CLOCK_RATE參數(shù)值。否則,CUEEENT_CLOCK_RATE參數(shù)值總是等于CPU高速時鐘。在步驟112確定CUEEENT_CLOCK_RATE參數(shù)值之后,步驟114將IDLE_TICK參數(shù)值設定為等于常數(shù)START_TICKS。為先前確定的CUEEENT_CLOCK_RATE建立START_TICKS。有效的當前高速時鐘建立T(OFF)間隔。
ACTIVITY分支26的下一步驟是在詢問框116中確定請求是否完成。請求是一種由運行在計算機上的應用軟件輸入的需要某一類型服務的輸入。在詢問框116中,ACTIVITY分支26確定請求是否為CRITICAL I/O。CRITICAL I/O繼續(xù)強迫T(ON)延長直到T(ON)大于T(OFF)。如果請求為CRITICAL I/O,則在首先清除步驟110的BUSY-A重入標志之后主動功率監(jiān)視功能20退出ACTIVITY分支26。另一方面,如果請求不是CRITICALI/O,則ACTIVITY分支26在步驟118使ACTIVITY-TICK參數(shù)增,并且處理流程繼續(xù)到詢問框120,該框確定ACTIVITY-TICK參數(shù)值是否等于ACTIVITY-MAXTICKS常數(shù)值。詢問框120的測試使得可以從CRITICAL I/O平滑過渡并且在下一ACTIVITY-TICK T(ON)間隔內使系統(tǒng)對另一個CRITICAL I/O準備就緒。假定ACTIVITY-TICK參數(shù)不等于ACTIVITY-MAXTICKS常數(shù),則ACTIVITY分支26處理流程步驟110清除BUSY-A重入標志后行至RETURNI向量44。另一方面,如果ACTIVITY-TICK等于常數(shù)值ACTIVITY-MAXTICK,則在步驟122 ACTIVITY分支26將ACTIVITY-TICKcd數(shù)設定為常數(shù)值LEVEL-MAXTICKS。ACTIVITY分支26建立由詢問框108確定的某一POWER LEVER的LEVEL-MAXTICKS。
在詢問框124,ACTIVITY分支26確定是否存在中斷屏蔽。系統(tǒng)應用軟件設置一中斷屏蔽。將中斷屏蔽設置NOT_AVAILABLE(不存在)標志值生成了連續(xù)的T(ON)狀態(tài),這意味著此時不存在中斷。在此情形下,ACTIVITY分支26的處理流程進入到步驟110以清除BUSY-A重入標志并繼續(xù)到RETURN I向量44。但是,如果中斷屏蔽為AVAILABLE(存在),則ACTIVITY分支26在詢問框26確定由詢問框116識別的請求是否用于SLOW I/O_INTERRUPT(慢I/O中斷)。SLOW I/O_INTERRUPT請求可有延遲直到I/O設備“就緒”為止。在“使之就緒”操作期間,可以開始連續(xù)的T(OFF)并繼續(xù)節(jié)電。因此,如果請求不是SLOW I/O_INTERRUPT,ACTIVITY分支26處理流程就進至步驟110以清除BUSY-A重入標志并繼續(xù)到RETURNI向量44。但是,如果請求為SLOWI/O_INTERRUPT,并且在I/O設備“就緒”之前還存在時間,則ACTIVITY分支26在詢問框128確定I/O請求是否完成。因此詢問框128基本上確定相關的I/O設備是否就緒。如果I/O設備沒有就緒,則主動功率監(jiān)視功能20強迫T(OFF)延長。這迫使CPU等待或睡眠,直到SLOWI/O設備就緒。此時,有時間節(jié)電。因此,ACTIVITY分支26進入節(jié)電SAVE POWER子程序62,圖2e和所附的文字對此作了詳細的描述。如果詢問框128確定I/O請求已經(jīng)COMPLETE,則由處理流程進至步驟110清除BUSY-A重入標志并繼續(xù)至RETURNI向量44而使控制返回到操作系統(tǒng)。
本發(fā)明的該實施例不僅提供了主動功率監(jiān)視,而且還提供了管理其它CPU動態(tài)操作特性的方法及其系統(tǒng)。這些其它的動態(tài)操作特性例如可以是不需要的電磁波輻射或者CPU的失效,按照本發(fā)明繼續(xù)在經(jīng)過反復調整后的預先確定的溫度范圍內運行。特別,如圖3所示,本實施例提供了一種主動熱管理反復和系統(tǒng),它包括溫度控制用的實時反饋循環(huán),它對于用戶來說是透明的并且按照與圖2c中節(jié)電SAVE POWER子程序62相同的方式運行。
圖3示出了在步驟132開始的THERMAL MANAGEMENT(熱管理)子程序130。為了實施THERMAL MANAGEMENT子程序130,主動功率監(jiān)視功能20可以修改為更一般的主動監(jiān)視功能,它不僅能夠由相關的CPU和計算機系統(tǒng)監(jiān)視功率消耗,而且可以監(jiān)視其它CPU動態(tài)操作特性。因此,實質上與主動功率監(jiān)視功能20可以經(jīng)IDLE分支24和ACTIVITY分支26調用節(jié)電SAVE POWER子程序62一樣,當THERMAL MANAGEMENT子程序130假定作CPU溫度控制操作時,更為一般的主動監(jiān)視功能可以調用THERMAL MANAGEMENT子程序130。但是關鍵的差異是與在活動水平低的時刻調用SAVE POWER子程序62相反,本實施例在溫度條件接近或者可能接近CPU熱極限時調用THERMALMANAGEMENT子程序130。
特別是本實施例的主動監(jiān)視功能可以在ACTIVITY分支26內當BUSY-A參數(shù)等于BUSY標志常數(shù)值時調用THERMAL MANAGEMENT子程序30。由此向前,處理流程按照THERMAL MANAGEMENT流程圖130描述的進行。
更詳細地參見圖3,在步驟132示出了THERMAL MANAGEMENT子程序130的初始化。THERMAL MANAGEMENT子程序130在步驟134確定CURRENT_CLOCK_RATE參數(shù)的值。下一步驟136CURRENT_CLOCK_RATE參數(shù)設定等于相關的高速時鐘并且在CPU具有多水平高速時鐘的情況下保存該數(shù)值。因此,如果某一CPU具有12MHz和6MHz的高速時鐘,則主動監(jiān)視功能必須確定在主動監(jiān)視功能響應CPU過熱或者溫度變化條件之前控制CPU的是哪一種高速時鐘。這確保了在喚醒時CPU以合適的高速重新建立操作。在步驟136,THERMAL MANAGEMENT子程序130設定由步驟134確定的SAVE_CLOCK_RATE(保持時鐘頻率)參數(shù)值。本實施例比較好的做法是當CPU只有一種高速時鐘時不用CURRENT_CLOCK_RATE。
THERMAL MANAGEMENT子程序130繼續(xù)至步驟138,在那里作了CPU要處理的指令數(shù)計數(shù)。本實施例包括相關的計算機系統(tǒng)的ROM存儲的查尋表。查尋表區(qū)分需要I/O的指令與包括CPU操作而元需I/O的指令。
跟隨在COUNT_INSTRUCTION_LIST(計數(shù)指令列表)步驟138之后,詢問框140確定THERMAL_INTERRUPT(熱中斷)詢問框140的參數(shù)值是否等于常數(shù)值THERMAL_SETPOINT(熱設定點)。這指示需要熱中斷。熱中斷可以是停止或改變CPU操作以響應不需要的溫度條件的中斷。如果THERMAL_INTERRUPT參數(shù)數(shù)值與THERMAL_SETPOINT值不相等,則THERMAL MANAGEMENT子程序130處理流程繼續(xù)到COMPUTE ROUND(受計算量限制)子程序142。另一方面,如果THERMAL_INTERRUPT等于THERMAL_SETPOINT,則處理流程進至步驟144,在該點CPU時鐘移至較低SLEEP CLOCK(睡眠時鐘)頻率。從SLEEP CLOCL頻率步驟144出發(fā),處理流程進至詢問框146以測試處理流程是否退出THERMAL MANAGEMENT子程序132。如果處理流程沒有退出THERMAL MANAGEMENT子程序132,則處理流程返回至詢問框140以繼續(xù)測試熱中斷條件是否存在。
如果CPU要退出THERMAL MANAGEMENT子程序132,則詢問框146使處理流程導向RETURN向量148。這使得處理流程返回先前描述過的主動監(jiān)視功能。這種情況的發(fā)生有多種原因,例如主動監(jiān)視功能進至圖2b的IDLE分支22。只要存在熱中斷條件,THERMAL MANAGEMENT子程序130就以較低的SLEEP CLOCK頻率運行。
當THERMAL MANAGEMENT子程序132使處理流程導向COMPUTEROUND子程序142時,處理流程的情況如同圖4描述的COMPUTE ROUND子程序流程圖150描述的那樣。開始于COMPUTE ROUND子程序步驟142,處理流程進至詢問框152,在那里測試CPU是否處于受計算量限制狀態(tài)。如果CPU不處于受計算量限制狀態(tài),則處理流程進至RETURN向量154。RETURN向量154使THERMAL MANAGEMENT子程序130處理流程回到THERMAL_INTERRUPT詢問框140(見圖3)。
如果CPU處于受計算量限制狀態(tài),則COMPUTE ROUND子程序142的處理流程進至詢問框156。
本發(fā)明提供的技術優(yōu)勢是能夠預覽或預示CPU的操作特性。通過對指令數(shù)計數(shù)并確定,本實施例確定CPU操作是否將處于受計算量限制模式,其中很少或者沒有輸入/輸出,因此對CPU不減慢和無輸入/輸出功能。確定CPU是否處于受計數(shù)量限制狀態(tài)源于對CPU要執(zhí)行的指令的計數(shù),如同在COUNT_INSTRUCTION_LIST步驟138中所作的那樣。本實施例包括將CPU要執(zhí)行的指令與存儲在計算機系統(tǒng)ROM內的查尋表中的元素進行比較的比較器。查尋表提供了一種指令類型特性作為包括I/O功能和沒有I/O功能而只包括CPU的處理或計算操作的指令。本實施例提供用于計算指令數(shù)的預先確定的閾值,這些指令排成序列,沒有包括I/O功能的間斷的I/O指令。如果不含I/O功能的指令數(shù)超過預先確定的閾值數(shù),則本實施例考慮CPU處于受計算量限制狀態(tài)。
在COMPUTE BOUND子程序142確定CPU處于受計算量限制的狀態(tài)下時,處理流程繼續(xù)至詢問框156,它測試CPU是否將在受計算量限制狀態(tài)期間建立熱中斷條件。這防止了CPU到達熱中斷,或者如果需要,將熱中斷調整至新的熱中斷水平。因此,如果在詢問框156,COMPUTE ROUND子程序142確定CPU在受計算量限制狀態(tài)期間將到達熱中斷,則處理流程進至詢問框158。另一方面,如果在受計算量限制狀態(tài)期間沒有發(fā)生熱中斷,則處理流程進至RETURN向量154以在THERMAL MANAGEMENT子程序130中繼續(xù)。
本實施例提供調整常數(shù)值THERMAL_SETPOINT的能力,例如,在計算量限制狀態(tài)期間CPU需要熱中斷設定點時,受計算量限制狀態(tài)的時間較短,不足以對CPU產(chǎn)生不利的影響。換句話說,在一般條件下,熱中斷條件可以設定為如果CPU到達該溫度時,安全系數(shù)確保不會對CPU有熱損害。例如,當知道CPU溫度達到常數(shù)值TUERMAL_SETPOINT的原因時可以有較大的可調的安全系數(shù)。這種情況使得CPU溫度以已知和可預測的方式升高。
根據(jù)受計算量限制狀態(tài)期間CPU執(zhí)行的指令數(shù)和類型,COMPUTE ROUND子程序142可以確定當CPU到達或者超過CPU溫度設定點值THERMAL_SETPOINT時,這樣做只要短暫的間隔。這種由COMPUTE ROUND子程序142確定的短暫間隔不會損壞CPU或對CPU構成威脅。為了容納這種情況,詢問框158測試COMPUTE ROUND子程序145是否應該調整已有的THERMAL_SETPOINT值。如果已有的THERMAL_SETPOINT常數(shù)值需要調整,則處理流程進至步驟160以調整THERMAL SETPOINT值。從步驟160,處理流程繼續(xù)至RETURN向量154。另一方面,如果THERMAL_SETPOINT的數(shù)值仍然保留為已有的數(shù)值,則處理流程進至詢問框162以測試THERMAL_INTERRUPT參數(shù)值是否要設定為THERMAL_SETPOINT常數(shù)值。
如果THERMAL_INTERRUPT常數(shù)值要設定為THERMAL_SETPOINT常數(shù)值,則處理流程進至步驟164,在該點COMPUTE ROUND子程序142將THERMAL_INTERRUPT參數(shù)值設定為THERMAL_SETPOINT常數(shù)值。處理流程隨后繼續(xù)至RETURN向量154。另一方面,如果THERMAL_INTERRUPT變量值將不設定為THERMAL_SETPOINT值,則處理流程簡單地繼續(xù)至RETURN向量154。由該點向前,處理流程進行至RETURN向量148并返回THERMAL MANAGEMENT子程序142。
自調諧是連續(xù)反饋環(huán)路控制系統(tǒng)固有的特性。本發(fā)明的軟件可以檢測CPU活動何時較低,因此何時可使本發(fā)明的節(jié)電方面起作用。另一方面,本實施例確定CPU活動何時較高因而熱管理起作用。一旦節(jié)電監(jiān)視起作用,在該間隔內立即返回全速CPU時鐘操作從而不使計算機性能降低。同樣,一旦離開了熱設定點條件,并且不再需要熱管理時,則在CPU內立即返回全速CPU時鐘使熱管理的影響最小。為了達到該立即返回全速CPU時鐘操作,本發(fā)明的較佳實施例采用有些相關的硬件。
現(xiàn)在看圖5,它示出了本發(fā)明采用的用于啟動功率節(jié)省和熱管理的有關硬件的簡化圖。當啟動主動功率監(jiān)視功能20確定CPU準備睡眠時,它向I/O端口(未畫出)寫入從而在SLEEP線上引起一個脈沖。SLEEP線上該脈沖的上升沿使得觸發(fā)器200將Q端取高值而使Q-端取低值。這引起了“與/或”邏輯(它包括“與”門202和204和“或”門206以選擇從SLEEP CLOCK(睡眠時鐘)振蕩器208SLEEP CLOCK線并為CPU CLOCK時鐘使用的脈沖。SLEEP CLOCK鐘振蕩器208的時鐘慢于一般CPU活動期間的CPU時鐘。從觸發(fā)器200的Q的高輸入利用“與”門202與來自SLEEP CLOCK振蕩器208的脈沖進行“與”運算并用“或”門206與觸發(fā)器200的Q-的低的結果進行“或”運算,然后進一步用“與”門204與HIGH SPEED CLOCK(高速時鐘)振蕩器210沿HIGH SPEED CLOCK線產(chǎn)生的脈沖進行“與”運算從而產(chǎn)生CPU CLOCK時鐘。當I/O端口指定SLEEPCLOCK時,CPU CLOCK等于SLEEP CLOCK振蕩器208的數(shù)值。另一方面,如果發(fā)生中斷,則中斷值清除觸發(fā)器200,中斷迫使包含“與”門202和204以及“或”門206的“與/或”選擇器選擇HIGH SPEED CLOCK值?!芭c/或”選擇器將使CPU CLOCK返回至來自HIGH SPEED CLOCK振蕩器210的數(shù)值。因此,在對CPU的節(jié)電操作期間,系統(tǒng)內任何中斷的檢測都使CPU操作在指引和處理中斷之前恢復至全速時鐘頻率。
應該指出的是給定系統(tǒng)的每個CPU外部所需的有關硬件可以根據(jù)所用的操作系統(tǒng)的不同(如是否可使CPU停止等)而不同。毫無疑問,本發(fā)明的范圍并不局限于在眾多便攜式計算機系統(tǒng)中主動節(jié)電或管理熱狀態(tài)的情況。例如,在圖6和7中示出了兩個實際的例子。
今天的許多VSLI設計使得CPU的速度可以切換。從空時鐘或慢時鐘切換至快時鐘邏輯與允許用戶通過鍵盤命令改變速度的方式相同。與這種切換邏輯共同工作的主動監(jiān)視功能的附加邏輯使得在檢測到中斷后立即返回到快速時鐘。這種簡單的邏輯對于支持中斷CPU的所需硬件來說是關鍵的并且從而能以全速處理中斷。
在MS-DOS下控制CPU動態(tài)操作特性(包括功耗和溫度)的方法采用MS-DOSIDLE循環(huán)陷阱來訪問“空操作”的循環(huán)。IDLE循環(huán)提供對應用軟件和處于空閑或者低活性狀態(tài)下操作系統(tǒng)的特殊訪問,需要仔細的檢查來確定系統(tǒng)內任何給定點的活動水平。從中斷21H服務請求到確定活動水平都采用反饋循環(huán)。活動水平的預測由中斷21H請求確定,由此本發(fā)明設定使CPU“睡眠”(即,使CPU速度放慢或停止的時間片。另外一個特征是使用戶可以根據(jù)中斷21H的活動水平修改時間片。
現(xiàn)參看圖6,該圖示出了諸如Intel 80386等系統(tǒng)所用的實際睡眠硬件設備。順便指出,不能使Intel 80386 CPU的時鐘停止。地址啟動總線220和地址總線222將CPU的輸入提供給多路分解器224。多路分解器224的輸出沿SLEEPCS發(fā)出,作為“或”門226和228的輸入?!盎颉遍T226和228的其余輸入分別是I/O寫控制線和I/O讀控制線。除了“或非”門230的輸出以外,還把這些門電路的輸出施加到D觸發(fā)器232上,以便對端口(port)解碼?!癐NTR”是來自I/O端口(外圍設備)輸入給“或非”門230的中斷輸入,它使邏輯硬件切換回高速時鐘。然后,將觸發(fā)器232的輸出以及“或”門226的輸出饋送給三態(tài)緩沖器234,使其讀回端口上的信息。由I/O讀/寫端口(外圍設備)利用所有上述硬件來選擇節(jié)電“睡眠”操作?!癝LOW-”輸出等價于圖2中的“睡眠”,并且它是觸發(fā)器236的一個輸入,后文將對其進行討論。
D觸發(fā)器240和242將睡眠時鐘振蕩器238的輸出分頻成兩個較慢的時鐘。在圖6所示的特定設備中,是將16MHZ睡眠時鐘振蕩器238分頻成4MHZ時鐘和8MHZ時鐘??缃悠鱆1選擇哪一個時鐘作為“睡眠時鐘”。
在該特定的設備中,高速時鐘振蕩器244是32MHZ的振蕩器,盡管這一特定的速度不是本發(fā)明所要求的。32MHZ振蕩器與一電阻器串聯(lián)(對于圖示的設備,電阻值為33歐姆),而該電阻器又與兩個互相并聯(lián)的電容器(電容為10皮法)串接。這種振蕩的結果受到D觸發(fā)器246和248時鐘的限制。
D觸發(fā)器236、246和248是同步觸發(fā)器。盡管D觸發(fā)器236和246未在圖2a至圖2d描述主動電源監(jiān)視功能20的簡化睡眠硬件中示出,但是這些觸發(fā)器能夠保證時鐘切換僅在時鐘的邊緣發(fā)生。,如圖6所示,與圖5中的觸發(fā)器200一樣,觸發(fā)器248的輸出根據(jù)CPU將作睡眠(“FASTEN-”)還是喚醒(“SLOWEN-”),或者啟動“或”門250,或者啟動“或”門252。
“或”門250、252和“與”門254的功能等價于圖5的“與/或”選擇器。它們負責選擇“Slowclk”(慢時鐘,也稱作睡眠時鐘)或高速時鐘(輸入線上表示為32MHZ)。在該設備中,慢時鐘根據(jù)跨接器J1的狀態(tài)為4MHZ或8MHZ,而高速時鐘為32MHZ?!芭c”門254的輸出在此用ATUCLK標注,它確定了CPU時鐘的頻率,并且等價于圖5的CPU時鐘。
現(xiàn)參見圖7,該圖示出了諸如Intel 80386等系統(tǒng)所用的另一實際睡眠硬件設備。順便指出,不能使Intel 80386 CPU的時鐘停止。用Western Digital公司的FE3600 VLSI進行速度切換,并借助一特殊的外部PAL 256來控制在任何中斷時喚醒CPU的中斷選通。利用本發(fā)明的軟件節(jié)電方式,可以對中斷接受進行監(jiān)視。這在中斷后將啟動下一個P(i)ΔTi。
任何對CPU的中斷請求都將使系統(tǒng)返回正常操作狀態(tài)。對CPU的中斷請求INTRQ使PAL把RESCPU線上的喚醒(WAKE_UP)信號發(fā)送給FE3001,F(xiàn)E3001再啟動CPU和DMA時鐘,使系統(tǒng)返回到其正常狀態(tài)。這等價于圖5中的“INTERRUPT-”(中斷)。使中斷請求同步,以避免混淆狀態(tài)機器,從而只在周期有效時才檢測中斷信號INTDET。RESCPU的上升沿喚醒FE 3001,然后FE 3001再將整個系統(tǒng)從睡眠模式中釋放出來。
用于386SX的設備,其不同之處僅在于實現(xiàn)本實施例CPU動態(tài)操作特征的外部硬件和軟件循環(huán)體。軟件循環(huán)體將在引向中斷前根據(jù)中斷設定外部硬件,以便切換至高速時鐘。一旦返回至節(jié)電軟件,主動監(jiān)測功能便監(jiān)測高速時鐘周期,并為全時鐘操作將硬件復位。
用于OS/2的設備使用“空操作”循環(huán)體,該循環(huán)體被編程為在低優(yōu)先級背景操作下運行的穿線(THREAD)程序。一旦啟動THREAD,則將啟動CPU的睡眠操作或慢速時鐘操作,直至發(fā)生中斷致使CPU返回至原先的時鐘頻率。
盡管在本發(fā)明的較佳實施例中利用中斷來喚醒CPU,但是應該認識到,系統(tǒng)內或加至系統(tǒng)的任何周期性活動也可以用于相同的功能。
本發(fā)明中的節(jié)電方面和熱管理(thermal management)方面之間的不同在于,在部分的熱管理方面需要對CPU的溫度進行檢測。這可以用一個熱敏電阻或者其他直接檢測的儀器來實現(xiàn),檢測儀器將溫度讀數(shù)提供給熱管理(THERMALMANAGEMENT)子程序132。熱敏電阻或其他溫度檢測器件是本領域中眾所周知的。另外,根據(jù)有關該特定應用中CPU的動態(tài)操作特征,可用其他直接讀出器件或檢測器件獲得被檢測的操作特性。
綜上所述,本發(fā)明提供了一種用于控制被檢測的CPU動態(tài)操作特征的方法,并且包括至少檢測一個CPU動態(tài)操作特征的步驟。本發(fā)明對檢測至少一個動態(tài)操作特征時CPU的時鐘頻率進行檢測。該方法以及設備根據(jù)至少一個CPU動態(tài)操作特征確定,存在一個設定點中斷條件,該特征相對于與至少一個CPU動態(tài)操作特征相關的一個預定的設定點建立一個預定的關系。在存在中斷狀態(tài)的情況下,本發(fā)明包括相對于被檢測的時鐘頻率控制時鐘頻率的步驟。另一方面,在不存在設定點中斷條件的情況下,本發(fā)明包括重復上述確定和控制步驟的步驟和電路。
本實施例另一個有吸引力的特征是不僅能夠根據(jù)諸如功耗和溫度等被檢測的CPU動態(tài)操作特征控制單個CPU,而且能夠控制支持某一給定計算機系統(tǒng)的多個CPU。例如,在一個雙CPU計算機系統(tǒng)中,本發(fā)明可以協(xié)調各項控制被檢測的CPU動態(tài)操作特征的任務,以便使計算機的系統(tǒng)性能總體上保持所需的水平。例如,與加至兩個CPU上的受計算量限制(COMPUTE BOUND)子程序130所確定的那樣,一個CPU可處于受計算量限制的模式下。雙CPU的計算機的另一個CPU可以不處于受計算量限制的模式下,而代之以執(zhí)行指令,指令中有許多都包括I/O功能。由于認識到受計算量限制的CPU的升溫系數(shù)將在現(xiàn)有的時鐘頻率下使CPU的溫度升高,所以本發(fā)明可以為其放慢受計算量限制的CPU的時鐘,以免達到某一熱設定點。根據(jù)是否要求計算機系統(tǒng)性能恒定,本發(fā)明可以提高另一個CPU的時鐘頻率,以便保持平均或總的時鐘頻率不變,從而使計算機系統(tǒng)獲得一個均勻的性能水平。
為了說明本發(fā)明的多CPU實施例的一個方面,圖8示出了多CPU情況的流程圖280,該流程圖的開始是多CPU的啟動步驟282。多CPU啟動步驟282可以首先在詢問框284中測試是否需要控制一個以上的CPU。如果將控制一個以上的CPU,那么流程行至詢問框286。否則,流程行至返回向量(RETURN)288,使CPU返回到執(zhí)行多CPU MULTIPLE CPU子程序280之前所處的操作中。
在詢問框286處,MULTIPLE CPU子程序280測試是否將對MULTIPLECPU進行協(xié)調管理。如果不進行協(xié)調管理,則流程行至RETURM向量280。否則,流程行至步驟290,步驟290起一向量的作用,用于指向多個CPU中的每一個的控制。對于要經(jīng)歷對被檢測的CPU動態(tài)操作特征進行控制的每個CPU,流程行至主動監(jiān)視(ACTIVE MONITOR)子程序292。實質上,ACTIVEMONITOR子程序292可等價于主動功率監(jiān)視功能20、主動監(jiān)視功能例如用于THERMAL MANAGEMENT子程序132、協(xié)調節(jié)電和熱管理的監(jiān)視功能,或者響應于一個或多個被檢測CPU動態(tài)操作特征對CPU進行控制的另一種監(jiān)視功能或子程序。
當對每個CPU繼續(xù)MULTIPLE CPU子程序280的流程時,會在詢問框294處對至少一個被協(xié)調的CPU進行是否存在一個設定點中斷條件的測試。如果不存在這種與設定點有關的中斷狀態(tài),那么流程返回詢問框294,繼續(xù)對是否存在有關設定點的中斷狀態(tài)進行測試。當存在這樣的中斷狀態(tài)時,流程行至詢問框296,測試是否需要MULTIPLE CPU子程序280對未受影響的CPU的時鐘頻率進行控制或調節(jié)。如果由詢問框296得知,將不對未受影響的CPU進行調節(jié),那么流程行至RETURN向量288。否則,流程繼續(xù)行至步驟298,在步驟298處,將調節(jié)未受影響的CPU的時鐘頻率,以便保持總的計算機系統(tǒng)的時鐘頻率不變,或者獲得所需的總的計算機系統(tǒng)的時鐘頻率。
盡管已經(jīng)描述了本發(fā)明較佳實施例的若干設備,但本領域的熟練技術人員將發(fā)現(xiàn)各種變化和其他實施例。因此,本發(fā)明僅受所附權利要求的限制。
權利要求
1.一種用于控制被檢測CPU動態(tài)操作特征的方法,其特征在于,包括以下步驟(a)對計算機中的中央處理器(CPU)至少檢測一個動態(tài)操作特征,所述CPU以第一時鐘頻率操作;(b)根據(jù)所述至少一個動態(tài)操作特征確定存在一個設定點中斷條件,該動態(tài)操作特征相對于一個預定設定點建立了一個預定關系,而該設定點與所述至少一個動態(tài)操作特征相關;(c)在存在所述設定點中斷條件的情況下,相對于所述第一時鐘頻率控制所述時鐘頻率;(d)在不存在所述設定點中斷條件的情況下,重復步驟(b)和(c)。
2.如權利要求1所述的方法,其特征在于,用于控制被檢測CPU動態(tài)操作特征的所述方法包括一種用于管理CPU動態(tài)熱學特征的方法,并且用于檢測所述至少一個動態(tài)操作特征的所述步驟包括檢測所述CPU工作溫度的步驟,并且所述確定步驟包括確定存在中斷條件的步驟,其中,所述工作溫度相對于一預定溫度設定點建立了一預定關系。
3.如權利要求1所述的方法,其特征在于,用于檢測所述至少一個動態(tài)操作特征的所述步驟還包括檢測所述CPU工作溫度的步驟,并且所述確定步驟包括用于確定所述工作溫度在所述CPU處于受計算量限制狀態(tài)期間達到一預定溫度設定點的步驟。
4.如權利要求1所述的方法,其特征在于,還包括用于確定所述CPU是否處于受計算量限制狀態(tài),并進一步確定在所述受計算量限制狀態(tài)期間是否存在所述中斷條件的步驟。
5.如權利要求1所述的方法,其特征在于,還包括以下步驟(a)確定所述CPU是否處于受計算量限制的狀態(tài),(b)確定所述至少一個動態(tài)操作特征是否在所述受計算量限制狀態(tài)期間將存在所述中斷條件,并且(c)在所述受計算量限制狀態(tài)期間將存在所述中斷條件的情況下,修改所述中斷條件。
6.如權利要求1所述的方法,其特征在于,還包括以下步驟確定所述CPU是否能節(jié)電,并且如果所述CPU能節(jié)電,則根據(jù)所述中斷條件的存在以及所述節(jié)電產(chǎn)生的控制信號,相對于所述被保存時鐘頻率控制所述時鐘頻率。
7.如權利要求1所述的方法,其特征在于,還包括以下步驟確定所述CPU是否處于受計算量限制狀態(tài),并且通過確定所述CPU在所述受計算量限制狀態(tài)期間將要執(zhí)行的受計算量限制指令的數(shù)目,來確定所述受計算量限制狀態(tài)的持續(xù)時間。
8.如權利要求1所述的方法,其特征在于,還包括以下步驟確定所述CPU是否處于受計算量限制狀態(tài),并且通過確定所述CPU在所述受計算量限制狀態(tài)期間將要執(zhí)行的受計算量限制指令的數(shù)目,來確定所述受計算量限制狀態(tài)的持續(xù)時間,而且在所述受計算量限制狀態(tài)期間將存在所述中斷條件的情況下,修改所述中斷條件。
9.如權利要求1所述的方法,其特征在于,還包括以下步驟確定所述CPU是否處于受計算量限制狀態(tài),并且確定所述受計算量限制狀態(tài)的持續(xù)時間,還相對于所述被保存時鐘頻率修改所述時鐘頻率,以在所述受計算量限制狀態(tài)期間避免存在所述中斷條件。
10.如權利要求1所述的方法,其特征在于,用于檢測所述至少一個CPU動態(tài)操作特征的所述步驟包括用一熱敏電阻器檢測器件檢測所述CPU的工作溫度。
11.如權利要求1所述的方法,其特征在于,還包括將所述預定關系和所述預定設定點存儲在所述計算機一存儲單元中的步驟。
12.如權利要求1所述的方法,其特征在于,還包括將所述預定關系和所述預定設定點存儲在所述計算機一存儲單元中的步驟,所述存儲單元包含一個寄存器。
13.如權利要求1所述的方法,其特征在于,還包括將所述預定關系和所述預定設定點存儲在所述計算機一存儲單元中的步驟,所述存儲單元包含一個不同于所述CPU的電路。
14.如權利要求1所述的方法,其特征在于,還包括一種有關在所述CPU中協(xié)調實時節(jié)電并控制被檢測動態(tài)熱學特征的的方法,所述實時節(jié)電方法與控制所述被檢測CPU動態(tài)熱學特征的所述方法相聯(lián)系地操作,并且包括以下步驟(e)確定所述CPU是否能節(jié)電;(f)如果所述CPU能節(jié)電,則為所述CPU確定一個當前時鐘頻率;(g)命令一硬件選擇器降低或停止提供給CPU的當前時鐘頻率;(h)確定是否已經(jīng)發(fā)生了節(jié)電中斷;(i)如果還未發(fā)生所述節(jié)電中斷,則重復此步驟(i),此時所述CPU保持在所述節(jié)電模式下,直至所述節(jié)電中斷發(fā)生;并且(j)如果發(fā)生了所述節(jié)電中斷,則命令所述硬件選擇器對所述CPU恢復所述已確定的當前時鐘頻率。
15.如權利要求14所述的有關協(xié)調實時節(jié)電并控制被檢測動態(tài)熱學特征的的方法,其特征在于,命令硬件選擇器降低或停止提供給CPU的當前時鐘頻率的所述步驟(g)還包括以下步驟通過一條與所述硬件選擇器相連的通信線,用一節(jié)電CPU命令向所述硬件選擇器通以脈沖;根據(jù)所述節(jié)電CPU命令,通過所述硬件選擇器選擇節(jié)電時鐘;并且將來自所述節(jié)電時鐘的脈沖傳送給所述CPU,以便使所述CPU處于節(jié)電模式。
16.如權利要求14所述的有關協(xié)調實時節(jié)電并控制被檢測CPU動態(tài)熱學特征的的方法,其特征在于,確定計算機中中央處理器(CPU)是否能節(jié)電的所述步驟(e)還包括以下步驟檢查所述CPU是否已處于所述節(jié)電模式下;如果所述CPU還未處于所述節(jié)電模式下,則確定在所述CPU處于所述節(jié)電模式之前是否存在可喚醒所述CPU的節(jié)電中斷;并且如果存在節(jié)電中斷,則防止所述CPU進入所述節(jié)電模式。
17.如權利要求1所述的有關實時節(jié)電的方法,其特征在于,確定計算機中中央處理器(CPU)是否能節(jié)電的所述步驟(e)還包括以下步驟檢查所述CPU是否已接收到請求;如果所述CPU已接收到請求,則確定所述請求是否為臨界的輸入/輸出;如果所述請求是臨界的輸入/輸出,則防止所述CPU進入所述節(jié)電模式;如果所述請求不是臨界的輸入/輸出,則確定在所述CPU進入所述節(jié)電模式之前是否存在可喚醒所述CPU的節(jié)電中斷;防止所述CPU進入所述節(jié)電模式;確定所述請求是否來自一個具有延遲直至I/O設備就緒的輸入端/輸出端;并且如果所述請求不是來自一個具有延遲的輸入端/輸出端,則防止所述CPU進入所述節(jié)電模式。
18.一種用于控制多個CPU被檢測動態(tài)操作特征的方法,其特征在于,包括以下步驟(a)對計算系統(tǒng)中多個中央處理器(CPU)的至少一個動態(tài)操作特征進行檢測,所述多個CPU以并行工作模式工作;(b)檢測所述多個CPU每一個的第一時鐘頻率;(c)為所述多個CPU的每一個確定存在至少一個設定點中斷條件,這時所述至少一個被檢測動態(tài)操作特征中的一個或多個相對于一個預定設定點建立了一個預定關系,該設定點與所述至少一個動態(tài)操作特征中相應的一個特征相關聯(lián);(d)在存在至少一個中斷條件的情況下,相應于所述至少一個設定點中斷條件,對所述多個CPU中的一個CPU,相對于所述第一時鐘頻率至少控制所述時鐘頻率;(e)在任何所述多個CPU都不存在中斷條件的情況下,重復步驟(b)和(c)。
19.如權利要求18所述的方法,其特征在于,還包括以下步驟至少控制所述多個CPU中的一個CPU,該CPU不是對應于所述中斷條件的所述CPU,從而使所述計算系統(tǒng)在所述多個CPU中保持一個大致不變的平均時鐘頻率。
20.一種用于控制被檢測CPU動態(tài)操作特征的設備,其特征在于,所述設備包括一CPU活動檢測器;一CPU時鐘;至少一個振蕩器,用于至少在第一速度下提供第一脈沖,在第二速度下提供第二脈沖;一硬件選擇器,用于有選擇地在所述第一脈沖和所述第二脈沖之間進行控制和選擇,所述硬件選擇器還把對所述第一脈沖和第二脈沖的所述選擇提供給所述CPU時鐘,所述硬件選擇器可以響應于某一設定點中斷條件而運作,所述設定點中斷條件的存在依賴于至少一個被檢測CPU動態(tài)操作特征,該特征相對于一個預定設定點建立了一個預定關系,而該設定點與所述被檢測CPU動態(tài)操作特征相關聯(lián);以及一CPU睡眠管理器,它適于從所述CPU活動檢測器接收被檢測的CPU的活動,并適于為所述硬件選擇器產(chǎn)生一個脈沖,從而指定所述硬件選擇器應該選擇哪個脈沖。
21.一種用于控制被檢測CPU動態(tài)操作特征的方法,其特征在于,包括以下步驟(a)檢測電路,用于對計算機中的中央處理器至少檢測一個動態(tài)操作特征,所述CPU以第一時鐘頻率工作;(b)設定點指令,它們在所述CPU上運行,用于根據(jù)所述至少一個動態(tài)操作特征確定存在一個設定點中斷條件,該特征相對于一個預定設定點建立了一個預定關系,該設定點與所述至少一個動態(tài)操作特征相關聯(lián);(c)控制指令,用于在存在所述設定點中斷條件的情況下,相對于所述第一時鐘頻率控制所述時鐘頻率;(d)重復指令,用于在不存在所述設定點中斷條件的情況下,重復步驟(b)和(c)。
22.如權利要求21所述的設備,其特征在于,還包括用于管理CPU動態(tài)熱學特征的管理指令,并且所述溫度檢測電路還包括用于檢測所述至少一個動態(tài)操作特征的動態(tài)溫度檢測電路,包括檢測所述CPU工作溫度的步驟,而且所述設定點指令還包括用于確定存在中斷條件的指令,這時所述工作溫度相對于一預定溫度設定點建立了一預定關系。
23.如權利要求21所述的設備,其特征在于,所述檢測電路還包括用于檢測所述CPU工作溫度的電路,并且所述設定點指令還包括用于確定所述工作溫度在所述CPU處于受計算量限制狀態(tài)期間達到一預定溫度設定點的指令。
24.如權利要求21所述的設備,其特征在于,還包括受計算量限制確定指令,用于確定所述CPU是否處于受計算量限制狀態(tài),并確定在所述受計算量限制期間是否將存在所述中斷條件。
25.如權利要求21所述的設備,其特征在于,還包括用于確定所述CPU是否處于受計算量限制狀態(tài)的受計算量限制確定指令,其中所述設定點指令還包括用于確定在所述受計算量限制狀態(tài)期間所述至少一個動態(tài)操作特性是否將存在所述中斷條件的指令,并且還包括在所述受計算量限制狀態(tài)期間將存在所述中斷條件的情況下用于修改所述中斷條件的修改指令。
26.如權利要求21所述的設備,其特征在于,還包括節(jié)電指令,用于確定所述CPU是否能節(jié)電,并且如果所述CPU能節(jié)電,則根據(jù)所述中斷條件的存在以及所述節(jié)電所產(chǎn)生的控制信號,相對于所述被保存時鐘頻率控制所述時鐘頻率。
27.如權利要求21所述的設備,其特征在于,還包括受計算量限制確定指令,用于確定所述CPU是否處于受計算量限制狀態(tài),并且通過確定所述CPU在所述受計算量限制狀態(tài)期間將要執(zhí)行的受計算量限制指令的數(shù)目,來確定所述受計算量限制狀態(tài)的持續(xù)時間。
28.如權利要求21所述的設備,其特征在于,還包括受計算量限制確定指令,用于確定所述CPU是否處于受計算量限制狀態(tài),并且通過確定所述CPU在所述受計算量限制狀態(tài)期間將要執(zhí)行的受計算量限制指令的數(shù)目,來確定所述受計算量限制狀態(tài)的持續(xù)時間,并且還在所述受計算量限制狀態(tài)期間將存在所述中斷條件的情況下修改所述中斷條件。
29.如權利要求21所述的設備,其特征在于,還包括受計算量限制確定指令,用于確定所述CPU是否處于受計算量限制狀態(tài),并且確定所述受計算量限制狀態(tài)的持續(xù)時間,還相對于所述被保存時鐘頻率修改所述時鐘頻率,以免在所述受計算量限制狀態(tài)期間存在所述中斷條件。
30.如權利要求21所述的設備,其特征在于,所述檢測電路包括一個熱敏電阻器檢測器件。
31.如權利要求21所述的設備,其特征在于,還包括存儲器電路,用于將所述預定關系和所述預定設定點存儲在所述計算機的存儲單元中。
全文摘要
一種用于控制被檢測CPU動態(tài)操作特征的方法和系統(tǒng),用于在CPU以第一時鐘頻率工作時檢測至少一個CPU動態(tài)操作特征。系統(tǒng)根據(jù)至少一個動態(tài)操作特征確定存在一個設定點中斷條件。當存在設定點中斷條件時,電路及指令相對于第一時鐘頻率控制時鐘頻率。否則,則重復上述確定及控制步驟。本方法和系統(tǒng)還確定CPU是否處于受計算量限制狀態(tài)。此項操作連同實時節(jié)電設備及方法是本發(fā)明的特點。
文檔編號G06F11/34GK1168501SQ9710206
公開日1997年12月24日 申請日期1997年1月17日 優(yōu)先權日1996年1月17日
發(fā)明者小拉沃恩·F·瓦茨 申請人:德克薩斯儀器股份有限公司