(57)【要約】【課題】ＰＯＳＴ処理の進行の停止をより確実に検出することができる情報処理装置および情報処理方法を提供する。【解決手段】処理部はシステム・ファームウェアに基づく処理を実行し、制御部は前記処理を制御する。また、処理部は、オペレーティングシステムが起動する前に前記処理の進捗状況を示す進捗情報を前記処理の実行中に前記制御部に出力し、前記制御部は、前記処理の完了前に前記進捗情報が入力されるタイミングに基づいて前記処理の異常を検出する。【選択図】図２
2020140241.tif 000002
【特許請求の範囲】
【請求項１】
オペレーティングシステムが起動する前にシステム・ファームウェアに基づく処理を実行する処理部と、
前記処理を制御する制御部と、を備え、
前記処理部は、
前記処理の進捗状況を示す進捗情報を前記処理の実行中に前記制御部に出力し、
前記制御部は、
前記処理の完了前に前記進捗情報が入力されるタイミングに基づいて前記処理の異常を検出する
情報処理装置。
【請求項２】
前記制御部は、
前記進捗情報が最後に入力された時刻から自装置の動作停止が指示される時刻までの経過時間に基づいて前記異常の発生を判定し、
前記異常を判定するとき、前記異常を示す異常情報を記憶する
請求項１に記載の情報処理装置。
【請求項３】
前記進捗情報は、実行が完了した過程を示し、
前記制御部は、
自装置の動作停止が指示されるとき、
最後に入力された進捗情報に基づいて、実行が完了していない過程である未完了過程を推定し、
前記処理に含まれる過程ごとのカテゴリを示すカテゴリデータに基づいて、
前記未完了過程の種別を定める
請求項１または請求項２に記載の情報処理装置。
【請求項４】
前記未完了過程が前記システム・ファームウェアの検証に関する過程であるとき、前記制御部は、前記システム・ファームウェアの修復を設定する
請求項３に記載の情報処理装置。
【請求項５】
前記未完了過程が前記処理部に接続される機器に関する過程であるとき、前記制御部は、前記機器に関する過程の省略を設定する
請求項３または請求項４に記載の情報処理装置。
【請求項６】
前記未完了過程が前記処理部に接続される機器に関する過程であるとき、前記制御部は、前記機器に関する過程に係る機器別ファームウェアの修復を設定する
請求項３から請求項５のいずれか一項に記載の情報処理装置。
【請求項７】
オペレーティングシステムが起動する前にシステム・ファームウェアに基づく処理を実行する処理部と、
前記処理を制御する制御部と、を備える情報処理装置の方法であって、
前記処理部が、前記処理の進捗状況を示す進捗情報を前記処理の実行中に前記制御部に出力するステップと、
前記制御部が、前記処理の完了前に前記進捗情報が入力されるタイミングに基づいて前記処理の異常を検出するステップと、を有する
情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および情報処理方法に関する。
【背景技術】
【０００２】
情報処理装置を構成するコンピュータは、ハードウェアと各種のプログラムとのインタフェースを提供するためのシステム・ファームウェアを実装する。システム・ファームウェアは、コンピュータシステム全体の動作に関わり、プラットフォーム・ファームウェア、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）などとも呼ばれる。各種のプログラムには、オペレーティングシステム（ＯＳ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）、デバイス・ドライバーおよびアプリケーションプログラム（以下、アプリケーション）が含まれる。
【０００３】
システム・ファームウェアは、コンピュータに電力の供給が開始されてからＯＳがロードを開始するまでの間、ＰＯＳＴ（Ｐｏｗｅｒ  Ｏｎ  Ｓｅｌｆ  Ｔｅｓｔ）処理を実行させるためのプログラムである。ＰＯＳＴ処理は、システム・ファームウェアのコードの正常性の検証、自装置に接続されたデバイスの検出、検出したデバイスの初期化などの過程を有する。システム・ファームウェアは、通例、実行に要する各種のパラメータとともにＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）などの不揮発性メモリに格納される。
【０００４】
システム・ファームウェアが損傷することよりＰＯＳＴ処理においてハングアップし、ＯＳの起動に至らないことがある。ＯＳをより確実に起動させることを目的として、ＢＩＯＳ自己修復（ＢＩＯＳ  Ｓｅｌｆ−Ｈｅａｌｉｎｇ）の実行が提案してされていた。ＢＩＯＳ自己修復とは、ＢＩＯＳイメージが損傷されていないか否かを検出し、損傷を検出するときにＢＩＯＳイメージを修復（ファームウェア・リカバリ）する処理である。また、個々のデバイスに関しては、情報処理装置が備えるデバイスごとの対応、例えば、デバイス別のファームウェアの修復などが行われることがあった。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−３４５６１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、ＰＯＳＴ処理の進行が停止した時点では、そのことを自発的に検出できないことがあった。ひいては、ＰＯＳＴ処理の進行が停止した段階を特定できないため、その段階に適した修復がなされないことがあった。例えば、あるデバイスの初期化が停止した段階が特定できず、そのデバイスに対する措置をとることができないことがあった。
【課題を解決するための手段】
【０００７】
本発明は上記の課題を解決するためになされたものであり、本発明の一態様に係る情報処理装置は、オペレーティングシステムが起動する前にシステム・ファームウェアに基づく処理を実行する処理部と、前記処理を制御する制御部と、を備え、前記処理部は、前記処理の進捗状況を示す進捗情報を前記処理の実行中に前記制御部に出力し、前記制御部は、前記処理の完了前に前記進捗情報が入力されるタイミングに基づいて前記処理の異常を検出する。
【０００８】
上記の情報処理装置において、前記制御部は、前記進捗情報が最後に入力された時刻から自装置の動作停止が指示される時刻までの経過時間に基づいて前記異常の発生を判定し、前記異常を判定するとき、前記異常を示す異常情報を記憶してもよい。
【０００９】
上記の情報処理装置において、前記進捗情報は、実行が完了した過程を示し、前記制御部は、自装置の動作停止が指示されるとき、最後に入力された進捗情報に基づいて、実行が完了していない過程である未完了過程を推定し、前記処理に含まれる過程ごとのカテゴリを示すカテゴリデータに基づいて、前記未完了過程の種別を定めてもよい。
【００１０】
上記の情報処理装置において、前記未完了過程が前記システム・ファームウェアの検証に関する過程であるとき、前記制御部は、前記システム・ファームウェアの修復を設定してもよい。
【００１１】
上記の情報処理装置において、前記未完了過程が前記処理部に接続される機器に関する過程であるとき、前記制御部は、前記機器に関する過程の省略を設定してもよい。
【００１２】
上記の情報処理装置において、前記未完了過程が前記処理部に接続される機器に関する過程であるとき、前記制御部は、前記機器に関する過程に係る機器別ファームウェアの修復を設定してもよい。
【００１３】
本発明の第２態様に係る情報処理方法は、オペレーティングシステムが起動する前にシステム・ファームウェアに基づく処理を実行する処理部と、前記処理を制御する制御部と、を備える情報処理装置の方法であって、前記処理部が、前記処理の進捗状況を示す進捗情報を前記処理の実行中に前記制御部に出力するステップと、前記制御部が、前記処理の完了前に前記進捗情報が入力されるタイミングに基づいて前記処理の異常を検出するステップと、を有する。
【発明の効果】
【００１４】
本発明の上記態様によれば、ＰＯＳＴ処理の進行の停止をより確実に検出することができる。また、ＰＯＳＴ処理の進行が停止した段階を特定できることができる。
【図面の簡単な説明】
【００１５】
【図１】本実施形態に係る情報処理装置のハードウェア構成例を示す概略ブロック図である。
【図２】本実施形態に係る情報処理装置の機能構成例を示すブロック図である。
【図３】本実施形態に係るシステム・ファームウェアのカテゴリデータの例を示す図である。
【図４】本実施形態に係る処理履歴の例を示す図である。
【図５】本実施形態に係るＰＯＳＴ処理の例を示すフローチャートである。
【図６】本実施形態に係る異常検出処理の例を示すフローチャートである。
【図７】本実施形態に係る修復設定処理の例を示すフローチャートである。
【発明を実施するための形態】
【００１６】
以下、本発明の実施形態について、図面を参照して説明する。まず、本発明の実施形態に係る情報処理装置１０の構成例について説明する。図１は、本実施形態に係る情報処理装置１０のハードウェア構成例を示す概略ブロック図である。
情報処理装置１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１、ＭＣＨ（Ｍｅｍｏｒｙ  Ｃｏｎｔｒｏｌｌｅｒ  Ｈｕｂ）１３ａ、ＩＣＨ（Ｉ／Ｏ：Ｉｎｐｕｔ−ｏｕｔｐｕｔ  Ｃｏｎｔｒｏｌｌｅｒ  Ｈｕｂ）１３ｂ、システムメモリ１５、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１７、ディスプレイ１９、ＨＤＤ２１、通信モジュール２３、ファームウェアＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２５、ＮＶＲＡＭ（Ｎｏｎ−ｖｏｌａｔｉｌｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２７、ＥＣ（Ｅｍｂｅｄｄｅｄ  Ｃｏｎｔｒｏｌｌｅｒ）３１、電源ユニット３５、電源ボタン３７および入力デバイス３９を含んで構成される。
【００１７】
通信モジュール２３には、ＩＣＨ１３ｂが接続されている。通信モジュール２３は、所定の通信方式を用いて他の機器と無線で各種のデータを送受信する。所定の通信方式として、例えば、ＩＥＥＥ８０２．１１に規定された無線ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）の通信方式、ＩＥＥＥ８０２．１５．１に規定された無線個人領域ネットワーク（無線ＰＡＮ：Ｐｅｒｓｏｎａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などが利用可能である。
ファームウェアＲＯＭ２５は、システム・ファームウェアを格納する不揮発性メモリである。ファームウェアＲＯＭ２５は、例えば、ＳＰＩ（Ｓｅｒｉａｌ  Ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅ）フラッシュＲＯＭである。システム・ファームウェアは、いわゆるＢＩＯＳである。ＢＩＯＳは、例えば、ＵＥＦＩ（Ｕｎｉｆｉｅｄ  Ｅｘｔｅｎｓｉｂｌｅ  Ｆｉｒｍｗａｒｅ  Ｉｎｔｅｒｆａｃｅ）で規定されたソフトウェアインタフェースを採用したＳｙｓｔｅｍ  ＢＩＯＳファームウェアである。
ＮＶＲＡＭ２７は、各種の情報を記憶することができる不揮発性メモリである。
【００１８】
ＥＣ３１は、独自にＣＰＵ１１とは別個にＣＰＵなどのプロセッサ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭなどのメモリを含んで構成されるマイクロコンピュータである。ＥＣ３１は、入力デバイス３９から入力される操作信号を処理するための入力コントローラを含む。ＥＣ３１には、ＩＣＨ１３ｂ、電源ユニット３５、電源ボタン３７および入力デバイス３９が接続されている。
電源ユニット３５は、ＥＣ３１の制御に基づいて、情報処理装置１０の各デバイスに動作に要する電力を供給する。
【００１９】
電源ボタン３７は、ユーザの操作を受け付け、押下されるとき起動制御信号を、ＥＣ３１を経由して電源ユニット３５に出力する。電源ユニット３５は、ＥＣ３１と特に指定されたデバイス以外の大部分のデバイス（以下、主デバイス）への電力の供給を停止しているときに起動制御信号が入力されるとき、主デバイスへの電力の供給を開始する。主デバイスへの電力の供給中に電源ボタン３７から起動制御信号が入力されるとき、電源ユニット３５は、主デバイスへの電力の供給を停止する。図１に示す例では、主デバイスは、ＣＰＵ１１、ＭＣＨ１３ａ、ＩＣＨ１３ｂ、システムメモリ１５、ＧＰＵ１７、ディスプレイ１９、ＨＤＤ２１、通信モジュール２３、ファームウェアＲＯＭ２５、ＮＶＲＡＭ２７および入力デバイス３９が該当する。また、主デバイスのうち情報処理装置１０としての機能の発揮に要する最小限のデバイスを基本デバイスと呼ぶ。図１に示す例では、基本デバイスには、ＣＰＵ１１、ＭＣＨ１３ａ、ＩＣＨ１３ｂ、システムメモリ１５、ＧＰＵ１７、ディスプレイ１９およびＮＶＲＡＭ２７が該当する。また、基本デバイス以外の主デバイスを周辺デバイスと呼ぶ。図１に示す例では、ＨＤＤ２１と通信モジュール２３が周辺デバイスに該当する。
【００２０】
入力デバイス３９は、ユーザの操作を受け付け、受け付けた操作に応じた操作信号をＥＣ２７に出力する。入力デバイス３９には、例えば、キーボード、マウス、タッチセンサなどのいずれか、またはそれらの任意の組み合わせが含まれる。
なお、ＭＣＨ１３ａは、ＩＣＨ１３ｂと一体化して１個のチップセット１３として構成されてもよい。
【００２１】
（機能構成）
次に、情報処理装置１０の機能構成例について説明する。
図２は、本実施形態に係る情報処理装置１０の機能構成例を示すブロック図である。
情報処理装置１０は、処理部１１０および制御部１２０を含んで構成される。
【００２２】
ＣＰＵ１１は、電源ユニット３５からの電力の供給開始を検出するときブートを開始する。ブートとは、電力の供給が開始されてから情報処理装置１０全体が利用可能な状態にするまでの一連の処理を指す。ブートには、システム・ファームウェアに従って実行されるＰＯＳＴ処理が含まれる。ＰＯＳＴ処理は、プリブートとも呼ばれる。ＣＰＵ１１は、電力の供給開始を検出するとき最初にファームウェアＲＯＭ２５からシステム・ファームウェアを読み出し、読み出したシステム・ファームウェアに記述された命令で指示される処理を開始する。この処理がＰＯＳＴ処理に相当する。他方、ＣＰＵ１１は、電源ユニット３５からの電力の供給が停止されるとき動作を停止する（シャットダウン）。
【００２３】
本願では、各種のプログラム（システム・ファームウェア、ＯＳも含む）で記述された命令で示される処理を実行することを「プログラムを実行する」と呼ぶことがある。また、プログラムの実行を開始することを「プログラムを起動する」と呼ぶことがある。ドライバーで指示される処理を実行することを「ドライバーを実行する」と呼ぶことがある。ＣＰＵ１１は、読み出したシステム・ファームウェアを実行して処理部１１０として機能する。処理部１１０は、ＰＯＳＴ処理部１１２、および進捗情報管理部１１４を含んで構成される。
【００２４】
システム・ファームウェアは、複数のドライバー（指令）を含んで構成される。複数のドライバーは、階層化され、１個または複数の予め定めた機能やデバイスごとに分類されたカテゴリ（分類）に対する処理（コマンド）をまとめたものである。個々のドライバーには、そのドライバーの識別情報としてステータスコードが予め設定されている。ステータスコードは、対応するドライバーが属するカテゴリごとに共通の識別情報（例えば、最上位の桁から所定の桁数の番号）を含む。
また、システム・ファームウェアに予め配列された順序で、個々のドライバーで指示される過程（ステップ）が実行される。システム・ファームウェアに配列された複数のドライバーは、上記のカテゴリもしくはそのカテゴリをさらに細分化して、相互に順序が隣接する複数のドライバーからなるセグメント（区分）ごとに区分される。１つのセグメントは、いずれかのカテゴリに属するが、１つのカテゴリは必ずしも１つのセグメントに対応するとは限らない。システム・ファームウェアでは、各セグメントの終端を示すアンカーポイントが予め設定され、その直後のセグメントと区別される。従って、実行を完了したドライバーに対応するステータスコードは、ＰＯＳＴ処理の進捗状況を示す進捗情報とみることもできる。
【００２５】
ＰＯＳＴ処理部１１２は、システム・ファームウェアを構成する複数のドライバーのそれぞれを、予め設定された順序で逐次に実行する。逐次に実行するとは、あるドライバーの実行を完了した後、次の順序のドライバーの実行を開始することである。ＰＯＳＴ処理部１１２は、あるドライバーに対する処理結果として所定の返り値（応答）を取得したとき、実行を完了したと判定することができる。ＰＯＳＴ処理部１１２は、実行を完了したドライバーを示す実行完了情報を進捗情報管理部１１４に通知する。そして、ＰＯＳＴ処理部１１２がシステム・ファームウェア全体の処理が完了した後、ＣＰＵ１１は、ＯＳを起動させる（ＯＳブート）。つまり、ＰＯＳＴ処理部１１２は、ＯＳを起動させる前に、システム・ファームウェアに基づくＰＯＳＴ処理を実行する、といえる。
【００２６】
進捗情報管理部１１４は、ＰＯＳＴ処理部１１２から入力される実行完了情報を参照してＰＯＳＴ処理の進捗情報を管理する。進捗情報管理部１１４は、自部への電力の供給開始（電源投入）を検出するとき、電源投入を示す進捗情報を制御部１２０に出力する。
進捗情報管理部１１４は、実行完了情報が示すステータスコードが、予め定めたアンカーポイントに達するごとに、そのステータスコードを示す進捗情報を制御部１２０に出力する。
【００２７】
次に、システム・ファームウェアの構成例について説明する。システム・ファームウェアを構成する複数のドライバーは、基本デバイス初期化コード、一貫性検証コード、デバイス検出コード、システム設定コードおよび起動管理コードなどに分類される。デバイス検出コードは、個々のデバイスごとにさらに分類される。システム・ファームウェアには、個々のコードの実行に用いられるパラメータセットを含む。
【００２８】
基本デバイス初期化コードは、基本デバイスの検出、初期化、システムメモリ１５へのシステム・ファームウェアの記録（ロード）を指示するコードである。システム・ファームウェアには、それらのコードで記述されたドライバーを実行するための１以上のパラメータからなるパラメータセットが含まれる。
一貫性検証コードは、システム・ファームウェアの一貫性の検証を指示するドライバーを記述したコードである。一貫性の検証は、システム・ファームウェア全体の完全性と信頼性を判定する処理である。一貫性検証コードは、システム・ファームウェアの一部を修復するための修復コードを含んでいてもよい。修復コードは、例えば、修復対象コード情報（後述）で指示されるコードの修復を示すドライバーが記述されたコードを含む。
【００２９】
デバイス検出コードは、デバイス検出処理を指示するドライバーを記述したコードである。デバイス検出処理は、基本デバイスに接続される他のデバイスを検出し、検出した他のデバイスを初期化する処理である。検出対象となる他のデバイスは、上記の周辺デバイスに相当する。デバイス検出処理の処理結果として、検出したデバイスごとに動作の可否（イネーブル／ディスエーブル）を示す起動デバイス情報をシステム設定情報と関連付けてシステムメモリ１５に記憶される。システム設定情報は、ＯＳの起動の際に参照される。
【００３０】
システム設定コードは、システム設定処理を指示するコードである。システム設定処理は、システム設定のためのユーザインタフェースを提供し、システム設定情報を構成する１以上のパラメータを定める処理である。システム設定処理には、例えば、所定のシステム設定画面をディスプレイ１９に表示させ、表示開始から所定期間内に入力デバイス３９から入力される操作信号で指示もしくは選択されるパラメータセットを設定する処理が含まれる。システム設定処理には、所定期間を経過しても操作信号が入力されない場合には、予めシステム・ファームウェアに含まれるシステム設定情報のパラメータもしくはＮＶＲＡＭ２９に予め記憶されたパラメータをシステムメモリ１５に設定する処理が含まれる。
【００３１】
起動管理コードは、システム起動処理（ＯＳブート）を指示するドライバーを記述したコード（ブート・マネジャ）である。システム起動処理は、ＨＤＤ２１の所定の記憶領域から予め記憶されたＯＳローダを読み出し、システムメモリ１５に記憶（ロード）する処理である。
ＰＯＳＴ処理が完了した後、ＣＰＵ１１はＯＳローダを実行し、ＨＤＤ２１からＯＳモジュール、デバイス・ドライバーなどを読み出し、システムメモリ１５に記憶（ロード）する。その後、ＣＰＵ１１はＯＳを起動する。ＣＰＵ１１は、ＯＳを起動させる際、デバイス設定情報を参照して、動作可能と特定されたデバイスを起動させる。この段階で起動させるデバイスは、ＨＤＤ２１以外の周辺デバイスが該当する。
【００３２】
次に、本実施形態に係るシステム・ファームウェアのカテゴリデータの例について説明する。図３は、本実施形態に係るシステム・ファームウェアのカテゴリデータの例を示す図である。カテゴリデータは、ステータスコードごとのドライバーのカテゴリを示す。図３に示す例では、ステータスコードは、１６進の４桁の数値で表される。ステータスコードの末尾の「ｈ」は、１６進数を示す符号である。ステータスコードの上１桁の数は、個々のカテゴリを示し、残りの３桁で各カテゴリ内のドライバーが区別される。ステータスコードの上１桁の「０」は、「Ｏｔｈｅｒｓ」、つまり、その他のデバイスまたは機能を示す。「０」に関するカテゴリは、基本デバイス初期化コード、システム設定コード、および起動管理コードをそれぞれ構成するドライバーが含まれる。「１」、「２」、「３」、「４」、「５」は、それぞれ「Ｍｅｍｏｒｙ」、「Ｉ／Ｏ  ＩＦ１」、「ＷＬＡＮ」、「ＷＷＡＮ」、「Ｉ／Ｏ  ＩＦ２」、つまり、記憶媒体、第１種の入出力インタフェース、無線構内ネットワークデバイス、無線広域ネットワークデバイス、第２種の入出力インタフェースに係るデバイス別コードを示す。「Ｆ」は、「Ｍａｎａｇｅｍｅｎｔ  Ｅｎｇｉｎｅ」（マネジメントエンジン）に関するカテゴリである。「Ｆ」に関するカテゴリには、例えば、電力制御、盗難対策機能、デジタルデータの著作権管理、に関連するドライバーが含まれる。
【００３３】
図１および図２に戻り、ＥＣ３１の機能構成について説明する。ＥＣ３１は、ＣＰＵ１１とは独立に動作する。ＣＰＵ１１に対する電力の供給が停止しても、ＥＣ３１への電力の供給が継続される。ＥＣ３１は、予め自部のメモリに展開された所定のファームウェアを実行して制御部１２０として機能する。ＥＣ３１が実行するファームウェアは、ＣＰＵ１１が最初に実行を開始するシステム・ファームウェアとは別個である。以下の説明では、ＥＣ３１が実行するファームウェアを、ＥＣファームウェアと呼ぶことがある。制御部１２０は、進捗情報蓄積部１２２、異常検出部１２４および修復設定部１２６を含んで構成される。
【００３４】
進捗情報蓄積部１２２は、処理部１１０から入力される進捗情報を入力されるごとに蓄積し、処理履歴（ログ）として形成する。処理履歴は、入力される順に進捗情報が累積してなる。より具体的には、進捗情報蓄積部１２２は、入力される進捗情報と、その時点の時刻を示すタイムレコードと、その進捗情報に対応するカテゴリとを含むセットを記憶する。記憶されるセットが、処理履歴の構成要素となる。図４に示す処理履歴の例では、ＩＤ、ステータスコード（進捗情報）、タイムレコード、期間およびカテゴリを含んで構成される。
【００３５】
図４の第１列に示すＩＤは、個々の進捗情報の順序を示す番号である。第２列に示すステータスコードの欄には、必ずしもステータスコードが記述されるとは限らない。第２列では、例えば、ＩＤ「１」に対応付けて「Ｐｏｗｅｒ  Ｏｎ」が記述されている。「Ｐｏｗｅｒ  Ｏｎ」は、電源供給の開始を示す。第３列に示すタイムレコードは、対応する進捗情報が入力される時刻を示す。第４列に示す期間は、その直前の進捗情報が入力された時刻から、その時点の進捗情報が入力される時刻までの経過時間を示す。進捗情報蓄積部１２２は、その直前の進捗情報に対応付けられたタイムレコードが示す時刻から、その時点で進捗情報が入力される時刻までの経過時間を期間として定め、定めた期間を進捗情報と対応付けて記憶する。但し、図４のＩＤ「１」に対応する「Ｐｏｗｅｒ  Ｏｎ」が最初の進捗情報であるため、期間として「０」（ｍｓ）を対応付けて記述されている。第５列に示すカテゴリとして、進捗情報として入力されるステータスコードに対応するカテゴリ情報が記述される。進捗情報蓄積部１２２は、ＥＣ３１の記憶媒体に予め記憶させておいたシステム・ファームウェアのカテゴリデータを参照して、入力されるステータスコードに対応するカテゴリを特定し、特定したカテゴリをステータスコードと対応付けて記憶する。但し、「Ｐｏｗｅｒ  Ｏｎ」は、ステータスコードではないために、カテゴリを特定することができず、第５列のＩＤ「１」に対応するカテゴリの欄は空欄となる。なお、処理履歴においてＩＤは省略されてもよい。
【００３６】
異常検出部１２４（図２）は、進捗情報蓄積部１２２が蓄積した処理履歴に基づいてＰＯＳＴ処理の異常を検出する。異常検出部１２４は、例えば、ＰＯＳＴ処理がまだ完了しておらず、自装置の動作の終了を検出するとき、異常現象の一形態としてＰＯＳＴ処理のハングアップの発生を判定する。異常検出部１２４は、例えば、電源ユニット３５から主デバイスへの電力の供給中に、電源ボタン３７から起動制御情報が入力されるとき、自装置の動作の終了を検出することができる。このとき、ＣＰＵ１１は、ＯＳのシャットダウンを開始し、シャットダウンが完了したときに情報処理装置１０の動作が終了する。ＰＯＳＴ処理においてハングアップが発生すると、処理部１１０から進捗情報の入力が停止するためである。ハングアップとは、あるドライバーに対する処理結果として所定の応答が取得できず、以降の処理への進行が停止した状態を意味する。
【００３７】
異常検出部１２４は、動作の終了を検出するとき、シャットダウンを示す進捗情報と動作の終了を検出した時刻を示すタイムレコードを対応付けて進捗情報蓄積部１２２に記憶する。異常検出部１２４は、直前の進捗情報に対応するタイムレコードに対応する時刻から動作の終了を検出した時刻までの経過時間である期間を、さらに進捗情報に対応付けて進捗情報蓄積部１２２に記憶する。直前の進捗情報は、動作の終了を検出する前に処理部１１０から進捗情報蓄積部１２２に最後に入力された進捗情報に相当する。そして、異常検出部１２４は、その経過時間が、所定の経過時間の閾値（例えば、２〜５秒）以上であるとき、ＰＯＳＴ処理のハングアップが発生したと判定する。経過時間の閾値は、最後に入力される進捗情報が示すドライバーの直後のセグメントに係る通常の処理時間よりも格段に大きい値であればよい。異常検出部１２４は、ハングアップが発生したと判定するとき、ハングアップの発生を示す異常情報を進捗情報に付加して記憶する。その経過時間が、所定の経過時間の閾値未満であるとき、ＰＯＳＴ処理のハングアップは発生していないと判定する。図４の第９行に示す例では、ＩＤ「８」に対応付けて、ステータスコード、タイムスタンプ、および期間の各欄に、「Ｓｈｕｔｄｏｗｎ  （ｈａｎｇ）」、「２０１８／１１／１４  ２０：１２：４５：２３０」、および「１５，０７４  ｍｓ」と記述されている。ステータスコードの欄の記述のうち、「（ｈａｎｇ）」がハングアップの発生を示す異常情報に相当する。「１５，０７４  ｍｓ」は、最後に進捗情報が入力された時刻から、動作の終了が検出された時刻までの経過時間を示す。この経過時間は、所定の経過時間の閾値以上となる。
【００３８】
修復設定部１２６（図２）は、進捗情報蓄積部１２２に蓄積された処理履歴を参照し、異常が発生した過程を推定する。修復設定部１２６は、ＰＯＳＴ処理における異常の発生と、ＰＯＳＴ処理の再開が所定回数（例えば、３〜５回）以上繰り返され、異常の発生が推定される過程を含むセグメントが共通となる場合に、そのセグメントに対する対策の実行を設定する。但し、以下では説明を簡単にするため、ＰＯＳＴ処理における異常発生の都度、異常の発生が推定された過程を含むセグメントに対する対策を実行させる場合を例にする。
【００３９】
修復設定部１２６は、処理履歴の末尾における「Ｓｈｕｔｄｏｗｎ  （ｈａｎｇ）」の記述を含む進捗情報の直前の進捗情報が示すステータスコードに係るドライバーを、ハングアップの発生直前のドライバーとして特定することができる。修復設定部１２６は、さらにシステム・ファームウェアを参照し、特定したドライバーが属するセグメントの次のセグメントをハングアップの発生に係るセグメントとして特定する。修復設定部１２６は、特定したセグメントの最初のドライバーから最後のドライバーのいずれかで指示される過程を未完了過程として絞り込むことができる。
【００４０】
修復設定部１２６は、ＥＣ３１の記憶媒体に予め記憶されたカテゴリデータを参照して、推定したセグメントに含まれるいずれかのドライバー（例えば、そのセグメントの最初または最後のドライバー）のステータスコードに対応するカテゴリを特定する。修復設定部１２６は、特定したカテゴリに応じた形態の修復処理を示す設定情報を設定する。特定したカテゴリがシステム・ファームウェアの検証（例えば、システム・ファームウェアの一貫性検証、設定パラメータの検証、等）に係る場合、修復設定部１２６は、ＩＣＨ１３ｂ（図１）に対して、修復モードでの起動を示す起動モード情報を設定する。このような場合には、システム・ファームウェアの一部または全部が損傷している可能性があるためである。設定された起動モード情報が修復モードを示す場合には、ＩＣＨ１３ｂは、電力の供給が再開されるとき修復モードで起動する。ＩＣＨ１３ｂは、修復モードにおいてファームウェアＲＯＭ２５に記憶されたシステム・ファームウェアのコードを修復する。例えば、ＩＣＨ１３ｂは、予めＮＶＲＡＭ２７に記憶されたシステム・ファームウェアを、ＭＣＨ１３ａを経由して読み出し、ファームウェアＲＯＭ２５に記憶されたシステム・ファームウェアのコードを、読み出したコードに更新する。
ＩＣＨ１３ｂは、システム・ファームウェアのコードを修復した後、自部に設定された起動モード情報を、通常モードを示す起動モード情報に更新する。通常モードを示す起動モード情報が設定されている場合、ＩＣＨ１３ｂはシステム・ファームウェアの修復を行わない。ＩＣＨ１３ｂには、初期設定として、通常モードを示す起動モード情報を設定しておく。その後、ＣＰＵ１１は修復後のシステム・ファームウェアに従ってＰＯＳＴ処理を実行する。
【００４１】
そこで、ＰＯＳＴ処理を成功裏に完了したとき、ＰＯＳＴ処理部１１２は、完了したＰＯＳＴ処理を指示するシステム・ファームウェアのコードをＮＶＲＡＭ２７に予め記憶しておいてもよい。または、ＮＶＲＡＭ２７に予め動作の確認がなされたシステム・ファームウェアのコードと設定パラメータを予め記憶しておいてもよい。
ＩＣＨ１３ｂは、ＰＯＳＴ処理の実行前に、更新したコードに対して既知の手法を用いて一貫性の検証と誤り訂正の一方または両方を行ってもよい。
【００４２】
特定したカテゴリが特定のデバイスに係る場合には、修復設定部１２６は、そのデバイスに関する対策を実行させる。修復設定部１２６は、例えば、次回以降のＰＯＳＴ処理におけるそのデバイスに係る過程の省略（スキップ）を設定してもよい。その場合、修復設定部１２６は、システム・ファームウェアのパラメータセットのうち、そのデバイスに係る過程の実行否を示す実行要否パラメータをファームウェアＲＯＭ２５に設定する。ＰＯＳＴ処理部１１２は、実行要否パラメータを参照して、次回のＰＯＳＴ処理において、そのデバイスに係る過程を省略する。
【００４３】
修復設定部１２６は、実行要否パラメータの設定に代えて、または、その設定とともに、そのデバイスに係る過程を示すデバイス別コードを修復対象として示す修復対象コード情報をファームウェアＲＯＭ２５に設定する。ＰＯＳＴ処理部１１２は、実行要否パラメータを参照して、次回のＰＯＳＴ処理において、修復対象コード情報で示されるコードであって、そのデバイスに係るデバイス別コードを修復する。その場合、修復設定部１２６は、ＮＶＲＡＭ２７から、そのデバイスに係る過程を示すデバイス別コードを読み出し、ファームウェアＲＯＭ２５に記憶されたシステム・ファームウェアのうち、そのデバイスに係る過程を示すデバイス別コードを、読み出したデバイス別コードに更新する。修復設定部１２６は、更新したコードに対して既知の手法を用いて一貫性の検証および誤り訂正を行ってもよい。
【００４４】
次に、本実施形態に係るＰＯＳＴ処理の例について説明する。図５は、本実施形態に係るＰＯＳＴ処理の例を示すフローチャートである。
（ステップＳ１０２）ＣＰＵ１１は、電源ユニット３５からの電力の供給開始を検出するとき、ファームウェアＲＯＭ２５からシステム・ファームウェアを読み出す。その後、ステップＳ１０４の処理に進む。
（ステップＳ１０４）ＣＰＵ１１は、読み出したシステム・ファームウェアの実行を開始し、処理部１１０としての機能（ＰＯＳＴ処理を含む）を開始する。
進捗情報管理部１１４は、電源投入を示す進捗情報を生成し、制御部１２０に出力する。その後、ステップＳ１０６の処理に進む。
【００４５】
（ステップＳ１０６）ＰＯＳＴ処理部１１２は、システム・ファームウェアを構成するドライバーを実行する。
進捗情報管理部１１４は、実行が完了したドライバーを監視し、最後に実行が完了したドライバーが所定のアンカーポイントに到達するとき、そのドライバーを示すステータスコードを進捗情報として制御部１２０に出力する。但し、進捗情報管理部１１４は、ＰＯＳＴ処理の開始当初、つまり、自部への電力の供給開始を検出するとき、電源投入を示す進捗情報を制御部１２０に出力する。その後、システム・ファームウェアを構成するドライバーのうち、実行対象のドライバーを次のドライバーに進め、ステップＳ１０８の処理に進む。
【００４６】
（ステップＳ１０８）ＰＯＳＴ処理部１１２は、ＰＯＳＴ処理が完了したか否かを判定する。ＰＯＳＴ処理部１１２は、システム・ファームウェアを構成する全ドライバーについて実行が完了するとき、ＰＯＳＴ処理が完了したと判定することができる。その後、ステップＳ１１０の処理に進む。ＰＯＳＴ処理が完了した段階では、起動管理コードの実行も完了し、ＨＤＤ２１に予め記憶されたＯＳローダが読み出され、システムメモリ１５に記憶された状態となる。
（ステップＳ１１０）ＣＰＵ１１は、ＯＳローダを実行し、ＨＤＤ２１からＯＳモジュール、デバイス・ドライバーなどを読み出し、システムメモリ１５に記憶する。そして、ＣＰＵ１１は、ＯＳブートを実行する。その後、図５に示す処理を終了する。
【００４７】
次に、本実施形態に係る異常検出処理の例について説明する。図６は、本実施形態に係る異常検出処理の例を示すフローチャートである。
制御部１２０は、図６に示す処理を、電源ユニット３５から主デバイスに電力が供給されていないとき、または電源ボタン３７から起動制御情報が入力されるときに開始する。
（ステップＳ１２２）異常検出部１２４は、ＯＳのシャットダウンが指示されたか否かを判定する。異常検出部１２４は、例えば、通電中に電源ボタン３７からの起動制御情報が入力されるとき、ＯＳのシャットダウンが指示されたと判定し、起動制御情報が入力されないとき、シャットダウンは指示されていないと判定することができる。異常検出部１２４が、シャットダウンが指示されたと判定する場合（ステップＳ１２２  ＹＥＳ）、シャットダウンを示す進捗情報とシャットダウンを検出した時刻を示すタイムレコードを対応付けて進捗情報蓄積部１２２に記憶する。その後、ステップＳ１２８の処理に進む。シャットダウンが指示されていないと判定する場合（ステップＳ１２２  ＮＯ）、ステップＳ１２４の処理に進む。
【００４８】
（ステップＳ１２４）進捗情報蓄積部１２２は、処理部１１０からの進捗情報の入力を待ち受ける。進捗情報蓄積部１２２に進捗情報が入力されるとき（ステップＳ１２４  ＹＥＳ）、ステップＳ１２６の処理に進む。進捗情報蓄積部１２２に進捗情報が入力されないとき（ステップＳ１２４  ＮＯ）、ステップＳ１２２の処理に戻る。
（ステップＳ１２６）進捗情報蓄積部１２２は、入力された進捗情報を、その時刻を示す時刻情報としてタイムレコードと対応付けて蓄積する。入力された進捗情報がステータスコードである場合には、進捗情報蓄積部１２２は、カテゴリデータを参照してステータスコードに対応するカテゴリ情報を特定し、特定したカテゴリ情報をさらに進捗情報と対応付けて蓄積する。その後、ステップＳ１２２の処理に進む。
【００４９】
（ステップＳ１２８）異常検出部１２４は、直前の進捗情報が入力された時刻からシャットダウンを判定した時刻までの経過時間が所定の経過時間の閾値以上であるか否かを判定する。所定の経過時間の閾値以上であると判定するとき（ステップＳ１２８  ＹＥＳ）、ステップＳ１３０の処理に進む。所定の経過時間の閾値未満であると判定するとき（ステップＳ１２８  ＮＯ）、図６の処理を終了する。
（ステップＳ１３０）異常検出部１２４は、ＰＯＳＴ処理においてハングアップが発生したと判定する。その後、ステップＳ１３２の処理に進む。
（ステップＳ１３２）異常検出部１２４は、ハングアップの発生を示す異常情報を進捗情報に付加して記憶する。その後、図６の処理を終了する。
【００５０】
次に、本実施形態に係る修復設定処理の例について説明する。
図７は、本実施形態に係る修復設定処理の例を示すフローチャートである。
（ステップＳ１４２）修復設定部１２６は、進捗情報蓄積部１２２に蓄積された処理履歴を参照し、ハングアップの発生を示す進捗情報の直前の進捗情報が示すステータスコードを特定する。修復設定部１２６は、システム・ファームウェアを参照し、特定したステータスコードで示されるドライバーが属するセグメントの次のセグメントをハングアップの発生に係るセグメントとして推定する。その後、ステップＳ１４４の処理に進む。
（ステップＳ１４４）修復設定部１２６は、予め記憶されたカテゴリデータを参照して、推定したセグメントのいずれかのドライバーのステータスコードに対応するカテゴリを定める。その後、ステップＳ１４６の処理に進む。
【００５１】
（ステップＳ１４６）定めたカテゴリが特定のデバイスに関連するカテゴリであるとき（ステップＳ１４６  ＹＥＳ）、修復設定部１２６は、ステップＳ１４８の処理に進む。定めたカテゴリが特定のデバイスに関連するカテゴリではないとき（ステップＳ１４６  ＮＯ）、修復設定部１２６は、ステップＳ１５０の処理に進む。
（ステップＳ１４８）修復設定部１２６は、定めたカテゴリに関連するデバイスに関する対策を実行させる。例えば、修復設定部１２６は、定めたカテゴリに関連するデバイスに係る過程の実行否を示す実行要否パラメータをファームウェアＲＯＭ２５に設定する。修復設定部１２６は、定めたカテゴリに関連するデバイスに係るデバイス別コードを修復対象として示す修復対象コード情報をファームウェアＲＯＭ２５に設定する。その後、図７に示す処理を終了する。
（ステップＳ１５０）修復設定部１２６は、ＩＣＨ１３ｂに対して、修復モードでの起動を示す起動モード情報を設定する。その後、図７に示す処理を終了する。
【００５２】
なお、以上の説明では、異常検出部１２４は、最後に進捗情報が処理部１１０から入力された時刻からＯＳのシャットダウンを検出する時刻までの経過時間が、所定の経過時間の閾値以上である場合に、ハングアップを検出する場合を例にしたが、これには限られない。異常検出部１２４は、ＰＯＳＴ処理がまだ完了していない段階において、最後に進捗情報が入力された時刻から、新たな進捗情報が入力されない状態が継続する時間が、所定の経過時間の閾値以上である場合に、ハングアップを検出してもよい。このとき、異常検出部１２４は、起動制御信号を電源ユニット３５に出力し、電源ユニット３５に対して主デバイスへの電力の供給を停止させてもよい。このとき、ＯＳがシャットダウンすることになる。異常検出部１２４は、上記のように、シャットダウンを示す進捗情報およびシャットダウンを検出した時刻を示すタイムレコードを対応付け、さらにハングアップの発生を示す異常情報を進捗情報に付加して進捗情報蓄積部１２２に記憶する。
【００５３】
また、異常検出部１２４には、システム・ファームウェアのセグメントごとに処理時間の異常を検出するための検出閾値を予め設定しておいてもよい。検出閾値は、通常の処理時間よりも顕著に大きい値であればよい。進捗情報蓄積部１２２は、上記のように、処理部１１０から入力される進捗情報に基づいて、その進捗情報に係るセグメントの処理時間を算出する。異常検出部１２４は、進捗情報蓄積部１２２は算出した処理時間が設定された検出閾値以上となるか否かを判定し、検出閾値以上となるとき、処理の遅延を示す異常情報を、進捗情報に付加して進捗情報蓄積部１２２に記録してもよい。
修復設定部１２６は、進捗情報に異常情報が付加されたセグメントを特定し、上記のカテゴリデータを参照して、推定したセグメントのいずれかのドライバーのステータスコードに対応するカテゴリを特定してもよい。修復設定部１２６は、上記のように、特定したカテゴリに応じた形態の修復処理を設定してもよい。
【００５４】
以上に説明したように、本実施形態に係る情報処理装置１０は、システム・ファームウェアに基づく処理（例えば、ＰＯＳＴ処理）を実行する処理部１１０と、その処理を制御する制御部１２０と、を備える。処理部は、その処理の進捗状況を示す進捗情報を、システム・ファームウェアに基づく処理の実行中に制御部１２０に出力し、制御部１２０は、その処理の完了前に進捗情報が入力されるタイミングに基づいてその処理の異常を検出する。
この構成によれば、制御部１２０は、システム・ファームウェアに基づく処理の進捗状況を示す進捗情報に基づいて、その処理の異常を検出することができる。
【００５５】
また、制御部１２０は、進捗情報が最後に入力された時刻から自装置のシャットダウンが指示される時刻までの経過時間に基づいて異常の発生を判定し、異常を示す異常情報を記憶してもよい。
この構成によれば、システム・ファームウェアの処理の異常として、ハングアップを検出ならびに記録することができる。
【００５６】
また、進捗情報は、実行が完了した過程を示すステータスコードであり、制御部１２０は、自装置の動作停止が指示されるとき、最後に入力された進捗情報に基づいて、実行が完了していない過程である未完了過程を推定する。また、制御部１２０は、システム・ファームウェアの処理に含まれる過程ごとのカテゴリを示すカテゴリデータに基づいて、未完了過程の種別を定める。
この構成によれば、システム・ファームの処理のうち、異常が発生した未完了過程が推定され、推定された未完了過程の種別が定まる。そのため、未完了過程の種別に応じてシステム・ファームウェアの処理を正常に終了するための手がかりを得ることができる。
【００５７】
また、未完了過程がシステム・ファームウェアの検証に関する過程であるとき、制御部１２０は、システム・ファームウェアの修復を設定する。
この構成によれば、システム・ファームウェアを修復することで、修復後のシステム・ファームウェアに基づく処理を、正常に完了させることができる。
【００５８】
未完了過程が処理部１１０に接続される機器に関する過程であるとき、制御部１２０は、その機器に関する過程の省略を設定する。
この構成によれば、次にシステム・ファームウェアに基づく処理が実行されるとき、その機器に関する過程が省略されるので、その処理をより確実に完了させることができる。
【００５９】
未完了過程が処理部１１０に接続される機器に関する過程であるとき、制御部１２０は、その機器に関する過程に係る機器別ファームウェアの修復を設定する。
この構成によれば、次にシステム・ファームウェアに基づく処理が実行されるとき、修復された機器別ファームウェアに基づいてその機器に関する過程が実行されるので、その処理をより確実に完了させることができる。
【００６０】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成は上述の実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。上述の実施形態において説明した各構成は、任意に組み合わせることができる。
【符号の説明】
【００６１】
１０…情報処理装置、１１…ＣＰＵ、１３…チップセット、１３ａ…ＭＣＨ、１３ｂ…ＩＣＨ、１５…システムメモリ、１７…ＧＰＵ、１９…ディスプレイ、２１…ＨＤＤ、２３…通信モジュール、２５…ファームウェアＲＯＭ、２７…ＮＶＲＡＭ、３１…ＥＣ、３５…電源ユニット、３７…電源ボタン、３９…入力デバイス、１１０…処理部、１１２…ＰＯＳＴ処理部、１１４…進捗情報管理部、１２０…制御部、１２２…進捗情報蓄積部、１２４…異常検出部、１２６…修復設定部
【図１】
2020140241.tif 000003
【図２】
2020140241.tif 000004
【図３】
2020140241.tif 000005
【図４】
2020140241.tif 000006
【図５】
2020140241.tif 000007
【図６】
2020140241.tif 000008
【図７】
2020140241.tif 000009
【手続補正書】
【提出日】令和2年6月2日(2020.6.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
オペレーティングシステムが起動する前にシステム・ファームウェアに基づく処理を実行する処理部と、
前記処理を制御する制御部と、を備え、
前記処理部は、
前記処理の進捗状況を示す進捗情報を前記処理の実行中に前記制御部に出力し、
前記制御部は、
前記処理の完了前に前記進捗情報が最後に入力された時刻から自装置の動作停止が指示される時刻までの経過時間に基づいて異常の発生を判定し、
前記異常を判定するとき、前記異常を示す異常情報を記憶する
情報処理装置。
【請求項２】
前記進捗情報は、実行が完了した過程を示し、
前記制御部は、
自装置の動作停止が指示されるとき、
最後に入力された進捗情報に基づいて、実行が完了していない過程である未完了過程を推定し、
前記処理に含まれる過程ごとのカテゴリを示すカテゴリデータに基づいて、
前記未完了過程の種別を定める
請求項１に記載の情報処理装置。
【請求項３】
前記未完了過程が前記システム・ファームウェアの検証に関する過程であるとき、前記制御部は、前記システム・ファームウェアの修復を設定する
請求項２に記載の情報処理装置。
【請求項４】
前記未完了過程が前記処理部に接続される機器に関する過程であるとき、前記制御部は、前記機器に関する過程の省略を設定する
請求項２または請求項３に記載の情報処理装置。
【請求項５】
前記未完了過程が前記処理部に接続される機器に関する過程であるとき、前記制御部は、前記機器に関する過程に係る機器別ファームウェアの修復を設定する
請求項２から請求項４のいずれか一項に記載の情報処理装置。
【請求項６】
オペレーティングシステムが起動する前にシステム・ファームウェアに基づく処理を実行する処理部と、
前記処理を制御する制御部と、を備える情報処理装置の方法であって、
前記処理部が、前記処理の進捗状況を示す進捗情報を前記処理の実行中に前記制御部に出力するステップと、
前記制御部が、前記処理の完了前に前記進捗情報が最後に入力された時刻から自装置の動作停止が指示される時刻までの経過時間に基づいて異常の発生を判定し、
前記異常を判定するとき、前記異常を示す異常情報を記憶するステップと、を有する
情報処理方法。