(57)【要約】【課題】情報処理装置においてエラーが生じた場合に、充分なエラー対応を行なうことができるようにする。【解決手段】メモリ１６においてエラーが生じた際に、複数のプロセッサ１０のうちの一のプロセッサ１０ａが一のメモリ１６ａに格納されたエラー対処プログラム２０ａを実行し、一のプロセッサ１０ａがエラー対処プログラム２０ａを正常に動作させることができない場合に、他のプロセッサ１０ｂが一のメモリ１６ａとは異なる他のメモリ１６ｂに格納されたエラー対処プログラム２０ｂを実行する。【選択図】図１
2010033355.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサと複数のメモリとをそなえた情報処理装置であって、
前記複数のメモリのうち少なくとも２つの該メモリのそれぞれにエラー対処プログラムを格納するエラー対処プログラム格納処理部をそなえ、
該メモリにおいてエラーが生じた際に、
前記複数のプロセッサのうちの一のプロセッサが、該エラー対処プログラムを格納された２以上の該メモリのうち、一のメモリに格納された該エラー対処プログラムを実行し、
前記一のプロセッサが該エラー対処プログラムを正常に動作させることができない場合に、前記複数のプロセッサのうちの前記一のプロセッサとは異なる他のプロセッサが、該エラー対処プログラムを格納された２以上の該メモリのうち、前記一のメモリとは異なる他のメモリに格納された該エラー対処プログラムを実行することを特徴とする、情報処理装置。
【請求項２】
複数のデバイスをそなえ、
前記複数のデバイスのうちのいずれかにかかる処理においてエラーが生じた際に、
前記一のプロセッサが、前記複数のデバイスに対して予め設定された走査順序で、前記複数のデバイスのうち情報採取が行なわれていない情報未採取デバイスに順次アクセスして情報採取を行なうとともに、
前記他のプロセッサが、該情報未採取デバイスに、該走査順序とは逆の順序で順次アクセスして情報採取を行なうことを特徴とする、請求項１記載の情報処理装置。
【請求項３】
前記一のプロセッサ及び他のプロセッサのうちいずれかのプロセッサが、該デバイスの情報採取過程において異常停止した場合に、この異常停止した異常停止プロセッサとは異なるプロセッサが、該異常停止プロセッサが異常停止となった該デバイスにアクセスして情報採取を行ない、
前記異常停止プロセッサとは異なるプロセッサの該情報採取の成否に基づいて、該異常停止の原因を判断することを特徴とする、請求項２記載の情報処理装置。
【請求項４】
複数のプロセッサとメモリと複数のデバイスをそなえた情報処理装置であって、
前記複数のデバイスのうちのいずれかにかかる処理においてエラーが生じた際に、
前記複数のプロセッサのうちの第１のプロセッサが、前記複数のデバイスに対して予め設定された走査順序で、前記複数のデバイスのうち情報採取が行なわれていない情報未採取デバイスに順次アクセスして情報採取を行なうとともに、
前記複数のプロセッサのうちの該第１のプロセッサとは異なる第２のプロセッサが、該情報未採取デバイスに、該走査順序とは逆の順序で順次アクセスして情報採取を行なうことを特徴とする、情報処理装置。
【請求項５】
該第１のプロセッサ及び該第２のプロセッサのうちいずれかのプロセッサが、該デバイスの情報取得過程において異常停止した場合に、この異常停止した異常停止プロセッサとは異なるプロセッサが、該異常停止プロセッサが異常停止となった該デバイスにアクセスして情報採取を行ない、
前記異常停止プロセッサとは異なるプロセッサの該情報採取の成否に基づいて、該異常停止の原因を判断することを特徴とする、請求項４記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサと複数のメモリとをそなえた情報処理装置においてエラーが生じた際の対処の技術に関する。
【背景技術】
【０００２】
図６は従来の情報処理装置のハードウェア構成を模式的に示す図である。
この図６に示す従来の情報処理装置３００は、１以上（図６に示す例では２つ）のＣＰＵ３０１ａ，３０１ｂと同じく１以上（図６に示す例では２つ）のメモリ３０２ａ，３０２ｂとをそなえるとともに、チップセット３０３，３０４，ＰＣＩデバイス３０５およびＩ／Ｏデバイス３０６をそなえて構成されている。
【０００３】
ＣＰＵ３０１ａ，３０１ｂは、プログラムを実行することにより種々の機能や制御を実現するものである。
メモリ３０２ａ，３０２ｂは、ＣＰＵ３０１ａ，３０１ｂが上記プログラムを実行するに際して、種々のデータやプログラムを一時的に格納するものである。
チップセット３０３（North Bridge；ノースブリッジ）は、ＣＰＵ３０１ａ，３０１ｂとメモリ３０２ａ，３０２ｂとの接続を制御するチップセットである。このチップセット３０３は、メモリコントローラ３０７をそなえており、このメモリコントローラ３０７を介してメモリ３０２ａ，３０２ｂの制御を行なうようになっている。
【０００４】
また、図６に示す例においては、このチップセット３０３にＰＣＩデバイス３０５が接続されており、このＰＣＩデバイス３０５との接続の制御も行なうようになっている。
チップセット３０４（South Bridge；サウスブリッジ）は、各種のＩ／Ｏ（Input/Output）コントローラを統合したチップセットであって、チップセット３０３と通信可能に接続されている。なお、この図６に示す例においては、このチップセット３０４に、Ｉ／Ｏデバイス３０６が接続されている。
【０００５】
Ｉ／Ｏデバイス３０６は、情報処理装置において用いられる種々の周辺機器であって、例えば、コンパクトフラッシュ（登録商標）やＢＩＯＳフラッシュである。
また、図６に示す例においては、メモリ３０２ａにエラーハンドラ３０８が展開（格納）された状態を示している。このエラーハンドラ３０８は、情報処理装置３００の動作中に、メモリ３０２ａ，３０２ｂのいずれかにおいて異常状態（エラー）が生じた場合に、このエラーを処理するためのプログラム（コード，ハンドラ）であり、ＣＰＵ３０１ａによって実行されるようになっている。
【０００６】
このように構成された従来の情報処理装置３００において、メモリ３０２ａやメモリ３０２ｂにおいて何らかのエラー（メモリエラー）が生じる場合がある。
例えば、下記特許文献１には、アンコレクタブル（修復不可）なエラー（アンコレクタブルエラー）が生じた場合において、ＥＣＣ（Error Correction Code）エラーハンドラが、新たなページを割り当てて、ＥＣＣエラーを発生させたページのデータをコピーするとともに、ＥＣＣエラーを発生させたページを利用不可能に設定する手法等が開示されている。これにより、アンコレクタブルエラーが発生しても、システムが停止することを抑止している。
【特許文献１】特開平５−２０４７７０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述の如き従来の情報処理装置３００においては、エラーが生じた場合に、エラーハンドラ３０８により充分なエラー対処を行なうことができない場合がある。
例えば、メモリ３０２ａにおいてメモリアンコレクタブルエラーが発生した場合には、同一メモリ（メモリ３０２ａ）上の他の箇所でもエラーが生じている可能性が高い。
従って、メモリアンコレクタブルエラーに対処するためのエラーハンドラ３０８の実行中において、更に、メモリアンコレクタブルエラーが発生し、このメモリ３０２ａ上に展開されているエラーハンドラ３０８の実行コードが異常となり、異常動作となるおそれがある。このようにエラーハンドラ３０８が異常動作した場合には、エラーが発生した箇所を特定できないという課題がある。
【０００８】
また、従来の情報処理装置３００において、システム動作中にエラーが発生した場合には、エラー発生の原因となった個所（異常発生箇所）を特定するために、ＣＰＵ３０１ａ（エラーハンドラ３０８）により、情報処理装置３００にそなえられた各デバイスの情報を採取し、これらの採取した情報から異常個所を特定するようになっている。
しかしながら、ＣＰＵ３０１ａが、情報採取のためにデバイスに対してアクセスする場合に、そのアクセスしたデバイスに何らかの問題がある場合に、システムが応答停止状態となる（ハング，フリーズ）する場合がある。このように、ＣＰＵ３０１ａによるデバイスの情報採取中にシステムハングが生じると、残りのデバイスの情報を採取することができず、異常発生箇所を究明することができないという課題もある。
【０００９】
さらに、このようにシステムがハングした場合には、ハングした原因が、アクセスしたデバイスにあったのかＣＰＵ３０１ａに異常があったのかを判断することができず、これによっても異常発生箇所が特定できない。
本発明は、このような課題に鑑み創案されたもので、情報処理装置においてエラーが生じた場合に、充分なエラー対応を行なうことができるようにすることを目的とする。
【課題を解決するための手段】
【００１０】
このため、この情報処理装置の要件は、複数のプロセッサと複数のメモリとをそなえた情報処理装置であって、前記複数のメモリのうち少なくとも２つの該メモリのそれぞれにエラー対処プログラムを格納するエラー対処プログラム格納処理部をそなえ、該メモリにおいてエラーが生じた際に、前記複数のプロセッサのうちの一のプロセッサが、該エラー対処プログラムを格納された２以上の該メモリのうち、一のメモリに格納された該エラー対処プログラムを実行し、前記一のプロセッサが該エラー対処プログラムを正常に動作させることができない場合に、前記複数のプロセッサのうちの前記一のプロセッサとは異なる他のプロセッサが、該エラー対処プログラムを格納された２以上の該メモリのうち、前記一のメモリとは異なる他のメモリに格納された該エラー対処プログラムを実行するものである。
【００１１】
また、この情報処理装置の要件は、複数のプロセッサとメモリと複数のデバイスをそなえた情報処理装置であって、前記複数のデバイスのうちのいずれかにかかる処理においてエラーが生じた際に、前記複数のプロセッサのうちの第１のプロセッサが、前記複数のデバイスに対して予め設定された走査順序で、前記複数のデバイスのうち情報採取が行なわれていない情報未採取デバイスに順次アクセスして情報採取を行なうとともに、前記複数のプロセッサのうちの該第１のプロセッサとは異なる第２のプロセッサが、該情報未採取デバイスに、該走査順序とは逆の順序で順次アクセスして情報採取を行なうものである。
【発明の効果】
【００１２】
開示の情報処理装置によれば、以下の少なくともいずれか１つの効果ないし利点が得られる。
（１）メモリにおいてエラーが生じた際に、エラーが発生しているメモリの使用を回避して、エラーが発生した箇所や原因の特定等、エラーへの対処を行なうことができ、信頼性を向上することができる。
【００１３】
（２）エラーが発生した場合において、エラーハンドラによる各デバイスの情報採取を、情報処理装置を異常停止させることなく行なうことができ、エラーへの対処を迅速に行なうことができる他、信頼性を向上させることができる。
（３）デバイスの情報採取を短時間で行なうことができる。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照して本発明の実施の形態を説明する。
（Ａ）一実施形態の説明
図１は本発明の一実施形態としての情報処理装置のハードウェア構成を模式的に示す図である。
本情報処理装置１００は、図１に示すように、１以上（図１に示す例では２つ）のＣＰＵ１０ａ，１０ｂと、同じく１以上（図１に示す例では２つ）のメモリ１６ａ，１６ｂとをそなえるとともに、チップセット１１，１２およびデバイス１４ａ，１４ｂ，１４ｃ，１４ｄをそなえて構成されている。
【００１５】
チップセット１１（North Bridge；ノースブリッジ）は、ＣＰＵ１０ａ，１０ｂとメモリ１６ａ，１６ｂ等との接続を制御するものである。このチップセット１１は、メモリコントローラ１３をそなえており、このメモリコントローラ１３を介して、ＣＰＵ１０ａ，１０ｂとメモリ１６ａ，１６ｂとの間において、データやプログラムの書き込みや読み出しの制御等を行なうようになっている。
【００１６】
また、図１に示す例においては、このチップセット１１にデバイス１４ｄが接続されており、ＣＰＵ１０ａ，１０ｂやメモリ１６ａ，１６ｂとデバイス１４ｄとのデータの送受信の制御等を行なうようになっている。
チップセット１２（South Bridge；サウスブリッジ）は、各種のＩ／Ｏ（Input/Output）コントローラを統合したチップセットであって、チップセット１１と通信可能に接続されている。なお、この図１に示す例においては、このチップセット１２に、デバイス１４ａ，１４ｂ，１４ｃが接続されている。
【００１７】
デバイス１４ａ，１４ｂ，１４ｃ，１４ｄは、本情報処理装置１００において用いられる種々の周辺機器であり、例えば、デバイス１４ａ，１４ｂ，１４ｃとしては、例えば、コンパクトフラッシュ（登録商標）やＢＩＯＳフラッシュが用いられ、又、デバイス１４ｄとしては、例えば、ＰＣＩ（Peripheral Component Interconnect）デバイスが用いられる。
【００１８】
なお、以下、デバイスを示す符号としては、複数のデバイスのうち１つを特定する必要があるときには符号１４ａ，１４ｂ，１４ｃ，１４ｄを用いるが、任意のデバイスを指すときには符号１４を用いる。
また、以下、デバイス１４ａのことをデバイスＡ、デバイス１４ｂのことをデバイスＢ、デバイス１４ｃのことをデバイスＣ、デバイス１４ｄのことをデバイスＤ表現する場合がある。
【００１９】
ＣＰＵ（Central Processing Unit）１０ａ，１０ｂは、プログラムを実行することにより種々の機能や制御を実現するプロセッサであり、メモリ１６ａ，１６ｂは、ＣＰＵ１0ａ，１0ｂがプログラムを実行するに際して、種々のデータやプログラム（コード）を一時的に格納するメモリ（ＲＡＭ；Random Access Memory）である。
そして、本情報処理装置１００においては、ＣＰＵ１０ａがメモリ１６ａに展開（格納）されたプログラムを、又、ＣＰＵ１０ｂがメモリ１６ｂに展開されたプログラムを、それぞれ実行するようになっている。
【００２０】
なお、以下、ＣＰＵを示す符号としては、複数のＣＰＵのうち１つを特定する必要があるときには符号１０ａ，１０ｂを用いるが、任意のＣＰＵを指すときには符号１０を用いる。同様に、以下、メモリを示す符号としては、複数のメモリのうち１つを特定する必要があるときには符号１６ａ，１６ｂを用いるが、任意のメモリを指すときには符号１６を用いる。
【００２１】
また、以下、ＣＰＵ１０ａのことをＣＰＵＡ、ＣＰＵ１０ｂのことをＣＰＵＢと表現する場合があり、同様に、メモリ１６ａのことをメモリＡ、メモリ１６ｂのことをメモリＢと表現する場合がある。
本情報処理装置１００においては、ＣＰＵ１０ａとＣＰＵ１０ｂとは物理的に別体として構成されたものであり、同様に、メモリ１６ａとメモリ１６ｂとも物理的に別体として構成されたものである。
【００２２】
また、本情報処理装置１００においては、その起動時にＢＩＯＳ（Basic Input Output System）により、ＲＯＭ（Read Only Memory；図示省略）やＨＤＤ（Hard disk drive）等の記憶装置から読み出された種々のプログラムやデータが、これらのメモリ１６ａ，１６ｂに格納（ロード）されるようになっている。
そして、本情報処理装置１００においては、図１に示すように、メモリ１６ａにエラーハンドラ２０ａが、メモリ１６ｂにエラーハンドラ２０ｂがそれぞれ格納されるようになっている。
【００２３】
エラーハンドラ２０ａ，２０ｂは、情報処理装置１００の動作中に、メモリ１６ａやメモリ１６ｂにおいて異常状態（エラー）が生じた場合に、このエラーを処理するためのプログラム（コード，ハンドラ；エラー対処プログラム）である。これらのエラーハンドラ２０ａ，２０ｂは、本情報処理装置１００のシステム動作中にメモリ１６ａもしくはメモリ１６ｂにエラー（異常状態）が発生した場合に実行され、例えば、メモリ１６ａもしくはメモリ１６ｂにアンコレクタブル（修復不可）なエラー（アンコレクタブルエラー）が検出された場合に、実行されるようになっている。
【００２４】
なお、メモリ１６ａもしくはメモリ１６ｂにおけるエラー（アンコレクタブルエラー）の検出は、既知の種々の手法を用いて実現することができるものであり、その説明は省略する。
また、メモリ１６ａもしくはメモリ１６ｂにおいてアンコレクタブルエラーが検出されると、例えば、メモリコントローラ１３が、ＣＰＵ１０ａ，１０ｂに対して、割り込み信号等により通知するようになっている。
【００２５】
そして、ＣＰＵ１０ａ，１０ｂは、メモリ１６ａもしくはメモリ１６ｂにおいてアンコレクタブルエラーが検出されたことが通知されると、エラーハンドラ２０ａ，２０ｂを実行することにより、例えば、本情報処理装置１００にそなえられた各デバイス１４にアクセスして所定の情報を取得して、エラーの原因となったデバイス（被疑箇所）の特定を行なうのである。
【００２６】
具体的には、エラーハンドラ２０ａ，２０ｂは、ＣＰＵ１０ａ，１０ｂに対して、本情報処理装置１００にそなえられた各デバイス１４の情報採取を行なわせ、この採取した情報に基づいてエラー解析を行なわせて、被疑箇所の特定を行なわせるようになっている。
なお、これらのデバイス１４からの情報採取手法やエラー解析手法、被疑箇所の特定手法等は、既知の種々の手法を用いて実現することができるものであり、これらの説明はそれぞれ省略する。
【００２７】
また、エラーハンドラ２０ｂ（２０ａ）においては、それぞれ上述したデバイス１４の情報採取やエラー解析、被疑箇所の特定に加えて、ＣＰＵ１０ａ（１０ｂ）によるエラーハンドラ２０ａ（２０ｂ）の実行処理について、ＣＰＵ１０ａ（１０ｂ）がエラーハンドラ２０ａ（２０ｂ）を正常に動作させることができたか否かを確認する確認機能を実現するようになっている。
【００２８】
この確認機能は、例えば、ＣＰＵ１０ａ（１０ｂ）がエラーハンドラ２０ａ（２０ｂ）の実行を開始してからの所定時間内に、ＣＰＵ１０ａ（１０ｂ）によりエラーハンドラ２０ａ（２０ｂ）を正常に動作させることができた旨を表わす所定のフラグ（状態フラグ）が設定されたか否かを確認することにより行なわれるようになっている。
また、これらのエラーハンドラ２０ａ，２０ｂは、例えば、本情報処理装置１００の起動時において、ＣＰＵ１０ａもしくはＣＰＵ１０ｂがＢＩＯＳを実行することにより、ＲＯＭやＨＤＤ等（いずれも図示省略）から読み出され、メモリ１６ａ，１６ｂに格納されるようになっている。
【００２９】
すなわち、本情報処理装置１００においては、これらのＣＰＵ１０ａもしくはＣＰＵ１０ｂがＢＩＯＳを実行することにより、２つのメモリ１６ａ，１６ｂのそれぞれにエラーハンドラ２０ａ，２０ｂを格納するエラー対処プログラム格納処理部として機能するようになっている。
なお、以下、メモリハンドラ２０ａのことをメモリハンドラＡ、メモリハンドラ２０ｂのことをメモリハンドラＢと表現する場合がある。
【００３０】
そして、本情報処理装置１００においては、ＣＰＵ１０ａがメモリ１６ａに格納されているエラーハンドラ２０ａを、ＣＰＵ１０ｂがメモリ１６ｂに格納されているエラーハンドラ２０ｂを、それぞれ実行するようになっている。
また、メモリ１６ａとメモリ１６ｂとは物理的に異なる（別体として構成された）ものであるので、メモリ１６ａ，１６ｂのうちいずれかにおいてエラー（アンコレクタブルエラー）が生じた場合であっても、他方にその影響がないようになっている。
【００３１】
上述の如く構成された本発明の一実施形態としての情報処理装置１００において、メモリ１６ａもしくはメモリ１６ｂにアンコレクタブルエラーが発生した場合には、例えば、割り込み処理等によりＣＰＵ１０ａ，１０ｂにその旨が通知され、ＣＰＵ１０ａ，１０ｂによるエラーハンドラ２０ａ，２０ｂの実行処理が行なわれる。
本発明の一実施形態としての情報処理装置１００のメモリ１６ａにおけるエラー発生時の処理を、図２（ａ），図２（ｂ）に示すフローチャート（ステップＡ１０〜Ａ４０，Ｂ１０〜Ｂ７０）に従って説明する。なお、図２（ａ）はエラーハンドラＡ（ＣＰＵＡ）による処理を、又、図２（ｂ）はエラーハンドラＢ（ＣＰＵＢ）による処理をそれぞれ示している。
【００３２】
例えば、メモリ１６ａにおいてアンコレクタブルエラーが発生したことが検出されると、その旨の通知が割り込み信号等によりＣＰＵ１０ａ（ＣＰＵＡ），１０ｂ（ＣＰＵＢ）に対してそれぞれ行なわれる。
ＣＰＵ１０ａは、図２（ａ）に示すように、メモリ１６ａに格納されているエラーハンドラ２０ａ（エラーハンドラＡ）を実行することにより、本情報処理装置１００にそなえられた各デバイス１４の情報採取を行なう（ステップＡ１０）。
【００３３】
そして、ＣＰＵ１０ａは、採取した情報に基づいてエラー解析を行ない（ステップＡ２０）、被疑箇所の特定を行なう（ステップＡ３０）。
被疑箇所の特定を行なったＣＰＵ１０ａは、例えば、ＣＰＵ１０ａと同じマザーボード（図示省略）にそなえられたＮＶＲＡＭ（Non Volatile RAM：不揮発性メモリ；図示省略）における所定の領域にフラグ（状態フラグ）を設定して（ステップＡ４０）、処理を終了する。
【００３４】
なお、この状態フラグは、メモリ１６ａやメモリ１６ｂ，図示しない記憶装置等の所定の領域に設定してもよいが、システムハング等が生じた場合にも状態フラグが残ることや状態フラグへのアクセス速度等を考慮すると、マザーボード上のＮＶＲＡＭに設定することが望ましい。
また、ＣＰＵ１０ａにおいて、メモリアンコレクタブルエラーの影響等により、エラーハンドラＡの実行中に何らかの異常が生じた場合には、エラーハンドラＡの処理を最後まで実施できず、上述したステップＡ１０〜Ａ４０にかかる処理は行なわれない。従って、この場合には、その状態フラグ（ステップＡ４０参照）が設定されることはない。
【００３５】
一方、ＣＰＵ１０ｂにおいては、図２（ｂ）に示すように、メモリ１６ｂに格納されているエラーハンドラ２０ｂ（エラーハンドラＢ）を実行することにより、先ず、待ち合わせ用カウンタ値（ｔ）の初期化（ｔ＝０）を行なう（ステップＢ１０）。
そして、ＣＰＵ１０ｂは、待ち合わせカウンタ値（ｔ）が予め設定された所定値（一定値）以上であるか否かを確認し（ステップＢ２０）、待ち合わせカウンタ値（ｔ）が予め設定された一定値以上ではない場合には（ステップＢ２０のＮＯルート参照）、この待ち合わせカウンタ値（ｔ）をインクリメント（ｔ＝ｔ＋１）する（ステップＢ３０）。
【００３６】
ＣＰＵ１０ｂは、ＣＰＵ１０ａによりエラーハンドラ２０ａの処理完了を示す状態フラグが設定されているか否かを確認し（ステップＢ４０）、この状態フラグが設定されていない場合には（ステップＢ４０のＮＯルート参照）、ステップＢ２０に戻る。又、ＣＰＵ１０ｂは、この状態フラグが設定されている場合には（ステップＢ４０のＹＥＳルート参照）、処理を終了する。
【００３７】
一方、ＣＰＵ１０ｂは、待ち合わせカウンタ値（ｔ）が予め設定された一定値以上の場合には（ステップＢ２０のＹＥＳルート参照）、本情報処理装置１００にそなえられた各デバイスの情報採取を行なう（ステップＢ５０）。
そして、ＣＰＵ１０ｂは、採取した情報に基づいてエラー解析を行ない（ステップＢ６０）、被疑箇所の特定を行ない（ステップＢ７０）、処理を終了する。
【００３８】
すなわち、本情報処理装置１００においては、ＣＰＵ１０ａがメモリ１６ａに格納されたエラーハンドラ２０ａを正常に動作させることができない場合に、ＣＰＵ１０ｂが、メモリ１６ｂに格納されたエラーハンドラ２０ｂを実行して被疑箇所の特定を行なうのである。
このように、本情報処理装置１００においては、メモリ１６ａでアンコレクタブルエラーが発生して、このメモリ１６ａ上で動作するエラーハンドラ２０ａの実行においてＣＰＵ１０ａがハングした場合においても、ＣＰＵ１０ｂが、メモリ１６ｂに格納されたエラーハンドラ２０ｂを実行することにより、エラーが発生しているメモリ１６ａの使用を回避することにより、このエラーの影響を回避している。
【００３９】
これにより、ＣＰＵ１０ｂが、エラーが発生した箇所や原因の特定等、エラーへの対処を行なうことができる。従って、エラー（アンコレクタブルエラー）を確実に解消することができ、本情報処理装置１００の信頼性を向上することができるのである。
すなわち、本情報処理装置１００においては、エラーハンドラ２０を二重化することにより、システムがハングして異常個所を特定できなくなることを防止している。
【００４０】
（Ｂ）変形例の説明
次に、本情報処理装置１００の変形例として、エラーハンドラ実行中におけるデバイス１４の情報採取手法について説明する。
本情報処理装置１００の変形例においては、ＣＰＵ１０ａがメモリ１６ａに格納されたエラーハンドラ２０ａを実行してデバイス１４の情報採取を行ない、これと並行して、ＣＰＵ１０ｂがメモリ１６ｂに格納されたエラーハンドラ２０ｂを実行してデバイス１４の情報採取を行なう。
【００４１】
具体的には、本情報処理装置１００にそなえられた各デバイス１４の情報採取を行なう際に、ＣＰＵ１０ａがメモリ１６ａに格納されたエラーハンドラ２０ａを実行することにより、これらのデバイス１４に対して予め設定された走査順序でアクセスして情報採取を行なう。そして、これと並行して、ＣＰＵ１０ｂがメモリ１６ｂに格納されたエラーハンドラ２０ｂを実行することにより、これらのデバイス１４に対して、上述した走査順序とは逆の順序でアクセスして情報採取を行なうようになっている。
【００４２】
図３は本発明の一実施形態としての情報処理装置１００の変形例におけるデバイス情報の採取手法を説明するための図である。
この図３に示す例においては、本情報処理装置１００にそなえられた複数（図３に示す例においてはデバイスＡ〜Ｄの４つ）のデバイス１４に対して、デバイスＡ，デバイスＢ，デバイスＣおよびデバイスＤの順番で走査順序が設定されている。
【００４３】
そして、ＣＰＵ１０ａ（一のプロセッサ，第１のプロセッサ）がメモリ１６ａに格納されたエラーハンドラ２０ａを実行することにより、この走査順序に従い、これらのデバイス１４に対して、デバイスＡ，デバイスＢ，デバイスＣ，デバイスＤの順番でアクセスして情報採取をそれぞれ行なうようになっている。
なお、この際、エラーハンドラ２０ａは、アクセスしたデバイス１４の情報採取を開始する際に、例えば、ＮＶＲＡＭにフラグ（採取フラグ，情報採取フラグ）を設定するようにＣＰＵ１０ａを実行させるようになっている。
【００４４】
具体的には、エラーハンドラ２０ａは、ＣＰＵ１０ａと同じマザーボードにそなえられたＮＶＲＡＭにおける所定の領域に、各デバイス１４に対応付けて採取フラグをそれぞれ設定する。
なお、この採取フラグは、メモリ１６ａやメモリ１６ｂ，図示しない記憶装置等の所定の領域に設定してもよいが、システムハング等が生じた場合にも採取フラグが残ることや採取フラグへのアクセス速度等を考慮すると、マザーボード上のＮＶＲＡＭに設定することが望ましい。
【００４５】
すなわち、本変形例においては、情報採取中もしくは情報採取が完了したデバイス１４に対して、ＣＰＵ１０ａにより採取フラグが設定され、ＣＰＵ１０ａやＣＰＵ１０ｂがこの採取フラグを確認することにより、そのデバイス１４に関する情報採取の進捗状況を容易に把握することができるのである。
また、ＣＰＵ１０ａがエラーハンドラ２０ａを実行することにより、各デバイス１４にアクセスして情報採取を行なう際には、そのデバイス１４に対して採取フラグが設定されているか否かの確認を行ない、採取フラグが設定されていないデバイス（情報未採取デバイス）１４に対してのみアクセスして、情報採取にかかる処理を実行するようになっている。
【００４６】
そして、本変形例においては、ＣＰＵ１０ａによるデバイス１４の情報採取と並行して、ＣＰＵ１０ｂ（他のプロセッサ，第２のプロセッサ）がメモリ１６ｂに格納されたエラーハンドラ２０ｂを実行することにより、これらのデバイス１４に対して、走査順序とは逆の順番で、すなわち、デバイスＤ，デバイスＣ，デバイスＢ，デバイスＡの順番でアクセスして情報採取を行なうようになっている。
【００４７】
なお、この際、エラーハンドラ２０ｂも、アクセスしたデバイス１４からの情報採取を開始する際に、例えば、ＣＰＵ１０ａと同じマザーボードにそなえられたＮＶＲＡＭにフラグ（採取フラグ，情報採取フラグ）を設定するようにＣＰＵ１０ｂを実行させるようになっている。
具体的には、エラーハンドラ２０ｂは、ＣＰＵ１０ｂと同じマザーボード（図示省略）にそなえられたＮＶＲＡＭにおける所定の領域に、各デバイス１４に対応付けて採取フラグをそれぞれ設定する。
【００４８】
なお、この採取フラグも、メモリ１６ａやメモリ１６ｂ，図示しない記憶装置等の所定の領域に設定してもよいが、システムハング等が生じた場合にも採取フラグが残ることや採取フラグへのアクセス速度等を考慮すると、マザーボード上のＮＶＲＡＭに設定することが望ましい。
また、ＣＰＵ１０ｂがエラーハンドラ２０ｂを実行することにより、各デバイス１４にアクセスして情報採取を行なう際においても、そのデバイス１４に対して採取フラグが設定されているか否かの確認を行ない、採取フラグが設定されていないデバイス（情報未採取デバイス）１４に対してのみアクセスして、情報採取を行なうようになっている。
【００４９】
これにより、ＣＰＵ１０ｂがエラーハンドラ２０ｂを実行することにより、各デバイス１４にアクセスして情報採取を行なう際には、既にＣＰＵ１０ａがエラーハンドラ２０ａを実行することによって情報採取が行なわれたデバイス１４については、情報採取を行なわないようになっている。
すなわち、本情報処理装置１００の変形例においては、デバイス１４について重複する情報採取を行なうことがなく、デバイス１４の情報採取を効率的に行なうようになっている。
【００５０】
そして、いずれかのＣＰＵ１０（例えば、ＣＰＵ１０ａ；第１のプロセッサ，一のプロセッサ）が、いずれかのデバイス１４の情報採取の処理中（図３に示す例においては、デバイスＢの情報収集中）に異常停止（ハング）した場合には、そのハングしたＣＰＵ１０ａ（異常停止プロセッサ）は、走査順序がそれ以降のデバイス（デバイスＣ，Ｄ）の情報採取を行なうことができない。
【００５１】
一方、ＣＰＵ１０ｂ（第２のプロセッサ，他のプロセッサ）は、ＣＰＵ１０ａの走査順序とは逆順で各情報未採取のデバイス１４にアクセスして情報採取を行なう。すなわち、ＣＰＵ１０ｂは、デバイスＤ，デバイスＣの順番で情報採取を行なった後、デバイスＢの採取フラグを確認する。そして、このデバイスＢについてはＣＰＵ１０ａにより既に採取フラグが設定されているので、ＣＰＵ１０ｂは、このデバイスＢと、これ以降のデバイス（デバイスＡ）の情報採取を行なわないのである。
【００５２】
上述の如く構成された、本発明の一実施形態としての情報処理装置１００の変形例におけるデバイス１４の情報採取手法を、図４（ａ），（ｂ）に示すフローチャート（ステップＣ１０〜Ｃ１２０，Ｄ１０〜Ｄ１２０）に従って説明する。
ＣＰＵ１０ａは、メモリ１６ａに格納されているエラーハンドラ２０ａ（エラーハンドラＡ）を実行することにより、本情報処理装置１００にそなえられた各デバイス１４の情報採取を開始する。
【００５３】
この情報採取に際して、ＣＰＵ１０ａは、図４（ａ）に示すように、先ず、デバイスＡの情報採取フラグ（採取フラグ）を確認して（ステップＣ１０）、このデバイスＡの情報採取フラグが立っている場合には（ステップＣ１０のＹＥＳルート参照）、ＣＰＵ１０ｂにより全てのデバイス１４について情報採取が完了していると判断して、処理を終了する。
【００５４】
また、デバイスＡの情報採取フラグが立っていない場合には（ステップＣ１０のＮＯルート参照）、デバイスＡについての情報採取フラグを設定した後に（ステップＣ２０）、デバイスＡにアクセスしてその情報採取を行なう（ステップＣ３０）。
次に、ＣＰＵ１０ａは、デバイスＢの情報採取フラグを確認して（ステップＣ４０）、このデバイスＢの情報採取フラグが立っている場合には（ステップＣ４０のＹＥＳルート参照）、全てのデバイスについて情報採取が完了していると判断して、処理を終了する。
【００５５】
また、デバイスＢの情報採取フラグが立っていない場合には（ステップＣ４０のＮＯルート参照）、デバイスＢについての情報採取フラグを設定した後に（ステップＣ５０）、デバイスＢにアクセスしてその情報採取を行なう（ステップＣ６０）
次に、ＣＰＵ１０ａは、デバイスＣの情報採取フラグを確認して（ステップＣ７０）、このデバイスＣの情報採取フラグが立っている場合には（ステップＣ７０のＹＥＳルート参照）、全てのデバイスについて情報採取が完了していると判断して、処理を終了する。
【００５６】
また、デバイスＣの情報採取フラグが立っていない場合には（ステップＣ７０のＮＯルート参照）、デバイスＣについての情報採取フラグを設定した後に（ステップＣ８０）、デバイスＣにアクセスしてその情報採取を行なう（ステップＣ９０）。
次に、ＣＰＵ１０ａは、デバイスＤの情報採取フラグを確認して（ステップＣ１００）、このデバイスＤの情報採取フラグが立っている場合には（ステップＣ１００のＹＥＳルート参照）、全てのデバイスについて情報採取が完了していると判断して、処理を終了する。
【００５７】
また、デバイスＤの情報採取フラグが立っていない場合には（ステップＣ１００のＮＯルート参照）、デバイスＤについての情報採取フラグを設定した後に（ステップＣ１１０）、デバイスＤにアクセスしてその情報採取を行ない（ステップＣ１２０）、処理を終了する。
なお、上記処理の途中において、いずれかのデバイス１４から情報採取を行なう際にハングが生じた場合には、それ以降の処理を行なわれない。例えば、図４（ａ）に示すフローチャートにおいて、例えば、デバイスＢの情報採取を行なう過程において（ステップＣ６０参照）ＣＰＵ１０ａがハングした場合には、ＣＰＵ１０ａは、それ以降の処理（ステップＣ７０〜Ｃ１２０）を実行することができないのである。
【００５８】
なお、図４（ａ）中においては、デバイスＢの情報採取過程においてシステムハングが生じたことにより、ＣＰＵ１０ａが処理することができない部分を一点鎖線で囲んで示している。
一方、ＣＰＵ１０ｂは、メモリ１６ｂに格納されているエラーハンドラ２０ｂ（エラーハンドラＢ）を実行することにより、図４（ｂ）に示すように、先ず、デバイスＤの情報採取フラグを確認して（ステップＤ１０）、このデバイスＤの情報採取フラグが立っている場合には（ステップＤ１０のＹＥＳルート参照）、ＣＰＵ１０ａにより全てのデバイス１４について情報採取が完了していると判断して、処理を終了する。
【００５９】
また、デバイスＤの情報採取フラグが立っていない場合には（ステップＤ１０のＮＯルート参照）、デバイスＤについての情報採取フラグを設定した後に（ステップＤ２０）、デバイスＤにアクセスしてその情報採取を行なう（ステップＤ３０）。
次に、ＣＰＵ１０ｂは、デバイスＣの情報採取フラグを確認して（ステップＤ４０）、このデバイスＣの情報採取フラグが立っている場合には（ステップＤ４０のＹＥＳルート参照）、全てのデバイス１４について情報採取が完了していると判断して、処理を終了する。
【００６０】
また、デバイスＣの情報採取フラグが立っていない場合には（ステップＤ４０のＮＯルート参照）、デバイスＣについての情報採取フラグを設定した後に（ステップＤ５０）、デバイスＣにアクセスしてその情報採取を行なう（ステップＤ６０）
次に、ＣＰＵ１０ｂは、デバイスＢの情報採取フラグを確認して（ステップＤ７０）、このデバイスＢの情報採取フラグが立っている場合には（ステップＤ７０のＹＥＳルート参照）、全てのデバイス１４について情報採取が完了していると判断して、処理を終了する。
【００６１】
また、デバイスＢの情報採取フラグが立っていない場合には（ステップＤ７０のＮＯルート参照）、デバイスＢについての情報採取フラグを設定した後に（ステップＤ８０）、デバイスＢにアクセスしてその情報採取を行なう（ステップＤ９０）。
次に、ＣＰＵ１０ｂは、デバイスＡの情報採取フラグを確認して（ステップＤ１００）、このデバイスＡの情報採取フラグが立っている場合には（ステップＤ１００のＹＥＳルート参照）、全てのデバイス１４について情報採取が完了していると判断して、処理を終了する。
【００６２】
また、デバイスＡの情報採取フラグが立っていない場合には（ステップＤ１００のＮＯルート参照）、デバイスＡについての情報採取フラグを設定した後に（ステップＤ１１０）、デバイスＡにアクセスしてその情報採取を行ない（ステップＤ１２０）、処理を終了する。
このように、例えば、図４（ａ）のフローチャートで示す処理において、ＣＰＵ１０ａによるデバイスＢの情報採取を行なう過程で（ステップＣ６０参照）システムハングが生じた場合には、ＣＰＵ１０ａによる、それ以降のデバイスＣ，Ｄの情報採取（ステップＣ７０〜Ｃ１２０）は行なわれないが、これらのデバイスＣ，Ｄの情報採取はＣＰＵ１０ｂがエラーハンドラ２０ｂを実行することよって行なわれる。
【００６３】
また、ＣＰＵ１０ａによって情報採取が行なわれたデバイス１４（図４（ａ），（ｂ）に示す例においてはデバイスＡ）については、ＣＰＵ１０ｂにより重複する情報採取は行なわれることがなく、効率良く処理が行なわれる。
なお、図４（ｂ）中においては、このＣＰＵ１０ｂが処理しない部分を一点鎖線で囲んで示している。
【００６４】
さらに、ＣＰＵ１０ａによる情報採取の過程でハングが生じたデバイス１４（異常停止となったデバイス；図４（ａ），（ｂ）に示す例においてはデバイスＢ）には、ＣＰＵ１０ａにより情報採取フラグが設定されているので、ＣＰＵ１０ｂによるアクセスが行なわれない。これにより、ＣＰＵ１０ｂが、ＣＰＵ１０ａと同様に、デバイスＢにアクセスすることによりハングすることを阻止することができ、本情報処理装置１００が応答停止状態となる（ハング，フリーズ）になることを阻止することができる。
【００６５】
このように、本発明の一実施形態としての情報処理装置１００の変形例においては、システムの動作中に何らかのエラーが発生した場合において、エラーハンドラ２０による各デバイス１４の情報採取を、本情報処理装置１００をフリーズさせることなく行なうことができ、エラーへの対処を迅速に行なうことができる他、信頼性を向上させることができる。
【００６６】
また、例えば、ＣＰＵ１０ａによって既に情報採取が行なわれたデバイス１４（図４（ａ），（ｂ）に示す例においてはデバイスＡ）については、ＣＰＵ１０ｂにより重複する情報採取は行なわれることがなく、デバイス１４の情報採取が効率良く処理が行なわれる。
さらに、ＣＰＵ１０ａ，１０ｂのいずれもハングすることなく、全てのデバイス１４の情報採取を実行することができた場合には、これらの全デバイス１４の情報採取を一のＣＰＵ１０で行なう場合に比べて短縮することができ、処理速度（性能）も向上する。
【００６７】
なお、ここで、ＣＰＵ１０ａによる情報採取の過程でハングが生じたデバイス１４（図４（ａ），（ｂ）に示す例においてはデバイスＢ）に対して、正常に動作しているＣＰＵ１０ｂ（エラーハンドラ２０ｂ）によってアクセスして情報採取を行なってもよく、これにより、ＣＰＵ１０ａ（エラーハンドラ２０ａ）におけるハングの原因がデバイス１４側にあるのかＣＰＵ１０ａ側にあるのかを特定することができる。
【００６８】
図５は本発明の一実施形態としての情報処理装置１００の変形例におけるデバイス１４の情報採取時に生じたハングの原因特定手法を説明するための図である。
この図５に示す例においては、エラーハンドラ２０ａの実行時に、情報採取のためにデバイス１４にアクセスしたＣＰＵ１０ａにおいてハングが生じた場合に、そのハングが生じたデバイス（被疑デバイス）１４に対して、ＣＰＵ１０ｂがメモリエラーハンドラ１０ｂを実行することにより情報採取を行なった（リトライした）結果に基づく判断手法を示している。
【００６９】
すなわち、ＣＰＵ１０ｂによる被疑デバイスの情報採取処理においてもハングが生じた場合、すなわち、情報採取が正常に完了しなかった場合には、その被疑デバイス１４に異常がある（デバイス異常）と判断することができる。
一方、ＣＰＵ１０ｂによる被疑デバイス１４の情報採取処理においてハングが生じなかった場合、すなわち、情報採取が正常に完了した場合には、ＣＰＵ１０ａ（異常停止プロセッサ）に何らかの問題がある（ＣＰＵ異常）であると判断することができる。これにより、ハングした原因を容易に特定（判断）することができるのである。
【００７０】
なお、エラーハンドラ２０ａの実行時に、情報採取のためにデバイス１４にアクセスしたＣＰＵ１０ａにおいてハングが生じた場合に、その被疑デバイス１４に対してＣＰＵ１０ｂによりリトライを行なう前に、これからリトライを行なう旨や、被疑デバイス１４を特定するための情報（どのデバイス１４に対するリトライであるか）等のエラーに関する情報を、コンパクトフラッシュ（登録商標）等の不揮発性メモリに記憶させておくことが望ましい。
【００７１】
これにより、リトライによりＣＰＵ１０ｂにおいてハングが生じ、ＣＰＵ１０ａ，１０ｂのいずれがハングした場合であっても、このエラーに関する情報を参照することにより、被疑デバイス１４を容易に特定することができ利便性が高い。
（Ｃ）その他
そして、本発明は上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
【００７２】
例えば、上述した本発明の一実施形態としての情報処理装置１００においては、メモリ１６ａにおいてエラー（アンコレクタブルエラー）が生じた場合について説明し、ＣＰＵ１０ａがエラーハンドラ２０ａを実行し、このＣＰＵ１０ａがエラーハンドラ２０ａを正常に動作させることができない場合に、ＣＰＵ１０ｂが、メモリ１６ｂに格納されたエラーハンドラ２０ｂを実行してデバイス１４の情報採取等を行なっているが、これに限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
【００７３】
例えば、メモリ１６ｂにおいてエラー（アンコレクタブルエラー）が生じた場合には、ＣＰＵ１０ｂがエラーハンドラ２０ｂを実行し、このＣＰＵ１０ｂがエラーハンドラ２０ｂを正常に動作させることができない場合に、ＣＰＵ１０ｂａ、メモリ１６ａに格納されたエラーハンドラ２０ａを実行して、各デバイス１４の情報採取等を行なってもよい。
また、本発明の各実施形態が開示されていれば、本発明を当業者によって実施・製造することが可能である。
【産業上の利用可能性】
【００７４】
複数のプロセッサと複数のメモリとをそなえた情報処理装置において生じる種々のエラー処理に適用することができる。
【図面の簡単な説明】
【００７５】
【図１】本発明の一実施形態としての情報処理装置のハードウェア構成を模式的に示す図である。
【図２】（ａ），（ｂ）は本発明の一実施形態としての情報処理装置のメモリにおけるエラー発生時の処理を説明するためのフローチャートである。
【図３】本発明の一実施形態としての情報処理装置の変形例におけるデバイス情報の採取手法を説明するための図である。
【図４】（ａ），（ｂ）は本発明の一実施形態としての情報処理装置の変形例における情報採取手法を説明するためのフローチャートである。
【図５】本発明の一実施形態としての情報処理装置の変形例におけるデバイスの情報採取時に生じたハングの原因特定手法を説明するための図である
【図６】従来の情報処理装置のハードウェア構成を模式的に示す図である。
【符号の説明】
【００７６】
１０ａ，１０ｂ，１０    ＣＰＵ
１１，１２    チップセット
１３    メモリコントローラ
１４，１４ａ，１４ｂ，１４ｃ，１４ｄ    デバイス
１６，１６ａ，１６ｂ    メモリ
２０，２０ａ，２０ｂ    エラーハンドラ（エラー対処プログラム）
１００    情報処理装置
【図１】
2010033355.tif 000003
【図２】
2010033355.tif 000004
【図３】
2010033355.tif 000005
【図４】
2010033355.tif 000006
【図５】
2010033355.tif 000007
【図６】
2010033355.tif 000008