(57)【特許請求の範囲】
【請求項１】
パケットを一意に識別するタグを付与した検査用パケットを所定の時間間隔で生成する生成部と、
前記検査用パケットが生成されると前記検査用パケットを入出力デバイスに送信し、ＣＰＵからパケットを受信すると、受信したパケットを前記入出力デバイスへ送信する送信部と、
パケットを前記入出力デバイスから受信する受信部と、
前記受信部によって受信された受信パケットのタグに基づいて、該受信パケットが、前記送信部から送信されて前記入出力デバイスにアクセスした前記検査用パケットに対する応答パケットであるか否かを判定する第１判定部と、
前記第１判定部によって前記受信パケットが前記応答パケットであると判定された場合に、前記受信パケットを解析して、前記入出力デバイスが異常であるか否かを判定する第２判定部と、
を有することを特徴とする入出力接続装置。
【請求項２】
前記送信部は、前記入出力デバイスがＰＣＩ  Ｅｘｐｒｅｓｓで規格化されているＡＥＲレジスタを有している場合には、該ＡＥＲレジスタへ前記検査用パケットを送信することを特徴とする請求項１に記載の入出力接続装置。
【請求項３】
前記送信部は、付与したタグと同一のタグを有する第２のパケットをＣＰＵから受信した場合には、前記ＣＰＵから受信した前記第２のパケットを前記入出力デバイスへ送信しないように抑止制御することを特徴とする請求項１または２に記載の入出力接続装置。
【請求項４】
前記送信部は、付与したタグと同一のタグを有する第３のパケットをＣＰＵから受信した場合には、前記ＣＰＵから受信した前記第３のパケットのタグを書き換えて前記入出力デバイスに送信することを特徴とする請求項１または２に記載の入出力接続装置。
【請求項５】
パケットを一意に識別するタグを付与した検査用パケットを所定の時間間隔で生成する生成部と、
前記検査用パケットが生成されると前記検査用パケットを入出力デバイスに送信し、ＣＰＵからパケットを受信すると、受信したパケットを前記入出力デバイスへ送信する送信部と、
パケットを前記入出力デバイスから受信する受信部と、
前記受信部によって受信された受信パケットのタグに基づいて、該受信パケットが、前記送信部から送信されて前記入出力デバイスにアクセスした前記検査用パケットに対する応答パケットであるか否かを判定する第１判定部と、
前記第１判定部によって前記受信パケットが前記応答パケットであると判定された場合に、前記受信パケットを解析して、前記入出力デバイスが異常であるか否かを判定する第２判定部と、
を有することを特徴とする情報処理装置。
【請求項６】
パケットを一意に識別するタグを付与した検査用パケットを所定の時間間隔で生成する生成ステップと、
前記検査用パケットが生成されると前記検査用パケットを入出力デバイスに送信し、ＣＰＵからパケットを受信すると、受信したパケットを前記入出力デバイスへ送信する送信ステップと、
パケットを前記入出力デバイスから受信する受信ステップと、
前記受信ステップによって受信された受信パケットのタグに基づいて、該受信パケットが、前記送信ステップから送信されて前記入出力デバイスにアクセスした前記検査用パケットに対する応答パケットであるか否かを判定する第１判定ステップと、
前記第１判定ステップによって前記受信パケットが前記応答パケットであると判定された場合に、前記受信パケットを解析して、前記入出力デバイスが異常であるか否かを判定する第２判定ステップと、
を含んだことを特徴とする入出力デバイス検査方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入出力接続装置、情報処理装置及び入出力デバイス検査方法に関する。
【背景技術】
【０００２】
従来、計算機システムは、ＣＰＵ（Central  Processing  Unit）、主記憶装置、入出力装置、入出力装置を制御する入出力デバイス（以下、Ｉ／Ｏデバイス）、及び、ＣＰＵとＩ／Ｏデバイスとを接続する入出力接続装置（以下、Ｉ／Ｏ接続装置）を有する。入出力装置とは、例えば、キーボード、マウスなどの入力デバイスやディスプレイ、ハードディスクドライブ（ＨＤＤ）等の記憶装置、スピーカなどの出力デバイスである。本明細書では、それら入出力装置を制御するインタフェース、例えば、ネットワークインタフェースやハードディスクコントローラをＩ／Ｏデバイスと呼ぶ。
【０００３】
例えば、計算機システムは、ＣＰＵなどの指示操作によって、Ｉ／Ｏ接続装置とＩ／Ｏデバイスを介して記憶装置からデータを読み出したり、Ｉ／Ｏ接続装置とＩ／Ｏデバイスを介して記憶装置にデータを書き込んだりする。また、計算機システムは、ＣＰＵなどによる処理結果をＩ／Ｏ接続装置とＩ／Ｏデバイスを介してディスプレイに表示したり、Ｉ／Ｏ接続装置とＩ／Ｏデバイスを介して文字入力や指示操作、コマンド等を受け付けたりする。Ｉ／Ｏ接続装置とＩ／Ｏデバイスの間のデータ転送では、パラレルバスを用いてデータを転送するＰＣＩバスが利用されてきたが、近年、ＰＣＩバスに代わる通信規格として、ＰＣＩ  Ｅｘｐｒｅｓｓが利用されている。
【０００４】
ＰＣＩ  Ｅｘｐｒｅｓｓは、ＰＣＩバスとは異なり、データをパケット化し、シリアル接続で転送する。そのためＰＣＩバスのようにひとつのバスに複数のＩ／Ｏデバイスを接続することはできず、Ｉ／Ｏ接続装置とＩ／Ｏデバイスの間は一対一の接続となる。したがって、ＰＣＩ  Ｅｘｐｒｅｓｓ規格のＩ／Ｏ接続装置に複数のＩ／Ｏデバイスを接続する場合には、スイッチ機能を備え、スター型の構成を取る必要がある。
【０００５】
また、計算機システムの信頼性を高めるためには、ＣＰＵや主記憶装置に限らず、Ｉ／Ｏデバイスに対しても、データが変化する誤りや半導体の故障などの異常を少なくし、異常が生じた場合には、早期に異常を検出して異常対策を実行する必要がある。
【０００６】
そこで、最近では、Ｉ／Ｏデバイスに発生する異常を検出する様々な手法が開示されている。例えば、データ転送などの際に、ＣＰＵからＩ／Ｏデバイスへのアクセスが正常に実施されたか否かを確認する受動的に検出する手法が開示されている。また、Ｉ／Ｏデバイスから定期的に信号を受信するビーコン方式を用いることで、能動的に検出する手法が開示されている。
【０００７】
また、ソフトウェアで制御することで能動的にＩ／Ｏデバイスの異常を検出する手法が開示されている。具体的には、計算機システムは、ＣＰＵがソフトウェアで規定された一定の時間間隔でＩ／Ｏデバイスにアクセスし、アクセスして得られた応答からＩ／Ｏデバイスが異常であるか否かを判定する。
【０００８】
また、ハードウェアで制御することで能動的にＩ／Ｏデバイスを検出する手法が開示されている。具体的には、計算機システムは、Ｉ／Ｏデバイスにハードウェアを接続し、接続したハードウェアに監視機能を設け、この監視機能を用いてＩ／Ｏデバイスの異常を検出する。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００９−９４８１号公報
【特許文献２】特表２００３−５１８３５６号公報
【特許文献３】特開昭５８−２０３５３３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、従来の技術では、入出力デバイス内部に生じる異常を早期に検出することはできないという課題があった。
【００１１】
例えば、受動的な異常検出手法の場合、計算機システムは、ＣＰＵが入出力装置（あるいはＩ／Ｏデバイス）へアクセスしたタイミングでしか異常を検出できないので、異常発生と検出とのタイミングにタイムラグが発生する。すなわち、Ｉ／Ｏデバイスに生じる異常を早期に検出することはできない。また、ビーコン方式による能動的な異常検出手法の場合、計算機システムは、応答の有無を確認することで異常を検出するので、Ｉ／Ｏデバイス内部の異常まで検出することはできない。
【００１２】
また、ソフトウェアによる異常検出手法の場合、ＣＰＵは、Ｉ／Ｏデバイスへのアクセスが正常に終了しないと、動作が停止する場合がある。例えば、異常なＩ／Ｏデバイスへアクセスした場合には、ＣＰＵは停止し、システムダウンが引き起こされる。かかる場合には、計算機システムは、Ｉ／Ｏデバイスに生じる異常を早期に検出することができない。
【００１３】
ハードウェアによる異常検出手法の場合、計算機システムは、個々のＩ／Ｏデバイスに対応した専用の監視機能を設ける必要がある。また、Ｉ／Ｏ接続装置は複数のＩ／Ｏデバイスを接続するので、接続するＩ／Ｏデバイス数の増加に応じて個々のＩ／Ｏデバイスに専用のハードウェアが必要になる。かかる場合には、計算機システムは、接続する全てのＩ／Ｏデバイスに専用のハードウェアを設けることが困難な場合があり、複数のＩ／Ｏデバイス各々に生じる異常を早期に検出することができるとは言い難い。
【００１４】
開示の技術は、上記に鑑みてなされたものであって、入出力デバイス内部に生じる異常を早期に検出することができる入出力接続装置、情報処理装置及び入出力デバイス検査方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本願の開示する入出力接続装置、情報処理装置及び入出力デバイス検査方法は、一つの態様において、パケットを一意に識別するタグを付与した検査用パケットを生成し、検査用パケットを入出力デバイスへ送信する。また、入出力接続装置、情報処理装置及び入出力デバイス検査方法は、パケットを受信し、受信パケットのタグに基づいて、該受信パケットが検査用パケットに対する応答パケットであるか否かを判定する。そして、入出力接続装置、情報処理装置及び入出力デバイス検査方法は、受信パケットが応答パケットであると判定された場合に、受信パケットを解析して入出力デバイスが異常であるか否かを判定する。
【発明の効果】
【００１６】
本願の開示する入出力接続装置、情報処理装置及び入出力デバイス検査方法の一つの態様によれば、入出力デバイス内部に生じる異常を早期に検出することができるという効果を奏する。
【図面の簡単な説明】
【００１７】
【図１】図１は、実施例１に係るＩ／Ｏ接続装置の構成を示す機能ブロック図である。
【図２】図２は、実施例２に係る情報処理装置の構成を示す機能ブロック図である。
【図３】図３は、Ｉ／Ｏデバイスが有するタイプＩコンフィグレーションスペースヘッダの一例を示す図である。
【図４】図４は、実施例２に係るタグテーブルが記憶するデータの一例を示す図である。
【図５】図５は、生成部が生成する検査用パケットに付与されるヘッダ領域の一例を示す図である。
【図６】図６は、応答パケットに付与されるヘッダ領域の一例を示す図である。
【図７】図７は、異常処理部による処理の一例を示す図である。
【図８】図８は、実施例２に係る情報処理装置による処理の処理手順を説明するフローチャートである。
【図９】図９は、実施例２に係るレジスタアクセス処理の処理手順を説明するフローチャートである。
【図１０】図１０は、実施例２に係る送信部による処理の処理手順を説明するフローチャートである。
【図１１】図１１は、実施例３に係る情報処理装置の構成を示す機能ブロック図である。
【図１２】図１２は、実施例３に係るタグテーブルが記憶するデータの一例を示す図である。
【図１３】図１３は、実施例３に係る送信部による処理の処理手順を説明するフローチャートである。
【図１４】図１４は、実施例３に係る情報処理装置によるＣＰＵを宛先とするパケットを受信した場合の処理の処理手順を説明するフローチャートである。
【図１５】図１５は、実施例４に係る情報処理装置の構成を示す機能ブロック図である。
【図１６】図１６は、実施例４に係るタグテーブルが記憶するデータの一例を示す図である。
【図１７】図１７は、ＡＥＲレジスタの一例を示す図である。
【図１８】図１８は、実施例４に係る情報処理装置による処理の処理手順を説明するフローチャートである。
【図１９】図１９は、本願で利用可能なコンフィグレーションレジスタのタイプの一例を示す図である。
【図２０】図２０は、異なるタイプが混在するＢａｓｅ  Ａｄｄｒｅｓｓレジスタの一例を示す図である。
【図２１】図２１は、Ｉ／Ｏデバイスとの接続が二重化されている場合の異常処理部による処理の一例を示す図である。
【発明を実施するための形態】
【００１８】
以下に、本願の開示する入出力接続装置、情報処理装置及び入出力デバイス検査方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００１９】
図１は、実施例１に係るＩ／Ｏ接続装置の構成を示す機能ブロック図である。図１に示すように、Ｉ／Ｏ接続装置１０は、生成部１１と、送信部１２と、受信部１３と、第１判定部１４と、第２判定部１５とを有し、ＣＰＵとＩ／Ｏデバイスとを接続する。
【００２０】
生成部１１は、パケットを一意に識別するタグを付与した検査用パケットを生成し、送信部１２は、生成部１１が生成した検査用パケットを入出力デバイスへ送信する。受信部１３は、パケットを受信し、第１判定部１４は、受信部１３によって受信された受信パケットのタグに基づいて、該受信パケットが、送信部１２から送信された検査用パケットに対する応答パケットであるか否かを判定する。第２判定部１５は、第１判定部１４によって受信パケットが応答パケットであると判定された場合に、受信パケットを解析して、Ｉ／Ｏデバイスが異常であるか否かを判定する。
【００２１】
上述してきたように、本実施例１では、Ｉ／Ｏ接続装置１０の送信部１２が、Ｉ／Ｏデバイスへ定期的にアクセスし、第２判定部１５が、検査用パケットに対する応答内容を判定することで、Ｉ／Ｏデバイス内部に生じる異常を早期に検出することができる。
【実施例２】
【００２２】
［実施例２に係る情報処理装置の構成］
次に、図２を用いて、実施例２に係る情報処理装置１００の構成を説明する。図２は、実施例２に係る情報処理装置の構成を示す機能ブロック図である。実施例２に係る情報処理装置１００は、ＣＰＵ２００と、Ｉ／Ｏデバイス３００と、Ｉ／Ｏデバイス４００と、Ｉ／Ｏ接続装置５００とを有する。
【００２３】
ＣＰＵ２００は、情報処理装置１００が有する各装置の制御やデータの演算、加工などを行う電子回路である。Ｉ／Ｏデバイス３００やＩ／Ｏデバイス４００は、ＰＣＩ  Ｅｘｐｒｅｓｓで接続される入出力装置のためのインタフェースである。Ｉ／Ｏデバイス３００やＩ／Ｏデバイス４００は、例えば、ネットワークカードやストレージコントローラカードなどのハードウェアである。
【００２４】
また、Ｉ／Ｏデバイス３００やＩ／Ｏデバイス４００は、ＰＣＩ  Ｅｘｐｒｅｓｓを用いて情報処理装置１００に接続されるＩ／Ｏデバイスで共通に有するレジスタであって、自デバイスの情報や状態を記憶するレジスタを有する。例えば、Ｉ／Ｏデバイス３００は、図３に示すような３２ビットのタイプＩコンフィグレーションスペースヘッダにＲｅａｄＯｎｌｙ（ＲＯ）レジスタやＲｅａｄＷｒｉｔｅ（ＲＷ）レジスタを有する。Ｉ／Ｏデバイス３００が有するレジスタとしては、例えば、自デバイスの製造元を特定する一意な識別子であり、書き換えられることがないＲＯレジスタである「Ｖｅｎｄｅｒ  ＩＤ」を有する。また、Ｖｅｎｄｅｒ  ＩＤで指定される製造元が製造したデバイス同士を識別するために使用する１６ビットの識別子を記憶するＲＯレジスタである「Ｄｅｖｉｃｅ  ＩＤ」を有する。また、Ｖｅｎｄｅｒ  ＩＤとＤｅｖｉｃｅ  ＩＤで指定される特定のデバイスに対してそのレビジョンを表すのに使用される８ビットの識別子を記憶するＲＯレジスタである「Ｒｅｖｉｓｉｏｎ  ＩＤ」を有する。
【００２５】
また、Ｉ／Ｏデバイスの種類や機能を示す情報を記憶するＲＯレジスタである「Ｃｌａｓｓ  Ｃｏｄｅ」を有する。また、これら以外にも、Ｉ／Ｏデバイスが採用しているコンフィグレーションスペースヘッダが単一機能であるか多機能であるかを示す情報を記憶するＲＯレジスタである「Ｈｅａｄｅｒ  Ｔｙｐｅ」を有する。なお、図３は、Ｉ／Ｏデバイスが有するタイプＩコンフィグレーションスペースヘッダの一例を示す図である。
【００２６】
Ｉ／Ｏ接続装置５００は、スイッチ制御部５１０とスイッチ５２０とスイッチ５３０と異常処理部５４０とを有し、ＣＰＵ２００とＩ／Ｏデバイス３００及び４００とを相互接続する。なお、スイッチ５２０とスイッチ５３０とは同様の構成を有するので、ここではスイッチ５２０についてのみ説明する。
【００２７】
スイッチ制御部５１０は、ＣＰＵ２００、スイッチ５２０、スイッチ５３０それぞれの間のデータ転送を制御する。例えば、スイッチ制御部５１０は、ＣＰＵ２００から出力されたパケットから宛先のＩ／Ｏデバイスを特定する情報を抽出し、抽出したＩ／Ｏデバイスが接続されるスイッチに当該パケットを転送する。
【００２８】
スイッチ５２０は、スイッチ制御部５１０と異常処理部５４０とＩ／Ｏデバイス３００とを相互接続するスイッチであり、記憶部５２１と制御部５２２とを有する。記憶部５２１は、制御部５２２による各種処理に必要なデータおよびプログラムを格納するとともに、タグテーブル５２１ａとレジスタテーブル５２１ｂとデバイステーブル５２１ｃとを有する半導体メモリ素子、または、ハードディスクなどの記憶装置である。
【００２９】
タグテーブル５２１ａは、パケットに付与されたタグ情報を記憶する。タグテーブル５２１ａが記憶する情報について図４を用いて説明する。図４は、実施例２に係るタグテーブルが記憶するデータの一例を示す図である。例えば、実施例２に係るタグテーブル５２１ａは、「有効／無効」と「正常／異常」と「タグ値」と「タイプ」と「元タグ値」に関する情報を記憶する。ここで、「有効／無効」は、テーブルの内容が有効であるか無効であるかを示す。「正常／異常」は、後述する第２判定部５２２ｅによる検査結果に関する情報を示す。また、「タグ値」は、後述する生成部５２２ａによって付与されたタグ情報を示す。「タイプ」は、パケットがＣＰＵ２００から送信されたパケットであるか検査用パケットであるかを特定する。例えば、パケットがＣＰＵ２００から送信されたパケットであった場合には、「タイプ」は「ＣＰＵ」となる。また、パケットが検査用パケットであった場合には、例えば、「タイプ」は、アクセスするレジスタのタイプを特定し、「ＲＯ」となる。「元タグ値」は、タグが書き換えられた場合に、書き換えられる前のタグ値を示す。
【００３０】
アドレス「２」の項目は、「有効／無効」が「有効」、「正常／異常」が「異常」、「タグ値」が「０ｘ１１」、「タイプ」が「ＲＯ」である。すなわち、タグテーブル５２１ａは、検査用パケットのタグ値が「０ｘ１１」であり、ＲＯレジスタへアクセスした結果、Ｉ／Ｏデバイスが異常であることを示す。また、アドレス「３」の項目は、「タグ値」が「０ｘ１２」、「タイプ」が「ＲＯ」である。すなわち、タグテーブル５２１ａは、検査用パケットのタグ値が「０ｘ１２」であり、ＲＯレジスタへアクセスしていることを示す。
【００３１】
レジスタテーブル５２１ｂは、ＰＣＩ  Ｅｘｐｒｅｓｓデバイスが有する各レジスタの正常値を記憶する。例えば、レジスタテーブル５２１ｂは、図３に示した「Ｖｅｎｄｅｒ  ＩＤ」の正常値や「Ｄｅｖｉｃｅ  ＩＤ」の正常値等を記憶する。また、デバイステーブル５２１ｃは、情報処理装置１００に接続されたＩ／Ｏデバイスが有する固有の識別子を記憶し、これによってスイッチ制御部５１０はＩ／Ｏデバイスを一意に特定することができる。
【００３２】
制御部５２２は、制御プログラム、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有する。さらに、制御部５２２は、生成部５２２ａと、送信部５２２ｂと、受信部５２２ｃと、第１判定部５２２ｄと、第２判定部５２２ｅとを有する。例えば、制御部５２２は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路、又は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路である。
【００３３】
生成部５２２ａは、タグを付与した検査用パケットを生成する制御部である。生成部５２２ａは、Ｉ／Ｏデバイス３００の検査契機に達すると、ヘッダ領域にタグを付与した検査用パケットを生成して、後述する送信部５２２ｂへ転送する。さらに、生成部５２２ａは、後述する第２判定部５２２ｅから検査終了を示す通知を受付けた場合には、この通知を送信部５２２ｂへ転送する。なお、Ｉ／Ｏデバイス３００の検査契機は、前回の検査から一定時間後や予め指定された時間間隔ごとなど任意に設定することができる。
【００３４】
ここで、図５を用いて検査用パケットに付与されるヘッダ領域を説明する。図５は、生成部が生成する検査用パケットに付与されるヘッダ領域の一例を示す図である。
【００３５】
図５に示すように、生成部５２２ａによって生成される検査用パケットのヘッダ領域は、生成部５２２ａによって生成される検査用パケットが共通に有するヘッダ領域２１を有する。さらに、検査を実行するＩ／Ｏ接続装置及び検査対象であるＩ／Ｏデバイスに応じて付与される固有のヘッダ領域２２を有する。固有のヘッダ領域２２は、例えば、「Ｒｅｑｕｅｓｔｅｒ  ＩＤ」と、「タグ」と、「Ｄｅｖｉｃｅ  Ｎｕｍｂｅｒ」と、「Ｒｅｇｉｓｔｅｒ  Ｎｕｍｂｅｒ」などに関する情報を有する。
【００３６】
「Ｒｅｑｕｅｓｔｅｒ  ＩＤ」は、どの装置からリクエストが出力されたかを示す番号であるが、ここではＣＰＵのＩＤ、すなわちＲｏｏｔ  ＣｏｍｐｌｅｘのＩＤを使用する。「タグ」は、リクエストと応答の対応付けをとるために付与される。「Ｄｅｖｉｃｅ  Ｎｕｍｂｅｒ」は、送信先Ｉ／Ｏデバイスに付与された識別子である。例えば、記憶部５２１のデバイステーブル５２１ｃを参照することで、情報処理装置１００は、ヘッダ領域からＩ／Ｏデバイスを特定することができる。また、「Ｒｅｇｉｓｔｅｒ  Ｎｕｍｂｅｒ」は、検査に利用するレジスタを示す。
【００３７】
例えば、生成部５２２ａは、一意な「タグ」を付与するとともに、固有のヘッダ領域２２に「Ｄｅｖｉｃｅ  Ｎｕｍｂｅｒ」と「Ｒｅｇｉｓｔｅｒ  Ｎｕｍｂｅｒ」を指定した検査用パケットを生成する。そして、生成部５２２ａは、生成した検査用パケットを送信部５２２ｂに転送する。例えば、生成部５２２ａは、「Ｒｅｇｉｓｔｅｒ  Ｎｕｍｂｅｒ」に、「Ｄｅｖｉｃｅ  ＩＤ」や「Ｖｅｎｄｅｒ  ＩＤ」などのＲＯレジスタを指定する情報を格納する。
【００３８】
また、生成部５２２ａは、検査用パケットを生成すると、タグテーブル５２１ａに生成したタグ値やタイプに関する情報を書き込んでもよい。例えば、生成部５２２ａは、タグテーブル５２１ａの「タグ値」に、検査用パケットに付与されたタグを書き込み、「タイプ」に「ＲＯ」を書き込む。
【００３９】
図２に戻り、送信部５２２ｂは、生成部５２２ａによって生成された検査用パケットをＩ／Ｏデバイス３００へ送信する制御部である。例えば、送信部５２２ｂは、生成部５２２ａから受信した検査用パケットに含まれる「Ｄｅｖｉｃｅ  Ｎｕｍｂｅｒ」が割り振られたＩ／Ｏデバイスを、デバイステーブル５２１ｃを参照して特定する。そして、送信部５２２ｂは、特定したＩ／Ｏデバイスに対して検査用パケットを送信する。すると、検査用パケットは、送信先のＩ／Ｏデバイスにおいて、検査用パケットに含まれる「Ｒｅｇｉｓｔｅｒ  Ｎｕｍｂｅｒ」で指定されたレジスタへアクセスして、当該レジスタの値を取得する。
【００４０】
また、送信部５２２ｂは、ＣＰＵ２００から受信したパケットに付与されたタグと同一のタグを有した検査用パケットが存在するか否かを判定する。例えば、送信部５２２ｂは、ＣＰＵ２００からパケットを受信した場合に、当該パケットに含まれるタグをキーにしてタグテーブル５２１ａを検索する。そして、送信部５２２ｂは、当該パケットに付与されたタグと同一のタグが付与された検査用パケットが存在するか否かを判定する。同一タグが付与されたパケットが存在しなかった場合には、送信部５２２ｂは、当該パケットを宛先のＩ／Ｏデバイス３００へ送信する。
【００４１】
一方、送信部５２２ｂは、付与したタグと同一のタグを有するパケットをＣＰＵ２００から受信した場合には、ＣＰＵ２００から受信したパケットをＩ／Ｏデバイス３００へ送信しないように抑止制御する。例えば、同一タグが付与されたパケットが存在した場合には、送信部５２２ｂは、生成部５２２ａから検査終了を示す通知を受付けるまで、ＣＰＵ２００から受信したパケットを送信せずに保持する。すなわち、送信部５２２ｂは、検査用パケットと同一のタグを有するパケットについて、Ｉ／Ｏデバイス検査が終了するまで抑止する。
【００４２】
また、送信部５２２ｂは、ＣＰＵ２００からのパケットに付与されているタグに関する情報をタグテーブル５２１ａに書き込んでもよい。例えば、送信部５２２ｂは、タグテーブル５２１ａの「タグ値」に、パケットに付与されたタグを書き込み、「タイプ」に「ＣＰＵ」を書き込む。
【００４３】
受信部５２２ｃは、Ｉ／Ｏデバイス３００からパケットを受信する。第１判定部５２２ｄは、Ｉ／Ｏデバイス３００から受信したパケットが、ＣＰＵ２００からのアクセスに対する応答か検査用パケットに対する応答であるかを判定する。具体的には、第１判定部５２２ｄは、受信パケットのヘッダ領域に付与されたタグに基づいて、タグテーブル５２１ａを参照することで判定する。
【００４４】
ここで、図６を用いて、第１判定部５２２ｄが受信する応答パケットに付与されるヘッダ領域について説明する。図６は、応答パケットに付与されるヘッダ領域の一例を示す図である。
【００４５】
図６に示すように、第１判定部５２２ｄが受信する応答パケットに付与されるヘッダ領域は、応答パケットが共通に有するヘッダ領域３１とパケットの宛先に応じて付与される固有のヘッダ領域３２とを有する。固有のヘッダ領域３２は、例えば、「Ｒｅｑｕｅｓｔｅｒ  ＩＤ」と、「タグ」と、「Ｃｏｍｐｌｅｔｅｒ  ＩＤ」などに関する情報を有する。
【００４６】
「Ｒｅｑｕｅｓｔｅｒ  ＩＤ」は、どの装置からリクエストが出力されたかを示す番号である。例えば、「Ｒｅｑｕｅｓｔｅｒ  ＩＤ」は、ＣＰＵ２００を識別する識別子が付与される。「タグ」は、リクエストと応答の対応付けをとるために付与される。「Ｃｏｍｐｌｅｔｅｒ  ＩＤ」は、送信元Ｉ／Ｏデバイスに付与された識別子である。例えば、記憶部５２１のデバイステーブル５２１ｃを参照することで、情報処理装置１００は、ヘッダ領域からＩ／Ｏデバイスを特定することができる。
【００４７】
例えば、第１判定部５２２ｄは、Ｉ／Ｏデバイス３００から受信したパケットに含まれるタグをキーにしてタグテーブル５２１ａを検索し、受信したパケットに付与されたタグと同一のタグをもつパケットを特定する。具体的には、第１判定部５２２ｄは、タグテーブル５２１ａに受信したパケットに付与されたタグと同一のタグが存在するかどうかを判定する。そして、第１判定部５２２ｄは、同一のタグを持つパケットがタグテーブル５２１ａに存在する場合には、当該パケットを第２判定部５２２ｅへ転送する。
【００４８】
一方、第１判定部５２２ｄが、タグテーブル５２１ａに受信したパケットに付与されたタグと同一のタグが記録されていないことを検出した場合には、ＣＰＵから送信されたパケットに対する応答パケットであると特定するする。第１判定部５２２ｄは、当該パケットがＣＰＵ２００から送信されたパケットに対する応答パケットであると特定した場合には、当該パケットをＣＰＵ２００へ転送する。また、第１判定部５２２ｄは、応答パケットを所定時間連続して受信していない場合には、タイムアウトしたか否かを判定させるための通知を第２判定部５２２ｅへ送信する。
【００４９】
第２判定部５２２ｅは、第１判定部５２２ｄから検査用パケットに対する応答パケットを受信し、応答パケットに示される内容が正常であるか否かを判定する制御部である。例えば、第２判定部５２２ｅは、受信したパケットから「Ｃｏｍｐｌｅｔｅｒ  ＩＤ」を読み出し、レジスタテーブル５２１ｂに記憶されている「Ｄｅｖｉｃｅ  ＩＤ」と一致するか否かを判定する。そして、第２判定部５２２ｅは、一致したと判定した場合には、Ｉ／Ｏデバイス３００が正常であると判定する。そして、第２判定部５２２ｅは、タグテーブル５２１ａの「有効／無効」の項目を「無効」とし、タグテーブル５２１ａからタグ情報を消去する。続いて、第２判定部５２２ｅは、生成部５２２ａへ検査の終了を通知する。
【００５０】
一方、第２判定部５２２ｅは、一致しないと判定した場合には、Ｉ／Ｏデバイス３００が異常であると判定する。そして、第２判定部５２２ｅは、タグテーブル５２１ａの「有効／無効」の項目を「有効」とし、「正常／異常」の項目にＩ／Ｏデバイス３００が「異常」であることを示す検査結果を書き込む。続いて、第２判定部５２２ｅは、後述する異常処理部５４０にＩ／Ｏデバイス３００が異常であることを通知する。
【００５１】
また、第２判定部５２２ｅは、第１判定部５２２ｄからタイムアウトの検査を受付けた場合には、生成部５２２ａが計測した経過時間に基づいて、所定の時間を経過したか否かを判定する。第２判定部５２２ｅは、所定の時間を経過したことを示すタイムアウトと判定した場合には、Ｉ／Ｏデバイス３００から応答がないのでリンクレベルの異常であると判定する。そして、第２判定部５２２ｅは、タグテーブル５２１ａの「正常／異常」の項目にＩ／Ｏデバイス３００が「異常」であることを示す検査結果を書き込む。続いて、第２判定部５２２ｅは、後述する異常処理部５４０にＩ／Ｏデバイス３００が異常であることを通知する。なお、所定の経過時間は利用者によって任意に設定可能である。
【００５２】
異常処理部５４０は、Ｉ／Ｏデバイス３００に対して異常が検出された場合に、異常処理を実行する制御部である。図７を用いて、異常処理部５４０による処理の一例を説明する。図７は、異常処理部による処理の一例を示す図である。例えば、異常処理部５４０は、Ｉ／Ｏデバイス３００に異常が検出された場合には、故障デバイスの切り離しを実施する。
【００５３】
具体的には、異常処理部５４０は、Ｉ／Ｏデバイス３００に異常が検出された場合には、送信部５２２ｂと、受信部５２２ｃとへ通知する。この結果、送信部５２２ｂと、受信部５２２ｃとは、Ｉ／Ｏデバイス３００との接続を解除する。なお、異常処理部５４０は、Ｉ／Ｏデバイス４００において異常が発生した場合も同様に、故障デバイスの切り離しを実施する。
【００５４】
［実施例２に係る情報処理装置による処理の処理手順］
次に、図８を用いて、実施例２に係る情報処理装置１００による処理の処理手順を説明する。図８は、実施例２に係る情報処理装置による処理の処理手順を説明するフローチャートである。
【００５５】
スイッチ５２０は、生成部５２２ａが前回のアクセスから一定の時間が経過したと判定した場合には（ステップＳ１０１、Ｙｅｓ）、Ｒｅａｄ  Ｏｎｌｙレジスタ読み出し処理を実施する（ステップＳ１０２）。
【００５６】
スイッチ５２０の第２判定部５２２ｅは、Ｒｅａｄ  Ｏｎｌｙレジスタ読み出し処理を実施した結果、異常が検出されたか否かを判定する（ステップＳ１０３）。ここで、異常が検出された場合には（ステップＳ１０３、Ｙｅｓ）、第２判定部５２２ｅは、異常処理部５４０へ通知し、異常処理部５４０が異常処理を実施する（ステップＳ１０４）。一方、異常が検出されなかった場合には（ステップＳ１０３、Ｎｏ）、第２判定部５２２ｅは、タグテーブル５２１ａからタグ情報を消去する（ステップＳ１０５）。
【００５７】
［レジスタアクセス処理の処理手順］
図９を用いて、実施例２に係るレジスタアクセス処理の処理手順を説明する。図９は、実施例２に係るレジスタアクセス処理の処理手順を説明するフローチャートである。なお、ここで説明する処理は、図８のステップＳ１０２に対応する。
【００５８】
スイッチ５２０の生成部５２２ａは、タグを生成し（ステップＳ２０１）、生成したタグをタグテーブルに登録する（ステップＳ２０２）。続いて、生成部５２２ａは、生成したタグを付与した検査用パケットを生成し、検査用パケットをＩ／Ｏデバイス３００へ送信してレジスタへアクセスを要求する（ステップＳ２０３）。
【００５９】
第１判定部５２２ｄは、Ｉ／Ｏデバイス３００から検査用パケットに対する応答パケットを受信したか否かを判定する（ステップＳ２０４）。ここで、検査用パケットに対する応答パケットを受信したと判定した場合には（ステップＳ２０４、Ｙｅｓ）、第２判定部５２２ｅは、応答パケットのデータ内容を解析して、Ｉ／Ｏデバイス３００が正常か否かを判定する（ステップＳ２０５）。
【００６０】
第２判定部５２２ｅは、応答パケットのデータ内容に異常が含まれていないと判定した場合には（ステップＳ２０５、Ｙｅｓ）、応答パケット送信元のＩ／Ｏデバイス３００が正常であると判定する（ステップＳ２０６）。一方、第２判定部５２２ｅは、応答パケットのデータ内容に異常が含まれていると判定した場合には（ステップＳ２０５、Ｎｏ）、応答パケット送信元のＩ／Ｏデバイス３００が異常であると判定する（ステップＳ２０８）。
【００６１】
第１判定部５２２ｄは、受信したパケットが検査用パケットに対する応答パケットでないと判定した場合には（ステップＳ２０４、Ｎｏ）、タイムアウトしたか否かを判定する（ステップＳ２０７）。第２判定部５２２ｅは、タイムアウトしたと判定した場合には（ステップＳ２０７、Ｙｅｓ）、Ｉ／Ｏデバイス３００が異常であると判定する（ステップＳ２０８）。
【００６２】
一方、第２判定部５２２ｅがタイムアウトしていないと判定した場合には（ステップＳ２０７、Ｎｏ）、第１判定部５２２ｄは、Ｉ／Ｏデバイス３００からＣＰＵ２００を宛先とする応答パケットを受信したかを判定する（ステップＳ２０９）。ここで、第１判定部５２２ｄは、ＣＰＵ２００を宛先と応答パケットを受信した場合には（ステップＳ２０９、Ｙｅｓ）、当該パケットをＣＰＵ２００へ転送する（ステップＳ２１０）。ＣＰＵ２００を宛先とする応答パケットを受信していない場合には（ステップＳ２０９、Ｎｏ）、第１判定部５２２ｄは、引き続き、Ｉ／Ｏデバイス３００からの検査用パケットに対する応答パケットを受信したか否かを判定する（ステップＳ２０４）。
【００６３】
［ＣＰＵからパケットを受信した場合の送信部５２２ｂによる処理の処理手順］
図１０を用いて、実施例２に係る送信部５２２ｂによる処理の処理手順を説明する。図１０は、実施例２に係る送信部による処理の処理手順を説明するフローチャートである。
【００６４】
送信部５２２ｂは、ＣＰＵ２００からパケットを受信した場合には（ステップＳ３０１、Ｙｅｓ）、受信パケットのタグと同一のタグが付与された検査用パケットが存在するか否かを判定する（ステップＳ３０２）。送信部５２２ｂは、同一タグが付与された検査用パケットが存在しないと判定した場合には（ステップＳ３０２、Ｎｏ）、受信パケットを宛先のＩ／Ｏデバイス３００へ送信する（ステップＳ３０４）。
【００６５】
一方、送信部５２２ｂは、同一タグが付与された検査用パケットが存在すると判定した場合には（ステップＳ３０２、Ｙｅｓ）、検査用パケットによるＩ／Ｏデバイス３００の検査終了通知を受付けたか否かを判定する（ステップＳ３０３）。ここで、送信部５２２ｂは、検査終了通知を受付けたと判定した場合には（ステップＳ３０３、Ｙｅｓ）、受信パケットをＩ／Ｏデバイス３００へ送信する（ステップＳ３０４）。また、送信部５２２ｂは、検査終了通知を受付けていないと判定した場合には（ステップＳ３０３、Ｎｏ）、検査終了通知を受付けるまで受信パケットをＩ／Ｏデバイス３００へ送信しない。
【００６６】
［実施例２の効果］
上述してきたように、実施例２に係る情報処理装置１００の生成部５２２ａは、タグを付与した検査用パケットを生成する。送信部５２２ｂは、生成した検査用パケットをＩ／Ｏデバイス３００の共通レジスタへ定期的に送信する。受信部５２２ｃは、Ｉ／Ｏデバイス３００からパケットを受信する。第１判定部５２２は、受信部５２２ｃがＩ／Ｏデバイス３００から受信したパケットのタグに基づいて当該パケットが送信部５２２ｂによって送信された検査用パケットに対する応答パケットであるか否かを判定する。
【００６７】
そして、第２判定部５２２ｅは、第１判定部５２２ｄによって応答パケットであると判定された応答パケットの内容からＩ／Ｏデバイス３００が異常であるか否かを判定する。また、第２判定部５２２ｅは、応答パケットの内容からＩ／Ｏデバイス３００が異常であると判定した場合には、異常処理部５４０へ通知する。異常処理部５４０は、異常と判定されたＩ／Ｏデバイス３００とＣＰＵ２００との接続を切り離す異常処理を実行する。また、送信部５２２ｂは、付与したタグと同一のタグを有するパケットをＣＰＵ２００が発生した場合には、ＣＰＵ２００が発生したパケットをＩ／Ｏデバイス３００へ送信しない。第２判定部５２２ｅは、判定終了後に判定結果を送信部５２２ｂに通知する。送信部５２２ｂは、第２判定部５２２ｅによって通知を受け付けた場合に、ＣＰＵ２００が発生したパケットをＩ／Ｏデバイス３００へ送信する。
【００６８】
すなわち、本実施例２に係る情報処理装置１００は、Ｉ／Ｏデバイス３００内部に生じた異常を早期に検出できる。さらに、異常が生じたＩ／Ｏデバイス３００を切り離すことでＣＰＵ２００が停止することを防ぐことができる。ＣＰＵ２００がシステムダウンすることを防止できるため、故障デバイスを検査することができる。
【００６９】
また、本実施例２に係る情報処理装置１００は、個々のＩ／Ｏデバイス３００に対して専用の監視機能を設けなくてもよく、全てのＰＣＩ  Ｅｘｐｒｅｓｓデバイスに対して同一手段で検査をすることができる。また、本実施例２に係る情報処理装置１００は、レジスタにアクセスを行っても、Ｉ／Ｏデバイス３００に悪影響を与えない。
【実施例３】
【００７０】
実施例２では、送信部５２２ｂは、ＣＰＵ２００から受信したパケットがＩ／Ｏ接続装置５００が生成したタグと同じタグを持っていた場合には、当該パケットを送信しない。そして、送信部５２２ｂは、検査終了を待ってＩ／Ｏデバイス３００が正常であることを確認してから、ＣＰＵ２００から受信したパケット送信する例について説明した。ところが、情報処理装置において、ＣＰＵからのパケットを遅延なく送信した方が好ましい場合がある。そこで、実施例３では、情報処理装置において、ＣＰＵからのパケットと同一のタグを有する検査用パケットが存在した場合に、ＣＰＵパケットの送信を遅延させずＩ／Ｏデバイスを検査する方法について説明する。
【００７１】
［実施例３に係る情報処理装置の構成］
次に、図１１を用いて、実施例３に係る情報処理装置６００の構成を説明する。図１１は、実施例３に係る情報処理装置の構成を示す機能ブロック図である。実施例３に係る情報処理装置６００は、ＣＰＵ２００と、Ｉ／Ｏデバイス３００と、Ｉ／Ｏデバイス４００と、Ｉ／Ｏ接続装置７００とを有する。なお、ここでは、図２に示した各部と同様の役割を果たす機能部については、同一符号を付すことにしてその詳細な説明を省略する。
【００７２】
Ｉ／Ｏ接続装置７００は、スイッチ制御部５１０と、スイッチ７２０と、スイッチ７３０と、異常処理部５４０とを有し、ＣＰＵ２００とＩ／Ｏデバイス３００及び４００とを相互接続する。なお、スイッチ７２０とスイッチ７３０とは同様の構成を有するので、ここではスイッチ７２０についてのみ説明する。
【００７３】
スイッチ７２０は、スイッチ制御部５１０と異常処理部５４０とＩ／Ｏデバイス３００とを相互接続するスイッチであり、記憶部７２１と制御部７２２とを有する。記憶部７２１は、制御部７２２による各種処理に必要なデータおよびプログラムを格納するとともに、タグテーブル７２１ａとレジスタテーブル５２１ｂとデバイステーブル５２１ｃとを有する半導体メモリ素子、または、ハードディスクなどの記憶装置である。
【００７４】
タグテーブル７２１ａは、パケットに付与されたタグ情報を記憶する。タグテーブル７２１ａが記憶する情報について図１２を用いて説明する。図１２は、実施例３に係るタグテーブルが記憶するデータの一例を示す図である。例えば、実施例３に係るタグテーブル７２１ａは、「有効／無効」と「正常／異常」と「タグ値」と「タイプ」と「元タグ値」に関する情報を記憶する。ここで、「有効／無効」は、テーブルの内容が有効であるか無効であるかを示す。「正常／異常」は、第２判定部５２２ｅによる検査結果に関する情報を示す。また、「タグ値」は、生成部５２２ａによって付与されたタグ情報を示す。もしくは、送信部７２２ｂが、ＣＰＵ２００からのパケットに付与されたタグを書き換えたタグ情報を示す。「タイプ」は、レジスタのタイプをし、「元タグ値」は、タグが書き換えられた場合に、書き換えられる前のタグ値を示す。
【００７５】
例えば、アドレス１の項目は、「有効／無効」が「有効」、「正常／異常」が「異常」、「タグ値」が「０ｘ１０」、「タイプ」が「ＲＯ」である。すなわち、検査用パケットのタグ値が「０ｘ１０」であり、ＲＯレジスタへアクセスした結果、Ｉ／Ｏデバイスが異常であることを示す。また、アドレス２の項目は、「タグ値」が「０ｘ１１」、「タイプ」が「ＲＯ」である。すなわち、検査用パケットのタグ値が「０ｘ１１」であり、ＲＯレジスタへアクセスしていることを示す。また、アドレス３の項目は、「タグ値」が「０ｘ１２」、「タイプ」が「ＣＰＵ」、「元タグ値」が「０ｘ１１」である。すなわち、ＣＰＵ２００から送信されたパケットに付与されたタグが「０ｘ１１」であり、検査用パケットのタグ値と同一のため、「０ｘ１２」に変更されたことを示す。
【００７６】
制御部７２２は、制御プログラム、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有する。さらに、制御部７２２は、生成部５２２ａと、送信部７２２ｂと、受信部５２２ｃと、第１判定部７２２ｄと、第２判定部５２２ｅとを有する。例えば、制御部７２２は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路、又は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路である。
【００７７】
送信部７２２ｂは、実施例２で説明した送信部５２２ｂが有する機能に加え、以下の機能をさらに有する。送信部７２２ｂは、付与したタグと同一のタグを有するパケットをＣＰＵ２００から受信した場合には、ＣＰＵ２００から受信したパケットのタグを書き換えてＩ／Ｏデバイス３００に送信する。
【００７８】
例えば、送信部７２２ｂは、タグテーブル７２１ａを検索し、ＣＰＵ２００から受信したパケットに付与されたタグと同一のタグが存在するか否かを判定する。送信部７２２ｂは、ＣＰＵ２００から受信したパケットに付与されたタグと同一のタグが付与された検査用パケットが存在する場合には、ＣＰＵ２００からのパケットに付与されたタグを書き換え、タグテーブル７２１ａを更新する。続いて、送信部７２２ｂは、タグを書き換えたＣＰＵ２００からのパケットをＩ／Ｏデバイス３００へ転送する。
【００７９】
例えば、送信部７２２ｂは、検査用パケットに付与されたタグ「０ｘ１１」と同一のタグ「０ｘ１１」が付与されたパケットをＣＰＵ２００から受信した場合には、当該タグを「０ｘ１２」へ書き換える。そして、送信部７２２ｂは、タグを書き換えた情報をタグテーブル７２１ａに格納する。
【００８０】
第１判定部７２２ｄは、実施例２で説明した第１判定部５２２ｄが有する機能に加え、以下の機能をさらに有する。例えば、第１判定部７２２ｄは、受信したパケットがＣＰＵ２００のアクセスに対する応答パケットであった場合には、当該パケットに付与されたタグ情報を抽出し、タグテーブル７２１ａを検索してタグが書き換えられたか否かを判定する。タグが書き換えられていた場合には、第１判定部７２２ｄは、パケットに付与されたタグを書き換え前のタグ値に書き戻す。第１判定部７２２ｄは、タグを書き戻したパケットをＣＰＵ２００へ転送する。
【００８１】
第１判定部７２２ｄは、タグテーブル７２１ａを検索して、ＣＰＵ２００を宛先とするパケットのタグ「０ｘ１２」の「元タグ値」を検索し、タグを「０ｘ１１」に書き戻す。そして、第１判定部７２２ｄは、当該パケットの情報をタグテーブル７２１ａから削除したりする。
【００８２】
［ＣＰＵからパケットを受信した場合の送信部７２２ｂによる処理の処理手順］
図１３を用いて、実施例３に係る送信部７２２ｂによる処理の処理手順を説明する。図１３は、実施例３に係る送信部による処理の処理手順を説明するフローチャートである。
【００８３】
送信部７２２ｂは、ＣＰＵ２００からのパケットを受信したと判定した場合には（ステップＳ４０１、Ｙｅｓ）、受信パケットのタグと同一のタグが付与された検査用パケットが存在するか否かを判定する（ステップＳ４０２）。送信部７２２ｂは、同一タグが付与された検査用パケットが存在しないと判定した場合には（ステップＳ４０２、Ｎｏ）、受信パケットを宛先のＩ／Ｏデバイス３００へ送信する（ステップＳ４０５）。
【００８４】
一方、送信部７２２ｂは、同一タグが付与された検査用パケットが存在すると判定した場合には（ステップＳ４０２、Ｙｅｓ）、ＣＰＵ２００から受信したパケットのタグを書き換え（ステップＳ４０３）、タグを書き換えたことを示す情報を書き込むことでタグテーブル７２１ａを更新する（ステップＳ４０４）。続いて、送信部７２２ｂは、タグを書き換えたパケットを宛先のＩ／Ｏデバイス３００へ送信する（ステップＳ４０５）。
【００８５】
［ＣＰＵからパケットを受信した場合の処理の処理手順］
図１４を用いて、実施例３に係る情報処理装置６００によるＣＰＵ２００を宛先とするパケットを受信した場合の処理の処理手順を説明する。図１４は、実施例３に係る情報処理装置によるＣＰＵを宛先とするパケットを受信した場合の処理の処理手順を説明するフローチャートである。
【００８６】
第１判定部５２２ｄは、ＣＰＵ２００に対するパケットを受信したと判定した場合には（ステップＳ５０１、Ｙｅｓ）、タグテーブル７３１ａを参照し、タグが書き換えられているか否かを判定する（ステップＳ５０２）。ここで、第１判定部５２２ｄは、受信したパケットのタグが書き換えられていると判定した場合には（ステップＳ５０２、Ｙｅｓ）、タグを元に書き戻し（ステップＳ５０３）、ＣＰＵ２００にパケットを転送する（ステップＳ５０４）。
【００８７】
一方、第１判定部５２２ｄは、受信したパケットのタグが書き換えられていないと判定した場合には（ステップＳ５０２、Ｎｏ）、受信したパケットのタグを書き換えることなくＣＰＵ２００に転送する（ステップＳ５０４）。
【００８８】
［実施例３の効果］
上述してきたように、本実施例３では、送信部７２２ｂは、生成部５２２ａが付与したタグと同一のタグを有するパケットをＣＰＵ２００から受信した場合には、ＣＰＵ２００から受信したパケットのタグを書き換え、Ｉ／Ｏデバイス３００へ送信する。したがって、情報処理装置６００は、遅延なくＣＰＵ２００から受信したパケットを転送し、Ｉ／Ｏデバイス３００を検査することができる。
【実施例４】
【００８９】
実施例２及び３では、ＰＣＩ  Ｅｘｐｒｅｓｓデバイスの共通レジスタにアクセスすることで、デバイスに干渉せずＩ／Ｏデバイス内部に生じた異常の有無を検査することができる。また、かかる場合、情報処理装置は、内部に生じた異常の詳細情報を取得できた方が好ましい。そこで、実施例４として、ＡＥＲ（Advance  Error  Reporting）機能を有するＰＣＩ  Ｅｘｐｒｅｓｓデバイスに対して、検査用パケットを送信し、応答パケットを解析することで発生した異常を検査し、検査した異常の詳細情報を取得する場合について説明する。
【００９０】
［実施例４に係る情報処理装置の構成］
次に、図１５を用いて、実施例４に係る情報処理装置８００の構成を説明する。図１５は、実施例４に係る情報処理装置の構成を示す機能ブロック図である。実施例４に係る情報処理装置８００は、ＣＰＵ２００と、Ｉ／Ｏデバイス３００と、Ｉ／Ｏデバイス４００と、Ｉ／Ｏ接続装置９００とを有する。なお、ここでは、図２に示した各部と同様の役割を果たす機能部については、同一符号を付すことにしてその詳細な説明を省略する。
【００９１】
Ｉ／Ｏ接続装置９００は、スイッチ制御部５１０と、スイッチ９２０と、スイッチ９３０と、異常処理部５４０とを有し、ＣＰＵ２００とＩ／Ｏデバイス３００及び４００とを相互接続する。なお、スイッチ９２０とスイッチ９３０とは同様の構成を有するので、ここではスイッチ９２０についてのみ説明する。
【００９２】
スイッチ９２０は、スイッチ制御部５１０と異常処理部５４０とＩ／Ｏデバイス３００とを相互接続するスイッチであり、記憶部９２１と制御部９２２とを有する。記憶部９２１は、制御部９２２による各種処理に必要なデータおよびプログラムを格納するとともに、タグテーブル９２１ａとレジスタテーブル５２１ｂとデバイステーブル５２１ｃとを有する半導体メモリ素子、または、ハードディスクなどの記憶装置である。
【００９３】
タグテーブル９２１ａは、パケットに付与されたタグ情報を記憶する。タグテーブル９２１ａが記憶する情報について図１６を用いて説明する。図１６は、実施例４に係るタグテーブルが記憶するデータの一例を示す図である。例えば、実施例４に係るタグテーブル９２１ａは、「有効／無効」と「正常／異常」と「タグ値」と「タイプ」と「元タグ値」に関する情報を記憶する。ここで、「有効／無効」はテーブルの内容が有効であるか無効であるかを示す。「正常／異常」は、第２判定部９２２ｅによる検査結果に関する情報を示す。また、「タグ値」は、生成部９２２ａによって付与されたタグ情報を示す。「タイプ」は、パケットがＣＰＵ２００から送信されたパケットであるか検査用パケットであるかを特定する。例えば、パケットがＣＰＵ２００から送信されたパケットであった場合には、「タイプ」は「ＣＰＵ」となる。また、パケットが検査用パケットであった場合には、例えば、「タイプ」は、アクセスするレジスタのタイプを特定する。具体的には、「タイプ」が「ＡＥＲ」である場合には、検査用パケットは、ＡＥＲレジスタへアクセスすることを示す。「元タグ値」は、タグが書き換えられた場合に、書き換えられる前のタグ値を示す。
【００９４】
アドレス１の項目は、「有効／無効」が「有効」、「正常／異常」が「異常」、「タグ値」が「０ｘ１０」、「タイプ」が「ＲＯ」である。すなわち、検査用パケットのタグが「０ｘ１０」であり、ＲＯレジスタへアクセスした結果、Ｉ／Ｏデバイスが異常であることを示す。また、アドレス２の項目は、「タグ値」が「０ｘ１１」、「タイプ」が「ＣＰＵ」、「元タグ値」が「０ｘ１０」である。すなわち、ＣＰＵ２００から送信されたパケットに付与されたタグが「０ｘ１０」であり、検査用パケットのタグ値と同一のため、「０ｘ１１」に変更されたことを示す。また、アドレス３の項目は、「タグ値」が「０ｘ１２」であり、「タイプ」が「ＡＥＲ」である。すなわち、検査用パケットのタグが「０ｘ１２」であり、ＡＥＲレジスタへアクセスしたことを示す。
【００９５】
制御部９２２は、制御プログラム、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有する。さらに、制御部９２２は、生成部９２２ａと、送信部９２２ｂと、受信部５２２ｃと、第１判定部９２２ｄと、第２判定部９２２ｅとを有する。例えば、制御部９２２は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路、又は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路である。
【００９６】
生成部９２２ａは、実施例２で説明した生成部５２２ａが有する機能に加え、以下の機能をさらに有する。生成部９２２ａは、後述する第２判定部９２２ｅから共通レジスタへの検査が終了した通知を受付けると、Ｉ／Ｏデバイス３００がＡＥＲを有しているか否かを判定する。生成部９２２ａは、Ｉ／Ｏデバイス３００がＡＥＲを有していると判定した場合には、ＡＥＲレジスタ検査用パケットを生成する。生成部９２２ａは、Ｉ／Ｏデバイス３００がＡＥＲを有していないと判定した場合には、検査を終了する。図１７を用いて、ＡＥＲレジスタの一例を説明する。図１７は、ＡＥＲレジスタの一例を示す図である。
【００９７】
図１７に示した各種レジスタは、ＰＣＩ  Ｅｘｐｒｅｓｓのオプションとして規格化される３２ビットのレジスタであり、Ｉ／Ｏデバイス３００内部の詳細状態を記憶する。したがって、ＡＥＲレジスタを有するＩ／Ｏデバイス３００に対して、実施例１等で説明したアクセス手法と同様の手法で異常を検査することができる。例えば、スイッチ９２０は図５に示したフォーマットのヘッダを持つパケットを生成し、Ｒｅｑｕｅｓｔｅｒ  ＩＤにＣＰＵ２００のＩＤ、Ｂｕｓ  Ｎｕｍｂｅｒ、Ｄｅｖｉｃｅ  Ｎｕｍｂｅｒ、Ｆｕｎｃｔｉｏｎ  ＮｕｍｂｅｒにＩ／ＯデバイスのＩＤをセットする。さらにＲｅｇｉｓｔｅｒ  ＮｕｍｂｅｒにＡＥＲレジスタが配置されているアドレスを指定し、Ｉ／Ｏデバイスに送信することによって、図１７に示した、Uncorrectable  Error  Status  Registerにアクセスすることができる。その結果、Ｒｅａｄ  Ｏｎｌｙレジスタをアクセスした場合と同様に図６に示すヘッダを持つ応答パケットを受信し、受信したパケットのデータ部を参照することでＩ／Ｏデバイス３００内部の詳細な異常状態を検出できる。図１５に戻って、生成部９２２ａは、ＡＥＲレジスタ検査用パケットを生成すると、タグテーブル９２１ａに生成したタグ値やタイプに関する情報を書き込む。
【００９８】
送信部９２２ｂは、実施例２で説明した送信部５２２ｂ又は実施例３で説明した送信部７２２ｂが有する機能に加え、以下の機能をさらに有する。例えば、送信部９２２ｂは、Ｉ／Ｏデバイス３００がＰＣＩ  Ｅｘｐｒｅｓｓで規格化されているＡＥＲレジスタを有している場合には、ＡＥＲレジスタへ検査用パケットを送信する。
【００９９】
第１判定部９２２ｄは、実施例２で説明した第１判定部５２２ｄ又は実施例３で説明した第１判定部７２２ｄが有する機能に加え、以下の機能をさらに有する。例えば、第１判定部９２２ｄは、検査用パケットに対する応答パケットを受信した場合には、「タグ値」と「タイプ」を判定し、第２判定部９２２ｅへパケットを転送する。
【０１００】
第２判定部９２２ｅは、実施例２で説明した第２判定部５２２ｅが有する機能に加え、以下の機能をさらに有する。第２判定部９２２ｅは、第１判定部９２２ｄからＡＥＲレジスタへのアクセスの応答パケットを受信した場合には、応答パケットに有効なエラービットが付与されているか否かを判定する。第２判定部９２２ｅは、例えば、有効なエラービットであることを示す「１」が付与されている場合には、Ｉ／Ｏデバイスが異常であると判定し、判定結果を異常処理部５４０へ通知する。一方、第２判定部９２２ｅは、例えば、有効なエラービットでないことを示す「０」が付与されている場合には、Ｉ／Ｏデバイスが正常であると判定し、タグテーブル９２１ａから該当情報を消去する。
【０１０１】
［実施例４に係る情報処理装置による処理の処理手順］
次に、図１８を用いて、実施例４に係る情報処理装置８００による処理の処理手順を説明する。図１８は、実施例４に係る情報処理装置による処理の処理手順を説明するフローチャートである。
【０１０２】
生成部９２２ａが前回のアクセスから一定の時間が経過したと判定した場合には（ステップＳ６０１、Ｙｅｓ）、スイッチ９２０は、Ｒｅａｄ  Ｏｎｌｙレジスタ読み出し処理を実施する（ステップＳ６０２）。なお、Ｒｅａｄ  Ｏｎｌｙレジスタ読み出し処理は、図８のステップＳ１０２等と同様であるので、ここでは省略する。
【０１０３】
第２判定部９２２ｅは、Ｒｅａｄ  Ｏｎｌｙレジスタ読み出し処理を実施した結果、異常が検出されたか否かを判定する（ステップＳ６０３）。ここで、異常が検出された場合には（ステップＳ６０３、Ｙｅｓ）、第２判定部９２２ｅは、異常処理部５４０へ通知し、異常処理部５４０が異常処理を実施する（ステップＳ６０７）。一方、異常が検出されなかった場合には（ステップＳ６０３、Ｎｏ）、生成部９２２ａは、Ｉ／Ｏデバイス３００がＡＥＲを有しているか否かを判定する（ステップＳ６０４）。
【０１０４】
Ｉ／Ｏデバイス３００がＡＥＲを有していると判定した場合には（ステップＳ６０４、Ｙｅｓ）、スイッチ９２０は、ＡＥＲレジスタに対してＡＥＲレジスタ検査用パケットを送信する（ステップＳ６０５）。一方、Ｉ／ＯデバイスがＡＥＲを有していないと判定した場合には（ステップＳ６０４、Ｎｏ）、スイッチ９２０は、処理を終了する。
【０１０５】
第２判定部９２２ｅによってＡＥＲレジスタアクセスに対して異常が検出された場合には（ステップ６０６、Ｙｅｓ）、異常処理部５４０は、異常処理を実施する（ステップＳ６０７）。すなわち、第２判定部９２２ｅは、ＡＥＲレジスタアクセスに対する応答パケットに有効なエラービットが含まれている場合に、異常と判定する。一方、第２判定部９２２ｅは、ＡＥＲレジスタアクセスに対する応答パケットに有効なエラービットが含まれていない場合には正常と判定し（ステップ６０６、Ｎｏ）、タグテーブル９２１ａから情報を消去する（ステップＳ６０８）。
【０１０６】
［実施例４の効果］
上述してきたように、本実施例４では、Ｉ／Ｏデバイス３００がＰＣＩ  Ｅｘｐｒｅｓｓで規格化されているＡＥＲ機能を有している場合には、送信部９２２ｂは、生成部９２２ａが生成した検査用パケットをＡＥＲレジスタへ送信する。第２判定部９２２ｅは、応答パケットに有効なエラービットが付与されているか判定することによって、Ｉ／Ｏデバイス３００内部に生じた異常を検査し、検査した異常の詳細情報を取得することができる。
【実施例５】
【０１０７】
ところで、本願の開示する情報処理装置は、上述した実施例以外にも、種々の異なる形態にて実施されてよい。そこで、実施例５では、本願の開示する情報処理装置の他の実施例について説明する。
【０１０８】
（レジスタアクセス処理）
例えば、実施例２、実施例３、及び実施例４では、Ｉ／Ｏ接続装置が共通レジスタのＲＯレジスタへアクセスしてＩ／Ｏデバイスの異常を検出する例について説明したが、本願はこれに限定されるものではない。例えば、Ｉ／Ｏ接続装置は、Ｉ／Ｏデバイスに干渉しなければ、ＲＯレジスタ以外のレジスタにもアクセス可能である。例えば、ＲＯレジスタ以外に使用できるレジスタについて図１９を用いて説明する。
【０１０９】
図１９は、本願で利用可能なコンフィグレーションレジスタのタイプの一例を示す図である。図１９に示す「タイプ」は、利用可能なレジスタの略称を示し、「名称」は、利用可能なレジスタの正式名称を示す。例えば、「Ｈｗｌｉｎｉｔ」は、正式名称が「Ｈａｒｄｗａｒｅ  Ｉｎｉｔｉａｌｉｚｅｄ」であり、ファームウェアで初期化されるレジスタであることを示す。また、「ＲＯ」は、正式名称が「Ｒｅａｄ―Ｏｎｌｙ」であり、読み出し専用のレジスタであることを示す。また、「ＲＷ」は、正式名称が「Ｒｅａｄ―Ｗｒｉｔｅ」であり、読み書き可能なレジスタであることを示す。また、「ＲＷ１Ｃ」は、正式名称が「Ｗｒｉｔｅ−１−ｔｏ−ｃｌｅａｒ  ｓｔａｔｕｓ」であり、１を書くとクリアされるレジスタであることを示す。また、「ＲＯＳ」は、正式名称が「Ｓｔｉｃｋｙ−Ｒｅａｄ−ｏｎｌｙ」であり、リセットで初期化されない、読み出し専用レジスタであることを示す。また、「ＲＷＳ」は、正式名称が「Ｓｔｉｃｋｙ−Ｒｅａｄ−Ｗｒｉｔｅ」であり、リセットで初期化されない、読み書き可能レジスタであることを示す。また、「ＲＷ１ＣＳ」は、正式名称が「Ｓｔｉｃｋｙ−Ｗｒｉｔｅ−１−ｔｏ−ｃｌｅａｒ  ｓｔａｔｕｓ」であり、リセットで初期化されない、１を書くとクリアされるレジスタであることを示す。また、「ＲｓｖｄＰ」は、正式名称が「Ｒｅｓｅｒｖｅｄ  ａｎｄ  Ｐｒｅｓｅｒｖｅｄ」であり、予約済みレジスタであることを示す。また、「ＲｓｖｄＺ」は、正式名称が「Ｒｅｓｅｒｖｅｄ  ａｎｄ  Ｚｅｒｏ」であり、予約済みで書き込みは０でなければならないレジスタであることを示す。具体的には、情報処理装置は、ＰＣＩ  Ｅｘｐｒｅｓｓデバイスが有するＢａｓｅ  Ａｄｄｒｅｓｓレジスタにアクセス可能である。
【０１１０】
また、図２０を用いて、ＲＯとＲＷの異なるタイプが混在するＢａｓｅ  Ａｄｄｒｅｓｓレジスタについて説明する。図２０は、異なるタイプが混在するＢａｓｅ  Ａｄｄｒｅｓｓレジスタの一例を示す図である。Ｂａｓｅ  Ａｄｄｒｅｓｓレジスタは、３２ｂｉｔ有し、０ビットから３ビット目までの４ｂｉｔはＲＯレジスタである。
【０１１１】
０ビット目は、「Ｍｅｍｏｒｙ  Ｓｐａｃｅ  Ｉｎｄｉｃａｔｏｒ」であり、値は常に０で、このベースアドレスレジスタがメモリ空間用のものであることを示す。また、１ビット目と２ビット目は、「Ｔｙｐｅ」であり、ビットの組み合わせによってこのメモリブロックを配置可能なアドレス範囲を表示する。３ビット目は、「Ｐｒｅｆｅｔｃｈａｂｌｅ」であり、プリフェッチを行うとデータの転送効率が良くなる。
【０１１２】
また、４ビットから３１ビット目までの２８ｂｉｔは、ＲＷレジスタである。したがって、Ｉ／Ｏ接続装置は、Ｂａｓｅ  Ａｄｄｒｅｓｓレジスタの０ビットから３ビット目までのＲＯレジスタ領域にアクセスすることで、Ｉ／Ｏデバイス内部の異常を早期に検査することができる。
【０１１３】
また、Ｉ／Ｏデバイスの検査にどのＡＥＲレジスタにアクセスするかは、利用者によって任意に設定可能である。
【０１１４】
また、実施例２に係る情報処理装置１００において、送信部５２２ｂは、生成部５２２ａから検査終了通知を受付けた場合に、ＣＰＵ２００からのパケットを送信するとして説明したが、これに限定されるものではない。例えば、ＣＰＵ２００からのパケットと同一タグを有する検査用パケットを第１判定部５２２ｄが受信した場合には、第１判定部５２２ｄがタグテーブル５２１ａにある検査用パケットの情報を消去する。続いて、送信部５２２ｂが、検査用パケットの情報が消去されたことを受付けた場合に、ＣＰＵ２００からのパケットを送信してもよい。
【０１１５】
（システム構成等）
本実施例において説明した各処理のうち自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上記文章中や図面中で示した処理手順、制御手順、具体的名称については、特記する場合を除いて任意に変更することができる。
【０１１６】
また、図示した各構成部は、機能概念的なものであり、必ずしも物理的に図示のごとく構成されていることを要しない。例えば、情報処理装置１００は、第２判定部５２２ｅと異常処理部５４０とは統合されてもよい。また、生成部５２２ａと送信部５２２ｂとは統合されてもよい。さらに、各装置にて行われる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１１７】
また、情報処理装置１００は、スイッチ２つを有し、Ｉ／Ｏデバイス３００と４００とを接続するとして説明したが、情報処理装置１００が有するスイッチは２つに限定されない。例えば、情報処理装置１００は、２台以上のＩ／Ｏデバイスを接続してもよい。また、情報処理装置は、接続するＩ／Ｏデバイスを二重化するように設計、構築されてもよい。
【０１１８】
（異常処理）
異常処理部による異常処理は切り離すこととして説明したが、これに限定されない。異常処理部による異常処理の他の一例について図２１を用いて説明する。図２１は、Ｉ／Ｏデバイスとの接続が二重化されている場合の異常処理部による処理の一例を示す図である。図２１に示すように、Ｉ／Ｏデバイスが多重化されている場合には、異常が生じたＩ／Ｏデバイスの接続を切断して多重化を解除し、正常なＩ／Ｏデバイスとのみ接続してもよい。また、第２判定部は、図示していないモニタへ検査結果を表示させてもよい。
【０１１９】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１２０】
（付記１）パケットを一意に識別するタグを付与した検査用パケットを生成する生成部と、
前記検査用パケットを入出力デバイスへ送信する送信部と、
パケットを受信する受信部と、
前記受信部によって受信された受信パケットのタグに基づいて、該受信パケットが、前記送信部から送信された前記検査用パケットに対する応答パケットであるか否かを判定する第１判定部と、
前記第１判定部によって前記受信パケットが応答パケットであると判定された場合に、前記受信パケットを解析して、入出力デバイスが異常であるか否かを判定する第２判定部と、
を有することを特徴とする入出力接続装置。
【０１２１】
（付記２）前記送信部は、前記入出力デバイスがＰＣＩ  Ｅｘｐｒｅｓｓで規格化されているＡＥＲレジスタを有している場合には、該ＡＥＲレジスタへ前記検査用パケットを送信することを特徴とする付記１に記載の入出力接続装置。
【０１２２】
（付記３）前記送信部は、付与したタグと同一のタグを有する第２のパケットをＣＰＵから受信した場合には、前記ＣＰＵから受信した前記第２のパケットを前記入出力デバイスへ送信しないように抑止制御することを特徴とする付記１または２に記載の入出力接続装置。
【０１２３】
（付記４）前記送信部は、前記抑止制御されるＣＰＵから受信したパケットと同一の検査パケットによる検査結果が正常である場合に、前記抑止制御されるパケットを入出力デバイスへ送信する抑止解除を実施することを特徴とする付記３に記載の入出力接続装置。
【０１２４】
（付記５）前記送信部は、付与したタグと同一のタグを有する第３のパケットをＣＰＵから受信した場合には、前記ＣＰＵから受信した前記第３のパケットのタグを書き換えて前記入出力デバイスに送信することを特徴とする付記１または２に記載の入出力接続装置。
【０１２５】
（付記６）前記第２判定部によって異常と判定された入出力デバイスを当該装置から切り離す異常処理部をさらに有することを特徴とする付記１〜５のいずれか一つに記載の入出力接続装置。
【０１２６】
（付記７）前記異常処理部は、前記第２判定部によって異常と判定された入出力デバイスが二重化されている場合には、当該入出力デバイスの二重化を解除し、異常が発見された入出力デバイスを切り離して正常な入出力デバイスのみで動作を継続することを特徴とする付記６に記載の入出力接続装置。
【０１２７】
（付記８）パケットを一意に識別するタグを付与した検査用パケットを生成する生成部と、
前記検査用パケットを入出力デバイスへ送信する送信部と、
パケットを受信する受信部と、
前記受信部によって受信された受信パケットのタグに基づいて、該受信パケットが、前記送信部から送信された前記検査用パケットに対する応答パケットであるか否かを判定する第１判定部と、
前記第１判定部によって前記受信パケットが応答パケットであると判定された場合に、前記受信パケットを解析して、入出力デバイスが異常であるか否かを判定する第２判定部と、
を有することを特徴とする情報処理装置。
【０１２８】
（付記９）パケットを一意に識別するタグを付与した検査用パケットを生成する生成ステップと、
前記検査用パケットを入出力デバイスへ送信する送信ステップと、
パケットを受信する受信ステップと、
前記受信ステップによって受信された受信パケットのタグに基づいて、該受信パケットが、前記送信ステップから送信された前記検査用パケットに対する応答パケットであるか否かを判定する第１判定ステップと、
前記第１判定ステップによって前記受信パケットが応答パケットであると判定された場合に、前記受信パケットを解析して、入出力デバイスが異常であるか否かを判定する第２判定ステップと、
を含んだことを特徴とする入出力デバイス検査方法。
【符号の説明】
【０１２９】
１０  Ｉ／Ｏ接続装置
１１  生成部
１２  送信部
１３  受信部
１４  第１判定部
１５  第２判定部
【図１】
0005515896.tif 000002
【図２】
0005515896.tif 000003
【図３】
0005515896.tif 000004
【図４】
0005515896.tif 000005
【図５】
0005515896.tif 000006
【図６】
0005515896.tif 000007
【図７】
0005515896.tif 000008
【図８】
0005515896.tif 000009
【図９】
0005515896.tif 000010
【図１０】
0005515896.tif 000011
【図１１】
0005515896.tif 000012
【図１２】
0005515896.tif 000013
【図１３】
0005515896.tif 000014
【図１４】
0005515896.tif 000015
【図１５】
0005515896.tif 000016
【図１６】
0005515896.tif 000017
【図１７】
0005515896.tif 000018
【図１８】
0005515896.tif 000019
【図１９】
0005515896.tif 000020
【図２０】
0005515896.tif 000021
【図２１】
0005515896.tif 000022