(57)【要約】  コンピュータと、データ移動元Ｉ／Ｏデバイスと、データ移動先Ｉ／Ｏデバイスとを、ネットワークに接続する複数のブリッジ部と、データ移動元Ｉ／Ｏデバイスとデータ移動先Ｉ／Ｏデバイスとの間のデータの移動をコンピュータの外部で仲介するメモリ部と、データ移動元Ｉ／Ｏデバイスにメモリ部に対してデータをライトさせ、データ移動先Ｉ／Ｏデバイスにメモリ部からデータをリードさせるＩ／Ｏデータ移動制御部とを備えている。
2013062109.tif 000002
【特許請求の範囲】
【請求項１】
データを移動するデータ移動元Ｉ／Ｏデバイスと、前記データを移動するデータ移動先Ｉ／Ｏデバイスと、前記データの移動を制御するコンピュータとを、ネットワークに接続する複数のブリッジ部と、
前記データ移動元Ｉ／Ｏデバイスと前記データ移動先Ｉ／Ｏデバイスとの間を移動する前記データを保持する前記コンピュータの外部に設けられたメモリ部と、
前記データ移動元Ｉ／Ｏデバイスに前記メモリ部に対して前記データの書き込み制御を指示し、前記データ移動先Ｉ／Ｏデバイスに前記メモリ部から前記データの読み出し制御を指示する前記コンピュータの内部に設けられたＩ／Ｏデータ移動制御部と
を備えることを特徴とするＩ／Ｏデバイス制御システム。
【請求項２】
前記メモリ部は、前記ブリッジ部に実装され、
前記データ移動元Ｉ／Ｏデバイスおよび前記データ移動先Ｉ／Ｏデバイスは、前記コンピュータがアクセス可能なメモリ空間上においてマップされた前記ブリッジ部のアドレスを用いて前記メモリ部にアクセスする請求項１に記載のＩ／Ｏデバイス制御システム。
【請求項３】
前記データ移動元Ｉ／Ｏデバイスと、前記データ移動先Ｉ／Ｏデバイスとの間の前記データの移動を仲介する前記メモリ部の候補が複数あり、
前記複数のメモリ部のうち、前記データ移動先Ｉ／Ｏデバイスと最も距離が近い第１のメモリ部、前記データの読み出し制御や書き込み制御を行うパケットのペイロード長が最も大きいデータを保持する第２のメモリ部、あるいは、前記データ移動先Ｉ／Ｏデバイスとの距離とペイロード長の両方に基づき前記データの移動に最適であると判断される第３のメモリ部のうちいずれか一つを、前記データ移動元Ｉ／Ｏデバイスが前記データを書き込む前記メモリ部、あるいは前記データ移動先Ｉ／Ｏデバイスが前記データを読み出す前記メモリ部として決定する最適メモリ選択部をさらに備えた請求項１または２に記載のＩ／Ｏデバイス制御システム。
【請求項４】
前記データ移動元Ｉ／Ｏデバイスによる前記メモリ部に対するデータの書き込み制御と、前記データ移動先Ｉ／Ｏデバイスによる前記メモリ部からのデータの読み出し制御の処理を、前記データの移動が予定されたデータ量の移動が完了するまで繰り返す請求項１から３のいずれか１項に記載のＩ／Ｏデバイス制御システム。
【請求項５】
前記データ移動元Ｉ／Ｏデバイスと前記データ移動先Ｉ／Ｏデバイスとの間のデータ移動の複数の処理を並列で行う請求項１から４のいずれか１項に記載のＩ／Ｏデバイス制御システム。
【請求項６】
データの移動元であるデータ移動元Ｉ／Ｏデバイスと、前記データの移動先であるデータ移動先Ｉ／Ｏデバイスと、前記データの移動を制御するコンピュータとを、複数のブリッジ部によってネットワークに接続し、
前記データ移動元Ｉ／Ｏデバイスに、前記コンピュータの外部に設けられたメモリ部に対する前記データの書き込み制御を指示し、前記データ移動先Ｉ／Ｏデバイスに前記メモリ部からの前記データの読み出し制御を指示するＩ／Ｏデバイス制御方法。
【請求項７】
前記書き込み制御および前記読み出し制御を指示する場合、前記コンピュータがアクセス可能なメモリ空間上においてマップされた前記ブリッジ部のアドレスを用いて前記メモリ部にアクセスするよう指示する請求項６に記載のＩ／Ｏデバイス制御方法。
【請求項８】
前記書き込み制御および前記読み出し制御を指示する場合、
前記データ移動元Ｉ／Ｏデバイスと前記データ移動先Ｉ／Ｏデバイスとの間に設けられた複数の前記メモリ部のうち、前記データ移動先Ｉ／Ｏデバイスと最も距離が近い第１のメモリ部、前記データの読み出し制御や書き込み制御を行うパケットのペイロード長が最も大きいデータを保持する第２のメモリ部、あるいは、前記データ移動先Ｉ／Ｏデバイスとの距離とペイロード長の両方に基づき前記データの移動に最適であると判断される第３のメモリ部のうちいずれか一つを、前記データ移動元Ｉ／Ｏデバイスが前記データを書き込む前記メモリ部、あるいは前記データ移動先Ｉ／Ｏデバイスが前記データを読み出す前記メモリ部として決定する請求項６または７に記載のＩ／Ｏデバイス制御方法。
【請求項９】
前記データ移動元Ｉ／Ｏデバイスによる前記メモリ部に対するデータの書き込み制御と、前記データ移動先Ｉ／Ｏデバイスによる前記メモリ部からのデータの読み出し制御の処理を、前記データの移動が予定されたデータ量の移動が完了するまで繰り返す請求項６から８のいずれか１項に記載のＩ／Ｏデバイス制御方法。
【請求項１０】
前記データ移動元Ｉ／Ｏデバイスと前記データ移動先Ｉ／Ｏデバイスとの間のデータ移動の複数の処理を並列で行う請求項６から９のいずれか１項に記載のＩ／Ｏデバイス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ；入出力）デバイス制御システムおよびＩ／Ｏデバイス制御方法に係り、特にＩ／Ｏデバイス間でデータを移動させる際に用いて好適なＩ／Ｏデバイス制御システムおよびＩ／Ｏデバイス制御方法に関する。
【背景技術】
【０００２】
特許文献１に記載されているＩ／Ｏデバイス制御システムでは、周辺装置（すなわちＩ／Ｏデバイス）を複数のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ；中央処理装置）間で共有するためにＣＰＵと周辺装置を分散してネットワークに配置することでシステムが構成されている。また、特許文献１に記載されているＩ／Ｏデバイス制御システムでは、複数のＣＰＵと周辺装置とが、ネットワークを介してＰＣＩエクスプレス（ＰＣＩ  Ｅｘｐｒｅｓｓ；ＰＣＩｅ）スイッチによって接続されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−２１９８７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載されているようなＰＣＩｅインターフェースでは、２つのＩ／Ｏデバイス間でデータを移動する場合、通常、ＣＰＵに接続されているバスブリッジやメモリを介してデータが伝送される。したがって、バスブリッジやメモリが２つのＩ／Ｏデバイス間のデータ移動において、データ移動帯域のボトルネックになるという課題がある。【０００５】
また、Ｉ／Ｏデバイス間を移動する全てのデータがメインメモリやバスブリッジを経由するので、これらのデータが通過するメインメモリやバスブリッジを共有して使用するアプリケーションは、Ｉ／Ｏデバイス間のデータ移動時にアプリケーションの動作に一定の影響が及ぶという課題がある。【０００６】
すなわち、ＰＣＩｅインターフェースで接続された２つのＩ／Ｏデバイスの間でデータを移動させる場合には、その移動速度が制限されたり、ＣＰＵで動作するアプリケーションの性能を劣化させてしまったりするという課題があった。【０００７】
本発明は、上記の課題を解決することができるＩ／Ｏデバイス制御システムおよびＩ／Ｏデバイス制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するため、本発明に係わるＩ／Ｏデバイス制御システムは、データを移動するデータ移動元Ｉ／Ｏデバイスと、前記データを移動するデータ移動先Ｉ／Ｏデバイスと、前記データの移動を制御するコンピュータとを、ネットワークに接続する複数のブリッジ手段と、前記データ移動元Ｉ／Ｏデバイスと前記データ移動先Ｉ／Ｏデバイスとの間を移動する前記データを保持する前記コンピュータの外部に設けられたメモリ手段と、前記データ移動元Ｉ／Ｏデバイスに前記メモリ手段に対して前記データの書き込み制御を指示し、前記データ移動先Ｉ／Ｏデバイスに前記メモリ手段から前記データの読み出し制御を指示する前記コンピュータの内部に設けられたＩ／Ｏデータ移動制御手段とを備える。【０００９】
また、本発明に係わるＩ／Ｏデバイス制御方法は、データの移動元であるデータ移動元Ｉ／Ｏデバイスと、前記データの移動先であるデータ移動先Ｉ／Ｏデバイスと、前記データの移動を制御するコンピュータとを、ネットワークを介して接続し、前記データ移動元Ｉ／Ｏデバイスに、前記コンピュータの外部に設けられたメモリ手段に対する前記データの書き込み制御を指示し、前記データ移動先Ｉ／Ｏデバイスに前記メモリ手段からの前記データの読み出し制御を指示する。
【発明の効果】
【００１０】
本発明によれば、Ｉ／Ｏデバイスの間でデータを移動する場合に、移動するデータをネットワークを用いて直接伝送することができるので、Ｉ／Ｏデバイス間のデータの移動を効率的に行うことができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施形態の構成を示すブロック図である。
【図２】図１に示した実施の形態で用いられるブリッジ情報を示す図である。
【図３】図１に示した実施の形態で用いられる並列処理管理テーブルを示す図である。
【図４】図１に示した実施の形態で用いられるＣＰＵのメモリ空間を示すブロック図である。
【図５】図１に示した実施の形態の動作を示すフローチャートである。
【図６】図１に示した実施の形態の動作を示すフローチャートである。
【図７】図１に示した実施の形態の動作を示すフローチャートである。
【図８】図３に示した並列処理管理テーブルに２個の並列処理を設定した例を示す図である。
【図９】本発明に係わる他の実施形態の構成を示すブロック図である。
【図１０】図１および図９を参照して説明した本発明の実施形態の各構成例を包含する本発明の実施形態の基本的な構成を示すブロック図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照して本発明の実施の形態について説明する。図１は、本発明に係わるＩ／Ｏデバイス制御システムの一実施形態の構成を説明するためのブロック図である。図１を参照すると、本発明の実施の形態としてのＩ／Ｏデバイス制御システム（１０）は、コンピュータ（１）と、ネットワークブリッジＡ（２Ａ）と、ネットワークブリッジＡ（２Ａ）と、ネットワークブリッジｂ（２ｂ）と、ネットワーク（３）と、Ｉ／Ｏデバイスａ（４ａ）と、Ｉ／Ｏデバイスｂ（４ｂ）とを備えている。
【００１３】
ネットワーク（３）は、有線や無線のＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ；ローカルエリアネットワーク）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ；広域通信網）等からなる通信網である。ネットワーク（３）には、ネットワークブリッジＡ（２Ａ）を介してコンピュータ（１）が接続され、ネットワークブリッジＡ（２Ａ）を介してＩ／Ｏデバイスａ（４ａ）が接続され、そしてネットワークブリッジｂ（２ｂ）を介してＩ／Ｏデバイスｂ（４ｂ）が接続されている。
【００１４】
Ｉ／Ｏデバイスａ（４ａ）およびＩ／Ｏデバイスｂ（４ｂ）は、ネットワーク機能やストレージの機能を提供するコンピュータ（１）の入出力デバイス（すなわち周辺機器あるいは周辺装置）であり、例えばＰＣＩｅやＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ；ペリフェラル  コンポーネント  インターコネクト）に準拠するインターフェースを有するデバイスである。
Ｉ／Ｏデバイスａ（４ａ）とＩ／Ｏデバイスｂ（４ｂ）とは、ネットワーク（３）を介してコンピュータ（１）に接続され、コンピュータ（１）との間でまたはＩ／Ｏデバイスａ（４ａ）とＩ／Ｏデバイスｂ（４ｂ）との間でデータや制御情報（以下ではデータと制御情報をまとめてデータと称する）を送受信する。
【００１５】
なお、図１では、Ｉ／Ｏデバイス制御システム（１０）が２個のＩ／Ｏデバイスａ（４ａ）およびＩ／Ｏデバイスｂ（４ｂ）を備える場合を示しているが、３個以上のＩ／Ｏデバイスを設けるようにしてもよい。
【００１６】
コンピュータ（１）は、計算処理を行うＣＰＵ（１４）と、記憶手段を提供するメインメモリ（１６）と、ＣＰＵ（１４）とメインメモリ（１６）とネットワークブリッジＡ（２Ａ）とを相互に接続するバスブリッジ（１５）とを含んでいる。なお、コンピュータ（１）は、図示していない入力装置、出力装置、周辺装置等を含んでいてもよい。
【００１７】
メインメモリ（１６）は、ブリッジ情報（１６１）と、コンピュータプログラム（１６２）と、並列処理管理テーブル（１６３）とを記憶する。ブリッジ情報（１６１）は、ネットワークブリッジＡ（２Ａ）、ネットワークブリッジＡ（２Ａ）、ネットワークブリッジｂ（２ｂ）等のネットワークブリッジについての情報からなる。コンピュータプログラム（１６２）は、ＣＰＵ（１４）によって実行される複数種類のソフトウェアプログラムを含んでいる。本実施形態においてコンピュータプログラム（１６２）は、Ｉ／Ｏデータ移動制御プログラム（１６２１）と、最適ブリッジ検索プログラム（１６２２）と、Ｉ／Ｏデバイスドライバプログラムａ（１６２３ａ）と、Ｉ／Ｏデバイスドライバプログラムｂ（１６２３ｂ）とを含んでいる。
また、コンピュータプログラム（１６２）は、Ｉ／Ｏデバイスａ（４ａ）、Ｉ／Ｏデバイスｂ（４ｂ）等によるデータの入出力等を制御する図示していないアプリケーションプログラムを含んでいる。このアプリケーションプログラムは、実行されることにより、移動するデータを特定するとともに、このデータのデータ容量を示す情報を取得する。また、このアプリケーションプログラムが実行されることにより、この移動するデータのデータ容量の全てのデータの移動が完了した場合、データの移動が予定されたデータ量の移動が完了したと判定する。
【００１８】
並列処理管理テーブル（１６３）は、例えばＩ／Ｏデバイスａ（４ａ）とＩ／Ｏデバイスｂ（４ｂ）との間において、並列して複数組のデータを移動処理を実行する場合に処理の進捗を管理するために用いられるデータテーブルである。すなわち、並列処理管理テーブル（１６３）は、Ｉ／Ｏデバイスａ（４ａ）やＩ／Ｏデバイスｂ（４ｂ）等の複数のＩ／Ｏデバイス間で、複数組並列に実行される処理として、データを移動する場合の処理の進捗状況を管理するために用いられる。
なお、メインメモリ（１６）は、揮発性メモリから構成されていてもよいし、不揮発性メモリから構成されていてもよいし、あるいは揮発性メモリと不揮発性メモリとを組み合わせたものから構成されていてもよい。ただし、メインメモリ（１６）に記憶されるブリッジ情報（１６１）と、コンピュータプログラム（１６２）と、並列処理管理テーブル（１６３）とは、コンピュータ（１）が停止した場合に、メインメモリ（１６）を構成する不揮発性メモリまたはメインメモリ（１６）外に設けられている図示していない不揮発性メモリに格納されるように構成されているものとする。
【００１９】
ＣＰＵ（１４）は、メインメモリ（１６）に記憶されているコンピュータプログラム（１６２）に含まれている複数種類のソフトウェアプログラムを実行することで所定の演算処理を行ったり、コンピュータ（１）内の各部を制御したりする。本実施形態では、特に、ＣＰＵ（１４）が、Ｉ／Ｏデータ移動制御プログラム（１６２１）を実行することでＩ／Ｏデータ移動制御部（１１）として機能する。また、ＣＰＵ（１４）は、最適ブリッジ検索プログラム（１６２２）を実行することで最適ブリッジ検索部（１２）として機能する。また、ＣＰＵ（１４）は、Ｉ／Ｏデバイスドライバプログラムａ（１６２３ａ）を実行することでＩ／Ｏデバイスドライバ部ａ（１３ａ）として機能する。また、ＣＰＵ（１４）は、Ｉ／Ｏデバイスドライバプログラムｂ（１６２３ｂ）を実行することでＩ／Ｏデバイスドライバ部ｂ（１３ｂ）として機能する。
【００２０】
バスブリッジ（１５）は、ＣＰＵ（１４）とメインメモリ（１６）とネットワークブリッジＡ（２Ａ）との間で送受信されるデータを中継する装置である。
【００２１】
ネットワークブリッジＡ（２Ａ）は、制御部Ａ（２１Ａ）と、ブリッジメモリＡ（２２Ａ）とを備え、ＣＰＵ（１４）やメインメモリ（１６）と、Ｉ／Ｏデバイスａ（４ａ）やＩ／Ｏデバイスｂ（４ｂ）との間で送受信されるデータを、ネットワーク（３）を介して転送する。
制御部Ａ（２１Ａ）は、バスブリッジ（１５）との間で例えばＰＣＩｅ、ＰＣＩ等の所定のプロトコルに従ってデータを入出力する機能を有している。また、ブリッジメモリＡ（２２Ａ）は、制御部Ａ（２１Ａ）によって管理され、制御部Ａ（２１Ａ）によって転送されるデータを一時的に保持し、データ転送を仲介するために用いられる。
この制御部Ａ（２１Ａ）は、ＰＣＩｅ、ＰＣＩ等の所定のプロトコルに従って生成されたパケットに所定のヘッダー情報等を付加することでカプセル化してネットワーク（３）で用いられている所定のプロトコルのパケットに変換する機能を有している。また、制御部Ａ（２１Ａ）は、ネットワーク（３）で用いられている所定のプロトコルに従って生成されたパケットから所定の制御情報を取り除いてデカプセル化してＰＣＩｅ、ＰＣＩ等の所定のプロトコルのパケットに変換する機能を有している。さらに、制御部Ａ（２１Ａ）は、メインメモリ（１６）、Ｉ／Ｏデバイスａ（４ａ）やＩ／Ｏデバイスｂ（４ｂ）等との間でブリッジメモリＡ（２２Ａ）を介してＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ；ダイレクトメモリアクセス）によるデータの転送を制御する機能を有している。
すなわち制御部Ａ（２１Ａ）は、Ｉ／Ｏデバイスａ（４ａ）やＩ／Ｏデバイスｂ（４ｂ）等から受信したＤＭＡライトやＤＭＡリードの要求に応じて、Ｉ／Ｏデバイスａ（４ａ）やＩ／Ｏデバイスｂ（４ｂ）等から受信したデータをブリッジメモリＡ（２２Ａ）に書き込んだり、ブリッジメモリＡ（２２Ａ）からデータを読み出してＩ／Ｏデバイスａ（４ａ）やＩ／Ｏデバイスｂ（４ｂ）等に送信したりする機能を有している。また、制御部Ａ（２１Ａ）は、Ｉ／Ｏデバイスａ（４ａ）、Ｉ／Ｏデバイスｂ（４ｂ）等のＩ／Ｏデバイス間のデータ転送において、ＤＭＡライトやＤＭＡリードに対する処理の完了をＩ／Ｏデータ移動制御部（１１）に対して通知する機能を有している。
【００２２】
ネットワークブリッジＡ（２Ａ）は、制御部Ａ（２１Ａ）と、ブリッジメモリＡ（２２Ａ）とを備え、Ｉ／Ｏデバイスａ（４ａ）と、ＣＰＵ（１４）やメインメモリ（１６）あるいはＩ／Ｏデバイスｂ（４ｂ）との間で送受信されるデータを、ネットワーク（３）を介して転送する。
制御部Ａ（２１Ａ）は、Ｉ／Ｏデバイスａ（４ａ）との間で例えばＰＣＩｅ、ＰＣＩ等の所定のプロトコルに従ってデータを入出力する機能を有している。また、ブリッジメモリＡ（２２Ａ）は、制御部Ａ（２１Ａ）によって管理され、制御部Ａ（２１Ａ）によって転送されるデータを一時的に保持し、データ転送を仲介するために用いられる。
この制御部Ａ（２１Ａ）は、ＰＣＩｅ、ＰＣＩ等の所定のプロトコルに従って生成されたパケットに所定のヘッダー情報等を付加することでカプセル化してネットワーク（３）で用いられている所定のプロトコルのパケットに変換する機能を有している。また、制御部Ａ（２１Ａ）は、ネットワーク（３）で用いられている所定のプロトコルに従って生成されたパケットから所定の制御情報を取り除いてデカプセル化してＰＣＩｅ、ＰＣＩ等の所定のプロトコルのパケットに変換する機能を有している。さらに、制御部Ａ（２１Ａ）は、コンピュータ（１）やメインメモリ（１６）、Ｉ／Ｏデバイスａ（４ａ）やＩ／Ｏデバイスｂ（４ｂ）等との間でブリッジメモリＡ（２２Ａ）を介してＤＭＡによるデータの転送を制御する機能を有している。
すなわち制御部Ａ（２１Ａ）は、コンピュータ（１）やＩ／Ｏデバイスａ（４ａ）、Ｉ／Ｏデバイスｂ（４ｂ）等から受信したＤＭＡライトやＤＭＡリードの要求に応じて、コンピュータ（１）やＩ／Ｏデバイスａ（４ａ）、Ｉ／Ｏデバイスｂ（４ｂ）等から受信したデータをブリッジメモリＡ（２２Ａ）に書き込んだり、ブリッジメモリＡ（２２Ａ）からデータを読み出してコンピュータ（１）やＩ／Ｏデバイスａ（４ａ）、Ｉ／Ｏデバイスｂ（４ｂ）等に送信したりする機能を有している。また、制御部Ａ（２１Ａ）は、Ｉ／Ｏデバイスａ（４ａ）、Ｉ／Ｏデバイスｂ（４ｂ）等のＩ／Ｏデバイス間のデータ転送において、ＤＭＡライトやＤＭＡリードに対する処理の完了をＩ／Ｏデータ移動制御部（１１）に対して通知する機能を有している。
【００２３】
ネットワークブリッジｂ（２ｂ）は、制御部ｂ（２１ｂ）と、ブリッジメモリｂ（２２ｂ）とを備え、Ｉ／Ｏデバイスｂ（４ｂ）と、ＣＰＵ（１４）やメインメモリ（１６）あるいはＩ／Ｏデバイスａ（４ａ）との間で送受信されるデータを、ネットワーク（３）を介して転送する。
制御部ｂ（２１ｂ）は、Ｉ／Ｏデバイスｂ（４ｂ）との間で例えばＰＣＩｅ、ＰＣＩ等の所定のプロトコルに従ってデータを入出力する機能を有している。また、ブリッジメモリｂ（２２ｂ）は、制御部ｂ（２１ｂ）によって管理され、制御部ｂ（２１ｂ）によって転送されるデータを一時的に保持し、仲介するために用いられる。
この制御部ｂ（２１ｂ）は、また、ＰＣＩｅ、ＰＣＩ等の所定のプロトコルに従って生成されたパケットに所定のヘッダー情報等を付加することでカプセル化してネットワーク（３）で用いられている所定のプロトコルのパケットに変換する機能を有している。また、制御部ｂ（２１ｂ）は、ネットワーク（３）で用いられている所定のプロトコルに従って生成されたパケットから所定の制御情報を取り除いてデカプセル化してＰＣＩｅ、ＰＣＩ等の所定のプロトコルのパケットに変換する機能を有している。さらに、制御部ｂ（２１ｂ）は、コンピュータ（１）やメインメモリ（１６）、Ｉ／Ｏデバイスａ（４ａ）やＩ／Ｏデバイスｂ（４ｂ）等との間でブリッジメモリｂ（２２ｂ）を介してＤＭＡによるデータの転送を制御する機能を有している。
すなわち制御部ｂ（２１ｂ）は、コンピュータ（１）やＩ／Ｏデバイスａ（４ａ）、Ｉ／Ｏデバイスｂ（４ｂ）等から受信したＤＭＡライトやＤＭＡリードの要求に応じて、コンピュータ（１）やＩ／Ｏデバイスａ（４ａ）、Ｉ／Ｏデバイスｂ（４ｂ）等から受信したデータをブリッジメモリｂ（２２ｂ）に書き込んだり、ブリッジメモリｂ（２２ｂ）からデータを読み出してコンピュータ（１）やＩ／Ｏデバイスａ（４ａ）、Ｉ／Ｏデバイスｂ（４ｂ）等に送信したりする機能を有している。また、制御部ｂ（２１ｂ）は、Ｉ／Ｏデバイスａ（４ａ）、Ｉ／Ｏデバイスｂ（４ｂ）等のＩ／Ｏデバイス間のデータ転送において、ＤＭＡライトやＤＭＡリードに対する処理の完了をＩ／Ｏデータ移動制御部（１１）に対して通知する機能を有している。
【００２４】
なお、ブリッジメモリＡ（２２Ａ）、ブリッジメモリＡ（２２Ａ）およびブリッジメモリｂ（２２ｂ）の記憶容量は互いに異なっていてもよいし、例えば転送するパケットの最大ペイロード長（すなわちパケット中でヘッダー情報などの制御情報を除いたデータ本体の格納領域の大きさ）が互いに異なっていてもよい。
【００２５】
上述したように、ネットワークブリッジＡ（２Ａ）は、ネットワークブリッジＡ（２Ａ）との間とネットワークブリッジｂ（２ｂ）との間とでＰＣＩｅやＰＣＩの通信を伝送することで、コンピュータ（１）がＩ／Ｏデバイスａ（４ａ）とＩ／Ｏデバイスｂ（４ｂ）とを使用できるようにする。また、ネットワークブリッジＡ（２Ａ）とネットワークブリッジｂ（２ｂ）は、例えば、Ｉ／Ｏデバイスａ（４ａ）とＩ／Ｏデバイスｂ（４ｂ）との間でＰＣＩｅやＰＣＩの通信を伝送することで、Ｉ／Ｏデバイスａ（４ａ）とＩ／Ｏデバイスｂ（４ｂ）とがＤＭＡによって直接データを移動できるようにする。その際、典型的にはネットワークブリッジＡ（２Ａ）は、ネットワークブリッジＡ（２Ａ）と、ネットワークブリッジｂ（２ｂ）との間でＰＣＩｅ等のパケットをネットワーク（３）のパケットにカプセル化し伝送する。
【００２６】
Ｉ／Ｏデバイスドライバ部ａ（１３ａ）は、ＣＰＵ（１４）によってＩ／Ｏデバイスドライバプログラムａ（１６２３ａ）を実行することで、Ｉ／Ｏデバイスａ（４ａ）に対しデータのライトやリードを行うコマンドを発行する。また、Ｉ／Ｏデバイスドライバ部ｂ（１３ｂ）は、ＣＰＵ（１４）によってＩ／Ｏデバイスドライバプログラムｂ（１６２３ｂ）を実行することで、Ｉ／Ｏデバイスｂ（４ｂ）に対しデータのライトやリードを行うコマンドを発行する。
【００２７】
Ｉ／Ｏデータ移動制御部（１１）は、ＣＰＵ（１４）によってＩ／Ｏデータ移動制御プログラム（１６２１）を実行することで、Ｉ／Ｏデバイスａ（４ａ）からＩ／Ｏデバイスｂ（４ｂ）へのデータ移動や、Ｉ／Ｏデバイスｂ（４ｂ）からＩ／Ｏデバイスａ（４ａ）へのデータ移動を制御する。その際、Ｉ／Ｏデータ移動制御部（１１）は、データ移動の仲介メモリとして最適なブリッジメモリ（この場合、ブリッジメモリＡ（２２Ａ）、ブリッジメモリＡ（２２Ａ）またはブリッジメモリｂ（２２ｂ）のいずれか）を保持するネットワークブリッジとして、ネットワークブリッジＡ（２Ａ）、ネットワークブリッジＡ（２Ａ）またはネットワークブリッジｂ（２ｂ）のうちいずれかをデータの移動に利用するメモリであるかを決定するように最適ブリッジ検索部（１２）に指示する。
例えば、Ｉ／Ｏデバイスａ（４ａ）からＩ／Ｏデバイスｂ（４ｂ）へデータを移動する場合、まずＩ／Ｏデータ移動制御部（１１）は、最適ブリッジ検索部（１２）によって後述するようにして選択された最適なブリッジメモリを保持するネットワークブリッジの情報を受けとる。なお、最適として決定すべき優先順位や条件は、予め設定されているものとする。
そして、Ｉ／Ｏデータ移動制御部（１１）は、最適ブリッジ検索部（１２）によって決定された最適なネットワークブリッジが保持するブリッジメモリ（この場合、ブリッジメモリＡ（２２Ａ）、ブリッジメモリＡ（２２Ａ）またはブリッジメモリｂ（２２ｂ）のいずれか）に対し、Ｉ／Ｏデバイスａ（４ａ）から移動するデータを、Ｉ／Ｏデバイス部ａ（１３ａ）を呼出すことでＩ／Ｏデバイスａ（４ａ）によってＤＭＡでライトさせる。また、Ｉ／Ｏデータ移動制御部（１１）は、Ｉ／Ｏデバイスドライバ部ｂ（１３ｂ）を呼出し、Ｉ／Ｏデバイスｂ（４ｂ）に当該ブリッジメモリからデータ（この場合、Ｉ／Ｏデバイスａ（４ａ）によってＤＭＡでライトされたデータ）をＤＭＡでリードさせる。
【００２８】
この場合、Ｉ／Ｏデータ移動制御部（１１）からみたとき、Ｉ／Ｏデータ移動制御部（１１）は、Ｉ／Ｏデバイスａ１３ａからブリッジメモリへのデータのリードと、ブリッジメモリからＩ／Ｏデバイスｂ１３ｂへのデータのライトのそれぞれの処理において、複数の処理（例えば転送対象のアドレス範囲を複数に分割した分割範囲毎の複数組のデータ転送処理）を同時に行うことが可能である。つまり、Ｉ／Ｏデータ移動制御部（１１）は、複数のデータ移動処理を同時に行うことで、Ｉ／Ｏデバイス間におけるデータ移動の帯域を最大化することができる。ここで、Ｉ／Ｏデータ移動制御部（１１）からみたときのブリッジメモリへのデータのリードとは、Ｉ／Ｏデバイスａ１３ａのＤＭＡライトによって行われる処理であり、Ｉ／Ｏデバイスｂ１３ｂへのデータのライトとはＩ／Ｏデバイスｂ１３ｂのＤＭＡリードによって行われる処理である。
【００２９】
なお、上記の例とは逆にＩ／Ｏデバイスｂ（４ｂ）からＩ／Ｏデバイスａ（４ａ）へデータを移動する場合、Ｉ／Ｏデータ移動制御部（１１）は、最適ブリッジ検索部（１２）から最適なブリッジメモリを保持するネットワークブリッジの情報を受けると、最適なネットワークブリッジが保持するブリッジメモリ（この場合、ブリッジメモリＡ（２２Ａ）、ブリッジメモリＡ（２２Ａ）またはブリッジメモリｂ（２２ｂ）のいずれか）に対し、Ｉ／Ｏデバイスｂ（４ｂ）から移動するデータを、Ｉ／Ｏデバイスドライバ部ｂ（１３ｂ）を呼出すことでＩ／Ｏデバイスｂ（４ｂ）によってＤＭＡでライトさせる。また、Ｉ／Ｏデータ移動制御部（１１）は、Ｉ／Ｏデバイス部ａ（１３ａ）を呼出し、Ｉ／Ｏデバイスａ（４ａ）に当該ブリッジメモリからデータ（この場合、Ｉ／Ｏデバイスｂ（４ｂ）によってＤＭＡでライトされたデータ）をＤＭＡでリードさせる。
【００３０】
次に、ブリッジ情報（１６１）を図２に示す。ブリッジ情報（１６１）は、各ネットワークブリッジＡ（２Ａ）、ネットワークブリッジＡ（２Ａ）およびネットワークブリッジｂ（２ｂ）と、各ネットワークブリッジＡ（２Ａ）およびネットワークブリッジｂ（２ｂ）が接続しているＩ／Ｏデバイスａ（４ａ）およびＩ／Ｏデバイスｂ（４ｂ）とをそれぞれ対応させる情報を含んでいる。また、ブリッジ情報（１６１）は、各ネットワークブリッジＡ（２Ａ）、ネットワークブリッジＡ（２Ａ）およびネットワークブリッジｂ（２ｂ）が保持する各ブリッジメモリＡ（２２Ａ）、ブリッジメモリａ（２２ａ）およびブリッジメモリｂ（２２ｂ）に対してリードおよびライト処理で使用可能な最大パケットペイロード長を保持する。一般に最大ペイロード長が長いほどメモリアクセス効率は高い。
ここで、ブリッジ情報（１６１）が管理するブリッジの情報は、図２に示すように、ブリッジ名、接続Ｉ／Ｏデバイスを表す情報、最大ペイロード長を表す情報の３つでなくても良い。図２に示した例では、ブリッジ情報（１６１）が、ネットワークブリッジＡ２Ａ、ネットワークブリッジａ２ａおよびネットワークブリッジｂ２ｂについての情報のほか、ネットワークブリッジｎについての情報等を含んでいる。
【００３１】
次に、並列処理テーブル（１６３）を図３に示す。並列処理テーブル（１６３）は、並列して実行するデータ移動処理毎に、移動元Ｉ／Ｏデバイス、移動先Ｉ／Ｏデバイス、移動するデータのデータ長、移動処理中に既に移動したデータのデータ長、移動処理完了の有無を示すフラグ、移動元Ｉ／Ｏデバイスから移動するデータのアドレス、および移動先Ｉ／Ｏデバイスでデータをライトするアドレスを表す情報を対応付けて保持する。例えば、Ｉ／Ｏデバイスａ（４ａ）からＩ／Ｏデバイスｂ（４ｂ）にデータを移動する場合、並列処理テーブル（１６３）は、移動元のＩ／Ｏデバイスａ（４ａ）、移動先のＩ／Ｏデバイスｂ（４ｂ）、移動するデータのデータ長、既に移動したデータのデータ長、移動処理完了を示すフラグ、Ｉ／Ｏデバイスａ（４ａ）から移動するデータのＩ／Ｏデバイスａ（４ａ）内の先頭アドレス、およびＩ／Ｏデバイスｂ（４ｂ）においてデータをライトするＩ／Ｏデバイスｂ（４ｂ）内の先頭アドレスを表す情報を保持する。これらのアドレスは、次に説明するコンピュータ（１）がアクセス可能なメモリ空間５にマップされたものを用いて表される。なお、このメモリ空間５は、コンピュータ（１）の外部に設けられたメモリによって構成される。
【００３２】
次に、コンピュータ（１）のメモリ空間５を図４に示す。図１のＩ／Ｏデバイス制御システム（１０）では、ネットワークブリッジＡ（２Ａ）と、ネットワークブリッジＡ（２Ａ）と、ネットワークブリッジｂ（２ｂ）とが、図３に示すように、メモリ空間５に、すなわちＣＰＵ（１４）によってアクセス可能なアドレスが割り当てられた記憶領域に、マップされる。ここで、ブリッジメモリＡ（２２Ａ）、ブリッジメモリＡ（２２Ａ）およびブリッジメモリｂ（２２ｂ）は、メモリ空間５においてネットワークブリッジＡ（２Ａ）、ネットワークブリッジＡ（２Ａ）、およびネットワークブリッジｂ（２ｂ）が割り当てられた記憶領域内にそれぞれマップされている。
したがって、Ｉ／Ｏデバイスａ（４ａ）やＩ／Ｏデバイスｂ（４ｂ）は、ブリッジメモリＡ（２２Ａ）、ブリッジメモリＡ（２２Ａ）およびブリッジメモリｂ（２２ｂ）がマップされたコンピュータ（１）のメモリ空間５の所定のアドレスにアクセスすることにより、ブリッジメモリＡ（２２Ａ）、ブリッジメモリＡ（２２Ａ）およびブリッジメモリｂ（２２ｂ）にアクセスすることができる。したがって、Ｉ／Ｏデバイスａ（４ａ）やＩ／Ｏデバイスｂ（４ｂ）がＰＣＩｅやＰＣＩに準拠したインターフェースを有している場合には、リードやライトの対象アドレスをブリッジメモリＡ（２２Ａ）、ブリッジメモリＡ（２２Ａ）やブリッジメモリｂ（２２ｂ）に対応したものにプログラム上で設定することで、特別なソフトウェア上あるいはハードウェア上の変更無しでＰＣＩｅやＰＣＩに準拠した手順によってブリッジメモリＡ（２２Ａ）、ブリッジメモリＡ（２２Ａ）やブリッジメモリｂ（２２ｂ）にアクセスすることができる。
【００３３】
上記のように、Ｉ／Ｏデバイスａ（４ａ）は、図４のようにしてメモリマップされたネットワークブリッジのアドレス領域にアクセスすることで、ネットワークブリッジＡ（２Ａ）と、ネットワークブリッジＡ（２Ａ）と、ネットワークブリッジｂ（２ｂ）とがそれぞれ保持するブリッジメモリＡ（２２Ａ）と、ブリッジメモリＡ（２２Ａ）と、ブリッジメモリｂ（２２ｂ）とにデータのリードおよびライトを行うことができる。同様に、Ｉ／Ｏデバイスｂ（４ｂ）は、図４のようにしてメモリマップされたネットワークブリッジのアドレス領域にアクセスすることで、ネットワークブリッジＡ（２Ａ）と、ネットワークブリッジＡ（２Ａ）と、ネットワークブリッジｂ（２ｂ）とがそれぞれ保持するブリッジメモリＡ（２２Ａ）と、ブリッジメモリＡ（２２Ａ）と、ブリッジメモリｂ（２２ｂ）とにデータのリードおよびライトを行うことができる。
なお、図４に示した例では、メモリ空間５に、ネットワークブリッジＡ（２Ａ）、ネットワークブリッジａ（２ａ）およびネットワークブリッジｂ（２ｂ）の３つのネットワークブリッジのほか、ネットワークブリッジｎのアドレス等が割り当てられている。
【００３４】
次に最適ブリッジ検索部（１２）は、ＣＰＵ（１４）によって最適ブリッジ検索プログラム（１６２２）を実行することで、Ｉ／Ｏデバイス間でデータを移動する際に使用するのに適したブリッジメモリを選択する。最適ブリッジ検索部（１２）は、ブリッジ情報（１６１）を参照し、例えばＩ／Ｏデバイスａ（４ａ）からＩ／Ｏデバイスｂ（４ｂ）にデータを移動するための仲介メモリとして最適な（すなわちより効率的にデータ転送を行うことができる）ブリッジメモリを保持するネットワークブリッジを選択する。
【００３５】
本実施の形態においてＩ／Ｏデバイスａ（４ａ）、Ｉ／Ｏデバイスｂ（４ｂ）等のインターフェースとして利用されるＰＣＩｅでは、ＤＭＡライトは完了通知を待たないポステッド（Ｐｏｓｔｅｄ）型のアクセスである。
一方、ＤＭＡリードは、リードするデータの到着を完了通知とするノンポステッド（ｎｏｎ−Ｐｏｓｔｅｄ）型のアクセスであり、次のリクエストを発行するためには、前のリクエストの完了を待つ必要がある。このためＤＭＡリードはＤＭＡライトより性能に対するレイテンシ（すなわち要求応答間の遅延時間）の影響が大きい。
したがって、ＤＭＡリードのレイテンシによる影響を小さくするようにブリッジメモリを選択できれば、Ｉ／Ｏデバイス間のデータ移動の効率を向上させることができる。
【００３６】
そこで最適ブリッジ検索部（１２）は、このレイテンシの影響を小さくするため、ＤＭＡリードを行う側のＩ／Ｏデバイスとブリッジメモリとの間のデータ伝送時間が、ＤＭＡライトを行う側のＩ／Ｏデバイスとブリッジメモリとの間のデータ伝送時間よりも小さくなるようにブリッジメモリを選択する。
本実施形態では、例えばＩ／Ｏデバイスａ（４ａ）からＩ／Ｏデバイスｂ（４ｂ）にデータを移動する場合、Ｉ／Ｏデバイスａ（４ａ）は仲介メモリ（すなわちブリッジメモリ）にＤＭＡを用いてデータをライトし、Ｉ／Ｏデバイスｂ（４ｂ）は仲介メモリ（すなわちブリッジメモリ）からＤＭＡを用いてデータをリードする。したがって、この場合、最適ブリッジ検索部（１２）によって、データ移動先のＩ／Ｏデバイスｂ（４ｂ）との間のデータ伝送時間が最も小さい（すなわち距離が小さい）ブリッジメモリを選択することで、ＤＭＡリードのレイテンシを小さくすることができる。つまり、最適ブリッジ検索部（１２）は、データの移動先に最も近いブリッジメモリを保持するネットワークブリッジをブリッジ情報（１６１）を参照することで検索し、この場合、データ移動先であるＩ／Ｏデバイスｂ（４ｂ）と接続されているネットワークブリッジｂ（２ｂ）を最適なブリッジとして選択する。
【００３７】
なお、最適ブリッジ検索部（１２）によるネットワークブリッジの選択は上記の手法に限定されない、例えば、最適ブリッジ検索部（１２）は、Ｉ／Ｏデバイスｂ（４ｂ）に対する距離で最適ブリッジを選択するのではなく、ブリッジ情報（１６１）で保持された、各ブリッジの最大ペイロード長を検索し、最も大きいペイロード長を保持するブリッジを最適なネットワークメモリを保持するブリッジとして選択することも可能である。
【００３８】
なお、どのような条件に基づき、最適ブリッジを選択するかは、予め設定されており、最適ブリッジ検索部（１２）は、この設定されている条件に基づき、Ｉ／Ｏデバイス間のデータの移動を仲介するブリッジメモリのうち、最適ブリッジを選択する。例えば、データ移動先Ｉ／Ｏデバイスに最も近いブリッジメモリを最適ブリッジとして選択することが決定されている場合、複数のブリッジメモリのうち、データ移動先Ｉ／Ｏデバイスに最も近いブリッジメモリを、データ移動元Ｉ／Ｏデバイスがデータを書き込むメモリ、あるいはデータ移動先Ｉ／Ｏデバイスがデータを読み出すメモリ手段として決定する。同様にして、例えば、データのリードやライトを行うパケットのペイロード長が最も大きいブリッジメモリを最適ブリッジとして選択することが決定されている場合、複数のブリッジメモリのうち、データのリードやライトを行うパケットのペイロード長が最も大きいブリッジメモリを、データ移動元Ｉ／Ｏデバイスがデータを書き込むメモリ、あるいはデータ移動先Ｉ／Ｏデバイスがデータを読み出すメモリ手段として決定する。また、例えば、移動先のＩ／Ｏデバイスとの距離とペイロード長の両方を考慮してデータの移動に最適なブリッジメモリを最適ブリッジとして選択することが決定されている場合、複数のブリッジメモリのうち、移動先のＩ／Ｏデバイスとの距離とペイロード長の両方に基づきデータの移動に最適なブリッジメモリであると判断したブリッジメモリを、データ移動元Ｉ／Ｏデバイスがデータを書き込むメモリ、あるいはデータ移動先Ｉ／Ｏデバイスがデータを読み出すメモリ手段として決定する。
また、最適なネットワークブリッジの選択には、移動先Ｉ／Ｏデバイスｂ（４ｂ）との距離と、最大ペイロード長の両方を考慮し、これらの要因を含む評価式で最も評価されるブリッジを最適なネットワークメモリを保持するブリッジとして選択することも可能である。
すなわち、最適ブリッジ検索部（１２）は、Ｉ／Ｏデバイス間のデータの移動を仲介するブリッジメモリの候補が複数ある場合に、その中でデータ移動先Ｉ／Ｏデバイスに最も近いブリッジメモリか、データのリードやライトを行うパケットのペイロード長が最も大きいブリッジメモリか、または移動先のＩ／Ｏデバイスとの距離とペイロード長の両方を考慮してデータの移動に最適なブリッジメモリを選択する。
【００３９】
次に図１のブロック図および図５のフローチャートを参照して本実施の形態の動作について説明する。なお、図５に示した動作例は、Ｉ／Ｏデバイスａ（４ａ）からＩ／Ｏデバイスｂ（４ｂ）にデータを移動する場合を示している。また、Ｉ／Ｏデバイスａ（４ａ）およびＩ／Ｏデバイスｂ（４ｂ）のインターフェースはＰＣＩｅであるとする。
【００４０】
いま、ＣＰＵ（１４）で実行されている所定のアプリケーションプログラムがＩ／Ｏデータ移動制御部（１１）を呼び出して、Ｉ／Ｏデバイスａ（４ａ）からＩ／Ｏデバイスｂ（４ｂ）へのデータ移動を指示したとする。この場合、まず、Ｉ／Ｏデータ移動制御部（１１）は、Ｉ／Ｏデバイスａ（４ａ）からＩ／Ｏデバイスｂ（４ｂ）へのデータ移動を仲介する最適なブリッジメモリを保持するネットワークブリッジを、最適ブリッジ検索部（１２）に問い合わせる（ステップＡ１）。ここでは最適ブリッジ検索部（１２）が、Ｉ／Ｏデバイスｂ（４ｂ）に最も近いネットワークブリッジを最適なブリッジであると判定する場合を考える。
この場合、最適ブリッジ検索部（１２）は、ブリッジ情報（１６１）を参照し、Ｉ／Ｏデバイスｂ（４ｂ）と接続するネットワークブリッジｂ（２ｂ）を最適なブリッジと判定し、Ｉ／Ｏデータ移動制御部（１１）に伝える（ステップＡ２）。
【００４１】
次に、Ｉ／Ｏデータ移動制御部（１１）は、Ｉ／Ｏデバイス部ａ（１３ａ）を呼出し、Ｉ／Ｏデバイスａ（４ａ）に、ブリッジメモリｂ（２２ｂ）へＤＭＡでデータをライトさせる（ステップＡ３）。
データがブリッジメモリｂ（２２ｂ）にライトされると、制御部ｂ（２１ｂ）によってＩ／Ｏデータ移動制御部（１１）が呼び出される。
Ｉ／Ｏデータ移動制御部（１１）は、続いてＩ／Ｏデバイスドライバ部ｂ（１３ｂ）を呼出し、ブリッジメモリｂ（２２ｂ）のデータをＩ／Ｏデバイスｂ（４ｂ）によってＤＭＡでリードさせる（ステップＡ４）。
データのリードが完了すると、制御部ｂ（２１ｂ）によってＩ／Ｏデータ移動制御部（１１）が再度呼び出される。
【００４２】
Ｉ／Ｏデータ移動制御部（１１）は、Ｉ／Ｏデバイスａ（４ａ）からＩ／Ｏデバイスｂ（４ｂ）に移動したデータ量が、予定した容量に達したか、あるいは他の終了条件に該当した場合、データ移動処理を完了する（ステップＡ５でＹｅｓの場合）。
また、終了条件に該当しない場合、Ｉ／Ｏデータ移動制御部（１１）は、ステップＡ３とステップＡ４の処理を繰り返す（ステップＡ５でＮｏの場合）。
このようにして、Ｉ／Ｏデータ移動制御部（１１）は、データ移動元Ｉ／Ｏデバイスによるブリッジメモリに対するデータのライトと、データ移動先のＩ／Ｏデバイスによるブリッジメモリからのデータのリードの処理を、予定されたデータ量の移動が完了するまで繰り返して実行する。つまり、Ｉ／Ｏデータ移動制御部（１１）は、アプリケーションプログラムを実行した際に取得した“移動するデータのデータ量を示す情報”に基づき、このデータ量についてのデータの移動が完了するまで、データ移動元Ｉ／Ｏデバイスに対する書き込み制御を指示するとともに、データ移動先Ｉ／Ｏデバイスからの読み出し制御を指示する。
【００４３】
ここでステップＡ３の処理では、Ｉ／Ｏデバイスａ（４ａ）が例えばストレージデバイスのようにＩ／Ｏデバイス部ａ（１３ａ）が発行したコマンドをトリガとしてＤＭＡ処理を開始するデバイスの場合、Ｉ／Ｏデータ移動制御部（１１）はステップＡ３の処理の度にＩ／Ｏデバイス部ａ（１３ａ）を呼び出す必要がある。
一方、Ｉ／Ｏデバイスａ（４ａ）が例えばネットワークデバイスに見られるように、外部からのデータ入力をトリガとしてＤＭＡ処理を開始するデバイスの場合、Ｉ／Ｏデータ移動制御部（１１）はステップＡ３の処理の度にＩ／Ｏデバイス部ａ（１３ａ）を呼び出す必要はない。
【００４４】
次に、図６および図７を参照して、データ移動を並列で行う場合の動作について説明する。図６および図７に示した動作例は、Ｉ／Ｏデバイスａ（４ａ）からＩ／Ｏデバイスｂ（４ｂ）にデータを移動する処理を複数組並列で実行する場合を示している。すなわち、図６および図７に示した動作例では、データ移動元のＩ／Ｏデバイスと、データ移動先のＩ／Ｏデバイスとの間のデータ移動が複数組並列で行われる。また、Ｉ／Ｏデバイスａ（４ａ）およびＩ／Ｏデバイスｂ（４ｂ）のインターフェースはＰＣＩｅであるとする。なお、図５に示した処理に対応する処理には同一の符号を用いている。
【００４５】
図６を参照すると、データ移動を並列で行う動作は、図５と比較してステップＡ３〜Ａ５に替えてステップＢ１とステップＢ２とを含む点で異なる。Ｉ／Ｏデータ移動制御部（１１）は、ステップＢ１において、並列処理管理テーブル（１６３）に移動させるデータのアドレスとデータ長に関する情報を設定する（ステップＢ１）。
図８に並列処理管理テーブル（１６３）の設定例を示した。図８に示した例では、Ｉ／Ｏデバイスａ（４ａ）からＩ／Ｏデバイスｂ（４ｂ）へデータを移動する２つの処理を並列処理管理テーブル（１６３）に設定している。図８の並列処理管理テーブル（１６３）では、移動元Ｉ／Ｏデバイスａ（４ａ）から移動するデータのアドレスを「ａ１」および移動先Ｉ／Ｏデバイスｂ（４ｂ）でデータをライトするアドレスを「ｂ１」とする１個の転送処理と、移動元Ｉ／Ｏデバイスａ（４ａ）から移動するデータのアドレスを「ａ２」および移動先Ｉ／Ｏデバイスｂ（４ｂ）でデータをライトするアドレスを「ｂ２」とするもう１個の転送処理との２個の処理が設定されている。
【００４６】
続いてＩ／Ｏデータ移動制御部（１１）は、Ｉ／Ｏデバイスａ（４ａ）からＩ／Ｏデバイスｂ（４ｂ）に並列でデータを移動させる処理を２つ以上（すなわちｎ個の処理を）開始する（ステップＢ２）。
【００４７】
図７は並列で（すなわち例えば時分割で）実行されるＩ／Ｏデバイスａ（４ａ）からＩ／Ｏデバイスｂ（４ｂ）へのデータ移動処理の１つを示すフローチャートである。初めにＩ／Ｏデータ移動制御部（１１）が並列処理管理テーブル（１６３）を参照してＩ／Ｏデバイス部ａ（１３ａ）にデータの転送に用いる所定の情報を設定する。
次に、Ｉ／Ｏデータ移動制御部（１１）が、Ｉ／Ｏデバイス部ａ（１３ａ）に対して、Ｉ／Ｏデバイスａ（４ａ）への所定のコマンドの発行を指示する。ここでＩ／Ｏデバイス部ａ（１３ａ）が、Ｉ／Ｏデバイスａ（４ａ）にブリッジメモリｂ（２２ｂ）に対しＤＭＡでデータをライトさせる（ステップＢ３）。
続いてＩ／Ｏデータ移動制御部（１１）によってＩ／Ｏデバイスドライバ部ｂ（１３ｂ）が呼び出され、Ｉ／Ｏデバイスドライバ部ｂ（１３ｂ）がＩ／Ｏデバイスｂ（４ｂ）にブリッジメモリｂ（２２ｂ）からＤＭＡでデータをリードさせる（ステップＢ４）。
次に、Ｉ／Ｏデータ移動制御部（１１）が、データ移動処理において完了したデータ移動の情報で並列処理管理テーブル（１６３）を更新する（ステップＢ５）。
ここで並列処理管理テーブルに記録された移動済みデータが、予定した移動データ量に達した場合、あるいは、並列処理管理テーブル（１６３）の移動処理終了フラグがアサートされている場合、データ移動処理は完了する。
一方、移動データ量に達していない場合、あるいは移動処理終了フラグがアサートされていない場合、Ｉ／Ｏデータ移動制御部（１１）は、ステップＢ３から処理を繰り返す（ステップＢ６）。
【００４８】
本実施の形態ではＩ／Ｏデバイスが２つの場合を示したが、Ｉ／Ｏデバイスの数はこれに制限されず、任意の数のデバイスを保持するシステムが実現可能である。この場合、データの移動元のＩ／Ｏデバイスと、移動先のＩ／Ｏデバイスは、複数のＩ／Ｏデバイスの中の任意のデバイスを選択することが可能である。
【００４９】
また、本実施の形態ではＩ／Ｏデバイス間のデータ移動を仲介するメモリとして、ネットワークブリッジが保持するメモリを示したが、ネットワークブリッジと仲介メモリが一体として実装されている必要はなく、仲介メモリを別の要素として実現し、実現したメモリをネットワークに接続して用いる構成も可能である。図９は、図１のＩ／Ｏデバイス制御システム（１０）にネットワークブリッジｃ（２ｃ）を追加した本発明に係わる他の実施形態としてのＩ／Ｏデバイス制御システム（１０）ａを示すブロック図である。
図９のネットワークブリッジｃ（２ｃ）は、ネットワークブリッジＡ（２Ａ）やネットワークブリッジｂ（２ｂ）と同様の構成を有し、制御部ａ（２１ａ）や制御部ｂ（２１ｂ）に対応する制御部ｃ（２１ｃ）を有するとともに、ブリッジメモリａ（２２ａ）やブリッジメモリｂ（２２ｂ）に対応するブリッジメモリｃ（２２ｃ）を有している。
ただし、ネットワークブリッジｃ（２ｃ）には、Ｉ／Ｏデバイスは直接接続されていない。ブリッジメモリｃ（２２ｃ）は、図１の構成と同様にして、Ｉ／Ｏデバイスａ（４ａ）やＩ／Ｏデバイスｂ（４ｂ）によってＩ／Ｏデバイス間のデータ移動の際の仲介メモリとして使用することができる。
【００５０】
次に、上記に示した実施形態の効果について説明する。上記の実施形態では、ネットワークで接続された２以上のＩ／Ｏデバイスの間のデータ移動を、ネットワークブリッジが保持するブリッジメモリを介して行う。これにより、移動するデータがコンピュータのメインメモリやバスブリッジを通過する必要がなく、メインメモリやバスブリッジの帯域の制限を受けずに高速にＩ／Ｏデバイス間のデータ移動を行うことができる。また、移動するデータがメインメモリやバスブリッジを通過しないため、これらを使用する他のアプリケーションプログラムの性能に影響を与えずにＩ／Ｏデバイス間のデータ移動を行うことができる。
【００５１】
なお、本発明は、コンピュータシステム、ネットワークシステム、ストレージシステム、組み込みシステム、あるいは特殊装置において、Ｉ／Ｏデバイス間で高速にデータを移動する用途に適用できる。また、これらのシステムにおいて、ＣＰＵやメモリバス、Ｉ／Ｏバス資源を消費せずにＩ／Ｏデバイス間のデータ移動を行うといった用途にも適用できる。
【００５２】
また、本発明の実施形態は上記のものに限定されず、例えば、１つのネットワークブリッジに複数のＩ／Ｏデバイスを接続できるようにしたり、１つのネットワークブリッジに複数のブリッジメモリを設けるようにしたりする変更等を適宜行うことができる。また、図１のＩ／Ｏデータ移動制御部（１１）は、例えばコンピュータ（１）内のＣＰＵ（１４）以外の図示していないＣＰＵによって実行するようにしたり、コンピュータ（１）外の図示していないＣＰＵによって実行するようにしたりすることができる。
【００５３】
なお、図１および図９に示した本発明の各実施の形態を包含する本発明の実施形態の基本的な構成をブロック図に示すと、図１０に示すようになる。図１０に示すように、本発明の実施形態の基本的な構成では、Ｉ／Ｏデバイス制御システム（１０）ｂが、コンピュータ（１０１）と、データを移動するデータ移動元Ｉ／Ｏデバイス（１０２）と、データを移動するデータ移動先Ｉ／Ｏデバイス（１０３）とを、ネットワーク（１０４）に接続する複数のブリッジ手段（１０５）、（１０６）、（１０７）と、データ移動元Ｉ／Ｏデバイス（１０２）とデータ移動先Ｉ／Ｏデバイス（１０３）との間のデータの移動をコンピュータ（１０１）の外部で仲介するメモリ手段（１０８）と、データ移動元Ｉ／Ｏデバイス（１０２）にメモリ手段（１０８）に対してデータをライトさせ、データ移動先Ｉ／Ｏデバイス（１０３）にメモリ手段（１０８）からデータをリードさせるＩ／Ｏデータ移動制御手段（１０９）とを備えている。
ここで、メモリ手段（１０８）は、ブリッジ手段（１０５）〜（１０７）内に実装されていてもよいし、あるいは例えばネットワーク（３）にブリッジ手段（１０５）〜（１０７）とは異なる中継手段を介して接続される等してブリッジ手段（１０５）〜（１０７）外に設けられていてもよい。
【００５４】
この図１０のＩ／Ｏデバイス制御システム（１０）ｂの各構成要素と、図１に示したＩ／Ｏデバイス制御システム（１０）の各構成要素との対応は次のとおりである。コンピュータ（１０１）が図１のコンピュータ（１）に対応している。データ移動元Ｉ／Ｏデバイス（１０２）とデータ移動先Ｉ／Ｏデバイス（１０３）とが、Ｉ／Ｏデバイスａ（４ａ）とＩ／Ｏデバイスｂ（４ｂ）とに対応している。ネットワーク（１０４）がネットワーク（３）に対応している。ブリッジ手段（１０５）〜（１０７）が、ネットワークブリッジＡ（２Ａ）、ネットワークブリッジＡ（２Ａ）、およびネットワークブリッジｂ（２ｂ）に対応している。メモリ手段（１０８）がブリッジメモリＡ（２２Ａ）、ブリッジメモリＡ（２２Ａ）、ブリッジメモリｂ（２２ｂ）、およびブリッジメモリｃ（２２ｃ）、に対応している。そして、Ｉ／Ｏデータ移動制御手段（１０９）がＩ／Ｏデータ移動制御部（１１）に対応している。
本願は、２０１１年１０月２８日に、日本に出願された特願２０１１−２３７５９３号に基づき優先権を主張し、その内容をここに援用する。
【産業上の利用可能性】
【００５５】
本発明に係わるＩ／Ｏデバイス制御システムによれば、Ｉ／Ｏデバイスの間でデータを移動する場合に、データの移動を効率的に行うことができるＩ／Ｏデバイス制御システムを提供することができる。
【符号の説明】
【００５６】
１    コンピュータ
２Ａ    ネットワークブリッジＡ
２ａ    ネットワークブリッジａ
２ｂ    ネットワークブリッジｂ
２ｃ    ネットワークブリッジｃ
３    ネットワーク
４ａ    Ｉ／Ｏデバイスａ
４ｂ    Ｉ／Ｏデバイスｂ
５    メモリ空間
１０    Ｉ／Ｏデバイス制御システム
１０ａ    Ｉ／Ｏデバイス制御システム
１１    Ｉ／Ｏデータ移動制御部
１２    最適ブリッジ検索部
１３ａ    Ｉ／Ｏデバイスドライバ部ａ
１３ｂ    Ｉ／Ｏデバイスドライバ部ｂ
１４    ＣＰＵ
１５    バスブリッジ
１６    メインメモリ
１７    ＣＰＵ
２２Ａ    ブリッジメモリＡ
２２ａ    ブリッジメモリａ
２２ｂ    ブリッジメモリｂ１０２  データ移動元Ｉ／Ｏデバイス
１００    Ｉ／Ｏデバイス制御システム
１０１    コンピュータ
１０３    データ移動先Ｉ／Ｏデバイス
１０４    ネットワーク
１０５〜１０７    ブリッジ手段
１０８    メモリ手段
１０９    Ｉ／Ｏデータ移動制御手段
１６１    ブリッジ情報
１６２    コンピュータプログラム
１６３    並列処理管理テーブル
１６２１    Ｉ／Ｏデータ移動制御プログラム
１６２２    最適ブリッジ検索プログラム
１６２３ａ    Ｉ／Ｏデバイスドライバプログラムａ
１６２３ｂ    Ｉ／Ｏデバイスドライバプログラムｂ
【図１】
2013062109.tif 000003
【図２】
2013062109.tif 000004
【図３】
2013062109.tif 000005
【図４】
2013062109.tif 000006
【図５】
2013062109.tif 000007
【図６】
2013062109.tif 000008
【図７】
2013062109.tif 000009
【図８】
2013062109.tif 000010
【図９】
2013062109.tif 000011
【図１０】
2013062109.tif 000012
【国際調査報告】
2013062109.tif 000013
2013062109.tif 000014