(57)【要約】  ＰＣＩ−Ｅｘｐｒｅｓｓのような１対１の通信方式（Point-to-Point）を用いながら、経路制御を行える技術を実現する。  ＰＣＩ−ＥｘｐｒｅｓｓのＴＬＰ中のデータ部に、経路制御アドレスを挿入する。コンピュータに接続された経路制御ユニットは、コンピュータからＴＬＰを受信すると、経路制御スイッチが、このＴＬＰのデータ部の経路制御アドレスを読み出し、経路制御テーブルを参照して、そのＴＬＰを送出すべきスロットを決定する。その決定にしたがって、経路制御スイッチは、そのＴＬＰを所定のスロットに送出する。したがって、経路制御アドレスによる経路制御を実行することができる。
2016020981.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータと他の複数のＩ／Ｏデバイスとの間に設けられた経路制御装置を用いて、１対１の通信を行う通信方式を利用して、前記コンピュータと他の複数のＩ／Ｏデバイスとの間の通信を行う方法において、
前記コンピュータが、前記通信方式の通信の対象であるパケット中のデータ部に所定の経路制御アドレスを格納し、前記パケットを送信するステップと、
前記経路制御装置が、前記送信されたパケット中の前記経路制御アドレスを取り出し、前記経路制御アドレスで示される相手先である前記Ｉ／Ｏデバイスに、前記パケットを送るステップと、
を含むことを特徴とする経路制御方法。
【請求項２】
請求項１に記載の経路制御方法において、
前記経路制御アドレスは、前記Ｉ／Ｏデバイスに固有のアドレスであることを特徴とする経路制御方法。
【請求項３】
請求項１に記載の経路制御方法において、
前記経路制御アドレスは、前記コンピュータが前記Ｉ／Ｏデバイスに割り当てたアドレスであることを特徴とする経路制御方法。
【請求項４】
請求項１記載の経路制御方法を、前記コンピュータに実行させるプログラムにおいて、
前記Ｉ／Ｏデバイスのアドレスを
ＸＸＸ＠ＹＹＹ
の記法で記述したことを特徴とするプログラム。ここで、前記ＸＸＸは、前記経路制御アドレスであり、前記ＹＹＹは、前記コンピュータにおける前記経路制御装置のアドレスである。
【請求項５】
請求項１記載の経路制御方法を、前記コンピュータに実行させるプログラムを格納した記憶媒体において、
前記Ｉ／Ｏデバイスのアドレスを
ＸＸＸ＠ＹＹＹ
の記法で記述したことを特徴とするプログラムを格納した記憶媒体。ここで、前記ＸＸＸは、前記経路制御アドレスであり、前記ＹＹＹは、前記コンピュータにおける前記経路制御装置のアドレスである。
【請求項６】
コンピュータと他の複数の電子機器との間に設けられた経路制御装置を用いて、１対１の通信を行う通信方式を利用して、前記コンピュータと他の複数の電子機器との間の通信を行う方法において、
前記コンピュータが、前記通信方式の通信の対象であるパケット中のデータ部に、通信相手である対象電子機器を示す経路制御アドレスと、前記対象電子機器の内部アドレスとを格納し、前記パケットを送信するステップと、
前記経路制御装置が、前記送信されたパケット中の前記経路制御アドレスを取り出し、前記経路制御アドレスで示される相手先である前記対象電子機器に、前記対象電子機器の内部アドレスを含む前記パケットを送るステップと、
を含むことを特徴とする経路制御方法。
【請求項７】
請求項６記載の経路制御方法を、前記コンピュータに実行させるプログラムにおいて、
前記対象電子機器中のアドレスを
ＸＸＸ＠ＺＺＺ
の記法で記述したことを特徴とするプログラム。ここで、前記ＺＺＺは、前記対象電子機器を示す前記経路制御アドレスであり、前記ＸＸＸは、前記対象電子機器中の内部アドレスである。
【請求項８】
請求項６記載の経路制御方法を、前記コンピュータに実行させるプログラムを格納した記憶媒体において、
前記対象電子機器中のアドレスを
ＸＸＸ＠ＺＺＺ
の記法で記述したことを特徴とするプログラムを格納した記憶媒体。ここで、前記ＺＺＺは、前記対象電子機器を示す前記経路制御アドレスであり、前記ＸＸＸは、前記対象電子機器中の内部アドレスである。
【請求項９】
コンピュータと、
前記コンピュータに接続する経路制御装置と、
前記経路制御装置に接続する１個以上のＩ／Ｏデバイスと、
を含むコンピュータシステムにおいて、
前記経路制御装置は、
前記コンピュータと１対１の通信方式で接続するためのコネクタと、
前記Ｉ／Ｏデバイスが接続しうる複数のスロットと、
前記コンピュータから前記コネクタを介して送信されてきた、前記通信方式の通信の対象であるパケット中のデータ部に格納された経路制御アドレスを取り出し、その経路制御アドレスが指し示す前記スロットに、前記パケットを送出する経路制御スイッチ、
を含み、
前記コンピュータが、前記通信方式の通信の対象であるパケット中のデータ部に前記経路制御アドレスを格納し、前記パケットを前記コネクタを介して前記経路制御装置に送信した場合、前記経路制御装置が、前記通信方式の通信の対象であるパケット中のデータ部に格納された経路制御アドレスを取り出し、その経路制御アドレスが指し示す前記スロットに、前記パケットを送出することを特徴とするコンピュータシステム。
【請求項１０】
請求項９記載のコンピュータシステムにおいて、
前記経路制御装置は、
前記経路制御アドレスと、それに対応するスロットの番号と、の対応関係を記録した経路制御テーブル、
を備えており、
前記経路制御スイッチは、前記パケット中の経路制御アドレスを、前記経路制御テーブル中から検索し、見いだされた前記対応関係から送出すべき前記スロットの番号を決定し、前記決定した番号のスロットに対して、前記パケットを送出することを特徴とするコンピュータシステム。
【請求項１１】
請求項１０記載のコンピュータシステムにおいて、
前記経路制御スイッチは、前記いずれかのスロットに前記Ｉ／Ｏデバイスが接続された場合に、前記Ｉ／ＯデバイスからそのＩ／Ｏデバイスに固有のアドレスを読み出し、前記経路制御テーブルに、前記固有のアドレスと、前記Ｉ／Ｏデバイスが接続された前記スロットの番号と、を登録し、
前記経路制御スイッチは、前記固有のアドレスを、経路制御アドレスとして利用することを特徴とするコンピュータシステム。
【請求項１２】
請求項１０記載のコンピュータシステムにおいて、前記経路制御テーブルに前記対応関係を記憶する方法において、
前記経路制御スイッチが、前記いずれかのスロットに前記Ｉ／Ｏデバイスが接続された場合に、前記Ｉ／ＯデバイスからそのＩ／Ｏデバイスに固有のアドレスを読み出し、前記経路制御テーブルに、前記固有のアドレスと、前記Ｉ／Ｏデバイスが接続された前記スロットの番号と、を登録するステップ、
を備え、前記経路制御スイッチは、前記固有のアドレスを、経路制御アドレスとして利用することを特徴とする経路制御方法。
【請求項１３】
請求項１０記載のコンピュータシステムにおいて、
前記経路制御スイッチは、前記いずれかのスロットに前記Ｉ／Ｏデバイスが接続された場合に、前記Ｉ／Ｏデバイスに所定のアドレスを割り当て、前記経路制御テーブルに、前記割り当てたアドレスと、前記Ｉ／Ｏデバイスが接続された前記スロットの番号と、を登録し、
前記経路制御スイッチは、前記割り当てたアドレスを、経路制御アドレスとして利用することを特徴とするコンピュータシステム。
【請求項１４】
請求項１０記載のコンピュータシステムにおいて、前記経路制御テーブルに前記対応関係を記憶する方法において、
前記経路制御スイッチが、前記いずれかのスロットに前記Ｉ／Ｏデバイスが接続された場合に、前記Ｉ／Ｏデバイスに所定のアドレスを割り当て、前記経路制御テーブルに、前記割り当てたアドレスと、前記Ｉ／Ｏデバイスが接続された前記スロットの番号と、を登録するステップ、
を備え、前記経路制御スイッチは、前記割り当てたアドレスを、経路制御アドレスとして利用することを特徴とする経路制御方法。
【請求項１５】
請求項９記載のコンピュータシステムにおいて用いられる前記経路制御装置において、
前記コンピュータと１対１の通信方式で接続するためのコネクタと、
前記Ｉ／Ｏデバイスが接続しうる複数のスロットと、
前記コンピュータから前記コネクタを介して送信されてきた、前記通信方式の通信の対象であるパケット中のデータ部に格納された経路制御アドレスを取り出し、その経路制御アドレスが指し示す前記スロットに、前記パケットを送出する経路制御スイッチ、
を含み、
前記コンピュータが、前記通信方式の通信の対象であるパケット中のデータ部に前記経路制御アドレスを格納し、前記パケットを前記コネクタを介して前記経路制御装置に送信した場合、前記通信方式の通信の対象であるパケット中のデータ部に格納された経路制御アドレスを取り出し、その経路制御アドレスが指し示す前記スロットに、前記パケットを送出することを特徴とする経路制御装置。
【請求項１６】
請求項１５記載の経路制御装置において、さらに、
前記経路制御アドレスと、それに対応するスロットの番号と、の対応関係を記録した経路制御テーブル、
を備えており、
前記経路制御スイッチは、前記パケット中の経路制御アドレスを、前記経路制御テーブル中から検索し、見いだされた前記対応関係から送出すべき前記スロットの番号を決定し、前記決定した番号のスロットに対して、前記パケットを送出することを特徴とする経路制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、経路制御装置及び経路制御方法に関する。特に、一対一の通信手段を用いつつ、複数の相手と通信を行うための経路制御を実現する技術に関する。
【背景技術】
【０００２】
今日、ＰＣＩ−Ｅｘｐｒｅｓｓが、コンピュータの内部スロットとして広く活用されている。このＰＣＩ−Ｅｘｐｒｅｓｓは、高速な通信が可能であり、例えば、ＰＣＩ−Ｅｘｐｒｅｓｓ２．０（Ｇｅｎ２）では、１レーン当たり物理帯域では片方向５．０Ｇｂｐｓであり、データ転送速度としては５００Ｍｂｙｔｅ／ｓｅｃであり、高速な内部スロットとして認識されている。なお、より高速なＰＣＩ−Ｅｘｐｒｅｓｓ３．０（２０１０年）が制定されており（物理帯域では片方向８．０Ｇｂｐｓ）、現在はＰＣＩ−Ｅｘｐｒｅｓｓ４．０（Ｇｅｎ４）が検討されている（Ｇｅｎ３の２倍の速度）。【０００３】
ＰＣＩ−Ｅｘｐｒｅｓｓを用いたコンピュータの一般的な構成
ＰＣＩ−Ｅｘｐｒｅｓｓの内部ポート（又は、「内部スロット」「内部バス」等と呼ばれる。また意味合いから「拡張スロット」「拡張バス」と呼ばれることもある）を備えたコンピュータの一般的な構成の例が図１に示されている。【０００４】
ＰＣＩ−Ｅｘｐｒｅｓｓを用いた場合、ＣＰＵ１００には、まずルートコンプレックス（以下、単にＲＣとも呼ぶ）１１０が接続している。ＲＣ１１０には、複数のＰＣＩ−Ｅｘｐｒｅｓｓポートが設けられているが、さらに必要なポート数となるようにスイッチ１２０ａ、１２０ｂ、１２０ｃが設けられる場合がある。これらスイッチ１２０は必要とされるポート数の関係上、多段に接続される場合もある（図１参照）。【０００５】
Ｉ／Ｏデバイスは、エンドポイントと呼ばれ、スイッチ１２０ａやスイッチ１２０ｂ等に接続されている。エンドポイントは、種々存在する。スイッチ１２０のＰＣＩ−Ｅｘｐｒｅｓｓポートにそのまま接続する通常のＰＣＩ−Ｅｘｐｒｅｓｓエンドポイント１３０ａ、１３０ｂ、１３０ｃや、ＲＣ１１０に接続するルートコンプレックスエンドポイント１３４等である。【０００６】
なお、図１において、○は、ＰＣＩ−Ｅｘｐｒｅｓｓポートを表す。【０００７】
また、ＰＣＩ−Ｅｘｐｒｅｓｓポートには、他のバスとのプロトコル変換を行ういわゆるブリッジを設けることもできる。図１の例では、例えば従来のバスであるＰＣＩのバスとの間のプロトコル変換を行うＰＣＩブリッジ１３６が示されている。このブリッジによって、ＰＣＩ−ＥｘｐｒｅｓｓからＰＣＩのバスへの変換を行うことができる。【０００８】
なお、図１は、ＰＣＩ−Ｅｘｐｒｅｓｓを中心として描かれており、実際には、メモリ（図１参照）の他にハードディスク等の記憶手段も備えられている。また、図示されていないが、ＰＣＩ−Ｅｘｐｒｅｓｓグラフィックス（図１参照）には、ディスプレイ装置が接続されており、マウスやキーボード（不図示）等が所定のインターフェースを介して、システムバス（図１参照）に接続されている。【０００９】
図１及び上記説明からもあきらかなように、このＰＣＩ−Ｅｘｐｒｅｓｓはいわゆるｐ−ｐ（ｐｏｉｎｔ−ｔｏ−Ｐｏｉｎｔ）の通信路であり、１対１の通信を行うものである。したがって、図１のように、複数のＩ／Ｏデバイスを接続するには、スイッチ１２０が必要となる（図１参照）。【００１０】
しかし、このＰＣＩ−Ｅｘｐｒｅｓｓに経路制御（ｒｏｕｔｉｎｇ）の機能が備えられれば便利である。本発明は、このような発想からなされた物であり、その主たる目的は、ＰＣＩ−Ｅｘｐｒｅｓｓを用いつつ、経路制御の機能を実現する技術を提供することである。【００１１】
先行技術文献
下記特許文献１には、無線ネットワーク上で経路制御を行うシステム及び方法が開示されている。特に、対向方式（Point to Point）の無線ネットワークで親機が全域木（spanning tree）を作成することによって、ルートを決定することを特徴とする技術が開示されている。【００１２】
また、下記特許文献２には、PCI-PCI bridgeを用いてSecondary Portを備えた場合に、コンフィグレーション時に全てのデバイスをＢＩＯＳが検出できるように、適宜経路制御するアルゴリズムが開示されている。  
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２００２−０７７１９４号公報
【特許文献２】特開２００２−２０７６６８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
ＰＣＩ−Ｅｘｐｒｅｓｓは、このように原理的に１対１（Point-to-Point）の通信を行う規格であるので、多数のデバイスを接続するためには、スイッチを多数設ける必要があり、煩雑な構成となりがちであった。【００１５】
このＰＣＩ−Ｅｘｐｒｅｓｓに経路制御（ｒｏｕｔｉｎｇ）の機能が備えられれば便利であるが、従来はそのような提案や技術は生まれていない。【００１６】
本発明は、このような背景に基づきなされたものであり、その主たる目的は、ＰＣＩ−Ｅｘｐｒｅｓｓを用いつつ、経路制御の機能をその中で実現する技術を提供することである。
【課題を解決するための手段】
【００１７】
ＰＣＩ−Ｅｘｐｒｅｓｓは上述のように、１対１の通信を行う規格であるので、本来的に、経路制御の仕組みは存在しない。そこで、本願発明者らは、鋭意研究の上、ＰＣＩ−Ｅｘｐｒｅｓｓのパケット（ＴＬＰ）のペイロード部分に経路制御の情報を載せることによって、経路制御を行わせるというアイデアに至ったのである。【００１８】
具体的には、本願発明は、下記のような構成を採用する。【００１９】
（１）本発明は、上記課題を鑑みてなされたものであり、コンピュータと他の複数のＩ／Ｏデバイスとの間に設けられた経路制御装置を用いて、１対１の通信を行う通信方式を利用して、前記コンピュータと他の複数のＩ／Ｏデバイスとの間の通信を行う方法において、前記コンピュータが、前記通信方式の通信の対象であるパケット中のデータ部に所定の経路制御アドレスを格納し、前記パケットを送信するステップと、前記経路制御装置が、前記送信されたパケット中の前記経路制御アドレスを取り出し、前記経路制御アドレスで示される相手先である前記Ｉ／Ｏデバイスに、前記パケットを送るステップと、を含むことを特徴とする経路制御方法である。【００２０】
（２）また、本発明は、上記（１）記載の経路制御方法において、前記経路制御アドレスは、前記Ｉ／Ｏデバイスに固有のアドレスであることを特徴とする経路制御方法である。【００２１】
（３）また、本発明は、上記（１）記載の経路制御方法において、前記経路制御アドレスは、前記コンピュータが前記Ｉ／Ｏデバイスに割り当てたアドレスであることを特徴とする経路制御方法である。【００２２】
（４）また、本発明は、上記（１）記載の経路制御方法を、前記コンピュータに実行させるプログラムにおいて、前記Ｉ／Ｏデバイスのアドレスを  ＸＸＸ＠ＹＹＹ  の記法で記述したことを特徴とするプログラムである。ここで、前記ＸＸＸは、前記経路制御アドレスであり、前記ＹＹＹは、前記コンピュータにおける前記経路制御装置のアドレスである。【００２３】
（５）また、本発明は、上記（１）記載の経路制御方法を、前記コンピュータに実行させるプログラムを格納した記憶媒体において、前記Ｉ／Ｏデバイスのアドレスを、  ＸＸＸ＠ＹＹＹ  の記法で記述したことを特徴とするプログラムを格納した記憶媒体である。ここで、前記ＸＸＸは、前記経路制御アドレスであり、前記ＹＹＹは、前記コンピュータにおける前記経路制御装置のアドレスである。【００２４】
（６）また、本発明は、上記課題を解決するために、コンピュータと他の複数の電子機器との間に設けられた経路制御装置を用いて、１対１の通信を行う通信方式を利用して、前記コンピュータと他の複数の電子機器との間の通信を行う方法において、前記コンピュータが、前記通信方式の通信の対象であるパケット中のデータ部に、通信相手である対象電子機器を示す経路制御アドレスと、前記対象電子機器の内部アドレスとを格納し、前記パケットを送信するステップと、前記経路制御装置が、前記送信されたパケット中の前記経路制御アドレスを取り出し、前記経路制御アドレスで示される相手先である前記対象電子機器に、前記対象電子機器の内部アドレスを含む前記パケットを送るステップと、を含むことを特徴とする経路制御方法である。【００２５】
（７）また、本発明は、上記（６）記載の経路制御方法を、前記コンピュータに実行させるプログラムにおいて、前記対象電子機器中のアドレスを  ＸＸＸ＠ＺＺＺ  の記法で記述したことを特徴とするプログラムである。ここで、前記ＺＺＺは、前記対象電子機器を示す前記経路制御アドレスであり、前記ＸＸＸは、前記対象電子機器中の内部アドレスである。【００２６】
（８）また、本発明は、上記（６）記載の経路制御方法を、前記コンピュータに実行させるプログラムを格納した記憶媒体において、前記対象電子機器中のアドレスを  ＸＸＸ＠ＺＺＺ  の記法で記述したことを特徴とするプログラムを格納した記憶媒体である。ここで、前記ＺＺＺは、前記対象電子機器を示す前記経路制御アドレスであり、前記ＸＸＸは、前記対象電子機器中の内部アドレスである。【００２７】
（９）また、本発明は、上記課題を解決するために、コンピュータと、前記コンピュータに接続する経路制御装置と、前記経路制御装置に接続する１個以上のＩ／Ｏデバイスと、を含むコンピュータシステムにおいて、前記経路制御装置は、前記コンピュータと１対１の通信方式で接続するためのコネクタと、前記Ｉ／Ｏデバイスが接続しうる複数のスロットと、前記コンピュータから前記コネクタを介して送信されてきた、前記通信方式の通信の対象であるパケット中のデータ部に格納された経路制御アドレスを取り出し、その経路制御アドレスが指し示す前記スロットに、前記パケットを送出する経路制御スイッチ、を含み、前記コンピュータが、前記通信方式の通信の対象であるパケット中のデータ部に前記経路制御アドレスを格納し、前記パケットを前記コネクタを介して前記経路制御装置に送信した場合、前記経路制御装置が、前記通信方式の通信の対象であるパケット中のデータ部に格納された経路制御アドレスを取り出し、その経路制御アドレスが指し示す前記スロットに、前記パケットを送出することを特徴とするコンピュータシステムである。【００２８】
（１０）また、本発明は、上記（９）記載のコンピュータシステムにおいて、前記経路制御装置は、前記経路制御アドレスと、それに対応するスロットの番号と、の対応関係を記録した経路制御テーブル、を備えており、前記経路制御スイッチは、前記パケット中の経路制御アドレスを、前記経路制御テーブル中から検索し、見いだされた前記対応関係から送出すべき前記スロットの番号を決定し、前記決定した番号のスロットに対して、前記パケットを送出することを特徴とするコンピュータシステムである。【００２９】
（１１）また、本発明は、上記（１０）記載のコンピュータシステムにおいて、前記経路制御スイッチは、前記いずれかのスロットに前記Ｉ／Ｏデバイスが接続された場合に、前記Ｉ／ＯデバイスからそのＩ／Ｏデバイスに固有のアドレスを読み出し、前記経路制御テーブルに、前記固有のアドレスと、前記Ｉ／Ｏデバイスが接続された前記スロットの番号と、を登録し、前記経路制御スイッチは、前記固有のアドレスを、経路制御アドレスとして利用することを特徴とするコンピュータシステムである。【００３０】
この固有のアドレスは、例えば、本実施の形態においてはＭＡＣアドレス等が示されている。【００３１】
（１２）また、本発明は、上記（１０）記載のコンピュータシステムにおいて、前記経路制御テーブルに前記対応関係を記憶する方法において、前記経路制御スイッチが、前記いずれかのスロットに前記Ｉ／Ｏデバイスが接続された場合に、前記Ｉ／ＯデバイスからそのＩ／Ｏデバイスに固有のアドレスを読み出し、前記経路制御テーブルに、前記固有のアドレスと、前記Ｉ／Ｏデバイスが接続された前記スロットの番号と、を登録するステップ、を備え、前記経路制御スイッチは、前記固有のアドレスを、経路制御アドレスとして利用することを特徴とする経路制御方法である。【００３２】
これら（１１）（１２）の固有のアドレスとは、このＩ／Ｏデバイスに固有のアドレスであればどのようなアドレスでもかまわない。例えば、本実施の形態においてはＭＡＣアドレス等が例として示されている。【００３３】
（１３）また、本発明は、上記（１０）記載のコンピュータシステムにおいて、前記経路制御スイッチは、前記いずれかのスロットに前記Ｉ／Ｏデバイスが接続された場合に、前記Ｉ／Ｏデバイスに所定のアドレスを割り当て、前記経路制御テーブルに、前記割り当てたアドレスと、前記Ｉ／Ｏデバイスが接続された前記スロットの番号と、を登録し、前記経路制御スイッチは、前記割り当てたアドレスを、経路制御アドレスとして利用することを特徴とするコンピュータシステムである。【００３４】
この割り当てたアドレスとは、接続されたスロットに予め設定しておくことも好適である。【００３５】
（１４）また、本発明は、上記（１０）記載のコンピュータシステムにおいて、前記経路制御テーブルに前記対応関係を記憶する方法において、前記経路制御スイッチが、前記いずれかのスロットに前記Ｉ／Ｏデバイスが接続された場合に、前記Ｉ／Ｏデバイスに所定のアドレスを割り当て、前記経路制御テーブルに、前記割り当てたアドレスと、前記Ｉ／Ｏデバイスが接続された前記スロットの番号と、を登録するステップ、を備え、前記経路制御スイッチは、前記割り当てたアドレスを、経路制御アドレスとして利用することを特徴とする経路制御方法である。【００３６】
これら（１３）（１４）の割り当てたアドレスとは、例えば、接続されたスロットに予め設定しておくことも好適である。【００３７】
（１５）また、本発明は、上記（９）記載のコンピュータシステムにおいて用いられる前記経路制御装置において、前記コンピュータと１対１の通信方式で接続するためのコネクタと、前記Ｉ／Ｏデバイスが接続しうる複数のスロットと、前記コンピュータから前記コネクタを介して送信されてきた、前記通信方式の通信の対象であるパケット中のデータ部に格納された経路制御アドレスを取り出し、その経路制御アドレスが指し示す前記スロットに、前記パケットを送出する経路制御スイッチ、を含み、前記コンピュータが、前記通信方式の通信の対象であるパケット中のデータ部に前記経路制御アドレスを格納し、前記パケットを前記コネクタを介して前記経路制御装置に送信した場合、前記通信方式の通信の対象であるパケット中のデータ部に格納された経路制御アドレスを取り出し、その経路制御アドレスが指し示す前記スロットに、前記パケットを送出することを特徴とする経路制御装置である。【００３８】
（１６）また、本発明は、上記（１５）記載の経路制御装置において、さらに、前記経路制御アドレスと、それに対応するスロットの番号と、の対応関係を記録した経路制御テーブル、を備えており、前記経路制御スイッチは、前記パケット中の経路制御アドレスを、前記経路制御テーブル中から検索し、見いだされた前記対応関係から送出すべき前記スロットの番号を決定し、前記決定した番号のスロットに対して、前記パケットを送出することを特徴とする経路制御装置である。
【発明の効果】
【００３９】
以上述べたように、本発明によれば、１対１の通信方式、例えばＰＣＩ−Ｅｘｐｒｅｓｓを用いて、そのパケットのデータ部に経路制御アドレスを埋め込んだので、経路制御を行うことが可能となる。
【図面の簡単な説明】
【００４０】
【図１】ＰＣＩ−Ｅｘｐｒｅｓｓを用いた一般的な構成の例を示す説明図である。
【図２】ＣＰＵから、Ｉ／Ｏデバイスへのアクセスを説明する説明図である。
【図３】ＴＬＰのフォーマットの概要を示す説明図である。
【図４】ＴＬＰの中に経路制御アドレスを埋め込んだ様子を示す説明図である。
【図５】経路制御ユニット３００の構成を示す構成ブロック図である。
【図６】経路制御ユニット３００が接続されたコンピュータの構成を示す説明図である。
【図７】経路制御ユニット３００の動作例を示すフローチャートである。
【図８】ＴＬＰ中でデータ部２０４中に、経路制御アドレス２０４ａ、内部アドレス２０４ｂ等が格納されている様子を示す説明図である。
【図９】ＥｔｈｅｒＮｅｔ（登録商標）フレーム５００の一例の概要を示す説明図である。
【発明を実施するための形態】
【００４１】
以下、本発明の好ましい実施の形態を図面に基づいて説明する。
【００４２】
第１．ＰＣＩ−Ｅｘｐｒｅｓｓを用いたＩ／Ｏデバイスへのアクセス
まず、ＰＣＩ−Ｅｘｐｒｅｓｓを用いたＩ／Ｏデバイスへのアクセスの概念を説明する。図２には、ＰＣＩ−Ｅｘｐｒｅｓｓを用いたＩ／Ｏデバイスへのアクセスを説明するための説明図であり、コンピュータ内の、ＣＰＵ及びＩ／Ｏデバイス等を含む部分を模式的に描いた説明図である。
【００４３】
まず、ＣＰＵ１００は、Ｉ／ＯデバイスＡ１４０や、Ｉ／ＯデバイスＢ１４２、Ｉ／ＯデバイスＣ１４４等に対して、Ｉ／Ｏ命令によってアクセスを行う。これらＩ／Ｏ命令には、読み出しであるＩ／Ｏ  ＲＤ命令や、書き込みであるＩ／Ｏ  ＷＲ命令などがある。
【００４４】
これらの命令によって、ＣＰＵ１００はシステムバス（図２参照）を経由して、スイッチ１２０ｄを経て、Ｉ／ＯデバイスＡ１４０や、Ｉ／ＯデバイスＢ１４２、Ｉ／ＯデバイスＣ１４４等に対してデータの読み出し、書き込み等を実行する。
【００４５】
このような動作においては、どのＩ／Ｏデバイスに対してアクセスを行うかは、Ｉ／Ｏ命令のアドレスで指定を行う。このアドレスによって、スイッチ１２０ｄが、どのＩ／Ｏデバイスに対するアクセスであるかを判断して、そのＩ／Ｏ命令が意図するアドレスが指定するＩ／Ｏデバイスに対する読み書きが行われる。なお、図２中、Ｉ／ＯデバイスＡ１４０のアドレスがＡ’で表されている。同様に、Ｉ／ＯデバイスＢ１４２のアドレスがＢ’で表されており、Ｉ／ＯデバイスＣ１４４のアドレスがＣ’で表されている（図２参照）。
【００４６】
また、高速化その他の理由によって、Ｉ／ＯデバイスへのアクセスはＤＭＡによって行われることも多い（図２参照）。この場合は、メモリＤ１５０に対するアクセスも行われるが、このメモリＤ１５０に対するアクセスにおいても、上記Ｉ／Ｏ命令と同様にアドレスによってメモリの指定が行われる。なお、図２中、メモリＤ１５０のアドレスが、Ｄ’で表されている。
【００４７】
このメモリのアドレスＤ’は、Ｉ／Ｏデバイスのアドレスと基本的に同様のものである。なお、メモリ１５０へのアクセスは、メモリバスを介して行われる（図２参照）。
【００４８】
また、ＰＣＩ−Ｅｘｐｒｅｓｓは、請求の範囲の１対１の通信方式の好適な一例に相当する。
【００４９】
第２  ＰＣＩ−ＥｘｐｒｅｓｓのＴＬＰについて
次に、ＰＣＩ−Ｅｘｐｒｅｓｓで使用されるトランザクションレイヤーパレット（ＴＬＰ）について説明する。
【００５０】
送信側
ＰＣＩ−Ｅｘｐｒｅｓｓにおいては、送信側において、ソフトウェアレイヤからの要求に応じて、ＴＬＰ（Transaction Layer Packet）がトランザクションレイヤーにおいて生成される。
【００５１】
Transaction Layer Packet（TLP）のフォーマットの概要が図３に示されている。図３に示すように、ＴＬＰ本体２００は、ＴＬＰヘッダ２０２と、データ部２０４と、から構成される。これらに加えてＥＣＲＣ等が付加される場合もあるが、本文では省略する。ＴＬＰヘッダ２０２は、単にヘッダ２０２と呼ぶ場合もある。
【００５２】
データ部２０４は、「ペイロード」と称する場合も多い。データ部は、一般に２５６ｋバイトが広く用いられている。規格上は、データ部は４ｋバイト（４０９６バイト）まで広げることができるが、それをサポートしたデバイスはほとんど知られていない。一般的にはデータ部は２５６バイトの場合が多い。
【００５３】
トランザクションレイヤーにおけるこのＴＬＰ本体２００は、送信側においては、データリンク層に渡される。データリンクレイヤーにおいては、シーケンスナンバー２０６と、ＬＣＲＣ２０８とが付加される。これによって、データリンク層パケット２１０が形成される（図３参照）。このデータリンク層パケット２１０は、データリンクレイヤーから、物理層に渡される。
【００５４】
さらに、このデータリンク層パケット２１０は、物理層において、スタートフレーム２１４と、エンドフレーム２１６と、が付加されて、物理層パケット２０８が構成される。
【００５５】
すでに述べたように、ＰＣＩ−Ｅｘｐｒｅｓｓは１対１の通信であるので、経路制御という概念はないので、上記ＴＬＰ中にもアドレスまたはそれに類するデータは存在しない。
【００５６】
そのため、通常は、コンピュータのＩ／Ｏ命令中のアドレスに基づき、スイッチ１２０等のハードウェアが上記ＴＬＰを所定のアドレスに対して送出するという動作を実行する。
【００５７】
本発明は、このような経路制御を持っていないＰＣＩ−Ｅｘｐｒｅｓｓに経路制御の機能を付与して、より広範囲にＴＬＰの送出を行えるようにしたものである。その詳細な仕組みは後に詳述する。
【００５８】
受信側
受信側においては、物理層においては、スタートフレーム２１４、エンドフレーム２１６を除いたデータリンク層パケット２１０が生成されて、データリンク層に送られる。物理層から、上記送られてきたデータ（データリンク層パケット２１０）を受け取ったデータリンクレイヤーは、シーケンスナンバー２０６とＬＣＲＣ２０８の確認を行うとともに、これらを除いたＴＬＰ本体２００を、トランザクションレイヤーに渡す。
【００５９】
また、受信側のトランザクションレイヤーは、データリンクレイヤーから受け取ったデータ（ＴＬＰ本体２００）を解析して、コマンドタイプに応じてデータを抽出し、ソフトウェアレイヤに渡すのである。  
なお、ＴＬＰヘッダ２０２内にコマンドタイプ等が格納されている。
【００６０】
第３．実施の形態１：データ部（ペイロード）への経路制御アドレスの導入（本発明の原理）
さて、従来技術で説明したように、ＰＣＩ−Ｅｘｐｒｅｓｓには経路制御機能がそのままでは備えられてはいない。
【００６１】
（１）データ部分への経路制御アドレスの導入
そこで、本実施の形態１では、ＰＣＩ−Ｅｘｐｒｅｓｓのパケット（ＴＬＰ）中のデータ部２０４（ペイロード）（図２参照）中に、新しく経路制御アドレスを導入し、このアドレスで、経路制御を行おうとしている。この点が、本発明及び本実施の形態において特徴的な事項であり、この仕組みによってＰＣＩ−Ｅｘｐｒｅｓｓに経路制御を導入する事ができたものである。
【００６２】
このように、データ部２０４（ペイロード）中に新たに経路制御アドレスを導入したため、既存のＴＬＰ等のＰＣＩ−Ｅｘｐｒｅｓｓの枠組みは何ら変更せずに、経路制御技術を導入することができたものである。
【００６３】
この様子が図４に示されている。図４は、本実施の形態で採用するＴＬＰ２００の様子を示す説明図である。この図に示すように、データ部（ペイロード）２０４中に経路制御アドレス２０４ａを挿入している。この点が、本実施の形態において特徴的なことであり、このデータ部に経路制御アドレス２０４ａを挿入したことにより、経路制御が可能になったものである。
【００６４】
（２）経路制御アドレスの位置・長さ
図４では、データ部２０４の先頭に経路制御アドレスを配置したが、どこに配置しても構わないので、利用するデータのフォーマットに合わせて妥当な位置に配置すればよい。また、データ部２０４の最後に配置してもよい。
【００６５】
また、経路制御アドレスの長さは、アプリケーションに合わせて種々の値を採用することができる。近年のコンピュータアーキテクチャーでは、３２ビットや６４ビットのシステムが多いので、これらと合わせて、３２ビット長や６４ビット長の経路制御アドレスを採用することも好適であるが、特にシステムのビット長とは独立に、他の長さのビット長を採用しても好適である。
【００６６】
第４．実施の形態１：ソフトウェア（プログラム）
ソフトウェア（以下、プログラムとも称する）の上からは、いわゆるＩ／Ｏ命令によって、Ｉ／Ｏデバイスとの入出力が行われる。従来は、Ｉ／Ｏ命令中のアドレスによって、Ｉ／Ｏデバイスを指定していた。実際には、その際、いわゆるデバイスリストが参照されて、所望のアドレスが得られている場合も多い。
【００６７】
（１）経路制御アドレスの利用
一方、本実施の形態１では、ＴＬＰ２００中のデータ部２０４の中に、経路制御アドレス２０４ａを挿入した。このように、Ｉ／Ｏ命令中のデータ部に、所望の相手先のアドレスを挿入することによって、Ｉ／Ｏデバイスを指定することが可能になる。よって、命令のいわゆるデータ部分（オペランドと呼ぶことも多い）でＩ／Ｏデバイスのアドレスを指定できるので、容易にＩ／Ｏデバイスを指定することが可能である。
【００６８】
（２）ＸＸＸ＠ＹＹＹ方式による表現
また、特に本実施の形態１では、プログラム上での、Ｉ／Ｏアドレスの新しい表現として、ＸＸＸ＠ＹＹＹと表現をすることを提案する。
【００６９】
（２ａ）ここで、ＹＹＹは、従来のＩ／Ｏアドレスであるが、多くのコンピュータのアーキテクチャー上メモリアドレスと区別されておらず、Ｉ／Ｏアドレスとメモリアドレスとは実質的に同一のものである。近年のコンピュータのアーキテクチャーでは３２ビット又は６４ビットのシステムが多いので、このＹＹＹも、多くの場合、３２ビット又は６４ビットで表現される。ＹＹＹは、そのコンピュータにおける経路制御ユニットのアドレスである。
【００７０】
（２ｂ）また、上記ＸＸＸは、本実施の形態１で提案する経路制御アドレスである。上述したように、この経路制御アドレス２０４ａは、任意のビット長で構成することができる。どのようなビット長、どのような構成とするかは、利用するアプリケーションによって異なる。例えば、８バイト長の６４ビットで構成することも好適であるし、６バイト長（４８ビット）でも、４バイト長（３２ビット）でもよい。これは、システム毎に決定しておけばよいし、また、利用するアプリケーション毎に定めることも好適である。
【００７１】
（２ｃ）後述するように、このような記法を用いたプログラムが、請求の範囲に記載されている。このような記法を用いれば、よりわかりやすくプログラムを作成することができ、また、プログラムを読み取りやすくなるという効果がある。また、このような記法を用いたプログラムを格納した記憶媒体が、請求の範囲に記載されている。このような記法を用いたプログラムを格納した記憶媒体によれば、所定のコンピュータに上記プログラムを供給することができ、コンピュータに上述した経路制御を行わせることが可能である。
【００７２】
第５  経路制御ユニット
このように、本実施の形態１では、（ａ）ソフトウェア上で、データ部２０４の一部を経路制御アドレスとして利用すること。（ｂ）Ｉ／Ｏデバイスのアドレスの表現方法として、ＸＸＸ＠ＹＹＹ方式の表現手法を採用すること。等を説明してきた。
【００７３】
以下、これらを用いて経路制御を行う機器である経路制御ユニットを説明する。
【００７４】
なお、経路制御ユニット３００は、請求の範囲の経路制御装置の好適な一例に相当する。また、この経路制御ユニット３００は、基本的に、コンピュータ（ＣＰＵ１００等）と、Ｉ／Ｏデバイスとの間に接続する構成である（後述する図６等参照）。
【００７５】
（１）経路制御ユニット
図５には、本実施の形態１における経路制御を行う経路制御ユニット３００の構成を示す構成ブロック図が示されている。この図に示すように、経路制御ユニット３００は、ＰＣＩ−Ｅｘｐｒｅｓｓの信号を入力するＰＣＩ−Ｅｘｐｒｅｓｓコネクタ３０２を備えており、外部からＰＣＩ−Ｅｘｐｒｅｓｓの信号（図３参照）を入力する。
【００７６】
上述したように、経路制御ユニット３００は、基本的に、コンピュータ（ＣＰＵ１００等）に接続する装置である。すなわち、経路制御ユニット３００は、コンピュータから、このＰＣＩ−Ｅｘｐｒｅｓｓコネクタ３０２を介して、ＰＣＩ-Ｅｘｐｒｅｓｓのパケット（ＴＬＰ）を受信する。
【００７７】
（２）経路制御スイッチ
経路制御ユニット３００中の経路制御スイッチ３０４は、入力したＰＣＩ−Ｅｘｐｒｅｓｓの信号を、一度、バッファメモリ３０６に蓄積する。続いて、経路制御スイッチ３０４は、一度バッファメモリに蓄積したＰＣＩ−Ｅｘｐｒｅｓｓの信号、すなわちＴＬＰ中のデータ部２０４中の経路制御アドレス２０４ａを取り出す。そして、その経路制御アドレス２０４ａが指し示すＰＣＩ−Ｅｘｐｒｅｓｓスロット３０８（ａ〜ｄのいずれか）にＴＬＰ（図３参照）を送出する。図４に示すように、経路制御ユニット３００には、外部のＩ／Ｏデバイスが接続されるＰＣＩ−Ｅｘｐｒｅｓｓスロット３０８ａ、３０８ｂ、３０８ｃ、３０８ｄが備えられている。それぞれ、所定のＩ／Ｏデバイスが接続される。
【００７８】
経路制御アドレス２０４ａと、それに対応するＰＣＩ−Ｅｘｐｒｅｓｓスロット３０８（ａ〜ｄ）との対応関係は、予め定めておくこと好ましいし、予め経路制御テーブル３１０ａとして、メモリ３１０上に格納しておくことが好ましい。
【００７９】
（３）経路制御テーブル
経路制御テーブル３１０ａは、経路制御アドレス２０４ａと、それに対応するＰＣＩ−Ｅｘｐｒｅｓｓスロット３０８（ａ〜ｄ）との対応関係を示しているが、その内容は、第１に、予め定めておき登録しておくことが考えられる。このようなデータは、コンピュータ（ＣＰＵ）が、経路制御ユニット３００にそのデータを送信し、このデータを受けた経路制御スイッチ３０４ａが、その内容を経路制御テーブル３１０ａに格納することによって実現される。
【００８０】
（３ａ）
または、所定のＩ／Ｏデバイスが所定のＰＣＩ−Ｅｘｐｒｅｓｓスロットに接続された場合に、経路制御スイッチ３０４が、そのスロットに接続されたＩ／Ｏデバイスの固有のアドレスを読み取って、その固有のアドレスと、そのＩ／Ｏデバイスが接続されたＰＣＩ−Ｅｘｐｒｅｓｓスロットの（番号の）組を、経路制御テーブル３１０ａに格納することも好ましい。
【００８１】
接続された場合に、速やかに上記のような登録を行わせることも好適であるし、また、Ｉ／Ｏデバイスが接続された後、コンピュータを再起動させることによって、登録することも好ましい。再起動させれば、デバイスリストの作成プロセスにおいて、その動作の一環として、経路制御テーブル３１０ａの内容の登録を行わせることが好適である。
【００８２】
（３ｂ）
このように、Ｉ／Ｏデバイスの固有のアドレスがある場合は、その固有のアドレスを経路制御アドレスとして用いるのが好適であり、上述したＸＸＸ＠ＹＹＹにおけるＸＸＸに相当する。
【００８３】
この場合、ＹＹＹは、経路制御ユニット３００のアドレスであり、このアドレスは、経路制御ユニット３００が接続しているコンピュータ内部のアドレス（Ｉ／Ｏアドレスであり、メモリアドレスでもある）である。そのコンピュータのＣＰＵ１００からは、このアドレスＹＹＹでアクセスされるのである。
【００８４】
なお、Ｉ／Ｏデバイスの固有のアドレスは一般的には、所定のコマンドで読み出せる場合が多く、経路制御スイッチ３０４が読み出すことになる。Ｉ／Ｏデバイスによってはセキュリティの観点から、利用者が（説明書からアドレスを読み取って）手作業で入力しなければならない場合もあるが、いずれにしてもその固有のアドレスは、経路制御テーブル３１０ａに格納される。
【００８５】
（３ｃ）
上では、Ｉ／Ｏデバイスの固有のアドレスを経路制御アドレスとして使用する例を説明したが、固有のアドレスが存在しない機器の場合は、コンピュータ側が自動的にアドレスを割り振ることも好適である。
【００８６】
この場合、（３ｃ−１）コンピュータ上で「動的」にアドレスを割り当てる手法も好適であるし、又は、（３ｃ−２）ＰＣＩ−Ｅｘｐｒｅｓｓスロットに固有の「固定」アドレスを予め定めてしまうことも好適である。固定のアドレスとは、例えば図５で言えば、ＰＣＩ−Ｅｘｐｒｅｓｓスロット３０８ａのアドレスはＡＸＸであり、ＰＣＩ−Ｅｘｐｒｅｓｓスロット３０８ｂのアドレスはＢＸＸである・・・のように定めておくのである。
【００８７】
このような「動的」又は「固定」のアドレスの割り当ては、そのＩ／Ｏデバイスが固有のアドレスを有している場合でも行ってもよい。すなわち、そのＩ／Ｏデバイスの固有のアドレスではなく、新たに「動的」又は「固定」で割り当てたアドレスを用いたい場合もあるからである。
【００８８】
（３ｄ）
なお、経路制御テーブル３１０ａが格納されているメモリ３１０は、バッファメモリ３０６と別体に描かれているが（図５参照）、ハードウェア的には、同一のメモリ装置上に形成されていても良い。
【００８９】
第６．全体の構成
（１）構成とアドレス及びそのアドレスの表記
図５で示した経路制御ユニット３００が、一般的なコンピュータに接続された場合の構成図が図６に示されている。図６に示すように、経路制御ユニット３００を介して、Ｉ／ＯデバイスＥ４００、Ｉ／ＯデバイスＦ４０２、Ｉ／ＯデバイスＧ４０４、Ｉ／ＯデバイスＨ４０６、が接続されている例が示されている。図６において、経路制御ユニット３００の内部構成は略して描かれているが、その内部構成は、図５と同様である。
【００９０】
図６で示すコンピュータは、図１と同様に、ＣＰＵ１００を中心に、このＣＰＵ１００にメモリバスを介してメモリ１５０が接続されている。さらに、ＣＰＵ１００には、ＲＣ（ルートコンプレックス）１１０を経て、スイッチ１２０ｅが接続されている。そして、スイッチ１２０ｅには、エンドポイント１３０ｃ等とともに、経路制御ユニット３００が接続されている。経路制御ユニット３００には、４個のＰＣＩ−Ｅｘｐｒｅｓｓスロット３０８ａ、３０８ｂ、３０８ｃ、３０８ｄが備えられており（図５、図６参照）、その各スロットに、Ｉ／ＯデバイスＥ４００、Ｉ／ＯデバイスＦ４０２、Ｉ／ＯデバイスＧ４０４、Ｉ／ＯデバイスＨ４０６、がそれぞれ接続されている。そして、Ｉ／ＯデバイスＥ４００、Ｉ／ＯデバイスＦ４０２、Ｉ／ＯデバイスＧ４０４、Ｉ／ＯデバイスＨ４０６、のそれぞれの経路制御アドレスは、それぞれ「ＥＥＥ」「ＦＦＦ」「ＧＧＧ」「ＨＨＨ」である（図６参照）。
【００９１】
さて、ＣＰＵ１００から、Ｉ／Ｏ命令によって、エンドポイント１３０ｃ等にアクセスする時は、そのＩ／Ｏ命令中のアドレス（Ｉ／Ｏアドレス）によって、アクセス先が指定される。すでに述べたように、メモリのアクセスの場合も、同様にアドレスでメモリアドレスが指定される。
【００９２】
一方、ＣＰＵ１００から、Ｉ／ＯデバイスＥ４００に対してアクセスを行う場合は、その経路制御アドレスをデータ部分に含めたＩ／Ｏ命令を実行する。そして、このＩ／Ｏ命令で示されるアドレス（Ｉ／Ｏアドレス）は、経路制御ユニット３００のアドレスである。
【００９３】
例えば、Ｉ／ＯデバイスＥ４００にアクセスする際の、そのＩ／ＯデバイスＥ４００のアドレスは、プログラム的には、
ＥＥＥ＠ＹＹＹ
と表現することが好ましい。ここで、ＥＥＥは、Ｉ／ＯデバイスＥ４００の経路制御アドレスであり、「ＹＹＹ」は、経路制御ユニット３００のアドレスであり、このコンピュータの内部のアドレスである（３２ビット又は６４ビット）。
【００９４】
したがって、本実施の形態では、このような「ＥＥＥ＠ＹＹＹ」型の記法で、Ｉ／Ｏデバイスを指定することを特徴とするプログラムを提案するものである。また、このプログラムを格納した記憶媒体、例えば、ＤＶＤ−ＲＯＭやハードディスク、各種半導体メモリ（ＵＳＢメモリ、メモリカード、ＩＣカード）等を提案するものである。これらのプログラムを用いることによって、プログラムの記述が容易となり、また、どのＩ／Ｏデバイスを指定しているのかの明確な表現となるので、プログラムを読み取りやすくなると言う効果がある。また、このプログラムを格納した各種記憶媒体を用いれば、所定のコンピュータにおいて、ＰＣＩ−Ｅｘｐｒｅｓｓを用いつつ、経路制御を行わせることが可能となる。
【００９５】
ＣＰＵが実行するＩ／Ｏ命令上で指定されるアドレス（Ｉ／Ｏアドレス）が、この「ＹＹＹ」である。この結果、ＴＬＰ等は、アドレス「ＹＹＹ」で指定された経路制御ユニット３００に対して送信される。「ＹＹＹ」は、上述したように経路制御ユニット３００のアドレスである。
【００９６】
一方、「ＥＥＥ」は、ＰＣＩ−ＥｘｐｒｅｓｓのＴＬＰ上のデータ部の中に格納されている。すなわち、上述した図４における経路制御アドレス２０４ａがこの「ＥＥＥ」となるのである。
【００９７】
（２）動作の例
経路制御ユニット
経路制御ユニット３００の動作の例を図７のフローチャートに基づき、説明する。このフローチャートでは、概ね、経路制御テーブル３１０ａの内容の更新から、経路制御ユニット３００がＴＬＰを受信した後の動作に至るまで、その他の動作を説明する。
【００９８】
（ステップ１）（図７のステップＳ７−１）
まず、経路制御ユニット３００に対して、新規に（例えば）Ｉ／ＯデバイスＥ４００が接続されると、経路制御スイッチ３０４はこれを検出して、Ｉ／ＯデバイスＥ４００に対して、保持している固有のアドレスを尋ねる（問いあわせ）。
【００９９】
Ｉ／ＯデバイスＥ４００は、この問いあわせに対して、自分が保持している固有アドレス「ＥＥＥ」を返信する。
【０１００】
（ステップ２）（図７のステップＳ７−２）
経路制御スイッチ３０４は、返信されてきた固有アドレスを、経路制御アドレスとして利用するために、ＰＣＩ−Ｅｘｐｒｅｓｓスロット３０８ａと、この固有アドレス「ＥＥＥ」との組を、経路制御テーブル３１０ａに格納する。
【０１０１】
この結果、経路制御テーブル３１０ａには、固有アドレス「ＥＥＥ」とＰＣＩ−Ｅｘｐｒｅｓｓスロット３０８ａの組がエントリーとして入力・登録される。
【０１０２】
Ｉ／ＯデバイスＦ４０２や、Ｉ／ＯデバイスＧ４０４、Ｉ／ＯデバイスＨ４０６、等に関しても同様に、その固有アドレスが、経路制御テーブル３１０ａに登録・格納される。
【０１０３】
（ステップ３）（図７のステップＳ７−３）
次に、所定のＴＬＰが、スイッチ１２０ｅ（図６参照）から、経路制御ユニット３００に送信されてきた場合、ＰＣＩ−Ｅｘｐｒｅｓｓコネクタ３０２を通じて、上記ＴＬＰを受信した経路制御スイッチ３０４（図５参照）は、そのＴＬＰを一旦バッファメモリ３０６に格納する。
【０１０４】
ここでは、このＴＬＰ中の経路制御アドレス２０４ａは上述したように、「ＥＥＥ」であるとして説明を行う。
【０１０５】
（ステップ４）（図７のステップＳ７−４）
次に、経路制御スイッチ３０４は、バッファメモリ３０６内に格納している上記ＴＬＰ中のデータ部２０４の経路制御アドレス２０４ａ（すなわち、「ＥＥＥ」）を取り出し、メモリ中の経路制御テーブル３１０ａからこの経路制御アドレスを探索する。
【０１０６】
探索の結果、経路制御テーブル３１０ａ中から、「ＥＥＥ」を見つけ出し、そのエントリーから、対応するＰＣＩ−Ｅｘｐｒｅｓｓスロット３０８ａが見つけて、そのＴＬＰを送出すべきＰＣＩ−Ｅｘｐｒｅｓｓスロットを知ることができる。
【０１０７】
（ステップ５）（図７のステップＳ７−５）
次に、経路制御スイッチ３０４は、上記知ることができた送出先、すなわちＰＣＩ−Ｅｘｐｒｅｓｓスロット３０８ａに対して、バッファメモリ３０６から取り出した上記ＴＬＰを送出する。
【０１０８】
（ステップ６）（図７のステップＳ７−６）
次に、ＰＣＩ−Ｅｘｐｒｅｓｓスロット３０８ａに接続しているＩ／ＯデバイスＥ４００は、送出されてきたＴＬＰを受信することによって、ＣＰＵ１００からのＩ／Ｏ命令を受信することができる。このような動作の結果、所望のＩ／ＯデバイスＥ４００に対して、ＣＰＵ１００は、Ｉ／Ｏ命令を発することができたのである。
【０１０９】
以上のようにして、本実施の形態では、データ部２０４中に経路制御アドレス２０４ａを格納したので、経路制御の機能を有しない通信規格においても、経路制御を実現することが可能になったものである。
【０１１０】
なお、図７のフローチャートの例では、ＰＣＩ−Ｅｘｐｒｅｓｓスロット３０８ａに接続されたＩ／ＯデバイスＥ４００を例にして説明したが、他のスロットに接続されている他のＩ／ＯデバイスＦ４０２等でも同様である。
【０１１１】
（３）経路制御アドレス２０４ａとＰＣＩ−Ｅｘｐｒｅｓｓスロット３０８
上記の例では、経路制御アドレス２０４ａ（例えば「ＥＥＥ」）と、ＰＣＩ−Ｅｘｐｒｅｓｓスロット３０８ａとが１対１に対応する場合を説明したが、実際には、１個のデバイスが複数のＩ／Ｏデバイスを兼ねる場合も多く、複数の経路制御アドレス２０４ａが、１個のＰＣＩ−Ｅｘｐｒｅｓｓスロット３０８に割り当てられる場合も多い。
【０１１２】
例えば、経路制御アドレス２０４ａ「ＦＦＦ」「ＧＧＧ」がともに、ＰＣＩ−Ｅｘｐｒｅｓｓスロット３０８ｂに割り当てられることも考えられる。この場合、経路制御テーブル３１０ａには、
ＦＦＦ    ＰＣＩ−Ｅｘｐｒｅｓｓスロット３０８ｂ
ＧＧＧ    ＰＣＩ−Ｅｘｐｒｅｓｓスロット３０８ｂ
という２個のエントリーが登録される。その結果、経路制御アドレス２０４ａが「ＦＦＦ」のＴＬＰも、経路制御アドレス２０４ａが「ＧＧＧ」のＴＬＰも、ともにＰＣＩ−Ｅｘｐｒｅｓｓスロット３０８ｂに送出されることになる。
【０１１３】
第７．実施の形態２：Ｉ／Ｏデバイスとしての電子機器の利用
（１）これまで、Ｉ／ＯデバイスＥ４００のように表現してきたが、Ｉ／Ｏデバイスにも種々の装置が存在する。キーボードやマウス、ディスプレイ等の他に、ハードディスクや、手書きタブレットや、ジョイスティック等もある。
【０１１４】
また、各種の測定機器がＩ／Ｏデバイスとして知られている。
【０１１５】
近年では、Ｉ／Ｏデバイスも非常に高機能化しており、各種の測定を自動で行って、結果をコンピュータに送ってくるＩ／Ｏデバイスもある。また、モーションディテクタ機能を備えたカメラであって、動くものを検知した場合にその画像をコンピュータに送ってくるカメラも存在する。
【０１１６】
これらの例を挙げるまでもなく、近年の高機能なインテリジェント機能を備えたＩ／Ｏデバイスは、その中身的には、１台のコンピュータである場合も多い。
【０１１７】
そこで、Ｉ／Ｏデバイスではなく、１台の電子機器（1台のコンピュータ）とみなして、その電子機器との通信を行っているととらえることも好適である。
【０１１８】
（２）外部の電子機器へ接続するための経路制御ユニット３００
このように、そのコンピュータのＩ／Ｏデバイスではなく、むしろ外部の電子機器への接続と考えて、上述した経路制御ユニット３００を、外部の電子機器への経路制御ユニットとしてとらえることも可能であり、好適である。
【０１１９】
なお、ここで、外部の電子機器とは、ＣＰＵを含むコンピュータであることを前提としており、その外部の電子機器中にも所定のアドレスによって配置されたＩ／Ｏデバイス、メモリが存在することを前提として説明を行う。
【０１２０】
このような場合でも、ＣＰＵ１００からＩ／Ｏ命令によってその外部の電子機器へのアクセスを行うので、プログラム的には、Ｉ／Ｏデバイス（又はメモリ）として見えている。
【０１２１】
（３）外部の電子機器が存在する場合のアドレスの記法（統合的なアドレス記法）
ただし、外部の電子機器へのアクセスの場合を含めてアドレスを記す場合は、その外部の電子機器の内部のアドレスを考慮したアドレス記法が好適である。
【０１２２】
そこで、下記のようなアドレス記法を提案する。
【０１２３】
ＸＸＸ＠ＺＺＺ
ここで、ＺＺＺは、本実施の形態２における、経路制御アドレスである。実施の形態１とは表記が異なるので、留意されたい。
本実施の形態２の経路制御アドレスは、電子機器を示すものであり、例えば外部の電子機器の固有のアドレス等を用いることが一例として好ましい。さらに、ＣＰＵ１００が含まれる自分のコンピュータに関しても、上記のような固有のアドレスを備えさせ、外部の電子機器と同様に経路制御アドレスとして利用することが好適である。
【０１２４】
すなわち、このＺＺＺで、自分のコンピュータか、外部の電子機器か、を表現することが好適である。実施の形態２の経路制御アドレスは、実施の形態１の経路制御アドレスとは、物理的なデータとしては同様であるが、その使用目的が多少異なる点に留意されたい。
【０１２５】
ＺＺＺの値によって、例えば以下のように表現がなされる。
【０１２６】
０００  ・・・  自分のコンピュータ（ＣＰＵ１００を含む）
１１１  ・・・  第１の外部の電子機器
２２２  ・・・  第２の外部の電子機器
３３３  ・・・  第３の外部の電子機器
一方、ＸＸＸは、その経路制御アドレスで表される相手先（又は自分のコンピュータ）の内部のアドレスであり、いわゆるメモリアドレスと称してもよい。
【０１２７】
したがって、上述したＸＸＸ＠ＺＺＺ方式のアドレスの記法によって、どの電子機器中のどのアドレスかを、示すことができ、複数の電子機器の制御を容易に行うことが可能である。つまり、
ＺＺＺ・・・どの電子機器か（経路制御アドレス）。  
【０１２８】
ＸＸＸ・・・その電子機器中の内部アドレス。
【０１２９】
を用いて、ＸＸＸ＠ＺＺＺと表記することによって、複数の電子機器（自分のコンピュータを含む）中の種々のアドレスに容易にアクセスすることができるのである。
【０１３０】
特に、このような表記をした場合、その表記によって、外部の電子機器か、自分のコンピュータであるか、を明示的に表記・認識することができるので便利である。
【０１３１】
例えば、上記ＸＸＸは、上述したようにその電子機器に対して付されたコンピュータの内部のアドレス（３２ビット、６４ビットなど）である。そして、所定のアドレス「ＺＺＺ（＝１２３）」が経路制御ユニット３００を表しており、その電子機器の中のアドレスが「ＸＸＸ（＝４５６）」で表される。したがって、例えばこのＸＸＸ（＝４５６）によって、アクセスしたい電子機器中の所定のレジスタ等を指定することが可能である。  
一方、「０００」以外のＺＺＺは、外部の電子機器を表す。従って、
ＸＸＸ＠ＺＺＺ
というアドレス表記によって、そのコンピュータ内部の通常のＩ／Ｏデバイスか、外部の電子機器か、を明確に表現することが可能であり、便利である。
【０１３２】
また、そのＸＸＸ、すなわち、その電子機器（または自分のコンピュータ（ＺＺＺ＝０００の場合）を含む）中の内部アドレスは、ＴＬＰ中でデータ部２０４中に、経路制御アドレス２０４ａとは別に、内部アドレス２０４ｂとして格納しておくことが好適である。この様子が図８に示されている。このＸＸＸ、すなわち内部アドレス２０４ｂは、ＴＬＰ中でデータ部２０４中に、経路制御アドレス２０４ａの一部として定義することも好適である。
なお、図８では、経路制御アドレス２０４ａを先に、内部アドレス２０４ｂを後に記述しているが、順番は特段の意味を持っていない。すなわち、内部アドレス２０４ｂ、経路制御アドレス２０４ａ、の順で記録されていてもよい。また、これらの格納位置は、データ部２０４中のどの位置でもかまわない。
【０１３３】
このような記法を用いたプログラムによれば、どの電子機器のどのアドレスに対して送信するのかを、明瞭に表現することができ、プログラムを作成しやすくなる。また、このようなプログラムを格納した記憶媒体によれば、この記憶媒体中のプログラムによってコンピュータを、上記経路制御を行わせることが可能となる。記憶媒体としては、ＤＶＤ等各種光学ディスクや、ＵＳＢメモリその他の各種半導体メモリ、ハードディスク等を利用することが可能である。
【０１３４】
（４）なお、上述した例では、ＺＺＺは、接続する他の電子機器を表すが、自分自身のコンピュータ（ＺＺＺ＝０００の場合）を示すように構成することもできる。この場合は、ＺＺＺは、自分自身も含めて、どの電子機器であるのかを示す。また、ＺＺＺは、その電子機器に固有のアドレスを使用することもできるし、また、別途割り当てることも可能である。
例えば、その電子機器の固有のアドレスをそのまま用いた場合、
ＺＺＺ＝１２３  ・・・  自分自身のコンピュータ
ＺＺＺ＝１ＡＢ  ・・・  第１の外部の電子機器
ＺＺＺ＝Ｄ４Ｆ  ・・・  第２の外部の電子機器
ＺＺＺ＝３ＦＦ  ・・・  第３の外部の電子機器
のように、設定することも好適である。
（５）第７：実施の形態２のまとめ
以上述べたように、本実施の形態２では、Ｉ／Ｏデバイスが、他の電子機器であった場合、その他の電子機器の内部アドレスまでアクセスすることができる技術を説明・提案した。
【０１３５】
第８．種々の経路制御アドレス
上述したように、経路制御アドレス２０４ａとしては、種々の長さのアドレスを利用することができる。
【０１３６】
（１）ＭＡＣアドレス
例えば、経路制御アドレスとして、ＯＳＩ参照モデル第２層、データリンク層のＭｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌのアドレスを用いることも好適である。このアドレス、すなわち  「Ｍ」ｅｄｉａ  「Ａ」ｃｃｅｓｓ  「Ｃ」ｏｎｔｒｏｌ  Ａｄｄｒｅｓｓは、一般的に、その頭文字をとり、「ＭＡＣ」アドレスと呼ばれることも多い。
【０１３７】
このＭＡＣアドレスは、Ｗｉｎｄｏｗｓ（登録商標）上では、Ｐｈｙｓｉｃａｌ  Ａｄｄｒｅｓｓ、物理アドレスとして表記されることがある。また、しばしばＮｏｄｅＩＤ（ノードＩＤ）と称されることもある。
【０１３８】
また、これらＭＡＣアドレスは、電子機器に固有のアドレスとして付されている場合が多いので、これらＭＡＣアドレスを経路制御アドレスとして利用する価値は大きいと考えられる。
【０１３９】
すなわち、これまで、経路制御アドレスとして、そのＩ／Ｏデバイスに固有のアドレスを例として説明したが、その固有のアドレスの好ましい一例としてＭＡＣアドレスを用いることが好ましい。
【０１４０】
また例えばＥｔｈｅｒＮｅｔが使用するＭＡＣアドレスは、ＥＵＩ−４８（４８ビット）というフォーマットを採用しており、しばしばオクテット表記（０４−Ａ３−４３−５Ｆ−４３−２３等）で表現されうる。
【０１４１】
（２）ＥｔｈｅｒＮｅｔ（登録商標）フレームの利用
経路制御アドレスとして、ＭＡＣアドレスを用いる場合、データ部にＥｔｈｅｒＮｅｔ（登録商標）フレームを埋め込んでしまうことも好適である。ＥｔｈｅｒＮｅｔ（登録商標）フレームはＭＡＣアドレスを含んでいるからである。
【０１４２】
図９は、ＥｔｈｅｒＮｅｔフレーム５００の一例の概要を示す説明図である。この図に示す例によれば、ＥｔｈｅｒＮｅｔにおいては、宛先アドレス５０２と、送信元アドレス５０４と、が含まれており、これらはいわゆるＭＡＣアドレス（その機器固有の物理アドレス４８ビット）である。これらアドレスと、タイプ５０６と、を合わせて  イーサネットヘッダ部（１４ビット）が構成される。なお、タイプ５０６フィールドは、ＶＬＡＮとして用いられることも多い。
【０１４３】
イーサネットフレーム５００は、さらに、データ部（４６〜１５００バイト）２０８と、ＣＲＣ２１０と、から構成されている。しかし、イーサネットフレーム５００としては、構成の種類によっては８０００バイト程度までの大きなフレームが用いられることも近年は多い。
【０１４４】
イーサネットフレーム５００には、通常は上述したように２種のＭＡＣアドレスが含まれているので、これらを、図８のように、経路制御アドレス２０４ａ、内部アドレス２０４ｂのように用いることも好適である。
【０１４５】
（３）
上では、ＥｔｈｅｒＮｅｔフレーム５００の利用について説明したが、アドレスを含むような他のフレームや「パケット」を利用することも好適である。
【０１４６】
第９．呼称・表記について
ＰＣＩ−Ｅｘｐｒｅｓｓの接続口は、よく知られているようにコンピュータの筐体内部のマザーボード上の「内部スロット」として表現・表記されることが多い。また意味合いから「拡張スロット」「拡張バス」と呼ばれることもある。
【０１４７】
第１０．まとめ・変形例・その他
（１）これまで述べた例では、経路制御アドレスをデータ部に挿入することによって、経路制御のないＰＣＩ−Ｅｘｐｒｅｓｓに経路制御を導入する仕組みを提案してきた。
【０１４８】
主にＰＣＩ−Ｅｘｐｒｅｓｓについて説明したが、経路制御機能を備えていないインターフェース、Ｐ−Ｐ（Point-to-Point)のインターフェース、通信手段であってデータ部を備えたフレームやパケットを利用するものであれば、どのような通信手段・インターフェースでも応用することができる発明である。請求の範囲では、「パケット」と称しているが、いわゆるフレームその他の通信データの単一の固まりであれば、本件発明の「パケット」の好適な一例に相当し、本件発明を適用することが可能である。
【０１４９】
例えば、ＲＳ−２３２ｃ等にも利用可能である。また、例えば、経路制御機能を備えていない各種の通信規格や記号等にも利用することが可能である。例えば、移動体通信や、ＮＦＣ等の各種通信規格に用いることも好適である。
【０１５０】
（２）また、上述した実施例では、自分のコンピュータに接続するＩ／Ｏデバイスが、さらに内部アドレスを有する場合に、そのＩ／Ｏデバイスの内部アドレスも指定してアクセスする仕組みについても言及した。
【０１５１】
例えば、そのＩ／Ｏデバイスが実質的には他のコンピュータである場合等が該当する。この仕組みを用いれば、そのＩ／Ｏデバイス（他のコンピュータ）にさらにＩ／Ｏデバイスが接続している場合に、その「他のコンピュータ」であるＩ／Ｏデバイスに接続しているＩ／Ｏデバイスにアクセスすることが可能となる。
【０１５２】
（２ｂ）多段接続
さらに、「他のコンピュータに接続しているＩ／Ｏデバイスが実質的にコンピュータであり、内部アドレスを有している場合は、さらに、「他のコンピュータに接続しているＩ／Ｏデバイス（コンピュータ）に接続するＩ／Ｏデバイス」に接続することも可能である。
【０１５３】
ただし、この場合は、経路制御アドレス２０４ａの他にさらにアドレスを２個備える必要があろう。それらのアドレスもデータ部２０４に格納しておくことが必要である。
【０１５４】
このように、いわゆる多段の接続は可能であるが、その分、さらにアドレスが必要となる。
【符号の説明】
【０１５５】
１００  ＣＰＵ
１１０  ルートコンプレックス
１２０ａ、１２０ｂ、１２０ｃ  スイッチ
１３０ａ、１３０ｂ  エンドポイント
１３４  エンドポイント
１３６  ブリッジ
１４０  Ｉ／ＯデバイスＡ
１４２  Ｉ／ＯデバイスＢ
１４４  Ｉ／ＯデバイスＣ
２００  ＴＬＰ本体
２０２  ＴＬＰヘッダ
２０４  データ部（ペイロード）
２０６  シーケンスナンバー
２０８  ＬＣＲＣ
２１０  データリンク層パケット
２１４  スタートフレーム
２１６  エンドフレーム
２１８  物理層パケット
３００  経路制御ユニット
３０２  ＰＣＩ−Ｅｘｐｒｅｓｓコネクタ
３０４  経路制御スイッチ
３０６  バッファメモリ
３０８ａ、３０８ｂ、３０８ｃ、３０８ｄ  ＰＣＩ−Ｅｘｐｒｅｓｓスロット  
３１０  メモリ
３１０ａ  経路制御テーブル
４００  Ｉ／ＯデバイスＥ
４０２  Ｉ／ＯデバイスＦ
４０４  Ｉ／ＯデバイスＧ
４０６  Ｉ／ＯデバイスＨ
５００  イーサネットフレーム（ＥｔｈｅｒＮｅｔフレーム）
（※イーサネット・ＥｔｈｅｒＮｅｔは登録商標）
５０２  宛先アドレス（ＭＡＣアドレス）
５０４  送信元アドレス（ＭＡＣアドレス）
５０６  タイプ
５０８  データ部
５１０  ＣＲＣ
【図１】
2016020981.tif 000003
【図２】
2016020981.tif 000004
【図３】
2016020981.tif 000005
【図４】
2016020981.tif 000006
【図５】
2016020981.tif 000007
【図６】
2016020981.tif 000008
【図７】
2016020981.tif 000009
【図８】
2016020981.tif 000010
【図９】
2016020981.tif 000011
【国際調査報告】
2016020981.tif 000012
2016020981.tif 000013
2016020981.tif 000014