説明

情報処理装置の起動ログ保存方法

【課題】発生頻度が低い場合であっても起動時に不良を引き起こす要因を解析するための十分な情報を得る。
【解決手段】電源投入後のリセット解除により、CPU1はフラッシュROM4に保存のプログラム(デバイスの初期化と自己診断プログラム)を実行する。このフラッシュROM4のほとんどの領域(第1領域)はBIOSで使用され、第2領域は、起動日時及び初期化処理、自己診断処理の経過情報、環境情報などが処理番号ともに保存され、第3領域は、前回未完了処理の検出時に、検出データを第2領域からコピーし、このデータに関連付けたタイムアウトのステータス情報、装置構成も保存する。この第2領域に保持した各処理番号に基づき未完了処理を検出し、検出したデータ、タイムアウトステータス情報、装置構成等を第3の領域にコピーすることで、障害発生時の情報だけが保存され、起動不良の要因を特定できる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、不揮発性メモリを起動用のメモリとして使用し、起動不良の原因を特定する情報を得られる情報処理装置の起動ログ保存方法に関するものである。
【背景技術】
【0002】
従来、自己診断を行う情報処理装置において、診断エラーの内容を示すエラーコードは特定の不揮発性メモリに障害履歴として保存され、自己診断プログラムで診断される対象モジュールを示す実行コードをディスプレイ等に出力し、確認することが可能である。また、実行コードを不揮発性メモリに保存するものも存在する。
【0003】
また、この種のデータ保存方式としては、障害発生時に主メモリのデータを保存したり、障害監視をタイマーで行って障害時に割り込みにより主メモリの内容を外部記憶装置に保存したり、また障害発生時処理していたデータを保存して、次回起動時の試験データにして装置の試験を行ったり、実行時に障害情報を保存しておき、障害復旧後にトレースデータから、実行記録の復旧を行ったり、エラー情報をテーブルに登録する方法が考案されている。
【0004】
このように、出力した実行コードを不揮発性メモリに保持しているが、実行コードを保存していても、コード保持領域が固定で再起動を行うと実行コードが上書きされてしまい、特に間欠障害の場合においては、障害の発生したモジュールを確認することが困難になる。
【0005】
この問題を解決するため特許文献1には、起動時に順次実行される自己診断プログラムが実行される前に、診断対象に応じた処理番号の診断コードを不揮発性のメモリに保存し、全ての自己診断プログラムが完了した時に、この自己診断が完了したことを示す処理番号の完了コードで置換えて、次回起動時に完了コードが保存されていなかった場合には、複数個の処理番号のコードを保持できる別の領域に処理番号のコードを保存する。このようにすることで、複数の要因であっても起動不良が発生した原因を、後から解析することができるようにしている。
【特許文献1】特許第3097621号公報
【特許文献2】特開2004−302631号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、パーソナルコンピュータなど実際の情報処理装置では、自己診断プログラムはハードウェアの初期化処理と合わせて実行されており、ハードウェアの不良などによっては、想定外の動作をしてしまうことが考えられる。その際、現在実行している診断対象を示すために、不揮発性メモリに保持されている処理番号を、違った処理番号に置換えてしまう可能性がある。このような現象が発生した場合、処理番号が示す実際には不具合が発生していない部分を解析することになるため、逆に障害解析を妨げることになってしまうという問題がある。
【0007】
また、自己診断プログラム実施中に、停電の発生、エンドユーザによる電源遮断またはリセットなどが実行された場合には、処理時間が長い稼働中のプログラムを示す処理番号が、障害は発生していないにもかかわらず保存されてしまう可能性が高く、この場合も障害解析を妨げる要因となってしまうという問題があった。
【0008】
本発明は、前記従来技術の問題を解決することに指向するものであり、発生頻度が低い場合であっても起動時に不良を引き起こす要因を解析するための十分な情報を得る機能を有する情報処理装置の起動ログ保存方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
前記の目的を達成するために、本発明に係る請求項1に記載した情報処理装置の起動ログ保存方法は、順次実行される初期化処理を行う複数のモジュール化されたプログラムを第1の領域に格納した不揮発性メモリと、プログラムを実行するCPUとを備えた情報処理装置の起動ログ保存方法であって、不揮発性メモリには、ワークエリアとして使用するための第2の領域と、障害情報を保存するための第3の領域とを有し、各処理を実行する際に、第2の領域に複数のモジュール化されたプログラムの各処理に対応した処理番号を順番に保存する工程と、第2の領域に保存された各処理番号を調べ、正常に完了していない処理を検出した際に、検出した処理番号を第3の領域にコピーする工程とを設けたことにより、ワークエリアとして使用する不揮発性メモリの第2の領域に保持される各処理番号に基づき完了していない処理を検出し、検出した際に第3の領域にコピーすることで障害が発生した時の情報だけが保存され、起動不良の要因を特定することができる。
【0010】
また、請求項2に記載した起動ログ保存方法は、請求項1の起動ログ保存方法において、初期化処理中にタイマー手段が検出するタイムアウトが発生したことを示すステータス情報を装置の電源断後であっても保持する工程と、モジュール化されたプログラムの各初期化処理を行う前に、タイマー手段のタイムアウト値を設定する工程と、前回起動時に第2の領域に保存された処理番号とともに、前記ステータス情報を第3の領域にコピーする工程とを設けたことにより、タイムアウト値を適切に選択して、タイムアウト発生のステータス情報も第3の領域へ保存することで、外的要因で完了できなかった処理を識別して、障害解析時の有益な情報を得られ、さらに、初期化処理中の電源断やリセットが実施されたことも検出することができる。
【0011】
また、請求項3に記載した起動ログ保存方法は、請求項2の起動ログ保存方法において、初期化処理中にタイムアウトの発生を検出した時のみ、前回起動時に第2の領域に保存された処理番号を第3の領域にコピーすることにより、第3の領域を十分に確保できなくとも、より有効に使用することができる。
【0012】
また、請求項4に記載した起動ログ保存方法は、請求項2,3の起動ログ保存方法において、タイマー手段が、ウォッチドッグタイマーとしての機能も有することにより、機器の追加構成を少なくできる。
【0013】
また、請求項5に記載した起動ログ保存方法は、請求項1〜3の起動ログ保存方法において、初期化処理を行うプログラムを格納する不揮発性メモリと、第2,第3の領域を有する不揮発性メモリとは、別構成の不揮発性メモリであって、かつ着脱自在であることにより、障害情報を記録した第2,第3の領域の不揮発性メモリにより、装置の起動ができなくなった場合でも、障害を解析する有益な情報を得ることができる。
【0014】
また、請求項6に記載した起動ログ保存方法は、請求項5の起動ログ保存方法において、不揮発性メモリとして、フラッシュROMを用いることにより、駆動電源を不要にできる。
【0015】
また、請求項7に記載した起動ログ保存方法は、請求項5の起動ログ保存方法において、第2の領域が、2つ以上のブロックからなり、最初のブロックに空き領域がなくなった時には、次のブロックに保存を行う処理を順次実施し、最後のブロックに空き領域がなくなった時には、最初のブロックを消去して用いるリングバッファを形成することにより、複数のブロックとして使用し、リングバッファを形成することで、正常動作時の履歴も保存できるとともに、消去回数を減らして不揮発性メモリの信頼性を確保できる。
【0016】
また、請求項8に記載した起動ログ保存方法は、請求項7の起動ログ保存方法において、第2の領域として用いるブロックの消去は、ブロックから別のブロックへ全情報の保存が終了した後に行うことにより、消去を必要とする時で、一連の処理の完了後に行うため、他の処理への影響を防ぐことができる。
【0017】
また、請求項9に記載した起動ログ保存方法は、請求項1〜8の起動ログ保存方法において、第2及び第3の領域に保存される情報には、日時、装置の環境や構成情報などの条件も合わせて保存する構成により、起動不良発生時の情報として、装置が置かれた環境や構成情報を含めた、発生要因の解析を行う際の有益な情報を得ることができる。
【発明の効果】
【0018】
本発明によれば、ワークエリアとして使用する不揮発性メモリに保持される処理に係る情報と各処理番号に基づき完了していない処理を検出し、検出した際に別の領域にコピーすることによって、障害が発生した時の情報を保存して、不良の要因を特定することができるという効果を奏する。
【発明を実施するための最良の形態】
【0019】
以下、図面を参照して本発明における実施の形態を詳細に説明する。
【0020】
図1は本発明の実施の形態における情報処理装置の概略構成を示すブロック図である。図1に示す情報処理装置(パーソナルコンピュータ)において、電源投入後のリセットが解除されると、CPU1は不揮発性メモリであるフラッシュROM4に保存されたBIOS(Basic Input/Output System)と呼ばれるプログラムを最初に実行する。BIOSは各種デバイスの初期化とPOST(Power On Self Test)と呼ばれる自己診断プログラムを実行するとともに基本的なI/O操作のインターフェースを上位ソフトウェアに対して提供する。
【0021】
BIOSに含まれる初期化及び自己診断が全て完了すると、ディスクコントローラ7に接続されたディスク装置からオペレーティングシステムがDRAM3にロードされ、このオペレーティングシステムに処理が渡され、またオペレーティングシステムは、必要な初期化を継続する。
【0022】
オペレーティングシステムがロードされた後は、表示装置、ネットワーク、ディスク装置など各種I/Oが使用できるようになることが多いため、以下の説明ではフラッシュROM4に格納されているプログラムだけが、本発明の構成を使用するように記載しているが、オペレーティングシステムだけでなく、さらに上位のソフトウェアが動作するようになった後であっても、この機能を使用することを妨げるものではない。
【0023】
RTC(Real Time Clock)5は、装置の電源がオフ状態であっても電池(例えば、リチウム電池など)により動作可能な時計機能と、装置の各種設定情報を保持する小容量のSRAMを内蔵し、ワークエリアとしても使用可能である
また、図2はフラッシュROMの構成を示す図である。フラッシュROM4上のほとんどの領域(第1領域11)は上述のBIOSで使用されているが、近年のフラッシュROM4の容量増加によって、比較的安価に大容量のフラッシュROM4を使用することができるようになり、ある程度の未使用領域も確保できるようになっている。
【0024】
第2a領域12a,第2b領域12bは、起動日時及び初期化処理、自己診断処理の経過を保存するための領域である。起動不良が発生した際の解析に役立てられるように、周囲温度や各種ICの温度やマザーボード上で使用している様々な電圧の情報なども保存しておくことが望ましい。
【0025】
ただし、この領域へ書き込む情報が多ければ多いほど解析を行う際に有益ではあるが、フラッシュROM4への書き込みは比較的低速であるため、あまり大きなデータにすると起動時間が遅くなるという弊害が生ずることに加えて、フラッシュROM4の各ブロックの消去回数が、増加してしまうため、注意が必要である。また、第2a領域12a,第2b領域12bの2つの領域は別々のブロックであり、それぞれ個別に消去できるように配置される。
【0026】
第3領域13は、前回起動時に起動が完了していなかったことを検出した際に、第2a領域12a(または、第2b領域12b)から、起動が完了しなかった時に保存されたデータをコピーし保存しておく領域である。そのデータに関連付けて、タイマー手段により検出されるタイムアウトのステータス情報と、起動不良が発生した時の装置構成も合わせて保存しておくことが望ましい。装置構成の情報は、初期化処理の途中で構築され、フラッシュROM4上の別の領域に保存されるため、その際にこの領域に保存することが可能である。
【0027】
図3は第2領域に保存するためのデータ配置の例を示す図である。図3では第2領域12として、図2の第2a領域12aまたは第2b領域12bをいずれか一方を示し、第2領域12内にデータを保存する空き領域がなくなるまで、起動する毎に日時情報、環境情報、及び初期化コード,自己診断コード等の処理番号を追記していく。
【0028】
また、第2領域12は、正常起動時の情報を保持する必要がなく、保存する処理番号も少ない場合には、図1のRTC5(SRAM)にて代用することも可能である。
【0029】
また、第2領域12は、起動不良が発生する頻度の取得などで活用できるため、各種I/Oを使用可能な上位プログラムから読み出す手段を準備しておくことが望ましい。
【0030】
図4は第3領域に保存するためのデータ配置の例を示す図である。起動時に、図2の第2領域12を検査し、前回の起動で初期化、自己診断処理が完了していないことを検出した場合、その情報が第3領域13にコピーされ、さらに、ステータス情報のタイムアウトステータス14と装置の構成情報15を起動ログとして保存する。
【0031】
また、第3領域13も、その領域に空きがある限り追記することができるが、十分な容量を確保できるとは限らないため、各種I/Oを使用可能な上位プログラムから読み出す手段と消去する手段を準備しておくことが望ましい。
【0032】
さらにまた、完全に起動できなくなってしまった時のために、フラッシュROM4を着脱自在にソケットで実装するか、特許文献2に開示されているような方法を用いるなどして、保存されている情報を取得できるようにしておくことが望ましい。
【0033】
また、図2、図5及び以下の説明では、第2領域12を2つのブロックとして領域を割り当てているが、フラッシュROM4の容量に余裕がある場合には、それ以上のブロック(領域)を割り当てることも可能である。その場合、正常に起動した等の情報を、多く保存することができるという利点がある。
【0034】
図5は本実施形態の起動ログ保存方法を示すフローチャートである。処理動作について各図を参照しながら説明する。まず、第2領域(12aまたは12b)を検査し、前回データを保存した領域を決定する(S1)。これには、保存したデータの日時情報を使う方法や、図1に示すSRAM(例えば、前述したRTC5に含まれる電池でバックアップされる小容量の不揮発性のメモリ)等にステータスとして保存しておく方法などが考えられる。次に、その領域から前回起動時に保存されたデータを取得し(S2)、そのデータ(一連の処理順に対応して処理完了の情報である処理番号)を検査することで、起動処理が最後まで完了しているかどうかを判定する(S3)。なお、この判定において、タイムアウト発生に基づき処理未完了と判断しても良い。
【0035】
最後まで完了していなかった場合(S3のNo)には、第3領域13から空き領域を探し、そこに前回起動時に第2領域12に保存されたデータをコピーし(S4)、それに合わせて、このデータに関連付けられフラッシュROM4の別領域に保存されているタイマー手段のタイムアウトステータス、及び装置の構成情報も保存する(S5)。
【0036】
なお、本実施形態では前回装置の起動処理が完了しているかどうかを確認し、完了していなかった場合に、第3領域13へのデータコピーを初期段階で行っているが、初期化処理の1つとして実行することも可能であるし、初期化処理が完了した後で実行することも可能である。
【0037】
次に、前回のデータを保存した第2領域12のブロックに空き領域が存在するかどうかを判定する(S6)。存在しなければ(S6のNo)、第2領域12の別のブロックを選択する(S7)。なお、図5の記載では省略しているが、第2領域12の選択したブロックで不要なデータが実際に消去されているかを確認し、消去されていなかった場合には、ここで消去するようにしておくことが望ましい。
【0038】
次に、第2領域12の選択したブロックの領域に今回のデータである日時情報(初期化処理を実行した日時)と、環境情報(可能であれば温度、各種電圧など)を保存、また処理S6にて、空き領域が存在する場合(S6のYes)は、その空き領域に保存する(S8)。なお、近年のパーソナルコンピュータでは、CPUやマザーボードの温度や、各種電圧を取得できるセンサが搭載されていることが多く、これを活用することができる。
【0039】
次に、第1領域のBIOSで行う各初期化処理、自己診断処理に対応し、これらの処理順に処理番号を、図3に示すようにデータ(日時情報、環境情報)に続けて保存する(S9)。また、各処理に合わせたタイマー手段のタイムアウト値を設定する(S10)。このタイムアウト値の設定は、ユーザが異常を感じて電源の遮断やリセットボタンの押下を行うまでの時間よりも短く、正常に起動する時の処理に係る時間に比べて、長くなるような値となるようにすることが望ましい。また、装置構成により決定される環境情報に基づいて、タイムアウト値が設定され、タイムアウトが発生したことを示すステータス情報は、電源が遮断されても保持されるように、バックアップ電源で保持されるようにする必要がある。
【0040】
タイマー手段のタイムアウト値の設定後、保存した処理番号に対応する初期化処理、自己診断処理を順番に実行する(S11)。なお、タイマー手段は、ウォッチドッグタイマーとしての機能も有するものであっても良い。
【0041】
前述した処理番号の追加保存として、処理S11において実行し処理の完了により、実行された処理番号の書き込みを行う。例えば、「01」〜「10」までの初期化処理があり、第2領域12の処理番号を書き込む領域のデータが空であることを示す番号を「00」とすると、処理番号を書き込む領域は「00,00,00,…00h」となっている(図3参照)。
【0042】
順番に初期化処理が実行されて、まず処理「01」の完了により、処理番号を書き込む領域に「01」が書き込まれて、「01,00,00,…00h」となり、さらに処理「02」の完了により、「01,02,00,…00h」となり、また処理「03」の完了により、「01,02,03,…00h」と、処理の完了により順次書き込まれていく。これを繰り返し、全ての処理が完了することにより処理番号を書き込む領域のデータは「01,02,03,…10h」となる。
【0043】
また、タイムアウト値の設定により、タイムアウト発生時を検出するタイムアウトステータスを変更する。この処理番号の追加保存やタイムアウト値の設定等の初期化・自己診断処理を繰り返して、前述のデータに示す処理の完了した処理番号から、その順番等を正常動作時と比較し、例えば順番が途中で変わっている場合は暴走したこと、また途中で終わっている場合には、起動が異常終了したことを検出することにより、全ての初期化・自己診断処理が完了したことを確認する(S12)。これらの処理が完了するまで(S12のNo)、処理番号を順次更新し(保存するアドレスを1進める)、繰り返し実行する(S13)。
【0044】
全ての初期化・自己診断処理が完了した後(S12のYes)、第2領域12の選択したブロックに、次回起動時に、空き領域が存在するかを検査し(S14)、空き領域が存在しない場合(S14のNo)には、現在選択していない第2領域12のブロック消去を実行する(S15)。
【0045】
ブロックの消去を実行する際には、その消去回数を記録しておくことで、起動不良の発生頻度を調べる際に有益な情報となる、また、正常に起動が完了した回数を把握できることに加えて、書換え頻度がフラッシュROM4の保証値に到達する前に交換作業を行うように指示することも可能になる。
【0046】
最後に、処理S15の消去処理の実行後と、処理S14にて空き領域が存在する場合(S14のYes)、全ての処理が完了したことを示す処理番号を保存して(S16)、初期化・自己診断処理を終了する。
【0047】
以上の処理により、頻度が低い起動不良が発生した場合であっても、問題を引き起こしていた時に実行していたプログラムや、環境への依存性、発生頻度など、その要因を調査する際に有益な情報を多く得ることができ、障害解析を迅速に進めることが可能となる。
【産業上の利用可能性】
【0048】
本発明に係る情報処理装置の起動ログ保存方法は、ワークエリアとして使用する不揮発性メモリに保持される処理に係る情報と各処理番号に基づき完了していない処理を検出し、検出した際に別の領域にコピーすることによって、障害が発生した時の情報を保存して、不良の要因を特定することができ、特に、表示手段のないエラー発生をユーザに通知することが制限される装置に有用である。
【図面の簡単な説明】
【0049】
【図1】本発明の実施形態における情報処理装置の概略構成を示すブロック図
【図2】フラッシュROMの構成を示す図
【図3】第2領域に保存するデータ配置例を示す図
【図4】第3領域に保存するデータ配置例を示す図
【図5】本実施形態の起動ログ保存方法を示すフローチャート
【符号の説明】
【0050】
1 CPU
2 メモリコントローラ
3 DRAM
4 フラッシュROM
5 RTC/CMOS
6 ビデオコントローラ
7 ディスクコントローラ
11 第1領域
12 第2領域
12a 第2a領域
12b 第2b領域
13 第3領域
14 タイムアウトステータス
15 構成情報

