(57)【要約】  スイッチＬＳＩ（２０）は、ＣＰＵ（１０）からメモリ（１４）に対するメモリアクセス要求を受信すると、メモリアクセス要求をメモリアクセス信号に変換して送信する。ここで、スイッチＬＳＩ（２１）は、ＣＰＵ（１０）が発行したメモリアクセス要求をメモリアクセス信号に変換する。また、スイッチＬＳＩ（２１）は、スイッチＬＳＩ（２０）が出力したメモリアクセス信号を取得する。そして、スイッチＬＳＩ（２１）は、自装置が変換したメモリアクセス信号が示すメモリアクセスの内容と、取得したメモリアクセス信号が示すメモリアクセスの内容とを比較する。その後、スイッチＬＳＩ（２１）は、各メモリアクセスの内容が一致しない場合は、スイッチＬＳＩ（２０）が故障したと判別する。
2014002174.tif 000002
【特許請求の範囲】
【請求項１】
受信したメモリアクセス要求に応じて記憶したデータを出力する記憶装置と、
前記記憶装置が出力するデータに対して演算を行う演算処理装置と、
前記演算処理装置が発行したメモリアクセス要求をメモリアクセス信号に変換する第１の変換部と、前記第１の変換部が変換したメモリアクセス信号を前記記憶装置に送信する送信部とを備える第１の変換装置と、
前記演算処理装置が発行したメモリアクセス要求をメモリアクセス信号に変換する第２の変換部と、前記第１の変換装置が前記記憶装置に送信したメモリアクセス信号を取得する第１の取得部と、前記第２の変換部が変換したメモリアクセス信号によるメモリアクセスの内容と、前記第１の取得部が取得したメモリアクセス信号によるメモリアクセスの内容とを比較し、各メモリアクセス信号によるメモリアクセスの内容が一致しない場合は、前記第１の変換装置が故障したと判別する判別部とを備える第２の変換装置と、
を有することを特徴とする情報処理装置。
【請求項２】
前記判別部は、前記第２の変換部が変換したメモリアクセス信号によりメモリアクセスの対象となるメモリアドレスと、前記第１の取得部が取得したメモリアクセス信号によりメモリアクセスの対象となるメモリアドレスとが一致しない場合には、前記第１の変換装置が故障したと判別することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第１の変換装置は、
前記記憶装置から読み出されたデータを前記演算処理装置に送信する応答信号に変換する第３の変換部と、前記第３の変換部によって変換された応答信号を前記演算処理装置へ送信する第２の送信部とを備え、
前記第２の変換装置は、
前記記憶装置から読み出されたデータを前記応答信号に変換する第４の変換部と、前記第１の変換装置が前記演算処理装置に送信した応答信号を取得する第２の取得部とを備え、
前記判別部は、前記第４の変換部が変換した応答信号による応答の内容と、前記第２の取得部が取得した応答信号による応答の内容とを比較し、各応答信号による応答の内容が一致しない場合は、前記第１の変換装置が故障したと判別することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記判別部は、前記第４の変換部が変換した応答信号により前記演算処理装置に送信されるデータの内容と、前記第２の取得部が取得した応答信号により前記演算処理装置に送信されるデータの内容とが一致しない場合には、前記第１の変換装置が故障したと判別することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記情報処理装置は、
複数の前記演算処理装置と、
複数の前記記憶装置と
を有し、
前記判別部は、前記第２の変換部が変換したメモリアクセス信号の送信先となる記憶装置と、前記取得部が取得したメモリアクセス信号の送信先となる記憶装置とが一致しない場合は、前記第１の変換装置が故障したと判別することを特徴とする請求項１または２に記載の情報処理装置。
【請求項６】
前記判別部は、前記第２の変換部が変換したメモリアクセス信号の内容を記憶し、前記第１の取得部が取得して前記第２の変換部が変換したメモリアクセス信号によるメモリアクセスの内容を識別し、当該識別した内容と一致する内容を記憶している場合には、当該内容を消去するとともに、前記第１の変換装置が故障していないと判別し、前記識別した内容と一致する内容を記憶していない場合には、前記第１の変換装置が故障したと判別することを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記情報処理装置は、前記第１の変換装置が故障したと前記判別部が判別した場合には、前記第１の変換装置の切り離しを行う制御装置を有することを特徴とする請求項１または２に記載の情報処理装置。
【請求項８】
前記情報処理装置は、
前記第１の変換装置と前記第２の変換装置と前記演算処理装置とを接続する第１のバスと、
前記第１の変換装置と前記第２の変換装置と前記記憶装置とを接続する第２のバスとを有し、
前記第２の変換装置は、前記第１のバスを介して前記演算処理装置が発行したメモリアクセス要求をスヌープし、前記第２のバスを介して前記第１の変換装置が送信したメモリアクセス信号をスヌープすることを特徴とする請求項１または２に記載の情報処理装置。
【請求項９】
受信したメモリアクセス要求に応じて記憶したデータを出力する記憶装置と、前記記憶装置が出力するデータに対して演算を行う演算処理装置と、前記記憶装置と前記演算処理装置に接続される第１の変換装置と、前記記憶装置と前記演算処理装置に接続される第２の変換装置とを有する情報処理装置の故障検出方法において、
前記演算処理装置が発行したメモリアクセス要求を前記第１の変換装置が有する第１の変換部が、メモリアクセス信号に変換し、
前記第１の変換部が変換したメモリアクセス信号を、前記第１の変換装置が有する送信部、前記記憶装置に送信し、
前記演算処理装置が発行したメモリアクセス要求を、前記第２の変換装置が有する第２の変換部が、メモリアクセス信号に変換し、
前記第１の変換装置が前記記憶装置に送信したメモリアクセス信号を、前記第２の変換装置が有する取得部が取得し、
前記第２の変換装置が有する判別部が、前記第２の変換部が変換したメモリアクセス信号によるメモリアクセスの内容と、前記第１の取得部が取得したメモリアクセス信号によるメモリアクセスの内容とを比較し、各メモリアクセス信号によるメモリアクセスの内容が一致しない場合は、前記第１の変換装置が故障したと判別することを特徴とする情報処理装置の故障検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および情報処理装置の故障検出方法に関する。
【背景技術】
【０００２】
従来、演算処理装置とメモリとを接続するスイッチの技術が知られている。このようなスイッチの一例として、複数の演算処理装置としてのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）および複数の記憶装置としてのメモリと接続され、切り替えにより、任意のＣＰＵと任意のメモリとの間を接続するスイッチが知られている。【０００３】
以下、図１１を用いて、このようなスイッチの一例を説明する。図１１は、ＣＰＵとメモリとを接続するスイッチの一例を説明するための図である。図１１に示す情報処理装置６０は、複数のＣＰＵ６１〜６４、スイッチ６５、複数のメモリ６６〜６９を有する。また、スイッチ６５は、各ＣＰＵ６１〜６４およびメモリ６６〜６９と接続されている。【０００４】
例えば、スイッチ６５は、利用者からＣＰＵ６１とメモリ６６との間を接続する旨の指定を受付けると、ＣＰＵ６１とメモリ６６との間を接続し、ＣＰＵ６１とメモリ６６とが送受信するデータの中継を行う。また、例えば、スイッチ６５は、利用者からＣＰＵ６２とメモリ６７およびメモリ６８との間を接続する旨の指定を受付けると、ＣＰＵ６２とメモリ６７との間、およびＣＰＵ６２とメモリ６８との間を接続し、ＣＰＵ６２とメモリ６７およびメモリ６８とが送受信するデータの中継を行う。このように、スイッチ６５は、指定された任意のＣＰＵとメモリとを組み合わせることで、情報処理装置６０のシステムの柔軟性を向上させる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−３３７７５８号公報
【特許文献２】特開２００１−３１８９０１号公報
【非特許文献】
【０００６】
【非特許文献１】天野英晴著「並列コンピュータ（Ｐａｒａｌｌｅｌ  Ｃｏｍｐｕｔｅｒｓ）  情報系教科書シリーズ  第１８巻」株式会社昭晃堂、１９９６年６月５日、ｐ．８−９ｐ
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、ＣＰＵとメモリとの間を１つのスイッチが接続する技術では、スイッチが故障するとメモリアクセスができなくなり、故障が全てのＣＰＵに波及してしまうので、情報処理装置の信頼性が低くなるという問題があった。【０００８】
なお、信頼性を向上させるため、ＣＰＵとメモリとの間を接続するスイッチを多重化し、運用系のスイッチが故障した場合は、待機系のスイッチを用いて処理を継続する方法も考えられる。しかしながら、ＣＰＵとメモリとの間を接続するスイッチを多重化した場合には、運用系のスイッチから故障を検出する手法や、適切なタイミングで運用系のスイッチを切り換える手法の実現が求められる。【０００９】
１つの実施形態では、本発明は、情報処理装置の信頼性の向上を目的とする。
【課題を解決するための手段】
【００１０】
１つの実施形態では、受信したメモリアクセス要求に応じて記憶したデータを出力する記憶装置と、記憶装置が出力するデータに対して演算を行う演算処理装置とを有する情報処理装置である。また、情報処理装置は、演算処理装置が発行したメモリアクセス要求をメモリアクセス信号に変換する第１の変換部と、第１の変換部が変換したメモリアクセス信号を記憶装置に送信する送信部とを備える第１の変換装置を有する。また、情報処理装置は、演算処理装置が発行したメモリアクセス要求をメモリアクセス信号に変換する第２の変換部と、第１の変換装置が前記記憶装置に送信したメモリアクセス信号を取得する第１の取得部とを有する第２の変換装置を有する。ここで、第２の変換装置は、第２の変換部が変換したメモリアクセス信号によるメモリアクセスの内容と、第１の取得部が取得したメモリアクセス信号によるメモリアクセスの内容とを比較し、各メモリアクセス信号によるメモリアクセスの内容が一致しない場合は、第１の変換装置が故障したと判別する判別部を備える。
【発明の効果】
【００１１】
１つの実施形態では、情報処理装置の信頼性を向上させることができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施例１に係る情報処理装置の一例を説明するための図である。
【図２】図２は、実施例１に係るＣＰＵとスイッチＬＳＩ、およびスイッチＬＳＩとメモリとを接続するバスの一例を説明するための図である。
【図３】図３は、実施例１に係るスイッチＬＳＩの機能構成の一例を説明するための図である。
【図４】図４は、実施例１に係るスイッチＬＳＩが信号を送受信する処理を説明するための図である。
【図５】図５は、実施例１に係るスイッチＬＳＩが待機系のスイッチとして動作する際に実行する処理を説明するための図である。
【図６】図６は、データキュー比較部の比較内容を説明するための図である。
【図７】図７は、ポート制御回路の一例を説明するための図である。
【図８】図８は、各スイッチＬＳＩが実行する処理の流れを説明するための第１のフローチャートである。
【図９】図９は、各スイッチＬＳＩが実行する処理の流れを説明するための第２のフローチャートである。
【図１０】図１０は、実施例１に係るデータマッチング部が実行する処理の流れを説明するためのフローチャートである。
【図１１】図１１は、ＣＰＵとメモリとを接続するスイッチの一例を説明するための図である。
【発明を実施するための形態】
【００１３】
以下に添付図面を参照して本願に係る情報処理装置および情報処理装置の故障検出方法について説明する。
【実施例１】
【００１４】
以下の実施例１では、図１を用いて、情報処理装置の一例を説明する。図１は、実施例１に係る情報処理装置の一例を説明するための図である。なお、情報処理装置１は、少なくとも複数のＣｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）を有し、演算処理を実行する情報処理装置であり、例えば、ビルディングブロック、ブレード、サーバ等である。【００１５】
図１に示すように、情報処理装置１は、複数のＣＰＵ１０〜１３、複数のメモリ１４〜１７、制御装置１８、スイッチＬＳＩ２０、スイッチＬＳＩ２１を有する。また、各ＣＰＵ１０〜１３は、それぞれスイッチＬＳＩ２０およびスイッチＬＳＩ２１とバスで接続されている。【００１６】
また、各メモリ１４〜１７は、それぞれスイッチＬＳＩ２０およびスイッチＬＳＩ２１とバスで接続されている。また、制御装置１８は、スイッチＬＳＩ２０およびスイッチＬＳＩ２１と接続されており、例えば、Ｉｎｔｅｒ−Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ（Ｉ２Ｃ）等を介して、スイッチＬＳＩ２０およびスイッチＬＳＩ２１の制御を行う。【００１７】
なお、図１では記載を省略したが、情報処理装置１は、図１に図示した各部１０〜２１の他にも、他の情報処理装置と通信を行うためのインタフェース等を有してもよい。また、情報処理装置１は、ＣＰＵ１０〜１３以外にも複数のＣＰＵを有しても良く、メモリ１４〜１７以外にも複数のメモリを有してもよい。また、以下の説明では、ＣＰＵ１１〜１３は、ＣＰＵ１０と同様の機能を発揮するものとして、説明を省略する。また、メモリ１５〜１７は、メモリ１４と同様の機能を発揮するものとして、説明を省略する。【００１８】
ＣＰＵ１０は、メモリ１４〜１７が記憶するデータを用いて演算処理を実行する演算処理装置である。具体的には、ＣＰＵ１０は、メモリ１４〜１７が記憶するデータの読み出しを行う場合は、データの読み出しを要求するメモリアクセス要求をスイッチＬＳＩ２０に対して発行する。そして、ＣＰＵ１０は、スイッチＬＳＩ２０から読み出し対象となるデータを受信した場合は、受信したデータを用いて演算処理を行う。また、ＣＰＵ１０は、メモリ１４〜１７にデータの書き込みを行う場合は、データの書き込みを要求するメモリアクセス要求をスイッチＬＳＩ２０に対して発行する。【００１９】
ここで、ＣＰＵ１０は、バスを介して、スイッチＬＳＩ２０にメモリアクセス要求を送信する。データの読み出しや書き込みの対象となるメモリアドレスと、メモリアクセスの内容がデータの読み出しであるか書き込みであるかを示す情報と、書き込み対象となるデータ等を含むメモリアクセス要求をバスに出力する。そして、ＣＰＵ１０は、バスを介して、スイッチＬＳＩ２０から読み込み対象となるデータを取得する。【００２０】
メモリ１４は、ＣＰＵ１０〜１３が演算処理に用いるデータを記憶する記憶装置であり、例えば、Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＳＤＲＡＭ)である。また、例えば、メモリ１４は、バスを介して、データの読み出しを指示するメモリアクセス信号をスイッチＬＳＩ２０から受信すると、読み出し対象となるデータをバスに出力する。また、メモリ１４は、バスを介して、データの書き込みの指示と書き込み対象となるデータを含むメモリアクセス信号をスイッチＬＳＩ２０から受信すると、受信したメモリアクセス信号が示す内容に従って、データの書き込みを行う。【００２１】
制御装置１８は、スイッチＬＳＩ２０およびスイッチＬＳＩ２１の制御を行う。具体的には、制御装置１８は、スイッチＬＳＩ２０を運用系のスイッチとして動作させ、スイッチＬＳＩ２１を待機系のスイッチとして動作させる。また、制御装置１８は、スイッチＬＳＩ２０が故障したとスイッチＬＳＩ２１が判別した場合には、スイッチＬＳＩ２０の切り離しを行い、スイッチＬＳＩ２１を運用系のスイッチとして動作させる。なお、制御装置１８は、故障確率の小さい単純なロジックにより実装される。【００２２】
スイッチＬＳＩ２０は、ＣＰＵ１０〜１３およびメモリ１４〜１７とバスを介して接続され、指定されたＣＰＵとメモリとの間を接続し、データの中継を行う。具体的には、スイッチＬＳＩ２０は、運用系のスイッチＬＳＩとして、利用者が設定したＣＰＵとメモリとの間を接続する。例えば、スイッチＬＳＩ２０は、ＣＰＵ１０とメモリ１４〜１６とを接続するように利用者が設定した場合は、ＣＰＵ１０が発行したメモリアクセス要求に従って、メモリ１４〜１６に対するメモリアクセスを行う。そして、スイッチＬＳＩ２０は、メモリ１４〜１６が出力したデータをリプライ信号に変換してＣＰＵ１０へ送信する。【００２３】
また、スイッチＬＳＩ２０は、バスを介して、ＣＰＵ１０が発行したメモリアクセス要求を受信すると、受信したメモリアクセス要求を、メモリ１４に対して出力するメモリアクセス信号に変換する。そして、スイッチＬＳＩ２０は、メモリアクセス信号をメモリ１４に対して出力する。【００２４】
ここで、図２は、実施例１に係るＣＰＵとスイッチＬＳＩ、およびスイッチＬＳＩとメモリとを接続するバスの一例を説明するための図である。なお、図２では、図が煩雑になるのを防ぐため、ＣＰＵ１０、スイッチＬＳＩ２０、メモリ１４を接続するバスについて記載したが、スイッチＬＳＩ２０は、図２と同様のバスを介して、他のＣＰＵ１１〜１３およびメモリ１４〜１７と接続されているものとする。【００２５】
図２に示す例では、メモリ１４は、複数のメモリチップ１４ａ〜１４ｄを有する。また、ＣＰＵ１０とスイッチＬＳＩ２０とは、ＣＫＥ、＃ＣＳ、＃ＲＡＳ、＃ＣＡＳ、＃ＷＥ、Ａ［２０：０］、ＢＡ［２：０］、ＤＱ［３１：０］、ＤＱＭ［３：０］を伝達する信号線を有するバスで接続されている。【００２６】
ここで、ＣＫＥとは、クロックが有効であるか否かを示すクロックイネーブル信号（Ｃｌｏｃｋ  Ｅｎａｂｌｅ）である。また、＃ＣＳとは、書き込み対象となるメモリチップを示すチップセレクト信号（Ｃｈｉｐ  Ｓｅｌｅｃｔ）信号である。また、＃ＲＡＳとは、コマンドビットであるローアドレスストローブ（Ｒｏｗ  Ａｄｄｒｅｓｓ  Ｓｔｒｏｂｅ）信号である。また、＃ＣＡＳとは、コマンドビットであるカラムアドレスストローブ（Ｃｏｌｕｍｎ  Ａｄｄｒｅｓｓ  Ｓｔｒｏｂｅ）信号である。【００２７】
また、＃ＷＥとは、＃ＲＡＳと＃ＣＡＳと組み合わせてコマンドを指定するライトイネーブル（Write  Enable）信号であり、基本的には、メモリアクセスの要求が読み出しであるか書込みであるかを示す。また、Ａ［２０：０］とは、２１ビットのアドレスを示す信号である。また、ＢＡ［２：０］とは、読み込みの対象、若しくは書き込みの対象となるバンクを選択するバンクアドレス（Bank  Address）信号である。また、ＤＱ［３１：０］とは、３２ビットのデータ信号である。また、ＤＱＭ［３：０］とは、データマスク信号である。【００２８】
また、スイッチＬＳＩ２０は、図２に示すバスを介してメモリ１４が有する各メモリチップ１４ａ〜１４ｄに対するデータの書き込みや、各メモリチップ１４ａ〜１４ｄからのデータの読み出しを行う。なお、スイッチＬＳＩ２０とメモリ１４とを接続するバスのうちＥ［７：０］とは、イネーブル（Enable）信号である。【００２９】
図１に戻って、スイッチＬＳＩ２１は、スイッチＬＳＩ２０が故障した際に、スイッチＬＳＩ２０に変わって、ＣＰＵ１０〜１３、および、メモリ１４〜１７の間を切り換えにより接続する。具体的には、スイッチＬＳＩ２１は、図２に示したＣＰＵ１０とスイッチＬＳＩ２０とを接続するバスを介して、ＣＰＵ１０と接続する。また、スイッチＬＳＩ２１は、図２に示したスイッチＬＳＩ２０とメモリ１４とを接続するバスを介して、メモリ１４と接続する。【００３０】
すなわち、スイッチＬＳＩ２０およびスイッチＬＳＩ２１は、共通のバスを介して、ＣＰＵ１０と接続し、他のＣＰＵ１１〜１３についても同様に、共通のバスを介して、各ＣＰＵ１１〜１３と接続する。また、スイッチＬＳＩ２０およびスイッチＬＳＩ２１は、共通のバスを介してメモリ１４と接続し、他のメモリ１５〜１７についても同様に、共通のバスを介して、各メモリ１５〜１７と接続する。このため、スイッチＬＳＩ２１は、バス上を流れる信号をスヌープすることで、ＣＰＵ１０が出力したメモリアクセス要求や、スイッチＬＳＩ２０が出力した信号、メモリ１４から読み出されたデータを取得する。【００３１】
そして、スイッチＬＳＩ２１は、ＣＰＵ１０が出力したメモリアクセス要求からメモリ１４に送信するメモリアクセス信号を生成する。また、スイッチＬＳＩ２１は、スイッチＬＳＩ２０が出力したメモリアクセス信号をバスからスヌープし、自装置が生成したメモリアクセス信号が示すメモリアクセスの内容と、バスからスヌープしたメモリアクセス信号が示すメモリアクセスの内容とを比較する。そして、スイッチＬＳＩ２１は、各メモリアクセス信号が示すメモリアクセスの内容が一致しない場合には、スイッチＬＳＩ２０が故障したと判別し、制御装置１８にスイッチＬＳＩ２０が故障した旨を通知する。【００３２】
また、スイッチＬＳＩ２１は、メモリ１４〜１７から読み出されたデータをバスからスヌープし、スヌープしたデータをリプライ信号に変換する。また、スイッチＬＳＩ２１は、スイッチＬＳＩ２０がメモリ１４〜１７から読み出したデータを含むリプライ信号をバスからスヌープする。そして、スイッチＬＳＩ２１は、変換したリプライ信号が示すデータの内容と、バスからスヌープしたリプライ信号が示すデータの内容とが一致していない場合には、スイッチＬＳＩ２０が故障したと判別し、制御装置１８にスイッチＬＳＩ２０の故障を通知する。【００３３】
すると、制御装置１８は、スイッチＬＳＩ２０の切り離しを行うと共に、スイッチＬＳＩ２１を運用系のスイッチに設定する。すると、スイッチＬＳＩ２１は、運用系のスイッチとして、各ＣＰＵ１０〜１３とメモリ１４〜１７との間の接続を行う。【００３４】
なお、上述した説明では、スイッチＬＳＩ２０が運用系のスイッチであり、スイッチＬＳＩ２１が待機系のスイッチとして動作する例について説明したが、実施例はこれに限定されるものではない。すなわち、スイッチＬＳＩ２１が運用系のスイッチとして動作し、スイッチＬＳＩ２０が待機系のスイッチとして動作してもよい。【００３５】
次に、図３を用いて、スイッチＬＳＩ２０の機能構成について説明する。図３は、実施例１に係るスイッチＬＳＩの機能構成の一例を説明するための図である。なお、スイッチＬＳＩ２１は、スイッチＬＳＩ２０と同様の機能構成を有するものとして、以下の説明を省略する。また、以下の説明では、スイッチＬＳＩ２０は、運用系のスイッチとして動作する機能とともに、待機系のスイッチとして動作する機能を有するものとする。【００３６】
図３に示すように、スイッチＬＳＩ２０は、モードレジスタ２２、複数のＣＰＵ入出力ポート２３〜２６、複数のポート制御回路２７〜３０、複数のポート制御回路３１〜３４、複数のメモリ入出力ポート３５〜３８を有する。また、スイッチＬＳＩ２０は、設定テーブル記憶部３９、スイッチ制御部４０、クロスバスイッチ４１、データマッチング部４２、制御インタフェース４３を有する。【００３７】
なお、ＣＰＵ入出力ポート２４〜２６は、ＣＰＵ入出力ポート２３と同様の処理を実行することで、それぞれＣＰＵ１１〜１３とスイッチＬＳＩ２０との間で送受信する信号の送受信を行うものとし、以下の説明を省略する。また、ポート制御回路３２〜３４は、ポート制御回路２７と同様の機能を発揮するものとして、以下の説明を省略する。また、ポート制御回路３２〜３４は、ポート制御回路３１と同様の機能を発揮するものとして、以下の説明を省略する。また、メモリ入出力ポート３６〜３８は、メモリ入出力ポート３５と同様の機能を発揮するものとして、以下の説明を省略する。【００３８】
モードレジスタ２２は、スイッチＬＳＩ２０が運用系のスイッチであるか待機系のスイッチであるかを示す情報を格納するレジスタである。例えば、モードレジスタ２２は、スイッチＬＳＩ２０を運用系のスイッチとして動作させる場合には、Ａｃｔｉｖｅである旨を示す値「１」が格納される。また、モードレジスタ２２は、スイッチＬＳＩ２０を待機系のスイッチとして動作させる場合には、Ｂａｃｋｕｐである旨を示す値「０」が格納される。【００３９】
ＣＰＵ入出力ポート２３は、バスを介して、ＣＰＵ１０との間で信号の送受信を行うポートである。具体的には、ＣＰＵ入出力ポート２３は、モードレジスタ２２に格納された値が「１」である場合、すなわち、スイッチＬＳＩ２０が運用系のスイッチである場合には、以下の処理を実行する。【００４０】
まず、ＣＰＵ入出力ポート２３は、バスを介して、ＣＰＵ１０が出力したメモリアクセス要求を受信すると、受信したメモリアクセス要求をポート制御回路２７に出力する。また、ＣＰＵ入出力ポート２３は、メモリ１４〜１７から読み出したデータを変換したリプライ信号をポート制御回路２７から受信すると、バスを介して、リプライ信号をＣＰＵ１０に送信する。【００４１】
一方、ＣＰＵ入出力ポート２３は、モードレジスタ２２に格納された値が「０」である場合、すなわち、スイッチＬＳＩ２０が待機系のスイッチである場合には、以下の処理を実行する。まず、ＣＰＵ入出力ポート２３は、バスを介して、ＣＰＵ１０が出力したメモリアクセス要求をスヌープし、スヌープしたメモリアクセス要求をポート制御回路２７に送信する。また、ＣＰＵ入出力ポート２３は、バスを介して、運用系のスイッチＬＳＩ２１がＣＰＵ１０に対して出力したリプライ信号をスヌープする。そして、ＣＰＵ入出力ポート２３は、スヌープしたリプライ信号をポート制御回路２７に出力する。【００４２】
ポート制御回路２７は、ＣＰＵ１０とスイッチＬＳＩ２０とが信号の送受信を行うポートの制御回路である。具体的には、ポート制御回路２７は、モードレジスタ２２に格納された値が「１」である場合、すなわち、スイッチＬＳＩ２０が運用系のスイッチである場合には、以下の処理を実行する。【００４３】
まず、ポート制御回路２７は、ＣＰＵ入出力ポート２３が受信したメモリアクセス要求をスイッチＬＳＩ２０の内部におけるメモリアクセス要求に変換する。そして、ポート制御回路２７は、クロスバスイッチ４１を介して、メモリアクセス要求の送出先となるメモリに応じたポートのポート制御回路３１〜３４に送信する。例えば、ポート制御回路２７は、メモリアクセス要求の送信先がメモリ１４である場合には、ポート制御回路３１に変換後のメモリアクセス要求を送信する。【００４４】
また、ポート制御回路２７は、クロスバスイッチ４１を介して、メモリ１４〜１７から読み出されたデータを受信すると、受信したデータをＣＰＵ１０へ送信するリプライ信号に変換する。そして、ポート制御回路２７は、変換後のリプライ信号をＣＰＵ入出力ポート２３へ送信する。【００４５】
一方、ポート制御回路２７は、データマッチング部３０に格納された値が「０」である場合、すなわち、スイッチＬＳＩ２０が待機系のスイッチである場合には、以下の処理を実行する。【００４６】
まず、ポート制御回路２７は、ＣＰＵ入出力ポート２３がバスからスヌープしたメモリアクセス要求を受信すると、受信したメモリアクセス要求をスイッチＬＳＩ２０の内部におけるメモリアクセス要求に変換する。そして、ポート制御回路２７は、メモリアクセス要求の送信となるメモリに応じたポートのポート制御回路に対して、変換したメモリアクセス要求を送信する。【００４７】
また、ポート制御回路２７は、ＣＰＵ入出力ポート２３がスヌープしたリプライ信号、すなわち、運用系のスイッチＬＳＩ２１が出力したリプライ信号を受信すると、受信したリプライ信号をデータマッチング部４２へ送信する。また、ポート制御回路２７は、クロスバスイッチ４１を介して、メモリ入出力ポート３５〜３８のいずれかが、スイッチＬＳＩ２０およびスイッチＬＳＩ２１と各メモリ１４〜１７とを接続するバスからスヌープしたデータを受信する。すると、ポート制御回路２７は、受信したデータをリプライ信号に変換し、変換後のリプライ信号をデータマッチング部４２へ送信する。【００４８】
ポート制御回路３１は、メモリ１４とスイッチＬＳＩ２０とが信号を送受信するポートを制御する制御回路である。具体的には、ポート制御回路３１は、モードレジスタ２２に格納された値が「１」である場合には、以下の処理を実行する。まず、ポート制御回路３１は、クロスバスイッチ４１を介して、メモリ１４に対するメモリアクセス要求を受信する。すると、ポート制御回路３１は、受信したメモリアクセス要求を、メモリに送信するメモリアクセス信号に変換し、変換後のメモリアクセス信号をメモリ入出力ポート３５に送信する。【００４９】
また、ポート制御回路３１は、メモリ１４から読み出されたデータをメモリ入出力ポート３５から受信した場合には、受信したデータをスイッチＬＳＩ２０内部におけるデータに変換する。そして、ポート制御回路３１は、クロスバスイッチ４１を介して、変換後のデータを対応するメモリアクセス要求を発行したＣＰＵと接続するポートのポート制御回路へ送信する。【００５０】
一方、ポート制御回路３１は、モードレジスタ２２に格納された値が「０」である場合には、以下の処理を実行する。まず、ポート制御回路３４は、メモリ入出力ポート３５がバスを介してスヌープしたメモリアクセス信号、すなわち、運用系のスイッチＬＳＩ２１がメモリ１４に対して出力したメモリアクセス信号を受信する。すると、ポート制御回路３１は、メモリアクセス信号をデータマッチング部４２に送信する。【００５１】
また、ポート制御回路３１は、メモリ入出力ポート３５がバスを介してスヌープしたデータ、すなわち、メモリ１４から読み出されたデータを受信すると、受信したデータをスイッチＬＳＩ２０の内部的なデータに変換する。そして、ポート制御回路３１は、受信したデータの送信先となるＣＰＵと接続するポートのポート制御回路に対し、クロスバスイッチ４１を介して、変換後のデータを送信する。【００５２】
また、ポート制御回路３４は、クロスバスイッチ４１を介して、何れかのＣＰＵ入出力ポート２３〜２６がスヌープしたメモリアクセス要求、すなわち、各ＣＰＵ１０〜１３が出力したメモリアクセス要求を受信する。すると、ポート制御回路３１は、受信したメモリアクセス要求をメモリアクセス信号に変換し、変換後のメモリアクセス信号をデータマッチング部４２へ送信する。【００５３】
メモリ入出力ポート３５は、バスを介して、メモリ１４との間で信号の送受信を行うポートである。具体的には、メモリ入出力ポート３５は、モードレジスタ２２に格納された値が「１」である場合は、以下の処理を実行する。まず、メモリ入出力ポート３５は、ポート制御回路３１からメモリアクセス信号を受信すると、バスを介して、メモリアクセス信号をメモリ１４へ送信する。また、メモリ入出力ポート３５は、バスを介して、メモリ１４から読み出されたデータを受信すると、受信したデータをポート制御回路３１へ送信する。【００５４】
一方、メモリ入出力ポート３５は、モードレジスタ２２に格納された値が「０」である場合には、以下の処理を実行する。まず、メモリ入出力ポート３５は、バスを介して、運用系のスイッチＬＳＩ２１が出力したメモリアクセス信号をスヌープする。そして、メモリ入出力ポート３５は、スヌープしたメモリアクセス信号をポート制御回路３１に送信する。また、メモリ入出力ポート３５は、バスを介して、メモリ１４から読み出されたデータをスヌープする。すると、メモリ入出力ポート３５は、スヌープしたデータをポート制御回路３１に送信する。【００５５】
ここで、図４を用いて、スイッチＬＳＩ２０が運用系のスイッチとして動作する際に信号を送受信する処理と、待機系のスイッチとして動作する際に信号を送受信する処理との違いについて説明する。図４は、実施例１に係るスイッチＬＳＩが信号を送受信する処理を説明するための図である。なお、図４には、ＣＰＵ１０〜１３からのメモリアクセス要求、ＣＰＵ１０〜１３へのリプライ信号、メモリ１４〜１７へのメモリアクセス信号、メモリ１４〜１７からのリプライ、すなわちデータ、をスイッチＬＳＩ２０が受信するか出力するかを記載した。【００５６】
図４に示すように、スイッチＬＳＩ２０は、モードレジスタ２２にＡｃｔｉｖｅを示す「１」が格納されている場合、つまり、運用系のスイッチとして動作する場合には、各信号を以下のように処理する。すなわち、スイッチＬＳＩ２０は、ＣＰＵ１０〜１３からのメモリアクセス要求を受け取り、ＣＰＵ１０〜１３へのリプライ信号を出力する。また、メモリ１４〜１７へのメモリアクセス信号を出力し、メモリ１４〜１７からのリプライを受け取る。【００５７】
一方、スイッチＬＳＩ２０は、モードレジスタ２２にＢａｃｋｕｐを示す「０」が格納されている場合、つまり、待機系のスイッチとして動作する場合には、各信号を以下のように処理する。すなわち、スイッチＬＳＩ２０は、ＣＰＵ１０〜１３からのメモリアクセス要求をスヌープし、運用系のスイッチであるスイッチＬＳＩ２１が出力したＣＰＵへ乗りプライ信号をスヌープする。また、スイッチＬＳＩ２０は、運用系のスイッチであるスイッチＬＳＩ２１が出力したメモリアクセス信号をスヌープし、メモリ１４〜１７が出力したリプライをスヌープする。【００５８】
図３に戻って、設定テーブル記憶部３９は、各ＣＰＵ１０〜１３とメモリ１４〜１７をどのように組み合わせるかを示す設定テーブルを記憶する。例えば、設定テーブル記憶部３９は、ＣＰＵ１０とメモリ１４との間を接続する旨を示す設定テーブルを記憶する。また、例えば、設定テーブル記憶部３９は、ＣＰＵ１１とメモリ１５およびメモリ１６との間を接続する旨を示す設定テーブルを記憶する。【００５９】
スイッチ制御部４０は、設定テーブル記憶部３９が記憶する設定テーブルに従って、クロスバスイッチ４１を制御する。例えば、スイッチ制御部４０は、ＣＰＵ１０とメモリ１４との間を接続する旨を示す設定テーブルを設定テーブル記憶部３９が記憶している場合には、以下のようにクロスバスイッチ４１を制御する。すなわち、スイッチ制御部４０は、ＣＰＵ１０と接続されたポートのポート制御回路２７と、メモリ１４と接続されたポートのポート制御回路３１とを接続するように、クロスバスイッチ４１を制御する。【００６０】
クロスバスイッチ４１は、各ポート制御回路２７〜３０と、ポート制御回路３１〜３４の間を任意の組合せで接続することができるスイッチである。例えば、クロスバスイッチ４１は、スイッチ制御部４０による制御によって、ポート制御回路２７とポート制御回路３１との間を接続するとともに、ポート制御回路２８とポート制御回路３２およびポート制御回路３３との間を接続する。【００６１】
データマッチング部４２は、スイッチＬＳＩ２０が待機系のスイッチとして動作する場合には、運用系のスイッチＬＳＩ２１が故障したか否かを判別する。例えば、データマッチング部４２は、ポート制御回路３１から、運用系のスイッチＬＳＩ２１が出力し、メモリ入出力ポート３５がスヌープしたメモリアクセス信号を受信する。また、データマッチング部４２は、ＣＰＵ入出力ポート２３がスヌープしたメモリアクセス要求をポート制御回路３１が変換したメモリアクセス信号を受信する。【００６２】
そして、データマッチング部４２は、受信したメモリアクセス信号が示すメモリアクセスの内容が一致するか否かを判別する。その後、データマッチング部４２は、受信したメモリアクセス信号が示すメモリアクセスの内容が一致しない場合には、スイッチＬＳＩ２１が故障したと判別し、制御インタフェース４３を介して、スイッチＬＳＩ２１が故障した旨を制御装置１８に通知する。【００６３】
ここで、ロックステップ方式のように、データマッチング部４２が受信したメモリアクセス信号の波形を比較するのであれば、情報処理装置１は、スイッチＬＳＩ２０とスイッチＬＳＩ２１とを同一のクロックで動作させることが求められる。しかし、データマッチング部４２は、メモリアクセス信号の波形を比較するのではなく、メモリアクセス信号が示すメモリアクセスの内容を比較する。このため、情報処理装置１は、スイッチＬＳＩ２０とスイッチＬＳＩ２１とを同一のクロックで操作させずともよい。この結果、情報処理装置１は、スイッチＬＳＩ２０およびスイッチＬＳＩ２１内部における動作自由度を向上させることができる。【００６４】
また、データマッチング部４２は、ポート制御回路２７から、メモリ１４が出力し、メモリ入出力ポート３５がスヌープしたデータをポート制御回路２７が変換したリプライ信号をポート制御回路２７から受信する。また、データマッチング部４２は、運用系のスイッチＬＳＩ２１が出力し、ＣＰＵ入出力ポート２３がスヌープしたリプライ信号をポート制御回路２７から受信する。そして、データマッチング部４２は、受信したリプライ信号が示す内容を比較し、内容が一致しない場合には、スイッチＬＳＩ２１が故障したと判別し、制御インタフェース４３を介して、スイッチＬＳＩ２１が故障した旨を制御装置１８に通知する。【００６５】
制御インタフェース４３は、スイッチＬＳＩ２０と制御装置１８との間の通信を制御する。例えば、制御インタフェース４３は、データマッチング部４２からスイッチＬＳＩ２１が故障した旨を通知された場合には、スイッチＬＳＩ２１が故障した旨を制御装置１８へ送信する。また、制御インタフェース４３は、制御装置１８からモードレジスタ２２の値の書換指示を受信すると、受信した書換指示に応じて、モードレジスタ２２に格納された値の書換を行う。【００６６】
例えば、制御装置１８は、スイッチＬＳＩ２０を運用系として動作させる場合には、モードレジスタ２２に「１」を格納するよう指示する。すると、制御インタフェース４３は、モードレジスタ２２に格納された値を「１」に更新する。また、制御装置１８は、スイッチＬＳＩ２０を待機系として動作させる場合には、モードレジスタ２２に「０」を格納するよう指示する。すると、制御インタフェース４３は、モードレジスタ２２に格納された値を「０」に更新する。【００６７】
なお、制御インタフェース４３は、制御装置１８の指示に応じて、設定テーブル記憶部３９が記憶する設定テーブルの書換を行う。すなわち、制御インタフェース４３は、制御装置１８からの指示に従って設定テーブルの書換を行う事で、ＣＰＵ１０〜１３およびメモリ１４〜１７の組合せを変更する。【００６８】
次に、図５を用いて、スイッチＬＳＩ２０が待機系のスイッチとして動作する際に実行する処理の一例を説明する。図５は、実施例１に係るスイッチＬＳＩが待機系のスイッチとして動作する際に実行する処理を説明するための図である。なお、図５に示す例では、スイッチＬＳＩ２０とスイッチＬＳＩ２１とが、ＣＰＵ１０とメモリ１４との間を接続する例について記載した。【００６９】
図５に示すように、スイッチＬＳＩ２１は、ＣＰＵ入出力ポート４７、ポート制御回路４８、クロスバスイッチ４９、ポート制御回路５０、メモリ入出力ポート５１、設定テーブル記憶部５２、スイッチ制御部５３、モードレジスタ５４を有する。なお、各部４７〜５４は、ＣＰＵ入出力ポート２３、ポート制御回路２７、クロスバスイッチ４１、ポート制御回路３１、メモリ入出力ポート３５、設定テーブル記憶部３９、スイッチ制御部４０、モードレジスタ２２と同様の機能を発揮するものとする。また、データマッチング部４２は、データキュー格納部４４、データキュー記憶部４５、データキュー比較部４６を有する。【００７０】
ここで、スイッチＬＳＩ２１のモードレジスタ５４には、Ａｃｔｉｖｅを示す値「１」が格納され、スイッチＬＳＩ２０のモードレジスタ２２には、バックアップを示す値「０」が格納されている。このため、スイッチＬＳＩ２０は、待機系のスイッチとして動作し、スイッチＬＳＩ２１は、運用系のスイッチとして動作する。【００７１】
まず、運用系のスイッチであるスイッチＬＳＩ２１が実行する処理について説明する。例えば、ＣＰＵ入出力ポート４７は、ＣＰＵ１０が発行したメモリ１４からのデータ読み出し要求である「Ｃｒｅｑ」を取得し、取得した「Ｃｒｅｑ」をポート制御回路４８に送信する。このような場合には、ポート制御回路４８は、「Ｃｒｅｑ」をスイッチＬＳＩ２１内部の信号である「ＳＡｒｅｑ」に変換し、クロスバスイッチ４９を介して、「ＳＡｒｅｑ」をポート制御回路５０に送信する。すると、ポート制御回路５０は、「ＳＡｒｅｑ」をメモリアクセス信号である「ＭＡｒｅａｄ」に変換し、メモリ入出力ポート５１から「ＭＡｒｅａｄ」を出力する。【００７２】
続いて、メモリ入出力ポート５１は、メモリ１４から読み出されたデータである「Ｍｄａｔａ」を受信し、受信した「Ｍｄａｔａ」をポート制御回路５０に送信する。このような場合には、ポート制御回路５０は、「Ｍｄａｔａ」をスイッチＬＳＩ２１内の信号である「ＳＡｄａｔａ」に変換し、クロスバスイッチ４９を介して、ポート制御回路４８に「ＳＡｄａｔａ」を送信する。すると、ポート制御回路４８は、「ＳＡｄａｔａ」をリプライ信号である「ＣＡｄａｔａ」に変換し、ＣＰＵ入出力ポート４７から「ＣＡｄａｔａ」をＣＰＵ１０へ送信する。【００７３】
次に、待機系であるスイッチＬＳＩ２０が実行する処理について説明する。まず、ＣＰＵ入出力ポート２３は、ＣＰＵ１０とスイッチＬＳＩ２０およびスイッチＬＳＩ２１とを接続するバスから、ＣＰＵ１０が発行した「Ｃｒｅｑ」をスヌープし、「Ｃｒｅｑ」をポート制御回路２７に送信する。【００７４】
このような場合には、ポート制御回路２７は、「Ｃｒｅｑ」をスイッチＬＳＩ２０内部の信号である「ＳＢｒｅｑ」に変換し、クロスバスイッチ４１を介して、ポート制御回路３１に「ＳＢｒｅｑ」を送信する。すると、ポート制御回路３１は、「ＳＢｒｅｑ」をメモリアクセス信号である「ＭＢｒｅａｄ」に変換し、「ＭＢｒｅａｄ」をデータマッチング部４２へ送信する。【００７５】
また、ＣＰＵ入出力ポート３５は、メモリ１４とスイッチＬＳＩ２０およびスイッチＬＳＩ２１とを接続するバスから、スイッチＬＳＩ２１が出力した「ＭＡｒｅａｄ」をスヌープし、「ＭＡｒｅａｄ」をポート制御回路３１に送信する。すると、ポート制御回路３１は「ＭＡｒｅａｄ」をデータマッチング部４２に送信する。【００７６】
また、メモリ入出力ポート３５は、メモリ１４とスイッチＬＳＩ２０およびスイッチＬＳＩ２１とを接続するバスから、メモリ１４が出力した「Ｍｄａｔａ」をスヌープし、「Ｍｄａｔａ」をポート制御回路３１に送信する。このような場合には、ポート制御回路３１は、「Ｍｄａｔａ」をスイッチＬＳＩ２０内部の信号「ＳＢｄａｔａ」に変換し、クロスバスイッチ４１を介して、ポート制御回路２７に「ＳＢｄａｔａ」を送信する。すると、ポート制御回路２７は、「ＳＢｄａｔａ」をリプライ信号である「ＣＢｄａｔａ」に変換し、データマッチング部４２へ「ＣＢｄａｔａ」を送信する。【００７７】
また、ＣＰＵ入出力ポート２３は、ＣＰＵ１０とスイッチＬＳＩ２０およびスイッチＬＳＩ２１とを接続するバスから、スイッチＬＳＩ２１が出力した「ＣＡｄａｔａ」をスヌープし、ポート制御回路２７に「ＣＡｄａｔａ」を送信する。すると、ポート制御回路２７は、「ＣＡｄａｔａ」をデータマッチング部４２に送信する。【００７８】
データキュー格納部４４は、ポート制御回路２７、およびポート制御回路３１から「ＣＡｄａｔａ」、「ＣＢｄａｔａ」、「ＭＡｒｅａｄ」、「ＭＢｒｅａｄ」とを受信する。すると、データキュー格納部４４は、受信した各信号「ＣＡｄａｔａ」、「ＣＢｄａｔａ」、「ＭＡｒｅａｄ」、「ＭＢｒｅａｄ」をデータキュー記憶部４５に格納する。【００７９】
データキュー比較部４６は、ＬＳＩ２１が生成したメモリアクセス信号やリプライ信号がデータキュー記憶部４５に格納されると、以下の処理を実行する。まず、データキュー比較部４６は、ＬＳＩ２１が生成したメモリアクセス信号を取得し、ＬＳＩ２０が生成した各メモリアクセス信号と比較する。【００８０】
具体的には、データキュー比較部４６は、各メモリアクセス信号からメモリアクセスの対象となるメモリアドレスと、メモリアクセスの対象となるメモリと接続されたポートのポート番号とを抽出する。そして、データキュー比較部４６は、抽出したメモリアドレスとポート番号とが一致するか否かを判別し、一致しない場合には、制御インタフェース４３にスイッチＬＳＩ２１が故障した旨を通知する。【００８１】
また、データキュー比較部４６は、ＬＳＩ２１が生成したリプライ信号を取得し、ＬＳＩ２０が生成した各リプライ信号と比較する。具体的には、データキュー比較部４６は、各リプライ信号から、送信されるデータと、リプライ信号を送信するＣＰＵと接続されたポートのポート番号とを取得する。そして、データキュー比較部４６は、取得したデータとポート番号とが一致するか否かを判別し、一致しない場合には、制御インタフェース４３にスイッチＬＳＩ２１が故障した旨を通知する。【００８２】
ここで、図６は、データキュー比較部の比較内容を説明するための図である。例えば、データキュー比較部４６は、運用系のＬＳＩ２１が生成したメモリアクセス信号「ＭＡｒｅａｄ」の内容と待機系のＬＳＩ２０が生成したメモリアクセス信号「ＭＢｒｅａｄ」の内容とを比較する。詳細には、データキュー比較部４６は、「ＭＡｒｅａｄ」と「ＭＢｒｅａｄ」の送信先となるメモリと接続されたポートのポート番号と、メモリアクセスの対象となるメモリアドレスとが一致するか否かを比較する。【００８３】
また、データキュー比較部４６は、運用系のＬＳＩ２１が生成したリプライ信号「ＣＡｄａｔａ」の内容と待機系のＬＳＩ２０が生成したリプライ信号「ＣＢｄａｔａ」の内容とを比較する。詳細には、データキュー比較部４６は、リプライ信号を送信するＣＰＵと接続されたポート番号と、データの内容とが一致するか否かを比較する。【００８４】
なお、データキュー比較部４６は、メモリアクセスの順序を考慮して、各信号を比較してもよい。例えば、ＣＰＵ１０がデータの読み出しを要求するリード要求を発行し、その後、ＣＰＵ１１がデータの書き込みを要求するライト要求した場合には、運用系のＬＳＩ２１は、ライト要求を先に処理する場合がある。そこで、データキュー比較部４６は、リード要求とライト要求とが発行された際に、スイッチＬＳＩ２１が発行された順序とは逆に、メモリアクセス信号を発行した場合には、スイッチＬＳＩ２１が故障したとは判別せずに、処理を終了する。【００８５】
また、データキュー比較部４６は、設定テーブル記憶部３９が記憶する設定テーブルの内容に応じて、各ＣＰＵ１０〜１４と組み合わされたメモリを判別する。そして、データキュー比較部４６は、判別した組み合わせに従う形でメモリアクセス信号やリプライ信号をスイッチＬＳＩ２１が出力しているか判別してもよい。【００８６】
なお、上述した例では、ＣＰＵ１０がデータの読み出しを示すリード要求を発行した際に実行する処理について説明した。しかし、実施例はこれに限定されるものではない。例えば、データキュー比較部４６は、ＣＰＵ１０がデータの書き込みを示すライト要求を発行した場合にも同様に、自装置が変換したメモリアクセス信号やリプライ信号の内容と、スイッチＬＳＩ２１が出力したメモリアクセス信号やリプライ信号の内容を比較する。また、データキュー比較部４６は、スイッチＬＳＩ２１が出力したメモリアクセス信号やリプライ信号や、リード要求に対するものであるか、ライト要求に対するものであるかを比較してもよい。【００８７】
次に、図７を用いて、ポート制御回路２３の一例について説明する。図７は、ポート制御回路の一例を説明するための図である。図７に示す例では、ポート制御回路２３は、信号解析部５５、信号生成部５６を有する。【００８８】
例えば、信号解析部５５は、ＣＰＵ１０からメモリアクセス要求として、ＣＰＵ入出力ポート２３を介して、「Ｃｏｎｔｒｏｌ」、「Ａｄｄｒｅｓｓ」、「Ｄａｔａ」を受信する。ここで、「Ｃｏｎｔｒｏｌ」とは、メモリアクセスがリードであるか、ライトであるかを示す信号であり、「Ａｄｄｒｅｓｓ」とは、メモリアクセスの対象メモリドレスを示す信号であり、「Ｄａｔａ」とは、書き込み対象となるデータを示す信号である。【００８９】
すると、信号解析部５５は、スイッチＬＳＩ２０内部の信号として「ｖａｌｉｄ」、「ｃｏｍｍａｎｄ」、「ａｄｄｒｅｓｓ」、「ｄａｔａ」を生成し、クロスバスイッチ４１を介して、メモリアクセス対象となるメモリと接続されたポートへ送信する。ここで、「ｖａｌｉｄ」とは、「ｃｏｍｍａｎｄ」、「ａｄｄｒｅｓｓ」、「ｄａｔａ」信号が有効であるか否かを示す信号である。【００９０】
また、信号解析部５５は、ＣＰＵ入出力ポート２３がスヌープしたリプライ信号の「Ｄａｔａ」を受信すると、受信した「ｄａｔａ」とともに、「ｖａｌｉｄ」を出力する。ここで、ポート制御回路２３は、信号解析部５５がリプライ信号の「ｄａｔａ」とともに発行した「ｖａｌｉｄ」と、モードレジスタ２２に格納された値の反転値との論理積を「ｖａｌｉｄ」としてデータマッチング部４２へ送信する。このため、データマッチング部４２は、モードレジスタ２２の値が「０」である場合、すなわち、スイッチＬＳＩ２０が待機系のスイッチである場合にのみ、リプライ信号の「ｄａｔａ」を取得する。【００９１】
また、信号生成部５６は、スイッチＬＳＩ２０がメモリから受信したデータを変換することで得られる「ｄａｔａ」を「ｖａｌｉｄ」と受信すると、受信した「ｖａｌｉｄ」と「ｄａｔａ」とをＣＰＵ１０へ送信する。また、信号生成部５６は、スイッチＬＳＩ２０がスヌープしたデータを変換することで得られる「ｄａｔａ」を「ｖａｌｉｄ」とともに受信すると、「ｖａｌｉｄ」とともに「ｄａｔａ」をデータマッチング部４２へ送信する。【００９２】
なお、図７に示す例では、ＣＰＵ１０と接続されたポートのポート制御回路２３について説明したが、メモリ１４と接続されたポートのポート制御回路についても、同様の回路で実現することができる。【００９３】
例えば、データマッチング部４２とは、電子回路である。ここで、電子回路の例として、ＡＳＩＣやＦｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ（ＦＰＧＡ）などの集積回路などを適用する。【００９４】
次に、図８、図９を用いて、ＣＰＵ１０がリクエスト要求を発行した際に、運用系のスイッチＬＳＩ２１と待機系のスイッチＬＳＩ２０が実行する処理の流れについて説明する。図８は、各スイッチＬＳＩが実行する処理の流れを説明するための第１のフローチャートである。また、図９は、各スイッチＬＳＩが実行する処理の流れを説明するための第２のフローチャートである。【００９５】
例えば、運用系のスイッチＬＳＩ２１と待機系のスイッチＬＳＩ２０は、ＣＰＵ１０が「Ｃｒｅｑ」を発行したことを契機として、処理を開始する。まず、運用系のスイッチＬＳＩ２１は、「Ｃｒｅｑ」を受信すると（ステップＳ１）、「Ｃｒｅｑ」を「ＳＡｒｅｑ」に変換し（ステップＳ２）、宛先ポートに転送する（ステップＳ３）。【００９６】
そして、ＬＳＩ２１は、「ＳＡｒｅｑ」を「ＭＡｒｅａｄ」に変換し（ステップＳ４）、メモリ１４に対して「ＭＡｒｅａｄ」を発行する（ステップＳ５）。すると、メモリ１４は、「ＭＡｒｅａｄ」を受信し（ステップＳ６）、メモリアクセスを行う（ステップＳ７）。その後、メモリ１４は、読み出した「Ｍｄａｔａ」を発行し（ステップＳ８）、処理を終了する。【００９７】
一方、待機系のスイッチＬＳＩ２０は、バススヌープを行う事で、「Ｃｒｅｑ」を受信する（ステップＳ９）。そして、スイッチＬＳＩ２０は、「Ｃｒｅｑ」を「ＳＢｒｅｑ」に変換し（ステップＳ１０）、宛先ポートへ転送する（ステップＳ１１）。次に、スイッチＬＳＩ２０は、「ＳＢｒｅｑ」を「ＭＢｒｅａｄ」に変換し（ステップＳ１２）、「ＭＢｒｅａｄ」をデータマッチング部４２へ転送する（ステップＳ１３）。【００９８】
また、スイッチＬＳＩ２０は、バススヌープにより、スイッチＬＳＩ２１が発行した「ＭＡｒｅａｄ」を受信し（ステップＳ１４）、「ＭＡｒｅａｄ」をデータマッチング部４２へ転送する（ステップＳ１５）。その後、スイッチＬＳＩ２０は、「ＭＢｒｅａｄ」と「ＭＡｒｅａｄ」とを比較する（ステップＳ１６）。【００９９】
以下、図９を用いて、続く処理を説明する。まず、メモリ１０が「Ｍｄａｔａ」を発行すると、運用系のスイッチＬＳＩ２１は、「Ｍｄａｔａ」を受信し（ステップＳ１７）、「ＳＡｄａｔａ」に変換し（ステップＳ１８）、宛先ポートに転送する（ステップＳ１９）。また、スイッチＬＳＩ２１は、「ＳＡｄａｔａ」を「ＣＡｄａｔａ」に変換し（ステップＳ２０）、「ＣＡｄａｔａ」を発行する（ステップＳ２１）。すると、ＣＰＵ１０が「ＭＡＲｅａｄ」を受信し（ステップＳ２２）、処理を終了する。【０１００】
一方、待機系のスイッチＬＳＩ２０は、バススヌープにより「Ｍｄａｔａ」を受信し（ステップＳ２３）、「Ｍｄａｔａ」を「ＳＢｄａｔａ」に変換し（ステップＳ２４）、「ＳＢｄａｔａ」を宛先ポートに転送する（ステップＳ２５）。次に、スイッチＬＳＩ２０は、「ＳＢｄａｔａ」を「ＣＢｄａｔａ」に変換し（ステップＳ２６）、「ＣＢｄａｔａ」をデータマッチング部４２へ転送する（ステップＳ２７）。【０１０１】
また、スイッチＬＳＩ２０は、バススヌープにより、スイッチＬＳＩ２１が発行した「ＣＡｄａｔａ」を受信し（ステップＳ２８）、受信した「ＣＡｄａｔａ」をデータマッチング部４２へ転送する（ステップＳ２９）。その後、スイッチＬＳＩ２０は、「ＣＢｄａｔａ」と「ＣＡｄａｔａ」とを比較し（ステップＳ３０）、処理を終了する。【０１０２】
次に、図１０を用いて、データマッチング部４２が実行する処理の流れについて説明する。図１０は、実施例１に係るデータマッチング部が実行する処理の流れを説明するためのフローチャートである。例えば、データマッチング部４２は、電源が投入されたことを契機として、処理を開始する。【０１０３】
まず、データマッチング部４２は、マッチングを行うためのデータを待つ（ステップＳ１０１）。次に、データマッチング部４２は、データが届いたか否かを判別し（ステップＳ１０２）、データが届いていない場合には（ステップＳ１０２否定）、再度ステップＳ１０１の処理を実行する。一方、データマッチング部４２は、データが届いた場合には（ステップＳ１０２肯定）、運用系のスイッチＬＳＩから来たデータであるか、待機系のスイッチＬＳＩから来たデータであるかを識別する（ステップＳ１０３）。【０１０４】
そして、データマッチング部４２は、データが運用系のスイッチＬＳＩから来たデータであるか判別し（ステップＳ１０４）、データが待機系のスイッチＬＳＩから来たデータである場合は（ステップＳ１０４否定）、以下の処理を行う。すなわち、データマッチング部４２は、データをデータキュー記憶部４５に格納し（ステップＳ１０５）、再度ステップＳ１０１を実行する。【０１０５】
また、データマッチング部４２は、データが運用系のスイッチＬＳＩから来たデータでああると判別した場合には（ステップＳ１０４肯定）、データキュー記憶部４５に格納されたデータを調べる（ステップＳ１０６）。そして、データマッチング部４２は、データキュー記憶部４５が空か否かを判別し（ステップＳ１０７）、空である場合には（ステップＳ１０７肯定）、マッチングエラーが発生したと判別する（ステップＳ１０８）。その後、データマッチング部４２は、運用系のスイッチＬＳＩが故障した旨を示すエラーを発行し（ステップＳ１０９）、処理を終了する。【０１０６】
一方、データマッチング部４２は、データキュー記憶部４５が空ではない場合には（ステップＳ１０７否定）、データキュー記憶部４５から内容が一致するデータを検索する（ステップＳ１１０）。そして、データマッチング部４２は、内容が一致するデータを検出したか否かを判別し（ステップＳ１１１）、検出した場合には（ステップＳ１１１肯定）、一致するデータよりも前に記憶されたデータが存在するか否かを判別する（ステップＳ１１２）。【０１０７】
また、データマッチング部４２は、ステップＳ１１１にて検出したデータが、メモリコンシステンシ的に、正しい位置にあるか否かを判別する（ステップＳ１１３）。そして、データマッチング部４２は、データがメモリコンシステンシ的に正しい位置にある場合は（ステップＳ１１３肯定）、データキュー記憶部４５から一致したデータを消去し（ステップＳ１１４）、ステップＳ１０１に戻る。【０１０８】
一方、データマッチング部４２は、データキュー記憶部４５から内容が一致するデータを検出しなかった場合は（ステップＳ１１１否定）、ステップＳ１０８を実行する。また、データマッチング部４２は、ステップＳ１１１にて検出したデータがメモリコンシステンシ的に正しい位置に無い場合には（ステップＳ１１３否定）、ステップＳ１０８を実行する。【０１０９】
［実施例１の効果］
上述したように、情報処理装置１は、ＣＰＵ１０〜１３と、メモリ１４〜１７と、運用系のスイッチＬＳＩ２１と待機系のスイッチＬＳＩ２０とを有する。ここで、スイッチＬＳＩ２０は、ＣＰＵ１０〜１３が発行したメモリアクセス要求をメモリアクセス信号に変換する。また、スイッチＬＳＩ２０は、スイッチＬＳＩ２１が出力したメモリアクセス信号をスヌープする。そして、スイッチＬＳＩ２０は、自装置が変換したメモリアクセス信号が示すメモリアクセスの内容と、スヌープしたメモリアクセス信号が示すメモリアクセスの内容とが一致しない場合は、スイッチＬＳＩ２１が故障したと判別する。【０１１０】
このため、情報処理装置１は、スイッチＬＳＩ２１が故障した場合にも、スイッチＬＳＩ２０に処理を継続されることができるため、情報処理装置１の信頼性を向上させることができる。この際、情報処理装置１は、スイッチＬＳＩ２１が故障したタイミングを適切に検出し、スイッチＬＳＩ２０に処理を継続させることができる。【０１１１】
また、スイッチＬＳＩ２０は、メモリアクセス信号の波形を比較するのではなく、メモリアクセス信号が示すメモリアクセスの内容を比較する。例えば、スイッチＬＳＩ２０は、メモリアクセスの対象となるメモリアドレスや、メモリアクセス信号を出力するポートのポート番号が一致するか否かを判別する。このため、情報処理装置１は、スイッチＬＳＩ２０とスイッチＬＳＩ２１との動作クロックを揃える必要がなく、スイッチＬＳＩ２０とスイッチＬＳＩ２１との内部の動作自由度を向上させることができる。また、情報処理装置１は、高機能なスイッチＬＳＩ２０を用いて、ＣＰＵ１０〜１３とメモリ１４〜１７との間を接続するスイッチの多重化を行うことができる。【０１１２】
また、スイッチＬＳＩ２０は、メモリ１４〜１７が出力したデータをスヌープし、スヌープしたデータをリプライ信号に変換する。また、スイッチＬＳＩ２０は、スイッチＬＳＩ２１が出力したリプライ信号をスヌープする。そして、スイッチＬＳＩ２０は、自装置が変換したリプライ信号が示す内容と、スヌープしたリプライ信号が示す内容とが一致するか否かを判別し、一致しない場合には、スイッチＬＳＩ２１が故障したと判別する。このため、スイッチＬＳＩ２０は、スイッチＬＳＩ２１が有する機能のうち、応答をＣＰＵに送信する機能が故障した場合にも、適切に故障を検出することができる。【０１１３】
また、スイッチＬＳＩ２０は、リプライ信号についても、リプライ信号の波形ではなく、例えば、リプライ信号により送信されるデータの内容について、一致するか否かを判別する。このため、情報処理装置１は、スイッチＬＳＩ２０とスイッチＬＳＩ２１との動作クロックを揃える必要がなく、スイッチＬＳＩ２０とスイッチＬＳＩ２１との内部の動作自由度を向上させることができる。【０１１４】
また、スイッチＬＳＩ２０は、自装置が変換したメモリアクセス信号の送信先となるメモリと、スヌープしたメモリアクセス信号の送信先となるメモリが異なる場合には、スイッチＬＳＩ２１が故障したと判別する。詳細には、スイッチＬＳＩ２０は、各メモリアクセス信号の宛先ポートのポート番号が一致するか否かを判別する。このため、スイッチＬＳＩ２０は、ＣＰＵとメモリの組み合わせが複数存在する場合にも、適切にスイッチＬＳＩ２１の故障を検出できる。【０１１５】
また、スイッチＬＳＩ２０は、自装置が変換したメモリアクセス信号を記憶し、スヌープしたメモリアクセス信号と内容が一致するメモリアクセス信号を記憶しているか否かを判別する。そして、スイッチＬＳＩ２０は、スヌープしたメモリアクセス信号と内容が一致するメモリアクセス信号を記憶していない場合には、スイッチＬＳＩ２１が故障したと判別する。このため、スイッチＬＳＩ２０は、例えば、メモリアクセス要求が発行された順番と、メモリアクセス信号が発行される順番が入れ替わる場合にも、スイッチＬＳＩ２１が故障下か否かを適切に判別することができる。【０１１６】
また、情報処理装置１は、スイッチＬＳＩ２１が故障した際に、スイッチＬＳＩ２１の切り離しを行い、スイッチＬＳＩ２０を運用系とする制御装置１８を有する。このように制御装置１８は、故障確率の極めて小さい単純なロジックで実現可能であるので、情報処理装置１は、信頼性をより向上させることができる。
【実施例２】
【０１１７】
これまで本発明の実施例について説明したが実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例２として本発明に含まれる他の実施例を説明する。【０１１８】
（１）スイッチＬＳＩの数について
上述した情報処理装置１は、待機系のスイッチＬＳＩ２０と運用系のスイッチＬＳＩ２１を有する例について説明したが、実施例はこれに限定されるものではなく、スイッチＬＳＩ２０を運用系とし、スイッチＬＳＩ２１を待機系として動作させてもよい。また、情報処理装置１は、待機系のスイッチを複数有することとしてもよい。【０１１９】
例えば、情報処理装置１は、運用系のスイッチＬＳＩとしてスイッチＬＳＩ２０を有する、待機系のスイッチＬＳＩとして、スイッチＬＳＩ２１、スイッチＬＳＩ２１ａ、スイッチＬＳＩ２１ｂ等、３つ以上のスイッチＬＳＩを有する。そして、待機系のスイッチＬＳＩ２１〜ｂは、それぞれの故障検出結果を制御装置１８へ送信する。すると、制御装置１８は、待機系の各スイッチＬＳＩ２１〜２１ｂによる故障検出結果を取得し、多数決論理によって、運用系のスイッチＬＳＩ２０が故障したか否かを判別する。【０１２０】
例えば、制御装置１８は、スイッチＬＳＩ２１、スイッチＬＳＩ２１ａからスイッチＬＳＩ２０が故障した旨の通知を受信した場合には、スイッチＬＳＩ２０が故障したと判別する。そして、制御装置１８は、スイッチＬＳＩ２０が故障したと判別したスイッチＬＳＩ２１、およびスイッチＬＳＩ２１ａの何れかを運用系のスイッチＬＳＩとし、スイッチＬＳＩ２０の切り離しを行う。【０１２１】
（２）スヌープする信号について
上述したスイッチＬＳＩ２０は、バスをスヌープすることで、ＣＰＵ１０とスイッチＬＳＩ２１との間で送受信されるメモリアクセス要求やリプライ信号を取得した。また、スイッチＬＳＩ２０は、バスをスヌープすることで、メモリ１４とスイッチＬＳＩ２１との間で送受信されるメモリアクセス信号やデータを取得した。しかし、実施例はこれに限定されるものではない。【０１２２】
例えば、ＣＰＵ１０とスイッチＬＳＩ２１、およびスイッチＬＳＩ２１とメモリ１４との間でメモリアクセス要求等がパケットで送受信される場合には、スイッチＬＳＩ２０は、スイッチＬＳＩ２１を宛先とするパケットを破棄せずに受信してもよい。スイッチＬＳＩ２０は、その他任意の方法で、運用系のスイッチＬＳＩが送受信する信号をスヌープしたり取得することとしてもよい。【０１２３】
（３）比較対象について
上述したデータマッチング部４２は、メモリアクセス信号の内容を比較する際に、メモリアクセスの対象となるメモリアドレスや、メモリアクセス信号の送信先となるメモリと接続されたポートのポート番号等を比較した。しかし、実施例はこれに限定されるものではなく、メモリアクセス信号から取得可能な任意の内容を比較してもよい。また、データマッチング部４２は、リプライ信号の内容を比較する際に、リプライ信号に含まれるデータや、リプライ信号の送信先となるＣＰＵと接続されたポートのポート番号等を比較したが、リプライ信号から取得可能な任意の内容を比較してもよい。【０１２４】
（４）情報処理装置が有するＣＰＵおよびメモリについて
上述した情報処理装置１は、４つのＣＰＵ１０〜１３と、４つのメモリ１４〜１７を有していた。しかし、実施例はこれに限定されるものではない。すなわち、情報処理装置１は、任意の数のＣＰＵとメモリとを有してよい。また、情報処理装置１は、ＣＰＵとメモリの数とをそろえる必要は無く、ＣＰＵよりも多くのメモリを有してもよい。【０１２５】
（５）データマッチング部４２について
なお、データマッチング部４２が実行する処理は、あらかじめ用意されたプログラムを実行することによって実現してもよい。このプログラムは、インターネットなどのネットワークを介して配布してよい。また、このプログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、Compact  Disc  Read  Only  Memory（ＣＤ−ＲＯＭ）、Magneto  Optical  Disc（ＭＯ）などのコンピュータで読取可能な記録媒体に記録される。
【符号の説明】
【０１２６】
１  情報処理装置
１０〜１３、６１〜６４  ＣＰＵ
１４〜１７、６６〜６９  メモリ
１４ａ〜１４ｅ  メモリチップ
１８  制御装置
２０、２１  スイッチＬＳＩ
２２、５４  モードレジスタ
２３〜２６、４７  ＣＰＵ入出力ポート
２７〜３４、４８、５０  ポート制御回路
３５〜３８  メモリ入出力ポート
３９、５２  設定テーブル記憶部
４０、５３  スイッチ制御部
４１、４９  クロスバスイッチ
４２  データマッチング部
４３  制御インタフェース
４４  データキュー格納部
４５  データキュー記憶部
４６  データキュー比較部
５５  信号解析部
５６  信号生成部
【図１】
2014002174.tif 000003
【図２】
2014002174.tif 000004
【図３】
2014002174.tif 000005
【図４】
2014002174.tif 000006
【図５】
2014002174.tif 000007
【図６】
2014002174.tif 000008
【図７】
2014002174.tif 000009
【図８】
2014002174.tif 000010
【図９】
2014002174.tif 000011
【図１０】
2014002174.tif 000012
【図１１】
2014002174.tif 000013
【国際調査報告】
2014002174.tif 000014
2014002174.tif 000015
2014002174.tif 000016