説明

情報処理装置

【課題】情報処理装置においてエラーが生じた場合に、充分なエラー対応を行なうことができるようにする。
【解決手段】メモリ16においてエラーが生じた際に、複数のプロセッサ10のうちの一のプロセッサ10aが一のメモリ16aに格納されたエラー対処プログラム20aを実行し、一のプロセッサ10aがエラー対処プログラム20aを正常に動作させることができない場合に、他のプロセッサ10bが一のメモリ16aとは異なる他のメモリ16bに格納されたエラー対処プログラム20bを実行する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のプロセッサと複数のメモリとをそなえた情報処理装置においてエラーが生じた際の対処の技術に関する。
【背景技術】
【0002】
図6は従来の情報処理装置のハードウェア構成を模式的に示す図である。
この図6に示す従来の情報処理装置300は、1以上(図6に示す例では2つ)のCPU301a,301bと同じく1以上(図6に示す例では2つ)のメモリ302a,302bとをそなえるとともに、チップセット303,304,PCIデバイス305およびI/Oデバイス306をそなえて構成されている。
【0003】
CPU301a,301bは、プログラムを実行することにより種々の機能や制御を実現するものである。
メモリ302a,302bは、CPU301a,301bが上記プログラムを実行するに際して、種々のデータやプログラムを一時的に格納するものである。
チップセット303(North Bridge;ノースブリッジ)は、CPU301a,301bとメモリ302a,302bとの接続を制御するチップセットである。このチップセット303は、メモリコントローラ307をそなえており、このメモリコントローラ307を介してメモリ302a,302bの制御を行なうようになっている。
【0004】
また、図6に示す例においては、このチップセット303にPCIデバイス305が接続されており、このPCIデバイス305との接続の制御も行なうようになっている。
チップセット304(South Bridge;サウスブリッジ)は、各種のI/O(Input/Output)コントローラを統合したチップセットであって、チップセット303と通信可能に接続されている。なお、この図6に示す例においては、このチップセット304に、I/Oデバイス306が接続されている。
【0005】
I/Oデバイス306は、情報処理装置において用いられる種々の周辺機器であって、例えば、コンパクトフラッシュ(登録商標)やBIOSフラッシュである。
また、図6に示す例においては、メモリ302aにエラーハンドラ308が展開(格納)された状態を示している。このエラーハンドラ308は、情報処理装置300の動作中に、メモリ302a,302bのいずれかにおいて異常状態(エラー)が生じた場合に、このエラーを処理するためのプログラム(コード,ハンドラ)であり、CPU301aによって実行されるようになっている。
【0006】
このように構成された従来の情報処理装置300において、メモリ302aやメモリ302bにおいて何らかのエラー(メモリエラー)が生じる場合がある。
例えば、下記特許文献1には、アンコレクタブル(修復不可)なエラー(アンコレクタブルエラー)が生じた場合において、ECC(Error Correction Code)エラーハンドラが、新たなページを割り当てて、ECCエラーを発生させたページのデータをコピーするとともに、ECCエラーを発生させたページを利用不可能に設定する手法等が開示されている。これにより、アンコレクタブルエラーが発生しても、システムが停止することを抑止している。
【特許文献1】特開平5−204770号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
しかしながら、上述の如き従来の情報処理装置300においては、エラーが生じた場合に、エラーハンドラ308により充分なエラー対処を行なうことができない場合がある。
例えば、メモリ302aにおいてメモリアンコレクタブルエラーが発生した場合には、同一メモリ(メモリ302a)上の他の箇所でもエラーが生じている可能性が高い。
従って、メモリアンコレクタブルエラーに対処するためのエラーハンドラ308の実行中において、更に、メモリアンコレクタブルエラーが発生し、このメモリ302a上に展開されているエラーハンドラ308の実行コードが異常となり、異常動作となるおそれがある。このようにエラーハンドラ308が異常動作した場合には、エラーが発生した箇所を特定できないという課題がある。
【0008】
また、従来の情報処理装置300において、システム動作中にエラーが発生した場合には、エラー発生の原因となった個所(異常発生箇所)を特定するために、CPU301a(エラーハンドラ308)により、情報処理装置300にそなえられた各デバイスの情報を採取し、これらの採取した情報から異常個所を特定するようになっている。
しかしながら、CPU301aが、情報採取のためにデバイスに対してアクセスする場合に、そのアクセスしたデバイスに何らかの問題がある場合に、システムが応答停止状態となる(ハング,フリーズ)する場合がある。このように、CPU301aによるデバイスの情報採取中にシステムハングが生じると、残りのデバイスの情報を採取することができず、異常発生箇所を究明することができないという課題もある。
【0009】
さらに、このようにシステムがハングした場合には、ハングした原因が、アクセスしたデバイスにあったのかCPU301aに異常があったのかを判断することができず、これによっても異常発生箇所が特定できない。
本発明は、このような課題に鑑み創案されたもので、情報処理装置においてエラーが生じた場合に、充分なエラー対応を行なうことができるようにすることを目的とする。
【課題を解決するための手段】
【0010】
このため、この情報処理装置の要件は、複数のプロセッサと複数のメモリとをそなえた情報処理装置であって、前記複数のメモリのうち少なくとも2つの該メモリのそれぞれにエラー対処プログラムを格納するエラー対処プログラム格納処理部をそなえ、該メモリにおいてエラーが生じた際に、前記複数のプロセッサのうちの一のプロセッサが、該エラー対処プログラムを格納された2以上の該メモリのうち、一のメモリに格納された該エラー対処プログラムを実行し、前記一のプロセッサが該エラー対処プログラムを正常に動作させることができない場合に、前記複数のプロセッサのうちの前記一のプロセッサとは異なる他のプロセッサが、該エラー対処プログラムを格納された2以上の該メモリのうち、前記一のメモリとは異なる他のメモリに格納された該エラー対処プログラムを実行するものである。
【0011】
また、この情報処理装置の要件は、複数のプロセッサとメモリと複数のデバイスをそなえた情報処理装置であって、前記複数のデバイスのうちのいずれかにかかる処理においてエラーが生じた際に、前記複数のプロセッサのうちの第1のプロセッサが、前記複数のデバイスに対して予め設定された走査順序で、前記複数のデバイスのうち情報採取が行なわれていない情報未採取デバイスに順次アクセスして情報採取を行なうとともに、前記複数のプロセッサのうちの該第1のプロセッサとは異なる第2のプロセッサが、該情報未採取デバイスに、該走査順序とは逆の順序で順次アクセスして情報採取を行なうものである。
【発明の効果】
【0012】
開示の情報処理装置によれば、以下の少なくともいずれか1つの効果ないし利点が得られる。
(1)メモリにおいてエラーが生じた際に、エラーが発生しているメモリの使用を回避して、エラーが発生した箇所や原因の特定等、エラーへの対処を行なうことができ、信頼性を向上することができる。
【0013】
(2)エラーが発生した場合において、エラーハンドラによる各デバイスの情報採取を、情報処理装置を異常停止させることなく行なうことができ、エラーへの対処を迅速に行なうことができる他、信頼性を向上させることができる。
(3)デバイスの情報採取を短時間で行なうことができる。
【発明を実施するための最良の形態】
【0014】
以下、図面を参照して本発明の実施の形態を説明する。
(A)一実施形態の説明
図1は本発明の一実施形態としての情報処理装置のハードウェア構成を模式的に示す図である。
本情報処理装置100は、図1に示すように、1以上(図1に示す例では2つ)のCPU10a,10bと、同じく1以上(図1に示す例では2つ)のメモリ16a,16bとをそなえるとともに、チップセット11,12およびデバイス14a,14b,14c,14dをそなえて構成されている。
【0015】
チップセット11(North Bridge;ノースブリッジ)は、CPU10a,10bとメモリ16a,16b等との接続を制御するものである。このチップセット11は、メモリコントローラ13をそなえており、このメモリコントローラ13を介して、CPU10a,10bとメモリ16a,16bとの間において、データやプログラムの書き込みや読み出しの制御等を行なうようになっている。
【0016】
また、図1に示す例においては、このチップセット11にデバイス14dが接続されており、CPU10a,10bやメモリ16a,16bとデバイス14dとのデータの送受信の制御等を行なうようになっている。
チップセット12(South Bridge;サウスブリッジ)は、各種のI/O(Input/Output)コントローラを統合したチップセットであって、チップセット11と通信可能に接続されている。なお、この図1に示す例においては、このチップセット12に、デバイス14a,14b,14cが接続されている。
【0017】
デバイス14a,14b,14c,14dは、本情報処理装置100において用いられる種々の周辺機器であり、例えば、デバイス14a,14b,14cとしては、例えば、コンパクトフラッシュ(登録商標)やBIOSフラッシュが用いられ、又、デバイス14dとしては、例えば、PCI(Peripheral Component Interconnect)デバイスが用いられる。
【0018】
なお、以下、デバイスを示す符号としては、複数のデバイスのうち1つを特定する必要があるときには符号14a,14b,14c,14dを用いるが、任意のデバイスを指すときには符号14を用いる。
また、以下、デバイス14aのことをデバイスA、デバイス14bのことをデバイスB、デバイス14cのことをデバイスC、デバイス14dのことをデバイスD表現する場合がある。
【0019】
CPU(Central Processing Unit)10a,10bは、プログラムを実行することにより種々の機能や制御を実現するプロセッサであり、メモリ16a,16bは、CPU10a,10bがプログラムを実行するに際して、種々のデータやプログラム(コード)を一時的に格納するメモリ(RAM;Random Access Memory)である。
そして、本情報処理装置100においては、CPU10aがメモリ16aに展開(格納)されたプログラムを、又、CPU10bがメモリ16bに展開されたプログラムを、それぞれ実行するようになっている。
【0020】
なお、以下、CPUを示す符号としては、複数のCPUのうち1つを特定する必要があるときには符号10a,10bを用いるが、任意のCPUを指すときには符号10を用いる。同様に、以下、メモリを示す符号としては、複数のメモリのうち1つを特定する必要があるときには符号16a,16bを用いるが、任意のメモリを指すときには符号16を用いる。
【0021】
また、以下、CPU10aのことをCPUA、CPU10bのことをCPUBと表現する場合があり、同様に、メモリ16aのことをメモリA、メモリ16bのことをメモリBと表現する場合がある。
本情報処理装置100においては、CPU10aとCPU10bとは物理的に別体として構成されたものであり、同様に、メモリ16aとメモリ16bとも物理的に別体として構成されたものである。
【0022】
また、本情報処理装置100においては、その起動時にBIOS(Basic Input Output System)により、ROM(Read Only Memory;図示省略)やHDD(Hard disk drive)等の記憶装置から読み出された種々のプログラムやデータが、これらのメモリ16a,16bに格納(ロード)されるようになっている。
そして、本情報処理装置100においては、図1に示すように、メモリ16aにエラーハンドラ20aが、メモリ16bにエラーハンドラ20bがそれぞれ格納されるようになっている。
【0023】
エラーハンドラ20a,20bは、情報処理装置100の動作中に、メモリ16aやメモリ16bにおいて異常状態(エラー)が生じた場合に、このエラーを処理するためのプログラム(コード,ハンドラ;エラー対処プログラム)である。これらのエラーハンドラ20a,20bは、本情報処理装置100のシステム動作中にメモリ16aもしくはメモリ16bにエラー(異常状態)が発生した場合に実行され、例えば、メモリ16aもしくはメモリ16bにアンコレクタブル(修復不可)なエラー(アンコレクタブルエラー)が検出された場合に、実行されるようになっている。
【0024】
なお、メモリ16aもしくはメモリ16bにおけるエラー(アンコレクタブルエラー)の検出は、既知の種々の手法を用いて実現することができるものであり、その説明は省略する。
また、メモリ16aもしくはメモリ16bにおいてアンコレクタブルエラーが検出されると、例えば、メモリコントローラ13が、CPU10a,10bに対して、割り込み信号等により通知するようになっている。
【0025】
そして、CPU10a,10bは、メモリ16aもしくはメモリ16bにおいてアンコレクタブルエラーが検出されたことが通知されると、エラーハンドラ20a,20bを実行することにより、例えば、本情報処理装置100にそなえられた各デバイス14にアクセスして所定の情報を取得して、エラーの原因となったデバイス(被疑箇所)の特定を行なうのである。
【0026】
具体的には、エラーハンドラ20a,20bは、CPU10a,10bに対して、本情報処理装置100にそなえられた各デバイス14の情報採取を行なわせ、この採取した情報に基づいてエラー解析を行なわせて、被疑箇所の特定を行なわせるようになっている。
なお、これらのデバイス14からの情報採取手法やエラー解析手法、被疑箇所の特定手法等は、既知の種々の手法を用いて実現することができるものであり、これらの説明はそれぞれ省略する。
【0027】
また、エラーハンドラ20b(20a)においては、それぞれ上述したデバイス14の情報採取やエラー解析、被疑箇所の特定に加えて、CPU10a(10b)によるエラーハンドラ20a(20b)の実行処理について、CPU10a(10b)がエラーハンドラ20a(20b)を正常に動作させることができたか否かを確認する確認機能を実現するようになっている。
【0028】
この確認機能は、例えば、CPU10a(10b)がエラーハンドラ20a(20b)の実行を開始してからの所定時間内に、CPU10a(10b)によりエラーハンドラ20a(20b)を正常に動作させることができた旨を表わす所定のフラグ(状態フラグ)が設定されたか否かを確認することにより行なわれるようになっている。
また、これらのエラーハンドラ20a,20bは、例えば、本情報処理装置100の起動時において、CPU10aもしくはCPU10bがBIOSを実行することにより、ROMやHDD等(いずれも図示省略)から読み出され、メモリ16a,16bに格納されるようになっている。
【0029】
すなわち、本情報処理装置100においては、これらのCPU10aもしくはCPU10bがBIOSを実行することにより、2つのメモリ16a,16bのそれぞれにエラーハンドラ20a,20bを格納するエラー対処プログラム格納処理部として機能するようになっている。
なお、以下、メモリハンドラ20aのことをメモリハンドラA、メモリハンドラ20bのことをメモリハンドラBと表現する場合がある。
【0030】
そして、本情報処理装置100においては、CPU10aがメモリ16aに格納されているエラーハンドラ20aを、CPU10bがメモリ16bに格納されているエラーハンドラ20bを、それぞれ実行するようになっている。
また、メモリ16aとメモリ16bとは物理的に異なる(別体として構成された)ものであるので、メモリ16a,16bのうちいずれかにおいてエラー(アンコレクタブルエラー)が生じた場合であっても、他方にその影響がないようになっている。
【0031】
上述の如く構成された本発明の一実施形態としての情報処理装置100において、メモリ16aもしくはメモリ16bにアンコレクタブルエラーが発生した場合には、例えば、割り込み処理等によりCPU10a,10bにその旨が通知され、CPU10a,10bによるエラーハンドラ20a,20bの実行処理が行なわれる。
本発明の一実施形態としての情報処理装置100のメモリ16aにおけるエラー発生時の処理を、図2(a),図2(b)に示すフローチャート(ステップA10〜A40,B10〜B70)に従って説明する。なお、図2(a)はエラーハンドラA(CPUA)による処理を、又、図2(b)はエラーハンドラB(CPUB)による処理をそれぞれ示している。
【0032】
例えば、メモリ16aにおいてアンコレクタブルエラーが発生したことが検出されると、その旨の通知が割り込み信号等によりCPU10a(CPUA),10b(CPUB)に対してそれぞれ行なわれる。
CPU10aは、図2(a)に示すように、メモリ16aに格納されているエラーハンドラ20a(エラーハンドラA)を実行することにより、本情報処理装置100にそなえられた各デバイス14の情報採取を行なう(ステップA10)。
【0033】
そして、CPU10aは、採取した情報に基づいてエラー解析を行ない(ステップA20)、被疑箇所の特定を行なう(ステップA30)。
被疑箇所の特定を行なったCPU10aは、例えば、CPU10aと同じマザーボード(図示省略)にそなえられたNVRAM(Non Volatile RAM:不揮発性メモリ;図示省略)における所定の領域にフラグ(状態フラグ)を設定して(ステップA40)、処理を終了する。
【0034】
なお、この状態フラグは、メモリ16aやメモリ16b,図示しない記憶装置等の所定の領域に設定してもよいが、システムハング等が生じた場合にも状態フラグが残ることや状態フラグへのアクセス速度等を考慮すると、マザーボード上のNVRAMに設定することが望ましい。
また、CPU10aにおいて、メモリアンコレクタブルエラーの影響等により、エラーハンドラAの実行中に何らかの異常が生じた場合には、エラーハンドラAの処理を最後まで実施できず、上述したステップA10〜A40にかかる処理は行なわれない。従って、この場合には、その状態フラグ(ステップA40参照)が設定されることはない。
【0035】
一方、CPU10bにおいては、図2(b)に示すように、メモリ16bに格納されているエラーハンドラ20b(エラーハンドラB)を実行することにより、先ず、待ち合わせ用カウンタ値(t)の初期化(t=0)を行なう(ステップB10)。
そして、CPU10bは、待ち合わせカウンタ値(t)が予め設定された所定値(一定値)以上であるか否かを確認し(ステップB20)、待ち合わせカウンタ値(t)が予め設定された一定値以上ではない場合には(ステップB20のNOルート参照)、この待ち合わせカウンタ値(t)をインクリメント(t=t+1)する(ステップB30)。
【0036】
CPU10bは、CPU10aによりエラーハンドラ20aの処理完了を示す状態フラグが設定されているか否かを確認し(ステップB40)、この状態フラグが設定されていない場合には(ステップB40のNOルート参照)、ステップB20に戻る。又、CPU10bは、この状態フラグが設定されている場合には(ステップB40のYESルート参照)、処理を終了する。
【0037】
一方、CPU10bは、待ち合わせカウンタ値(t)が予め設定された一定値以上の場合には(ステップB20のYESルート参照)、本情報処理装置100にそなえられた各デバイスの情報採取を行なう(ステップB50)。
そして、CPU10bは、採取した情報に基づいてエラー解析を行ない(ステップB60)、被疑箇所の特定を行ない(ステップB70)、処理を終了する。
【0038】
すなわち、本情報処理装置100においては、CPU10aがメモリ16aに格納されたエラーハンドラ20aを正常に動作させることができない場合に、CPU10bが、メモリ16bに格納されたエラーハンドラ20bを実行して被疑箇所の特定を行なうのである。
このように、本情報処理装置100においては、メモリ16aでアンコレクタブルエラーが発生して、このメモリ16a上で動作するエラーハンドラ20aの実行においてCPU10aがハングした場合においても、CPU10bが、メモリ16bに格納されたエラーハンドラ20bを実行することにより、エラーが発生しているメモリ16aの使用を回避することにより、このエラーの影響を回避している。
【0039】
これにより、CPU10bが、エラーが発生した箇所や原因の特定等、エラーへの対処を行なうことができる。従って、エラー(アンコレクタブルエラー)を確実に解消することができ、本情報処理装置100の信頼性を向上することができるのである。
すなわち、本情報処理装置100においては、エラーハンドラ20を二重化することにより、システムがハングして異常個所を特定できなくなることを防止している。
【0040】
(B)変形例の説明
次に、本情報処理装置100の変形例として、エラーハンドラ実行中におけるデバイス14の情報採取手法について説明する。
本情報処理装置100の変形例においては、CPU10aがメモリ16aに格納されたエラーハンドラ20aを実行してデバイス14の情報採取を行ない、これと並行して、CPU10bがメモリ16bに格納されたエラーハンドラ20bを実行してデバイス14の情報採取を行なう。
【0041】
具体的には、本情報処理装置100にそなえられた各デバイス14の情報採取を行なう際に、CPU10aがメモリ16aに格納されたエラーハンドラ20aを実行することにより、これらのデバイス14に対して予め設定された走査順序でアクセスして情報採取を行なう。そして、これと並行して、CPU10bがメモリ16bに格納されたエラーハンドラ20bを実行することにより、これらのデバイス14に対して、上述した走査順序とは逆の順序でアクセスして情報採取を行なうようになっている。
【0042】
図3は本発明の一実施形態としての情報処理装置100の変形例におけるデバイス情報の採取手法を説明するための図である。
この図3に示す例においては、本情報処理装置100にそなえられた複数(図3に示す例においてはデバイスA〜Dの4つ)のデバイス14に対して、デバイスA,デバイスB,デバイスCおよびデバイスDの順番で走査順序が設定されている。
【0043】
そして、CPU10a(一のプロセッサ,第1のプロセッサ)がメモリ16aに格納されたエラーハンドラ20aを実行することにより、この走査順序に従い、これらのデバイス14に対して、デバイスA,デバイスB,デバイスC,デバイスDの順番でアクセスして情報採取をそれぞれ行なうようになっている。
なお、この際、エラーハンドラ20aは、アクセスしたデバイス14の情報採取を開始する際に、例えば、NVRAMにフラグ(採取フラグ,情報採取フラグ)を設定するようにCPU10aを実行させるようになっている。
【0044】
具体的には、エラーハンドラ20aは、CPU10aと同じマザーボードにそなえられたNVRAMにおける所定の領域に、各デバイス14に対応付けて採取フラグをそれぞれ設定する。
なお、この採取フラグは、メモリ16aやメモリ16b,図示しない記憶装置等の所定の領域に設定してもよいが、システムハング等が生じた場合にも採取フラグが残ることや採取フラグへのアクセス速度等を考慮すると、マザーボード上のNVRAMに設定することが望ましい。
【0045】
すなわち、本変形例においては、情報採取中もしくは情報採取が完了したデバイス14に対して、CPU10aにより採取フラグが設定され、CPU10aやCPU10bがこの採取フラグを確認することにより、そのデバイス14に関する情報採取の進捗状況を容易に把握することができるのである。
また、CPU10aがエラーハンドラ20aを実行することにより、各デバイス14にアクセスして情報採取を行なう際には、そのデバイス14に対して採取フラグが設定されているか否かの確認を行ない、採取フラグが設定されていないデバイス(情報未採取デバイス)14に対してのみアクセスして、情報採取にかかる処理を実行するようになっている。
【0046】
そして、本変形例においては、CPU10aによるデバイス14の情報採取と並行して、CPU10b(他のプロセッサ,第2のプロセッサ)がメモリ16bに格納されたエラーハンドラ20bを実行することにより、これらのデバイス14に対して、走査順序とは逆の順番で、すなわち、デバイスD,デバイスC,デバイスB,デバイスAの順番でアクセスして情報採取を行なうようになっている。
【0047】
なお、この際、エラーハンドラ20bも、アクセスしたデバイス14からの情報採取を開始する際に、例えば、CPU10aと同じマザーボードにそなえられたNVRAMにフラグ(採取フラグ,情報採取フラグ)を設定するようにCPU10bを実行させるようになっている。
具体的には、エラーハンドラ20bは、CPU10bと同じマザーボード(図示省略)にそなえられたNVRAMにおける所定の領域に、各デバイス14に対応付けて採取フラグをそれぞれ設定する。
【0048】
なお、この採取フラグも、メモリ16aやメモリ16b,図示しない記憶装置等の所定の領域に設定してもよいが、システムハング等が生じた場合にも採取フラグが残ることや採取フラグへのアクセス速度等を考慮すると、マザーボード上のNVRAMに設定することが望ましい。
また、CPU10bがエラーハンドラ20bを実行することにより、各デバイス14にアクセスして情報採取を行なう際においても、そのデバイス14に対して採取フラグが設定されているか否かの確認を行ない、採取フラグが設定されていないデバイス(情報未採取デバイス)14に対してのみアクセスして、情報採取を行なうようになっている。
【0049】
これにより、CPU10bがエラーハンドラ20bを実行することにより、各デバイス14にアクセスして情報採取を行なう際には、既にCPU10aがエラーハンドラ20aを実行することによって情報採取が行なわれたデバイス14については、情報採取を行なわないようになっている。
すなわち、本情報処理装置100の変形例においては、デバイス14について重複する情報採取を行なうことがなく、デバイス14の情報採取を効率的に行なうようになっている。
【0050】
そして、いずれかのCPU10(例えば、CPU10a;第1のプロセッサ,一のプロセッサ)が、いずれかのデバイス14の情報採取の処理中(図3に示す例においては、デバイスBの情報収集中)に異常停止(ハング)した場合には、そのハングしたCPU10a(異常停止プロセッサ)は、走査順序がそれ以降のデバイス(デバイスC,D)の情報採取を行なうことができない。
【0051】
一方、CPU10b(第2のプロセッサ,他のプロセッサ)は、CPU10aの走査順序とは逆順で各情報未採取のデバイス14にアクセスして情報採取を行なう。すなわち、CPU10bは、デバイスD,デバイスCの順番で情報採取を行なった後、デバイスBの採取フラグを確認する。そして、このデバイスBについてはCPU10aにより既に採取フラグが設定されているので、CPU10bは、このデバイスBと、これ以降のデバイス(デバイスA)の情報採取を行なわないのである。
【0052】
上述の如く構成された、本発明の一実施形態としての情報処理装置100の変形例におけるデバイス14の情報採取手法を、図4(a),(b)に示すフローチャート(ステップC10〜C120,D10〜D120)に従って説明する。
CPU10aは、メモリ16aに格納されているエラーハンドラ20a(エラーハンドラA)を実行することにより、本情報処理装置100にそなえられた各デバイス14の情報採取を開始する。
【0053】
この情報採取に際して、CPU10aは、図4(a)に示すように、先ず、デバイスAの情報採取フラグ(採取フラグ)を確認して(ステップC10)、このデバイスAの情報採取フラグが立っている場合には(ステップC10のYESルート参照)、CPU10bにより全てのデバイス14について情報採取が完了していると判断して、処理を終了する。
【0054】
また、デバイスAの情報採取フラグが立っていない場合には(ステップC10のNOルート参照)、デバイスAについての情報採取フラグを設定した後に(ステップC20)、デバイスAにアクセスしてその情報採取を行なう(ステップC30)。
次に、CPU10aは、デバイスBの情報採取フラグを確認して(ステップC40)、このデバイスBの情報採取フラグが立っている場合には(ステップC40のYESルート参照)、全てのデバイスについて情報採取が完了していると判断して、処理を終了する。
【0055】
また、デバイスBの情報採取フラグが立っていない場合には(ステップC40のNOルート参照)、デバイスBについての情報採取フラグを設定した後に(ステップC50)、デバイスBにアクセスしてその情報採取を行なう(ステップC60)
次に、CPU10aは、デバイスCの情報採取フラグを確認して(ステップC70)、このデバイスCの情報採取フラグが立っている場合には(ステップC70のYESルート参照)、全てのデバイスについて情報採取が完了していると判断して、処理を終了する。
【0056】
また、デバイスCの情報採取フラグが立っていない場合には(ステップC70のNOルート参照)、デバイスCについての情報採取フラグを設定した後に(ステップC80)、デバイスCにアクセスしてその情報採取を行なう(ステップC90)。
次に、CPU10aは、デバイスDの情報採取フラグを確認して(ステップC100)、このデバイスDの情報採取フラグが立っている場合には(ステップC100のYESルート参照)、全てのデバイスについて情報採取が完了していると判断して、処理を終了する。
【0057】
また、デバイスDの情報採取フラグが立っていない場合には(ステップC100のNOルート参照)、デバイスDについての情報採取フラグを設定した後に(ステップC110)、デバイスDにアクセスしてその情報採取を行ない(ステップC120)、処理を終了する。
なお、上記処理の途中において、いずれかのデバイス14から情報採取を行なう際にハングが生じた場合には、それ以降の処理を行なわれない。例えば、図4(a)に示すフローチャートにおいて、例えば、デバイスBの情報採取を行なう過程において(ステップC60参照)CPU10aがハングした場合には、CPU10aは、それ以降の処理(ステップC70〜C120)を実行することができないのである。
【0058】
なお、図4(a)中においては、デバイスBの情報採取過程においてシステムハングが生じたことにより、CPU10aが処理することができない部分を一点鎖線で囲んで示している。
一方、CPU10bは、メモリ16bに格納されているエラーハンドラ20b(エラーハンドラB)を実行することにより、図4(b)に示すように、先ず、デバイスDの情報採取フラグを確認して(ステップD10)、このデバイスDの情報採取フラグが立っている場合には(ステップD10のYESルート参照)、CPU10aにより全てのデバイス14について情報採取が完了していると判断して、処理を終了する。
【0059】
また、デバイスDの情報採取フラグが立っていない場合には(ステップD10のNOルート参照)、デバイスDについての情報採取フラグを設定した後に(ステップD20)、デバイスDにアクセスしてその情報採取を行なう(ステップD30)。
次に、CPU10bは、デバイスCの情報採取フラグを確認して(ステップD40)、このデバイスCの情報採取フラグが立っている場合には(ステップD40のYESルート参照)、全てのデバイス14について情報採取が完了していると判断して、処理を終了する。
【0060】
また、デバイスCの情報採取フラグが立っていない場合には(ステップD40のNOルート参照)、デバイスCについての情報採取フラグを設定した後に(ステップD50)、デバイスCにアクセスしてその情報採取を行なう(ステップD60)
次に、CPU10bは、デバイスBの情報採取フラグを確認して(ステップD70)、このデバイスBの情報採取フラグが立っている場合には(ステップD70のYESルート参照)、全てのデバイス14について情報採取が完了していると判断して、処理を終了する。
【0061】
また、デバイスBの情報採取フラグが立っていない場合には(ステップD70のNOルート参照)、デバイスBについての情報採取フラグを設定した後に(ステップD80)、デバイスBにアクセスしてその情報採取を行なう(ステップD90)。
次に、CPU10bは、デバイスAの情報採取フラグを確認して(ステップD100)、このデバイスAの情報採取フラグが立っている場合には(ステップD100のYESルート参照)、全てのデバイス14について情報採取が完了していると判断して、処理を終了する。
【0062】
また、デバイスAの情報採取フラグが立っていない場合には(ステップD100のNOルート参照)、デバイスAについての情報採取フラグを設定した後に(ステップD110)、デバイスAにアクセスしてその情報採取を行ない(ステップD120)、処理を終了する。
このように、例えば、図4(a)のフローチャートで示す処理において、CPU10aによるデバイスBの情報採取を行なう過程で(ステップC60参照)システムハングが生じた場合には、CPU10aによる、それ以降のデバイスC,Dの情報採取(ステップC70〜C120)は行なわれないが、これらのデバイスC,Dの情報採取はCPU10bがエラーハンドラ20bを実行することよって行なわれる。
【0063】
また、CPU10aによって情報採取が行なわれたデバイス14(図4(a),(b)に示す例においてはデバイスA)については、CPU10bにより重複する情報採取は行なわれることがなく、効率良く処理が行なわれる。
なお、図4(b)中においては、このCPU10bが処理しない部分を一点鎖線で囲んで示している。
【0064】
さらに、CPU10aによる情報採取の過程でハングが生じたデバイス14(異常停止となったデバイス;図4(a),(b)に示す例においてはデバイスB)には、CPU10aにより情報採取フラグが設定されているので、CPU10bによるアクセスが行なわれない。これにより、CPU10bが、CPU10aと同様に、デバイスBにアクセスすることによりハングすることを阻止することができ、本情報処理装置100が応答停止状態となる(ハング,フリーズ)になることを阻止することができる。
【0065】
このように、本発明の一実施形態としての情報処理装置100の変形例においては、システムの動作中に何らかのエラーが発生した場合において、エラーハンドラ20による各デバイス14の情報採取を、本情報処理装置100をフリーズさせることなく行なうことができ、エラーへの対処を迅速に行なうことができる他、信頼性を向上させることができる。
【0066】
また、例えば、CPU10aによって既に情報採取が行なわれたデバイス14(図4(a),(b)に示す例においてはデバイスA)については、CPU10bにより重複する情報採取は行なわれることがなく、デバイス14の情報採取が効率良く処理が行なわれる。
さらに、CPU10a,10bのいずれもハングすることなく、全てのデバイス14の情報採取を実行することができた場合には、これらの全デバイス14の情報採取を一のCPU10で行なう場合に比べて短縮することができ、処理速度(性能)も向上する。
【0067】
なお、ここで、CPU10aによる情報採取の過程でハングが生じたデバイス14(図4(a),(b)に示す例においてはデバイスB)に対して、正常に動作しているCPU10b(エラーハンドラ20b)によってアクセスして情報採取を行なってもよく、これにより、CPU10a(エラーハンドラ20a)におけるハングの原因がデバイス14側にあるのかCPU10a側にあるのかを特定することができる。
【0068】
図5は本発明の一実施形態としての情報処理装置100の変形例におけるデバイス14の情報採取時に生じたハングの原因特定手法を説明するための図である。
この図5に示す例においては、エラーハンドラ20aの実行時に、情報採取のためにデバイス14にアクセスしたCPU10aにおいてハングが生じた場合に、そのハングが生じたデバイス(被疑デバイス)14に対して、CPU10bがメモリエラーハンドラ10bを実行することにより情報採取を行なった(リトライした)結果に基づく判断手法を示している。
【0069】
すなわち、CPU10bによる被疑デバイスの情報採取処理においてもハングが生じた場合、すなわち、情報採取が正常に完了しなかった場合には、その被疑デバイス14に異常がある(デバイス異常)と判断することができる。
一方、CPU10bによる被疑デバイス14の情報採取処理においてハングが生じなかった場合、すなわち、情報採取が正常に完了した場合には、CPU10a(異常停止プロセッサ)に何らかの問題がある(CPU異常)であると判断することができる。これにより、ハングした原因を容易に特定(判断)することができるのである。
【0070】
なお、エラーハンドラ20aの実行時に、情報採取のためにデバイス14にアクセスしたCPU10aにおいてハングが生じた場合に、その被疑デバイス14に対してCPU10bによりリトライを行なう前に、これからリトライを行なう旨や、被疑デバイス14を特定するための情報(どのデバイス14に対するリトライであるか)等のエラーに関する情報を、コンパクトフラッシュ(登録商標)等の不揮発性メモリに記憶させておくことが望ましい。
【0071】
これにより、リトライによりCPU10bにおいてハングが生じ、CPU10a,10bのいずれがハングした場合であっても、このエラーに関する情報を参照することにより、被疑デバイス14を容易に特定することができ利便性が高い。
(C)その他
そして、本発明は上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
【0072】
例えば、上述した本発明の一実施形態としての情報処理装置100においては、メモリ16aにおいてエラー(アンコレクタブルエラー)が生じた場合について説明し、CPU10aがエラーハンドラ20aを実行し、このCPU10aがエラーハンドラ20aを正常に動作させることができない場合に、CPU10bが、メモリ16bに格納されたエラーハンドラ20bを実行してデバイス14の情報採取等を行なっているが、これに限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
【0073】
例えば、メモリ16bにおいてエラー(アンコレクタブルエラー)が生じた場合には、CPU10bがエラーハンドラ20bを実行し、このCPU10bがエラーハンドラ20bを正常に動作させることができない場合に、CPU10ba、メモリ16aに格納されたエラーハンドラ20aを実行して、各デバイス14の情報採取等を行なってもよい。
また、本発明の各実施形態が開示されていれば、本発明を当業者によって実施・製造することが可能である。
【産業上の利用可能性】
【0074】
複数のプロセッサと複数のメモリとをそなえた情報処理装置において生じる種々のエラー処理に適用することができる。
【図面の簡単な説明】
【0075】
【図1】本発明の一実施形態としての情報処理装置のハードウェア構成を模式的に示す図である。
【図2】(a),(b)は本発明の一実施形態としての情報処理装置のメモリにおけるエラー発生時の処理を説明するためのフローチャートである。
【図3】本発明の一実施形態としての情報処理装置の変形例におけるデバイス情報の採取手法を説明するための図である。
【図4】(a),(b)は本発明の一実施形態としての情報処理装置の変形例における情報採取手法を説明するためのフローチャートである。
【図5】本発明の一実施形態としての情報処理装置の変形例におけるデバイスの情報採取時に生じたハングの原因特定手法を説明するための図である
【図6】従来の情報処理装置のハードウェア構成を模式的に示す図である。
【符号の説明】
【0076】
10a,10b,10 CPU
11,12 チップセット
13 メモリコントローラ
14,14a,14b,14c,14d デバイス
16,16a,16b メモリ
20,20a,20b エラーハンドラ(エラー対処プログラム)
100 情報処理装置

