(57)【要約】【課題】  故障した演算処理装置が交換される場合に、同じ手続により演算処理装置間の通信を可能にする。【解決手段】  接続情報に基づいて演算処理装置と記憶装置とがスイッチにより接続され、システムが構築される。記憶部は、演算処理装置をそれぞれ識別する物理情報と、システム内の各演算処理装置を識別する論理情報との対応付けを示す対応付け情報を記憶する。第１の制御部は、対応付け情報に基づいて、送信元および送信先の演算処理装置の論理情報を物理情報に変換して伝送路を介して出力し、伝送路を介して受信する送信元の演算処理装置の物理情報を論理情報に変換する。第２制御部は、演算処理装置の故障の発生に基づいて接続情報を変更し、スイッチを制御して故障した演算処理装置を他の演算処理装置に置き換える。第３制御部は、故障の発生に基づいて記憶部の対応付け情報を書き換える。【選択図】    図１
2014146254.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ演算処理を行う複数の演算処理装置と、
それぞれデータを記憶する複数の記憶装置と、
前記複数の演算処理装置のいずれかと前記複数の記憶装置のいずれかとを、接続情報に基づいて接続してシステムを構築するスイッチ部と、
前記複数の演算処理装置をそれぞれ識別する物理情報と、前記システム内の各演算処理装置を識別する論理情報との対応付けを示す対応付け情報を記憶する記憶部と、
前記複数の演算処理装置に対応してそれぞれ設けられ、対応する演算処理装置が送信先の演算処理装置にデータを送信する場合、前記対応付け情報に基づいて、前記送信先の演算処理装置の論理情報から変換した物理情報と、前記対応する演算処理装置の物理情報とを伝送路を介して出力し、前記対応する演算処理装置が送信元の演算処理装置からデータを受信する場合、前記対応付け情報に基づいて、前記送信元の演算処理装置から前記伝送路を介して受信した前記送信元の演算処理装置の物理情報から変換した論理情報を前記対応する演算処理装置に出力する第１の制御部と、
前記システム内の演算処理装置の故障の発生に基づいて前記接続情報を変更し、前記スイッチ部を制御して前記故障が発生した演算処理装置を前記複数の演算処理装置に含まれる他の演算処理装置に置き換える第２の制御部と、
前記故障の発生に基づいて、前記故障した演算処理装置の物理情報に対応する論理情報を含む対応付け情報を無効にし、前記他の演算処理装置の物理情報と無効にした前記対応付け情報に含まれる論理情報とを対応付ける第３の制御部を有することを特徴とする情報処理装置。
【請求項２】
前記第１の制御部は、
前記対応する演算処理装置から受けるデータと前記送信先の演算処理装置の論理情報とを分離する分離部と、
前記分離部により分離された前記送信先の演算処理装置の論理情報を物理情報に変換する変換部と、
前記変換部の変換により得られた物理情報と前記分離部により分離されたデータとを合成し、合成した情報を前記伝送路を介して出力する合成部を有すること
を特徴とする請求項１記載の情報処理装置。
【請求項３】
前記分離部と前記合成部との間に直列に配置され、前記分離部により分離されたデータをクロックに同期して順次にラッチする第１ラッチおよび第２ラッチと、
前記分離部と前記変換部との間に配置され、前記分離部により分離された前記送信先の演算処理装置の論理情報を前記クロックに同期してラッチする第３ラッチと、
前記変換部と前記合成部との間に配置され、前記変換部の変換により得られた物理情報を前記クロックに同期してラッチする第４ラッチを有し、
前記変換部は、前記クロックの１サイクル内に、前記送信先の演算処理装置の論理情報を物理情報に変換すること
を特徴とする請求項２記載の情報処理装置。
【請求項４】
前記第２の制御部は、前記故障の発生に基づいて、前記故障した演算処理装置と置き換える前記他の演算処理装置を未使用の演算処理装置の中から選択し、選択結果に基づいて前記接続情報を変更する選択部を有し、
前記第３の制御部は、前記選択部により変更された接続情報に基づいて、前記記憶部を書き換えること
を特徴とする請求項１ないし請求項３のいずれか１項記載の情報処理装置。
【請求項５】
前記接続情報に基づいて、未使用の演算処理装置または前記故障が発生した演算処理装置の電源を遮断し、前記システム内で動作させる演算処理装置および記憶装置に電源を供給する第４の制御部を有すること
を特徴とする請求項１ないし請求項４のいずれか１項記載の情報処理装置。
【請求項６】
前記記憶部は、前記複数の演算処理装置の各々に対応して、前記物理情報を格納する領域と、前記システムを識別するシステム情報を格納する領域と、システム情報により識別されるシステム毎に、前記論理情報を格納する領域を有すること
を特徴とする請求項１ないし請求項５のいずれか１項記載の情報処理装置。
【請求項７】
前記システム内の演算処理装置の前記故障を検出する第１の検出部を有し、
前記第２の制御部は、前記第１の検出部による演算処理装置の故障の検出に基づいて前記接続情報を変更すること
を特徴とする請求項１ないし請求項６のいずれか１項記載の情報処理装置。
【請求項８】
前記システム内の記憶装置の故障を検出する第２の検出部を有し、
前記第２の制御部は、前記第２の検出部による記憶装置の故障の検出に基づいて前記接続情報を変更し、前記スイッチ部を制御して故障した記憶装置を前記複数の記憶装置に含まれる他の記憶装置に置き換えること
を特徴とする請求項１ないし請求項７のいずれか１項記載の情報処理装置。
【請求項９】
それぞれ演算処理を行う複数の演算処理装置と、それぞれデータを記憶する複数の記憶装置と、前記複数の演算処理装置のいずれかと前記複数の記憶装置のいずれかとを、接続情報に基づいて接続してシステムを構築するスイッチ部と、前記複数の演算処理装置をそれぞれ識別する物理情報と、前記システム内の各演算処理装置を識別する論理情報との対応付けを示す対応付け情報を記憶する記憶部とを有する情報処理装置の制御方法において、
前記複数の演算処理装置に対応してそれぞれ設けられた第１の制御部が、対応する演算処理装置が送信先の演算処理装置にデータを送信する場合、前記対応付け情報に基づいて、前記送信先の演算処理装置の論理情報から変換した物理情報と、前記対応する演算処理装置の物理情報とを伝送路を介して出力し、
前記対応する演算処理装置が送信元の演算処理装置からデータを受信する場合、前記第１の制御部が、前記対応付け情報に基づいて、前記送信元の演算処理装置から前記伝送路を介して受信した前記送信元の演算処理装置の物理情報から変換した論理情報を前記対応する演算処理装置に出力し、
前記情報処理装置に含まれる第２の制御部が、前記システム内の演算処理装置の故障の発生に基づいて前記接続情報を変更し、前記スイッチ部を制御して前記故障が発生した演算処理装置を前記複数の演算処理装置に含まれる他の演算処理装置に置き換え、
前記情報処理装置に含まれる第３の制御部が、前記故障の発生に基づいて、前記故障した演算処理装置の物理情報に対応する論理情報を含む対応付け情報を無効にし、前記他の演算処理装置の物理情報と無効にした前記対応付け情報に含まれる論理情報とを対応付けることを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および情報処理装置の制御方法に関する。
【背景技術】
【０００２】
ＣＰＵ（Central Processing Unit）等の複数の演算処理装置が搭載されるシステムにおいて、いずれか一の演算処理装置の故障を検出し、他の演算処理装置に置き換える手法が提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−３１８８８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
故障した演算処理装置を他の演算処理装置に置き換える場合、演算処理装置の物理的な接続が変更される。このため、システムは、例えば、各演算処理装置に固有に割り当てた番号等の情報を変更し、変更した情報を各演算処理装置に認識させ、演算処理装置の置き換え後の演算処理装置間での通信を可能にする。すなわち、故障した演算処理装置が他の演算処理装置に置き換えられる場合、システム内の各演算処理装置に設定された情報は更新される。
【０００５】
１つの側面では、本発明の目的は、故障した演算処理装置が交換される場合にも、システム内の各演算処理装置に設定された情報を更新することなく、演算処理装置の交換の前後で、同じ手続により演算処理装置間の通信を可能にすることである。
【課題を解決するための手段】
【０００６】
本発明の一形態では、情報処理装置は、それぞれ演算処理を行う複数の演算処理装置と、それぞれデータを記憶する複数の記憶装置と、複数の演算処理装置のいずれかと複数の記憶装置のいずれかとを、接続情報に基づいて接続してシステムを構築するスイッチ部と、複数の演算処理装置をそれぞれ識別する物理情報と、システム内の各演算処理装置を識別する論理情報との対応付けを示す対応付け情報を記憶する記憶部と、複数の演算処理装置に対応してそれぞれ設けられ、対応する演算処理装置が送信先の演算処理装置にデータを送信する場合、対応付け情報に基づいて、送信先の演算処理装置の論理情報から変換した物理情報と、対応する演算処理装置の物理情報とを伝送路を介して出力し、対応する演算処理装置が送信元の演算処理装置からデータを受信する場合、対応付け情報に基づいて、送信元の演算処理装置から伝送路を介して受信した送信元の演算処理装置の物理情報から変換した論理情報を対応する演算処理装置に出力する第１の制御部と、システム内の演算処理装置の故障の発生に基づいて接続情報を変更し、スイッチ部を制御して故障が発生した演算処理装置を複数の演算処理装置に含まれる他の演算処理装置に置き換える第２の制御部と、故障の発生に基づいて、故障した演算処理装置の物理情報に対応する論理情報を含む対応付け情報を無効にし、他の演算処理装置の物理情報と無効にした対応付け情報に含まれる論理情報とを対応付ける第３の制御部を有する。
【０００７】
本発明の別の形態では、それぞれ演算処理を行う複数の演算処理装置と、それぞれデータを記憶する複数の記憶装置と、複数の演算処理装置のいずれかと複数の記憶装置のいずれかとを、接続情報に基づいて接続してシステムを構築するスイッチ部と、複数の演算処理装置をそれぞれ識別する物理情報と、システム内の各演算処理装置を識別する論理情報との対応付けを示す対応付け情報を記憶する記憶部とを有する情報処理装置の制御方法において、複数の演算処理装置に対応してそれぞれ設けられた第１の制御部が、対応する演算処理装置が送信先の演算処理装置にデータを送信する場合、対応付け情報に基づいて、送信先の演算処理装置の論理情報から変換した物理情報と、対応する演算処理装置の物理情報とを伝送路を介して出力し、対応する演算処理装置が送信元の演算処理装置からデータを受信する場合、第１の制御部が、対応付け情報に基づいて、送信元の演算処理装置から伝送路を介して受信した送信元の演算処理装置の物理情報から変換した論理情報を対応する演算処理装置に出力し、情報処理装置に含まれる第２の制御部が、システム内の演算処理装置の故障の発生に基づいて接続情報を変更し、スイッチ部を制御して故障が発生した演算処理装置を複数の演算処理装置に含まれる他の演算処理装置に置き換え、情報処理装置に含まれる第３の制御部が、故障の発生に基づいて、故障した演算処理装置の物理情報に対応する論理情報を含む対応付け情報を無効にし、他の演算処理装置の物理情報と無効にした対応情報に含まれる論理情報とを対応付ける。
【発明の効果】
【０００８】
故障した演算処理装置が交換される場合にも、システム内の各演算処理装置に設定された情報を更新することなく、演算処理装置の交換の前後で、同じ手続により演算処理装置間の通信が可能になる。
【図面の簡単な説明】
【０００９】
【図１】一実施形態における情報処理装置の例を示す。
【図２】図１に示した情報処理装置において、故障したＣＰＵを未使用のＣＰＵに交換する例を示す。
【図３】他の実施形態における情報処理装置の例を示す。
【図４】図３に示したＣＰＵ制御部とメモリ制御部の例を示す。
【図５】図４に示した構成制御部の例を示す。
【図６】図５に示したマップ情報テーブルの例を示す。
【図７】図４に示した設定テーブルの例を示す。
【図８】図３に示したクロスバースイッチの例を示す。
【図９】図４に示したレジスタＩ／Ｆのレジスタ部の例を示す。
【図１０】図４に示した仮想化部の例を示す。
【図１１】図１０に示したアドレス変換テーブルの例を示す。
【図１２】図４に示したＣＰＵ監視部の例を示す。
【図１３】図１２に示したＣＰＵ監視部の動作の例を示す。
【図１４】図３に示した情報処理装置において、故障したＣＰＵを未使用のＣＰＵに置き換える例を示す。
【図１５】図３に示した情報処理装置において、故障したＣＰＵを未使用のＣＰＵに置き換える前後でのＣＰＵ制御部の動作の例を示す。
【図１６】図３に示した情報処理装置において、故障したＣＰＵを未使用のＣＰＵに置き換える前後でのＣＰＵ制御部の動作の他の例を示す。
【図１７】図３に示した情報処理装置において、故障したメモリを未使用のメモリに置き換える例を示す。
【図１８】図３に示したＣＰＵの電源投入時の動作の例を示す。
【図１９】図５に示した構成制御部の動作の例を示す。
【発明を実施するための形態】
【００１０】
以下、図面を用いて実施形態を説明する。
【００１１】
図１は、一実施形態における情報処理装置の例を示す。情報処理装置１０００は、ＣＰＵ（ＣＰＵ０、ＣＰＵ１、ＣＰＵ２）、メモリＭＥＭ（ＭＥＭ０、ＭＥＭ１、ＭＥＭ２）、スイッチ部ＳＷ、テーブルＴＢＬおよび制御部ＣＮＴ１（ＣＮＴ１０、ＣＮＴ１１、ＣＮＴ１２）、ＣＮＴ２、ＣＮＴ３を有する。ＣＰＵは、演算処理を行う演算処理装置の一例であり、メモリＭＥＭは、データを記憶する記憶装置の一例である。制御部ＣＮＴ１は、第１の制御部の一例であり、制御部ＣＮＴ２は、第２の制御部の一例であり、制御部ＣＮＴ３は、第３の制御部の一例である。例えば、ＣＰＵは、汎用のＣＰＵであり、メモリＭＥＭは、汎用のメモリである。
【００１２】
スイッチ部ＳＷは、ＣＰＵ０−ＣＰＵ２の少なくとも１つと、メモリＭＥＭ０−ＭＥＭ２の少なくとも１つとを接続情報に基づいて接続し、システムを構築する。接続仕様は、ＣＰＵとメモリＭＥＭとをどのように接続するかを示す情報である。図１では、スイッチ部ＳＷ内に破線で示すように、接続仕様に基づいて、ＣＰＵ１、ＣＰＵ２が、スイッチ部ＳＷを介してメモリＭＥＭ１に接続され、ＣＰＵ１−ＣＰＵ２およびメモリＭＥＭ１によりコンピュータシステムＳＹＳが構築される。
【００１３】
各ＣＰＵには、情報処理装置１０００内での固有の番号である物理番号Ｐ＃（＃は、０、１、２のいずれか）が割り当てられる。また、コンピュータシステムＳＹＳ内の各ＣＰＵ１、ＣＰＵ２には、仮想の番号である論理番号Ｌ＃（＃は、０、１のいずれか）が割り当てられる。物理番号Ｐ＃は、情報処理装置１０００内のＣＰＵを識別する物理情報の一例であり、論理番号Ｌ＃は、コンピュータシステムＳＹＳ内のＣＰＵを識別する論理情報の一例である。図１において、ＣＰＵ０内に示した”−”は、ＣＰＵ０が未使用であり、情報処理装置１０００内に含まれるが、コンピュータシステムＳＹＳに含まれないことを示す。
【００１４】
テーブルＴＢＬは、ＣＰＵ０−ＣＰＵ２にそれぞれ割り当てられた物理番号Ｐ０、Ｐ１、Ｐ２と、コンピュータシステムＳＹＳ内のＣＰＵ１、ＣＰＵ２に割り当てられた論理番号Ｌ０、Ｌ１を対応付ける対応付け情報を記憶する。テーブルは、物理番号Ｐ＃と論理番号Ｌ＃との対応付けを対応付け情報として記憶する記憶部の一例である。例えば、テーブルＴＢＬは、ＤＲＡＭ（Dynamic Random Access Memory）またはＳＲＡＭ（Static Random Access Memory）等のメモリ装置に記憶される。なお、接続情報は、テーブルＴＢＬを記憶する記憶装置内に、テーブルとして記憶されてもよい。
【００１５】
制御部ＣＮＴ１０−ＣＮＴ１２は、各ＣＰＵ０−ＣＰＵ２に対応してそれぞれ設けられる。各制御部ＣＮＴ１０−ＣＮＴ１２は、コンピュータシステムＳＹＳに含まれるＣＰＵ間での通信において、論理番号Ｌ＃および物理番号Ｐ＃の相互の変換を実行する。
【００１６】
例えば、ＣＰＵ１からＣＰＵ２にデータを送信する場合、送信元のＣＰＵ１は、送信先のＣＰＵ２を示す論理番号Ｌ１をデータとともに制御部ＣＮＴ１１に出力する。制御部ＣＮＴ１１は、テーブルＴＢＬに記憶された物理番号Ｐ＃と論理番号Ｌ＃との対応付けに基づいて、送信先を示す論理番号Ｌ１を物理番号Ｐ２に変換し、変換した物理番号Ｐ２を送信元のＣＰＵ１を示す物理番号Ｐ１とともに内部バスＩＢＵＳに出力する。内部バスＩＢＵＳは、伝送路の一例である。
【００１７】
送信先のＣＰＵ２に対応する制御部ＣＮＴ１２は、内部バスＩＢＵＳを介して、送信元のＣＰＵ１を示す物理番号Ｐ１と、送信先のＣＰＵ２を示す物理番号Ｐ２とを受信する。なお、制御部ＣＮＴ１２は、送信先の物理番号Ｐ＃がＰ０またはＰ１の場合、伝送路ＩＢＵＳに伝送される情報は受信しない。
【００１８】
制御部ＣＮＴ１２は、テーブルＴＢＬに記憶された物理番号Ｐ＃と論理番号Ｌ＃との対応付けに基づいて、送信元を示す物理番号Ｐ１を論理番号Ｌ０に変換し、変換した論理番号Ｌ０をＣＰＵ２に出力する。ＣＰＵ２は、論理番号Ｌ０が割り当てられたＣＰＵ（この例では、ＣＰＵ１）からのデータを受信したことを認識し、受信したデータを用いてデータ処理を実行する。
【００１９】
なお、各制御部ＣＮＴ１０−ＣＮＴ１２が、受信したデータおよび送信元を示す論理番号Ｌ＃を保持するレジスタやバッファ等の記憶部を有する場合、ＣＰＵ２は、制御部ＣＮＴ１２が保持したデータおよび論理番号Ｌ＃を読み出してもよい。この場合、例えば、制御部ＣＮＴ１２は、データの受信に基づいて、記憶部の所定のビットにデータの受信を示す情報を書き込む。ＣＰＵ２は、制御部ＣＮＴ１２の記憶部の所定のビットをポーリングすることで、データの受信を知ることができる。
【００２０】
なお、ＣＰＵ間で通信されるデータは、制御部ＣＮＴ１０−ＣＮＴ１２および内部バスＩＢＵＳを介して伝送されてもよく、制御部ＣＮＴ１０−ＣＮＴ１２を介さずに、内部バスＩＢＵＳを介して伝送されてもよい。
【００２１】
一方、ＣＰＵ２からＣＰＵ１に情報を送信する場合、上述と同様に、送信元のＣＰＵ２は、送信先のＣＰＵ１を示す論理番号Ｌ０を制御部ＣＮＴ１２に出力する。制御部ＣＮＴ１２は、テーブルＴＢＬに記憶された情報に基づいて、論理番号Ｌ０を物理番号Ｐ１に変換し、変換した物理番号Ｐ１を送信元のＣＰＵ２を示す物理番号Ｐ２とともに伝送路ＩＢＵＳに出力する。
【００２２】
制御部ＣＮＴ１１は、送信先を示す物理番号Ｐ１と送信元を示す物理番号Ｐ２とを伝送路ＩＢＵＳを介して受信する。なお、制御部ＣＮＴ１１は、送信先の物理番号Ｐ＃がＰ０またはＰ２の場合、伝送路ＩＢＵＳに伝送される情報は受信しない。
【００２３】
制御部ＣＮＴ１１は、テーブルＴＢＬに記憶された情報に基づいて、送信元を示す物理番号Ｐ２を論理番号Ｌ１に変換し、変換した論理番号Ｌ１をＣＰＵ１に出力する。ＣＰＵ１は、論理番号Ｌ１が割り当てられたＣＰＵ（この例では、ＣＰＵ２）からのデータを受信したことを認識し、受信したデータを用いてデータ処理を実行する。
【００２４】
一方、制御部ＣＮＴ２は、コンピュータシステムＳＹＳ内のＣＰＵ１（またはＣＰＵ２）の故障の発生が検出されたことに基づいて、接続情報を変更する。接続情報の変更により、スイッチ部ＳＷは、故障したＣＰＵ１（またはＣＰＵ２）とメモリＭＥＭ１との接続を解除し、例えば、未使用のＣＰＵ０をメモリＭＥＭ１に接続する。これにより、故障したＣＰＵ１（またはＣＰＵ２）は、他のＣＰＵ（例えば、ＣＰＵ０）に置き換えられる。すなわち、制御部ＣＮＴ２は、変更した接続情報に基づいてスイッチ部ＳＷを制御して、故障したＣＰＵを他のＣＰＵに置き換える。なお、ＣＰＵの故障は、ＣＰＵからの情報に基づいて、制御部ＣＮＴ２により検出されてもよく、ＣＰＵの故障を検出する検出部により検出されてもよい。制御部ＣＮＴ３の機能および動作の例は、図２で説明する。
【００２５】
図２は、図１に示した情報処理装置１０００において、故障したＣＰＵ２を未使用のＣＰＵ０に交換する例を示す。
【００２６】
制御部ＣＮＴ２は、図１で説明したように、接続情報の変更に基づいてスイッチ部ＳＷを制御し、故障したＣＰＵ２とメモリＭＥＭ１との接続を解除し、未使用のＣＰＵ０をメモリＭＥＭ１に接続する。これにより、故障したＣＰＵ２は、他のＣＰＵ０に置き換えられ、新たな接続関係を有するコンピュータシステムＳＹＳが構築される。
【００２７】
制御部ＣＮＴ３は、コンピュータシステムＳＹＳ内のＣＰＵ１（またはＣＰＵ２）の故障の発生に基づいて変更された接続情報に合わせてテーブルＴＢＬを書き換える。例えば、ＣＰＵ２が故障した場合、制御部ＣＮＴ３は、ＣＰＵ２を示す物理番号Ｐ２に対応する論理番号Ｌ＃（この例では、Ｌ１）を無効にし、ＣＰＵ０を示す物理番号Ｐ０に対応する論理番号の領域に無効にした論理番号Ｌ＃（この例では、Ｌ１）を書き込む。すなわち、制御部ＣＮＴ３は、故障したＣＰＵ２に割り当てられた物理番号Ｐ２と論理番号Ｌ０との対応付けとを示す対応付け情報を無効にし、ＣＰＵ０に割り当てられた物理番号Ｐ０に、故障したＣＰＵ２に割り当てられた論理番号Ｌ０を対応付ける。
【００２８】
これにより、ＣＰＵ２の故障前に、論理番号Ｌ０、Ｌ１に対応するＣＰＵ１、ＣＰＵ２間で実行された通信は、ＣＰＵ２の故障後にも、論理番号Ｌ０、Ｌ１を変えることなく、ＣＰＵ１、ＣＰＵ２間で実行可能である。すなわち、この実施形態では、コンピュータシステムＳＹＳ内のＣＰＵ間の通信で、物理番号Ｐ＃を使用しないため、故障によるＣＰＵの交換の前後で、コンピュータシステムＳＹＳ内のＣＰＵの設定を維持できる。例えば、ＣＰＵにより実行されるプログラムは、変更されることなく継続して実行可能であり、ＣＰＵの交換の前後で、同じ手続によりＣＰＵ間の通信が可能である。
【００２９】
したがって、情報処理装置１０００において、外部からの制御や操作を伴うことなく、故障したＣＰＵを自動的に未使用のＣＰＵに置き換え可能にでき、情報処理装置１０００の信頼性を従来に比べて向上できる。情報処理装置１０００は、メンテナンスフリーな組み込みシステム（Embedded system）として動作可能になるため、例えば、人手によるメンテナンスが困難な海底や山奥あるいは宇宙に設置可能になる。さらに、故障したＣＰＵを自動的に未使用のＣＰＵに置き換えできるため、汎用のＣＰＵを用いる場合にも、情報処理装置１０００の信頼性を従来に比べて向上できる。
【００３０】
図３は、他の実施形態における情報処理装置の例を示す。図１に示した実施形態で説明した要素と同様または同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。
【００３１】
例えば、この実施形態の情報処理装置１１００は、複数のＣＰＵと、複数のメモリＭＥＭと、ＣＰＵおよびメモリＭＥＭを制御するシステム制御装置１００とを有する。情報処理装置１１００は、ＣＰＵがプログラムを実行することでシステムとして動作する。例えば、情報処理装置１１００は、ｎ＋１個（ｎ：正の整数）のＣＰＵ（ＣＰＵ０、ＣＰＵ１、ＣＰＵ２、...、ＣＰＵｎ）と、ｍ＋１個（正の整数）のメモリＭＥＭ（ＭＥＭ０、ＭＥＭ１、ＭＥＭ２、...、ＭＥＭｍ）とを有する。
【００３２】
例えば、ＣＰＵは、汎用のＣＰＵであり、メモリＭＥＭは、フラッシュメモリ、強誘電体メモリ、ＤＲＡＭ、またはＳＲＡＭ等の汎用のメモリである。フラッシュメモリまたは強誘電体メモリ等の書き換え可能な不揮発性メモリがメモリＭＥＭとして採用される場合、情報処理装置１１００が起動される前に、ＣＰＵが実行するプログラムをメモリＭＥＭに格納することが可能になる。一方、ＤＲＡＭやＳＲＡＭがメモリＭＥＭとして採用される場合、情報処理装置１１００は、ＣＰＵが実行するプログラムを予め格納するＲＯＭ（Read Only Memory）を有してもよい。この場合、情報処理装置１１００の起動時のイニシャルシーケンスにおいて、システム制御装置１００は、ＲＯＭからメモリＭＥＭの少なくともいずれかにプログラムを転送する。
【００３３】
書き換え可能な不揮発性メモリを使用し、あるいは、ＤＲＡＭやＳＲＡＭをＲＯＭと組み合わせて使用することより、情報処理装置１１００は、メンテナンスフリーな組み込みシステムとして動作可能になる。これにより、人手によるメンテナンスが困難な海底や山奥あるいは宇宙に設置可能になる。例えば、情報処理装置１１００は、海底に設置される各種センサの制御、通信機器の基地局や放送設備の中継装置、人工衛星や無人偵察機に搭載される各種センサの制御に使用される。すなわち、情報処理装置１１００は、図３に示した以外にも、各種センサやカメラなどの入力デバイスとそのインタフェースを含んでもよい。
【００３４】
例えば、ＣＰＵ０−ＣＰＵｎ、メモリＭＥＭ０−ＭＥＭｍおよびシステム制御装置１００は、それぞれ個別の半導体チップであり、情報処理装置１１００は、これ等半導体チップが搭載された基板を有する。なお、情報処理装置１１００は、複数のプロセッサコアが搭載されたマルチコアタイプの半導体チップを用いてもよく、複数のメモリＭＥＭが搭載された半導体チップを用いてもよい。また、情報処理装置１１００は、ＣＰＵの代わりに、プログラムを実行することで動作するＤＳＰ（Digital Signal Processor）やＧＰＵ（Graphics Processing Unit）等のプロセッサを有してもよい。
【００３５】
システム制御装置１００は、ＣＰＵにそれぞれ接続された複数のＣＰＵ制御部２００、メモリＭＥＭにそれぞれ接続された複数のメモリ制御部３００、構成制御部４００、設定テーブル５００、スイッチ制御部６００およびクロスバースイッチ７００を有する。クロスバースイッチ７００は、ＣＰＵの少なくとも１つとメモリＭＥＭの少なくとも１つとを接続することで、少なくとも１つのコンピュータシステムを構築するスイッチ部の一例である。
【００３６】
各ＣＰＵ制御部２００は、対応するＣＰＵと、クロスバースイッチ７００を介して接続されたメモリＭＥＭとの間で授受されるデータ等の情報を制御する。また、各ＣＰＵ制御部２００は、内部バスＩＢＵＳを介してＣＰＵ間で授受されるデータ等の情報を制御するとともに、対応するＣＰＵの動作を監視してＣＰＵの故障を検出する。ＣＰＵ制御部２００の例は、図４に示す。
【００３７】
各メモリ制御部３００は、対応するメモリＭＥＭのアクセスを制御するとともに、対応するメモリＭＥＭの動作を監視して、メモリＭＥＭの故障を検出する。メモリ制御部３００の例は、図４に示す。
【００３８】
構成制御部４００は、動作中のコンピュータシステムにおいて、故障したＣＰＵを予備のＣＰＵに置き換える機能と、故障したメモリＭＥＭを予備のメモリＭＥＭに置き換える機能とを有する。例えば、構成制御部４００は、ＣＰＵ等のプロセッサを有し、プロセッサが制御プログラムを実行することにより、故障したＣＰＵを予備のＣＰＵに置き換える機能と、故障したメモリＭＥＭを予備のメモリＭＥＭに置き換える機能とを実現する。
【００３９】
構成制御部４００は、ＣＰＵ制御部２００からＣＰＵの故障を示すＣＰＵエラー情報を受信し、メモリ制御部３００からメモリＭＥＭの故障を示すメモリエラー情報を受信する。構成制御部４００は、ＣＰＵエラー情報またはメモリエラー情報に基づいて、マップ情報テーブル４０８を書き換える。これにより、故障したＣＰＵは、予備のＣＰＵに置き換えられ、故障したメモリＭＥＭは予備のメモリＭＥＭに置き換えられる。例えば、マップ情報テーブル４０８の内容は、システム制御装置１００に搭載されるメモリ装置に格納される。
【００４０】
さらに、構成制御部４００は、更新したマップ情報テーブル４０８に基づいて、ＣＰＵ制御部２００を制御するとともに、ＣＰＵおよびメモリＭＥＭへの電源の供給を制御する。例えば、構成制御部４００は、各ＣＰＵの電源の供給と遮断とを制御する制御情報ＣＰＵＰＷＲを各ＣＰＵに出力し、各メモリＭＥＭの電源の供給と遮断とを制御する制御情報ＭＥＭＰＷＲを各メモリＭＥＭに出力する。構成制御部４００の例は、図５に示す。
【００４１】
設定テーブル５００は、構成制御部４００により書き換え可能であり、構成制御部４００から出力されるマップ情報を記憶する。マップ情報は、コンピュータシステムとして動作させるＣＰＵとメモリＭＥＭとの接続仕様を示す。例えば、設定テーブル５００の内容は、システム制御装置１００に搭載されるメモリ装置内に格納される。
【００４２】
スイッチ制御部６００は、設定テーブル５００に設定されたマップ情報に基づいて、クロスバースイッチ７００を切り替えて、ＣＰＵの少なくとも１つとメモリＭＥＭの少なくとも１つとを接続する。クロスバースイッチ７００の例は、図８に示す。
【００４３】
図４は、図３に示したＣＰＵ制御部２００とメモリ制御部３００の例を示す。図４では、説明を簡単にするために、１つのＣＰＵに接続されたＣＰＵ制御部２００と、１つのメモリＭＥＭに接続されたメモリ制御部３００とを示す。他のＣＰＵに接続されたＣＰＵ制御部２００および他のメモリＭＥＭに接続されたメモリ制御部３００も図４と同一または同様である。
【００４４】
ＣＰＵ制御部２００は、メモリＩ／Ｆ（InterFace）２２０、レジスタＩ／Ｆ２４０、ＣＰＵ監視部２６０および内部バスＩＢＵＳに接続された仮想化部２８０を有する。
【００４５】
メモリＩ／Ｆ２２０は、例えば、ＣＰＵから出力されるメモリＭＥＭのアクセス用のアドレス、制御信号および書き込みデータを受信し、受信したアドレス、制御信号および書き込みデータをクロスバースイッチ７００に出力する。また、メモリＩ／Ｆ２２０は、例えば、クロスバースイッチ７００を介してメモリＭＥＭから供給される読み出しデータを受信し、受信した読み出しデータをＣＰＵに出力する。
【００４６】
レジスタＩ／Ｆ２４０は、例えば、対応するＣＰＵと他のＣＰＵとの間での通信に使用されるレジスタＲＥＧを有する。レジスタＲＥＧは、対応するＣＰＵから出力される送信データおよび送信先のＣＰＵを示す情報と、他のＣＰＵ（送信元のＣＰＵ）から出力される受信データおよび他のＣＰＵを示す情報とを記憶する領域を有する。また、レジスタＲＥＧは、ＣＰＵおよびＣＰＵ監視部２６０によりアクセスされ、ＣＰＵの故障の検出に使用されるモニタビットと、ＣＰＵの起動原因を示す理由ビットとを有する。レジスタＲＥＧの例は、図９に示す。
【００４７】
ＣＰＵ監視部２６０は、レジスタＲＥＧのモニタビットの値に基づいてＣＰＵの故障を検出した場合に、ＣＰＵの故障を示す故障情報ＣＰＵＦＡＩＬを構成制御部４００に出力する。ＣＰＵ監視部２６０は、ＣＰＵに対応してそれぞれ設けられ、対応するＣＰＵの故障を検出する。これにより、複数のＣＰＵの故障を共通のＣＰＵ監視部により検出する場合に比べて、ＣＰＵの故障を迅速に検出でき、ＣＰＵの故障の発生からＣＰＵの置き換えまでの時間を短縮できる。この結果、ＣＰＵの置き換えに伴うコンピュータシステムの性能の低下を、複数のＣＰＵの故障を共通のＣＰＵ監視部により検出する場合に比べて軽減できる。ＣＰＵ監視部２６０は、コンピュータシステム内のＣＰＵの故障を検出する第１の検出部の一例である。ＣＰＵ監視部２６０の例は、図１２に示す。
【００４８】
仮想化部２８０は、レジスタＲＥＧから受信する送信先のＣＰＵを示す論理情報を、構成制御部４００により設定されたシステム仕様に基づいて物理情報に変換する機能を有する。例えば、仮想化部２８０は、構成制御部４００により設定されるアドレス変換テーブル２８６を有する。仮想化部２８０は、変換された送信先のＣＰＵを示す物理情報を、レジスタＲＥＧに格納された送信データとともに内部バスＩＢＵＳに出力する機能を有する。例えば、アドレス変換テーブル２８６の内容は、システム制御装置１００に搭載されるメモリ装置内に格納される。なお、アドレス変換テーブル２８６の内容、マップ情報テーブル４０８の内容および設定テーブル５００の内容は、システム制御装置１００に搭載される共通のメモリ装置に格納されてもよい。
【００４９】
仮想化部２８０は、対応するＣＰＵがコンピュータシステム内の送信先のＣＰＵにデータを送信する場合、アドレス変換テーブル２８６に記憶された情報に基づいて、対応するＣＰＵが指示する送信先のＣＰＵを示す論理情報を物理情報に変換する。なお、送信先のＣＰＵの論理情報および送信データは、対応するＣＰＵがレジスタＲＥＧに書き込む。仮想化部２８０は、変換により得られた送信先のＣＰＵを示す物理情報と、対応するＣＰＵを示す物理情報とを内部バスＩＢＵＳに出力する。
【００５０】
また、仮想化部２８０は、対応するＣＰＵがコンピュータシステム内の送信元のＣＰＵからデータを受信する場合、アドレス変換テーブル２８６の情報に基づいて、内部バスＩＢＵＳを介して受信する送信元のＣＰＵを示す物理情報を論理情報に変換する。そして、仮想化部２８０は、変換により得られた論理情報を、受信データとともにレジスタＲＥＧに書き込む。レジスタＲＥＧに書き込まれた送信元のＣＰＵを示す論理情報および受信データは、対応するＣＰＵにより読み出される。
【００５１】
仮想化部２８０の上記動作により、故障したＣＰＵが他のＣＰＵに置き換えられる場合にも、送信データは、正しいＣＰＵに送られ、受信データは、正しいＣＰＵで受信される。仮想化部２８０は、第１の制御部の一例である。仮想化部２８０の例は、図１０に示す。
【００５２】
メモリ制御部３００は、メモリＩ／Ｆ３２０、エラー検出訂正部３４０およびメモリ監視部３６０を有する。
【００５３】
メモリＩ／Ｆ３２０は、例えば、クロスバースイッチ７００を介してＣＰＵから供給されるアドレス、制御信号および書き込みデータを、メモリＭＥＭのインタフェース仕様に合わせてメモリＭＥＭに出力する。また、メモリＩ／Ｆ３２０は、例えば、メモリＭＥＭから出力される読み出しデータを受信し、受信した読み出しデータを、クロスバースイッチ７００を介してＣＰＵ制御部２００のメモリＩ／Ｆ２２０に出力する。
【００５４】
エラー検出訂正部３４０は、メモリＭＥＭに書き込むデータを用いてエラー検出・訂正用の符号を生成する。生成された符号は、メモリＩ／Ｆ３２０を介して書き込みデータとともにメモリＭＥＭに書き込まれる。また、エラー検出訂正部３４０は、メモリＩ／Ｆ３２０を介してメモリＭＥＭから読み出される読み出しデータおよび符号を用いて、読み出しデータのエラーを検出し、訂正可能なエラーを訂正する。エラー検出訂正部３４０は、エラーを訂正した場合にエラー訂正情報をメモリ監視部３６０に出力し、訂正不可能なエラーを検出した場合にエラー検出情報をメモリ監視部３６０に出力する。
【００５５】
メモリ監視部３６０は、エラー検出訂正部３４０から所定の回数のエラー訂正情報を受信した場合に、エラーの訂正可能な故障がメモリＭＥＭに発生したことを示す故障情報ＭＥＭＦＡＩＬを構成制御部４００に出力する。なお、エラー訂正情報の出力回数を示す上記所定の回数は、メモリＭＥＭの全ての記憶領域におけるエラーの訂正回数でもよく、メモリＭＥＭの所定の記憶領域毎におけるエラーの訂正回数でもよい。また、メモリ監視部３６０は、エラー検出訂正部３４０からエラー検出情報を受信した場合に、エラーの訂正が困難な故障がメモリＭＥＭに発生したことを示す故障情報ＭＥＭＦＡＩＬを構成制御部４００に出力する。メモリ監視部３６０は、コンピュータシステム内のメモリＭＥＭの故障を検出する第２の検出部の一例である。
【００５６】
メモリ監視部３６０は、メモリＭＥＭに対応してそれぞれ設けられ、対応するメモリＭＥＭの故障を検出する。これにより、複数のメモリＭＥＭの故障を共通のメモリ監視部により検出する場合に比べて、メモリＭＥＭの故障を迅速に検出でき、メモリＭＥＭの故障の発生からメモリＭＥＭの置き換えまでの時間を短縮できる。この結果、メモリＭＥＭの置き換えに伴うコンピュータシステムの性能の低下を、複数のメモリＭＥＭの故障を共通のメモリ監視部により検出する場合に比べて軽減できる。
【００５７】
図５は、図４に示した構成制御部４００の例を示す。構成制御部４００は、故障受信部４０２、マップ制御部４０４、マップ決定部４０６、マップ情報テーブル４０８、書き換え部４１０、４１２および電源制御部４１４を有する。例えば、故障受信部４０２は、構成制御部４００に内蔵されるプロセッサの割り込み機能を用いて実現され、マップ制御部４０４、マップ決定部４０６および書き換え部４１０、４１２は、プロセッサが実行する制御プログラムにより実現される。なお、電源制御部４１４は、第４の制御部の一例であり、構成制御部４００の外部に配置されてもよい。
【００５８】
例えば、書き換え部４１０は、システム制御装置１００のアドレス空間上に割り当てられた設定テーブル５００（図７）にメモリアクセスする構成制御部４００に内蔵されるプロセッサにより実現される。例えば、書き換え部４１２は、システム制御装置１００のアドレス空間上に割り当てられたアドレス変換テーブル２８６（図１１）にメモリアクセスする構成制御部４００に内蔵されるプロセッサにより実現される。例えば、電源制御部４１４は、構成制御部４００に内蔵されるプロセッサのＩ／Ｏ機能を用いて実現される。例えば、マップ情報テーブル４０８の内容は、構成制御部４００に内蔵されるプロセッサの内蔵メモリに格納される。
【００５９】
故障受信部４０２は、複数のＣＰＵ監視部２６０からの故障情報ＣＰＵＦＡＩＬを受信し、受信した故障情報ＣＰＵＦＡＩＬをマップ制御部４０４およびマップ決定部４０６に通知する。また、故障受信部４０２は、複数のメモリ監視部３６０からの故障情報ＭＥＭＦＡＩＬを受信し、受信した故障情報ＭＥＭＦＡＩＬをマップ制御部４０４およびマップ決定部４０６に通知する。
【００６０】
マップ制御部４０４は、故障情報ＣＰＵＦＡＩＬ、ＭＥＭＦＡＩＬの受信に基づいて、マップ決定部４０６を動作させる起動情報ＳＴを出力し、マップ決定部４０６からのマップ情報ＮＥＷＭＡＰを待つ。マップ制御部４０４は、マップ決定部４０６が求めたマップ情報ＮＥＷＭＡＰに基づいて、更新情報ＵＰＤをマップ情報テーブル４０８に出力し、マップ情報テーブル４０８を更新する。マップ情報テーブル４０８の例は、図６に示す。
【００６１】
また、マップ制御部４０４は、マップ情報テーブル４０８を更新した後、更新したマップ情報テーブル４０８に合わせて設定テーブル５００を書き換える指示を書き換え部４１０に出力する。マップ制御部４０４は、マップ情報テーブル４０８を更新した後、更新したマップ情報テーブル４０８に合わせてアドレス変換テーブル２８６を書き換える指示を書き換え部４１２に出力する。さらに、マップ制御部４０４は、マップ情報テーブル４０８を更新した後、各ＣＰＵの電源の投入、遮断を制御する指示と、各メモリＭＥＭの電源の投入、遮断を制御する指示を電源制御部４１４に出力する。
【００６２】
マップ決定部４０６は、故障情報ＣＰＵＦＡＩＬ、ＭＥＭＦＡＩＬおよび起動情報ＳＴに基づいて、マップ情報テーブル４０８に設定されたマップ情報を読み出し、新たなマップ情報ＮＥＷＭＡＰを作成する。すなわち、故障したＣＰＵを未使用のＣＰＵのいずれに置き換えるかを決定し、あるいは故障したメモリＭＥＭを未使用のメモリＭＥＭのいずれに置き換えるかを決定し、決定した情報をマップ情報ＮＥＷＭＡＰとしてマップ制御部４０４に出力する。
【００６３】
この実施形態では、マップ決定部４０６は、故障したＣＰＵの代わりに使用するＣＰＵを決定する機能と、故障したメモリＭＥＭの代わりに使用するメモリＭＥＭを決定する機能とを有する。マップ制御部４０４は、マップ決定部４０６による決定内容に基づいて、マップ情報テーブル４０８、設定テーブル５００およびアドレス変換テーブル２８６の書き換えを制御する機能を有する。機能毎に分けてマップ決定部４０６とマップ制御部４０４とを設計することで、マップ決定部４０６とマップ制御部４０４とを纏めて設計する場合に比べて、各回路ブロックを簡易に設計できる。
【００６４】
書き換え部４１０は、マップ制御部４０４からの指示に基づき、マップ情報ＮＥＷＭＡＰにより書き換えられたマップ情報テーブル４０８のマップ情報にしたがって、設定テーブル５００を書き換える。書き換え部４１２は、マップ制御部４０４からの指示に基づき、マップ情報ＮＥＷＭＡＰにより書き換えられたマップ情報テーブル４０８のマップ情報にしたがって、アドレス変換テーブル２８６を書き換える。
【００６５】
マップ制御部４０４、マップ決定部４０６および書き換え部４１０は、動作中のコンピュータシステム内のＣＰＵの故障の発生が検出されたことに基づいて設定テーブル５００の内容を変更する。そして、マップ制御部４０４、マップ決定部４０６および書き換え部４１０は、クロスバースイッチ７００を制御して、故障したＣＰＵを他のＣＰＵに置き換える機能を有する。マップ制御部４０４、マップ決定部４０６および書き換え部４１０は、第２の制御部の一例である。また、マップ制御部４０４およびマップ決定部４０６は、ＣＰＵの故障の発生に基づいて、故障したＣＰＵと置き換える他のＣＰＵを、未使用のＣＰＵの中から選択し、選択結果に基づいてマップ情報テーブル４０８を変更する選択部の一例である。
【００６６】
マップ制御部４０４、マップ決定部４０６および書き換え部４１２は、故障したＣＰＵを示す物理ＩＤと論理ＩＤ（図１１）との対応付けを示す対応付け情報を無効にし、他のＣＰＵを示す物理ＩＤと無効にした論理ＩＤとを対応付ける第３の制御部の一例である。
【００６７】
電源制御部４１４は、マップ制御部４０４からの指示に基づき、マップ情報ＮＥＷＭＡＰにより書き換えられたマップ情報テーブル４０８のマップ情報にしたがって、ＣＰＵの電源を制御する制御情報ＣＰＵＰＷＲをＣＰＵに出力する。これにより、故障したＣＰＵの電源が遮断され、故障したＣＰＵの代わりに動作するＣＰＵの電源が投入される。
【００６８】
また、電源制御部４１４は、マップ制御部４０４からの指示に基づき、マップ情報ＮＥＷＭＡＰにより書き換えられたマップ情報テーブル４０８のマップ情報にしたがって、メモリＭＥＭの電源を制御する制御情報ＭＥＭＰＷＲをメモリＭＥＭに出力する。これにより、故障したメモリＭＥＭの電源が遮断され、故障したメモリＭＥＭの代わりに動作するメモリＭＥＭの電源が投入される。
【００６９】
例えば、各制御情報ＣＰＵＰＷＲは、外部電源線とＣＰＵの電源線との間に配置されたスイッチの動作を制御する制御信号である。スイッチは、電源の投入を示す制御情報ＣＰＵＰＷＲを受信した場合に、外部電源線をＣＰＵの電源線に接続し、電源の遮断を示す制御情報ＣＰＵＰＷＲを受信した場合に、外部電源線とＣＰＵの電源線との接続を遮断する。
【００７０】
同様に、各制御情報ＭＥＭＰＷＲは、例えば、外部電源線とメモリＭＥＭの電源線との間に配置されたスイッチの動作を制御する制御信号である。スイッチは、電源の投入を示す制御情報ＭＥＭＰＷＲを受信した場合に、外部電源線をメモリＭＥＭの電源線に接続し、電源の遮断を示す制御情報ＭＥＭＰＷＲを受信した場合に、外部電源線とメモリＭＥＭの電源線との接続を遮断する。
【００７１】
電源制御部４１４が、未使用あるいは故障したＣＰＵの電源を遮断し、未使用あるいは故障したメモリＭＥＭの電源を遮断することで、情報処理装置１１００の消費電力は、電源を遮断しない場合に比べて削減できる。
【００７２】
図６は、図５に示したマップ情報テーブル４０８の例を示す。マップ情報テーブル４０８は、情報処理装置１１００が有するＣＰＵの数に対応して、システム識別ビットＳ、ＣＰＵ識別ビットＣ（例えば、Ｃ３、Ｃ２、Ｃ１、Ｃ０）およびメモリ識別ビットＭ（例えば、Ｍ３、Ｍ２、Ｍ１、Ｍ０）を有する。図６では、説明を簡単にするために、情報処理装置１１００が４つＣＰＵ３−ＣＰＵ０と、４つのメモリＭＥＭ３−ＭＥＭ０を有する例を示す。このため、マップ情報テーブル４０８は、ＣＰＵの数に対応する４つの識別ビットＳと、識別ビットＳ毎に設けられる４つのＣＰＵ識別ビットＣ３−Ｃ０および４つのメモリ識別ビットＭ３−Ｍ０とを有する。なお、情報処理装置１１００が有するＣＰＵの数とメモリＭＥＭの数は、互いに相違してもよい。
【００７３】
システム識別ビットＳの”１”は、１つのコンピュータシステムが構築されることを示し、システム識別ビットＳの”０”は、コンピュータシステムが構築されないことを示す。
【００７４】
ＣＰＵ識別ビットＣ３−Ｃ０は、システム識別ビットＳ毎に、ＣＰＵ３−ＣＰＵ０に対応して設けられる。”１”に設定されたシステム識別ビットＳに対応する行において、”１”に設定されたＣＰＵ識別ビットＣは、対応するＣＰＵが構築されるコンピュータシステムに含まれることを示す。メモリ識別ビットＭ３−Ｍ０は、システム識別ビットＳ毎に、メモリＭＥＭ３−ＭＥＭ０に対応して設けられる。”１”に設定されたシステム識別ビットＳに対応する行において、”１”に設定されたメモリ識別ビットＭは、対応するメモリＭＥＭが構築されるコンピュータシステムに含まれることを示す。
【００７５】
例えば、図６に示したマップ情報テーブル４０８の１行目は、１つのコンピュータシステムが、ＣＰＵ識別ビットＣ１、Ｃ０に対応するＣＰＵ１、ＣＰＵ０と、ＭＥＭ識別ビットＭ０に対応するメモリＭＥＭ０とにより構築されることを示す。同様に、マップ情報テーブル４０８の２行目は、他の１つのコンピュータシステムが、ＣＰＵ識別ビットＣ３に対応するＣＰＵ３と、ＭＥＭ識別ビットＭ３、Ｍ２に対応するメモリＭＥＭ３、ＭＥＭ２とにより構築されることを示す。
【００７６】
図６の右側は、マップ情報テーブル４０８により構築される２つのコンピュータシステムを破線で示す。ここで、マップ情報テーブル４０８の１行目は、仮想システムＩＤ（IDentification）が０番のコンピュータシステムＳＹＳ０を示し、マップ情報テーブル４０８の２行目は、仮想システムＩＤが１番のコンピュータシステムＳＹＳ１を示す。
【００７７】
図７は、図４に示した設定テーブル５００の例を示す。例えば、設定テーブル５００は、図６に示したマップ情報テーブル４０８と同様の構成を有し、システム識別ビットＳ、ＣＰＵ識別ビットＣおよびメモリ識別ビットＭを有する。また、設定テーブル５００の内容は、図５に示したマップ決定部４０６が求めたマップ情報ＮＥＷＭＡＰに基づいて、マップ制御部４０４により書き換えられるため、マップ情報テーブル４０８と同様の内容である。図７においても、図６と同様に、情報処理装置１１００が４つＣＰＵ３−ＣＰＵ０と、４つのメモリＭＥＭ３−ＭＥＭ０を有する例を示す。
【００７８】
図８は、図３に示したクロスバースイッチ７００の例を示す。図８に示した例は、設定テーブル５００が図７に示した状態に設定された場合を示す。太い実線は、複数の信号線（例えば、アドレスバスＡＤ、データバスＩ／Ｏまたは制御信号ＣＮＴ）を示し、細い実線は、単数の信号線（例えば、チップセレクト信号ＣＳ）を示す。例えば、制御信号ＣＮＴは、ＳＲＡＭやフラッシュメモリでは、ライトイネーブル信号およびアウトプットイネーブル信号を含み、ＤＲＡＭでは、ロウアドレスストローブ信号、コラムアドレスストローブ信号およびライトイネーブル信号を含む。
【００７９】
クロスバースイッチ７００の周囲に示した丸印は、クロスバースイッチ７００の入出力端子を示す。クロスバースイッチ７００の内部に示した信号線は、設定テーブル５００に基づいて設定されたクロスバースイッチ７００の端子間の接続関係を示す。この例では、仮想システムＩＤが０番のコンピュータシステムＳＹＳ０では、１つのメモリＭＥＭ０が、２つのＣＰＵ０、ＣＰＵ１に共有される。仮想システムＩＤが１番のコンピュータシステムＳＹＳ１では、２つのメモリＭＥＭ２、ＭＥＭ３が、１つのＣＰＵ３によりアクセスされる。
【００８０】
ＣＰＵ０、ＣＰＵ１の各々は、メモリＭＥＭ０にアクセスする場合にアドレス信号線ＡＤ、データ信号線Ｉ／Ｏ、制御信号ＣＮＴおよびチップセレクト信号ＣＳ０を駆動する。図６および図７に示した例では、各ＣＰＵ０−ＣＰＵ３は、最大で４つのメモリＭＥＭ０−ＭＥＭ３に接続可能である。このため、４つのチップセレクト端子ＣＳ０、ＣＳ１、ＣＳ２、ＣＳ３を有するＣＰＵが、ＣＰＵ０−ＣＰＵ３として使用される。なお、チップセレクト信号ＣＳ０、ＣＳ１、ＣＳ２、ＣＳ３は、制御信号ＣＮＴに含まれるが、説明を分かりやすくするために、制御信号ＣＮＴとは別に記載した。
【００８１】
コンピュータシステムＳＹＳ０において、データ信号線Ｉ／Ｏには、ＣＰＵ０またはＣＰＵ１からメモリＭＥＭにデータを書き込む書き込み動作時に、書き込みデータが伝達される。ＣＰＵ０、ＣＰＵ１は、メモリＭＥＭ０にアクセスしない場合にアドレス信号線ＡＤ、データ信号線Ｉ／Ｏおよび制御信号ＣＮＴをフローティング状態に設定する。これにより、ＣＰＵ０、ＣＰＵ１からメモリＭＥＭに出力される信号が衝突することはない。
【００８２】
コンピュータシステムＳＹＳ１において、ＣＰＵ３は、メモリＭＥＭ２にアクセスする場合に、アドレス信号ＡＤ、データ信号Ｉ／Ｏおよび制御信号ＣＮＴとともに、チップセレクト信号ＣＳ０をクロスバースイッチ７００に出力する。ＣＰＵ３は、メモリＭＥＭ３にアクセスする場合に、アドレス信号ＡＤ、データ信号Ｉ／Ｏおよび制御信号ＣＮＴとともに、チップセレクト信号ＣＳ１をクロスバースイッチ７００に出力する。クロスバースイッチ７００を介して、チップセレクト信号ＣＳ０は、メモリＭＥＭ２のチップセレクト端子ＣＳに供給され、チップセレクト信号ＣＳ１は、メモリＭＥＭ３のチップセレクト端子ＣＳに供給される。
【００８３】
図９は、図４に示したレジスタＩ／Ｆ２４０のレジスタ部ＲＥＧの例を示す。レジスタ部ＲＥＧは、各ＣＰＵに対応して設けられる。レジスタＲＥＧは、ＣＰＵ情報ＣＰＵＩＤと、ＣＰＵ数情報ＮＣＰＵと、送信用のＣＰＵ情報ＴＣＰＵＩＤおよび送信データＳＤＡＴＡと、受信用のＣＰＵ情報ＳＣＰＵＩＤおよび受信データＲＤＡＴＡとを格納する領域を有する。また、レジスタＲＥＧは、フラグＢ、Ｉ、Ｖと、理由ビットＲと、モニタビットＭＯＮとを有する。
【００８４】
ＣＰＵ情報ＣＰＵＩＤは、対応するＣＰＵが属するコンピュータシステム内で割り当てられたＣＰＵを示す論理ＩＤを示す。例えば、ＣＰＵ情報ＣＰＵＩＤが”０”に設定されたＣＰＵは、コンピュータシステムの全体を管理するシステムＣＰＵである。論理ＩＤについては、図１１で説明する。
【００８５】
ＣＰＵ数情報ＮＣＰＵは、対応するＣＰＵが属するコンピュータシステムに含まれるＣＰＵの数を示す。例えば、図６に示した仮想システムＩＤが０番のコンピュータシステムＳＹＳ０は、２つのＣＰＵ０、ＣＰＵ１を含む。この場合、ＣＰＵ０に対応するレジスタＲＥＧのＣＰＵ数情報ＮＣＰＵの領域およびＣＰＵ１に対応するレジスタＲＥＧのＣＰＵ数情報ＮＣＰＵの領域には、ともに”２”が格納される。同様に、図６に示した仮想システムＩＤが１番のコンピュータシステムは、１つのＣＰＵ３を含む。この場合、ＣＰＵ３に対応するレジスタＲＥＧのＣＰＵ数情報ＮＣＰＵの領域には、”１”が格納される。
【００８６】
例えば、コンピュータシステムが複数のＣＰＵを含むマルチプロセッサシステムとして動作する場合、ＣＰＵ数情報ＮＣＰＵは、ＯＳ（Operating System）による各ＣＰＵへのタスクの分配に使用される。ＯＳは、マルチプロセッサシステム全体を管理し、コンピュータシステムの起動時に、構成制御部４００がレジスタＲＥＧに設定したＣＰＵ数情報ＮＣＰＵを読み出す。
【００８７】
ＣＰＵ情報ＴＣＰＵＩＤは、送信先のＣＰＵの論理ＩＤを示し、例えば、ＣＰＵ情報ＴＣＰＵＩＤの領域には、ＣＰＵ情報ＣＰＵＩＤと同じ値が格納される。送信データＳＤＡＴＡの領域には、ＣＰＵ情報ＴＣＰＵＩＤが示すＣＰＵに送信するデータが格納される。
【００８８】
フラグＢは、レジスタＩ／Ｆ２４０によるデータ送信の機能がビジー状態またはレディ状態であることを示す。レジスタＩ／Ｆ２４０は、対応するＣＰＵがＣＰＵ情報ＴＣＰＵＩＤおよび送信データＳＤＡＴＡをレジスタＲＥＧに書き込んだ場合にフラグＢをビジー状態にセットする。送信データＳＤＡＴＡがＣＰＵ情報ＴＣＰＵＩＤにより示されるＣＰＵに送信された後、レジスタＩ／Ｆ２４０は、フラグＢをレディ状態にリセットする。
【００８９】
フラグＢのビジー状態は、レジスタＩ／Ｆ２４０による送信データＳＤＡＴＡの送信中または送信待ちを示す。フラグＢがビジー状態にセットされている間、対応するＣＰＵによる新たなＣＰＵ情報ＴＣＰＵＩＤおよび送信データＳＤＡＴＡのレジスタＲＥＧへの書き込みは禁止される。これにより、レジスタＲＥＧに書き込まれたデータは、上書きされることなく、ＣＰＵ情報ＴＣＰＵＩＤにより指定されたＣＰＵに送信され、コンピュータシステムは誤動作を避けることができる。
【００９０】
ＣＰＵ情報ＳＣＰＵＩＤは、受信データＲＤＡＴＡを送った送信元のＣＰＵの論理ＩＤを示す。例えば、内部バスＩＢＵＳを介してＣＰＵ１からＣＰＵ２にデータを送信する場合、ＣＰＵ１に対応するレジスタＩ／Ｆ２４０は、ＣＰＵ２に対応するレジスタＲＥＧのＣＰＵ情報ＳＣＰＵＩＤの領域に”２”を格納する。
【００９１】
受信データＲＤＡＴＡの領域には、ＣＰＵ情報ＳＣＰＵＩＤが示す送信元のＣＰＵから受信したデータが格納される。例えば、ＣＰＵ１からＣＰＵ２にデータを送信する場合、送信元のＣＰＵ１に対応するレジスタＲＥＧに格納された送信データＳＤＡＴＡが、内部バスＩＢＵＳを介して、送信先のＣＰＵ２に対応するレジスタＲＥＧの受信データＲＤＡＴＡの領域に格納される。
【００９２】
フラグＶは、レジスタＲＥＧに有効な受信データＲＤＡＴＡがある場合に”１”にセットされ、レジスタＲＥＧに有効な受信データＲＤＡＴＡがない場合に”０”にリセットされる。例えば、レジスタＩ／Ｆ２４０は、送信元である他のＣＰＵからレジスタＲＥＧにＣＰＵ情報ＲＣＰＵＩＤおよび受信データＲＤＡＴＡが転送された場合に、フラグＶをセットする。送信先である対応するＣＰＵは、フラグＶを周期的にモニタし、フラグＶがセットされている場合に、ＣＰＵ情報ＲＣＰＵＩＤおよび受信データＲＤＡＴＡをレジスタＲＥＧから読み込む。レジスタＩ／Ｆ２４０は、ＣＰＵによるＣＰＵ情報ＲＣＰＵＩＤおよび受信データＲＤＡＴＡの読み出し後、フラグＶをリセットする。
【００９３】
フラグＩは、対応するＣＰＵが、他のＣＰＵからレジスタＲＥＧに受信データＲＤＡＴＡが転送されたことを割り込み機能を用いて知るために使用される。対応するＣＰＵによりフラグＩが”１”にセットされた場合、レジスタＩ／Ｆ２４０は、レジスタＶのセットに基づいて、対応するＣＰＵに割り込み要求を発生する。対応するＣＰＵは、割り込み要求に基づいて、データの受信を認識し、レジスタＲＥＧからＣＰＵ情報ＲＣＰＵおよび受信データＲＤＡＴＡを読み出す。そして、対応するＣＰＵは、レジスタＲＥＧからＣＰＵ情報ＲＣＰＵおよび受信データＲＤＡＴＡを読み出した後に、フラグＶをリセットする。
【００９４】
理由ビットＲは、対応するＣＰＵがどのような理由で起動されたかを示す。理由ビットＲの”０”は、対応するＣＰＵが通常の電源投入シーケンスで起動されたことを示す。
【００９５】
例えば、図４に示した構成制御部４００は、情報処理装置１１００の電源投入時の初期化シーケンスにおいて、各ＣＰＵに対応するレジスタＲＥＧの理由ビットＲを”０”にリセットする。また、構成制御部４００は、故障したＣＰＵを未使用のＣＰＵと交換して、未使用のＣＰＵの使用を開始する場合、新たに使用するＣＰＵに対応するレジスタＲＥＧの理由ビットＲを”１”にセットする。各ＣＰＵは、電源投入後に理由ビットＲを参照することで、通常の電源投入シーケンスにより起動されたのか、故障したＣＰＵの交換に伴って起動されたのかを判断できる。
【００９６】
モニタビットＭＯＮは、対応するＣＰＵにより所定の周期Ｔ０（図１３）でセットされ、ＣＰＵ監視部２６０により周期Ｔ０より長い所定の周期Ｔ１（図１３）でリセットされる。ＣＰＵ監視部２６０は、リセット前に読み出したモニタビットＭＯＮの値が、リセット状態を示す場合に、モニタビットＭＯＮが、対応するＣＰＵによりセットされなかったことを検出し、対応するＣＰＵの故障を検出する。モニタビットＭＯＮについては、図１２および図１３で説明する。
【００９７】
図１０は、図４に示した仮想化部２８０の例を示す。仮想化部２８０は、分離部２８２、２８３、アドレス変換部２８４、２８５、アドレス変換テーブル２８６、合成部２８８、２８９および複数のフリップフロップＦＦ（ＦＦ１−ＦＦ８）を有する。例えば、フリップフロップＦＦ１、ＦＦ２、ＦＦ３、ＦＦ４、ＦＦ５、ＦＦ６、ＦＦ７、ＦＦ８は、共通のクロック信号ＣＬＫに同期して動作する。フリップフロップＦＦ１−ＦＦ８は、ラッチの一例である。
【００９８】
分離部２８２、アドレス変換部２８４、合成部２８８およびフリップフロップＦＦ１−ＦＦ４は、対応するＣＰＵが他のＣＰＵへデータを送信する場合に動作する。分離部２８３、アドレス変換部２８５、合成部２８９およびフリップフロップＦＦ５−ＦＦ８は、対応するＣＰＵが他のＣＰＵからデータを受信する場合に動作する。
【００９９】
分離部２８２は、例えば、図４に示したレジスタＩ／Ｆ２４０からパケットとして送られる送信元のＣＰＵを示すＣＰＵ情報ＣＰＵＩＤ（論理ＩＤ）および送信先のＣＰＵを示すＣＰＵ情報ＴＣＰＵＩＤ（論理ＩＤ）と、送信データＳＤＡＴＡとを分離する。分離部２８２は、分離したＣＰＵ情報ＣＰＵＩＤ、ＴＣＰＵＩＤをフリップフロップＦＦ３に出力し、分離した送信データＳＤＡＴＡをフリップフロップＦＦ１に出力する。
【０１００】
アドレス変換部２８４は、アドレス変換テーブル２８６を参照して、フリップフロップＦＦ３から受信するＣＰＵ情報ＣＰＵＩＤ、ＴＣＰＵＩＤが示す論理ＩＤをそれぞれ物理ＩＤに変換する。アドレス変換部２８４は、変換により得られた物理ＩＤをフリップフロップＦＦ４に出力する。フリップフロップＦＦ１、ＦＦ２は、分離部２８２から出力される送信データＳＤＡＴＡを順次にラッチし、最終段のフリップフロップＦＦ２は、ラッチした送信データＳＤＡＴＡを合成部２８８に出力する。
【０１０１】
合成部２８８は、フリップフロップＦＦ３、ＦＦ４から受信する送信データＳＤＡＴＡおよび変換された物理ＩＤを合成して、例えばパケットを生成し、生成したパケットを内部バスＩＢＵＳに出力する。
【０１０２】
一方、分離部２８３は、例えば、内部バスＩＢＵＳからパケットとして送られる送信元のＣＰＵを示すＣＰＵ情報ＳＣＰＵＩＤ（物理ＩＤ）および受信データＲＤＡＴＡを分離する。分離部２８２は、分離したＣＰＵ情報ＳＣＰＵＩＤをフリップフロップＦＦ７に出力し、分離した受信データＲＤＡＴＡをフリップフロップＦＦ５に出力する。
【０１０３】
アドレス変換部２８５は、アドレス変換テーブル２８６を参照して、フリップフロップＦＦ７から受信するＣＰＵ情報ＳＣＰＵＩＤが示す論理ＩＤを物理ＩＤに変換する。アドレス変換部２８４は、変換により得られた物理ＩＤをフリップフロップＦＦ８に出力する。フリップフロップＦＦ５、ＦＦ６は、分離部２８３から出力される受信データＲＤＡＴＡを順次にラッチし、最終段のフリップフロップＦＦ６は、ラッチした受信データＲＤＡＴＡを合成部２８９に出力する。
【０１０４】
合成部２８９は、フリップフロップＦＦ６、ＦＦ８から受信する受信データＲＤＡＴＡおよび変換された物理ＩＤを合成して、例えばパケットを生成し、生成したパケットを対応するレジスタＩ／Ｆ２４０に出力する。
【０１０５】
例えば、アドレス変換部２８４は、フリップフロップＦＦ１−ＦＦ４が受信するクロック信号の１サイクル内に、アドレス変換テーブル２８６を参照し、論理ＩＤを物理ＩＤに変換する。このため、フリップフロップＦＦ２、ＦＦ４は、フリップフロップＦＦ１からの送信データＳＤＡＴＡと、アドレス変換部２８４からの物理ＩＤとを、共通のクロックサイクルでラッチし、合成部２８８に出力できる。同様に、アドレス変換部２８５は、フリップフロップＦＦ５−ＦＦ８が受信するクロック信号の１サイクル内に、アドレス変換テーブル２８６を参照し、物理ＩＤを論理ＩＤに変換する。このため、フリップフロップＦＦ６、ＦＦ８は、フリップフロップＦＦ５からの送信データＳＤＡＴＡと、アドレス変換部２８５からの物理ＩＤとを、共通のクロックサイクルでラッチし、合成部２８８に出力できる。
【０１０６】
すなわち、アドレス変換部２８４またはアドレス変換部２８５の変換動作に所定の時間が掛かる場合にも、変換された物理ＩＤを送信データＳＤＡＴＡに対して遅れることなく送信先のＣＰＵに伝達できる。同様に、アドレス変換部２８５の変換動作に所定の時間が掛かる場合にも、変換された物理ＩＤを受信データＲＤＡＴＡに対して遅れることなくレジスタＩ／Ｆ２４０に伝達できる。
【０１０７】
アドレス変換部２８４は、分離部２８２により分離されたＣＰＵ情報ＴＣＰＵＩＤを処理すればよいため、送信データＳＤＡＴＡを含む情報の中からＣＰＵ情報ＴＣＰＵＩＤを抽出する手間を省ける。これにより、ＣＰＵ情報ＴＣＰＵＩＤの抽出動作と物理ＩＤへの変換動作の両方を実行する場合に比べ、アドレス変換部２８４の変換動作を１クロックサイクル内に完了することが容易にできる。同様に、アドレス変換部２８５は、分離部２８３により分離されたＣＰＵ情報ＳＣＰＵＩＤを処理すればよいため、受信データＲＤＡＴＡを含む情報の中からＣＰＵ情報ＳＣＰＵＩＤを抽出する手間を省ける。これにより、ＣＰＵ情報ＳＣＰＵＩＤの抽出動作と物理ＩＤへの変換動作の両方を実行する場合に比べ、アドレス変換部２８５の変換動作を１クロックサイクル内に完了することが容易にできる。アドレス変換テーブル２８６の例は、図１１に示す。
【０１０８】
なお、データの送信時に動作するアドレス変換部２８４は、送信元のＣＰＵを示すＣＰＵ情報ＣＰＵＩＤが示す論理ＩＤを物理ＩＤに変換することなく、送信先のＣＰＵを示すＣＰＵ情報ＴＣＰＵＩＤが示す論理ＩＤを物理ＩＤに変換してもよい。この場合、データを受信するＣＰＵは、送信元のＣＰＵを示すＣＰＵ情報ＣＰＵＩＤを物理ＩＤとしてではなく、論理ＩＤとして受信できる。このため、分離部２８３、アドレス変換部２８５、合成部２８９およびフリップフロップＦＦ５−ＦＦ８は、仮想化部２８０から削除でき、図１０に比べて簡易な回路にできる。
【０１０９】
なお、アドレス変換部２８４による変換動作の時間が、１クロックサイクルより長く２クロックサイクルより短い場合、送信データＳＤＡＴＡのラッチ用に直列に接続されるフリップフロップＦＦの数を３つにすればよい。同様に、アドレス変換部２８５による変換動作の時間が、１クロックサイクルより長く２クロックサイクルより短い場合、受信データＲＤＡＴＡのラッチ用に直列に接続されるフリップフロップＦＦの数を３つにすればよい。
【０１１０】
図１１は、図１０に示したアドレス変換テーブル２８６の例を示す。図１１に示す例では、説明を簡単にするために、情報処理装置１１００は４つのＣＰＵを有するとする。アドレス変換テーブル２８６は、ＣＰＵの物理ＩＤ、仮想システムＩＤ及びＣＰＵの論理ＩＤ（仮想ＩＤ）を格納する領域を有する。
【０１１１】
物理ＩＤは、情報処理装置１１００に搭載されるＣＰＵを識別する固有の番号であり、物理情報の一例である。仮想システムＩＤは、情報処理装置１１００内に構築されるコンピュータシステムＳＹＳの番号を示す。論理ＩＤは、コンピュータシステムＳＹＳ内のＣＰＵを識別するために仮想的に割り当てられる番号であり、論理情報の一例である。アドレス変換テーブル２８６は、ＣＰＵの物理ＩＤと論理ＩＤとの対応付けを示す対応付け情報を記憶する記憶部の一例である。
【０１１２】
以降の説明では、０番の物理ＩＤ、１番の物理ＩＤ、２番の物理ＩＤ、３番の物理ＩＤは、それぞれ符号Ｐ０、Ｐ１、Ｐ２、Ｐ３で示す場合がある。同様に、０番の論理ＩＤ、１番の論理ＩＤは、それぞれ符号Ｌ０、Ｌ１で示す場合がある。
【０１１３】
図１１に示した例では、情報処理装置１１００は、仮想システムＩＤが０番と１番の２つのコンピュータシステムＳＹＳ０、ＳＹＳ１を有する。０番のコンピュータシステムＳＹＳ０は、物理ＩＤが０番と１番のＣＰＵを有し、物理ＩＤが０番と１番のＣＰＵは、０番のコンピュータシステムＳＹＳ０内で０番と１番の論理ＩＤにそれぞれに割り当てられる。１番のコンピュータシステムＳＹＳ１は、物理ＩＤが３番のＣＰＵを有し、物理ＩＤが３番のＣＰＵは、１番のコンピュータシステムＳＹＳ１内で０番の論理ＩＤに割り当てられる。
【０１１４】
未使用のＣＰＵ（この例では、物理ＩＤが２番のＣＰＵ）は、仮想システムＩＤの領域に１６進数で”ＦＦＦＦ”が設定される。図１１の右側には、アドレス変換テーブル２８６により構築される２つのコンピュータシステムＳＹＳ０、ＳＹＳ１が破線で示される。なお、２つのコンピュータシステムＳＹＳ０、ＳＹＳ１に含まれるメモリＭＥＭ０、ＭＥＭ２、ＭＥＭ３は、図６に示すマップ情報テーブル４０８および図７に示す設定テーブル５００により割り当てられる。
【０１１５】
この実施形態では、複数のコンピュータシステムを識別する仮想システムＩＤの領域が、アドレス変換テーブル２８６に確保されるため、情報処理装置１１００内に複数のコンピュータシステムを構築できる。
【０１１６】
図１２は、図４に示したＣＰＵ監視部２６０の例を示す。ＣＰＵ監視部２６０は、タイマ２６２、モニタ部２６４およびリセット部２６６を有する。タイマ２６２は、所定の周期Ｔ１（図１３）でトリガ信号等のトリガ情報ＴＲＧを出力する。モニタ部２６４は、トリガ情報ＴＲＧに基づいてレジスタＩ／Ｆ２４０のレジスタＲＥＧ内のモニタビットＭＯＮの値を読む。モニタ部２６４は、モニタビットＭＯＮの値が”１”の場合にリセット信号等のリセット情報ＲＳＴを出力し、モニタビットＭＯＮの値が”０”の場合に故障情報ＣＰＵＦＡＩＬを図４に示した構成制御部４００に出力する。リセット部２６６は、リセット情報ＲＳＴに基づいて、モニタビットＭＯＮを”０”にリセットする。
【０１１７】
なお、モニタビットＭＯＮは、対応するＣＰＵ内に設けられるウォッチドッグモジュールにより、周期Ｔ１より短い所定の周期Ｔ０（図１３）で”１”にセットされる。これにより、対応するＣＰＵが正常に動作する場合、モニタビットＭＯＮは周期的に”１”にセットされ、モニタ部２６４がモニタビットＭＯＮの”０”を検出することはない。これに対して、対応するＣＰＵの故障により、ウォッチドッグモジュールの動作が停止した場合、リセット部２６６によりリセットされたモニタビットＭＯＮは、対応するＣＰＵによりセットされない。これにより、モニタ部２６４は、モニタビットＭＯＮの”０”を検出することで、対応するＣＰＵの故障を検出する。例えば、ウォッチドッグモジュールは、ＣＰＵのハードウェアにより実現されてもよく、ソフトウエアにより実現されてもよい。
【０１１８】
図１３は、図１２に示したＣＰＵ監視部２６０の動作の例を示す。図１３の動作は、コンピュータシステムとして動作するＣＰＵ毎に実行される。まず、対応するＣＰＵのウォッチドッグモジュールは、ステップＳ２００において、周期Ｔ０が経過したか否かを判定し、周期Ｔ０が経過した場合、ステップＳ２０２において、モニタビットＭＯＮを”１”にセットする。この後、ウォッチドッグモジュールは、再びステップＳ２００を繰り返して、周期Ｔ０の経過を待つ。
【０１１９】
ＣＰＵ監視部２６０は、ステップＳ１００において、周期Ｔ０より長い周期Ｔ１が経過したか否かを判定し、周期Ｔ１が経過した場合、ステップＳ１０２において、モニタビットＭＯＮの値をチェックする。次に、ステップＳ１０４において、ＣＰＵ監視部２６０は、モニタビットＭＯＮが”０”にリセットされたか否かを判定する。モニタビットＭＯＮが”１”の場合、ＣＰＵ監視部２６０は、ステップＳ１０６において、モニタビットＭＯＮを”０”にリセットする。この後、ＣＰＵ監視部２６０は、再びステップＳ１００を繰り返して、周期Ｔ１の経過を待つ。
【０１２０】
一方、モニタビットＭＯＮが”０”の場合、ステップＳ１０８において、ＣＰＵ監視部２６０は、ＣＰＵの故障を検出し、故障情報ＣＰＵＦＡＩＬを図４に示した構成制御部４００に出力する。
【０１２１】
なお、ウォッチドッグモジュールが、ソフトウエアにより実現される場合、ＣＰＵは、タイマを用いて周期Ｔ０毎に割り込みハンドラを起動する。割り込みハンドラは、モニタビットＭＯＮを”１”にセットし、終了する。割り込みハンドラの終了により、割り込みハンドラが起動される前の元のプログラムの実行が復帰される。なお、割り込みハンドラを起動する割り込み要求は、他の割り込み要求に比べて優先度が高く、ＯＳによりマスクされないＮＭＩ（Non-Maskable Interrupt）などを用いることが好ましい。これにより、割り込みハンドラの起動が、ＯＳの処理などによって妨げられることを避けることができ、ＯＳ等の動作中にもＣＰＵの故障を検出できる。
【０１２２】
図１４は、図３に示した情報処理装置において、故障したＣＰＵを未使用のＣＰＵに置き換える例を示す。図１４の上側に示す状態は、図６、図７、図１１に示した状態と同様である。図１４の上側に示す状態で情報処理装置１１００が動作中、例えば、ＣＰＵ１に対応するＣＰＵ監視部２６０（図１２）は、ＣＰＵ１の故障を検出し、ＣＰＵ１の故障を示す故障情報ＣＰＵＦＡＩＬを構成制御部４００に出力する。
【０１２３】
構成制御部４００（図５）は、故障情報ＣＰＵＦＡＩＬに基づいて、図１４の下側に示すように、図６に示したマップ情報テーブル４０８を書き換える。そして、構成制御部４００は、書き換えたマップ情報テーブル４０８に基づいて、図１４の下側に示すように、設定テーブル５００（図７）および示したアドレス変換テーブル２８６（図１１）を書き換える。図１４の下側において、書き換えられた値は、太字で示す。これにより、仮想システムＩＤが０番に設定されたコンピュータシステムＳＹＳ０において、故障したＣＰＵ１は、人手を介することなく、空いているＣＰＵ２に自動的に置き換えられる。
【０１２４】
図１５は、図３に示した情報処理装置において、故障したＣＰＵを未使用のＣＰＵに置き換える前後でのＣＰＵ制御部２００の動作の例を示す。図１５の上側に示す状態は、図１４の上側に示した状態での動作を示し、図１５の下側に示す状態は、図１４の下側に示した状態での動作を示す。すなわち、この例では、図１４と同様に、仮想システムＩＤが０番に設定されたコンピュータシステムＳＹＳ０において、ＣＰＵ１が故障し、未使用のＣＰＵ２に置き換えられるとする。
【０１２５】
ＣＰＵ１が故障する前、仮想システムＩＤが０番に設定されたコンピュータシステムＳＹＳ０では、０番の論理ＩＤ（Ｌ０）にＣＰＵ０が割り当てられ、１番の論理ＩＤ（Ｌ１）にＣＰＵ１が割り当てられる。例えば、図１５の上側において、ＣＰＵ０は、論理ＩＤ（＝Ｌ１）および送信データＳＤＡＴＡを、ＣＰＵ０に対応するレジスタＲＥＧ内の送信用のＣＰＵ情報ＴＣＰＵＩＤおよび送信データＳＤＡＴＡの領域に格納する（図１５（ａ））。この際、ＣＰＵ０は、送信先のＣＰＵを論理ＩＤによって認識し、物理ＩＤ（すなわちＣＰＵ１）では認識しない。
【０１２６】
ＣＰＵ０に対応する仮想化部２８０は、図１１に示したアドレス変換テーブル２８６を参照し、送信元を示すＣＰＵ情報ＣＰＵＩＤに格納された論理ＩＤ（＝Ｌ０）を物理ＩＤ（＝Ｐ０）に変換する。また、ＣＰＵ０に対応する仮想化部２８０は、送信先を示すＣＰＵ情報ＴＣＰＵＩＤに格納された論理ＩＤ（＝Ｌ１）を物理ＩＤ（＝Ｐ１）に変換する（図１５（ｂ））。そして、ＣＰＵ０に対応する仮想化部２８０は、送信元を示すＣＰＵの物理ＩＤ（＝Ｐ０）および送信先を示すＣＰＵの物理ＩＤ（＝Ｐ１）を、送信データＳＤＡＴＡとともに内部バスＩＢＵＳに出力する（図１５（ｃ））。
【０１２７】
ＣＰＵ１（物理ＩＤ＝Ｐ１）に対応する仮想化部２８０は、送信先を示す物理ＩＤ（＝Ｐ１）とともに内部バスＩＢＵＳから転送される送信元の物理ＩＤ（＝Ｐ０）および送信データＳＤＡＴＡを受信する。ＣＰＵ１に対応する仮想化部２８０は、受信した送信元の物理ＩＤ（＝Ｐ０）を、アドレス変換テーブル２８６に基づいて論理ＩＤ（＝Ｌ０）に変換する（図１５（ｄ））。ＣＰＵ１に対応する仮想化部２８０は、変換した論理ＩＤ（＝Ｌ０）および受信した送信データＳＤＡＴＡを、ＣＰＵ１に対応するレジスタＲＥＧ内の受信用のＣＰＵ情報ＳＣＰＵＩＤおよび受信データＲＤＡＴＡの領域に格納する（図１５（ｅ））。論理ＩＤ（＝Ｌ１）が割り当てられたＣＰＵ１は、レジスタＲＥＧを介して論理ＩＤ（＝Ｌ０）が割り当てられたＣＰＵ０からデータが送信されたことを認識し、受信データＲＤＡＴＡをレジスタＲＥＧから読み出す（図１５（ｆ））。これにより、仮想システムＩＤが０番に設定されたコンピュータシステムＳＹＳ０において、論理ＩＤ（＝Ｌ０）が割り当てられたＣＰＵ０から論理ＩＤ（＝Ｌ１）が割り当てられたＣＰＵ１へのデータの転送が完了する。
【０１２８】
一方、故障したＣＰＵ１がＣＰＵ２に置き換えられる場合、構成制御部４００（図５）は、故障前のＣＰＵ１に対応するレジスタＲＥＧに設定された情報（例えば、ＣＰＵ情報ＣＰＵＩＤおよびＣＰＵ数情報ＮＣＰＵ）を、ＣＰＵ２に対応するレジスタＲＥＧに設定する。また、構成制御部４００は、アドレス変換テーブル２８６（図１１）を書き換え、１番の論理ＩＤ（Ｌ１）にＣＰＵ２を割り当てる。
【０１２９】
例えば、図１５の下側において、ＣＰＵ０は、論理ＩＤ（＝Ｌ１）および送信データＳＤＡＴＡを、ＣＰＵ０に対応するレジスタＲＥＧの送信用のＣＰＵ情報ＴＣＰＵＩＤおよび送信データＳＤＡＴＡの領域に格納する（図１５（ｇ））。この際、ＣＰＵ０は、送信先のＣＰＵを論理ＩＤによって認識し、物理ＩＤ（すなわちＣＰＵ２）では認識しない。
【０１３０】
ＣＰＵ０に対応する仮想化部２８０は、アドレス変換テーブル２８６を参照し、送信元を示すＣＰＵ情報ＣＰＵＩＤに格納された論理ＩＤ（＝Ｌ０）を物理ＩＤ（＝Ｐ０）に変換する。また、ＣＰＵ０に対応する仮想化部２８０は、送信先を示すＣＰＵ情報ＴＣＰＵＩＤに格納された論理ＩＤ（＝Ｌ１）を物理ＩＤ（＝Ｐ２）に変換する（図１５（ｈ））。そして、ＣＰＵ０に対応する仮想化部２８０は、送信元を示すＣＰＵの物理ＩＤ（＝Ｐ０）および送信先を示すＣＰＵの物理ＩＤ（＝Ｐ２）を、送信データＳＤＡＴＡとともに内部バスＩＢＵＳに出力する（図１５（ｉ））。
【０１３１】
ＣＰＵ２（物理ＩＤ＝Ｐ２）に対応する仮想化部２８０は、送信先を示す物理ＩＤ（＝Ｐ２）とともに内部バスＩＢＵＳから転送される送信元の物理ＩＤ（＝Ｐ０）および送信データＳＤＡＴＡを受信する。ＣＰＵ２に対応する仮想化部２８０は、受信した送信元の物理ＩＤ（＝Ｐ０）を、アドレス変換テーブル２８６に基づいて論理ＩＤ（＝Ｌ０）に変換する（図１５（ｊ））。ＣＰＵ２に対応する仮想化部２８０は、変換した論理ＩＤ（＝Ｌ０）および受信した送信データＳＤＡＴＡを、ＣＰＵ２に対応するレジスタＲＥＧ内の受信用のＣＰＵ情報ＳＣＰＵＩＤおよび受信データＲＤＡＴＡの領域に格納する（図１５（ｋ））。論理ＩＤ（＝Ｌ１）が割り当てられたＣＰＵ２は、レジスタＲＥＧを介して論理ＩＤ（＝Ｌ０）が割り当てられたＣＰＵ０からデータが送信されたことを認識し、受信データＲＤＡＴＡをレジスタＲＥＧから読み出す（図１５（ｌ））。これにより、仮想システムＩＤが０番に設定されたコンピュータシステムＳＹＳ０において、論理ＩＤ（＝Ｌ０）が割り当てられたＣＰＵ０から論理ＩＤ（＝Ｌ１）が割り当てられたＣＰＵ２へのデータの転送が完了する。
【０１３２】
図１５の上側および下側において、各ＣＰＵは、論理ＩＤを用いてデータを送信し、論理ＩＤを用いてデータを受信する。このため、ＣＰＵが故障により交換された場合にも、各ＣＰＵは、認識している設定を変えることなく、データを送受信できる。
【０１３３】
図１６は、図３に示した情報処理装置において、故障したＣＰＵを未使用のＣＰＵに置き換える前後でのＣＰＵ制御部２００の動作の他の例を示す。図１５と同一または同様の状態および動作については、詳細な説明は省略する。図１５と同様に、図１６の上側に示す状態は、図１４の上側に示した状態での動作を示し、図１６の下側に示す状態は、図１４の下側に示した状態での動作を示す。
【０１３４】
例えば、図１６の上側において、論理ＩＤ（＝Ｌ１）が割り当てられたＣＰＵ１は、論理ＩＤ（＝Ｌ０）および送信データＳＤＡＴＡを、ＣＰＵ１に対応するレジスタＲＥＧの送信用のＣＰＵ情報ＴＣＰＵＩＤおよび送信データＳＤＡＴＡの領域に格納する（図１６（ａ））。ＣＰＵ１に対応する仮想化部２８０は、送信元を示すＣＰＵ情報ＣＰＵＩＤに格納された論理ＩＤ（＝Ｌ１）を物理ＩＤ（＝Ｐ１）に変換し、送信先を示すＣＰＵ情報ＴＣＰＵＩＤに格納された論理ＩＤ（＝Ｌ０）を物理ＩＤ（＝Ｐ０）に変換する（図１６（ｂ））。そして、ＣＰＵ１に対応する仮想化部２８０は、送信元を示すＣＰＵの物理ＩＤ（＝Ｐ１）および送信先を示すＣＰＵの物理ＩＤ（＝Ｐ０）を、送信データＳＤＡＴＡとともに内部バスＩＢＵＳに出力する（図１６（ｃ））。
【０１３５】
ＣＰＵ０（物理ＩＤ＝Ｐ０）に対応する仮想化部２８０は、送信先を示す物理ＩＤ（＝Ｐ０）とともに内部バスＩＢＵＳから転送される送信元の物理ＩＤ（＝Ｐ１）および送信データＳＤＡＴＡを受信する。ＣＰＵ０に対応する仮想化部２８０は、受信した送信元の物理ＩＤ（＝Ｐ１）を論理ＩＤ（＝Ｌ１）に変換する（図１６（ｄ））。ＣＰＵ０に対応する仮想化部２８０は、変換した論理ＩＤ（＝Ｌ１）および受信した送信データＳＤＡＴＡを、ＣＰＵ０に対応するレジスタＲＥＧ内の受信用のＣＰＵ情報ＳＣＰＵＩＤおよび受信データＲＤＡＴＡの領域に格納する（図１６（ｅ））。そして、論理ＩＤ（＝Ｌ０）が割り当てられたＣＰＵ０は、レジスタＲＥＧを介して論理ＩＤ（＝Ｌ１）が割り当てられたＣＰＵ１からの受信データＲＤＡＴＡを読み出す（図１６（ｆ））。
【０１３６】
一方、故障したＣＰＵ１がＣＰＵ２に置き換えられた後（図１６の下側）、例えば、ＣＰＵ２は、論理ＩＤ（＝Ｌ０）および送信データＳＤＡＴＡを、ＣＰＵ２に対応するレジスタＲＥＧに格納する（図１６（ｇ））。ＣＰＵ２に対応する仮想化部２８０は、送信元を示すＣＰＵ情報ＣＰＵＩＤに格納された論理ＩＤ（＝Ｌ１）を物理ＩＤ（＝Ｐ２）に変換する。また、ＣＰＵ２に対応する仮想化部２８０は、送信先を示すＣＰＵ情報ＴＣＰＵＩＤに格納された論理ＩＤ（＝Ｌ０）を物理ＩＤ（＝Ｐ０）に変換する（図１６（ｈ））。そして、ＣＰＵ２に対応する仮想化部２８０は、送信元を示すＣＰＵの物理ＩＤ（＝Ｐ２）および送信先を示すＣＰＵの物理ＩＤ（＝Ｐ０）を、送信データＳＤＡＴＡとともに内部バスＩＢＵＳに出力する（図１６（ｉ））。
【０１３７】
ＣＰＵ０（物理ＩＤ＝Ｐ０）に対応する仮想化部２８０は、送信先を示す物理ＩＤ（＝Ｐ０）とともに内部バスＩＢＵＳから転送される送信元の物理ＩＤ（＝Ｐ２）および送信データＳＤＡＴＡを受信する。ＣＰＵ０に対応する仮想化部２８０は、受信した送信元の物理ＩＤ（＝Ｐ２）を、アドレス変換テーブル２８６に基づいて論理ＩＤ（＝Ｌ１）に変換する（図１６（ｊ））。ＣＰＵ０に対応する仮想化部２８０は、変換した論理ＩＤ（＝Ｌ１）および受信した送信データＳＤＡＴＡを、ＣＰＵ０に対応するレジスタＲＥＧ内の受信用のＣＰＵ情報ＳＣＰＵＩＤおよび受信データＲＤＡＴＡの領域に格納する（図１６（ｋ））。論理ＩＤ（＝Ｌ０）が割り当てられたＣＰＵ０は、レジスタＲＥＧを介して論理ＩＤ（＝Ｌ１）が割り当てられたＣＰＵ２からデータが送信されたことを認識し、受信データＲＤＡＴＡをレジスタＲＥＧから読み出す（図１６（ｌ））。
【０１３８】
図１６においても、各ＣＰＵは、論理ＩＤを用いてデータを送信し、論理ＩＤを用いてデータを受信する。このため、ＣＰＵが故障により交換された場合にも、各ＣＰＵは、認識している設定を変えることなく、データを送受信できる。
【０１３９】
図１７は、図３に示した情報処理装置において、故障したメモリＭＥＭを未使用のメモリＭＥＭに置き換える例を示す。図１４の上側の状態は、図６、図７、図１１に示した状態と同様である。この状態で、情報処理装置１１００が動作中、メモリＭＥＭ３に対応するメモリ監視部３６０（図４）は、メモリＭＥＭ３の故障を検出し、メモリＭＥＭ３の故障を示す故障情報ＭＥＭＦＡＩＬを構成制御部４００に出力する。
【０１４０】
構成制御部４００は、故障情報ＭＥＭＦＡＩＬに基づいて、図１７の下側に示すように、図６に示したマップ情報テーブル４０８を書き換える。そして、構成制御部４００は、書き換えたマップ情報テーブル４０８に基づいて、図１４の下側に示すように、図７に示した設定テーブル５００を書き換える。図１７の下側において、書き換えられた値は、太字で示す。
【０１４１】
これにより、仮想システムＩＤが１番のコンピュータシステムＳＹＳ１において、故障したメモリＭＥＭ３が空いているメモリＭＥＭ１に、人手を介することなく自動的に置き換えられる。なお、メモリＭＥＭの故障の場合、図１０に示した仮想化部２８０のアドレス変換テーブル２８６は書き換えられない。
【０１４２】
図１８は、図３に示したＣＰＵの電源投入時の動作の例を示す。図１８は、情報処理装置１１００に電源が投入された場合の動作のＣＰＵの動作と、故障したＣＰＵから置き換えられたＣＰＵの動作の両方を示す。なお、図１８の動作は、各ＣＰＵが、情報処理装置１１００の本来の機能を実現するユーザプログラムを実行する前の初期化ルーチンで実行される。また、図１８の動作の開始時に、各ＣＰＵに対応するレジスタＩ／Ｆ２４０のレジスタＲＥＧの内容は、図４に示した構成制御部４００により設定されている。
【０１４３】
まず、ステップＳ１１０において、電源が投入されたＣＰＵは、図９に示したレジスタＩ／Ｆ２４０のレジスタＲＥＧから自身のＣＰＵ情報ＣＰＵＩＤを読む。次にステップＳ１１２において、ＣＰＵは、レジスタＲＥＧから読んだＣＰＵ情報ＣＰＵＩＤに基づいて、コンピュータシステムの全体を管理するシステムＣＰＵであるか否かを判定する。例えば、ＣＰＵ情報ＣＰＵＩＤが”０”に設定されたＣＰＵは、システムＣＰＵであることを認識する。ＣＰＵがシステムＣＰＵの場合、処理はステップＳ１１４に移行し、ＣＰＵがシステムＣＰＵでない場合、処理はステップＳ１２８に移行する。なお、図１１に示したように、仮想システムＩＤに応じて構築されるコンピュータシステムの各々において、仮想ＩＤが０番のＣＰＵがシステムＣＰＵである。
【０１４４】
ステップＳ１１４において、システムＣＰＵは、レジスタＲＥＧの理由ビットＲを参照し、ＣＰＵの起動原因を取得する。次にステップＳ１１６において、システムＣＰＵは、理由ビットＲの値に基づいて、起動原因が他のＣＰＵの故障による交換によるものか否かを判定する。交換による起動の場合、処理はステップＳ１３４に移行し、交換による起動でない場合、すなわち、情報処理装置１１００に電源が投入された場合、処理はステップＳ１１８に移行する。
【０１４５】
ステップＳ１１８において、システムＣＰＵは、レジスタＲＥＧのＣＰＵ数情報ＮＣＰＵを参照し、自身を含むコンピュータシステムに属するＣＰＵの数を認識する。また、システムＣＰＵは、レジスタＩ／Ｆ２４０を介して仮想化部２８０のアドレス変換テーブル２８６にアクセスし、自分が属するコンピュータシステムに含まれる他のＣＰＵの情報（物理ＩＤ、仮想ＩＤ等）を取得する。なお、システムＣＰＵは、ステップＳ１１８において、自身に割り当てられたメモリＭＥＭの容量と、自身に接続されたＩ／Ｏ（Input/Output）デバイスの種類および数を、レジスタＩ／Ｆ２４０を介して取得してもよい。また、システムＣＰＵは、ステップＳ１１８において、自分が属するコンピュータシステムに含まれる他のＣＰＵが起動済みか否かをレジスタＩ／Ｆ２４０を介して取得してもよい。次に、ステップＳ１２０において、ＣＰＵは、ステップＳ１１８において取得した情報を、対応するレジスタＲＥＧに格納する。なお、ステップＳ１１８において取得した情報のうち、レジスタＲＥＧに格納する領域が割り当てられていない情報は、メモリＭＥＭに格納されてもよい。
【０１４６】
次に、ステップＳ１２２において、システムＣＰＵは、ステップＳ１１８で取得した情報に基づいて、自分が属するコンピュータシステムに含まれる他のＣＰＵがあるか否かを判定する。他のＣＰＵがある場合、処理はステップ１２４に移行し、他のＣＰＵがない場合、処理はステップＳ１３２に移行する。
【０１４７】
ステップＳ１２４において、システムＣＰＵは、レジスタＩ／Ｆ２４０のレジスタＲＥＧを用いて、他のＣＰＵの１つへ通信する。例えば、システムＣＰＵは、フラグＢがレディ状態を示す場合に、図９に示したレジスタＲＥＧにおける送信用のＣＰＵ情報ＴＣＰＵＩＤの領域に、他のＣＰＵの１つの論理ＩＤを書き込み、送信データＳＤＡＴＡの領域に通信の開始を示す情報を書き込む。システムＣＰＵは、ＣＰＵ情報ＴＣＰＵＩＤおよび送信データＳＤＡＴＡのレジスタＲＥＧへの書き込みによりビジー状態にセットされたフラグＢがレディ状態にリセットされることをモニタすることで、他のＣＰＵの１つへの通信が完了したと判断する。
【０１４８】
次に、ステップＳ１２６において、システムＣＰＵは、自分が属するコンピュータシステムに含まれる他の全てのＣＰＵに対する通信が完了したか否かを判定する。全てのＣＰＵに対する通信が完了した場合、処理はステップＳ１３２に移行し、通信が完了していないＣＰＵがある場合、処理はステップＳ１２４に戻る。
【０１４９】
ＣＰＵがシステムＣＰＵでない場合（すなわち、他のＣＰＵ）、ステップＳ１２８において、他のＣＰＵは、レジスタＲＥＧのフラグＶをモニタし、システムＣＰＵからの通信を待つ。次に、ステップＳ１３０において、他のＣＰＵは、フラグＶがセットされたか否かを判定し、フラグＶがセットされた場合、システムＣＰＵから通信の開始を示す情報を受信したか否かを判定する。通信の開始を示す情報を受信した場合、処理はステップＳ１３２に移行し、フラグＶがセットされない場合、処理はステップＳ１２８に戻る。
【０１５０】
なお、他のＣＰＵがレジスタＲＥＧのフラグＩを利用できる場合、他のＣＰＵは、割り込み要求の発生により、通信の開始を示す情報の受信を知ることができる。この場合、ＣＰＵは、ステップＳ１２８では、割り込み要求の発生を待つ処理を実行し、ステップＳ１３０では、受信したデータが通信の開始を示す情報を示すか否かを判定する。
【０１５１】
ステップＳ１３２において、システムＣＰＵのＯＳにより分配されたタスクにしたがって、システムＣＰＵおよび他のＣＰＵは、ユーザプログラムの実行を開始する。ユーザプログラムの開始により、各ＣＰＵの電源投入時の動作は完了する。
【０１５２】
一方、起動の要因が他のシステムＣＰＵの故障による交換による場合、コンピュータシステム内のＣＰＵ間の通信は既に確立されている。このため、ステップＳ１３４において、システムＣＰＵは、故障したシステムＣＰＵ（ＯＳ）が管理した情報をメモリＭＥＭから読み出す。例えば、システムＣＰＵは、コンピュータシステムに含まれるメモリＭＥＭの容量や、システムＣＰＵがユーザプログラムを実現するタスクを取り出すキューの先頭アドレスを、メモリＭＥＭから読み出す。ステップＳ１３４により、故障したシステムＣＰＵから置き換えられた新たなシステムＣＰＵは、故障したシステムＣＰＵと等価な動作を実行可能になる。
【０１５３】
図１９は、図５に示した構成制御部４００の動作の例を示す。例えば、図１９の動作は、構成制御部４００内のプロセッサが制御プログラムを実行することで実現される。
【０１５４】
まず、ステップＳ２１０において、構成制御部４００は、内蔵するＲＯＭ等の不揮発性メモリ装置から初期値を読み出し、読み出した初期値に基づいて、マップ情報テーブル４０８を初期状態に設定する。例えば、マップ情報テーブル４０８の初期状態は、図６に示した状態である。
【０１５５】
次に、ステップＳ２１２において、構成制御部４００は、初期状態に設定したマップ情報テーブル４０８に基づいて、図５に示した書き換え部４１０を制御し、設定テーブル５００を初期状態に設定する。また、構成制御部４００は、初期状態に設定したマップ情報テーブル４０８に基づいて、図５に示した書き換え部４１２を制御し、仮想化部２８０のアドレス変換テーブル２８６を初期状態に設定する。例えば、設定テーブル５００の初期状態は、図７に示した状態であり、アドレス変換テーブル２８６の初期状態は、図１１に示した状態である。
【０１５６】
次に、ステップＳ２１４において、構成制御部４００は、マップ情報テーブル４０８に基づいて、各レジスタＩ／Ｆ２４０のレジスタＲＥＧのＣＰＵ情報ＣＰＵＩＤおよびＣＰＵ数情報ＮＣＰＵを設定する。ＣＰＵ情報ＣＰＵＩＤおよびＣＰＵ数情報ＮＣＰＵの設定は、図４に示した仮想化部２８０を介して実行される。
【０１５７】
次に、ステップＳ２１６において、構成制御部４００は、マップ情報テーブル４０８に基づいて、コンピュータシステムとして動作させるＣＰＵ（アクティブなＣＰＵ）およびメモリＭＥＭ（アクティブなメモリ）に電源を投入する。
【０１５８】
図６に示した例では、システム識別ビットＳが”１”に設定された２つの行で、ＣＰＵ識別ビットＣが”１”に設定されたＣＰＵ０、ＣＰＵ１、ＣＰＵ３およびメモリ識別ビットＭが”１”に設定されたメモリＭＥＭ０、ＭＥＭ２、ＭＥＭ３に電源が投入される。電源の投入により、コンピュータシステムとして動作するＣＰＵは、図１８に示した動作を開始し、ユーザプログラムの実行を開始する。すなわち、ステップ２１６の実行後、コンピュータシステムは、各種センサを制御する制御装置、あるいは通信機器の中継装置などとして動作する。
【０１５９】
次に、ステップＳ２１８において、構成制御部４００は、図３に示したＣＰＵ監視部２６０からの故障情報ＣＰＵＦＡＩＬおよびメモリ監視部３６０からの故障情報ＭＥＭＦＡＩＬを監視する。次に、ステップＳ２２０において、構成制御部４００は、故障情報ＣＰＵＦＡＩＬに基づいてＣＰＵの故障が発生したか否かを判定し、故障情報ＭＥＭＦＡＩＬに基づいてメモリＭＥＭの故障が発生したか否かを判定する。ＣＰＵまたはメモリＭＥＭの故障が発生した場合、処理はステップＳ２２２に移行する。ＣＰＵおよびメモリＭＥＭの故障が発生していない場合、処理は、ステップＳ２１８に戻り、故障情報ＣＰＵＦＡＩＬ、ＭＥＭＦＡＩＬの監視を続ける。
【０１６０】
ステップＳ２２２において、構成制御部４００は、ＣＰＵの故障が発生した場合、処理をステップＳ２２４に移行し、ＣＰＵの故障が発生していない場合、メモリＭＥＭの故障が発生したと判定し、処理をステップＳ２３２に移行する。
【０１６１】
ＣＰＵの故障が発生した場合、ステップＳ２２４において、構成制御部４００は、図６に示したマップ情報テーブル４０８を参照して、未使用のＣＰＵがあるか否かを判定する。未使用のＣＰＵは、マップ情報テーブル４０８のシステム識別ビットＳが”１”に設定された全ての行で、全てのＣＰＵ識別ビットＣが”０”に設定されたＣＰＵである。例えば、図６に示したマップ情報テーブル４０８では、未使用のＣＰＵはＣＰＵ２である。未使用のＣＰＵがある場合、処理はステップＳ２２６に移行し、未使用のＣＰＵがない場合、処理はステップＳ２４６に移行する。
【０１６２】
ステップＳ２２６において、構成制御部４００は、マップ情報テーブル４０８を更新することで、未使用のＣＰＵの中から交換するＣＰＵを選択する。例えば、構成制御部４００は、マップ情報テーブル４０８を、図１４の上側に示す状態から図１４の下側に示す状態に変更する。なお、未使用のＣＰＵが複数個ある場合、例えば、ＩＤ番号の小さいＣＰＵが選択される。
【０１６３】
次に、ステップＳ２２８において、構成制御部４００は、更新されたマップ情報テーブル４０８に基づいて、各ＣＰＵ制御部２００のレジスタＲＥＧのＣＰＵ情報ＣＰＵＩＤを更新する。また、構成制御部４００は、各ＣＰＵ制御部２００の仮想化部２８０のアドレス変換テーブル２８６を更新する。例えば、構成制御部４００は、アドレス変換テーブル２８６を、図１４の上側に示す状態から図１４の下側に示す状態に変更する。
【０１６４】
次に、ステップＳ２３０において、構成制御部４００は、図５に示した電源制御部４１４を制御し、故障したＣＰＵと交換される未使用のＣＰＵに電源を投入する。
【０１６５】
一方、メモリＭＥＭの故障が発生した場合、ステップＳ２３２において、構成制御部４００は、メモリ監視部３６０からの故障情報ＭＥＭＦＡＩＬに基づいて、故障が訂正可能なエラーに起因するものであるか否かを判定する。訂正可能なエラーに起因する故障の場合、メモリＭＥＭは正しいデータを保持するため、処理はステップＳ２３４に移行する。訂正が困難なエラーに起因する故障の場合、メモリＭＥＭに保持されたデータが失われたおそれがあるため、処理はステップＳ２４６に移行する。
【０１６６】
ステップＳ２３４において、構成制御部４００は、マップ情報テーブル４０８を参照して、未使用のメモリＭＥＭがあるか否かを判定する。未使用のメモリＭＥＭは、マップ情報テーブル４０８のシステム識別ビットＳが”１”に設定された全ての行で、全てのメモリ識別ビットＭが”０”に設定されたメモリＭＥＭである。例えば、図６に示したマップ情報テーブル４０８では、未使用のメモリＭＥＭはメモリＭＥＭ１である。未使用のメモリＭＥＭがある場合、処理はステップＳ２３６に移行し、未使用のメモリＭＥＭがない場合、処理はステップＳ２４６に移行する。
【０１６７】
ステップＳ２３６において、構成制御部４００は、マップ情報テーブル４０８を更新することで、未使用のメモリＭＥＭの中から交換するメモリＭＥＭを選択する。例えば、構成制御部４００は、マップ情報テーブル４０８を、図１７の上側に示す状態から図１７の下側に示す状態に変更する。なお、未使用のメモリＭＥＭが複数個ある場合、例えば、ＩＤ番号の小さいメモリＭＥＭが選択される。
【０１６８】
次に、ステップＳ２３８において、構成制御部４００は、図５に示した電源制御部４１４を制御し、故障したメモリＭＥＭと交換される未使用のメモリＭＥＭに電源を投入する。
【０１６９】
次に、ステップＳ２４０において、構成制御部４００は、故障したメモリＭＥＭに格納されたデータを、交換される未使用のメモリＭＥＭにコピーする。例えば、メモリＭＥＭ間のコピー動作は、構成制御部４００と各メモリＭＥＭとの間に接続された信号線を用いて実行される。構成制御部４００がＤＭＡＣ（Direct Memory Access Controller）を有する場合、メモリＭＥＭ間のコピー動作は、ＤＭＡＣを用いて実行されてもよい。
【０１７０】
なお、メモリＭＥＭ間のコピー動作は、ＣＰＵ制御部２００、クロスバースイッチ７００およびメモリ制御部３００を介して実行されてもよい。この場合、構成制御部４００は、後述するステップＳ２４２により設定テーブル５００を更新する前に、故障したメモリＭＥＭに格納されたデータを読み出し、読み出したデータをシステム制御装置１００内のメモリ装置に保持する。そして、構成制御部４００は、ステップＳ２４２により設定テーブル５００を更新した後に、システム制御装置１００内のメモリ装置に保持したデータを、新たに割り当てられた未使用のメモリＭＥＭに書き込む。ＣＰＵ制御部２００、クロスバースイッチ７００およびメモリ制御部３００を介したメモリＭＥＭ間のコピー動作は、故障したメモリＭＥＭを含むコンピュータシステム内のＣＰＵにより実行されてもよい。この後、処理はステップＳ２４２に移行される。
【０１７１】
ステップＳ２４２において、構成制御部４００は、更新されたマップ情報テーブル４０８に基づいて、図７に示した設定テーブル５００を更新する。例えば、構成制御部４００は、設定テーブル５００を、図１４の上側に示す状態から図１４の下側に示す状態に変更し、あるいは、設定テーブル５００を、図１７の上側に示す状態から図１７の下側に示す状態に変更する。設定テーブル５００の更新により、故障したＣＰＵがコンピュータシステムから切り離され、交換される未使用のＣＰＵがコンピュータシステムに接続される。あるいは、設定テーブル５００の更新により、故障したメモリＭＥＭがコンピュータシステムから切り離され、交換される未使用のメモリＭＥＭがコンピュータシステムに接続される。
【０１７２】
次に、ステップＳ２４４において、構成制御部４００は、更新されたマップ情報テーブル４０８に基づいて、故障したＣＰＵまたは故障したメモリＭＥＭの電源を遮断する。
【０１７３】
一方、未使用のＣＰＵがない場合、未使用のメモリＭＥＭがない場合、あるいは、訂正不可能なエラーがメモリＭＥＭに発生した場合、ステップＳ２４６において、構成制御部４００は、コンピュータシステムにシステムエラーが発生したことを上位の装置に通知する。
【０１７４】
以上、この実施形態においても、上述した実施形態と同様に、故障によるＣＰＵの交換の前後で、コンピュータシステムＳＹＳ内のＣＰＵの設定を維持でき、ＣＰＵの交換の前後で、同じ手続によりＣＰＵ間の通信が可能である。また、外部からの制御や操作を伴うことなく、ＣＰＵを自動的に未使用のＣＰＵに置き換え可能にでき、情報処理装置１１００の信頼性を従来に比べて向上できる。
【０１７５】
例えば、故障したＣＰＵが未使用のＣＰＵに置き換えられる場合に、構成制御部４００が、マップ決定部４０６の決定にしたがってアドレス変換テーブル２８６を書き換えることで、ＣＰＵの交換の前後で、同じ手続によりＣＰＵ間の通信が可能である。また、アドレス変換テーブル２８６（図１１）が、複数のコンピュータシステムを識別する仮想システムＩＤの領域を有するため、情報処理装置１１００内に複数のコンピュータシステムを構築できる。
【０１７６】
また、構成制御部４００の電源制御部４１４（図５）により、未使用あるいは故障したＣＰＵの電源を遮断することで、情報処理装置１１００の消費電力を、電源を遮断しない場合に比べて削減できる。
【０１７７】
さらに、アドレス変換部２８４（図１０）が、フリップフロップＦＦ２、ＦＦ４間に配置されるため、アドレス変換部２８４の変換動作の時間に拘わりなく、変換された物理ＩＤを送信データＳＤＡＴＡに対して遅れることなく内部バスＩＢＵＳに出力できる。
【０１７８】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０１７９】
１００‥システム制御装置；２００‥ＣＰＵ制御部；２２０‥メモリＩ／Ｆ；２４０‥レジスタＩ／Ｆ；２６０‥ＣＰＵ監視部；２６２‥タイマ；２６４‥モニタ部；２６６‥リセット部；２８０‥仮想化部；２８２‥分離部；２８４‥アドレス変換部；２８６‥アドレス変換テーブル；２８８‥合成部；３００‥メモリ制御部；３２０‥メモリＩ／Ｆ；３４０‥エラー検出訂正部；３６０‥メモリ監視部；４００‥構成制御部；４０２‥故障受信部；４０４‥マップ制御部；４０６‥マップ決定部；４０８‥マップ情報テーブル；４１０、４１２‥書き換え部；４１４‥電源制御部；５００‥設定テーブル；６００‥スイッチ制御部；７００‥クロスバースイッチ；１０００、１１００‥情報処理装置；ＣＮＴ１、ＣＮＴ２、ＣＮＴ３‥制御部；ＣＰＵＦＡＩＬ‥故障情報；ＣＰＵＩＤ‥ＣＰＵ情報；ＣＰＵＰＷＲ‥制御情報；ＩＢＵＳ‥内部バス；Ｌ０、Ｌ１‥論理番号；ＭＥＭ‥メモリ；ＭＥＭＦＡＩＬ‥故障情報；ＭＥＭＰＷＲ‥制御情報；ＮＣＰＵ‥ＣＰＵ数情報；ＮＥＷＭＡＰ‥マップ情報；Ｐ０、Ｐ１、Ｐ２‥物理番号；ＲＤＡＴＡ‥受信データ；ＲＥＧ‥レジスタ；ＳＣＰＵＩＤ‥ＣＰＵ情報；ＳＤＡＴＡ‥送信データ；ＳＴ‥起動情報；ＳＷ‥スイッチ部；ＳＹＳ‥コンピュータシステム；ＴＢＬ‥テーブル；ＴＣＰＵＩＤ‥ＣＰＵ情報；ＵＰＤ‥更新情報
【図１】
2014146254.tif 000003
【図２】
2014146254.tif 000004
【図３】
2014146254.tif 000005
【図４】
2014146254.tif 000006
【図５】
2014146254.tif 000007
【図６】
2014146254.tif 000008
【図７】
2014146254.tif 000009
【図８】
2014146254.tif 000010
【図９】
2014146254.tif 000011
【図１０】
2014146254.tif 000012
【図１１】
2014146254.tif 000013
【図１２】
2014146254.tif 000014
【図１３】
2014146254.tif 000015
【図１４】
2014146254.tif 000016
【図１５】
2014146254.tif 000017
【図１６】
2014146254.tif 000018
【図１７】
2014146254.tif 000019
【図１８】
2014146254.tif 000020
【図１９】
2014146254.tif 000021