JP3188826B2 - Apm(拡張パワー・マネジメント)用自動バックアップ装置 - Google Patents

Apm(拡張パワー・マネジメント)用自動バックアップ装置

Info

Publication number
JP3188826B2
JP3188826B2 JP18140495A JP18140495A JP3188826B2 JP 3188826 B2 JP3188826 B2 JP 3188826B2 JP 18140495 A JP18140495 A JP 18140495A JP 18140495 A JP18140495 A JP 18140495A JP 3188826 B2 JP3188826 B2 JP 3188826B2
Authority
JP
Japan
Prior art keywords
suspend
routine
state
cpu
power
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP18140495A
Other languages
English (en)
Other versions
JPH08194561A (ja
Inventor
ドワイン・ティ・クランプ
スティーブン・ティ・パンコースト
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH08194561A publication Critical patent/JPH08194561A/ja
Application granted granted Critical
Publication of JP3188826B2 publication Critical patent/JP3188826B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Power Sources (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、一般的にはコンピュー
タ・システム・アーキテクチャに関し、特にAPMドラ
イバをベースにしたシステム・サスペンド/レジューム
機能と、オペレーティング・システムのAPMドライバ
が機能を停止したときにシステムをサスペンド状態にす
るバックアップ・サスペンド装置を持つデスクトップ・
コンピュータ・システムに関する。
【0002】
【従来の技術】パーソナル・コンピュータ・システムに
ついては周知の通りである。一般にはパーソナル・コン
ピュータ・システム、特にIBMパーソナル・コンピュ
ータは広く用いられており、現代社会のさまざまな分野
にコンピュータ・パワーを提供している。通常、パーソ
ナル・コンピュータはデスクトップか、据え置き型か、
ポータブルのマイクロコンピュータと定義でき、1つの
CPU(中央処理装置)とこれに関連する揮発性及び不
揮発性のメモリ(全てのRAM、BIOS ROMを含
む)を持つシステム・ユニット、システム・モニタ、キ
ーボード、フロッピー・ディスケット・ドライブ、ハー
ド・ディスク・ドライブ(「ハード・ドライブ」ともい
う)、「マウス」と呼ばれるポインティング・デバイ
ス、及び光プリンタからなる。このようなシステムのは
っきりした特徴の1つは、これらの構成要素を電気的に
接続してまとめるためのマザーボードまたはシステム・
プレーナが用いられることである。これらのシステム
は、基本的には、個々のユーザに独立したコンピューテ
ィング・パワーを提供するようになっており、個人や小
規模な事業体が購入しやすい価格になっている。こうし
たパーソナル・コンピュータ・システムの例として、I
BMのPERSONAL COMPUTER AT、及びIBMのPERSONAL S
YSTEM/1(IBM PS/1)がある。
【0003】通常、パーソナル・コンピュータ・システ
ムは、ワープロ、表計算ソフトを使ったデータ処理、デ
ータベース・ソフトを使ったデータの収集/関連づけ、
グラフィクス表示、システム設計ソフトウェアを使った
電気システム、機械システムの設計等、ソフトウェアを
実行して多種多様な処理を行なうために用いられる。
【0004】本出願は、4つのパワー・マネジメント状
態を持つコンピュータ・システムを開示している。ノー
マル動作状態、スタンバイ状態、サスペンド状態、及び
オフ状態である。オフ状態、ノーマル動作状態、及びサ
スペンド状態を切り替えるのにスイッチ1つが用いられ
る。
【0005】本発明のコンピュータ・システムのノーマ
ル動作状態は、普通のデスクトップ・コンピュータのノ
ーマル動作状態とほぼ同一である。ユーザはアプリケー
ションを使用でき、基本的にはコンピュータを他のそれ
と同じように扱う。1つの違いはパワー・マネジメント
・ドライバの存在である。これはバックグラウンドで
(BIOSとオペレーティング・システム内で)ユーザ
に対してトランスペアレント(透過的)に動作する。オ
ペレーティング・システム(OS)内のパワー・マネジ
メント・ドライバの部分は、インテル社とマイクロソフ
ト社が開発し、現在はインテル社の80X86系プロセ
ッサで動作するように開発されたほとんどのオペレーテ
ィング・システムにある、拡張プログラミング・インタ
フェースのAPM(Advanced Power Management)であ
る。パワー・マネジメント・ドライバの、BIOSの部
分(APM BIOS)はAPM OSドライバと通信
する。APM OSドライバとAPM BIOSルーチ
ンは一緒に、他の3つの状態へのコンピュータの遷移を
制御する。
【0006】2番目の状態、スタンバイ状態は消費電力
がノーマル動作状態よりも少ないが、どのアプリケーシ
ョンも他の場合のように実行させた状態に保つ。一般に
スタンバイ状態で電力が節約されるのは、デバイスがそ
れぞれの低電力モードにされるからである。例えばハー
ド・ドライブ内のハード・ディスクの回転を止め、ビデ
オ信号の生成を止めることによって、スタンバイ状態で
電力が節約される。
【0007】3番目の状態はサスペンド状態である。サ
スペンド状態では、コンピュータ・システムが消費する
電力はごく僅かである。サスペンド状態になったコンピ
ュータが壁コンセントから消費する電力は非常に少な
い。消費される唯一の電力は、(システムにAC電源が
供給されていないときは)コンピュータ・システム内部
のバッテリからの、スイッチをモニタする回路を維持す
るための小電力か、(システムにAC電源が供給されて
いるときは)電源によって補助電力系に生じた小電力で
ある。
【0008】この小電力利用は、電源が「オフ」にされ
る前に、コンピュータ・システムの状態をハード・ディ
スク装置(ハード・ドライブ)にセーブすることによっ
て行なわれる。コンピュータ・システムは、サスペンド
状態に入るために実行中のコードを中断して、コンピュ
ータの制御をパワー・マネジメント・ドライバに渡す。
パワー・マネジメント・ドライバはコンピュータ・シス
テムの状態を確認して、コンピュータ・システムの状態
をハード・ディスク装置に書込む。CPUレジスタ、C
PUキャッシュ、システム・メモリ、システム・キャッ
シュ、ビデオ・レジスタ、ビデオ・メモリ、その他のデ
バイスのレジスタの状態が全てハード・ディスクに書込
まれる。システムの全体の状態は、中断によってコード
・アプリケーションが悪影響を受けずにリストアできる
ようにセーブされる。次にコンピュータは、データを不
揮発性CMOSメモリに書込んで、システムがサスペン
ド状態になったことを示す。最後にコンピュータは、電
源が電力供給を停止するようにする。コンピュータ全体
の状態はハード・ディスク装置に安全にセーブされ、こ
こでシステム電源は「オフ」になり、コンピュータはこ
れで、スイッチをモニタする回路に電力を供給するため
に電源から小さい調整電力の供給だけを受ける。
【0009】4番目で最後の状態はオフ状態である。こ
の状態で電源はコンピュータ・システムへの調整電力の
供給を停止するが、コンピュータ・システムの状態はハ
ード・ディスクにセーブされない。オフ状態は、普通に
オフにされる代表的なデスクトップ・コンピュータとほ
ぼ同一である。
【0010】状態から状態への切り替えは、パワー・マ
ネジメント・ドライバによって処理され、通常は1つの
スイッチのクロージャ・イベント、フラグ及び2つのタ
イマ(非活動スタンバイ・タイマと非活動サスペンド・
タイマ)にもとづく。システムには1つのパワー・ボタ
ンがあり、このボタンを使ってコンピュータ・システム
をオフにする、システムの状態をサスペンドにする、シ
ステムの状態をリストアする、更にシステムをオフにす
ることができる。
【0011】上記システムは、状態遷移と、状態遷移に
関係するシステム・メンテナンスを促進するためにAP
M(拡張パワー・マネジメント)を使用する。APM
は、デスクトップやノートブックのコンピュータ・シス
テムのオペレーティング・システムとシステムBIOS
が協力して電源を管理する方法を提供するために開発さ
れた、業界標準の拡張プログラミング・インタフェース
である。APMは、サスペンド・プロセスにオペレーテ
ィング・システムを関与させ、サスペンド・プロセスの
前にオペレーティング・システムにシステムを準備させ
ることができるので、システムのサスペンド、レジュー
ムを促進する優れたツールを提供する。
【0012】ただし、オペレーティング・システムによ
るが、システムのサスペンドについてAPMに依存する
ことにはいくつか欠点もある。Microsoft W
indows 3.1とMS−DOSでは、オペレーテ
ィング・システムのAPMドライバがAPM BIOS
リクエストの処理を完全に停止する時がある。例えばモ
ーダル・ダイアログ・ボックスが表示されているとき、
MicrosoftWindowsのAPMドライバは
APM BIOSリクエストの処理を完全に停止する。
その結果、Microsoft WindowsのAP
Mドライバをベースにしたサスペンドとレジュームのシ
ステムは、モーダル・ダイアログ・ボックスが表示され
ているときはシステムをサスペンドすることがない。こ
れはユーザにとっては大きな問題になる。システム状態
をセーブするというユーザのリクエストに応答してシス
テムがサスペンドしないからである。結果、ユーザは混
乱したり、サスペンド/レジューム・システムを信用で
きなくなったりする。
【0013】解決法としては、システムをサスペンドす
るためにハードウェアSMI(システム管理割込み)に
依存することであるが、このようなシステムはAPMに
よって得られる利点を失う。例えばAPMドライバは、
APM認識型のソフトウェアやハードウェアのアプリケ
ーション全てに、システムがサスペンドされようとして
いることと、これにそれらが対応できることを通知する
ことができる。従って、システムがAPMドライバに依
存できると共に、APMドライバが機能を停止した場合
にはシステムをサスペンドすることもできる、そのよう
なシステムが望ましい。
【0014】
【課題を解決するための手段】本発明によるシステム
は、APMドライバがいつ機能を停止したかを自動的に
検出して、その結果システムをサスペンドする代替サス
ペンド装置を備える。本発明の自動バックアップ・サス
ペンド装置はOS APMドライバのノーマル動作に干
渉しないが、APMドライバがAPM BIOSリクエ
ストの処理を停止したときは自動的に関与する。APM
が再びアクティブになると、バックアップ・サスペンド
装置は自動的に解除される。これによりシステムは、バ
ックアップ・サスペンド装置によって信頼性が高まった
APMの利点を活かせる。
【0015】本発明のバックアップ・サスペンド装置で
は、OS APMがAPM BIOSリクエストを所定
時間の間は処理しなかった場合に終了する新しいカウン
トダウン・タイマが用いられる。このタイマは、単位時
間、例えば秒、をカウントダウンするフリー・ランニン
グ・タイマであり、リスタートできる、すなわち再ロー
ドで元の値に戻すことができる。タイマは0までカウン
トダウンしたとき終了する。好適な実施例の場合、この
新しいタイマは外部ハードウェアに維持され、システム
BIOSのタイマ0割込みハンドラ、SMI割込みサー
ビス・ルーチン等の割込みサービス・ルーチンによって
処理される。またタイマは、割込みサービス・ルーチン
だけでインプリメントし処理することもできる。
【0016】新しいタイマは、好適には、システムBI
OSのタイマ0割込みハンドラによって処理され、ハン
ドラは、新しいタイマが終了したかどうか、またユーザ
がサスペンドを望んでいるかどうか(すなわちサスペン
ド・リクエストが保留されているか)をチェックするよ
うに変更される。この条件が満足されたとき、システム
は、その「サスペンドなし」がAPM BIOSイベン
ト・キューにセットされたことをオペレーティング・シ
ステムに通知せずにサスペンドする。システムがレジュ
ームするときは、APMイベント・キューにクリティカ
ル・レジューム・イベントがセットされる。OS AP
Mドライバは、再びサービス・イベントのポーリングを
開始すると、クリティカル・レジューム・イベントを受
け取るので、オペレーティング・システムはレジューム
後に(クリーンアップし)システム時間等を更新でき
る。
【0017】APMシステムBIOSでは、好適には、
OS APMドライバからの「取得イベント」コール毎
に、新しいカウントダウン・タイマがリセットされる、
すなわち元の値に再ロードされる。これによりカウント
ダウン・タイマは、APMがイベントを処理し、正常に
動作しているときは終了することがない。オペレーティ
ング・システムのAPMドライバがイベントの処理を停
止したとき(取得イベント・コールがない)、カウント
ダウン・タイマはリセットされず、終了する。ユーザが
サスペンドしようとすると、システムは、カウントダウ
ン・タイマが0に達したときに自動的に応答する。
【0018】カウントダウン・タイマは、好適には、予
めプログラミングされていて、追加機能も提供する、低
コストのマイクロコントローラにインプリメントされ
る。このマイクロコントローラの特徴として、自動バッ
クアップ・サスペンド装置を実現するために用いられる
汎用カウントダウン・タイマがある。
【0019】システムBIOS割込みハンドラは、約3
2のタイマ・レベル0割込み毎に、カウントダウン・タ
イマが終了したかどうかと、ユーザがサスペンドを望ん
でいるかどうかをチェックする。これが起こると、シス
テムは直ちにサスペンドされる。カウントダウン・タイ
マは、好適には、APMの「取得イベント」のポーリン
グ・レートが15秒毎に1回であるMS−Window
s下のフルスクリーンMS−DOS等、APMの「デッ
ド・ゾーン」を見越して16秒にセットされる。
【0020】本発明は、オペレーティング・システム内
のAPM(拡張パワー・マネジメント)ドライバの欠点
を補うものである。カウントダウン・タイマは、OS
APMドライバがBIOSイベントを処理しなかったと
き直ちにカウントダウンを開始する。このシステムは、
オペレーティング・システムのAPMドライバが取得イ
ベントの処理を停止したとき自動的に関与する。同じ
く、システムは、APMドライバが再びイベントを処理
し始めたときに自動的に解除される。本発明はサスペン
ド/レジューム・システムの信頼性を高めるものであ
る。デッド・ゾーンはバックアップ・サスペンド装置に
よって自動的に解消される。バックアップ・サスペンド
装置は完全自動であり、ユーザの手を必要としない。本
発明の利点は、上記を含めて、本発明の詳細な説明から
明らかになろう。
【0021】
【実施例】
【数1】 は以降Xバーと記載する。
【0022】以下、本発明について、本発明の好適な実
施例を示した図面を参照しながら詳しく説明するが、当
業者は、望ましい本発明の効果を達成しながら、ここに
説明する発明に変更を加えることができることを、この
説明の始めに理解されたい。従って以下の説明は、当業
者に対する広範囲な開示内容であって、本発明を制限す
るものではないと理解されたい。本発明は、コンピュー
タ・アーキテクチャ設計、デジタル設計、BIOS設
計、プロテクト・モード80486コード設計、アプリ
ケーション・コード設計、オペレーティング・システム
・コード設計、拡張プログラミング・インタフェースA
PMの用法を含めて、コンピュータ・システムの完全な
設計を扱う。
【0023】各図を参照する。各図には本発明を採用し
たマイクロコンピュータ・システムを示し、一般には1
0(図1)に示している。上述の通り、コンピュータ1
0には、表示装置11、キーボード12、マウス13、
及びプリンタまたはプロッタ14を追加することができ
る。コンピュータ10のカバー15は、外部の装飾的な
部材16(図2)と内部のシールド材18によって形成
され、これらがシャシ19と合わせて、デジタル・デー
タを処理/記憶するための、電力で動作する処理/記憶
要素を収める密閉シールド構造をなす。これらの要素の
うち少なくとも特定のものは多層プレーナ20すなわち
マザーボードに装着される。マザーボードはシャシ19
に装着され、前記のものを含めたコンピュータ10の要
素、及びフロッピー・ディスク・ドライブ、各種の直接
アクセス記憶装置、拡張アダプタ・カード/ボード等、
関連する他の要素を電気的に相互接続する手段を提供す
る。詳しくは後述するが、プレーナ20はマイクロコン
ピュータの動作要素との間で入力/出力信号がやりとり
されるようにされる。
【0024】コンピュータ・システムには、電源17、
パワー・ボタン21(以下、スイッチ21ともいう)、
及びパワー/フィードバックLED23がある。パワー
・ボタン21は、代表的なシステムにある普通のパワー
・スイッチとは異なり、電源17との間で商用AC電源
のオン/オフを行なわない(後述)。シャシ19にはベ
ース22、フロント・パネル24、及びリア・パネル2
5(図2)がある。フロント・パネル24は、磁気ディ
スクや光ディスク用のディスク・ドライブ、テープ・バ
ックアップ・ドライブ等のデータ記憶装置を受ける少な
くとも1つのオープン・ベイ(図の形では4つのベイ)
をなす。図の形では、1対の上ベイ26、28と1対の
下ベイ29、30である。上ベイ26は、第1サイズの
周辺ドライブ(3.5インチ・ドライブと呼ばれるもの
等)を受けるようにされ、もう1つの28は、2つのサ
イズ(3.5インチ、5.25インチ等)の内、選択さ
れた方のドライブを受けるようにされ、下ベイは、1つ
のサイズ(3.5インチ)のドライブだけを受けるよう
にされる。図1に示した1つのフロッピー・ディスク・
ドライブ27は、リムーバブル・メディアの直接アクセ
ス記憶装置で、一般に知られている通り、これにセット
されるディスケットを収め、ディスケットを使ってデー
タの受け取り、記憶、転送を行なう。ハード・ディスク
・ドライブ31は固定メディアの直接アクセス記憶装置
で、これも一般に知られている通りデータを記憶、転送
する。
【0025】前記構造を本発明に関連づける前に、パー
ソナル・コンピュータ・システム10の一般的な動作を
ここでまとめておくのもいいかもしれない。図3、図4
に、パーソナル・コンピュータ・システムのブロック図
が示してある。これは本発明に従ったシステム10等の
コンピュータ・システムの各種要素を示しており、プレ
ーナ20に装着される要素と、プレーナとI/Oスロッ
ト及びパーソナル・コンピュータ・システムの他のハー
ドウェアとの接続を含む。プレーナに接続されるのは、
マイクロプロセッサからなるシステム・プロセッサ40
(以下、CPU40ともいう)で、マイクロプロセッサ
は、高速CPUローカル・バス42によって、メモリ制
御装置46を通して接続される。メモリ制御装置は更に
揮発性RAM53に接続される。メモリ制御装置は、メ
モリ・コントローラ48、アドレス・マルチプレクサ5
0、及びデータ・バッファ52からなる。メモリ制御装
置は更に、4つのRAMモジュール54として示された
RAM53に接続される。メモリ・コントローラ48
は、マイクロプロセッサとの間でアドレスをRAM53
の特定エリアにマッピングするロジックを含む。このロ
ジックは、先にBIOSによって占有されていたRAM
を回収するのに用いられる。メモリ・コントローラ48
によって更にROM選択信号(ROMSEL)が生成さ
れる。これはROM88のイネーブルかディスエーブル
に用いられる。システム・プロセッサ40に使用できる
マイクロプロセッサのタイプは特に限定されないが、適
当なマイクロプロセッサとしてIntel 80486がある。Int
el 80486には内部キャッシュがあり、従ってIntel 8048
6であるCPU40にはCPUキャッシュ41がある。
【0026】以下、本発明については、特に図3、図4
のシステム・ブロック図を参照して説明するが、本発明
に従った装置及び方法は、プレーナ・ボードの他のハー
ドウェア構成にも使用できるとみなされることを、以下
の説明の始めに理解されたい。例えばシステム・プロセ
ッサ40はIntel 80286か80386のマイクロプロセッサで
よい。ここで言っている通り、一般に80286、80386或い
は80486への言及は、インテル社から得られたようなマ
イクロプロセッサを言う。ただし最近では、他のメーカ
が、Intel X86アーキテクチャの命令セットを実行可能
なマイクロプロセッサを開発しており、使用される用語
は、この命令セットを実行できる任意のマイクロプロセ
ッサを想定している。当業者には知られている通り、通
常、初期のパーソナル・コンピュータは、当時普及して
いたIntel 8088や8086のマイクロプロセッサをシステム
・プロセッサとして使用していた。これらのプロセッサ
は1メガバイトのメモリをアドレスする能力がある。比
較的新しいパーソナル・コンピュータは普通、高速なIn
tel 80286、80386、80486のマイクロプロセッサを使用
する。このマイクロプロセッサは、仮想モードかリアル
・モードで動作して低速な8086マイクロプロセッサをエ
ミュレートしたり、モデルによっては1メガバイト乃至
4ギガバイトのアドレス範囲を拡張するプロテクト・モ
ードで動作する。基本的に、80286、80386、80486のプ
ロセッサのリアル・モード機能は、8086、8088マイクロ
プロセッサのために開発されたソフトウェアについてハ
ードウェア面で互換性を与える。インテル系統のプロセ
ッサが言及されるときはしばしば、フルタイプ指定子の
最後の3桁だけが用いられる("486"のように)。
【0027】ここで図3、図4を参照する。CPUロー
カル・バス42(図示されていないがデータ、アドレ
ス、制御の各要素からなる)は、マイクロプロセッサ4
0、数値コプロセッサ44(CPU40の内部にない場
合)、ビデオ・コントローラ56、システム・キャッシ
ュ・メモリ60、及びキャッシュ・コントローラ62を
接続するためのものである。ビデオ・コントローラ56
には、モニタ(またはビデオ表示端末)11とビデオ・
メモリ58が関連づけられる。CPUローカル・バス4
2にはバッファ64も接続される。バッファ64自体
は、(CPUローカル・バス42に比べて)低速なシス
テム・バス66に接続される。バス66もアドレス、デ
ータ、制御の各要素からなる。システム・バス66は、
バッファ64及び別のバッファ68との間を延長する。
システム・バス66は更にバス制御/タイミング装置7
0及びDMA装置71に接続される。DMA装置71
は、セントラル・アービタ82とDMAコントローラ7
2からなる。システム・バス66と、ISA(Industry
Standard Architecture)バス76等のオプションの機
能バスとのインタフェースを与えるためにバッファ74
が用いられる。バス76には、ISAアダプタ・カード
(図示なし)を受ける複数のI/Oスロット78が接続
される。ISAアダプタ・カードはI/Oスロット78
にプラグ接続でき、システム10にI/Oデバイスやメ
モリを追加することができる。
【0028】アービトレーション制御バス80は、DM
Aコントローラ72とセントラル・アービタ82をI/
Oスロット78、ディスケット・アダプタ、及びIDE
(Integrated Drive Electronics)ハード・ディスク・
コントローラ86に接続する。
【0029】マイクロコンピュータ・システム10は、
基本的な4メガバイトのRAMモジュール53で示して
いるが、図3、図4に示す通り、オプションの高密度メ
モリ・モジュール54を追加することによって追加メモ
リを相互接続できることがわかる。本発明は、説明の便
宜上からのみ、基本的な4メガバイトのメモリ・モジュ
ールを想定して説明してある。
【0030】ラッチ・バッファ68は、システム・バス
66とプレーナI/Oバス90の間に接続される。プレ
ーナI/Oバス90は、アドレス、データ、制御のそれ
ぞれの要素を含む。プレーナI/Oバス90に沿って接
続されるのは、各種のI/Oアダプタと他の要素で、デ
ィスケット・アダプタ84、IDEディスク・アダプタ
86、割込みコントローラ92、RS−232アダプタ
94、不揮発性CMOS RAM96(ここではNVR
AMともいう)、CMOSリアルタイム・クロック(R
TC)98、パラレル・アダプタ100、複数のタイマ
102、ROM88、8042(104)、パワー・マネジ
メント回路106等である。8042(参照符号104)
は、キーボード12とマウス13とのインタフェースを
とるスレーブ・マイクロプロセッサである。パワー・マ
ネジメント回路106は、電源17、パワー・スイッチ
21、パワー/フィードバックLED23、及び内部モ
デム900や外部モデム902と回路内通信を行なう。
当業者には知られている通り、通常、外部モデムはトラ
ンス904に接続され、トランスは一般的な壁コンセン
トに接続される。モデム900、902は一般的な電話
用モジュラージャックに接続される。パワー・マネジメ
ント回路106は、図7、図8に示し、図7、図8、図
9、図11に関連するところで詳しく説明してある。R
OM88は、I/Oデバイスとマイクロプロセッサ40
のオペレーティング・システムとのインタフェースをと
るために用いられるBIOSを含む。ROM88に格納
されたBIOSは、RAM53にコピーすればBIOS
の実行時間を減らすことができる。ROM88は更にメ
モリ・コントローラ48に(ROMSEL信号を介し
て)応答する。ROM88がメモリ・コントローラ48
によってイネーブルになった場合、BIOSはROM外
で実行される。ROM88がメモリ・コントローラ48
によってディスエーブルになった場合、ROMはマイク
ロプロセッサ40からのアドレス照会に応答しない(す
なわちBIOSはRAM外で実行される)。
【0031】リアルタイム・クロック98は時刻計算に
用いられ、NVRAM96はシステム設定データの格納
に用いられる。すなわち、NVRAM96はシステムの
現在の設定を記述した値を格納する。例えばNVRAM
96は、ハード・ディスクやディスケットの容量、表示
装置のタイプ、メモリの量、時刻、日付等を記述した情
報を格納する。またこれらのデータは、セット・コンフ
ィギュレーション等の特別設定プログラムが実行された
ときには常にNVRAMに格納される。セット・コンフ
ィギュレーション・プログラムの目的は、システムの設
定を特徴づける値をNVRAMに格納することである。
【0032】前記デバイスのほとんどは揮発性レジスタ
からなる。図が不必要に煩雑にならないように、あるデ
バイスのレジスタはそのデバイスに言及した形で参照し
てある。例えばCPUレジスタはCPU40のレジスタ
として参照してあり、ビデオ・コントローラ・レジスタ
はビデオ・コントローラ56のレジスタとして参照して
ある。
【0033】上述のように、コンピュータにはカバー1
5があってこれがシャシ19と一緒になって、先に示し
たマイクロコンピュータの要素を収める密閉シールド空
間を作る。カバー15は、好適には、成形可能な合成物
質から作られる一体成形部品である外部の装飾的なカバ
ー材16と、装飾的なカバー材の構造に合わせて形成さ
れた金属薄板ライナ18で形成される。ただしカバーは
他の従来の方法で形成でき、本発明の有用性は説明した
型の筐体には限定されない。
【0034】動作状態:図5を参照する。本発明のコン
ピュータ・システムの状態図が示してある。本発明のコ
ンピュータ・システム10には4つの状態、すなわちノ
ーマル動作状態150、スタンバイ状態152、サスペ
ンド状態154、及びオフ状態156がある。図4に示
してある状態間の遷移は、好適な実施例を説明するため
のものであって限定的なものではない。すなわち、状態
遷移を起こすために他のイベントを代わりに用いること
もできる。
【0035】本発明のコンピュータ・システム10のノ
ーマル動作状態150は、普通のデスクトップ・コンピ
ュータのノーマル動作状態とほぼ同一である。ユーザは
アプリケーションを使用でき、基本的にはコンピュータ
を他のものと同じように扱う。ユーザにとってトランス
ペアレントな1つの違いは、バックグラウンドで動作す
るオペレーティング・システム内のパワー・マネジメン
ト・ドライバ(APMOSドライバ)と各種APM B
IOSルーチンの存在である。APM BIOSルーチ
ンについては以下で説明するが、サスペンド・ルーチ
ン、レジューム・ルーチン、ブートアップ・ルーチン、
スーパバイザ・ルーチン、CPU状態セーブ・ルーチン
及びCPU状態リストア・ルーチンを含む。どの図にも
示されていないAPM BIOSルーチンはAPM B
IOSルーティング・ルーチンである。APM BIO
Sルーティング・ルーチンは、基本的には、APM O
Sドライバからのコマンドを受入れ、対応するAPM
BIOSルーチンを呼出す。例えばAPM OSドライ
バがサスペンド・コマンドを発行したとき、APMBI
OSルーティング・ルーチンはサスペンド・ルーチンを
呼出す。また別の例として、APM OSドライバが取
得イベント・コマンドを発行すると、APM BIOS
ルーティング・ルーチンはスーパバイザ・ルーチンを呼
出す。これらのルーチンはBIOS内に置かれ、BIO
Sがシャドーになるとシャドーになる。OSとAPM
BIOSルーチン内のパワー・マネジメント・ドライバ
は、4つの状態間のコンピュータの遷移を制御する。"
APM"という語への参照自体は、一般にはAPM O
Sドライバをさすが文脈によって他の場合もある。
【0036】2番目の状態のスタンバイ状態152は、
ノーマル動作状態150よりも消費電力が少ないが、ど
のアプリケーションも他の場合と同じように実行される
状態を保つ。一般に電力がスタンバイ状態152で節約
されるのは、デバイスをそれぞれの低電力モードにする
コードによる。好適な実施例の場合、スタンバイ状態1
52で電力が節約されるのは、後で詳しく説明するよう
に、ハード・ディスク記憶装置31内のハード・ディス
ク(図示なし)の回転を止めること、ビデオ信号の生成
を止めること、またCPU40を低電力モードにするこ
とによる。ただしこれは限定的ではなく、CPUクロッ
クを遅くする、止める等、他の方法によって消費電力を
減らすこともできる。
【0037】好適な実施例では、電力は3つの別々の方
法で節約される。第1に、ノーマル動作状態150でハ
ード・ディスク記憶装置31内のハード・ディスクは、
常時、毎分3600、4500、5400(RPM)等
の速度で回転している。スタンバイ状態152では、I
DEディスク・コントローラ86にコマンドが送られ、
ハード・ディスク記憶装置31が低電力モードに入る
(ハード・ディスク記憶装置31内のハード・ディスク
が回転を止める)。これによって、通常、ハード・ディ
スクを回転させている間にハード・ディスク記憶装置3
1内部のモータ(図示なし)が消費する電力が節約され
る。
【0038】第2に、ノーマル動作状態150では、コ
ンピュータ・システムのビデオ・コントローラ56が常
時、ビデオ表示端末11に表示される画像に対応するビ
デオ信号(周知の通り、HSYNC、VSYNC、R、
G、B等)を生成している。スタンバイ状態152で
は、ビデオ・コントローラ56はビデオ信号の生成を止
める。これによって、通常はビデオ・コントローラ56
によって消費される電力が節約される。HSYNC、V
SYNC、R、G、Bは全て約0.00VDCにされ
る。VESA(Video Electronics Standards Associat
ion)に準拠したモニタでは更に電力が節約できる。こ
れはHSYNC、VSYNCが約0.00VDCのとき
VESA準拠モニタが自動でオフになるからである。
【0039】第3に、ノーマル動作状態150では、C
PU40は常時コマンドを実行しており、これにより電
力を消費している。スタンバイ状態152では、BIO
SがAPM CPUアイドルコールに応答してHALT
命令を発行する。HALT命令の実行によって、次のハ
ードウェア割込みが起こるまでCPUの消費電力は大幅
に減少する。CPUは実際にアイドル状態のときは、そ
の時間の90%以上は停止したままである。
【0040】システムによっては「スクリーン・セー
バ」がある。スクリーン・セーバによって画面11が暗
くなり、ビデオ表示端末の前面の蛍光体の焼き付きが防
止される。その場合でも、このようなシステムのほとん
どでビデオ・コントローラ56はビデオ信号を生成して
いる。ただ、暗い画面或いはダイナミックな表示に対応
したビデオ信号を生成しているだけである。従って、ス
クリーン・セーバを実行するコンピュータ・システムで
も、ビデオ信号を生成するために必要な電力は消費して
いる。
【0041】第3の状態はサスペンド状態154であ
る。サスペンド状態154では、コンピュータ・システ
ムが消費する電力はごく僅かである。サスペンドされた
コンピュータが消費する電力は、好適な実施例では10
0ミリワット未満である。消費される唯一の電力は、電
源17の非効率によって消費される約5ワットと、パワ
ー・マネジメント回路106によって消費される小電力
である。
【0042】この小電力利用は、電源をオフにする前に
コンピュータ・システムの状態をハード・ディスク記憶
装置(ハード・ドライブ)31にセーブすることによっ
て行なわれる。CPU40は、サスペンド状態154に
入るため、どのアプリケーションにも割込みをかけ、C
PUのプログラム実行制御をパワー・マネジメント・ド
ライバに渡す。パワー・マネジメント・ドライバは、コ
ンピュータ・システム10の状態を確認し、コンピュー
タ・システム全体の状態をハード・ディスク記憶装置3
1に書込む。CPU40のレジスタ、CPUキャッシュ
41、システムRAM53、システム・キャッシュ6
0、ビデオ・コントローラ56のレジスタ、ビデオ・メ
モリ56及び他の揮発性レジスタの状態が全てハード・
ディスク・ドライブ31に書込まれる。システム10全
体の状態は、使用可能性が大きく犠牲になることなくリ
ストアできるようにセーブされる。すなわちユーザは、
システムが通常通りにオペレーティング・システムをロ
ードし、グラフィカル・ユーザ・インタフェース及びア
プリケーション・プログラムをロードするのを待つ必要
がない。
【0043】次にコンピュータはデータを不揮発性CM
OSメモリ96に書込んで、システムがサスペンドにな
ったことを指示する。最後にCPU40がマイクロコン
トローラU2にコマンドを出し、電源17が±5VD
C、±12VDCのラインを介してシステムへ調整電力
を供給するのを停止するようにする。コンピュータ・シ
ステム10はこれでパワーダウンし、コンピュータ全体
の状態はハード・ディスク記憶装置31に安全にセーブ
される。
【0044】「状態」という語は本書で2つの同じよう
な、ただし混乱を招く恐れのある形で用いられている。
デバイスは、ある特定の状態に「ある」。4つのシステ
ム状態、すなわちノーマル150、スタンバイ152、
サスペンド154及びオフ154は、本発明のコンピュ
ータ・システム10の一般的な状態を言う。これらの
「状態」は、コンピュータ・システム10を一般的な形
で説明する。例えばノーマル動作状態150にあるとき
でもCPU40はコードを実行し、システム10内の複
数のレジスタを変更している。またスタンバイ状態15
2にある間も同様なアクティビティが起こる。従って、
システム10がノーマル動作状態150、スタンバイ状
態152にあるとき、コンピュータ・システム10のメ
モリとレジスタの構成はダイナミックである。
【0045】他のデバイスも、ある特定の状態に「あ
る」。パワー・マネジメント回路106は、好適には、
図7のマイクロコントローラU2のような第2プロセッ
サをパワー・マネジメント・プロセッサとして使用して
各種パワー・マネジメント機能を実現する。この種のプ
ロセッサは多くが使用できる。この実施例の場合、パワ
ー・マネジメント・プロセッサは、予めプログラミング
された83C750マイクロコントローラである。マイ
クロコントローラU2の変数とピンは、図7に関連する
ところで説明する通り、いくつかの状態が考えられる。
【0046】前記とデバイス「の状態」を対照してみ
る。例えば「コンピュータ・システム10の状態」、
「CPU40の状態」等である。あるデバイス「の状
態」とは、ある特定のコンピュータ・サイクルにおける
そのデバイスの条件を言う。メモリ位置とレジスタは全
てある特定の2進値を持つ。あるデバイス「の状態」
は、そのデバイスの内容の静的な2進スナップショット
である。
【0047】コンピュータ・システム10「の状態」と
は、動作上で同等なものを言い、必ずしも正確なコピー
ではない。例えば状態Aにあるコンピュータ・システム
は、CPUキャッシュ41か、システム・キャッシュ6
0のいずれかに、あるメモリを持っている。いずれかの
キャッシュの内容をシステムRAM53に「フラッシ
ュ」バックして、コンピュータ・システムを状態Bにす
ることは可能である。厳密に言えば、状態Aにあるコン
ピュータ・システムの状態は、状態Bにあるコンピュー
タ・システムの状態とは異なる。キャッシュとシステム
RAMの内容が違うからである。しかし、ソフトウェア
動作の観点からは状態Aと状態Bは同じである。という
のは、(キャッシュ外で実行するメリットのないプログ
ラムによって)システム速度が僅かに低下することを除
けば、実行側プログラムは影響を受けない。すなわち、
状態Aにあるコンピュータと状態Bにあるコンピュータ
は、ソフトウェア動作上は同等である。キャッシュがフ
ラッシュされたコンピュータは、キャッシュ・エリアに
有用なコードが再ロードされるまでは、パフォーマンス
が僅かに低下するが。
【0048】「パワー」という語も2つの同じような、
しかし混乱を招く恐れのある形で用いられる。「パワ
ー」は電力をさして言われるのが普通である。しかし
「パワー」が計算能力をさして用いられることもある。
どちらの意味で用いられているかは文脈からはっきりす
るはずである。
【0049】「回路」は、一般には、物理的な電子デバ
イスまたは電気的に相互接続された複数のデバイスを言
う。しかし「回路」という用語はまた、物理的な電子デ
バイスと同等なCPUコードの意味でも用いられる。例
えば一方で、2入力NANDゲートは74LS00を介
して、またはプログラマブル・デバイスに同等にインプ
リメントできる。これら2つのデバイスは物理的な電子
デバイスである。他方のNANDゲートは、CPU40
に2つのCPU読出し可能な入力ポートから2つの入力
を読出させ、CPUコマンドを使ってNANDの結果を
出し、CPU書込み可能な出力ポートを介して結果を出
力させることによってもインプリメントできる。これら
CPUインタフェースがとれるポートは、デコードされ
たラッチ或いはこれと同等なプログラマブル・デバイス
等のようにシンプルか、周知のPLA等のように複雑で
ある。「回路」という用語は、前記NANDゲートの3
つの例全てを含む程充分に広い意味で用いられる。場合
によっては、「回路」が電気経路をさすだけのこともあ
る。電気経路のタイプには、ワイヤ、プリント回路基板
上のトレースまたはビア、電気的に接続された1つの経
路をなす電気経路のタイプの組合わせ等がある。
【0050】「信号」は、1つの電気波形や複数の波形
をさすことがある。例えばビデオ・コントローラはビデ
オ信号を生成する。ビデオ信号は周知の通り、実際に
は、複数の電気導体上の複数の信号であり、HSYN
C、VSYNC、R、G、B等である。
【0051】図5に戻る。4番目で最後の状態はオフ状
態156である。オフ状態は、普通の意味でオフにされ
た代表的なコンピュータ・システムとほぼ同じである。
この状態では、電源17の1次/調整装置172が調整
電力をコンピュータ・システム10に供給するのを停止
する(ただし、図6に関連するところで詳しく説明する
ように、AUX5には少し調整電力が供給される)が、
コンピュータ・システム10の状態はハード・ディスク
31にセーブされていない。サスペンド状態154とオ
フ状態156は、電源17が調整電力を供給しなくなる
点で似ている。異なるのはオフ状態156では、コンピ
ュータ・システム10の状態が、サスペンド状態154
でのようにハード・ドライブ31にセーブされることは
ないという点である。またオフ状態156を抜けると、
コンピュータ10は、あたかもオンになったかのように
「ブート」する。すなわち実行コードは、ユーザが起動
するか、AUTOEXEC.BATファイル等の手段によって自動
的に起動しなければならない。しかし、サスペンド状態
154を抜けるときは、コンピュータ10は中断された
ところから実行を再開する。
【0052】図5はまた、4つの状態間の遷移を起こす
イベントの概要を示している。これらのイベントについ
ては図7乃至図12に関連するところで更に説明する
が、ここで概略を示すのがいいだろう。パワー・ボタン
21、2つのタイマ(非活動スタンバイ・タイマと非活
動サスペンド・タイマ−図13とこれに関連する本文を
参照)、ウェイクまでの時間(分)タイマ、及びサスペ
ンド・イネーブル・フラグ(図7、図11とこれに関連
する本文を参照)は全て、コンピュータがどの状態に入
るかに影響を与える。一般に2つのタイマは、ハードウ
ェアか、プログラムとしてCPU上で実行されるCPU
コード・タイマのいずれかである。好適な実施例の場合
は両方ともCPUコード・タイマであり、BIOSデー
タ・セグメントから実行される。ただし、2つのタイマ
をハードウェア・タイマにすることは考えられる。これ
は、システムのオーバヘッドを少なくする点で好まし
い。タイマについては図13に関連するところで詳しく
説明する。コンピュータ10がノーマル動作状態150
かスタンバイ状態152にあるときは両方のタイマがア
クティブである。タイマは以下に示すように、いずれか
のタイマが終了することで遷移が起こるように他のルー
チンと通信する。いずれか、または両方のタイマはユー
ザのニーズに応じて、一定時間が過ぎた後に終了するよ
うに設定することができる。好適な実施例の場合、非活
動スタンバイ・タイマと非活動サスペンド・タイマは1
0分乃至90分後に終了するようセットできる。いずれ
かまたは両方のタイマは止めることができる、すなわち
終了することのないように設定できる。タイマを「止め
ること」は、実際にタイマの増分カウント動作を止める
形か、単にその終了を無視する形になる。好適な実施例
では、タイマ終了値に0値をセットすることで、タイマ
の終了は検査されなくなる。例えばネットワーク内のコ
ンピュータのユーザは、コンピュータをサスペンド状態
154にすると、そのコンピュータについてLANに障
害が出るのでそれを望まないことがある。
【0053】理論上、タイマはカウント・アップかカウ
ント・ダウンであり、一定の所定状態にリセットでき、
タイマがスタートしたとき(またはリスタートしたと
き)または現在値が使用でき、差か合計がエンドポイン
ト終了トリガとして計算できるときは、別の一定の所定
値にまでカウントすることが予測できる。好適な実施例
では、タイマがリセットされたとき、リアルタイム・ク
ロック98からの分変数の現在値が格納される。セーブ
された分の値から現在の分値を引き、その差をユーザに
よって選択された値と比較することによってタイマの終
了がチェックされる。
【0054】あるシステム・アクティビティによって両
方のタイマが影響を受ける。例えば好適な実施例では、
キーボード12のキーを押す、マウス13を移動させ
る、マウス13のボタンを押す、といったユーザ操作、
或いはハード・ドライブ31の動作により各タイマがリ
スタートする(図13に関連するところで詳述)。従っ
て、ユーザがキーボード12のキーを押していたりマウ
ス13を使用していたりする間、或いはアプリケーショ
ンがハード・ドライブ31にアクセスしている間はいず
れのタイマも終了しない。また他のシステム・イベント
によってもタイマをリセットすることができる。ハード
ウェア割込みの動作を代わりにモニタすることもできよ
う。従って、プリント(IRQ5かIRQ7)またはC
OMMポート・アクセス(IRQ2かIRQ3)によっ
てシステムがサスペンド状態154に入るのを防ぐこと
が望ましいと思われる。
【0055】サスペンド・イネーブル・フラグは、マイ
クロコントローラU2内のCPU操作可能且つ読出し可
能なラッチである。これについては図7に関連するとこ
ろで詳しく説明する。簡単には、マイクロコントローラ
U2をあるモードにすると、スイッチ21の押下によっ
てシステム10がオフ状態156になり、マイクロコン
トローラU2を別のモードにすると、スイッチ21の押
下によってシステム10がサスペンド状態154にな
る。コンピュータ・システム10がノーマル動作状態1
50にあり、マイクロコントローラU2に書込まれたサ
スペンド・イネーブル・フラグがCLEARされている
ときにパワー・ボタン21が押された場合、158に示
すように、コンピュータ・システムはオフ状態156に
なる。コンピュータ・システム10がオフ状態156に
あって、パワー・ボタンが押された場合は、コンピュー
タ・システムはノーマル動作状態150に入る(160
参照)。また、いくつかの「外部イベント」(以下で詳
述)により、システムがオフ状態156からノーマル動
作状態150に遷移する。
【0056】コンピュータ・システム10がノーマル動
作状態150にある場合、あるイベントによりコンピュ
ータがスタンバイ状態152に入る。つまり非活動スタ
ンバイ・タイマが終了した場合、コンピュータ・システ
ム10はスタンバイ状態152に変わる(162参
照)。これに代えて、ユーザがシステムを強制的に直ち
にスタンバイ状態にすることができるように、システム
にダイアログボックス、スイッチ、他の入力デバイス等
の手段を用意することができる。スタンバイ状態152
にある間、ユーザがパワー・ボタン21を押す等、先に
述べた類のシステムやユーザのアクティビティにより、
コンピュータ10がスタンバイ状態152を抜けて、ノ
ーマル動作状態150に再入する(164参照)。
【0057】パワー・ボタン21の押下により、システ
ムはスタンバイ状態152からノーマル動作状態150
に変化するから、ユーザを混乱させることはない。上述
のように、スタンバイ状態にある間、モニタ11はブラ
ンクで、パワー/フィードバックLED23はオンか点
滅している(マイクロコントローラU2のフラグの設定
による)。システムに近づいて来たユーザは、モニタ1
1がブランクになっているのに気づき、システムがサス
ペンド状態154かオフ状態156にあると考え、シス
テムがノーマル動作状態150になるようにとパワー・
ボタン21を押すかもしれない。パワー・ボタン21の
押下によって、システムがサスペンド状態154かオフ
状態156のいずれかになる場合、前記ユーザはコンピ
ュータをただオフにするかサスペンドにすることにな
り、ユーザの意図と正反対になる。従ってスタンバイ状
態152にあるとき、パワー・ボタン21の押下によ
り、システムはスタンバイ状態からノーマル動作状態に
変わる。CPU40は、停止している場合でも、スイッ
チが押されたかどうかをすぐに調べる。ハードウェア割
込みでは、毎秒約20回、CPU40が停止状態から抜
ける。その後、次のAPM取得イベントの間、マイクロ
コントローラU2は、スイッチ21が押されたかどうか
の照会を受ける。
【0058】コンピュータ10がノーマル動作状態15
0にある場合、2つのイベントによってコンピュータが
サスペンド状態154に入る。第1に、非活動サスペン
ド・タイマが終了した場合、コンピュータ・システム1
0はサスペンド状態154に変わる(166参照)。第
2に、ユーザはマイクロコントローラU2に書込まれた
サスペンド・イネーブル・フラグがセットされている間
にパワー・ボタン21を押すことによって、コンピュー
タ10をサスペンド状態154にすることができる(1
66参照)。代わりにまたAPMドライバは、「パワー
状態設定−サスペンド」コマンドを通してサスペンド・
リクエストを発行できる。これによりAPM BIOS
ドライバがサスペンド・ルーチンを呼出す。サスペンド
状態154にある間、ユーザはパワー・ボタン21を押
すことによってノーマル動作状態150に変更する(1
68参照)。
【0059】また、いくつかの外部イベントによって、
システム10をサスペンド状態154からノーマル動作
状態150に(168)、またはオフ状態156からノ
ーマル動作状態150に(160)変更することができ
る。例えば、図7の回路内のマイクロコントローラU2
の電話音検出回路は、接続された電話回線が鳴動(リン
グ)したときにシステム10がオフ状態156かサスペ
ンド状態154を抜けてノーマル動作状態150になる
ようにされる。このような機能は、テレファックス・デ
ータやデジタル・データを受信するシステムに有用であ
る。システムは電話音に応答してノーマル動作状態に入
り、ファクシミリ受信、ファイルのアップロード/ダウ
ンロード、システムへのリモート・アクセス許可等のプ
リセット機能を実行し、非活動サスペンド・タイマの終
了に応答して再びサスペンド・モードに入る。システム
がノーマル動作状態にある間だけ電力を消費する。
【0060】またマイクロコントローラU2は、ウェイ
クまでの時間(分)アラーム・カウンタをインプリメン
トしている。このカウンタでは、あるアラーム型のイベ
ントにより、システム10がサスペンド状態154かオ
フ状態156を抜けてノーマル動作状態150に入る。
このようなシステムは、ある時刻にテレファックスやデ
ジタル・データを送信する際に便利で、低い電話料やシ
ステム・ハード・ドライブ31をテープ・バックアップ
・システムでバックアップする等のシステム・メンテナ
ンス機能の実行がいかせる。後者の場合、ウェイクまで
の時間(分)アラームは、スケジューラによってテープ
・バックアップ・プログラムが実行される前の一定時間
の間はマシンをオンにするようにセットされる。これに
代えて、APM BIOSスケジューラによりテープ・
バックアップ・プログラムを実行することもできる。
【0061】最後に、コンピュータ・システム10がス
タンバイ状態152にあって非活動サスペンド・タイマ
が終了した場合は、コンピュータ10はサスペンド状態
154に変わる(170参照)。コンピュータ・システ
ム10は、サスペンド状態154からスタンバイ状態1
52には変更できず、遷移168に関連するところで述
べているようにノーマル動作状態150に遷移できるだ
けである。
【0062】当然、コンピュータ・システム10は状態
を即座に変更することはできない。4つの状態の1つか
らの遷移それぞれで、必要なシステム変更を行なうには
一定の時間が必要になる。各遷移期間の詳細について
は、図7乃至図41に関連するところで説明する。
【0063】システム・ハードウェア:CPU40で実
行されるコードの詳細に入る前に、最初に、4つの状態
を達成するためのハードウェアについて述べるのがいい
だろう。図6に電源17のブロック図が示してある。電
源17は2つの装置、制御装置174と1次/調整装置
172を持つ。電源17への入力は、普通の壁コンセン
トから115VACか220VACを受けるLine-In
と、電源17の調整動作を制御するONバーがある。電
源の出力はAC Line-Out、±5VDC、±12VD
C、AUX5、GND、POWERGOODがある。AC Line-
Outは115VACで、通常はビデオ表示端末11の電
源入力(図示なし)に送られる。制御装置174はON
バー入力を受け、POWERGOODを出力する。1次/調整装
置172は、Line-In入力からの115VACを±5V
DC、±12VDCまで選択的に調整する。1次/調整
装置172が±5VDC、±12VDCのラインで電力
を調整するかどうかは、制御装置174によってインタ
フェースがとられたONバーの値による。好適な実施例
では、制御装置174が例えば適当な光アイソレータを
使って、ONバー信号を生成する回路に分離を与えるこ
とになる。
【0064】Line-In入力及びAC Line-Out、±5V
DC、±12VDC、GND、POWERGOODの各出力につ
いては周知の通りである。電源17が「オフ」になって
いるとき、すなわちLine-Inから調整電圧を供給してい
ないとき、POWERGOOD信号は論理0である。電源17が
「オン」のとき、電源17は115VACのLine-Inか
ら±5VDC、±12VDCの調整電圧を生じる。これ
ら4つの調整電圧とこれに関連するGNDは普通言われ
る「システム電源」である。調整電圧が許容差内のレベ
ルにあるとき、POWERGOOD信号は論理1に変わる。+5
ボルトか+12ボルトのラインが許容差を超えるとき
は、POWERGOOD信号が論理0になり、この状態が指示さ
れる。
【0065】AUX5出力はプレーナに補助+5VDC
を供給する。電源17が普通の壁コンセントに接続さ
れ、公称115VACを供給する際、電源が「オン」か
「オフ」かとは無関係に、1次/調整装置172はAU
X5に調整後の+5VDCを供給する。従って電源17
は、AC電力の供給を受けている間、常に公称+5VD
CをAUX5側で供給している。AUX5出力が+5出
力と異なるのは、電源が「オン」の間、1次/調整装置
172が+5出力を通して、調整後の+5VDCだけを
出力する点である。AUX5出力はまた、好適な実施例
では、1次/調整装置172がAUX5出力を通して、
アンペア未満の電流を+5VDC側で供給し、+5出力
を通して、数アンペアの電流を+5VDC側で供給する
点で、+5出力と異なる。
【0066】従来の代表的な電源は、アンペア数の高い
双投スイッチを使って、電源の調整部との間でLine-In
入力を接続、切断する。本発明の電源17はアンペア数
の高い双投スイッチを使用しない。代わりに、スイッチ
21がONバー信号を生成する回路を制御する。好適実
施例の場合、スイッチ21は、モメンタリ単極/単投の
押しボタン・スイッチであるが、当業者は、図7の回路
を適用して、単極/双投スイッチ等、他の型のスイッチ
を利用することもできる。AC Line-Inは壁コンセン
トから1次/調整装置172に常に接続されている。O
Nバーが論理1(約AUX5、公称+5VDC)のと
き、1次/調整装置172は±5や±12出力を通して
115VACのLine-Inを±5VDCまたは±12VD
Cに調整しない。1次/調整装置172は単に、アンペ
ア数の低い公称+5VDCをAUX5出力に供給するだ
けである。一方、ONバーが論理0(約GND)のとき
は、1次/調整装置172は115VACのLine-Inを
それぞれ4つの±5、±12出力を通して±5VDC、
±12VDCに調整する。従ってONバーが1のときは
電源17は「オフ」、ONバーが0のときは電源17は
「オン」である。
【0067】指定があれば、上記の電源17のようにA
UX5出力とONバー入力を持つ電源を、より一般的な
電源の供給元から入手することができる。
【0068】図7を参照する。本発明のコンピュータ・
システム10の電子回路の概略図が示してある。図7の
回路は、スイッチ21、パワー/フィードバックLED
23、電源17、ビデオ表示端末11及びCPU40で
実行されるコードのインタフェースをとるためのもので
ある。
【0069】回路は図7に示す通り、4つの集積回路、
プログラミング済み第1PAL16L8のU1、プログ
ラミング済み83C750マイクロコントローラのU
2、周知の74LS05であるU3、及びプログラミン
グ済み第2PAL16L8のU4(図示なし)、並びに
各種要素(回路内通信)からなる。一般にPALのU
1、U4(図示なし)は図3、図4のプレーナI/Oバ
ス90とマイクロコントローラU2のインタフェースを
とり、U2は図7の残りの回路とのインタフェースをと
り、残りの回路はスイッチ21、電源17、ビデオ表示
端末11及びプログラマブル・クロック・シンセサイザ
906とインタフェースをとる。クロック・シンセサイ
ザ906は、当業者には知られているこの種の多くのデ
バイスの1つである。例えばChrontelのCH9
055Aがあり、多数のソースから入手できる。
【0070】図7の回路は更に、スイッチ21、16M
HzのクリスタルY1、18のレジスタR1乃至R1
8、8つのコンデンサC1乃至C8、3つのN型MOS
FET、Q1乃至Q3(低電流の標準NMOS FET
で、好適な実施例のロジック・スイッチとして適してい
る)、及び6つの小信号ダイオード1N4148、CR
1乃至CR6を含み、全て図7のように設定/接続され
る。レジスタR1乃至R18は1/4ワットのレジスタ
で、図7に示した値±5%である。コンデンサC1は1
0μF(±10%)の電解コンデンサである。コンデン
サC2、C3は22pF(±10%)のタンタル・コン
デンサである。コンデンサC4乃至C8は0.1μF
(±10%)のセラミック・コンデンサである。またコ
ンデンサC9は1000pF(±10%)のセラミック
・コンデンサである。
【0071】クリスタルY1とコンデンサC2、C3
は、従来のように、動作のタイミングを制御するために
マイクロコントローラU2によって用いられる信号を生
成する。ダイオードCR1、CR3とレジスタR14
は、VBAT信号からAUX5信号を分離し、同時に電
源17がAUX5信号を生成する間に、バッテリ171
が消耗しないようにAUX5信号によってVBAT信号
が補われるようにする。AUX5信号は、ダイオードC
R1、CR3を通してステップ・ダウンされ、適正電圧
をVBATに接続されたデバイスに供給する。またVB
ATラインはAUX5ラインから分離される。
【0072】第2のPALのU4(図示なし)は、アド
レス・ラインSA(1)乃至SA(15)とAEN(ア
ドレス・イネーブル)ラインに接続される。SA(1)
乃至SA(15)とAENは図3、図4に示したプレー
ナI/Oバス90の1部である。第2のPALのU4
は、単にアドレス・デコーダになるようプログラミング
され、所定アドレスがアドレス・ラインSA(1)乃至
SA(15)に現われ、AEN(アドレス・イネーブ
ル)ラインがアクティブなときにアクティブLOW信号
DCD#を出力する。この例の場合、第2のPALのU
4は、連続した2つの8ビットI/Oポートをアドレス
0ECH、0EDHでデコードするよう予めプログラミ
ングされる。またDCD#信号は当業者には知られてい
るように、メモリ・コントローラやISAコントローラ
・チップ等、別の電子デバイスによって生成できる。
【0073】第1のPAL U1は、いくつかの機能を
提供するようプログラミングされる。i)CPU40と
マイクロコントローラU2の間でコマンド、データが転
送されるようにする、CPUとマイクロコントローラU
2の読出し/書込みインタフェース、ii)マウス割込
みINT12とキーボード割込みINT1の論理和をと
る、及びiii)CPU40からのコマンドに応答して
マイクロコントローラU2をリセットするリセット出力
である。
【0074】第1のPAL U1は、連続した2つのI
/Oポート(以下、「パワー・マネジメント・ポート」
ともいう)を利用する。第1のPAL U1は、プレー
ナI/Oバスから8つの入力、SD(4)、SD
(0)、SA(0)、IOW#、IOR#、RST_D
RV、IRQ1、IRQ12を持つ。第1のPAL U
1は、当業者には周知の通り、ピン7(I6)でのアク
ティブHIGH信号RST_DRV(メモリ・コントロ
ーラ46によって生成される)入力によって既知の初期
状態にリセットされる。
【0075】マイクロコントローラU2のリセット・ラ
インRST751はピン9側である。リセット副回路9
20は、図7に示すように、RST751信号を生成す
るためのものであり、4つのレジスタR4、R16、R
17、R18、2つのコンデンサC1、C8及び2つの
MOSFET、Q2、Q3からなり、第1PALのU1
及びマイクロコントローラU2と回路内通信を行なう。
リセット副回路920は、RESETラインが論理1の
ときにRST751ラインが論理1に引かれ、よってマ
イクロコントローラU2がリセットされるように、第1
PALのU1からのリセット出力信号RESETを、マ
イクロコントローラU2のリセット入力信号RST75
1にインタフェースする。
【0076】第1PALのU1は、CPU40が論理1
を制御ポート0EDHのビット0に書込むのに応答して
マイクロコントローラU2をリセットする。論理1を制
御ポート0EDHのビット0に書込むと、第1PALの
U1がRESETラインを論理1に引き、これはRST
751ラインを論理1に引くので、マイクロコントロー
ラU2がリセットされる。CPU40は、論理0を制御
ポート0EDHのビット0に書込むことによってリセッ
ト・リクエストをクリアする。
【0077】またリセット副回路は、図9に示すよう
に、電源17へのAC電源に電圧低下(brownout)や停
電が生じたときにAUX5電圧が降下した後に起こるよ
うに、AUX5信号の電圧が所定量だけ上昇するときに
は、RST751ラインを論理1に引き、よってマイク
ロコントローラU2をリセットする。83C750のメ
ーカ、Philipsは、リセットの問題を防ぐためにシンプ
ルなRC回路の使用を勧めるが、シンプルなRC回路で
は、電源電圧低下時に83C750がラッチアップす
る。図7の構成の場合、AUX5電圧がR4、R16、
C1によって決まる時定数よりも長い時間の間に、しき
い量だけ上昇したとき、RST751ラインは、R17
とC8によって決まる時間の間は論理1に引かれる(よ
ってマイクロコントローラU2がリセットされる)。こ
れが起こるのは通常の電圧低下や停電の後である。しき
い値は、図7の実施例で約1.5VDCである。
【0078】図9を参照する。AC電源が電源17に供
給されたときAUX5が上昇するある時間の間、及び電
圧低下が起こるある時間の間のリセット回路920の波
形が示してある。t0の前、電源はAUX5を出力して
おらず、VBATは約3.3ボルト、Q3は導通し、R
ST751ラインをグランドに引いている。t0では、
電源がAUX5を出力し始め、電圧はAUX5に影響を
与える電源内の負荷及びコンデンサにもとづく速度で上
昇し始める。C1とR4との間のノード、ノード1はA
UX5に容量結合しており、従ってAUX5の上昇につ
れて上昇する。
【0079】t1では、ノード1が約1.5ボルトに達
する。これはQ2をトリガするのに充分で、Q2はノー
ド2をグランドに引く。t2では、ノード2が2.5ボ
ルトを過ぎるとQ2が導通を止め、RST751ライン
がR18を介してAUX5のレベルにジャンプし、AU
X5と共に約5ボルトまで上がる。RST751ライン
が約3ボルトになるとマイクロコントローラU2がリセ
ットされる。
【0080】t3では、AUX5が上昇を止め、よって
ノード1も上昇を止め、C1とR4によって決まる速度
でグランドへ放電し始める(第1PAL U1のRES
ETラインはLOW)。t4でノード1が約1.5ボル
トを過ぎると、Q2が導通を止め、ノード2がC8、R
17によって決まる速度で充電する。t5では、ノード
2が約2.5ボルトを過ぎると、Q3が導通し、RST
751ラインをグランドに引く。従って、パワーオン時
のリセットが完了し、システムは普通、AUX5が5ボ
ルト、VBATが3.3ボルト、ノード1がグランド、
ノード2がVBATの状態にある。
【0081】t6では、AUX5ラインで電圧低下が始
まり、AUX5が放電する。ノード1は、AUX5に容
量結合していて、AUX5に追随しようとするができな
い。第1PAL U1のダイオードにより、−0.5ボ
ルトを大きく下回ることがないからである。t7では、
AUX5はその最下位点にあり、再び上昇を始める。再
びノード1はAUX5に追随して上昇する。t9で、ノ
ード2が2.5ボルトを過ぎるとQ3は導通を止め、R
ST751ラインがR18を通してAUX5のレベルに
ジャンプし、AUX5と共に約5ボルトまで上昇する。
RST751ラインが約3ボルトになると、マイクロコ
ントローラU2がリセットされる。
【0082】t10では、AUX5が上昇を止め、よっ
てノード1も上昇を止め、C1とR4によって決まる速
度でグランドへ放電し始める(第1PAL U1のRE
SETラインはLOW)。t11でノード1が約1.5
ボルトを過ぎると、Q2が導通を止め、ノード2がC
8、R17によって決まる速度で充電する。t12で
は、ノード2が約2.5ボルトを過ぎると、Q3が導通
し、RST751ラインをグランドに引く。従って電圧
低下によって誘起されたリセット・サイクルが完了す
る。この電圧低下の間に、ノード1は3ボルトを超えて
は上昇せず、従って、RST751ピンに接続されてい
る場合にはマイクロコントローラをリセットしないこと
に注意されたい。ただし、AUX5の電圧は4ボルトを
下回った。これはマイクロコントローラU2を不定状態
にするのに充分である。
【0083】リセットをトリガするしきい値は基準値に
結び付いている。従ってしきい電圧を増加/低下させる
には基準(この場合はVBAT)の値を増加/低下させ
なければならない。リセット回路によって、マイクロコ
ントローラU2のリセット・プロテクトが強化される
他、リセット回路はかなり低コストであり、マイクロコ
ントローラU2をリセットしないときは実質的に電力を
消費しない。
【0084】図7に戻る。マイクロコントローラU2
は、第1PALのU1を通してCPU40とのインタフ
ェースがとられ、複数の入力、出力、及び内部制御可能
な機能を持つ。
【0085】SWITCH信号はピン8(P0.0)に
入力され、押しボタン21の現在状態を反映する。押し
ボタン21は通常はオープンである。押しボタン21が
オープンのとき、SWITCHラインはレジスタR1を
通して論理0(グランド)に引かれる。押しボタン21
が押されると、クロージャ・イベントが生じ、SWIT
CHラインがレジスタR13を通して論理1(AUX
5)にまで引かれる。コンデンサC6は、スイッチのク
ロージャ・イベントをデバウンス(debounce)するよう
に働く。スイッチ21のクロージャ・イベントのこの他
のデバウンスは、当業者には知られているように、マイ
クロコントローラU2内で、SWITCHを所定回数
(50回等)読取り、SWITCHラインがこの全ての
読取りについて同じであるのを確認することによって行
なわれる。
【0086】電源17の調整はマイクロコントローラU
2によって直接制御できる。図7に示すように、ON信
号はピン5(P3.0)に出力され、レジスタR6を通
してSWITCH信号とワイヤORがとられ、電源のO
N#信号が制御される。ON信号が論理1のとき、MO
SFETのQ1は導通し、よってON#ライン(JP2
のピン2)が論理0(GND)に引かれ、よって電源1
7が±5VDC、±12VDCラインを通して調整電力
をシステムに供給し始める。一方、ONラインが論理0
のときは、MOSFET Q1は導通せず、従ってON
#ライン(JP2のピン2)はレジスタR7によって論
理1(AUX5)に引かれ、電源17は±5VDC、±
12VDCラインを通して調整電力を供給するのを停止
する。
【0087】ONラインの状態は、スイッチ21のクロ
ージャ・イベントに応答し、CPU40によって書込み
ができるマイクロコントローラU2内の書込み可能なレ
ジスタ・ビットを通してCPU40に応答するマイクロ
コントローラU2によって制御される。マイクロコント
ローラU2はAUX5によって電力の供給を受ける。従
ってマイクロコントローラU2は常に電力の供給を受
け、コードを実行し、システムを制御している。電源1
7が±5VDC、±12VDCラインを通して調整電力
をシステムに供給しておらず、(i)スイッチ21が押
されるか、(ii)外部イベントの1つが発生するか、
いずれかの場合、マイクロコントローラU2は、ON信
号をアサートし、よって電源17は±5VDC、±12
VDCラインを通して調整電力をシステムに供給する。
マイクロコントローラはスイッチ21が解除された後も
ON信号をアサートし続ける。
【0088】電源17は、バックアップ・システムとし
て、押しボタン21により、ユーザによる直接制御下で
オンにすることができる。普通このオプションが用いら
れるのは、システムがパワー・ボタン21の押下に応答
してパワーアップしないことから分かるように、マイク
ロコントローラU2が期待通りに機能することを止めた
場合だけである。図7に示すように、スイッチ21はま
た、ダイオードCR2、MOSFET Q1、レジスタ
R7、及びコネクタJP2を通して電源17のON#ラ
インを制御する。通常、押しボタン21はオープンで、
SWITCHラインはR1を通して論理0に引かれ、M
OSFET Q1は導通しない。従ってON#ライン
(JP2のピン2)はレジスタR7によって論理1(A
UX5)に引かれ、電源17は±5VDC、±12VD
Cラインを通して調整電力を供給しない。ユーザによっ
て押しボタン21が押されたままの状態にされると、S
WITCHラインは論理1に引かれ、MOSFET Q
1は導通するので、ON#ライン(JP2のピン2)は
論理0(GND)に引かれ、よって電源17は±5VD
C、±12VDCラインを通して調整電力を供給し始め
る。ボタン21がまだ押されたままだと、システムの電
源が入ってから、マイクロコントローラU2がまだ機能
しているかどうかをBIOSがCPU40に検査させ
る。機能していない場合、CPU40はマイクロコント
ローラU2をリセットし、マイクロコントローラU2
は、リセットされた後、スイッチ21が押されているこ
とを検出する。その結果、ボタン21がまだ押されてい
ると、マイクロコントローラがON信号をアサートし、
ユーザは、マイクロコントローラが今電源17を制御し
ていることを知ってスイッチ21を最終的に解除するこ
とができる。このバックアップ・オプションを使うに
は、ユーザは、ある時間の間は(数秒のオーダ−−ロゴ
が表示されてから約2秒)、ボタン21を押す必要があ
る。
【0089】マイクロコントローラU2がシステムをオ
フにするのは、(i)スイッチ21が押されたことか、
(ii)CPU40がマイクロコントローラにシステム
をオフにするよう命令したこと、に応答した場合だけで
ある。マイクロコントローラから見れば、これらのイベ
ントは同じである。スイッチの押下はスイッチ21のク
ロージャ・イベントによってか、CPU40によって生
じるようにマイクロコントローラが設定されるからであ
る。ハードウェア・ボタンの押下/解除は、ソフトウェ
ア・ボタンの押下/解除とほぼ同じに扱われる。マイク
ロコントローラU2がCPUによるコマンドなしにシス
テムをオフにするのは、マイクロコントローラU2のサ
スペンド・イネーブル・フラグがクリアされた場合だけ
である。その場合、システムの電源が入り、サスペンド
・イネーブル・フラグがCLEARされると、スイッチ
21のクロージャ・イベントに応答して、マイクロコン
トローラU2がON信号をクリアするので、電源17
は、±5VDC、±12VDCラインを通してシステム
に調整電力を供給するのを停止する。ON信号は、スイ
ッチ21が解除された後もクリアされた状態のままであ
る。
【0090】マイクロコントローラU2はまた、システ
ム状態がハード・ディスク・ドライブに正常にセーブ
(サスペンド)された後で発行されるような、CPUに
よるコマンドに応答してシステムをオフにする。マイク
ロコントローラU2は、このようなコマンドに応答し
て、ON信号をクリアし、よって電源17は±5VD
C、±12VDCラインを通してシステムに調整電力を
供給するのを停止する。
【0091】マイクロコントローラU2はまた、ある外
部イベントが起こるとシステムを検出しシステムに影響
を与えることができる。EXT_RING信号はピン7
(P0.1)の入力で、これによりマイクロコントロー
ラU2は、電源の入った外部モデム902からのリング
を検出する。当業者には明らかなように、通常の外部モ
デムはリング信号を出力し、この信号は、ティップとリ
ングの電話回線でリング信号が検出されたときに周知の
RS−232Cフォーマットで論理1に切り替わる。こ
の信号は、ダイオードCR6を通してマイクロコントロ
ーラU2とインタフェースがとられ、レジスタR10、
R11で分割され、最終的にEXT_RINGラインを
通してマイクロコントローラU2に入力される。この切
替信号は、マイクロコントローラU2によって25ミリ
秒毎にサンプリングされ分析される。マイクロコントロ
ーラU2は、連続した2つのサンプルについてこの入力
が論理1のときにはリングがあるとみなす。マイクロコ
ントローラU2は、この条件が満たされたことに応答し
て、ON信号をアサートし、よって電源17は±5VD
C、±12VDCラインを通してシステムに調整電力を
供給する。EXT_RING信号が、入ってくる電話を
検出するために用いられるようにするには、外部で電源
が入ったモデム902が必要である。
【0092】また、RSー232仕様に準じた(または
EXT_RING信号をアサートする程近い)認識信号
を出力する別のデバイスは、EXT_RINGラインと
インタフェースがとれ、システムをウェイクさせるため
に使用できる。例えば、動作センサ、侵入者アラーム・
センサ、音声起動センサ、光センサ、赤外線センサ、
「クラッパ」型センサ等がある。
【0093】本実施例は、図7、8に示すように、光ア
イソレータOPT01をベースにしたリング検出回路を
持つ内部モデム900からの電話リング信号を検出する
ようになっている。適当な光アイソレータは、例えばHe
wlett Packardが生産しており、多数のソースから入手
できる。内部モデム900は、システム・プレーナ20
の回路に作り込むか、拡張スロット78の1つにセット
することができる。後者の場合、モデム900は、Be
rgまたは同様のコネクタで、光アイソレータOPT0
1からの信号を、図7のパワー・マネジメント回路の回
路に電気的に接続できるよう変更しなければならない。
多くのモデム・メーカが、本発明の回路に使用するのに
適したコネクタを設けるためにモデムに変更を加えてい
る。EXT_WAKEUP#信号は、マイクロコントロ
ーラU2のピン4(P0.2)に入力され、内部モデム
900からリング検出光アイソレータOPT01の信号
を入力するのに用いられる。この信号は、レジスタR
9、R5、ダイオードCR6、及びコンデンサC9を通
してインタフェースされ、最終的にEXT_WAKEU
P#ラインを通してマイクロコントローラU2に入力さ
れる。
【0094】内部モデム900のしきい値/プロテクト
部905は、標準電話回線ティップとリングに接続さ
れ、当業者には明らかなように、(i)モデム900を
破損するような落雷その他の電気的な事象に対して安全
を守り、(ii)リングしきい値電圧をセットする。
【0095】光アイソレータOPT01からの切替信号
は、マイクロコントローラU2によって検出/分析さ
れ、マイクロコントローラU2は、EXT_WAKEU
P上の信号の連続した3つの周期で周波数が15.1H
zと69.1Hzの間にあるときはリングがあるとみな
す。内部モデム900は、EXT_RINGに沿ってリ
ング信号を送るために電源が入っていなければならない
EXT_RING信号回路とは異なり、光アイソレータ
OPT01が、通常はR5によってAUX5に引かれる
EXT_WAKEUP#ラインに沿って適当な信号を送
るのに電源が入っている必要はない。
【0096】CPU40にSMI(システム管理割込
み)がある場合、マイクロコントローラU2は、CPU
40のSMIを介してCPUに割込みをかけることがで
きる(CPU40は、システムが本発明の利点の多くを
利用するためにSMIを用意する必要はない)。SMI
_OUT#信号は、マイクロコントローラU2のピン3
(P3.2)に出力され、マイクロコントローラU2
が、オペレーティング・システムによる割込みの検査ま
たは他の場合には許可を待たずにCPU40にすぐ割込
みをかけられるようにする。SMI_OUT#ラインの
状態は、マイクロコントローラU2内にある書込み可能
なレジスタ・ビット(CPU40によって書込み可能)
によって制御される。また、マイクロコントローラU2
は、SMI_OUT#信号をアサートでき、よって、
(i)ACTIVITY#ラインで検出されたアクティ
ビティに応答して、または(ii)マイクロコントロー
ラU2によって電源17がシステムへの調整電力の供給
を停止する前に、CPU40に割込みをかけることがで
きる。これらのイベントのいずれかか両方を、CPUか
らマイクロコントローラU2へのコマンドによってイネ
ーブル、ディスエーブルにすることができる。
【0097】CPU40内のマイクロコード、SMIは
それぞれ、メモリとの間の特別なCPU状態セーブ・エ
リアにCPUの状態をセーブする。その後、CPU40
はSMI割込みハンドラを実行し、ハンドラは下記の機
能を実行する。CPUの状態をリストアするために、S
MI割込みハンドラはRSM(レジューム)命令を発行
する。これによりCPU40はそれ自身の状態を特別セ
ーブ・エリアからリストアする。
【0098】CPU40によってマイクロコントローラ
U2がCPUのSMIを介してCPU40に割込みをか
ける前に、CPU40は、ある値をCMOS NVRA
Mの変数に書込み、SMIの理由を示す。CMOS N
VRAM内のこの値はデフォルトで00Hであり、これ
は、マイクロコントローラU2によって電源17が調整
電力の供給を停止する前に生じるように、マイクロコン
トローラU2がCPU40に非同期に割込みをかけてい
ることをCPU40に示す。CPU40は、各SMIの
後、CMOS NVRAM内のその変数を00Hにセッ
トする。この値に応答してCPU40は、システムがマ
イクロコントローラU2によって応急にパワーダウンさ
れようとしていると仮定してあるタスクを行なう。CP
U40は、マイクロコントローラU2内のパワーダウン
延長タイマを定期的にリスタートすることによってマイ
クロコントローラU2がシステムをパワーダウンさせる
前の時間を延長することができる。
【0099】システムがパワーダウンする前のこの時間
の間、CPU40は多数のタスクを実行できる。例え
ば、ユーザが、ウェイク・アラームに影響を与えるパラ
メータを変更しているかもしれないので、CPUは新し
いウェイクまでの時間(分)値を再計算してマイクロコ
ントローラU2に書込む。また、CPUはCMOS N
VRAMに、コンピュータ・システムが最後に電源が入
ってから動作している時間等、ハード・ドライブ31に
後に書込まれる情報を書込む。
【0100】CPU40によって書込まれる他の値は、
CPU40が254でサスペンド・ルーチンにジャンプ
することを示す01H、CPU40が454でレジュー
ム・ルーチンにジャンプすることを示す02H、CPU
40がセグメントE000Hデータ構造に特別なCPU
状態セーブ・エリアを設定することを示す0FFH等が
ある。
【0101】本実施例では、マイクロコントローラに、
表示装置11をブランクにする制御権が与えられる。D
ISP_BLANK信号は、マイクロコントローラU2
のピン1(P3.4)を介して出力され、表示装置11
のブランキングを直接制御する。2つのインバータU3
D、U3Eが、DISP_BLANK信号と、ESYN
C#、BLANK#ラインのインタフェースをとる。E
SYNC#、BLANK#ラインが論理1(VCC)に
あるとき、ビデオ・コントローラ56はビデオ信号を生
成する。ESYNC#、BLANK#が論理0(GN
D)にあるときは、ビデオ・コントローラ56はビデオ
信号の生成を停止する。DISP_BLANKラインの
状態は、マイクロコントローラU2内にある書込み可能
なレジスタ・ビット(CPU40によって書込み可能)
によって制御される。CPU40は、マイクロコントロ
ーラU2に、システムがスタンバイ状態152になった
ときに表示装置をブランクにするよう指示する。また、
DISP_BLANKラインは、スイッチ21のクロー
ジャ・イベントに応答して順次にセットされ、次にCL
EARされる。同様に、アクティビティ割込み、この例
ではINT1とINT12、のいずれのについても、そ
のアクティビティによりマイクロコントローラがDIS
P_BLANKラインをCLEARし、よってビデオ・
コントローラ56はビデオ信号を生成する。
【0102】また、マイクロコントローラU2は、クロ
ック・シンセサイザ906によって生成されたクロック
信号の周波数を制御する。3つのBerg型ジャンパ
(図示なし)JP0、JP1、JP2がクロック・シン
セサイザを次のように制御する。JP0=0、JP1=
1、JP2=0のとき、クロック・シンセサイザは33
MHzのクロック信号を生成する。JP0=1、JP1
=1、JP2=0のとき、クロック・シンセサイザは2
5MHzのクロック信号を生成する。またJP0=0、
JP1=1、JP2=1のとき、クロック・シンセサイ
ザは8MHzのクロック信号を生成する。クロック・シ
ンセサイザ906は更に、ジャンパJP0、JP1、J
P2に対応する3つのクロック・ラインCLK0、CL
K1、CLK2によって制御される。図7に示すよう
に、これらクロック・ラインCLK0、CLK1、CL
K2は、CLK_SLOW#信号を通してマイクロコン
トローラU2によって制御される。CLK_SLOW#
信号はマイクロコントローラU2のピン2(P3.3)
で出力される。図の通り、CLK_SLOW#信号は、
オープン・コレクタ出力U3A、U3B、U3Cを持つ
インバータによって二重に反転される。また、レジスタ
R15、R8はプルアップ抵抗で、U3Aのオープン・
コレクタ出力とクロック・シンセサイザ906へのCL
K0入力をそれぞれ論理1に引くために用いられる。
【0103】3つのクロック信号CLK0、CLK1、
CLK2と3つのジャンパJP0、JP1、JP2はク
ロック・シンセサイザを次のように制御する。CLK_
SLOW#信号が論理1のとき、CLK1、CLK2も
論理1で、結果的にクロック・シンセサイザ906はジ
ャンパJP1、JP2によって制御され、システムによ
って用いられる25または33MHzの高いクロック信
号を生成する。一方、CLK_SLOW#信号が論理0
のとき、CLK1、CLK2も論理0で、結果的にクロ
ック・シンセサイザ906は、システムによって用いら
れる8MHzの低いクロック信号を生成する。よってシ
ステムが消費する電力は少なくなる。図7に示すよう
に、Berg型ジャンパはCLK_SLOW#ラインを
CLK0ラインから分離する。あるジャンパが所定位置
にあると、CLK0ラインはCLK_SLOW#信号に
追随する。一方、ジャンパが所定位置にない場合、CL
K0ラインはCLK_SLOW#信号の状態とは無関係
に、レジスタR8によって論理1に引かれたままであ
る。CLK_SLOW#ラインの状態は、マイクロコン
トローラU2内にある書込み可能なレジスタ・ビット
(CPU40によって書込み可能)によって制御され
る。また、CLK_SLOW#ラインは、ACTIVI
TY#ラインのアクティビティに応答してマイクロコン
トローラU2によってクリアできる。当業者には明らか
なように、本発明には他のクロック・シンセサイザも使
用できる。マイクロコントローラU2とクロック・シン
セサイザの相互接続は、用いられるシンセサイザの仕様
に合わせるために変更する必要があるかもしれない。
【0104】その他、マイクロコントローラU2は、パ
ワー/フィードバックLED23の発光を直接制御す
る。LED_CNTRL信号はピン22(P3.6)に
出力され、マイクロコントローラU2によるパワー/フ
ィードバックLED23の直接制御を可能にする。レジ
スタR2、R3とダイオードCR4、CR5は、論理0
のLED_CNTRLラインに応答して、パワー/フィ
ードバックLED23がAUX5電源ラインかVCC電
源ラインのいずれかによって駆動されるようにする。L
ED_CNTRLラインが論理1のとき、パワー/フィ
ードバックLED23は発光しない。以下に詳しく述べ
るが、LED_CNTRLラインの状態は、スイッチ2
1のクロージャ・イベントに応答して、ウェイク・アラ
ームに応答して、いずれかのリング検出入力でのリング
に応答して、或いは、システムがスタンバイ・モードに
なったことに応答して、マイクロコントローラU2によ
って制御される。
【0105】マイクロコントローラU2はLED23を
シンプルなパワーLEDになるように制御する。このよ
うなLED23は、システムをオフ状態156かサスペ
ンド状態154からノーマル動作状態150に変更する
スイッチ21のクロージャ・イベントの後に発光する。
また、マイクロコントローラU2は、システムをノーマ
ル動作状態150からサスペンド状態154かオフ状態
156のいずれかの状態に変更するスイッチ21の解除
イベントの後でLED23を消灯する。
【0106】また、LED23は、ある速度で、例えば
毎秒、マイクロコントローラU2によって選択的に点滅
させ、システムがスタンバイ状態152にあることを指
示することができる。またLED23は、1/2秒毎
等、別の速度でマイクロコントローラU2によって選択
的に点滅させて、システムがリングかアラームによって
ウェイクされたこと、また、システムがオフ状態かサス
ペンド状態にあることをことを指示することもできる。
或いはまた、サスペンド状態のとき、LED23は、マ
イクロコントローラU2によって数回まとめて点滅する
ように選択的に点滅させ、システムがリング、アラーム
等の外部イベントによって電源が入り、また非活動サス
ペンド・タイマの終了によってパワーダウンした回数を
指示することもできる。この場合、BIOSには、マイ
クロコントローラU2がLED23を点滅させる回数を
OSとアプリケーション・プログラムによって変更する
機能が用意される。例えば、システムがリングによって
ウェイクし、ファクシミリ伝送が受信された場合、通信
アプリケーション・プログラムが、あるBIOS機能を
呼出して、点滅回数に1を加えることができる。その
後、BIOSにより、CPU40が新しい点滅値をマイ
クロコントローラU2に書込む。これによりLED23
が、指示された回数点滅する。
【0107】POWERGOOD信号はマイクロコントローラU
2のピン4(P3.1)に入力され、この信号がマイク
ロコントローラU2とCPU40によって使用できるよ
うになる。具体的には、マイクロコントローラはPOWERG
OOD信号を使って、フィードバック・ベースの障害検出
補正回路をインプリメントし、電源17に障害があった
かどうかを判定し、障害のあった状態をクリアする。本
書で述べているように、ON信号がある時間(例えば3
秒間)アサートされていて、POWERGOOD信号が論理0に
あるとき、これは、電源17が調整電圧を適正レベルで
供給していないことを示すが、マイクロコントローラU
2はその際、電源17が、例えば過電流状態により障害
を起こしているとみなす。その結果、マイクロコントロ
ーラU2は、障害状態をクリアできるように、ある時間
の間(例えば5秒間)はON信号のアサートを停止し
て、障害がクリアされるようにする。その後マイクロコ
ントローラU2は、ON信号を再びアサートして、POWE
RGOOD信号が論理1になる(電源17がシステムに調整
電力を供給していることを示す)のを待つ。このフィー
ドバック・ベースの障害検出補正がなければ、電源17
は障害を起こしたままで、マイクロコントローラU2
は、電源が調整電力を供給し始めるようにとON信号を
アサートし続けることになる。これを解決する唯一の方
法は、電源からAC電源を遮断して障害をクリアするこ
とである。
【0108】電源の障害検出補正回路の他の実施例が図
10に示してある。この実施例はFET Q10−Q1
3、レジスタR20−R23、コンデンサC20、及び
74HC132を使用して、電源17がいつ障害を起こ
したかを検出し障害をクリアする。Q12は、R22、
C20によって決まる時間の間、ON信号をLOWに引
く。ON信号がHIGHのとき、AUX5に電力が供給
され、VCCはQ11をトリガするしきい値より低く、
よって電源の障害状態がクリアされる。
【0109】ACTIVITY#信号は、マイクロコン
トローラU2のピン19(INT1)に入力され、マイ
クロコントローラU2によって、キーボード12とマウ
ス13でのアクティビティに応答するために用いられ
る。IRQ1はキーボード・ハードウェア割込み信号
で、第1PAL U1のピン8(I7)に入力される。
キーボード12のキーを押すとIRQ1信号がパルス出
力する。IRQ12はマウス・ハードウェア割込み信号
で、第1PAL U1のピン11(I9)に入力され
る。マウス13を移動させるかマウス13のボタンを押
すと、IRQ12信号がパルス出力する。IRQ1、I
RQ12信号は、第1PAL U1で論理和がとられ、
ACTIVITY#信号として出力される。ACTIV
ITY#信号の使用により、マイクロコントローラU2
は、キーボード12かマウス13のいずれかのアクティ
ビティを見逃すことはない。
【0110】スタンバイ状態にある間、いずれの割込み
に関するアクティビティによっても、マイクロコントロ
ーラがビデオ表示を即座にリストアする。割込みIRQ
1、IRQ12をこのように使用することで、ユーザ
は、スタンバイ状態152からノーマル動作状態154
に戻る際に、リストアされたビデオ表示の形で即座にフ
ィードバックを受ける。これがないと、ユーザは、数秒
程後に、APMがユーザ・アクティビティをチェックす
る時までフィードバックを受けないことになる(図13
乃至図15に関連して説明)。
【0111】CPU40とマイクロコントローラU2の
通信は、第1PAL U1のピン18(I/06)に入
力され、第1PAL U1のピン13(I/03)に出
力されマイクロコントローラU2のピン13(P1.
0)に入力されるRWD0ラインを介してマイクロコン
トローラU2に入力されるSD(0)、マイクロコント
ローラU2のピン14(p1.1)に入力されるSD
(1)、マイクロコントローラU2のピン15(p1.
2)に入力されるSD(2)、マイクロコントローラU
2のピン16(p1.3)に入力されるSD(3)、第
1PAL U1のピン6(I5)に入力されるSD
(4)、マイクロコントローラU2のピン18(INT
0)に入力されるIO_STROBE#、及びマイクロ
コントローラU2のピン20(P1.7)に出力される
PROC_RDYを使って行なわれる。第1PAL U
1とマイクロコントローラU2は、(i)RWD0、S
D(1)、SD(2)、SD(3)を介してSD(0)
に沿ってCPU40からマイクロコントローラU2へ、
あるアドレスは基本的には1ビット書込みとしてマイク
ロコントローラU2をリセットし、別のアドレスは、デ
ータ・ビットSD(4)がHIGHのときのみ有効な、
マイクロコントローラU2に書込まれるニブルとして4
ビット・パラレルを行なう他、(ii)RDW0を介し
てSD(0)に沿ってCPU40によってマイクロコン
トローラU2から、あるアドレスがステータス・ビット
に対応し、別のアドレスがマイクロコントローラU2か
らのデータ・ビットに対応したシリアル(1ビット)読
出しを行なう、ように設定、プログラミングされる。
【0112】図48乃至図51を参照する。マイクロコ
ントローラU2で1160から実行されるいくつかのル
ーチンが示してある。マイクロコントローラU2は普
通、2つのメイン・ルーチン、タスク1168乃至12
16ではパワーオン・ルーチン、タスク1260乃至1
308ではパワーオフ・ルーチン、の1つを実行してい
る。パワーオン・ルーチンは、電源17が±5、±12
ラインで調整電力を供給しているか、またはしていない
が、システムがパワーオンのプロセスにあるとき、マイ
クロコントローラU2によって実行される。パワーオフ
・ルーチンは、電源17が±5、±12ラインで調整電
力を供給しているか、またはしていないが、システムが
パワーオフのプロセスにあるとき、マイクロコントロー
ラU2によって実行される。また3つの割込み駆動ルー
チンがあり、1つは1220乃至1232でCPU40
との通信に、1つは1236乃至1244でマウス13
かキーボード12のアクティビティを検出するために、
残り1つは、1248乃至1256で25ミリ秒、1/
2秒、1秒、1分のタイムベースを提供するために、用
いられる。
【0113】最初、1164でマイクロコントローラU
2が初期化され、その間に全ての変数も初期化され、カ
ウンタ変数が初期化され、タイマ割込みが初期化、イネ
ーブルにされ、通信ルーチンとアクティビティ・ルーチ
ンを制御する外部割込みが初期化される。
【0114】通信ルーチンは、1220からスタートす
る割込み駆動ルーチンで、第1PAL U1によって論
理0に引かれたIO_STROBEラインに応答して実
行される。このラインは、CPU40がコマンドまたは
照会を開始したことを示す。簡単には、このルーチンは
ニブル・コマンドまたは照会を1224でCPU40か
ら受け取り、1228でコマンドをインプリメントする
か照会に応答してデータを返し、1232で、割込みが
かかったコードにプログラム実行制御を返す。
【0115】マイクロコントローラは、コマンドまたは
照会をなすニブルをCPUから順次に受信する。マイク
ロコントローラは、ニブルを受信した後、PROC_R
DYをLOWに引く。次のニブルに対して準備が出来る
と、PROC_RDYを再びHIGHに引く。CPU4
0は、PROC_RDYでのLOWからHIGHへのこ
の遷移を認識して、次のコマンド・ニブルを書込むこと
ができる。
【0116】マイクロコントローラU2は、CPU40
からのコマンドか照会をインプリメントしている間は、
別のコマンドを受信できない。従ってマイクロコントロ
ーラU2はPROC_RDYラインを論理0にアサート
し、マイクロコントローラが次のコマンド/照会をまだ
受け入れられないことを(ステータス・ポートの読取り
を通して)CPUに示す。インプリメントが終わると、
PROC_RDYラインが論理1でアサートされ、マイ
クロコントローラU2が次のコマンド/照会を受け入れ
られることが(ステータス・ポートの読取りを通して)
CPUに示される。
【0117】アクティビティ・ルーチンは、1236か
ら始まる割込み駆動ルーチンで、第1PAL U1によ
って論理0に引かれたACTIVITY#ラインに応答
して実行される。これは、ユーザがマウス13かキーボ
ード12のいずれかを使用したことを示す。簡単には、
このルーチンは、割込み受信に応答して、1240で
(i)ビットをセットして、マウス13かキーボード1
2いずれかのアクティビティがあったことを示し、(i
i)クロックの低速化がイネーブルになっている場合に
はクロック速度をリストアし、(iii)ブランキング
がイネーブルになっている場合には画面11をアンブラ
ンクし、(iv)フェールセーフ・タイマをリスタート
し、(v)イネーブルであればCPUに対するSMIを
生成する。その後、ルーチンはプログラム実行制御を割
込みがかかったコードに返す(1244)。本書で詳し
く述べているように、このルーチンによってセットされ
たビットは次に、APMの「取得イベント」毎にスーパ
バイザ・ルーチンによって照会される。
【0118】タイマ・ルーチンは、1248からスター
トする割込み駆動ルーチンで、内部タイマ割込みに応答
して実行される。これは、25ミリ秒毎に割込みを生成
し、マイクロコントローラU2のタイムベースを与える
よう設定された16ビットのフリー・ランニング・カウ
ンタにもとづく。タイマ・ルーチンは、25ミリ秒、1
/2秒、秒、分のタイムベースを与える。簡単には、こ
のルーチンは割込みを受け取り、各時間がいつ生じたか
を判定し、対応するアクティビティを実行し(125
2)、プログラム実行制御を割込みがかかったコードに
返す(1256)。
【0119】ティック毎(25ミリ秒毎)には、電源が
調整電力を供給しておらず、マイクロコントローラがリ
ングに応答するように設定されている場合、タイマ・ル
ーチンは、EXT_RINGラインのRS−232のリ
ングをチェックし、ある場合はビットをセットする。
【0120】1/2秒毎には、オフ状態かサスペンド状
態の間、タイマ・ルーチンは、LED23を切り替える
かどうかを判定し、外部リング・インジケータの点滅シ
ーケンスでウェイクをインプリメントする(本書で詳
述)。
【0121】毎秒には、スタンバイ状態にある間、タイ
マ・ルーチンは、LED23を切り替えるかどうかを判
定し、サスペンド・インジケータの点滅シーケンスでウ
ェイクをインプリメントする(本書で詳述)。
【0122】また毎秒には、タイマ・ルーチンは、フェ
ールセーフ・タイマを減分し、APMフェール・サスペ
ンド・タイマを減分し、更に、あてはまる場合は電源障
害タイマを減分して、終了している場合は対応ビットを
セットする。フェールセーフ・タイマは20秒タイマ
で、これが切れたときにマイクロコントローラに、シス
テム電源をオフにさせる。フェールセーフ・タイマは、
APM取得イベントに応答してスーパバイザ・ルーチン
によって頻繁にリスタート(リセット)される。従っ
て、CPU40で実行されるコードが正常に実行されて
いる限りは、フェールセーフ・タイマが終了することは
ない。しかし、コードが正常に実行されなくなった場
合、BIOSと他のルーチンに障害が起こったという仮
定から、フェールセーフ・タイマは終了し、パワー・ボ
タン21の押下と解除に応答して、マイクロコントロー
ラU2により、電源17が±5、±12ラインで調整電
力を供給するのを停止する。
【0123】APMフェール・サスペンド・タイマは1
8秒タイマで、スイッチ21がオフ/解除状態のとき
(ユーザがシステムをオフにしようとしていることを示
す)イネーブルになり、システムはこのタイマが終了す
ると、サスペンドしようとするが、これはフェールセー
フ・タイマが終了してマイクロコントローラがシステム
をオフにする前が望ましい。フェールセーフ・タイマと
同様に、APMフェール・サスペンド・タイマも、CP
U40で実行されるコード、例えば、APM取得イベン
ト、最後のリクエストのAPM処理、最後のリクエスト
のAPM拒否等、によって頻繁にリスタート(リセッ
ト)される。従って、CPU40で実行されるコードが
正常に実行されている限り、APMフェール・サスペン
ド・タイマが終了することはない。しかし、コードが正
常に実行されなくなると、APMフェール・サスペンド
・タイマは終了する。
【0124】APMフェール・サスペンド・タイマが終
了すると、マイクロコントローラU2はビットをセット
する。このビットは、タイマ・レベル0割込み毎にチェ
ックされる。これは当業者には知られているように約5
5ミリ秒毎に生じる。また、タイマ・レベル0割込みの
サービス・ルーチンがフェールセーフ・タイマをリスタ
ートする。タイマ・レベル0割込みサービス・ルーチン
は、APMフェール・サスペンド・タイマが終了したこ
とを検出した場合は、システムをサスペンドしようとし
てサスペンド・ルーチンにジャンプする(図16乃至図
21に関連するところで説明)。
【0125】タイマ・レベル0割込みサービス・ルーチ
ンによってスタートするサスペンドは、好適なサスペン
ド方法ではない。多くのアプリケーション・プログラ
ム、アダプタが、APMを認識し、サスペンドされたシ
ステムに応答してタスクを実行する。タイマ・レベル0
割込みサービス・ルーチンによってスタートしたサスペ
ンドでは、APMを使用して、これらAPM認識エンテ
ィティに、サスペンドが応急であることを指示すること
はできない。その結果、システムは、これらエンティテ
ィが適切に準備されないままサスペンドされる。このよ
うなシステムは、タイマ・レベル0割込みサービス・ル
ーチンによってスタートするサスペンドによってセーブ
されることになり、従ってメモリ内のデータは失われな
い。しかし、所望のデータをセーブした後にシステムを
その適正状態にするにはユーザがマシンをリブートする
必要があるかもしれない。
【0126】APMフェール・サスペンド・タイマは、
特に、OS内のAPMドライバの「穴」にパッチをあて
るとき有益である。例えば、Microsoft Wi
ndows 3.1のモーダル・ダイアログ・ボックス
が表示されたとき、WindowsのAPMドライバは
APM取得イベントの発行を停止する。そのため、ユー
ザが、システムをサスペンドしようとしてパワー・ボタ
ン21を押した時にモーダル・ダイアログ・ボックスが
表示された場合は、システムはサスペンドしない。マイ
クロコントローラU2は、スイッチがオフ/解除状態に
あることを認識するが、APM取得イベントは全て停止
しているのでスーパバイザ・ルーチンは呼出されない。
スイッチの押下は、ユーザによってモーダル・ダイアロ
グ・ボックスがクリアされるまでは効果がない。しか
し、一旦APMフェール・サスペンド・タイマが終了
し、その終了がタイマ・レベル0割込みサービス・ルー
チンによって検出されれば、システム状態は、可能な程
度までセーブされ、システムがサスペンドされているこ
とはAPM認識型エンティティに指示されない。
【0127】タイマ・ルーチンは、毎秒、ウェイクまで
の時間(分)アラーム・タイマとアクティビティ・タイ
マを減分する。ウェイクまでの時間(分)タイマが終了
すると、イネーブルの場合、マイクロコントローラによ
り電源17が±5、±12ラインで調整電力の供給を開
始する。
【0128】マイクロコントローラU2が初期化された
後、電源が検査され(1168)、パワーオフかどうか
が判定される。まだパワーオンの場合、マイクロコント
ローラ17は、電源17に障害があったかどうかをチェ
ックする(1172)。電源17にはいくつか内部プロ
テクトがあり、これにより電源はシャットダウンまたは
「故障」する。マイクロコントローラU2は、電源17
に障害があったかどうかを次のように判定する。マイク
ロコントローラが動作しており(AUX5に電源が供給
されていること、すなわちAC電源が電源17に供給さ
れていることを示す)、且つ、マイクロコントローラU
2が、電源17によって±5、±12ラインに調整電力
が供給されるようにしようとON信号をアサートしてい
て、且つ、POWERGOODラインがアサートされていない
(電源17が±5、±12ラインで調整電力を供給して
いないことを示す)場合、電源17には障害があり、リ
セットされなければならない。
【0129】タスク1172で、電源17は実際は2回
検査される。マイクロコントローラU2はON信号をア
サートしてから3秒間(内部タイムベースによる測定)
待機する。ONが3秒間アサートされた後にPOWERGOOD
信号がアサートされない場合、マイクロコントローラU
2はON信号をクリアし、更に5秒間待機する。それか
ら再びON信号をアサートし、更に3秒間待機する。O
Nが3秒間アサートされた後にPOWERGOOD信号がアサー
トされない場合、マイクロコントローラU2はON信号
をクリアして、電源17に障害があったとみなす。
【0130】電源に障害があった場合、マイクロコント
ローラU2はパワーオフ・ルーチンにジャンプする(1
174)。一方、電源に障害がないか、オフの場合、マ
イクロコントローラは電源17によって±5、±12ラ
インに調整電力の供給が開始されるようにし(117
5)、I/Oポートを初期化し、LED23をオンにし
て、外部割込みをイネーブルにする(1176)。
【0131】図11は、マイクロコントローラU2内に
維持されるスイッチ状態マシンを示している。この図に
示す通り、状態は、スイッチ21のクロージャ・イベン
トや、コンピュータ・システム10のリセット、CPU
40による書込み等の他のイベントに対応して変化す
る。AUX5が電源17によって供給されていないと、
マイクロコントローラU2には電力が供給されず、従っ
てスイッチ状態は無意味である(174)。スイッチ2
1の押下、いずれかのソースからの電話、ウェイクまで
の時間(分)アラーム・タイマの終了、及びCPU40
からのコマンドにより、マイクロコントローラが、電源
17にシステム電源の供給を開始させる(図7乃至図1
0に関連するところで説明)。
【0132】図11に示す通り、スイッチ21の4つの
状態、(i)オン/押下状態176(この状態でユーザ
はボタンを押したままマシンをオンにしようとしてい
る)、(ii)オン/解除状態178(この状態でユー
ザはボタンを離してマシンをオンにしようとしてい
る)、(iii)オフ/押下状態180(この状態でユ
ーザはボタンを押したままマシンをオフにしようとして
いる)、(iv)オフ/解除状態182(この状態でユ
ーザはボタンを離してマシンをオフにしようとしてい
る)、がマイクロコントローラU2によってモニタされ
る。次に1180で、マイクロコントローラU2が、ス
イッチがオフ/解除状態、つまりユーザはボタンを離し
てマシンをオフにしようとしているかどうかを検査す
る。
【0133】状態174にあってスイッチ21が押され
たとき、マイクロコントローラU2はオン/スイッチ押
下状態176になる。スイッチ21を離すと、マイクロ
コントローラU2はオン/スイッチ解除状態178に入
る。同様に、マイクロコントローラU2がリセットされ
たとき、マイクロコントローラU2はオン/解除状態1
78になる。再びスイッチ21を押すと、マイクロコン
トローラU2はオフ/スイッチ押下状態180になる。
スイッチ21を再び離すと、マイクロコントローラU2
はオフ/スイッチ解除状態182に入る。その後にスイ
ッチ21が閉じられるとき、図11に示すように、マイ
クロコントローラU2は4つの状態を巡る。コンピュー
タ・システム10がノーマル動作状態150にあると
き、マイクロコントローラU2はオン/スイッチ解除状
態178にある。アプリケーション・プログラムはこの
状態にあるときに実行される。システム10はこの状態
でスタンバイ状態152に入り、抜けることができる。
この状態はまた、ユーザが起こしたサスペンド・アボー
ト・リクエストにも対応する。オフ/スイッチ解除状態
は、ユーザによるサスペンド・リクエストに対応するス
イッチ状態である。すなわち、オフ状態156にあるシ
ステムから始めると、スイッチ21を一度押して離す
と、コンピュータ・システムはノーマル動作状態150
になる。もう一度スイッチ21を押して離すと、サスペ
ンド・リクエストが生じ、これがスーパバイザ・ルーチ
ンによって読取られる(図13乃至図15で詳しく説
明)。3度目にスイッチ21を押して離すと、システム
10がサスペンド状態154にある前には、サスペンド
・アボート・リクエストが生じ、これはサスペンド・ル
ーチンによって読取られる。
【0134】図48乃至図51に戻るが、ユーザがボタ
ンを離してマシンをオフにしようとする場合、マイクロ
コントローラU2はパワーオフ・ルーチンにジャンプす
る(1184)。
【0135】一方、ボタンがオフ/押下状態にある場
合、つまりユーザがボタンを押したままマシンをオフに
しようとしている場合、マイクロコントローラは、スイ
ッチがBIOSによってマスクされているかどうかを検
査する(1192)。BIOSは、スタンバイに入ると
きスイッチ21を一度マスクして、先に述べた通り、ス
イッチの押下によってシステムが強制的にスタンバイ状
態からサスペンド状態になるのを防ぎ、ユーザ側の混乱
を避ける。
【0136】スイッチ21がBIOSによってマスクさ
れている場合、マイクロコントローラのコードはタスク
1176に戻り、マスク・ビットをクリアして、次のス
イッチ押下によってシステムがオフ状態かサスペンド状
態になるようにする。一方、スイッチ21がマスクされ
ていない、つまりスイッチ21がオフ/押下状態にない
場合、マイクロコントローラはハートビート・ルーチン
を実行する(1196)。
【0137】ハートビート・ルーチンは、CPU40
に、マイクロコントローラU2が正常に機能しているこ
とを示すために用いられる。マイクロコントローラのC
MD_STATE#ライン出力(ピン17、P1.4)
は通常は論理1である。50秒乃至60秒毎、マイクロ
コントローラU2は、このラインを約1.5マイクロ秒
の間に論理0に引いてから論理1に戻す。CPU40に
よって読出されるパワー・マネジメント・ステータス・
ポートは、CMD_STATE#とPROC_RDYラ
インの論理積なので、このHIGHからLOWそしてH
IGHへ戻る遷移は、CPU40によって時々、例えば
システムがブートするとき、モニタすることで、マイク
ロコントローラU2が正常に機能しているのを確認する
ことができる。
【0138】次に、マイクロコントローラU2は、BI
OSがパワーオフを指示したかどうかを検査する(12
00)。CPU40は、マイクロコントローラU2内の
実質的に全ての変数をアクセスし、変更できる。BIO
Sが、例えば、サスペンド中にシステムの状態がハード
・ドライブ31に書込まれた後で、システムをパワーオ
フにすることを示す変数をセットした場合、マイクロコ
ントローラU2はパワーオフ・ルーチンにジャンプする
(1204)。
【0139】一方、BIOSがパワーオフを指示しなか
った場合、マイクロコントローラはフェールセーフ・ル
ーチンを実行する(1208)。フェールセーフ・タイ
マは20秒タイマで、電源17が±5、±12ラインに
調整電力を供給しているときにイネーブルになる。この
ルーチンは、フェールセーフ・タイマが終了したかどう
かをチェックして、終了した場合はビットをセットす
る。このルーチンはまた、BIOSによってそう指示さ
れた場合にはフェールセーフ・タイマをリスタートす
る。
【0140】次に(1212)、安全策として、またマ
イクロコントローラを電源17に同期させるため、マイ
クロコントローラはPOWER_GOODラインをチェ
ックして、電源17がまだ±5、±12ラインに調整電
力を供給しているかどうか検出する。
【0141】電源17が±5、±12ラインに調整電力
を供給していない場合、マイクロコントローラU2は、
パワーオフ・ルーチンにジャンプする(1216)。一
方、電源17が±5、±12ラインに調整電力を供給し
ている場合、マイクロコントローラのコードはタスク1
180にジャンプして戻り、実行を続ける。
【0142】パワーオフ・ルーチンはタスク1260か
らスタートする。まずマイクロコントローラU2は12
64でアクティビティ割込みをディスエーブルにして、
表示がアンブランクされるのを防ぐ。
【0143】次に(1268)、マイクロコントローラ
は、POWER_GOODラインをチェックし、電源1
7がまだ±5、±12ラインに調整電力を供給している
かどうかを検出する。電源17が±5、±12ラインに
調整電力を供給している場合、マイクロコントローラU
2は、表示がブランクになるかどうか、LED23がオ
フかどうかを検査する(1272)。そうならマイクロ
コントローラU2によりビデオ・コントローラ56がビ
デオ信号の生成を停止するか、マイクロコントローラU
2がLED23をオフにする。
【0144】その後、或いはLEDと表示がブランクに
ならない場合、マイクロコントローラは次に、(i)ビ
ットをセットすることでシステムをオンに戻すことをB
IOSが指示した、または(ii)再びパワー・ボタン
21を押すことによってシステムをオンに戻すことをユ
ーザが指示した、かどうかを検査する。いずれかが起き
た場合、システムは再び電源が入れられることになり、
マイクロコントローラU2はパワーオン・ルーチンにジ
ャンプする(1284)。
【0145】次にマイクロコントローラは、EXT_W
AKEUP#ラインで光アイソレータOPT01からリ
ングがあったかどうかを調べる。RS−232ラインが
関係すれば、これは単にEXT_RINGラインがHI
GHかどうかのチェックを伴うだけである。光アイソレ
ータOPT01からの信号の場合はマイクロコントロー
ラU2によるチェックが増える。EXT_WAKEUP
#ラインは通常、レジスタR5によってHIGHに引か
れる。ティップとリングの間の電圧が、電話回線のリン
グのように、60V等、しきい値/プロテクト部905
によってセットされたしきい電圧よりも高いとき、光ア
イソレータOPT01はこのラインをLOWに引く。た
だしこの条件は、電話回線が検査されたときか、回線の
雑音によっても満足される。従って、EXT_WAKE
UP#ラインで単にLOWを待つだけでは、偽の「リン
グ」によってシステムがウェイクすることも考えられ
る。
【0146】そのためマイクロコントローラは、信号が
リングかどうかを、リングの周波数を測定することによ
って判定する。基準内のリングは16Hz乃至58Hz
の信号である。マイクロコントローラU2は、EXT_
WAKEUP#信号の4つの立ち上がりの間の3つの時
間を測定し、3つが全て15.1Hzと69.1Hzの
間の周波数に対応する場合、マイクロコントローラU2
は、そのラインで正規のリングがあったとみなし、対応
するビットをセットする。
【0147】チェック・ルーチンは、EXT_WAKE
UP#ラインでLOWが検出されたことによってスター
トする。このラインが3回の連続読出しでLOWの場
合、マイクロコントローラU2は、3回の連続読出しで
ラインがHIGHに戻るのを待つ。その直後、タイマ割
込みの基準をなす16ビット・カウンタが読取られて値
が格納され、マイクロコントローラU2は3回の連続読
出しについてラインがLOWに遷移するのを待つ。次に
マイクロコントローラは、最初の2つの立ち上がり間の
時間が15ミリ秒と66ミリ秒の間、つまり信号が1
5.1Hzと69.1Hzの間かどうかを検査する。そ
うなら、高分解能カウンタが再びサンプリングされ、マ
イクロコントローラは、2つのカウンタ・サンプルの差
を計算して、次のLOWからHIGHへの遷移を待つ。
このプロセスは、EXT_WAKEUP#ラインでの次
のLOWからHIGHへの2回の遷移について繰り返さ
れる。3つの時間全てが範囲内であれば、マイクロコン
トローラU2は、そのラインで正規のリングがあったと
みなし、対応するビットをセットする。EXT_WAK
EUP#ラインにLOWがないか、いずれかの時間が当
該範囲外であれば、マイクロコントローラのコードはビ
ットをセットせずに処理を続ける。
【0148】次にマイクロコントローラは、リングがあ
ったか、またはウェイクまでの時間(分)アラームが終
了したかどうかを検査する(1286)。RS−232
のリング、光アイソレータのリング、またはウェイクま
での時間(分)アラームの場合、これには関連ビットが
セットされたかどうかのマイクロコントローラU2によ
る検査も含まれる。
【0149】リングがあったか、ウェイクまでの時間
(分)アラームが終了したかのいずれかであれば、シス
テムは再び電源が入れられることになり、マイクロコン
トローラU2はパワーオン・ルーチンにジャンプする
(1287)。
【0150】その後(1288)、マイクロコントロー
ラは電源17が±5、±12ラインに調整電力を供給し
ているかどうかを検査する。供給していない場合、コー
ドはタスク1280にジャンプして戻り、再びループを
始める。一方、電源17が±5、±12ラインに調整電
力を供給している場合、マイクロコントローラU2はハ
ートビート・ルーチンを実行(1292)とフェールセ
ーフ・ルーチン(1296)を実行する。これら2つの
ルーチンについてはそれぞれタスク1196、1208
に関連するところで説明した。
【0151】マイクロコントローラU2は、次の3つの
条件下でのみ、電源17が±5、±12ラインで調整電
力の供給を停止するようにする。i)BIOSが、通信
ルーチンでインプリメントされる即時パワーオフを指示
した、ii)フェールセーフ・タイマが終了した、また
はiii)ユーザがパワー・ボタンを押し、マイクロコ
ントローラU2のサスペンド・イネーブル・フラグがセ
ットされていない、場合で、iii)は、SWITCH
入力が読取られる毎にマイクロコントローラU2が検査
する条件である。従って、マイクロコントローラは、フ
ェールセーフ・タイマが終了したかどうかを検査する
(1300)。終了していない場合、コードはタスク1
280にジャンプして戻り、再びループを始める。
【0152】一方、フェールセーフ・タイマが終了した
場合、つまりシステムの電源が切られようとする場合、
マイクロコントローラU2は、イネーブルであればCP
U40に対してSMIを出力する(1304)。これで
CPUは、システムがその直後にパワーオフされると想
定してあるタスクを実行することができる。例えば、C
PU40は、ウェイクまでの時間(分)アラームの更新
値を再計算してマイクロコントローラU2に書込む。
【0153】CPU40によって別に処理が行なわれな
い場合、マイクロコントローラは、プログラマブルSM
Iタイマが終了した後にシステムをパワーオフする。C
PU40は、SMIタイマをリスタートさせるか、値を
マイクロコントローラU2に書込むことによってこの時
間を延長することができる。
【0154】その後、また1268での検査により、電
源が充分な電力を供給していないとされた場合、マイク
ロコントローラU2はシステム電源を切る(130
8)。その際、i)電源17は±5、±12ラインでの
調整電力の供給を停止するようにし、ii)CPU40
は電力を失おうとしているので通信割込みをディスエー
ブルにし、iii)出力ポート(ONを除く)をHIG
Hにセットしてその消費電力を最小にし(SWITC
H、EXT_RING、EXT_WAKEUP等はこの
モードでもマイクロコントローラU2によって読取られ
る)、iv)システムへの電力がオフになることを残り
のルーチンが認識するようにパワーオフ変数をセット
し、v)次のスイッチ押下でシステムがオンに戻るよう
にスイッチ状態をオフ/解除に変更する。
【0155】その後、コードはタスク1280にジャン
プして戻り、再びループを開始して、リングを待つ、ス
イッチ押下を待つ、システムをウェイクさせるようにと
のBIOSからの指示を待つ、或いはウェイクまでの時
間(分)アラームが終了するのを待つ。
【0156】システム・ソフトウェア:本発明のコンピ
ュータ・システム10のハードウェア面について説明し
てきたが、コード面についての説明が残っている。
【0157】ここで図12を参照する。パワーアップ・
ルーチンの概要が示してある。ルーチンは、CPUが、
リセット・ベクトルによって指示されたコードにジャン
プし実行するとき200でスタートする。これは、CP
Uがパワーアップする毎に、またリセット・ハードウェ
ア信号によってか、またはリセット・ベクトルによって
指示されたコードにジャンプすることによってRESE
T命令が実行されたときのいずれかでCPUがリセット
されたとき、生じる。このようなリセット手続きは周知
の通りである。
【0158】まず最初に、パワーアップ・ルーチンの流
れは、マシンがなぜパワーアップされたかによる。図2
2乃至図25に関連するところで詳しく述べるが、シス
テム10は電圧低下や停電によってパワーアップされる
ことが考えられる。その場合、システムをオンにしてお
くのは不適切である。従って、パワーアップ・ルーチン
は最初に、システムをオンにしておくかどうかを決定す
る(940)。システムが不適切にパワーアップされた
場合は、CPU40はマイクロコントローラU2に指示
して、電源によるシステムへの調整電力供給を停止させ
る(942)。
【0159】システムをパワーオンのままにしておくか
どうかを決定するために行なわれる検査の1つは、マイ
クロコントローラがリングとみなしたことに応答してシ
ステムがパワーアップされた場合は、電話回線がリング
していることを確認することである。具体的には、シス
テムをパワーアップした後、システムがリングに応答し
てウェイクした場合、システムがハード・ドライブ31
内のハード・ディスクのスピンアップを待っている間
に、CPU40はモデム900または902(ここでは
充分に電力が供給されている)に、リング信号も検出し
たかどうか照会する。していない場合、システム電源は
切られる。モデム900または902がリング信号も検
出した場合、システムはパワーオンを続けることにな
り、ブート・プロセスが続く。
【0160】システム電源が維持されるとすると、一般
に、パワーアップ・ルーチンの流れは、システムがオフ
状態156にあるかサスペンド状態154にあるかに依
存する。すなわち、それぞれ、CMOS NVRAM9
6でサスペンド・フラグがクリアあるいはセットされた
かどうかである。202に示す通り、システム10はそ
れがオフ状態156にあるかサスペンド状態154にあ
るかを、不揮発性CMOSメモリ96からサスペンド・
フラグを読み出すことによって判定する。システムがノ
ーマル動作状態からオフ状態156かサスペンド状態1
54に変わるとき、各ルーチンは、NVRAM96のサ
スペンド・フラグをセットするかCLEARするかいず
れかである。NVRAM96でサスペンド・フラグがセ
ットされた場合、コンピュータ・システム10はサスペ
ンド状態154にあり、コンピュータ・システム10の
状態はハード・ディスク記憶装置31に格納されてい
る。一方、NVRAM96でサスペンド・フラグがCL
EARされた場合、コンピュータ・システム10はオフ
状態156にあり、コンピュータ・システム10の状態
はハード・ディスク記憶装置31に格納されていない。
従ってNVRAM96でサスペンド・フラグがセットさ
れている場合、コンピュータは「通常の」ブート・ルー
チンを実行する(タスク204乃至210)。最初のタ
スクは204に示したパワーオン・セルフテスト(PO
ST)で、これについては図22乃至図25に関連する
ところで詳しく説明するが、CPU40は、POSTか
ら戻った後、PBOOTルーチンを呼び出してオペレー
ティング・システムをロードする(206)。
【0161】PBOOTルーチンは、IBMコンピュー
タで実行される一般的なルーチンで、後述するように変
更してある。PBOOTは、どこからブートするか(ハ
ード・ドライブ31からか、フロッピー・ドライブ27
内のディスクからか)を決定し、オペレーティング・シ
ステムをロードする。オペレーティング・システムは、
CONFIG.SYSファイルによって指示された通りにシステム
変更を分析してインプリメントし、最終的にバッチ・フ
ァイルAUTOEXEC.BATを実行する。PBOOTルーチンに
ついては周知の通りである。OSはAPMデバイス・ド
ライバをロードし、このドライバは、BIOSにそれが
APMを認識するかどうか照会する。そうならBIOS
のAPMルーチンとOSのAPMルーチンが、ハンドシ
ェークを行ない、その後協力してここで述べている各種
機能を提供する。オペレーティングシステムは、ユーザ
の指示通りにコードを無期限に実行する(210)。し
かし、APIにスーパバイザ・ルーチンを通知した結果
は、APM BIOSとAPM OSによりスーパバイ
ザ・ルーチンが実行側プログラムと一緒に「パラレル」
に実行されることである(212)。すなわち、システ
ム10は時分割多重マルチタスク・システムであり、A
PM取得イベント、及び結果的にスーパバイザ・ルーチ
ン、は定期的に実行される。その最終結果は、スーパバ
イザ・ルーチンがほぼ毎秒実行されることになる。スー
パバイザ・ルーチンについては図13乃至図15に関連
するところで詳しく説明する。コンピュータ・システム
10は、図5に関連するところで述べたように、通常の
ブート・ルーチン204乃至210が終了した後、ノー
マル動作状態150にある。
【0162】再びタスク202に戻る。サスペンド・フ
ラグがNVRAM96にセットされた場合、システム状
態はハード・ドライブ31にセーブされており、システ
ム10はレジューム・ブート・ルーチンを実行する(2
14乃至220)。まずシステムは簡略POSTを実行
する(214)。簡略POSTについては図22乃至図
25に関連するところで詳しく説明する。簡略POST
の後、システムはレジューム・ルーチンを呼び出す(2
16)。レジューム・ルーチンについては図26乃至図
30に関連するところで詳述する。ここでは、レジュー
ム・ルーチンがコンピュータ・システム10の状態をシ
ステム10がサスペンドされる前のその設定に戻す、と
言えば充分である。レジューム・ブート・ルーチンは、
ノーマル・ブート・ルーチン(204乃至210)とは
異なり、APM APIにスーパバイザ・ルーチンの存
在を通知する必要はない。システムをサスペンドするた
めにAPMルーチンが実行されているはずだからであ
り、システム状態がリストアされると、APMはまたメ
モリにロードされる。従って、レジューム・ルーチンが
システム10の状態のリストアを終了すると、APMは
すでに所定位置にあって、リストアされたコードと一緒
に「パラレル」に実行されている(212、220)。
レジューム・ブート・ルーチン214乃至210が終了
すると、図5に関連するところで述べたように、コンピ
ュータ・システム10はノーマル動作状態150にあ
る。従って、ノーマル・ブート・ルーチン204乃至2
10かレジューム・ブート・ルーチン214乃至210
が実行された後、コンピュータ・システムはノーマル動
作状態150にある。
【0163】図13乃至図15は、スーパバイザ・ルー
チンの詳細を示すフローチャートである。スーパバイザ
・ルーチンはAPMによって「取得イベント」中にほぼ
毎秒呼び出される。オペレーティング・システムが異な
れば取得イベントは別の頻度で実行される。
【0164】スーパバイザ・ルーチンは図13の222
からスタートする。以下では、コンピュータ・システム
10はノーマル動作状態150でスタートすると仮定す
る。最初のタスクは、ユーザがスイッチ21を押したか
どうかの検査である(224)。スイッチ21は、図
7、11で詳しく述べている通り、マイクロコントロー
ラU2に照会するCPU40によって検査される。
【0165】タスク224での検査からユーザがスイッ
チ21を押したことがわかると、スーパバイザ・ルーチ
ンは次にサスペンド・リクエストが先にOS内のAPM
デバイス・ドライバに発行されていたかどうかを調べる
(950)。
【0166】タスク950の検査から、サスペンド・リ
クエストがまだAPMドライバに送られていないことが
わかると、スーパバイザ・ルーチンは「サスペンド・リ
クエスト」をOSのAPMデバイス・ドライバに発行し
(226)、APMドライバに戻る(228)。APM
ドライバは、セットされたAPM戻りコード「サスペン
ド・リクエスタ」に応答して、APMを認識するデバイ
スが必要なシステム・タスク(ハード・ディスクの同期
化等)を実行できるように応急サスペンドをブロードキ
ャストしてから「サスペンド・コマンド」を発行する。
このコマンドによりAPM BIOSルーティング・ル
ーチンがサスペンド・ルーチンを呼び出す。サスペンド
・ルーチンについては図16乃至図21に関連するとこ
ろで説明している。サスペンド・ルーチンは、基本的に
は、システム10をノーマル動作状態150からサスペ
ンド状態154に変えさせ、数命令の後(システムがサ
スペンドになる準備が出来ていない場合)または数分、
数時間、数日、数週、あるいは数年の後(システムがサ
スペンドかレジュームの場合)、スタンバイ・ルーチン
に制御を返すことができる。サスペンド・ルーチンは、
サスペンド・ルーチンがサスペンドなしでリターンする
か、あるいは完全なサスペンドとレジュームの後でリタ
ーンするかどうかとは無関係に、常にAPM戻りコード
「ノーマル・レジューム」をセットする。
【0167】タスク224では大抵、スイッチ21は押
されておらず、スーパバイザ・ルーチンはタスク952
に進んで、クリティカル・サスペンド・フラグがセット
されているかどうか調べる。またサスペンド・リクエス
トが先にOS内のAPMドライバに送られていた場合、
スーパバイザ・ルーチンはそこでタスク952に進ん
で、クリティカル・サスペンド・フラグがセットされて
いるかどうか調べる。クリティカル・サスペンド・フラ
グがセットされている場合、スーパバイザ・ルーチンは
次に、クリティカル・サスペンド・リクエストが先にA
PMドライバに発行されたかどうか調べる(954)。
【0168】クリティカル・サスペンド・リクエストが
APMドライバに発行されていない場合、スーパバイザ
・ルーチンはAPM戻りコードのクリティカル・サスペ
ンド・リクエストを発行し(956)、APMドライバ
に戻る(958)。APMドライバは、クリティカル・
サスペンド・リクエストに応答して、応急サスペンドを
ブロードキャストしないでシステムを直ちにサスペンド
する。従ってAPMを認識するデバイスはそのサスペン
ド前のタスクを実行できない。
【0169】クリティカル・サスペンド・フラグがセッ
トされていない場合(952)、またはクリティカル・
サスペンド・リクエストがすでにOS内のAPMドライ
バに発行されている場合(954)、スーパバイザ・ル
ーチンは次に、サスペンドが15秒より長く保留されて
いるかどうか調べる(957)。そうなら、スーパバイ
ザ・ルーチンはクリティカル・サスペンド・フラグをセ
ットし(958)、これによりタスク954の検査が次
のAPM取得イベント中に行なわれる。
【0170】その後、またはサスペンドが15秒より長
く保留されていない場合、スーパバイザは、サスペンド
が保留されているかどうかチェックする(959)。そ
うならCPU40により、マイクロコントローラU2が
フェールセーフ・タイマとAPMフェール・サスペンド
・タイマをリスタート(リセット)する(960)。
【0171】その後、またはサスペンドが保留されてい
ない場合、スーパバイザ・ルーチンは次にタスク230
に進んでシステムがレジュームされたばかりかどうかチ
ェックする。サスペンド・ルーチンが呼び出されると、
システムは、サスペンド・ルーチンがサスペンドなしに
リターンするか、完全なサスペンド、レジュームの後で
リターンするかとは無関係に、それがレジュームされた
ばかりとみなす。レジュームは230で検査され、シス
テムがレジュームされたばかりなら(またはDMAやフ
ァイル・アクティビティによりサスペンドが実行されて
いないなら)、APM戻りコード「ノーマル・レジュー
ム」が発行され(232)、APMに戻る(234)。
これに応答して、APM OSドライバは、システム・
クロック及び、その間に古くなった可能性のある他の値
を更新する。
【0172】大抵の場合、システム10はレジュームさ
れたばかりではなく、スーパバイザ・ルーチンはそこで
タスク236に進み、ユーザ・アクティビティを調べ
る。3つのタイプのユーザ・アクティビティ、すなわち
ハードファイル31のアクティビティ、キーボード12
のアクティビティ、マウス13のアクティビティ、がタ
スク236で検査される。スーパバイザ・ルーチンは、
APM取得イベント毎に、ハードファイルのヘッド、シ
リンダ、セクタの値をハード・ドライブ31から読み取
り、マイクロコントローラU2に、マウス割込みライン
かキーボード割込みライン(いずれもユーザ・アクティ
ビティを示す)のいずれかにアクティビティがあったか
どうかを照会し、リアルタイム・クロック98から分の
値(0分乃至59分の範囲で、各時の最初に0分に戻
る)を読み出す。3つのハード・ドライブ・アクティビ
ティ変数(ヘッド、シリンダ、セクタ)及び分の値は一
時的に格納される。次に3つのハード・ドライブ・アク
ティビティ変数が、先の取得イベントからセーブされた
ハード・ドライブ・アクティビティ変数と比較される。
3つの現在のハード・ドライブ値が先の取得イベントか
らの値と同じなら、また、マウス割込みかキーボード割
込みいずれかにアクティビティがなかった場合、ユーザ
・アクティビティもない。ハード・ドライブ値が異なっ
ているか、マウス割込みかキーボード割込みいずれかに
アクティビティがあった場合、ユーザ・アクティビティ
があり、現在のディスク・ドライブ・アクティビティ変
数はセーブされ、次の取得イベント中に読み出される値
と比較されることになる。
【0173】上記のアクティブ検出方式は、あるルーチ
ンがCPUで実行されて、ハード・ドライブ・アクティ
ビティが判定され、2つのハードウェア割込みだけがア
クティビティについてモニタされる形である。この他、
アクティビティは、ハードウェア的に、排他的にモニタ
することもできる。例えば、16のハードウェア割込み
ライン全てをアクティビティについてモニタしてもよ
い。
【0174】アクティビティがあった場合、スーパバイ
ザ・ルーチンは次に、コンピュータ・システム10がス
タンバイ状態152にあるかどうかを、スタンバイ・フ
ラグを検査することによって調べる(238)。スタン
バイ・フラグがセットされている場合、つまりシステム
10がスタンバイ状態152にあるとき、スーパバイザ
・ルーチンはスタンバイ状態152を抜けてノーマル動
作状態150に入る(240)。スーパバイザ・ルーチ
ンは、スタンバイ状態152に入ったときにパワーダウ
ンしたデバイスをパワーアップすることによってスタン
バイ状態152を抜ける(図47)。簡単には、システ
ムがスタンバイ状態152を終了するとき、スーパバイ
ザ・ルーチンはビデオ信号をリストアし、ハード・ドラ
イブ31内のハード・ディスクをスピンアップし、シス
テム・クロックをリストアし、APMドライバからのC
PUアイドル・コールによってCPU40が停止しなく
なるようにAPM CPUアイドル・コールをディスエ
ーブルにして、システム10がスタンバイ状態152に
あることを示すフラグをクリアする。
【0175】また、アクティビティがあった場合は、リ
アルタイム・クロック98からの分値もセーブされ、後
の取得イベント中に読み取られる分値と比較されること
になる。現在の分値をセーブすることで、非活動スタン
バイ・タイマと非活動サスペンド・タイマが効果的にリ
セットされる(241)。普通の使用状態ではユーザ・
アクティビティがあり、スーパバイザ・ルーチンはAP
M戻りコード「イベントなし」をセットし(242)、
APMの呼び出し側コードに戻る(243)。APM
は、戻りコード「イベントなし」に応答してルーチンを
呼び出さなくなる。
【0176】タスク236での検査により、ユーザ・ア
クティビティがなかったことがわかると、スーパバイザ
・ルーチンは次に、非活動スタンバイ・タイマと非活動
サスペンド・タイマが終了しているかどうか検査する
(それぞれ245、247)。システム10がスタンバ
イ状態150にある場合、非活動スタンバイ・タイマの
終了はチェックされず、検査はスキップされる(タスク
244)。
【0177】2つのタイマの終了は、現在の分値をセー
ブされた分値から引いて、ユーザ・アクティビティがあ
った時点からの分数に応じた値を得ることによってチェ
ックされる。この値は非活動スタンバイ・タイムアウト
値(245)、及び非活動サスペンド・タイムアウト値
と比較される(247)。2つのタイムアウト値はユー
ザが選択でき、タイマの1つが終了したためにシステム
がスタンバイ状態152に入ることがないように、サス
ペンド状態154に入ることがないように、あるいはス
タンバイ状態152かサスペンド状態154のいずれか
に入ることがないように、セットすることができる。い
ずれかのタイムアウト値を0にセットすることは、タイ
マが終了することはないことを示す。
【0178】最後のユーザ・アクティビティからの分数
が、非活動スタンバイ・タイムアウト値に等しいか大き
い場合、スーパバイザ・ルーチンによりシステム10は
スタンバイ状態152になる(246)。非活動スタン
バイ・タイマが終了していない場合、スーパバイザ・ル
ーチンは次に、非活動サスペンド・タイマの終了を調べ
る(247)。一方、非活動スタンバイ・タイマが終了
している場合、スーパバイザ・ルーチンによりシステム
10は、ある要素をそれぞれの低電力モードにすること
によってスタンバイ状態152になる(図47)。簡単
には、好適な実施例では、スーパバイザ・ルーチンは、
ビデオ信号をブランクにし、ハード・ドライブ31内の
ハード・ディスクをスピンダウンし、システム・クロッ
クを遅くし、APMドライバからのCPUアイドル・コ
ールによってCPU40が停止するようにAPM CP
Uアイドル・コールをイネーブルにして、システム10
がスタンバイ状態152にあることを示すフラグをセッ
トする。スーパバイザ・ルーチンは、システム10をス
タンバイ状態152にした後、非活動サスペンド・タイ
マの終了を調べる(247)。
【0179】スーパバイザ・ルーチンは、非活動サスペ
ンド・タイマが終了したかどうかを調べる(247)。
最後のユーザ・アクティビティからの分数が非活動サス
ペンド・タイムアウト値に等しいか大きい場合、スーパ
バイザ・ルーチンはAPM戻りコード「サスペンド・リ
クエスト」をセットし(248)、APMに戻る(24
3)。タスク226に関するところで述べたように、A
PMは、APM戻りコード「サスペンド・リクエスト」
に応答して、必要なシステム・タスクを実行してからサ
スペンド・ルーチンを呼び出す。サスペンド・ルーチン
については図16乃至図21に関連するところで詳しく
説明するが、簡単には、サスペンド・ルーチンにより、
システム10がノーマル動作状態150を終了してサス
ペンド状態154に入る。タスク226に関するところ
で述べたように、サスペンド・ルーチンは、システム1
0をサスペンドするかどうかとは無関係にスーパバイザ
・ルーチンに制御を返すことができる。一方、非活動サ
スペンド・タイマが終了していない場合、スーパバイザ
・ルーチンは、APM戻りコード「イベントなし」をセ
ットし(242)、APMの呼び出し側コードに戻る
(243)。
【0180】大抵はAPM戻りコード「イベントなし」
がAPMに返るが、他の各種イベントもAPMに返すこ
とができる。しかし、APM取得イベントそれぞれに指
定できるAPM戻りコードは1つだけである。例えば、
スタンバイ状態152に入った後は、「イベントなし」
がAPMに戻る。サスペンド状態154を終了した後
は、APM戻りコード「ノーマル・レジューム」がAP
Mに返る。APMにどのようなメッセージがキューイン
グされるかは全くコンピュータ・システムそのものの性
質による。スーパバイザ・ルーチンはまたAPM戻りコ
ード「ノーマル・レジューム」またはAPM戻りコード
「サスペンド・リクエスト」も返す。
【0181】ここで図15を参照する。961からスタ
ートする「最後のリクエストのAPM処理」ルーチンが
示してある。BIOS APMルーチンは、発行された
「最後のリクエストのAPM処理」に応答して、マイク
ロコントローラU2のフェールセーフ・タイマとAPM
フェール・サスペンド・タイマをリスタートし(96
2)、15秒のサスペンド保留タイマをリスタートし
て、システムがサスペンドの準備を正常に行なうのをO
S APMがまだ待っている間にクリティカル・サスペ
ンド・リクエストが発行されるのを防ぎ(963)、リ
ターンする(964)。
【0182】図15にはまた、965から始まる「最後
のリクエストのAPM拒否」ルーチンが示してある。B
IOS APMルーチンは、発行された「最後のリクエ
ストのAPM拒否」に応答して、マイクロコントローラ
U2のフェールセーフ・タイマとAPMフェール・サス
ペンド・タイマをリスタートし(966)、クリティカ
ル・サスペンド・フラグをセットし、よって即時サスペ
ンドを強制し(967)、リターンする(968)。
【0183】パワーアップとレジュームのルーチンにつ
いてはサスペンド・ルーチンの知識があればもっともよ
く理解される。従って、APM BIOSルーチンの説
明は次の順序で読むのがもっともよいと思われる。本発
明のパワーアップ・ルーチンの概要(上記、図12)、
スーパバイザ・ルーチンの詳細(図13乃至図15)、
本発明のサスペンド・ルーチンの詳細(図16乃至図2
1)、本発明のパワーアップ・プロセスの詳細(図22
乃至図25)、本発明のレジューム・ルーチンの詳細
(図26乃至図30)、CPU状態セーブ・ルーチンの
詳細(図31乃至図34)、CPU状態リストア・ルー
チンの詳細(図35乃至図38)、及び8259状態セ
ーブ・ルーチンの詳細(図39乃至図41)。
【0184】ほとんどのルーチンは他と相互作用し、サ
スペンド/レジュームのプロセスは連続したサイクルな
ので、本発明のコンピュータ・システム10の説明はい
くらか循環的であるが、ブート・ルーチン(図22乃至
図25)かレジューム・ルーチン(図26乃至図30)
の前にサスペンド・ルーチン(図16乃至図21)がも
っとも効果的と考えられる。ここで図16乃至図21を
参照する。サスペンド・ルーチンのフローチャートが示
してある。繰り返すが、ノーマル・ブート・ルーチン2
04乃至210またはレジューム・ブート・ルーチン2
14乃至220のいずれかが実行された後、コンピュー
タ・システム10はノーマル動作状態150にある。ま
た図12に関するところで述べたように、コンピュータ
・システムがノーマルにブートされた(204乃至21
0)かレジューム・ブートされたか(214乃至22
0)に関係なく、いずれかのルーチンが終了した後、A
PMOSドライバは、図12に示したスーパバイザ・ル
ーチン等のAPM BIOSルーチンを認識する。その
結果、APMはほぼ1秒毎にスーパバイザ・ルーチンに
ポーリングする。
【0185】サスペンド・ルーチン(図16乃至図2
1)は250からスタートする。サスペンド・ルーチン
は、スーパバイザ・ルーチンがAPM戻りコード「サス
ペンド・リクエスト」をAPMに返したことに応答して
APMによって呼び出される。また、サスペンド・ルー
チンは、図46、47で詳しく説明するが、システムが
チェックポイントを実行したときに呼び出されて部分的
に実行される。まず、サスペンド・ルーチンの流れは、
SMIを持つSの部分かどうかによる(970)。そう
なら、CPU40によりマイクロコントローラU2がC
PU40に対してSMIを生成する(972)。SMI
に応答して、CPU40内のマイクロコードが、当業者
には明らかなように、CPU40の状態をセグメントE
000Hのデータ構造にセーブする(974)。
【0186】一方、CPU40がSMIを持つS部では
ない場合、CPU状態セーブ・ルーチンが呼び出される
(252)。CPU状態セーブ・ルーチンについては図
31乃至図34に関連するところで詳述する。ここで
は、サスペンド・ルーチンが最初に呼び出されたときに
CPU40がどのようなモードにあっても、サスペンド
・ルーチンの残りの部分は、CPU40がリアル・モー
ドにあって実行され、従って、許可されたアドレス空間
の外部で命令を実行しようとしたり、特権命令を実行し
ようとしたりして生じ得るエラーを起こす恐れなく実行
できる。
【0187】CPU状態セーブ・ルーチンはプログラム
制御をユニークな形でサスペンド・ルーチンに返す(2
53)。CPU状態セーブ・ルーチンからサスペンド・
ルーチンへの「リターン」はCPUのリセットを伴う。
図31乃至図34のタスク630、632に関連すると
ころでこの「リターン」について詳しく説明する。サス
ペンド・ルーチンに関する詳細で重要なことは、CPU
レジスタがセグメントE000Hのデータ構造に書き込
まれており、CPU40がリアル・モードになっている
ということである。
【0188】SMIに応答してCPU状態セーブ・ルー
チンがリターンするか、CPUがそれ自身の状態をセー
ブした後、サスペンド・ルーチンは次に、スイッチ21
が押されたかどうかを確認する(254)。スイッチ2
1のクロージャは、図7乃至図11に関するところで説
明したように検査される。スイッチが押されなかった場
合、進行しているサスペンドはソフトウェア・サスペン
ドであり、CMOSNVRAM96にソフトウェア・サ
スペンド・フラグがセットされる。これによりソフトウ
ェア・サスペンドが、スイッチ・クロージャによって開
始されたハードウェア・サスペンドと混同されなくな
る。ソフトウェア・サスペンドは全て、マイクロコント
ローラU2にビットをセットすることによってハードウ
ェア・サスペンドに変換される。ソフトウェア・サスペ
ンドをハードウェア・サスペンドに変換した後の次のス
イッチ・クロージャによりサスペンドがアボートされ
る。
【0189】次のタスクは、セグメントE000Hにス
タックを設定することである(262)。
【0190】スタックが設定された後、サスペンド・ル
ーチンは264でDMAコントローラ72、ディスケッ
ト・アダプタ84、及びIDEディスク・コントローラ
86を調べて、それぞれDMA転送、フロッピー・ドラ
イブ転送、ハードファイル転送が現在進行しているかど
うかチェックする。そうなら、これら3つのタイプの転
送に固有の特性により、満足のいくサスペンドの実行が
妨げられるのでサスペンドは行なえない。例えば、ハー
ド・ドライブ31からのハードファイル転送が進行中な
ら、データはすでにIDEコントローラによって読み出
されているが、まだシステム・メモリ53には転送され
ていない。このデータはCPUによって適切にアクセス
できない。従ってこのデータは、システムがハードファ
イルの読出しの途中でサスペンドされた場合には失われ
てしまう。従って、これら3つのタイプの転送が進行中
である場合には、次のAPM取得イベントまでサスペン
ドは延期される。その際、DMAとディスケットのコン
トローラのアクティビティがもう一度調べられる。
【0191】そこで、制御をAPMに返すことができる
ように、252、260、262で実行されたタスクを
逆にしなければならない。まず、BIOSが読出し/書
込みから読出し専用に変更される(265)。これは、
まだシャドー・データを格納しているセグメントE00
0Hを閉じることによって行なわれる。タスク262で
作成されタイムスタンプはポップされリストアされる。
最後にCPU状態がCPU状態リストア・ルーチンによ
ってリストアされる(266)。それから制御がAPM
に戻る(267)。サスペンド・ルーチンは、次の取得
イベント中に更にほぼ1秒間はAPMによって再びポー
リングされる。その時まで、サスペンド・プロセスを妨
げていた転送はおそらく終了しており、そこでサスペン
ドを続けることができる。
【0192】タスク264に戻るが、DMA転送、フロ
ッピー・ドライブ転送、またはハードファイル転送が現
在進行していない場合は、サスペンドを実行することが
できる。サスペンド・ルーチンは268に続く。フェー
ルセーフ・タイマは常時カウントダウンしており、スイ
ッチ21がオフ/解除状態にあるときこれが終了した場
合はシステムがオフになる。従って、最初のタスクは、
268に示す通り、図7及び図48乃至図51に関連す
るところで説明しているフェールセーフ・タイマをリセ
ットすることである。
【0193】次に8042コプロセッサ104の状態が
セーブされる(270)。8042コプロセッサ104
のレジスタについては周知の通りである。レジスタはC
PU40によって直接読み取られ、その値はE000H
のデータ構造に直接書き込まれる。
【0194】次に8259割込みコントローラ92の状
態がセーブされる(272)。サスペンド・ルーチンは
8259状態セーブ・ルーチンを呼び出す。このルーチ
ンについては図39乃至図41に関連するところで説明
する。ここでは、8259状態セーブ・ルーチンは、2
つの8259割込みコントローラ92の未知のレジスタ
の内容を確認する(ただしいくつかのレジスタは書込み
専用)と言うだけで充分である。レジスタ値はE000
Hのデータ構造に直接書き込まれる。
【0195】割込みコントローラ92の状態がセーブさ
れた後、サスペンド・ルーチンによって実行される割込
み駆動型の各種タスクが正常に機能するように、割込み
コントローラ92の設定を既知の状態に変更しなければ
ならない。従って、BIOSデータ・エリア&ベクトル
・テーブルがスワップされる(274)。サスペンド・
ルーチンは、セグメント0000Hの現在状態のBIO
Sデータ・エリア&ベクトル・テーブルの内容をセグメ
ントE000H内のある位置にコピーする。次に既知状
態のBIOSデータ・エリア&ベクトル・テーブルの内
容がセグメントE000H内のデータ構造からセグメン
ト0000H内のある位置にコピーされる。既知状態の
BIOSデータ・エリア&ベクトル・テーブルは、以下
で説明するブートアップ・ルーチン(図22乃至図2
5)のタスク414でセグメントE000Hにコピーさ
れる。最後に、現在状態のBIOSデータ・エリア&ベ
クトル・テーブルはセグメント0000Hからセグメン
トE000Hのデータ構造にコピーされる。274のル
ーチンが終了すると、割込み13H(ディスク読出し/
書込み)、割込み10H(ビデオ・アクセス)等、全て
の割込みは想定通りに機能する。
【0196】次にタイマ102の状態がセーブされる
(276)。タイマのレジスタは周知の通りである。レ
ジスタは全てCPU40によって直接読み取ることがで
き、その値はE000Hのデータ構造に直接書き込まれ
る。IDEディスク・コントローラ86の状態もセーブ
される(276)。IDEディスク・コントローラ86
のレジスタは周知の通りである。レジスタは全てCPU
40によって直接読み取ることができ、その値はE00
0Hのデータ構造に直接書き込まれる。
【0197】次のステップは、ハード・ドライブ31上
のサスペンド・ファイルに書き込まれるシステム・メモ
リを準備することである。システム・メモリはシステム
RAM53(メイン・メモリと拡張メモリの両方を含
む)とビデオ・メモリ58からなる。この時点でRAM
53の部分部分は外部キャッシュ60にあると考えられ
る。CPUキャッシュはタスク628でフラッシュされ
ている(図31乃至図34に関連するところで説明)。
次に外部キャッシュがフラッシュされ(286)、イネ
ーブルにされてハード・ドライブ31への書込みが高速
化される。
【0198】システム10で実行されるコードはIDE
コントローラ86を未知の状態にすることがある。その
ため、次のステップは、IDEコントローラ86を既知
の状態に初期化することである(292)。これは、I
DEコントローラ86内のレジスタに値を直接書き込む
ことによって行なわれる。
【0199】次に、モデムの状態を読み出してE000
Hデータ構造にセーブする割込み駆動のパラレル・スレ
ッドがスタートする(976)。このルーチンは、ある
モデムに関連するCOMMポートに対応した割込みをキ
ャプチャし、コマンドをモデムに送ってモデムがそのレ
ジスタの内容を順次に送り返すようにし、モデムからレ
ジスタ内容を受信して、レジスタ値をE000Hデータ
構造にセーブする。このルーチンは最初のコマンドをモ
デムに転送してから、割込み駆動式に応答し、モデムの
応答を受信して、各COMMポート割込みに応答してモ
デムに次のコマンドを転送する。これは、全てのモデム
のレジスタがセーブされるまで繰り返される。このルー
チンは、パラレル・スレッドとして実行されない場合、
システムをサスペンドするのにかかる時間に数秒(モデ
ムと現在のボーレートに応じてモデム当たり3秒乃至5
秒)を追加することができる。割込み駆動型パラレル・
スレッドとしては、システム状態がハード・ドライブ3
1に書き込まれる前に実行を終了した場合には、サスペ
ンドに時間を追加することはないか、あってもわずかで
ある。
【0200】割込み駆動型パラレル・スレッドのモデム
・セーブ・ルーチンが起動した後、サスペンド・ファイ
ルはハード・ドライブ31内のハード・ディスク上にな
ければならない(294)。サスペンド・ファイルのヘ
ッド、セクタ、シリンダはCMOSメモリ96に格納さ
れる。サスペンド・ファイルが見つかると、ファイルの
サイズとシグネチャが読み出される。好適な実施例で
は、シグネチャは、サスペンド・ファイルの存在を示す
任意長のASCIIコードである。ハード・ファイル・
システムでランダムに見つけられる可能性が非常に小さ
い2進列を使うもの等、他のシグネチャの実施例も可能
である。
【0201】サスペンド・ファイルのサイズとシグネチ
ャが読み出されると、次のステップは、サイズとシグネ
チャが正しいかどうかの確認である(296)。シグネ
チャが正しくない(別のプログラムがサスペンド・ファ
イルを変更した可能性を示す)か、ファイル・サイズが
正しくない(サスペンド・ファイルのサイズが変更され
た可能性を示す)のいずれかであれば、サスペンド・ル
ーチンは致命的サスペンド・エラー・ルーチン(図31
乃至図34のタスク652でスタートする)を呼び出す
(298)。ユーザがスイッチ21を押した場合、致命
的サスペンド・エラー・ルーチンは終了し、プログラム
制御はタスク299からタスク506にジャンプする。
【0202】一方、シグネチャが正しく、サスペンド・
ファイルが充分大きい場合、サスペンド・ルーチンは先
に進んでコンピュータ・システムの状態をメモリに書き
込むことができる。
【0203】コンピュータ・システム10の状態をハー
ド・ドライブ31に書き込む前に、CPU40はマイク
ロコントローラU2に、フェールセーフ・タイマをリス
タート(リセット)するよう指示し、マイクロコントロ
ーラU2に、スイッチ21が再び押されたかどうか照会
する(297)。スイッチ21が再び押されなかった場
合、サスペンドは継続することになる。一方、スイッチ
が再び押された場合、サスペンドはアボートされる。サ
スペンド・ルーチン内の数箇所でフェールセーフ・タイ
マがリスタートされ、スイッチ21のクロージャが調べ
られる。タスク297は説明の便宜のためにすぎない。
つまり、当業者(設計者)であれば、フェールセーフ・
タイマのリスタート回数とリスタート間の許容時間を決
定することができよう。サスペンド・ルーチンは、フェ
ールセーフ・タイマを、それが終了してマイクロコント
ローラU2により電源17がオフになる前に、リセット
する必要がある。同様に、スイッチ21は時々チェック
する必要がある。スイッチ21が再び押された場合、つ
まりユーザがサスペンドをアボートしようとした場合、
コードはレジューム・ルーチンの対応箇所にジャンプし
て、「アンサスペンド」し、部分的サスペンドから復帰
するようにする。
【0204】同様に、Ctrl-Alt-Delでサスペンドがアボ
ートされる(350)。Ctrl-Alt-Delを押す(コントロ
ール・キー、Altキー、及びDeleteキーを同時に押す)
ことは、IBM BIOSとインテル社の80X86系
列のCPUをベースにした代表的なコンピュータ・シス
テムをリセットする周知の方法である。コンピュータ・
システム10は、周知の通り、Ctrl-Alt-DelをBIOS
割込み1ハンドラで処理する。コンピュータ・システム
10には少し変更を加えた割込み1ハンドラがあり(3
50)、CMOSメモリ96内のサスペンド・フラグを
クリアし(352)、リセットでブートアップ・ルーチ
ンにジャンプする(354)。
【0205】本発明のコンピュータ・システム10で
は、サスペンド・ルーチンが実行中にCtrl-Alt-Delを押
すと、コンピュータ・システムがオフ状態156にな
る。これが起こるのは、スイッチ21のクロージャの
後、Ctrl-Alt-Delを押すことでブートアップ・ルーチン
が呼び出され、ブートアップ・ルーチンがマイクロコン
トローラU2を、フェールセーフ・タイマが終了した状
態に初期化し、スイッチはまだオフ/解除状態にあるか
らである。従って、サスペンド・ルーチン内にある間に
Ctrl-Alt-Delを押すと、コンピュータ・システム10は
オフ状態156になる。
【0206】ここでタスク300を参照する。サスペン
ド・ファイルは再びハード・ドライブ31にある。シグ
ネチャ・フレーズはサスペンド・ファイルの第1バイト
に書き込まれる(300)。次にセグメントE000H
にある64キロバイトのデータ全体がサスペンド・ファ
イルに書き込まれる(302)。E000Hのこの64
Kのコピーは実際には単なるプレース・ホルダであり、
サスペンド・ルーチンの終わりに同じこの位置に再び書
き込まれる。
【0207】次に、ビデオ・コントローラ56の状態が
セーブされる(303)。ビデオ・コントローラ56の
レジスタは周知の通りである。レジスタは全てCPU4
0によって直接読出し可能であり、その値はE000H
のデータ構造に直接書き込まれる。
【0208】次にシステム・メモリがサスペンド・ファ
イルに書き込まれる。これは、データをシステム・メモ
リから読み、圧縮し、セグメントE000Hに書き込
み、最後に圧縮されたデータをセグメントE000Hか
らサスペンド・ファイルに書き込むツイン・バッファ・
システムによって行なわれる。2つのルーチンが時分割
多重構成で動作する。1つはデータを圧縮してセグメン
トE000Hに書き込む。もう1つはサスペンド・ファ
イルに書き込む。前者はフォアグラウンドで動作し、後
者はバックグラウンドで動作する割込み駆動ルーチンで
ある。当然、CPU40は1つしかないので、ある時間
に実行可能なルーチンも1つだけであるが、後者のルー
チンは割込み駆動なので、必要に応じて前者のルーチン
の実行に割込みをかけて、サスペンド・ファイルへのデ
ータ転送の速度を最適化することができる。2つのバッ
ファは各々が8キロバイト長であり、これはハード・ド
ライブ31への転送時間を最適化すると考えられる。
【0209】このプロセスは304からスタートし、8
Kバッファの最初のものを埋めるのに充分なデータの読
出し、圧縮、セグメントE000Hへの書込みが行なわ
れる。データは、ランレングス・コード化法によって圧
縮されるが、他の圧縮方法も使用できる。この時点で、
「バッファから書込み」ルーチン(307)が起動する
(306)。「バッファから書込み」ルーチン307は
割込み駆動ルーチンで、バックグラウンドで動作し、タ
スク308乃至310からなる。圧縮ルーチン(31
1)はタスク312乃至318からなり、フォアグラウ
ンド・ルーチンである。最初、「バッファから書込み」
ルーチン307は、タスク304によって埋められたば
かりのバッファをサスペンド・ファイルに書き込む(3
08)。「バッファから書込み」ルーチン307がこの
バッファの内容をサスペンド・ファイルに書き込んでい
る間、圧縮ルーチン311は、次のバイトをシステム・
メモリから読み続け、それを圧縮し、圧縮されたデータ
を2つの8Kバッファのもう一方に書き込む(31
2)。圧縮ルーチン311がバッファを圧縮データで埋
めれば、次のステップは、システム・メモリ全体がすで
に圧縮されているかどうかの判定である(314)。
【0210】IDEコントローラ86はデータをハード
・ドライブ31にきわめて高速に書き込むことはできな
い。そのため、圧縮ルーチン311は常に、「バッファ
から書込み」ルーチン307がバッファをハード・ドラ
イブ31に書き込むのを終える前にハード・ドライブ3
1に書き込まれていない8Kバッファの埋め込みを終え
る。従って、圧縮バッファ311は、「バッファから書
込み」ルーチン307がバッファをハード・ドライブ3
1に書き込むのを終えるのを待つ必要がある。圧縮ルー
チン311が、システム・メモリ全ての圧縮と書込みを
終えていない場合、圧縮ルーチン311は「バッファか
ら書込み」ルーチン307を待つ(316)。圧縮ルー
チン311と「バッファから書込み」ルーチン307は
一連のフラグを介して通信する。「バッファから書込
み」ルーチン307が現在のバッファをサスペンド・フ
ァイルに書き込むのを終えたとき、ルーチン307は次
にバッファ・フラグを切り替えて、圧縮ルーチン311
に対して、サスペンド・ファイルに書き込まれたばかり
のバッファを圧縮データで埋める処理を開始できること
を示す。次に、タスク297に関連するところで述べた
ように、フェールセーフ・タイマC2がリセットされ、
スイッチ21のクロージャ・イベントがチェックされる
(309)。
【0211】「バッファから書込み」ルーチン307は
次に、サスペンド・ファイルに書き込まれたばかりのバ
ッファが、書き込まれる最後のバッファかどうかを判定
する(310)。そうでない場合、「バッファから書込
み」ルーチンはサスペンド・ファイルに、圧縮ルーチン
311によって埋められたばかりのバッファを書き込
む。その間、圧縮ルーチン311は、バッファ・フラグ
を調べることによって、圧縮された他のシステム・メモ
リに対してバッファの準備が出来ていることを判定して
いる。すなわち、圧縮ルーチンは、「バッファから書込
み」ルーチンが現在のバッファの処理を終えるまで31
6で待機し、その時点で圧縮ループが継続する(31
2)。ビデオ・メモリ58は、リニア・フレーム・バッ
ファリングがサポートされている場合は圧縮されるが、
VESAページ・アクセスの場合は圧縮されないことに
注意されたい。VESAページ・アクセスのビデオ・メ
モリは、VESAコールを使ってビデオ・コントローラ
56を通して読み出され、先に詳しく説明したツイン・
バッファ・システムを使って圧縮なしに書き込まれる。
【0212】圧縮ルーチン311は、全てのシステム・
メモリの圧縮を終えると、318で「バッファから書込
み」ルーチン307が最後のバッファをサスペンド・フ
ァイルへ書き込むのを終えるのを待つ。「バッファから
書込み」ルーチン307は、終了すると、310から3
18へ分岐して消える。この時点で、バックグラウンド
・ルーチンは実行されておらず、メイン・プログラムが
続く(320)。
【0213】次にタスク320で、DMA装置71(D
MAコントローラ72とセントラル・アービタ82)、
8277ディスケット・アダプタ84、及びRS−23
2UART94の状態がセーブされる。これらのデバイ
スには周知のレジスタがある。ディスケット・アダプタ
84内のレジスタ全てとUART94はCPU40によ
って直接読出しが可能で、その値はE000Hのデータ
構造に直接書き込まれる。DMA装置には読出し可能な
レジスタはない。通常、DMA転送それぞれの前に書込
み専用レジスタが設定される。そのためサスペンド・ル
ーチンは、DMA転送が実行中の場合にはサスペンドを
停止する。
【0214】次に、978でサスペンド・ルーチンは、
976に関連するところで述べた割込み駆動型のモデム
状態ルーチンが終了したかどうかを調べる。終了してい
ない場合、このルーチンの終了を待つ。
【0215】一度コンピュータ・システム10がサスペ
ンド状態150になったら、サスペンド・ファイルの改
竄を検出できることが望ましいと考えられる。例えば、
だれかが変更を加えたサスペンド・ファイルを作成し、
そのサスペンド・ファイルをハード・ドライブ31に移
して、コンピュータ・システム10に、セーブされたも
のとは異なる状態にリストアさせようとすることは可能
であろう。この目的のために、疑似ランダム値がセグメ
ントE000Hのデータ構造に置かれる。328に示す
ように、割込み駆動型のモデム状態セーブ・ルーチンが
終了した後、高速タイマ102の1つから16ビットの
タイムスタンプが読み出される。このタイムスタンプは
そこでセグメントE000Hのデータ構造に書き込まれ
る。
【0216】次に、キャリ・ビットは考慮せずにE00
0H内の16ビット・ワードそれぞれを足し合わせるこ
とによってE000Hセグメント全体に対する16ビッ
トのチェックサムが計算される。このチェックサムはセ
グメントE000Hのデータ構造に書き込まれ(33
0)、CMOS NVRAM96にも書き込まれる(3
32)。その後、処理変数は全てCPU40からセグメ
ントE000Hのデータ構造に書き込まれ(334)、
セグメントE000H全体が再びサスペンド・ファイル
に、サスペンド・ファイルのシグネチャ・フレーズの後
を始点に(シグネチャの直後)書き込まれる(33
6)。次に、CMOS NVRAM96にサスペンド・
フラグがセットされる(338)。つまりシステム10
に、コンピュータ・システムの状態がサスペンド・ファ
イルにセーブされたことが指示される。
【0217】次に、サスペンド・ルーチンは、チェック
ポイントが取られているかどうか判定する(980)。
その場合、システムはパワーダウンさせないことにな
る。システムは、実行されたばかりの部分的サスペンド
から復帰するのに充分な程度までレジュームされなけれ
ばならない。従って、チェックポイントが取られている
場合は、982でサスペンド・ルーチンがレジューム・
ルーチンのタスク484にジャンプする。レジューム・
ルーチンはそこで部分的レジュームを実行する。
【0218】チェックポイントが取られていない場合、
CPU40は、マイクロコントローラU2に、ONバー
信号を論理0に引き、よって電源17の1次/調整装置
172が±5、±12ラインに沿って調整電圧を供給す
るのを停止するように指示することによって、電源を
「オフ」にする。電圧が約0までランプダウンするのに
数秒かかるので、その間にCPU40は多数のコマンド
を実行できる。従って、CPU40は、電源17によっ
て生じたシステム電源電圧が、CPU40が機能停止す
るまで降下するのを待ちつつ、無限ループ(「スピ
ン」)を実行する(342)
【0219】ここで図22乃至図25を参照する。ブー
トアップ・ルーチンの詳細が示してある。ブート・プロ
セスの概要は図12に関連するところで示している。ブ
ートアップ・ルーチンは、CPU40が、リセット・ベ
クトルによって指示されたコードにジャンプしてそれを
実行する際にスタートする(380)。これは、CPU
40がパワーアップされる毎に、またCPU40が、リ
セット・ベクトルによって指示されたコードにジャンプ
することによってリセットされるときに起こる。このよ
うなリセット手続きについては周知の通りである。
【0220】最初のタスクは、CPU40をテストし、
メモリ・コントローラ46を初期化することである(3
82)。CPUはPOSTルーチンによってテストされ
る。CPUテストの一部は、CPU40がSMIを持
つ"S"の部分かどうかを判定することである。そうなら
フラグがセットされてこの事実が示される。メモリ・コ
ントローラ46はPOSTルーチンによって初期化され
る。
【0221】次に、ブートアップ・ルーチンは、マイク
ロコントローラU2が機能しているかどうか調べる(9
86)。そのためにCPUは、パワー・マネジメント回
路106のステータス・ポートを順次に読んで、そのポ
ートでのHIGHからLOWまたLOWからHIGHへ
の遷移を待つ。このような遷移は、マイクロコントロー
ラU2のハートビートが機能していることを示す。従っ
て、CPU40は、マイクロコントローラU2が期待通
りに機能しているという仮定の下でブート・プロセスを
続けることができる。
【0222】CPUが所定時間、例えば1、2秒、以内
にステータス・ポートでの遷移を検出しなかった場合、
マイクロコントローラU2はハートビートがなく、CP
U40は第1PAL U1に、マイクロコントローラU
2をリセットするよう指示する(上述)(988)。次
にCPU40は再び、ステータス・ポートでHIGHか
らLOWへの遷移を待つ(990)。CPUがまた、
1、2秒以内にステータス・ポートで遷移を検出しなか
った場合、マイクロコントローラU2はハートビートが
なく、CPU40は、マイクロコントローラU2がリセ
ットできない状態にあると仮定して、ここで述べている
パワー・マネジメント機能をディスエーブルにする(9
92)。
【0223】一方、マイクロコントローラU2が機能し
ている場合、CPU40はマイクロコントローラU2内
の、ウェイクまでの時間(分)アラーム値をリフレッシ
ュする(994)。RTC98のタイムベースはマイク
ロコントローラU2のタイムベースよりはるかに正確で
ある。従って、はるかに正確な、よって高価なタイムベ
ースをマイクロコントローラU2に追加せずにこの制限
を克服するため、BIOSは、システムがブートする毎
に、比較的精度の低いタイムベースと比較的精度の高い
タイムベースの同期をとり、マイクロコントローラU2
内のウェイクまでの時間(分)アラーム値を、RTC9
8より導かれた比較的精度の高い値で更新する。これを
実現するため、CPU40はアラームの絶対日付・時刻
をCMOSメモリ96から読み取り、ウェイクまでの時
間(分)アラーム値を計算して、それをマイクロコント
ローラU2に書き込む。
【0224】その後、マイクロコントローラU2が機能
しておらず、パワー・マネジメント機能がディスエーブ
ルになった場合は、ブート・ルーチンは、電源17に電
力が供給されたためにシステムがブートされたかどうか
を判定する(996)。好適には、電源17は、その1
次/調整装置172にAC電源の供給を常に受けてお
り、±5、±12ラインでの電力の調整はON#入力に
よって制御される。このようにして電源17は、パワー
・マネジメント回路106に電力を供給するのに必要な
AUX5を常時供給することができ、パワー・マネジメ
ント回路106がAC電源自体を切り替えることなく、
パワー・マネジメント回路によって制御される。
【0225】しかし、当業者には明らかなように、ユー
ザによっては、そのコンピュータ・システムの電力を、
スイッチド・パワー・ストリップ(図示なし)を使って
供給し、システム全体のAC電源は1つのスイッチでオ
ン/オフすることが好まれる。しかし、マイクロコント
ローラU2や他のデバイスは、電源ラインAUX5によ
って常時電力の供給を受けるように設定されるので、パ
ワー・マネジメント回路106には問題になる。従っ
て、システムは、それがAC電源の供給によって電源が
入り、それに応じ動作していることを判定する方法を必
要とする。
【0226】ただし、上述のように、AUX5ラインは
また電圧低下や停電の影響を受ける。電圧低下や停電の
後、リセット副回路920は、マイクロコントローラU
2をリセットして、それが許容範囲外の電圧によりハン
グアップするのを防ぐ。従ってシステムは、更に、電圧
低下後あるいはAC電源の供給後にマイクロコントロー
ラがウェイクしたかどうかを判定する方法が必要であ
る。
【0227】その結果、996で、CPUは、マイクロ
コントローラU2に、電源17がオンになる原因になっ
たイベントについて照会する。マイクロコントローラは
次の4つの応答の1つを返すことができる。(1)リセ
ットされ、従って、電源17が±5、±12ラインで調
整電力の供給を開始した、(2)ウェイクまでの時間
(分)アラームが終了した、(3)RS−232リング
入力か光アイソレータOPT01からのリング入力でリ
ングが生じた、(4)スイッチ21が押された。システ
ムがパワーオンされた理由は、システムがパワーアップ
された理由に応答してあるプログラムを実行するスケジ
ューラ等のアプリケーション・プログラムによってマイ
クロコントローラU2から直接読むことができる。ま
た、システムをパワーアップする理由は、BIOSコー
ルを介して得られるようにすることもできる。
【0228】マイクロコントローラU2は、CPU40
によってリセットされる他は、リセット副回路920に
よってリセットされるだけである。回路920は、AU
X5ラインが印加されるかグリッチしたときにはマイク
ロコントローラをリセットする。従って、マイクロコン
トローラU2がリセットされた場合、またはマイクロコ
ントローラが無効なウェイクアップ・コードを返した
(997で調べられる)場合、CPU40はそこで、電
源が±5、±12ラインで電力の調整を続けるのかどう
か決定しなければならない(998)。そのために、C
MOS NVRAMにDEFAULT_ONと呼ばれる
フラグが用いられる。このフラグがセットされている場
合、電源17は、マイクロコントローラU2がリセット
された後に調整電力を供給し続けることになる。一方、
DEFAULT_ONがセットされていない場合、電源
17は、マイクロコントローラU2がリセットされた後
で調整電力の供給を停止することになり、従ってCPU
40はマイクロコントローラU2に、電源17により±
5、±12ラインで調整電力を供給するのを停止するよ
う指示する(1000)。その後、電圧が約0にまでラ
ンプダウンするのに数秒はかかり、その間、CPU40
は多数のコマンドを実行できる。従ってCPU40は、
電源17によって生じたシステム電源電圧が、CPU4
0が機能を停止するまで降下する(1004)のを待ち
つつ、1002で無限ループ(スピン)を実行する。上
述の通り、マイクロコントローラU2は、好適には、A
UX5ラインによって常時電力を供給され、そのプログ
ラミングされたルーチンの実行を続ける。
【0229】その後、マイクロコントローラが有効なウ
ェイクアップ・コードを返す(997)か、マイクロコ
ントローラU2がリセットされ、システムは電源が入っ
た状態を維持する(998)場合、CPU40はマイク
ロコントローラU2に、CPU40に対してSMIを生
成した後、電源がオフにされるとマイクロコントローラ
U2がみなした場合には電源17によって±5、±12
ラインでの調整電力の供給を停止するよう指示する(1
004)。また(1004)、CPU40は、AC電源
がなくなった場合にはAC電源が再投入されてからシス
テムがそれ自体をオンに戻すように、CMOS NVR
AMにDEFAULT_ONビットをセットする。
【0230】次に、ブート・ルーチンは、当業者にはわ
かるように、プラグ&プレイのリソースの第1割当てパ
スを実行する(1006)。
【0231】次に、シャドー・メモリが検査され、BI
OSがROM88からRAM53のシャドー・メモリの
部分にコピーされる。実行されたコードの流れは、CM
OS NVRAM96でサスペンド・フラグがセットさ
れているかどうかによる。サスペンド・フラグがセット
されている場合、コンピュータ・システム10はサスペ
ンド状態150にあり、コンピュータ・システム10
は、サスペンドされたときの状態に復帰する必要があ
る。セグメントE000H、F000HのシステムRA
M53に対しては簡略検査が行なわれる。コンピュータ
がレジュームする時間を短くするため、メモリは正規の
サイズかどうかチェックされてゼロ化される(000H
が各位置に書き込まれる)。
【0232】一方、CMOS NVRAM96でサスペ
ンド・フラグがCLEARされている場合、セグメント
E000H、F000HのシステムRAM53に対して
標準の詳しいメモリ検査が行なわれる。この検査は、
(1)不良ビット検査、(2)ダブル・ビット・メモリ
検査、(3)交差アドレス・ライン検査からなる。これ
らの検査は周知の通りである。
【0233】セグメントE000H、F000Hが検査
された後、BIOSはシャドーにすることができる。そ
の際、ROM BIOS88の内容はシステムRAM5
3にコピーされ、メモリ・コントローラはBIOSをR
AMから実行するように設定される。BIOSのシャド
ー化はシステムを高速にするために行なわれる。BIO
Sは比較的低速なROM88(通常アクセス時間250
ナノ秒)ではなく比較的高速なシステムRAM53(通
常アクセス時間80ナノ秒)から実行されるのでシステ
ム・パフォーマンスがよくなる。BIOSのシャドー化
は、BIOSコピアを下位メモリのアドレスにロードす
ること、BIOSをROM88からシステムRAM53
のセグメントE000H、F000Hにコピーするこ
と、及びシャドーRAMをイネーブルにすること、から
なる。
【0234】次に、ビデオ・コントローラ56が検査、
初期化され、ビデオ・メモリ58も検査される(38
4)。これらの検査と初期化については周知の通りであ
る。
【0235】次に、ブート・ルーチンは、当業者にはわ
かるように、プラグ&プレイのリソースの第2割当てパ
スを実行する(1008)。
【0236】実行されたコードの流れは、CMOS N
VRAM96にサスペンド・フラグがセットされている
かどうかによる(386)。サスペンド・フラグがセッ
トされている場合、タスク383と同様に、残りのシス
テムRAM53は単にサイズがチェックされてからゼロ
化されるだけである。しかしCMOS NVRAM96
でサスペンド・フラグがCLEARされている場合、残
りのシステムRAM53は、タスク383に関連すると
ころで述べた3段階の詳細メモリ検査を受ける(タスク
398)。
【0237】メモリが検査された後、補助デバイス−−
8259、UART、8042等−−が検査、初期化さ
れる(400)。タスク408ではハード・ディスク・
コントローラが初期化される。
【0238】実行されたコードの流れは、CMOS N
VRAM96にサスペンド・フラグがセットされている
かどうかによる(409)。サスペンド・フラグがセッ
トされている場合、つまり電源が最後に切られたときシ
ステムの状態が正常にセーブされた場合、ブートアップ
・ルーチンは、ハード・ドライブ・コントローラ86と
ハード・ドライブ31の検査を省略する。一方、CMO
S NVRAM96でサスペンド・フラグがCLEAR
されている場合、つまり電源が最後に切られたときシス
テムの状態がセーブされなかった場合、ブートアップ・
ルーチンは、周知のように、ハード・ディスク・コント
ローラ86とハード・ドライブ31の完全検査を行なう
(タスク410)。
【0239】次に、ディスケット・アダプタ84が検
査、初期化される(412)。
【0240】この時、全てのデバイスが初期化され、ベ
クトルは既知の位置を指示するので、割込みルーチンは
全て期待通りに動作する。従って、ブートアップ・ルー
チンは414で、BIOSデータ・エリアとベクトル・
テーブルのコピーをセグメントE000Hのデータ構造
に書き込むBIOSデータ・エリア&ベクトル・テーブ
ルのスナップショットをとる。BIOSデータ・エリア
とベクトルテーブルのこのコピーは、全ての割込みが期
待通りに動作して、コンピュータ・システム10を既知
の状態にするためにタスク274でサスペンド・ルーチ
ンによって用いられる。
【0241】次に416で、周知の通り、BIOSエク
ステンションが「スキャン・イン」され初期化される。
BIOSエクステンションは、ネットワーク・アダプタ
等の周辺アダプタによってシステムに追加されたBIO
Sコードのブロックである。通常、BIOSエクステン
ションはISAバス76のセグメントC000H、D0
00Hに位置し、BIOSエクステンションを識別する
ために「シグネチャ」が関連づけられる。BIOSエク
ステンションが検出された場合、その長さがチェックさ
れ、チェックサムが計算、チェックされる。シグネチ
ャ、長さ、チェックサムが全て、有効なBIOSエクス
テンションがあることを示す場合、プログラム制御は、
シグネチャの3バイト先にある命令に渡り、BIOSエ
クステンションは、周辺アダプタの初期化等の必要なタ
スクを実行できる。エクステンションが実行を終える
と、制御はブートアップ・ルーチンに返り。ブートアッ
プ・ルーチンは他のBIOSエクステンションを探す。
他のBIOSエクステンションは上記のBIOSエクス
テンションと同じように処理される。他にBIOSエク
ステンションが検出されなかった場合、ブートアップ・
ルーチンはタスク417に進む。
【0242】次に1010で、CPUはシステムのパワ
ーオン時間のデルタを読み取り、それを、ハード・ドラ
イブ31上の特殊パーティションに格納された値に追加
し、新しいパワーオン時間合計をハード・ドライブ31
上の特殊パーティションに再び書き込む。他のところで
説明するが、マイクロコントローラU2は、システムを
パワーダウンさせる前に、SMIラインをアサートする
ことによってCPU40に割込みをかける。その結果、
CPUは、システムが応急にパワーダウンすると仮定し
てあるタスクを実行する。好適には、その際に、経過パ
ワーオン時間タイマによって測定されたパワーオン・デ
ルタ等、ある情報がCMOS NVRAMにセーブされ
る。その後、CPU40によってマイクロコントローラ
U2がシステムをパワーダウンさせることができる。
【0243】417でブートアップ・ルーチンは、サス
ペンド・ファイルのために割当てられたパーティション
に見える、ハード・ドライブ31上のパーティションを
探す。パーティション・テーブルにPS/1識別子"F
E"を持つパーティションか、識別子"84"を持つハイ
バネーション・パーティションが見つかり、そのパーテ
ィションが、このシステムのサスペンド・ファイルを入
れるのに充分な大きさである場合、そのパーティション
はサスペンド・ファイル用に用いられる。結果、サスペ
ンド・ファイル・シグネチャがエリアの最初のバイトに
書き込まれ、エリアの先頭のヘッド、セクタ、シリンダ
はCMOS NVRAM96に書き込まれる。
【0244】そこで、実行されたコードの流れは、CM
OS NVRAM96にサスペンド・フラグがセットさ
れているかどうかに応じて分岐する(418)。サスペ
ンド・フラグがクリアされている場合、ブートアップ・
ルーチンは制御をPBOOTルーチンに渡す(42
0)。PBOOTは周知の通りであり、オペレーティン
グ・システム(OS)とコマンド・インタプリタをフロ
ッピー・ディスクかハード・ディスク31からロードす
るものである。サスペンド・ファイルのためのパーティ
ションがタスク417で見つからなかった場合、OS
は、図42乃至図45に関連するところで述べるOS特
有のドライバ(パーティションが見つかったかどうかを
チェックする)を実行し、セクタが連続したファイルを
FATに割当てる(必要ならエリアの分割を解除する)
のでない場合は、シグネチャをサスペンド・ファイルの
最初のバイトに書き込み、サスペンド・ファイルの先頭
のヘッド、セクタ、シリンダをCMOS NVRAM9
6に書き込む。
【0245】サスペンド・ファイルがいつ割当てられた
かには無関係に、ファイルは、連続したセクタでなけれ
ば、サスペンド、レジュームの間に、それぞれディスク
への高速書込み、ディスクからの高速読出しはできな
い。
【0246】OSは次に、CONFIG.SYSファイルにあった
命令をもとにシステムを設定する。最後にOSはAUTOEX
EC.BATファイルを実行する。AUTOEXEC.BATファイルは結
局、実行制御をオペレーティング・システムに渡す。C
MOS NVRAM96でサスペンド・フラグがクリア
されている場合、つまり電源が最後に切られたときにシ
ステムの状態がセーブされなかった場合、RESUME.EXE
(タスク421のところで詳しく説明するが)は無視さ
れる。
【0247】タスク418に戻るが、CMOS NVR
AM96でサスペンド・フラグがセットされている場
合、つまり電源が最後に切られたときにシステムの状態
がセーブされた場合、CMOS NVRAM96にアダ
プタ再初期化フラグがセットされているかどうかに応じ
て、実行されたコードの流れはそこで分岐する(41
9)。アダプタ再初期化フラグがセットされている場
合、ブートアップ・ルーチンは制御をPBOOTルーチ
ンに渡す(421)。本発明のPBOOTは、普通のP
BOOTルーチンのように、OSをロードする。OS
は、CONFIG.SYS、AUTOEXEC.BATファイルで見つかったコ
マンドに従ってシステムを設定する。これらのファイル
は、特に、周知のように、ドライバをロードしシステム
を設定する。
【0248】CONFIG.SYS、AUTOEXEC.BATのコマンドはシ
ステムのアダプタ・カードを初期化することができる。
ここでは3つのタイプのアダプタ・カードを想定してい
る。タイプ1のアダプタは初期化を要しない。タイプ2
のアダプタは初期化を要するが、CONFIG.SYSかAUTOEXE
C.BATファイルに従ってロードされたBIOSエクステ
ンションかドライバによって、既知の処理状態にされ
る。タイプ3のアダプタはシステムで実行されるコード
によって変更される。タイプ1、2のアダプタを持つシ
ステムはサスペンド、リストアができるが、タイプ3の
アダプタを持つシステム(多くのネットワーキング・ア
ダプタを含む)は、システム電源が切られる等の条件が
生じた後にアダプタを再初期化するAPM認識型デバイ
ス・ドライバがカードになければ、リストアできないこ
とがある。システムは、APM認識型デバイス・ドライ
バを持つタイプ3のカードはサスペンドすることができ
る。
【0249】ファイルRESUME.EXEは、好適な実施例では
AUTOEXEC.BATファイルに追加され、プログラム制御をO
Sからレジューム・ルーチンに渡すものである。タスク
420のOSはRESUME.EXEの存在を無視するが、タスク
421のOSはRESUME.EXEを実行し、RESUME.EXEは、タ
イプ2のアダプタが、CONFIG.SYS、AUTOEXEC.BATからO
Sによってロードされたデバイス・ドライバによって初
期化された後に制御をレジューム・ルーチンに渡す。
【0250】タスク419に戻るが、CMOS NVR
AM96でアダプタ再初期化フラグがクリアされている
場合、OSはRESUME.EXEを介して実行制御をレジューム
・ルーチンに渡す。レジューム・ルーチンはシステム状
態をハード・ドライブのサスペンド・ファイルからリス
トアする。レジューム・ルーチンについては図26乃至
図30に関連するところで詳しく述べる。
【0251】ここで図26乃至図30を参照する。レジ
ューム・ルーチンの詳細、タスク450乃至図530が
示してある。最初、CPUが451で検査される。CP
U40にSMIがある場合、CPUレジュームSMIが
生成され、これはCPUをSMMモードにし、タスク4
54のコードにジャンプする。CPUにSMIがない場
合、レジューム・シャットダウンが起こり、その際、リ
セットが起こり、リセット・ハンドラがタスク454の
コードにジャンプする。BIOSデータ・エリア&ベク
トル・テーブルは、設定プロセスの間に、おそらくは未
知の状態に変更される。従って、基本的なBIOSルー
チンは期待通りに動かないことがある。そのため、レジ
ューム・ルーチンはセグメントE000Hを読出し/書
込みとしてイネーブルにし(454)、BIOSデータ
・エリア&ベクトル・テーブル・スワップ・ルーチンを
呼び出す(456)。このルーチンは、タスク414で
セグメントE000Hにコピーされた、既知の良好なB
IOSデータ・エリア&ベクトル・テーブルを、セグメ
ント0000Hで現在アクティブな変更済みBIOSデ
ータ・エリア&ベクトル・テーブルとスワップする。ル
ーチンが終了すると、既知のBIOSデータ・エリア&
ベクトル・テーブルはセグメントE000Hでアクティ
ブであり、変更済みBIOSデータ・エリア&ベクトル
・テーブルはセグメントE000Hにあって、BIOS
ルーチンは期待通りに動く。
【0252】次にレジューム・ルーチンは、キーボード
とハード・ドライブをサポートするものを除いて全ての
割込みをディスエーブルにする(458)。次にレジュ
ーム・ルーチンはハード・ドライブ31でサスペンド・
ファイルを見つけ(460)、ファイル・サイズと、先
に説明したように、サスペンド・ファイル用のマルチバ
イト識別子であるシグネチャとを読み出す。実行された
コードの流れは、サスペンド・ファイルのサイズとシグ
ネチャが正しいかどうかに応じてそこで分岐する(46
2)。サスペンド・ファイルのサイズとシグネチャが正
しくない場合、レジューム・ルーチンはCMOSメモリ
96のサスペンド・フラグをCLEARし(464)、
プログラム制御は、リセット・ベクトルによって指示さ
れた位置にあるコードに渡り(466)、よってシステ
ムは、サスペンドしたことがなかったかのようにブート
する。一方、サスペンド・ファイルのサイズとシグネチ
ャが正しい場合、レジューム・ルーチンは、シグネチャ
の後にあるサスペンド・ファイル内の65Kブロック
(セグメントE000Hの情報に対応するサスペンド・
ファイルの部分)をセグメント1000Hに読み出すこ
とによってシステム・レジュームを続ける(468)。
【0253】次に、1000Hのブロックのチェックサ
ムが計算され(470)、先に格納されたチェックサム
が不揮発性CMOSメモリ96から読み出され(47
2)、実行されたコードの流れは、タスク470で計算
されたチェックサムがタスク330で計算されたチェッ
クサムと同じかどうかに応じてそこで分岐する(47
4)。タスク470で計算されたチェックサムがタスク
330で計算されたチェックサムと同じでない場合、サ
スペンド・ファイルはいくらか壊れており(例えば改竄
が考えられる)、制御はタスク464に渡り、そこで、
タスク464、466に関連するところで述べたよう
に、サスペンド・フラグがCLEARされ、システムが
リセットされる。タスク470で計算されたチェックサ
ムがタスク330で計算されたタスクチェックサムと同
じなら、サスペンド・ファイルは、サスペンド・ルーチ
ンによって書き込まれたものと同じとみなされ、セグメ
ント1000HのデータがセグメントE000Hにコピ
ーされる(476)。
【0254】ここで、レジューム・ルーチンは、システ
ムがリストアされていることと、レジュームをアボート
するにはユーザがCtrl-Alt-Delを押す必要のあることを
ユーザに伝える特別な通知画面に書込みを行なう(47
8)。サスペンド・ルーチンの場合のように、Ctrl-Alt
-Delを押すとサスペンド・フラグがクリアされ(52
6)、システムがリブートする(528)。従って、シ
ステムは、Ctrl-Alt-Delが押され、レジューム・ルーチ
ンが実行されているとき普通にリブートする。
【0255】次に、セグメントE000Hデータ構造か
ら値を対応するレジスタに書き込むことによって、82
77ディスケット・アダプタ84とDMA装置71がリ
ストアされる(それぞれ480、482)。
【0256】次に、E000Hデータ構造からモデムの
状態をリストアするための割込み駆動型のパラレル・ス
レッドがスタートする(1020)。タスク976のル
ーチンと同様に、このモデム・リストア・ルーチンは、
あるモデムに関連するCOMMポートに対応した割込み
をキャプチャし、E000Hデータ構造から値を読み取
り、コマンドと値をモデムに転送して、モデムがその中
のレジスタをリストアするようにする。このルーチンは
最初のコマンドをモデムに転送してから、割込み駆動式
に応答し、モデムの応答を受信して、各COMMポート
割込みに応答してモデムに次の値を転送する。これは、
全てのモデムのレジスタがリストアされるまで繰り返さ
れる。このルーチンは、モデム・セーブ・ルーチンと同
様に、パラレル・スレッドとして実行されない場合、シ
ステムをレジュームするのにかかる時間に数秒を追加す
ることができる。割込み駆動型パラレル・スレッドとし
ては、システム状態がハード・ドライブ31から読み出
される前に実行を終了した場合には、レジュームに時間
を追加することはないか、あってもわずかである。
【0257】割込み駆動型パラレル・スレッドのモデム
・リストア・ルーチンがスタートした後、タスク486
乃至500で、システム・メモリが、サスペンド・ルー
チンのタスク304乃至318に関連するところで述べ
たルーチンと同様なツイン・バッファ・ルーチンを使っ
てサスペンド・ファイルからリストアされる。このツイ
ン・バッファ・システムは、サスペンド・ファイルから
圧縮データを読み取り、それをセグメントE000Hに
書き込み、圧縮し、システム・メモリに書き込む。2つ
のルーチンが時分割多重構成で動作する。1つはデータ
をサスペンド・ファイルから読み、それをセグメントE
000Hに書き込む。もう1つはデータの圧縮を解除
し、圧縮解除されたデータをシステム・メモリに書き込
む。後者はフォアグラウンドで実行され、前者はバック
グラウンドで実行される割込み駆動ルーチンである。当
然、CPU40は1つしかないので、ある時間に実行可
能なルーチンも1つだけであるが、前者のルーチンは割
込み駆動なので、必要に応じて後者のルーチンの実行に
割込みをかけて、サスペンド・ファイルへのデータ転送
の速度を最適化することができる。2つのバッファは各
々が8キロバイト長であり、これは転送時間を最適化す
ると考えられる。
【0258】このプロセスは486からスタートし、8
Kバッファの最初のものを埋めるに充分なデータがサス
ペンド・ファイルから読み出されてセグメントE000
Hに書き込まれる。この時、「バッファから読出し」ル
ーチン(489)がスタートする(306)。「バッフ
ァから読出し」ルーチン489は割込み駆動ルーチンで
バックグラウンドで動作し、タスク490乃至492か
らなる。圧縮解除ルーチン(493)はタスク494乃
至498からなり、フォアグラウンド・ルーチンであ
る。最初、「バッファから読出し」ルーチン489は、
サスペンド・ファイルの次の8Kの読出しを開始し、そ
れをもう1つのバッファ、ここではカレント・バッファ
に書き込む(490)。「バッファから読出し」ルーチ
ン489はサスペンド・ファイルから次の8Kを読み出
してそれをカレント・バッファに書き込むが、圧縮解除
ルーチン493は、タスク486によって埋められたバ
ッファを読み出し、圧縮されたデータを圧縮解除し、圧
縮解除されたデータをシステム・メモリに書き込む(4
94)。圧縮解除ルーチン493がそのバッファ内の全
てのデータを圧縮解除すると、次のステップは、システ
ム・メモリ全体がすでに圧縮解除されているかどうかの
判定である(496)。
【0259】IDEコントローラ86はハード・ドライ
ブ31からのデータ読出しをかなり高速に行なうことは
できない。そのため圧縮解除ルーチン493は常に、
「バッファから読出し」ルーチン489がハード・ドラ
イブ31からカレント・バッファへのデータ読出しを終
える前に、ハード・ドライブ31に書き込まれていない
8Kバッファの圧縮解除を終えることになる。従って、
圧縮解除ルーチン493は、「バッファから読出し」ル
ーチン489がハード・ドライブ31からのデータ読出
しを終えるのを待つ必要がある。圧縮解除ルーチン49
3が全てのシステム・メモリの圧縮と書込みを終えてい
ない場合、圧縮解除ルーチン493は「バッファから読
出し」ルーチン489を待つ(498)。圧縮解除ルー
チン493と「バッファから読出し」ルーチン489は
一連のフラグを介して通信する。「バッファから読出
し」ルーチン489がサスペンドファイルからカレント
・バッファへのデータ読出しを終えたとき、ルーチン4
89は次にバッファ・フラグを切り替える(490)。
つまり圧縮解除ルーチン493に、それがサスペンド・
ファイルから読み出されたばかりのバッファ内のデータ
の圧縮解除を開始できることを指示する。「バッファか
ら読出し」ルーチン489はそこで、サスペンド・ファ
イルから読み出すべき8Kブロックが残っているかどう
か調べる(492)。残っていない場合、「バッファか
ら読出し」ルーチン489は、サスペンド・ファイルか
ら残りのデータを読み出し、それをカレント・バッファ
に書き込む(502)。「バッファから読出し」ルーチ
ン489は次に、バックグラウンドでの実行を停止し、
結果的に、500で圧縮解除ルーチンが最後のメモリの
圧縮解除を終えるのを待つ。
【0260】その間、圧縮解除ルーチン493は、バッ
ファ・フラグを調べることによって、バッファがシステ
ム・メモリへの圧縮解除の準備が出来ていると判定す
る。すなわち、圧縮解除ルーチンは498で、「バッフ
ァから読出し」ルーチンがカレント・バッファを終える
まで待ち、終えた時点で、圧縮解除ループが続く(49
4)。
【0261】圧縮解除ルーチン493が全てのシステム
・メモリの圧縮解除を終えると、実行中の唯一のバック
グラウンド・ルーチンは、タスク1020に関連すると
ころで説明した割込み駆動型モデム・リストア・ルーチ
ンであり、メイン・プログラムが続く(504)。
【0262】次に、E000Hデータ構造からビデオ・
コントローラ56とIDEコントローラ86の2つのデ
バイスそれぞれの内部のレジスタに値を書き込むことに
よって、ビデオ・コントローラ56とIDEコントロー
ラ86がリストアされる(504、506)。タスク5
04は、チェックポイントが取られている場合にはサス
ペンド・ルーチンがジャンプする(タスク1024参
照)ポイントでもある。
【0263】次に1022で、レジューム・ルーチン
は、タスク1020に関連するところで述べた割込み駆
動型モデム・リストア・ルーチンが終了したかどうか調
べる。終了していない場合、レジューム・ルーチンはこ
のルーチンの終了を待つ。
【0264】508に示す通り、割込み駆動型モデム状
態リストア・ルーチンが終了した後、CPUキャッシュ
41とシステム・キャッシュ60は、対応する値をそれ
ぞれCPU40、キャッシュコントローラ62に書き込
むことによってイネーブルになる。次に、レジューム・
ルーチンは、タイマ・コントローラ102、8042キ
ーボード・インタフェース・マイクロプロセッサ10
4、及び8259割込みコントローラ92の状態を、セ
グメントE000Hデータ構造からそれぞれのデバイス
内のレジスタに値を書き込むことによってリストアする
(510乃至514)。
【0265】次に、UART94が、セグメントE00
0Hデータ構造からそれぞれのレジスタに値を書き込む
ことによってリストアされる(484)。
【0266】次に、レジューム・ルーチンは、BIOS
データ・エリア&ベクトル・テーブル・スワップ・ルー
チンを呼び出す(516)。ルーチンが呼び出される
前、既知のBIOSデータ・エリア&ベクトル・テーブ
ルはセグメント0000Hでアクティブであり、サスペ
ンド・ファイルから読み出されたBIOSデータ・エリ
ア&ベクトル・テーブルはセグメントE000Hデータ
構造でアクティブではない。スワップの後、既知のBI
OSデータ・エリア&ベクトル・テーブルはセグメント
E000Hでアクティブでなく、サスペンド・ルーチン
によってセーブされたBIOSデータ・エリア&ベクト
ル・テーブルはセグメント0000Hでアクティブであ
る。
【0267】最後に、レジューム・ルーチンはCPUリ
ストア・ルーチンにジャンプし(518)、CPUリス
トア・ルーチンはCPU40を、それがサスペンドされ
る前の状態にリストアする。CPUリストア・ルーチン
については図35乃至図38に関連するところで詳しく
説明する。CPUリストア・ルーチンは結果的に実行制
御をAPMに返す。
【0268】CPU40は、最後に、RETURN命令
を実行し、システムをAPMに返すようにする。ここで
システムは、サスペンドされたことがなかったかのよう
にコードの実行を続ける。システムは、実際的などのよ
うな目的についても、サスペンド/レジューム手続きに
よって影響を受けることはない。
【0269】ここで図31乃至図34を参照する。CP
U状態セーブ・ルーチンのフローチャートが示してあ
る。サスペンド・ルーチンは600でCPUセーブ・ル
ーチンにジャンプする。APMはセグメントE000
H、F000Hをイネーブルにしており、ここからこれ
らのルーチンが、読出し/書込みとして実行されること
に注意されたい。またEFLAGSと8つの汎用レジス
タがAPMによってセーブされている(602)。CP
U状態セーブ・ルーチンは最初、このルーチンがマウス
・パケット転送間で実行されるように、DMAが終了し
てマウス13のデータ・パケットに同期するのを待つ
(604)。以下のステップにより、DMAが終了して
マウス・パケットに同期する。(1)割込みをイネーブ
ルにする、(2)DMAの終了を7ミリ秒待つ、(3)
割込みをディスエーブルにする、(4)マウス・パケッ
ト境界を5ミリ秒待つ、(5)割込みをイネーブルにす
る、(6)マウス・パケットが届くのを更に5ミリ秒待
つ、(7)割込みをディスエーブルにする。これらのス
テップの後、コードはマウス・パケット間で安全に実行
される。
【0270】次に、アドレス・ライン20(I/0ポー
ト 92H)はスタックにPUSHされる(606)。
【0271】実行されたコードの流れは、CPU40が
SMIを持つ"S"の部分かどうかに応じて、ここで分岐
する(1030)。そうならCPU40は、マイクロコ
ントローラU2に、SMIをCPU40に対して生成す
るよう指示する(1032)。CPU40内のマイクロ
コードは、SMIに応答して、CPU40の状態をE0
00Hデータ構造内のE000:FE00Hにセーブす
る(1034)。その後CPU40は、浮動小数点コプ
ロセッサの状態をセーブし(1036)、サスペンド・
ルーチン(図16乃至図21)を呼び出す(103
8)。他段落で説明している通り、サスペンド・ルーチ
ンはそこでリターンし(1040)、浮動小数点コプロ
セッサの状態をリストアする(1040)。その後10
42でRSM(レジューム)命令がCPU状態をリスト
アしてから732に分岐する。
【0272】一方、CPU40にSMIがない場合、C
PU状態は、図31乃至図34のコードの残りの部分を
使ってセーブしなければならず、算術演算コプロセッサ
44がスタックにPUSHされる(608)。次に61
0でフラグがセットまたはCLEARされて、それぞれ
32ビットか16ビットのモードでCPUが実行されて
いるかどうかが示される。
【0273】実行されたコードの流れは、CPU40が
プロテクト・モードで実行されているかどうかに応じ
て、そこで分岐する(612)。CPU40は、プロテ
クト・モードで実行されていない場合は、リアル・モー
ドで実行されているはずであり、レジスタは非常に直截
的にセーブすることができる。まず、マシン・ステータ
ス・ワードとCR3の値がセグメントE000Hデータ
構造に書き込まれる(614)。614ではまた、TR
とLDTRはリアル・モードでは0なので、TRとLD
TRに対応するエリア内のセグメントE000Hデータ
構造に0が書き込まれる。
【0274】次にコードは共通コード・パスとマージさ
れ(616)、そこで、GDTR、LDTRに格納され
た値が、セグメントE000Hデータ構造に書き込まれ
る。次に、実行されたコードの流れは、CPU40が仮
想8086モードで実行されたかどうかに応じて、そこ
で分岐する(618)。CPU40が仮想8086モー
ドで実行されていない場合、コードは共通パスを経てタ
スク620へ進み、そこでデバッグ・レジスタDR7、
DR6、DR3、DR2、DR1、DR0がスタックに
PUSHされる。これらのレジスタはデバッガその他の
ルーチンによって用いられている。次にDS、ES、F
S、GSがスタックにPUSHされる(622)。次に
CS、SS、ESPの値がセグメントE000Hデータ
構造に書き込まれる。
【0275】この時点で、セグメントE000Hデータ
構造に書き込まれる全ての値が書き込まれており、シャ
ドーRAMセグメントE000H、F000Hは読出し
専用に戻すことができる(626)。次にCPUキャッ
シュ41は、キャッシュのライトバックと無効化のコマ
ンドを使ってフラッシュされる(628)。
【0276】最後に、不揮発性CMOSメモリ96に一
意のシャットダウン・フラグがセットされる(63
0)。CPU状態セーブ・ルーチンは最後に、結果的に
サスペンド・ルーチンに「リターン」する(632)。
この「リターン」は、実際にはRESETとこれに続く
コード内の分岐である。CPU40は、リセット・ベク
トルによって指示されたコードにJUMPすることによ
ってリセットされる。CPU40をリセットすることで
CPUはリアル・モードになり、そこで、全てのデバイ
ス、メモリ位置は、プロテクト・フォールトを起こす恐
れなくアクセスできる。この後、CPUの状態はセーブ
されており、サスペンド・ルーチンはシステムの残りの
部分の状態をセーブしなければならない。
【0277】プログラム制御は、リセット・ベクトルに
よって指示されたコード内で、CMOS NVRAM9
6でシャットダウン・フラグがセットされているかどう
かに応じて分岐する。シャットダウン・フラグがCLE
ARされた場合、システムは通常のようにブートする。
一方、シャットダウン・フラグがセットされている場
合、コードはサスペンド・ルーチンの残りの部分に分岐
する。すなわち、実行制御は図16乃至図21のサスペ
ンド・ルーチン内のタスク253にジャンプする。サス
ペンド・ルーチンはシステム10のサスペンドを終え
る。従って、CPU状態セーブ・ルーチンは結果的にサ
スペンド・ルーチンに「リターン」する(632)。
【0278】タスク612に戻るが、CPUがプロテク
ト・モードにある場合、コードはタスク634で、CP
Uが仮想8086モードにあるかどうかに応じて分岐す
る。CPUが仮想8086モードにある場合、コードは
タスク636で、現在の特権レベルが0かどうかに応じ
て再び分岐する。現在の特権レベルが0でない場合、正
規の特権を持たないルーチンがCPU状態セーブ・ルー
チンを実行しており、致命的サスペンド・エラー・ルー
チン(タスク652でスタート)が呼び出される。致命
的サスペンド・エラー・ルーチンについては以下で説明
する。プログラム制御が致命的サスペンド・エラー・ル
ーチンから戻った場合、CPUは、CPU状態セーブ・
ルーチンが呼び出される前のその条件に戻る必要があ
る。そこでプログラム実行はタスク794(図35乃至
図38)に分岐し、そこでCPUの部分的リストアが実
行される。CPUでは変更されたものがほとんどないの
で部分的リストアしか必要ない。
【0279】タスク636に戻るが、呼び出し側コード
に正規の特権レベルがある場合、セーブは続き(64
2)、CR0、CR3、TR、LDTRの値はセグメン
トE000Hデータ構造にセーブされる。次にこのコー
ド・パスは共通コード・パスとマージされ(616)、
そこで、上述の通り、GDTR、IDTRの値がE00
0Hデータ構造にセーブされる。ここからコードは上述
した618から632のパスを辿り、結果、残りのサス
ペンド・ルーチンのコードに「リターン」(RESET
と分岐)する。
【0280】タスク634に戻るが、CPU40が仮想
8086モードにある場合、実行は644に続き、そこ
でマシン・ステータス・ワードの値(CR0の下位16
ビット)がE000Hデータ構造にセーブされ、セグメ
ントE000Hデータ構造のフラグがセットされる、す
なわちCPUが仮想8086モードにあることが指示さ
れる。このコードは次に転送646、648を介して共
通コードとマージされる(616)。タスク618でC
PUが仮想8086モードになかった場合、制御は65
0に分岐する。そこでDS、ES、FS、GSの値がセ
グメントE000Hデータ構造にセーブされる。このコ
ードは624で再び共通コードとマージされる。ここか
らコードは上述の624から632のパスを辿り、結
果、残りのサスペンド・ルーチン・コードに「リター
ン」(RESETと分岐)する。
【0281】特権レベルが不適切なコードがCPUの状
態をセーブしようとした場合は、致命的サスペンド・エ
ラー・ルーチンはタスク652乃至664で見つかり、
638で呼び出される。最初、フェールセーフ・タイマ
はRESETされる(654)。次にスピーカが可聴周
波数のビープ音を数回(886Hzで0.25秒を3
回、ビープ間は1/6秒等)鳴らす(656)。3回の
ビープ音は、ユーザに、サスペンド試行が失敗したこと
を知らせる。ビープ音の後、フェールセーフ・タイマは
再びRESETされ(658)、フェールセーフ・タイ
マが終了して電源17がオフになる前に、ユーザには1
5秒乃至18秒の時間が与えられる。
【0282】次に、致命的サスペンド・エラー・ルーチ
ンは、タスク660、662で、スイッチ21がユーザ
によって押されたかどうか、すなわちユーザがサスペン
ドをアボートしようとしたかどうか、繰り返しチェック
する。CPU40がマイクロコントローラU2に、クロ
ージャ・イベントが起こったかどうか照会することによ
ってスイッチのクロージャがチェックされる。ユーザが
ボタン21を押した場合、実行制御はタスク640に戻
る。ユーザが15秒乃至18秒以内にボタン21を押し
ていない場合、フェールセーフ・タイマは終了し、電源
17はマイクロコントローラによって「オフ」になり、
当然、CPU40によるコードの実行は全て、システム
電圧が許容範囲外になると停止する。
【0283】ここで図35乃至図38を参照する。70
0から始まるCPUリストア・ルーチンのフローチャー
トが示してある。このルーチンは、ハードウェア、メモ
リの残りの部分がサスペンド前の状態にリストアされた
後でレジューム・ルーチンによって呼び出される。最
初、セグメントE000Hがまだ読出し/書込みになっ
ていない場合、読出し/書込みにする必要がある(70
2)。
【0284】次に、実行されたコードの流れは、CPU
40が、サスペンドされたときに仮想8086モードで
実行されていたかどうかに応じて、そこで分岐する(7
04)。システム10がサスペンドされたときにCPU
40が仮想8086モードで動作していた場合、仮想8
086 CPUのリストアに特有のタスク706乃至7
28からのコードは、タスク730乃至748からの共
通パスにマージする。
【0285】状態がセーブされたときCPUが仮想80
86モードにあった場合、CR3、LDTR、TRは、
それらの値をE000Hデータ構造にセーブするために
CPU状態セーブ・ルーチンによってアクセスできなか
った。従って、CR3、LDTR、TRはそれぞれ70
6、708、710で推定しなければならない。一般
に、これらは、システムRAM53を調べ、CR3、L
DTR、TRが指示する構造を検索することによって推
定される。例えば、GDEのlDTエントリを見つけれ
ばLDTRを推定することができる。
【0286】CR3はタスク706で推定される。CR
3はPDBR(ページ・ディレクトリ・ベース・レジス
タ)を保持し、PDBRはページ・ディレクトリのペー
ジ・フレーム・アドレス、PCD(ページ・レベル・キ
ャッシュ・ディスエーブル)ビット、及びPWT(ペー
ジ・レベル・ライトスルー)ビットを保持する。PDB
Rの推定は、ページ・ディレクトリがシステムRAM5
3内の4Kの境界から始まるべきことを知って、CPU
状態セーブ・ルーチンによってセグメントE000Hデ
ータ構造にセーブされたIDTR、GDTRの値を知っ
て、また、BIOSコードがセグメントF000Hから
実行されていると仮定して、行なわれる。BIOSコー
ドは高速化のためにシャドーRAMにすでにシャドー化
されているのでこの仮定は合理的である。オペレーティ
ング・システムがBIOSコードを別のエリアにコピー
していれば、CR3の推定は失敗する。
【0287】上記の知識と仮定から、物理メモリの全て
の4Kページについて、BIOSコード・セグメントに
対応するページ変換テーブルの存在が調べられる。すな
わち、ページに対する03C0Hのオフセットには値0
00F0XXX、000F1XXX、000F2XX
X、...、000FEXXXが含まれる。このページ
が見つかれば、システムRAM53が調べられ、最初の
エントリが、先に見つかったページ・テーブルの物理ア
ドレスに対応するページ・ディレクトリが検索される。
ページ・ディレクトリの物理アドレスは、PDBRの値
の良い推測である。
【0288】仮説的PDBRは次に、PDBRがGDT
RとIDTRのアドレスを正しく変換するかどうかをみ
ることによって検証される。すなわち、PDBRは、G
DTRのリニア・アドレスを変換するために用いられ、
GDTの最初のエントリはヌルと確認される(GDTの
最初の8バイトはどのCPUモードでも常に00Hであ
る)。次に、返った物理アドレスが物理メモリの境界内
にあることが検証される。リニアから物理への変換を行
なうため、CPUの変換方法を真似たサブルーチンが用
いられる。変換されたアドレスはESIで返され、物理
ページが物理メモリにあればキャリ・フラグCFはクリ
アされ、物理ページがメモリになければCFはセットさ
れる。この変換ルーチンを使って、GDTの最初のバイ
トがメモリ53から読み出される。GDTの最初のバイ
トがヌルなら、仮説的PDBRはその最初のテストに合
格したことになり、従ってもう一度テストされる。そこ
でPDBRは、変換ルーチンを使ってIDTRを変換し
てIDTを見つけるために用いられる。次に、返った物
理アドレスが、物理メモリの境界内にあることが確認さ
れる。IDTの最初の位置が物理メモリにある場合、P
DBRはその第2のテストに合格したことになる。
【0289】仮説的PDBRがGDTR、IDTRに正
しく変換された場合、値はPDBRとみなされ、セグメ
ントE000Hデータ構造内のCR3エリアに書き込ま
れる。一方、仮説的PDBRがいずれのテストにも合格
しなかった場合、ルーチンは再びスタートし、システム
・メモリで、有効なCR3が導かれそうな別のBIOS
コード・セグメント・ページ変換テーブルが検索され
る。
【0290】PCD、PWTは常に、通常のプレーナ動
作については00Hに固定とみなされる。これらの値は
0にセットされ、セグメントE000Hデータ構造内の
CR3エリアにPDBRと一緒に書き込まれる。
【0291】CR3が推定されるとLDTRが708で
推定される。LDTRは、CR3が推定されていれば、
LDTはGDT内にあることを知って、またLDTはメ
モリにあることを知って推定できる。LDTRを推定す
るため、GDTが調べられ、存在すると指示されたLD
Tが検索される。物理メモリに存在し(タスク706の
ところで述べた変換ルーチンを使ってテストされる)、
存在すると指示された最初のLDTは、LDTRが指示
するテーブルとみなされる。そのテーブルの先頭の物理
アドレスはセグメントE000Hデータ構造内のLDT
Rエリアにセーブされる。
【0292】OS/2下ではLDTが2つ以上存在する
と指示され、物理メモリに存在するが、LDTRを推定
する上記の方法は充分な信頼性があり実用的であると考
えられる。EMM386は一般的な仮想8086モード
のルーチンで、従って問題を起こし得ると思われるが、
EMM386ではCR3、LDTRがそれぞれ1つだけ
なのでEMM386のCR3、LDTRは推定しやす
い。
【0293】CR3、LDTRが推定されれば、710
でTRが推定される。基本的に、GDT、LDT内の各
タスク・セレクタ・エントリが調べられ、ビジー・ビッ
トがセットされたタスク状態セレクタが検索される。各
エントリのタイプ・フィールドは、ビジーの80286
TSS(タスク状態セレクタ)かビジーの80486
TSSかが調べられる。ビジー286 TSSかビジ
ー486 TSSを持つ最初のエントリは、TRが指示
するアドレスとみなされる。ビジーの286か486の
TSSを持つエントリの物理アドレスは、セグメントE
000Hデータ構造内のTRエリアにセーブされる。ビ
ジーの286か486のTSSを持つエントリがない場
合、セグメントE000Hデータ構造内のTRエリアに
0がセーブされる。
【0294】CR3、LDTR、TRが推定された後、
コードはタスク712に続く。712でTRが有効なT
SSを指示している場合、TRによって指示されたTS
S内のビジー・ビットが714でクリアされる。いずれ
にしてもコードは716に続き、そこでDS、ES、F
S、GSに、GDTに対して有効なセクタがロードされ
る。次に718でCR3、CR0に、セグメントE00
0Hデータ構造からの値がロードされる。次にページン
グがイネーブルになり(720)、リニア・アドレスが
物理アドレスに等しい唯一のエリアはセグメントE00
0H、F000H内のエリアである。次にIDTR、G
DTR、LDTR、TRに、セグメントE000Hデー
タ構造に格納された値がロードされる(722)。
【0295】最後に、724、726で、GS、FS、
DS、ES、SS、ESP、EFLAGS(VMビット
をセットした後)、及びCSに対応する値をセグメント
E000Hデータ構造からスタックにプッシュすること
によって仮想8086割込みスタックが作成される。ま
たタスク730でのコードに対応した戻りアドレスがス
タックにプッシュされる(726)。最後にIRETD
命令が実行されて、CPU40が仮想8086モードに
戻り、実行はタスク730に対応するコードに渡る。
【0296】タスク730は共通スレッドをスタートさ
せ、共通スレッドは図35乃至図38の各種スレッドそ
れぞれによって用いられる。タスク730でコプロセッ
サ44は、セグメントE000Hデータ構造にセーブさ
れた値からリストアされる。次に、アドレス・ライン2
0(I/Oポート92H)の状態がスタックからポップ
される(732)。タスク732はまた、SMIベース
のCPU状態セーブ・ルーチンがジャンプするポイント
である(タスク1046参照)。そして734でシャド
ーRAMのセグメントE000Hは再び読出し専用にさ
れる。736でAPMは、図7及び図48乃至図51に
関連するところで説明しているように、フェールセーフ
・タイマをリスタートすることによってハードウェアと
接続される。次にシャドーRAMセグメントE000
H、F000Hは738で再び読出し専用にされる。最
後、740でCPU状態リストア・ルーチンはフラグを
セットして、ノーマル・レジュームが起きたことを示
す。タスク742、744、746は、CPU状態リス
トア・ルーチンによっては実行されず、単に、サスペン
ド・イベントによって割込みがかかったコードに戻る前
のある時点で、8つの汎用レジスタがスタックからポッ
プされ、マスク可能な割込みがイネーブルになり(コー
ドに割込みがかかったときイネーブルだった場合)、フ
ラグがスタックからポップされることを示すだけであ
る。CPU状態リストア・ルーチンは最後にスーパバイ
ザ・ルーチンに戻り、スーパバイザ・ルーチンは制御を
APMに返し、APMは、システム値を更新して制御
を、割込みがかかったコードに返す。
【0297】ここでタスク704に戻るが、CPU40
が、割込みがかけられたとき仮想8086モードでなか
った場合、コードは750乃至792までのパスを辿
り、そこでコードはタスク730乃至748までの共通
スレッドとマージされる。750でセグメントE000
Hデータ構造のTR値が、TRが有効なTSSを指示し
ていることを示す場合、そのTSSのビジー・ビットが
752でクリアされる。いずれの場合でも次に754
で、GDTR、CR0に、セグメントE000Hデータ
構造からの値がロードされる。
【0298】次にダミー・ページ・ディレクトリ・テー
ブルとページ変換テーブルがタスク756乃至764で
セグメントE000Hにロードされる。最初、シャドー
RAMセグメントE000Hが756で読出し/書込み
にされる。次に758で新しいページ・ディレクトリ・
テーブルがアドレス0E0000Hに作成される。3番
目に、760でその新しいページ・ディレクトリ・テー
ブルの第1エントリが、0E1000Hを指示するよう
変更される。4番目、762で、アドレス0E0000
乃至0FFFFFが存在し、このアドレス範囲でリニア
・アドレスが物理アドレスに等しくなるように新しいペ
ージ変換テーブルが0E1000Hに作成される。最後
に、0E0000Hの新しいダミー・ページ・ディレク
トリとページ変換テーブルを通してアドレス変換が行な
われるように、CR3のページ・ディレクトリ・ベース
・レジスタに、0E0000Hがロードされる。ページ
ングは、タスク754でCR0がロードされたとき再び
アクティブにされている(あてはまる場合)。
【0299】次に766でシャドーRAMセグメントE
000H、F000Hが読出し/書込みにされる。そし
てCPU40が、サスペンドされたとき16ビット・コ
ードを実行していた場合、それは16ビット・モードに
あって、770で、16ビット・コード・パスを指示す
るオフセットがセグメントE000Hデータ構造にセー
ブされる。一方、CPU40が16ビット・モードにな
かった場合、それは32ビット・モードにあって、77
2で、16ビット・オフセットの代わりに、32ビット
・コード・パスを指示するオフセットがセグメントE0
00Hデータ構造にセーブされる。いずれのイベントで
も、これらのコード・パスはパラレルであり、1つは1
6ビット・オペランドを、もう1つは32ビット・オペ
ランドを使用するという点だけが異なる。タスク77
0、772は単に、いずれかのパラレル・パスに対する
オフセットを設定するだけである。パスの1つ(オフセ
ットに対応するパス)が以下のタスク782で取られ
る。
【0300】次に774で、セグメントE000Hデー
タ構造からのCR3の値がEDXにロードされ、セグメ
ントE000Hデータ構造からのESP値がEBPにロ
ードされ、セグメントE000Hデータ構造からのTR
値がESIの上半分にロードされ、セグメントE000
Hデータ構造からのLDTR値がESIの下半分(S
I)にロードされる。これらの値は下の正しい位置にシ
フトされる。次にGDTR、LDTR、CR0に、セグ
メントE000Hデータ構造からの値がロードされる
(776)。778ではLDTRに、SIに格納された
LDTR値がロードされる。次にコードはタスク77
0、772いずれかに置かれたオフセットに大きくジャ
ンプする。この大きなジャンプは、OPコードをソース
・コードに直接セットし、770、772いずれかから
のオフセットを使ってコード化される。コードは次に1
6ビットOPコード・パスか32ビットOPコード・パ
スのいずれかに続く(782)。
【0301】次に784で、CR3に、EDXに格納さ
れたCR3値がロードされ、SSに、CXに格納された
SS値がロードされ、ESPに、EBPに格納されたE
SP値がロードされる。そして786で、GS、FS、
ES、DSがスタックからポップされる。788で、割
込みがかかったCPU40がプロテクト・モードでコー
ドを実行していた場合、790で、TRには、ESIの
上半分に格納されたTR値がロードされる。いずれの場
合でも、コードはタスク792に続き、そこでデバッグ
・レジスタDR0、DR1、DR2、DR3、DR6、
DR7がスタックからポップされる。
【0302】この時点で、このコード・パスは、先に説
明したタスク730乃至748の共通コード・パスとマ
ージされる。794で、エラー復帰ルーチンはまた、C
PU状態セーブ・ルーチンのタスク640からの共通コ
ード・パスに加わる。
【0303】ここで図39乃至図41を参照する。80
0からスタートする8259状態セーブ・ルーチンのフ
ローチャートが示してある。8259の状態のセーブ
は、802でリアルタイム・クロック98によって用い
られる定期的割込み値のセーブに進み、804で、他の
読出し可能な全てのレジスタの、セグメントE000H
データ構造へのセーブに進む。コンピュータ・システム
10のアーキテクチャでは、周知の通り、ある特定の8
259読出し専用レジスタは一定値が必要である。これ
らの値はわかっており判定の必要はない。取得が難しい
8259値は8259ベース・アドレス、8259スレ
ーブ・アドレス、及び、2つの8259が、OSによる
保留中かサービス中の割込みを示すためにセットされて
いるかどうかである。
【0304】上記4項目は、図39乃至図41の残りの
コードで確認される。806で8259がマスクされ、
キーボード12とマウス13の割込みだけがマスクされ
ずに残る。
【0305】次に808で、物理メモリの下部1Kをセ
グメントE000Hデータ構造にコピーすることによっ
て割込みベクトル・テーブルがセーブされる。それから
810で、セグメントC800Hから始まる256のダ
ミー割込みサービス・ルーチンを指示した256の一意
のダミー・ベクトルをロードすることによって新しい
「ダミー」割込みベクトル・テーブルが物理メモリの下
部1Kにロードされる。812で、セグメントC800
Hに256のダミー割込みサービス・ルーチンが生成さ
れる。
【0306】次に814でキーボード12とマウス13
の割込みがディスエーブルになる。816で、応答のな
かったキーボード12、マウス13の割込みは応答を受
ける。
【0307】次に818でキーボード割込みが生成さ
れ、この割込みは、820で、ベース8259が保留か
サービス中とセットされているかどうか調べられる。こ
の値は次にセグメントE000Hデータ構造に書き込ま
れる。822で、コードは割込みが処理されるのを待
つ。割込みは824で、ダミー・サービス・ルーチンの
1つを呼び出すことによって処理される。ダミー・サー
ビス・ルーチンの呼び出しにより、8259ベース・ア
ドレスが求められ、8259が保留モードかサービス中
モードかが判定される。ベース・アドレスとモードは、
セグメントE000Hデータ構造にセーブされる。
【0308】同様の手続きは、タスク826、828、
830、832でスレーブ8259についても実行され
る。
【0309】834で、E000Hデータ構造から値を
物理メモリの下位1Kにコピーバックすることによって
割込みベクトル・テーブルがリストアされる。次に83
6でセグメントE000Hが再び読出し専用にされ、8
40で呼び出し側プログラムにリターンする準備とし
て、全ての割込みが838でマスクされる。
【0310】ここで図42乃至図45を参照する。サス
ペンド・ファイルを動的に割当てるためのルーチンが示
してある。タスク1012に関連するところで示してい
る通り、FATに割当てられたサスペンド・ファイルは
連続セクタであるはずで、サスペンドとレジュームの間
に、それぞれディスクへの高速書込みとディスクからの
高速読出しが可能である。また、当業者には明らかなよ
うに、サスペンド・ファイルは、システム全体の状態の
圧縮された内容を格納するのに充分な大きさでなければ
ならない。
【0311】そのため、サスペンドを動的に割当てるた
めのルーチンは1050からスタートする。このルーチ
ンは、システムがレジューム・ルーチンを実行せずにブ
ートする毎にOSによって実行され、また、メモリがシ
ステムに追加された後に実行する必要がある。最初、図
42乃至図45に示した割当てルーチンは、1052
で、CMOS NVRAMのフラグをチェックすること
によってパワー・マネジメント回路が存在するかどうか
調べる。パワー・マネジメント・ハードウェア106が
存在しない場合、1054でプログラムは終了する。パ
ワー・マネジメント・ハードウェア106が存在する場
合、ルーチンは、1056でレジュームが保留中かどう
かチェックする。そうなら1058でプログラムは終了
する。
【0312】レジュームが保留中でなければ、割当てル
ーチンは次に、1060でファイル・セーブ・パーティ
ションが存在するかどうか調べる。ファイル・セーブ・
パーティションが存在する場合には1062で、パーテ
ィションがシステム全体の状態を格納するのに充分な大
きさであると仮定してプログラムは終了する。
【0313】ファイル・セーブ・パーティションが存在
しない場合、FATにファイル・セーブ用のファイルを
割当てなければならない。最初、1064でファイルの
サイズが決定される。これは、システムRAM53のサ
イズ、ビデオ・メモリ58のサイズ、揮発性メモリ容量
が大きいその他のデバイスのサイズ、及びCPU40
等、各種デバイスのレジスタに値を格納するための64
キロバイトのエリアを追加することによって計算され
る。
【0314】必要なセーブ・ファイルのサイズが計算さ
れた後、割当てルーチンは次に、1066で、FATに
セーブ・ファイルを割当てようとする。ハード・ドライ
ブ31に充分な記憶スペースがない場合、割当てルーチ
ンは1070でルーチンを呼び出して、可能ならハード
・ドライブ31上の利用可能なスペースのサイズを大き
くする。
【0315】DOSコールはファイル内の連続セクタを
保証することはできない。従って、ハード・ドライブ3
1に、セーブ・ファイルを格納するのに充分なスペース
がある場合、割当てルーチンは次に、そのスペースが連
続かどうかを1072で判定する。セーブ・ファイルが
分割されている(連続でない)場合、割当てルーチンは
1074でルーチンを呼び出して、ハード・ドライブの
分割を解除して、可能ならセーブ・ファイルのための連
続ファイルを作成する。
【0316】セーブ・ファイルが分割されていない場
合、割当てルーチンは次に、1076でシグネチャ("P
S/ 1 Power Management")をセーブ・ファイルの第1セ
クタに書き込む。次に割当てルーチンは1078でファ
イルのDOSハンドルをBIOSの物理シリンダ、ヘッ
ド、セクタに変換し、これらの値をCMOS NVRA
Mに書き込む。最後に割当てルーチンは1080で終了
する。
【0317】1074で呼び出された、ハード・ドライ
ブ31を分割解除するルーチンは、タスク1082から
スタートし、タスク1094まで続く。最初、1084
でハード・ドライブ31が調べられ、これが、当業者に
は知られているハード・ドライブ圧縮ルーチンの1つで
圧縮されているかどうか判定される。
【0318】ハード・ドライブ31が圧縮されていない
場合、次に、1086で、ハード・ドライブ31全体
が、当業者には知られている分割解除ユーティリティを
使って分割解除される。その後、ルーチンは1088で
リターンし、1090で割当てルーチンの割当て部が新
たに開始される。
【0319】ハード・ドライブ31が圧縮されている場
合、1092でハード・ディスクの圧縮された部分が最
小にされる。その後、1094で、当業者には知られて
いるように、ハード・ドライブ31の圧縮されていない
部分が分割解除ユーティリティを使って分割解除され
る。その後、ルーチンは1088でリターンし、109
0で割当てルーチンの割当て部が新たに開始される。
【0320】ハード・ドライブ31上の使用可能なスペ
ースを大きくするルーチン(1070でコールされたも
の)は、タスク1100でスタートしてタスク1110
まで続く。最初、1102でハード・ディスク31が検
査され、それが、当業者には知られているハード・ドラ
イブ圧縮ルーチンの1つを使って圧縮されているかどう
か判定される。
【0321】ハード・ドライブ31が圧縮されていない
場合、ハード・ドライブ31には、セーブ・ファイルに
使用できる充分なスペースがなく、1104でメッセー
ジが表示され、ユーザに、サスペンドとレジュームの機
能を使うには、ハード・ディスクの容量を追加するか、
ハード・ドライブ31からファイルを削除する必要があ
ることが通知される。
【0322】ハード・ドライブ31が圧縮されている場
合、次に、ハード・ドライブ31の圧縮されていない部
分のサイズが1108で、可能なら大きくされる。その
後、ルーチンは1110でリターンし、1090で割当
てルーチンの割当て部が新たに開始される。
【0323】ここで図46を参照する。スタンバイ状態
を終了するルーチン(1120からスタートする)が示
してある。理論上、システムは、スタンバイ状態152
を終了する際には、システムがノーマル動作状態150
からスタンバイ状態152に遷移したときの変化を逆に
辿る。簡単には、システムがスタンバイ状態152を終
了する際、システムはビデオ信号をリストアし、LED
23を点灯させ、ハード・ドライブ31内のハード・デ
ィスクをスピンアップし、システム・クロックをリスト
アし、APMドライバからのCPUアイドル・コールに
よってCPU40が停止することがなくなるようにAP
M CPUアイドル・コールをディスエーブルにして、
フラグをクリアしてシステム10がスタンバイ状態15
2にあることを示す。
【0324】まず最初、ルーチンは1122で、システ
ムがスタンバイ状態152になったときチェックポイン
トが作成されたかどうか調べる。そうなら1124でチ
ェックポイント確保ビットがクリアされて、チェックポ
イントが有効でなくなったことが示される。この実施例
の場合、チェックポイントは、システムがスタンバイを
終了すると無効化される。チェックポイント・データ
は、システムがスタンバイ状態152にある間に障害を
起こした場合に、システムをレジュームするためにのみ
用いられる。これは、ほとんどのシステムが、ハード・
ドライブ上の仮想スワップ・ファイルを使用し、チェッ
ク・ポイントからのレジュームでは、スワップ・ファイ
ルが、チェックポイント・データとして格納されたシス
テム状態によって想定されるものとは全く異なる状態に
マシンがなるからである。代わりに、チェックポイント
・データは、次のディスク・アクセスの後に無効化する
ことができる。また、チェックポイント・データは、シ
ステムがチェックポイント・データからレジュームされ
た場合にシステムが問題を引き起こすようなファイルへ
のディスク・アクセスの後で無効化することもできる。
更にまた、チェックポイント・データは、チェックポイ
ント・データからのレジュームにより、ハード・ドライ
ブ31上のデータの一部か全部が失われ得ることを知っ
て、いつでもユーザが利用できるようにしておくことも
できる。
【0325】その後、チェックポイントが取られなかっ
た場合、CPU40は1126で、マイクロコントロー
ラU2に指示して、(i)ビデオ・コントローラ56が
もう一度ビデオ信号の生成を開始するようにし、(i
i)クロック・シンセサイザ906がシステム・クロッ
クの比較的高い周波数(25MHzか33MHz)をレ
ジュームするようにし、(iii)LED23を点灯さ
せる。そして1128で、CPU40は、値をハード・
ディスク・コントローラ86に書き込んで、ハード・ド
ライブ内のハード・ディスクがスピンを開始するように
する。次に、1130で、CPU停止が起きないように
APM CPUアイドル・コールがディスエーブルにさ
れる。最後に、スタンバイ・フラグがクリアされ(11
32)、システム10がノーマル動作状態150にある
ことが示され、ルーチンはコール側プログラムにリター
ンする(1140)。
【0326】ここで図47を参照する。スタンバイ状態
になるためのルーチン(1140でスタート)が示して
ある。簡単には、システムがスタンバイ状態152にな
るとき、システムはビデオ信号をブランクにし、LED
23を点灯させ、ハード・ドライブ31内のハード・デ
ィスクをスピンダウンさせ、システム・クロックを低速
にし、APMドライバからのCPUアイドル・コールに
よってCPU40が停止するようにAPM CPUアイ
ドル・コールをイネーブルにして、フラグをセットして
システム10がスタンバイ状態152にあることを示
す。
【0327】最初、ルーチンは1142で、チェックポ
イントが取られるかどうか調べる。そうなら、1144
でサスペンド・ルーチンのほとんどが実行されるので、
コンピュータ・システム10の状態はハード・ドライブ
31に格納される。この実施例では、システムがスタン
バイになるとチェックポイントが取られる。代わりに、
チェックポイントは、定期的に取り、システムをレジュ
ームさせるために用いることもできる。ただし図46に
関連するところで述べた注意が必要である。次に114
6で、レジューム・ルーチンは、1144で行なわれた
部分的サスペンドから復帰するのに充分な程度まで実行
される。次にチェックポイント確保ビットがセットされ
(1148)、有効なチェックポイントが取られたこと
が指示される。この実施例では、チェックポイント・デ
ータは、システムがスタンバイ状態152にある間にシ
ステムに障害が起きた場合にしか用いられないことに注
意されたい。この場合、システムがブートする際、シス
テムは、セーブされたチェックポイントからレジューム
する。
【0328】理想的には、チェックポイントは、システ
ムから見て全くトランスペアレントであるべきである。
そのようなチェックポイントは、ハードウェア割込みが
起こってデータの損失が防止される場合には、アボート
する必要がある。また、ノーマル・サスペンドの場合の
ように、どのようなハードウェア割込みも無視すること
ができる。
【0329】その後、チェックポイントが取られない予
定だった場合、CPU40は1150で、マイクロコン
トローラU2に指示して、(i)ビデオ・コントローラ
56がビデオ信号の生成を停止するようにし、(ii)
クロック・シンセサイザ906がシステム・クロックを
その比較的高い周波数(25MHzか33MHz)から
8Mhzに遅くするようにし、(iii)LED23を
点灯させる。次に1152で、CPU40は、ハード・
ディスク・コントローラ86に値を書き込んで、ハード
・ドライブ31内のハード・ディスクのスピンを停止さ
せる。次に1154で、APMドライバからのCPUア
イドル・コールによってCPU40が停止するようにA
PM CPUアイドル・コールがイネーブルにされる。
最後にスタンバイ・フラグがセットされ(1156)、
システム10がスタンバイ状態152にあることが示さ
れ、ルーチンはコール側プログラムにリターンする(1
158)。
【0330】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0331】(1)a)パワー・マネジメント状態遷移
を制御することを特徴とするオペレーティング・システ
ム・コード、アプリケーション・プログラム・コード、
及びパワー・マネジメント状態遷移をインプリメントす
ることを特徴とするBIOSコードを実行可能なCPU
と、 b)上記CPUと回路内通信を行ない、予め選択された
サスペンド・イベント群の少なくとも1つに応答して上
記コンピュータ・システムの状態をノーマル動作状態と
サスペンド状態との間で選択的に切り替えるパワー・マ
ネジメント回路と、 c)上記CPUと回路内通信を行ない、パワー・マネジ
メント状態遷移を制御するオペレーティング・システム
・コードの部分とは独立して実行されるバックアップ・
サスペンド・タイマと、 d)上記CPU及び上記パワー・マネジメント回路と回
路内通信を行ない、上記パワー・マネジメント回路に応
答して外部ソースから上記コンピュータ・システムにシ
ステム電源を選択的に供給する回路を含む電源と、 e)上記CPUと回路内通信を行なう不揮発性記憶デバ
イスと、 f)上記CPUと回路内通信を行ない、メモリ・データ
を格納する揮発性システム・メモリと、 g)上記CPUと回路内通信を行ない、レジスタ・デー
タを格納する揮発性システム・レジスタと、を含み、 第1電源状態と第2電源状態を有することと、上記パワ
ー・マネジメント回路に補助電源を供給する回路を持
ち、上記第1電源状態は、上記外部ソースから上記コン
ピュータ・システムへシステム電源を、上記パワー・マ
ネジメント回路に補助電源を供給し、上記第2電源状態
は、上記外部ソースから上記コンピュータ・システムへ
システム電源を供給しない上記電源と、上記外部ソース
から上記パワー・マネジメント回路に補助電源を供給
し、上記ノーマル動作状態は、上記電源が上記第1電源
状態にあることと、上記コンピュータ・システムがユー
ザ・コマンド、上記オペレーティング・システム、また
は上記BIOSに応答してアプリケーション・プログラ
ムを実行でき、上記サスペンド状態は、レジスタ・デー
タとメモリ・データが上記不揮発性記憶デバイスに格納
されていることと、上記電源が上記第2電源状態にあ
り、上記ノーマル動作状態と上記サスペンド状態の切り
替えは、上記CPUが上記予め選択されたサスペンド・
イベントに応答して上記システム・メモリ、システム・
レジスタ、及び上記不揮発性記憶デバイスの間でメモリ
・データとレジスタ・データをコピーすることからな
り、上記ノーマル動作状態と上記サスペンド状態の切り
替えは更に、上記制御装置が上記電源に上記第1電源状
態と上記第2電源状態をそれぞれ上記予め選択されたサ
スペンド・イベントに応答して切り替えさせることから
なり、上記予め選択されたサスペンド・イベントの少な
くとも1つは上記バックアップ・サスペンド・タイマの
終了からなることを特徴とする、コンピュータ・システ
ム。 (2)予め選択された時間の後に終了するようセットさ
れた非活動サスペンド・タイマを含み、上記予め選択さ
れたサスペンド・イベントの他方のイベントは上記非活
動サスペンド・タイマの終了からなる、上記(1)記載
のコンピュータ・システム。 (3)上記パワー・マネジメント・プロセッサと回路内
通信を行ない、モメンタリ押しボタン・スイッチの押下
に応答してクロージャ・イベントを出力する上記モメン
タリ押しボタン・スイッチを含み、上記予め選択された
サスペンド・イベントの他方のイベントは上記スイッチ
のクロージャ・イベントからなる、上記(1)記載のコ
ンピュータ・システム。 (4)上記パワー・マネジメント・プロセッサは、上記
バックアップ・サスペンド・タイマをインプリメントす
ることを特徴とする、上記(1)記載のコンピュータ・
システム。 (5)上記パワー・マネジメント・プロセッサと回路内
通信を行ない、モメンタリ押しボタン・スイッチの押下
に応答してクロージャ・イベントを出力する上記モメン
タリ押しボタン・スイッチを含み、上記予め選択された
サスペンド・イベントの他方のイベントは、上記バック
アップ・サスペンド・タイマの終了と上記スイッチのク
ロージャ・イベントとからなる、上記(1)記載のコン
ピュータ・システム。 (6)上記パワー・マネジメント・プロセッサは予めプ
ログラミングされたマイクロコントローラからなる、上
記(1)記載のコンピュータ・システム。 (7)上記バックアップ・サスペンド・タイマは、実行
されるオペレーティング・システムのパワー・マネジメ
ント部に応答してリスタートされるかリセットされる、
上記(1)記載のコンピュータ・システム。 (8)上記パワー・マネジメント・プロセッサは予めプ
ログラミングされたマイクロコントローラからなる、上
記(4)記載のコンピュータ・システム。 (9)上記不揮発性記憶デバイスはハード・ディスク記
憶装置からなる、上記(1)記載のコンピュータ・シス
テム。
【0332】
【発明の効果】上述の本発明の構成により、APMの機
能が停止した場合にも、コンピュータ・システムをサス
ペンド状態に移行可能なシステムが提供される。
【図面の簡単な説明】
【図1】本発明を採用したパーソナル・コンピュータの
斜視図である。
【図2】シャシ、カバー、電気機械的直接アクセス記憶
装置、プレーナ・ボードを含み、これらの要素の関係を
示す、図1のパーソナル・コンピュータの特定要素の分
解斜視図である。
【図3】図1、図2のパーソナル・コンピュータの特定
要素のブロック図である。
【図4】図1、図2のパーソナル・コンピュータの特定
要素のブロック図である。
【図5】ノーマル、スタンバイ、サスペンド、オフの4
つのシステム状態を示す、本発明のコンピュータ・シス
テムの状態図である。
【図6】電源の関連部分を示すブロック図である。
【図7】他の図との各種インタフェースを示す、本発明
のパワー・マネジメント回路の電気概略図である。
【図8】パワー・マネジメント回路の内部モデムとの接
続の電気概略図である。
【図9】パワー・マネジメント回路のリセット回路内の
各種信号を示す波形図である。
【図10】電源障害検出補正回路の第2実施例の電気概
略図である。
【図11】本発明のパワー・マネジメント・プロセッサ
によって維持されるスイッチ状態の1つの状態図であ
る。
【図12】本発明のパワーアップ・ルーチン等を示すフ
ローチャートである。
【図13】オペレーティング・システム内のAPMデバ
イス・ドライバによって約1秒毎にコールされるスーパ
バイザ・ルーチンの詳細を示すフローチャートである。
【図14】オペレーティング・システム内のAPMデバ
イス・ドライバによって約1秒毎にコールされるスーパ
バイザ・ルーチンの詳細を示すフローチャートである。
【図15】最後のリクエストに対するAPM処理のルー
チンと最後のリクエストに対するAPM拒否のルーチン
の詳細を示すフローチャートである。
【図16】本発明のサスペンド・ルーチンの詳細を示す
フローチャートである。
【図17】本発明のサスペンド・ルーチンの詳細を示す
フローチャートである。
【図18】本発明のサスペンド・ルーチンの詳細を示す
フローチャートである。
【図19】本発明のサスペンド・ルーチンの詳細を示す
フローチャートである。
【図20】本発明のサスペンド・ルーチンの詳細を示す
フローチャートである。
【図21】本発明のサスペンド・ルーチンの詳細を示す
フローチャートである。
【図22】本発明のブートアップ・ルーチンの詳細を示
すフローチャートである。
【図23】本発明のブートアップ・ルーチンの詳細を示
すフローチャートである。
【図24】本発明のブートアップ・ルーチンの詳細を示
すフローチャートである。
【図25】本発明のブートアップ・ルーチンの詳細を示
すフローチャートである。
【図26】本発明のレジューム・ルーチンの詳細を示す
フローチャートである。
【図27】本発明のレジューム・ルーチンの詳細を示す
フローチャートである。
【図28】本発明のレジューム・ルーチンの詳細を示す
フローチャートである。
【図29】本発明のレジューム・ルーチンの詳細を示す
フローチャートである。
【図30】本発明のレジューム・ルーチンの詳細を示す
フローチャートである。
【図31】本発明のCPU状態セーブ・ルーチンの詳細
を示すフローチャートである。
【図32】本発明のCPU状態セーブ・ルーチンの詳細
を示すフローチャートである。
【図33】本発明のCPU状態セーブ・ルーチンの詳細
を示すフローチャートである。
【図34】本発明のCPU状態セーブ・ルーチンの詳細
を示すフローチャートである。
【図35】本発明のCPU状態リストア・ルーチンの詳
細を示すフローチャートである。
【図36】本発明のCPU状態リストア・ルーチンの詳
細を示すフローチャートである。
【図37】本発明のCPU状態リストア・ルーチンの詳
細を示すフローチャートである。
【図38】本発明のCPU状態リストア・ルーチンの詳
細を示すフローチャートである。
【図39】本発明の8959状態セーブ・ルーチンの詳
細を示すフローチャートである。
【図40】本発明の8959状態セーブ・ルーチンの詳
細を示すフローチャートである。
【図41】本発明の8959状態セーブ・ルーチンの詳
細を示すフローチャートである。
【図42】本発明の動的セーブ・ファイル割当てルーチ
ンの詳細を示すフローチャートである。
【図43】本発明の動的セーブ・ファイル割当てルーチ
ンの詳細を示すフローチャートである。
【図44】本発明の動的セーブ・ファイル割当てルーチ
ンの詳細を示すフローチャートである。
【図45】本発明の動的セーブ・ファイル割当てルーチ
ンの詳細を示すフローチャートである。
【図46】本発明のスタンバイ終了ルーチンの詳細を示
すフローチャートである。
【図47】本発明のスタンバイ開始ルーチンの詳細を示
すフローチャートである。
【図48】本発明のパワー・マネジメント・プロセッサ
・ルーチンの詳細を示すフローチャートである。
【図49】本発明のパワー・マネジメント・プロセッサ
・ルーチンの詳細を示すフローチャートである。
【図50】本発明のパワー・マネジメント・プロセッサ
・ルーチンの詳細を示すフローチャートである。
【図51】本発明のパワー・マネジメント・プロセッサ
・ルーチンの詳細を示すフローチャートである。
【符号の説明】
10 マイクロコンピュータ・システム 11 表示装置、画面 12 キーボード 13 マウス 14 プリンタまたはプロッタ 15 カバー 16 外部の装飾的な部材 17 電源 18 内部のシールド材(金属薄板ライナ) 19 シャシ 20 多層プレーナ 20 アドレス・ライン 21 パワー・ボタン(スイッチ) 22 ベース 23 パワー/フィードバックLED 24 フロント・パネル 25 リア・パネル 26、28 上ベイ 27 フロッピー・ディスク・ドライブ 29、30 下ベイ 31 ハード・ディスク記憶装置、ハード・ドライブ 40 システム・プロセッサ(CPU) 41 CPUキャッシュ 42 高速CPUローカル・バス 44 数値コプロセッサ 46 メモリ制御装置 48 メモリ・コントローラ 50 アドレス・マルチプレクサ 52 データ・バッファ 53 揮発性RAM(RAMモジュール) 53 システム・メモリ 54 RAMモジュール 56 ビデオ・コントローラ 58 ビデオ・メモリ 60 システム・キャッシュ・メモリ 60 外部キャッシュ 62 キャッシュ・コントローラ 64、68、74 バッファ 66 低速なシステム・バス 68 ラッチ・バッファ 70 バス制御/タイミング装置 71 DMA装置 72 DMAコントローラ 76 ISAバス 78 I/Oスロット 80 アービトレーション制御バス 82 セントラル・アービタ 84 ディスケット・アダプタ 86 IDEハード・ディスク・コントローラ(IDE
ディスク・アダプタ) 88 ROM 90 プレーナI/Oバス 92 割込みコントローラ 94 RS−232アダプタ 96 不揮発性CMOS RAM(NVRAM) 98 CMOSリアルタイム・クロック(RTC) 100 パラレル・アダプタ 102 タイマ 104 8042キーボード・インタフェース・マイク
ロプロセッサ 106 パワー・マネジメント回路 150 ノーマル動作状態 152 スタンバイ状態 154 サスペンド状態 156 オフ状態 171 バッテリ 172 1次/調査装置 176 オン/押下状態 178 オン/解除状態 180 オフ/押下状態 182 オフ/解除状態 204、205、206、207、208、209、2
10 ノーマル・ブート・ルーチン 214、215、216、217、218、219、2
20 レジューム・ブート・ルーチン 307 「バッファから書込み」ルーチン 311 圧縮ルーチン 489 「バッファから読出し」ルーチン 493 圧縮解除ルーチン 646、648 転送 900 内部モデム 902 外部モデム 904 トランス 906 クロック・シンセサイザ 920 リセット副回路
───────────────────────────────────────────────────── フロントページの続き (72)発明者 スティーブン・ティ・パンコースト アメリカ合衆国40513、ケンタッキー州 レキシントン、パスターン・コート 3325 (56)参考文献 特開 平5−19917(JP,A) 特開 昭61−220016(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 1/32 G06F 9/46 340 G06F 1/00 370

Claims (9)

    (57)【特許請求の範囲】
  1. 【請求項1】a)パワー・マネジメント状態遷移を制御
    することを特徴とするオペレーティング・システム・コ
    ード、アプリケーション・プログラム・コード、及びパ
    ワー・マネジメント状態遷移をインプリメントすること
    を特徴とするBIOSコードを実行可能なCPUと、 b)上記CPUと回路内通信を行ない、予め選択された
    サスペンド・イベント群の少なくとも1つに応答して上
    記コンピュータ・システムの状態をノーマル動作状態と
    サスペンド状態との間で選択的に切り替えるパワー・マ
    ネジメント回路と、 c)上記CPUと回路内通信を行ない、パワー・マネジ
    メント状態遷移を制御するオペレーティング・システム
    ・コードの部分とは独立して実行されるバックアップ・
    サスペンド・タイマと、 d)上記CPU及び上記パワー・マネジメント回路と回
    路内通信を行ない、上記パワー・マネジメント回路に応
    答して外部ソースから上記コンピュータ・システムにシ
    ステム電源を選択的に供給する回路を含む電源と、 e)上記CPUと回路内通信を行なう不揮発性記憶デバ
    イスと、 f)上記CPUと回路内通信を行ない、メモリ・データ
    を格納する揮発性システム・メモリと、 g)上記CPUと回路内通信を行ない、レジスタ・デー
    タを格納する揮発性システム・レジスタと、を含み、 第1電源状態と第2電源状態を有することと、上記パワ
    ー・マネジメント回路に補助電源を供給する回路を持
    ち、 上記第1電源状態は、上記外部ソースから上記コンピュ
    ータ・システムへシステム電源を、上記パワー・マネジ
    メント回路に補助電源を供給し、 上記第2電源状態は、上記外部ソースから上記コンピュ
    ータ・システムへシステム電源を供給しない上記電源
    と、上記外部ソースから上記パワー・マネジメント回路
    に補助電源を供給し、 上記ノーマル動作状態は、上記電源が上記第1電源状態
    にあることと、上記コンピュータ・システムがユーザ・
    コマンド、上記オペレーティング・システム、または上
    記BIOSに応答してアプリケーション・プログラムを
    実行でき、 上記サスペンド状態は、レジスタ・データとメモリ・デ
    ータが上記不揮発性記憶デバイスに格納されていること
    と、上記電源が上記第2電源状態にあり、 上記ノーマル動作状態と上記サスペンド状態の切り替え
    は、上記CPUが上記予め選択されたサスペンド・イベ
    ントに応答して上記システム・メモリ、システム・レジ
    スタ、及び上記不揮発性記憶デバイスの間でメモリ・デ
    ータとレジスタ・データをコピーすることからなり、 上記ノーマル動作状態と上記サスペンド状態の切り替え
    は更に、上記制御装置が上記電源に上記第1電源状態と
    上記第2電源状態をそれぞれ上記予め選択されたサスペ
    ンド・イベントに応答して切り替えさせることからな
    り、 上記予め選択されたサスペンド・イベントの少なくとも
    1つは上記バックアップ・サスペンド・タイマの終了か
    らなることを特徴とする、 コンピュータ・システム。
  2. 【請求項2】予め選択された時間の後に終了するようセ
    ットされた非活動サスペンド・タイマを含み、上記予め
    選択されたサスペンド・イベントの他方のイベントは上
    記非活動サスペンド・タイマの終了からなる、請求項1
    記載のコンピュータ・システム。
  3. 【請求項3】上記パワー・マネジメント・プロセッサと
    回路内通信を行ない、モメンタリ押しボタン・スイッチ
    の押下に応答してクロージャ・イベントを出力する上記
    モメンタリ押しボタン・スイッチを含み、上記予め選択
    されたサスペンド・イベントの他方のイベントは上記ス
    イッチのクロージャ・イベントからなる、請求項1記載
    のコンピュータ・システム。
  4. 【請求項4】上記パワー・マネジメント・プロセッサ
    は、上記バックアップ・サスペンド・タイマをインプリ
    メントすることを特徴とする、請求項1記載のコンピュ
    ータ・システム。
  5. 【請求項5】上記パワー・マネジメント・プロセッサと
    回路内通信を行ない、モメンタリ押しボタン・スイッチ
    の押下に応答してクロージャ・イベントを出力する上記
    モメンタリ押しボタン・スイッチを含み、上記予め選択
    されたサスペンド・イベントの他方のイベントは、上記
    バックアップ・サスペンド・タイマの終了と上記スイッ
    チのクロージャ・イベントとからなる、請求項1記載の
    コンピュータ・システム。
  6. 【請求項6】上記パワー・マネジメント・プロセッサは
    予めプログラミングされたマイクロコントローラからな
    る、請求項1記載のコンピュータ・システム。
  7. 【請求項7】上記バックアップ・サスペンド・タイマ
    は、実行されるオペレーティング・システムのパワー・
    マネジメント部に応答してリスタートされるかリセット
    される、請求項1記載のコンピュータ・システム。
  8. 【請求項8】上記パワー・マネジメント・プロセッサは
    予めプログラミングされたマイクロコントローラからな
    る、請求項4記載のコンピュータ・システム。
  9. 【請求項9】上記不揮発性記憶デバイスはハード・ディ
    スク記憶装置からなる、請求項1記載のコンピュータ・
    システム。
