(57)【特許請求の範囲】
【請求項１】
第１の記憶装置にロードされたプログラムのブロック毎にチェックサムを計算し、該チェックサムを該ブロックに対応付けて第２の記憶装置に格納する格納手段と、
プログラムを実行する際に生成されるタスクに対し、タスクが実行されたプログラムのモジュールの識別子と、該モジュールに対して実行されたタスクの識別子と、を少なくとも含む管理情報を管理する管理手段と、
前記第１の記憶装置にロードされたプログラムの実行中に特定のメモリエラーが発生して、該プログラムのブロック毎にチェックサムを新たに計算する場合、前記管理情報にもとづき、エラー発生時に動作していたタスクの識別子によって特定されるモジュールである関連モジュールを認識して、前記関連モジュールのチェックサムについて新たに計算する計算手段と、
前記計算手段により新たに計算された前記関連モジュールのチェックサムと、前記第２の記憶装置に格納されている、前記関連モジュールのチェックサムと、をブロック毎に比較し、チェックサムが不一致のブロックを検出する検出手段と、
前記第１の記憶装置にロードされたプログラムを、前記第２の記憶装置にコピーし、該プログラムをコピーする際は、該プログラムに関連するモジュール識別子、テキスト部先頭アドレス、テキスト部サイズ、前記第２の記憶装置への格納場所の少なくとも１つを含むコピー管理情報を作成して前記第２の記憶装置に格納するコピー手段と、
チェックサムが不一致のブロックが検出されると、該ブロックに対応するブロックを前記第２の記憶装置から読み出し、該コピー管理情報を参照して、チェックサムが不一致のブロックに対応するコピーデータの格納先を求めて、読み出した該ブロックを、チェックサムが不一致のブロックが格納されていた前記第１の記憶装置の領域に上書きで書き込む書き込み手段と、
を有する情報処理装置。
【請求項２】
前記検出手段は、修正不能なメモリエラーが発生した場合に、チェックサムが不一致のブロックの検出を実行することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記検出手段は、ＥＣＣ（Error Check and Correct）マルチビットエラーが発生した場合に、修正不能なメモリエラーであると判断することを特徴とする請求項２記載の情報処理装置。
【請求項４】
コンピュータに、
第１の記憶装置にロードされたプログラムのブロック毎にチェックサムを計算し、該チェックサムを、該ブロックに対応付けて第２の記憶装置に格納し、
プログラムを実行する際に生成されるタスクに対し、タスクが実行されたプログラムのモジュールの識別子と、該モジュールに対して実行されたタスクの識別子と、を少なくとも含む管理情報を管理し、
前記第１の記憶装置にロードされたプログラムの実行中に特定のメモリエラーが発生して、該プログラムのブロック毎にチェックサムを新たに計算する場合、前記管理情報にもとづき、エラー発生時に動作していたタスクの識別子によって特定されるモジュールである関連モジュールを認識して、前記関連モジュールのチェックサムについて新たに計算し、
新たに計算された前記関連モジュールのチェックサムと、前記第２の記憶装置に格納されている、前記関連モジュールのチェックサムと、をブロック毎に比較し、チェックサムが不一致のブロックを検出し、
前記第１の記憶装置にロードされたプログラムを、前記第２の記憶装置にコピーし、該プログラムをコピーする際は、該プログラムに関連するモジュール識別子、テキスト部先頭アドレス、テキスト部サイズ、前記第２の記憶装置への格納場所の少なくとも１つを含むコピー管理情報を作成して前記第２の記憶装置に格納し、
チェックサムが不一致のブロックが検出されると、該ブロックに対応するブロックを前記第２の記憶装置から読み出し、該コピー管理情報を参照して、チェックサムが不一致のブロックに対応するコピーデータの格納先を求めて、読み出した該ブロックを、チェックサムが不一致のブロックが格納されていた前記第１の記憶装置の領域に上書きで書き込む、
処理を実行させるプログラム。
【請求項５】
コンピュータが、
第１の記憶装置にロードされたプログラムのブロック毎にチェックサムを計算し、該チェックサムを、該ブロックに対応付けて第２の記憶装置に格納し、
プログラムを実行する際に生成されるタスクに対し、タスクが実行されたプログラムのモジュールの識別子と、該モジュールに対して実行されたタスクの識別子と、を少なくとも含む管理情報を管理し、
前記第１の記憶装置にロードされたプログラムの実行中に特定のメモリエラーが発生して、該プログラムのブロック毎にチェックサムを新たに計算する場合、前記管理情報にもとづき、エラー発生時に動作していたタスクの識別子によって特定されるモジュールである関連モジュールを認識して、前記関連モジュールのチェックサムについて新たに計算し、
新たに計算された前記関連モジュールのチェックサムと、前記第２の記憶装置に格納されている、前記関連モジュールのチェックサムと、をブロック毎に比較し、チェックサムが不一致のブロックを検出し、
前記第１の記憶装置にロードされたプログラムを、前記第２の記憶装置にコピーし、該プログラムをコピーする際は、該プログラムに関連するモジュール識別子、テキスト部先頭アドレス、テキスト部サイズ、前記第２の記憶装置への格納場所の少なくとも１つを含むコピー管理情報を作成して前記第２の記憶装置に格納し、
チェックサムが不一致のブロックが検出されると、該ブロックに対応するブロックを前記第２の記憶装置から読み出し、該コピー管理情報を参照して、チェックサムが不一致のブロックに対応するコピーデータの格納先を求めて、読み出した該ブロックを、チェックサムが不一致のブロックが格納されていた前記第１の記憶装置の領域に上書きで書き込む、
ことを特徴とするエラー処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理を行う情報処理装置、プログラムおよびエラー処理方法に関する。
【背景技術】
【０００２】
近年、ＥＣＣ（Error Check and Correct）機能が設けられたメモリ（以下、ＥＣＣメモリ）を備えているコンピュータシステムが増加している。ＥＣＣメモリは、記憶するデータにあらかじめ誤り訂正符号を付加して、誤った値が記憶されていることの検出および修正を行うメモリモジュールであり、特に高信頼性が求められるサーバやストレージ装置などに採用されている。
【０００３】
通常、ＥＣＣメモリでは、データエラーとして、１ビットのシングビットエラーが生じた場合には、シングルビットエラーをパリティチェック等により検出し、ＥＣＣ機能によって自動修正を行うことができる。
【０００４】
また、２ビット以上のマルチビットエラーが生じた場合には、ＥＣＣ機能によって、マルチビットのエラーが発生したことを検出することができる。このように、ＥＣＣメモリを備えておくことで、致命的なメモリ障害が発生することを低下させることが可能になる。
【０００５】
従来技術として、ＥＣＣ機構で検出したエラーを、プログラム修正エリアを用いて修正し、システムの連続運転を継続させる技術が提案されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−１３２４６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、従来のＥＣＣ機能では、マルチビットエラーの発生時、エラー発生箇所を特定することができない。すなわち、マルチビットエラーが発生したことを単に検出することはできても、データ化けが発生した箇所を特定することができない。
【０００８】
したがって、従来では例えば、プログラムの命令コード域において、ＥＣＣメモリのマルチビットエラーが発生した際は、破壊された命令コードを特定することができない。破壊された命令コードでプログラムが走ると、プログラムが暴走してシステム障害が引き起こされ、以降の処理を正常に継続することが不可能となってしまう。
【０００９】
１つの側面では、本発明は、マルチビットエラー発生時に、プログラムのエラー発生箇所を特定することを目的とした情報処理装置、プログラムおよびエラー処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
１つの案では、情報処理装置が提供される。情報処理装置は、第１の記憶装置にロードされたプログラムのブロック毎にチェックサムを計算し、該チェックサムを該ブロックに対応付けて第２の記憶装置に格納する格納手段と、プログラムを実行する際に生成されるタスクに対し、タスクが実行されたプログラムのモジュールの識別子と、該モジュールに対して実行されたタスクの識別子と、を少なくとも含む管理情報を管理する管理手段と、前記第１の記憶装置にロードされたプログラムの実行中に特定のメモリエラーが発生して、該プログラムのブロック毎にチェックサムを新たに計算する場合、前記管理情報にもとづき、エラー発生時に動作していたタスクの識別子によって特定されるモジュールである関連モジュールを認識して、前記関連モジュールのチェックサムについて新たに計算する計算手段と、前記計算手段により新たに計算された前記関連モジュールのチェックサムと、前記第２の記憶装置に格納されている、前記関連モジュールのチェックサムと、をブロック毎に比較し、チェックサムが不一致のブロックを検出する検出手段と、前記第１の記憶装置にロードされたプログラムを、前記第２の記憶装置にコピーし、該プログラムをコピーする際は、該プログラムに関連するモジュール識別子、テキスト部先頭アドレス、テキスト部サイズ、前記第２の記憶装置への格納場所の少なくとも１つを含むコピー管理情報を作成して前記第２の記憶装置に格納するコピー手段と、チェックサムが不一致のブロックが検出されると、該ブロックに対応するブロックを前記第２の記憶装置から読み出し、該コピー管理情報を参照して、チェックサムが不一致のブロックに対応するコピーデータの格納先を求めて、読み出した該ブロックを、チェックサムが不一致のブロックが格納されていた前記第１の記憶装置の領域に上書きで書き込む書き込み手段とを有する。
【発明の効果】
【００１１】
１態様によれば、プログラムのエラー発生箇所を特定することが可能になる。
【図面の簡単な説明】
【００１２】
【図１】情報処理装置の構成例を示す図である。
【図２】情報処理装置の構成例を示す図である。
【図３】破壊された命令コードの特定処理を示す図である。
【図４】命令コードの修正処理を示す図である。
【図５】ＲＡＩＤ装置の構成例を示す図である。
【図６】試験プログラムの起動手順を示す図である。
【図７】プログラム実行時の動作フローを示す図である。
【図８】エラー割り込み発生時の動作フローを示す図である。
【図９】プログラムモジュールローディング処理部の動作フローを示す図である。
【図１０】モジュール管理テーブルの構成例を示す図である。
【図１１】チェックサム計算およびチェックサム管理テーブル作成に関する処理を示す図である。
【図１２】チェックサム管理テーブルの構成例を示す図である。
【図１３】テキスト部データのコピーおよびコピーデータ管理テーブル作成に関する処理を示す図である。
【図１４】コピーデータ管理テーブルの構成例を示す図である。
【図１５】タスク生成処理部の動作フローを示す図である。
【図１６】タスク管理テーブルの構成例を示す図である。
【図１７】エントリ関数のチェックおよびタスク・実行モジュール管理テーブルの作成に関する処理を示す図である。
【図１８】タスク・実行モジュール管理テーブルの構成例を示す図である。
【図１９】破壊された命令コードの特定処理を示す図である。
【図２０】命令コードの修正処理を示す図である。
【図２１】エラー監視処理部の動作フローを示す図である。
【図２２】本実施の形態に用いるコンピュータのハードウェアの一構成例を示す図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態を図面を参照して説明する。図１は情報処理装置の構成例を示す図である。情報処理装置１は、格納手段１ａ、計算手段１ｂ、検出手段１ｃ、第１の記憶装置（主記憶装置）ｍ１および第２の記憶装置（二次記憶装置）ｍ２を備える。
【００１４】
格納手段１ａは、主記憶装置ｍ１にロードされたプログラムのブロック毎にチェックサムを計算する。そして、各ブロックのチェックサムを、該ブロックに対応付けて二次記憶装置ｍ２に格納する。なお、チェックサムとは、データを分割して、分割ブロック内のデータを数値とみなして合計を取った誤り検出用の符号である。
【００１５】
計算手段１ｂは、主記憶装置ｍ１にロードされたプログラムの実行中に、特定のメモリエラーが発生すると、該プログラムのブロック毎にチェックサムを新たに計算する。
検出手段１ｃは、ブロックから新たに計算したチェックサムと、該ブロックに対応付けて二次記憶装置ｍ２に格納されているチェックサムとを比較し、チェックサムが不一致のブロックを検出する。
【００１６】
このように、情報処理装置１では、主記憶装置ｍ１にロードされたプログラムのブロック毎のチェックサムと、該プログラムの実行中にエラーが発生した際に新たに計算したブロック毎のチェックサムとを比較する。そして、情報処理装置１は、チェックサムが不一致のブロックを検出する。これにより、チェックサムが不一致のブロックを、プログラムのエラー発生箇所として特定することが可能になる。
【００１７】
次に情報処理装置１の構成について説明する。図２は情報処理装置の構成例を示す図である。情報処理装置１−１は、プログラムモジュールローディング処理部１１、タスク生成処理部１２、エラー監視処理部１３、メモリ２１およびｓｙｓＶＯＬ（system volume）２２を含む。
【００１８】
メモリ２１は例えば、ＥＣＣメモリであって、図１の主記憶装置ｍ１に該当する。ｓｙｓＶＯＬ２２は、図１の二次記憶装置ｍ２に該当する。
プログラムモジュールローディング処理部１１は、メモリ２１にロードされたプログラムのブロック毎にチェックサムを計算し、各ブロックのチェックサムを、該ブロックに対応付けてｓｙｓＶＯＬ２２に格納する。このとき、チェックサム管理用のテーブルを作成する。
【００１９】
また、プログラムモジュールローディング処理部１１は、メモリ２１上に展開したプログラムのテキスト部のデータをコピーして、ｓｙｓＶＯＬ２２に格納する。このとき、コピーデータ用の管理テーブルを作成する。なお、プログラムのテキスト部とは、プログラムの命令コードに該当する。
【００２０】
タスク生成処理部１２は、プログラムモジュールを実行させるタスクを生成する。また、タスク生成時に、最初に実行される処理がどのプログラムモジュールのテキスト部に含まれているかどうかをチェックする。このとき、ｓｙｓＶＯＬ２２内にタスクと関連モジュールとの関係情報を含む管理テーブルを作成する。
【００２１】
エラー監視処理部１３は、メモリ２１のエラーを監視し、エラー発生時にはＥＣＣマルチビットエラーか否かを判断する。ＥＣＣマルチビットエラーの場合は、プログラムモジュールのテキスト部の破壊箇所を特定する。さらに破壊されているテキスト部の修正を行う。なお、各構成部の詳細動作については後述する。
【００２２】
次にプログラム実行中にメモリエラーが発生した場合における、破壊された命令コードを特定する処理について説明する。
図３は破壊された命令コードの特定処理を示す図である。
【００２３】
〔Ｓ１〕プログラムモジュールローディング処理部１１は、装置立ち上げ時に、図２で示したメモリ２１上へプログラムモジュールのローディング処理を行う。そして、メモリ２１上に展開されたテキスト部を複数のブロック（例えば１ＫＢ単位）に分割し、ブロック毎にチェックサム計算を実施する。
【００２４】
〔Ｓ２〕プログラムモジュールローディング処理部１１は、ｓｙｓＶＯＬ２２内にチェックサム管理テーブルＴ１を作成してチェックサムの計算結果を管理する。チェックサム管理テーブルＴ１で管理される属性としては、例えば、モジュールＩＤ（identifier）、テキスト部のブロック数および各ブロックのチェックサム値等がある。
【００２５】
〔Ｓ３〕タスク生成処理部１２は、プログラムモジュールを実行させるタスクを生成する。タスク生成時には、どこの関数から実行するかといった情報がいるため、エントリ関数（タスク生成時に最初に実行される関数）のアドレスが、どのプログラムモジュールのテキスト部に該当しているかをチェックする。
【００２６】
〔Ｓ４〕タスク生成処理部１２は、生成タスクと実行プログラムモジュールとの関係を示すタスク・実行モジュール管理テーブルＴ２をｓｙｓＶＯＬ２２内に作成して管理する。タスク・実行モジュール管理テーブル２２で管理される属性としては、例えば、モジュールＩＤ、実行タスク数およびタスクＩＤ等がある。
【００２７】
〔Ｓ５〕生成されたタスクによってプログラムが実行される。
〔Ｓ６〕エラー監視処理部１３は、図２で示したメモリ２１のマルチビットエラーが生じた際の割り込み発生時、以下のチェックサムの比較処理を実施して、命令コードの破壊箇所を特定する。
【００２８】
（１）エラー発生時に動作していたタスクのＩＤを認識する。また、ｓｙｓＶＯＬ２２内に保持されているタスク・実行モジュール管理テーブルＴ２から関連モジュールを特定する（エラー発生時に動作していたタスクが、どのモジュールのタスクであるかを特定する）。
【００２９】
（２）関連モジュールのテキスト部のチェックサム計算を実施し、チェックサム計算結果と、ｓｙｓＶＯＬ２２内で保持されているチェックサム管理テーブルＴ１のチェックサム値とを比較し、命令コードの破壊有無と、破壊されたブロックとを特定する。
【００３０】
なお、全モジュールに対してチェックサムの比較処理を行うと時間がかかる。そのため、タスク・実行モジュール管理テーブルＴ２から関連モジュールを認識し、関連モジュールのテキスト部のチェックサム計算を実施して比較することで、比較処理時間の短縮化を図っている。また、テキスト部の全チェックサム値が正しい場合は、プログラムモジュールのデータ部が破壊されているものと判断する。
【００３１】
次に命令コードの修正処理について説明する。破壊された命令コードを修正するときには、修正するために使用すべきデータを要するが、ｓｙｓＶＯＬ２２内のモジュールデータは、必ずしもメモリ２１上に展開されたテキスト部のデータと一致しているものではない。
【００３２】
この理由は、モジュールに含まれる未解決シンボル（カーネルの関数、外部変数等）がローディング時に解決されて、テキスト部のデータが変わることがあるためである。
なお、未解決シンボルとは、システムが提供する関数や変数が、プログラムモジュールの作成時には存在せずに未解決のままモジュールが作成され、システムのローディング処理時に解決されるシンボルのことをいう。
【００３３】
したがって、ｓｙｓＶＯＬ２２内のモジュールデータは、一致している箇所も一致していない箇所も含んでいる可能性があるため、修正データとしてそのまま使用することはできない。
【００３４】
図４は命令コードの修正処理を示す図である。上記の課題の解決を図った命令コードの修正処理の流れを示している。
〔Ｓ１１〕プログラムモジュールローディング処理部１１は、ｓｙｓＶＯＬ２２内のモジュールをメモリ２１にローディングした後、メモリ２１上に展開されたテキスト部をｓｙｓＶＯＬ２２内へコピーする。
【００３５】
〔Ｓ１２〕プログラムモジュールローディング処理部１１は、ｓｙｓＶＯＬ２２内にコピーデータ管理テーブルＴ３を作成してコピーデータを管理する。コピーデータ管理テーブルＴ３で管理される属性としては、例えば、モジュールＩＤ、テキスト部の先頭アドレス／サイズ、コピーデータの格納先ＬＢＡ（Logical Block Address：ｓｙｓＶＯＬ２２内のアドレスに該当）等がある。
【００３６】
〔Ｓ１３〕タスク生成処理部１２は、プログラムモジュールを実行させるタスクを生成する。
〔Ｓ１４〕生成されたタスクによってプログラムが実行される。
【００３７】
〔Ｓ１５〕エラー監視処理部１３は、命令コードの修正処理を行う。具体的には、マルチビットエラーの割り込み処理の発生時、破壊された命令コードを含むブロック（例えば、１ＫＢ単位）を特定した後（上述のステップＳ６でのエラー特定処理が終了した後）、コピーデータ管理テーブルＴ３を参照し、ｓｙｓＶＯＬ２２内に保持されているテキスト部のデータをメモリ２１上へ書き込む。これにより、破壊された命令コードが修正される。
【００３８】
なお、命令コードが破壊された同一のメモリ２１上で命令コードを修正するので、メモリ２１に物理的な障害等がある場合、命令コードの修正後に再度エラーを通知する割り込みが発生する可能性もある。このため、あらかじめ上限回数を設けておき、一定時間内で上限回数を超えて同一のエラーが生じた（上限回数を超えて同一の割り込みが発生した）場合は、システムを停止して対処することになる。
【００３９】
次に情報処理装置１−１の適用例として、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）装置に適用した場合の構成について説明する。
図５はＲＡＩＤ装置の構成例を示す図である。ＲＡＩＤ装置３００は、制御部であるＣＥ（Controller Enclosure）３と、記憶部であるＤＥ（Device Enclosure）４−１〜４−ｎ、５−１〜５−ｎとを備えている。また、ＲＡＩＤ装置３００には操作端末６が接続されている。
【００４０】
ＤＥ４−１〜４−ｎは、それぞれ複数のディスク４０−１〜４０−ｎを含み、ＤＥ５−１〜５−ｎは、それぞれ複数のディスク５０−１〜５０−ｎを含んでいる。
ＣＥ３は、複数のＣＭ（Controller Module）を含み、図の例ではＣＭ３０ａ、３０ｂを有している。なお、ＣＭ３０ａ、３０ｂは、図２の情報処理装置１−１に該当する。
【００４１】
ＣＭ３０ａは、ＣＰＵ（Central Processing Unit）３１ａ、ＣＡ（Channel Adapter）３２ａ−１〜３２ａ−４、ＳＡＳ（Serial Attached SCSI（Small Computer System Interface））３４ａ−１、３４ａ−２、コントローラ３９ａ、メモリ３６ａ、ＳＳＤ（Solid State Drive）３７ａおよびＦｌａｓｈ ＲＯＭ（Read Only Memory）３８ａを含む。
【００４２】
ＣＰＵ３１ａには、メモリ３６ａが接続して、各種プログラムが実行される。また、コントローラ３９ａは、例えば、ＰＣＨ（Platform Controller Hub）であり、ＣＰＵ３１ａとＣＰＵ周辺部とのブリッジ接続を行う機能を有している。
【００４３】
図では、コントローラ３９ａには、ＣＰＵ３１ａ、ＣＡ３２ａ−１〜３２ａ−４、ＳＡＳ３４ａ−１、３４ａ−２、ＳＳＤ３７ａおよびＦｌａｓｈ ＲＯＭ３８ａが接続している。
【００４４】
なお、ＣＰＵ３１ａは、図２で示したプログラムモジュールローディング処理部１１、タスク生成処理部１２およびエラー監視処理部１３の各機能を含む。また、メモリ３６ａは、図２のメモリ２１に該当し、ＳＳＤ３７ａは、図２のｓｙｓＶＯＬ２２に該当する。
【００４５】
ＣＡ３２ａ−１〜３２ａ−４は、上位装置であるホストに接続している。コントローラ３９ａは、ＣＰＵ３１ａとＣＡ３２ａ−１〜３２ａ−４とのブリッジを行って、ＣＰＵ３１ａがホストとデータ通信を行う際のインタフェース制御を行う。
【００４６】
さらに、ＳＡＳ３４ａ−１は、ＤＥ４−１〜４−ｎと接続し、ＳＡＳ３４ａ−２は、ＤＥ５−１〜５−ｎと接続している。コントローラ３９ａは、ＣＰＵ３１ａとＳＡＳ３４ａ−１、３４ａ−２とのブリッジを行って、ＣＰＵ３１ａがＤＥ４−１〜４−ｎ、５−１〜５−ｎに対して書き込み／読み出し処理を行う際のインタフェース制御を行う。
【００４７】
同様にして、ＣＭ３０ｂは、ＣＰＵ３１ｂ、ＣＡ３２ｂ−１〜３２ｂ−４、ＳＡＳ３４ｂ−１、３４ｂ−２、コントローラ３９ｂ、メモリ３６ｂ、ＳＳＤ３７ｂおよびＦｌａｓｈ ＲＯＭ３８ｂを含む。
【００４８】
ＣＰＵ３１ｂには、メモリ３６ｂが接続して、各種プログラムが実行される。また、コントローラ３９ｂは、例えば、ＰＣＨであり、ＣＰＵ３１ｂとＣＰＵ周辺部とのブリッジ接続を行う機能を有している。
【００４９】
図では、コントローラ３９ｂには、ＣＰＵ３１ｂ、ＣＡ３２ｂ−１〜３２ｂ−４、ＳＡＳ３４ｂ−１、３４ｂ−２、ＳＳＤ３７ｂおよびＦｌａｓｈ ＲＯＭ３８ｂが接続している。
【００５０】
なお、ＣＰＵ３１ｂは、図２で示したプログラムモジュールローディング処理部１１、タスク生成処理部１２およびエラー監視処理部１３の各機能を含む。また、メモリ３６ｂは、図２のメモリ２１に該当し、ＳＳＤ３７ｂは、図２のｓｙｓＶＯＬ２２に該当する。
【００５１】
ＣＡ３２ｂ−１〜３２ｂ−４は、上位装置であるホストに接続している。コントローラ３９ｂは、ＣＰＵ３１ｂとＣＡ３２ｂ−１〜３２ｂ−４とのブリッジを行って、ＣＰＵ３１ｂがホストとデータ通信を行う際のインタフェース制御を行う。
【００５２】
さらに、ＳＡＳ３４ｂ−１は、ＤＥ４−１〜４−ｎと接続し、ＳＡＳ３４ｂ−２は、ＤＥ５−１〜５−ｎと接続している。コントローラ３９ｂは、ＣＰＵ３１ｂとＳＡＳ３４ｂ−１、３４ｂ−２とのブリッジを行って、ＣＰＵ３１ｂがＤＥ４−１〜４−ｎ、５−１〜５−ｎに対して書き込み／読み出し処理を行う際のインタフェース制御を行う。
【００５３】
一方、ＣＰＵ３１ａは、ＤＭＡ（Direct Memory Access）コントローラ３１ａ−１を含み、ＣＰＵ３１ｂは、ＤＭＡコントローラ３１ｂ−１を含む。ＤＭＡコントローラ３１ａ−１、３１ｂ−１は互いに、ＰＣＩ（Peripheral Component Interconnect） Ｅｘｐｒｅｓｓバスｂ０で接続されており、ＣＭ３０ａ、３０ｂ間で通信が可能となっている。
【００５４】
なお、ＣＭ３０ａ、３０ｂの少なくとも一方に、操作端末６が接続されて、オペレータは、操作端末６を通じて、ＲＡＩＤ装置３００の診断処理や運用管理を行うことが可能である。例えば、操作端末６からＲＡＩＤ装置３００に試験プログラムを流して、装置内の各機能の正常性の試験を行ったりする。また、操作端末６は、操作画面、試験結果のメッセージまたは装置運用状態の表示を行う。
【００５５】
次にＲＡＩＤ装置３００に対して診断処理を行う際の試験プログラムの起動手順について説明する。ＲＡＩＤ装置３００では、例えば、装置出荷前において、試験プログラムを流して装置内の各機能の正常性の試験が行われる。また、診断処理によって正常性が確認された後には、装置運用を実際に行うためのファームウェアが装置内に組み込まれることになる。
【００５６】
図６は試験プログラムの起動手順を示す図である。図中のＣＭ３０は、図５で上述したＣＭ３０ａ、３０ｂと同一であり、ＣＰＵ３１、メモリ３６、ＳＳＤ３７、Ｆｌａｓｈ ＲＯＭ３８およびコントローラ３９を備えている。なお、図６には試験プログラムの起動手順の説明に要する構成要素のみ示している。
【００５７】
ＣＰＵ３１は、メモリコントローラ３１−１およびレジスタ３１−２を含む。ＣＰＵ３１は、メモリコントローラ３１−１を介してメモリ３６と接続している。また、コントローラ３９を介して、ＣＰＵ３１、ＳＳＤ３７およびＦｌａｓｈ ＲＯＭ３８が互いに接続されている。
【００５８】
ここで、メモリ３６でメモリエラーが発生した場合、メモリコントローラ３１−１がメモリエラーを受信する。メモリコントローラ３１−１は、発生したメモリエラーの種別をレジスタ３１−２に書き込む。ＣＰＵ３１では、レジスタ３１−２に書き込まれたメモリエラーの種別に応じて割り込み処理を発生させる。
【００５９】
例えば、ＥＣＣマルチビットエラーが発生した場合は、レジスタ３１−２には、ＥＣＣマルチビットエラーの発生である旨が書き込まれ（例えば、該当フラグが立つなど）、ＥＣＣマルチビットエラーに対処する割り込み処理が発生する。この割り込み処理の発生により、図３、図４で上述したエラー特定・自己修正処理（詳細は以下後述する）が実行されることになる。
【００６０】
以下、ＲＡＩＤ装置３００内のＣＭ３０に対して、試験プログラムを流して起動するときの手順を示す。
〔Ｓ１ａ〕オペレータは、ＣＭ３０に電源を投入する。
【００６１】
〔Ｓ２ａ〕Ｆｌａｓｈ ＲＯＭ３８には、ＢＩＯＳ（Basic Input／Output System：コンピュータに接続されたハードウェアとアクセスするためのファームウェア）が書き込まれており、ＣＰＵ３１がＢＩＯＳを起動する。
【００６２】
〔Ｓ３ａ〕ＣＰＵ３１が、ＳＳＤ３７（ｓｙｓＶＯＬ）内に格納されている診断モニタモジュールをメモリ３６上にローディングする。
〔Ｓ４ａ〕ＣＰＵ３１は、診断モニタモジュールの初期化処理を実行する。
【００６３】
〔Ｓ５ａ〕ＣＰＵ３１は、ＳＳＤ３７内のＩ／Ｏドライバモジュールを、メモリ３６にローディングする。
〔Ｓ６ａ〕ＣＰＵ３１は、Ｉ／Ｏドライバモジュールの初期化処理を実行する。なお、Ｉ／Ｏドライバの数分、ステップＳ５ａおよびステップＳ６ａの処理を繰り返す。
【００６４】
〔Ｓ７ａ〕ＣＰＵ３１は、診断モニタの立ち上げ処理の完了後、操作端末６に診断用の操作画面を表示する。
〔Ｓ８ａ〕オペレータは、操作端末６から、各Ｉ／Ｏの試験プログラムの起動操作を実施する（操作端末６からの実行文をあらかじめファイルに記載しておくことで自動運転することも可能である）。
【００６５】
〔Ｓ９ａ〕ＣＰＵ３１は、診断モニタが指定された試験プログラムユーティリティコマンドを、ＳＳＤ３７からメモリ３６にローディングする。
〔Ｓ１０ａ〕ＣＰＵ３１は、試験プログラムにもとづき、該当試験を実行する。
【００６６】
次に情報処理装置１−１の動作について以降詳しく説明する。最初に全体処理フローについて説明する。全体処理動作としては、プログラム実行時の動作と、エラー割り込み発生時の動作とがある。
【００６７】
図７はプログラム実行時の動作フローを示す図である。
〔Ｓ２１〕プログラムモジュールローディング処理部１１は、装置立ち上げ時に、メモリ２１上へプログラムモジュールのローディング処理を行う。
【００６８】
そして、プログラムモジュールローディング処理部１１は、メモリ２１上に展開されたテキスト部を複数のブロック（例えば１ＫＢ単位）に分割し、ブロック毎にチェックサム計算を実施する。また、プログラムモジュールローディング処理部１１は、ｓｙｓＶＯＬ２２内にチェックサム管理テーブルＴ１を作成して計算結果を管理する。
【００６９】
〔Ｓ２２〕プログラムモジュールローディング処理部１１は、ｓｙｓＶＯＬ２２内のモジュールをメモリ２１にローディングした後、メモリ２１上に展開されたテキスト部をｓｙｓＶＯＬ２２内へコピーする。また、プログラムモジュールローディング処理部１１は、ｓｙｓＶＯＬ２２内にコピーデータ管理テーブルＴ３を作成して管理する。
【００７０】
〔Ｓ２３〕タスク生成処理部１２は、エントリ関数のアドレスがどのプログラムモジュールのテキスト部に該当しているかをチェックする。
そして、プログラムモジュールローディング処理部１１は、生成タスクと実行プログラムモジュールとの関係を示すタスク・実行モジュール管理テーブルＴ２をｓｙｓＶＯＬ２２内に作成して管理する。以降、生成されたタスクでプログラムが実行される。
【００７１】
図８はエラー割り込み発生時の動作フローを示す図である。
〔Ｓ３１〕エラー監視処理部１３は、ＥＣＣマルチビットエラーの割り込み処理が生じたか否かを判断する。マルチビットエラーの割り込み処理が生じた場合はステップＳ３２へ行き、生じていない場合は割り込み処理を抜ける。
【００７２】
〔Ｓ３２〕エラー監視処理部１３は、プログラムモジュールのチェックサムの比較処理を実施して、命令コードの破壊有無を判断する。破壊されている場合は、ステップＳ３３へ行き、破壊されてない場合は割り込み処理を抜ける。
【００７３】
〔Ｓ３３〕エラー監視処理部１３は、破壊箇所を特定し、破壊されている命令コードに対して、命令コードの修正処理を行う。
次にプログラムモジュールローディング処理部１１について詳しく説明する。図９はプログラムモジュールローディング処理部の動作フローを示す図である。プログラムモジュールローディング処理部１１は、メモリ２１上に展開されたテキスト部のチェックサム計算と、テキストデータのコピー処理を行う。
【００７４】
〔Ｓ４１〕プログラムモジュールローディング処理部１１は、ｓｙｓＶＯＬ２２からプログラムモジュールを読み込み、メモリ２１上に展開する。
〔Ｓ４２〕プログラムモジュールローディング処理部１１は、モジュール管理テーブルを作成する。モジュール管理テーブルは、メモリ２１にローディングしたモジュールのＩＤや、各モジュールのテキスト部のメモリ２１内における先頭アドレスを登録したテーブルである。
【００７５】
〔Ｓ４３〕プログラムモジュールローディング処理部１１は、メモリ２１上に展開したテキスト部のチェックサム計算を行い、チェックサム管理テーブルＴ１を作成する。
〔Ｓ４４〕プログラムモジュールローディング処理部１１は、メモリ２１上に展開したテキスト部のコピー処理を行い、コピーデータ管理テーブルＴ３を作成する。
【００７６】
図１０はモジュール管理テーブルの構成例を示す図である。モジュール管理テーブルＴ０は、例えば、モジュールＩＤ、テキスト部先頭アドレス、関連タスク数、関連タスクＩＤ１〜ＩＤｎの属性を有している。
【００７７】
モジュールＩＤは、メモリ２１にローディングされたモジュールのＩＤである。テキスト部先頭アドレスは、ローディングされた各モジュールの先頭のテキスト部が格納されているメモリ２１のアドレスである。関連タスク数は、ローディング処理を実行したタスクの数であり、関連タスクＩＤは、ローディング処理を実行したタスクのＩＤである。
【００７８】
図１１はチェックサム計算およびチェックサム管理テーブル作成に関する処理を示す図である。
〔Ｓ５１〕プログラムモジュールローディング処理部１１は、ｓｙｓＶＯＬ２２からプログラムモジュールをメモリ２１へローディングし、メモリ２１上に展開する。
【００７９】
〔Ｓ５２〕プログラムモジュールローディング処理部１１は、メモリ２１上に展開したモジュールのテキスト部を、例えば、１ＫＢ単位のブロックに分割する。
〔Ｓ５３〕プログラムモジュールローディング処理部１１は、１ＫＢ毎にチェックサムを計算する。
【００８０】
〔Ｓ５４〕プログラムモジュールローディング処理部１１は、チェックサム管理テーブルＴ１を作成して、チェックサムの計算結果をｓｙｓＶＯＬ２２内に格納する。
図１２はチェックサム管理テーブルの構成例を示す図である。チェックサム管理テーブルＴ１は、例えば、モジュールＩＤ、チェックサム値の数（テキスト部のブロック数）、チェックサム＃１〜＃ｎの属性を有している。
【００８１】
モジュールＩＤは、メモリ２１にローディングされて、チェックサムが計算されたモジュールのＩＤである。チェックサム値の数は、ブロック単位にチェックサムを計算した計算値の数であり、テキスト部のブロック数と等しい。チェックサム＃１〜＃ｎは、該当ブロックそれぞれのチェックサムの値である。
【００８２】
図１３はテキスト部データのコピーおよびコピーデータ管理テーブル作成に関する処理を示す図である。
〔Ｓ６１〕プログラムモジュールローディング処理部１１は、ｓｙｓＶＯＬ２２からプログラムモジュールをメモリ２１へローディングし、メモリ２１上に展開する。
【００８３】
〔Ｓ６２〕プログラムモジュールローディング処理部１１は、メモリ２１上に展開したプログラムモジュールのテキスト部のデータをコピーしてｓｙｓＶＯＬ２２内に格納するする。
【００８４】
〔Ｓ６３〕プログラムモジュールローディング処理部１１は、ｓｙｓＶＯＬ２２内にコピーデータ管理テーブルＴ３を作成し、モジュール単位にコピーデータを管理する。
図１４はコピーデータ管理テーブルの構成例を示す図である。コピーデータ管理テーブルＴ３は、例えば、モジュールＩＤ、テキスト部先頭アドレス、テキスト部サイズおよびコピーデータのＬＢＡの属性を有している。
【００８５】
モジュールＩＤは、メモリ２１にローディングされて、テキスト部がコピーされたモジュールのＩＤである。テキスト部先頭アドレスは、モジュールの先頭のテキスト部が格納されているメモリ２１のアドレスである。テキスト部サイズは、テキスト部のサイズであり、コピーデータのＬＢＡは、コピーデータが格納されているｓｙｓＶＯＬ２２内のアドレスである。
【００８６】
次にタスク生成処理部１２について詳しく説明する。図１５はタスク生成処理部の動作フローを示す図である。タスク生成処理部１２は、タスク生成時、最初に実行されるタスク処理がどのモジュールのテキスト部によるものかどうかをチェックし、ｓｙｓＶＯＬ２２内に、タスクＩＤと関連モジュールＩＤとの関係を登録したタスク・実行モジュール管理テーブルＴ２を作成する。
【００８７】
〔Ｓ７１〕タスク生成処理部１２は、システム関数でタスクを生成する。
〔Ｓ７２〕タスク生成処理部１２は、メモリ２１上にタスク管理テーブルを作成して管理する。タスク管理テーブルは、生成されたタスクのＩＤ、エントリ関数のアドレスなどを登録したテーブルである。
【００８８】
〔Ｓ７３〕タスク生成処理部１２は、エントリ関数のアドレスがどのモジュールのテキスト部に含まれているかを判別する。
〔Ｓ７４〕タスク生成処理部１２は、ｓｙｓＶＯＬ２２上にタスク・実行モジュール管理テーブルＴ２を作成して管理する。その後、タスクが起動される。
【００８９】
図１６はタスク管理テーブルの構成例を示す図である。タスク管理テーブルＴ４は、例えば、モジュールＩＤ、エントリ関数のアドレス、タスクＩＤ１〜ＩＤｎの属性を有している。
【００９０】
モジュールＩＤは、システム関数で生成したタスクのモジュールのＩＤである。エントリ関数のアドレスは、最初に実行されるタスクのエントリ関数のメモリ２１上のアドレスである。タスクＩＤ１〜ＩＤｎは、システム関数で生成したタスクのＩＤである。なお、図示はしてないが、タスク実行情報（タスクの実行状態、タスク実行に要する資源、タスク実行の優先度など）を属性に持ってもよい。
【００９１】
図１７はエントリ関数のチェックおよびタスク・実行モジュール管理テーブルの作成に関する処理を示す図である。図では、メモリ２１上に３つのモジュールＡ〜Ｃの各テキスト部が展開されている状態で、タスク生成処理が実行された場合のタスク・実行モジュール管理テーブルＴ２の作成を示している。
【００９２】
なお、モジュールＡ〜Ｃは、例えば、モジュールＡは試験プログラム、モジュールＢはユーザインタフェースに関連したユーティリティプログラム、モジュールＣがＩ／Ｏドライバのプログラムモジュールである。
【００９３】
〔Ｓ８１〕タスク生成処理部１２は、エントリ関数のアドレスがモジュールＡ〜Ｃのどのモジュールのテキスト部に含まれているかを判別する。
〔Ｓ８２〕タスク生成処理部１２は、タスク・実行モジュール管理テーブルＴ２を作成する。例えば、タスク生成処理部１２は、エントリ関数のアドレスがモジュールＡのテキスト部に含まれるものならば、モジュールＡに関するタスク・実行モジュール管理テーブルＴ２を作成して、ｓｙｓＶＯＬ２２内に格納する。
【００９４】
図１８はタスク・実行モジュール管理テーブルの構成例を示す図である。タスク・実行モジュール管理テーブルＴ２は、例えば、モジュールＩＤ、実行タスク数およびタスクＩＤ１〜ＩＤｎの属性を有している。
【００９５】
モジュールＩＤは、メモリ２１にローディングされて、タスクが実行されたモジュールのＩＤである。実行タスク数は、モジュール毎にタスクが実行された数である。タスクＩＤは、タスクが実行されるときに割り振られたタスクのＩＤである。
【００９６】
次にエラー監視処理部１３について説明する。エラー監視処理部１３は、メモリエラー等の異常を割り込みで監視しており、異常検出の割り込みが通知されると動作する。また、エラー監視処理において、ＥＣＣマルチビットエラーかどうかを判断し、該当エラーの場合は、プログラムモジュールのテキスト部が破壊されているかどうかを判定し、破壊されている場合は命令コードの修正を行う。
【００９７】
図１９は破壊された命令コードの特定処理を示す図である。図１９では、メモリ２１上にモジュールＡ〜Ｃのテキスト部のデータが展開されている。また、モジュールＡのテキスト部により実行されたタスクがタスク＃１、モジュールＢのテキスト部により実行されたタスクがタスク＃２、＃３、モジュールＣのテキスト部により実行されたタスクがタスク＃４としている。また、この例では、モジュールＢのテキスト部にＥＣＣマルチビットエラーが発生したとし、エラー発生時の動作タスクがタスク＃３であるとする。
【００９８】
〔Ｓ９１〕エラー監視処理部１３は、ＥＣＣマルチビットエラー発生時の動作タスクのタスクＩＤ（タスク＃３）を取得する。
〔Ｓ９２〕エラー監視処理部１３は、取得したタスクＩＤと、タスク生成時に作成したタスク・実行モジュール管理テーブルＴ２とを照らし合わせ、そのときの実行モジュールを特定する。ここでは、実行モジュールはモジュールＢと特定される。
【００９９】
〔Ｓ９３〕エラー監視処理部１３は、該当する実行モジュールのテキスト部先頭から、１ＫＢ範囲毎のチェックサムを計算する。ここでは、モジュールＢのテキスト部のチェックサムを計算する。
【０１００】
〔Ｓ９４〕エラー監視処理部１３は、各ブロック範囲のチェックサムの計算結果と，モジュールローディング処理時に作成したチェックサム管理テーブルＴ１に登録されているモジュールＢのチェックサムとを比較する。
【０１０１】
〔Ｓ９５〕エラー監視処理部１３は、チェックサムが不一致になった範囲をテキスト部（命令コード）が破壊されている範囲と特定する。
図２０は命令コードの修正処理を示す図である。エラー監視処理部１３は、命令コードが破壊されている範囲を特定した後に、ｓｙｓＶＯＬ２２内のコピーデータ管理テーブルＴ３を参照し、コピーデータを使用して命令コードの修正を行う。
【０１０２】
〔Ｓ１０１〕エラー監視処理部１３は、コピーデータ管理テーブルをＴ３参照し、命令コードの修正に使用するデータの格納先（ｓｙｓＶＯＬ２２内のＬＢＡ）を求める。
〔Ｓ１０２〕エラー監視処理部１３は、ｓｙｓＶＯＬ２２内のコピーデータを、メモリ２１内のモジュールテキスト部の命令コードが破壊されている箇所に書き込んで（上書き処理）、命令コードの修正を行う。
【０１０３】
図２１はエラー監視処理部の動作フローを示す図である。
〔Ｓ１１１〕エラー監視処理部１３は、エラー発生時の動作タスクＩＤを取得する。
〔Ｓ１１２〕エラー監視処理部１３は、取得したタスクＩＤを、タスク・実行モジュール管理テーブルＴ２に登録されているタスクＩＤと照合し、実行モジュールのＩＤを求める。
【０１０４】
〔Ｓ１１３〕エラー監視処理部１３は、実行モジュールのＩＤをモジュール管理テーブルＴ０と照合し、該モジュールのテキスト部の先頭アドレスを求める。
〔Ｓ１１４〕エラー監視処理部１３は、テキスト部の先頭アドレスから、１ＫＢ分のチェックサムを新たに計算する。
【０１０５】
〔Ｓ１１５〕エラー監視処理部１３は、ステップＳ１１４で計算したチェックサムと、チェックサム管理テーブルＴ１に登録されている同一モジュールＩＤのチェックサムとを比較する。
【０１０６】
〔Ｓ１１６〕エラー監視処理部１３は、チェックサムが一致するか否かを判断し、一致する場合はステップＳ１１９へ行き、不一致の場合はステップＳ１１７へ行く。
〔Ｓ１１７〕エラー監視処理部１３は、チェックサムを計算した範囲が破壊箇所と特定する。
【０１０７】
〔Ｓ１１８〕エラー監視処理部１３は、命令コードの修正処理を実行する。
〔Ｓ１１９〕エラー監視処理部１３は、該モジュールの全テキスト分に対するチェックサム比較処理が終了したか否かを判断する。終了した場合はステップＳ１２０へ行き、未終了の場合はステップＳ１２１へ行く。
【０１０８】
〔Ｓ１２０〕エラー監視処理部１３は、テキスト部の破壊は無しと判断する。
〔Ｓ１２１〕エラー監視処理部１３は、次の１ＫＢ分のチェックサムを計算する。ステップＳ１１５へ戻る。
【０１０９】
以上説明したように、本技術によれば、ローディング処理したプログラムのブロック毎のチェックサムと、該プログラムの実行中にエラーが発生した際に新たに計算したブロック毎のチェックサムとを比較し、チェックサムが不一致のブロックを検出する。
【０１１０】
そして、ローディング処理したプログラムをコピーしておき、チェックサムが不一致の場合は、チェックサムが不一致であることを特定したブロックに対してコピーデータを上書き処理して、プログラムエラーの自己修正を行う。
【０１１１】
これにより、チェックサムが不一致のブロックを、プログラムのエラー発生箇所として効率よく特定することが可能になる。さらに、エラー箇所を自動修正するので、破壊された命令コードでプログラムが暴走してしまうといった現象を防止することができ、プログラムの正常継続動作が可能になる。
【０１１２】
なお、上記に示した処理機能は、コンピュータによって実現することができる。図２２は、本実施の形態に用いるコンピュータのハードウェアの一構成例を示す図である。コンピュータ１００は、ＣＰＵ１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０８を介してＲＡＭ（Random Access Memory）１０２と複数の周辺機器が接続されている。
【０１１３】
ＲＡＭ１０２は、コンピュータ１００の主記憶装置として使用される。ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。
【０１１４】
バス１０８に接続されている周辺機器としては、ＨＤＤ（Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、および通信インタフェース１０７がある。
【０１１５】
ＨＤＤ１０３は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、コンピュータ１００の二次記憶装置として使用される。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
【０１１６】
グラフィック処理装置１０４には、モニタ１０４ａが接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１０４ａの画面に表示させる。モニタ１０４ａとしては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【０１１７】
入力インタフェース１０５には、キーボード１０５ａとマウス１０５ｂとが接続されている。入力インタフェース１０５は、キーボード１０５ａやマウス１０５ｂから送られてくる信号をＣＰＵ１０１に送信する。なお、マウス１０５ｂは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【０１１８】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク１０６ａに記録されたデータの読み取りを行う。光ディスク１０６ａは、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク１０６ａには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【０１１９】
通信インタフェース１０７は、ネットワーク１１０に接続されている。通信インタフェース１０７は、ネットワーク１１０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【０１２０】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。また、コンピュータで本実施の形態の処理機能を実現する場合、ＣＭ３０が有する機能の処理内容を記述したプログラムが提供される。
【０１２１】
そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。なおプログラムを記録する記録媒体には、一時的な伝搬信号自体は含まれない。
【０１２２】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１２３】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１２４】
また、上記の処理機能の少なくとも一部を、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現することもできる。
【０１２５】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。
【符号の説明】
【０１２６】
１  情報処理装置
１ａ  格納手段
１ｂ  計算手段
１ｃ  検出手段
ｍ１  第１の記憶装置
ｍ２  第２の記憶装置
【図１】
0005842655.tif 000002
【図２】
0005842655.tif 000003
【図３】
0005842655.tif 000004
【図４】
0005842655.tif 000005
【図５】
0005842655.tif 000006
【図６】
0005842655.tif 000007
【図７】
0005842655.tif 000008
【図８】
0005842655.tif 000009
【図９】
0005842655.tif 000010
【図１０】
0005842655.tif 000011
【図１１】
0005842655.tif 000012
【図１２】
0005842655.tif 000013
【図１３】
0005842655.tif 000014
【図１４】
0005842655.tif 000015
【図１５】
0005842655.tif 000016
【図１６】
0005842655.tif 000017
【図１７】
0005842655.tif 000018
【図１８】
0005842655.tif 000019
【図１９】
0005842655.tif 000020
【図２０】
0005842655.tif 000021
【図２１】
0005842655.tif 000022
【図２２】
0005842655.tif 000023