(57)【要約】【課題】障害が発生した際に、障害の発生原因の特定を容易にすることが可能な情報記録装置を提供する。【解決手段】外部の装置による書き込みが可能な共有メモリ手段と、外部の装置における障害の発生を検出する障害検出手段と、外部の装置により共有メモリ手段に書き込まれた外部の装置が実行した処理の履歴を示す動作情報を取得する情報取得手段とを備える。【選択図】      図１
2015130023.tif 000002
【特許請求の範囲】
【請求項１】
外部の装置による書き込みが可能な共有メモリ手段と、
前記外部の装置における障害の発生を検出する障害検出手段と、
前記外部の装置により前記共有メモリ手段に書き込まれた前記外部の装置が実行した処理の履歴を示す動作情報を取得する情報取得手段と、
を備えることを特徴とする情報記録装置。
【請求項２】
前記動作情報は、機能単位での処理の履歴を示す第１の動作情報と、機能が細分化された単位での処理の履歴を示す第２の動作情報とを含む
ことを特徴とする請求項１に記載の情報記録装置。
【請求項３】
前記情報取得手段は、前記情報処理装置に指示して前記情報処理装置が有するＣＰＵ（Central Processing Unit）の内部状態またはプログラムの実行履歴を示す情報を更に取得する
ことを特徴とする請求項１又は２に記載の情報記録装置。
【請求項４】
前記動作に関する情報は、前記情報処理装置のハードウェアの初期化を行うプログラムの動作記録である
ことを特徴とする請求項１乃至３のいずれか１項に記載の情報記録装置。
【請求項５】
前記障害検出手段は、前記障害の発生として、前記情報処理装置のＢＩＯＳのストールを検出する
ことを特徴とする請求項１乃至４のいずれか１項に記載の情報記録装置。
【請求項６】
前記障害検出手段は、前記障害の発生として、前記情報処理装置のＢＩＯＳからのリセット指示を検出する
ことを特徴とする請求項１乃至５のいずれか１項に記載の情報記録装置。
【請求項７】
ＣＰＵと、
メモリと、
Ｉ／Ｏと、
前記Ｉ／Ｏを介した書き込みが可能な共有メモリ手段、障害の発生を前記Ｉ／Ｏを介して検出する障害検出手段、及び前記共有メモリ手段に書き込まれた動作情報を前記Ｉ／Ｏを介して取得する情報取得手段を有する情報記録装置と、
を備えることを特徴とする情報処理装置。
【請求項８】
外部の装置における障害の発生を検出し、
前記外部の装置により共有メモリに書き込まれた前記外部の装置が実行した処理の履歴を示す動作情報を取得する
ことを特徴とする情報記録方法。
【請求項９】
外部の装置による書き込みが可能な共有メモリを備えた情報記録装置が備えるコンピュータを、
前記外部の装置における障害の発生を検出する障害検出手段と、
前記外部の装置により共有メモリに書き込まれた前記外部の装置が実行した処理の履歴を示す動作情報を取得する情報取得手段と、
して機能させるための情報記録プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、障害の発生原因の特定を容易にすることが可能な、情報記録装置、情報処理装置、情報記録方法、及び情報記録プログラムに関する。
【背景技術】
【０００２】
「ファームウェア」とは、ハードウェアを制御するためのプログラムである。ファームウェアは、通常、ＲＯＭ（Read-only Memory）等のハードウェアに書き込まれた状態で、電子機器に組み込まれる。
【０００３】
「ＢＩＯＳ（Basic Input/Output System）」とは、ファームウェアの一つで、コンピュータ等の装置に搭載されたプログラムのうち、ハードウェアとの間で、最も低レベルな入出力を行うためのプログラムである。ＢＩＯＳは、装置の電源投入時に実行される。
【０００４】
ＢＩＯＳの機能には、装置のハードウェアの初期化や、記憶装置からのブートローダの呼び出しがある。ＢＩＯＳは、その他に、キーボードやディスプレイ等の入出力装置とプログラムとが相互に作用するための抽象化されたインタフェースを提供することもある。
【０００５】
「ブート」とは、装置の起動を意味し、電源を投入時のＯＳ（Operating System）等、装置の動作環境を立ち上げるまでの処理がこれに該当する。また、「ブートローダ」とは、ブート時に、装置の動作環境の立ち上げに必要なプログラムの読み込みを行うプログラムである。
【０００６】
ＢＩＯＳを用いる装置には、各種の課題がある。第１の課題は、ＢＩＯＳの動作時の障害に関する情報の記憶のための記憶容量の課題である。
【０００７】
ＢＩＯＳには、障害発生時の原因を調査するために、ＢＩＯＳが実行する処理の情報をログ（ＢＩＯＳトレース）に記録したり、ＣＰＵ（Central Processing Unit）のレジスタ情報やＢＩＯＳへの設定情報をログ（ＣＰＵログ）に記録したりするものがある。
【０００８】
ところが、ＢＩＯＳトレースやＣＰＵログには、記憶領域の容量に限りがあるため、ＢＩＯＳトレースやＣＰＵログをあまり詳細に記録することはできない。そのため、ＢＩＯＳトレースやＣＰＵログを粗く記録すると、ユーザは障害の詳細を掴むことができない。逆に、容量が許す限り、ＢＩＯＳトレースやＣＰＵログを詳細に記録しても、ユーザは障害の全体の流れを掴むことができない。このように、ＢＩＯＳトレースやＣＰＵログの記憶には、その記憶の詳細度合いを適正にすることが困難であるという問題がある。
【０００９】
障害発生時の原因を調査するためのトレースデータ記憶回路の記憶容量を必要以上に大きくすることなく、トレースデータの解析を容易にする技術の一例が、特許文献１に開示されている。
【００１０】
特許文献１のトレースデータ記憶回路は、第１のデータ記憶部と、抽出情報記憶部と、選択部と、第２のデータ記憶部とを含む。
【００１１】
特許文献１のトレースデータ記憶回路は、以下のように動作する。第１のデータ記憶部は、入力するトレースデータＤｉを時系列的に順次記憶する。抽出情報記憶部は、入力されるトレースデータＤｉの内、必要とするトレースデータを抽出するための抽出情報Ｄｓを予め記憶する。選択部は、入力したトレースデータＤｉに含まれる記号と抽出情報Ｄｓとを照合し、該当するトレースデータのみを選択する。第２のデータ記憶部は、選択されたトレースデータＤｏを記憶する。
【００１２】
以上の動作の結果、特許文献１のトレースデータ記憶回路では、第１のデータ記憶部１には障害発生時の詳細なトレースデータが記憶されるので、詳細な動作がトレースされる。第２のデータ記憶部には必要とするトレースデータのみが抽出されて記憶されるので、動作の大きな流れがトレースされる。従って、特許文献１のトレースデータ記憶回路は、トレースデータ記憶回路の記憶容量を必要以上に大きくすることなく、トレースデータの解析を容易にする。
【００１３】
ＢＩＯＳを用いる装置の第２の課題は、ＢＩＯＳストール発生時の障害対策の課題である。
【００１４】
情報処理装置立ち上げ中にハードウェアの故障や初期不良によるＢＩＯＳストールが起きた場合には、たとえ情報処理装置をリセットしたとしても、情報処理装置はＢＩＯＳストールを繰り返すだけで、ＢＩＯＳストールから復旧できるとは限らない。つまり、ＢＩＯＳストールが起きた場合に、ＢＩＯＳストールに対する適切な復旧処理がないことがあるという問題がある。
【００１５】
「ストール」とは、ソフトウェアの動作が停止して、コンピュータ等の情報処理装置が操作を受け付けなくなる状態のことである。
【００１６】
ＢＩＯＳの起動をすること自体ができなかった場合と、ＢＩＯＳの起動後の処理中にストールした場合とで、異なる復旧処理を行う技術の一例が、特許文献２に開示されている。
【００１７】
特許文献２のＢＩＯＳストール障害時復旧装置は、第１のウォッチドッグタイマーと、第２のウォッチドッグタイマーと、ＢＩＯＳ領域切替スイッチと、リセット回路と、通常動作用ＢＩＯＳデータ領域と、バックアップ用ＢＩＯＳデータ領域とを含む。
【００１８】
特許文献２のＢＩＯＳストール障害時復旧装置は、以下のように動作する。第１のウォッチドッグタイマーは、ＢＩＯＳが起動不可能の場合、タイムアウトを発生し、リセット回路を通じて、ＢＩＯＳストール障害時復旧装置の動作のリセットを実行する。それと同時に、第１のウォッチドッグタイマーは、ＢＩＯＳデータ領域切替スイッチに指示を出し、通常動作用ＢＩＯＳデータ領域ではなく、バックアップ用ＢＩＯＳデータ領域を使用してＢＩＯＳを起動する。第２のウォッチドッグタイマーは、ＢＩＯＳが処理中にストールした場合、タイムアウトを発生し、リセット回路を通じて、ＢＩＯＳストール障害時復旧装置のリセットを実行する。
【００１９】
以上の動作の結果、特許文献２のＢＩＯＳストール障害時復旧装置は、ＢＩＯＳの起動をすること自体ができなかった場合と、ＢＩＯＳの起動後の処理中にストールした場合とで、異なる復旧処理を行う。つまり、情報処理装置のリセットによりＢＩＯＳストールから復旧できる可能性が高い場合には単にリセットを実行し、情報処理装置のリセットによりＢＩＯＳストールから復旧できる可能性が低い場合には他の対策（ＢＩＯＳデータ領域切替）と共にリセットを実行する。従って、特許文献２のＢＩＯＳストール障害時復旧装置は、情報処理装置がＢＩＯＳストールから復旧できる可能性を高める。
【００２０】
上記の第２の課題に関して、ＢＩＯＳストール時には、ＢＩＯＳは外部からの操作に対して応答しないので、ストールの状況を示す情報を得ることができないため、ストール原因の特定が困難であるという問題がある。
【００２１】
ＣＰＵに重大なエラーが発生して動作不能になった場合に、動作不能になったＣＰＵの障害原因の推定に利用するために、動作不能になったＣＰＵ以外のＣＰＵのエラーログを取得する技術の一例が、特許文献３に開示されている。
【００２２】
特許文献３の情報処理装置は、以下のように動作する。各ＣＰＵがＩ／Ｏ（Input/Output）ハブから割り込み信号を受信すると、ＣＰＵは割り込みハンドラを起動する。割り込みハンドラは、ＣＰＵ毎に設けられた状態レジスタに所定の値を書き込み、所定の時間の経過後に各状態レジスタの値が所定の値に一致したか否かに基づいて、複数のＣＰＵの何れかに障害が発生したか否かを判定する。割り込みハンドラは、複数のＣＰＵの何れかに障害が発生した可能性が高いと判定すると、自ＣＰＵのログを取得して情報処理装置の管理手段に送信する。
【００２３】
以上の動作の結果、特許文献３の情報処理装置は、動作不能になったＣＰＵ以外のＣＰＵのエラーログを取得する。
【先行技術文献】
【特許文献】
【００２４】
【特許文献１】特開平０６−１６８１６４号公報（第２ページ、図１）
【特許文献２】特開２００８−２２５８５８号公報（第５−８ページ、図１、２）
【特許文献３】特開２０１３−０２５４４０号公報（第４−８ページ、図１−４）
【発明の概要】
【発明が解決しようとする課題】
【００２５】
特許文献１のトレースデータ記憶回路は、トレースデータ記憶回路の記憶容量を必要以上に大きくすることなく、トレースデータの解析を容易にする。ところが、ストールが発生したＢＩＯＳは外部からの操作に対して応答しないので、特許文献１のトレースデータ記憶回路には、ストールが発生したＢＩＯＳのＢＩＯＳトレースを取得することが困難であるという問題がある。
【００２６】
特許文献２のＢＩＯＳストール障害時復旧装置は、情報処理装置がＢＩＯＳストールから復旧できる可能性を高める。ところが、特許文献２のＢＩＯＳストール障害時復旧装置には、ＢＩＯＳストールの発生原因を特定することができないという問題がある。
【００２７】
特許文献３の情報処理装置は、複数のＣＰＵの何れかに障害が発生したときに、障害が発生していないＣＰＵのログを記録する。ところが、障害が発生したＣＰＵのログは記録されない。つまり、ユーザは、障害が発生していないＣＰＵのログを利用して、障害が発生したＣＰＵにおける障害発生の原因を推定しなければならない。従って、特許文献３の技術には、ストールが発生した際に、ストールの発生原因の特定が容易ではないという問題がある。
（発明の目的）
本発明の目的は、障害が発生した際に、障害の発生原因の特定を容易にすることが可能な、情報記録装置、情報処理装置、情報記録方法、及び情報記録プログラムを提供することにある。
【課題を解決するための手段】
【００２８】
本発明の情報記録装置は、外部の装置による書き込みが可能な共有メモリ手段と、外部の装置における障害の発生を検出する障害検出手段と、外部の装置により共有メモリ手段に書き込まれた外部の装置が実行した処理の履歴を示す動作情報を取得する情報取得手段とを備えることを特徴とする。
【００２９】
本発明の情報処理装置は、ＣＰＵと、メモリと、Ｉ／Ｏと、Ｉ／Ｏを介した書き込みが可能な共有メモリ手段、障害の発生をＩ／Ｏを介して検出する障害検出手段、及び共有メモリ手段に書き込まれた処理の履歴を示す動作情報をＩ／Ｏを介して取得する情報取得手段を有する情報記録装置とを備えることを特徴とする。
【００３０】
本発明の情報記録方法は、外部の装置における障害の発生を検出し、外部の装置により共有メモリに書き込まれた外部の装置が実行した処理の履歴を示す動作情報を取得することを特徴とする。
【００３１】
本発明の情報記録プログラムは、外部の装置による書き込みが可能な共有メモリを備えた情報記録装置が備えるコンピュータを、外部の装置における障害の発生を検出する障害検出手段と、外部の装置により共有メモリに書き込まれた外部の装置が実行した処理の履歴を示す動作情報を取得する情報取得手段として機能させることを特徴とする。
【発明の効果】
【００３２】
本発明によれば、障害が発生した際に、障害の発生原因の特定を容易にすることができるという効果がある。
【図面の簡単な説明】
【００３３】
【図１】本発明の第１の実施形態における情報記録装置の構成の一例を示すブロック図である。
【図２】本発明の第１の実施形態における情報記録装置の動作を示すフローチャートである。
【図３】本発明の第１の実施形態における情報記録装置の処理手順の具体例を説明するためのシーケンス図である。
【図４】本発明の第２の実施形態における情報処理装置の構成の一例を示すブロック図である。
【図５】本発明の第２の実施形態における情報処理装置のＢＩＯＳの正常時の動作を示す図である。
【図６】本発明の第２の実施形態における情報処理装置のＢＩＯＳトレースの具体例を説明するための図である。
【図７】本発明の第２の実施形態における情報処理装置のＢＩＯＳの詳細動作を示す図である。
【図８】本発明の第２の実施形態における情報処理装置のＢＭＣファームウェアの動作を示す図である。
【図９】本発明の第２の実施形態における情報処理装置のＳＭＩハンドラの動作を示す図である。
【図１０】本発明の第３の実施形態における情報処理装置のＢＭＣファームウェアの動作を示す図である。
【発明を実施するための形態】
【００３４】
以下、本発明の実施形態について図面を参照して詳細に説明する。尚、すべての図面において、同等の構成要素には同じ符号を付し、適宜説明を省略する。
（第１の実施形態）
本実施形態の情報記録装置の構成について説明する。
【００３５】
図１は、本実施形態の情報記録装置１００の構成の一例を示すブロック図である。
【００３６】
本実施形態の情報記録装置１００は、外部のコンピュータ等の、外部の情報処理装置２００から、障害発生検出用信号１４０と動作情報記録信号１５０を入力する。そして、情報記録装置１００は、動作情報記録信号１５０に含まれる動作情報を記録する、電子機器、又は他の電子機器に組み込まれる電子機器である。情報記録装置１００は、情報処理装置２００に接続される。
【００３７】
情報記録装置１００は、共有メモリ１３０と、障害検出手段１１０と、情報取得手段１２０とを含む。
【００３８】
共有メモリ１３０には、情報処理装置２００から、データを書き込むことができる。すなわち、共有メモリ１３０は、情報記録装置１００と情報処理装置２００とに共有される記憶手段である。
【００３９】
障害検出手段１１０は、外部の情報処理装置からの障害発生検出用信号１４０を監視し、情報処理装置おける障害の発生を検出する。例えば、障害検出手段１１０は、所定の時間、障害発生検出用信号１４０の入力がない場合、情報処理装置２００において障害が発生したものと判断する。あるいは、障害発生検出用信号１４０は、情報処理装置２００が自身の障害の発生を示す信号であってもよい。例えば、情報処理装置２００が内部にウォッチドッグタイマー（図示なし）を備える場合であれば、ウォッチドッグタイマーのタイムアウト出力信号を障害発生検出用信号１４０として使用することができる。この場合、障害検出手段１１０は、障害発生検出用信号１４０の受信を、情報処理装置２００における障害の発生の通知と判断することができる。
【００４０】
尚、情報処理装置２００における障害とは、例えば、情報処理装置２００のＢＩＯＳのストールである。
【００４１】
情報取得手段１２０は、情報処理装置２００により共有メモリ１３０に書き込まれた動作情報を取得する。動作情報は、情報処理装置２００が実行した各処理の順序を示す情報である。動作情報は、情報処理装置２００の、プログラム、ハードウェア、ＣＰＵ等の状態に関する情報等を更に含んでもよい。例えば、動作情報は、情報処理装置２００により実行された処理を識別可能な時系列の情報である。処理識別情報とは、例えば、実行されたプログラムのアドレスである。動作情報としてのアドレスは、実行されたプログラムが格納されていたすべてのアドレスである必要はなく、分岐の前後のアドレス等のみに、適宜、省略されてもよい。処理識別情報は、識別子の時系列中の各識別子に関連付けられた時刻等の情報を更に含んでもよい。あるいは、処理識別情報は、実行された処理又は実行された処理のグループの、名前、番号、説明等であってもよい。
【００４２】
情報取得手段１２０は、情報処理装置２００がストールした場合にも、共有メモリ１３０に書き込まれたデータ動作情報を取得することができる。上記の通り、動作情報は情報処理装置２００が実行した各処理の順序を示す情報なので、障害の発生原因の解析に用いることができる。尚、情報取得手段１２０は、取得した動作情報を、更に、出力装置、記憶装置、又は別の情報処理装置に出力してもよい。
【００４３】
情報記録装置１００は、内部にＣＰＵ（Central Processing Unit）と記憶手段を備えてもよい。そして、ＣＰＵが記憶手段に格納されたプログラムを実行することによって、障害検出手段１１０および情報取得手段１２０を実現してもよい。
【００４４】
次に、本実施形態の情報記録装置１００の動作について説明する。
【００４５】
図２は、情報記録装置１００の動作を示すフローチャートである。
【００４６】
情報記録装置１００の障害検出手段１１０は、情報処理装置２００からの障害発生検出用信号を監視する（ステップＳ１１）。
【００４７】
障害検出手段１１０は、障害発生検出用信号に基づき、情報処理装置２００における障害の発生の有無を判定する（ステップＳ１２）。
【００４８】
情報処理装置２００における障害の発生がなければ（ステップＳ１２：Ｎｏ）、障害検出手段１１０は、ステップＳ１１の処理に戻る。
【００４９】
情報処理装置２００における障害の発生があれば（ステップＳ１２：Ｙｅｓ）、情報記録装置１００の情報取得手段１２０は、情報処理装置２００により共有メモリ１３０に書き込まれたデータを取得し（ステップＳ１３）、処理を終了する。
【００５０】
次に、本実施形態の情報記録装置２００の処理手順の具体例について説明する。
【００５１】
図３は、情報記録装置２００の処理手順の具体例を説明するためのシーケンス図である。前述のように、障害発生検出用信号１４０は、情報処理装置２００の障害発生の検出の有無に関係なく、定期的に情報処理装置２００から出力されてもよい。あるいは、障害発生検出用信号１４０は、情報処理装置２００に障害が発生したときのみ出力されてもよい。本具体例では、情報処理装置２００は、自身の障害発生を検出したとき、障害発生検出用信号１４０を出力するものとしている。
【００５２】
情報処理装置２００上のプログラムは、適宜、共有メモリ１３０に動作情報を書き込む（ステップＳ８１−８２）。
【００５３】
共有メモリ１３０には、動作情報が書き込まれる（ステップＳ９１−９２）。
【００５４】
情報記録装置１００の障害検出手段１１０は、情報処理装置２００からの障害発生検出用信号を監視する（ステップＳ１１）。障害発生検出用信号１４０が、定期的に情報処理装置２００から出力される場合は、障害検出手段１１０は、本処理を繰り返せばよい。
【００５５】
情報処理装置２００において障害が発生し、情報処理装置２００は障害発生検出用信号１４０を出力する（ステップＳ８３）。
【００５６】
情報記録装置１００の障害検出手段１１０は、情報処理装置２００から障害発生検出用信号１４０を受信すると、情報処理装置２００において障害が発生したものと判断する（ステップＳ１２：Ｙｅｓ）。
【００５７】
情報処理装置２００が、定期的に障害発生検出用信号１４０を出力する場合は、障害検出手段１１０は、障害発生検出用信号１４０を一定時間、受信をしないときに、情報処理装置２００において障害が発生したものと判断すればよい。
【００５８】
情報記録装置１００の情報取得手段１２０は、情報処理装置２００により共有メモリ１３０に書き込まれた動作情報を取得する（ステップＳ１３）。
【００５９】
共有メモリ１３０は、情報記録装置１００に動作情報を返す（ステップＳ９３）。
【００６０】
以上説明したように、本実施形態の情報記録装置１００では、障害検出手段１１０は情報処理装置２００の障害を検出し、情報取得手段１２０は共有メモリ１３０に記録された情報処理装置２００の動作に関する情報を取得する。つまり、情報処理装置２００に障害が発生した際に、情報処理装置２００の障害の発生原因の特定に役立つ、共有メモリ１３０に記録された情報処理装置２００の動作に関する情報を取得することができる。従って、情報記録装置１００には、障害が発生した際に、障害の発生原因の特定を容易にするという効果がある。
【００６１】
尚、本実施形態では、情報記録装置１００が情報処理装置２００から独立した装置である場合について説明した。しかしながら、本実施形態の情報記録装置１００は、必ずしも情報処理装置２００から分離された単独の装置に限定されない。情報記録装置１００は、情報処理装置２００と統合された複合的な装置であってもよい。
（第２の実施形態）
本発明の情報記録装置の例として、情報記録装置であるＢＭＣが組み込まれた情報処理装置の例を第２の実施形態として示す。尚、第１の実施形態の情報記録装置１００の障害検出手段１１０及び情報取得手段１２０は、本実施形態においては、ＢＭＣファームウェアが有する機能として実装される。
【００６２】
「ＢＭＣ（Baseboard Management Controller）」とは、情報処理装置の管理用のプロセッサ（チップセット）である。ＢＭＣは、通常、情報処理装置本体とは独立した電源を有し、情報処理装置のハードウェアの状態の監視、記録等を行う。ＢＭＣの標準仕様は、ＩＰＭＩ(Intelligent Platform Management Interface)として規定されている。
【００６３】
本実施形態の情報記録装置１０５の構成について説明する。
【００６４】
図４は、情報処理装置１０５の構成の一例を示すブロック図である。
【００６５】
情報処理装置１０５は、ＣＰＵ１６０と、ＰＣＨ１７０と、ＢＭＣ１８０と、メモリ１９０と、共有メモリ１３５とを含む。
【００６６】
ＣＰＵ１６０上で動作するファームウェアを「ＢＩＯＳ」という。ＢＭＣ１８０上で動作するファームウェアを「ＢＭＣファームウェア」という。
【００６７】
「ＰＣＨ」とは、周辺Ｉ／Ｏ（Input/Output）制御用のプロセッサである。ＰＣＨは、「Ｉ／Ｏハブ」、「Ｉ／Ｏコントローラーハブ」、「ＩＣＨ」、「プラットフォームコントローラーハブ」、「サウスブリッジ」ともいわれる。
【００６８】
ＢＩＯＳは、情報処理装置１０５の電源が投入されると、ＣＰＵ１６０、ＰＣＨ１７０、メモリ１９０、およびＣＰＵ１６０のその他の周辺ハードウェア（図示なし）等のハードウェア（以降、これらをまとめて「周辺ハードウェア」という。）の初期化処理を実行する。ＢＩＯＳは、周辺ハードウェアの初期化処理の終了後に、付加機能の初期化処理を実行する。付加機能の初期化処理は、ＳＭＩハンドラの初期化処理を含む。
【００６９】
「ＳＭＩ（System Management Interrupt）」とは、システム管理のために使用される割り込みである。ＳＭＩは、ハードウェアエミュレーション等の拡張機能を提供するためにも使用される。
【００７０】
ＳＭＩハンドラは、ＢＩＯＳの機能の一部で、ＳＭＩを処理するプログラムである。ＳＭＩハンドラは、ＢＩＯＳ、ＢＭＣファームウェア、又は周辺ハードウェアからの割り込みを契機として起動される。ＳＭＩハンドラは、ＢＩＯＳが通常使用するメモリ１９０とは別の共有メモリ１３５を使用して動作する。そのため、ＳＭＩハンドラの動作は、ＢＩＯＳがストールしているか否かには影響を受けない。
【００７１】
ＢＭＣ１８０は、情報処理装置１０５がストールしているか否かを監視する。ストールの監視は、ＩＰＭＩにおけるWatchdog Timerコマンドを用いて実行される。ＢＩＯＳは、ＰＯＳＴ（Power On Self Test）を開始するときにWatchdog Timerコマンドでタイマーをセットし、ＰＯＳＴを完了するときにWatchdog Timerコマンドでタイマーをリセットする。ＢＭＣ１８０は、予め決められた時間内でWatchdog Timerがリセットされない場合に、ＢＩＯＳがストールしたものと判断する。Watchdog Timerコマンドによる監視機能の詳細はIntelligent Platform management Interface Specificationで定義される業界標準の仕様であるため、本書では説明しない。
【００７２】
メモリ１９０はＣＰＵ１６０が使用するメインメモリであり、共有メモリ１３５はＢＭＣ１８０が使用するメインメモリである。
【００７３】
ＢＩＯＳは、ＰＣＨ１７０、ＢＭＣ１８０を介して、ＢＭＣ１８０のメインメモリである共有メモリ１３５にＭＭＩＯ（Memory-Mapped I/O）アクセスすることができる。共有メモリ１３５は、ＢＩＯＳとＢＭＣファームウェアの両方がアクセスできるメモリである。ＢＩＯＳトレース及びＣＰＵログは、共有メモリ１３５を用いて保持される。ＢＩＯＳは、共有メモリ１３５内に確保された２つの領域、ＢＩＯＳトレース領域及びＣＰＵログ領域に書き込みを行う。
【００７４】
ＢＭＣファームウェアは、ＢＭＣファームウェアがＢＩＯＳのストールを検知したとき、粒度が異なる２種類のＢＩＯＳトレースを採取する。１つはＢＩＯＳが実行した処理の概要を示す粒度のＢＩＯＳトレース(以降、「概要ＢＩＯＳトレース」という。)である。他の１つはＢＩＯＳが障害発生の直前に実行していた処理の詳細を示す粒度のＢＩＯＳトレース(以降、「詳細ＢＩＯＳトレース」という。)である。
【００７５】
概要ＢＩＯＳトレースには、ＢＩＯＳがストールするまでにＢＩＯＳが実行した処理の履歴が記録される。概要ＢＩＯＳトレースにおいて、処理の履歴は機能単位で記録される。概要ＢＩＯＳトレースは、実行した機能のロードアドレスやエラーの情報を更に含んでもよい。
【００７６】
詳細ＢＩＯＳトレースには、ＢＩＯＳがストールする直前に実行した処理の履歴が記録される。詳細ＢＩＯＳトレースにおいて、処理の履歴は機能単位が更に細分割された単位（例えば、ソースコードと照らし合わせてＢＩＯＳが実行した処理が詳細に分かる単位）で記録される。
【００７７】
ＢＩＯＳは、ＢＭＣファームウェアがＳＭＩを発生させたことを契機として、ＣＰＵログを採取する。採取されるＣＰＵログには、ＣＰＵのレジスタ情報等、内部状態や、ＣＰＵが実行したプログラムのアドレス、ＢＩＯＳの設定情報等が含まれる。
【００７８】
その他の構成要素については、第１の実施形態と同じである。
【００７９】
次に、本実施形態情報処理装置１０５の動作について説明する。
【００８０】
図５は、情報処理装置１０５のＢＩＯＳの正常時の動作を示す図である。
【００８１】
まず、ＢＩＯＳは、情報処理装置１０５の電源が投入されると、ＳＭＩハンドラを初期化する（ステップＳ２２）。ＳＭＩハンドラの初期化では、ＢＩＯＳが、ＳＭＩの発生を契機としてＣＰＵログの採取を行うＳＭＩハンドラの初期設定を行う。
【００８２】
次に、ＢＩＯＳは、ある機能（機能１、機能２、機能Ｎ）に属する処理を実行する（ステップＳ２３、Ｓ２４、Ｓ２５）。各機能（機能１、機能２、機能Ｎ）に属する各処理の実行中に、ＢＩＯＳは、必要に応じて概要ＢＩＯＳトレース又は詳細ＢＩＯＳトレースに各処理の履歴を記録する。
【００８３】
図６は、情報処理装置１０５のＢＩＯＳトレースの具体例を説明するための図である。
【００８４】
ＢＩＯＳトレースとは、ＢＩＯＳの処理が行われた時刻、及びＢＩＯＳの処理を表すコードを含む情報で、ＢＭＣ１８０が持つ共有メモリ１３５に書き込まれる。ＢＩＯＳトレースには、上記のように、概要ＢＩＯＳトレースと、詳細ＢＩＯＳトレースとの２種類がある。
【００８５】
２種類のＢＩＯＳトレースが保持される領域（ＢＩＯＳトレース領域）は、共有メモリ１３５上に個別にマッピングされる。２種類のＢＩＯＳトレース領域の、フォーマット及び使い方は、両方のＢＩＯＳトレースで同じである。
【００８６】
まず、ＢＩＯＳトレース領域のフォーマットについて説明する。ＢＩＯＳトレース領域は、図６（１）に示されるように、ヘッダ部とデータ部とを含む。
【００８７】
ヘッダ部は、“Signature”、“Max Entry Number”、“Write Pointer”の３つの領域を含む。
【００８８】
領域“Signature”には、１６バイトまでの文字列が格納される。図６（２）の使用例では、領域“Signature”には、文字列“BIOSTRC\0”が格納されている。領域“Signature”に格納された文字列に基づいて、ＢＩＯＳトレースの領域が有効であるか否かを判定する。
【００８９】
領域“Max Entry Number”は８バイトのデータ長を有し、ＢＩＯＳトレース領域に残すことができるエントリ（処理の履歴の格納場所）の最大数（最大エントリ数）を示す。図６（２）の使用例では、値“４００ｈ”（＝１０２４）が格納されており、最大１０２４個の処理の履歴を格納することができる。
【００９０】
領域“Write Pointer”は８バイトのデータ長を有し、何個目のエントリに次の処理の履歴を書き込むかを示す番号である。領域“Write Pointer”は、ＢＩＯＳトレースのエントリとして処理の履歴が１つ書き込まれる度に、１つ増加される。領域“Write Pointer”の値＋１が最大エントリ数に達した場合は、領域“Write Pointer”の値を０に戻す。図６（２）では、領域“Max Entry Number”の値が“１０２４”(４００ｈ)なので、領域“Write Pointer”の値は、“１０２３”個目のエントリへの書き込みが終了すると“０”に戻される。また、図６（２）では、領域“Write Pointer”の値は“０００１ｈ”なので、次回の処理の履歴は、“０００１ｈ”個目のエントリに上書きされる。
【００９１】
データ部について説明する。図６（１）に示すように、１つのエントリは、８バイトの処理の履歴を記録した日時（領域“Data/Time”）と、８バイトの処理コード（領域“Code”）を含む。
【００９２】
領域“Data/Time”には、処理の履歴を記録した日時を記録する。図６（２）の“Entry0000”は、２０１３年９月１９日１０時に記録されたことを示す。
【００９３】
領域“Code”は、処理コードを示す。上位１バイトで処理に対応する機能を示し、残りのバイトで処理の内容を示す。処理の内容を表すコードは、処理に対応する機能毎に定義され、処理に対応する機能内で一意に決まる。
【００９４】
図７は、本実施形態の情報処理装置１０５のＢＩＯＳの詳細動作を示す図である。図７の処理は、図５の機能１−Ｎに対する各処理（ステップＳ２３−Ｓ２５）に対応する。図７では、各処理において、ＢＩＯＳトレースの処理の履歴が記録されるタイミングについて説明する。
【００９５】
ＢＩＯＳは、概要ＢＩＯＳトレース１を記録する（ステップＳ３１）。概要ＢＩＯＳトレースはＢＩＯＳが実行した機能の概要が分かるように記録することが目的なので、ＢＩＯＳは特定の機能（例えば、“機能１”）の実行開始直後に処理の履歴を記録する。また、エラーが起きた場合、ＢＩＯＳはエラーの内容を記録する。
【００９６】
ステップＳ３２、Ｓ３４、Ｓ３６は、特定の機能内における一連の処理を示す。一連の処理とは、例えば、“機能１”の処理として順次実行される、３つの内部処理、“処理１”、“処理２”、“処理３”である。
【００９７】
ステップＳ３３、Ｓ３５、Ｓ３７は、詳細ＢＩＯＳトレースの記録を示す。詳細ＢＩＯＳトレースで記録される内容及び方式は、ステップＳ３１における概要ＢＩＯＳトレースで記録する内容及び方式と同じである。詳細ＢＩＯＳトレースはＢＩＯＳが実行した処理がソースコードレベルで分かるように記録することが目的なので、処理の履歴は関数の実行直後やソースコードの分岐直後に記録される。このように記録することで、詳細ＢＩＯＳトレースから、ＢＩＯＳがソースコードにおいてどの経路に対応する処理を実行したのかが判別可能になる。
【００９８】
次に、異常時（ＢＩＯＳストール発生時）のＢＭＣファームウェアの動作について説明する。図５のステップＳ２４の後に、何らかの原因でＢＩＯＳのストールが発生した場合について説明する。
【００９９】
図８は、本実施形態の情報処理装置のＢＭＣファームウェアの動作を示す図である。
【０１００】
ＢＭＣファームウェアは、Watchdog Timerにより、ＢＩＯＳがストールしたことを検知する（ステップＳ４１）。
【０１０１】
ＢＭＣファームウェアは、共有メモリ１３５に保持される、概要ＢＩＯＳトレース及び詳細ＢＩＯＳトレースをファイルに保存する（ステップＳ４２）。
【０１０２】
ＢＭＣファームウェアは、ＢＩＯＳによるＣＰＵログ採取を起動するために、ＳＭＩを発生させる（ステップＳ４３）。ＳＭＩが発生した後のＢＩＯＳの動作については、後述する（図９）。
【０１０３】
ＢＭＣファームウェアは、ＢＩＯＳが採取したＣＰＵログを、受信する（ステップＳ４４）。
【０１０４】
ＢＭＣファームウェアは、ステップＳ４２と同じ方法で、再度ＢＩＯＳトレースを採取する（ステップＳ４５）。再度のＢＩＯＳトレースの採取は、ＣＰＵログ採取中のＢＩＯＳの処理の履歴を取得するために行われる。
【０１０５】
ＢＭＣファームウェアは、情報処理装置１０５の電源切断を実行する（ステップＳ４６）。
【０１０６】
最後に、ＳＭＩハンドラの処理について説明する。
【０１０７】
図９は、本実施形態の情報処理装置１０５のＳＭＩハンドラの動作を示す図である。
【０１０８】
ＢＩＯＳのＳＭＩハンドラは、図８のステップＳ４３でＢＭＣファームウェアが発生させたＳＭＩを、受信する（ステップＳ５１）。
【０１０９】
ＳＭＩハンドラは、ＳＭＩの要因をＢＭＣファームウェアへＩＰＭＩコマンドを発行することにより取得し、ＳＭＩの要因がＣＰＵログの採取であるか否かを判定する（ステップＳ５２）。尚、ＳＭＩの要因をＢＭＣファームウェアから取得するためのコマンド（ＩＰＭＩコマンド）は、ＩＰＭＩにおいて定義されている。ＳＭＩが発生すると、ＳＭＩハンドラは、ＳＭＩの要因によって実行すべき処理を決定する。
【０１１０】
ＳＭＩの要因がＣＰＵログ採取である場合には（ステップＳ５２：Ｙｅｓ）、ＳＭＩハンドラは、ＣＰＵログを採取し（ステップＳ５３）、採取したログをＢＭＣ１８０に送る（ステップＳ５４）。
【０１１１】
ＳＭＩの要因がＣＰＵログ採取以外である場合には（ステップＳ５２：Ｎｏ）、ＳＭＩハンドラはＣＰＵログ採取を行わず、処理を終了する。
【０１１２】
尚、ステップＳ５３において、ＢＩＯＳが採取するログは、例えば、ＣＰＵのレジスタ情報や実行アドレス情報、ＢＩＯＳの設定情報である。
【０１１３】
更に尚、ステップＳ５４におけるログの送信は、ＩＰＭＩコマンドを用いて実行する。ログ送信用のＩＰＭＩコマンドは、ログ送信用に新たに定義される。
【０１１４】
更に尚、ステップＳ５１−Ｓ５４の処理中にＢＩＯＳがストールすることも考えられる。そのため、概要ＢＩＯＳトレースと詳細ＢＩＯＳトレースの記録は停止せず、継続的に行われる。そして、ＳＭＩハンドラによる処理中にＢＩＯＳがストールした場合、ＢＩＯＳはＣＰＵログの採取を完了することができない。この場合、ＢＭＣファームウェアはＢＩＯＳのストールを検知し、ＢＩＯＳトレースを採取した後、電源を切断する（図８のステップＳ４５、Ｓ４６）。
【０１１５】
以上説明したように、本実施形態の情報処理装置１０５は、ＢＭＣファームウェアがＢＩＯＳのストールを検出した場合に、ＢＩＯＳトレースとＣＰＵログを採取する。ＢＩＯＳトレースには、ソースコードと照らし合わせてＢＩＯＳが実行した処理を詳細に示すように記録される。従って、情報処理装置１０５では、障害が発生した際の障害の発生原因の特定を容易にするという効果がある。
【０１１６】
また、本実施形態の情報処理装置１０５は、２種類の粒度のＢＩＯＳトレースを記録する。従って、情報処理装置１０５では、ＢＩＯＳ処理の全体の流れと、ＢＩＯＳの詳細な動きを掴むことが容易であるという効果がある。
【０１１７】
また、本実施形態の情報処理装置１０５のＢＭＣファームウェアは、ＢＩＯＳのストールを検出すると、ＳＭＩを発生させてＢＩＯＳが採取するＣＰＵのログ情報を収集する。ＣＰＵのログ情報には、ＢＩＯＳのストール時のＣＰＵのレジスタ情報や実行アドレス、ＢＩＯＳの設定情報が含まれる。従って、情報処理装置１０５では、ストールの発生原因を速やかに特定することができるという効果がある。
【０１１８】
更に、情報処理装置１０５では、ＢＩＯＳトレース及びＳＭＩハンドラで採取したＣＰＵログを合わせて解析することで、ストールするまでの動作及び、ストール時のＢＩＯＳの状況を多面的に把握できる。従って、情報処理装置１０５では、ストール原因の詳細な分析が可能という効果がある。
【０１１９】
尚、情報処理装置１０５が備えるべき最小の構成は、図４に示した構成である。ＣＰＵ、ＰＣＨ、ＢＭＣ、又はメモリの、個数又は実装方法は限定されない。情報処理装置１０５は、ＣＰＵ、ＰＣＨ、ＢＭＣと同様の機能を持つ他の構成要素であれば、それぞれ、ＣＰＵ、ＰＣＨ、ＢＭＣの代わりに構成要素として含んでもよい。
【０１２０】
また、情報処理装置１０５が有するＢＩＯＳトレースが含む情報は、ＣＰＵのレジスタ情報や及び命令ポインタ実行アドレス情報、ＢＩＯＳの設定情報に限定されない。
【０１２１】
また、ＢＩＯＳトレースの種類、目的、フォーマット、記録されるデータは図６に示された具体例に限定されない。
【０１２２】
また、ＢＩＯＳは、ＢＭＣファームウェアに対して、ＢＩＯＳトレースの採取を指示してもよい。ＢＩＯＳによるＢＭＣファームウェアに対するＢＩＯＳトレースの採取指示は、ＩＰＭＩコマンドや割り込み等を利用して、実現されてもよい。ＢＩＯＳによりＢＩＯＳトレース採取を指示されたＢＭＣファームウェアは、図８のステップＳ４２と同じ方法で、ＢＩＯＳトレースを採取してもよい。
（第３の実施形態）
ＢＭＣファームウェアが検出する異常はＢＩＯＳストールに限定されない。例えば、ＢＩＯＳが異常を検出して情報処理装置のリセットを指示する場合にも本発明を適用できる。本発明の情報記録装置の例として、ＢＩＯＳによるリセット指示を障害として検出する情報記録装置の例を第３の実施形態として示す。
【０１２３】
「リセット」とは、コンピュータ等の情報処理装置を強制的に再起動することである。リセットは、情報処理装置がハードウェアの異常等の原因で制御不能になった場合に再起動するために行われる。リセットにより、情報処理装置は電源投入時と同じ状態になり、再び使用可能になる。以下では、ＢＭＣファームウェアが、情報処理装置のリセット指示を受け取って、情報処理装置のリセットを実行する場合について説明する。
【０１２４】
ＢＭＣファームウェアがＢＩＯＳのリセット指示を検出する情報処理装置の例を第３の実施形態として示す。
【０１２５】
本実施形態の情報処理装置１０６構成について説明する。
【０１２６】
情報処理装置１０６の構成は、第２の実施形態の情報処理装置１０５の構成と同じである。
【０１２７】
次に、情報処理装置１０６動作について説明する。
【０１２８】
情報処理装置１０６のＢＭＣファームウェアの動作は、第２の実施形態の情報処理装置１０５のＢＭＣファームウェアの動作と異なる。
【０１２９】
情報処理装置１０６のその他の構成要素の動作は、第２の実施形態の情報処理装置１０５のその他の構成要素の動作と同じである。
【０１３０】
図１０は、情報処理装置１０６のＢＭＣファームウェアの動作を示す図である。
【０１３１】
本実施形態のＢＭＣファームウェアは、ＢＩＯＳによるＢＭＣファームウェアに対するリセット指示を検出する（ステップＳ６１）。
【０１３２】
ＢＭＣファームウェアは、２種類のＢＩＯＳトレース（概要ＢＩＯＳトレース及び詳細ＢＩＯＳトレース）を採取する（ステップＳ６２）。
【０１３３】
ＢＭＣファームウェアは、情報処理装置１０６のリセットを実行する（ステップＳ６３）。
【０１３４】
以上説明したように、本実施形態の情報処理装置１０６のＢＭＣファームウェアは、リセットを実行する前にＢＩＯＳトレースを採取する。すなわち、情報処理装置１０６は、リセットを実行する直前のＢＩＯＳの処理の履歴を記録することができる。つまり、ＢＩＯＳの処理の履歴を分析することにより、ＢＩＯＳのリセット指示が発生した際に、ＢＩＯＳのリセットが必要になった原因を判別することができる。従って、情報処理装置１０６では、障害が発生した際に、障害の発生原因の特定を容易にすることができるという効果がある。
【０１３５】
尚、図２、５、７、８、９、１０の情報記録装置の各処理は、ソフトウェアによって実行されてもよい。すなわち、各処理を行うためのコンピュータプログラムが、情報記録装置が備えるＣＰＵ（図２：１３）によって読み込まれ、実行されてもよい。プログラムを用いて各処理を行っても、上述の実施形態の処理と同内容の処理を行うことができる。そして、上記のプログラムは、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、フラッシュメモリ等の半導体記憶装置、光ディスク、磁気ディスク、光磁気ディスク等、非一時的な媒体に格納されてもよい。
【０１３６】
あるいは、各処理は、個別の回路等の構成要素によって実行されてもよい。
【０１３７】
尚、本願発明は、上述の実施形態に限定されるものではなく、本願発明の要旨を逸脱しない範囲で種々変更、変形して実施することができる。
【産業上の利用可能性】
【０１３８】
本発明の情報記録装置は、例えば、情報処理装置、サーバ等の、障害解析及び情報収集のために利用可能である。
【符号の説明】
【０１３９】
１４０    障害発生検出用信号
１５０    動作情報記録信号
【図１】
2015130023.tif 000003
【図２】
2015130023.tif 000004
【図３】
2015130023.tif 000005
【図４】
2015130023.tif 000006
【図５】
2015130023.tif 000007
【図６】
2015130023.tif 000008
【図７】
2015130023.tif 000009
【図８】
2015130023.tif 000010
【図９】
2015130023.tif 000011
【図１０】
2015130023.tif 000012
【手続補正書】
【提出日】平成27年3月23日(2015.3.23)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
情報処理装置による書き込みが可能な共有メモリ手段と、
前記情報処理装置における障害の発生を検出する障害検出手段と、
前記情報処理装置により前記共有メモリ手段に書き込まれた前記情報処理装置が実行した処理の履歴を示し、機能単位での処理の履歴を示す第１の動作情報及び機能が細分化された単位での処理の履歴を示す第２の動作情報を含む、動作情報を取得する情報取得手段と
を備えることを特徴とする情報記録装置。
【請求項２】
前記情報取得手段は、前記情報処理装置に指示して前記情報処理装置が有するＣＰＵ（Central Processing Unit）の内部状態またはプログラムの実行履歴を示す情報を更に取得する
ことを特徴とする請求項１に記載の情報記録装置。
【請求項３】
前記動作に関する情報は、前記情報処理装置のハードウェアの初期化を行うプログラムの動作記録である
ことを特徴とする請求項１又は２に記載の情報記録装置。
【請求項４】
前記障害検出手段は、前記障害の発生として、前記情報処理装置のＢＩＯＳのストールを検出する
ことを特徴とする請求項１乃至３のいずれか１項に記載の情報記録装置。
【請求項５】
前記障害検出手段は、前記障害の発生として、前記情報処理装置のＢＩＯＳからのリセット指示を検出する
ことを特徴とする請求項１乃至４のいずれか１項に記載の情報記録装置。
【請求項６】
ＣＰＵと、
メモリと、
Ｉ／Ｏと、
前記Ｉ／Ｏを介した書き込みが可能な共有メモリ手段、障害の発生を前記Ｉ／Ｏを介して検出する障害検出手段、及び前記共有メモリ手段に書き込まれた、機能単位での処理の履歴を示す第１の動作情報及び機能が細分化された単位での処理の履歴を示す第２の動作情報を含む動作情報を前記Ｉ／Ｏを介して取得する情報取得手段を有する情報記録装置と、
を備えることを特徴とする情報処理装置。
【請求項７】
情報処理装置における障害の発生を検出し、
前記情報処理装置により共有メモリに書き込まれた前記情報処理装置が実行した処理の履歴を示し、機能単位での処理の履歴を示す第１の動作情報及び機能が細分化された単位での処理の履歴を示す第２の動作情報を含む、動作情報を取得する
ことを特徴とする情報記録方法。
【請求項８】
情報処理装置による書き込みが可能な共有メモリを備えた情報記録装置が備えるコンピュータを、
前記情報処理装置における障害の発生を検出する障害検出手段と、
前記情報処理装置により共有メモリに書き込まれた前記情報処理装置が実行した処理の履歴を示し、機能単位での処理の履歴を示す第１の動作情報及び機能が細分化された単位での処理の履歴を示す第２の動作情報を含む、動作情報を取得する情報取得手段と、
して機能させるための情報記録プログラム。