JP3961669B2 - コンピュータシステムおよびデータ転送制御方法 - Google Patents
コンピュータシステムおよびデータ転送制御方法 Download PDFInfo
- Publication number
- JP3961669B2 JP3961669B2 JP14585698A JP14585698A JP3961669B2 JP 3961669 B2 JP3961669 B2 JP 3961669B2 JP 14585698 A JP14585698 A JP 14585698A JP 14585698 A JP14585698 A JP 14585698A JP 3961669 B2 JP3961669 B2 JP 3961669B2
- Authority
- JP
- Japan
- Prior art keywords
- disk drive
- mode
- drive device
- hibernation
- transfer mode
- 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
Links
Images
Description
【0001】
【発明の属する技術分野】
本発明はコンピュータシステムおよび同システムで使用されるデータ転送制御方法に関し、特に電源オフ時にメモリの内容をハードディスク装置にセーブするハイバネーション機能を有するコンピュータシステムおよびそのハイバネーション機能の高速化のためのデータ転送制御方法に関する。
【0002】
【従来の技術】
近年、携帯可能なノートブックタイプまたはサブノートタイプのパーソナルコンピュータや、携帯情報端末などのポケットコンピュータが種々開発されている。
【0003】
この種のポータブルコンピュータは、バッテリ駆動可能な時間を延ばすために、コンピュータシステムの電力を節約するための種々のパワーセーブモード(スリープモード)が設けられている。サスペンドモードは、最も電力消費の少ないスリープモードの1つである。すなわち、コンピュータシステムがサスペンドモードの時は、オペレーティングシステムやユーザプログラムなどの再スタートに必要なシステムデータが記憶されている主メモリを除く、システム内の他のほとんどのデバイスはパワーオフされる。
【0004】
主メモリにセーブされるシステムデータは、コンピュータシステムがサスペンドモードに設定される直前のCPUのステータスおよび各種周辺LSIのステータスである。また、この主メモリには、オペレーティングシステムおよびアプリケーションプログラムの実行状態やそのアプリケーションプログラムによって作成されたユーザデータも記憶されている。主メモリにセーブされた情報は、サスペンドモード直前の作業状態の復元のために用いられる。
【0005】
システムデータのセーブは、システムBIOS(基本入出力プログラム)に組み込まれたサスペンドルーチンによって実行される。システムBIOSはオペレーティングシステムからの要求にしたがってシステム内のハードウェアを制御するためのものであり、システム内の各種ハードウェアデバイスを制御するデバイスドライバ群を含んでいる。システムBIOSのサスペンドルーチンは、システムの電源オフ時などに起動され、CPUのレジスタおよび各種周辺LSIのステータスをメモリにセーブした後、システムをパワーオフする。
【0006】
主メモリへの電源供給は、システムがパワーオフの期間中ずっとバッテリによって維持される。このため、システムのステータスおよびユーザデータは消失されることなく、サスペンド前の作業状態にシステムを高速に戻すことができる。
【0007】
ところが、もしシステムがサスペンドモード状態の時にバッテリの容量が低下してローバッテリ状態となると、主メモリ内のデータは消失される。この場合、サスペンド前の状態にシステムを戻すことができ無くなるばかりか、主メモリに展開されているユーザデータも消失されてしまう。
【0008】
そこで、最近では、サスペンドモードに代わる新たなスリープモードとして、ハイバネーションモードが使用され始めている。ハイバネーションモードは、システム電源オフ時にCPUおよび各種周辺LSIのステータス、および主メモリの内容などをハードディスクにセーブした後に主メモリを含むシステム内のほとんどすべてのデバイスをパワーダウンさせるモードであり、サスペンドモードよりも電力消費を低減できる。また、バッテリ容量が低下してもハードディスクにセーブした情報は消失されないので、システム状態をハイバネーションモード直前の状態に正常に復元することができる。したがって、ACアダプタを使用できない外出先での使用が多い携帯型コンピュータの多くは、ハイバネーションモードをスリープモードとして実装している。
【0009】
ところで、近年のオペレーティングシステムおよびアプリケーションプログラムの機能向上に伴い、携帯型コンピュータにおいても、その主メモリとして実装されるメモリ容量は増大する一途にある。主メモリの記憶容量が増えると、その分、主メモリの内容をハードディスクにセーブするのに要する時間、およびハードディスクの内容を主メモリにリストアするのに要する時間も増大する。このため、ハイバネーションモードを使用するシステムでは、ハイバネーション処理に要する時間、つまりユーザが電源スイッチをオフしてからシステムが実際にパワーオフされるまでに要する時間、およびユーザが電源スイッチをオンしてからシステム状態が復元されるまでに要する時間が非常に大きくなりつつある。
【0010】
また、従来では、ハイバネーションのためのデータセーブおよびリストア時に行われるハードディスクとの間のデータ転送は、常にPIO(Program I/O transfer)モードによって行われていた。
【0011】
すなわち、携帯型コンピュータでは、ハードディスクドライブの接続に使用されるインターフェイスとして、ATA(Enhanced IDE)が使用されている。このEnhanced IDEで用いられている典型的な転送モードが前述のPIOモードである。ATAでは、PIOモード0〜4まで定義されており、それぞれ最大転送速度が異なっている。PIOモードでは、CPUとハードディスクドライブとのハンドシェイクを用いた転送モードであり、CPUが直接ハードディスクドライブのI/Oポートを繰り返しアクセスすることによってデータ転送を行う。よって、その転送速度は決して高速ではないが、シーク動作やスピンドルの回転といった機械的動作を必要とするハードディスクドライブ自体のデータ転送能力を考慮すると、この転送方式で十分であったのである。
【0012】
しかし、最近では、ハードディスクの高密度化が急速に進み、これに伴ってハードディスク自体のデータ転送能力も大幅に向上しており、これまで主流であったPIOモード4に加え、DMAモード、さらにはUltraDMAモードに対応したハードディスクドライブも製品化され始めている。ハードディスクドライブはユーザによって交換可能である。このため、常にPIOモードを使用してデータ転送を行うという従来のハイバネーション処理では、使用されているハードディスクドライブのタイプによってはその性能を十分に引き出すことが出来ないという問題が生じる。
【0013】
【発明が解決しようする課題】
上述したように、従来では、DMAモードなどの高速転送モードをサポートしているハードディスクドライブであっても、PIOモードによる転送が行われてしまい、使用中のハードディスクドライブによっては、その性能を十分に発揮させることができないという問題があった。このため、特に、大容量のデータ転送を必要とするハイバネーション処理においては多くの時間を要し、ユーザが電源スイッチをオフしてからシステムが実際にパワーオフされるまでに要する時間、およびユーザが電源スイッチをオンしてからシステム状態が復元されるまでに要する時間が非常に大きくなってしまうという問題がある。
【0014】
本発明は上述の事情に鑑みてなされたものであり、使用中のハードディスクドライブの性能に合ったデータ転送モードを用いてそのハードディスクドライブとの間のデータ転送を実行できるようにし、ハイバネーション処理の高速化を実現し得るコンピュータシステムおよび同システムで使用されるデータ転送制御方法を提供することを目的とする。
【0015】
【課題を解決するための手段】
上述の課題を解決するため、本発明は、電源オフ状態への移行時にハイバネーション処理を実行するコンピュータシステムにおいて、本体と、前記本体に設けられたディスクドライブ装置と、前記本体の電源オフ要因の発生を検知する検知手段と、前記検知手段が電源オフ要因の発生を検知した場合、前記本体のシステム情報をメモリへ退避する処理と、前記ディスクドライブ装置から前記ディスクドライブ装置が対応しているデータ転送モードの情報を読み出して当該読み出された情報に基づいて前記ディスクドライブ装置が対応しているデータ転送モードの種類を判別することによって、DMA転送モードとPIOモードを含む複数の転送モードの中から、前記ハイバネーション処理で前記ディスクドライブ装置をアクセスするために使用する転送モードの種類を決定する処理とを実行する手段と、前記DMA転送モードとPIOモードを含む複数の転送モードの中から前記ハイバネーション処理で前記ディスクドライブ装置をアクセスするために使用する転送モードとして決定された転送モードを用いて前記ディスクドライブ装置に対するアクセスを実行することによって、前記メモリに退避された前記システム情報を前記ディスクドライブ装置へ転送する手段とを具備することを特徴とする。
【0019】
このコンピュータシステムにおいては、ハイバネーション処理で使用する最適な転送モードを決定するために、データ転送処理に先だって、ディスクドライブ装置が対応しているデータ転送モードの種類が判別され、DMA転送モードとPIOモードを含む複数の転送モードの中から、ハイバネーション処理でディスクドライブ装置をアクセスするために使用する転送モードの種類が決定される。そして、DMA転送モードとPIOモードを含む複数の転送モードの中から前記ハイバネーション処理で使用する転送モードとして決定された転送モードを用いて、ディスクドライブ装置に対するアクセスを実行することにより、メモリに退避されたシステム情報がディスクドライブ装置に転送される。これにより、常にPIOモードを用いる従来のハイバネーション処理に比し、ハイバネーション処理の高速化を実現することができる。
【0023】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態を説明する。
図1には、本発明の一実施形態に係るコンピュータシステムの構成が示されている。このコンピュータシステムは、ノートブックタイプまたはサブノートタイプのポータブルパーソナルコンピュータであり、コンピュータ本体と、このコンピュータ本体に開閉自在に取り付けられたLCDパネルユニットとから構成されている。このコンピュータは、内蔵バッテリを有しており、その内蔵バッテリからの電力によって動作可能に構成されている。また、ACアダプタを介してAC商用電源などの外部電源から電力供給を受けることもできる。外部電源から電力供給を受けているときは、その外部電源からの電力がコンピュータシステムの動作電源として用いられる。このとき、外部電源からの電力によって内蔵バッテリの充電も自動的に行われる。ACアダプタが取り外されたり、あるいはAC商用電源のブレーカが落とされたときなどは、内蔵バッテリからの電力がコンピュータシステムの動作電源として用いられる。
【0024】
また、コンピュータ本体には、IDEインターフェイスを有するハードディスクドライブ(HDD)17が取り外し自在に装着されている。このHDD17はコンピュータの二次記憶として使用されるものである。
【0025】
また、このコンピュータのシステムボード上には、CPU11、CPUバス1とPCIバス2間をつなぐホスト−PCIブリッジ12、主メモリ13、VGAコントローラ14、PCI−ISAブリッジ15、バスマスタIDEコントローラ16、BIOS−ROM18、リアルタイムクロック(RTC)19、埋め込みコントローラ(EC)20、電源コントローラ21などが設けられている。
【0026】
CPU11は、このシステム全体の動作制御およびデータ処理を実行する。このCPU11としては、システム管理割り込みSMI(SMI;System Management Interrupt)をサポートするもの、例えば、米インテル社により製造販売されているマイクロプロセッサ“Pentium”などが使用される。この場合、CPU11は、次のようなシステム管理機能を持つ。
【0027】
すなわち、CPU11は、アプリケーションプログラムやオペレーティングシステム(OS)などのプログラムを実行するための動作モードとしてリアルモード、プロテクトモード、仮想86モードを有する他、システム管理モード(SMM;System Management mode)と称されるシステム管理機能を実現するための動作モードを有している。
【0028】
リアルモードは、最大で1Mバイトのメモリ空間をアクセスできるモードであり、論理アドレスから物理アドレスへの変換は、セグメントレジスタで表されるベースアドレスからのオフセット値で物理アドレスを決定するアドレス計算形式によって行われる。
【0029】
一方、プロテクトモードは1タスク当たり最大4Gバイトのメモリ空間をアクセスできるモードであり、ディスクプリタテーブルと称されるアドレスマッピングテーブルを用いてリニアアドレスが決定される。このリニアアドレスは、ページングによって最終的に物理アドレスに変換される。
【0030】
このように、プロテクトモードとリアルモードとでは、互いに異なるメモリアドレッシングが採用されている。
システム管理モード(SMM)は疑似リアルモードであり、このモードにおけるアドレス計算形式はリアルモードのアドレス計算形式と同一であり、ディスクプリタテーブルは参照されず、ページングも実行されない。しかし、SMMでは、プロテクトモードと同様に、1Mバイトを越えるメモリ空間をアクセスすることができる。
【0031】
システム管理割込み(SMI;System Management Interrupt)がCPU11に発行された時、CPU11の動作モードは、その時の動作モードであるリアルモード、プロテクトモード、または仮想86モードから、SMMにスイッチされる。SMIによってSMMにスイッチした時、CPU11はその時のCPUレジスタの内容であるCPUステータスを主メモリ13上のオーバレイメモリであるSMRAMにセーブする。また、SMMにおいて復帰命令(RSM命令)が実行されると、CPU11はSMRAMからCPUレジスタにCPUステータスをリストアし、SMI発生前の動作モードに復帰する。本実施形態においては、SMMにおいて、ハイバネーション処理などを行うためのシステム管理プログラムが実行される。このハイバネーションルーチンは、システムステートをサスペンド状態またはハイバネーション状態に設定するためのものであり、システムステートをハイバネーション状態に設定する場合には、CPU11および各種周辺LSIのステート、主メモリ13およびVRAMの内容などを、HDD17の記憶エリアに予め確保されているハイバネーションエリアにセーブした後にシステム全体をパワーオフする。
【0032】
このハイバネーションルーチンは、システム電源オフに起因するSMI、つまり、電源スイッチ22の押下、またはパネルスイッチ23によるLCDパネルユニットのクローズ検出、あるいはサスペンドボタン(スリープボタン)の押下などに起因して発生されるSMIに応答して実行される。
【0033】
SMIはマスク不能割込みNMIの一種であるが、通常のNMIやマスク可能割込みINTRよりも優先度の高い、最優先度の割り込みである。このSMIを発行することによって、システム管理プログラムを、実行中のアプリケーションプログラムやオペレーティングシステムの環境に依存せずに起動することができる。
【0034】
ホスト−PCIブリッジ12には、システム内のメモリおよびI/O全体の制御を行うための回路が内蔵されており、ここには、SMI発生制御のためのハードウェアロジックも組み込まれている。このハードウェアロジックは、ハイバネーション処理を起動するためのSMI発生回路、ソフトウェアSMIやI/OトラップSMIなどの他の要因によるSMI発生回路、およびSMI発生要因を保持するステータスレジスタなどから構成される。
【0035】
SMI発生回路は、電源コントローラ21およびEC20経由で電源スイッチ22のオフ、サスペンドボタンの押下、またはパネル開閉検出スイッチ23によるLCDパネルクローズなどのイベントが通知された時、ハイバネーション処理を起動するためのSMI信号を発生する。また、SMI発生回路からのSMI信号は、ハイバネーション状態からの復帰を指示するウェイクアップイベントの通知にも利用される。すなわち、電源スイッチ22のオンやLCDパネルオープンによるウェイクアップイベントが発生すると、ハイバネーション状態から動作状態への復帰処理が行われる。
【0036】
主メモリ13はこのシステムの主記憶つまりシステムメモリとして使用されるものであり、オペレーティングシステム、処理対象のアプリケーションプログラム、およびアプリケーションプログラムによって作成されたユーザデータ等が格納される。この主メモリ13はDRAMなどの半導体メモリによって実現されている。前述のSMRAM(System Management RAM)は、主メモリ13を構成する物理メモリの一部に割り当てられた記憶空間であり、SMI信号がCPU11に入力された時だけメモリアドレスがマッピングされてアクセス可能となる。ここで、SMRAMがマッピングされるアドレス範囲は固定ではなく、SMBASEと称されるレジスタによって4Gバイト空間の任意の場所に変更することが可能である。SMBASEレジスタは、SMM中でないとアクセスできない。
【0037】
CPU11がSMMに移行する時には、CPUステータス、つまりSMIが発生された時のCPU11のレジスタ等が、SMRAMにスタック形式でセーブされる。このSMRAMには、BIOS−ROM18のシステム管理プログラムを呼び出すための命令が格納されている。この命令は、CPU11がSMMに入った時に最初に実行される命令であり、この命令実行によってシステム管理プログラムに制御が移る。
【0038】
BIOS−ROM18は、システムBIOS(Basic I/O System)を記憶するためのものであり、プログラム書き替えが可能なようにフラッシュメモリによって構成されている。システムBIOSは、このシステム内の各種ハードウェアをアクセスするためのファンクション実行ルーチンを体系化したものであり、リアルモードで動作するように構成されている。
【0039】
このシステムBIOSには、システムのパワーオン時に実行されるIRTルーチンと、各種ハードウェア制御のためのBIOSドライバ群などが含まれている。各BIOSドライバは、ハードウェア制御のための複数の機能をオペレーティングシステムやアプリケーションプログラムに提供するためにそれら機能に対応する複数のファンクション実行ルーチン群を含んでいる。
【0040】
また、BIOS−ROM18には、SMIハンドラおよび前述のハイバネーションルーチンなど、SMMの中で実行されるシステム管理プログラムも格納されている。SMIハンドラは、SMIの発生要因に応じて各種SMIサービスルーチンを起動するためのものであり、電源オフ操作に起因するSMIが発生した場合は、ハイバネーションルーチンを起動し、他の要因によるSMIが発生した場合にはその要因に対応するSMIサービスルーチンを起動する。
【0041】
HDD17の記憶エリアの一部にはハイバネーションエリアが確保されている。ハイバネーションエリアはIRTによるHDD17の初期化およびテスト時にシステムBIOSによって確保され、ハイバネーションエリアを除く他の記憶領域がOSに解放される。ハイバネーションエリアには、物理的に連続した領域が割り当てられる。
【0042】
RTC19は時計モジュールであり、独自の電池によりバックアップされたCMOSメモリを有している。CMOSメモリには、パワーアップモードを指定する情報などを含む各種システムコンフィグレーション情報が設定される。
【0043】
EC20は、システムが持つ付加機能を制御するためのコントローラであり、CPU周辺温度などに応じてクーリングファンの回転制御などを行うための熱制御機能、システムの各種状態をLEDの点灯やビープオンによってユーザに通知するためのLED/ビープ音制御機能、電源コントローラ21と共同してシステム電源のオン/オフなどを制御する電源シーケンス制御機能、および電源ステータス通知機能などを有している。電源ステータス通知機能は、電源コントローラ21と共同してシステムBIOSのハイバネーション処理やレジューム処理の起動要因となるイベントの発生を監視し、イベント発生時にそれをSMIなどを用いてシステムBIOSに通知するという機能である。ハイバネーション状態においても、EC20および電源コントローラ21には動作電源が供給されており、EC20の各機能は有効である。
【0044】
EC20は、システムBIOSとの通信のためのI/Oポートを有している。システムBIOSは、このI/Oポートを介してEC20内のコンフィグレーションレジスタに対してリード/ライトを行うことにより、監視および通知すべきイベントの種類の設定や、発生したイベントを示すステータスのリードなどを行うことができる。EC20と電源コントローラ21間の通信はI2Cバスを介して行われる。
【0045】
例えば、バッテリ残量変化があった場合など、電源コントローラ19はI2Cバス経由でEC18のコンフィグレーションレジスタを直接書き換える。EC18は、コンフィグレーションレジスタが書き換えられると、これをイベントとしてシステムBIOSに通知する。
【0046】
VGAコントローラ14は、このシステムのディスプレイモニタとして使用されるLCDを制御するためのものであり、VRAMに描画された画面データをLCDパネルユニット内のLCDに表示する。
【0047】
バスマスタIDEコントローラ16は、コンピュータ本体に装着されたIDEデバイス(ここでは、HDD17)を制御するためのものであり、IDEデバイスと主メモリ13との間のDMA転送を実行可能なバスマスタ機能に対応している。このバスマスタ機能は、CPU11からのコマンドに応じて自らデータ転送のためのバスサイクルを実行するものであり、PIOモードよりもCPU負荷を低減した状態で、IDEデバイスと主メモリ13との間のデータ転送を高速実行する事ができる。
【0048】
本実施形態では、バスマスタ、つまりDMA転送モードに対応したハードディスクドライブが装着されている場合には、ハイバネーション処理のためのデータ転送はバスマスタ機能を用いることによりDMA転送モードによって実行される。また、DMA転送モードに対応してないハードディスクドライブが装着されている場合には、そのハードディスクドライブがサポートしている転送モードの中で最も高速の転送モードが自動選択され、その転送モードにてデータ転送が行われる。ハードディスクドライブがどのような転送モードに対応しているかは、ハードディスクドライブからそれを示すパラメタ情報を読み出すことによって自動判別される。
【0049】
次に、図2を参照して、SMIの発生からハイバネーションルーチンが起動されるまでの一連の動作を説明する。
システムの動作中にユーザによって電源スイッチ22がオフされたり、またはユーザによってLCDパネルユニットが閉じられたことがパネル開閉スイッチ23によって検知されると、電源コントローラ21は電源オフ要因が発生したことをEC20を介してSMI発生回路に通知する。この通知に応答して、SMI発生回路からSMI信号が発生され、それがCPU11に供給される。
【0050】
CPU11にSMI信号が入力されると、CPU11は、その時の動作モードからSMMにスイッチされる。SMMに入ると、CPU11は、まず、SMRAMに所定のメモリアドレスをマッピングする。これにより、SMRAMがアクセス可能となる。
【0051】
SMRAMには、CPUステート格納エリア、CPU以外の他のハードウェアに関するステータスを格納するハードウェアステータス(HWステータス)格納エリアなどが設けられており、またBIOS−ROM18のSMIハンドラを割り込み先として指定するジャンプコードがセットされている。前述したように、BIOS−ROM18には、IRTルーチン、SMIハンドラ、ハイバネーションルーチン、レジュームルーチン、および複数のBIOSドライバ群を含むシステムBIOSが格納されている。
【0052】
次いで、CPU11は、SMIが入力された時のCPU11の各種レジスタの内容であるCPUステータス(または、コンテキストと称される)をSMRAMのCPUステート格納エリアにスタック形式でセーブする。そして、CPU11は、SMMのスタートアドレスのコード、つまりSMRAMにセットされているジャンプコードをフェッチし、そのジャンプコードで指定されるBIOS−ROM18のSMIハンドラを実行する。ここまでの処理は、CPU11自体つまりCPU11のマイクロプログラムによって実行されるものである。
【0053】
ジャンプコードの実行によって呼び出されたSMIハンドラは、どのような要因でSMIが発生されたかを決定するために、SMI発生要因をチェックする。この処理では、前述のSMIステータスレジスタにセットされているSMIステータス情報が参照される。サスペンド開始要因となる電源オフなどに起因するSMIであれば、SMIハンドラは、BIOS−ROM18のハイバネーションルーチンの実行をリクエストする。これにより、ハイバネーションルーチンがSMMの中で実行され、ハイバネーション処理が開始される。
【0054】
図3には、本実施形態のハイバネーション処理の方法が示されている。
電源スイッチオフ、パネルクローズ、サスペンドボタンの押下などが行われると、システムBIOSのハイバネーションルーチンが起動されて、システムサスペンドのために以下の処理が行われる。
【0055】
すなわち、まず、ハイバネーションルーチンは、CPU11のレジスタや各種周辺LSIのステータスなどのシステムステータスなどを主メモリ13にセーブする(ステップS101)。次いで、HDD17との間のデータ転送モードを決定するためのHDD転送モード決定処理が行われる(ステップS102)。このHDD転送モード決定処理では、最初に、HDD17からそこに保持されているドライブパラメタ情報が読み出され、HDD17がサポートしている転送モードの種類が判別される。そして、HDD17がサポートしている転送モードの中で、最も高速転送可能な最適な転送モードが選択される。具体的には、図4の処理により使用する転送モードが決定される。
【0056】
図4に示されているように、まず、ドライブパラメータ情報に基づいて、HDD17がRead/Write Multipleコマンドをサポートしているかどうかを判断する(ステップS301)。Read/Write Multipleコマンドは複数セクタ分のリード/ライトをまとめて指定可能なコマンドであり、このRead/Write Multipleコマンドをサポートしていない場合は、HDDアクセスにはセクタ単位でリード/ライトを指定するRead/Write Sectorコマンドを用いたデータ転送モードが使用される。次に、先に読み出したHDDドライブパラメータより、DMAをサポートしているかどうかを判断する(ステップS302)。サポートしていない場合は、HDDアクセスにはRead/Write Multipleコマンドを使用する。Read/Write Sectorコマンド、Read/Write MultipleコマンドのどちらもPIOモードで使用されるコマンドである。
【0057】
次に、先に読み出したHDDドライブパラメータより、Ultra DMAをサポートしているかどうかを判断する(ステップS303)。サポートしていない場合は、HDDアクセスにはDMA Read/Writeコマンドを使用する。サポートしている場合は、Ultra DMA Read/Writeコマンドを使用する。このようにして、HDDアクセスに使用する転送モード、具体的にはコマンドの種類が決定される。なお、IDEコントローラがバスマスタ対応のものでない場合には、ステップS301だけ行えば良く、ステップS302,S303によるDMAモードのサポートの有無およびサポートしているDMAモードの検出処理は不要となる。
【0058】
この後、ハイバネーションルーチンは、HDDへのデータセーブ処理と、コンピュータシステムに設けられた各種デバイスのパワーダウン処理などを並列実行する。これら処理はデバイス毎にそれぞれ用意された複数のサーブルーチンによって実行され、ハイバネーションルーチン内のメインルーチンはそれらサーブルーチンによるコマンド処理を切り替える処理を実行する。すなわち、各デバイスの制御処理ではコマンドが順次発行されるが、コマンド発行の度にI/O待ちが発生する。したがって、そのI/O待ちの間に別のデバイスに対するコマンド発行処理が行えるようにサーブルーチンの切り替えが行われる。
【0059】
ここでは、HDDデータセーブ処理(ステップS201)、I/O制御処理1(ステップS202)、I/O制御処理2(ステップS203)、…I/O制御処理N(ステップS204)それぞれに対応してサブルーチンが用意されており、メインルーチンは、デバイス毎に用意されたカウンタ値(タイマ値)を用いて、次のコマンド処理に移行可能なデバイスに対応するサブルーチンを起動して次のコマンド処理を実行させる(ステップS103)。そして、HDDデータ転送処理を含む全ての処理が完了すると(ステップS104)、EC20に対してシステムパワーオフを指示するコマンドが発行される(ステップS105)。これにより、EC20および電源コントローラ21を除く全てのデバイス(主メモリを含む)がパワーオフされ、システムステートはハイバネーション状態となる。
【0060】
HDDデータセーブ処理を実行するサブルーチンとしては、図5のように、Read/Write Sectorコマンドを用いたデータ転送制御を行うRead/WriteSector処理ルーチン#1と、Read/Write Multipleコマンドを用いたデータ転送制御を行うRead/WriteMultiple処理ルーチン#2と、DMA Read/Writeコマンドを用いたデータ転送制御を行うDMA Read/Write処理ルーチン#3と、Ultra DMA Read/Writeコマンドを用いたデータ転送制御を行うUltraDMA処理ルーチン#4とが用意されており、図3のステップS102で決定された転送モードに対応する処理ルーチンが呼び出されて実行される。
【0061】
次に、図6および図7を参照して、デバイス毎に用意されたカウンタ値とシステムカウンタのカウンタ値との比較結果を用いて、ハイバネーションのための複数のデバイスの処理を並行して進める場合の動作について説明する。
【0062】
図6はハイバネーションルーチンのメインルーチンとサブルーチンとの関係を示すフローチャートである。
ここでは、ハイバネーションルーチンは、メインルーチンと3つのサブルーチンA,B,Cから構成されている場合を想定する。サブルーチンAは、例えばVGAコントローラやLCDなどのI/Oデバイス#1をパワーダウンするためのものであり、メインルーチンからのサブルーチンコールに応答して起動される。サブルーチンBは、HDD17にメモリデータをセーブするためのものであり、メインルーチンからのサブルーチンコールに応答して起動される。サブルーチンCは、例えばUSBやモデムなどの通信系のI/Oデバイス#2のパワーダウン処理を行うものであり、メインルーチンからのサブルーチンコールに応答して起動される。
【0063】
メインルーチンは、I/Oデバイス#1、HDD、およびI/Oデバイス#2にそれぞれに対応して用意されたソフトウェアカウンタ(I/Oカウンタ1、HDDカウンタ、I/Oカウンタ2)のカウンタ値を順番にシステムカウンタによる現在のカウンタ値と比較することにより、次のコマンド処理に移行可能なデバイスを決定する。そして、そのデバイスに対応するのサブルーチンをコールする。
【0064】
各ソフトウェアカウンタには、対応するデバイスが現在のコマンド処理の実行に要する時間、すなわち次のコマンド処理を開始可能な時間が設定される。各ソフトウェアカウンタに対するカウンタ値の設定は、そのソフトウェアカウンタに対応するデバイスを制御するサブルーチンによって実行される。サブルーチンが起動されるまでは、各ソフトウェアカウンタに対するカウンタ値は0、つまりいつでもコマンド処理を開始できる状態となっている。
【0065】
まず、システムカレント値がI/Oカウンタ1の値以上であるか否かが調べられ(ステップS401)、システムカレント値がI/Oカウンタ1のカウンタ値以上であればサブルーチンAがコールされ、一方システムカレント値がI/Oカウンタ1のカウンタ値よりも小さい場合にはHDDカウンタ値のチェックに移行される。
【0066】
電源投入直後においては、I/Oカウンタ1のカウンタ値は初期値0であるため、システムカレント値はI/Oカウンタ1のカウンタ値よりも大きい。従って、I/O制御処理1がサブルーチンAによって実行される。
【0067】
サブルーチンAでは、まず、前回のサブルーチンAで発行されたI/Oコマンドに対するコマンド処理のステータスチェックが行われた後、I/Oデバイス1のパワーダウンのための次のコマンドの発行が行われる。次いで、I/Oカウンタ1のカウンタ値の更新が行われる。
【0068】
ここでは、「現在のシステムカレント値 + n 」がI/Oカウンタ1に設定される。「n」は、今回発行したコマンドに対応する処理をI/Oデバイスが終了して次のコマンドを受付可能になるまでの最小時間(インターバル値)を示す。この時間は、コマンド毎にあらかじめ決められている。
【0069】
I/Oカウンタ1のカウンタ値の更新が終わると、メインルーチンに復帰する。
メインルーチンにおいては、今度は、システムカレント値がHDDカウンタ値以上であるか否かが調べられ(ステップS402)、システムカレント値がHDDカウンタ値以上であればサブルーチンBがコールされ、前回の転送コマンド処理のステータスチェック、次転送コマンドの発行、HDDカウンタの再設定などのHDDデータ転送制御処理が行われる。
【0070】
サブルーチンBからメインルーチンに戻ると、今度は、システムカレント値がI/Oカウンタ2のカウンタ値以上であるか否かが調べられ(ステップS403)、システムカレント値がI/Oカウンタ2のカウンタ値であればサブルーチンCがコールされ、前回のコマンド処理のステータスチェック、次コマンドの発行、I/Oカウンタ2のカウンタ値の再設定などの処理が行われる。
【0071】
このようにして各デバイスのカウンタ値を利用することにより、各デバイス毎に次のコマンド処理に移行可能なタイミングが検知され、それに合わせて各デバイスに対する処理が進められる。
【0072】
HDD転送モードとして、DMA Read/WriteコマンドやUltra DMA Read/Writeコマンドを使用したDMAモードを使用した場合には、メモリ13からHDD17へのDMA転送自体の制御はバスマスタIDEコントローラ16によって行われるため、サブルーチンBの各コマンド処理に要する時間が短くなり、その間にサーブルーチンA、Cなどによる他のI/Oデバイスのパワーダウン処理にCPU資源を割り当てることが出来、ハイバネーション処理全体の高速化を図ることができる。
【0073】
以上のように、本実施形態においては、ユーザによる電源スイッチオフなどのイベントが発生すると、メモリ13の内容をHDD17にセーブする処理に先立って、HDD17が有するデータ転送モードの種類が自動判別され、そしてそのHDD17が有するデータ転送モードの中で最適なデータ転送モードを用いて、メモリデータセーブのためのデータ転送が実行される。よって、使用中のHDD17の性能に合ったデータ転送モードを用いてそのHDD17との間のデータ転送を実行でき、ハイバネーション処理の高速化を実現できる。
【0074】
なお、ハイバネーション処理状態からの復帰処理においても、同様の処理が行われ、最適な転送モードでHDD17からメモリ13へのデータ転送が実行される。また、システムBIOS経由でHDDアクセスを行う場合には、アプリケーションやOSからの通常のファイルアクセス時においても、最適な転送モードでHDD17との間のデータ転送を行うことが可能となる。
【0075】
【発明の効果】
以上説明したように、本発明によれば、使用中のハードディスクドライブの性能に合ったデータ転送モードを用いてそのハードディスクドライブとの間のデータ転送を実行できるようになり、使用中のハードディスクドライブの性能を最大限引き出すことが可能となる。特に、DMAモードを自動的に使用できるようにすることにより、ハイバネーション処理の高速化を実現できる。
【図面の簡単な説明】
【図1】本発明の一実施形態に係るコンピュータシステムの構成を示すブロック図。
【図2】本実施形態におけるハイバネーションルーチン起動処理動作を説明するための図。
【図3】本実施形態におけるハイバネーション処理の手順を説明するフローチャート。
【図4】本実施形態のハイバネーション処理で実行されるHDD転送モード決定処理の手順を示すフローチャート。
【図5】本実施形態で使用されるハイバネーションルーチンに含まれるHDDデータセーブ処理ルーチンの構成を示す図。
【図6】本実施形態で使用されるハイバネーションルーチンによる並列制御処理の一例を示すフローチャート。
【符号の説明】
11…CPU
12…ホスト−PCIブリッジ
13…主メモリ
16…バスマスタIDEコントローラ
17…HDD
18…BIOS−ROM
20…EC
【発明の属する技術分野】
本発明はコンピュータシステムおよび同システムで使用されるデータ転送制御方法に関し、特に電源オフ時にメモリの内容をハードディスク装置にセーブするハイバネーション機能を有するコンピュータシステムおよびそのハイバネーション機能の高速化のためのデータ転送制御方法に関する。
【0002】
【従来の技術】
近年、携帯可能なノートブックタイプまたはサブノートタイプのパーソナルコンピュータや、携帯情報端末などのポケットコンピュータが種々開発されている。
【0003】
この種のポータブルコンピュータは、バッテリ駆動可能な時間を延ばすために、コンピュータシステムの電力を節約するための種々のパワーセーブモード(スリープモード)が設けられている。サスペンドモードは、最も電力消費の少ないスリープモードの1つである。すなわち、コンピュータシステムがサスペンドモードの時は、オペレーティングシステムやユーザプログラムなどの再スタートに必要なシステムデータが記憶されている主メモリを除く、システム内の他のほとんどのデバイスはパワーオフされる。
【0004】
主メモリにセーブされるシステムデータは、コンピュータシステムがサスペンドモードに設定される直前のCPUのステータスおよび各種周辺LSIのステータスである。また、この主メモリには、オペレーティングシステムおよびアプリケーションプログラムの実行状態やそのアプリケーションプログラムによって作成されたユーザデータも記憶されている。主メモリにセーブされた情報は、サスペンドモード直前の作業状態の復元のために用いられる。
【0005】
システムデータのセーブは、システムBIOS(基本入出力プログラム)に組み込まれたサスペンドルーチンによって実行される。システムBIOSはオペレーティングシステムからの要求にしたがってシステム内のハードウェアを制御するためのものであり、システム内の各種ハードウェアデバイスを制御するデバイスドライバ群を含んでいる。システムBIOSのサスペンドルーチンは、システムの電源オフ時などに起動され、CPUのレジスタおよび各種周辺LSIのステータスをメモリにセーブした後、システムをパワーオフする。
【0006】
主メモリへの電源供給は、システムがパワーオフの期間中ずっとバッテリによって維持される。このため、システムのステータスおよびユーザデータは消失されることなく、サスペンド前の作業状態にシステムを高速に戻すことができる。
【0007】
ところが、もしシステムがサスペンドモード状態の時にバッテリの容量が低下してローバッテリ状態となると、主メモリ内のデータは消失される。この場合、サスペンド前の状態にシステムを戻すことができ無くなるばかりか、主メモリに展開されているユーザデータも消失されてしまう。
【0008】
そこで、最近では、サスペンドモードに代わる新たなスリープモードとして、ハイバネーションモードが使用され始めている。ハイバネーションモードは、システム電源オフ時にCPUおよび各種周辺LSIのステータス、および主メモリの内容などをハードディスクにセーブした後に主メモリを含むシステム内のほとんどすべてのデバイスをパワーダウンさせるモードであり、サスペンドモードよりも電力消費を低減できる。また、バッテリ容量が低下してもハードディスクにセーブした情報は消失されないので、システム状態をハイバネーションモード直前の状態に正常に復元することができる。したがって、ACアダプタを使用できない外出先での使用が多い携帯型コンピュータの多くは、ハイバネーションモードをスリープモードとして実装している。
【0009】
ところで、近年のオペレーティングシステムおよびアプリケーションプログラムの機能向上に伴い、携帯型コンピュータにおいても、その主メモリとして実装されるメモリ容量は増大する一途にある。主メモリの記憶容量が増えると、その分、主メモリの内容をハードディスクにセーブするのに要する時間、およびハードディスクの内容を主メモリにリストアするのに要する時間も増大する。このため、ハイバネーションモードを使用するシステムでは、ハイバネーション処理に要する時間、つまりユーザが電源スイッチをオフしてからシステムが実際にパワーオフされるまでに要する時間、およびユーザが電源スイッチをオンしてからシステム状態が復元されるまでに要する時間が非常に大きくなりつつある。
【0010】
また、従来では、ハイバネーションのためのデータセーブおよびリストア時に行われるハードディスクとの間のデータ転送は、常にPIO(Program I/O transfer)モードによって行われていた。
【0011】
すなわち、携帯型コンピュータでは、ハードディスクドライブの接続に使用されるインターフェイスとして、ATA(Enhanced IDE)が使用されている。このEnhanced IDEで用いられている典型的な転送モードが前述のPIOモードである。ATAでは、PIOモード0〜4まで定義されており、それぞれ最大転送速度が異なっている。PIOモードでは、CPUとハードディスクドライブとのハンドシェイクを用いた転送モードであり、CPUが直接ハードディスクドライブのI/Oポートを繰り返しアクセスすることによってデータ転送を行う。よって、その転送速度は決して高速ではないが、シーク動作やスピンドルの回転といった機械的動作を必要とするハードディスクドライブ自体のデータ転送能力を考慮すると、この転送方式で十分であったのである。
【0012】
しかし、最近では、ハードディスクの高密度化が急速に進み、これに伴ってハードディスク自体のデータ転送能力も大幅に向上しており、これまで主流であったPIOモード4に加え、DMAモード、さらにはUltraDMAモードに対応したハードディスクドライブも製品化され始めている。ハードディスクドライブはユーザによって交換可能である。このため、常にPIOモードを使用してデータ転送を行うという従来のハイバネーション処理では、使用されているハードディスクドライブのタイプによってはその性能を十分に引き出すことが出来ないという問題が生じる。
【0013】
【発明が解決しようする課題】
上述したように、従来では、DMAモードなどの高速転送モードをサポートしているハードディスクドライブであっても、PIOモードによる転送が行われてしまい、使用中のハードディスクドライブによっては、その性能を十分に発揮させることができないという問題があった。このため、特に、大容量のデータ転送を必要とするハイバネーション処理においては多くの時間を要し、ユーザが電源スイッチをオフしてからシステムが実際にパワーオフされるまでに要する時間、およびユーザが電源スイッチをオンしてからシステム状態が復元されるまでに要する時間が非常に大きくなってしまうという問題がある。
【0014】
本発明は上述の事情に鑑みてなされたものであり、使用中のハードディスクドライブの性能に合ったデータ転送モードを用いてそのハードディスクドライブとの間のデータ転送を実行できるようにし、ハイバネーション処理の高速化を実現し得るコンピュータシステムおよび同システムで使用されるデータ転送制御方法を提供することを目的とする。
【0015】
【課題を解決するための手段】
上述の課題を解決するため、本発明は、電源オフ状態への移行時にハイバネーション処理を実行するコンピュータシステムにおいて、本体と、前記本体に設けられたディスクドライブ装置と、前記本体の電源オフ要因の発生を検知する検知手段と、前記検知手段が電源オフ要因の発生を検知した場合、前記本体のシステム情報をメモリへ退避する処理と、前記ディスクドライブ装置から前記ディスクドライブ装置が対応しているデータ転送モードの情報を読み出して当該読み出された情報に基づいて前記ディスクドライブ装置が対応しているデータ転送モードの種類を判別することによって、DMA転送モードとPIOモードを含む複数の転送モードの中から、前記ハイバネーション処理で前記ディスクドライブ装置をアクセスするために使用する転送モードの種類を決定する処理とを実行する手段と、前記DMA転送モードとPIOモードを含む複数の転送モードの中から前記ハイバネーション処理で前記ディスクドライブ装置をアクセスするために使用する転送モードとして決定された転送モードを用いて前記ディスクドライブ装置に対するアクセスを実行することによって、前記メモリに退避された前記システム情報を前記ディスクドライブ装置へ転送する手段とを具備することを特徴とする。
【0019】
このコンピュータシステムにおいては、ハイバネーション処理で使用する最適な転送モードを決定するために、データ転送処理に先だって、ディスクドライブ装置が対応しているデータ転送モードの種類が判別され、DMA転送モードとPIOモードを含む複数の転送モードの中から、ハイバネーション処理でディスクドライブ装置をアクセスするために使用する転送モードの種類が決定される。そして、DMA転送モードとPIOモードを含む複数の転送モードの中から前記ハイバネーション処理で使用する転送モードとして決定された転送モードを用いて、ディスクドライブ装置に対するアクセスを実行することにより、メモリに退避されたシステム情報がディスクドライブ装置に転送される。これにより、常にPIOモードを用いる従来のハイバネーション処理に比し、ハイバネーション処理の高速化を実現することができる。
【0023】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態を説明する。
図1には、本発明の一実施形態に係るコンピュータシステムの構成が示されている。このコンピュータシステムは、ノートブックタイプまたはサブノートタイプのポータブルパーソナルコンピュータであり、コンピュータ本体と、このコンピュータ本体に開閉自在に取り付けられたLCDパネルユニットとから構成されている。このコンピュータは、内蔵バッテリを有しており、その内蔵バッテリからの電力によって動作可能に構成されている。また、ACアダプタを介してAC商用電源などの外部電源から電力供給を受けることもできる。外部電源から電力供給を受けているときは、その外部電源からの電力がコンピュータシステムの動作電源として用いられる。このとき、外部電源からの電力によって内蔵バッテリの充電も自動的に行われる。ACアダプタが取り外されたり、あるいはAC商用電源のブレーカが落とされたときなどは、内蔵バッテリからの電力がコンピュータシステムの動作電源として用いられる。
【0024】
また、コンピュータ本体には、IDEインターフェイスを有するハードディスクドライブ(HDD)17が取り外し自在に装着されている。このHDD17はコンピュータの二次記憶として使用されるものである。
【0025】
また、このコンピュータのシステムボード上には、CPU11、CPUバス1とPCIバス2間をつなぐホスト−PCIブリッジ12、主メモリ13、VGAコントローラ14、PCI−ISAブリッジ15、バスマスタIDEコントローラ16、BIOS−ROM18、リアルタイムクロック(RTC)19、埋め込みコントローラ(EC)20、電源コントローラ21などが設けられている。
【0026】
CPU11は、このシステム全体の動作制御およびデータ処理を実行する。このCPU11としては、システム管理割り込みSMI(SMI;System Management Interrupt)をサポートするもの、例えば、米インテル社により製造販売されているマイクロプロセッサ“Pentium”などが使用される。この場合、CPU11は、次のようなシステム管理機能を持つ。
【0027】
すなわち、CPU11は、アプリケーションプログラムやオペレーティングシステム(OS)などのプログラムを実行するための動作モードとしてリアルモード、プロテクトモード、仮想86モードを有する他、システム管理モード(SMM;System Management mode)と称されるシステム管理機能を実現するための動作モードを有している。
【0028】
リアルモードは、最大で1Mバイトのメモリ空間をアクセスできるモードであり、論理アドレスから物理アドレスへの変換は、セグメントレジスタで表されるベースアドレスからのオフセット値で物理アドレスを決定するアドレス計算形式によって行われる。
【0029】
一方、プロテクトモードは1タスク当たり最大4Gバイトのメモリ空間をアクセスできるモードであり、ディスクプリタテーブルと称されるアドレスマッピングテーブルを用いてリニアアドレスが決定される。このリニアアドレスは、ページングによって最終的に物理アドレスに変換される。
【0030】
このように、プロテクトモードとリアルモードとでは、互いに異なるメモリアドレッシングが採用されている。
システム管理モード(SMM)は疑似リアルモードであり、このモードにおけるアドレス計算形式はリアルモードのアドレス計算形式と同一であり、ディスクプリタテーブルは参照されず、ページングも実行されない。しかし、SMMでは、プロテクトモードと同様に、1Mバイトを越えるメモリ空間をアクセスすることができる。
【0031】
システム管理割込み(SMI;System Management Interrupt)がCPU11に発行された時、CPU11の動作モードは、その時の動作モードであるリアルモード、プロテクトモード、または仮想86モードから、SMMにスイッチされる。SMIによってSMMにスイッチした時、CPU11はその時のCPUレジスタの内容であるCPUステータスを主メモリ13上のオーバレイメモリであるSMRAMにセーブする。また、SMMにおいて復帰命令(RSM命令)が実行されると、CPU11はSMRAMからCPUレジスタにCPUステータスをリストアし、SMI発生前の動作モードに復帰する。本実施形態においては、SMMにおいて、ハイバネーション処理などを行うためのシステム管理プログラムが実行される。このハイバネーションルーチンは、システムステートをサスペンド状態またはハイバネーション状態に設定するためのものであり、システムステートをハイバネーション状態に設定する場合には、CPU11および各種周辺LSIのステート、主メモリ13およびVRAMの内容などを、HDD17の記憶エリアに予め確保されているハイバネーションエリアにセーブした後にシステム全体をパワーオフする。
【0032】
このハイバネーションルーチンは、システム電源オフに起因するSMI、つまり、電源スイッチ22の押下、またはパネルスイッチ23によるLCDパネルユニットのクローズ検出、あるいはサスペンドボタン(スリープボタン)の押下などに起因して発生されるSMIに応答して実行される。
【0033】
SMIはマスク不能割込みNMIの一種であるが、通常のNMIやマスク可能割込みINTRよりも優先度の高い、最優先度の割り込みである。このSMIを発行することによって、システム管理プログラムを、実行中のアプリケーションプログラムやオペレーティングシステムの環境に依存せずに起動することができる。
【0034】
ホスト−PCIブリッジ12には、システム内のメモリおよびI/O全体の制御を行うための回路が内蔵されており、ここには、SMI発生制御のためのハードウェアロジックも組み込まれている。このハードウェアロジックは、ハイバネーション処理を起動するためのSMI発生回路、ソフトウェアSMIやI/OトラップSMIなどの他の要因によるSMI発生回路、およびSMI発生要因を保持するステータスレジスタなどから構成される。
【0035】
SMI発生回路は、電源コントローラ21およびEC20経由で電源スイッチ22のオフ、サスペンドボタンの押下、またはパネル開閉検出スイッチ23によるLCDパネルクローズなどのイベントが通知された時、ハイバネーション処理を起動するためのSMI信号を発生する。また、SMI発生回路からのSMI信号は、ハイバネーション状態からの復帰を指示するウェイクアップイベントの通知にも利用される。すなわち、電源スイッチ22のオンやLCDパネルオープンによるウェイクアップイベントが発生すると、ハイバネーション状態から動作状態への復帰処理が行われる。
【0036】
主メモリ13はこのシステムの主記憶つまりシステムメモリとして使用されるものであり、オペレーティングシステム、処理対象のアプリケーションプログラム、およびアプリケーションプログラムによって作成されたユーザデータ等が格納される。この主メモリ13はDRAMなどの半導体メモリによって実現されている。前述のSMRAM(System Management RAM)は、主メモリ13を構成する物理メモリの一部に割り当てられた記憶空間であり、SMI信号がCPU11に入力された時だけメモリアドレスがマッピングされてアクセス可能となる。ここで、SMRAMがマッピングされるアドレス範囲は固定ではなく、SMBASEと称されるレジスタによって4Gバイト空間の任意の場所に変更することが可能である。SMBASEレジスタは、SMM中でないとアクセスできない。
【0037】
CPU11がSMMに移行する時には、CPUステータス、つまりSMIが発生された時のCPU11のレジスタ等が、SMRAMにスタック形式でセーブされる。このSMRAMには、BIOS−ROM18のシステム管理プログラムを呼び出すための命令が格納されている。この命令は、CPU11がSMMに入った時に最初に実行される命令であり、この命令実行によってシステム管理プログラムに制御が移る。
【0038】
BIOS−ROM18は、システムBIOS(Basic I/O System)を記憶するためのものであり、プログラム書き替えが可能なようにフラッシュメモリによって構成されている。システムBIOSは、このシステム内の各種ハードウェアをアクセスするためのファンクション実行ルーチンを体系化したものであり、リアルモードで動作するように構成されている。
【0039】
このシステムBIOSには、システムのパワーオン時に実行されるIRTルーチンと、各種ハードウェア制御のためのBIOSドライバ群などが含まれている。各BIOSドライバは、ハードウェア制御のための複数の機能をオペレーティングシステムやアプリケーションプログラムに提供するためにそれら機能に対応する複数のファンクション実行ルーチン群を含んでいる。
【0040】
また、BIOS−ROM18には、SMIハンドラおよび前述のハイバネーションルーチンなど、SMMの中で実行されるシステム管理プログラムも格納されている。SMIハンドラは、SMIの発生要因に応じて各種SMIサービスルーチンを起動するためのものであり、電源オフ操作に起因するSMIが発生した場合は、ハイバネーションルーチンを起動し、他の要因によるSMIが発生した場合にはその要因に対応するSMIサービスルーチンを起動する。
【0041】
HDD17の記憶エリアの一部にはハイバネーションエリアが確保されている。ハイバネーションエリアはIRTによるHDD17の初期化およびテスト時にシステムBIOSによって確保され、ハイバネーションエリアを除く他の記憶領域がOSに解放される。ハイバネーションエリアには、物理的に連続した領域が割り当てられる。
【0042】
RTC19は時計モジュールであり、独自の電池によりバックアップされたCMOSメモリを有している。CMOSメモリには、パワーアップモードを指定する情報などを含む各種システムコンフィグレーション情報が設定される。
【0043】
EC20は、システムが持つ付加機能を制御するためのコントローラであり、CPU周辺温度などに応じてクーリングファンの回転制御などを行うための熱制御機能、システムの各種状態をLEDの点灯やビープオンによってユーザに通知するためのLED/ビープ音制御機能、電源コントローラ21と共同してシステム電源のオン/オフなどを制御する電源シーケンス制御機能、および電源ステータス通知機能などを有している。電源ステータス通知機能は、電源コントローラ21と共同してシステムBIOSのハイバネーション処理やレジューム処理の起動要因となるイベントの発生を監視し、イベント発生時にそれをSMIなどを用いてシステムBIOSに通知するという機能である。ハイバネーション状態においても、EC20および電源コントローラ21には動作電源が供給されており、EC20の各機能は有効である。
【0044】
EC20は、システムBIOSとの通信のためのI/Oポートを有している。システムBIOSは、このI/Oポートを介してEC20内のコンフィグレーションレジスタに対してリード/ライトを行うことにより、監視および通知すべきイベントの種類の設定や、発生したイベントを示すステータスのリードなどを行うことができる。EC20と電源コントローラ21間の通信はI2Cバスを介して行われる。
【0045】
例えば、バッテリ残量変化があった場合など、電源コントローラ19はI2Cバス経由でEC18のコンフィグレーションレジスタを直接書き換える。EC18は、コンフィグレーションレジスタが書き換えられると、これをイベントとしてシステムBIOSに通知する。
【0046】
VGAコントローラ14は、このシステムのディスプレイモニタとして使用されるLCDを制御するためのものであり、VRAMに描画された画面データをLCDパネルユニット内のLCDに表示する。
【0047】
バスマスタIDEコントローラ16は、コンピュータ本体に装着されたIDEデバイス(ここでは、HDD17)を制御するためのものであり、IDEデバイスと主メモリ13との間のDMA転送を実行可能なバスマスタ機能に対応している。このバスマスタ機能は、CPU11からのコマンドに応じて自らデータ転送のためのバスサイクルを実行するものであり、PIOモードよりもCPU負荷を低減した状態で、IDEデバイスと主メモリ13との間のデータ転送を高速実行する事ができる。
【0048】
本実施形態では、バスマスタ、つまりDMA転送モードに対応したハードディスクドライブが装着されている場合には、ハイバネーション処理のためのデータ転送はバスマスタ機能を用いることによりDMA転送モードによって実行される。また、DMA転送モードに対応してないハードディスクドライブが装着されている場合には、そのハードディスクドライブがサポートしている転送モードの中で最も高速の転送モードが自動選択され、その転送モードにてデータ転送が行われる。ハードディスクドライブがどのような転送モードに対応しているかは、ハードディスクドライブからそれを示すパラメタ情報を読み出すことによって自動判別される。
【0049】
次に、図2を参照して、SMIの発生からハイバネーションルーチンが起動されるまでの一連の動作を説明する。
システムの動作中にユーザによって電源スイッチ22がオフされたり、またはユーザによってLCDパネルユニットが閉じられたことがパネル開閉スイッチ23によって検知されると、電源コントローラ21は電源オフ要因が発生したことをEC20を介してSMI発生回路に通知する。この通知に応答して、SMI発生回路からSMI信号が発生され、それがCPU11に供給される。
【0050】
CPU11にSMI信号が入力されると、CPU11は、その時の動作モードからSMMにスイッチされる。SMMに入ると、CPU11は、まず、SMRAMに所定のメモリアドレスをマッピングする。これにより、SMRAMがアクセス可能となる。
【0051】
SMRAMには、CPUステート格納エリア、CPU以外の他のハードウェアに関するステータスを格納するハードウェアステータス(HWステータス)格納エリアなどが設けられており、またBIOS−ROM18のSMIハンドラを割り込み先として指定するジャンプコードがセットされている。前述したように、BIOS−ROM18には、IRTルーチン、SMIハンドラ、ハイバネーションルーチン、レジュームルーチン、および複数のBIOSドライバ群を含むシステムBIOSが格納されている。
【0052】
次いで、CPU11は、SMIが入力された時のCPU11の各種レジスタの内容であるCPUステータス(または、コンテキストと称される)をSMRAMのCPUステート格納エリアにスタック形式でセーブする。そして、CPU11は、SMMのスタートアドレスのコード、つまりSMRAMにセットされているジャンプコードをフェッチし、そのジャンプコードで指定されるBIOS−ROM18のSMIハンドラを実行する。ここまでの処理は、CPU11自体つまりCPU11のマイクロプログラムによって実行されるものである。
【0053】
ジャンプコードの実行によって呼び出されたSMIハンドラは、どのような要因でSMIが発生されたかを決定するために、SMI発生要因をチェックする。この処理では、前述のSMIステータスレジスタにセットされているSMIステータス情報が参照される。サスペンド開始要因となる電源オフなどに起因するSMIであれば、SMIハンドラは、BIOS−ROM18のハイバネーションルーチンの実行をリクエストする。これにより、ハイバネーションルーチンがSMMの中で実行され、ハイバネーション処理が開始される。
【0054】
図3には、本実施形態のハイバネーション処理の方法が示されている。
電源スイッチオフ、パネルクローズ、サスペンドボタンの押下などが行われると、システムBIOSのハイバネーションルーチンが起動されて、システムサスペンドのために以下の処理が行われる。
【0055】
すなわち、まず、ハイバネーションルーチンは、CPU11のレジスタや各種周辺LSIのステータスなどのシステムステータスなどを主メモリ13にセーブする(ステップS101)。次いで、HDD17との間のデータ転送モードを決定するためのHDD転送モード決定処理が行われる(ステップS102)。このHDD転送モード決定処理では、最初に、HDD17からそこに保持されているドライブパラメタ情報が読み出され、HDD17がサポートしている転送モードの種類が判別される。そして、HDD17がサポートしている転送モードの中で、最も高速転送可能な最適な転送モードが選択される。具体的には、図4の処理により使用する転送モードが決定される。
【0056】
図4に示されているように、まず、ドライブパラメータ情報に基づいて、HDD17がRead/Write Multipleコマンドをサポートしているかどうかを判断する(ステップS301)。Read/Write Multipleコマンドは複数セクタ分のリード/ライトをまとめて指定可能なコマンドであり、このRead/Write Multipleコマンドをサポートしていない場合は、HDDアクセスにはセクタ単位でリード/ライトを指定するRead/Write Sectorコマンドを用いたデータ転送モードが使用される。次に、先に読み出したHDDドライブパラメータより、DMAをサポートしているかどうかを判断する(ステップS302)。サポートしていない場合は、HDDアクセスにはRead/Write Multipleコマンドを使用する。Read/Write Sectorコマンド、Read/Write MultipleコマンドのどちらもPIOモードで使用されるコマンドである。
【0057】
次に、先に読み出したHDDドライブパラメータより、Ultra DMAをサポートしているかどうかを判断する(ステップS303)。サポートしていない場合は、HDDアクセスにはDMA Read/Writeコマンドを使用する。サポートしている場合は、Ultra DMA Read/Writeコマンドを使用する。このようにして、HDDアクセスに使用する転送モード、具体的にはコマンドの種類が決定される。なお、IDEコントローラがバスマスタ対応のものでない場合には、ステップS301だけ行えば良く、ステップS302,S303によるDMAモードのサポートの有無およびサポートしているDMAモードの検出処理は不要となる。
【0058】
この後、ハイバネーションルーチンは、HDDへのデータセーブ処理と、コンピュータシステムに設けられた各種デバイスのパワーダウン処理などを並列実行する。これら処理はデバイス毎にそれぞれ用意された複数のサーブルーチンによって実行され、ハイバネーションルーチン内のメインルーチンはそれらサーブルーチンによるコマンド処理を切り替える処理を実行する。すなわち、各デバイスの制御処理ではコマンドが順次発行されるが、コマンド発行の度にI/O待ちが発生する。したがって、そのI/O待ちの間に別のデバイスに対するコマンド発行処理が行えるようにサーブルーチンの切り替えが行われる。
【0059】
ここでは、HDDデータセーブ処理(ステップS201)、I/O制御処理1(ステップS202)、I/O制御処理2(ステップS203)、…I/O制御処理N(ステップS204)それぞれに対応してサブルーチンが用意されており、メインルーチンは、デバイス毎に用意されたカウンタ値(タイマ値)を用いて、次のコマンド処理に移行可能なデバイスに対応するサブルーチンを起動して次のコマンド処理を実行させる(ステップS103)。そして、HDDデータ転送処理を含む全ての処理が完了すると(ステップS104)、EC20に対してシステムパワーオフを指示するコマンドが発行される(ステップS105)。これにより、EC20および電源コントローラ21を除く全てのデバイス(主メモリを含む)がパワーオフされ、システムステートはハイバネーション状態となる。
【0060】
HDDデータセーブ処理を実行するサブルーチンとしては、図5のように、Read/Write Sectorコマンドを用いたデータ転送制御を行うRead/WriteSector処理ルーチン#1と、Read/Write Multipleコマンドを用いたデータ転送制御を行うRead/WriteMultiple処理ルーチン#2と、DMA Read/Writeコマンドを用いたデータ転送制御を行うDMA Read/Write処理ルーチン#3と、Ultra DMA Read/Writeコマンドを用いたデータ転送制御を行うUltraDMA処理ルーチン#4とが用意されており、図3のステップS102で決定された転送モードに対応する処理ルーチンが呼び出されて実行される。
【0061】
次に、図6および図7を参照して、デバイス毎に用意されたカウンタ値とシステムカウンタのカウンタ値との比較結果を用いて、ハイバネーションのための複数のデバイスの処理を並行して進める場合の動作について説明する。
【0062】
図6はハイバネーションルーチンのメインルーチンとサブルーチンとの関係を示すフローチャートである。
ここでは、ハイバネーションルーチンは、メインルーチンと3つのサブルーチンA,B,Cから構成されている場合を想定する。サブルーチンAは、例えばVGAコントローラやLCDなどのI/Oデバイス#1をパワーダウンするためのものであり、メインルーチンからのサブルーチンコールに応答して起動される。サブルーチンBは、HDD17にメモリデータをセーブするためのものであり、メインルーチンからのサブルーチンコールに応答して起動される。サブルーチンCは、例えばUSBやモデムなどの通信系のI/Oデバイス#2のパワーダウン処理を行うものであり、メインルーチンからのサブルーチンコールに応答して起動される。
【0063】
メインルーチンは、I/Oデバイス#1、HDD、およびI/Oデバイス#2にそれぞれに対応して用意されたソフトウェアカウンタ(I/Oカウンタ1、HDDカウンタ、I/Oカウンタ2)のカウンタ値を順番にシステムカウンタによる現在のカウンタ値と比較することにより、次のコマンド処理に移行可能なデバイスを決定する。そして、そのデバイスに対応するのサブルーチンをコールする。
【0064】
各ソフトウェアカウンタには、対応するデバイスが現在のコマンド処理の実行に要する時間、すなわち次のコマンド処理を開始可能な時間が設定される。各ソフトウェアカウンタに対するカウンタ値の設定は、そのソフトウェアカウンタに対応するデバイスを制御するサブルーチンによって実行される。サブルーチンが起動されるまでは、各ソフトウェアカウンタに対するカウンタ値は0、つまりいつでもコマンド処理を開始できる状態となっている。
【0065】
まず、システムカレント値がI/Oカウンタ1の値以上であるか否かが調べられ(ステップS401)、システムカレント値がI/Oカウンタ1のカウンタ値以上であればサブルーチンAがコールされ、一方システムカレント値がI/Oカウンタ1のカウンタ値よりも小さい場合にはHDDカウンタ値のチェックに移行される。
【0066】
電源投入直後においては、I/Oカウンタ1のカウンタ値は初期値0であるため、システムカレント値はI/Oカウンタ1のカウンタ値よりも大きい。従って、I/O制御処理1がサブルーチンAによって実行される。
【0067】
サブルーチンAでは、まず、前回のサブルーチンAで発行されたI/Oコマンドに対するコマンド処理のステータスチェックが行われた後、I/Oデバイス1のパワーダウンのための次のコマンドの発行が行われる。次いで、I/Oカウンタ1のカウンタ値の更新が行われる。
【0068】
ここでは、「現在のシステムカレント値 + n 」がI/Oカウンタ1に設定される。「n」は、今回発行したコマンドに対応する処理をI/Oデバイスが終了して次のコマンドを受付可能になるまでの最小時間(インターバル値)を示す。この時間は、コマンド毎にあらかじめ決められている。
【0069】
I/Oカウンタ1のカウンタ値の更新が終わると、メインルーチンに復帰する。
メインルーチンにおいては、今度は、システムカレント値がHDDカウンタ値以上であるか否かが調べられ(ステップS402)、システムカレント値がHDDカウンタ値以上であればサブルーチンBがコールされ、前回の転送コマンド処理のステータスチェック、次転送コマンドの発行、HDDカウンタの再設定などのHDDデータ転送制御処理が行われる。
【0070】
サブルーチンBからメインルーチンに戻ると、今度は、システムカレント値がI/Oカウンタ2のカウンタ値以上であるか否かが調べられ(ステップS403)、システムカレント値がI/Oカウンタ2のカウンタ値であればサブルーチンCがコールされ、前回のコマンド処理のステータスチェック、次コマンドの発行、I/Oカウンタ2のカウンタ値の再設定などの処理が行われる。
【0071】
このようにして各デバイスのカウンタ値を利用することにより、各デバイス毎に次のコマンド処理に移行可能なタイミングが検知され、それに合わせて各デバイスに対する処理が進められる。
【0072】
HDD転送モードとして、DMA Read/WriteコマンドやUltra DMA Read/Writeコマンドを使用したDMAモードを使用した場合には、メモリ13からHDD17へのDMA転送自体の制御はバスマスタIDEコントローラ16によって行われるため、サブルーチンBの各コマンド処理に要する時間が短くなり、その間にサーブルーチンA、Cなどによる他のI/Oデバイスのパワーダウン処理にCPU資源を割り当てることが出来、ハイバネーション処理全体の高速化を図ることができる。
【0073】
以上のように、本実施形態においては、ユーザによる電源スイッチオフなどのイベントが発生すると、メモリ13の内容をHDD17にセーブする処理に先立って、HDD17が有するデータ転送モードの種類が自動判別され、そしてそのHDD17が有するデータ転送モードの中で最適なデータ転送モードを用いて、メモリデータセーブのためのデータ転送が実行される。よって、使用中のHDD17の性能に合ったデータ転送モードを用いてそのHDD17との間のデータ転送を実行でき、ハイバネーション処理の高速化を実現できる。
【0074】
なお、ハイバネーション処理状態からの復帰処理においても、同様の処理が行われ、最適な転送モードでHDD17からメモリ13へのデータ転送が実行される。また、システムBIOS経由でHDDアクセスを行う場合には、アプリケーションやOSからの通常のファイルアクセス時においても、最適な転送モードでHDD17との間のデータ転送を行うことが可能となる。
【0075】
【発明の効果】
以上説明したように、本発明によれば、使用中のハードディスクドライブの性能に合ったデータ転送モードを用いてそのハードディスクドライブとの間のデータ転送を実行できるようになり、使用中のハードディスクドライブの性能を最大限引き出すことが可能となる。特に、DMAモードを自動的に使用できるようにすることにより、ハイバネーション処理の高速化を実現できる。
【図面の簡単な説明】
【図1】本発明の一実施形態に係るコンピュータシステムの構成を示すブロック図。
【図2】本実施形態におけるハイバネーションルーチン起動処理動作を説明するための図。
【図3】本実施形態におけるハイバネーション処理の手順を説明するフローチャート。
【図4】本実施形態のハイバネーション処理で実行されるHDD転送モード決定処理の手順を示すフローチャート。
【図5】本実施形態で使用されるハイバネーションルーチンに含まれるHDDデータセーブ処理ルーチンの構成を示す図。
【図6】本実施形態で使用されるハイバネーションルーチンによる並列制御処理の一例を示すフローチャート。
【符号の説明】
11…CPU
12…ホスト−PCIブリッジ
13…主メモリ
16…バスマスタIDEコントローラ
17…HDD
18…BIOS−ROM
20…EC
Claims (2)
- 電源オフ状態への移行時にハイバネーション処理を実行するコンピュータシステムにおいて、
本体と、
前記本体に設けられたディスクドライブ装置と、
前記本体の電源オフ要因の発生を検知する検知手段と、
前記検知手段が電源オフ要因の発生を検知した場合、前記本体のシステム情報をメモリへ退避する処理と、前記ディスクドライブ装置から前記ディスクドライブ装置が対応しているデータ転送モードの情報を読み出して当該読み出された情報に基づいて前記ディスクドライブ装置が対応しているデータ転送モードの種類を判別することによって、DMA転送モードとPIOモードを含む複数の転送モードの中から、前記ハイバネーション処理で前記ディスクドライブ装置をアクセスするために使用する転送モードの種類を決定する処理とを実行する手段と、
前記DMA転送モードとPIOモードを含む複数の転送モードの中から前記ハイバネーション処理で前記ディスクドライブ装置をアクセスするために使用する転送モードとして決定された転送モードを用いて前記ディスクドライブ装置に対するアクセスを実行することによって、前記メモリに退避された前記システム情報を前記ディスクドライブ装置へ転送する手段とを具備することを特徴とするコンピュータシステム。 - ディスクドライブ装置が装着可能に構成され、電源オフ状態への移行時にメモリの内容をディスクドライブ装置にセーブするハイバネーション処理を実行するコンピュータシステムにおいて使用されるデータ転送制御方法であって、
前記コンピュータシステムの電源オフ要因の発生を検知する検知ステップと、
前記検知ステップが電源オフ要因の発生を検知した場合、前記コンピュータシステムのシステム情報をメモリへ退避する処理と、前記ディスクドライブ装置から前記ディスクドライブ装置が対応しているデータ転送モードの情報を読み出して当該読み出された情報に基づいて前記ディスクドライブ装置が対応しているデータ転送モードの種類を判別することによって、DMA転送モードとPIOモードを含む複数の転送モードの中から、前記ハイバネーション処理で前記ディスクドライブ装置をアクセスするために使用する転送モードの種類を決定する処理とを実行するステップと、
前記DMA転送モードとPIOモードを含む複数の転送モードの中から前記ハイバネーション処理で前記ディスクドライブ装置をアクセスするために使用する転送モードとして決定された転送モードを用いて前記ディスクドライブ装置に対するアクセスを実行することによって、前記メモリに退避された前記システム情報を前記ディスクドライブ装置へ転送するステップとを具備することを特徴とするデータ転送制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP14585698A JP3961669B2 (ja) | 1998-05-27 | 1998-05-27 | コンピュータシステムおよびデータ転送制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP14585698A JP3961669B2 (ja) | 1998-05-27 | 1998-05-27 | コンピュータシステムおよびデータ転送制御方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003136015A Division JP2003345474A (ja) | 2003-05-14 | 2003-05-14 | コンピュータシステムおよびデータ転送制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11338640A JPH11338640A (ja) | 1999-12-10 |
JP3961669B2 true JP3961669B2 (ja) | 2007-08-22 |
Family
ID=15394674
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP14585698A Expired - Fee Related JP3961669B2 (ja) | 1998-05-27 | 1998-05-27 | コンピュータシステムおよびデータ転送制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3961669B2 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4523150B2 (ja) * | 2000-12-27 | 2010-08-11 | レノボ シンガポール プライヴェート リミテッド | データサーバシステム、コンピュータ装置、記憶媒体 |
JP2003316616A (ja) | 2002-04-24 | 2003-11-07 | Hitachi Ltd | 計算機システム |
JP2003316522A (ja) | 2002-04-26 | 2003-11-07 | Hitachi Ltd | 計算機システムおよび計算機システムの制御方法 |
KR100505638B1 (ko) * | 2002-08-28 | 2005-08-03 | 삼성전자주식회사 | 워킹 콘텍스트 저장 및 복구 장치 및 방법 |
US8250406B2 (en) | 2003-08-19 | 2012-08-21 | Intel Corporation | Operational state preservation in the absence of AC power |
CN1327344C (zh) | 2003-08-19 | 2007-07-18 | 英特尔公司 | 无交流电源时保存和恢复工作状态的基本输入/输出系统 |
-
1998
- 1998-05-27 JP JP14585698A patent/JP3961669B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH11338640A (ja) | 1999-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4580528B2 (ja) | コンピュータシステムおよびそのレジューム処理方法 | |
KR100396460B1 (ko) | 하이버네이션 기능 지원 정보 처리 시스템, 그 제어 방법 및 기록 매체 | |
JP3943665B2 (ja) | スリープ制御方法、およびイベント通知方法 | |
TWI407300B (zh) | 電源管理控制器與方法 | |
JP3798476B2 (ja) | コンピュータシステムおよびそのシステムにおけるキャッシュメモリのパワーダウン制御方法 | |
US6243831B1 (en) | Computer system with power loss protection mechanism | |
JP3442100B2 (ja) | コンピュータシステムのシステムイメージをセーブする方法及びこの方法を実施するコンピュータシステム | |
KR100352045B1 (ko) | 컴퓨터시스템에서전력소모를감소시키기위한방법및장치 | |
JP2880863B2 (ja) | サスペンド制御方法およびシステム | |
JP4155545B2 (ja) | コンピュータシステムおよびデータ転送制御方法 | |
JPH11161385A (ja) | コンピュータシステムおよびそのシステムステート制御方法 | |
US6154846A (en) | System for controlling a power saving mode in a computer system | |
JPH07200112A (ja) | 情報処理システム | |
JPH11194846A (ja) | コンピュータシステムおよびそのシステムステート制御方法 | |
US6681336B1 (en) | System and method for implementing a user specified processing speed in a computer system and for overriding the user specified processing speed during a startup and shutdown process | |
JPH09128107A (ja) | 情報処理システム | |
US20040199697A1 (en) | Mobile computer and base station | |
JPH0944418A (ja) | 情報処理システム及びその制御方法 | |
JP3943764B2 (ja) | コンピュータシステムおよびそのcpu性能制御方法 | |
JP3961669B2 (ja) | コンピュータシステムおよびデータ転送制御方法 | |
JP3238097B2 (ja) | コンピュータシステムおよびそのシステムにおけるデータセーブ制御方法 | |
JPH11194847A (ja) | コンピュータシステムおよび初期化制御装置 | |
JP2003345474A (ja) | コンピュータシステムおよびデータ転送制御方法 | |
JP5894044B2 (ja) | ハイブリッド・ディスク・ドライブにデータを記憶する方法および携帯式コンピュータ | |
JPH11102238A (ja) | コンピュータシステムおよびそのシステムにおけるサスペンド制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060421 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070517 |
|
LAPS | Cancellation because of no payment of annual fees |