JP6146306B2 - I/oデバイス制御システムおよびi/oデバイス制御システムの制御方法 - Google Patents

I/oデバイス制御システムおよびi/oデバイス制御システムの制御方法 Download PDF

Info

Publication number
JP6146306B2
JP6146306B2 JP2013540857A JP2013540857A JP6146306B2 JP 6146306 B2 JP6146306 B2 JP 6146306B2 JP 2013540857 A JP2013540857 A JP 2013540857A JP 2013540857 A JP2013540857 A JP 2013540857A JP 6146306 B2 JP6146306 B2 JP 6146306B2
Authority
JP
Japan
Prior art keywords
data
bridge
memory
movement
data movement
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013540857A
Other languages
English (en)
Other versions
JPWO2013062109A1 (ja
Inventor
鈴木 順
順 鈴木
飛鷹 洋一
洋一 飛鷹
淳一 樋口
淳一 樋口
隆士 吉川
隆士 吉川
輝幸 馬場
輝幸 馬場
義和 渡邊
義和 渡邊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2013540857A priority Critical patent/JP6146306B2/ja
Publication of JPWO2013062109A1 publication Critical patent/JPWO2013062109A1/ja
Application granted granted Critical
Publication of JP6146306B2 publication Critical patent/JP6146306B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Description

本発明は、I/O(Input/Output;入出力)デバイス制御システムおよびI/Oデバイス制御システムの制御方法に係り、特にI/Oデバイス間でデータを移動させる際に用いて好適なI/Oデバイス制御システムおよびI/Oデバイス制御システムの制御方法に関する。
特許文献1に記載されているI/Oデバイス制御システムでは、周辺装置(すなわちI/Oデバイス)を複数のCPU(Central Processing Unit;中央処理装置)間で共有するためにCPUと周辺装置を分散してネットワークに配置することでシステムが構成されている。また、特許文献1に記載されているI/Oデバイス制御システムでは、複数のCPUと周辺装置とが、ネットワークを介してPCIエクスプレス(PCI Express;PCIe)スイッチによって接続されている。
特開2007−219873号公報
特許文献1に記載されているようなPCIeインターフェースでは、2つのI/Oデバイス間でデータを移動する場合、通常、CPUに接続されているバスブリッジやメモリを介してデータが伝送される。したがって、バスブリッジやメモリが2つのI/Oデバイス間のデータ移動において、データ移動帯域のボトルネックになるという課題がある。
また、I/Oデバイス間を移動する全てのデータがメインメモリやバスブリッジを経由するので、これらのデータが通過するメインメモリやバスブリッジを共有して使用するアプリケーションは、I/Oデバイス間のデータ移動時にアプリケーションの動作に一定の影響が及ぶという課題がある。
すなわち、PCIeインターフェースで接続された2つのI/Oデバイスの間でデータを移動させる場合には、その移動速度が制限されたり、CPUで動作するアプリケーションの性能を劣化させてしまったりするという課題があった。
本発明は、上記の課題を解決することができるI/Oデバイス制御システムおよびI/Oデバイス制御システムの制御方法を提供することを目的とする。
上記課題を解決するため、本発明に係わるI/Oデバイス制御システムは、データを移動するデータ移動元I/Oデバイスと、前記データを移動するデータ移動先I/Oデバイスと、前記データの移動を制御するコンピュータとを、ネットワークに接続する複数のブリッジ部と、前記データ移動元I/Oデバイスと前記データ移動先I/Oデバイスとの間を移動する前記データを保持する前記ブリッジ部に設けられたメモリ部と、前記データ移動元I/Oデバイスと、前記データ移動先I/Oデバイスとの間の前記データの移動を仲介する前記ブリッジ部の候補が複数存在する場合、複数の前記ブリッジ部のうち前記データ移動先I/Oデバイスと最も距離が近いブリッジ部を選択する最適ブリッジ検索部と、前記データ移動元I/Oデバイスに前記最適ブリッジ検索部が選択したブリッジ部に設けられたメモリ部に対して前記データの書き込み制御を指示し、前記データ移動先I/Oデバイスに前記最適ブリッジ検索部が選択したブリッジ部に設けられたメモリ部から前記データの読み出し制御を指示する前記コンピュータの内部に設けられたI/Oデータ移動制御部とを備える。
また、本発明に係わるI/Oデバイス制御方法は、データを移動するデータ移動元I/Oデバイスと、前記データを移動するデータ移動先I/Oデバイスと、前記データの移動を制御するコンピュータとを、ネットワークに接続する複数のブリッジ部、及び、前記データ移動元I/Oデバイスと前記データ移動先I/Oデバイスとの間を移動する前記データを保持する前記ブリッジ部に設けられたメモリ部、を備えるI/Oデバイス制御システムの制御方法であって、前記コンピュータが、前記データ移動元I/Oデバイスと、前記データ移動先I/Oデバイスとの間の前記データの移動を仲介する前記ブリッジ部の候補が複数存在する場合、複数の前記ブリッジ部のうち前記データ移動先I/Oデバイスと最も距離が近いブリッジ部を選択することと、前記コンピュータが、前記データ移動元I/Oデバイスに選択した前記ブリッジ部に設けられた前記メモリ部に対して前記データの書き込み制御を指示し、前記データ移動先I/Oデバイスに選択した前記ブリッジ部に設けられた前記メモリ部から前記データの読み出し制御を指示することとを含む。
本発明によれば、I/Oデバイスの間でデータを移動する場合に、移動するデータをネットワークを用いて直接伝送することができるので、I/Oデバイス間のデータの移動を効率的に行うことができる。
本発明の一実施形態の構成を示すブロック図である。 図1に示した実施の形態で用いられるブリッジ情報を示す図である。 図1に示した実施の形態で用いられる並列処理管理テーブルを示す図である。 図1に示した実施の形態で用いられるCPUのメモリ空間を示すブロック図である。 図1に示した実施の形態の動作を示すフローチャートである。 図1に示した実施の形態の動作を示すフローチャートである。 図1に示した実施の形態の動作を示すフローチャートである。 図3に示した並列処理管理テーブルに2個の並列処理を設定した例を示す図である。 本発明に係わる他の実施形態の構成を示すブロック図である。 図1および図9を参照して説明した本発明の実施形態の各構成例を包含する本発明の実施形態の基本的な構成を示すブロック図である。
以下、図面を参照して本発明の実施の形態について説明する。図1は、本発明に係わるI/Oデバイス制御システムの一実施形態の構成を説明するためのブロック図である。図1を参照すると、本発明の実施の形態としてのI/Oデバイス制御システム(10)は、コンピュータ(1)と、ネットワークブリッジA(2A)と、ネットワークブリッジA(2A)と、ネットワークブリッジb(2b)と、ネットワーク(3)と、I/Oデバイスa(4a)と、I/Oデバイスb(4b)とを備えている。
ネットワーク(3)は、有線や無線のLAN(Local Area Network;ローカルエリアネットワーク)、WAN(Wide Area Network;広域通信網)等からなる通信網である。ネットワーク(3)には、ネットワークブリッジA(2A)を介してコンピュータ(1)が接続され、ネットワークブリッジA(2A)を介してI/Oデバイスa(4a)が接続され、そしてネットワークブリッジb(2b)を介してI/Oデバイスb(4b)が接続されている。
I/Oデバイスa(4a)およびI/Oデバイスb(4b)は、ネットワーク機能やストレージの機能を提供するコンピュータ(1)の入出力デバイス(すなわち周辺機器あるいは周辺装置)であり、例えばPCIeやPCI(Peripheral Component Interconnect;ペリフェラル コンポーネント インターコネクト)に準拠するインターフェースを有するデバイスである。
I/Oデバイスa(4a)とI/Oデバイスb(4b)とは、ネットワーク(3)を介してコンピュータ(1)に接続され、コンピュータ(1)との間でまたはI/Oデバイスa(4a)とI/Oデバイスb(4b)との間でデータや制御情報(以下ではデータと制御情報をまとめてデータと称する)を送受信する。
なお、図1では、I/Oデバイス制御システム(10)が2個のI/Oデバイスa(4a)およびI/Oデバイスb(4b)を備える場合を示しているが、3個以上のI/Oデバイスを設けるようにしてもよい。
コンピュータ(1)は、計算処理を行うCPU(14)と、記憶手段を提供するメインメモリ(16)と、CPU(14)とメインメモリ(16)とネットワークブリッジA(2A)とを相互に接続するバスブリッジ(15)とを含んでいる。なお、コンピュータ(1)は、図示していない入力装置、出力装置、周辺装置等を含んでいてもよい。
メインメモリ(16)は、ブリッジ情報(161)と、コンピュータプログラム(162)と、並列処理管理テーブル(163)とを記憶する。ブリッジ情報(161)は、ネットワークブリッジA(2A)、ネットワークブリッジA(2A)、ネットワークブリッジb(2b)等のネットワークブリッジについての情報からなる。コンピュータプログラム(162)は、CPU(14)によって実行される複数種類のソフトウェアプログラムを含んでいる。本実施形態においてコンピュータプログラム(162)は、I/Oデータ移動制御プログラム(1621)と、最適ブリッジ検索プログラム(1622)と、I/Oデバイスドライバプログラムa(1623a)と、I/Oデバイスドライバプログラムb(1623b)とを含んでいる。
また、コンピュータプログラム(162)は、I/Oデバイスa(4a)、I/Oデバイスb(4b)等によるデータの入出力等を制御する図示していないアプリケーションプログラムを含んでいる。このアプリケーションプログラムは、実行されることにより、移動するデータを特定するとともに、このデータのデータ容量を示す情報を取得する。また、このアプリケーションプログラムが実行されることにより、この移動するデータのデータ容量の全てのデータの移動が完了した場合、データの移動が予定されたデータ量の移動が完了したと判定する。
並列処理管理テーブル(163)は、例えばI/Oデバイスa(4a)とI/Oデバイスb(4b)との間において、並列して複数組のデータを移動処理を実行する場合に処理の進捗を管理するために用いられるデータテーブルである。すなわち、並列処理管理テーブル(163)は、I/Oデバイスa(4a)やI/Oデバイスb(4b)等の複数のI/Oデバイス間で、複数組並列に実行される処理として、データを移動する場合の処理の進捗状況を管理するために用いられる。
なお、メインメモリ(16)は、揮発性メモリから構成されていてもよいし、不揮発性メモリから構成されていてもよいし、あるいは揮発性メモリと不揮発性メモリとを組み合わせたものから構成されていてもよい。ただし、メインメモリ(16)に記憶されるブリッジ情報(161)と、コンピュータプログラム(162)と、並列処理管理テーブル(163)とは、コンピュータ(1)が停止した場合に、メインメモリ(16)を構成する不揮発性メモリまたはメインメモリ(16)外に設けられている図示していない不揮発性メモリに格納されるように構成されているものとする。
CPU(14)は、メインメモリ(16)に記憶されているコンピュータプログラム(162)に含まれている複数種類のソフトウェアプログラムを実行することで所定の演算処理を行ったり、コンピュータ(1)内の各部を制御したりする。本実施形態では、特に、CPU(14)が、I/Oデータ移動制御プログラム(1621)を実行することでI/Oデータ移動制御部(11)として機能する。また、CPU(14)は、最適ブリッジ検索プログラム(1622)を実行することで最適ブリッジ検索部(12)として機能する。また、CPU(14)は、I/Oデバイスドライバプログラムa(1623a)を実行することでI/Oデバイスドライバ部a(13a)として機能する。また、CPU(14)は、I/Oデバイスドライバプログラムb(1623b)を実行することでI/Oデバイスドライバ部b(13b)として機能する。
バスブリッジ(15)は、CPU(14)とメインメモリ(16)とネットワークブリッジA(2A)との間で送受信されるデータを中継する装置である。
ネットワークブリッジA(2A)は、制御部A(21A)と、ブリッジメモリA(22A)とを備え、CPU(14)やメインメモリ(16)と、I/Oデバイスa(4a)やI/Oデバイスb(4b)との間で送受信されるデータを、ネットワーク(3)を介して転送する。
制御部A(21A)は、バスブリッジ(15)との間で例えばPCIe、PCI等の所定のプロトコルに従ってデータを入出力する機能を有している。また、ブリッジメモリA(22A)は、制御部A(21A)によって管理され、制御部A(21A)によって転送されるデータを一時的に保持し、データ転送を仲介するために用いられる。
この制御部A(21A)は、PCIe、PCI等の所定のプロトコルに従って生成されたパケットに所定のヘッダー情報等を付加することでカプセル化してネットワーク(3)で用いられている所定のプロトコルのパケットに変換する機能を有している。また、制御部A(21A)は、ネットワーク(3)で用いられている所定のプロトコルに従って生成されたパケットから所定の制御情報を取り除いてデカプセル化してPCIe、PCI等の所定のプロトコルのパケットに変換する機能を有している。さらに、制御部A(21A)は、メインメモリ(16)、I/Oデバイスa(4a)やI/Oデバイスb(4b)等との間でブリッジメモリA(22A)を介してDMA(Direct Memory Access;ダイレクトメモリアクセス)によるデータの転送を制御する機能を有している。
すなわち制御部A(21A)は、I/Oデバイスa(4a)やI/Oデバイスb(4b)等から受信したDMAライトやDMAリードの要求に応じて、I/Oデバイスa(4a)やI/Oデバイスb(4b)等から受信したデータをブリッジメモリA(22A)に書き込んだり、ブリッジメモリA(22A)からデータを読み出してI/Oデバイスa(4a)やI/Oデバイスb(4b)等に送信したりする機能を有している。また、制御部A(21A)は、I/Oデバイスa(4a)、I/Oデバイスb(4b)等のI/Oデバイス間のデータ転送において、DMAライトやDMAリードに対する処理の完了をI/Oデータ移動制御部(11)に対して通知する機能を有している。
ネットワークブリッジA(2A)は、制御部A(21A)と、ブリッジメモリA(22A)とを備え、I/Oデバイスa(4a)と、CPU(14)やメインメモリ(16)あるいはI/Oデバイスb(4b)との間で送受信されるデータを、ネットワーク(3)を介して転送する。
制御部A(21A)は、I/Oデバイスa(4a)との間で例えばPCIe、PCI等の所定のプロトコルに従ってデータを入出力する機能を有している。また、ブリッジメモリA(22A)は、制御部A(21A)によって管理され、制御部A(21A)によって転送されるデータを一時的に保持し、データ転送を仲介するために用いられる。
この制御部A(21A)は、PCIe、PCI等の所定のプロトコルに従って生成されたパケットに所定のヘッダー情報等を付加することでカプセル化してネットワーク(3)で用いられている所定のプロトコルのパケットに変換する機能を有している。また、制御部A(21A)は、ネットワーク(3)で用いられている所定のプロトコルに従って生成されたパケットから所定の制御情報を取り除いてデカプセル化してPCIe、PCI等の所定のプロトコルのパケットに変換する機能を有している。さらに、制御部A(21A)は、コンピュータ(1)やメインメモリ(16)、I/Oデバイスa(4a)やI/Oデバイスb(4b)等との間でブリッジメモリA(22A)を介してDMAによるデータの転送を制御する機能を有している。
すなわち制御部A(21A)は、コンピュータ(1)やI/Oデバイスa(4a)、I/Oデバイスb(4b)等から受信したDMAライトやDMAリードの要求に応じて、コンピュータ(1)やI/Oデバイスa(4a)、I/Oデバイスb(4b)等から受信したデータをブリッジメモリA(22A)に書き込んだり、ブリッジメモリA(22A)からデータを読み出してコンピュータ(1)やI/Oデバイスa(4a)、I/Oデバイスb(4b)等に送信したりする機能を有している。また、制御部A(21A)は、I/Oデバイスa(4a)、I/Oデバイスb(4b)等のI/Oデバイス間のデータ転送において、DMAライトやDMAリードに対する処理の完了をI/Oデータ移動制御部(11)に対して通知する機能を有している。
ネットワークブリッジb(2b)は、制御部b(21b)と、ブリッジメモリb(22b)とを備え、I/Oデバイスb(4b)と、CPU(14)やメインメモリ(16)あるいはI/Oデバイスa(4a)との間で送受信されるデータを、ネットワーク(3)を介して転送する。
制御部b(21b)は、I/Oデバイスb(4b)との間で例えばPCIe、PCI等の所定のプロトコルに従ってデータを入出力する機能を有している。また、ブリッジメモリb(22b)は、制御部b(21b)によって管理され、制御部b(21b)によって転送されるデータを一時的に保持し、仲介するために用いられる。
この制御部b(21b)は、また、PCIe、PCI等の所定のプロトコルに従って生成されたパケットに所定のヘッダー情報等を付加することでカプセル化してネットワーク(3)で用いられている所定のプロトコルのパケットに変換する機能を有している。また、制御部b(21b)は、ネットワーク(3)で用いられている所定のプロトコルに従って生成されたパケットから所定の制御情報を取り除いてデカプセル化してPCIe、PCI等の所定のプロトコルのパケットに変換する機能を有している。さらに、制御部b(21b)は、コンピュータ(1)やメインメモリ(16)、I/Oデバイスa(4a)やI/Oデバイスb(4b)等との間でブリッジメモリb(22b)を介してDMAによるデータの転送を制御する機能を有している。
すなわち制御部b(21b)は、コンピュータ(1)やI/Oデバイスa(4a)、I/Oデバイスb(4b)等から受信したDMAライトやDMAリードの要求に応じて、コンピュータ(1)やI/Oデバイスa(4a)、I/Oデバイスb(4b)等から受信したデータをブリッジメモリb(22b)に書き込んだり、ブリッジメモリb(22b)からデータを読み出してコンピュータ(1)やI/Oデバイスa(4a)、I/Oデバイスb(4b)等に送信したりする機能を有している。また、制御部b(21b)は、I/Oデバイスa(4a)、I/Oデバイスb(4b)等のI/Oデバイス間のデータ転送において、DMAライトやDMAリードに対する処理の完了をI/Oデータ移動制御部(11)に対して通知する機能を有している。
なお、ブリッジメモリA(22A)、ブリッジメモリA(22A)およびブリッジメモリb(22b)の記憶容量は互いに異なっていてもよいし、例えば転送するパケットの最大ペイロード長(すなわちパケット中でヘッダー情報などの制御情報を除いたデータ本体の格納領域の大きさ)が互いに異なっていてもよい。
上述したように、ネットワークブリッジA(2A)は、ネットワークブリッジA(2A)との間とネットワークブリッジb(2b)との間とでPCIeやPCIの通信を伝送することで、コンピュータ(1)がI/Oデバイスa(4a)とI/Oデバイスb(4b)とを使用できるようにする。また、ネットワークブリッジA(2A)とネットワークブリッジb(2b)は、例えば、I/Oデバイスa(4a)とI/Oデバイスb(4b)との間でPCIeやPCIの通信を伝送することで、I/Oデバイスa(4a)とI/Oデバイスb(4b)とがDMAによって直接データを移動できるようにする。その際、典型的にはネットワークブリッジA(2A)は、ネットワークブリッジA(2A)と、ネットワークブリッジb(2b)との間でPCIe等のパケットをネットワーク(3)のパケットにカプセル化し伝送する。
I/Oデバイスドライバ部a(13a)は、CPU(14)によってI/Oデバイスドライバプログラムa(1623a)を実行することで、I/Oデバイスa(4a)に対しデータのライトやリードを行うコマンドを発行する。また、I/Oデバイスドライバ部b(13b)は、CPU(14)によってI/Oデバイスドライバプログラムb(1623b)を実行することで、I/Oデバイスb(4b)に対しデータのライトやリードを行うコマンドを発行する。
I/Oデータ移動制御部(11)は、CPU(14)によってI/Oデータ移動制御プログラム(1621)を実行することで、I/Oデバイスa(4a)からI/Oデバイスb(4b)へのデータ移動や、I/Oデバイスb(4b)からI/Oデバイスa(4a)へのデータ移動を制御する。その際、I/Oデータ移動制御部(11)は、データ移動の仲介メモリとして最適なブリッジメモリ(この場合、ブリッジメモリA(22A)、ブリッジメモリA(22A)またはブリッジメモリb(22b)のいずれか)を保持するネットワークブリッジとして、ネットワークブリッジA(2A)、ネットワークブリッジA(2A)またはネットワークブリッジb(2b)のうちいずれかをデータの移動に利用するメモリであるかを決定するように最適ブリッジ検索部(12)に指示する。
例えば、I/Oデバイスa(4a)からI/Oデバイスb(4b)へデータを移動する場合、まずI/Oデータ移動制御部(11)は、最適ブリッジ検索部(12)によって後述するようにして選択された最適なブリッジメモリを保持するネットワークブリッジの情報を受けとる。なお、最適として決定すべき優先順位や条件は、予め設定されているものとする。
そして、I/Oデータ移動制御部(11)は、最適ブリッジ検索部(12)によって決定された最適なネットワークブリッジが保持するブリッジメモリ(この場合、ブリッジメモリA(22A)、ブリッジメモリA(22A)またはブリッジメモリb(22b)のいずれか)に対し、I/Oデバイスa(4a)から移動するデータを、I/Oデバイス部a(13a)を呼出すことでI/Oデバイスa(4a)によってDMAでライトさせる。また、I/Oデータ移動制御部(11)は、I/Oデバイスドライバ部b(13b)を呼出し、I/Oデバイスb(4b)に当該ブリッジメモリからデータ(この場合、I/Oデバイスa(4a)によってDMAでライトされたデータ)をDMAでリードさせる。
この場合、I/Oデータ移動制御部(11)からみたとき、I/Oデータ移動制御部(11)は、I/Oデバイスa13aからブリッジメモリへのデータのリードと、ブリッジメモリからI/Oデバイスb13bへのデータのライトのそれぞれの処理において、複数の処理(例えば転送対象のアドレス範囲を複数に分割した分割範囲毎の複数組のデータ転送処理)を同時に行うことが可能である。つまり、I/Oデータ移動制御部(11)は、複数のデータ移動処理を同時に行うことで、I/Oデバイス間におけるデータ移動の帯域を最大化することができる。ここで、I/Oデータ移動制御部(11)からみたときのブリッジメモリへのデータのリードとは、I/Oデバイスa13aのDMAライトによって行われる処理であり、I/Oデバイスb13bへのデータのライトとはI/Oデバイスb13bのDMAリードによって行われる処理である。
なお、上記の例とは逆にI/Oデバイスb(4b)からI/Oデバイスa(4a)へデータを移動する場合、I/Oデータ移動制御部(11)は、最適ブリッジ検索部(12)から最適なブリッジメモリを保持するネットワークブリッジの情報を受けると、最適なネットワークブリッジが保持するブリッジメモリ(この場合、ブリッジメモリA(22A)、ブリッジメモリA(22A)またはブリッジメモリb(22b)のいずれか)に対し、I/Oデバイスb(4b)から移動するデータを、I/Oデバイスドライバ部b(13b)を呼出すことでI/Oデバイスb(4b)によってDMAでライトさせる。また、I/Oデータ移動制御部(11)は、I/Oデバイス部a(13a)を呼出し、I/Oデバイスa(4a)に当該ブリッジメモリからデータ(この場合、I/Oデバイスb(4b)によってDMAでライトされたデータ)をDMAでリードさせる。
次に、ブリッジ情報(161)を図2に示す。ブリッジ情報(161)は、各ネットワークブリッジA(2A)、ネットワークブリッジA(2A)およびネットワークブリッジb(2b)と、各ネットワークブリッジA(2A)およびネットワークブリッジb(2b)が接続しているI/Oデバイスa(4a)およびI/Oデバイスb(4b)とをそれぞれ対応させる情報を含んでいる。また、ブリッジ情報(161)は、各ネットワークブリッジA(2A)、ネットワークブリッジA(2A)およびネットワークブリッジb(2b)が保持する各ブリッジメモリA(22A)、ブリッジメモリa(22a)およびブリッジメモリb(22b)に対してリードおよびライト処理で使用可能な最大パケットペイロード長を保持する。一般に最大ペイロード長が長いほどメモリアクセス効率は高い。
ここで、ブリッジ情報(161)が管理するブリッジの情報は、図2に示すように、ブリッジ名、接続I/Oデバイスを表す情報、最大ペイロード長を表す情報の3つでなくても良い。図2に示した例では、ブリッジ情報(161)が、ネットワークブリッジA2A、ネットワークブリッジa2aおよびネットワークブリッジb2bについての情報のほか、ネットワークブリッジnについての情報等を含んでいる。
次に、並列処理テーブル(163)を図3に示す。並列処理テーブル(163)は、並列して実行するデータ移動処理毎に、移動元I/Oデバイス、移動先I/Oデバイス、移動するデータのデータ長、移動処理中に既に移動したデータのデータ長、移動処理完了の有無を示すフラグ、移動元I/Oデバイスから移動するデータのアドレス、および移動先I/Oデバイスでデータをライトするアドレスを表す情報を対応付けて保持する。例えば、I/Oデバイスa(4a)からI/Oデバイスb(4b)にデータを移動する場合、並列処理テーブル(163)は、移動元のI/Oデバイスa(4a)、移動先のI/Oデバイスb(4b)、移動するデータのデータ長、既に移動したデータのデータ長、移動処理完了を示すフラグ、I/Oデバイスa(4a)から移動するデータのI/Oデバイスa(4a)内の先頭アドレス、およびI/Oデバイスb(4b)においてデータをライトするI/Oデバイスb(4b)内の先頭アドレスを表す情報を保持する。これらのアドレスは、次に説明するコンピュータ(1)がアクセス可能なメモリ空間5にマップされたものを用いて表される。なお、このメモリ空間5は、コンピュータ(1)の外部に設けられたメモリによって構成される。
次に、コンピュータ(1)のメモリ空間5を図4に示す。図1のI/Oデバイス制御システム(10)では、ネットワークブリッジA(2A)と、ネットワークブリッジA(2A)と、ネットワークブリッジb(2b)とが、図3に示すように、メモリ空間5に、すなわちCPU(14)によってアクセス可能なアドレスが割り当てられた記憶領域に、マップされる。ここで、ブリッジメモリA(22A)、ブリッジメモリA(22A)およびブリッジメモリb(22b)は、メモリ空間5においてネットワークブリッジA(2A)、ネットワークブリッジA(2A)、およびネットワークブリッジb(2b)が割り当てられた記憶領域内にそれぞれマップされている。
したがって、I/Oデバイスa(4a)やI/Oデバイスb(4b)は、ブリッジメモリA(22A)、ブリッジメモリA(22A)およびブリッジメモリb(22b)がマップされたコンピュータ(1)のメモリ空間5の所定のアドレスにアクセスすることにより、ブリッジメモリA(22A)、ブリッジメモリA(22A)およびブリッジメモリb(22b)にアクセスすることができる。したがって、I/Oデバイスa(4a)やI/Oデバイスb(4b)がPCIeやPCIに準拠したインターフェースを有している場合には、リードやライトの対象アドレスをブリッジメモリA(22A)、ブリッジメモリA(22A)やブリッジメモリb(22b)に対応したものにプログラム上で設定することで、特別なソフトウェア上あるいはハードウェア上の変更無しでPCIeやPCIに準拠した手順によってブリッジメモリA(22A)、ブリッジメモリA(22A)やブリッジメモリb(22b)にアクセスすることができる。
上記のように、I/Oデバイスa(4a)は、図4のようにしてメモリマップされたネットワークブリッジのアドレス領域にアクセスすることで、ネットワークブリッジA(2A)と、ネットワークブリッジA(2A)と、ネットワークブリッジb(2b)とがそれぞれ保持するブリッジメモリA(22A)と、ブリッジメモリA(22A)と、ブリッジメモリb(22b)とにデータのリードおよびライトを行うことができる。同様に、I/Oデバイスb(4b)は、図4のようにしてメモリマップされたネットワークブリッジのアドレス領域にアクセスすることで、ネットワークブリッジA(2A)と、ネットワークブリッジA(2A)と、ネットワークブリッジb(2b)とがそれぞれ保持するブリッジメモリA(22A)と、ブリッジメモリA(22A)と、ブリッジメモリb(22b)とにデータのリードおよびライトを行うことができる。
なお、図4に示した例では、メモリ空間5に、ネットワークブリッジA(2A)、ネットワークブリッジa(2a)およびネットワークブリッジb(2b)の3つのネットワークブリッジのほか、ネットワークブリッジnのアドレス等が割り当てられている。
次に最適ブリッジ検索部(12)は、CPU(14)によって最適ブリッジ検索プログラム(1622)を実行することで、I/Oデバイス間でデータを移動する際に使用するのに適したブリッジメモリを選択する。最適ブリッジ検索部(12)は、ブリッジ情報(161)を参照し、例えばI/Oデバイスa(4a)からI/Oデバイスb(4b)にデータを移動するための仲介メモリとして最適な(すなわちより効率的にデータ転送を行うことができる)ブリッジメモリを保持するネットワークブリッジを選択する。
本実施の形態においてI/Oデバイスa(4a)、I/Oデバイスb(4b)等のインターフェースとして利用されるPCIeでは、DMAライトは完了通知を待たないポステッド(Posted)型のアクセスである。
一方、DMAリードは、リードするデータの到着を完了通知とするノンポステッド(non−Posted)型のアクセスであり、次のリクエストを発行するためには、前のリクエストの完了を待つ必要がある。このためDMAリードはDMAライトより性能に対するレイテンシ(すなわち要求応答間の遅延時間)の影響が大きい。
したがって、DMAリードのレイテンシによる影響を小さくするようにブリッジメモリを選択できれば、I/Oデバイス間のデータ移動の効率を向上させることができる。
そこで最適ブリッジ検索部(12)は、このレイテンシの影響を小さくするため、DMAリードを行う側のI/Oデバイスとブリッジメモリとの間のデータ伝送時間が、DMAライトを行う側のI/Oデバイスとブリッジメモリとの間のデータ伝送時間よりも小さくなるようにブリッジメモリを選択する。
本実施形態では、例えばI/Oデバイスa(4a)からI/Oデバイスb(4b)にデータを移動する場合、I/Oデバイスa(4a)は仲介メモリ(すなわちブリッジメモリ)にDMAを用いてデータをライトし、I/Oデバイスb(4b)は仲介メモリ(すなわちブリッジメモリ)からDMAを用いてデータをリードする。したがって、この場合、最適ブリッジ検索部(12)によって、データ移動先のI/Oデバイスb(4b)との間のデータ伝送時間が最も小さい(すなわち距離が小さい)ブリッジメモリを選択することで、DMAリードのレイテンシを小さくすることができる。つまり、最適ブリッジ検索部(12)は、データの移動先に最も近いブリッジメモリを保持するネットワークブリッジをブリッジ情報(161)を参照することで検索し、この場合、データ移動先であるI/Oデバイスb(4b)と接続されているネットワークブリッジb(2b)を最適なブリッジとして選択する。
なお、最適ブリッジ検索部(12)によるネットワークブリッジの選択は上記の手法に限定されない、例えば、最適ブリッジ検索部(12)は、I/Oデバイスb(4b)に対する距離で最適ブリッジを選択するのではなく、ブリッジ情報(161)で保持された、各ブリッジの最大ペイロード長を検索し、最も大きいペイロード長を保持するブリッジを最適なネットワークメモリを保持するブリッジとして選択することも可能である。
なお、どのような条件に基づき、最適ブリッジを選択するかは、予め設定されており、最適ブリッジ検索部(12)は、この設定されている条件に基づき、I/Oデバイス間のデータの移動を仲介するブリッジメモリのうち、最適ブリッジを選択する。例えば、データ移動先I/Oデバイスに最も近いブリッジメモリを最適ブリッジとして選択することが決定されている場合、複数のブリッジメモリのうち、データ移動先I/Oデバイスに最も近いブリッジメモリを、データ移動元I/Oデバイスがデータを書き込むメモリ、あるいはデータ移動先I/Oデバイスがデータを読み出すメモリ手段として決定する。同様にして、例えば、データのリードやライトを行うパケットのペイロード長が最も大きいブリッジメモリを最適ブリッジとして選択することが決定されている場合、複数のブリッジメモリのうち、データのリードやライトを行うパケットのペイロード長が最も大きいブリッジメモリを、データ移動元I/Oデバイスがデータを書き込むメモリ、あるいはデータ移動先I/Oデバイスがデータを読み出すメモリ手段として決定する。また、例えば、移動先のI/Oデバイスとの距離とペイロード長の両方を考慮してデータの移動に最適なブリッジメモリを最適ブリッジとして選択することが決定されている場合、複数のブリッジメモリのうち、移動先のI/Oデバイスとの距離とペイロード長の両方に基づきデータの移動に最適なブリッジメモリであると判断したブリッジメモリを、データ移動元I/Oデバイスがデータを書き込むメモリ、あるいはデータ移動先I/Oデバイスがデータを読み出すメモリ手段として決定する。
また、最適なネットワークブリッジの選択には、移動先I/Oデバイスb(4b)との距離と、最大ペイロード長の両方を考慮し、これらの要因を含む評価式で最も評価されるブリッジを最適なネットワークメモリを保持するブリッジとして選択することも可能である。
すなわち、最適ブリッジ検索部(12)は、I/Oデバイス間のデータの移動を仲介するブリッジメモリの候補が複数ある場合に、その中でデータ移動先I/Oデバイスに最も近いブリッジメモリか、データのリードやライトを行うパケットのペイロード長が最も大きいブリッジメモリか、または移動先のI/Oデバイスとの距離とペイロード長の両方を考慮してデータの移動に最適なブリッジメモリを選択する。
次に図1のブロック図および図5のフローチャートを参照して本実施の形態の動作について説明する。なお、図5に示した動作例は、I/Oデバイスa(4a)からI/Oデバイスb(4b)にデータを移動する場合を示している。また、I/Oデバイスa(4a)およびI/Oデバイスb(4b)のインターフェースはPCIeであるとする。
いま、CPU(14)で実行されている所定のアプリケーションプログラムがI/Oデータ移動制御部(11)を呼び出して、I/Oデバイスa(4a)からI/Oデバイスb(4b)へのデータ移動を指示したとする。この場合、まず、I/Oデータ移動制御部(11)は、I/Oデバイスa(4a)からI/Oデバイスb(4b)へのデータ移動を仲介する最適なブリッジメモリを保持するネットワークブリッジを、最適ブリッジ検索部(12)に問い合わせる(ステップA1)。ここでは最適ブリッジ検索部(12)が、I/Oデバイスb(4b)に最も近いネットワークブリッジを最適なブリッジであると判定する場合を考える。
この場合、最適ブリッジ検索部(12)は、ブリッジ情報(161)を参照し、I/Oデバイスb(4b)と接続するネットワークブリッジb(2b)を最適なブリッジと判定し、I/Oデータ移動制御部(11)に伝える(ステップA2)。
次に、I/Oデータ移動制御部(11)は、I/Oデバイス部a(13a)を呼出し、I/Oデバイスa(4a)に、ブリッジメモリb(22b)へDMAでデータをライトさせる(ステップA3)。
データがブリッジメモリb(22b)にライトされると、制御部b(21b)によってI/Oデータ移動制御部(11)が呼び出される。
I/Oデータ移動制御部(11)は、続いてI/Oデバイスドライバ部b(13b)を呼出し、ブリッジメモリb(22b)のデータをI/Oデバイスb(4b)によってDMAでリードさせる(ステップA4)。
データのリードが完了すると、制御部b(21b)によってI/Oデータ移動制御部(11)が再度呼び出される。
I/Oデータ移動制御部(11)は、I/Oデバイスa(4a)からI/Oデバイスb(4b)に移動したデータ量が、予定した容量に達したか、あるいは他の終了条件に該当した場合、データ移動処理を完了する(ステップA5でYesの場合)。
また、終了条件に該当しない場合、I/Oデータ移動制御部(11)は、ステップA3とステップA4の処理を繰り返す(ステップA5でNoの場合)。
このようにして、I/Oデータ移動制御部(11)は、データ移動元I/Oデバイスによるブリッジメモリに対するデータのライトと、データ移動先のI/Oデバイスによるブリッジメモリからのデータのリードの処理を、予定されたデータ量の移動が完了するまで繰り返して実行する。つまり、I/Oデータ移動制御部(11)は、アプリケーションプログラムを実行した際に取得した“移動するデータのデータ量を示す情報”に基づき、このデータ量についてのデータの移動が完了するまで、データ移動元I/Oデバイスに対する書き込み制御を指示するとともに、データ移動先I/Oデバイスからの読み出し制御を指示する。
ここでステップA3の処理では、I/Oデバイスa(4a)が例えばストレージデバイスのようにI/Oデバイス部a(13a)が発行したコマンドをトリガとしてDMA処理を開始するデバイスの場合、I/Oデータ移動制御部(11)はステップA3の処理の度にI/Oデバイス部a(13a)を呼び出す必要がある。
一方、I/Oデバイスa(4a)が例えばネットワークデバイスに見られるように、外部からのデータ入力をトリガとしてDMA処理を開始するデバイスの場合、I/Oデータ移動制御部(11)はステップA3の処理の度にI/Oデバイス部a(13a)を呼び出す必要はない。
次に、図6および図7を参照して、データ移動を行う場合の動作について説明する。図6および図7に示した動作例は、I/Oデバイスa(4a)からI/Oデバイスb(4b)にデータを移動する処理を複数組実行する場合を示している。すなわち、図6および図7に示した動作例では、データ移動元のI/Oデバイスと、データ移動先のI/Oデバイスとの間のデータ移動が複数組行われる。また、I/Oデバイスa(4a)およびI/Oデバイスb(4b)のインターフェースはPCIeであるとする。なお、図5に示した処理に対応する処理には同一の符号を用いている。
図6を参照すると、データ移動を行う動作は、図5と比較してステップA3〜A5に替えてステップB1とステップB2とを含む点で異なる。I/Oデータ移動制御部(11)は、ステップB1において、並列処理管理テーブル(163)に移動させるデータのアドレスとデータ長に関する情報を設定する(ステップB1)。
図8に並列処理管理テーブル(163)の設定例を示した。図8に示した例では、I/Oデバイスa(4a)からI/Oデバイスb(4b)へデータを移動する2つの処理を並列処理管理テーブル(163)に設定している。図8の並列処理管理テーブル(163)では、移動元I/Oデバイスa(4a)から移動するデータのアドレスを「a1」および移動先I/Oデバイスb(4b)でデータをライトするアドレスを「b1」とする1個の転送処理と、移動元I/Oデバイスa(4a)から移動するデータのアドレスを「a2」および移動先I/Oデバイスb(4b)でデータをライトするアドレスを「b2」とするもう1個の転送処理との2個の処理が設定されている。
続いてI/Oデータ移動制御部(11)は、I/Oデバイスa(4a)からI/Oデバイスb(4b)にデータを移動させる処理を2つ以上(すなわちn個の処理を)開始する(ステップB2)。
図7は(すなわち例えば時分割で)実行されるI/Oデバイスa(4a)からI/Oデバイスb(4b)へのデータ移動処理の1つを示すフローチャートである。初めにI/Oデータ移動制御部(11)が並列処理管理テーブル(163)を参照してI/Oデバイス部a(13a)にデータの転送に用いる所定の情報を設定する。
次に、I/Oデータ移動制御部(11)が、I/Oデバイス部a(13a)に対して、I/Oデバイスa(4a)への所定のコマンドの発行を指示する。ここでI/Oデバイス部a(13a)が、I/Oデバイスa(4a)にブリッジメモリb(22b)に対しDMAでデータをライトさせる(ステップB3)。
続いてI/Oデータ移動制御部(11)によってI/Oデバイスドライバ部b(13b)が呼び出され、I/Oデバイスドライバ部b(13b)がI/Oデバイスb(4b)にブリッジメモリb(22b)からDMAでデータをリードさせる(ステップB4)。
次に、I/Oデータ移動制御部(11)が、データ移動処理において完了したデータ移動の情報で並列処理管理テーブル(163)を更新する(ステップB5)。
ここで並列処理管理テーブルに記録された移動済みデータが、予定した移動データ量に達した場合、あるいは、並列処理管理テーブル(163)の移動処理終了フラグがアサートされている場合、データ移動処理は完了する。
一方、移動データ量に達していない場合、あるいは移動処理終了フラグがアサートされていない場合、I/Oデータ移動制御部(11)は、ステップB3から処理を繰り返す(ステップB6)。
本実施の形態ではI/Oデバイスが2つの場合を示したが、I/Oデバイスの数はこれに制限されず、任意の数のデバイスを保持するシステムが実現可能である。この場合、データの移動元のI/Oデバイスと、移動先のI/Oデバイスは、複数のI/Oデバイスの中の任意のデバイスを選択することが可能である。
また、本実施の形態ではI/Oデバイス間のデータ移動を仲介するメモリとして、ネットワークブリッジが保持するメモリを示したが、ネットワークブリッジと仲介メモリが一体として実装されている必要はなく、仲介メモリを別の要素として実現し、実現したメモリをネットワークに接続して用いる構成も可能である。図9は、図1のI/Oデバイス制御システム(10)にネットワークブリッジc(2c)を追加した本発明に係わる他の実施形態としてのI/Oデバイス制御システム(10)aを示すブロック図である。
図9のネットワークブリッジc(2c)は、ネットワークブリッジA(2A)やネットワークブリッジb(2b)と同様の構成を有し、制御部a(21a)や制御部b(21b)に対応する制御部c(21c)を有するとともに、ブリッジメモリa(22a)やブリッジメモリb(22b)に対応するブリッジメモリc(22c)を有している。
ただし、ネットワークブリッジc(2c)には、I/Oデバイスは直接接続されていない。ブリッジメモリc(22c)は、図1の構成と同様にして、I/Oデバイスa(4a)やI/Oデバイスb(4b)によってI/Oデバイス間のデータ移動の際の仲介メモリとして使用することができる。
次に、上記に示した実施形態の効果について説明する。上記の実施形態では、ネットワークで接続された2以上のI/Oデバイスの間のデータ移動を、ネットワークブリッジが保持するブリッジメモリを介して行う。これにより、移動するデータがコンピュータのメインメモリやバスブリッジを通過する必要がなく、メインメモリやバスブリッジの帯域の制限を受けずに高速にI/Oデバイス間のデータ移動を行うことができる。また、移動するデータがメインメモリやバスブリッジを通過しないため、これらを使用する他のアプリケーションプログラムの性能に影響を与えずにI/Oデバイス間のデータ移動を行うことができる。
なお、本発明は、コンピュータシステム、ネットワークシステム、ストレージシステム、組み込みシステム、あるいは特殊装置において、I/Oデバイス間で高速にデータを移動する用途に適用できる。また、これらのシステムにおいて、CPUやメモリバス、I/Oバス資源を消費せずにI/Oデバイス間のデータ移動を行うといった用途にも適用できる。
また、本発明の実施形態は上記のものに限定されず、例えば、1つのネットワークブリッジに複数のI/Oデバイスを接続できるようにしたり、1つのネットワークブリッジに複数のブリッジメモリを設けるようにしたりする変更等を適宜行うことができる。また、図1のI/Oデータ移動制御部(11)は、例えばコンピュータ(1)内のCPU(14)以外の図示していないCPUによって実行するようにしたり、コンピュータ(1)外の図示していないCPUによって実行するようにしたりすることができる。
なお、図1および図9に示した本発明の各実施の形態を包含する本発明の実施形態の基本的な構成をブロック図に示すと、図10に示すようになる。図10に示すように、本発明の実施形態の基本的な構成では、I/Oデバイス制御システム(10)bが、コンピュータ(101)と、データを移動するデータ移動元I/Oデバイス(102)と、データを移動するデータ移動先I/Oデバイス(103)とを、ネットワーク(104)に接続する複数のブリッジ手段(105)、(106)、(107)と、データ移動元I/Oデバイス(102)とデータ移動先I/Oデバイス(103)との間のデータの移動をコンピュータ(101)の外部で仲介するメモリ手段(108)と、データ移動元I/Oデバイス(102)にメモリ手段(108)に対してデータをライトさせ、データ移動先I/Oデバイス(103)にメモリ手段(108)からデータをリードさせるI/Oデータ移動制御手段(109)とを備えている。
ここで、メモリ手段(108)は、ブリッジ手段(105)〜(107)内に実装されていてもよいし、あるいは例えばネットワーク(3)にブリッジ手段(105)〜(107)とは異なる中継手段を介して接続される等してブリッジ手段(105)〜(107)外に設けられていてもよい。
この図10のI/Oデバイス制御システム(10)bの各構成要素と、図1に示したI/Oデバイス制御システム(10)の各構成要素との対応は次のとおりである。コンピュータ(101)が図1のコンピュータ(1)に対応している。データ移動元I/Oデバイス(102)とデータ移動先I/Oデバイス(103)とが、I/Oデバイスa(4a)とI/Oデバイスb(4b)とに対応している。ネットワーク(104)がネットワーク(3)に対応している。ブリッジ手段(105)〜(107)が、ネットワークブリッジA(2A)、ネットワークブリッジA(2A)、およびネットワークブリッジb(2b)に対応している。メモリ手段(108)がブリッジメモリA(22A)、ブリッジメモリA(22A)、ブリッジメモリb(22b)、およびブリッジメモリc(22c)、に対応している。そして、I/Oデータ移動制御手段(109)がI/Oデータ移動制御部(11)に対応している。
本願は、2011年10月28日に、日本に出願された特願2011−237593号に基づき優先権を主張し、その内容をここに援用する。
本発明に係わるI/Oデバイス制御システムによれば、I/Oデバイスの間でデータを移動する場合に、データの移動を効率的に行うことができるI/Oデバイス制御システムを提供することができる。
1 コンピュータ
2A ネットワークブリッジA
2a ネットワークブリッジa
2b ネットワークブリッジb
2c ネットワークブリッジc
3 ネットワーク
4a I/Oデバイスa
4b I/Oデバイスb
5 メモリ空間
10 I/Oデバイス制御システム
10a I/Oデバイス制御システム
11 I/Oデータ移動制御部
12 最適ブリッジ検索部
13a I/Oデバイスドライバ部a
13b I/Oデバイスドライバ部b
14 CPU
15 バスブリッジ
16 メインメモリ
17 CPU
22A ブリッジメモリA
22a ブリッジメモリa
22b ブリッジメモリb102 データ移動元I/Oデバイス
100 I/Oデバイス制御システム
101 コンピュータ
103 データ移動先I/Oデバイス
104 ネットワーク
105〜107 ブリッジ手段
108 メモリ手段
109 I/Oデータ移動制御手段
161 ブリッジ情報
162 コンピュータプログラム
163 並列処理管理テーブル
1621 I/Oデータ移動制御プログラム
1622 最適ブリッジ検索プログラム
1623a I/Oデバイスドライバプログラムa
1623b I/Oデバイスドライバプログラムb

Claims (8)

  1. データを移動するデータ移動元I/Oデバイスと、前記データを移動するデータ移動先I/Oデバイスと、前記データの移動を制御するコンピュータとを、ネットワークに接続する複数のブリッジ部と、
    前記データ移動元I/Oデバイスと前記データ移動先I/Oデバイスとの間を移動する前記データを保持する前記ブリッジ部に設けられたメモリ部と、
    前記データ移動元I/Oデバイスと、前記データ移動先I/Oデバイスとの間の前記データの移動を仲介する前記ブリッジ部の候補が複数存在する場合、複数の前記ブリッジ部のうち前記データ移動先I/Oデバイスと最も距離が近いブリッジ部を選択する最適ブリッジ検索部と、
    前記データ移動元I/Oデバイスに前記最適ブリッジ検索部が選択したブリッジ部に設けられたメモリ部に対して前記データの書き込み制御を指示し、前記データ移動先I/Oデバイスに前記最適ブリッジ検索部が選択したブリッジ部に設けられたメモリ部から前記データの読み出し制御を指示する前記コンピュータの内部に設けられたI/Oデータ移動制御部と
    を備えることを特徴とするI/Oデバイス制御システム。
  2. 前記データ移動元I/Oデバイスおよび前記データ移動先I/Oデバイスは、前記コンピュータがアクセス可能なメモリ空間上においてマップされた前記ブリッジ部のアドレスを用いて前記メモリ部にアクセスする請求項1に記載のI/Oデバイス制御システム。
  3. 前記最適ブリッジ検索部は、
    前記データ移動元I/Oデバイスと、前記データ移動先I/Oデバイスとの間の前記データの移動を仲介する前記ブリッジ部の候補が複数存在する場合、複数の前記ブリッジ部のうち前記データ移動先I/Oデバイスとの距離及びペイロード長の両方に基づいて、前記ブリッジ部を選択する、
    請求項1または2に記載のI/Oデバイス制御システム。
  4. 前記データ移動元I/Oデバイスによる前記メモリ部に対するデータの書き込み制御と、前記データ移動先I/Oデバイスによる前記メモリ部からのデータの読み出し制御の処理を、前記データの移動が予定されたデータ量の移動が完了するまで繰り返す請求項1から3のいずれか1項に記載のI/Oデバイス制御システム。
  5. データを移動するデータ移動元I/Oデバイスと、前記データを移動するデータ移動先I/Oデバイスと、前記データの移動を制御するコンピュータとを、ネットワークに接続する複数のブリッジ部、及び、前記データ移動元I/Oデバイスと前記データ移動先I/Oデバイスとの間を移動する前記データを保持する前記ブリッジ部に設けられたメモリ部、を備えるI/Oデバイス制御システムの制御方法であって、
    前記コンピュータが、前記データ移動元I/Oデバイスと、前記データ移動先I/Oデバイスとの間の前記データの移動を仲介する前記ブリッジ部の候補が複数存在する場合、複数の前記ブリッジ部のうち前記データ移動先I/Oデバイスと最も距離が近いブリッジ部を選択することと、
    前記コンピュータが、前記データ移動元I/Oデバイスに選択した前記ブリッジ部に設けられた前記メモリ部に対して前記データの書き込み制御を指示し、前記データ移動先I/Oデバイスに選択した前記ブリッジ部に設けられた前記メモリ部から前記データの読み出し制御を指示することと
    を含むI/Oデバイス制御システムの制御方法。
  6. 前記コンピュータがアクセス可能なメモリ空間上においてマップされた前記ブリッジ部のアドレスを用いて前記メモリ部にアクセスすること
    を含む請求項5に記載のI/Oデバイス制御システムの制御方法。
  7. 前記データ移動元I/Oデバイスと、前記データ移動先I/Oデバイスとの間の前記データの移動を仲介する前記ブリッジ部の候補が複数存在する場合、複数の前記ブリッジ部のうち前記データ移動先I/Oデバイスとの距離及びペイロード長の両方に基づいて、前記ブリッジ部を選択すること
    を含む請求項5または6に記載のI/Oデバイス制御システムの制御方法。
  8. 前記データ移動元I/Oデバイスによる前記メモリ部に対するデータの書き込み制御と、前記データ移動先I/Oデバイスによる前記メモリ部からのデータの読み出し制御の処理を、前記データの移動が予定されたデータ量の移動が完了するまで繰り返すこと
    を含む請求項6または7に記載のI/Oデバイス制御システムの制御方法。
JP2013540857A 2011-10-28 2012-10-26 I/oデバイス制御システムおよびi/oデバイス制御システムの制御方法 Active JP6146306B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013540857A JP6146306B2 (ja) 2011-10-28 2012-10-26 I/oデバイス制御システムおよびi/oデバイス制御システムの制御方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2011237593 2011-10-28
JP2011237593 2011-10-28
PCT/JP2012/077795 WO2013062109A1 (ja) 2011-10-28 2012-10-26 I/oデバイス制御システムおよびi/oデバイス制御方法
JP2013540857A JP6146306B2 (ja) 2011-10-28 2012-10-26 I/oデバイス制御システムおよびi/oデバイス制御システムの制御方法

Publications (2)

Publication Number Publication Date
JPWO2013062109A1 JPWO2013062109A1 (ja) 2015-04-02
JP6146306B2 true JP6146306B2 (ja) 2017-06-14

Family

ID=48167933

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013540857A Active JP6146306B2 (ja) 2011-10-28 2012-10-26 I/oデバイス制御システムおよびi/oデバイス制御システムの制御方法

Country Status (3)

Country Link
US (1) US20140281053A1 (ja)
JP (1) JP6146306B2 (ja)
WO (1) WO2013062109A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102529761B1 (ko) * 2021-03-18 2023-05-09 에스케이하이닉스 주식회사 PCIe 디바이스 및 그 동작 방법
KR102496994B1 (ko) 2021-03-23 2023-02-09 에스케이하이닉스 주식회사 PCIe 인터페이스 장치 및 그 동작 방법

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5307345A (en) * 1992-06-25 1994-04-26 Digital Equipment Corporation Method and apparatus for cut-through data packet transfer in a bridge device
JPH11232213A (ja) * 1998-02-13 1999-08-27 Nec Corp 入出力装置におけるデータ転送方式
JP4670676B2 (ja) * 2006-02-17 2011-04-13 日本電気株式会社 スイッチ及びネットワークブリッジ装置
US9003077B2 (en) * 2011-09-30 2015-04-07 Oracle International Corporation Sharing IOMMU mappings across devices in a DMA group

Also Published As

Publication number Publication date
JPWO2013062109A1 (ja) 2015-04-02
US20140281053A1 (en) 2014-09-18
WO2013062109A1 (ja) 2013-05-02

Similar Documents

Publication Publication Date Title
US9934160B1 (en) Bit-mapped DMA and IOC transfer with dependency table comprising plurality of index fields in the cache for DMA transfer
US9411644B2 (en) Method and system for work scheduling in a multi-chip system
JP4908017B2 (ja) Dmaデータ転送装置及びdmaデータ転送方法
US10409746B2 (en) Memory access control device and control method of memory access
JP2015537310A (ja) データ処理システム及びデータ処理方法
US9471521B2 (en) Communication system for interfacing a plurality of transmission circuits with an interconnection network, and corresponding integrated circuit
JP2020113137A (ja) ストレージ装置
US11243714B2 (en) Efficient data movement method for in storage computation
JP2006309512A (ja) マルチプロセッサシステム、及びマルチプロセッサシステムのメッセージ伝達方法
CN106055504B (zh) 控制数据传输的方法、装置及计算机设备
JP6146306B2 (ja) I/oデバイス制御システムおよびi/oデバイス制御システムの制御方法
JP2008541276A (ja) 同時読み出し応答確認拡張ダイレクト・メモリ・アクセス・ユニット
JP5158576B2 (ja) 入出力制御システム、入出力制御方法、及び、入出力制御プログラム
US10917198B2 (en) Transfer protocol in a data processing network
JP4856413B2 (ja) 演算処理装置、情報処理装置、及び演算処理装置の制御方法
JP4170330B2 (ja) 情報処理装置
US20080209085A1 (en) Semiconductor device and dma transfer method
JP4431492B2 (ja) 複数のコヒーレンシー・グラニュールをサポートするデータ転送ユニット
JP2007018195A (ja) 情報処理方法および情報処理装置
US8296481B2 (en) Device and method for improving transfer efficiency of odd number of data blocks
JP4905255B2 (ja) Ioアダプタとそのデータ転送方法
CN110399322B (zh) 一种数据传输方法及乒乓dma架构
JP4774099B2 (ja) 演算処理装置、情報処理装置及び演算処理装置の制御方法
JP2009088622A (ja) バッファメモリを有するパケット転送装置および方法
JP6384359B2 (ja) 分散共有メモリを有する情報処理装置、方法、および、プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150907

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160531

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160801

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170131

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170403

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170418

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170501

R150 Certificate of patent or registration of utility model

Ref document number: 6146306

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150