(57)【要約】【課題】共有メモリを介して行うデータ転送において、遅延時間や処理待ち時間を低減して高速なデータ転送を実現するデータ転送システムを得ること。【解決手段】本発明にかかるデータ転送システムは、マルチコアＣＰＵまたはマルチプロセッサに対して仮想化技術を適用した送信装置（１）および受信装置（２）と、送信装置（１）および受信装置（２）からアクセス可能な記憶装置（３）と、を備え、受信装置（２）宛のデータが発生した場合、送信装置（１）は、受信装置（２）宛のデータをデータ格納部（３３）に格納し、次に、データ格納済領域を示すデータ保持領域情報を未処理リスト格納部（３２）に格納し、その後、データ格納処理が完了した旨を示す通知を受信装置（２）へ発行し、受信装置（２）は、通知を受けた場合、未処理リスト格納部（３２）内のデータ保持領域情報に基づいて、データ格納部（３３）から自身宛のデータを読み出す。【選択図】        図１
2009116561.tif 000002
【特許請求の範囲】
【請求項１】
マルチコアＣＰＵまたはマルチプロセッサに対して仮想化技術を適用した送信装置および受信装置と、当該送信装置および当該受信装置からアクセス可能な記憶装置と、を備えたデータ転送システムであって、
前記送信装置において前記受信装置宛のデータが発生した場合、
前記送信装置は、
前記受信装置宛のデータを前記記憶装置内の任意の第１の領域に格納し、次に、データ格納済領域を示すデータ保持領域情報を前記記憶装置内の固定の第２の領域に格納し、その後、データ格納処理が完了した旨を示す処理完了通知を前記受信装置へ発行し、
前記受信装置は、
処理完了通知を受けた場合、前記第２の領域内のデータ保持領域情報に基づいて、前記第１の領域から自身宛のデータを読み出すことを特徴とするデータ転送システム。
【請求項２】
前記送信装置は、
前記受信装置宛のデータを外部ネットワークから受信し、当該受信データをＤＭＡ転送により前記第１の領域に格納するネットワークインタフェイス手段と、
前記データ保持領域情報を前記第２の領域に格納し、その後、前記処理完了通知を前記受信装置へ発行するデータ保持領域情報処理手段と、
を備えることを特徴とする請求項１に記載のデータ転送システム。
【請求項３】
マルチコアＣＰＵまたはマルチプロセッサに対して仮想化技術を適用した送信装置および受信装置と、当該送信装置および当該受信装置からアクセス可能な記憶装置と、を備えたデータ転送システムであって、
前記受信装置は、
前記送信装置から出力されたデータを前記記憶装置経由で受信する複数の受信手段、
を備え、
前記送信装置において前記受信装置宛のデータが発生した場合、
前記送信装置は、
前記受信装置宛のデータを前記記憶装置内の任意の第１の領域に格納し、次に、データ格納済領域を示すデータ保持領域情報を、前記受信装置宛データの内容に基づいて前記記憶装置内の複数の第２の領域の中から選択した領域に格納し、その後、データ格納処理が完了した旨を示す処理完了通知を、前記選択された領域に予め関連付けられている前記複数の受信手段の中のいずれか一つへ発行し、
前記受信装置では、
処理完了通知を受けた受信手段が、当該処理完了通知の内容に基づいて特定された第２の領域内のデータ保持領域情報を読み出し、当該データ保持領域情報に示された第１の領域から自装置宛のデータを読み出すことを特徴とするデータ転送システム。
【請求項４】
前記受信手段は、前記第１の領域からデータを読み出した場合、さらに、データの読み出し元領域をデータ未保持領域情報として前記記憶装置内の固定の第３の領域に格納し、
前記送信装置は、前記第３の領域に格納されたデータ未保持領域情報が示す領域を解放することを特徴とする請求項１、２または３に記載のデータ転送システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のデータ処理装置からアクセス可能な記憶装置（共有メモリ）を有し、当該記憶装置を介して第１のデータ処理装置から第２のデータ処理装置へデータを転送するデータ転送システムに関し、特に、マルチコアＣＰＵまたはマルチプロセッサを利用して実現するデータ転送システムに関する。
【背景技術】
【０００２】
近年、ＣＰＵはマルチコアやマルチプロセッサによる高性能化が進んでおり、マルチコアＣＰＵまたはマルチプロセッサ上に複数のドメインを構築し、そのドメイン上でＯＳ（Operating  System）やプログラムを動作させるための仮想化技術が登場している。このような環境において、ドメイン間でデータ転送を行うためにはドメイン間通信を用いる。ドメイン間通信の方法としては、たとえば、共有メモリを利用したデータ転送方法（以下、共有メモリ方式と呼ぶ）が存在する。
【０００３】
共有メモリ方式を具体的に示すと、データの送信側ドメインおよび受信側ドメインがアクセス可能な共有メモリを用意しておき、データを送信する場合、送信側ドメインは、共有メモリをロックし、他のドメインからのアクセスを制限した状態において送信データを共有メモリへ格納する。そして、格納処理が終了した後ロックを解除（アンロック）し、さらに共有メモリへデータを格納した旨を示す割込み通知を受信側ドメインに対して発行する。
【０００４】
受信側ドメインは、共有メモリへデータが格納された旨を示す割込み通知を送信側ドメインから受けた場合、共有メモリをロックした上で共有メモリへアクセスし、データを取得する。
【０００５】
なお、各ドメインから共有メモリへアクセスする際にロックをかける（排他制御を行う）のではなく、共有メモリへのアクセス終了を示す通知を他のドメインから受け取った場合に共有メモリへアクセスする方式も存在する（下記特許文献１参照）。
【０００６】
このように、従来の共有メモリ方式では、あるドメインが共有メモリにアクセス中には他のドメインが共有メモリにアクセスしないようにすることにより、データの整合性を保っている。
【０００７】
【特許文献１】特開２００４−７０６４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、従来の共有メモリ方式では、排他制御を用いる場合、排他制御にかかる遅延時間が発生する、という問題があった。また、上記特許文献１に記載された排他制御を用いない方式の場合でも、あるドメインが共有メモリにアクセスしている間は、他のドメインが共有メモリにアクセスできないため処理待ち時間が発生する、という問題があった。すなわち、従来の共有メモリを利用して行うデータ転送では、上記の遅延時間や処理待ち時間の分だけ通信速度が低下してしまう、という問題があった。
【０００９】
本発明は、上記に鑑みてなされたものであって、共有メモリを利用したドメイン間でのデータ転送において、遅延時間や処理待ち時間を低減して高速なデータ転送を実現するデータ転送システムを得ることを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するために、本発明は、マルチコアＣＰＵまたはマルチプロセッサに対して仮想化技術を適用した送信装置および受信装置と、当該送信装置および当該受信装置からアクセス可能な記憶装置と、を備えたデータ転送システムであって、前記送信装置において前記受信装置宛のデータが発生した場合、前記送信装置は、前記受信装置宛のデータを前記記憶装置内の任意の第１の領域に格納し、次に、データ格納済領域を示すデータ保持領域情報を前記記憶装置内の固定の第２の領域に格納し、その後、データ格納処理が完了した旨を示す処理完了通知を前記受信装置へ発行し、前記受信装置は、処理完了通知を受けた場合、前記第２の領域内のデータ保持領域情報に基づいて、前記第１の領域から自身宛のデータを読み出すことを特徴とする。
【発明の効果】
【００１１】
この発明によれば、ドメイン間通信を行う際に共有メモリへの排他制御を必要とせず、また受信側ドメインが共有メモリへアクセスしている場合でも、送信側ドメインが共有メモリへアクセスすることが可能となるので、処理待ち時間が不要となり共有メモリ経由で行うデータ転送の処理時間を短縮し、データ転送速度を高速化できる、という効果を奏する。
【発明を実施するための最良の形態】
【００１２】
以下に、本発明にかかるデータ転送システムの実施の形態を図面に基づいて詳細に説明する。なお、以下の実施の形態にて説明するデータ転送システムとしては、マルチコアＣＰＵ／マルチプロセッサ上で仮想化技術を用いることにより、ＯＳやプログラムを動作させることが可能なドメインを複数構築して実現するものを想定する。ただし、この実施の形態によりこの発明が限定されるものではない。
【００１３】
実施の形態１．
図１は、本発明にかかるデータ転送システムの実施の形態１の機能ブロック構成例を示す図であり、各機能ブロックをドメイン間通信の流れとともに示している。
【００１４】
本実施の形態のデータ転送システムは、ＯＳまたはプログラムを搭載した論理ドメインである送信側ドメイン上で実現される送信装置１と、同様の論理ドメインである受信ドメイン上で実現される受信装置２と、各ドメイン（送信装置１および受信装置２）からアクセス可能な共有メモリに相当する記憶装置３と、を含む。
【００１５】
送信装置１は、受信装置２宛のデータに対するデータ送信処理を実行するデータ送信部１１を含んでいる。
【００１６】
受信装置２は、受信したデータに対して上位レイヤ処理を行う上位レイヤ処理部２１およびデータ受信処理を行うデータ受信部２２を含んでいる。
【００１７】
記憶装置３は、送信装置１から出力された受信装置２宛のデータであって受信装置２により既に読み出されたデータの格納先の情報（読み出されたデータが格納されていた領域のアドレスおよびデータ長）をリスト化して保持する処理済リスト格納部３１、送信装置１から出力され、受信装置２により未だ読み出されていないデータの格納先の情報をリスト化して保持する未処理リスト格納部３２および送信装置１から出力されたデータ（受信装置２宛のデータ）を格納しておくデータ格納部３３を含む。なお、処理済リスト格納部３１および未処理リスト格納部３２は、固定領域として確保されている。
【００１８】
つづいて、上記構成のデータ転送システムにおいて送信ドメイン（送信装置１）から受信ドメイン（受信装置２）へデータを転送する場合の動作について、図１を参照しながら説明する。ここで、本実施の形態のシステムでは、送信装置１はデータ格納部３３に対して常にアクセス可能であるが、受信装置２は未処理リスト格納部３２に格納された情報が示すデータ格納部３３内の領域に対してのみアクセス可能とする。
【００１９】
送信装置１において受信装置２への送信データ（受信装置２宛のデータ）が発生した場合、まず、データ送信部１１が、データ格納部３３内の空き領域を確保し、そこに送信データをコピー（格納）する。さらに、送信データの格納先アドレスの情報および送信データのデータ長情報を含んだメッセージブロックを未処理リスト格納部３２へ格納（キューイング）する。送信装置１では、このような処理を、送信データが発生するごとに実行する。そして、所定の条件が満たされた場合（規定時間が経過した場合、規定数のメッセージブロックを未処理リスト格納部３２へキューイングした場合、など）、受信装置２に対してドメイン間割り込みを通知する。なお、ドメイン間割込みの通知は、データ送信部１１が行ってもよいし、図示していない他の構成が行ってもよい。また、送信装置１はドメイン間割込みを通知したあとでも、未処理リスト格納部３２の記憶領域がすべて使用中となるまでの間は、メッセージブロックを格納することが可能である。
【００２０】
受信装置２では、送信装置１からのドメイン間割り込みを受け取った場合、割り込みハンドラを起動し、データ受信部２２によるデータ受信処理を実行する。具体的な動作を示すと、データ受信部２２は、未処理リスト格納部３２へアクセスし、そこに格納されているメッセージブロックを取得する。そして、取得したメッセージブロックを上位レイヤ処理部２１へ転送する。
【００２１】
上位レイヤ処理部２１は、データ受信部２２から受け取ったメッセージブロックに含まれる情報に基づいて、データ格納部３３からデータを取得する。具体的には、メッセージブロックに含まれている送信データ格納先アドレス情報およびデータ長情報に基づいて取得すべきデータが格納されている領域を特定し、特定した領域からデータを取得する。そして、取得したデータが格納されていた領域のアドレス情報および取得データのデータ長情報を含んだメッセージブロックを処理済リスト格納部３１へキューイングする。すなわち、データ受信部２２から受け取ったメッセージブロックに含まれていた「送信データ格納先アドレス情報」，「データ長情報」を含んだメッセージブロックを処理済リスト格納部３１へ格納する。したがって、データ格納部３３に格納されたデータが受信装置２によって読み出された場合、読み出されたデータに対応する格納先アドレス情報およびデータ長情報（メッセージブロック）が未処理リスト格納部３２から処理済リスト格納部３１へ移動される。
【００２２】
また、送信装置１は、ポーリングにより処理済リスト格納部３１を監視し、それまで使用中であったデータ格納部３３内の領域を示すメッセージブロックを検出した場合、その領域を解放する。なお、ポーリングによる監視方法に代えて、受信装置２が、データ格納部３３からのデータ読み出し処理を完了したことを示す割込み通知を送信装置１へ発行し、それをトリガーにして送信装置１が処理済リスト格納部３１の状態を確認する方法を用いてもよい。
【００２３】
このように、本実施の形態のデータ転送システムでは、送信側および受信側の双方のドメインからアクセス可能な共有メモリ内に、送信データを格納するデータ格納部、受信側ドメインが読み出す必要のあるデータが格納された領域の情報を格納する未処理リスト格納部および格納していたデータが読み出されたため解放する必要がある領域の情報を格納する処理済リスト格納領域を設けておき、送信データが発生した場合、送信側ドメインはデータ格納部内の未使用領域へ送信データを格納しつつその領域の情報を未処理リスト格納部へ格納し、一方、受信側ドメインは未処理リスト格納部内の情報が示す領域からデータを読み出しつつその領域の情報を処理済リスト格納部へ格納することとした。また、送信側ドメインは処理済リスト格納部内の情報が示す領域を順次解放することとした。これにより、ドメイン間通信を行う際に共有メモリへの排他制御を必要とせず、また受信側ドメインが共有メモリへアクセスしている場合でも、送信側ドメインが共有メモリへアクセスすることが可能となる。この結果、他ドメインの処理待ち時間が不要となりデータ転送速度の高速化が実現できる。
【００２４】
実施の形態２．
つづいて、実施の形態２のデータ転送システムについて説明する。図２は、本発明にかかるデータ転送システムの実施の形態２の機能ブロック構成例を示す図であり、実施の形態１で示したデータ転送システム（図１参照）の変形例を示している。このデータ転送システムは、実施の形態１で示した送信装置１、受信装置２および記憶装置３のそれぞれを変形して得られる送信装置１ａ、受信装置２ａおよび記憶装置３ａを含む。
【００２５】
送信装置１ａは、送信装置１に対してパケット振分け部１２を追加した構成をとり、このパケット振分け部１２は、一定パケット数毎または特定のグループ分類により、パケット（送信データ）を分類する。グループ分類では、たとえば、送信元ＩＰアドレス，送信先ＩＰアドレス，プロトコル，ポート番号などのいずれか一つの情報またはこれらの中の２つ以上の情報に基づいて、各送信データを分類する。
【００２６】
受信装置２ａでは、記憶装置３ａに格納された複数のデータを並列に取得できるようにするため、実施の形態１で示したデータ受信処理（データ受信部２２および上位レイヤ処理部２１における処理）を複数のスレッド／ＣＰＵに割当てておく。具体的には、実施の形態１で示した上位レイヤ処理部２１およびデータ受信部２２を組み合わせて構築された処理ブロック（受信手段に相当）を複数備えた構成とする。図２では、上位レイヤ処理部２１−１およびデータ受信部２２−１からなる処理ブロック、上位レイヤ処理部２１−２およびデータ受信部２２−２からなる処理ブロックおよび上位レイヤ処理部２１−３およびデータ受信部２２−３からなる処理ブロック、を備えた場合の例を示している。なお、処理ブロックの数を３以外の値としてもよい。
【００２７】
記憶装置３ａは、受信装置２ａを構成する上記処理ブロックの数と同数の未処理リスト格納部（未処理リスト格納部３２−１，３２−２，３２−３）を備える。なお、各未処理リスト格納部は、上記処理ブロックの中のいずれか一つと１対１で対応付けられているものとする。そのため、処理ブロックの数を増減させる場合には、未処理リスト格納部の数も同様に増減させる。未処理リスト格納部を複数備えている点以外は実施の形態１で示した記憶装置３と同様である。
【００２８】
つづいて、本実施の形態のデータ転送システムにおけるデータ転送動作について、図２を参照しながら説明する。送信装置１ａにおいて受信装置２ａへの送信データが発生した場合、まず、パケット振分け部１２は、送信元ＩＰアドレス，送信先ＩＰアドレス，プロトコル，ポート番号などを利用し、送信データを分類する。つぎに、データ送信部１１は、データ格納部３３内の空き領域を確保し、そこに送信データをコピー（格納）し、さらに、送信データの格納先アドレス情報および格納した送信データのデータ長情報を含んだメッセージブロックを、パケット振分け部１２における分類結果に対応した未処理リスト格納部へ格納（キューイング）する。そして、規定時間が経過した場合または規定数のメッセージブロックを未処理リスト格納部へキューイングした場合、受信装置２ａに対してドメイン間割り込みを通知する。ここで、ドメイン間割り込みは、未処理リスト格納部と対応付けられている処理ブロック（処理ブロックを構成するデータ受信部）へ通知される。たとえば、規定数のメッセージブロックを未処理リスト格納部３２−１へキューイングした場合、ドメイン間割り込みはデータ受信部２２−３へ通知される。なお、送信装置１ａはドメイン間割込みを通知したあとでも、未処理リスト格納部３２−１〜３２−３の記憶領域がすべて使用中となるまでの間は、メッセージブロックを格納することが可能である。
【００２９】
受信装置２ａでは、送信装置１ａからのドメイン間割り込みを受け取った場合、各データ受信部（データ受信部２２−１〜２２−３）が自身と対応付けられている未処理リスト格納部へアクセスし、そこに格納されているメッセージブロックを取得する。さらに、取得したメッセージブロックを対応する上位レイヤ処理部へ転送する。各上位レイヤ処理部における処理は、実施の形態１で示した上位レイヤ処理部２における処理と同様である。
【００３０】
このように、本実施の形態のデータ転送システムでは、受信側のドメイン（受信装置）がデータ受信処理を実行するための構成である上位レイヤ処理部およびデータ受信部からなる処理ブロックを複数備え、各処理ブロックは、自身と対応付けられている未処理リスト格納部を参照してデータを取得する処理を個別に行うこととした。これにより、受信側ドメインにおいては複数のデータ読み出し処理が並列に実行されるようになるので、データ転送速度のさらなる高速化が実現できる。
【００３１】
実施の形態３．
つづいて、実施の形態３のデータ転送システムについて説明する。図３は、本発明にかかるデータ転送方システムの実施の形態３の機能ブロック構成例を示す図であり、実施の形態１で示したシステム（図１参照）の変形例を示している。このシステムは、実施の形態１で示した送信装置１に代えて、その変形例である送信装置１ｂを含み、さらに、ＮＩＣ（Network  Interface  Card）４が追加された構成をとる。
【００３２】
なお、本実施の形態では、各ドメインに割り当てられるＣＰＵの数や性能が大きく異なる場合を想定しており、ここでは受信装置２に割り当てられたＣＰＵの性能が送信装置１に割り当てられたＣＰＵよりも高性能であるものとする。
【００３３】
送信装置１ｂは、実施の形態１で示した送信装置１に対して、ＮＩＣ４を制御するデバイスドライバ（Device  Driver）１３と、ＮＩＣ４がデータを記憶装置３へ格納する際に参照する情報（データを格納すべき記憶装置３内の領域の情報）を格納するディスクリプタ１４と、が追加された構成をとる。
【００３４】
ＮＩＣ４は、外部ネットワーク（図示せず）と接続する機能を有し、汎用ネットワークインタフェイスカードまたはＡＳＩＣ（Application  Specific  Integrated  Circuit）／ＦＰＧＡ（Field  Programmable  Gate  Array）／ＮＰＵ（Network  Processing  Unit）等のパケット処理（主にＭＡＣレイヤ：Ｅｔｈｅｒｎｅｔ（登録商標）処理）を特化して行うハードウェアネットワークインタフェイスデバイスである。
【００３５】
つづいて、本実施の形態のデータ転送システムにおけるデータ転送動作について、図３を参照しながら説明する。なお、ディスクリプタ１４には、ＮＩＣ４が参照するための情報（以下、データ格納先情報と呼ぶ）が予め格納されているものとする。
【００３６】
本実施の形態では、ＮＩＣ４（ネットワークインタフェイス手段）が外部ネットワークからの受信データをＤＭＡ（Direct  Memory  Access）転送により記憶装置３（データ格納部３３）へ直接格納することにより送信装置１ｂの負荷を軽減させる。以下に、ＤＭＡ転送を使用して受信装置２へデータを転送する場合の具体的な動作を示す。
【００３７】
ＮＩＣ４は、外部ネットワークからデータを受信した場合、まず、ディスクリプタ１４に格納されているデータ格納情報を参照し、その情報が示す記憶装置３内の領域（データ格納部３３内の領域）へ受信データをＤＭＡ転送する。つぎに、ＤＭＡ転送が完了した旨を通知するための割込みを送信装置１ｂへ通知する。なお、ＮＩＣ４が割り込む通知を行うのではなく、送信装置１ｂがポーリングを行うことにより、受信データが記憶装置３へＤＭＡ転送されたことを検出するようにしてもよい。
【００３８】
データ保持領域情報処理手段である送信装置１ｂでは、ＮＩＣ４による受信データのＤＭＡ転送が完了したことを検出すると、たとえばデバイスドライバ１３がディスクリプタ１４に格納された情報に基づいて、ＤＭＡ転送された受信データの格納先アドレス情報および受信データのデータ長情報を含んだメッセージブロックを生成し、このメッセージブロックをデータ送信部１１が未処理リスト格納部３２へ格納（キューイング）する。なお、データ送信部１１がメッセージブロックを生成するようにしてもよい。そして、上述した実施の形態１の送信装置１と同様に、規定時間が経過した場合または規定数のメッセージブロックを未処理リスト格納部３２へキューイングした場合、受信装置２に対してドメイン間割り込みを通知する。なお、送信装置１ｂはドメイン間割込みを通知したあとでも、未処理リスト格納部３２の記憶領域がすべて使用中となるまでの間は、メッセージブロックを格納することが可能である。
【００３９】
ドメイン間割込みを受けた場合の受信装置２の動作は実施の形態１で示したとおりである。
【００４０】
このように、本実施の形態では、送信側ドメイン（送信装置）と外部ネットワークとを接続するＮＩＣが外部ネットワークから受信側ドメイン（受信装置）宛のデータを受信した場合、受信データをＮＩＣから共有メモリへＤＭＡ転送することとした。これにより、送信側ドメインにおける処理負担を軽減することができ、たとえば、受信側ドメインに対して送信側ドメインの処理性能が大きく劣り、この性能差がデータ転送速度を低下させる要因となる場合であっても、データ転送速度が低下するのを最小限に抑えることができる。
【産業上の利用可能性】
【００４１】
以上のように、本発明にかかるデータ転送システムは、特定のドメインが他のドメインに対し、共有メモリを利用してデータを高速転送するシステムに有用である。
【図面の簡単な説明】
【００４２】
【図１】本発明にかかるデータ転送システムの実施の形態１の機能ブロック構成例を示す図である。
【図２】本発明にかかるデータ転送システムの実施の形態２の機能ブロック構成例を示す図である。
【図３】本発明にかかるデータ転送システムの実施の形態３の機能ブロック構成例を示す図である。
【符号の説明】
【００４３】
１，１ａ，１ｂ  送信装置
２，２ａ  受信装置
３  記憶装置
４  Network  Interface  Card（ＮＩＣ）
１１  データ送信部
１２  パケット振分け部
１３  デバイスドライバ
１４  ディスクリプタ
２１，２１−１，２１−２，２１−３  上位レイヤ処理部
２２，２２−１，２２−２，２２−３  データ受信部
３１  使用リスト格納部
３２，３２−１，３２−２，３２−３  未使用リスト格納部
３３  データ格納部
【図１】
2009116561.tif 000003
【図２】
2009116561.tif 000004
【図３】
2009116561.tif 000005