【特許請求の範囲】
【請求項1】
複数のプロセッサと複数のメモリとをそなえた情報処理装置であって、
前記複数のメモリのうち少なくとも2つの該メモリのそれぞれにエラー対処プログラムを格納するエラー対処プログラム格納処理部をそなえ、
該メモリにおいてエラーが生じた際に、
前記複数のプロセッサのうちの一のプロセッサが、該エラー対処プログラムを格納された2以上の該メモリのうち、一のメモリに格納された該エラー対処プログラムを実行し、
前記一のプロセッサが該エラー対処プログラムを正常に動作させることができない場合に、前記複数のプロセッサのうちの前記一のプロセッサとは異なる他のプロセッサが、該エラー対処プログラムを格納された2以上の該メモリのうち、前記一のメモリとは異なる他のメモリに格納された該エラー対処プログラムを実行することを特徴とする、情報処理装置。
【請求項2】
複数のデバイスをそなえ、
前記複数のデバイスのうちのいずれかにかかる処理においてエラーが生じた際に、
前記一のプロセッサが、前記複数のデバイスに対して予め設定された走査順序で、前記複数のデバイスのうち情報採取が行なわれていない情報未採取デバイスに順次アクセスして情報採取を行なうとともに、
前記他のプロセッサが、該情報未採取デバイスに、該走査順序とは逆の順序で順次アクセスして情報採取を行なうことを特徴とする、請求項1記載の情報処理装置。
【請求項3】
前記一のプロセッサ及び他のプロセッサのうちいずれかのプロセッサが、該デバイスの情報採取過程において異常停止した場合に、この異常停止した異常停止プロセッサとは異なるプロセッサが、該異常停止プロセッサが異常停止となった該デバイスにアクセスして情報採取を行ない、
前記異常停止プロセッサとは異なるプロセッサの該情報採取の成否に基づいて、該異常停止の原因を判断することを特徴とする、請求項2記載の情報処理装置。
【請求項4】
複数のプロセッサとメモリと複数のデバイスをそなえた情報処理装置であって、
前記複数のデバイスのうちのいずれかにかかる処理においてエラーが生じた際に、
前記複数のプロセッサのうちの第1のプロセッサが、前記複数のデバイスに対して予め設定された走査順序で、前記複数のデバイスのうち情報採取が行なわれていない情報未採取デバイスに順次アクセスして情報採取を行なうとともに、
前記複数のプロセッサのうちの該第1のプロセッサとは異なる第2のプロセッサが、該情報未採取デバイスに、該走査順序とは逆の順序で順次アクセスして情報採取を行なうことを特徴とする、情報処理装置。
【請求項5】
該第1のプロセッサ及び該第2のプロセッサのうちいずれかのプロセッサが、該デバイスの情報取得過程において異常停止した場合に、この異常停止した異常停止プロセッサとは異なるプロセッサが、該異常停止プロセッサが異常停止となった該デバイスにアクセスして情報採取を行ない、
前記異常停止プロセッサとは異なるプロセッサの該情報採取の成否に基づいて、該異常停止の原因を判断することを特徴とする、請求項4記載の情報処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2010−33355(P2010−33355A)
【公開日】平成22年2月12日(2010.2.12)
【国際特許分類】
【出願番号】特願2008−195180(P2008−195180)
【出願日】平成20年7月29日(2008.7.29)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】