(57)【特許請求の範囲】
【請求項１】
Ｉ／Ｏデバイスへのルーティングが有効である事を示す有効ビットに関する情報、及び前記Ｉ／Ｏデバイスへのルーティング経路情報を格納したルーティングテーブルと、
トランザクションを受け取り、前記ルーティングテーブルを参照し、Ｉ／Ｏデバイスにアドレス空間が割り当てられているメモリマップドＩ／Ｏのアドレス空間のアドレスに基づいて、当該トランザクションの宛先となるＩ／Ｏデバイスを割り出し、前記有効ビットが偽である場合、前記トランザクションの送出を抑止するトランザクションルーティングコントローラと
を具備し、
前記トランザクションルーティングコントローラは、前記有効ビットが真である場合、前記ルーティング経路情報に従い、前記Ｉ／Ｏデバイスに対して前記トランザクションを送出し、前記Ｉ／Ｏデバイスの切り替えが発生した場合、前記トランザクションの送出を一時的に抑止し、一定時間の待ち合わせを行い、前記有効ビットを更新し、前記トランザクションの送出を再開する
動的切り替え装置。
【請求項２】
請求項１に記載の動的切り替え装置であって、
前記ルーティングテーブルは、前記Ｉ／Ｏデバイスのファンクション（Ｆｕｎｃｔｉｏｎ）単位で、前記有効ビット及び前記ルーティング経路情報を対応付けて格納し、
前記トランザクションルーティングコントローラは、前記トランザクションを受け取り、前記ルーティングテーブルを参照し、前記メモリマップドＩ／Ｏのアドレス空間のアドレスに基づいて、当該トランザクションの宛先となるＩ／Ｏデバイスのファンクションを割り出し、前記有効ビットが真である場合、前記ルーティング経路情報に従い、前記Ｉ／Ｏデバイスのファンクションに対して前記トランザクションを送出する
動的切り替え装置。
【請求項３】
請求項１又は２に記載の動的切り替え装置であって、
前記トランザクションルーティングコントローラは、前記トランザクションに対するリプライ（応答）又は割り込みを受け取り、前記ルーティングテーブルを参照し、前記有効ビットが真であり、前記ルーティング経路情報において前記Ｉ／Ｏデバイスが前記トランザクションの送出元である場合、前記ルーティング経路情報に従い、適切な送出先に対して、前記トランザクションを送出する
動的切り替え装置。
【請求項４】
請求項１乃至３のいずれか一項に記載の動的切り替え装置であって、
前記ルーティングテーブルは、
前記Ｉ／Ｏデバイスのうちマスターデバイスへのルーティングが有効である事を示す有効ビットであるＶｍビットと、
前記Ｉ／Ｏデバイスのうちスレーブデバイスへのルーティングが有効である事を示す有効ビットであるＶｓビットと
を含み、
前記トランザクションルーティングコントローラは、前記Ｖｍビット及び前記Ｖｓビットが共に真である場合、前記マスターデバイス及び前記スレーブデバイスの双方に対して前記トランザクションを送出する
動的切り替え装置。
【請求項５】
請求項４に記載の動的切り替え装置であって、
前記トランザクションルーティングコントローラは、前記Ｖｍビットが偽であり、前記Ｖｓビットが真である場合、前記スレーブデバイスに対して前記トランザクションを送出する
動的切り替え装置。
【請求項６】
請求項１乃至３のいずれか一項に記載の動的切り替え装置であって、
前記ルーティングテーブルは、
前記Ｉ／Ｏデバイスの一つである第１のＩ／Ｏデバイスのうちマスターデバイスへのルーティングが有効である事を示す有効ビットである第１のＶｍビットと、
前記第１のＩ／Ｏデバイスのうちスレーブデバイスへのルーティングが有効である事を示す有効ビットである第１のＶｓビットと
前記Ｉ／Ｏデバイスの他の一つである第２のＩ／Ｏデバイスのうちマスターデバイスへのルーティングが有効である事を示す有効ビットである第２のＶｍビットと、
前記第２のＩ／Ｏデバイスのうちスレーブデバイスへのルーティングが有効である事を示す有効ビットである第２のＶｓビットと
を含み、
前記第１のＩ／Ｏデバイスをマスターデバイスとし、前記第２のＩ／Ｏデバイスをスレーブデバイスとして、
ミラーリングの設定のとき、前記第１のＶｍビットと前記第１のＶｓビットとは真とされ、前記第２のＶｍビットと前記第２のＶｓビットとは偽とされ、前記メモリマップドＩ／Ｏのアドレス空間に、当該マスターデバイスと当該スレーブデバイスとに一つの共通なアドレス領域が割り当てられ、
コールドスタンバイの設定のとき、前記第１のＶｍビットは真とされ、前記第１のＶｓビットと前記第２のＶｍビットと前記第２のＶｓビットとは偽とされ、前記メモリマップドＩ／Ｏのアドレス空間に、当該マスターデバイスと当該スレーブデバイスとに一つの共通なアドレス領域が割り当てられ、
前記第１のＩ／Ｏデバイスと、前記第２のＩ／Ｏデバイスとを別個に動作させるとき、前記第１のＶｍビットは真、前記第１のＶｓビットとは偽とされ、前記第２のＶｍビットは真、前記第２のＶｓビットとは偽とされ、前記メモリマップドＩ／Ｏのアドレス空間に、当該マスターデバイスと当該スレーブデバイスとに別々のアドレス領域が割り当てられる
動的切り替え装置。
【請求項７】
トランザクションを受け取ると、Ｉ／Ｏデバイスへのルーティングが有効である事を示す有効ビットに関する情報、及び前記Ｉ／Ｏデバイスへのルーティング経路情報を格納したルーティングテーブルを参照するステップと、
Ｉ／Ｏデバイスにアドレス空間が割り当てられているメモリマップドＩ／Ｏのアドレス空間のアドレスに基づいて、当該トランザクションの宛先となるＩ／Ｏデバイスを割り出すステップと、
前記有効ビットが偽である場合、前記トランザクションの送出を抑止するステップと、
前記有効ビットが真である場合、前記ルーティング経路情報に従い、前記Ｉ／Ｏデバイスに対して前記トランザクションを送出するステップと、
前記Ｉ／Ｏデバイスの切り替えが発生した場合、前記トランザクションの送出を一時的に抑止し、一定時間の待ち合わせを行い、前記有効ビットを更新し、前記トランザクションの送出を再開するステップと
を含む
動的切り替え方法。
【請求項８】
請求項７に記載の動的切り替え方法であって、
前記ルーティングテーブルにおいて、前記Ｉ／Ｏデバイスのファンクション（Ｆｕｎｃｔｉｏｎ）単位で、前記有効ビット及び前記ルーティング経路情報を対応付けるステップと、
前記トランザクションを受け取ると、前記ルーティングテーブルを参照し、前記メモリマップドＩ／Ｏのアドレス空間のアドレスに基づいて、当該トランザクションの宛先となるＩ／Ｏデバイスのファンクションを割り出すステップと、
前記有効ビットが真である場合、前記ルーティング経路情報に従い、前記Ｉ／Ｏデバイスのファンクションに対して前記トランザクションを送出するステップと
を更に含む
動的切り替え方法。
【請求項９】
請求項７又は８に記載の動的切り替え方法であって、
前記トランザクションに対するリプライ（応答）又は割り込みを受け取ると、前記ルーティングテーブルを参照するステップと、
前記有効ビットが真であり、前記ルーティング経路情報において前記Ｉ／Ｏデバイスが前記トランザクションの送出元である場合、前記ルーティング経路情報に従い、適切な送出先に対して、前記トランザクションを送出するステップと
を更に含む
動的切り替え方法。
【請求項１０】
請求項７乃至９のいずれか一項に記載の動的切り替え方法であって、
前記ルーティングテーブルは、
前記Ｉ／Ｏデバイスのうちマスターデバイスへのルーティングが有効である事を示す有効ビットであるＶｍビットと、
前記Ｉ／Ｏデバイスのうちスレーブデバイスへのルーティングが有効である事を示す有効ビットであるＶｓビットと
を含み、
前記Ｖｍビット及び前記Ｖｓビットが共に真である場合、前記マスターデバイス及び前記スレーブデバイスの双方に対して前記トランザクションを送出するステップ
を更に含む
動的切り替え方法。
【請求項１１】
請求項１０に記載の動的切り替え方法であって、
前記Ｖｍビットが偽であり、前記Ｖｓビットが真である場合、前記スレーブデバイスに対して前記トランザクションを送出するステップ
を更に含む
動的切り替え方法。
【請求項１２】
請求項７乃至９のいずれか一項に記載の動的切り替え方法であって、
前記ルーティングテーブルは、
前記Ｉ／Ｏデバイスの一つである第１のＩ／Ｏデバイスのうちマスターデバイスへのルーティングが有効である事を示す有効ビットである第１のＶｍビットと、
前記第１のＩ／Ｏデバイスのうちスレーブデバイスへのルーティングが有効である事を示す有効ビットである第１のＶｓビットと
前記Ｉ／Ｏデバイスの他の一つである第２のＩ／Ｏデバイスのうちマスターデバイスへのルーティングが有効である事を示す有効ビットである第２のＶｍビットと、
前記第２のＩ／Ｏデバイスのうちスレーブデバイスへのルーティングが有効である事を示す有効ビットである第２のＶｓビットと
を含み、
前記第１のＩ／Ｏデバイスをマスターデバイスとし、前記第２のＩ／Ｏデバイスをスレーブデバイスとして、
ミラーリングの設定のとき、前記第１のＶｍビットと前記第１のＶｓビットとは真とされ、前記第２のＶｍビットと前記第２のＶｓビットとは偽とされ、前記メモリマップドＩ／Ｏのアドレス空間に、当該マスターデバイスと当該スレーブデバイスとに一つの共通なアドレス領域が割り当てられ、
コールドスタンバイの設定のとき、前記第１のＶｍビットは真とされ、前記第１のＶｓビットと前記第２のＶｍビットと前記第２のＶｓビットとは偽とされ、前記メモリマップドＩ／Ｏのアドレス空間に、当該マスターデバイスと当該スレーブデバイスとに一つの共通なアドレス領域が割り当てられ、
前記第１のＩ／Ｏデバイスと、前記第２のＩ／Ｏデバイスとを別個に動作させるとき、前記第１のＶｍビットは真、前記第１のＶｓビットとは偽とされ、前記第２のＶｍビットは真、前記第２のＶｓビットとは偽とされ、前記メモリマップドＩ／Ｏのアドレス空間に、当該マスターデバイスと当該スレーブデバイスとに別々のアドレス領域が割り当てられる
動的切り替え方法。
【請求項１３】
トランザクションを受け取ると、Ｉ／Ｏデバイスへのルーティングが有効である事を示す有効ビットに関する情報、及び前記Ｉ／Ｏデバイスへのルーティング経路情報を格納したルーティングテーブルを参照するステップと、
Ｉ／Ｏデバイスにアドレス空間が割り当てられているメモリマップドＩ／Ｏのアドレス空間のアドレスに基づいて、当該トランザクションの宛先となるＩ／Ｏデバイスを割り出すステップと、
前記有効ビットが偽である場合、前記トランザクションの送出を抑止するステップと、
前記有効ビットが真である場合、前記ルーティング経路情報に従い、前記Ｉ／Ｏデバイスに対して前記トランザクションを送出するステップと、
前記Ｉ／Ｏデバイスの切り替えが発生した場合、前記トランザクションの送出を一時的に抑止し、一定時間の待ち合わせを行い、前記有効ビットを更新し、前記トランザクションの送出を再開するステップと
をコンピュータに実行させるための
動的切り替えプログラム。
【請求項１４】
請求項１３に記載の動的切り替えプログラムであって、
前記ルーティングテーブルにおいて、前記Ｉ／Ｏデバイスのファンクション（Ｆｕｎｃｔｉｏｎ）単位で、前記有効ビット及び前記ルーティング経路情報を対応付けるステップと、
前記トランザクションを受け取ると、前記ルーティングテーブルを参照し、前記メモリマップドＩ／Ｏのアドレス空間のアドレスに基づいて、当該トランザクションの宛先となるＩ／Ｏデバイスのファンクションを割り出すステップと、
前記有効ビットが真である場合、前記ルーティング経路情報に従い、前記Ｉ／Ｏデバイスのファンクションに対して前記トランザクションを送出するステップと
を更にコンピュータに実行させるための
動的切り替えプログラム。
【請求項１５】
請求項１３又は１４に記載の動的切り替えプログラムであって、
前記トランザクションに対するリプライ（応答）又は割り込みを受け取ると、前記ルーティングテーブルを参照するステップと、
前記有効ビットが真であり、前記ルーティング経路情報において前記Ｉ／Ｏデバイスが前記トランザクションの送出元である場合、前記ルーティング経路情報に従い、適切な送出先に対して、前記トランザクションを送出するステップと
を更にコンピュータに実行させるための
動的切り替えプログラム。
【請求項１６】
請求項１３乃至１５のいずれか一項に記載の動的切り替えプログラムであって、
前記ルーティングテーブルは、
前記Ｉ／Ｏデバイスのうちマスターデバイスへのルーティングが有効である事を示す有効ビットであるＶｍビットと、
前記Ｉ／Ｏデバイスのうちスレーブデバイスへのルーティングが有効である事を示す有効ビットであるＶｓビットと
を含み、
前記Ｖｍビット及び前記Ｖｓビットが共に真である場合、前記マスターデバイス及び前記スレーブデバイスの双方に対して前記トランザクションを送出するステップ
を更にコンピュータに実行させるための
動的切り替えプログラム。
【請求項１７】
請求項１６に記載の動的切り替えプログラムであって、
前記Ｖｍビットが偽であり、前記Ｖｓビットが真である場合、前記スレーブデバイスに対して前記トランザクションを送出するステップ
を更にコンピュータに実行させるための
動的切り替えプログラム。
【請求項１８】
請求項１３乃至１５のいずれか一項に記載の動的切り替え方法であって、
前記ルーティングテーブルは、
前記Ｉ／Ｏデバイスの一つである第１のＩ／Ｏデバイスのうちマスターデバイスへのルーティングが有効である事を示す有効ビットである第１のＶｍビットと、
前記第１のＩ／Ｏデバイスのうちスレーブデバイスへのルーティングが有効である事を示す有効ビットである第１のＶｓビットと
前記Ｉ／Ｏデバイスの他の一つである第２のＩ／Ｏデバイスのうちマスターデバイスへのルーティングが有効である事を示す有効ビットである第２のＶｍビットと、
前記第２のＩ／Ｏデバイスのうちスレーブデバイスへのルーティングが有効である事を示す有効ビットである第２のＶｓビットと
を含み、
前記第１のＩ／Ｏデバイスをマスターデバイスとし、前記第２のＩ／Ｏデバイスをスレーブデバイスとして、
ミラーリングの設定のとき、前記第１のＶｍビットと前記第１のＶｓビットとは真とされ、前記第２のＶｍビットと前記第２のＶｓビットとは偽とされ、前記メモリマップドＩ／Ｏのアドレス空間に、当該マスターデバイスと当該スレーブデバイスとに一つの共通なアドレス領域が割り当てられ、
コールドスタンバイの設定のとき、前記第１のＶｍビットは真とされ、前記第１のＶｓビットと前記第２のＶｍビットと前記第２のＶｓビットとは偽とされ、前記メモリマップドＩ／Ｏのアドレス空間に、当該マスターデバイスと当該スレーブデバイスとに一つの共通なアドレス領域が割り当てられ、
前記第１のＩ／Ｏデバイスと、前記第２のＩ／Ｏデバイスとを別個に動作させるとき、前記第１のＶｍビットは真、前記第１のＶｓビットとは偽とされ、前記第２のＶｍビットは真、前記第２のＶｓビットとは偽とされ、前記メモリマップドＩ／Ｏのアドレス空間に、当該マスターデバイスと当該スレーブデバイスとに別々のアドレス領域が割り当てられる
動的切り替えプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動的切り替え装置に関し、特に二重化されたＩ／Ｏデバイスの動的切り替え装置に関する。
【背景技術】
【０００２】
ＰＣＩデバイスに代表される入出力（Ｉ／Ｏ：Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）コントローラデバイス（以下、Ｉ／Ｏデバイス）を二重化し、システムの耐故障性を向上させるにあたり、通常のフォルトトレラント（ＦＴ：Ｆａｕｌｔ  Ｔｏｌｅｒａｎｔ）コンピュータ等では、二重化されたＩ／Ｏデバイスへのアクセスをソフトウェアのデバイスドライバ層で吸収し、上位層のオペレーティングシステム（ＯＳ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）やアプリケーションからは単一のＩ／Ｏデバイスとして見えるようにする手法が採用されている。この手法の問題点は、二重化を実現するための複雑なデバイスドライバが必要となることである。
【０００３】
この問題点を解決するために、Ｉ／Ｏデバイスの二重化をハードウェア層で実現する方法がある。この方法では、プロセッサからＩ／Ｏデバイスへのトランザクション（Ｔｒａｎｓａｃｔｉｏｎ）を複製してマスターデバイスとスレーブデバイスの双方へルーティング（ｒｏｕｔｉｎｇ）し、Ｉ／Ｏデバイスからプロセッサへのトランザクションは、マスターデバイス若しくはスレーブデバイスのいずれか一方のデバイスからのみルーティングする機構をチップセットに実装する。この方法により、Ｉ／ＯデバイスをミラーリングしてチップセットからＩ／Ｏデバイスまでの経路で障害が発生した場合に、システムの運用を継続したまま動的にその経路を縮退させる事が可能である。
【０００４】
しかしながら、この方法には、適用可能なＩ／Ｏデバイスの種類が、不揮発性メモリ（ＮｖＲＡＭ：Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のような静的なデバイスに限られるという制約があった。その理由は、例えば、リアルタイムクロック（ＲＴＣ：Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）やタイマー等の内部ステートを持つデバイスは、二重化した双方に同じようにトランザクションを送出しても双方のデバイスを内部ステートまで完全に同期して動作させる事が困難だからである。ネットワークカード（ＮＩＣ：Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）のような外部とのインターフェース（Ｉ／Ｆ：ｉｎｔｅｒｆａｃｅ）も、コールドスタンバイによる冗長構成を採用するほうが一般的である。
【０００５】
関連する技術として、特開平０７−１２３１０９号公報（特許文献１）にルーティング制御方式が開示されている。
この関連技術では、ルーティングテーブルを参照して、現用系にかかる情報及び予備系にかかる情報のルーティングを管理する。
【０００６】
また、特開平１０−２０７８１５号公報（特許文献２）に動的切替装置が開示されている。
この関連技術では、動的切替装置は、チャネル装置及び入出力装置の数に対応した所定数のポートを有し、通常のデータ転送に伴なう経路切り替え時に所定数のポート毎に経路を切り替えてデータを送出した相手先情報を記憶する相手先記憶手段と、チャネル装置及び入出力装置の間を接続しているインターフェースの障害を検出した場合に相手先記憶手段により記憶されている相手先情報に基づいて該当する相手先に対して障害通知情報を送出する障害通知手段とを備えている。
【０００７】
また、特表２００５−５１６４７８号公報（特許文献３）にフォールト・トレラント・ルーチング・データベースを提供するシステムが開示されている。
この関連技術では、当該システムは、ネットワーク環境内でルーティング・テーブル更新情報を交換するルータを含む。また、当該システムは、プライマリ・プロセスは遠隔プロセスとの通信に関与し、この通信にはデータ内容及び通信状態の転送が含まれる。また、当該システムは、プライマリ・プロセスはデータ内容及び通信状態をデータ格納装置に格納する。プライマリ・プロセスが故障した場合、遠隔プロセスとの通信は、データ格納装置からデータ内容及び通信状態を取り出すことによりプライマリ・プロセスをミラーリングする、バックアップ・プロセスに移される。これより、バックアップ・プロセスは、データ格納装置から取り出された通信状態を用いて、遠隔プロセスとの通信を続行する。
【０００８】
【特許文献１】特開平０７−１２３１０９号公報
【特許文献２】特開平１０−２０７８１５号公報
【特許文献３】特表２００５−５１６４７８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明の目的は、二重化されたＩ／Ｏデバイスのマスターデバイスとスレーブデバイスをシステム運用中にマスターデバイスのみ有効、スレーブデバイスのみ有効、両デバイスをミラーリングした状態のいずれにも切り替える事ができる動的切り替え装置、動的切り替え方法、及び動的切り替えプログラムを提供することである。
【課題を解決するための手段】
【００１０】
本発明では、メモリコントローラに実装するルーティングテーブルに、Ｉ／Ｏデバイスを二重化する際にマスターデバイスへのトランザクションをトランザクションルーティングコントローラにてそのまま当該マスターデバイスへ送出させる指示情報と、当該トランザクションを複製してスレーブデバイスへ送出させる指示情報を併せ持つ。この二つの指示情報の組み合わせにより、マスターデバイスに宛てたトランザクションを、マスターデバイスのみに送出・スレーブデバイスのみに送出・マスターデバイスとスレーブデバイス双方に送出といういずれの動作も実現することが可能である。また、サービスプロセッサ（ＳＰ：Ｓｅｒｖｉｃｅ  Ｐｒｏｃｅｓｓｏｒ）２１の制御によりメモリコントローラ中のＩ／ＯインターフェースからＩ／Ｏデバイスへのトランザクションを一時的に抑止し、先行する仕掛かり中のトランザクションが流れ終わるのを待ち合わせてからルーティングテーブル中のルーティング情報を更新し、Ｉ／Ｏインターフェースの動作を再開することで、二重化されたＩ／Ｏデバイスの動作モードの切替を実現する。
【００１１】
本発明の動的切り替え装置は、Ｉ／Ｏデバイスへのルーティングが有効である事を示す有効ビットに関する情報、及びＩ／Ｏデバイスへのルーティング経路情報を格納したルーティングテーブルと、トランザクションを受け取り、ルーティングテーブルを参照し、有効ビットが偽である場合、トランザクションの送出を抑止し、有効ビットが真である場合、ルーティング経路情報に従い、Ｉ／Ｏデバイスに対してトランザクションを送出し、Ｉ／Ｏデバイスの切り替えが発生した場合、トランザクションの送出を一時的に抑止し、一定時間の待ち合わせを行い、有効ビットを更新し、トランザクションの送出を再開するトランザクションルーティングコントローラとを具備する。
【００１２】
本発明の動的切り替え方法は、トランザクションを受け取ると、Ｉ／Ｏデバイスへのルーティングが有効である事を示す有効ビットに関する情報、及びＩ／Ｏデバイスへのルーティング経路情報を格納したルーティングテーブルを参照するステップと、有効ビットが偽である場合、トランザクションの送出を抑止するステップと、有効ビットが真である場合、ルーティング経路情報に従い、Ｉ／Ｏデバイスに対してトランザクションを送出するステップと、Ｉ／Ｏデバイスの切り替えが発生した場合、トランザクションの送出を一時的に抑止し、一定時間の待ち合わせを行い、有効ビットを更新し、トランザクションの送出を再開するステップとを含む。
【００１３】
本発明の動的切り替えプログラムは、トランザクションを受け取ると、Ｉ／Ｏデバイスへのルーティングが有効である事を示す有効ビットに関する情報、及びＩ／Ｏデバイスへのルーティング経路情報を格納したルーティングテーブルを参照するステップと、有効ビットが偽である場合、トランザクションの送出を抑止するステップと、有効ビットが真である場合、ルーティング経路情報に従い、Ｉ／Ｏデバイスに対してトランザクションを送出するステップと、Ｉ／Ｏデバイスの切り替えが発生した場合、トランザクションの送出を一時的に抑止し、一定時間の待ち合わせを行い、有効ビットを更新し、トランザクションの送出を再開するステップとをコンピュータに実行させるためのプログラムである。
【発明の効果】
【００１４】
Ｉ／Ｏデバイスのミラーリングやコールドスタンバイを任意に実現できる。また、Ｉ／Ｏデバイスの縮退若しくは切替を動的に行う事ができる。
【発明を実施するための最良の形態】
【００１５】
以下に、本発明の第１実施形態について添付図面を参照して説明する。
図１を参照すると、本発明の動的切り替え装置の一例であるコンピュータシステムは、プロセッサ（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１と、プロセッサ（ＣＰＵ）１２と、フロントサイドバス（ＦＳＢ：Ｆｒｏｎｔ  Ｓｉｄｅ  Ｂｕｓ）１３と、メモリコントローラ（ＭＥＭＣＴＬ：Ｍｅｍｏｒｙ  Ｃｏｎｔｒｏｌｌｅｒ）１４と、メモリ（ＭＥＭ：Ｍｅｍｏｒｙ）１５と、Ｉ／Ｏコントローラ（ＩＯＣＴＬ：Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｃｏｎｔｒｏｌｌｅｒ）１６と、Ｉ／Ｏコントローラ（ＩＯＣＴＬ）１７を備える。
【００１６】
図１において、プロセッサ（ＣＰＵ）１１及びプロセッサ（ＣＰＵ）１２は、同一のフロントサイドバス（ＦＳＢ）１３に接続され、対称型マルチプロセッサ（ＳＭＰ：Ｓｙｍｍｅｔｒｉｃ  Ｍｕｌｔｉｐｌｅ  Ｐｒｏｃｅｓｓｏｒ）構成を形成している。また、フロントサイドバス（ＦＳＢ）１３には、メモリコントローラ（ＭＥＭＣＴＬ）１４が接続されている。ここでは、メモリコントローラ（ＭＥＭＣＴＬ）１４は、ＣＰＵ、メモリ、Ｉ／Ｏデバイス間のトランザクションのルーティングを司る。
【００１７】
更に、メモリコントローラ（ＭＥＭＣＴＬ）１４には、メモリ（ＭＥＭ）１５、Ｉ／Ｏコントローラ（ＩＯＣＴＬ）１６及びＩ／Ｏコントローラ（ＩＯＣＴＬ）１７が接続されている。Ｉ／Ｏコントローラ（ＩＯＣＴＬ）１６及びＩ／Ｏコントローラ（ＩＯＣＴＬ）１７は、メモリコントローラ（ＭＥＭＣＴＬ）１４からのトランザクションと反対側のＰＣＩバス（ＰＣＩ−Ｂｕｓ）１８若しくはＰＣＩバス（ＰＣＩ−Ｂｕｓ）１９を接続するバスブリッジである。ＰＣＩバス（ＰＣＩ−Ｂｕｓ）１８には、Ｉ／Ｏデバイス（Ｍａｓｔｅｒ  Ｄｅｖｉｃｅ）３０が接続されている。ＰＣＩバス（ＰＣＩ−Ｂｕｓ）１９には、Ｉ／Ｏデバイス（Ｓｌａｖｅ  Ｄｅｖｉｃｅ）４０が接続されている。
【００１８】
本実施形態において、Ｉ／Ｏデバイス（Ｍａｓｔｅｒ  Ｄｅｖｉｃｅ）３０は、不揮発性メモリ（ＮｖＲＡＭ）やリアルタイムクロック（ＲＴＣ）外部Ｉ／Ｏインターフェース等を搭載したマルチファンクションＩ／Ｏデバイスを想定しており、図１では、それぞれファンクション（Ｆｕｎｃｔｉｏｎ）３１〜３３と表記している。Ｉ／Ｏデバイス（Ｓｌａｖｅ  Ｄｅｖｉｃｅ）４０も、Ｉ／Ｏデバイス（Ｍａｓｔｅｒ  Ｄｅｖｉｃｅ）３０と同等の構成のＩ／Ｏデバイスである。
【００１９】
また、本実施形態のコンピュータシステムには、システムの運用制御を司るサービスプロセッサ（ＳＰ：Ｓｅｒｖｉｃｅ  Ｐｒｏｃｅｓｓｏｒ）２１が搭載されており、メモリコントローラ（ＭＥＭＣＴＬ）１４を始めシステム内の各要素に対する初期化、モード設定、リセット等の制御を行う事ができる。なお、図１には、本実施形態の説明に直接関係しない通信経路は図示していない。但し、実際には、直接関係しない通信経路が存在する場合もある。
【００２０】
本実施形態において、コンピュータシステムに接続されるプロセッサ、メモリの数は本発明の要件に直接関与するものではなく、任意の構成において本発明は実施可能であることは明らかである。また、同様に、Ｉ／Ｏコントローラの数、Ｉ／Ｏコントローラに接続されるＰＣＩバスの数も、本発明に関与するものではない。また、ＰＣＩバスの代わりにＰＣＩ−ＸバスやＰＣＩ  Ｅｘｐｒｅｓｓバスの他、任意のＩ／Ｏバスを用いることも可能である。更に、Ｉ／Ｏデバイスの機能・構成も、本実施形態の機能・構成に限定するものではない。
【００２１】
次に、図２を参照して、メモリコントローラ（ＭＥＭＣＴＬ）１４の論理ブロック図を示す。
メモリコントローラ（ＭＥＭＣＴＬ）１４は、ＦＳＢインターフェース（ＦＢＳ  Ｉ／Ｆ）１４１と、ルーティングテーブル（Ｒｏｕｔｉｎｇ  Ｔａｂｌｅ）１４２と、トランザクションルーティングコントローラ（Ｔｘｎ  Ｒｏｕｔｉｎｇ  ＣＴＬ）１４３と、メモリインターフェース（ＭＥＭ  Ｉ／Ｆ）１４４と、Ｉ／Ｏインターフェース（Ｉ／Ｏ  Ｉ／Ｆ）１４５と、Ｉ／Ｏインターフェース（Ｉ／Ｏ  Ｉ／Ｆ）１４６と、ＳＰインターフェース（ＳＰ  Ｉ／Ｆ）１４７を備える。
【００２２】
図２において、メモリコントローラ（ＭＥＭＣＴＬ）１４とコンピュータシステム内の各要素との接続インターフェースは、それぞれＦＳＢインターフェース（ＦＢＳ  Ｉ／Ｆ）１４１、メモリインターフェース（ＭＥＭ  Ｉ／Ｆ）１４４、Ｉ／Ｏインターフェース（Ｉ／Ｏ  Ｉ／Ｆ）１４５及びＩ／Ｏインターフェース（Ｉ／Ｏ  Ｉ／Ｆ）１４６として図示されている。
【００２３】
なお、ＦＳＢインターフェース（ＦＢＳ  Ｉ／Ｆ）１４１は、フロントサイドバス（ＦＳＢ）１３との接続インターフェースである。メモリインターフェース（ＭＥＭ  Ｉ／Ｆ）１４４は、メモリ（ＭＥＭ）１５との接続インターフェースである。Ｉ／Ｏインターフェース（Ｉ／Ｏ  Ｉ／Ｆ）１４５は、Ｉ／Ｏコントローラ（ＩＯＣＴＬ）１６との接続インターフェースである。Ｉ／Ｏインターフェース（Ｉ／Ｏ  Ｉ／Ｆ）１４６は、Ｉ／Ｏコントローラ（ＩＯＣＴＬ）１７との接続インターフェースである。
【００２４】
また、ＳＰインターフェース（ＳＰ  Ｉ／Ｆ）１４７として示したブロックは、ＣＰＵ上で動作するソフトウェアとＳＰ間の通信経路を提供するインターフェースブロックである。ここでは、ＳＰインターフェース（ＳＰ  Ｉ／Ｆ）１４７は、プロセッサ（ＣＰＵ）１１及びプロセッサ（ＣＰＵ）１２上で動作するソフトウェアとサービスプロセッサ（ＳＰ）２１間の通信経路を提供する。
【００２５】
トランザクションルーティングコントローラ（Ｔｘｎ  Ｒｏｕｔｉｎｇ  ＣＴＬ）１４３は、各インターフェースブロックを結ぶ位置に存在し、各インターフェースブロックから入力したメモリリード（メモリ読み出し）・リプライ（応答）・メモリライト（メモリ書き込み）・割り込み等の各種トランザクションをルーティングし、適切なインターフェースブロックへ出力する。これらの各種トランザクションに含まれる情報の例として、メモリアクセスのターゲットアドレス、リプライデータ、リプライや割り込みのソースデバイスＩＤ、ターゲットデバイスＩＤ等が考えられる。また、トランザクションルーティングコントローラ（Ｔｘｎ  Ｒｏｕｔｉｎｇ  ＣＴＬ）１４３は、ルーティング経路を決定するためにルーティングテーブル（Ｒｏｕｔｉｎｇ  Ｔａｂｌｅ）１４２を参照する。
【００２６】
続いて、図３を参照して、ルーティングテーブル（Ｒｏｕｔｉｎｇ  Ｔａｂｌｅ）１４２に格納されるルーティング情報の形式について説明する。
ルーティングテーブル（Ｒｏｕｔｉｎｇ  Ｔａｂｌｅ）１４２は、図示したような一連の情報を含むレコードを複数有するテーブルであり、Ｉ／Ｏデバイスの個々のファンクション（Ｆｕｎｃｔｉｏｎ）毎に１つのレコードを登録する。本実施形態のコンピュータシステムは、メモリ（ＭＥＭ）１５の他、Ｉ／Ｏデバイス上のレジスタやメモリデバイスを物理記憶空間上にメモリマップドＩ／Ｏ（ＭＭＩＯ：Ｍｅｍｏｒｙ  Ｍａｐｐｅｄ  Ｉ／Ｏ）としてマッピングする構成を採用しているため、テーブルの１レコードに格納される情報は、これら物理記憶空間上にマッピングされたいずれかのデバイスへのルーティング経路情報である。
【００２７】
ルーティングテーブル（Ｒｏｕｔｉｎｇ  Ｔａｂｌｅ）１４２の１レコードにおける個々のフィールドを見ると、ルーティングテーブル（Ｒｏｕｔｉｎｇ  Ｔａｂｌｅ）１４２のレコードは、Ｖｍビット（Ｖｍ）５１と、マスターデバイスＩＤ（Ｍａｓｔｅｒ  ＤＩＤ）５２と、Ｖｓビット（Ｖｓ）５３と、スレーブデバイスＩＤ（Ｓｌａｖｅ  ＤＩＤ）５４と、アドレスオフセット（Ａｄｄｒ．  Ｏｆｆｓｅｔ）５５と、アドレス範囲（Ａｄｄｒ．  Ｒａｎｇｅ）５６を含む。
【００２８】
Ｖｍビット（Ｖｍ）５１は、二重化されたマスターＩ／Ｏデバイスへのルーティングが有効である事を示す有効ビットを示す。マスターデバイスＩＤ（Ｍａｓｔｅｒ  ＤＩＤ）５２は、物理記憶空間上にマッピングされた当該マスターＩ／Ｏデバイスへのルーティング経路情報を示す。Ｖｓビット（Ｖｓ）５３は、スレーブＩ／Ｏデバイスへのルーティングが有効であることを示す有効ビットを示す。スレーブデバイスＩＤ（Ｓｌａｖｅ  ＤＩＤ）５４は、物理記憶空間上にマッピングされた当該スレーブＩ／Ｏデバイスへのルーティング経路情報を示す。アドレスオフセット（Ａｄｄｒ．  Ｏｆｆｓｅｔ）５５は、当該Ｉ／Ｏデバイスの各ファンクション（Ｆｕｎｃｔｉｏｎ）をＩ／Ｏデバイス毎に連続したメモリ領域にマッピングする際のそのメモリ領域全体の先頭アドレスから個々のファンクション（Ｆｕｎｃｔｉｏｎ）の領域へのオフセットとして用いられる。アドレス範囲（Ａｄｄｒ．  Ｒａｎｇｅ）５６は、個々のファンクション（Ｆｕｎｃｔｉｏｎ）の領域のサイズを示す。
【００２９】
次に、図２のメモリコントローラ（ＭＥＭＣＴＬ）１４の動作を説明する。
まず、始めに、システム立ち上げ時の初期設定方法について説明する。
【００３０】
本実施形態のシステム構成として図１に設定した構成において、Ｉ／Ｏデバイス（Ｍａｓｔｅｒ  Ｄｅｖｉｃｅ）３０を二重化されたＩ／Ｏデバイスのマスターデバイスとして動作させ、Ｉ／Ｏデバイス（Ｓｌａｖｅ  Ｄｅｖｉｃｅ）４０をスレーブデバイスとして動作させるための設定が必要である。この設定は、システムの立ち上げ時に、サービスプロセッサ（ＳＰ）２１からルーティングテーブル（Ｒｏｕｔｉｎｇ  Ｔａｂｌｅ）１４２に対し、図４に記載したような情報を設定する事により実現される。
【００３１】
図４の表は、ルーティングテーブル（Ｒｏｕｔｉｎｇ  Ｔａｂｌｅ）１４２の表の形式（データフォーマット）の一例である。
図４の表における設定内容を詳細に説明すると、Ｉ／Ｏデバイス（Ｍａｓｔｅｒ  Ｄｅｖｉｃｅ）３０に対する設定項目について、図４の表の上方に３レコード分の定義がされている。本実施形態では、Ｉ／Ｏデバイス（Ｍａｓｔｅｒ  Ｄｅｖｉｃｅ）３０は、３種のファンクション（Ｆｕｎｃｔｉｏｎ）を搭載したマルチファンクションＩ／Ｏカードであり、個々のファンクション（Ｆｕｎｃｔｉｏｎ）に対応するＭＭＩＯ空間のアドレスを１レコードずつ定義する。ここでは、個々のファンクション（Ｆｕｎｃｔｉｏｎ）名をそれぞれａ、ｂ、ｃと記載している。
【００３２】
なお、本実施形態では、図１に示すように、Ｉ／Ｏデバイス（Ｍａｓｔｅｒ  Ｄｅｖｉｃｅ）３０は、ファンクション（Ｆｕｎｃｔｉｏｎ）ａ：３１と、ファンクション（Ｆｕｎｃｔｉｏｎ）ｂ：３２と、ファンクション（Ｆｕｎｃｔｉｏｎ）ｃ：３３を含む。また、Ｉ／Ｏデバイス（Ｓｌａｖｅ  Ｄｅｖｉｃｅ）４０は、ファンクション（Ｆｕｎｃｔｉｏｎ）ａ’：４１と、ファンクション（Ｆｕｎｃｔｉｏｎ）ｂ’：４２と、ファンクション（Ｆｕｎｃｔｉｏｎ）ｃ’：４３を含む。
【００３３】
本実施形態では、これら３種のファンクション（Ｆｕｎｃｔｉｏｎ）ａ、ｂ、ｃのうち、ファンクション（Ｆｕｎｃｔｉｏｎ）ａに対してミラーリングの設定がされているとすると、Ｉ／Ｏデバイス（Ｍａｓｔｅｒ  Ｄｅｖｉｃｅ）３０のファンクション（Ｆｕｎｃｔｉｏｎ）ａ：３１に対するＶｍビット（Ｖｍ）５１及びＶｓビット（Ｖｓ）５３が、いずれも真（Ｔ：Ｔｒｕｅ）に設定されることになる。このとき、Ｉ／Ｏデバイス（Ｓｌａｖｅ  Ｄｅｖｉｃｅ）４０に対応するレコードは、Ｖｍビット（Ｖｍ）５１及びＶｓビット（Ｖｓ）５３が、いずれも偽（Ｆ：Ｆａｌｓｅ）に設定されている。これにより、ＣＰＵから直接Ｉ／Ｏデバイス（Ｓｌａｖｅ  Ｄｅｖｉｃｅ）４０へのアクセスができないようになっている。
【００３４】
ファンクション（Ｆｕｎｃｔｉｏｎ）ｂ：３２は、コールドスタンバイを設定する例である。ここでは、Ｉ／Ｏデバイス（Ｍａｓｔｅｒ  Ｄｅｖｉｃｅ）３０のＶｍビット（Ｖｍ）５１が真（Ｔ）で、Ｖｓビット（Ｖｓ）５３が偽（Ｆ）として表現される。Ｉ／Ｏデバイス（Ｓｌａｖｅ  Ｄｅｖｉｃｅ）４０に対応するレコードのＶｍビット（Ｖｍ）５１及びＶｓビット（Ｖｓ）５３は、上記ファンクション（Ｆｕｎｃｔｉｏｎ）ａ：３１と同じく、いずれも偽（Ｆ）に設定されている。
【００３５】
更に、ファンクション（Ｆｕｎｃｔｉｏｎ）ｃ：３３は、Ｉ／Ｏデバイス（Ｍａｓｔｅｒ  Ｄｅｖｉｃｅ）３０及びＩ／Ｏデバイス（Ｓｌａｖｅ  Ｄｅｖｉｃｅ）４０のファンクション（Ｆｕｎｃｔｉｏｎ）をそれぞれ別個に動作させるため、双方のレコードにおいてＶｍビット（Ｖｍ）５１が真（Ｔ）、Ｖｓビット（Ｖｓ）５３が偽（Ｆ）に設定されている。
【００３６】
このような設定の結果、物理記憶空間上にマッピングされた各デバイス、ファンクション（Ｆｕｎｃｔｉｏｎ）のＭＭＩＯ空間は、図５に示すようなレイアウトになる。Ｉ／Ｏデバイス（Ｍａｓｔｅｒ  Ｄｅｖｉｃｅ）３０のファンクション（Ｆｕｎｃｔｉｏｎ）ａ、ｂ、ｃが個々に物理記憶空間上にマッピングされている事に加え、Ｉ／Ｏデバイス（Ｓｌａｖｅ  Ｄｅｖｉｃｅ）４０のファンクション（Ｆｕｎｃｔｉｏｎ）ａ’、ｂ’がＩ／Ｏデバイス（Ｍａｓｔｅｒ  Ｄｅｖｉｃｅ）３０のファンクション（Ｆｕｎｃｔｉｏｎ）ａ、ｂと同じアドレスにマッピングされており、ソフトウェアからは、単一のデバイスとして見えることがわかる。
【００３７】
次に、システム運用中のメモリコントローラ（ＭＥＭＣＴＬ）１４の動作について説明する。
図６を参照して、プロセッサからのメモリアクセスのトランザクションに対する動作について説明する。
（１）ステップＳ１０１
トランザクションルーティングコントローラ（Ｔｘｎ  Ｒｏｕｔｉｎｇ  ＣＴＬ）１４３は、プロセッサ（ＣＰＵ）１１及びプロセッサ（ＣＰＵ）１２からのメモリリードやメモリライト等のメモリアクセスのトランザクションを、ＦＳＢインターフェース（ＦＢＳ  Ｉ／Ｆ）１４１を経由して受け取る。
（２）ステップＳ１０２
トランザクションルーティングコントローラ（Ｔｘｎ  Ｒｏｕｔｉｎｇ  ＣＴＬ）１４３は、ルーティングテーブル（Ｒｏｕｔｉｎｇ  Ｔａｂｌｅ）１４２を参照して、当該トランザクションで指定されるアドレス範囲に該当するルーティング情報を検索する。
（３）ステップＳ１０３
トランザクションルーティングコントローラ（Ｔｘｎ  Ｒｏｕｔｉｎｇ  ＣＴＬ）１４３は、該当するルーティング情報のレコードが見つかると、Ｖｍビット（Ｖｍ）５１を参照し、Ｖｍビット（Ｖｍ）５１が真（Ｔ）である場合には、そのレコードからマスターデバイスＩＤ（Ｍａｓｔｅｒ  ＤＩＤ）５２を取り出して、トランザクションのターゲットとなるデバイスへのルーティング経路に従い、メモリインターフェース（ＭＥＭ  Ｉ／Ｆ）１４４、Ｉ／Ｏインターフェース（Ｉ／Ｏ  Ｉ／Ｆ）１４５、Ｉ／Ｏインターフェース（Ｉ／Ｏ  Ｉ／Ｆ）１４６のいずれかへトランザクションを送出する。
（４）ステップＳ１０４
更に、トランザクションルーティングコントローラ（Ｔｘｎ  Ｒｏｕｔｉｎｇ  ＣＴＬ）１４３は、Ｖｓビット（Ｖｓ）５３を参照し、Ｖｓビット（Ｖｓ）５３が真（Ｔ）である場合には、スレーブデバイスＩＤ（Ｓｌａｖｅ  ＤＩＤ）５４を取り出して、ターゲットとなるデバイスへのルーティング経路に従い、メモリインターフェース（ＭＥＭ  Ｉ／Ｆ）１４４、Ｉ／Ｏインターフェース（Ｉ／Ｏ  Ｉ／Ｆ）１４５、Ｉ／Ｏインターフェース（Ｉ／Ｏ  Ｉ／Ｆ）１４６のいずれかへトランザクションを送出する。
【００３８】
図７を参照して、Ｉ／Ｏコントローラからのメモリアクセスのトランザクションに対する動作について説明する。
（１）ステップＳ２０１
トランザクションルーティングコントローラ（Ｔｘｎ  Ｒｏｕｔｉｎｇ  ＣＴＬ）１４３は、Ｉ／Ｏコントローラ（ＩＯＣＴＬ）１６若しくはＩ／Ｏコントローラ（ＩＯＣＴＬ）１７から、Ｉ／Ｏインターフェース（Ｉ／Ｏ  Ｉ／Ｆ）１４５若しくはＩ／Ｏインターフェース（Ｉ／Ｏ  Ｉ／Ｆ）１４６を経由して、メモリリードやメモリライト等のメモリアクセスのトランザクションを受け取る。
（２）ステップＳ２０２
トランザクションルーティングコントローラ（Ｔｘｎ  Ｒｏｕｔｉｎｇ  ＣＴＬ）１４３は、先の場合（図６）と同様に、ルーティングテーブル（Ｒｏｕｔｉｎｇ  Ｔａｂｌｅ）１４２を参照して、当該トランザクションで指定されるアドレス範囲に該当するルーティング情報を検索する。
（３）ステップＳ２０３
トランザクションルーティングコントローラ（Ｔｘｎ  Ｒｏｕｔｉｎｇ  ＣＴＬ）１４３は、該当するルーティング情報のレコードが見つかると、まず、Ｖｍビット（Ｖｍ）５１を参照し、Ｖｍビット（Ｖｍ）５１が真（Ｔ）である場合には、そこからマスターデバイスＩＤ（Ｍａｓｔｅｒ  ＤＩＤ）５２を取り出して、トランザクションのターゲットとなるデバイスへのルーティング経路に従い、メモリインターフェース（ＭＥＭ  Ｉ／Ｆ）１４４、Ｉ／Ｏインターフェース（Ｉ／Ｏ  Ｉ／Ｆ）１４５、Ｉ／Ｏインターフェース（Ｉ／Ｏ  Ｉ／Ｆ）１４６のいずれかへトランザクションを送出する。
（４）ステップＳ２０４
更に、トランザクションルーティングコントローラ（Ｔｘｎ  Ｒｏｕｔｉｎｇ  ＣＴＬ）１４３は、Ｖｓビット（Ｖｓ）５３を検索し、Ｖｓビット（Ｖｓ）５３が真（Ｔ）である場合には、スレーブデバイスＩＤ（Ｓｌａｖｅ  ＤＩＤ）５４を取り出して、ターゲットとなるデバイスへのルーティング経路に従い、メモリインターフェース（ＭＥＭ  Ｉ／Ｆ）１４４、Ｉ／Ｏインターフェース（Ｉ／Ｏ  Ｉ／Ｆ）１４５、Ｉ／Ｏインターフェース（Ｉ／Ｏ  Ｉ／Ｆ）１４６のいずれかへトランザクションを送出する。
【００３９】
図８を参照して、トランザクションに対するリプライや割り込みに対する動作について説明する。
（１）ステップＳ３０１
トランザクションルーティングコントローラ（Ｔｘｎ  Ｒｏｕｔｉｎｇ  ＣＴＬ）１４３は、メモリリード等のトランザクションに対するリプライや、割り込みをいずれかのインターフェースブロックから受信する。すなわち、トランザクションルーティングコントローラ（Ｔｘｎ  Ｒｏｕｔｉｎｇ  ＣＴＬ）１４３は、ＦＳＢインターフェース（ＦＢＳ  Ｉ／Ｆ）１４１、メモリインターフェース（ＭＥＭ  Ｉ／Ｆ）１４４、Ｉ／Ｏインターフェース（Ｉ／Ｏ  Ｉ／Ｆ）１４５及びＩ／Ｏインターフェース（Ｉ／Ｏ  Ｉ／Ｆ）１４６のいずれかのインターフェースブロックから、メモリリード等のトランザクションに対するリプライや、割り込みを受信する。
（２）ステップＳ３０２
トランザクションルーティングコントローラ（Ｔｘｎ  Ｒｏｕｔｉｎｇ  ＣＴＬ）１４３は、ルーティングテーブル（Ｒｏｕｔｉｎｇ  Ｔａｂｌｅ）１４２を参照し、トランザクション送出元を特定するための条件に一致するレコードを検索する。ここでは、トランザクションルーティングコントローラ（Ｔｘｎ  Ｒｏｕｔｉｎｇ  ＣＴＬ）１４３は、ルーティングテーブル（Ｒｏｕｔｉｎｇ  Ｔａｂｌｅ）１４２を参照し、Ｖｍが真（Ｔ）且つマスターデバイスＩＤ（Ｍａｓｔｅｒ  ＤＩＤ）５２がトランザクション送出元のデバイスＩＤと一致する、若しくは、Ｖｍが偽（Ｆ）且つＶｓが真（Ｔ）且つスレーブデバイスＩＤ（Ｓｌａｖｅ  ＤＩＤ）５４がトランザクション送出元のデバイスＩＤと一致するレコードを検索する。
（３）ステップＳ３０３
トランザクションルーティングコントローラ（Ｔｘｎ  Ｒｏｕｔｉｎｇ  ＣＴＬ）１４３は、トランザクション送出元を特定するための条件に一致するレコードが存在する場合、トランザクション送出元のデバイスが二重化されたＩ／Ｏデバイスのうちのマスターデバイスであるか、コールドスタンバイ状態の運用系のスレーブデバイスであると判定する。
（４）ステップＳ３０４
トランザクションルーティングコントローラ（Ｔｘｎ  Ｒｏｕｔｉｎｇ  ＣＴＬ）１４３は、当該トランザクションのターゲットデバイスＩＤに従い、ルーティング経路を決定し、適切なインターフェースブロックへトランザクションを送出する。すなわち、トランザクションルーティングコントローラ（Ｔｘｎ  Ｒｏｕｔｉｎｇ  ＣＴＬ）１４３は、ＦＳＢインターフェース（ＦＢＳ  Ｉ／Ｆ）１４１、メモリインターフェース（ＭＥＭ  Ｉ／Ｆ）１４４、Ｉ／Ｏインターフェース（Ｉ／Ｏ  Ｉ／Ｆ）１４５及びＩ／Ｏインターフェース（Ｉ／Ｏ  Ｉ／Ｆ）１４６のいずれかへトランザクションを送出する。
（５）ステップＳ３０５
トランザクションルーティングコントローラ（Ｔｘｎ  Ｒｏｕｔｉｎｇ  ＣＴＬ）１４３は、トランザクション送出元を特定するための条件に一致するレコードが見つからなかった場合、例えば、ミラーリングのスレーブデバイスからのトランザクションを受信したような場合、ルーティングは行わず当該トランザクションを破棄する。
【００４０】
次に、図９を参照して、システム立ち上げ時に二重化されたＩ／Ｏデバイスを初期化し、コールドスタンバイ状態に設定する手順を説明する。
（１）ステップＳ４０１
まず、システムの起動開始時に、初期設定として、サービスプロセッサ（ＳＰ）２１は、ルーティングテーブル（Ｒｏｕｔｉｎｇ  Ｔａｂｌｅ）１４２にＩ／Ｏデバイスのルーティング情報を登録する際、対象のＩ／Ｏデバイスのファンクション（Ｆｕｎｃｔｉｏｎ）のレコードに対し、前述したミラーリングの設定を行う。オペレーティングシステムが起動する一連のシーケンスの中で、オペレーティングシステムのデバイスドライバ（図示せず）により、当該Ｉ／Ｏデバイスの初期設定が行われる。この時点では、二重化されたＩ／Ｏデバイスはミラーリングされているので、マスター・スレーブ双方に対して同じ初期設定が行われる。ここでは、サービスプロセッサ（ＳＰ）２１は、Ｉ／Ｏデバイス（Ｍａｓｔｅｒ  Ｄｅｖｉｃｅ）３０及びＩ／Ｏデバイス（Ｓｌａｖｅ  Ｄｅｖｉｃｅ）４０の双方に対して同じ初期設定を行う。
（２）ステップＳ４０２
初期設定が完了した時点で、デバイスドライバは、スレーブ側のＩ／Ｏデバイスを切り離してコールドスタンバイ状態で並行して運用する旨の指示を、サービスプロセッサ（ＳＰ）２１に対して通知する。この通知は、より具体的な例として、Ｉ／Ｏデバイスと同じくサービスプロセッサ（ＳＰ）２１の通信用レジスタをＭＭＩＯにマッピングし、図２のトランザクションルーティングコントローラ（Ｔｘｎ  Ｒｏｕｔｉｎｇ  ＣＴＬ）１４３からＳＰインターフェース（ＳＰ  Ｉ／Ｆ）１４７を経由してサービスプロセッサ（ＳＰ）２１へ通知する実装が考えられる。
（３）ステップＳ４０３
サービスプロセッサ（ＳＰ）２１は、通知を受け取ると、Ｉ／Ｏデバイスのスレーブデバイスを動的に切り離し、コールドスタンバイへ移行する。ここでは、サービスプロセッサ（ＳＰ）２１は、Ｉ／Ｏデバイス（Ｓｌａｖｅ  Ｄｅｖｉｃｅ）４０を動的に切り離し、コールドスタンバイへ移行する。
【００４１】
図１０を参照して、コールドスタンバイ状態にする操作手順を説明する。
以下の手順は、サービスプロセッサ（ＳＰ）２１からトランザクションルーティングコントローラ（Ｔｘｎ  Ｒｏｕｔｉｎｇ  ＣＴＬ）１４３を始めシステム内の各要素の動作を制御する事で実現するもので、制御の手順はサービスプロセッサ（ＳＰ）２１内のプログラムとして実装されるものである。
（１）ステップＳ５０１
まず、最初に、サービスプロセッサ（ＳＰ）２１は、メモリコントローラ（ＭＥＭＣＴＬ）１４内の各Ｉ／ＯインターフェースからＩ／Ｏコントローラへのトランザクション送出を抑止する。その結果、抑止されたトランザクションは、トランザクションルーティングコントローラ（Ｔｘｎ  Ｒｏｕｔｉｎｇ  ＣＴＬ）１４３中に存在するバッファ等（図示せず）に一時的に滞留する。実装方法に依存して、Ｉ／Ｏインターフェースから送出を抑止するトランザクションは、二重化されたＩ／Ｏデバイスに向けたもののみに限定しても良い。この場合、サービスプロセッサ（ＳＰ）２１は、トランザクションのターゲットデバイスＩＤを参照して、トランザクションの送出・抑止を決定する事になる。また、このとき、サービスプロセッサ（ＳＰ）２１は、Ｉ／ＯコントローラからＩ／Ｏインターフェースへのトランザクション送出を抑止せず、Ｉ／Ｏデバイスからのトランザクション送出に対しては動作を継続する。
（２）ステップＳ５０２
サービスプロセッサ（ＳＰ）２１は、この状態で一定時間待ち合わせを行う。これにより、各プロセッサ、メモリ、他のＩ／ＯデバイスからＩ／Ｏインターフェースを経由して送出済みの仕掛かり中トランザクションに対するリプライ処理が完了する。待ち合わせの時間は、コンピュータシステムの実装に依存して適切な値を定義する必要がある。すなわち、サービスプロセッサ（ＳＰ）２１は、現在のトランザクションに対するリプライ処理が全て完了するまで待機する。
（３）ステップＳ５０３
Ｉ／Ｏデバイスに対する先行するトランザクションが完了した後に、サービスプロセッサ（ＳＰ）２１は、ルーティングテーブル（Ｒｏｕｔｉｎｇ  Ｔａｂｌｅ）１４２中のレコードの更新を行う。具体的には、対象のミラーリングされたデバイスが定義されているレコードに記載されているＶｓビット（Ｖｓ）５３を偽（Ｆ）に書き換える。
（４）ステップＳ５０４
続いて、サービスプロセッサ（ＳＰ）２１は、Ｉ／ＯインターフェースからＩ／Ｏコントローラへのトランザクション送出を再開する。これによりトランザクションルーティングコントローラ（Ｔｘｎ  Ｒｏｕｔｉｎｇ  ＣＴＬ）１４３内に滞留していたトランザクションは、更新されたルーティング情報に従い、マスターデバイスのみへルーティングされてＩ／Ｏインターフェースから送出される事になる。
【００４２】
以上で、Ｉ／Ｏデバイスをコールドスタンバイ状態にする操作は完了するが、この時のスレーブデバイスの状態は、オペレーティングシステム起動時のデバイスドライバによる初期設定が完了した状態のまま保持されていることがわかる。
【００４３】
続いて、図１１を参照して、コールドスタンバイ状態にあるスレーブデバイスを切り替えて新しいマスターデバイスとして運用する手順を説明する。
（１）ステップＳ６０１
障害の発生等、何らかの理由によりマスターデバイスとスレーブデバイスの切り替えを行う必要が生じたとき、サービスプロセッサ（ＳＰ）２１は、先に示したミラーリングからコールドスタンバイへの移行時と同様に、各Ｉ／ＯインターフェースからＩ／Ｏコントローラへのトランザクション送出を一時的に抑止する。
（２）ステップＳ６０２
サービスプロセッサ（ＳＰ）２１は、一定時間の待ち合わせを行う。
（３）ステップＳ６０３
サービスプロセッサ（ＳＰ）２１は、ルーティングテーブル（Ｒｏｕｔｉｎｇ  Ｔａｂｌｅ）１４２中の当該デバイスに対応するレコードのＶｍビット（Ｖｍ）５１を偽（Ｆ）に更新し、Ｖｓビット（Ｖｓ）５３を真（Ｔ）に更新する。すなわち、サービスプロセッサ（ＳＰ）２１は、コールドスタンバイ状態にあるスレーブデバイスを切り替えて新しいマスターデバイスとする。
（４）ステップＳ６０４
サービスプロセッサ（ＳＰ）２１は、Ｉ／Ｏインターフェースからのトランザクション送出を再開する。このとき、サービスプロセッサ（ＳＰ）２１は、新しいマスターデバイスに対して、トランザクション送出を行う。
【００４４】
これによりトランザクションルーティングコントローラ（Ｔｘｎ  Ｒｏｕｔｉｎｇ  ＣＴＬ）１４３内に滞留していたトランザクションは、更新されたルーティング情報に従い、新しいマスターデバイスへ送出される事になる。このとき、元のマスターデバイスと新しいマスターデバイス（元のスレーブデバイス）の状態は、一般に同一ではないため、切り替えの前後では、オペレーティングシステムやアプリケーションソフトウェアから見た動作の継続性は保証されないことに留意する必要がある。そのため、主にデバイスドライバやアプリケーションソフトウェアにて、Ｉ／Ｏデバイスへの入出力の再試行等の工夫が必要になると考えられる。
【００４５】
更に、サービスプロセッサ（ＳＰ）２１がハードウェアの障害検出等を契機にＩ／Ｏデバイスの切り替えを開始する代わりに、Ｉ／Ｏデバイスの異常を検出したデバイスドライバがＳＰインターフェース（ＳＰ  Ｉ／Ｆ）１４７を通じてサービスプロセッサ（ＳＰ）２１に対してＩ／Ｏデバイスの切替を指示する方法も考えられる。この場合はデバイスドライバにてＩ／Ｏデバイスの切り替えタイミングを適切に選択する事ができるため、上記に説明した切り替え前後での動作の継続性の問題への対処もし易くなると考えられる。
【００４６】
最後に、ミラーリング状態にあるＩ／Ｏデバイスの一方を動的に縮退する手順について説明する。言うまでも無く、本発明の実施形態の構成によれば、二重化されたＩ／Ｏデバイスをオペレーティングシステム起動時のデバイスドライバによる初期設定後もミラーリングしたまま運用することも可能である。
【００４７】
上記の例と同じく、障害の発生等の理由によりミラーリングされたＩ／Ｏデバイスのいずれかを縮退する必要が生じたとき、サービスプロセッサ（ＳＰ）２１は先に示したミラーリングからコールドスタンバイへの移行時と同様に、各Ｉ／ＯインターフェースからＩ／Ｏコントローラへのトランザクション送出を一時的に抑止し、一定時間の待ち合わせを行い、ルーティングテーブル（Ｒｏｕｔｉｎｇ  Ｔａｂｌｅ）１４２中の当該デバイスに対応するレコードのＶｍビット若しくはＶｓビットのいずれか、縮退すべきデバイスに対応する方を偽（Ｆ）に更新する。  
【００４８】
ここで、Ｉ／Ｏインターフェースからのトランザクション送出を再開する前に、サービスプロセッサ（ＳＰ）２１は縮退したＩ／Ｏデバイスの動作を停止させる。Ｉ／Ｏデバイスの停止方法は本発明の範囲を超えるため、個々では詳細に説明しないが、ＰＣＩデバイスであればデバイスの機能に依存して当該デバイスのＣｏｎｆｉｇｕｒａｔｉｏｎレジスタを操作してデバイスの動作を止める方法や、デバイスが接続されるバスブリッジが存在すればバスブリッジを操作してＰＣＩバスをリセットする方法、Ｉ／Ｏインターフェースの機能に依存して当該デバイスからのトランザクションを受け取らないようにマスクする方法等が考えられる。当該デバイスがメモリデバイスのような受動的なデバイスであれば、何もせずそのまま置いておく方法でも構わない。いずれにせよ、これらの操作によって縮退したＩ／Ｏデバイスは、その動作がシステムに影響を及ぼすことが無いよう、論理的に切り離されることになる。
【００４９】
ここまでの操作が完了したら、サービスプロセッサ（ＳＰ）２１は、Ｉ／Ｏインターフェースからのトランザクション送出を再開し、トランザクションルーティングコントローラ（Ｔｘｎ  Ｒｏｕｔｉｎｇ  ＣＴＬ）１４３内に滞留していたトランザクションは、更新されたルーティング情報に従い、残った一方のＩ／Ｏデバイスへ送出される事になる。
【００５０】
以上のように、本発明は、メモリコントローラ内に実装するルーティングテーブルに持たせたマスターデバイス及びスレーブデバイスへのトランザクションルーティング情報と、サービスプロセッサ内に実装する制御プログラム、及びＣＰＵ上で動作するデバイスドライバやＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）等のソフトウェアによって、コンピュータシステム内で二重化されたＩ／Ｏデバイス、特に一つのデバイスに複数の機能を備えたマルチファンクションＰＣＩデバイスを二重化した構成において、システム運用中に動的にマスターデバイスからスレーブデバイスへの切替機能を実現したことを特徴としている。
【００５１】
図２において、ルーティングテーブル（Ｒｏｕｔｉｎｇ  Ｔａｂｌｅ）１４２は、図３に示す形式の情報を格納する。ルーティングテーブル（Ｒｏｕｔｉｎｇ  Ｔａｂｌｅ）１４２に格納される情報は、物理主記憶空間の各々の範囲に対するトランザクションのルーティング情報を格納した複数のレコードを有するテーブルであり、それぞれのレコードは、Ｖｍビット（Ｖｍ）５１と、マスターデバイスＩＤ（Ｍａｓｔｅｒ  ＤＩＤ）５２と、Ｖｓビット（Ｖｓ）５３と、スレーブデバイスＩＤ（Ｓｌａｖｅ  ＤＩＤ）５４と、アドレスオフセット（Ａｄｄｒ．  Ｏｆｆｓｅｔ）５５と、アドレス範囲（Ａｄｄｒ．  Ｒａｎｇｅ）５６を含む。
【００５２】
Ｖｍビット（Ｖｍ）５１は、プロセッサ及びＩ／Ｏデバイスからのメモリアクセスに対し、二重化されたマスターデバイスへのルーティングが有効である事を示す有効ビットを示す。マスターデバイスＩＤ（Ｍａｓｔｅｒ  ＤＩＤ）５２は、物理記憶空間上の当該アドレスにマッピングされたマスターデバイスへのルーティング経路情報を示す。Ｖｓビット（Ｖｓ）５３は、スレーブデバイスへのルーティングが有効である事を示す有効ビットを示す。スレーブデバイスＩＤ（Ｓｌａｖｅ  ＤＩＤ）５４は、物理記憶空間上の当該アドレスにマッピングされたスレーブデバイスへのルーティング経路情報を示す。アドレスオフセット（Ａｄｄｒ．  Ｏｆｆｓｅｔ）５５は、当該トランザクションをルーティングすべきアドレスオフセットを示す。アドレス範囲（Ａｄｄｒ．  Ｒａｎｇｅ）５６は、アドレスオフセットに対応するアドレス範囲を示す。
【００５３】
図２において、トランザクションルーティングコントローラ（Ｔｘｎ  Ｒｏｕｔｉｎｇ  ＣＴＬ）１４３は、プロセッサ側のＦＳＢインターフェース（ＦＢＳ  Ｉ／Ｆ）１４１及びＩ／Ｏデバイス側のＩ／Ｏインターフェース（Ｉ／Ｏ  Ｉ／Ｆ）１４５、Ｉ／Ｏインターフェース（Ｉ／Ｏ  Ｉ／Ｆ）１４６からのトランザクションを受け付け、当該トランザクションがメモリアクセスのトランザクションであればルーティングテーブル（Ｒｏｕｔｉｎｇ  Ｔａｂｌｅ）１４２を参照して、当該トランザクションのターゲットデバイスを決定し、そのターゲットデバイスに向けたインターフェースへトランザクションを送出する。このとき、ルーティング情報を参照した結果で当該トランザクションの送出先デバイスが二重化されたＩ／Ｏデバイスである場合、当該デバイスの二重化の状態によりマスターデバイスとスレーブデバイスのいずれか一方若しくは両方に対してトランザクションの送出を行う。二重化の状態とは、「マスターデバイスのみが有効に機能している状態」、「スレーブデバイスのみが有効に機能している状態」、「両デバイスが有効に機能しておりミラーリングされた状態」のいずれかである。
【００５４】
更に、トランザクションルーティングコントローラ（Ｔｘｎ  Ｒｏｕｔｉｎｇ  ＣＴＬ）１４３は、ＦＳＢインターフェース（ＦＢＳ  Ｉ／Ｆ）１４１、Ｉ／Ｏインターフェース（Ｉ／Ｏ  Ｉ／Ｆ）１４５、Ｉ／Ｏインターフェース（Ｉ／Ｏ  Ｉ／Ｆ）１４６、若しくはメモリインターフェース（ＭＥＭ  Ｉ／Ｆ）１４４からメモリアクセスに対するリプライトランザクションを受け付けた場合、ルーティング情報を参照する。トランザクションルーティングコントローラ（Ｔｘｎ  Ｒｏｕｔｉｎｇ  ＣＴＬ）１４３は、ルーティング情報を参照して当該リプライトランザクションを送出したデバイスが二重化されたＩ／Ｏデバイスであり、当該デバイスの二重化の状態によりマスターデバイス若しくはスレーブデバイスのいずれか一方のみが有効に機能している場合、リプライトランザクションが指示するターゲットデバイスへルーティングを行う。このとき、トランザクションルーティングコントローラ（Ｔｘｎ  Ｒｏｕｔｉｎｇ  ＣＴＬ）１４３は、ミラーリングされた状態であれば、マスターデバイスからのトランザクションのルーティングを行いスレーブデバイスからのトランザクションを破棄する。
【００５５】
このようにして、本発明では二重化されたＩ／Ｏデバイスに対するメモリアクセスをＩ／Ｏデバイスの二重化の状態に応じてトランザクションルーティングコントローラ（Ｔｘｎ  Ｒｏｕｔｉｎｇ  ＣＴＬ）１４３にていずれか一方のＩ／Ｏデバイス若しくは双方のＩ／Ｏデバイスに向けて送出しているので、ソフトウェアのデバイスドライバからはマスターデバイスに対する単一のメモリアクセスでマスター・スレーブ両方のデバイスへのメモリアクセスを実現する事ができる。
【００５６】
次に、図２においてサービスプロセッサ（ＳＰ）２１（図示せず；図１に記載）は、システム運用中にメモリコントローラ（ＭＥＭＣＴＬ）１４中の各機能ブロックを制御し、Ｉ／Ｏインターフェースへのトランザクション送出を一時的に停止し、ルーティングテーブル中のルーティング情報を更新して二重化されたＩ／Ｏデバイスの二重化の状態を変更し、Ｉ／Ｏインターフェースの動作を再開する。
【００５７】
このようにして、本発明では二重化されたＩ／Ｏデバイスのマスターデバイスとスレーブデバイスをシステム運用中にマスターデバイスのみ有効、スレーブデバイスのみ有効、両デバイスをミラーリングした状態のいずれにも切り替える事ができる。
【００５８】
なお、本発明においては、以下に記載するような効果を奏する。
第１の効果は、ルーティングテーブルに格納されるルーティング情報にＶｍビット、マスターデバイスＩＤ、Ｖｓビット、スレーブデバイスＩＤを付加しており、トランザクションルーティングコントローラが当該ルーティング情報を参照してトランザクション送出先のＩ／Ｏデバイスが二重化されている場合に二重化されたマスターデバイスとスレーブデバイスの双方又はいずれか一方にトランザクション送出できる仕組みを具備したことにより、Ｉ／Ｏデバイスのミラーリングやコールドスタンバイを任意に実現できる事である。
【００５９】
第２の効果は、ルーティングテーブルに格納されるルーティング情報で定義されるＭＭＩＯ空間のマッピングが、Ｉ／Ｏデバイスのファンクション（Ｆｕｎｃｔｉｏｎ）単位に定義できるため、二重化する対象のＩ／Ｏデバイスが複数の機能を持つマルチファンクションデバイスの場合に、ファンクション（Ｆｕｎｃｔｉｏｎ）単位に適切な二重化方法を選択してミラーリング、コールドスタンバイのいずれかで動作させるか、個別のデバイスとして動作させるか決定できる事である。
【００６０】
第３の効果は、サービスプロセッサからメモリコントローラ内の各機能ブロックの動作を制御し、一時的なＩ／Ｏデバイスへのトランザクションを停止、Ｉ／Ｏデバイスの縮退若しくは切り替え、トランザクションのルーティング経路変更、トランザクションのルーティング再開とする事で、Ｉ／Ｏデバイスの縮退若しくは切替を動的に行う事ができる事である。
【００６１】
ここでは、二重化されたＩ／Ｏデバイスのマスターデバイスとスレーブデバイスを例に説明しているが、実際には、二重化されたＩ／Ｏデバイスに限定されない。例えば、スレーブデバイスが複数である事例も考えられる。すなわち、二重化に限らず、多重化されたＩ／Ｏデバイスに対しても、本発明を適用することが可能である。
【図面の簡単な説明】
【００６２】
【図１】図１は、本発明の動的切り替え装置の構成例を示すブロック図である。
【図２】図２は、メモリコントローラ（ＭＥＭＣＴＬ）の論理ブロック図である。
【図３】図３は、ルーティング情報の形式を示す図である。
【図４】図４は、ルーティングテーブル（Ｒｏｕｔｉｎｇ  Ｔａｂｌｅ）の表の形式（データフォーマット）の一例を示す図である。
【図５】図５は、ＭＭＩＯ空間のレイアウトの例を示す図である。
【図６】図６は、プロセッサからのメモリアクセスのトランザクションに対する動作を示すフローチャートである。
【図７】図７は、Ｉ／Ｏコントローラからのメモリアクセスのトランザクションに対する動作を示すフローチャートである。
【図８】図８は、トランザクションに対するリプライや割り込みに対する動作を示すフローチャートである。
【図９】図９は、システム立ち上げ時に二重化されたＩ／Ｏデバイスを初期化し、コールドスタンバイ状態に設定する手順を示すフローチャートである。
【図１０】図１０は、コールドスタンバイ状態にする操作手順を示すフローチャートである。
【図１１】図１１は、コールドスタンバイ状態にあるスレーブデバイスを切り替えて新しいマスターデバイスとして運用する手順を示すフローチャートである。
【符号の説明】
【００６３】
１１…  プロセッサ（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）
１２…  プロセッサ（ＣＰＵ）
１３…  フロントサイドバス（ＦＳＢ：Ｆｒｏｎｔ  Ｓｉｄｅ  Ｂｕｓ）
１４…  メモリコントローラ（ＭＥＭＣＴＬ：Ｍｅｍｏｒｙ  Ｃｏｎｔｒｏｌｌｅｒ）
１４１…  ＦＳＢインターフェース（ＦＢＳ  Ｉ／Ｆ）
１４２…  ルーティングテーブル（Ｒｏｕｔｉｎｇ  Ｔａｂｌｅ）
１４３…  トランザクションルーティングコントローラ（Ｔｘｎ  Ｒｏｕｔｉｎｇ  ＣＴＬ）
１４４…  メモリインターフェース（ＭＥＭ  Ｉ／Ｆ）
１４５…  Ｉ／Ｏインターフェース（Ｉ／Ｏ  Ｉ／Ｆ）
１４６…  Ｉ／Ｏインターフェース（Ｉ／Ｏ  Ｉ／Ｆ）
１４７…  ＳＰインターフェース（ＳＰ  Ｉ／Ｆ）
１５…  メモリ（ＭＥＭ：Ｍｅｍｏｒｙ）
１６…  Ｉ／Ｏコントローラ（ＩＯＣＴＬ：Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｃｏｎｔｒｏｌｌｅｒ）
１７…  Ｉ／Ｏコントローラ（ＩＯＣＴＬ）
１８…  ＰＣＩバス（ＰＣＩ−Ｂｕｓ）
１９…  ＰＣＩバス（ＰＣＩ−Ｂｕｓ）
２１…  サービスプロセッサ（ＳＰ：Ｓｅｒｖｉｃｅ  Ｐｒｏｃｅｓｓｏｒ）
３０…  Ｉ／Ｏデバイス（Ｍａｓｔｅｒ  Ｄｅｖｉｃｅ）
３１…  ファンクション（Ｆｕｎｃｔｉｏｎ）ａ
３２…  ファンクション（Ｆｕｎｃｔｉｏｎ）ｂ
３３…  ファンクション（Ｆｕｎｃｔｉｏｎ）ｃ
４０…  Ｉ／Ｏデバイス（Ｓｌａｖｅ  Ｄｅｖｉｃｅ）
４１…  ファンクション（Ｆｕｎｃｔｉｏｎ）ａ’
４２…  ファンクション（Ｆｕｎｃｔｉｏｎ）ｂ’
４３…  ファンクション（Ｆｕｎｃｔｉｏｎ）ｃ’
５１…  Ｖｍビット（Ｖｍ）
５２…  マスターデバイスＩＤ（Ｍａｓｔｅｒ  ＤＩＤ）
５３…  Ｖｓビット（Ｖｓ）
５４…  スレーブデバイスＩＤ（Ｓｌａｖｅ  ＤＩＤ）
５５…  アドレスオフセット（Ａｄｄｒ．  Ｏｆｆｓｅｔ）
５６…  アドレス範囲（Ａｄｄｒ．  Ｒａｎｇｅ）
【図１】
0004984077.tif 000002
【図２】
0004984077.tif 000003
【図３】
0004984077.tif 000004
【図４】
0004984077.tif 000005
【図５】
0004984077.tif 000006
【図６】
0004984077.tif 000007
【図７】
0004984077.tif 000008
【図８】
0004984077.tif 000009
【図９】
0004984077.tif 000010
【図１０】
0004984077.tif 000011
【図１１】
0004984077.tif 000012