【特許請求の範囲】
【請求項1】
順次実行される初期化処理を行う複数のモジュール化されたプログラムを第1の領域に格納した不揮発性メモリと、前記プログラムを実行するCPUとを備えた情報処理装置の起動ログ保存方法であって、
前記不揮発性メモリには、ワークエリアとして使用するための第2の領域と、障害情報を保存するための第3の領域とを有し、各処理を実行する際に、前記第2の領域に前記複数のモジュール化されたプログラムの各処理に対応した処理番号を順番に保存する工程と、前記第2の領域に保存された各処理番号を調べ、正常に完了していない処理を検出した際に、前記検出した処理番号を前記第3の領域にコピーする工程と設けたことを特徴とする起動ログ保存方法。
【請求項2】
前記初期化処理中にタイマー手段が検出するタイムアウトが発生したこと示すステータス情報を装置の電源断後であっても保持する工程と、モジュール化されたプログラムの各初期化処理を行う前に、前記タイマー手段のタイムアウト値を設定する工程と、前回起動時に第2の領域に保存された処理番号とともに、前記ステータス情報を第3の領域にコピーする工程とを設けたことを特徴とする請求項1記載の起動ログ保存方法。
【請求項3】
前記初期化処理中にタイムアウトの発生を検出した時のみ、前回起動時に第2の領域に保存された処理番号を第3の領域にコピーすることを特徴とする請求項2記載の起動ログ保存方法。
【請求項4】
前記タイマー手段が、ウォッチドッグタイマーとしての機能も有することを特徴とする請求項2または3記載の起動ログ保存方法。
【請求項5】
前記初期化処理を行うプログラムを格納する不揮発性メモリと、第2,第3の領域を有する不揮発性メモリとは、別構成の不揮発性メモリであって、かつ着脱自在であることを特徴とする請求項1〜3のいずれか1項に記載の起動ログ保存方法。
【請求項6】
前記不揮発性メモリとして、フラッシュROMを用いたことを特徴とする請求項5記載の起動ログ保存方法。
【請求項7】
前記第2の領域が、2つ以上のブロックからなり、最初のブロックに空き領域がなくなった時には、次のブロックに保存を行う処理を順次実施し、最後のブロックに空き領域がなくなった時には、前記最初のブロックを消去して用いるリングバッファを形成することを特徴とする請求項5記載の起動ログ保存方法。
【請求項8】
前記第2の領域として用いるブロックの消去は、前記ブロックから別のブロックへ全情報の保存が終了した後に行うことを特徴とする請求項7記載の起動ログ保存方法。
【請求項9】
前記第2及び第3の領域に保存される情報には、日時、装置の環境や構成情報などの条件も合わせて保存することを特徴とする請求項1〜8のいずれか1項に記載の起動ログ保存方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2009−211625(P2009−211625A)
【公開日】平成21年9月17日(2009.9.17)
【国際特許分類】
【出願番号】特願2008−56325(P2008−56325)
【出願日】平成20年3月6日(2008.3.6)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】