JP18140495A 1994-09-07 1995-07-18 Apm(拡張パワー・マネジメント)用自動バックアップ装置 Expired - Fee Related JP3188826B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/301,943 US5560023A (en) 1994-09-07 1994-09-07 Automatic backup system for advanced power management
US301943 1994-09-07

Publications (2)

Publication Number Publication Date
JPH08194561A JPH08194561A (ja) 1996-07-30
JP3188826B2 true JP3188826B2 (ja) 2001-07-16

Family

ID=23165572

Family Applications (1)

Application Number Title Priority Date Filing Date
JP18140495A Expired - Fee Related JP3188826B2 (ja) 1994-09-07 1995-07-18 Apm(拡張パワー・マネジメント)用自動バックアップ装置

Country Status (7)

Country Link
US (1) US5560023A (ja)
EP (1) EP0701192B1 (ja)
JP (1) JP3188826B2 (ja)
KR (1) KR100190736B1 (ja)
CN (1) CN1158591C (ja)
CA (1) CA2156540C (ja)
DE (1) DE69519461D1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6361168B1 (en) 1999-09-29 2002-03-26 Nidek Co., Ltd. Ophthalmic apparatus

Families Citing this family (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU4519596A (en) * 1994-12-22 1996-07-10 Intel Corporation Power budgeting with device specific characterization of power consumption
KR0139985B1 (ko) * 1995-01-06 1998-07-01 김광호 옵션 카드의 하이버네이션 시스템
US6393584B1 (en) * 1995-04-26 2002-05-21 International Business Machines Corporation Method and system for efficiently saving the operating state of a data processing system
US5758171A (en) * 1995-07-05 1998-05-26 Cirrus Logic, Inc. Apparatus and method for reading back socket power status information
US5638541A (en) * 1995-08-25 1997-06-10 Intel Corporation System and method for managing power on desktop systems
US5867718A (en) * 1995-11-29 1999-02-02 National Semiconductor Corporation Method and apparatus for waking up a computer system via a parallel port
US5765001A (en) 1996-04-29 1998-06-09 International Business Machines Corporation Computer system which is operative to change from a normal operating state to a suspend state when a power supply thereof detects that an external source is no longer providing power to said power supply at a predetermined level
KR100219608B1 (ko) * 1996-07-23 1999-10-01 윤종용 디지탈 기록 미디어와 디지탈 통신등의 디지탈 채널에 채택되는 신호변조방법
KR19980044732A (ko) * 1996-12-07 1998-09-05 김광호 컴퓨터 시스템에서의 dpms 모드 표시장치 및 표시방법
KR100281535B1 (ko) * 1997-02-12 2001-02-15 윤종용 컴퓨터 시스템 및 그의 제어 방법
KR19980073522A (ko) * 1997-03-15 1998-11-05 김광호 파워다운모드를 지원하는 반도체 메모리 장치와 이를 구비한 컴퓨터 시스템 및 이의 제어방법
US5978912A (en) * 1997-03-20 1999-11-02 Phoenix Technologies Limited Network enhanced BIOS enabling remote management of a computer without a functioning operating system
KR19980074058A (ko) * 1997-03-21 1998-11-05 윤종용 전원 자동차단기능을 갖는 컴퓨터 및 그 전원자동차단방법
US5835366A (en) * 1997-06-24 1998-11-10 Telxon Corporation Secondary battery boost circuit
JP3943665B2 (ja) 1997-09-01 2007-07-11 株式会社東芝 スリープ制御方法、およびイベント通知方法
US6145068A (en) * 1997-09-16 2000-11-07 Phoenix Technologies Ltd. Data transfer to a non-volatile storage medium
US6115813A (en) * 1998-03-05 2000-09-05 Compaq Computer Corporation Selectively enabling advanced configuration and power interface BIOS support
US6378056B2 (en) 1998-11-03 2002-04-23 Intel Corporation Method and apparatus for configuring a memory device and a memory channel using configuration space registers
US6226729B1 (en) 1998-11-03 2001-05-01 Intel Corporation Method and apparatus for configuring and initializing a memory device and a memory channel
US6230274B1 (en) * 1998-11-03 2001-05-08 Intel Corporation Method and apparatus for restoring a memory device channel when exiting a low power state
JP3594505B2 (ja) 1999-02-05 2004-12-02 松下電器産業株式会社 自動車バッテリ保護機能付き車載コンピュータ
US6523124B1 (en) * 1999-04-23 2003-02-18 Palm, Inc. System and method for detection of an accessory device connection status
KR100640359B1 (ko) * 1999-07-07 2006-10-31 삼성전자주식회사 전송 시스템에서 관리 시스템의 연결해제 방법
KR100424484B1 (ko) * 2001-07-05 2004-03-24 엘지전자 주식회사 중앙 처리 장치용 전원 공급기
US6922787B2 (en) * 2001-08-14 2005-07-26 International Business Machines Corporation Method and system for providing a flexible temperature design for a computer system
US7181510B2 (en) * 2002-01-04 2007-02-20 Hewlett-Packard Development Company, L.P. Method and apparatus for creating a secure embedded I/O processor for a remote server management controller
JP3777136B2 (ja) * 2002-04-01 2006-05-24 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータ装置、データのデッドコピー方法、プログラム、コンピュータ装置の稼動方法
US20040190554A1 (en) * 2003-03-26 2004-09-30 Galloway William C. Fair multilevel arbitration system
TW591372B (en) 2003-05-15 2004-06-11 High Tech Comp Corp Power control method of portable electronic device, portable electronic device and electronic system
CN1329795C (zh) * 2003-11-24 2007-08-01 佛山市顺德区顺达电脑厂有限公司 电脑装置之电源状态自动测试方法
KR100560751B1 (ko) 2003-12-17 2006-03-13 삼성전자주식회사 정전 검출 장치
US7177782B2 (en) * 2004-06-18 2007-02-13 Lenovo (Singapore) Pte. Ltd. Methods and arrangements for capturing runtime information
US8286018B2 (en) 2004-06-29 2012-10-09 Seagate Technology Llc Power management in data storage device determining utilization of a control circuit by its rate of command processing
US7360106B2 (en) * 2004-08-05 2008-04-15 Matsushita Electric Industrial Co., Ltd. Power-saving processing unit, power-saving processing method and program record medium
JP4341542B2 (ja) * 2004-12-15 2009-10-07 セイコーエプソン株式会社 情報処理装置および情報処理方法
JP4692318B2 (ja) * 2005-04-20 2011-06-01 株式会社デンソー 電子制御装置
KR100736748B1 (ko) * 2005-09-14 2007-07-09 삼성전자주식회사 컴퓨터 및 그 제어방법
US9122643B2 (en) * 2005-12-08 2015-09-01 Nvidia Corporation Event trigger based data backup services
WO2007067699A2 (en) * 2005-12-08 2007-06-14 Nvidia Corporation Emergency data preservation services
US8402322B2 (en) * 2005-12-08 2013-03-19 Nvidia Corporation Emergency data preservation services
KR100776751B1 (ko) 2006-06-09 2007-11-19 주식회사 하이닉스반도체 전압 공급 장치 및 방법
US7930564B2 (en) * 2006-07-31 2011-04-19 Intel Corporation System and method for controlling processor low power states
KR100897767B1 (ko) * 2007-02-07 2009-05-15 삼성전자주식회사 데이터 유지 시간을 늘릴 수 있는 마이크로 컨트롤러 유닛및 방법
EP2043308B1 (en) 2007-09-27 2012-01-25 Hitachi, Ltd. GMPLS in optical networks
US9087102B2 (en) * 2007-10-09 2015-07-21 International Business Machines Corporation Adaptive query processing infrastructure
US8510560B1 (en) 2008-08-20 2013-08-13 Marvell International Ltd. Efficient key establishment for wireless networks
WO2010033497A1 (en) 2008-09-18 2010-03-25 Marvell World Trade Ltd. Preloading applications onto memory at least partially during boot up
US8127154B2 (en) * 2008-10-02 2012-02-28 International Business Machines Corporation Total cost based checkpoint selection
US8443211B2 (en) * 2009-01-05 2013-05-14 Marvell World Trade Ltd. Hibernation or suspend using a non-volatile-memory device
US9098970B2 (en) * 2011-06-17 2015-08-04 Wms Gaming Inc. Wagering game machine hibernation
US9436629B2 (en) 2011-11-15 2016-09-06 Marvell World Trade Ltd. Dynamic boot image streaming
US10193358B2 (en) * 2012-04-23 2019-01-29 Hewlett Packard Enterprise Development Lp Deep-charging power resources of power resource group having identifier corresponding to range within which modulo falls based on charging time
CN104254840B (zh) * 2012-04-27 2017-05-31 马维尔国际贸易有限公司 在计算机系统中的存储器转储和分析
US9405526B2 (en) * 2012-08-07 2016-08-02 Microsoft Technology Licensing, Llc Initiating update operations
US9904559B2 (en) * 2012-10-25 2018-02-27 Canon Kabushiki Kaisha Information processing apparatus and activation method therefor for processing data of a hibernation image
US9736801B1 (en) 2013-05-20 2017-08-15 Marvell International Ltd. Methods and apparatus for synchronizing devices in a wireless data communication system
US9521635B1 (en) 2013-05-21 2016-12-13 Marvell International Ltd. Methods and apparatus for selecting a device to perform shared functionality in a deterministic and fair manner in a wireless data communication system
US9836306B2 (en) 2013-07-31 2017-12-05 Marvell World Trade Ltd. Parallelizing boot operations
US9454424B2 (en) * 2014-08-27 2016-09-27 Freescale Semiconductor, Inc. Methods and apparatus for detecting software inteference
WO2017168228A1 (en) 2016-03-08 2017-10-05 Marvell World Trade Ltd. Methods and apparatus for secure device authentication
CN106897192B (zh) * 2017-02-27 2020-08-25 苏州浪潮智能科技有限公司 一种基于延时分类的监控插件控制方法和装置
US20230114256A1 (en) * 2020-03-19 2023-04-13 Hewlett-Packard Development Company, L.P. Feature modification in standby mode based on power source capacity
CN113703557A (zh) * 2020-05-21 2021-11-26 杭州海康威视数字技术股份有限公司 一种cmos信息的清除方法、电子设备及清除芯片
CN115543055B (zh) * 2022-11-28 2023-03-14 苏州浪潮智能科技有限公司 电源管理的控制权移交方法、装置、设备和存储介质

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5012406A (en) * 1988-04-19 1991-04-30 Power Card Supply Line of power interruption in predetermined area of internal permanent memory
US5241680A (en) * 1989-06-12 1993-08-31 Grid Systems Corporation Low-power, standby mode computer
US5167024A (en) * 1989-09-08 1992-11-24 Apple Computer, Inc. Power management for a laptop computer with slow and sleep modes
US5396635A (en) * 1990-06-01 1995-03-07 Vadem Corporation Power conservation apparatus having multiple power reduction levels dependent upon the activity of the computer system
US5230074A (en) * 1991-01-25 1993-07-20 International Business Machines Corporation Battery operated computer power management system
US5410711A (en) * 1991-02-14 1995-04-25 Dell Usa, L.P. Portable computer with BIOS-independent power management
WO1992021081A1 (en) * 1991-05-17 1992-11-26 Zenith Data Systems Corporation Suspend/resume capability for a protected mode microprocessor and hard disk, and idle mode implementation
JPH06236284A (ja) * 1991-10-21 1994-08-23 Intel Corp コンピュータシステム処理状態を保存及び復元する方法及びコンピュータシステム
US5410713A (en) * 1992-01-02 1995-04-25 Smith Corona/Acer Power-management system for a computer
US5423045A (en) * 1992-04-15 1995-06-06 International Business Machines Corporation System for distributed power management in portable computers
US5513359A (en) 1993-07-23 1996-04-30 International Business Machines Corporation Desktop computer having a single-switch suspend/resume function
US5497494A (en) 1993-07-23 1996-03-05 International Business Machines Corporation Method for saving and restoring the state of a CPU executing code in protected mode
US5511202A (en) 1993-07-26 1996-04-23 International Business Machines Corporation Desktop computer system having zero-volt system suspend and control unit for ascertaining interrupt controller base address
US5548763A (en) 1993-07-26 1996-08-20 International Business Machines Corporation Desk top computer system having multi-level power management

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6361168B1 (en) 1999-09-29 2002-03-26 Nidek Co., Ltd. Ophthalmic apparatus

Also Published As

Publication number Publication date
CA2156540A1 (en) 1996-03-08
DE69519461D1 (de) 2000-12-28
JPH08194561A (ja) 1996-07-30
CA2156540C (en) 2000-01-11
KR100190736B1 (ko) 1999-06-01
KR960011766A (ko) 1996-04-20
EP0701192A1 (en) 1996-03-13
CN1140272A (zh) 1997-01-15
CN1158591C (zh) 2004-07-21
US5560023A (en) 1996-09-24
EP0701192B1 (en) 2000-11-22

Similar Documents

Publication Publication Date Title
JP3188826B2 (ja) Apm(拡張パワー・マネジメント)用自動バックアップ装置
JP3197796B2 (ja) サスペンド・システム用多機能パワー・スイッチとフィードバックled
JP3193596B2 (ja) 電源切断後のユーザ・オプションの自動リストア
JP3224715B2 (ja) コンピュータ・システムをウェイクさせる低電力リング検出
JP3494510B2 (ja) サスペンド・システム用パワー・マネジメント・プロセッサ
JP3452426B2 (ja) システム管理割込みを使用したパワーオフ時のシステム・タスクの実行
JP4028605B2 (ja) Sormセッションを有するコンピュータ・システム及び方法
US5551043A (en) Standby checkpoint to prevent data loss
JP3341970B2 (ja) コンピュータ・システム
US5758174A (en) Computer system having a plurality of stored system capability states from which to resume
US6081752A (en) Computer system having power supply primary sense to facilitate performance of tasks at power off
US5581692A (en) Automatic clearing of power supply fault condition in suspend system
EP0749063A2 (en) Method and apparatus for suspend/resume operation in a computer

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees
S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R370 Written measure of declining of transfer procedure

Free format text: JAPANESE INTERMEDIATE CODE: R370