(57)【要約】【課題】発生頻度が低い場合であっても起動時に不良を引き起こす要因を解析するための十分な情報を得る。【解決手段】電源投入後のリセット解除により、ＣＰＵ１はフラッシュＲＯＭ４に保存のプログラム（デバイスの初期化と自己診断プログラム）を実行する。このフラッシュＲＯＭ４のほとんどの領域（第１領域）はＢＩＯＳで使用され、第２領域は、起動日時及び初期化処理、自己診断処理の経過情報、環境情報などが処理番号ともに保存され、第３領域は、前回未完了処理の検出時に、検出データを第２領域からコピーし、このデータに関連付けたタイムアウトのステータス情報、装置構成も保存する。この第２領域に保持した各処理番号に基づき未完了処理を検出し、検出したデータ、タイムアウトステータス情報、装置構成等を第３の領域にコピーすることで、障害発生時の情報だけが保存され、起動不良の要因を特定できる。【選択図】図１
2009211625.tif 000002
【特許請求の範囲】
【請求項１】
順次実行される初期化処理を行う複数のモジュール化されたプログラムを第１の領域に格納した不揮発性メモリと、前記プログラムを実行するＣＰＵとを備えた情報処理装置の起動ログ保存方法であって、
前記不揮発性メモリには、ワークエリアとして使用するための第２の領域と、障害情報を保存するための第３の領域とを有し、各処理を実行する際に、前記第２の領域に前記複数のモジュール化されたプログラムの各処理に対応した処理番号を順番に保存する工程と、前記第２の領域に保存された各処理番号を調べ、正常に完了していない処理を検出した際に、前記検出した処理番号を前記第３の領域にコピーする工程と設けたことを特徴とする起動ログ保存方法。
【請求項２】
前記初期化処理中にタイマー手段が検出するタイムアウトが発生したこと示すステータス情報を装置の電源断後であっても保持する工程と、モジュール化されたプログラムの各初期化処理を行う前に、前記タイマー手段のタイムアウト値を設定する工程と、前回起動時に第２の領域に保存された処理番号とともに、前記ステータス情報を第３の領域にコピーする工程とを設けたことを特徴とする請求項１記載の起動ログ保存方法。
【請求項３】
前記初期化処理中にタイムアウトの発生を検出した時のみ、前回起動時に第２の領域に保存された処理番号を第３の領域にコピーすることを特徴とする請求項２記載の起動ログ保存方法。
【請求項４】
前記タイマー手段が、ウォッチドッグタイマーとしての機能も有することを特徴とする請求項２または３記載の起動ログ保存方法。
【請求項５】
前記初期化処理を行うプログラムを格納する不揮発性メモリと、第２，第３の領域を有する不揮発性メモリとは、別構成の不揮発性メモリであって、かつ着脱自在であることを特徴とする請求項１〜３のいずれか１項に記載の起動ログ保存方法。
【請求項６】
前記不揮発性メモリとして、フラッシュＲＯＭを用いたことを特徴とする請求項５記載の起動ログ保存方法。
【請求項７】
前記第２の領域が、２つ以上のブロックからなり、最初のブロックに空き領域がなくなった時には、次のブロックに保存を行う処理を順次実施し、最後のブロックに空き領域がなくなった時には、前記最初のブロックを消去して用いるリングバッファを形成することを特徴とする請求項５記載の起動ログ保存方法。
【請求項８】
前記第２の領域として用いるブロックの消去は、前記ブロックから別のブロックへ全情報の保存が終了した後に行うことを特徴とする請求項７記載の起動ログ保存方法。
【請求項９】
前記第２及び第３の領域に保存される情報には、日時、装置の環境や構成情報などの条件も合わせて保存することを特徴とする請求項１〜８のいずれか１項に記載の起動ログ保存方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリを起動用のメモリとして使用し、起動不良の原因を特定する情報を得られる情報処理装置の起動ログ保存方法に関するものである。
【背景技術】
【０００２】
従来、自己診断を行う情報処理装置において、診断エラーの内容を示すエラーコードは特定の不揮発性メモリに障害履歴として保存され、自己診断プログラムで診断される対象モジュールを示す実行コードをディスプレイ等に出力し、確認することが可能である。また、実行コードを不揮発性メモリに保存するものも存在する。
【０００３】
また、この種のデータ保存方式としては、障害発生時に主メモリのデータを保存したり、障害監視をタイマーで行って障害時に割り込みにより主メモリの内容を外部記憶装置に保存したり、また障害発生時処理していたデータを保存して、次回起動時の試験データにして装置の試験を行ったり、実行時に障害情報を保存しておき、障害復旧後にトレースデータから、実行記録の復旧を行ったり、エラー情報をテーブルに登録する方法が考案されている。
【０００４】
このように、出力した実行コードを不揮発性メモリに保持しているが、実行コードを保存していても、コード保持領域が固定で再起動を行うと実行コードが上書きされてしまい、特に間欠障害の場合においては、障害の発生したモジュールを確認することが困難になる。
【０００５】
この問題を解決するため特許文献１には、起動時に順次実行される自己診断プログラムが実行される前に、診断対象に応じた処理番号の診断コードを不揮発性のメモリに保存し、全ての自己診断プログラムが完了した時に、この自己診断が完了したことを示す処理番号の完了コードで置換えて、次回起動時に完了コードが保存されていなかった場合には、複数個の処理番号のコードを保持できる別の領域に処理番号のコードを保存する。このようにすることで、複数の要因であっても起動不良が発生した原因を、後から解析することができるようにしている。
【特許文献１】特許第３０９７６２１号公報
【特許文献２】特開２００４−３０２６３１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、パーソナルコンピュータなど実際の情報処理装置では、自己診断プログラムはハードウェアの初期化処理と合わせて実行されており、ハードウェアの不良などによっては、想定外の動作をしてしまうことが考えられる。その際、現在実行している診断対象を示すために、不揮発性メモリに保持されている処理番号を、違った処理番号に置換えてしまう可能性がある。このような現象が発生した場合、処理番号が示す実際には不具合が発生していない部分を解析することになるため、逆に障害解析を妨げることになってしまうという問題がある。
【０００７】
また、自己診断プログラム実施中に、停電の発生、エンドユーザによる電源遮断またはリセットなどが実行された場合には、処理時間が長い稼働中のプログラムを示す処理番号が、障害は発生していないにもかかわらず保存されてしまう可能性が高く、この場合も障害解析を妨げる要因となってしまうという問題があった。
【０００８】
本発明は、前記従来技術の問題を解決することに指向するものであり、発生頻度が低い場合であっても起動時に不良を引き起こす要因を解析するための十分な情報を得る機能を有する情報処理装置の起動ログ保存方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
前記の目的を達成するために、本発明に係る請求項１に記載した情報処理装置の起動ログ保存方法は、順次実行される初期化処理を行う複数のモジュール化されたプログラムを第１の領域に格納した不揮発性メモリと、プログラムを実行するＣＰＵとを備えた情報処理装置の起動ログ保存方法であって、不揮発性メモリには、ワークエリアとして使用するための第２の領域と、障害情報を保存するための第３の領域とを有し、各処理を実行する際に、第２の領域に複数のモジュール化されたプログラムの各処理に対応した処理番号を順番に保存する工程と、第２の領域に保存された各処理番号を調べ、正常に完了していない処理を検出した際に、検出した処理番号を第３の領域にコピーする工程とを設けたことにより、ワークエリアとして使用する不揮発性メモリの第２の領域に保持される各処理番号に基づき完了していない処理を検出し、検出した際に第３の領域にコピーすることで障害が発生した時の情報だけが保存され、起動不良の要因を特定することができる。
【００１０】
また、請求項２に記載した起動ログ保存方法は、請求項１の起動ログ保存方法において、初期化処理中にタイマー手段が検出するタイムアウトが発生したことを示すステータス情報を装置の電源断後であっても保持する工程と、モジュール化されたプログラムの各初期化処理を行う前に、タイマー手段のタイムアウト値を設定する工程と、前回起動時に第２の領域に保存された処理番号とともに、前記ステータス情報を第３の領域にコピーする工程とを設けたことにより、タイムアウト値を適切に選択して、タイムアウト発生のステータス情報も第３の領域へ保存することで、外的要因で完了できなかった処理を識別して、障害解析時の有益な情報を得られ、さらに、初期化処理中の電源断やリセットが実施されたことも検出することができる。
【００１１】
また、請求項３に記載した起動ログ保存方法は、請求項２の起動ログ保存方法において、初期化処理中にタイムアウトの発生を検出した時のみ、前回起動時に第２の領域に保存された処理番号を第３の領域にコピーすることにより、第３の領域を十分に確保できなくとも、より有効に使用することができる。
【００１２】
また、請求項４に記載した起動ログ保存方法は、請求項２，３の起動ログ保存方法において、タイマー手段が、ウォッチドッグタイマーとしての機能も有することにより、機器の追加構成を少なくできる。
【００１３】
また、請求項５に記載した起動ログ保存方法は、請求項１〜３の起動ログ保存方法において、初期化処理を行うプログラムを格納する不揮発性メモリと、第２，第３の領域を有する不揮発性メモリとは、別構成の不揮発性メモリであって、かつ着脱自在であることにより、障害情報を記録した第２，第３の領域の不揮発性メモリにより、装置の起動ができなくなった場合でも、障害を解析する有益な情報を得ることができる。
【００１４】
また、請求項６に記載した起動ログ保存方法は、請求項５の起動ログ保存方法において、不揮発性メモリとして、フラッシュＲＯＭを用いることにより、駆動電源を不要にできる。
【００１５】
また、請求項７に記載した起動ログ保存方法は、請求項５の起動ログ保存方法において、第２の領域が、２つ以上のブロックからなり、最初のブロックに空き領域がなくなった時には、次のブロックに保存を行う処理を順次実施し、最後のブロックに空き領域がなくなった時には、最初のブロックを消去して用いるリングバッファを形成することにより、複数のブロックとして使用し、リングバッファを形成することで、正常動作時の履歴も保存できるとともに、消去回数を減らして不揮発性メモリの信頼性を確保できる。
【００１６】
また、請求項８に記載した起動ログ保存方法は、請求項７の起動ログ保存方法において、第２の領域として用いるブロックの消去は、ブロックから別のブロックへ全情報の保存が終了した後に行うことにより、消去を必要とする時で、一連の処理の完了後に行うため、他の処理への影響を防ぐことができる。
【００１７】
また、請求項９に記載した起動ログ保存方法は、請求項１〜８の起動ログ保存方法において、第２及び第３の領域に保存される情報には、日時、装置の環境や構成情報などの条件も合わせて保存する構成により、起動不良発生時の情報として、装置が置かれた環境や構成情報を含めた、発生要因の解析を行う際の有益な情報を得ることができる。
【発明の効果】
【００１８】
本発明によれば、ワークエリアとして使用する不揮発性メモリに保持される処理に係る情報と各処理番号に基づき完了していない処理を検出し、検出した際に別の領域にコピーすることによって、障害が発生した時の情報を保存して、不良の要因を特定することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１９】
以下、図面を参照して本発明における実施の形態を詳細に説明する。
【００２０】
図１は本発明の実施の形態における情報処理装置の概略構成を示すブロック図である。図１に示す情報処理装置（パーソナルコンピュータ）において、電源投入後のリセットが解除されると、ＣＰＵ１は不揮発性メモリであるフラッシュＲＯＭ４に保存されたＢＩＯＳ（Basic Input/Output System）と呼ばれるプログラムを最初に実行する。ＢＩＯＳは各種デバイスの初期化とＰＯＳＴ（Power On Self Test）と呼ばれる自己診断プログラムを実行するとともに基本的なＩ／Ｏ操作のインターフェースを上位ソフトウェアに対して提供する。
【００２１】
ＢＩＯＳに含まれる初期化及び自己診断が全て完了すると、ディスクコントローラ７に接続されたディスク装置からオペレーティングシステムがＤＲＡＭ３にロードされ、このオペレーティングシステムに処理が渡され、またオペレーティングシステムは、必要な初期化を継続する。
【００２２】
オペレーティングシステムがロードされた後は、表示装置、ネットワーク、ディスク装置など各種Ｉ／Ｏが使用できるようになることが多いため、以下の説明ではフラッシュＲＯＭ４に格納されているプログラムだけが、本発明の構成を使用するように記載しているが、オペレーティングシステムだけでなく、さらに上位のソフトウェアが動作するようになった後であっても、この機能を使用することを妨げるものではない。
【００２３】
ＲＴＣ（Real Time Clock）５は、装置の電源がオフ状態であっても電池（例えば、リチウム電池など）により動作可能な時計機能と、装置の各種設定情報を保持する小容量のＳＲＡＭを内蔵し、ワークエリアとしても使用可能である
また、図２はフラッシュＲＯＭの構成を示す図である。フラッシュＲＯＭ４上のほとんどの領域（第１領域１１）は上述のＢＩＯＳで使用されているが、近年のフラッシュＲＯＭ４の容量増加によって、比較的安価に大容量のフラッシュＲＯＭ４を使用することができるようになり、ある程度の未使用領域も確保できるようになっている。
【００２４】
第２ａ領域１２ａ，第２ｂ領域１２ｂは、起動日時及び初期化処理、自己診断処理の経過を保存するための領域である。起動不良が発生した際の解析に役立てられるように、周囲温度や各種ＩＣの温度やマザーボード上で使用している様々な電圧の情報なども保存しておくことが望ましい。
【００２５】
ただし、この領域へ書き込む情報が多ければ多いほど解析を行う際に有益ではあるが、フラッシュＲＯＭ４への書き込みは比較的低速であるため、あまり大きなデータにすると起動時間が遅くなるという弊害が生ずることに加えて、フラッシュＲＯＭ４の各ブロックの消去回数が、増加してしまうため、注意が必要である。また、第２ａ領域１２ａ，第２ｂ領域１２ｂの２つの領域は別々のブロックであり、それぞれ個別に消去できるように配置される。
【００２６】
第３領域１３は、前回起動時に起動が完了していなかったことを検出した際に、第２ａ領域１２ａ（または、第２ｂ領域１２ｂ）から、起動が完了しなかった時に保存されたデータをコピーし保存しておく領域である。そのデータに関連付けて、タイマー手段により検出されるタイムアウトのステータス情報と、起動不良が発生した時の装置構成も合わせて保存しておくことが望ましい。装置構成の情報は、初期化処理の途中で構築され、フラッシュＲＯＭ４上の別の領域に保存されるため、その際にこの領域に保存することが可能である。
【００２７】
図３は第２領域に保存するためのデータ配置の例を示す図である。図３では第２領域１２として、図２の第２ａ領域１２ａまたは第２ｂ領域１２ｂをいずれか一方を示し、第２領域１２内にデータを保存する空き領域がなくなるまで、起動する毎に日時情報、環境情報、及び初期化コード，自己診断コード等の処理番号を追記していく。
【００２８】
また、第２領域１２は、正常起動時の情報を保持する必要がなく、保存する処理番号も少ない場合には、図１のＲＴＣ５（ＳＲＡＭ）にて代用することも可能である。
【００２９】
また、第２領域１２は、起動不良が発生する頻度の取得などで活用できるため、各種Ｉ／Ｏを使用可能な上位プログラムから読み出す手段を準備しておくことが望ましい。
【００３０】
図４は第３領域に保存するためのデータ配置の例を示す図である。起動時に、図２の第２領域１２を検査し、前回の起動で初期化、自己診断処理が完了していないことを検出した場合、その情報が第３領域１３にコピーされ、さらに、ステータス情報のタイムアウトステータス１４と装置の構成情報１５を起動ログとして保存する。
【００３１】
また、第３領域１３も、その領域に空きがある限り追記することができるが、十分な容量を確保できるとは限らないため、各種Ｉ／Ｏを使用可能な上位プログラムから読み出す手段と消去する手段を準備しておくことが望ましい。
【００３２】
さらにまた、完全に起動できなくなってしまった時のために、フラッシュＲＯＭ４を着脱自在にソケットで実装するか、特許文献２に開示されているような方法を用いるなどして、保存されている情報を取得できるようにしておくことが望ましい。
【００３３】
また、図２、図５及び以下の説明では、第２領域１２を２つのブロックとして領域を割り当てているが、フラッシュＲＯＭ４の容量に余裕がある場合には、それ以上のブロック（領域）を割り当てることも可能である。その場合、正常に起動した等の情報を、多く保存することができるという利点がある。
【００３４】
図５は本実施形態の起動ログ保存方法を示すフローチャートである。処理動作について各図を参照しながら説明する。まず、第２領域（１２ａまたは１２ｂ）を検査し、前回データを保存した領域を決定する（Ｓ１）。これには、保存したデータの日時情報を使う方法や、図１に示すＳＲＡＭ（例えば、前述したＲＴＣ５に含まれる電池でバックアップされる小容量の不揮発性のメモリ）等にステータスとして保存しておく方法などが考えられる。次に、その領域から前回起動時に保存されたデータを取得し（Ｓ２）、そのデータ（一連の処理順に対応して処理完了の情報である処理番号）を検査することで、起動処理が最後まで完了しているかどうかを判定する（Ｓ３）。なお、この判定において、タイムアウト発生に基づき処理未完了と判断しても良い。
【００３５】
最後まで完了していなかった場合（Ｓ３のＮｏ）には、第３領域１３から空き領域を探し、そこに前回起動時に第２領域１２に保存されたデータをコピーし（Ｓ４）、それに合わせて、このデータに関連付けられフラッシュＲＯＭ４の別領域に保存されているタイマー手段のタイムアウトステータス、及び装置の構成情報も保存する（Ｓ５）。
【００３６】
なお、本実施形態では前回装置の起動処理が完了しているかどうかを確認し、完了していなかった場合に、第３領域１３へのデータコピーを初期段階で行っているが、初期化処理の１つとして実行することも可能であるし、初期化処理が完了した後で実行することも可能である。
【００３７】
次に、前回のデータを保存した第２領域１２のブロックに空き領域が存在するかどうかを判定する（Ｓ６）。存在しなければ（Ｓ６のＮｏ）、第２領域１２の別のブロックを選択する（Ｓ７）。なお、図５の記載では省略しているが、第２領域１２の選択したブロックで不要なデータが実際に消去されているかを確認し、消去されていなかった場合には、ここで消去するようにしておくことが望ましい。
【００３８】
次に、第２領域１２の選択したブロックの領域に今回のデータである日時情報（初期化処理を実行した日時）と、環境情報（可能であれば温度、各種電圧など）を保存、また処理Ｓ６にて、空き領域が存在する場合（Ｓ６のＹｅｓ）は、その空き領域に保存する（Ｓ８）。なお、近年のパーソナルコンピュータでは、ＣＰＵやマザーボードの温度や、各種電圧を取得できるセンサが搭載されていることが多く、これを活用することができる。
【００３９】
次に、第１領域のＢＩＯＳで行う各初期化処理、自己診断処理に対応し、これらの処理順に処理番号を、図３に示すようにデータ（日時情報、環境情報）に続けて保存する（Ｓ９）。また、各処理に合わせたタイマー手段のタイムアウト値を設定する（Ｓ１０）。このタイムアウト値の設定は、ユーザが異常を感じて電源の遮断やリセットボタンの押下を行うまでの時間よりも短く、正常に起動する時の処理に係る時間に比べて、長くなるような値となるようにすることが望ましい。また、装置構成により決定される環境情報に基づいて、タイムアウト値が設定され、タイムアウトが発生したことを示すステータス情報は、電源が遮断されても保持されるように、バックアップ電源で保持されるようにする必要がある。
【００４０】
タイマー手段のタイムアウト値の設定後、保存した処理番号に対応する初期化処理、自己診断処理を順番に実行する（Ｓ１１）。なお、タイマー手段は、ウォッチドッグタイマーとしての機能も有するものであっても良い。
【００４１】
前述した処理番号の追加保存として、処理Ｓ１１において実行し処理の完了により、実行された処理番号の書き込みを行う。例えば、「０１」〜「１０」までの初期化処理があり、第２領域１２の処理番号を書き込む領域のデータが空であることを示す番号を「００」とすると、処理番号を書き込む領域は「００，００，００，…００ｈ」となっている（図３参照）。
【００４２】
順番に初期化処理が実行されて、まず処理「０１」の完了により、処理番号を書き込む領域に「０１」が書き込まれて、「０１，００，００，…００ｈ」となり、さらに処理「０２」の完了により、「０１，０２，００，…００ｈ」となり、また処理「０３」の完了により、「０１，０２，０３，…００ｈ」と、処理の完了により順次書き込まれていく。これを繰り返し、全ての処理が完了することにより処理番号を書き込む領域のデータは「０１，０２，０３，…１０ｈ」となる。
【００４３】
また、タイムアウト値の設定により、タイムアウト発生時を検出するタイムアウトステータスを変更する。この処理番号の追加保存やタイムアウト値の設定等の初期化・自己診断処理を繰り返して、前述のデータに示す処理の完了した処理番号から、その順番等を正常動作時と比較し、例えば順番が途中で変わっている場合は暴走したこと、また途中で終わっている場合には、起動が異常終了したことを検出することにより、全ての初期化・自己診断処理が完了したことを確認する（Ｓ１２）。これらの処理が完了するまで（Ｓ１２のＮｏ）、処理番号を順次更新し（保存するアドレスを１進める）、繰り返し実行する（Ｓ１３）。
【００４４】
全ての初期化・自己診断処理が完了した後（Ｓ１２のＹｅｓ）、第２領域１２の選択したブロックに、次回起動時に、空き領域が存在するかを検査し（Ｓ１４）、空き領域が存在しない場合（Ｓ１４のＮｏ）には、現在選択していない第２領域１２のブロック消去を実行する（Ｓ１５）。
【００４５】
ブロックの消去を実行する際には、その消去回数を記録しておくことで、起動不良の発生頻度を調べる際に有益な情報となる、また、正常に起動が完了した回数を把握できることに加えて、書換え頻度がフラッシュＲＯＭ４の保証値に到達する前に交換作業を行うように指示することも可能になる。
【００４６】
最後に、処理Ｓ１５の消去処理の実行後と、処理Ｓ１４にて空き領域が存在する場合（Ｓ１４のＹｅｓ）、全ての処理が完了したことを示す処理番号を保存して（Ｓ１６）、初期化・自己診断処理を終了する。
【００４７】
以上の処理により、頻度が低い起動不良が発生した場合であっても、問題を引き起こしていた時に実行していたプログラムや、環境への依存性、発生頻度など、その要因を調査する際に有益な情報を多く得ることができ、障害解析を迅速に進めることが可能となる。
【産業上の利用可能性】
【００４８】
本発明に係る情報処理装置の起動ログ保存方法は、ワークエリアとして使用する不揮発性メモリに保持される処理に係る情報と各処理番号に基づき完了していない処理を検出し、検出した際に別の領域にコピーすることによって、障害が発生した時の情報を保存して、不良の要因を特定することができ、特に、表示手段のないエラー発生をユーザに通知することが制限される装置に有用である。
【図面の簡単な説明】
【００４９】
【図１】本発明の実施形態における情報処理装置の概略構成を示すブロック図
【図２】フラッシュＲＯＭの構成を示す図
【図３】第２領域に保存するデータ配置例を示す図
【図４】第３領域に保存するデータ配置例を示す図
【図５】本実施形態の起動ログ保存方法を示すフローチャート
【符号の説明】
【００５０】
１  ＣＰＵ
２  メモリコントローラ
３  ＤＲＡＭ
４  フラッシュＲＯＭ
５  ＲＴＣ／ＣＭＯＳ
６  ビデオコントローラ
７  ディスクコントローラ
１１  第１領域
１２  第２領域
１２ａ  第２ａ領域
１２ｂ  第２ｂ領域
１３  第３領域
１４  タイムアウトステータス
１５  構成情報
【図１】
2009211625.tif 000003
【図２】
2009211625.tif 000004
【図３】
2009211625.tif 000005
【図４】
2009211625.tif 000006
【図５】
2009211625.tif 000007