專利名稱:具有零伏系統(tǒng)暫停的臺式計算機系統(tǒng)的制作方法
本申請是申請?zhí)枮?4107242.8的申請的分案申請。
本發(fā)明一般涉及到計算機系統(tǒng)結構,更具體地說,本發(fā)明涉及到一種有能力暫停和恢復計算機系統(tǒng)狀態(tài)的臺式計算機系統(tǒng),該計算機系統(tǒng)的暫停系統(tǒng)狀態(tài)被保留在系統(tǒng)硬文件內(nèi),以便電源可切斷系統(tǒng)功率。
在技術中個人計算機是眾所周知的。一般的個人計算機,特別是IBM的個人計算機,獲得了廣泛的利用,為當今現(xiàn)代社會的許多部門提供計算機能力。個人計算機一般定義為臺式、落地式,或便攜式微機,其系統(tǒng)具有單個中央處理機(CPU)和關聯(lián)的易失的和不易失的存儲器,包括全部的RAM和BIOS ROM、還具有系統(tǒng)監(jiān)視器、鍵盤、一個或多個軟盤驅(qū)動器、固定磁盤驅(qū)動器(也稱為“硬盤”)、所謂的“鼠標器”指點器和可選的打印機。這些系統(tǒng)的一個明顯特點是使用母板或系統(tǒng)平面來把各個部件在電氣上連接到一起。這些系統(tǒng)主要設計為向單用戶提供獨立的計算能力,并允許個人或小公司以低的價格購置。這種個人計算機系統(tǒng)的例子是IBM PC-AT和IBM PS/1。
個人計算機系統(tǒng)通常用來運行軟件以完成各種活動,如字處理、通過電子表格的數(shù)據(jù)操作、數(shù)據(jù)庫里數(shù)據(jù)的收集和確定關系、圖形顯示和利用系統(tǒng)設計軟件完成電或機械系統(tǒng)的設計等等。
IBM的PS/1和PS/2是臺式計算機,設計成可用于單一地點。例如,今天的社會里許多個人在他們的桌子上或房間里擁有臺式計算機,專用于各種計算機輔助任務。臺式計算機通常設置在一個地方,在不移動計算機的情況下由一個或多個用戶使用。
臺式計算機系統(tǒng)可分為連網(wǎng)的和不連網(wǎng)的計算機系統(tǒng)。連網(wǎng)的計算機系統(tǒng)是一個更大的計算機系統(tǒng)里的一部分,通過局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)和其它的計算機或服務器連接起來。通過專門的接口和協(xié)議,這些網(wǎng)絡允許計算機以一種有效的方式共享數(shù)據(jù)和程序。用于商業(yè)上的臺式計算機系統(tǒng)一般是連網(wǎng)的計算機系統(tǒng)。另一方面,不連網(wǎng)的計算機不和任何其它計算機連接。從一臺計算機傳送數(shù)據(jù)到另一臺計算機時,在一個地方把數(shù)據(jù)經(jīng)計算機寫入到軟盤上再在另一個地方把數(shù)據(jù)經(jīng)計算機讀出來。用在家庭中的臺式計算機一般是不連網(wǎng)的計算機。
和設計為保持在單一地點的臺式計算機不同,便攜式計算機還稱為“膝上計算機”或“筆記本計算機”,這決定于它們的尺寸如IBM的PS/2 L40 Think Pad,設計成可由用戶攜帶、可用于任何地點。例如,一個推銷員可在推銷員的桌子上利用筆記本計算機產(chǎn)生一份計劃推銷報告。如果該推銷員從他的辦公桌上被喚去參加會議,推銷員可暫停當前的任務,拿起筆記本計算機,帶著它去參加會議。到開會時,推銷員可拿出計算機,繼續(xù)執(zhí)行軟件,在會議期間進行記錄或提取信息。作為另一個例子,學生上課前可在家用筆記本計算機上寫學期論文,上課時學生可把它帶去記筆記。
便攜式計算機一般是不連網(wǎng)的計算機,盡管在辦公室使用它時有些用戶會把他的便攜式計算機連接到辦公室的LAN上。
便攜式計算機在一些方面不同于臺式計算機。便攜式計算機通常由可充電電池供電。用戶利用墻上插座的電力對電池充電,使用計算機直到電池需要再充電為止,然后對電池再充電。當電池在充電時,便攜式計算機不能搬動,計算機的搬動受到電源電纜長度的限制。這樣,在電池充分充完電前,正在對電池充電的計算機實際上失去了可攜帶性。和閃光燈或其它用電池供電的設備一樣,便攜式計算機消耗的功率越多,在電池需要重新充電前用戶可使用便攜式計算機的時間越短。于是,當購買便攜式計算機時功率消耗是用戶考慮的一個因素,并且并不意外地,也是便攜式計算機工業(yè)的一個主要問題。所以,計算機工業(yè)花費了大量的時間和金錢來設計使用越來越少的電功率的筆記本式計算機。
盡管如此,這是一種折衷;低功耗計算機采用較貴的低功率部件,這些低功率部件不能像更快速的高功率部件那樣快地執(zhí)行計算機命令。而且,除了采用更貴的部件外,便攜式系統(tǒng)一般采用很復雜的設計,這更提高了便攜式計算機系統(tǒng)的成本。
作為比較,臺式計算機一般利用墻上插座的電力供電;臺式計算機不帶有會消耗殆盡的電池(除用于實時時鐘的非常小的電池之外,這種小電池無須再充電即可持續(xù)使用數(shù)年)。因此,臺式計算機可以使用更快速、高功率和較便宜的部件。簡言之,便攜式計算機使用較少的電功率,但其計算能力不如利用較大電功率的臺式計算機那么強大。
在當今的能量意識社會里,存在著另一種聽任臺式計算機整天供電的簡單方法。一種替代法是從便攜式計算機里發(fā)現(xiàn)的技術。如果便攜式計算機在一定的時間間隔內(nèi)空閑不用,一般為幾分鐘,計算機將自動地停止固定磁盤存儲器里固定磁盤的旋轉(zhuǎn)和停止對計算機顯示器的供電。這兩種方法都可節(jié)省能源。
便攜式計算機還具有其它更復雜地節(jié)省電池能源的方法。如果系統(tǒng)在給定的時間周期內(nèi)空閑不用,某些便攜式計算機的設計開始關閉部件,并在再次通電恢復計算時不丟失數(shù)據(jù)。為了防止存儲丟失,這種便攜式計算機具有一種特殊的電池電路,它可對存儲器供電而不對CPU和其它的電路供電。這種特殊的電池電路增加印刷電路板的成本和復雜性,還增加系統(tǒng)部件的數(shù)量。另一種實現(xiàn)暫停/恢復功能的方法是采用稱之為“SL”家族的特殊CPU家族中的一種CPU。SL類CPU是按不同方式設計的,并具有專門的命令以允許設計者方便地實現(xiàn)電池功率節(jié)約功能。但是,SL家族更加昂貴,而且SL家族的處理機在計算能力上一般不如標準處理機那么強大。此外,便攜式計算機通常具有昂貴的“陰影”寄存器來節(jié)省在典型計算機系統(tǒng)里遇到的多個只寫寄存器。這些特殊的性能增加了印刷電路板設計的復雜性和成本,并且增加了計算機系統(tǒng)的部件數(shù)量。況且,普遍認為不可能省掉非SL的80386或80486。
由于便攜式計算機和臺式計算機之間的許多差異,用戶料想膝上和筆計本計算機的價格要高于臺式計算機。用戶期待臺式計算機有強大的計算能力,而且非常便宜。因此,如果采用便攜式計算機所使用的昂貴和復雜技術而實現(xiàn)暫停/恢復方案,臺式計算機將會太貴,以致于不能在臺式計算機市場上銷售。因此要在臺式計算機里實現(xiàn)能源節(jié)約,一般都利用現(xiàn)成的部件,或者采用至少和臺式系統(tǒng)中所用的標準部件具有同樣功效的較新部件。
另外,連網(wǎng)的和不連網(wǎng)的臺式系統(tǒng)具有不同的要求。有些LAN協(xié)議要求計算機系統(tǒng)里的LAN硬件保持供電,否則的話網(wǎng)絡會失效。不連網(wǎng)的臺式系統(tǒng)明顯地不具備LAN硬件,因此對于不連網(wǎng)的系統(tǒng)LAN失效不成為問題。
因此希望提供一種具有類似于或優(yōu)越于便攜式系統(tǒng)的功率管理特性的臺式計算機系統(tǒng)。
同時還希望提供具有功率管理能力,又不必采用便攜式計算機系統(tǒng)中類似特性的較復雜設計和較昂貴部件的臺式系統(tǒng)。
同時也希望保留非SL類80386或80486的狀態(tài),并且不必采用便攜式計算機系統(tǒng)中類似特性的較復雜設計和較昂貴部件。
EPA(美國環(huán)境保護署)已經(jīng)頒布有效利用能源計算機方針。EPA對要求被看作是“綠色”即有效利用能源的計算機系統(tǒng)制定了EPA“能源之星”條件。一臺計算機可以標以“EPA能源之星”標簽,如果它具有功耗少于30瓦的工作模式,或者監(jiān)視器功耗少于30瓦,或者計算機和監(jiān)視器的功耗各少于30瓦。EPA和各廠家的“諒解備忘錄”陳述了這個功率要求。通常臺式計算機不是按這些能力設計的。
因此希望提供能滿足“綠色”標準的臺式計算機。
同時還希望考慮能源節(jié)約形式的計算機系統(tǒng)是連網(wǎng)的還是不連網(wǎng)的。
當計算機接通電源時,它們通常通過“引導”過程。當計算機引導時,它首先執(zhí)行通電自檢(POST),其包括運行不同的測試來保證計算機功能正常。在執(zhí)行POST之后,計算機通常裝入操作系統(tǒng)(OS),比如IBM的PC-DOS。在裝入OS后,許多計算機裝入圖形用戶接口(GUI),比如微軟公司的Windows。然后,用戶必須打開應用軟件而且裝入工作文件。這個整個過程需要相當?shù)臅r間—在一些情況下達數(shù)分鐘。
盡管用戶等待計算機系統(tǒng)進行引導、裝入OS、裝入GUI和裝入應用軟件的幾分鐘仿佛不象許多時間,但是這段時間是非生產(chǎn)性的和使人煩惱的;而且這段時間使得通過關閉計算機來節(jié)省能源成為非常不方便,實際上阻止用戶節(jié)約能源,也即,這種使用代價使得人工功率管理方案成為不現(xiàn)實。
因此希望提供一種具有功率管理能力又不帶來明顯的使用代價的臺式計算機系統(tǒng)。也就是希望提供一種計算機系統(tǒng),它具有能源節(jié)省方式,并且以后能在可接受的時間內(nèi)得到恢復,這個可接受的時間在任何情況下都短于再啟動計算機系統(tǒng)所需的時間。
偶而,當一個應用程序正在計算機上執(zhí)行時,用戶可能放任不管臺式計算機。例如,當用戶正在同時使用字處理程序和棋盤式分析表程序編寫銷售報告時,電話響了或用戶召離辦公桌,計算機將會繼續(xù)執(zhí)行應用軟件。任何有效的功率管理方法應該能夠節(jié)約能源,并且同時防止用戶丟失數(shù)據(jù)。例如,在執(zhí)行應用程序的中間,如果計算機自己掉電,將會丟失數(shù)據(jù)。而且,目前的應用軟件不能自動地保留它們的數(shù)據(jù)以便在中斷處恢復運行。
因此希望提供一種可以使正在執(zhí)行應用程序的系統(tǒng)進入功率節(jié)省方式的計算機系統(tǒng)。并且進而希望這種功率節(jié)省方式對應用軟件是透明的。
有時臺式計算機的用戶可能知道是否這臺系統(tǒng)在一段時間內(nèi)不再需要。希望允許用戶能夠手動地使得計算機進行功率節(jié)省方式以節(jié)省計算機可能使用的能源,同時等待足夠長的空閑時間再做出決定,保證進入能源節(jié)省方式。
因此,希望允許用戶可手動地使得臺式計算機進入功率節(jié)省方式,無須首先從應用程序退出,并且能夠恢復使用應用程序,仿佛計算機未曾關掉過。
典型的便攜式計算機具有控制通向計算機電源的開關,還具有實現(xiàn)暫停/恢復功能的開關。這可能引起用戶的困惑并增加便攜式的成本和復雜性。因此,希望提供一種具有上述功率節(jié)省能力又不采用多個按鈕的臺式計算機系統(tǒng)。
根據(jù)本發(fā)明,在暫停進程中計算機系統(tǒng)的狀態(tài)被保留在系統(tǒng)硬盤機上。此外,電源對系統(tǒng)功率的調(diào)節(jié)受CPU控制。
在保留系統(tǒng)狀態(tài)時首先將CPU上當前執(zhí)行的任何代碼加以中斷。接著對系統(tǒng)狀態(tài)給予確認。其次,將計算機系統(tǒng)的狀態(tài)寫到系統(tǒng)硬盤機上。在計算機系統(tǒng)狀態(tài)安全地存儲到硬盤機上后,CPU使電源停止供給穩(wěn)壓系統(tǒng)功率。然而停止系統(tǒng)功率后并不會影響存儲在硬盤機上的被保留的系統(tǒng)數(shù)據(jù),因為一旦數(shù)據(jù)寫入硬盤機,實際上該數(shù)據(jù)即可永久存儲起來。
計算機系統(tǒng)的狀態(tài)能在幾小時、幾天、幾周、幾月或幾年的時間內(nèi)一直存儲在硬盤機上。
在恢復計算機系統(tǒng)狀態(tài)時,首先由電源再一次供給穩(wěn)壓系統(tǒng)功率。接著從硬盤機上讀出計算機系統(tǒng)狀態(tài),同時將其值裝入它們適當?shù)牡攸c。例如,寄存器數(shù)據(jù)寫回至寄存器,視頻圖象數(shù)據(jù)寫回至視頻存儲器,CPU寄存器數(shù)據(jù)寫回至CPU,等等。其次,由操作系統(tǒng)更新任何過時的系統(tǒng)狀態(tài)值。例如,系統(tǒng)時鐘必須設至合適時間。最后,當系統(tǒng)被中斷時在CPU上執(zhí)行的代碼如此加以恢復,以使代碼實際上不受暫停/恢復進程的影響。
人們相信,暫停到硬盤和恢復的進程能為用戶節(jié)省不少時間,因為暫停和恢復操作是很快的;在8兆字節(jié)的系統(tǒng)RAM和1兆字節(jié)的視頻存儲器的配置下,暫停這個系統(tǒng)約需8秒,恢復同樣的系統(tǒng)只需大約15秒。同樣的系統(tǒng)從BIOS進行引導、裝載操作系統(tǒng)、裝載圖形用戶接口、裝載任何應用程序、和打開任何應用文件,這些操作約需100秒。時間的節(jié)省是明顯的。
還有,如果用戶在系統(tǒng)上同時執(zhí)行大量應用程序(如字處理應用程序,棋盤式分析表應用程序,數(shù)據(jù)庫應用程序,傳真應用程序,日歷應用程序,等等),形成所謂“雜亂的臺式機”,則更能大量節(jié)省時間。如果沒有本發(fā)明的暫停/恢復能力,則重新裝載同樣的“雜亂的臺式機”可能需要幾分鐘。如果具有暫停/恢復能力,則不論該臺式機如何“雜亂”,系統(tǒng)約需8秒鐘暫停和15秒鐘恢復。
計算機系統(tǒng)設計為具有四種狀態(tài)常規(guī)運行狀態(tài)、備用狀態(tài)、暫停狀態(tài)和斷電狀態(tài)。
本發(fā)明的計算機系統(tǒng)的常規(guī)運行狀態(tài)實際上等同于任何普通臺式計算機的常規(guī)運行狀態(tài)。用戶可使用應用程序并且基本上象對待其它計算機那樣對待本計算機。一個差別是存在一個功率管理驅(qū)動程序,它在后臺運行(在BIOS和操作系統(tǒng)上),對用戶是透明的。操作系統(tǒng)(OS)上的功率管理驅(qū)動程序部分是由Intel和Microsoft寫上的先進功率管理(APM)預編程接口,它現(xiàn)在被寫在大部分操作系統(tǒng)上以運行在Intel的80×86處理機族上。在BIOS上的功率管理驅(qū)動程序部分(APM BIOS)和本發(fā)明是相同的,并和APM OS驅(qū)動程序通信。APM OS驅(qū)動程序和APM BIOS例行程序一起控制計算機轉(zhuǎn)換入和轉(zhuǎn)換出其它三個狀態(tài)。
第二個狀態(tài),備用狀態(tài)使用少于常規(guī)運行狀態(tài)的功率,并許可任何應用程序進行執(zhí)行,如它們在其它情況下也要執(zhí)行一樣。一般,備用狀態(tài)的能源節(jié)省是通過把設備置于它們各自的低功率狀態(tài)來達到的。例如,在備用狀態(tài)下通過停止硬驅(qū)動器里固定磁盤的旋轉(zhuǎn)和通過停止生成視頻信號節(jié)約能源。
第三個狀態(tài)是暫停狀態(tài)。在暫停狀態(tài)下,計算機系統(tǒng)消耗非常少的功率。暫停的計算機消耗來自墻上電源插座上非常少的電能。唯一消耗的能量是來自計算機系統(tǒng)內(nèi)部電池上用來維持開關電路的微弱電能(當系統(tǒng)沒有插在墻上電源插座里時)或者是來自電源的微弱電能(當系統(tǒng)插上時)。
這種小功率使用是通過在把電源“關掉”前把計算機系統(tǒng)的狀態(tài)存入固定磁盤存儲設備實現(xiàn)的。為進入暫停狀態(tài),計算機系統(tǒng)中斷任何執(zhí)行中的代碼,并把對計算機的控制轉(zhuǎn)移給功率管理驅(qū)動程序。功率管理驅(qū)動程序查明計算機系統(tǒng)的狀態(tài),把計算機系統(tǒng)的狀態(tài)寫入固定磁盤存儲設備。CPU寄存器、CPU高速緩存、系統(tǒng)存儲器、系統(tǒng)高速緩存、視頻寄存器、視頻存儲器和其它設備寄存器的所有狀態(tài)都被寫進固定磁盤。系統(tǒng)的整個狀態(tài)是按這種方式保留的,即它可在不使應用程序或其他執(zhí)行代碼受到中斷的影響下得到復原。計算機然后把數(shù)據(jù)寫進非易失CMOS存儲器里表明系統(tǒng)被暫停。最后,計算機使得電源停止產(chǎn)生功率。計算機的整個狀態(tài)安全地保留在固定磁盤存儲設備里,系統(tǒng)電源現(xiàn)在被“關掉”,計算機現(xiàn)在僅從電源接收對開關電路供電的微弱穩(wěn)定功率。
暫停狀態(tài)對計算機系統(tǒng)是理想的,它可把所有的系統(tǒng)電源去掉,不會產(chǎn)生有害的后果??蓮臄嚯姞顟B(tài)恢復的不連網(wǎng)的和連網(wǎng)的計算機通常將是處于暫停狀態(tài)的。
第四個和最后的狀態(tài)是斷電狀態(tài)。在這個狀態(tài)下,電源停止向計算機系統(tǒng)提供穩(wěn)壓功率,但是計算機系統(tǒng)的狀態(tài)不被保留在固定磁盤里。斷電狀態(tài)實際上和以通常方式關掉的一般臺式計算機是完全一樣的。
從一個狀態(tài)到另一個狀態(tài)的切換是由功率管理驅(qū)動程序處理的,切換基本上取決于一個開關的閉合結果、一個信號器和兩個定時器不活動備用定時器和不活動暫停定時器。兩個定時器都計算何時沒有用戶活動,如鍵盤上鍵被按下、鼠標器移動、鼠標器按鈕被按下或硬盤驅(qū)動器活動。如上面概述的,當不活動備用定時器期滿,系統(tǒng)進入備用狀態(tài)。如上面概述的,當不活動暫停定時器期滿,系統(tǒng)進入暫停狀態(tài)。
通常,對不活動暫停定時器設置的時間周期會長于不活動備用定時器的時間周期。這樣,計算機一般首先從常規(guī)運行狀態(tài)改變到備用狀態(tài)。然后,再經(jīng)過另一個不活動周期,計算機系統(tǒng)將進入暫停狀態(tài)。不容許暫停狀態(tài)的連網(wǎng)系統(tǒng)的用戶可以選擇性地設置不活動暫停定時器使它永遠不會期滿。
任何用戶活動重新設置兩個不活動定時器,這就防止在用戶運用系統(tǒng)的同時計算機進入備用狀態(tài)或暫停狀態(tài)中的一個。
如果系統(tǒng)處于備用狀態(tài),當用戶移動鼠標器或接觸鍵盤上的鍵,系統(tǒng)脫離備用狀態(tài)并改變到常規(guī)運行狀態(tài)。這樣做時,視頻驅(qū)動器開始重新產(chǎn)生視頻信號,固定磁盤開始重新旋轉(zhuǎn)。但是,如果系統(tǒng)處于暫停狀態(tài),而用戶移動鼠標器或接觸鍵盤的鍵,系統(tǒng)將不會自動地變化到常規(guī)運行狀態(tài)。
系統(tǒng)具有單個功率按鈕。這個按鈕可以用來接通計算機系統(tǒng)、暫停系統(tǒng)的狀態(tài)、復原系統(tǒng)的狀態(tài)和關掉系統(tǒng)電源。如果計算機處于常規(guī)運行狀態(tài)或備用狀態(tài),當用戶按下按鈕時,取決于標志的值,計算機將變化到暫停狀態(tài)或者變化到斷電狀態(tài)。如果標志指示當按鈕按下時系統(tǒng)應該暫停,系統(tǒng)將開始暫停工作,并且最終進入暫停狀態(tài)。如果標志指示當按鈕按下時系統(tǒng)只應該關閉,計算機僅僅會進入斷電狀態(tài)。標志可由用戶控制。在常規(guī)運行狀態(tài)下,當按鈕按下時,只有用戶可以確定系統(tǒng)應該暫停還是斷電。同時,當在操作系統(tǒng)上沒有功率管理驅(qū)動程序時,這個開關將如一個簡單的電源通/斷開關那樣運行。
如果計算機系統(tǒng)處于斷電狀態(tài),當按下功率開關時,系統(tǒng)將按常規(guī)方式啟動。如果計算機系統(tǒng)處于暫停狀態(tài)而功率開關被按下,然后操作員給出一個選擇或者按常規(guī)做法啟動系統(tǒng),或者把系統(tǒng)復原到它被暫停前的原來狀態(tài)。很明顯,如果用戶在使用應用程序時暫停系統(tǒng),用戶將可能希望復原計算機系統(tǒng)的狀態(tài)。當然,如果出于某些原因用戶希望重新啟動計算機并丟失暫停的系統(tǒng)狀態(tài),這種選擇是允許的。
當從暫停狀態(tài)變化到常規(guī)運行狀態(tài)時,系統(tǒng)應該這樣復原計算機系統(tǒng)的狀態(tài),使得應用程序不受到中斷的影響。CPU寄存器、CPU高速緩沖、系統(tǒng)存儲器、系統(tǒng)高速緩沖、視頻寄存器和視頻存儲器的狀態(tài)都應該從固定磁盤中讀出。系統(tǒng)的全部狀態(tài)應該被復原以允許應用可在被中斷處繼續(xù)進行。
暫停/恢復的使用比起通過關閉系統(tǒng)電源以節(jié)約能源并再接通系統(tǒng)可以大大節(jié)約時間。
而且備用電平和暫停電平兩者都滿足EPA的對“綠色”計算機的能源之星條件。
本發(fā)明的這些和其它優(yōu)點通過對本發(fā)明的詳細說明會變得更加清楚。
在本說明書附帶的并作為本發(fā)明書組成部分的附圖里本發(fā)明的實施例得到解釋,實施例和上面給出的對本發(fā)明的概述及下面給出的詳細說明一起用來舉例說明本發(fā)明的原理。
圖1是體現(xiàn)本發(fā)明的個人計算機的透視圖2是圖1個人計算機某些元件的分解透視圖,包括機箱、罩、機電直接存取存儲設備和平面板,并表示這些元件間的某些關系;圖3是圖1和圖2中個人計算機某些元件的方塊圖;圖4是本發(fā)明的計算機系統(tǒng)的狀態(tài)圖,顯示四種系統(tǒng)狀態(tài)正常、備用、暫停和斷電;圖5是一個方塊圖,表示電源的有關部分;圖6是為實現(xiàn)本發(fā)明的單開關暫停/恢復功能的所需硬件的電原理圖,并表示與其它圖的不同接口;圖7是圖6中所示可編程陣列邏輯(PAL)設備U2的一個狀態(tài)機的狀態(tài)圖;圖8是一個流程圖,一般地表示本發(fā)明的加電程序;圖9是一個流程圖,詳細說明由APM大約每秒調(diào)用一次的監(jiān)督程序;圖10是一個流程圖,說明本發(fā)明的暫停程序的細節(jié);圖11是一個流程圖,說明本發(fā)明的引導程序的細節(jié);圖12是一個流程圖,說明本發(fā)明的恢復程序的細節(jié);圖13是一個流程圖,說明本發(fā)明的保留CPU狀態(tài)程序的細節(jié);圖14是一個流程圖,說明本發(fā)明的復原CPU狀態(tài)程序的細節(jié);以及圖15是一個流程圖,說明本發(fā)明的保留8959狀態(tài)程序的細節(jié)。
當在下文中通過參照表示本發(fā)明最佳實施例的附圖,本發(fā)明將得到更全面的描述時,在下述說明的開端處就應該理解到,只要仍可達到本發(fā)明的有利結果,熟悉有關技術的人可以修改這里所描述的發(fā)明。相應地,下述的說明認為是對熟悉有關技術的人是一種概括性的、教學性的公開,而不是對本發(fā)明的限制。本發(fā)明涉及到對計算機系統(tǒng)的完整的設計、包括但不限于計算機體系結構設計、數(shù)字設計、BIOS設計。保護方式80486代碼設計、應用程序代碼設計、操作系統(tǒng)代碼設計和先進功率管理預先編程接口應用等方面。本應用是寫給非常熟悉計算機系統(tǒng)設計的各個方面的人的。
現(xiàn)在更具體地參考附圖,在那里顯示包括本發(fā)明的微機系統(tǒng),其籠統(tǒng)地用10指示(圖1)。如上文中提到過的,計算機10可以包括相關的監(jiān)視器11、鍵盤12、鼠標器13和打印機或繪圖機14。計算機10有一個罩15,罩由裝璜外表面構件16(圖2)和內(nèi)屏蔽構件18組成,內(nèi)屏蔽構件18和機箱19確定一個封閉的和屏蔽的體積,用來安裝用于處理和存儲數(shù)字數(shù)據(jù)的以電為動力的數(shù)據(jù)處理和存儲部件。至少某些這些部件安裝在一塊多層平面20或母板上,其安裝在機箱19上并提供一種裝置把計算機的部件在電氣上連接起來,這些部件包括上面確定的部件還包括其它有關的部件如軟盤驅(qū)動器、不同形式的直接存取存儲設備、輔助卡或板和類似物。如下文中更充分地指出那樣,在平面上采取措施以提供來往于微機操作部件的輸入/輸出信號的通道。
計算機系統(tǒng)具有電源17和電源按鈕21,即下文中的開關21。和普通系統(tǒng)里的常用電源開關不同,電源按鈕不切換進出于電源17的非穩(wěn)壓線功率,這將在下面得到解釋。機箱具有在22處標明的底座、在24處標明的前面板和在25處標明的后面板(圖2)。前面板至少劃定一個開槽(在圖示的形狀里,有四個開槽),用以安裝數(shù)據(jù)存儲設備,諸如用于磁盤或光盤的磁盤驅(qū)動器、磁帶后備機或類似物。在圖示的形狀里,準備了一對上槽26、28和一對下槽29、30。一個上槽26適用于安裝首要尺寸(如所知的3.5英寸驅(qū)動器)的外圍設備驅(qū)動器,另一個上槽28適用于安裝從兩種尺寸(如3.5或5.25英寸)中選出的一種尺寸的驅(qū)動器,兩個下槽適用于容納一種尺寸(3.5英寸)的驅(qū)動器。在圖1的27處標明的軟盤機是一種可移動媒體直接存取存儲設備,如眾所周知,它可容納插到其中的軟盤片并利用軟盤片接收、存貯和發(fā)送數(shù)據(jù)。硬盤機標明在31處,它是固定媒體直接存取存儲設備,如眾所周知,可以存儲和發(fā)送數(shù)據(jù)。
在涉及到本發(fā)明的上述結構之前,可能值得一般性概括地回顧個人計算機系統(tǒng)的操作。參照圖3,它表示一個個人計算機系統(tǒng)的方塊圖,說明比如按照本發(fā)明的系統(tǒng)10的計算機系統(tǒng)的各種部件,包括安裝在平面20上的部件、該平面和I/O槽的連接和個人計算機系統(tǒng)的其它硬件。和平面相連的是由微處理機構成的系統(tǒng)處理機40,即CPU40,它通過高速CPU本地總線42和存儲器控制器46連接,其進而連接到易失隨機存取存儲器(RAM)53。存儲器控制器46由存儲控制器48、地址多路轉(zhuǎn)換器50和數(shù)據(jù)緩沖器52組成。存儲器控制器46進而和由4個RAM模塊54代表的隨機存取存儲器53連接。存儲器控制器48包括把來往于微處理機40的地址變換到RAM53的特定區(qū)域的邏輯。這個邏輯被用來回收以前由BIOS占用的RAM。由存儲器控制器48產(chǎn)生的還有ROM選擇信號(ROM-SEL),它被用來允許或禁止ROM88。盡管任何合適的微處理機都可用作系統(tǒng)處理機40,一種適當?shù)奈⑻幚頇C是INTEL出售的80486。Intel 80486具有一個內(nèi)部高速緩存,這樣,任何是Intel 80486的CPU40將具有CPU高速緩存41。
盡管下文中本發(fā)明是特別參照圖3的系統(tǒng)方塊圖說明的,在下面說明的開端應該理解到,這點是可預料的,即按照本發(fā)明的裝置和方法可以用于其它平面插件的硬件配置。例如,系統(tǒng)處理機40可以是Intel 80286或80386微處理機。如在本文中所采用的,提及80286、80386或80486,一般意味著從Intel得到的微處理機。但是,近來其它廠家已研制出能夠執(zhí)行Intel X86體系結構指令集的微處理機,所提到的這些術語的使用意味著包括能夠執(zhí)行該指令集的任何微處理機。如適當領域中熟悉技術的人所知曉的那樣,早期的個人計算機在當時一般使用流行的Intel 8088或8086微處理機作為系統(tǒng)處理機。這些處理機具有1兆字節(jié)存儲地址的能力。近年來,個人計算機通常采用高速的Intel 80286、80386和80486微處理機,它們可運行在虛擬方式和實址方式下來仿真較慢速的8086微處理機,或者運行在保護方式下,這種保護方式把某些型號的尋址范圍從1兆字節(jié)擴充到4吉(GB)字節(jié)。本質(zhì)上,80286、80386和80486處理機的實址方式特性提供對寫入到8086和8088微處理機的軟件的硬件兼容性。在Intel家族里所敘述的處理機經(jīng)常由三位數(shù)字辨別,即只用全類型標號的后三位數(shù)字來注明,如“486”。
現(xiàn)回到圖3,CPU本地總線42(包括數(shù)據(jù)、地址和控制部件)保證微處理機40,數(shù)字協(xié)處理器44、視頻控制器56、系統(tǒng)高速緩沖存儲器60和高速緩存控制器62的連接。視頻控制器56具有和它聯(lián)結的監(jiān)視器(或視頻顯示終端)57和視頻存儲器58。和CPU本地總線連接的還有緩沖器64。緩沖器64本身和速度較慢(和CPU本地總線42相比)的系統(tǒng)總線66連接,系統(tǒng)總線也包括地址、數(shù)據(jù)和控制部件。系統(tǒng)總線66在緩沖器64和一個更遠的緩沖器68之間延伸。系統(tǒng)總線66進一步和總線控制及定時裝置70和DMA單元71連接。DMA單元71由中央仲裁器82和DMA控制器72組成。輔助緩沖器74提供系統(tǒng)總線66和一個任選功能總線如工業(yè)標準體系結構(ISA)總線76之間的接口。多個I/O槽78和總線76連接,以容納ISA適配器卡(圖中未示)。ISA適配器卡可插入地和I/O槽78連接,并可為系統(tǒng)10提供附加的I/O設備和存儲器。
仲裁控制總線80把DMA控制器72和中央仲裁器82與I/O槽78、軟盤適配器84和綜合驅(qū)動電子(IDE)固定磁盤控制器86連接起來。
盡管微計算機系統(tǒng)10表明帶有基本的4兆字節(jié)RAM模塊53,但可以理解,即如圖3所示通過增加任選的更高密度存儲模塊54可以互連更多的存儲器。僅出于說明的緣故,本發(fā)明是參照基本的四兆字節(jié)存儲模塊描述的。
在系統(tǒng)總線66和平面I/O總線90之間連接著鎖存緩沖器68。平面I/O總線分別包括地址、數(shù)據(jù)和控制部件。沿平面I/O總線90連接不同的I/O適配器和其它部件,如軟盤適配器84、IDE磁盤適配器86、中斷控制器92、RS-232適配器94、非易失性CMOSRAM96,在本文中也稱為NVRAM、CMOS實時時鐘98、并行適配器100、多個定時器102、只讀存儲器(ROM)88、8042 104和功率管理電路106。在104處表示的8042是從屬處理機,它和鍵盤12和鼠標器13接口。功率管理電路106示于圖6中,并在和圖6及圖7相應的文字段落中得到更詳細的說明。只讀存儲器88包括BIOS,它用作為I/O設備和微處理機40操作系統(tǒng)之間的接口。存儲在ROM88里的BIOS可復制到RAM53里以減少BIOS的執(zhí)行時間。ROM88還進而對存儲器控制器48作出響應(通過ROMSEL信號)。如果存儲器控制器48允許ROM88工作,BIOS的執(zhí)行出自ROM。如果存儲器控制器48禁止ROM88工作,則ROM不對來自微處理機40的地址請求作出響應(即BIOS的執(zhí)行出自RAM)。
實時時鐘98用于計算時刻,而NVRAM96用來存儲系統(tǒng)配置數(shù)據(jù)。也就是說,NVRAM96將含有描述系統(tǒng)現(xiàn)在配置狀況的值。例如,NVRAM96含有說明固定磁盤或軟盤片的容量、顯示器的類型、存儲器的總量、時間、日期等信息。特別重要的是,NVRAM將含有一種數(shù)據(jù)(可以是一位),它被存儲器控制器48用來確定BIOS是來自ROM還是來自RAM,并確定是否收回指定給BIOSRAM使用的RAM。而且,只要特定的配置程序,如SET配置程序,在執(zhí)行時,這些數(shù)據(jù)都存儲到NVRAM里。SET配置程序的目的是把說明系統(tǒng)配置的值存入NVRAM。
幾乎所有上述設備都含有易失寄存器。為避免附圖不必要的混亂,特定設備的寄存器將用該設備來參照。例如,CPU寄存器參照為CPU40寄存器,而視頻控制器寄存器將參照為視頻控制器56寄存器。
如上文中所提及的那樣,計算機具有一般標明在15處的罩,罩和機箱19一起確定一個封閉的和屏蔽的體積,用來容納上面確定的微機部件。罩最好由一個用可塑合成材料制成的整體模塑外表面裝璜罩構件16和一個與裝璜罩構件外形相配合的金屬薄層內(nèi)襯18所組成。當然,罩可用其它周知的方式制成,而本發(fā)明的實現(xiàn)并不限制于所述的類型。
運行狀態(tài)現(xiàn)參照圖4,其中表示本發(fā)明計算機系統(tǒng)的狀態(tài)圖。本發(fā)明的計算機系統(tǒng)10具有四個狀態(tài)常規(guī)運行狀態(tài)150、備用狀態(tài)152、暫停狀態(tài)154和斷電狀態(tài)156。圖4中所示各狀態(tài)間的轉(zhuǎn)換意味著對最佳實施例是描述性的而不是限制性的。因此,可替代地使用其它可導致狀態(tài)轉(zhuǎn)換的附加事件。
本發(fā)明的計算機系統(tǒng)10的常規(guī)運行狀態(tài)150實際上和任何普通的臺式計算機的常規(guī)運行狀態(tài)完全相同。用戶可以使用應用程序,基本上像對待其它計算機那樣來對待本計算機。一種對用戶透明的差異是存在操作系統(tǒng)上的功率管理驅(qū)動程序(“APM OS驅(qū)動程序”),其在后臺上運行,以及存在不同的APM BIOS程序。APMBIOS程序?qū)⒃诤竺娴奈恼轮杏懻?,它們包括暫停程序、恢復程序、導引程序、監(jiān)督程序、保留CPU狀態(tài)程序和復原CPU狀態(tài)程序。在所有的圖中都沒有顯示的一個APM BIOS程序是APMBIOS路由程序。APM BIOS路由程序本質(zhì)上接收APM OS驅(qū)動程序的命令并調(diào)用適當?shù)腁PM BIOS程序。例如,當APMOS驅(qū)動程序發(fā)出暫停命令時,APM BIOS路由程序調(diào)用暫停程序。作為另一個例子,只要APM OS驅(qū)動程序發(fā)出取得事件命令,APM BIOS路由程序調(diào)用監(jiān)督程序。這些程序位于BIOS上,當BIOS被遮蔽時它們也被遮蔽。在OS上的功率管理驅(qū)動程序和APM BIOS程序控制計算機在這四個狀態(tài)間的轉(zhuǎn)換。字“APM”本身一般含意為APM OS驅(qū)動程序,盡管其內(nèi)容可另外確定。
第二個狀態(tài),備用狀態(tài)152,使用比常規(guī)運行狀態(tài)150少的電功率,并且仍然許可任何應用程序處于在其它情況下它會執(zhí)行的執(zhí)行狀態(tài)下。通常在備用狀態(tài)152下通過用代碼把設備置于各自的低功率方式來節(jié)省功率。在最佳實施例中,在備用狀態(tài)152下電能的節(jié)約是通過停止固定磁盤存儲設備31的固定磁盤(圖中未示)的旋轉(zhuǎn)和停止產(chǎn)生視頻信號來達到的,在下面將對此作出更全面的解釋。但是,這些是不受限制的,還可采取其它節(jié)約能源的方法,如減慢或停止CPU時鐘。
在最佳實施例中,電能是按兩種分開的方式節(jié)省的。首先,在常規(guī)運行狀態(tài)150下,固定磁盤存儲設備31里的固定磁盤通常按3600轉(zhuǎn)/分(PRM)的恒速旋轉(zhuǎn)。在備用狀態(tài)152下,IDE磁盤控制器86發(fā)出命令,使得固定磁盤存儲設備31進入低功率方式(固定磁盤存儲設備31內(nèi)的固定磁盤停止旋轉(zhuǎn)),這樣節(jié)約固定磁盤存儲設備31內(nèi)的馬達(圖中未示)帶動固定磁盤時所消耗的能量。
其次,在常規(guī)運行狀態(tài)150下,計算機系統(tǒng)的視頻控制器56不停地產(chǎn)生視頻信號(如技術上熟知的HSYNC、VSYNC、R、G、B等),這些信號和在視頻顯示終端57上所看到的圖象相對應。在備用狀態(tài)152下,視頻控制器56停止產(chǎn)生視頻信號,這樣節(jié)約由視頻控制器56通常所消耗的電能。HSYNC、VSYNC、R、G和B信號都被驅(qū)動到約為直流0.00伏。使用VESA(視頻電子標準協(xié)會)類型監(jiān)視器允許進一步節(jié)約能源,因為當HSYNC和VSYNC大約為0.00伏時VESA類型監(jiān)視器自己會關閉。
注意某些系統(tǒng)具有“屏幕節(jié)省器”,它使得屏幕57變暗以防止視頻顯示終端前表面熒光物質(zhì)的燒毀。在大多數(shù)這種系統(tǒng)中,視頻控制器56仍舊產(chǎn)生視頻信號;它只產(chǎn)生對應于暗色屏幕或動態(tài)顯示的視頻信號。這樣,運行屏幕節(jié)省器的計算機系統(tǒng)仍舊消耗產(chǎn)生視頻信號所需的電能。
第三種狀態(tài)是暫停狀態(tài)154。在暫停狀態(tài)154下,計算機系統(tǒng)消耗非常小量的電能。在最佳實施例中暫停狀態(tài)計算機消耗來自墻上插座小于5瓦的電能。僅需消耗的功率來自電源17的AUX5輸出或者來自計算機系統(tǒng)內(nèi)部的電池171,它是用來監(jiān)視開關21的微弱功率,對此將在下面伴隨圖5的文字段落中得到更完整的說明。
把計算機系統(tǒng)的狀態(tài)在電源關閉以前保留到固定磁盤存儲設備(硬驅(qū)動機)31里,就可以只使用少量電能。為進入暫停狀態(tài)154,CPU中斷任何應用程序并把CPU的程序執(zhí)行控制轉(zhuǎn)交給功率管理驅(qū)動程序。功率管理驅(qū)動程序確定計算機系統(tǒng)10的狀態(tài),并把計算機系統(tǒng)的整個狀態(tài)寫入固定磁盤存儲設備31。CPU40寄存器、CPU高速緩存41、系統(tǒng)RAM53、系統(tǒng)高速緩存器60、視頻控制器56寄存器、視頻存儲器58和其它易失寄存器的所有狀態(tài)都被寫入固定磁盤機31。系統(tǒng)10的整個狀態(tài)是按這種方式保留的,即不需付出明顯的使用代價即可得到復原。也就是說,用戶不需要如在常規(guī)下等待系統(tǒng)裝入操作系統(tǒng)和裝入圖形用戶接口。
然后計算機把數(shù)據(jù)寫進非易失的CMOS存儲器96指明系統(tǒng)處于暫停狀態(tài)。最后,CPU使得電源17停止提供穩(wěn)壓電源?,F(xiàn)在計算機系統(tǒng)10在把系統(tǒng)的整個狀態(tài)安全地保留在固定磁盤存儲設備31里情況下功率被降低。
在整個本文件中詞“狀態(tài)”用于兩種類似的,但可能會混淆的情況。設備可以“處于”一種特定的狀態(tài)。而四種系統(tǒng)狀態(tài)—常規(guī)150、備用152、暫停154和斷電156-指的是本發(fā)明的計算機系統(tǒng)10的概括性的狀態(tài)。這些“狀態(tài)”一般性地描述計算機系統(tǒng)10。例如,在常規(guī)運行狀態(tài)150的情況下,CPU仍然執(zhí)行代碼并不斷改變系統(tǒng)10里的許多寄存器。同樣、類似的活動出現(xiàn)在備用狀態(tài)152下。即,當系統(tǒng)10處于常規(guī)運行狀態(tài)150和暫停狀態(tài)152下時,計算機系統(tǒng)10的存儲器和寄存器的配置是動態(tài)的。
其它的設備也可以“處于”一定的狀態(tài)。可編程邏輯陣列U2可處于幾種狀態(tài)中,這將在和圖7相對應的文字段落中得到說明。
將上述的和一個設備“的狀態(tài)”加以對比,例如,“計算機系統(tǒng)10的狀態(tài)”或“CPU40的狀態(tài)”。一個設備“的狀態(tài)”指的是在某特定計算機周期時該設備的情況。所有存儲器單元和寄存器都將具有特定的二進制值。一個設備“的狀態(tài)”是對該設備內(nèi)容的靜態(tài)二進制寫照。
計算機系統(tǒng)10“的狀態(tài)”指的是操作上的等效而不必是準確的復制。例如,在狀態(tài)A下的計算機系統(tǒng)可能在CPU高速緩存41或系統(tǒng)高速緩存60中的一個中具有一定的存儲。有可能把各個高速緩存的內(nèi)容“沖瀉”回系統(tǒng)RAM53,并把計算機系統(tǒng)推進狀態(tài)B。純粹地講,在狀態(tài)A下的計算機系統(tǒng)的狀態(tài)不同于在狀態(tài)B下的計算機系統(tǒng)的狀態(tài),因為高速緩存和系統(tǒng)RAM的內(nèi)容是不同的。但是,從軟件操作的觀點出發(fā),狀態(tài)A和狀態(tài)B是相同的,因為,除了在系統(tǒng)速度的輕微下降(由于程序不具有在高速緩存上執(zhí)行所能得到的優(yōu)點而造成)外,該正在執(zhí)行的程序是不受到影響的。這樣,在狀態(tài)A下的計算機和狀態(tài)B下的計算機在軟件操作上是等效的,即使在高速緩存區(qū)域重新裝入有用的代碼之前那個高速緩存被沖瀉掉的計算機將在性能上遭受輕微的下降。
單詞“Power(功率)”也用于兩種類似的,但可能混淆的方法?!癙ower(功率)”在大多數(shù)下指的是電功率。但是,偶而“Power(功能)”還指計算能力。上下文應該使得預定的應用是清楚的。
“電路”一般指的是一個物理電子設備或者多個在電上互連的設備。但是,術語“電路”還意味著包含等效于物理電子設備的CPU代碼。例如,一方面,可以通過74LS00,或等效地,在可編程設備里實現(xiàn)二輸入的NAND(“與非”)門。這兩種設備都是物理電子設備。另一方面,還可以通過使CPU40從兩個CPU可讀輸入端口讀得兩個輸入,利用CPU命令產(chǎn)生NAND結果并且通過CPU可寫輸出端口輸出結果來實現(xiàn)NAND門。這些可和CPU接口的端口可以是簡單的,如譯碼鎖存,或者是等效的可編程設備,或者是復雜的,如技術中周知的PIA(外圍接口適配器)。“電路”意味著包括所有三種實現(xiàn)NAND門的例子。在某些情況下,“電路”可能僅僅指的是電氣通路。電氣通路的種類包括導線、追蹤器或通過印刷電路板,或者各種電氣通路種類的組合以形成單個電氣上連通的通路。
“信號”可以指的是一個單個的電氣波形或者多個波形。例如,視頻控制器產(chǎn)生視頻信號。視頻信號實際上是多個電氣導體上的多個信號如技術上周知的HSYNG、VSYNC、R、G、B等信號。
現(xiàn)回到圖4,第四個和最后的狀態(tài)是斷電狀態(tài)156。斷電狀態(tài)156實際上等同于在普通意義下被斷電的任何一般的計算機系統(tǒng)。在這個狀態(tài)下,電源17的初級/穩(wěn)壓單元172停止向計算機系統(tǒng)10提供穩(wěn)壓電源(除了通過AUX5的微弱穩(wěn)壓電源之外,這將在對應圖5的文字段落中得到更完整的說明),但是計算機系統(tǒng)10的狀態(tài)不保留在固定磁盤31里。暫停狀態(tài)154和斷電狀態(tài)156在下列意義上是相同的即電源17不再產(chǎn)生穩(wěn)壓功率。它們的不同點在于,在斷電狀態(tài)156下計算機系統(tǒng)10的狀態(tài)不保留在硬磁盤機31里,而在暫停狀態(tài)下計算機的狀態(tài)是保留的。而且,當脫離斷電狀態(tài)156時,計算機10“引導”就好象它被接通。也就是說,任何執(zhí)行代碼的啟動必須通過用戶或者自動地通過如AUTOEXEC.BAT文件的方法。但是,當脫離暫停狀態(tài)154時、計算機10在已中斷時所處在的位置處恢復執(zhí)行。
圖4還對使四個狀態(tài)轉(zhuǎn)換的事件進行一般性的概述。這些事件將在對應圖6到圖8的文字段落中得到進一步的說明;但是,一個粗略的說明可能是有用的。電源按鈕21,兩個定時器(不活動備用定時器和不活動暫停定時器,參見圖9及相應的文字段落)和一個進入暫停標志(見圖6和圖7和相應的文字段落)一起影響計算機應進入的狀態(tài)。一般地說,這兩個定時器可以是硬件或者是作為程序在CPU上執(zhí)行的CPU代碼定時器。在最佳實施例中,它們兩個都是CPU代碼定時器,從BIOS數(shù)據(jù)段上執(zhí)行。但是,這兩個定時器可設想成硬件定時器,這可以是一種更好的解決辦法,因為它可減少系統(tǒng)的開銷。在和圖9對應的文字段落里定時器得到更完全的說明。當計算機系統(tǒng)處于常規(guī)運行狀態(tài)150或備用狀態(tài)152中的一種狀態(tài)下時,兩個定時器都是活動的。定時器和其它程序通信,這樣兩個定時器中的一個的期滿引起如下面概述的轉(zhuǎn)換。各個或兩個定時器可以設置為在一定的時間周期后達到期滿,這個時間周期取決于用戶的特定需要。在最佳實施例中,不活動備用定時器和不活動暫停定時器可被設置為在15到90分鐘之后期滿。各個或兩個定時器可被停住,也就是設置為永不期滿?!巴W 倍〞r器可以采取實際上停止定時器遞增計數(shù)動作的方式,或者只要采取忽略它們到期的方式。在最佳實施例中,把定時器的期滿值設為零值使得定時器的期滿不會受到檢測。例如,連網(wǎng)計算機的用戶可能不希望計算機進入暫停狀態(tài)154,因為這樣做可以導致LAN對這個計算機失效。
在理論上,定時器可遞增計數(shù)或遞減計數(shù),可復位到固定的預先確定的狀態(tài),并且當定時器起動(或再起動)時,或者現(xiàn)在值可被使用時,以及可把一個差值或和值計算為終點期滿觸發(fā)沖量時,可以期待定時器對另一個固定的預先確定的狀態(tài)計數(shù)。在本最佳實施例中,當定時器復位時,來自實時時鐘98的分鐘變量的現(xiàn)有值被存儲起來。通過從保留的分鐘值減去現(xiàn)在分鐘值并和用戶所選擇的差值相比較,來檢查定時器是否期滿。
兩個定時器都受到某些系統(tǒng)活動的影響。例如,在最佳實施例中,以鍵盤12的鍵被按下、鼠標器13被移動、鼠標器13的按鈕被按下為形式的用戶活動,或者硬磁盤機的活動會使各個定時器重新啟動,這些會在和圖9有關的文字段落中得到更充分的說明;這樣,當用戶按鍵盤12的鍵或使用鼠標器13時,兩個定時器都不會期滿。另外其它的系統(tǒng)事件可用來復位定時器。任何硬件中斷可能替代地被監(jiān)視為活動。這樣,可能最好在打印時阻止系統(tǒng)進入暫停狀態(tài)154。
進入暫停標志是可編程邏輯陣列U2里的CPU可操縱的和可讀的鎖存器,U2將在和圖7相應的文字段落里得到更充分的說明。簡言之,如把可編程邏輯陣列U2置為一種方式時會導致按下開關21時系統(tǒng)10進入斷電狀態(tài)156,如果可編程邏輯陣列U2置為另一種方式,按下開關21時系統(tǒng)10進入暫停狀態(tài)154。如果計算機系統(tǒng)10處于常規(guī)運行狀態(tài)150,而寫入到可編程邏輯陣列U2的進入暫停標志為002,當按下功率按鈕21時,則計算機系統(tǒng)10進入斷電狀態(tài)156,如在158處所示。如果計算機系統(tǒng)為斷電狀態(tài)156而功率按鈕21被按下,然后計算機系統(tǒng)進入常規(guī)運行狀態(tài)。
如果計算機系統(tǒng)10處于常規(guī)運行狀態(tài)150,一種事件可以使得計算機進入備用狀態(tài)152如果不活動備用定時器期滿,計算機系統(tǒng)10將改變到備用狀態(tài)152,如在162處所示。當處于備用狀態(tài)152時,任何上面描述類型的系統(tǒng)活動將使得計算機10脫離備用狀態(tài)152,回到常規(guī)運行系統(tǒng)150,如在164處所示。
如果計算機10處于常規(guī)運行狀態(tài)150,兩種事件可以使它進入暫停狀態(tài)154。首先,如果不活動暫停定時器期滿,計算機系統(tǒng)10將改變到暫停狀態(tài)154,如在166處所示。其次,當寫入到可編程邏輯陣列U2的進入暫停標志為012時,通過按功率按扭21,用戶可以使得計算機10立即進入暫停狀態(tài)154,同樣如在166處所示。當處于暫停狀態(tài)154下時,通過按下功率按鈕21,用戶把它改變到常規(guī)運行狀態(tài)150,如在168處所示。
此處,在168處,可以代替地使用若干外部事件把系統(tǒng)10從暫停狀態(tài)154改變到常規(guī)運行狀態(tài)150。如,電話鈴聲檢測電路可以附加到圖6的電路上,并且設置為附屬電話線呼叫時可使系統(tǒng)10脫離暫停狀態(tài)154和進入常規(guī)運行狀態(tài)。這種修改對于接收遠程傳真數(shù)據(jù)或數(shù)字數(shù)據(jù)的系統(tǒng)可能是有用的。這種系統(tǒng)只在接收輸入信息時才消耗功率。類似地,實時時鐘和圖6間的接口可以代替地允許報警型事件使得系統(tǒng)10脫離暫停狀態(tài)154并進入常規(guī)運行運行150。這種系統(tǒng)可能在下述情況是有益的,即在每天的一定時間發(fā)送運程傳真式數(shù)字數(shù)據(jù)來得到較低電話費用的優(yōu)點。
最后,如果計算機系統(tǒng)10處于備用狀態(tài)152并且不活動暫停定時器期滿,則計算機10改變到暫停狀態(tài)154,如在170處所示。計算機系統(tǒng)不能夠從暫停狀態(tài)154回到備用狀態(tài)152,而只能轉(zhuǎn)換到常規(guī)運行狀態(tài)150,如在對應于轉(zhuǎn)換168的文字段落里所敘述的那樣。
很明顯,計算機系統(tǒng)10不能夠瞬時地改變狀態(tài)。每次從四種狀態(tài)的一種狀態(tài)下轉(zhuǎn)換出來時,將需要一定時間間隔以完成必要的系統(tǒng)改變。各個轉(zhuǎn)換時間的細節(jié)將在和圖6至圖15相對應的文字段落里給予說明。系統(tǒng)硬件在討論CPU40上代碼執(zhí)行的細節(jié)之前,首先討論實現(xiàn)四個狀態(tài)所需的硬件可能是有益的。圖5中表示電源17的方塊圖。電源17具有兩個單元控制器174和初級/穩(wěn)壓單元172。電源17有幾個輸入Line-In,其從普通的墻上插座接收115伏交流電;ON,其控制電源17的穩(wěn)壓操作。電源17有幾個輸出AC Line-Out,±12VDC,AUX5,GND和POWERGOOD。AC Line-Out是不穩(wěn)壓的115VCA,它一般輸送給視頻顯示終端57的電源輸入(圖中未示)。控制器174接收ON輸入并產(chǎn)生POWERGOOD輸出。初級/穩(wěn)壓單元172分別把來自Line-In輸入的115VAC調(diào)節(jié)為±5VDC,±12VDC。初級/穩(wěn)壓單元是否調(diào)節(jié)電能取決于控制器174接口的ON值。在最佳實施例中,控制器174應該提供對產(chǎn)生ON信號的電路隔離,例如,一個適當?shù)墓飧綦x器。
在技術上已熟知Line-In輸入和AC Line-out,±5VDC、±12VDC、GND和POWERGOOD輸出。當電源17“關掉”時,即不再從Line-In提供穩(wěn)壓電壓,POWERGOOD信號為邏輯ZERO。當電源17“接通”時,電源17從115VAC Line-In產(chǎn)生±5VDC和±12VDC穩(wěn)壓電壓。這四個穩(wěn)壓電壓和它們相應的GND(接地)是“系統(tǒng)功率”,這在技術上是普遍熟知的。當穩(wěn)壓電壓保持在可接受的容差范圍內(nèi)時,POWERGOOD信號改變?yōu)檫壿婳NE。
AUX5輸出對平面提供備用+5VDVC。當電源17插入到普通的提供額定115VAC的墻上插座時,不論電源“接通”或“關掉”,初級/穩(wěn)壓單元172在AUX5處提供額定的+5VDC。這樣,只要插上電,電源17總是在AUX5處提供額定的+5VDC。AUX5輸出和+5輸出的不同在于,只有當電源17處于“接通”時,初級/穩(wěn)壓單元才通過+5輸出端產(chǎn)生穩(wěn)壓的+5VDC。AUX5輸出和+5輸出的另一個不同點在于,在最佳實施例中,初級/穩(wěn)壓單元172通過該+5輸出端提供幾安培電流的+5VDC,而同時初級/穩(wěn)壓單元172通過AUX5輸出端提供少于一安培電源的+5VDC。
普通的現(xiàn)有電源使用高電流雙臂開關,以對Line-In輸入和電源的穩(wěn)定部分進行連接和切斷。本發(fā)明的電源17不使用高電流雙臂開關。反而,開關21控制著產(chǎn)生ON信號的電路。在最佳實施例中,開關21是一個瞬時單極、單臂按鈕或開關;但是熟悉技術的人可以修改圖6的電路以利用其它類型的開關如單極、雙臂開關。ACLine-In永遠和從墻上插座相連的初級/穩(wěn)壓單元172連接。當ON處于邏輯ONE時(AUX5近似地為額定+5VDC),初級/穩(wěn)壓單元172并不通過±5或者±12輸出端把15VAC Line-In調(diào)節(jié)到±5VDC或±12VDC。初級/穩(wěn)壓單元只提供AUX5輸出端的低電流額定+5VDC。另一方面,當ON為邏輯ZERO時(近似于GND),初級/穩(wěn)壓單元172通過四個±5和±12輸出端分別把115VAC Line-In調(diào)節(jié)到±5VDC和±12VDC。這樣,當ON為ONE時,電源17是“關掉”的,而當ON為ZERO時,電源17是“接通”的。
如果加以規(guī)定,具有AUX5輸出和ON輸入的電源,就象上面所描述的電源17那樣,可以從許多一般電源供應商處得到。
現(xiàn)參照圖6,它表示本發(fā)明的計算機系統(tǒng)10的電子電路的示意圖。圖6中的電路負責在開關21、電源17、視頻顯示終端和CPU40上執(zhí)行的代碼之間的接口。
該電路由三塊集成電路組成U1,第一預編程PAL16L8;U2,第二預編程PAL16L8;和U3,在技術上周知的74HC132。一般來講,PAL(可編程陣列邏輯)U1和U2在圖3的平面I/O總線90和圖6的其它電路之間接口。該電路還包括開關21、十個電阻器R1-R10、五個電容器C1-C5、四個N型MOSFET(金屬氧半導體場效應晶體管)Q1-Q4,它們是標準低電流金屬氧半導體場效應晶體管,在本最佳實施例中適合作為邏輯開關和一個雙二極管組CR1,它是一個標準低電流二極管組,在圖6中顯示了全部的配置和連接。電阻器R1-R10是 瓦電阻器,它們的阻值顯示在圖6中,范圍為±5%。電容器C1-C2是電解質(zhì)電容器,電容值如圖6所示,范圍為±10%。電容器C3-C5是0.1μF(±10%)的陶瓷電容器。
第一PAL U1與地址線SA(1)至SA(15)和AEN(地址允許)線連接。SA(1)至SA(15)和AEN是圖3所示的平面I/O總線90中的一部分。第一PAL U1被編程為只是一個地址譯碼器,當預先確定的地址出現(xiàn)在地址線SA(1)至SA(15)上并且AEN(地址允許)線有效時,產(chǎn)生一個低電平有效信號PM PORT DCD#。
第二PAL U2被編程為可提供一個可讀的字節(jié)和在上面提到的I/O端口的較低三位中提供三個可寫位,I/O端口還被稱為“功率管理端口”。第二PAL U2具有來自平面I/O總線90的八個輸入SD(0)、SD(1)、SD(2)、SA(0)、IOW#、IOR#、RESETDRV和IRQ(1)。通過由存儲器控制器46產(chǎn)生的,在技術上周知的、高電平有效信號RESETDRV輸入,第二PAL U2復位到已知的初始條件。在和圖7相應的文字段落里和表I和表II中,第二PAL U2得到更充分的描述。
第三個設備具有二個部分,這里標識為U3A和U3B,它們組成SR鎖存器,也被稱為NAND鎖存器,它在技術上是周知的。SR鎖存器把U3的引腳1和5作為輸入(引腳1為SET輸入而引腳5為RESET輸入)和把U3A的引腳3作為輸出。當兩個輸入都是邏輯ONE時,該輸出保持它的鎖存輸出值。如果SET置為邏輯ZERO,輸出變成邏輯ONE。如果SET輸入值返回到邏輯ONE,輸出鎖存在邏輯ONE上。如果RESET輸入置為邏輯ZERO,輸出變?yōu)檫壿媄ERO。如果RESET輸入值回到邏輯ONE,輸出鎖存在邏輯ZERO上。
如果POWERGOOR信號為邏輯ONE,其表明穩(wěn)壓電壓處于適當?shù)姆秶瑒t第三個設備的第三部分,在這里標識為U3C,充當為第二PAL U2引腳12輸出的反相器。如果POWERGOOD信號為邏輯ZERO,共表示VCC或者在接地電位附近搖擺或者從+5VDC向上或向下陡變,則第三個設備的第三部分引腳8的輸出保持為邏輯ONE,防止來自第二PAL U2管腳2的任何噪聲影響由第三個設備的第一和第二部分U3A和U3B建立的SR鎖存器。
開關21在JP1處和圖6的電路連接。電阻器/電容器子電路R2和C1將開關21的閉合事件加以消跳。第三個設備的第四部分U3D在引腳12通過R6被拉向VBAT(大約為+4.3VDC,而AUX5的額定值為+5VDC)時被設置為反相器,它倒置被消跳的開關閉合。限流電阻器R10防止從第三個設備的第四部分U3D的引腳11通過任何電流,當該設備加電或斷電時,該電流可能從第二PALU2的引腳8流入。
SR鎖存器應該永不斷電。但是,如果出現(xiàn)這種情況,R7和C3設計為把SR鎖存器置為通電狀態(tài),這樣當SR鎖存器重新供電時電源17將處于“斷電”狀態(tài)。
電阻器R1、R3、R4、R5、R6、R8和R9是上拉電阻器,把它們各自的線路拉到VCC、VBAT或AUX5中的一種。晶體管Q1、Q2、Q3和Q4是反相器。R4和C2組成RC對,使C2電位達到VCC前對C2充電。當?shù)诙AL U2的引腳19輸出為邏輯ONE時,晶體管Q5使電容器C2放電。當貯存在C2里電壓大約低于+2.7VDC時,Q1不導電而R3把第二PAL U2的引引11的輸入拉到VCC,使它為邏輯ONE。如果C2充電到約為+2.7VDC或更高,則Q1導電,把引腳11的輸入拉到GND,使它為邏輯ZERO。
當?shù)诙AL U2的引腳18的輸出為邏輯ZERO時,R8和R9分別把BLNK#和ESYNC線路拉到VCC。由于ESYNC和BLNK#線路處于VCC,視頻控制器56產(chǎn)生視頻信號。當?shù)诙AL U2的引腳18的輸出為邏輯ONE時,晶體管Q2和Q3通電,分別把BLNK#和ESYNC拉向GND,使得視頻控制器56停止產(chǎn)生視頻信號。
圖6所示的電子電路具有三個電源VCC、AUX5和VBAT。VCC和AUX5是由電源17供電的、額定為+5.0VDC。如技術上周知的那樣,VCC和它的相關GND返回線路穿過平面20上的主功率連接器(圖中未示)。AUX5在JP2的引腳1處和該電路連接。AUX5的回線進入并在JP2的引腳3處和GND線路連接。VBAT是電池171的功率輸出,額定為3.5VDC。電池171是一個鋰電池,它在技術上是周知的。
PAL U1和U2在和VCC相連的引腳20處具有它們的VCC輸入。另外,幾個電阻器R3、R4、R8和R9也和VCC連接。如在技術上周知的那樣,當電源“接通”并插在普通的提供額定115VAC的墻上的插座時,電源17只提供穩(wěn)壓+5VDC。這樣,當電源處于“關掉”或沒有插上電兩者中的一種情況時,PAL U1的U2以及R3、R4、R8和R9不接收+5VDC。
另一方面,只要電源17插進提供額定115VAC的普通墻上插座時,不論“接通”或“斷電”,電源17都在AUX5處提供穩(wěn)壓+5VDC。這樣,只要電源17被插上,那些和AUX5連接的設備接受+5VDC。
另外,U3和電阻器R1、R2和R6永遠接受電能,因為CR1的二極管以這種方式和VBAT的AUX5接口,即和VBAT連接的設備永遠接受功率。當插進普通的墻上插座時,電源17在AUX5處提供+5VDC而和VBAT連接的設備(U3和電阻器R1、R2及R6)接受約+4.3VDC(AUX5的+5VDC減去AUX5和VBAT之間CR1內(nèi)二極管的二極管壓降)。在不插進時,電源17停止對AUX5線路提供調(diào)節(jié)功率,U3和電阻器R1、R2及R6從VBAT接受功率。典型的74HC132需要+2.0VDC的最低DC電壓。這樣,只要VBAT保持足夠的可提供+2.0VDC的電荷,U3會得到有效供電。
圖6的電路可以具有一些代替的修改,而仍包括在本發(fā)明的范圍之內(nèi)。例如,實時時鐘98可在電氣上和圖6電路連接,并配置為對ON#信號二極管式的“或”操作,這樣在一天的特定時間,計算機系統(tǒng)10從暫停狀態(tài)154改變到常規(guī)運行狀態(tài)150。類似地,電話鈴聲檢測電路可替代地附加在圖6的電路上并配置為對ON#信號二極管式“或”操作,這樣相連的電話線路的呼叫可使系統(tǒng)10脫離暫停狀態(tài)154并進入常規(guī)運行狀態(tài)150。
回到參照圖6,第二PAL U2具有兩個狀態(tài)機。在圖7中顯示第二PAL U2的一個狀態(tài)機的狀態(tài)圖。表I和表II說明另一個狀態(tài)機及第二PAL U2的某些其它情況。
圖7表示第二PAL U2的一個狀態(tài)機。TE1和TE0一起許可四種狀態(tài)開關狀態(tài)002176、開關狀態(tài)012178、開關狀態(tài)112180和開關狀態(tài)102182。
TE1和TE0不是對第二PAL U2直接可寫的,相反,相應于開關21的閉合事件以及諸如復位計算機系統(tǒng)的其它事件,狀態(tài)會發(fā)生變化。在系統(tǒng)功率不由電源17提供的情況下,第二PAL U2不被供電,因此,它的狀態(tài)是無意義的,處于174。按下開關21和其它事件(如電話鈴聲檢測器使電源17提供系統(tǒng)功率)引起電源17開始提供系統(tǒng)功率,如在對應于圖6的文字段落里所描述的那樣。當開關21被按下或者RESETDRV信號有效時,第二PAL U2進入開關狀態(tài)002176。在釋放開關21或開關21不被按下的情況下RE-SETDRV變?yōu)闊o效時,將使第二PAL U2進入開關狀態(tài)012178。再次按下開關21時,將使第二PAL U2進入開關狀態(tài)112180。再次釋放開關21時,將使第二PAL U2進入開關狀態(tài)102182。開關21的連續(xù)閉合使得第二PAL U2循環(huán)通過這四個狀態(tài),如圖7中所示。當計算機系統(tǒng)處于常規(guī)運行狀態(tài)150時,第二PAL U2處于開關狀態(tài)012178。
狀態(tài)012178是對應于TE1、TE0狀態(tài)機常規(guī)通電狀態(tài)的開關狀態(tài)。在這個狀態(tài)下,應用程序?qū)?zhí)行。在這個狀態(tài)下,系統(tǒng)10可以進入或脫離備用狀態(tài)152。開關狀態(tài)012178還對應于用戶生成的暫停異常結束請求。開關狀態(tài)102是對應于用戶暫停請求的開關狀態(tài)。也就是說,從系統(tǒng)處于斷電狀態(tài)156開始,按下開關一次把計算機系統(tǒng)置于常規(guī)運行狀態(tài)150。再次按下開關產(chǎn)生暫停請求(在功率管理端口處為0FFH),它將由監(jiān)督程序讀出,監(jiān)督程序在和圖9對應文字段落里得到更充分的說明。在系統(tǒng)處于暫停狀態(tài)154之前,第三次按下開關21產(chǎn)生暫停異常結束請求(在功率管理端口處為0FEH),它將由監(jiān)督程序讀出。
表I增加對圖7四個狀態(tài)的一些注解。在處于開關狀態(tài)002176、012178和112180情況下,功率管理端口響應讀(操作)輸出OFFH。
表ITE1 TE0 注解0 0 清除顯示器消隱位功率管理端口的讀出=0FFH0 1 顯示器消隱位由SD(2)控制功率管理端口的讀出=0FFH1 1 顯示器消隱位由SD(2)控制功率管理端口的讀出=0FFH1 0 置位顯示器消隱位功率管理端口的讀出=0FEH另一方面,當處于開關狀態(tài)182時,功率管理端口響應一次讀操作,輸出0FEH。按下并釋放開關21時,第二PAL U2脫離開關狀態(tài)012并進入開關狀態(tài)102182,其標志硬件暫停請求。監(jiān)督程序通過讀功率管理端口察覺硬件暫停請求。對讀所作響應0FEH表示一次硬件暫停請求。
TE1、TE0狀態(tài)機還影響視頻消隱電路。在處于開關狀態(tài)002176情況下,顯示器消隱位被清除,使得視頻控制器產(chǎn)生視頻信號。在處于開關102182情況下,顯示器消隱位被置位,使得視頻控制器56停止產(chǎn)生視頻信號。當處于開關狀態(tài)012178和112180情況下,顯示器消隱位由對SD2的寫所控制,這將在下面解釋。
表II打表示第二PAL U2的另一個狀態(tài)機并且表示對SD2的寫如何影響視頻信號。
表IIS2 S1 S0 注解X00 當處于開關狀態(tài)102時,立即“關掉”電源X01 當處于開關狀態(tài)102時,啟動故障保險定時器(C2充電)X10 立即“關掉”電源X11 復位故障保險定時器(C2放電)0XX 接通視頻信號1XX 關掉視頻信號PAL里的U2電路在功率管理端口提供三個位SD(0)、SD(1)、SD(2)。這三個位在表II中標記為S0、S1和S2。通過控制第二PAL U2的DISPAY OFF輸出的引腳18,SD(2)位會關掉視頻信號,它使得引腳18DISPLAY OFF輸出明確為邏輯ONE,使得晶體管Q2和Q3導電,把BLNK#和ESYNC拉至GND,而使視頻控制器56停止產(chǎn)生視頻信號。類似地,把ZERO寫進功率管理端口的SD(2)使得引腳18DISPLAY OFF輸出明確為邏輯ZERO,造成晶體管Q2和Q3停止導電,允許電阻器R8和R9把BLNK#和ESYNC拉至VCC,這樣許可視頻控制器56產(chǎn)生視頻信號。
IRQ(1)輸入也控制視頻消隱。IRQ(1)是鍵盤硬件中斷;按下鍵盤12的一個鍵使IRQ(1)產(chǎn)生脈沖。當視頻信號切掉時IRQ(1)上的脈沖立即把視頻信號接通回來,它使引腳18DISPLAY OFF輸出明確為邏輯ZERO,使晶體管Q2和Q3停止導電,允許電阻器R8和R9把BLNK#和ESYNC拉至VCC,這樣許可視頻控制器56產(chǎn)生視頻信號。當從備用狀態(tài)152返回到常規(guī)運行狀態(tài)154時,以這種方式使用IRQ(1)賦于用戶恢復視頻顯示器的迅速反饋。如果沒有它,直到若干秒后在APM檢驗用戶活動之前用戶可能無法接收反饋,這在和圖9對應的文字段落中予以說明。
SD(1)和SD(0)協(xié)力工作以提供四種操作狀態(tài)002、012、102和112。第二PAL U2通過RESETDRV輸入002狀態(tài)初始化。另外,在四個狀態(tài)的任一狀態(tài)下,把XXXXXX002寫進功率管理端口可把第二PAL U2置入002狀態(tài)。在002狀態(tài)下,開關21的作用就象普通電源的功率開關一樣,這已在對應于圖5的文字段落中得到描述。當處于002狀態(tài)下時,按下開關21,會使第二PAL U2引腳12的輸出明確為邏輯ONE,使SR鎖存器的輸出引腳3鎖存為邏輯ZERO狀態(tài),允許通過R6把ON拉至HIGH,使得電源17的初級/穩(wěn)壓單元172停止沿±5和±12線路穩(wěn)壓電壓,而把電源17“關掉”。在這個狀態(tài)下,APM是不連接的,如在下面對系統(tǒng)軟件的討論中所說明的那樣。在002狀態(tài)情況下,讀功率管理端口使得電路回送OFEH。在最佳實施例中,這個字節(jié)被讀和被檢驗以保證該硬件是存在的。
在四個狀態(tài)的任一狀態(tài)下,對功率管理端口寫入XXXXXX012使得第二PAL U2進入012狀態(tài),012狀態(tài)是常規(guī)APM狀態(tài)。在進入012狀態(tài)之后和在開關21被按下之前,立即讀功率管理端口會使電路回送OFFH。在012狀態(tài)下按下和釋放開并會導致兩個事件(1)讀功率管理端口而發(fā)生的回送值在OFEH和OFFH之間跳動;(2)引引8處明確的值跳動,使得視頻控制器56隨著每次按下按鈕跳動地接通和關閉視頻信號。另外,在第一次按下開關21時,通過使得引腳18TRIGGER輸出明確為邏輯ZERO、使Q5停止導電、允許電容器C2開始充電,來啟動故障保險定時器。當存貯在C2里的電壓約低至+2.7VDC時,Q1不導電而R3把第二PAL U2的引腳11輸入值拉于VCC,使它成為邏輯ONE。如果C2充電到約為+2.7VDC或者更高,則Q1導電,把引腳11輸入值拉至GND,使它成為邏輯ZERO。每當引腳11DELAY-IN#為邏輯ZERO,則第二PAL U2總是通過下列操作把電源17“關掉”使第二PAL U2的引腳12輸出明確為邏輯ONE、使SR鎖存器的輸出引腳3鎖存到邏輯ZERO狀態(tài)、經(jīng)R6允許把ON拉至HIGH、使電源17的初級/穩(wěn)壓單元172停止沿±5和±12線路提供穩(wěn)壓電壓,反復的開關閉合使得故障保險定時器跳動式地接通或關閉。
這樣,在處于012狀態(tài)下,在開關按下之前,一次讀回送的值是OFFH并且視頻信號被生成;第一次把開關21按下時,一次讀操作所回送的值改變?yōu)镺FEH,而且停止產(chǎn)生視頻信號,使得視頻顯示終端57消隱。第二次按下開關時,讀操作所回送的值變回OFFH,并且視頻控制器56開始重新產(chǎn)生視頻信號。這種跳動式的性質(zhì)使得重復按下開關21表現(xiàn)如下奇數(shù)次按下開關結果是OFEH值和消隱的視頻信號而偶數(shù)次按下開關結果為OFFH值和生成的視頻信號。
在四個狀態(tài)的任一狀態(tài)下,對功率管理端口寫入XXXXXX102時,第二PAL U2進入102狀態(tài)。進入102狀態(tài)后,通過下列操作把電源17立即“關掉”使第二RAL U2的引腳12輸出明確為邏輯ONE、使SR鎖存器的輸出引腳3鎖存為邏輯ZERO狀態(tài)、經(jīng)R6允許ON被拉至HIGH、使電源17的初級/穩(wěn)壓單元172停止沿±5和±12線路提供穩(wěn)壓電墳。這個狀態(tài)使得系統(tǒng)10能控制電源17。
在四個狀態(tài)的任一狀態(tài)下,對功率管理端口寫入XXXXXX112使得第二PAL U2進入112狀態(tài)。如果使引腳19TRIGGER#輸出明確為邏輯ONE、使Q5導電、把電容器C2對GND放電,則進入112狀態(tài)能使故障保險定時器復位。脫離這個狀態(tài)并進入012狀態(tài)時,通過下列操作能重新啟動故障保險定時器使引腳19TRIGGER#輸出斷言邏輯ZERO、防止晶體管Q5導電、允許電容器C2重新充電。
對圖6電路功能的下述討論的假設條件是電源17插進到普通的墻上插座,并且在AUX5處產(chǎn)生+5VDC,因此,許多設備,特別是U3,得到有效供電。
相信,如果首先確定何時電源17是“關掉”的,對圖6電路的討論更容易得到理解。為把電源17“關掉”,JP2引腳2處的信號ON必須為邏輯ONE。因此,Q4必須不導電,故此U3的引腳3必須是邏輯ZERO。也就是說,U3A和U3B的SR鎖存器用邏輯ZERO輸出鎖存。POWERGOOD為邏輯ZERO并且第二PAL U2不供電,因此,U3C的引腳8輸出為邏輯ONE,這樣,SR鎖存器的RE-SET輸入為ONE。同樣,SR鎖存器SET輸入即U3A的引腳1經(jīng)R1拉至邏輯ONE。在這個狀態(tài)下,SR鎖存器用邏輯ZERO輸出加以鎖存。
當開關21被按下時,該閉合被R2和C1消跳,而且SR鎖存器SET輸入即U3的引腳1被拉至GND(邏輯ZERO)。這把SR鎖存器輸出即U3A的引腳3改變到邏輯ONE,使得Q4導電,它把ON拉至GND,使得電源17開始對±5和±12線路提供穩(wěn)壓功率。釋放開關允許SR鎖存器SET輸入、U3A的引腳1改變到邏輯ONE,使得SR鎖存器在U3A引腳3輸出處鎖存邏輯ONE,這樣把電源鎖定在“接通”狀態(tài)里。
在POWERGOOD信號變?yōu)檫壿婳NE后,所有的電壓處于容差范圍內(nèi)。當POWERGOOD為邏輯ZERO時,第二PAL U2初始化,使得(1)引腳12OFF輸出明確為邏輯ZERO,它使SR鎖存器脫離它當前的鎖存狀態(tài),(2)引腳18DISPLAY OFF輸出明確為邏輯ZERO,它允許視頻控制器產(chǎn)生視頻信號,和(3)引腳10TRIGGER#輸出明確為邏輯ONE,使得Q5把C2放電到GND,這樣經(jīng)R3保持引腳11DELAY IN#拉至邏輯ONE。
如上面提及那樣,圖7的第二PAL U2電路在功率管理端口提供三個位-SD(0)、SD(1)、SD(2)。SD(2)控制第二PAL U2的引腳18DISPLAY OFF輸出。對功率管理端口的SD(2)寫入ONE時,視頻控制器56停止產(chǎn)生視頻信號。同樣,對功率管理端口的SD(2)寫入ZERO將允許視頻控制器56產(chǎn)生視頻信號。
上面還提到,SD(1)和SD(0)協(xié)力工作以提供四個操作狀態(tài)002、012、102和112。RESETDRV輸入值將第二PAL U2初始化為002狀態(tài)。在這個狀態(tài)下,按下開關21只使電源17被“關掉”。在執(zhí)行代碼的某一點上,如果用戶要求這樣做,軟件可對功率管理端口寫入XXXXXX012,使得第二PAL U2進入012狀態(tài)。012狀態(tài)是常規(guī)APM狀態(tài)。在每次APM進行“取得事件”操作期間,監(jiān)督程序檢驗以查看是否不活動備用定時器期滿或者不活動暫停定時器期滿。如果不活動備用定時器期滿,則監(jiān)督程序?qū)裍XXXX1XX2寫到I/O端口,它將消隱視頻信號。如果計算機一旦脫離備用狀態(tài)并且重新進入常規(guī)運行狀態(tài),則監(jiān)督程序?qū)裍XXXX0XX2寫到I/O端口,它將使視頻控制器56產(chǎn)生視頻信號。如果不活動暫停定時器期滿,則監(jiān)督控制調(diào)用暫停程序,這將在和圖10對應的文字段落里得到更充分的說明。
另外,在每次APM“取得事件”的操作期間,監(jiān)督程序讀功率管理端口。如果OFFH被回送,則開關21末被按下過。另一方面,如果OFEH被回送,則開關21被按下過并且計算機系統(tǒng)啟動暫停程序,其在和圖10對應的文字段落會得到更充分的說明。如果開關21曾被按下過,或者不活動暫停定時器期滿,則故障保險定時器已被啟動而且C2進行充電;因此,為防止故障保險定時器把電源17關掉,暫停程序?qū)裍XXXXX112寫到I/O端口以對該定時器復位,并且立即把XXXXXX012寫到I/O端口以恢復到012方式。當系統(tǒng)暫停時,暫停程序?qū)裍XXXXX112寫到I/O端口以便立即把電源17“關掉”。系統(tǒng)軟件在對本發(fā)明計算機系統(tǒng)10的硬件方面完成說明之后,代碼方面仍然有待說明。
現(xiàn)參照圖8,圖中表示對加電程序的一般性概述。程序開始于200,此時CPU轉(zhuǎn)移并執(zhí)行由復位向量指向的代碼。這種情況出現(xiàn)于每一次CPU被加電和當CPU被一個復位硬件信號復位或者當CPU通過執(zhí)行RESET指令而復位,該RESET指令是通過向由復位向量指向的代碼轉(zhuǎn)移而執(zhí)行的。這種復位過程在技術上是周知的。
一般而言,加電程序的流程取決于系統(tǒng)是否處于斷電狀態(tài)156或暫停狀態(tài)154。也就是說,在CMOS NVRAM96里暫停標志是否相應地清除的還是置位的。如在202處所示,通過從非易失的CMOS存儲器96里讀出暫停標志,系統(tǒng)10判別它是否處于斷電狀態(tài)156或者處于暫停狀態(tài)154。當系統(tǒng)脫離常規(guī)運行狀態(tài)150進入斷電狀態(tài)156或暫停狀態(tài)154中的一種時,各個程序或者SET(置位)或者CLEAR(清除)NVRAM里的暫停標志。如果在NVRAM96里暫停標志設置,則計算機系統(tǒng)10處于暫停狀態(tài)154并且計算機系統(tǒng)10的狀態(tài)已存在固定磁盤存儲設備31里。另一方面,如果NVRAM96里的暫停標志清除,則計算機系統(tǒng)10處于斷電狀態(tài)156而計算機系統(tǒng)10的狀態(tài)不存儲在固定磁盤存儲設備31里。這樣,如果暫停標志在NVRAM96中設置,則計算機執(zhí)行“常規(guī)”引導程序,如所示的任務204-210。第一個任務是加電自檢(POST),如在204處所示,它將在和圖11對應的文字段落里給予更充分的說明;在從POST返回后,CPU40調(diào)用PBOOT程序以裝入操作系統(tǒng),如206處所示。
PBOOT程序是一個運行在IBM PS/2計算機上的標準程序,但有細微的不同,這將在下面解釋。PBOOT判別從那兒引導(從硬磁盤機31或從軟盤機里的磁盤中的一種),裝入操作系統(tǒng),在CON-FIG.SYS文件的指示下分析和完成系統(tǒng)更改,而在把控制交回到操作系統(tǒng)之前最后執(zhí)行AUTOEXEC.BAT批處理文件。在技術上PBOOT程序是周知的。但是,只有本發(fā)明計算機系統(tǒng)10才獨有的是,該引導程序和裝入在操作系統(tǒng)里的先進功率管理(APM)預編程接口(API)通信。APM API是由Intel和Microsoft研制的,而且許多操作系統(tǒng)現(xiàn)都實現(xiàn)APM API如IBM的OS/2,IBM的PC-DOS,Microsoft的MS-DOS和Microsoft的Windows。APMBIOS引導程序通知APM OS存在監(jiān)督程序。在用戶的指示下,操作系統(tǒng)無限期地執(zhí)地指令,如210處所示。但是,將監(jiān)督程序的情況通知API的結果是,APM BIOS和APM OS使監(jiān)督程序的執(zhí)行“并行于”程序的執(zhí)行,如212處所示。也就是說,系統(tǒng)10是一個分時多任務系統(tǒng),并且APM取得事件操作(Get Event)以及跟著的監(jiān)督程序周期性地執(zhí)行。最終結果是監(jiān)督程序大約每秒執(zhí)行一次。監(jiān)視程序?qū)⒃诤蛨D9對應的文字段落中得到充分地解釋。在常規(guī)引導程序204-210結束之后,計算機系統(tǒng)10處于常規(guī)運行狀態(tài)150,如在和圖4對應的文字段落里所討論的那樣。
再參看任務202,如果NVRAM96里的暫停標志設置,則系統(tǒng)狀態(tài)已保留在硬磁盤機31里面系統(tǒng)進行恢復引導程序,其在任務214-220中表示。首先,系統(tǒng)執(zhí)行簡化的POST,如在214處所示。簡化的POST將在和圖11對應的文字段落中得到說明。在簡化的POST之后,系統(tǒng)調(diào)用恢復程序,如在216處所示。在和圖12對應的文字段落里將詳細介紹恢復程序。只要恢復程序把計算機系統(tǒng)的狀態(tài)復原到系統(tǒng)10在被暫停起來之前的配置就夠了。和標示在任務204和210處的常規(guī)引導程序不同,恢復引導程序不需要通知APMAPI監(jiān)督程序是否存在,因為APM程序必定已經(jīng)運行過才能暫停系統(tǒng),而當系統(tǒng)狀態(tài)被復原時,APM被裝回到存儲器里。這樣,當恢復程序完成復原系統(tǒng)10的狀態(tài)時,APM已在適當位置,并且和被復原的代碼“并行地”運行,如在212和220處所示。在恢復引導程序214-220結束后,計算機系統(tǒng)10處于常規(guī)運行狀態(tài)150,如在和圖4對應的文字段落里所討論的那樣。這樣,在常規(guī)引導程序204-210或恢復引導程序214-220被執(zhí)行之后,計算機系統(tǒng)10處于常規(guī)運行狀態(tài)150。
圖9是一個流程圖,表示監(jiān)督程序的細節(jié),該程序大約每一秒在“Get Event(取得事件)”操作期間被APM調(diào)用。不同的操作系統(tǒng)以不同的頻率執(zhí)行取得事件操作。
監(jiān)督程序在圖9的222處啟動。下面的文字段落里假定計算機系統(tǒng)10啟動時處于常規(guī)運行狀態(tài)150。在224處,第一個任務是檢驗用戶是否按過開關21。通過讀功率管理端口來檢驗開關21,如已在和圖6和圖7對應的文字段落里所敘述的那樣。在第二PAL U2處于開關狀態(tài)012情況下進行讀操作時,如果開關21未被按下則功率管理端口回送FFH,如果開關21被按下則回送FEH。
如果在任務224處的檢驗表示用戶按過開關21,則監(jiān)督程序在226處設置“暫停請求”APM回送代碼,然后在228處返回到APM。對設置“暫停請求”APM回送代碼作出響應,APM執(zhí)行任何必要的系統(tǒng)任務(如使硬磁盤同步),然后發(fā)出“暫停命令”,它使APM BIOS路由程序調(diào)用暫停程序。暫停程序在和圖10對應的文字段落里描述。暫停程序本質(zhì)上使系統(tǒng)脫離常規(guī)運行狀態(tài)150和進入暫停狀態(tài)154,并且可能在幾條指令后(如果系統(tǒng)沒有準備好進入暫停)或者幾分鐘,幾小時,幾天,幾周或幾年后把控制交回給監(jiān)督程序。暫停程序總是設置“常規(guī)暫?!盇PM回送代碼,不管暫停程序是從未暫停情況返回還是從完整的暫停及恢復操作后返回都是如此。
更經(jīng)常的情況是,開關21未被按下,則監(jiān)督程序移動到任務230來檢驗查看是否系統(tǒng)剛剛恢復。如果暫停程序被調(diào)用,則系統(tǒng)認為它剛剛得到恢復,不管暫停程序是從未暫停過情況下返回還是從完整的暫停和恢復操作后返回都是如此?;謴驮?30處檢驗,如果系統(tǒng)剛被恢復(或者由于文件活動的直接存儲存取未執(zhí)行暫停操作),在232處設置“常規(guī)恢復”APM回送代碼,并在234處返回APM。對此作出響應、APM OS驅(qū)動程序更新系統(tǒng)時鐘和其它值,它們在間歇期間可能變?yōu)檫^時。
更經(jīng)常的情況是,系統(tǒng)10不是剛被恢復,則監(jiān)督程序移動到任務236,來檢驗任何用戶活動。在任務236處檢驗三種類型的用戶活動硬盤機31活動,鍵盤12活動和鼠標器13活動。每次APM“取得事件”操作時,監(jiān)督程序讀硬盤機的磁頭值、柱面值和扇面值,讀鼠標器13發(fā)送的最后字節(jié)的字節(jié)值(它是垂直位置),讀鍵盤端口的字節(jié)值(它是最后按下的鍵),并從實時時鐘讀分鐘值,分鐘值范圍從0發(fā)到59分并在每小時的開端繞回0分。這五個活動變量(磁頭、柱面、扇面、鼠標器字節(jié)、鍵盤字節(jié))和分鐘值被臨時地存儲起來。然后這五個活動變量和上一次取得事件保留下來的五個活動變量進行比較。如果這五個當前值和上一次取得事件的五個值相同,則不存在用戶活動。如果值不相同,則存在用戶活動,并且當前活動值被保存起來,用于和下次取得事件期間讀出值的比較。
上述活動檢測方式是在CPU上執(zhí)行程序。代替地,活動可在硬件方式下得到監(jiān)視。例如,16條硬件中斷線路可用來監(jiān)視活動。
如果已有活動,在238處監(jiān)督程序接著通過檢驗備用標志判別計算機系統(tǒng)10是否處于備用狀態(tài)152。如果備用標志設置,指示系統(tǒng)10處于備用狀態(tài)152,則在240處,監(jiān)督程序退出備用狀態(tài)152并且進入常規(guī)運行狀態(tài)150。監(jiān)督程序通過對一些設備增加供電的方式退出備用狀態(tài),這些設備在進入備用狀態(tài)152時曾降低供電。在最佳實施例中這包括(1)把01H寫入功率管理端口,它使視頻控制器56開始產(chǎn)生視頻信號,并同時使第二PAL U2處于012狀態(tài);(2)把一個適當?shù)闹祵戇M固定磁盤控制器86以使硬磁盤機31內(nèi)的硬盤開始旋轉(zhuǎn);(3)清除備用標示,以指明系統(tǒng)10處于常規(guī)運行狀態(tài)150。
另外,如果有過活動,則來自實時時鐘98的分鐘值也被保留,以供和接著發(fā)生的取得事件的分鐘值進行比較。在241處,保留當前分鐘值的操作有效地復位不活動備用定時器和不活動暫停定時器。在常規(guī)使用期間,將會有用戶活動,在242處監(jiān)督程序設置“無事件”APM回送代碼,并返回243處的APM調(diào)用代碼。APM不調(diào)用任何程序以對“無事件”回送代碼作出響應。
如果任務236的檢驗表明未有過用戶活動,則監(jiān)督程序接著分別在245處和247處檢驗是否不活動備用定時器和不活動暫停定時器期滿。如果系統(tǒng)10處于備用狀態(tài)152,則不活動備用定時器不對期滿進行檢驗;相反地,檢驗在任務244處跳躍。
通過從存儲分鐘值中減去當前分鐘值,可以得到相應的自從用戶活動之后的分鐘數(shù)值,來實現(xiàn)對期滿的檢驗。這個值在245處和不活動備用超時值比較,在247處和不活動暫停超時值比較。這兩個超時值可供用戶選擇,并且可以這樣設置,即系統(tǒng)永遠不會進入備用用152,或永遠不會進入暫停狀態(tài)154,或永遠不會因為兩個定時器中的一個的期滿而進入備用狀態(tài)152或暫停狀態(tài)154中的一種狀態(tài)。把兩個超時值中的一個置為0表示該定時器永遠不會期滿。
如果自從最后用戶活動以來的分鐘數(shù)等于或大于不活動備用定時器的超時值,則監(jiān)督程序在246處使系統(tǒng)10進入備用狀態(tài)152。如果不活動備用定時器沒有期滿,在247處監(jiān)督程序接著檢驗不活動暫停定時器的期滿。另一方面,如果不活動備用定時器期滿,則監(jiān)督程序通過把某些部件設置到它們各自的低功率方式使得系統(tǒng)10進入備用狀態(tài)152。在最佳實施例中,這包括(1)把05H寫進功率管理端口,這使得在讓第二PAL U2處于011狀態(tài)的同時視頻控制器56停止產(chǎn)生視頻信號,(2)對固定磁盤控制器86寫進一個適當值,使得硬磁盤機進入低功率方式(硬磁盤機里的硬盤停止旋轉(zhuǎn)),和(3)設置備用標志,表明系統(tǒng)10處于備用狀態(tài)152。簡言之,在最佳實施例中,監(jiān)督程序消隱視頻信號,停止硬磁盤機31里硬盤的旋轉(zhuǎn),并設置標志以表明系統(tǒng)10處于備用狀態(tài)152。在使系統(tǒng)10進入備用狀態(tài)152后,在247處,監(jiān)督程序檢驗不活動暫停定時器是否期滿。
在247處,監(jiān)督程序檢驗不活動暫停定時器是否期滿。如果自從最后用戶活動以來的分鐘數(shù)等于或大于不活動暫停超時值,則監(jiān)督程序在248處設置“暫停請求”APM回送代碼,并且返回243處的APM。如在上面和任務226對應的文字段落里所描述的那樣,對設置“暫停請求”APM回送代碼的響應,APM執(zhí)行任何必要的系統(tǒng)任務然后調(diào)用暫停程序。暫停程序?qū)⒃诤蛨D10對應的文字段落里充分地討論,簡言之,它使系統(tǒng)10脫離常規(guī)運行狀態(tài)150并進入暫停狀態(tài)154。如在和任務226對應的文字段落里所討論的那樣,暫停程序可以在對或不對系統(tǒng)10實行暫停操作的情況下把控制返回給監(jiān)督程序。另一方面,如果不活動暫停定時器不期滿,則監(jiān)督程序在242處設置“無事件”APM回送代碼并返回到243處的APM調(diào)用代碼。
盡管最經(jīng)常“無事件”APM回送代碼將返回到APM,不同的其它事件可以返回到APM。但是,對于每次APM取得事件只能規(guī)定一種APM回送代碼。例如,在進入備用狀態(tài)152之后,“無事件”被回送給APM,在脫離暫停狀態(tài)154之后,“常規(guī)暫停”APM回送代碼被回送給APM。排隊給APM的特定信息取決于計算機系統(tǒng)的準確狀態(tài)。監(jiān)督程序也回送“常規(guī)恢復”APM回送代碼或“暫停請求”APM回送代碼。
在對暫停程序的了解后可以最好地理解加電和恢復程序。因此,相信按下述次序可得到對APM BIOS程序的最好說明對本發(fā)明加電程序的一般性概述(上面的圖8中)、監(jiān)督程序的細節(jié)(圖9)、本發(fā)明暫停程序的細節(jié)(圖10)、本發(fā)明的加電進程(圖11)、本發(fā)明的恢復程序的細節(jié)(圖12)、保留CPU狀態(tài)程序的細節(jié)(圖13)、復原CPU狀態(tài)程序的細節(jié)(圖14)和保留8259狀態(tài)程序的細節(jié)(圖15)。
相信,因為大多數(shù)程序相互作用并且暫停/恢復進程是一個連續(xù)的循環(huán),盡管本發(fā)明計算機系統(tǒng)10的討論在某種程度上是循環(huán)的,但是在引導程序(圖11)或恢復程序(圖12)之前對暫停程序(圖10)的討論是很有益的。現(xiàn)參照圖10,它表示暫停程序的流程圖。請回想在常規(guī)引導程序204-210或者恢復引導程序214-220中的一個被執(zhí)行之后,計算機系統(tǒng)10處于常規(guī)運行狀態(tài)150。而且,如在上面和圖8對應的段落里所提到的那樣,不論計算機系統(tǒng)是常規(guī)引導的(204-210)還是恢復引導的(214-220),在各個程序結束之后,APM OS驅(qū)動程序知道APM BIOS程序,如圖8所示的監(jiān)督程序。作為結果,大約每一秒鐘APM輪詢監(jiān)督程序。
暫停程序示在圖10中并從250處開始。通過APM對監(jiān)督程序回送給APM“暫停請求”APM回送代碼作出響應暫停程序被調(diào)用。首先,保留CPU狀態(tài)程序被調(diào)用,如252處所示。保留CPU狀態(tài)程序?qū)⒃诤蛨D13對應的文字段落里細化?,F(xiàn)在只要這一點就夠了,即,不論當暫停程序最初被調(diào)用時CPU40處于何種方式,暫停程序的剩余部分將隨CPU40按實址方式執(zhí)行,因此,它可以得到執(zhí)行并且無須擔心會因為試圖在允許的地址空間之外執(zhí)行指令或因為試圖執(zhí)行一條特權指令而產(chǎn)生任何錯誤。
保留CPU狀態(tài)程序在253處,以唯一的方式,把程序控制返回給暫停程序。從保留CPU狀態(tài)程序到暫停程序的返回涉及到對CPU的復位,在和下面圖13任務630和632相對應的文字段落將對此詳細解釋。關于暫停程序的重要細節(jié)在于,CPU寄存器被寫進段地址為E000H的數(shù)據(jù)結構而且CPU40現(xiàn)在處于實址方式。
暫停程序接著在254處確定是否開關21曾被按過。按和圖6和圖7對應的文字段落中所描述的那樣檢驗開關21是否閉合。簡言之,如果開關21曾被按過,則在讀功率管理端口時它將回送FEH。如果沒有,在被讀時它將回送FFH。如果開關未被按過,則正在進行的暫停是軟件暫停并在CMOS NVRAM96里設置軟件暫停標志。這保證軟件暫停不會同由開關閉合而引起的硬件暫停相混淆。如果暫停是軟件暫停,下一次開關閉合使得該暫停變成硬件暫停。在把軟件暫停轉(zhuǎn)變?yōu)橛布和V蟮南乱淮伍_關閉合將把該暫停異常結束掉。
接著,如260處所示,BIOS ROM88不被遮蔽。通過首先關閉ISA訪問段C000H和D000H BIOS ROM不被遮蔽。接著,BIOS向量從指向段C000H和D000H改變到指回ROM88。下一個任務是在段C000H里建立一個棧,如262處所示。
在棧建立之后,在264處暫停程序判別DMA控制器72,軟盤適配器84和IDE磁盤控制器86以查看是否有任何DMA傳送、軟盤機傳送或硬盤機傳送當前各自地在進行中。如果是,暫停不能夠完成,因為這三種類型傳送的特有特征阻止執(zhí)行良好的暫停。例如,如果從硬磁盤機31上的硬文件傳送正在進行,數(shù)據(jù)已經(jīng)被IDE控制器讀過,但是尚未傳送給系統(tǒng)存儲器53。這些數(shù)據(jù)不能充分地由CPU訪問,因此,如果在硬文件讀(操作)的中間系統(tǒng)被暫停,數(shù)據(jù)會被丟掉。這樣,如果這三種類型傳送的任一種在進行之中,暫停被擱置至到下一次APM取得事件,那時再次檢驗DMA和軟盤控制器的活動狀況。
接著,在252、260和262執(zhí)行過的任務必須被倒回來,這樣控制才能傳回給APM。首先,BIOS從讀/寫改變到只讀,如265處所示。它是通過關閉仍然含有遮蔽信號的段C000H和D000H來完成的。然后,對兩個段的ISA訪問被接通回來。在任務262處建立的棧被彈出和復原。最后,在266處通過復原CPU狀態(tài)程序CPU的狀態(tài)被復原,這發(fā)生在把控制于267處傳回給APM之前。大約下一秒鐘在下一個取得事件期間暫停程序會再次被APM輪詢。這一次,阻止暫停進程的傳送操作可能結束,允許暫停延續(xù)。
現(xiàn)回到任務264,如果當前不進行DMA傳送、軟盤機傳送或硬文件傳送,則暫??杀粓?zhí)行。暫停程序在268處繼續(xù)。請回想當功率按鈕被按下時故障保險定時器被允許工作。因此,第一個任務是如圖6對應文字段落所述的對故障保險定時器復位,如268處所示。通過把0X112寫到功率管理端口故障保險定時器被復位,如曾在圖6和圖7對應的文字段落中充分說明的那樣。這使得第二PAL U2的引腳9(圖6中)放掉經(jīng)R4充給C2的任何電荷,這樣防止C2約為2.7VDC的集累電壓使Q1導電。請回想如果Q1導電,會把第二PAL U2的引腳11拉至邏輯ZERO,第二PAL U2內(nèi)的電路將使第二PAL U2的引腳12輸出邏輯ONE,使電源17停止向計算機系統(tǒng)10提供穩(wěn)壓功率,如已在和圖6和圖7對應的文字段落里更充分地說明那樣。這樣,C2必須至少約每10秒通過暫停程序放電以防止電源在暫停中間被斷掉。
下一步,在270處,8042協(xié)同處理器104的狀態(tài)被保留。8042協(xié)同處理器104寄存器在技術上是周知的。寄存器是可由CPU40直接讀的,它們的值被直接寫進D000H里的數(shù)據(jù)結構里。
接著,在272處,8259中斷控制器92的狀態(tài)被保留。暫停程序調(diào)用8259保留狀態(tài)程序,它將在和圖15對應的文字段落里細化?,F(xiàn)在只要說這一點就夠了,即8259保留狀態(tài)程序查明兩個8259中斷控制器92的未知寄存器的內(nèi)容,即使其中某些寄存器是只寫的。寄存器值被直接寫到D000H的數(shù)據(jù)結構里。
在中斷控制器92的狀態(tài)被保留之后,中斷控制器92的配置必須被改變到一個已知的狀態(tài),以許可由暫停程序執(zhí)行的不同的中斷驅(qū)動任務發(fā)揮適當功能。因此,在274處,BIOS數(shù)據(jù)區(qū)和向量表被交換。暫停程序把在段0000H里的現(xiàn)行狀態(tài)BIOS數(shù)據(jù)區(qū)和向量表的內(nèi)容復制到段D000H里的一個單元。接著,已知狀態(tài)BIOS數(shù)據(jù)區(qū)和向量表的內(nèi)容從段D000H的數(shù)據(jù)結構復制到D000H里的單元。在圖11所示的引導程序的任務414里已知狀態(tài)BIOS數(shù)據(jù)區(qū)和向量表被復制到段D000H,引導程序?qū)⒃谙旅嬗懻?。最后現(xiàn)行狀態(tài)BIOS數(shù)據(jù)區(qū)和向量表從段000H復制到段D0000H里的數(shù)據(jù)結構。當該程序在274處結束時,所有的中斷,如中斷13H(磁盤讀/寫)和中斷10H(視頻訪問)將如預想的那樣發(fā)揮功能。
接著,在276處定時器102的狀態(tài)被保留。定時器的寄存器在技術上是周知的。所有這些寄存器可由CPU40直接讀,它們的值被直接寫進D000H里的數(shù)據(jù)結構。在276處IDE磁盤控制器86的狀態(tài)也被保留。IDE磁盤控制器86寄存器在技術上是周知的。所有這些寄存器可直接由CPU40讀,它們的值被直接寫進D000H里的數(shù)據(jù)結構。
下一個步驟是準備系統(tǒng)存儲器,使它可被寫到硬磁盤機31上的暫停文件。系統(tǒng)存儲器包括系統(tǒng)RAM53(它既包括主存儲器又包括任何擴充存儲器)和視頻存儲器58。在這個時候,部分RAM53可能在外部高速緩存60里。CPU高速緩存在任務628里被沖洗,這將在下面和圖13對應的文字段落里討論。這樣,必須在RAM53可寫到硬磁盤機31前沖洗外部高速緩存。這樣,系統(tǒng)高速緩存60在286處被沖洗。在沖洗完成之后,RAM53是完整的,沒有存儲數(shù)據(jù)保留在CPU高速緩存41或者系統(tǒng)高速緩存60中。
在系統(tǒng)10上執(zhí)行的代碼可能已把IDE控制器86置為未知狀態(tài)。接著,在292處,下個步驟把IDE控制器86初始化到已知狀態(tài)。這是通過把值直接寫進IDE控制器86里的寄存器中來實現(xiàn)的。
接著,在294處,暫停文件必須被定位到硬磁盤機31里的固定磁盤上。暫停文件的磁頭、扇面和柱面存儲在CMOS存儲器96里。一旦暫停文件被定位,文件長度和特性表被讀出。在最佳實施例中,特性表是一個任意長度的ASCII代碼,它指明暫停文件的存在。特性表的其它代替實現(xiàn)是可能的,如使用具有在硬文件系統(tǒng)里被隨機發(fā)現(xiàn)的非常低概率的二進制字符串。
在讀出暫停文件的文件長度和特性表之后,在296處的下個步驟是保證該文件長度和特性表是正確的。如果特性表不正確,表示另一個程序可能修改過暫停文件,而如果文件長度不正確,表示暫停文件的長度被修改過,在其中任一種情況下則在298處暫停程序調(diào)用致命暫停錯誤程序,其啟動圖13的652任務。如果用戶按下開關17,以退出致命暫停錯誤程序,程序控制從任務299轉(zhuǎn)移到任務506。
另一方面,如果致命是正確的并且暫停文件足夠長,則暫停程序可能著手把計算機系統(tǒng)的狀態(tài)寫進存儲器。
在把計算機系統(tǒng)10的狀態(tài)寫到硬磁盤機31之前,在297處,故障保險定時器C2被復位并且開關被檢驗以探測開關21是否又被按下。如在和圖6和圖7對應的文字段落里所說明過的那樣,如果對功率管理端口的讀回送FEH,則開關21未被重新按過,暫停應該繼續(xù)。另一方面,如果對功率管理端口的讀回送FFH,則開關21被重新按過,暫停應該異常結束。在暫停程序的好幾處C2放電、開關21被檢驗。任務297只是示意性的;在應用技術中具有一般技能的電路設計者能夠確定C2放電的次數(shù)和放電間的時間間隔。暫停程序應該保證C2是放電的,因此,在C2把電源17“關掉”之前進行故障保險定時器復位。同樣,開關21應該不時地受到檢驗。如果開關21被重新按過,這表明用戶希望異常結束暫停,則代碼應該轉(zhuǎn)移到恢復程序的適當點,以繼續(xù)已被暫停程序所暫停的操作。
類似,在350處,控制—更換—刪除異常結束暫停。按下控制—更換—刪除(同時按下控制鍵、更換鍵和刪除鍵)是對基于IBMBIOS和Intel80×86 CPU家族的典型計算機系統(tǒng)進行復位的一種廣為知曉的方法。計算機系統(tǒng)10和BIOS中斷1處理程序一起處理控制—更換—刪除,這在技術上是周知的。在350處,計算機系統(tǒng)10稍微修改了中斷1處理程序,在352處它清除CMOS存儲器96里的暫停標志,在354處轉(zhuǎn)移到復位的引導程序。
在本發(fā)明的計算機系統(tǒng)10里,當暫停程序執(zhí)行時按下控制—更換—刪除使得計算機系統(tǒng)進入斷電狀態(tài)156。出現(xiàn)這種情況是因為,在開關21閉合后第二PAL U2處于開關狀態(tài)102,按下控制—更換—刪除時調(diào)用引導程序,而引導程序?qū)β使芾矶丝趯懭?0H來把第二PAL U2置到已知的狀態(tài)。但是,當?shù)诙AL U2位于開關狀態(tài)102時,如把00H寫進第二PAL U2,將使第二PALU2導致電源17停止提供系統(tǒng)功率,如已在圖6和圖7對應的文字段落里所說明的那樣。這樣,在處于暫停程序時按下控制—更換—刪除將使計算機系統(tǒng)10進入斷電狀態(tài)156。
現(xiàn)參照任務300,在300處暫停文件重新放置在硬磁盤機31上;特性表短語寫在暫停文件的第一個字節(jié)。接著,在302處,段D000H上的全部64K字節(jié)數(shù)據(jù)被寫進暫停文件。這個64KD000H的復制品實際上只是位置支持物,在暫停程序的末尾它要被寫回到同樣的單元里。
接著,系統(tǒng)存儲器被寫進暫停文件。這是通過一個雙緩沖器系統(tǒng)實現(xiàn)的從系統(tǒng)存儲器讀出數(shù)據(jù),把它壓縮并寫入段C000H,最后把壓縮后數(shù)據(jù)從段C000H寫入暫停文件。兩種程序以一種分時的安排進行工作一個將數(shù)據(jù)壓縮并寫入到段C000H,另一個寫入到暫停文件。前者運行在前臺,后者是由中斷驅(qū)動的程序,它運行在后臺。很明顯,因為只有一個CPU40,在給定時間只能執(zhí)行一個程序;但是,因為后一個程序是中斷驅(qū)動的,它可以按需要將前一個程序的執(zhí)行中斷,以優(yōu)化向暫停文件傳送數(shù)據(jù)的速度。兩個緩沖器中,每個為8K字節(jié)長,這被認為是對硬磁盤機31的傳送時間的優(yōu)化。
這個進程開始于304處,讀出、壓縮、并向段C000H寫入足夠的數(shù)據(jù),以填充第一個8K緩沖器。利用運行長度編碼法對數(shù)據(jù)進行壓縮;當然,任何適用的壓縮方法都可以采用。那時,在306處,啟動在307處概括標明的從緩沖器寫程序。從緩沖器寫程序307是一個中斷驅(qū)動程序,它運行在后臺并包括任務308-310。概括標明在311處的壓縮程序包括任務312-318,并是一個前臺程序。首先,從緩沖器寫程序307,在308處,把剛由任務304填充的緩沖器寫入到暫停文件,在從緩沖器寫程序307把緩沖器的內(nèi)容寫進暫停文件的同時,壓縮程序311,在312處,繼續(xù)從系統(tǒng)存儲器讀出下一批字節(jié),壓縮它們并把壓縮后的數(shù)據(jù)寫進兩個8K緩沖器中的另一個緩沖器里。在314處,一旦壓縮程序311用壓縮數(shù)據(jù)填充緩沖器后,下個步驟為判別是否整個系統(tǒng)存儲器已被壓縮。
IDL控制器不能非??斓匕褦?shù)據(jù)寫進硬磁盤機31。作為結果,壓縮程序311總是在從緩沖器寫程序307完成把緩沖器寫入硬磁盤機之前把未被寫入到硬磁盤機31的數(shù)據(jù)都填充到8K緩沖器。這樣,壓縮程序311必須等待,使從緩沖器寫程序307完成把緩沖器寫入硬磁盤機31。如果壓縮程序311還沒有結束對全部系統(tǒng)存儲器的壓縮和寫,則在316處,壓縮程序311等待從緩沖器寫程序307。壓縮程序311和從緩沖器寫程序307通過一組標志通信。當從緩沖器寫程序307完成把當前的緩沖器寫入到暫停文件時,程序307接著切換緩沖器標志,對壓縮程序311指出它可以開始用已壓縮數(shù)據(jù)填充已寫入到暫停文件的緩沖器。接著,在309處,故障保險定時器C2被復位并對開關21檢驗閉合事件,如已在任務297對應的文字段落里說明的方式。
在310處,從緩沖器寫程序307接著判定剛向暫停文件寫入的緩沖器是否是要寫的最后一個緩沖器。如果不是,從緩沖器寫程序向暫停文件寫入剛被壓縮程序311填充的緩沖器。在其間,通過檢查緩沖器標志,壓縮程序311確定一個緩沖器已準備好可用于更多的已壓縮系統(tǒng)存儲器。也就是說,壓縮程序在316處等待直到從緩沖器寫程序完成當前的緩沖器,在這個時間,壓縮循環(huán)在312處繼續(xù)。請注意,視頻存儲器58是不壓縮的。相反,視頻存儲器58利用VESA調(diào)用通過視頻控制器56讀,并利用上面詳細解釋的雙緩沖區(qū)系統(tǒng)不經(jīng)壓縮地寫。
一旦壓縮程序311完成壓縮所有的系統(tǒng)存儲器,它在318處等待從緩沖器程序307從最后的緩沖器對暫停文件的寫。一旦從緩沖器寫程序307結束,它從310處轉(zhuǎn)移到318并且不再存在。在這時,沒有后臺程序在執(zhí)行而且主程序在320處繼續(xù)。
接著,在320處,視頻控制器56的狀態(tài)被保留。視頻控制器56寄存器在技術上是周知的。所有這些寄存器是直接可由CPU40讀的,它們的值直接寫入D000H里的數(shù)據(jù)結構。同時在任務320里,DMA單元71(DMA控制器72和中央仲裁器82)、8277軟盤控制器84和RS-232UART(通用異步收發(fā)器)14的狀態(tài)被保留。這些設備具有在技術上周知的寄存器。軟盤控制器84和UART的所有寄存器是直接可由CPU40讀的,它們的值被直接寫進D000H里的數(shù)據(jù)結構。DMA單元不具有可讀寄存器。相反,在每次DMA傳送前只寫寄存器常規(guī)地被設置。由于這個原因,如果DMA傳送在進行之中,則暫停程序停止暫停操作。
希望一旦計算機系統(tǒng)10進入暫停狀態(tài)150,能夠檢測對暫停文件的竄改行為。例如,有可能某人生成一個修改過的暫停文件,把這個暫停文件移入硬磁盤機31,并試圖把計算機系統(tǒng)10恢復到與它被保留時的不同狀態(tài)。為此,一個偽隨機值被置入到段D000H的數(shù)據(jù)結構里。如在328處所示,從高速定時器102中的一個讀出16位時間標記。該時間標記然后被寫進段D000H數(shù)據(jù)結構。
接著,在不考慮進位位的情況下通過把各個16位字加起來的辦法計算整個D000H段的16位檢驗和。在330處,該檢驗和被寫到段D000H數(shù)據(jù)結構,在332,它被寫到CMOS NVRAM96。在這之后,在334處所有的工作變量從CPU40寫入到段D000H數(shù)據(jù)結構,而在336處,整個段D000H重寫到暫停文件上,從暫停文件的特性表短語之后開始(直接在特性表之后)。接著,在338,暫停標志設置進CMOS NVRAM96,來通過系統(tǒng)10計算機系統(tǒng)的狀態(tài)已被保留到暫停文件。
最后,CPU40通過把X102狀態(tài)寫到功率管理端口,使第二PAL U2進入102狀態(tài)、把電源“關掉”。進入第二PAL U2102狀態(tài)時,通過以下措施立即將電源17“關掉”使第二PAL U2引腳12輸出明確為邏輯ONE,使SR鎖存器的輸出引腳3鎖存到邏輯ZE-RO狀態(tài),允許ON經(jīng)R6拉至HIGH,使電源17的初級/穩(wěn)壓單元172停止沿±5和±12線路提供穩(wěn)壓電壓。電壓降到大約為零需要幾秒鐘,這給CPU一段時間去執(zhí)行許多命令。因此,當CPU等待由電源17產(chǎn)生的系統(tǒng)能源電壓衰落,直至CPU停止工作之前,在342處,CPU40執(zhí)行無限循環(huán)。
現(xiàn)參照圖11,其表示引導程序的細節(jié)。引導進程已在和圖8對應的文字段落中簡要地概括過。引導程序開始于380處,在那里CPU40轉(zhuǎn)移到并執(zhí)行由復位向量指向的代碼。每當CPU40被加電和無論何時CPU40通過轉(zhuǎn)移到由復位向量指向的代碼而被復位時這都要發(fā)生。這種復位進程在技術上是周知的。
在382處,第一項任務是檢驗CPU40并將存儲器控制器46初始化。CPU由POST程序加以檢驗。存儲器控制器46由POST程序初始化。
接著,陰影存儲器被檢驗而且BIOS從ROM88復制到RAM53的陰影存儲器部分。被執(zhí)行代碼的流程取決于暫停標志在CMOSNVRAM96里是否設置。如果暫停標志設置,則計算機系統(tǒng)10處于暫停狀態(tài)150,并且計算機系統(tǒng)10應該復原到當它被暫停時的狀態(tài)。段E000H和F000H里的系統(tǒng)RAM被簡略地檢驗。為減少恢復計算機所需時間,只對適當長度的存儲器進行檢查并清零(000H被寫到各個單元)。
另一方面,如果CMOS NVRAM96里的暫停標志清除,則段E000H和F000H里的RAM53被給予標準的和徹底的檢驗,包括(1)粘性位(sticky-bit)檢驗,(2)雙位存儲檢驗和(3)交叉地址線檢驗。這些檢驗在技術上是周知的。
在段E000H和F000H被檢驗之后,BIOS可被遮蔽,這包括把ROM BIOS88的內(nèi)容復制到系統(tǒng)RAM53和把存儲器控制器配置為可執(zhí)行來自RAM的BIOS。進行BIOS的遮蔽是為了增加系統(tǒng)的速度;因為BIOS運行在較快的系統(tǒng)RAM53(典型的存取時間為80毫微秒)上而不是在較慢的ROM88(典型的存取時間250毫微秒)上系統(tǒng)性能得到提高。對BIOS的遮蔽包括把BIOS復制器裝入到較低速存儲器里的一個地址上,把BIOS從ROM88復制到系統(tǒng)RAM53的段E000H和F000H上,和允許陰影RAM。
接著,都在384處,視頻控制器56被檢驗和初始化并且視頻存儲器58被檢驗。這些檢驗和初始化在技術上是周知的。
在386處,被執(zhí)行代碼的流程取決于CMOS NVRAM96里的暫停標志是否設置。如果暫停標志設置,則和任務383一樣,剩余的系統(tǒng)RAM只被僅僅檢驗長度然后清零。但是,如果CMOSNVRAM53里的暫停標志清除,則在任務398處采用在任務383對應文字段落里已描述的三步徹底的存儲器檢驗來檢驗剩余的系統(tǒng)RAM53。
在存儲器被檢驗之后,在400處,輔助設備—包括8259,UARI,8042和任何其它設備—被檢驗和初始化。在任務408,固定磁盤控制器被初始化。
在409處,被執(zhí)行代碼的流程取決于CMOS NVRAM96里的暫停標志是否設置。如果暫停標志設置,表明電源上次被關掉時系統(tǒng)狀態(tài)已成功地保留,則引導程序跳過對硬磁盤機控制器86和硬磁盤機31的檢驗。另一方面,如果CMOS NVRAM96里的暫停標志清除,表明上次電源被關掉時系統(tǒng)的狀態(tài)沒有保留,則在任務410,引導程序?qū)潭ù疟P控制器86和硬磁盤31進行全面的校驗,如技術上周知的那樣。
接著,在412處軟盤控制器84被檢驗和初始化。
此時,所有的設備都已初始化而且向量指向已知的地址,所有中斷程序?qū)⑷缙诖菢庸ぷ?。這樣,在414處,引導程序快讀BIOS數(shù)據(jù)區(qū)和向量表,它把BIOS數(shù)據(jù)區(qū)和向量表的復制品寫入段D000H里的數(shù)據(jù)結構。在任務274該BIOS數(shù)據(jù)區(qū)和向量表被暫停程序用來把計算機系統(tǒng)10置為已知狀態(tài),使所有中斷可按預想地工作。
接著,在416處按技術上周知的那樣,任何BIOS擴充被“掃描進”和初始化。BIOS擴展是通過外圍設備適配器,如網(wǎng)絡適配器,增加到系統(tǒng)上的BIOS代碼塊。典型的BIOS擴充位于ISA總線76上的段C000H和D000H里而且具有相應的“特性表”以標明作為BIOS擴充。如果BIOS擴充被檢測出,它的長度被檢查而且檢驗和被計算和被檢查。如果特性表、長度和檢驗和都表明存在有效BIOS擴充,程序控制傳給位于特性表三字節(jié)之后位置上的指令,并且BIOS擴充可以執(zhí)行任何所需任務如對外圍設備適配器的初始化。一旦該擴充結束執(zhí)行,控制傳送回引導程序,它搜索更多的BIOS擴充。任何更多的BIOS擴充象上面的BIOS擴充一樣地得到處理。如果沒有檢測出更多的BIOS擴充,則引導程序轉(zhuǎn)移到任務417、在417處導引程序?qū)ふ矣泊疟P機31上的一個分區(qū),它看來象是專門分配給暫停文件的分區(qū)。如果在分區(qū)表上發(fā)現(xiàn)一個帶有PS/1標識符(“FE”)的分區(qū)并且這個分區(qū)是足夠大可以容納該特定系統(tǒng)的暫停文件,則這個分區(qū)被確定為用于暫停文件。結果,暫停文件被分配在文件分配表(FAT)里,如技術上周知的那樣,暫停文件特性表被寫到文件的第一個字節(jié),而且文件的起始磁頭、扇面和柱面被寫進CMOS NVRAM96里。
然后被執(zhí)行的代碼在418處分支,這取決于CMOSMVRAM96里的暫停標志是否為設置。如果暫停標志被清除,則在420處引導程序把控制傳送給PBOOT程序。PBOOT在技術上是周知的并且負責裝入操作系統(tǒng)(OS)和來自軟盤機或硬磁盤機31的命令解釋程序。對本發(fā)明的常規(guī)引導程序作了輕微地修改,使得當OS被裝入時,如果在任務417未發(fā)現(xiàn)用于暫停文件的分區(qū),則OS執(zhí)行一個OS專用驅(qū)動程序,它在FAT里分配一個相連區(qū)段(如果需要連接一個區(qū)域)文件,對暫停文件的第一個字節(jié)寫進特性表,并把暫停文件的開始磁頭、扇面和柱面寫入CMOS NVRAM96。
不論何時暫停文件被分配,F(xiàn)AT里的區(qū)域應該是相連的區(qū)段,以允許分別在暫停和恢復期間可對磁盤快速寫和從磁盤快速讀。
PBOOT接著根據(jù)在CONFIG.SYS文件里找到的指令配置系統(tǒng)。最后,PBOOT把執(zhí)行控制傳送給AUTOEXEC.BAT文件,該文件最終把執(zhí)行控制傳送給操作系統(tǒng)。如果在CMOS NVRAM96里暫停標志是清降的,表明當上次功率被關掉時系統(tǒng)狀態(tài)未被保留,則在與任務421對應的文字段落里被更充分解釋的RESUME.EXE被忽略。
回到頂部任務418,如果CMOS NVRAM96里的暫停標志為設置,指明上次電源被關掉時系統(tǒng)的狀態(tài)被保留,則在419處,被執(zhí)行的代碼的流程分支,這取決于CMOS NVRAM96里的再初始化適配器標志是否為設置。如果再初始化適配器標志被設置,則在421處引導程序把控制傳送給PBOOT程序。和一般的PBOOT程序一樣,本發(fā)明的PBOOT按照在CONFIG.SYS文件和AUTOEXEC.BAT文件里找到的命令配置系統(tǒng),它們特別裝入驅(qū)動程序和按技術上周知的方法配置系統(tǒng)。
CONFIG.SYS和AUTOEXEC.BAT里命令可用于初始化系統(tǒng)里的適配器插件板。這種應用假設存在三種類型的適配器插件板類型I適配器不需要初始化;類型II適配器需要初始化,但是由BIOS擴充或由經(jīng)CONFIG.SYS或者AUTOEXEC.BAT裝入的驅(qū)動程序設置到已知的工作狀態(tài);而類型III適配器被在系統(tǒng)上執(zhí)行的代碼修改。包括類型I和類型II適配器的系統(tǒng)可被暫停和復原;但是包括類型III適配器的系統(tǒng),包括許多連網(wǎng)適配器,可能不能夠復原,除非這些插件板具有從誤差中恢復的程序。系統(tǒng)可以暫??蓮恼`差中恢復的類型III插件板。
在最佳實施例中文件RESUME.EXE被加到AUTOEXEC.BAT文件上,文件RESUME.EXE負責把程序控制從PBOOT傳送給恢復程序。任務420里的PBOOT忽視RESUME.EXE的存在;但是任務421的PBOOT執(zhí)行RESUME.EXE,它在類型II適配器通過設備驅(qū)動程序完成初始化之后把控制傳送給恢復程序,這些設備驅(qū)動程序是通過PBOOT從CONFIG.SYS和AUTOEX-EC.BAT裝入的。
再參照任務419,如果CMOS96里的再初始化適配器標志是清除的,引導程序在422處把執(zhí)行控制直接傳送給恢復程序,不處理CONFIG.SYS或AUTOEXEC.BAT?;謴统绦驈挠泊疟P機上的暫停文件恢復狀態(tài),這將在和圖12對應的文字段落里詳細說明。
現(xiàn)參照圖12,其中表示恢復程序,任務450到530,的細節(jié)。在配置過程期間,BIOS數(shù)據(jù)區(qū)和向量表可能被修改到未知的狀態(tài);這樣BIOS程序可能或者不可能按所期望的那樣作用。因此,在454處,恢復程序把段D000H允許為讀/寫,并在456處調(diào)用交換BIOS數(shù)據(jù)區(qū)和向量表程序。該程序把在任務414里被復制到段D000H的已知的好BIOS數(shù)據(jù)區(qū)和向量表與在段0000H里當前有效的、被修改過的BIOS數(shù)據(jù)區(qū)和向量表交換。當該程序結束時,已知BIOS數(shù)據(jù)區(qū)和向量表有效存在段D000H里,而修改過的BIOS數(shù)據(jù)區(qū)和向量表在段D000H,并且BIOS程序可按期望地作用。
接著,在458處,恢復程序禁止所有的除了支持鍵盤和硬磁盤機之外的中斷。然后,在460處,恢復程序定位硬磁盤機上的暫停文件,并讀文件長度和特性表,特性表,如上面說明的那樣,是暫停文件的多字節(jié)標識符。在462處,被執(zhí)行代碼的流程分支,這取決于暫停程序是否具有正確的長度和特性表。如果暫停文件不具有正確長度和特性表,則在464處恢復程序把CMOS存儲器96里的暫停標志置為CLEAR,并在466處把程序控制傳送給由復位向量指向的位置上的代碼,因此使得系統(tǒng)按照好象系統(tǒng)從未暫停過那樣引導。另一方面,如果暫停文件具有正確長度和特性表,則在468處恢復程序通過把暫停文件上位于特性表之后的64K數(shù)據(jù)塊(暫停文件的這部分對應于段D000H信息)讀到段C000H繼續(xù)系統(tǒng)恢復的操作。
接著,在470處,C000H里塊的檢驗和被計算,在472處從CMOS非易失存儲器96上讀出預先存儲的檢驗和,在474處被執(zhí)行代碼的流程分支,這取決于任務470計算的檢驗和是否等于任務330計算的檢驗和。如果任務470計算的檢驗和和任務330計算機的檢驗和不同,則暫停文件出現(xiàn)疵漏(例如,它可能被竄改)而控制仍送給任務464,該任務把暫停標志置為清除并復位系統(tǒng),如已在和任務464和466對應的文字段落里說明過的那樣。如果任務470計算的檢驗和等于任務330的檢驗和,則暫停文件被假設為與由暫停程序?qū)懭氲哪莻€暫停文件相同,在476處段C000H里的數(shù)據(jù)復制到段D000H里。請注意,當C000H數(shù)據(jù)被復制到時,修改過的BIOS數(shù)據(jù)區(qū)和向量表被重寫,因此是不可恢復的。
現(xiàn)在,恢復程序在478處對屏幕寫出一個專門的信號屏幕來通知用戶系統(tǒng)已被恢復,并且用戶應該按下控制—更換—刪除以異常結未恢復。正如暫停程序一樣,在562處按下控制—更換—刪降會清除暫停標志,并在528處使得系統(tǒng)再引導。但是,在再引導過程中,第二PAL U2處于開關狀態(tài)012,因此,把X00H寫給功率管理端口不會導致電源17停止提供系統(tǒng)功率。這樣,當控制—更換—刪除被按下時,系統(tǒng)常規(guī)地再引導而且恢復程序在執(zhí)行著。
接著在480處、482處和484處,通過把來自段D000H數(shù)據(jù)結構的值寫到對應的寄存器時,8277軟盤控制器84、DMA單元71和UART94分別得到恢復。
然后,從任務486到500,利用類似暫停程序里任務304到308對應的文字段落里所說明的雙緩沖器程序,從暫停文件恢復系統(tǒng)存儲器。該雙緩沖器系統(tǒng)從暫停文件讀出被壓縮的數(shù)據(jù),寫到段C000H,擴展它并寫進系統(tǒng)存儲器。兩個程序工作在分時方式下一個從暫停文件讀出數(shù)據(jù)并把它寫入段C000H,而另一個擴展數(shù)據(jù)并把擴展過的數(shù)據(jù)寫進系統(tǒng)存儲器。后者運行在前后,而前者是中斷驅(qū)動的程序,運行在后臺。很明顯,因為只有一個CPU40,在一給定時刻只有一個程序可以運行;但是,因為前一個程序是中斷驅(qū)動的,它可以根據(jù)來自暫停文件的數(shù)據(jù)的傳送速度的優(yōu)化要求,來中斷后一個程序的執(zhí)行。兩個緩沖器的每一個都是8K字節(jié)長,這被相信為可優(yōu)化傳送時間。
這個進程開始于486處,即讀暫停文件并對段C000H寫入足夠的數(shù)據(jù)以填充第一個8K緩沖器。此時,在306處開始從緩沖器讀程序,該程序一般表示在489處。從緩沖器讀程序489是一個中斷驅(qū)動程序,它運行在后臺,并由任務490-492組成。一般標明在493處的擴展程序由任務494-498組成而且是前臺程序。首先,在490處,從緩沖器讀程序開始讀暫停文件的下一個8K并把它寫進另一個緩沖器即現(xiàn)在的當前緩沖器里。在從緩沖器讀程序從暫停文件讀下一個8K并把它寫進當前緩沖器的同時,在494處,擴展程序讀由任務486填充的緩沖器,擴展被壓縮數(shù)據(jù),并把擴展后的數(shù)據(jù)寫進系統(tǒng)存儲器。一旦擴展程序493擴展該緩沖器里的所有數(shù)據(jù),在496處,下一個步驟是判別是否全部系統(tǒng)存儲器已經(jīng)被擴展。
IDE控制器86不能從硬磁盤機31里非??斓刈x數(shù)據(jù)。作為后果,擴展程序493決是在從緩沖器讀程序489完成把數(shù)據(jù)從硬磁盤機31讀進當前緩沖器之前,完成對尚未寫入到硬磁盤機31的8K緩沖器的擴展處理。因此,擴展程序493必須等待從緩沖器讀程序489完成從硬磁盤機31讀數(shù)據(jù)。如果擴展程序493尚沒有完成全部擴展處理和把數(shù)據(jù)全部寫進系統(tǒng)存儲器,則在498處擴展程序493等待從緩沖器讀程序489。擴展程序493和從緩沖器讀程序通過一組標志通信。當從緩沖器讀程序489結束從暫停文件向當前緩沖器寫數(shù)據(jù)的時候,在490處,該程序489接著切換緩沖器標志,指示擴展程序493可以開始對剛從暫停文件讀到緩沖器的數(shù)據(jù)進行擴展。在492處,從緩沖器讀程序接著判別是否還有8K數(shù)據(jù)塊仍然要從暫停文件中讀出。如果不,在502處從緩沖器讀程序從暫停文件讀出剩余數(shù)據(jù)并寫到當前緩沖器里。然后從緩沖器讀程序停止在后臺運行,實際上在500處等待擴展程序完成對最后存儲器的擴展。
在其間,通過確定該沖器標志,擴展程序493確定一個緩沖器已準備好以對系統(tǒng)存儲器進行擴展。也就是說,擴展程序在498處等待直到從緩沖器讀程序完成當對前緩沖處的操作,在這個時候在494處繼續(xù)擴展循環(huán)。
一旦擴展程序完成擴展所有的系統(tǒng)存儲器,沒有后臺程序在進行中,在504處主程序繼續(xù)。
接著,在504處和506處,通過把來自D000H數(shù)據(jù)結構的值寫到視頻控制器56和IDE控制器86各自的寄存器里,這兩個設備被恢復。接著,在508處,通過分別地把適當值寫入CPU40和高速緩存控制器62,CPU高速緩存41和系統(tǒng)高速緩存被允許工作。接著,在510處到514處,通過把來自段D000H數(shù)據(jù)結構的值寫到定時器控制器102、8042鍵盤接口微處理機104和8259中斷控制器92各自的寄存器里,恢復程序恢復這些設備的狀態(tài)。
接著,在516處,恢復程序調(diào)用交換BIOS數(shù)據(jù)區(qū)和向量表程序。在該程序被調(diào)用之前,段0000H里的已知BIOS數(shù)據(jù)區(qū)和向量表是有效的,而從暫停文件上讀出在段D000H數(shù)據(jù)結構里的BIOS數(shù)據(jù)區(qū)和向量表是無效的。在交換之后,已知的BIOS數(shù)據(jù)區(qū)和向量表在段D000H里是無效的,而由暫停程序保留的BIOS數(shù)據(jù)區(qū)和向量表在段0000H里是有效的。
終于,在518處,恢復程序轉(zhuǎn)移到復原CPU程序,它把CPU復原到暫停之前的狀態(tài)。復原CPU程序?qū)⒃诤蛨D14對應的文字段落里更充分地說明。復原CPU程序最終把執(zhí)行控制傳送回給APM。
最后,CPU40執(zhí)行RETURN指令,使得系統(tǒng)返回到APM。系統(tǒng)現(xiàn)在繼續(xù)執(zhí)行指令仿佛系統(tǒng)從未暫停過。出于全部實用目的,系統(tǒng)不受暫停/恢復進程的影響。
現(xiàn)參照圖13,它表示保留CPU狀態(tài)程序流程圖。在600處暫停程序轉(zhuǎn)移到保留CPU狀態(tài)程序。請注意APM允許段E000H和F000H,程序可按讀/寫對它們執(zhí)行。另外,如在602所標明的,E-FLAGS和八個通用寄存器被APM保留。保留CD0狀態(tài)程序首先在604處等待任何DMA(操作)的結束,并和鼠標器數(shù)據(jù)包同步,以保證該程序在鼠標器包傳輸之間執(zhí)行。下述步驟允許結束DMA和與鼠標器包同步(1)允許中斷,(2)等待7毫秒使任何DMA結束,(3)禁止中斷,(4)為鼠標器包邊界等待5毫秒,(5)允許中斷,(6)為鼠標器包的到達等待長于五毫秒和(7)禁止中斷。在這些步驟之后,代碼可安全地執(zhí)行于鼠標器包之間。
接著,在606處,地址線20(I/O端口92H)的狀態(tài)被推進棧,在608處算術協(xié)同處理器44的狀態(tài)被推進棧。然后在610處,標志被設置或被清除以分別表明CPU是在32位還是在16位方式下執(zhí)行。
在612處,被執(zhí)行代碼的流程分支,這取決于CPU40是否執(zhí)行在保護方式下。如果CPU40不是執(zhí)行在保護方式下,則它必然執(zhí)行在實址方式下,因而寄存器可以以非常直接的方式保留。首先,在614處,計算機狀態(tài)字和CR3里的值被寫進段E000H數(shù)據(jù)結構。同時在614處,零被寫進到段E000H數(shù)據(jù)結構里對應于TR和LDTR的區(qū)域里,因為在實址方式下IR和LDTR為零。
代碼在616處和共同的代碼路徑會合,在那里存儲在GDTR和LDTR里的值被寫入段E000H數(shù)據(jù)結構。接著在618處被執(zhí)行代碼的流程分支,這取決于CPU40是否執(zhí)行在虛擬8086方式下。如果CPU40不是執(zhí)行在虛擬8086方式下。則代碼繼續(xù)沿共同路徑進入任務620,在那里查錯寄存器DR7、DR6、DR3、DR2、DR1和DR0被推進棧。這些寄存器由查錯程序和其它程序使用。接著在622,DS、ES、FS和GS被推進棧。接著CS、S和ESP的值被寫進段E000H數(shù)據(jù)結構。
在這時,所有的要寫入段E000H的值已都被寫入,這樣在626處陰影RAM段E000H和F000H可以被變回只讀方式。接著,在628處,CPU高速緩沖41經(jīng)寫回和無效高速緩存指令被沖洗。
最后,在630處,唯一的關機標志在CMOS非易失存儲器96里置為設置。最后在632處,保留CPU狀態(tài)程序?qū)嶋H上“返回”至暫停程序。該“返回”實際上是繼之以代碼分支的RESET(復位)。CPU40通過轉(zhuǎn)移至復位向量指向的代碼來復位。把CPU40復位迫使CPU進入實址方式,在這種方式下所有的設備和存儲器單元都可被訪問而無須擔心產(chǎn)生保護故障。在這以后,CPU的狀態(tài)已被保留,暫停程序應該保留系統(tǒng)其它部分的狀態(tài)。
在由復位向量指向的代碼之內(nèi),程序控制分支,取決于CMOS96里的關機標志是否為設置。如果關機標志為清除,則系統(tǒng)如常規(guī)那樣進行引導。另一方面,如果關機標志為設置,則代碼轉(zhuǎn)移到暫停程序的剩余部分,也就是說,執(zhí)行控制轉(zhuǎn)移到暫停程序圖10里的任務253,暫停程序完成暫停系統(tǒng)10。這樣,保留CPU狀態(tài)程序有效地在632處“返回”暫停程序。
回過來參照任務612,如果CPU處于保護方式,則在任務634代碼分支,這取決于CPU是否處于虛擬8086方式。如果CPU不處于虛擬8086方式,則在任務636處代碼再次分支,取決于當前特權級是否為零。如果當前特權是除零之外的任何值,則一個不具有適當特權的程序來執(zhí)行保留CPU狀態(tài)程序并且調(diào)用致命暫停錯誤程序(開始于任務652)。致命暫停錯誤程序?qū)⒃谙旅嬗懻摗H绻绦蚩刂茝闹旅鼤和ee誤程序返回,則CPU必須回到保留CPU狀態(tài)程序被調(diào)用前的條件,這樣執(zhí)行轉(zhuǎn)移到圖14的任務794,它執(zhí)行CPU的部分復原。因為非常少的CPU被修改過,只需要部分復原。
回過來參照任務636,如果調(diào)用的代碼具有合適的特權級,則在642處繼續(xù)保留操作,CP0,CR3,TR和LDTR的值被保留到段E000H數(shù)據(jù)結構。然后該代碼路徑在616處和共同代碼路徑會合,在那里,如已說明過的,GDTR和IDTR的值被保留到E000H數(shù)據(jù)結構里。從這里,代碼經(jīng)過上面說明過的從618到632的路徑,結果是“返回”(RESET加上轉(zhuǎn)移)到剩余的暫停程序代碼。
回過來參照任務634,如果CPU40處于虛擬8086方式,則在644處繼續(xù)執(zhí)行,在那里計算機狀態(tài)字(CR0的低16位)的值被保留在E000H數(shù)據(jù)結構里,并且段E000H里的一個標志被設置,以指明CPU處于虛擬8086方式。然后該代碼通過646和648的傳送在616處和共同的代碼會合。在任務618,如果CPU處于虛擬8086方式,則控制轉(zhuǎn)移到650,在那里DS、ES、FS和GS里的值被保留到段E000H數(shù)據(jù)結構里。該代碼在624處再次會合共同的代碼。從這里,代碼經(jīng)過前面已說明過的從624到632的路徑,結果“返回”到剩余暫停程序代碼(RESET加上轉(zhuǎn)移)。
在任務652到664可以找到致命暫停錯誤程序,如果具有不正確特權級的代碼試圖保留CPU的狀態(tài),該程序在638處被調(diào)用。首先,在654,通過把07H再把05H寫進功率管理端口,故障保險定時器被設置,如在和圖7對應的文字段落里已說明過的那樣。然后在任務656,揚聲機以886赫0.25秒的長度蜂嗚三次,蜂鳴的間隔為1/6秒。三次蜂鳴提醒用戶試圖的暫停未能產(chǎn)生。在蜂鳴之后,在658處故障保險定時器再次被重置,以在故障保險定時器期滿把電源17關閉之前給用戶15到20秒的期待時間。
接著,在任務660和662,致命暫停錯誤程序反復地檢驗,查看是否開關21被用戶按下,其表明用戶希望異常結束暫停。對開關閉合的檢驗是通過在對功率管理端口進行讀后等待出現(xiàn)FFH來實現(xiàn)的,如在和圖7對應的文字段落里已說明過的那樣。如果用戶按下按鈕21,則執(zhí)行控制返回到上面的任務640。如果在15到18秒中用戶未按下按鈕21,則故障保險定時器將期滿,電源17將被“關掉”,而且,很明顯,對代碼的所有執(zhí)行將停止。
現(xiàn)參照圖14,其中表示開始于700處的復原CPU程序的流程圖。這個程序被恢復程序在其它的硬件和存儲器復原到它們暫停之前的狀態(tài)后調(diào)用。首先,如果段E000H和F000H尚未處于讀/寫,在702處它們應成為讀/寫。
接著在704處,被執(zhí)行代碼的流程分支,取決于在暫停的時候CPU40是否執(zhí)行在虛擬8086方式下。如果當系統(tǒng)10被暫停的時候CPU40執(zhí)行在虛擬8086方式下,則代碼從任務706進行到任務728,它們等同于虛擬8086CPU復原。然后代碼和從任務730到738的共同的路徑會合。
如果當狀態(tài)被保留時CPU處于虛擬8086方式,則CR3、LDTR和TR不能被保留CPU狀態(tài)程序訪問,因而也就無法把它們的值保留在E000H數(shù)據(jù)結構里。因此,CR3、LDTR和TR必須分別在706處、708處和710處被估算。一般而言,它們的估算是通過對RAM53等找由CR3、LDTR和TR指向的結構來進行的。例如,找出在GDT(圖示顯示終端)里的LDT(邏輯設備表)入口,即允許確定LDTR。
CR3在任務706估算。CR3保持頁面目錄基址寄存器,該寄存器保持頁面目錄的頁框地址、頁面級高速緩存禁止(PCD)位和頁面級寫通過(PWT)位。知道頁面目錄必須開始于系統(tǒng)RAM53的4K邊界上,知道由保留CPU狀態(tài)程序保留在段E000H數(shù)據(jù)結構里的IDTR和GDTR的值并假設BIOS代碼從地址空間0E0000-0F0000上執(zhí)行,可以完成對PDBR的估算。上述假設是合理的,因為BIOS代碼出于速度的原因已經(jīng)遮蔽到陰影RAM中。如果操作系統(tǒng)把BIOS代碼復制到不同的區(qū)域,則對CR3的估算將失敗。
借助上面的知識和假設,為鑒定對應于BIOS代碼段的頁面轉(zhuǎn)換表的存在,對物理存儲器的每4K頁面進行檢驗。也就是說,在頁面中0380的偏移將包含值000E0XXX、000E1XXX、000E2XXX、…000FFXXX。一旦頁面被定位,對系統(tǒng)RAM53尋找一個頁面目錄,該頁面目錄的第一個入口對應于上面定位的頁面表的物理位置。該頁面目錄的物理地址是對PDBR值的好的“猜測”。
然后通過確保假設PDBR正確地為GDTR和IDTR轉(zhuǎn)換地址,該假設PDBR得到證實。也就是說,該PDBR被用來轉(zhuǎn)換GDTR的線性地址并且GDT的第一個入口被校驗并確認為空(在任何CPU方式下GDT的前八個字節(jié)總是為00H)。然后該回送的物理地址被檢驗并確認為在物理存儲器的邊界之內(nèi)。為實現(xiàn)線性地址到物理地址的轉(zhuǎn)換,使用了一個模仿CPU轉(zhuǎn)換方法的子程序;被轉(zhuǎn)換地址在ESI里回送,并且如果物理頁面出現(xiàn)在物理存儲器之中進位標志CF被清除,而如果物理頁面不出現(xiàn)在存儲器里CF置為設置。利用這個轉(zhuǎn)換程序,從存儲器53里讀GDT的第一個字節(jié)。如果GDT的第一個入口為空,則該假設PDBR通過它的第一次檢驗,因而,被再次檢驗。然后利用該轉(zhuǎn)換程序,該PDBR被用來轉(zhuǎn)換IDTR以尋找TDT。然后被回送的物理地址被檢驗為在物理存儲器的邊界之內(nèi)。如果IDT的第一個位置出現(xiàn)在物理存儲器里,則PDBR通過它的第二次檢驗。
如果假設的PDBR正確地轉(zhuǎn)換到GDTR和IDTR,則該值被假設為PDBR并被寫到段E000H數(shù)據(jù)結構里的CR3區(qū)。如果,另一方面,該假設的CR3失敗于二個檢驗中的一個,則程序重新開始,對系統(tǒng)存儲器尋找另一個BIOS代碼段頁面轉(zhuǎn)換表,它也許導致有效的CR3。
對常規(guī)的平面操作9PCD和PWT總是假設為固定在00H處。這些值設定為零并和PDBR一起寫入段E000H數(shù)據(jù)結構的CR3區(qū)里。
一旦CR3被估計,在708處LDTR被估計。知道LDT在GDT里的某個地方和知道LDT必須出現(xiàn)在存儲器里,在CR3被估計出的條件下LDTR可被估計。為估計LDTR,對GDT尋找明顯出現(xiàn)的LDT。出現(xiàn)在物理存儲器里(利用任務706對應的文字段落里所說明過的轉(zhuǎn)換程序來檢驗)和明顯出現(xiàn)的第一個LDT被假設為由LDTR指向的表。該表的起始物理地址被保留在段E000H數(shù)據(jù)結構里的LDTR區(qū)里。
上面估計LDTR的方法被認為在應用上足夠可靠,即使在OS/2情況下多于一個的LDT可能明顯出現(xiàn)并可出現(xiàn)在物理存儲器里,也是如此。EMM386是一個普通的虛擬8086方式程序,因而看上去可能引起問題;但是,EMM386的CR3和LDTR是容易估計的,因為EMM386只具有一個CR3和一個LDTR。
一旦CR3和LDTR被估計,在710處估計TR。本質(zhì)上,在GDT和LDT里的各個任務選擇程序入口中尋找?guī)в忻ξ唤M的一個任務狀態(tài)選擇程序。對各個入口的類型字段進行檢驗,查看它是否是忙80286任務狀態(tài)選擇程序或者是忙80486任務狀態(tài)選擇程序。帶有忙286TSS或者帶有忙486TSS的第一個入口被假定為TR指向的位置。帶有忙286或486TSS的入口的物理位置被保留在段E000H數(shù)據(jù)結構里的TR區(qū)中。如果沒有具有忙286或486TSS的入口,則把零存到段E000H數(shù)據(jù)結構里的TR區(qū)中。
在估計CR3、LDTR和TR之后,代碼在712處繼續(xù)。在712處,如果TR指向有效的TSS,則在714處由TR指向的TSS里的忙位被清除。不管怎樣,代碼在716處繼續(xù),在那里對DS、ES、FS和GS裝上對GDT有效的選擇程序。然后在718對CR3和CR0裝上來自段E000H數(shù)據(jù)結構的值。接著,在720,允許分頁,這樣線性地址和物理地址相同的唯一區(qū)域是段E000H和F000H里的區(qū)域。然后,在722處,對IDTR、GDTR、LDTR和TR裝入存儲在段E000H數(shù)據(jù)結構里的值。
最后,在724和726處,通過把對應于GS、FS、DS、ES、SS、ESP、EFLAGS(在設置VM位后)和CS來自段E000H數(shù)據(jù)結構的值推進棧,建立虛擬8086中斷棧。同樣,在726處對應于任務730處的代碼的返回地址被推進棧。最終,IRETD指令被執(zhí)行以把CPU40置回虛擬8086方式并把執(zhí)行傳送給任務730所對應的代碼。
任務730開始共同的調(diào)度,它被圖14里的各個不同的調(diào)度所使用。在任務730,協(xié)同處理器44從保留在段E000H數(shù)據(jù)結構里值復原。接著在732處,地址線20(I/O端口92H)的狀態(tài)從棧彈出。然后在734處,陰影RAM段C000H重新被置為只讀。在736處,通過把01H寫到功率管理端口APM和硬件連接,如在和圖7對應的文字段落里已說明的那樣。然后在738處,陰影RAM段E000H和F000H重新被置為只讀。最后,在740,復原CPU狀態(tài)程序設定標志指明發(fā)生常規(guī)的復原。任務742、744和746不被復原CPU狀態(tài)程序執(zhí)行,而只是用來顯示在返回到被暫停事件中斷的代碼之前的某時刻,八個通用寄存器被彈出棧,可屏蔽中斷被允許(假定當以前代碼被中斷時它們曾被允許的),而且標志彈出棧。最后,復原CPU狀態(tài)程序返回到監(jiān)督程序,監(jiān)督程序把控制返送給APM,APM更新任何過時的系統(tǒng)值并把控制返回給中斷發(fā)生時的代碼。
現(xiàn)再回到參照任務704,如果CPU過去被中斷時不處于虛擬8086方式,則代碼經(jīng)過從750到792的路徑,在792處代碼和從730到748的共同調(diào)度相會合。在750,如果在段E000H數(shù)據(jù)結構里的TR值指明TR指向有效的TSS,則在752處該TSS的忙位被清除。不論發(fā)生什么情況,接著在754處,對GDTR和CR0裝入來自段E000H數(shù)據(jù)結構的值。
然后,在任務756到764,偽頁面目錄表和偽頁面轉(zhuǎn)換表被裝入段C000H。首先,在756處,陰影RAM段C000H被設為讀/寫。第二,在758處,一個新的頁面目錄表在位置0C000H上建立。第三,在760處,該新頁面目錄表里的第一個入口被修改為指向0C1000H。第四,在762處,在0C1000H處建立一個新的頁面轉(zhuǎn)換表,使得地址0E0000到0FFFFF是存在的并且在這個地址范圍內(nèi)線性地址等于物理地址。最后CR3里頁面目錄基址寄存器被裝入0C0000H,這樣完成在0C0000H里的新偽頁面目錄和頁面轉(zhuǎn)換表的地址轉(zhuǎn)換。當在任務754里CR0被裝入時分頁是重新激活的(如果可應用的話)。
接著,在766處,陰影RAM段E000H和F000H被設為讀/寫。然后,如果CPU40當它以前被暫停時在執(zhí)行16位代碼,則在770處,它曾處于16位方式并且指向16位代碼路徑的偏移被保留到段E000H數(shù)據(jù)結構中。另一方面,如果CPU40過去不處在16位方式,則它曾是32位方式,在772處指向32位代碼路徑的偏移被保留到段E000H數(shù)據(jù)結構時,以代替16位偏移。無論發(fā)生什么情況,這些代碼路徑是并列的,唯一的不同點在于一個使用16位操作數(shù)而另一個使用32位操作數(shù)。任務770和772只把偏移設置進并列路徑中的一條。在下面的任務782處進入這些路徑中的一條(對應于該偏移的一條)。
接著,在774,來自段E000H數(shù)據(jù)結構的CR3值被裝入EDX,來自段E000H數(shù)據(jù)結構的SS值被裝入CX,來自段E000H數(shù)據(jù)結構的TR值被裝入ESI的上半部而且來處段E000H數(shù)據(jù)結構的LDTR值被裝入ESI(SI)的下半部。在下面這些值被移到它們的適當單元中。然后,在776處,GDTR、LDTR和CR0被裝入來自段E000H數(shù)據(jù)結構的它們的值。在778處,把存儲在SI里的LDTR值裝入LDTR。然后代碼遠轉(zhuǎn)移到置在任務770或772里的偏移上。通過直接把操作碼放到源代碼中和采用來自770或772中的一個偏移,該遠轉(zhuǎn)移被編碼。在782,代碼然后沿16位操作碼路徑或32位操作碼路徑中的一條繼續(xù)執(zhí)行。
接著在784處,把存儲在EDX里的CR3值裝入CR3,把存儲在CX里的SS值裝入SS,把存儲在EBP里的ESP值裝入ESP。在786處,則把GS、FS、ES和D6從棧內(nèi)彈出。在788處,如果被中斷的CPU40過去是保護方式下的執(zhí)行代碼,則在790處把存儲在ESI上半部里的TR值裝入TR。不論是那種情況,代碼在任務792處繼續(xù),在792處查錯寄存器DR0、DR1、R2、DR3、DR6和DR7從棧中彈出。
這里,代碼路徑和從任務730到748的共同的路徑會合,該共同路徑前面已作過說明。在794處,誤差恢復程序也從保留CPU狀態(tài)程序的任務640加入到共同的路徑。
現(xiàn)在參照圖15,其中表示開始于800處的保留8259狀態(tài)程序的流程圖。在802處,保留8259的狀態(tài)的操作從保留被實時時鐘使用的周期中斷值開始,在804處把所有其它可讀寄存器保留到段E000H數(shù)據(jù)結構。計算機系統(tǒng)10的體系結構要求某些8259只讀寄存器具有固定值,如技術上所周知的那樣。這些值是知道的并不需要被確定。難于得到的8259值是8259基地址、8259從地址以及這兩個8259是否設置為是待決的還是被OS用于中斷的。
利用圖15的剩余代碼這四個上述的項目被確定。在806處8259被屏蔽,只留下鍵盤12和鼠標器13中斷不被屏蔽。
接著,在808處,通過把物理存儲器的底層1K復制到段C000H數(shù)據(jù)結構,保留中斷向量表。然后,在810處,一個新的“偽”中斷向量表被裝入物理存儲器的底層1K中,這是通過裝入256個相同的偽向量來實現(xiàn)的,這256個偽向量指向開始于段C800H的256個偽中斷服務程序。在812處,這256個偽中斷服務程序在段C800H里被生成。
然后在814處,鍵盤12和鼠標器13中斷被禁止。在816處,任何未確認的鍵盤12和鼠標器13中斷被確認。
在818處,然后產(chǎn)生一個鍵盤中斷,而且在820處,該中斷被檢驗,以查看基8259是否設置為是待決的或是服務中的。該值則被寫進段E000H數(shù)據(jù)結構。在822處,代碼等待該中斷得到服務。在824處,通過調(diào)用一個偽處理程序,該中斷得到服務。調(diào)用偽服務程序來確定8259基地址和確定8259過去是否處于待決或使用方式,基地址和方式被保留在段E000H數(shù)據(jù)結構里。
對從屬8259在任務826、828、830和832中執(zhí)行類型的過程。
在834處,通過把來自C000H數(shù)據(jù)結構的值復制回到物理存儲器的底層1K,中斷向量表被復原。然后,在836處段C000H重新成為只讀,在838處所有中斷被屏蔽,在840處準備返回到調(diào)用程序。
盡管本發(fā)明通過其實施例的描述得到說明,并且盡管該實施例得到相當詳細的說明,但是把所附權利要求書的范圍約束在和以任何方式限制在這些細節(jié)上決不是申請人的意圖。對于熟悉技術的人附加的優(yōu)點及修改是顯而易見的。例如,如上面曾描述的,電話鈴聲檢測電路在相連的電話線路呼叫時可把計算機系統(tǒng)10從暫停狀態(tài)154改變到常規(guī)運行狀態(tài)150。因此,本發(fā)明在它的更廣闊的方面不受到特定細節(jié),示意設備和方法以及所展示和所描述的示例的限制。因此,在不違反申請人的總發(fā)明概念的實質(zhì)或范圍的前提下可對這些細節(jié)作出更改。
權利要求
1.一種用于運行操作系統(tǒng)和應用程序的桌上型計算機系統(tǒng),包括(a)一個CPU;(b)一個電源,該電源具有用于從一個外部功率源有選擇地向上述計算機系統(tǒng)提供系統(tǒng)功率的電路,該電源具有一個第一供電狀態(tài)和一個第二供電狀態(tài),在上述第一供電狀態(tài)下上述電源從一個外部功率源向上述計算機系統(tǒng)提供系統(tǒng)功率和輔助功率,在上述第二供電狀態(tài)下上述電源不從外部功率源向上述計算機系統(tǒng)提供系統(tǒng)功率,而是從外部功率源向上述計算機系統(tǒng)提供輔助功率,(c)一個通過電路與上述CPU進行通信的電-機械式非易失性存貯設備,(d)通過電路與上述CPU進行通信的、用于保存存貯器數(shù)據(jù)的易失性系統(tǒng)存貯器,(e)通過電路與上述CPU進行通信的、用于保存寄存器數(shù)據(jù)的易失性系統(tǒng)寄存器,(f)一個通過電路與上述CPU進行通信的控制電路,該控制電路用于響應于一個預先選定的中止事件,有選擇地將上述計算機系統(tǒng)的狀態(tài)從一個正常工作狀態(tài)改變?yōu)橐粋€中止狀態(tài);(1)在上述正常工作狀態(tài)下,上述電源處于第一供電狀態(tài)下,上述計算機系統(tǒng)此刻能夠運行應用程序;(2)在上述中止狀態(tài)下,寄存器數(shù)據(jù)和存貯器數(shù)據(jù)被存貯到上述的電-機械式非易失性存貯設備中;上述電源處于第二供電狀態(tài);(3)上述控制單元響應于上述預先選定的中止事件所進行的從上述正常操作狀態(tài)至上述中止狀態(tài)的變化包括以下步驟(i)可逆地變換存貯器數(shù)據(jù)和寄存器數(shù)據(jù),以及(ii)將經(jīng)過可逆性變換的存貯器數(shù)據(jù)和寄存器數(shù)據(jù)寫入上述的電-機械非易失性存貯設備,從而使上述計算機系統(tǒng)的狀態(tài)能以此為基礎進行恢復,(4)上述電源響應于上述控制單元在上述的二個供電狀態(tài)之間變化;(5)上述的從正常工作狀態(tài)至中止狀態(tài)的變換還包括以下步驟上述控制單元響應于上述的預先選定的中止事件使上述電源從上述的第一供電狀態(tài)改變?yōu)樯鲜龅牡诙╇姞顟B(tài)。
2.如權利要求1所述的桌上型計算機系統(tǒng),其中,所述的控制單元包括一個電源管理處理器和由上述CPU執(zhí)行的代碼。
3.如權利要求1所述的桌上型計算機系統(tǒng),其中,上述控制單元至少部分以時分多重的方式執(zhí)行(1)可逆地變換存貯器數(shù)據(jù)和寄存器數(shù)據(jù),和(2)把經(jīng)過可逆性變換的存貯器和寄存器數(shù)據(jù)寫入上述電-機械或非易失性存貯設備中。
4.如權利要求1所述的桌上型計算機系統(tǒng),其中,上述控制單元執(zhí)行的(1)可逆地變換存貯器數(shù)據(jù)和寄存器數(shù)據(jù),(2)將經(jīng)過可逆性變換的存貯器數(shù)據(jù)和寄存器數(shù)據(jù)寫入上述的電-機械式非易失性存貯設備是以這樣的方式進行的先將一部分數(shù)據(jù)進行可逆性變換,存貯到一個第一數(shù)據(jù)緩沖器中,然后,至少部分以時分多重的方式,上述的經(jīng)可逆性變換的數(shù)據(jù)被從該第一數(shù)據(jù)緩沖器寫入電-機械式非易失性存貯設備中,同時另一部分數(shù)據(jù)被進行可逆性變換并存貯到一個第二數(shù)據(jù)緩沖器中,其中,以上的步驟相對于哪一個數(shù)據(jù)緩沖器被使用而交替進行。
5.如權利要求1所述的桌上型計算機系統(tǒng),其中,上述控制單元在一個由中斷驅(qū)動的程序的作用下至少部分地在前臺可逆地變換存貯器數(shù)據(jù)和寄存器數(shù)據(jù),至少部分地在后臺將經(jīng)過可逆性變換的存貯器和寄存器數(shù)據(jù)寫入上述的電-機械式非易失性存貯設備中。
6.如權利要求1所述的桌上型計算機系統(tǒng),其中,上述控制單元通過使用一種行程長度編碼方法來對存貯器數(shù)據(jù)和寄存器數(shù)據(jù)進行壓縮的方式來可逆地改變存貯器數(shù)據(jù)和寄存器數(shù)據(jù)。
7.如權利要求1所述的桌上型計算機系統(tǒng),其中,上述控制單元響應于至少一個預先選定的恢復事件,有選擇地將上述計算機系統(tǒng)的狀態(tài)從上述的中止狀態(tài)改變成正常工作狀態(tài);其中,上述的控制單元響應于上述的預先選定的恢復事件,執(zhí)行以下步驟(i)從上述的電-機械式非易失性存貯設備讀出經(jīng)過可逆性變換的存貯器數(shù)據(jù)和寄存器數(shù)據(jù);(ii)對經(jīng)過變換的存貯器數(shù)據(jù)和寄存器數(shù)據(jù)進行逆變換;(iii)將存貯器數(shù)據(jù)寫入易失性系統(tǒng)存貯器中,將寄存器數(shù)據(jù)寫入易失性系統(tǒng)寄存器中。
8.如權利要求7所述的桌上型計算機系統(tǒng),其中,上述控制單元至少部分地以時分多重的方式執(zhí)行(1)對經(jīng)過變換的存貯器數(shù)據(jù)和寄存器數(shù)據(jù)進行逆變換和(2)從上述的電-機械式非易失性存貯設備中讀出經(jīng)過可逆性變換的存貯器數(shù)據(jù)和寄存器數(shù)據(jù)。
9.如權利要求7所述的桌上型計算機系統(tǒng),其中,上述控制單元在一個由中斷驅(qū)動的程序的作用下至少部分地在前臺將經(jīng)變換的存貯器和寄存器數(shù)據(jù)進行逆變換,并且上述控制單元至少部分地在后臺從上述的電-機械式非易失性存貯裝置讀出經(jīng)過可逆性變換的存貯器數(shù)據(jù)和寄存器數(shù)據(jù)。
10.一種用于運行操作系統(tǒng)和應用程序的桌上型計算機系統(tǒng),該系統(tǒng)包括(a)一個CPU;(b)至少一個通過電路與上述CPU進行通信的電子設備,上述的至少一個電子設備具有相應的設備驅(qū)動程序,上述設備驅(qū)動程序可由上述CPU加以執(zhí)行,從而將上述的至少一個電子設備初始化成一個不同于上述的至少一個電子設備的加電狀態(tài)的已知狀態(tài);(c)一個電源,該電源具有用于有選擇地從一個外部功率源向上述的計算機系統(tǒng)提供系統(tǒng)功率的電路,上述電源具有一個第一供電狀態(tài)和一個第二供電狀態(tài);(d)一個通過電路與上述CPU進行通信的非易失性存貯設備;(e)通過電路與上述CPU進行通信的、用于保存存貯器數(shù)據(jù)的易失性系統(tǒng)存貯器;(f)通過電路與上述CPU進行通信的、用于保存寄存器數(shù)據(jù)的易失性系統(tǒng)寄存器;(g)一個通過電路與上述CPU進行通信的控制單元,該控制單元用于響應于一個預先預定的中止事件將上述計算機系統(tǒng)的狀態(tài)從一個正常工作狀態(tài)改變?yōu)橐粋€中止狀態(tài);并且用于響應于至少一個預定的恢復事件有選擇地將上述計算機系統(tǒng)的狀態(tài)從上述的中止狀態(tài)改變?yōu)樯鲜龅恼2僮鳡顟B(tài);(h)一個通過電路與上述CPU和上述控制單元進行通信的引導單元,該引導單元可由CPU加以執(zhí)行,以響應于上述的至少一個預定的恢復事件來執(zhí)行至少一個第一預定恢復引導任務;(1)在上述的正常工作狀態(tài)下,上述的電源處于第一供電狀態(tài),上述的計算機系統(tǒng)能夠響應于用戶命令或者操作系統(tǒng)而執(zhí)行上述的應用程序;(2)在上述的中止狀態(tài)下,上述寄存器數(shù)據(jù)和上述存貯器數(shù)據(jù)被存貯在上述的非易失性存貯設備中,上述電源處于第二供電狀態(tài);(3)上述的從正常工作狀態(tài)中止狀態(tài)的改變包括上述控制單元響應于上述的預先選定的中止事件將存貯器數(shù)據(jù)和寄存器數(shù)據(jù)以上述的系統(tǒng)存貯器和系統(tǒng)寄存器拷貝到上述的非易失性存貯設備中;(4)上述的電源響應于上述控制單元在上述的二個供電狀態(tài)之間變化;(5)上述的從正常工作狀態(tài)至中止狀態(tài)的改變還包括上述的控制單元響應于上述的預先選定的中止事件使上述電源從第一供電狀態(tài)改變?yōu)榈诙╇姞顟B(tài);(6)上述的第一預定恢復引導任務包括響應于上述的至少一個預定的恢復事件,將上述的設備驅(qū)動程序裝載到上述系統(tǒng)存貯器中并執(zhí)行該設備驅(qū)動程序,從而將上述的至少一個電子設備初始化成一個不同于所述的至少一個電子設備的加電狀態(tài)的已知狀態(tài)。
11.如權利要求10所述的桌上型計算機系統(tǒng),其中,(1)上述的從中止狀態(tài)至正常工作狀態(tài)的變化包括上述控制單元響應于上述的預先選定的恢復事件從非易失性存貯設備中讀出存貯器數(shù)據(jù)和寄存器數(shù)據(jù);(2)在執(zhí)行上述設備驅(qū)動程序使上述設備驅(qū)動程序的至少一部分常駐在上述系統(tǒng)存貯器中以便進一步執(zhí)行的條件下,常駐在上述系統(tǒng)存貯器中的那部分設備驅(qū)動程序被從上述非易失性存貯設備讀取的數(shù)據(jù)所重寫。
12.一種用于運行一個操作系統(tǒng)和一個應用程序的桌上型計算機系統(tǒng),該系統(tǒng)包括(a)一個CPU;(b)一個電源,該電源具有用于有選擇地從一個外部功率源向上述計算機系統(tǒng)提供系統(tǒng)功率的電路,上述電源具有一個第一供電狀態(tài)和一個第二供電狀態(tài);(c)一個通過電路與上述CPU進行通信的非易失性存貯設備;(d)一個通過電路與上述CPU進行通信、用于保存存貯器數(shù)據(jù)的易失性系統(tǒng)存貯器;(e)一個通過電路與上述CPU進行通信、用于保存寄存器數(shù)據(jù)的易失性系統(tǒng)寄存器;(f)一個通過電路與上述CPU進行通信的控制單元,該控制單元用于響應于一個預先選定的中止事件有選擇地將上述計算機系統(tǒng)的狀態(tài)從一個正常工作狀態(tài)在改變?yōu)橐粋€中止狀態(tài);以及用于響應于至少一個預定的恢復事件將上述計算機系統(tǒng)的狀態(tài)從中止狀態(tài)改變?yōu)檎9ぷ鳡顟B(tài);以及(g)一個通過電路與上述CPU和控制單元進行通信的引導單元,該引導單元能由上述CPU加以執(zhí)行,響應于至少一個預定的恢復事件的執(zhí)行至少一個第一預定恢復引導任務;上述引導單元具有與之相關聯(lián)的、可由上述CPU加以執(zhí)行的多個設備驅(qū)動器,所述設備驅(qū)動器用于將多個電子設備初始化成不同于這些電子設備的加電狀態(tài)的一個已知狀態(tài),所述的多個設備驅(qū)動器被按優(yōu)先序排列成至少一個預定的子集;(1)在上述的正常工作狀態(tài)下,上述的電源處于第一供電狀態(tài),上述的計算機系統(tǒng)能夠響應于用戶命令或者操作系統(tǒng)而執(zhí)行上述的應用程序;(2)在上述的中止狀態(tài)下,上述寄存器數(shù)據(jù)和上述存貯器數(shù)據(jù)被存貯在上述的非易失性存貯設備中,上述電源處于第二供電狀態(tài);(3)上述的從正常工作狀態(tài)中止狀態(tài)的改變包括上述控制單元響應于上述的預先選定的中止事件將存貯器數(shù)據(jù)和寄存器數(shù)據(jù)從上述的系統(tǒng)存貯器和系統(tǒng)寄存器拷貝到上述的非易失性存貯設備中;(4)上述的電源響應于上述控制單元在上述的供電狀態(tài)之間變化;(5)上述的從正常工作狀態(tài)至中止狀態(tài)的改變還包括上述的控制單元響應于上述的預先選定的中止事件使上述電源從第一供電狀態(tài)改變?yōu)榈诙╇姞顟B(tài);(6)上述的第一預定恢復引導任務包括將上述設備驅(qū)動器的預定子集裝載到上述系統(tǒng)存貯器中,并且執(zhí)行上述設備驅(qū)動器的預定子集中的設備驅(qū)動器。
13.如權利要求12所述的桌上型計算機系統(tǒng),其中,(1)上述的從中止狀態(tài)至正常工作狀態(tài)的變化包括上述控制單元響應于上述的預先選定的恢復事件從非易失性存貯設備中讀出存貯器數(shù)據(jù)和寄存器數(shù)據(jù);(2)在執(zhí)行上述設備驅(qū)動程序使上述設備驅(qū)動程序的至少一部分常駐在上述系統(tǒng)存貯器中以便進一步執(zhí)行的條件下,常駐在上述系統(tǒng)存貯器中的那部分設備驅(qū)動程序被從上述非易失性存貯設備讀取的數(shù)據(jù)所重寫。
14.如權利要求12所述的桌上型計算機系統(tǒng),其中所述設備驅(qū)動器是通過一個配置文件來執(zhí)行的,上述設備驅(qū)動器的預定子集中的所述設備驅(qū)動器由上述配置文件中的一個命令與其他設備驅(qū)動器分開。
15.一種用于運行操作系統(tǒng)和應用程序的桌上型計算機系統(tǒng),包括(a)一個CPU;(b)一個電源,該電源具有用于從一個外部功率源有選擇地向上述計算機系統(tǒng)提供系統(tǒng)功率的電路,該電源具有一個第一供電狀態(tài)和一個第二供電狀態(tài),上述第一供電狀態(tài)在下上述電源從一個外部功率源向上述計算機系統(tǒng)提供系統(tǒng)功率和輔助功率,上述第二供電狀態(tài)在下上述電源不從外部功率源向上述計算機系統(tǒng)提供系統(tǒng)功率,而是從外部功率源向上述計算機系統(tǒng)提供輔助功率,(c)一個通過電路與上述CPU進行通信的電-機械式非易失性存貯設備,(d)通過電路與上述CPU進行通信的、用于保存存貯器數(shù)據(jù)的易失性系統(tǒng)存貯器,(e)通過電路與上述CPU進行通信的、用于保存寄存器數(shù)據(jù)的易失性系統(tǒng)寄存器,(f)一個通過電路與上述CPU進行通信的控制電路,該控制電路用于響應于一個預先選定的中止事件,有選擇地將上述計算機系統(tǒng)的狀態(tài)從一個正常工作狀態(tài)改變?yōu)橐粋€中止狀態(tài);(1)在上述正常工作狀態(tài)下,上述電源處于第一供電狀態(tài)下,上述計算機系統(tǒng)此刻能夠運行應用程序;(2)在上述中止狀態(tài)下,寄存器數(shù)據(jù)和存貯器數(shù)據(jù)被存貯到上述的電-機械式非易失性存貯設備中;上述電源處于第二供電狀態(tài);(3)上述控制單元響應于上述預先選定的中止事件所進行的從上述正常操作狀態(tài)至上述中止狀態(tài)的變化包括以下步驟(i)可逆地變換存貯器數(shù)據(jù)和寄存器數(shù)據(jù),以及(ii)將經(jīng)過可逆性變換的存貯器數(shù)據(jù)和寄存器數(shù)據(jù)和至少一部分余下的未經(jīng)變換的存貯器數(shù)據(jù)和寄存器數(shù)據(jù)寫入上電-機械式非易失性存貯設備,從而使上述計算機系統(tǒng)的狀態(tài)可以從此恢復;(4)上述電源響應于上述控制單元在上述的二個供電狀態(tài)之間變化;(5)上述的從正常工作狀態(tài)至中止狀態(tài)的變換還包括以下步驟上述控制單元響應于上述的預先選定的中止事件使上述電源從上第一供電狀態(tài)改變?yōu)樯鲜龅牡诙╇姞顟B(tài)。
16.如權利要求15所述的桌上型計算機系統(tǒng),其中,上述控制單元至少部分以時分多重方式執(zhí)行(1)可逆地變換至少一部分存貯器數(shù)據(jù)和寄存器數(shù)據(jù),和(2)把經(jīng)過所逆變換的存貯器和寄存器數(shù)據(jù)和至少一部分任何余下的未經(jīng)變換的存貯器數(shù)據(jù)和寄存器數(shù)據(jù)寫入上述電-機械式非易失性存貯設備中。
17.如權利要求15所述的桌上型計算機系統(tǒng),其中,上述控制單元執(zhí)行的(1)可逆地變換至少一部分存貯器數(shù)據(jù)和寄存器數(shù)據(jù),(2)將經(jīng)過可逆性變換的存貯器數(shù)據(jù)和寄存器數(shù)據(jù)和至少一部分余下的未經(jīng)變換的存貯器數(shù)據(jù)和寄存器數(shù)據(jù)寫入上述的電-機械式非易失性存貯設備是以這樣的方式進行的先將一部分數(shù)據(jù)進行可逆性變換,存貯到一個第一數(shù)據(jù)緩沖器中,然后,至少部分以時分多重的方式,上述的經(jīng)可逆性變換的數(shù)據(jù)被從該第一數(shù)據(jù)緩沖器寫入電-機械式非易失性存貯設備中,同時另一部分數(shù)據(jù)被進行可逆性變換并存貯到一個第二數(shù)據(jù)緩沖器中,其中,上述的步驟相對于哪一個數(shù)據(jù)緩沖器被使用而交替進行。
18.如權利要求15所述的桌上型計算機系統(tǒng),其中,上述控制單元在一個由中斷驅(qū)動的程序的作用下至少部分地在前臺可逆地變換存貯器數(shù)據(jù)和寄存器數(shù)據(jù),至少部分地在后臺將經(jīng)過可逆性變換的存貯器和寄存器數(shù)據(jù)寫入上述的電-機械式非易失性存貯設備中。
19.如權利要求15所述的桌上型計算機系統(tǒng),其中,上述控制單元通過使用一種行程長度編碼方法來對存貯器數(shù)據(jù)和寄存器數(shù)據(jù)進行壓縮的方式來可逆地變換存貯器數(shù)據(jù)和寄存器數(shù)據(jù)中的至少一部分。
20.如權利要求15所述的桌上型計算機系統(tǒng),其中,上述控制單元的特征還在于響應于至少一個預先選定的恢復事件,有選擇地將上述計算機系統(tǒng)的狀態(tài)從上述的中止狀態(tài)改變成正常工作狀態(tài);其中,上述的控制單元響應于上述的預先選定的恢復事件,執(zhí)行以下步驟(i)從上述的電-機械式非易失性存貯設備讀出經(jīng)過可逆性變換的存貯器數(shù)據(jù)和寄存器數(shù)據(jù)和至少一部分任何余下的未經(jīng)變換的存貯器數(shù)據(jù)和寄存器數(shù)據(jù);(ii)對經(jīng)過變換的存貯器數(shù)據(jù)和寄存器數(shù)據(jù)進行逆變換;(iii)將存貯器數(shù)據(jù)寫入易失性系統(tǒng)存貯器中,將寄存器數(shù)據(jù)寫入易失性系統(tǒng)寄存器中。
21.如權利要求20所述的桌上型計算機系統(tǒng),其中,上述控制單元至少部分地以時分多重方式執(zhí)行(1)對經(jīng)過變換的存貯器數(shù)據(jù)和寄存器數(shù)據(jù)進行逆變換,和(2)以上述的電-機械式非易失性存貯設備中讀出經(jīng)過可逆性變換的存貯器數(shù)據(jù)和寄存器數(shù)據(jù)。
22.如權利要求20所述的桌上型計算機系統(tǒng),其中,上述控制單元在一個由中斷驅(qū)動的程序的作用下至少部分地在前臺將經(jīng)變換的存貯器和寄存器數(shù)據(jù)進行逆變換,并且上述控制單元至少部分地在后臺從上述的電-機械式非易失性存貯裝置讀出經(jīng)過可逆性變換的存貯器數(shù)據(jù)和寄存器數(shù)據(jù)。
23.一種用于恢復計算機系統(tǒng)的狀態(tài)的方法,所述計算機系統(tǒng)具有(a)一個電源,該電源具有用于有選擇地從一個外部功率源向上述計算機系統(tǒng)提供系統(tǒng)功率的電路,上述電源具有一個第一供電狀態(tài)和一個第二供電狀態(tài);(b)一個電-機械式非易失性存貯設備;(c)用于保存存貯器數(shù)據(jù)的易失性存貯器;(d)用于保存寄存器數(shù)據(jù)的易失性寄存器,上述方法包括以下步驟(1)響應于一個預先選定的恢復事件,使上述電源從第一供電狀態(tài)轉(zhuǎn)變?yōu)榈诙╇姞顟B(tài);(2)從上述的電-機械式非易失性存貯設備中讀出經(jīng)過可逆性變換的存貯器數(shù)據(jù)和寄存器數(shù)據(jù);(3)對上述存貯數(shù)據(jù)和寄存器數(shù)據(jù)所經(jīng)歷的變換進行逆變換;(4)將存貯器數(shù)據(jù)寫入易失性系統(tǒng)存貯器中;以及(5)將寄存器數(shù)據(jù)寫入易失性系統(tǒng)寄存器中。
24.如權利要求23所述的恢復計算機系統(tǒng)狀態(tài)的方法,上述的步驟(1)對經(jīng)過變換的存貯器數(shù)據(jù)和寄存器數(shù)據(jù)進行逆變換,和步驟(2)從上述的電-機械式非易失性存貯設備中讀出經(jīng)過可逆性變換的存貯器數(shù)據(jù)和寄存器數(shù)據(jù)至少部分地是以時分多重方式進行的。
25.如權利要求23所述的恢復計算機系統(tǒng)狀態(tài)的方法,其中,在一個由中斷驅(qū)動的程序的作用下上述的將經(jīng)變換的至少一部分存貯器和寄存器數(shù)據(jù)進行逆變換的步驟至少部分是在前臺進行的,上述的從上述的電-機械式非易失性存貯裝置讀出經(jīng)過可逆性變換的存貯器數(shù)據(jù)和寄存器數(shù)據(jù)的步驟至少部分是在后臺進行的。
26.一種用于恢復計算機系統(tǒng)的狀態(tài)的方法,所述計算機系統(tǒng)具有(a)一個電源,該電源具有用于有選擇地從一個外部功率源向上述計算機系統(tǒng)提供系統(tǒng)功率的電路,上述電源具有一個第一供電狀態(tài)和一個第二供電狀態(tài);(b)一個電-機械式非易失性存貯設備;(c)用于保存存貯器數(shù)據(jù)的易失性存貯器;(d)用于保存寄存器數(shù)據(jù)的易失性寄存器,上述方法包括以下步驟(1)響應于一個預先選定的恢復事件,使上述電源從第一供電狀態(tài)轉(zhuǎn)變?yōu)榈诙╇姞顟B(tài);(2)從上述的電-機械式非易失性存貯設備中讀出經(jīng)過可逆性變換的存貯器數(shù)據(jù)和寄存器數(shù)據(jù);(3)從上述的電-機械式非易失性存貯設備中讀出未經(jīng)變換的存貯器數(shù)據(jù)和寄存器數(shù)據(jù);(4)對上述存貯數(shù)據(jù)和寄存器數(shù)據(jù)所經(jīng)歷的變換進行逆變換;(5)將存貯器數(shù)據(jù)寫入易失性系統(tǒng)存貯器中;以及(6)將寄存器數(shù)據(jù)寫入易失性系統(tǒng)寄存器中。
27.如權利要求26所述的恢復計算機系統(tǒng)狀態(tài)的方法,上述的步驟(1)對經(jīng)過變換的存貯器數(shù)據(jù)和寄存器數(shù)據(jù)進行逆變換和步驟(2)從上述的電-機械式非易失性存貯設備中讀出經(jīng)過可逆性變換的存貯器數(shù)據(jù)和寄存器數(shù)據(jù)至少部分地是以時分多重方式進行。
28.如權利要求26所述的恢復計算機系統(tǒng)狀態(tài)的方法,其中,在一個由中斷驅(qū)動的程序的作用下上述的將經(jīng)變換的至少一部分存貯器和寄存器數(shù)據(jù)進行逆變換的步驟至少部分是在前臺進行的,上述的從上述的電-機械式非易失性存貯裝置讀出經(jīng)過可逆性變換的存貯器數(shù)據(jù)和寄存器數(shù)據(jù)的步驟至少部分是在后臺進行的。
全文摘要
一種有能力暫停和恢復計算機系統(tǒng)狀態(tài)的臺式計算機系統(tǒng)。所暫停的系統(tǒng)狀態(tài)保留到系統(tǒng)硬文件上,從而可斷開系統(tǒng)功率,以便有效地允許系統(tǒng)暫停,不從電源獲取任何功率。
文檔編號G06F1/32GK1350243SQ9912587
公開日2002年5月22日 申請日期1999年12月6日 優(yōu)先權日1993年7月26日
發(fā)明者詹姆斯·L·庫姆斯, 德萬尼·T·克倫普, 史蒂文·T·潘科斯特 申請人:國際商業(yè)機器公司