(57)【特許請求の範囲】
【請求項１】
電源オフ状態への移行時にハイバネーション処理を実行するコンピュータシステムにおいて、
本体と、
前記本体に設けられたディスクドライブ装置と、
前記本体の電源オフ要因の発生を検知する検知手段と、
前記検知手段が電源オフ要因の発生を検知した場合、前記本体のシステム情報をメモリへ退避する処理と、前記ディスクドライブ装置から前記ディスクドライブ装置が対応しているデータ転送モードの情報を読み出して当該読み出された情報に基づいて前記ディスクドライブ装置が対応しているデータ転送モードの種類を判別することによって、ＤＭＡ転送モードとＰＩＯモードを含む複数の転送モードの中から、前記ハイバネーション処理で前記ディスクドライブ装置をアクセスするために使用する転送モードの種類を決定する処理とを実行する手段と、
前記ＤＭＡ転送モードとＰＩＯモードを含む複数の転送モードの中から前記ハイバネーション処理で前記ディスクドライブ装置をアクセスするために使用する転送モードとして決定された転送モードを用いて前記ディスクドライブ装置に対するアクセスを実行することによって、前記メモリに退避された前記システム情報を前記ディスクドライブ装置へ転送する手段とを具備することを特徴とするコンピュータシステム。
【請求項２】
ディスクドライブ装置が装着可能に構成され、電源オフ状態への移行時にメモリの内容をディスクドライブ装置にセーブするハイバネーション処理を実行するコンピュータシステムにおいて使用されるデータ転送制御方法であって、
前記コンピュータシステムの電源オフ要因の発生を検知する検知ステップと、
前記検知ステップが電源オフ要因の発生を検知した場合、前記コンピュータシステムのシステム情報をメモリへ退避する処理と、前記ディスクドライブ装置から前記ディスクドライブ装置が対応しているデータ転送モードの情報を読み出して当該読み出された情報に基づいて前記ディスクドライブ装置が対応しているデータ転送モードの種類を判別することによって、ＤＭＡ転送モードとＰＩＯモードを含む複数の転送モードの中から、前記ハイバネーション処理で前記ディスクドライブ装置をアクセスするために使用する転送モードの種類を決定する処理とを実行するステップと、
前記ＤＭＡ転送モードとＰＩＯモードを含む複数の転送モードの中から前記ハイバネーション処理で前記ディスクドライブ装置をアクセスするために使用する転送モードとして決定された転送モードを用いて前記ディスクドライブ装置に対するアクセスを実行することによって、前記メモリに退避された前記システム情報を前記ディスクドライブ装置へ転送するステップとを具備することを特徴とするデータ転送制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はコンピュータシステムおよび同システムで使用されるデータ転送制御方法に関し、特に電源オフ時にメモリの内容をハードディスク装置にセーブするハイバネーション機能を有するコンピュータシステムおよびそのハイバネーション機能の高速化のためのデータ転送制御方法に関する。
【０００２】
【従来の技術】
近年、携帯可能なノートブックタイプまたはサブノートタイプのパーソナルコンピュータや、携帯情報端末などのポケットコンピュータが種々開発されている。
【０００３】
この種のポータブルコンピュータは、バッテリ駆動可能な時間を延ばすために、コンピュータシステムの電力を節約するための種々のパワーセーブモード（スリープモード）が設けられている。サスペンドモードは、最も電力消費の少ないスリープモードの１つである。すなわち、コンピュータシステムがサスペンドモードの時は、オペレーティングシステムやユーザプログラムなどの再スタートに必要なシステムデータが記憶されている主メモリを除く、システム内の他のほとんどのデバイスはパワーオフされる。
【０００４】
主メモリにセーブされるシステムデータは、コンピュータシステムがサスペンドモードに設定される直前のＣＰＵのステータスおよび各種周辺ＬＳＩのステータスである。また、この主メモリには、オペレーティングシステムおよびアプリケーションプログラムの実行状態やそのアプリケーションプログラムによって作成されたユーザデータも記憶されている。主メモリにセーブされた情報は、サスペンドモード直前の作業状態の復元のために用いられる。
【０００５】
システムデータのセーブは、システムＢＩＯＳ（基本入出力プログラム）に組み込まれたサスペンドルーチンによって実行される。システムＢＩＯＳはオペレーティングシステムからの要求にしたがってシステム内のハードウェアを制御するためのものであり、システム内の各種ハードウェアデバイスを制御するデバイスドライバ群を含んでいる。システムＢＩＯＳのサスペンドルーチンは、システムの電源オフ時などに起動され、ＣＰＵのレジスタおよび各種周辺ＬＳＩのステータスをメモリにセーブした後、システムをパワーオフする。
【０００６】
主メモリへの電源供給は、システムがパワーオフの期間中ずっとバッテリによって維持される。このため、システムのステータスおよびユーザデータは消失されることなく、サスペンド前の作業状態にシステムを高速に戻すことができる。
【０００７】
ところが、もしシステムがサスペンドモード状態の時にバッテリの容量が低下してローバッテリ状態となると、主メモリ内のデータは消失される。この場合、サスペンド前の状態にシステムを戻すことができ無くなるばかりか、主メモリに展開されているユーザデータも消失されてしまう。
【０００８】
そこで、最近では、サスペンドモードに代わる新たなスリープモードとして、ハイバネーションモードが使用され始めている。ハイバネーションモードは、システム電源オフ時にＣＰＵおよび各種周辺ＬＳＩのステータス、および主メモリの内容などをハードディスクにセーブした後に主メモリを含むシステム内のほとんどすべてのデバイスをパワーダウンさせるモードであり、サスペンドモードよりも電力消費を低減できる。また、バッテリ容量が低下してもハードディスクにセーブした情報は消失されないので、システム状態をハイバネーションモード直前の状態に正常に復元することができる。したがって、ＡＣアダプタを使用できない外出先での使用が多い携帯型コンピュータの多くは、ハイバネーションモードをスリープモードとして実装している。
【０００９】
ところで、近年のオペレーティングシステムおよびアプリケーションプログラムの機能向上に伴い、携帯型コンピュータにおいても、その主メモリとして実装されるメモリ容量は増大する一途にある。主メモリの記憶容量が増えると、その分、主メモリの内容をハードディスクにセーブするのに要する時間、およびハードディスクの内容を主メモリにリストアするのに要する時間も増大する。このため、ハイバネーションモードを使用するシステムでは、ハイバネーション処理に要する時間、つまりユーザが電源スイッチをオフしてからシステムが実際にパワーオフされるまでに要する時間、およびユーザが電源スイッチをオンしてからシステム状態が復元されるまでに要する時間が非常に大きくなりつつある。
【００１０】
また、従来では、ハイバネーションのためのデータセーブおよびリストア時に行われるハードディスクとの間のデータ転送は、常にＰＩＯ（Ｐｒｏｇｒａｍ  Ｉ／Ｏ  ｔｒａｎｓｆｅｒ）モードによって行われていた。
【００１１】
すなわち、携帯型コンピュータでは、ハードディスクドライブの接続に使用されるインターフェイスとして、ＡＴＡ（Ｅｎｈａｎｃｅｄ  ＩＤＥ）が使用されている。このＥｎｈａｎｃｅｄ  ＩＤＥで用いられている典型的な転送モードが前述のＰＩＯモードである。ＡＴＡでは、ＰＩＯモード０〜４まで定義されており、それぞれ最大転送速度が異なっている。ＰＩＯモードでは、ＣＰＵとハードディスクドライブとのハンドシェイクを用いた転送モードであり、ＣＰＵが直接ハードディスクドライブのＩ／Ｏポートを繰り返しアクセスすることによってデータ転送を行う。よって、その転送速度は決して高速ではないが、シーク動作やスピンドルの回転といった機械的動作を必要とするハードディスクドライブ自体のデータ転送能力を考慮すると、この転送方式で十分であったのである。
【００１２】
しかし、最近では、ハードディスクの高密度化が急速に進み、これに伴ってハードディスク自体のデータ転送能力も大幅に向上しており、これまで主流であったＰＩＯモード４に加え、ＤＭＡモード、さらにはＵｌｔｒａＤＭＡモードに対応したハードディスクドライブも製品化され始めている。ハードディスクドライブはユーザによって交換可能である。このため、常にＰＩＯモードを使用してデータ転送を行うという従来のハイバネーション処理では、使用されているハードディスクドライブのタイプによってはその性能を十分に引き出すことが出来ないという問題が生じる。
【００１３】
【発明が解決しようする課題】
上述したように、従来では、ＤＭＡモードなどの高速転送モードをサポートしているハードディスクドライブであっても、ＰＩＯモードによる転送が行われてしまい、使用中のハードディスクドライブによっては、その性能を十分に発揮させることができないという問題があった。このため、特に、大容量のデータ転送を必要とするハイバネーション処理においては多くの時間を要し、ユーザが電源スイッチをオフしてからシステムが実際にパワーオフされるまでに要する時間、およびユーザが電源スイッチをオンしてからシステム状態が復元されるまでに要する時間が非常に大きくなってしまうという問題がある。
【００１４】
本発明は上述の事情に鑑みてなされたものであり、使用中のハードディスクドライブの性能に合ったデータ転送モードを用いてそのハードディスクドライブとの間のデータ転送を実行できるようにし、ハイバネーション処理の高速化を実現し得るコンピュータシステムおよび同システムで使用されるデータ転送制御方法を提供することを目的とする。
【００１５】
【課題を解決するための手段】
上述の課題を解決するため、本発明は、電源オフ状態への移行時にハイバネーション処理を実行するコンピュータシステムにおいて、本体と、前記本体に設けられたディスクドライブ装置と、前記本体の電源オフ要因の発生を検知する検知手段と、前記検知手段が電源オフ要因の発生を検知した場合、前記本体のシステム情報をメモリへ退避する処理と、前記ディスクドライブ装置から前記ディスクドライブ装置が対応しているデータ転送モードの情報を読み出して当該読み出された情報に基づいて前記ディスクドライブ装置が対応しているデータ転送モードの種類を判別することによって、ＤＭＡ転送モードとＰＩＯモードを含む複数の転送モードの中から、前記ハイバネーション処理で前記ディスクドライブ装置をアクセスするために使用する転送モードの種類を決定する処理とを実行する手段と、前記ＤＭＡ転送モードとＰＩＯモードを含む複数の転送モードの中から前記ハイバネーション処理で前記ディスクドライブ装置をアクセスするために使用する転送モードとして決定された転送モードを用いて前記ディスクドライブ装置に対するアクセスを実行することによって、前記メモリに退避された前記システム情報を前記ディスクドライブ装置へ転送する手段とを具備することを特徴とする。
【００１９】
このコンピュータシステムにおいては、ハイバネーション処理で使用する最適な転送モードを決定するために、データ転送処理に先だって、ディスクドライブ装置が対応しているデータ転送モードの種類が判別され、ＤＭＡ転送モードとＰＩＯモードを含む複数の転送モードの中から、ハイバネーション処理でディスクドライブ装置をアクセスするために使用する転送モードの種類が決定される。そして、ＤＭＡ転送モードとＰＩＯモードを含む複数の転送モードの中から前記ハイバネーション処理で使用する転送モードとして決定された転送モードを用いて、ディスクドライブ装置に対するアクセスを実行することにより、メモリに退避されたシステム情報がディスクドライブ装置に転送される。これにより、常にＰＩＯモードを用いる従来のハイバネーション処理に比し、ハイバネーション処理の高速化を実現することができる。
【００２３】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態を説明する。
図１には、本発明の一実施形態に係るコンピュータシステムの構成が示されている。このコンピュータシステムは、ノートブックタイプまたはサブノートタイプのポータブルパーソナルコンピュータであり、コンピュータ本体と、このコンピュータ本体に開閉自在に取り付けられたＬＣＤパネルユニットとから構成されている。このコンピュータは、内蔵バッテリを有しており、その内蔵バッテリからの電力によって動作可能に構成されている。また、ＡＣアダプタを介してＡＣ商用電源などの外部電源から電力供給を受けることもできる。外部電源から電力供給を受けているときは、その外部電源からの電力がコンピュータシステムの動作電源として用いられる。このとき、外部電源からの電力によって内蔵バッテリの充電も自動的に行われる。ＡＣアダプタが取り外されたり、あるいはＡＣ商用電源のブレーカが落とされたときなどは、内蔵バッテリからの電力がコンピュータシステムの動作電源として用いられる。
【００２４】
また、コンピュータ本体には、ＩＤＥインターフェイスを有するハードディスクドライブ（ＨＤＤ）１７が取り外し自在に装着されている。このＨＤＤ１７はコンピュータの二次記憶として使用されるものである。
【００２５】
また、このコンピュータのシステムボード上には、ＣＰＵ１１、ＣＰＵバス１とＰＣＩバス２間をつなぐホスト−ＰＣＩブリッジ１２、主メモリ１３、ＶＧＡコントローラ１４、ＰＣＩ−ＩＳＡブリッジ１５、バスマスタＩＤＥコントローラ１６、ＢＩＯＳ−ＲＯＭ１８、リアルタイムクロック（ＲＴＣ）１９、埋め込みコントローラ（ＥＣ）２０、電源コントローラ２１などが設けられている。
【００２６】
ＣＰＵ１１は、このシステム全体の動作制御およびデータ処理を実行する。このＣＰＵ１１としては、システム管理割り込みＳＭＩ（ＳＭＩ；Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｉｎｔｅｒｒｕｐｔ）をサポートするもの、例えば、米インテル社により製造販売されているマイクロプロセッサ“Ｐｅｎｔｉｕｍ”などが使用される。この場合、ＣＰＵ１１は、次のようなシステム管理機能を持つ。
【００２７】
すなわち、ＣＰＵ１１は、アプリケーションプログラムやオペレーティングシステム（ＯＳ）などのプログラムを実行するための動作モードとしてリアルモード、プロテクトモード、仮想８６モードを有する他、システム管理モード（ＳＭＭ；Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  ｍｏｄｅ）と称されるシステム管理機能を実現するための動作モードを有している。
【００２８】
リアルモードは、最大で１Ｍバイトのメモリ空間をアクセスできるモードであり、論理アドレスから物理アドレスへの変換は、セグメントレジスタで表されるベースアドレスからのオフセット値で物理アドレスを決定するアドレス計算形式によって行われる。
【００２９】
一方、プロテクトモードは１タスク当たり最大４Ｇバイトのメモリ空間をアクセスできるモードであり、ディスクプリタテーブルと称されるアドレスマッピングテーブルを用いてリニアアドレスが決定される。このリニアアドレスは、ページングによって最終的に物理アドレスに変換される。
【００３０】
このように、プロテクトモードとリアルモードとでは、互いに異なるメモリアドレッシングが採用されている。
システム管理モード（ＳＭＭ）は疑似リアルモードであり、このモードにおけるアドレス計算形式はリアルモードのアドレス計算形式と同一であり、ディスクプリタテーブルは参照されず、ページングも実行されない。しかし、ＳＭＭでは、プロテクトモードと同様に、１Ｍバイトを越えるメモリ空間をアクセスすることができる。
【００３１】
システム管理割込み（ＳＭＩ；Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｉｎｔｅｒｒｕｐｔ）がＣＰＵ１１に発行された時、ＣＰＵ１１の動作モードは、その時の動作モードであるリアルモード、プロテクトモード、または仮想８６モードから、ＳＭＭにスイッチされる。ＳＭＩによってＳＭＭにスイッチした時、ＣＰＵ１１はその時のＣＰＵレジスタの内容であるＣＰＵステータスを主メモリ１３上のオーバレイメモリであるＳＭＲＡＭにセーブする。また、ＳＭＭにおいて復帰命令（ＲＳＭ命令）が実行されると、ＣＰＵ１１はＳＭＲＡＭからＣＰＵレジスタにＣＰＵステータスをリストアし、ＳＭＩ発生前の動作モードに復帰する。本実施形態においては、ＳＭＭにおいて、ハイバネーション処理などを行うためのシステム管理プログラムが実行される。このハイバネーションルーチンは、システムステートをサスペンド状態またはハイバネーション状態に設定するためのものであり、システムステートをハイバネーション状態に設定する場合には、ＣＰＵ１１および各種周辺ＬＳＩのステート、主メモリ１３およびＶＲＡＭの内容などを、ＨＤＤ１７の記憶エリアに予め確保されているハイバネーションエリアにセーブした後にシステム全体をパワーオフする。
【００３２】
このハイバネーションルーチンは、システム電源オフに起因するＳＭＩ、つまり、電源スイッチ２２の押下、またはパネルスイッチ２３によるＬＣＤパネルユニットのクローズ検出、あるいはサスペンドボタン（スリープボタン）の押下などに起因して発生されるＳＭＩに応答して実行される。
【００３３】
ＳＭＩはマスク不能割込みＮＭＩの一種であるが、通常のＮＭＩやマスク可能割込みＩＮＴＲよりも優先度の高い、最優先度の割り込みである。このＳＭＩを発行することによって、システム管理プログラムを、実行中のアプリケーションプログラムやオペレーティングシステムの環境に依存せずに起動することができる。
【００３４】
ホスト−ＰＣＩブリッジ１２には、システム内のメモリおよびＩ／Ｏ全体の制御を行うための回路が内蔵されており、ここには、ＳＭＩ発生制御のためのハードウェアロジックも組み込まれている。このハードウェアロジックは、ハイバネーション処理を起動するためのＳＭＩ発生回路、ソフトウェアＳＭＩやＩ／ＯトラップＳＭＩなどの他の要因によるＳＭＩ発生回路、およびＳＭＩ発生要因を保持するステータスレジスタなどから構成される。
【００３５】
ＳＭＩ発生回路は、電源コントローラ２１およびＥＣ２０経由で電源スイッチ２２のオフ、サスペンドボタンの押下、またはパネル開閉検出スイッチ２３によるＬＣＤパネルクローズなどのイベントが通知された時、ハイバネーション処理を起動するためのＳＭＩ信号を発生する。また、ＳＭＩ発生回路からのＳＭＩ信号は、ハイバネーション状態からの復帰を指示するウェイクアップイベントの通知にも利用される。すなわち、電源スイッチ２２のオンやＬＣＤパネルオープンによるウェイクアップイベントが発生すると、ハイバネーション状態から動作状態への復帰処理が行われる。
【００３６】
主メモリ１３はこのシステムの主記憶つまりシステムメモリとして使用されるものであり、オペレーティングシステム、処理対象のアプリケーションプログラム、およびアプリケーションプログラムによって作成されたユーザデータ等が格納される。この主メモリ１３はＤＲＡＭなどの半導体メモリによって実現されている。前述のＳＭＲＡＭ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  ＲＡＭ）は、主メモリ１３を構成する物理メモリの一部に割り当てられた記憶空間であり、ＳＭＩ信号がＣＰＵ１１に入力された時だけメモリアドレスがマッピングされてアクセス可能となる。ここで、ＳＭＲＡＭがマッピングされるアドレス範囲は固定ではなく、ＳＭＢＡＳＥと称されるレジスタによって４Ｇバイト空間の任意の場所に変更することが可能である。ＳＭＢＡＳＥレジスタは、ＳＭＭ中でないとアクセスできない。
【００３７】
ＣＰＵ１１がＳＭＭに移行する時には、ＣＰＵステータス、つまりＳＭＩが発生された時のＣＰＵ１１のレジスタ等が、ＳＭＲＡＭにスタック形式でセーブされる。このＳＭＲＡＭには、ＢＩＯＳ−ＲＯＭ１８のシステム管理プログラムを呼び出すための命令が格納されている。この命令は、ＣＰＵ１１がＳＭＭに入った時に最初に実行される命令であり、この命令実行によってシステム管理プログラムに制御が移る。
【００３８】
ＢＩＯＳ−ＲＯＭ１８は、システムＢＩＯＳ（Ｂａｓｉｃ  Ｉ／Ｏ  Ｓｙｓｔｅｍ）を記憶するためのものであり、プログラム書き替えが可能なようにフラッシュメモリによって構成されている。システムＢＩＯＳは、このシステム内の各種ハードウェアをアクセスするためのファンクション実行ルーチンを体系化したものであり、リアルモードで動作するように構成されている。
【００３９】
このシステムＢＩＯＳには、システムのパワーオン時に実行されるＩＲＴルーチンと、各種ハードウェア制御のためのＢＩＯＳドライバ群などが含まれている。各ＢＩＯＳドライバは、ハードウェア制御のための複数の機能をオペレーティングシステムやアプリケーションプログラムに提供するためにそれら機能に対応する複数のファンクション実行ルーチン群を含んでいる。
【００４０】
また、ＢＩＯＳ−ＲＯＭ１８には、ＳＭＩハンドラおよび前述のハイバネーションルーチンなど、ＳＭＭの中で実行されるシステム管理プログラムも格納されている。ＳＭＩハンドラは、ＳＭＩの発生要因に応じて各種ＳＭＩサービスルーチンを起動するためのものであり、電源オフ操作に起因するＳＭＩが発生した場合は、ハイバネーションルーチンを起動し、他の要因によるＳＭＩが発生した場合にはその要因に対応するＳＭＩサービスルーチンを起動する。
【００４１】
ＨＤＤ１７の記憶エリアの一部にはハイバネーションエリアが確保されている。ハイバネーションエリアはＩＲＴによるＨＤＤ１７の初期化およびテスト時にシステムＢＩＯＳによって確保され、ハイバネーションエリアを除く他の記憶領域がＯＳに解放される。ハイバネーションエリアには、物理的に連続した領域が割り当てられる。
【００４２】
ＲＴＣ１９は時計モジュールであり、独自の電池によりバックアップされたＣＭＯＳメモリを有している。ＣＭＯＳメモリには、パワーアップモードを指定する情報などを含む各種システムコンフィグレーション情報が設定される。
【００４３】
ＥＣ２０は、システムが持つ付加機能を制御するためのコントローラであり、ＣＰＵ周辺温度などに応じてクーリングファンの回転制御などを行うための熱制御機能、システムの各種状態をＬＥＤの点灯やビープオンによってユーザに通知するためのＬＥＤ／ビープ音制御機能、電源コントローラ２１と共同してシステム電源のオン／オフなどを制御する電源シーケンス制御機能、および電源ステータス通知機能などを有している。電源ステータス通知機能は、電源コントローラ２１と共同してシステムＢＩＯＳのハイバネーション処理やレジューム処理の起動要因となるイベントの発生を監視し、イベント発生時にそれをＳＭＩなどを用いてシステムＢＩＯＳに通知するという機能である。ハイバネーション状態においても、ＥＣ２０および電源コントローラ２１には動作電源が供給されており、ＥＣ２０の各機能は有効である。
【００４４】
ＥＣ２０は、システムＢＩＯＳとの通信のためのＩ／Ｏポートを有している。システムＢＩＯＳは、このＩ／Ｏポートを介してＥＣ２０内のコンフィグレーションレジスタに対してリード／ライトを行うことにより、監視および通知すべきイベントの種類の設定や、発生したイベントを示すステータスのリードなどを行うことができる。ＥＣ２０と電源コントローラ２１間の通信はＩ2Ｃバスを介して行われる。
【００４５】
例えば、バッテリ残量変化があった場合など、電源コントローラ１９はＩ2Ｃバス経由でＥＣ１８のコンフィグレーションレジスタを直接書き換える。ＥＣ１８は、コンフィグレーションレジスタが書き換えられると、これをイベントとしてシステムＢＩＯＳに通知する。
【００４６】
ＶＧＡコントローラ１４は、このシステムのディスプレイモニタとして使用されるＬＣＤを制御するためのものであり、ＶＲＡＭに描画された画面データをＬＣＤパネルユニット内のＬＣＤに表示する。
【００４７】
バスマスタＩＤＥコントローラ１６は、コンピュータ本体に装着されたＩＤＥデバイス（ここでは、ＨＤＤ１７）を制御するためのものであり、ＩＤＥデバイスと主メモリ１３との間のＤＭＡ転送を実行可能なバスマスタ機能に対応している。このバスマスタ機能は、ＣＰＵ１１からのコマンドに応じて自らデータ転送のためのバスサイクルを実行するものであり、ＰＩＯモードよりもＣＰＵ負荷を低減した状態で、ＩＤＥデバイスと主メモリ１３との間のデータ転送を高速実行する事ができる。
【００４８】
本実施形態では、バスマスタ、つまりＤＭＡ転送モードに対応したハードディスクドライブが装着されている場合には、ハイバネーション処理のためのデータ転送はバスマスタ機能を用いることによりＤＭＡ転送モードによって実行される。また、ＤＭＡ転送モードに対応してないハードディスクドライブが装着されている場合には、そのハードディスクドライブがサポートしている転送モードの中で最も高速の転送モードが自動選択され、その転送モードにてデータ転送が行われる。ハードディスクドライブがどのような転送モードに対応しているかは、ハードディスクドライブからそれを示すパラメタ情報を読み出すことによって自動判別される。
【００４９】
次に、図２を参照して、ＳＭＩの発生からハイバネーションルーチンが起動されるまでの一連の動作を説明する。
システムの動作中にユーザによって電源スイッチ２２がオフされたり、またはユーザによってＬＣＤパネルユニットが閉じられたことがパネル開閉スイッチ２３によって検知されると、電源コントローラ２１は電源オフ要因が発生したことをＥＣ２０を介してＳＭＩ発生回路に通知する。この通知に応答して、ＳＭＩ発生回路からＳＭＩ信号が発生され、それがＣＰＵ１１に供給される。
【００５０】
ＣＰＵ１１にＳＭＩ信号が入力されると、ＣＰＵ１１は、その時の動作モードからＳＭＭにスイッチされる。ＳＭＭに入ると、ＣＰＵ１１は、まず、ＳＭＲＡＭに所定のメモリアドレスをマッピングする。これにより、ＳＭＲＡＭがアクセス可能となる。
【００５１】
ＳＭＲＡＭには、ＣＰＵステート格納エリア、ＣＰＵ以外の他のハードウェアに関するステータスを格納するハードウェアステータス（ＨＷステータス）格納エリアなどが設けられており、またＢＩＯＳ−ＲＯＭ１８のＳＭＩハンドラを割り込み先として指定するジャンプコードがセットされている。前述したように、ＢＩＯＳ−ＲＯＭ１８には、ＩＲＴルーチン、ＳＭＩハンドラ、ハイバネーションルーチン、レジュームルーチン、および複数のＢＩＯＳドライバ群を含むシステムＢＩＯＳが格納されている。
【００５２】
次いで、ＣＰＵ１１は、ＳＭＩが入力された時のＣＰＵ１１の各種レジスタの内容であるＣＰＵステータス（または、コンテキストと称される）をＳＭＲＡＭのＣＰＵステート格納エリアにスタック形式でセーブする。そして、ＣＰＵ１１は、ＳＭＭのスタートアドレスのコード、つまりＳＭＲＡＭにセットされているジャンプコードをフェッチし、そのジャンプコードで指定されるＢＩＯＳ−ＲＯＭ１８のＳＭＩハンドラを実行する。ここまでの処理は、ＣＰＵ１１自体つまりＣＰＵ１１のマイクロプログラムによって実行されるものである。
【００５３】
ジャンプコードの実行によって呼び出されたＳＭＩハンドラは、どのような要因でＳＭＩが発生されたかを決定するために、ＳＭＩ発生要因をチェックする。この処理では、前述のＳＭＩステータスレジスタにセットされているＳＭＩステータス情報が参照される。サスペンド開始要因となる電源オフなどに起因するＳＭＩであれば、ＳＭＩハンドラは、ＢＩＯＳ−ＲＯＭ１８のハイバネーションルーチンの実行をリクエストする。これにより、ハイバネーションルーチンがＳＭＭの中で実行され、ハイバネーション処理が開始される。
【００５４】
図３には、本実施形態のハイバネーション処理の方法が示されている。
電源スイッチオフ、パネルクローズ、サスペンドボタンの押下などが行われると、システムＢＩＯＳのハイバネーションルーチンが起動されて、システムサスペンドのために以下の処理が行われる。
【００５５】
すなわち、まず、ハイバネーションルーチンは、ＣＰＵ１１のレジスタや各種周辺ＬＳＩのステータスなどのシステムステータスなどを主メモリ１３にセーブする（ステップＳ１０１）。次いで、ＨＤＤ１７との間のデータ転送モードを決定するためのＨＤＤ転送モード決定処理が行われる（ステップＳ１０２）。このＨＤＤ転送モード決定処理では、最初に、ＨＤＤ１７からそこに保持されているドライブパラメタ情報が読み出され、ＨＤＤ１７がサポートしている転送モードの種類が判別される。そして、ＨＤＤ１７がサポートしている転送モードの中で、最も高速転送可能な最適な転送モードが選択される。具体的には、図４の処理により使用する転送モードが決定される。
【００５６】
図４に示されているように、まず、ドライブパラメータ情報に基づいて、ＨＤＤ１７がＲｅａｄ／Ｗｒｉｔｅ  Ｍｕｌｔｉｐｌｅコマンドをサポートしているかどうかを判断する（ステップＳ３０１）。Ｒｅａｄ／Ｗｒｉｔｅ  Ｍｕｌｔｉｐｌｅコマンドは複数セクタ分のリード／ライトをまとめて指定可能なコマンドであり、このＲｅａｄ／Ｗｒｉｔｅ  Ｍｕｌｔｉｐｌｅコマンドをサポートしていない場合は、ＨＤＤアクセスにはセクタ単位でリード／ライトを指定するＲｅａｄ／Ｗｒｉｔｅ  Ｓｅｃｔｏｒコマンドを用いたデータ転送モードが使用される。次に、先に読み出したＨＤＤドライブパラメータより、ＤＭＡをサポートしているかどうかを判断する（ステップＳ３０２）。サポートしていない場合は、ＨＤＤアクセスにはＲｅａｄ／Ｗｒｉｔｅ  Ｍｕｌｔｉｐｌｅコマンドを使用する。Ｒｅａｄ／Ｗｒｉｔｅ  Ｓｅｃｔｏｒコマンド、Ｒｅａｄ／Ｗｒｉｔｅ  ＭｕｌｔｉｐｌｅコマンドのどちらもＰＩＯモードで使用されるコマンドである。
【００５７】
次に、先に読み出したＨＤＤドライブパラメータより、Ｕｌｔｒａ  ＤＭＡをサポートしているかどうかを判断する（ステップＳ３０３）。サポートしていない場合は、ＨＤＤアクセスにはＤＭＡ  Ｒｅａｄ／Ｗｒｉｔｅコマンドを使用する。サポートしている場合は、Ｕｌｔｒａ  ＤＭＡ  Ｒｅａｄ／Ｗｒｉｔｅコマンドを使用する。このようにして、ＨＤＤアクセスに使用する転送モード、具体的にはコマンドの種類が決定される。なお、ＩＤＥコントローラがバスマスタ対応のものでない場合には、ステップＳ３０１だけ行えば良く、ステップＳ３０２，Ｓ３０３によるＤＭＡモードのサポートの有無およびサポートしているＤＭＡモードの検出処理は不要となる。
【００５８】
この後、ハイバネーションルーチンは、ＨＤＤへのデータセーブ処理と、コンピュータシステムに設けられた各種デバイスのパワーダウン処理などを並列実行する。これら処理はデバイス毎にそれぞれ用意された複数のサーブルーチンによって実行され、ハイバネーションルーチン内のメインルーチンはそれらサーブルーチンによるコマンド処理を切り替える処理を実行する。すなわち、各デバイスの制御処理ではコマンドが順次発行されるが、コマンド発行の度にＩ／Ｏ待ちが発生する。したがって、そのＩ／Ｏ待ちの間に別のデバイスに対するコマンド発行処理が行えるようにサーブルーチンの切り替えが行われる。
【００５９】
ここでは、ＨＤＤデータセーブ処理（ステップＳ２０１）、Ｉ／Ｏ制御処理１（ステップＳ２０２）、Ｉ／Ｏ制御処理２（ステップＳ２０３）、…Ｉ／Ｏ制御処理Ｎ（ステップＳ２０４）それぞれに対応してサブルーチンが用意されており、メインルーチンは、デバイス毎に用意されたカウンタ値（タイマ値）を用いて、次のコマンド処理に移行可能なデバイスに対応するサブルーチンを起動して次のコマンド処理を実行させる（ステップＳ１０３）。そして、ＨＤＤデータ転送処理を含む全ての処理が完了すると（ステップＳ１０４）、ＥＣ２０に対してシステムパワーオフを指示するコマンドが発行される（ステップＳ１０５）。これにより、ＥＣ２０および電源コントローラ２１を除く全てのデバイス（主メモリを含む）がパワーオフされ、システムステートはハイバネーション状態となる。
【００６０】
ＨＤＤデータセーブ処理を実行するサブルーチンとしては、図５のように、Ｒｅａｄ／Ｗｒｉｔｅ  Ｓｅｃｔｏｒコマンドを用いたデータ転送制御を行うＲｅａｄ／ＷｒｉｔｅＳｅｃｔｏｒ処理ルーチン＃１と、Ｒｅａｄ／Ｗｒｉｔｅ  Ｍｕｌｔｉｐｌｅコマンドを用いたデータ転送制御を行うＲｅａｄ／ＷｒｉｔｅＭｕｌｔｉｐｌｅ処理ルーチン＃２と、ＤＭＡ  Ｒｅａｄ／Ｗｒｉｔｅコマンドを用いたデータ転送制御を行うＤＭＡ  Ｒｅａｄ／Ｗｒｉｔｅ処理ルーチン＃３と、Ｕｌｔｒａ  ＤＭＡ  Ｒｅａｄ／Ｗｒｉｔｅコマンドを用いたデータ転送制御を行うＵｌｔｒａＤＭＡ処理ルーチン＃４とが用意されており、図３のステップＳ１０２で決定された転送モードに対応する処理ルーチンが呼び出されて実行される。
【００６１】
次に、図６および図７を参照して、デバイス毎に用意されたカウンタ値とシステムカウンタのカウンタ値との比較結果を用いて、ハイバネーションのための複数のデバイスの処理を並行して進める場合の動作について説明する。
【００６２】
図６はハイバネーションルーチンのメインルーチンとサブルーチンとの関係を示すフローチャートである。
ここでは、ハイバネーションルーチンは、メインルーチンと３つのサブルーチンＡ，Ｂ，Ｃから構成されている場合を想定する。サブルーチンＡは、例えばＶＧＡコントローラやＬＣＤなどのＩ／Ｏデバイス＃１をパワーダウンするためのものであり、メインルーチンからのサブルーチンコールに応答して起動される。サブルーチンＢは、ＨＤＤ１７にメモリデータをセーブするためのものであり、メインルーチンからのサブルーチンコールに応答して起動される。サブルーチンＣは、例えばＵＳＢやモデムなどの通信系のＩ／Ｏデバイス＃２のパワーダウン処理を行うものであり、メインルーチンからのサブルーチンコールに応答して起動される。
【００６３】
メインルーチンは、Ｉ／Ｏデバイス＃１、ＨＤＤ、およびＩ／Ｏデバイス＃２にそれぞれに対応して用意されたソフトウェアカウンタ（Ｉ／Ｏカウンタ１、ＨＤＤカウンタ、Ｉ／Ｏカウンタ２）のカウンタ値を順番にシステムカウンタによる現在のカウンタ値と比較することにより、次のコマンド処理に移行可能なデバイスを決定する。そして、そのデバイスに対応するのサブルーチンをコールする。
【００６４】
各ソフトウェアカウンタには、対応するデバイスが現在のコマンド処理の実行に要する時間、すなわち次のコマンド処理を開始可能な時間が設定される。各ソフトウェアカウンタに対するカウンタ値の設定は、そのソフトウェアカウンタに対応するデバイスを制御するサブルーチンによって実行される。サブルーチンが起動されるまでは、各ソフトウェアカウンタに対するカウンタ値は０、つまりいつでもコマンド処理を開始できる状態となっている。
【００６５】
まず、システムカレント値がＩ／Ｏカウンタ１の値以上であるか否かが調べられ（ステップＳ４０１）、システムカレント値がＩ／Ｏカウンタ１のカウンタ値以上であればサブルーチンＡがコールされ、一方システムカレント値がＩ／Ｏカウンタ１のカウンタ値よりも小さい場合にはＨＤＤカウンタ値のチェックに移行される。
【００６６】
電源投入直後においては、Ｉ／Ｏカウンタ１のカウンタ値は初期値０であるため、システムカレント値はＩ／Ｏカウンタ１のカウンタ値よりも大きい。従って、Ｉ／Ｏ制御処理１がサブルーチンＡによって実行される。
【００６７】
サブルーチンＡでは、まず、前回のサブルーチンＡで発行されたＩ／Ｏコマンドに対するコマンド処理のステータスチェックが行われた後、Ｉ／Ｏデバイス１のパワーダウンのための次のコマンドの発行が行われる。次いで、Ｉ／Ｏカウンタ１のカウンタ値の更新が行われる。
【００６８】
ここでは、「現在のシステムカレント値  ＋  ｎ  」がＩ／Ｏカウンタ１に設定される。「ｎ」は、今回発行したコマンドに対応する処理をＩ／Ｏデバイスが終了して次のコマンドを受付可能になるまでの最小時間（インターバル値）を示す。この時間は、コマンド毎にあらかじめ決められている。
【００６９】
Ｉ／Ｏカウンタ１のカウンタ値の更新が終わると、メインルーチンに復帰する。
メインルーチンにおいては、今度は、システムカレント値がＨＤＤカウンタ値以上であるか否かが調べられ（ステップＳ４０２）、システムカレント値がＨＤＤカウンタ値以上であればサブルーチンＢがコールされ、前回の転送コマンド処理のステータスチェック、次転送コマンドの発行、ＨＤＤカウンタの再設定などのＨＤＤデータ転送制御処理が行われる。
【００７０】
サブルーチンＢからメインルーチンに戻ると、今度は、システムカレント値がＩ／Ｏカウンタ２のカウンタ値以上であるか否かが調べられ（ステップＳ４０３）、システムカレント値がＩ／Ｏカウンタ２のカウンタ値であればサブルーチンＣがコールされ、前回のコマンド処理のステータスチェック、次コマンドの発行、Ｉ／Ｏカウンタ２のカウンタ値の再設定などの処理が行われる。
【００７１】
このようにして各デバイスのカウンタ値を利用することにより、各デバイス毎に次のコマンド処理に移行可能なタイミングが検知され、それに合わせて各デバイスに対する処理が進められる。
【００７２】
ＨＤＤ転送モードとして、ＤＭＡ  Ｒｅａｄ／ＷｒｉｔｅコマンドやＵｌｔｒａ  ＤＭＡ  Ｒｅａｄ／Ｗｒｉｔｅコマンドを使用したＤＭＡモードを使用した場合には、メモリ１３からＨＤＤ１７へのＤＭＡ転送自体の制御はバスマスタＩＤＥコントローラ１６によって行われるため、サブルーチンＢの各コマンド処理に要する時間が短くなり、その間にサーブルーチンＡ、Ｃなどによる他のＩ／Ｏデバイスのパワーダウン処理にＣＰＵ資源を割り当てることが出来、ハイバネーション処理全体の高速化を図ることができる。
【００７３】
以上のように、本実施形態においては、ユーザによる電源スイッチオフなどのイベントが発生すると、メモリ１３の内容をＨＤＤ１７にセーブする処理に先立って、ＨＤＤ１７が有するデータ転送モードの種類が自動判別され、そしてそのＨＤＤ１７が有するデータ転送モードの中で最適なデータ転送モードを用いて、メモリデータセーブのためのデータ転送が実行される。よって、使用中のＨＤＤ１７の性能に合ったデータ転送モードを用いてそのＨＤＤ１７との間のデータ転送を実行でき、ハイバネーション処理の高速化を実現できる。
【００７４】
なお、ハイバネーション処理状態からの復帰処理においても、同様の処理が行われ、最適な転送モードでＨＤＤ１７からメモリ１３へのデータ転送が実行される。また、システムＢＩＯＳ経由でＨＤＤアクセスを行う場合には、アプリケーションやＯＳからの通常のファイルアクセス時においても、最適な転送モードでＨＤＤ１７との間のデータ転送を行うことが可能となる。
【００７５】
【発明の効果】
以上説明したように、本発明によれば、使用中のハードディスクドライブの性能に合ったデータ転送モードを用いてそのハードディスクドライブとの間のデータ転送を実行できるようになり、使用中のハードディスクドライブの性能を最大限引き出すことが可能となる。特に、ＤＭＡモードを自動的に使用できるようにすることにより、ハイバネーション処理の高速化を実現できる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係るコンピュータシステムの構成を示すブロック図。
【図２】本実施形態におけるハイバネーションルーチン起動処理動作を説明するための図。
【図３】本実施形態におけるハイバネーション処理の手順を説明するフローチャート。
【図４】本実施形態のハイバネーション処理で実行されるＨＤＤ転送モード決定処理の手順を示すフローチャート。
【図５】本実施形態で使用されるハイバネーションルーチンに含まれるＨＤＤデータセーブ処理ルーチンの構成を示す図。
【図６】本実施形態で使用されるハイバネーションルーチンによる並列制御処理の一例を示すフローチャート。
【符号の説明】
１１…ＣＰＵ
１２…ホスト−ＰＣＩブリッジ
１３…主メモリ
１６…バスマスタＩＤＥコントローラ
１７…ＨＤＤ
１８…ＢＩＯＳ−ＲＯＭ
２０…ＥＣ
【図１】
0003961669.tif 000002
【図２】
0003961669.tif 000003
【図３】
0003961669.tif 000004
【図４】
0003961669.tif 000005
【図５】
0003961669.tif 000006
【図６】
0003961669.tif 000007