(57)【要約】  ＯＳがダンプ採取開始のトリガを認識できなくても、ダンプ採取を開始させることを可能にする。情報処理装置の診断方法は、ＣＰＵ固有の割り込みである第１の割り込み（ＳＭＩ）を発行し、前記第１の割り込みの処理から、ダンプ採取機能を起動させる第２の割り込み（ＮＭＩ）に制御を移し、前記第２の割り込みに基づいて、ダンプ採取を開始する。
2015114741.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵ固有の割り込みである第１の割り込みを発行し、
前記第１の割り込みの処理から、ダンプ採取機能を起動させる第２の割り込みに制御を移し、
前記第２の割り込みに基づいて、ダンプ採取を開始する、
情報処理装置の診断方法。
【請求項２】
前記第２の割り込みは、オペレーティングシステムで定義される複数の割り込みのうち、ソフトウェア割り込みよりも優先度が高い、
請求項１記載の情報処理装置の診断方法。
【請求項３】
前記第２の割り込みは、前記オペレーティングシステムで定義される複数の割り込みのうち最も優先度の高い割り込みである、
請求項２記載の情報処理装置の診断方法。
【請求項４】
前記第１の割り込みの処理から復帰するときの復帰先の命令を、前記第１の割り込みによって実行を中断されたプログラムの命令から前記第２の割り込みを開始する命令に書き換える、
請求項１乃至３のうち何れか１項に記載の情報処理装置の診断方法。
【請求項５】
キーボードに対して、通常の操作とは異なる第１の操作が行われた後に、前記通常の操作とは異なる第２の操作が行われたときに、前記第１の割り込みを発生する、
請求項１乃至４のうち何れか１項に記載の情報処理装置の診断方法。
【請求項６】
前記第１の操作が行われたときに、前記キーボードを制御するキーボードコントローラの第１フラグをオンにし、前記第２の操作が行われたときに、前記キーボードコントローラの第２フラグをオンにし、前記第２フラグがオンになっていることを前記ＣＰＵが確認したときに、前記第２の割り込みを発生する、
請求項５記載の情報処理装置の診断方法。
【請求項７】
前記ＣＰＵが前記第１の割り込みを検出したときに、前記ＣＰＵのレジスタの状態をメモリに退避させる、
請求項１乃至６のうち何れか１項に記載の情報処理装置の診断方法。
【請求項８】
前記第１の割り込みは、System Management Interruptであり、
前記第２の割り込みは、Non-Maskable Interruptである、
請求項１乃至７のうち何れか１項に記載の情報処理装置の診断方法。
【請求項９】
前記復帰先の命令のアドレスを、前記第２の割り込みを開始する命令の開始アドレスに書き換える、
請求項４記載の情報処理装置の診断方法。
【請求項１０】
情報処理装置の診断プログラムであって、
ＣＰＵ固有の割り込みである第１の割り込みを発行し、
前記第１の割り込みの処理から、ダンプ採取機能を起動させる第２の割り込みに制御を移し、
前記第２の割り込みに基づいて、ダンプ採取を開始する、
処理を前記情報処理装置に実行させる情報処理装置の診断プログラム。
【請求項１１】
ＣＰＵを備える情報処理装置であって、
前記ＣＰＵは、
前記ＣＰＵ固有の割り込みである第１の割り込みを入力した後に、前記第１の割り込みの処理から、ダンプ採取機能を起動させる第２の割り込みに制御を移し、
前記第２の割り込みに基づいて、ダンプ採取を開始する、
情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置の診断方法、情報処理装置の診断プログラムおよび情報処理装置に関する。
【背景技術】
【０００２】
コンピュータの稼働中に何らかの障害が発生したときに、障害が発生した要因を解析するために、ダンプ採取が行われる。採取したダンプは、発生した障害を解析するときに使用されるデータであり、例えば、メモリの内容とＣＰＵ(Central Processing Unit)のレジスタの内容とを含む。【０００３】
関連する技術として、第１の割り込みに応じて、リセットベクタによって示されるアドレスに配置されているプログラムを実行させるための第２の割り込みを発行してリセット処理を行う技術が提案されている。また、ゲストＯＳのシステム障害を検出すると、管理ＯＳがソフトウェアインタフェースを介して、ゲストＯＳを動作させている仮想ＣＰＵに対して外部割込みを発行する技術が提案されている（例えば、特許文献１、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−２３２９８６号公報
【特許文献１】特開２０１１−２４３０１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ダンプ採取は、ダンプ採取を指示するトリガを契機として開始される。コンピュータに何らかの障害が発生すると、コンピュータで動作しているＯＳ（Operating System)が正常に機能していない場合がある。ＯＳが正常に動作していない場合、ＯＳはダンプ採取開始のトリガを認識できない可能性がある。ＯＳがトリガを認識できない場合、ダンプ採取は開始されない。【０００６】
本発明は、１つの側面として、ＯＳがダンプ採取開始のトリガを認識できなくても、ダンプ採取を開始させることを可能にすることを目的とする。
【課題を解決するための手段】
【０００７】
実施形態に係る情報処理装置の診断方法は、ＣＰＵ固有の割り込みである第１の割り込みを発行し、前記第１の割り込みの処理から、ダンプ採取機能を起動させる第２の割り込みに制御を移し、前記第２の割り込みに基づいて、ダンプ採取を開始する。
【発明の効果】
【０００８】
ＯＳがダンプ採取開始のトリガを認識できなくても、ダンプ採取を開始させることを可能にすることができる。
【図面の簡単な説明】
【０００９】
【図１】実施形態に係るコンピュータの構成の一例を示す図である。
【図２】実施形態に係るキーボードコントローラの構成の一例を示す図である。
【図３】第２汎用ＩＯポートの入出力ピンおよび当該ピンの波形の一例を示す図である。
【図４】キーボードコントローラのファームウェアの機能の一例を示すブロック図である。
【図５】メモリのＳＭＭハンドラおよびＳＭＩスタックの一例を説明する図である。
【図６】実施形態の処理の流れの一例を示すフローチャートである。
【図７】第２フラグがオンにされるまでのキー操作の一例を示す図である。
【図８】ＯＳが管理する割り込みのレベルの一例を示す図である。
【図９】図５のＮＭＩリダイレクト処理の一例を示すフローチャートである。
【図１０】図５のＮＭＩ処理の一例を示すフローチャートである。
【図１１】メモリおよびレジスタが遷移する状態の一例を説明する図である。
【発明を実施するための形態】
【００１０】
＜情報処理装置＞
以下、図面を参照して、実施形態について説明する。図１は、コンピュータ１を示している。コンピュータ１は、情報処理装置の一例である。コンピュータ１としては、パーソナルコンピュータやワークステーション等の任意の情報処理装置を適用してもよい。また、コンピュータ１は、デスクトップ型のコンピュータだけでなく、携帯型のコンピュータであってもよい。
【００１１】
図１において一例として示すコンピュータ１は、第１のＣＰＵ２とメモリ３とディスプレイ４とインタフェース５と補助記憶装置６とキーボードコントローラ７とキーボード８とを備える。コンピュータ１は、図１の構成には限定されない。
【００１２】
第１のＣＰＵ（Central Processing Unit）２は、所定の処理を行うプロセッサである。第１のＣＰＵ２は、単にＣＰＵと称することもある。メモリ３は、情報を記憶する装置である。第１のＣＰＵ２は、メモリ３から情報のリードおよびライトを行うことができる。第１のＣＰＵ２は、メモリ３に記憶されているプログラムを読み出して、実行することができる。
【００１３】
図１に示されるように、メモリ３は、実行中プログラムとＩＲＱ(Interrupt Request)処理プログラムとを記憶している。実行中プログラムは、第１のＣＰＵ２が実行しているプログラムである。ＩＲＱ処理プログラムは、割り込み処理を行うプログラムである。ＩＲＱ処理プログラムは、割り込みハンドラとも称される。
【００１４】
ディスプレイ４は、第１のＣＰＵ２の指示に基づいて、所定の情報を表示する表示装置である。インタフェース５は、第１のＣＰＵ２、補助記憶装置６およびキーボードコントローラ７と接続される。第１のＣＰＵ２は、インタフェース５を介して、補助記憶装置６またはキーボードコントローラ７を制御する。一例として、インタフェース５は、第１のＣＰＵ２と周辺機器とのブリッジ接続を行うＰＣＨ（Platform Controller Hub)を適用してもよい。
【００１５】
補助記憶装置６は、情報を記憶する装置である。実施形態では、補助記憶装置６はハードディスクであるものとするが、補助記憶装置６はハードディスクには限定されない。実施形態では、補助記憶装置６にＯＳ(Operating System)が記憶されているものとする。補助記憶装置６に記憶されているＯＳは、メモリ３に読み出されて、第１のＣＰＵ２が実行する。
【００１６】
キーボードコントローラ７は、キーボード８を制御する。キーボード８は、複数のキーを備えた入力デバイスである。キーボードコントローラ７は、第１フラグ１１と第２フラグ１２とファームウェア１３とを備えている。第１フラグ１１および第２フラグ１２は、オンまたはオフを示すフラグである。ファームウェア１３は、キーボードコントローラ７の記憶装置に記憶されるソフトウェアである。
【００１７】
次に、図２に一例として示すキーボードコントローラ７について説明する。キーボードコントローラ７は第２のＣＰＵ２１とＲＯＭ２２とＲＡＭ２３とバスインタフェース２４とタイマ２５と第１汎用ＩＯポート２６と第２汎用ＩＯポート２７とＩＲＱインタフェース２８とを備えている。
【００１８】
第２のＣＰＵ２１は所定の処理を行うプロセッサである。第２のＣＰＵ２１は、キーボードコントローラ７に備えられる点で第１のＣＰＵ２とは異なる。キーボードコントローラ７は、基本的に、１つの第２のＣＰＵ２１を備えている（１チップＣＰＵ）。
【００１９】
ＲＯＭ（Read Only Memory）２２はファームウェア１３を記憶している。ＲＯＭ２２に記憶されているファームウェア１３は第２のＣＰＵにより実行される。ＲＯＭ２２には、ファームウェア以外の情報が記憶されていてもよい。また、ファームウェア１３が記憶される記憶装置は、ＲＯＭ２２には限定されない。
【００２０】
ＲＡＭ（Random Access Memory）２３は、第１フラグ１１および第２フラグ１２を記憶している。ＲＡＭ２３は、第１フラグ１１および第２フラグ１２以外の情報を記憶してもよい。第２のＣＰＵ２１は、ＲＡＭ２３に記憶されている情報を読み出し、または書き込むことができる。
【００２１】
バスインタフェース２４は、ＬＰＣ(Low Pin Count)バスと接続するインタフェースである。ＬＰＣバスは、低い帯域幅のデバイスを第２のＣＰＵ２１と接続するバスである。バスインタフェース２４は、データレジスタ２４Ａとステータスコマンドレジスタ２４Ｂとを備えている。図２では、ステータスコマンドレジスタは「ＳＣレジスタ」と示されている。
【００２２】
タイマ２５は、時間を計測する装置である。図２のタイマ２５は、ハードウェアタイマを示している。タイマ２５の機能は、ハードウェアタイマには限定されない。例えば、第２のＣＰＵ２１が時間を計測してもよい。
【００２３】
第１汎用ＩＯポート２６は、キーボード８に対する操作情報を取得する。第１汎用ＩＯポート２６は、キーボード８のキーボードマトリクスに対してスキャン（２６Ａ）を行うことで、キーボード８に対する操作情報を取得する。第１汎用ＩＯポート２６は、操作情報を取得する（２６Ｂ）ことで、キーボード８の何れのキーが押下されたかが認識される。
【００２４】
第２汎用ＩＯポート２７は、ＩＲＱインタフェース２８と接続されている。ＩＲＱインタフェース２８は割り込み信号（ＩＲＱ信号）を出力する。ＩＲＱインタフェース２８が出力するＩＲＱ信号２７Ａは、シリアル信号であり、ＩＲＱ信号２７Ａはインタフェース５を介して、第１のＣＰＵ２に入力される。
【００２５】
第２汎用ＩＯポート２７は、ＳＭＩ(System Management Interrupt）が発行されたことを示すＳＭＩ信号２７Ｂを出力する。ＳＭＩは、第１のＣＰＵ２の固有の命令であり、第１の割り込みの一例である。ＳＭＩはハードウェアレベルの割り込みであり、ＯＳ(operating System）の管理下にはない割り込みである。
【００２６】
つまり、ＳＭＩは、第１のＣＰＵ２が持つ機能の割り込みでもある。ＳＭＩがＯＳに管理されないことで、ＯＳの状態にかかわらず、第１のＣＰＵ２はＳＭＩの発行を認識することができる。
【００２７】
第２汎用ＩＯポート２７は、ＩＲＱ信号２７ＡとＳＭＩ信号２７Ｂとの２種類の割り込み信号を出力することが可能である。そして、インタフェース５（例えば、ＰＣＨ）がリダイレクションテーブルを有している場合、リダイレクションテーブルを設定することで、キーボードコントローラ７から出力されるＩＲＱ信号２７ＡとＳＭＩ信号２７Ｂとの両者を入力することができる。
【００２８】
図２では、第１汎用ＩＯポート２６と第２汎用ＩＯポート２７とを分けて図示しているが、第１汎用ＩＯポート２６と第２汎用ＩＯポート２７とは１つの汎用ＩＯポートとしてもよい。
【００２９】
図３は、ＳＭＩを発生するときの入出力ピンおよび波形の一例を示している。図３の一例に示すように、第２汎用ＩＯポート２７の入出力ピンの任意の１つのピンがＳＭＩに割り当てられている。第２のＣＰＵ２１は、ＳＭＩを発生するときには、「ａ」の入出力ピンを「０」→「１」にする（「１」→「０」であってもよい）。
【００３０】
例えば、入出力ピンの信号線の電圧をＬｏｗレベルからＨｉｇｈレベル（または、ＨｉｇｈレベルからＬｏｗレベル）にすることで、ＳＭＩを発生させることができる。第２汎用ＩＯポート２７の入出力ピンからの信号は、インタフェース５を介して、第１のＣＰＵ２に入力される。これにより、第１のＣＰＵ２はＳＭＩの発行を認識することができる。図２では、第１汎用ＩＯポート２６と第２汎用ＩＯポート２７とを分けているが、これらは１つの汎用ＩＯポートとしてもよい。
【００３１】
＜キーボードコントローラのファームウェア＞
次に、キーボードコントローラ７のファームウェア１３について説明する。図４は、ファームウェア１３の機能の一例を示すブロック図である。ファームウェア１３は、割り込み検出部３１とキーボードスキャン処理部３２とスキャンコード出力部３３とイベント処理部３４とＳＭＩ発行部３５と特殊操作検出部３６とを備える。ファームウェア１３の各部の機能は、第２のＣＰＵ２１により実行される。
【００３２】
割り込み検出部３１は、キーボード８から入力される割り込みやポーリングを検出する。キーボードスキャン処理部３２は、キーボード８から入力される割り込みをスキャンする。キーボードスキャン処理部３２がスキャンしたスキャンコードは、スキャンコード出力部３３から出力される。
【００３３】
イベント処理部３４は、ポーリングの処理等を行う。ＳＭＩ発行部３５は、イベント処理部３４がポーリングの処理等を行った結果、ＳＭＩを発行する必要があると判定した場合には、ＳＭＩを発行する。
【００３４】
特殊操作検出部３６は、キーボードスキャン処理部３２がスキャンした内容（キーボード８の操作情報）を取得し、スキャンした内容が特殊操作であるか否かを判定する。特殊操作としては、後述する第１の特殊操作および第２の特殊操作がある。特殊操作検出部３６が第２の特殊操作を検出したときに、ＳＭＩ発行部３５はＳＭＩを発行する。
【００３５】
＜ＳＭＩのハンドラ＞
次に、ＳＭＩのハンドラについて説明する。ＳＭＩは第１のＣＰＵ２の固有の割り込みであり、ＯＳに依存しないハードウェアレベルの割り込みである。従って、ＳＭＩが発行されると、第１のＣＰＵ２は、ＯＳの状態にかかわらず、ＳＭＩの割り込み処理を行う。ＳＭＩの割り込み処理を行うハンドラは、ＳＭＭ(System Management Mode）ハンドラと称される。
【００３６】
ＳＭＭハンドラは、コンピュータ１のメモリ３に記憶される。図５は、ＳＭＭハンドラの一例を示している。ＳＭＩの処理を行うＳＭＭハンドラは、メモリ３の所定領域に記憶されている。図５のＳＭＭハンドラおよびＳＭＩスタックがＳＭＩの領域となる。
【００３７】
ＳＭＭハンドラの領域は、コンピュータ１の電源を投入したときに、ＢＩＯＳ（Basic Input Output System）が確保してもよい。図５に示したメモリ３のメモリ空間の一例では、３２ＫＢｙｔｅがＳＭＩのための領域として確保される。ＳＭＩのための領域は３２ＫＢｙｔｅには限定されない。
【００３８】
図５に示した一例では、ＳＭＩの領域のうち、５１２ＢｙｔｅがＳＭＩスタックとして確保されている。なお、ＳＭＩスタックの領域は、５１２Ｂｙｔｅには限定されない。ＳＭＭハンドラによりＳＭＩの処理が実行されると、ＳＭＩスタックに第１のＣＰＵ２のレジスタの状態が保存される。この処理は、第１のＣＰＵ２のハードウェアレベルで行われる。
【００３９】
図５に示したＳＭＩスタックは一例であり、ＳＭＩスタックが記憶するレジスタの状態は、図５に示した例には限定されない。ＳＭＩスタックに第１のＣＰＵ２のレジスタの状態が保存されるとき、レジスタの状態は、「+7FFFh」から「+7E00h」に向けて順にプッシュされることで、保存される。
【００４０】
第１のＣＰＵ２は、レジスタの状態の保存処理が終了すると、ＳＭＭハンドラの先頭アドレスから処理を開始する。図５に示す一例では、「SMBASE」がベースアドレスであり、図５の例では、「38000h」となる。これにより、ＳＭＭハンドラの処理が開始される。
【００４１】
ＳＭＭハンドラの処理が終了すると、ＳＭＩスタックに保存されていた第１のＣＰＵ２のレジスタの状態が復旧される。そして、ＳＭＭハンドラの処理から、実行していた元のプログラムに戻る。一例として、ＳＭＭハンドラの処理が終了したときに、ＩＲＥＴ(Interrupt Return)命令が実行されるように設定してもよい。ＩＲＥＴ命令は、割り込み処理から元のプログラムに制御を移す命令である。
【００４２】
図５の一例では、ＳＭＩスタックのベースアドレスは「38000h」である。このベースアドレスは、任意に書き換えることができる。また、ＳＭＩ独自の領域（３２ＫＢｙｔｅ）が確保されている場合、ベースアドレスを基準として、ＳＭＩ独自の領域が確保されてもよい。この場合、ベースアドレスを任意に書き換えることができることから、ＳＭＩ独自の領域はメモリ３の任意の領域を使用することができる。
【００４３】
ＳＭＩ独自の領域は、ＢＩＯＳによって確保され、ＳＭＭハンドラは第１のＣＰＵ２により実行される。従って、ＯＳに障害が発生したとしても、第１のＣＰＵ２がレジスタの状態を自動的にＳＭＩスタックに退避させる。これにより、ＯＳに障害が発生したとしても、第１のＣＰＵ２のレジスタの状態は失われることがない。
【００４４】
＜実施形態の処理＞
次に、実施形態の処理について説明する。コンピュータ１に何らかの障害が発生し、正常に動作を行わなくなった場合、ダンプ採取を行うことが好ましい。これにより、採取したダンプに基づいて、障害の復旧処理を行うことができる。なお、以下の処理は、障害が発生していない場合でも実現することができる。
【００４５】
コンピュータ１を操作する操作者（以下、ユーザと称する）は、コンピュータ１を用いて所定の操作を行っている。このときに、コンピュータ１に何らかの障害が発生したとする。ダンプ採取を行う場合には、ユーザは、第１の特殊操作を行う。第１の特殊操作は、第１の操作の一例である。
【００４６】
キーボードコントローラ７の第１汎用ＩＯポート２６には、キーボード８の何れのキーが押下されたかの操作情報が入力される。従って、第２のＣＰＵ２１は、キーボード８の操作情報に基づいて、第１の特殊操作が行われたか否かを判定する（ステップＳ１）。
【００４７】
第１の特殊操作は、通常の操作と区別される。第１の特殊操作は、予めキーボードコントローラ７に設定されている。例えば、ファームウェア１３の特殊操作検出部３６に第１の特殊操作が予め設定されていてもよい。
【００４８】
第１の特殊操作としては、例えば、タイパマチックを適用してもよい。タイパマチックは、キーボード８の所定のキーが押下され続けられたときに、連続した同じキーコードを出力し続けるという機能を有する。または、キーボード８の所定のキー（例えば、CapsLockキー）に対する所定のオンまたはオフの操作を第１の特殊操作としてもよい。
【００４９】
キーボードコントローラ７は、キーボード８に対して第１の特殊操作が行われたことを認識したときに（ステップＳ１でＹＥＳ）、第１フラグ１１をオンにセットする（ステップＳ２）。一方、第１の特殊操作が行われなければ（ステップＳ１でＮＯ）、第１フラグ１１はオンにセットされない。
【００５０】
第１フラグ１１をオンにセットするために、例えば、第１の特殊操作によるコマンドがキーボードコントローラ７のファームウェア１３の所定アドレスに書き込まれるようにしてもよい。これにより、キーボードコントローラ７は、第１フラグ１１をオンにセットすることができる。
【００５１】
第１フラグがオンにセットされると、キーボードコントローラ７は、キーボード８に対して通常操作ではない操作が行われたことを認識する。つまり、キーボードコントローラ７は、特殊操作の内容を検出するモードに入る。従って、実施形態では、この時点で、ＳＭＩは発行されない。ただし、第１の特殊操作の時点で、ＳＭＩが発行されてもよい。
【００５２】
第１フラグがオンにセットされると、キーボードコントローラ７は、第２の特殊操作が行われたか否かを判定する（ステップＳ３）。第２の特殊操作も、第１の特殊操作と同様に、通常の操作とは異なる操作であり、予めキーボードコントローラ７に設定されている。第２の特殊操作は、第２の操作の一例である。
【００５３】
例えば、ファームウェア１３の特殊操作検出部３６に第２の特殊操作が予め設定されていてもよい。キーボードコントローラ７は、第１汎用ＩＯポート２６に入力されるキーボード８の操作情報に基づいて、第２の特殊操作が行われたか否かを認識ができる。
【００５４】
第２の特殊操作は、キーボード８に対する任意の操作であってよい。図７に第２の特殊操作の一例を示す。図７に一例として示す第２の特殊操作は、「Ctrl」キーを１回押下、次に「Scrl」キーを２回押下する操作である。
【００５５】
図７に示すように、第１フラグがオンにセットされると、キーの入力待ちが行われる。そして、「Ctrl」キーがオンにされると、タイマ２５は時間計測を開始する。そして、状態は、キー入力待ちに遷移する。タイマ２５は、予め設定された所定時間に達するまで時間を計測する。
【００５６】
タイマ２５が計測する時間が所定時間に達する前に、「Scrl」キーがオンにされた場合には、タイマ２５は計測した時間をリセットして、再び時間計測を開始する。一方、タイマ２５が計測する時間が所定時間に達する前に、「Scrl」キーがオンにされなければ、最初のキー入力待ちの状態に遷移する。
【００５７】
「Scrl」キーが所定時間内にオンにされた場合には、次の状態に遷移する。そして、タイマ２５が計測する時間が所定時間に達する前に、「Scrl」キーがオフにされたときには、タイマ２５は計測した時間をリセットして、再び時間計測を開始する。一方、タイマ２５が計測する時間が所定時間に達する前に、「Scrl」キーがオフにされなければ、最初のキー入力待ちの状態に遷移する。
【００５８】
「Scrl」キーが所定時間内にオフにされた場合には、次の状態に遷移する。そして、タイマ２５が計測する時間が所定時間に達する前に、「Scrl」キーがオンにされたときには、第２の特殊操作が行われたことを認識する。つまり、キーボードコントローラ７は、「Ctrl」キーが１回、次に「Scrl」キーが２回押下されたことを認識する。一方、タイマ２５が計測する時間が所定時間に達する前に、「Scrl」キーがオンにされない場合には、最初のキー入力待ちの状態に遷移する。
【００５９】
第２の特殊操作が行われたことをキーボードコントローラ７が認識した場合、キーボードコントローラ７は第２フラグ１２をオンにセットする（ステップＳ４）。第２フラグ１２をオンにセットするために、例えば、第２の特殊操作によるコマンドがキーボードコントローラ７のファームウェア１３の所定アドレスに書き込まれるようにしてもよい。これにより、キーボードコントローラ７は、第２フラグ１２をオンにセットすることができる。
【００６０】
キーボードコントローラ７の第２のＣＰＵ２１は、第２フラグ１２がオンにセットされたときに、ＳＭＩを発行する（ステップＳ５）。第２のＣＰＵ２１は、第２汎用ＩＯポート２７を制御して、ＳＭＩ信号２７Ｂを出力させる。このＳＭＩ信号２７Ｂは、インタフェース５を介して、第１のＣＰＵ２に入力される。第１のＣＰＵ２は、ＳＭＩ信号２７Ｂを入力することにより、ＳＭＩが発行されたことを検出する（ステップＳ６）。
【００６１】
第１のＣＰＵ２は、メモリ３からＳＭＭハンドラを読み出して、ＳＭＭハンドラを実行する。ＳＭＭハンドラは、検出したＳＭＩがキーボードコントローラ７からの割り込みであることを確認するために、キーボードコントローラ７の第２フラグ１２を確認する（ステップＳ７）。
【００６２】
これにより、第１のＣＰＵ２は、キーボードコントローラ７の第２フラグ１２の状態を確認する。第１のＣＰＵ２で実行されるＳＭＭハンドラは、第２フラグ１２がオンになっていることを確認することにより、キーボードコントローラ７がＳＭＩを発行したことを認識する。
【００６３】
第１のＣＰＵ２に対しては、キーボードコントローラ７だけではなく、他の機器から割り込みが入力される。従って、第１のＣＰＵ２は複数の割り込みを同時に入力する可能性がある。このとき、第１のＣＰＵ２が第２フラグ１２を確認することで、第１のＣＰＵ２はキーボードコントローラ７からのＳＭＩであることを認識する。
【００６４】
つまり、第２フラグ１２はＳＭＩ発行を示すフラグである。一方、第１フラグ１１は、マスク可能なフラグである。ただし、第１フラグ１１はマスク不能であってもよい。また、第１の特殊操作によりＳＭＩを発行する場合（第２の特殊操作を行わない場合）には、２つのフラグを１つのフラグにしてもよい。
【００６５】
ＳＭＭハンドラは、ＳＭＩ発行を検出したときに、第１のＣＰＵ２のレジスタの状態をＳＭＩスタックに退避させる（ステップＳ８）。これにより、第１のＣＰＵ２のレジスタの状態（値）は、ＯＳの状態にかかわらず、メモリ３に保存される。
【００６６】
第１のＣＰＵ２のレジスタの状態を保存した後に、ＳＭＭハンドラは、ＮＭＩリダイレクト処理を行う（ステップＳ９）。ＮＭＩ(Non-Maskable Interrupt）は、ダンプ採取機能を起動させるマスク不能な割り込みである。ＮＭＩは、ＯＳ標準の高い優先度の割り込みである。従って、ＳＭＩはＯＳに依存しないが、ＮＭＩはＯＳに依存する。ＮＭＩは、第２の割り込みの一例である。
【００６７】
ＮＭＩは割り込みであるため、ＳＭＩと同様に、割り込みハンドラにより割り込み処理が行われる。以下、ＮＭＩの割り込みハンドラをＮＭＩハンドラと称することもある。ＮＭＩハンドラは、ＯＳの機能としてメモリ３に記憶されている。
【００６８】
図８は、ＯＳによる割り込み処理を行うときの優先度の一例を示している。図８の一例に示されるように、ＯＳが扱う割り込みのうち最も高い優先度の割り込みがＮＭＩになっている。図８のＩＲＱＬ（IRQ Level）は、割り込みの種類ごとの優先度を示している。図８の「DISPATCH_LEVEL」、「APC_LEVEL」および「PASSIVE_LEVEL」は、ＯＳのソフトウェア割り込みのレベルを示す。これらは、優先度の低い割り込みである。
【００６９】
一方、ＮＭＩは、ＯＳのソフトウェア割り込みのレベルよりも高いレベルの割り込みに属している。従って、ＯＳのソフトウェア割り込みの動作状況にかかわらず、ＮＭＩは必要な時点で割り込みを行うことができる。
【００７０】
また、図８に示されるように、ハードウェア割り込みも複数種類があり、それぞれのハードウェア割り込みに優先度が設定されている。この点、ＮＭＩよりも優先度の高い割り込みがあり、当該割り込みに不具合を生じた場合には、ＮＭＩを実行することができず、ダンプ採取は行われない。図８の一例の場合、ＮＭＩは最も高いレベルの優先度を有している。従って、他のハードウェア割り込みにかかわらず、ＮＭＩは必要な時点で割り込みを行うことができる。
【００７１】
ここで、図８に示す割り込み処理の一例には、ＳＭＩは定義されていない。つまり、ＮＭＩはＯＳの管理下にあるが、ＳＭＩはＯＳの管理下にない。従って、ＯＳがいかなる状態であったとしても、ＳＭＩは、その影響を受けることがない。このため、ＯＳの状態にかかわらず、ＳＭＩはダンプ採取のトリガを発生させることができる。
【００７２】
ＳＭＩはダンプ採取開始のトリガであり、ダンプ採取処理は、ＯＳの管理下にあるＮＭＩが行う。つまり、ＮＭＩは、ＳＭＩをダンプ採取開始のトリガとして、ダンプ採取を開始する。
【００７３】
このために、第１のＣＰＵ２は、ＳＭＩが発行されると、ＮＭＩリダイレクト処理を行う。ＮＭＩリダイレクト処理が行われると、割り込み処理の制御はＮＭＩに移される。以下、図９を参照して、ＮＭＩリダイレクト処理について説明する。
【００７４】
第１のＣＰＵ２は、ＳＭＩ発行を検出すると、ＳＭＩをダンプ採取のトリガとして認識する。このため、第１のＣＰＵ２は、実行中のプログラムの処理を中断し、中断したときのプログラムの命令を認識する。この中断したときのプログラムの命令は、復帰先の命令となる。第１のＣＰＵ２は、プログラムの復帰先の命令を、ＮＭＩハンドラを起動する命令（例えば、ＩＮＴ２命令）に書き換える（ステップＳ１１）。
【００７５】
例えば、第１のＣＰＵ２は、プログラムの復帰先の命令のアドレスを、ＮＭＩハンドラを起動する命令の開始アドレスに書き換えてもよい。これにより、第１のＣＰＵ２が実行する命令のアドレスが、ＮＭＩハンドラを起動する開始アドレスとなり、第１のＣＰＵ２はＮＭＩハンドラの実行を開始する。
【００７６】
ダンプ採取を行うときには、実行を中断したプログラムは、メモリ３の所定領域に保存される。実施形態では、一例として、プログラムはメモリ３の所定領域にスタック形式で保存されるものとする。この場合、第１のＣＰＵ２は、ローカルなダンプ情報をプログラムのスタックに保存する（ステップＳ１２）。
【００７７】
例えば、第１のＣＰＵ２は、ＳＭＩスタックの情報をローカルなダンプ情報として、プログラムのスタックに保存してもよい。これにより、ＮＭＩハンドラが第１のＣＰＵ２のレジスタ状態を採取できなくても、プログラムにスタックされたレジスタ状態を使用して、一時的な診断情報を行うことができる。
【００７８】
第１のＣＰＵ２で実行されるＳＭＭハンドラは、復帰命令（ＩＲＥＴ命令）を実行する（ステップＳ１３）。これにより、メモリ３のＳＭＭ領域に保存されていた第１のＣＰＵ２のレジスタ状態が復旧される（ステップＳ１４）。このため、第１のＣＰＵ２のレジスタは元の状態に戻る。
【００７９】
次に、第１のＣＰＵ２で実行されるＳＭＭハンドラは、復帰先の命令を実行する（ステップＳ１５）。つまり、ＳＭＭハンドラは、もともと実行していたプログラムを中断したときの命令に復帰する処理を実行する。ここで、ステップＳ１１により、復帰先の命令はＮＭＩハンドラを起動する命令に書き換えられている。
【００８０】
従って、第１のＣＰＵ２が復帰先の命令を実行することで、ＮＭＩハンドラが起動する。このため、ＮＭＩハンドラによる処理が実行される（ステップＳ１６）。これにより、ＳＭＩからＮＭＩに制御を移すことができる。つまり、ＳＭＭハンドラからＮＭＩハンドラに割り込み処理がリダイレクトされる。
【００８１】
以上が、図６のステップＳ９のＮＭＩリダイレクト処理である。ＮＭＩリダイレクト処理の次に、第１のＣＰＵ２のＮＭＩハンドラは、ＮＭＩ処理を行う（ステップＳ１０）。ＮＭＩ処理は、実際にダンプ採取を行う処理である。図１０は、ＮＭＩ処理の一例を示している。
【００８２】
ＮＭＩハンドラが起動されると、ＯＳによるトラップが行われる（ステップＳ２１）。ＯＳがトラップを行うと、ＯＳは、ダンプ採取に必要なメモリ３の内容を補助記憶装置６に保存する（ステップＳ２２）。このときに、ディスプレイ４には、コンピュータ１に何らかの障害が発生したことを示す表示を行ってもよい。例えば、ブルースクリーン等を表示してもよい。
【００８３】
そして、第１のＣＰＵ２は、ＯＳの起動を行う（ステップＳ２３）。第１のＣＰＵ２は、ＯＳを起動しているときに、前回のストップエラーを検出し（ステップＳ２４）、ダンプ採取を行うためのプログラムを起動する。起動したプログラムは、メモリ３に保存された内容に基づいて、ダンプファイルを作成する（ステップＳ２５）。これにより、ダンプ採取が行われる。第１のＣＰＵ２は、作成されたダンプファイルを補助記憶装置６に保存する。
【００８４】
図１０に一例として示したＮＭＩ処理は、ダンプ採取を行うための処理である。従って、ダンプ採取を行うことができれば、図１０の処理には限定されない。ＮＭＩ処理により、ダンプ採取を行うことができれば、図１０以外の方法でダンプ採取を行ってもよい。また、ＳＭＩからリダイレクトする先は、ダンプ採取を行うことができる割り込みであれば、ＮＭＩには限定されない。
【００８５】
例えば、ＳＭＩがリダイレクトする先は、図８に示した一例のうち、ＮＭＩではなく、Hardware Interrupt(DIRQL)に定義される割り込みであってもよい。ダンプ採取を開始できる割り込みであれば、ＳＭＩのリダイレクト先は、任意のハードウェア割り込みであってもよい。ただし、他のハードウェア割り込みより優先させるため、ＳＭＩがリダイレクトする先は、ＯＳで定義される最も高い優先度のＮＭＩであることが好ましい。
【００８６】
以上により、実施形態の処理が終了する。コンピュータ１に生じた障害を復旧するときには、採取されたダンプに基づいて、障害の診断を行う。障害の診断を行うときには、所定の解析ツールを使用することができる。
【００８７】
解析ツールは、補助記憶装置６に記憶されていてもよい。例えば、ダンプ採取が完了したことを契機に、自動的に解析ツールが起動するようにしてもよい。そして、診断の結果に基づいて、障害を復旧し、コンピュータ１を正常な状態に復旧するようにしてもよい。
【００８８】
次に、図１１に示す一例を参照して、メモリ３の状態の遷移について説明する。図１１において、実行中プログラムとあるのは、ＳＭＩを発行する前に、第１のＣＰＵ２が実行していたプログラムである。
【００８９】
キーボード８に対して、第１の特殊操作および第２の特殊操作が行われると、キーボードコントローラ７の第２のＣＰＵ２１は、ＳＭＩを発行する。これにより、実行中プログラムは処理が中断する。図１１で「ＳＭＩ」が示しているアドレスが中断された命令になる。
【００９０】
第１のＣＰＵ２は、ＳＭＩを検出すると、第２フラグがオンになっているか否かを確認する。第１のＣＰＵ２は、第２のフラグがオンになっていることを確認したときに、メモリ３のＳＭＩスタックにレジスタの状態を退避させる。レジスタの状態の退避が完了したら、第１のＣＰＵ２は、復帰先命令を書き換える。図１１に示す一例では、復帰先命令が「IRET」から「INT2」に書き換えられている。
【００９１】
ＳＭＩから復帰するときに、第１のＣＰＵ２は、復帰先命令を実行する。このとき、復帰先命令は「INT2」に書き換えられている。「INT2」は、ＮＭＩハンドラを起動させる命令であるため、ＮＭＩ命令が実行される。ＮＭＩ命令が実行されることにより、ＯＳによるダンプ採取が行われる。採取されたダンプは、補助記憶装置６に記憶される。
【００９２】
以上に説明したように、ＣＰＵ固有の割り込みであるＳＭＩ（第１の割り込み）を発生させて、ＳＭＩの処理（例えば、ＳＭＭハンドラの処理）からダンプ採取機能を起動させるＮＭＩ（第２の割り込み）にリダイレクトしている。ＳＭＩは、ＯＳの管理下にない割り込みであるため、ＯＳの状態にかかわらず、第１のＣＰＵ２は、ＳＭＩを検出することができる。
【００９３】
ＳＭＩは、ダンプ採取開始のトリガとなっているため、ＯＳがトリガを検出できない場合でも、第１のＣＰＵ２はダンプ採取開始のトリガを検出することができる。そして、ＳＭＩからＮＭＩにリダイレクトすることで、ＮＭＩがダンプ採取処理を行う。従って、ＯＳがダンプ採取のトリガを検出できない場合でも、ダンプ採取処理を行うことができる。
【００９４】
ＳＭＩは、キーボード８に対して、第１の特殊操作および第２の特殊操作が行われたときに発行される。実施形態では、ＯＳが障害を検出するのではなく、キーボード８に対してＳＭＩを発行する操作が行われたときに、ＳＭＩを発生する。これにより、ダンプ採取を行うことが可能になる。
【００９５】
また、ＮＭＩをダンプ採取開始のトリガとする場合、ＮＭＩはＯＳの管理下にあるため、ＯＳの状態によっては、ダンプ採取開始のトリガが検出されない可能性がある。一方、ＳＭＩはＯＳの管理下になく、ＣＰＵ固有の割り込みであるため、ＯＳの状態にかかわらず、第１のＣＰＵ２はダンプ採取開始のトリガを検出することができる。
【００９６】
また、ＮＭＩはＯＳの管理下にあるため、ハンドラの仕様はＯＳの仕様に依存する。一方、ＳＭＩはＯＳの管理下にないため、ハンドラの仕様を任意に設定することができる。従って、ユーザは、任意の機能をＳＭＩのハンドラに持たせることができ、ダンプ採取の処理の自由度が向上する。
【００９７】
また、ＳＭＩのハンドラは、独自のＳＭＭスタックを有しているため、ＯＳのスタックにはＳＭＩのハンドラの中継の痕跡が残存しない。つまり、ＳＭＩはＮＭＩにリダイレクトを行っているため、リダイレクト処理はＯＳからは隠蔽される。このため、採取されるダンプには、ＳＭＩの処理は反映されない。
【００９８】
上述した解析ツールは、採取したダンプに基づいて、障害の発生要因を解析する。このとき、採取したダンプにはＳＭＩの処理が反映されていないため、従来からある解析ツールを使用することができる。
【００９９】
また、ＯＳに管理されないＳＭＩが発行されたときに、第１のＣＰＵ２のレジスタの状態はメモリ３のＳＭＩスタックに退避される。このため、ＯＳの状態にかかわらず、少なくとも第１のＣＰＵ２のレジスタの状態を確保することができる。
【０１００】
また、実施形態の処理を行うコンピュータ１は、複数のＣＰＵを有しているコンピュータだけではなく、１つのＣＰＵを有しているコンピュータに対しても適用することができる。実施形態では、ＢＳＰ(bootstrap Processor)とＡＰ(Application Processor)との２つのＣＰＵを必要とせず、単一のＣＰＵを有しているコンピュータ１に対して実施形態を適用することができる。
【０１０１】
実施形態では、キーボード８に対する第１の特殊操作および第２の特殊操作に基づいて、ＳＭＩを発行する例を説明したが、ＳＭＩを発行する手段は任意の手段を採用することができる。例えば、図４のイベント処理部３４がポーリング処理を行った結果、ＳＭＩ発行部３５を制御して、ＳＭＩを発行させることができる。
【符号の説明】
【０１０２】
１    コンピュータ
２    第１のＣＰＵ
３    メモリ
４    ディスプレイ
５    コントローラ
６    補助記憶装置
７    キーボードコントローラ
８    キーボード
１１  第１フラグ
１２  第２フラグ
１３  ファームウェア
２１  第２のＣＰＵ
２２  ＲＯＭ
２３  ＲＡＭ
２４  バスインタフェース
２５  タイマ
２６  第１汎用ＩＯポート
２７  第２汎用ＩＯポート
２８  ＩＲＱインタフェース
３１  割り込み検出部
３２  キーボードスキャン処理部
３３  スキャンコード出力部
３４  イベント処理部
３５  ＳＭＩ発行部
３６  特殊操作検出部
【図１】
2015114741.tif 000003
【図２】
2015114741.tif 000004
【図３】
2015114741.tif 000005
【図４】
2015114741.tif 000006
【図５】
2015114741.tif 000007
【図６】
2015114741.tif 000008
【図７】
2015114741.tif 000009
【図８】
2015114741.tif 000010
【図９】
2015114741.tif 000011
【図１０】
2015114741.tif 000012
【図１１】
2015114741.tif 000013
【手続補正書】
【提出日】平成28年7月14日(2016.7.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ＣＰＵ固有の割り込みである第１の割り込みを発行し、
前記第１の割り込みの処理から、ダンプ採取機能を起動させる第２の割り込みに制御を移し、
前記第２の割り込みに基づいて、ダンプ採取を開始する、
情報処理装置の診断方法。
【請求項２】
前記第２の割り込みは、オペレーティングシステムで定義される複数の割り込みのうち、ソフトウェア割り込みよりも優先度が高い、
請求項１記載の情報処理装置の診断方法。
【請求項３】
前記第２の割り込みは、前記オペレーティングシステムで定義される複数の割り込みのうち最も優先度の高い割り込みである、
請求項２記載の情報処理装置の診断方法。
【請求項４】
前記第１の割り込みの処理から復帰するときの復帰先の命令を、前記第１の割り込みによって実行を中断されたプログラムの命令から前記第２の割り込みを開始する命令に書き換える、
請求項１乃至３のうち何れか１項に記載の情報処理装置の診断方法。
【請求項５】
キーボードに対して、通常の操作とは異なる第１の操作が行われた後に、前記通常の操作とは異なる第２の操作が行われたときに、前記第１の割り込みを発生する、
請求項１乃至４のうち何れか１項に記載の情報処理装置の診断方法。
【請求項６】
前記第１の操作が行われたときに、前記キーボードを制御するキーボードコントローラの第１フラグをオンにし、前記第２の操作が行われたときに、前記キーボードコントローラの第２フラグをオンにし、前記第２フラグがオンになっていることを前記ＣＰＵが確認したときに、前記第２の割り込みを発生する、
請求項５記載の情報処理装置の診断方法。
【請求項７】
前記ＣＰＵが前記第１の割り込みを検出したときに、前記ＣＰＵのレジスタの状態をメモリに退避させる、
請求項１乃至６のうち何れか１項に記載の情報処理装置の診断方法。
【請求項８】
情報処理装置の診断プログラムであって、
ＣＰＵ固有の割り込みである第１の割り込みを発行し、
前記第１の割り込みの処理から、ダンプ採取機能を起動させる第２の割り込みに制御を移し、
前記第２の割り込みに基づいて、ダンプ採取を開始する、
処理を前記情報処理装置に実行させる情報処理装置の診断プログラム。
【請求項９】
ＣＰＵを備える情報処理装置であって、
前記ＣＰＵは、
前記ＣＰＵ固有の割り込みである第１の割り込みを入力した後に、前記第１の割り込みの処理から、ダンプ採取機能を起動させる第２の割り込みに制御を移し、
前記第２の割り込みに基づいて、ダンプ採取を開始する、
情報処理装置。
【国際調査報告】
2015114741.tif 000014
2015114741.tif 000015
2015114741.tif 000016
2015114741.tif 000017