(57)【特許請求の範囲】
【請求項１】
データ配布の方法であって、
中央処理装置で、ユーザが要求したデータのアドレスおよび長さの情報を含んでいるデータ記述情報を転送モジュールに送るステップであって、前記データ記述情報は、前記ユーザが要求した前記データをメモリから読み取るべきかそれとも記憶装置から読み取るべきかを示すメモリ選択識別フィールドをさらに含む、ステップと、
前記転送モジュールで、前記データ記述情報に従って、前記ユーザが要求した前記データを前記記憶装置または前記メモリから読み取り、前記ユーザが要求した前記データをネットワークインターフェースコントローラへ直接転送するステップと、
前記ネットワークインターフェースコントローラで、前記ユーザが要求した前記データを前記ユーザに送るステップと、を含み、
前記中央処理装置と前記記憶装置と前記ネットワークインターフェースコントローラとは、PCIスイッチを介して相互接続され、前記転送モジュールは、PCIスイッチの中に組み込まれたまたは前記ネットワークインターフェースコントローラの中に組み込まれた機能モジュールであり、直接的な送受機能をもたらす
方法。
【請求項２】
中央処理装置でデータ記述情報を転送モジュールに送るステップが、
前記中央処理装置によって前記データ記述情報を構成し、前記ユーザが要求した前記データの前記アドレスおよび前記長さの情報を前記データ記述情報で搬送するステップと、
前記中央処理装置で前記データ記述情報を前記ネットワークインターフェースコントローラに送り、前記ネットワークインターフェースコントローラで前記データ記述情報を前記転送モジュールへ転送するステップと
を含む請求項1に記載の方法。
【請求項３】
前記中央処理装置で前記データ記述情報を構成する前記ステップが、前記中央処理装置によってパッケージモード識別情報およびパッケージ選択識別情報を前記データ記述情報で搬送するステップであって、前記パッケージモード識別情報が、前記データを要求している前記ユーザに対応しており、前記パッケージ選択識別情報が、前記ユーザが要求した前記データをパッケージ化する必要があるかどうかを識別するのに用いられる、ステップをさらに含み、
前記転送モジュールで、前記データ記述情報に従って、前記ユーザが要求した前記データを読み取り、前記ユーザが要求した前記データをネットワークインターフェースコントローラへ転送する前記ステップが、
前記転送モジュールで、前記データ記述情報に従って、前記ユーザが要求した前記データを読み取り、前記パッケージ選択識別情報に従って、前記ユーザが要求した前記データをパッケージ化する必要があるかどうかを判断し、前記ユーザが要求した前記データをパッケージ化する必要があれば、前記ユーザが要求した前記データをパッケージ化し、前記パッケージ化されたデータを前記ネットワークインターフェースコントローラへ転送するステップを含む請求項2に記載の方法。
【請求項４】
前記ユーザが要求した前記データをパッケージ化し、前記パッケージ化されたデータを前記ネットワークインターフェースコントローラへ転送する前記ステップが、
前記転送モジュールで、前記パッケージモード識別情報に対応するパッケージモードに従って、前記ユーザが要求した前記データをパッケージ化し、前記パッケージ化されたデータを前記ネットワークインターフェースコントローラへ転送するステップを含む請求項3に記載の方法。
【請求項５】
前記転送モジュールで、前記データ記述情報に従って、前記ユーザが要求した前記データを読み取る前記ステップが、前記転送モジュールで、前記データ記述情報に従って、直接メモリアクセス方式で、前記ユーザが要求した前記データを読み取るステップを含む請求項1から4のいずれか一項に記載の方法。
【請求項６】
データ配布の方法であって、
中央処理装置が送った、ユーザが要求したデータのアドレスおよび長さの情報を含んでいるデータ記述情報を転送モジュールによって受け取るステップであって、前記データ記述情報は、前記ユーザが要求した前記データをメモリから読み取るべきかそれとも記憶装置から読み取るべきかを示すメモリ選択識別フィールドをさらに含む、ステップと、
ネットワークインターフェースコントローラが、前記ユーザが要求した前記データを前記ユーザに送るように、前記データ記述情報に従って、前記ユーザが要求した前記データを前記転送モジュールによって前記記憶装置または前記メモリから読み取り、前記ユーザが要求した前記データを前記ネットワークインターフェースコントローラへ直接転送するステップと
を含む方法であって、
前記中央処理装置と前記記憶装置と前記ネットワークインターフェースコントローラとは、PCIスイッチを介して相互接続され、前記転送モジュールは、PCIスイッチの中に組み込まれたまたは前記ネットワークインターフェースコントローラの中に組み込まれた機能モジュールであり、直接的な送受機能をもたらす方法。
【請求項７】
前記データ記述情報が、パッケージモード識別情報およびパッケージ選択識別情報をさらに含み、前記パッケージモード識別情報が、前記データを要求している前記ユーザに対応しており、前記パッケージ選択識別情報が、前記ユーザが要求した前記データをパッケージ化する必要があるかどうかを識別するのに用いられ、
前記データ記述情報に従って、前記ユーザが要求した前記データを前記転送モジュールによって読み取り、前記ユーザが要求した前記データをネットワークインターフェースコントローラへ転送する前記ステップが、前記データ記述情報に従って、前記ユーザが要求した前記データを前記転送モジュールによって前記記憶装置から読み取り、前記パッケージ選択識別情報に従って、前記ユーザが要求した前記データをパッケージ化する必要があるかどうかを判断し、前記ユーザが要求した前記データをパッケージ化する必要があれば、前記ユーザが要求した前記データをパッケージ化し、前記パッケージ化されたデータを前記ネットワークインターフェースコントローラへ転送するステップを含む請求項6に記載の方法。
【請求項８】
前記ユーザが要求した前記データをパッケージ化し、前記パッケージ化されたデータを前記ネットワークインターフェースコントローラへ転送する前記ステップが、
前記パッケージモード識別情報に対応するパッケージモードに従って、前記ユーザが要求した前記データをパッケージ化し、前記パッケージ化されたデータを前記ネットワークインターフェースコントローラへ転送するステップを含む請求項7に記載の方法。
【請求項９】
前記データ記述情報に従って、前記ユーザが要求した前記データを前記転送モジュールによって前記記憶装置から読み取る前記ステップが、前記データ記述情報に従って、直接メモリアクセス方式で、前記ユーザが要求した前記データを前記転送モジュールによって前記記憶装置から読み取るステップを含む請求項6から8のいずれか一項に記載の方法。
【請求項１０】
中央処理装置、ネットワークインターフェースコントローラ、および転送モジュールを備えるデータ配布用のシステムであって、
前記中央処理装置が、ユーザが要求したデータのアドレスおよび長さの情報を含んでいるデータ記述情報を前記転送モジュールに送るように構成されており、前記データ記述情報は、前記ユーザが要求した前記データをメモリから読み取るべきかそれとも記憶装置から読み取るべきかを示すメモリ選択識別フィールドをさらに含み、
前記転送モジュールが、前記データ記述情報に従って、前記ユーザが要求した前記データを前記記憶装置または前記メモリから読み取り、前記ユーザが要求した前記データを前記ネットワークインターフェースコントローラへ直接転送するように構成されており、
前記ネットワークインターフェースコントローラが、前記ユーザが要求した前記データを前記ユーザに送るように構成されている、システムであって、
前記中央処理装置と前記記憶装置と前記ネットワークインターフェースコントローラとは、PCIスイッチを介して相互接続され、前記転送モジュールは、PCIスイッチの中に組み込まれたまたは前記ネットワークインターフェースコントローラの中に組み込まれた機能モジュールであり、直接的な送受機能をもたらす、システム。
【請求項１１】
前記中央処理装置が、
前記データ記述情報を構成し、前記ユーザが要求した前記データの前記アドレスおよび前記長さの情報を前記データ記述情報で搬送するように構成されている構成ユニットと、
前記ネットワークインターフェースコントローラが、前記データ記述情報を前記転送モジュールへ転送するように、前記データ記述情報を前記ネットワークインターフェースコントローラに送るように構成されている送信ユニットと
を備える請求項10に記載のシステム。
【請求項１２】
前記構成ユニットが、パッケージモード識別情報およびパッケージ選択識別情報を前記データ記述情報で搬送するようにさらに構成されており、前記パッケージモード識別情報が、前記データを要求している前記ユーザに対応しており、前記パッケージ選択識別情報が、前記ユーザが要求した前記データをパッケージ化する必要があるかどうかを識別するのに用いられ、
前記転送モジュールが第1の判断ユニットおよびパッケージユニットを備え、
前記第1の判断ユニットが、前記データ記述情報に従って、前記ユーザが要求した前記データを前記記憶装置から読み取り、前記パッケージ選択識別情報に従って、前記ユーザが要求した前記データをパッケージ化する必要があるかどうかを判断するように構成されており、
前記パッケージユニットが、前記第1の判断ユニットによって、前記ユーザが要求した前記データをパッケージ化する必要があると判断された場合には、前記ユーザが要求した前記データをパッケージ化し、前記パッケージ化されたデータを前記ネットワークインターフェースコントローラへ転送するように構成されている請求項11に記載のシステム。
【請求項１３】
前記転送モジュールが、具体的には、前記データ記述情報に従って、直接メモリアクセス方式で、前記ユーザが要求した前記データを前記記憶装置から読み取り、前記ユーザが要求した前記データを前記ネットワークインターフェースコントローラへ転送するよう構成された請求項12に記載のシステム。
【請求項１４】
データ配布用の装置であって、
中央処理装置が送った、ユーザが要求したデータのアドレスおよび長さの情報を含んでいるデータ記述情報を受け取るように構成されている受信モジュールであって、前記データ記述情報は、前記ユーザが要求した前記データをメモリから読み取るべきかそれとも記憶装置から読み取るべきかを示すメモリ選択識別フィールドをさらに含む、受信モジュールと、
ネットワークインターフェースコントローラが、前記ユーザが要求した前記データを前記ユーザに送るように、前記データ記述情報に従って、前記ユーザが要求した前記データを前記記憶装置または前記メモリから読み取り、前記ユーザが要求した前記データを前記ネットワークインターフェースコントローラへ直接転送するように構成されているデータ読取りモジュールと
を備える装置。
【請求項１５】
前記データ記述情報が、パッケージモード識別情報およびパッケージ選択識別情報をさらに含み、前記パッケージモード識別情報が、前記データを要求している前記ユーザに対応しており、前記パッケージ選択識別情報が、前記ユーザが要求した前記データをパッケージ化する必要があるかどうかを識別するために用いられ、
前記データ読取りモジュールが第1の判断ユニットおよびパッケージユニットを備え、
前記第1の判断ユニットが、前記データ記述情報に従って、前記ユーザが要求した前記データを前記記憶装置から読み取り、前記パッケージ選択識別情報に従って、前記ユーザが要求した前記データをパッケージ化する必要があるかどうかを判断するように構成されており、
前記パッケージユニットが、前記第1の判断ユニットによって、前記ユーザが要求した前記データをパッケージ化する必要があると判断された場合には、前記ユーザが要求した前記データをパッケージ化し、前記パッケージ化されたデータを前記ネットワークインターフェースコントローラへ転送するように構成されている請求項14に記載の装置。
【請求項１６】
前記データ読取りモジュールが、前記データ記述情報に従って、直接メモリアクセス方式で、前記ユーザが要求した前記データを前記記憶装置から読み取り、前記ユーザが要求した前記データを前記ネットワークインターフェースコントローラへ転送するように特に構成されている請求項14または15に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、通信の分野に関し、詳細には、高速データ配布のための方法および装置に関する。
【背景技術】
【０００２】
インターネットアプリケーションは、既にウェブ2.0時代に入っており、ユーザのサービス選択は主として実際のユーザ経験に基づくものになっている。待ち時間がユーザ経験に悪影響を及ぼす問題を解決するために、優れたユーザ経験を達成するように、多くの高速アクセスの設計が提供されている。ほとんどすべてのインターネット会社が加速設計を実行しており、その中でもコンテンツ配信ネットワーク(Content Delivery Network、CDN)におけるキャッシュ(Cache)の設計が特に強調されている。CDNでは、あらゆるキャッシュが中間デバイスであり、キャッシング機能をもたらす。
【０００３】
一例としてCDN製品サービスにおけるビデオオンデマンドサービスを用いて、従来技術で提供されるビデオオンデマンドサービスに対する加速解決策が図1(矢印のラインは情報またはデータの流れの方向を示し、ラインに付けられた連続番号は順次の関係を示す)に示されており、ユーザの要求が、ネットワークポートすなわちネットワークインターフェースコントローラ(Network Interface Controller、NIC)から入り、中央処理装置(Central Processing Unit、CPU)は、要求を受け取った後に、記憶装置(Storage)からデータを読み取り、データをメモリ(Memory)に記憶し、データをNICへ送り、NICを使用してデータをクライアント(Client)に送る。この解決策では、デバイスが高速フラッシュメモリ(Flash)およびネットワークをもたらし、ホットスポットデータに対するキャッシュ(Cache)をもたらす。さしあたり、ユーザから要求された映像データが記憶装置になければ、この要求が、NICを使用して、ユーザが要求した映像データを供給することができる別のデバイスに送られ、ユーザが要求した映像データがNICを使用して取得され、次いでクライアント(Client)に送られ、次に、ユーザの要求を満たすために、別のデバイスから取得された映像データがクライアントに送られるとき、またはその後に、映像データが局所記憶装置(Storage)に記憶される。
【０００４】
従来技術の欠陥は、すべての映像データをメモリおよびCPUで一旦処理しなければならないことにある。CPUは、データを取り出して配布するように動作するが、データプレーンと制御プレーンの分離を実施することができず、CDNストリームについては、並列性が高いと、CPU使用が高度であって、それにより、性能における明白なボトルネックがもたらされる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】  本発明の実施形態は、中央処理装置およびメモリの利用を低減しシステム性能を改善するために、データ配布のための方法および装置を提供する。
【課題を解決するための手段】
【０００６】  本発明の一実施形態は、データ配布のための方法を提供し、この方法は、  中央処理装置で、ユーザが要求したデータのアドレスおよび長さの情報を含んでいるデータ記述情報を転送モジュールに送るステップと、 転送モジュールで、データ記述情報に従って、ユーザが要求したデータを読み取り、ユーザが要求したデータをネットワークインターフェースコントローラへ転送するステップと、  ネットワークインターフェースコントローラで、ユーザが要求したデータをユーザに送るステップとを含む。【０００７】  本発明の別の実施形態は、データ配布の方法を提供し、この方法は、  中央処理装置が送った、ユーザが要求したデータのアドレスおよび長さの情報を含んでいるデータ記述情報を受け取るステップと、  ネットワークインターフェースコントローラが、ユーザが要求したデータをユーザに送るように、データ記述情報に従って、ユーザが要求したデータを読み取り、ユーザが要求したデータをネットワークインターフェースコントローラへ転送するステップとを含む。【０００８】  本発明の一実施形態は、中央処理装置、ネットワークインターフェースコントローラ、および転送モジュールを含むデータ配布用のシステムを提供し、  中央処理装置は、ユーザが要求したデータのアドレスおよび長さの情報を含んでいるデータ記述情報を転送モジュールに送るように構成されており、 転送モジュールは、データ記述情報に従って、ユーザが要求したデータを読み取り、ユーザが要求したデータをネットワークインターフェースコントローラへ転送するように構成されており、  ネットワークインターフェースコントローラは、ユーザが要求したデータをユーザに送るように構成されている。【０００９】  本発明の一実施形態は、受信モジュールおよびデータ読取りモジュールを含むデータ配布用の装置を提供し、  受信モジュールは、中央処理装置が送った、ユーザが要求したデータのアドレスおよび長さの情報を含んでいるデータ記述情報を受け取るように構成されており、  データ読取りモジュールは、ネットワークインターフェースコントローラが、ユーザが要求したデータをユーザに送るように、データ記述情報に従って、ユーザが要求したデータを読み取り、ユーザが要求したデータをネットワークインターフェースコントローラへ転送するように構成されている。【００１０】  本発明の前述の実施形態から理解され得るように、中央処理装置が、アドレスおよび長さの情報を転送モジュールに送り、転送モジュールが、ユーザが要求したデータを読み取り、ユーザが要求したデータをネットワークインターフェースコントローラへ転送し、ネットワークインターフェースコントローラが、ユーザが要求したデータを送る。全体のデータ伝送処理が、ネットワークインターフェースコントローラと記憶装置の間に独立したダイレクトチャネルを使用することによって完結され、データが中央処理装置およびメモリを通ることがなく、中央処理装置に必要とされるのは、送信ディスクリプタを構成することだけであって、データをコピーする必要がない。したがって、従来技術と比較して、本発明の実施形態で提供される方法を用いることにより、サービスが高められた後(たとえば、ネッ���ワークアダプタの既存の帯域幅および既存の記憶容量を拡大する必要がある)、必要とされるのは、ネットワークインターフェースコントローラおよび記憶装置を含むデバイスを追加することのみであり、メモリおよび中央処理装置に関するコストを増やす必要はない。一方では、メモリおよび中央処理装置の利用を低減することができ、全体システムの性能が改善され、他方では、メモリウォールの問題の可能性が低下する。【００１１】
本発明の実施形態の技術的解決策をより明瞭に説明するために、以下は、実施形態または従来技術を説明するのに必要な添付図面を簡単に紹介する。明らかに、以下の説明における添付図面は、本発明のいくつかの実施形態を示すのみであるが、当業者なら、それでもなおこれらの添付図面から他の図面を導出し得る。
【図面の簡単な説明】
【００１２】
【図１】従来技術のビデオオンデマンドサービスに対する加速解決策の概略図である。
【図２】本発明の一実施形態による高速データ配布の方法の概略流れ図である。
【図３】本発明の一実施形態による送信ディスクリプタの概略構造図である。
【図４】本発明の一実施形態による高速データ配布用のシステムの概略構造図である。
【図５】本発明の別の実施形態による高速データ配布用のシステムの概略構造図である。
【図６】本発明の別の実施形態による高速データ配布用のシステムの概略構造図である。
【図７】本発明の別の実施形態による高速データ配布用のシステムの概略構造図である。
【図８】本発明の別の実施形態による高速データ配布用のシステムの概略構造図である。
【図９】本発明の別の実施形態による高速データ配布用のシステムの概略構造図である。
【図１０】本発明の一実施形態による高速データ配布用の装置の概略構造図である。
【図１１】本発明の別の実施形態による高速データ配布用の装置の概略構造図である。
【図１２】本発明の別の実施形態による高速データ配布用の装置の概略構造図である。
【発明を実施するための形態】
【００１３】
本発明の実施形態は、中央処理装置およびメモリの利用を低減してシステム性能を改善するために、高速データ配布のための方法および装置を提供する。
【００１４】
図2は、本発明の一実施形態による高速データ配布の方法の概略流れ図であり、主として次のステップを含んでいる。
【００１５】
S201:中央処理装置は、ユーザが要求したデータのアドレスおよび長さの情報を含んでいるデータ記述情報を高速転送モジュールに送る。
【００１６】
本発明によって提供される実施形態では、高速転送モジュールは、PCIスイッチの中に組み込まれたまたはネットワークインターフェースコントローラNICの中に組み込まれた機能モジュールであり、直接的な送受機能をもたらす。この機能モジュールは、CPUによって構成された後に、記憶装置またはメモリの中のデータを読み取り、ネットワークインターフェースコントローラNICにデータを送って、直接メモリアクセス(Direct Memory Access、DMA)およびデータ送信を完了してもよく、すなわち、高速転送モジュールは、DMAで、ユーザが要求したデータを読み取り、ユーザが要求したデータをネットワークインターフェースコントローラへ転送する。
【００１７】
概して、ネットワークインターフェースコントローラNICは、対応するデータ記述情報をメモリの中に有する。中央処理装置がデータを送る必要があるとき、中央処理装置は、たとえば送信ディスクリプタ(Transmit Descriptor)といったデータ記述情報を構成する。このとき、ネットワークインターフェースコントローラNICは、送信ディスクリプタ(Transmit Descriptor)の中のバッファアドレス(Buffer Address)フィールドおよび長さ(Length)フィールドによって送るべきデータを取得し、内部のDMAモジュールに、対応アドレスからデータを読み取ることを通知してデータを送る。送るべきデータのそれぞれの部分について送信ディスクリプタ(Transmit Descriptor)を構成する必要があり、データが送られるのは、その送信ディスクリプタが構成された後のことである。
【００１８】
送るべきデータが、連続的に記憶されたデータまたは中央処理装置によって予測され得るデータの特定のストリームである場合、記憶装置がデータを記憶するように、中央処理装置が高速転送モジュールを構成し、ネットワークインターフェースコントローラNICがデータを記憶装置(Storage)に直接送るか、あるいは、PCIスイッチと中央処理装置の間の帯域幅を占有することなく、ネットワークインターフェースコントローラNICと記憶装置(Storage)の間のやりとりのDMA動作を完了するように、データが、記憶装置(Storage)からネットワークインターフェースコントローラNICへ直接送られてもよい。
【００１９】
したがって、本発明の実施形態では、データの送信は、中央処理装置の介在を必要とせず、中央処理装置に必要とされるのは、データ記述情報を構成することのみであって、データをコピーする必要がなく、それによって、データコピーのためのメモリ資源の消費が防止される。
【００２０】
ユーザに対するリンクが確立されたとき、パッケージモード識別情報(Package ID)がユーザに割り当てられ、パッケージモード識別情報は、ユーザの応答のパケットフォーマットによって高速転送モジュールに配送される。本発明の実施形態では、パッケージIDはパッケージモードに対応しており、高速転送モジュールのパッケージリスト(packagelist)に置かれる。リスト項目は、主としてパケットフォーマットの定義であり、すなわちIPヘッダフォーマットの内容である。次にデータが記憶装置から読み取るとき、データは、定義されたフォーマットによってパッケージにされ、データは直接送られて用いられ得る。
【００２１】
ユーザがデータを要求したとき、ユーザが送った要求は、中央処理装置がネットワークインターフェースコントローラNICを使用して受け取り、これらの要求は、ユーザが要求したアドレスおよびデータ長さなどの情報を搬送する。中央処理装置は、ユーザが要求したデータを読み取るために、ネットワークインターフェースコントローラNICのDMAモジュールを起動するように、ユーザがネットワークインターフェースコントローラNICに対してユーザが要求したアドレスおよびデータ長さなどの情報を送る。
【００２２】
本発明の一実施形態として、中央処理装置は、たとえば送信ディスクリプタ(Transmit Descriptor)といったデータ記述情報を構成し、ユーザが要求したアドレスおよびデータの長さ情報をデータ記述情報で搬送してもよく、さらに、中央処理装置は、データ記述情報を構成するとき、パッケージモード識別情報およびパッケージ選択識別情報もデータ記述情報で搬送してもよく、パッケージモード識別情報は、データを要求しているユーザに対応しており、パッケージ選択識別情報は、ユーザが要求したデータをパッケージ化する必要があるかどうかを識別するために用いられる。中央処理装置が、データ記述情報をネットワークインターフェースコントローラに送り、ネットワークインターフェースコントローラが、データ記述情報を高速転送モジュールに転送する。
【００２３】
本発明の実施形態で提供される送信ディスクリプタ(Transmit Descriptor)のフォーマットは、図3に示されており、この図で、
メモリ選択(Memory Select)識別フィールドは、記憶されたデータをメモリ(Memory)から読み取るべきかそれとも記憶装置(Storage)から読み取るべきかを示すものであり、1バイナリビット(bit)で示されてもよく、たとえば、フィールドが「1」であれば、記憶されたデータをメモリ(メモリ)から読み取るべきであることが示され、フィールドが「0」であれば、記憶されたデータを記憶装置(Storage)から読み取るべきであることが示され、あるいはその反対に、フィールドが「0」であれば、記憶されたデータをメモリ(Memory)から読み取るべきであることが示され、フィールドが「1」であれば、記憶されたデータを記憶装置(Storage)から読み取るべきであることが示され、
パッケージ選択(Package Select)識別フィールドは、高速転送モジュールが、読み取ったデータのパッケージ化またはカプセル化を必要とするかどうかを示し、
パッケージモード識別(Package ID)フィールドは、どのパッケージ化またはカプセル化のモードを用いるべきかを示し、また、フィールドがデータを要求しているユーザにも対応しており、
バッファアドレス(Buffer Address)フィールドは、ユーザが要求したデータのアドレスを示し、このユーザが要求したデータのアドレスは、ユーザがデータを要求する間に送った要求によって与えられるものであり、
長さ(Length)フィールドは、ユーザが要求したデータの長さを示し、また、
送信ディスクリプタ(Transmit Descriptor)は、本明細書で説明されない他の制御フィールドをさらに含む。
【００２４】
S202:高速転送モジュールは、ユーザが要求したデータをデータ記述情報に従って読み取り、ユーザが要求したデータをネットワークインターフェースコントローラへ転送する。
【００２５】
高速転送モジュールが、ユーザが要求したデータのバッファアドレス、長さ情報、パッケージ選択識別情報、およびメモリ選択識別情報などのデータ記述情報(たとえば送信ディスクリプタ)によって、ユーザが要求したデータを読み取り、このデータは、ネットワークインターフェースコントローラのDMAモジュールによって送信される。
【００２６】
具体的には、高速転送モジュールは、データ記述情報に含まれているバッファアドレスおよび長さの情報などの情報によって、ユーザが要求したデータを読み取り、さらに、送信ディスクリプタ(Transmit Descriptor)の中のパッケージ選択(Package Select)識別フィールドに従って、ユーザが要求したデータをパッケージ化する必要があるかどうかを判断してもよく、ユーザが要求したデータをパッケージ化する必要があれば、ユーザが要求したデータをパッケージ化し、パッケージ化されたデータをネットワークインターフェースコントローラへ転送する。たとえば、高速転送モジュールは、送信ディスクリプタ(Transmit Descriptor)の中のパッケージモード識別情報に対応するパッケージモードに従って、ユーザが要求したデータをパッケージ化し、パッケージ化されたデータをネットワークインターフェースコントローラへ転送してもよい。
【００２７】
別の例では、高速転送モジュールは、メモリ選択識別情報に従って、ユーザが要求したデータをメモリから読み取るべきかそれともユーザが要求したデータを記憶装置から読み取るべきかを判断し、ユーザが要求したデータを記憶装置から読み取るべきと判断した場合には、ユーザが要求したデータを記憶装置から読み取り、ユーザが要求したデータをネットワークインターフェースコントローラへ転送し、そうでなければ、ユーザが要求したデータをメモリから読み取り、ユーザが要求したデータをネットワークインターフェースコントローラへ転送してもよい。
【００２８】
S203:ネットワークインターフェースコントローラは、ユーザが要求したデータをユーザに送る。
【００２９】
本発明の前述の実施形態から理解され得るように、中央処理装置が、アドレスおよび長さの情報を高速転送モジュールに送り、高速転送モジュールが、ユーザが要求したデータを読み取り、ユーザが要求したデータをネットワークインターフェースコントローラへ転送し、ネットワークインターフェースコントローラが、このユーザが要求したデータを送る。全体のデータ伝送処理が、ネットワークインターフェースコントローラと記憶装置の間に独立したおよびダイレクトチャネルを使用することによって完結され、データが中央処理装置およびメモリを通ることがなく、中央処理装置に必要とされるのは、データ記述情報を構成することだけであって、データをコピーする必要がない。したがって、本発明の実施形態で提供される方法を用いることにより、従来技術と比較して、サービスが向上した後(たとえば、ネットワークアダプタの既存の帯域幅および既存の記憶容量を拡大する必要がある)、必要とされるのは、ネットワークインターフェースコントローラおよび記憶装置を含むデバイスを追加することのみであって、メモリおよび中央処理装置に関するコストを増やす必要はない。一方ではメモリおよび中央処理装置の利用を低減することができ、全体システムの性能が改善され、他方ではメモリウォールの問題が回避される。
【００３０】
図4は、本発明の一実施形態による高速データ配布の方法の概略流れ図である。この実施形態は、高速転送モジュールによって、図2に例示された高速データ配布の方法で実行されてもよい。図4に示されるように、この方法は、主として次のステップを含む。
【００３１】
S401:中央処理装置が送った、ユーザが要求したデータのアドレスおよび長さの情報を含んでいるデータ記述情報を受け取る。
【００３２】
ユーザがデータを要求したとき、ユーザが送った要求は、中央処理装置がネットワークインターフェースコントローラNICを使用して受け取り、これらの要求は、ユーザが要求したアドレスおよびデータ長さなどの情報を搬送する。中央処理装置は、ユーザが要求したデータを読み取るために、ネットワークインターフェースコントローラNICのDMAモジュールを起動するように、ユーザがネットワークインターフェースコントローラNICに対して要求したアドレスおよびデータ長さなどの情報を送る。
【００３３】
本発明の一実施形態として、中央処理装置は、たとえば送信ディスクリプタ(Transmit Descriptor)といったデータ記述情報を構成し、ユーザが要求したアドレスおよびデータの長さ情報をデータ記述情報で搬送してもよく、さらに、中央処理装置は、データ記述情報を構成するとき、パッケージモード識別情報およびパッケージ選択識別情報もデータ記述情報で搬送してもよく、パッケージモード識別情報は、データを要求しているユーザに対応しており、パッケージ選択識別情報は、ユーザが要求したデータをパッケージ化する必要があるかどうかを識別するために用いられる。送信ディスクリプタの特定のフォーマットが図3に示されており、その特定の意味については、前述の実施形態における関連した本文の記述が参照されてもよい。
【００３４】
中央処理装置が、データ記述情報をネットワークインターフェースコントローラに送り、高速転送モジュールが、ネットワークインターフェースコントローラによって転送されたデータ記述情報を受け取る。
【００３５】
S402:ネットワークインターフェースコントローラが、ユーザが要求したデータをユーザに送るように、データ記述情報に従って、ユーザが要求したデータを読み取り、ユーザが要求したデータをネットワークインターフェースコントローラへ転送する。
【００３６】
高速転送モジュールが、ユーザが要求したデータのバッファアドレス、長さ情報、パッケージ選択識別情報、およびメモリ選択識別情報などのデータ記述情報(たとえば送信ディスクリプタ)によって、ユーザが要求したデータを読み取り、このユーザが要求したデータは、ネットワークインターフェースコントローラのDMAモジュールによって送信される。
【００３７】
具体的には、高速転送モジュールは、バッファアドレスおよび長さの情報などのデータ記述情報に従って、ユーザが要求したデータを読み取り、さらに、送信ディスクリプタ(Transmit Descriptor)の中のパッケージ選択(Package Select)識別フィールドに従って、ユーザが要求したデータをパッケージ化する必要があるかどうかを判断してもよく、ユーザが要求したデータをパッケージ化する必要があれば、ユーザが要求したデータをパッケージ化し、パッケージ化されたデータをネットワークインターフェースコントローラへ転送する。たとえば、高速転送モジュールは、送信ディスクリプタ(Transmit Descriptor)の中のパッケージモード識別情報に対応するパッケージモードに従って、ユーザが要求したデータをパッケージ化し、パッケージ化されたデータをネットワークインターフェースコントローラへ転送してもよい。
【００３８】
別の例では、高速転送モジュールは、メモリ選択識別情報に従って、ユーザが要求したデータをメモリから読み取るべきかそれともユーザが要求したデータを記憶装置から読み取るべきかを判断し、ユーザが要求したデータを記憶装置から読み取るべきと判断した場合には、ユーザが要求したデータを記憶装置から読み取り、ユーザが要求したデータをネットワークインターフェースコントローラへ転送し、そうでなければ、ユーザが要求したデータをメモリから読み取り、ユーザが要求したデータをネットワークインターフェースコントローラへ転送してもよい。
【００３９】
この実施形態の高速転送モジュールは、PCIスイッチの中に組み込まれたまたはネットワークインターフェースコントローラNICの中に組み込まれた機能モジュールであり、直接的な送受機能をもたらすことに留意されたい。この機能モジュールは、中央処理装置によって構成された後に、記憶装置(Storage)またはメモリの中のデータを読み取り、ネットワークインターフェースコントローラNICにデータを送って、直接メモリアクセス(Direct Memory Access、DMA)およびデータ送信を完了してもよく、すなわち、高速転送モジュールは、DMAで、ユーザが要求したデータを読み取り、ユーザが要求したデータをネットワークインターフェースコントローラへ転送する。
【００４０】
図5は、本発明の一実施形態による高速データ配布用のシステムの概略構造図である。説明を簡単にするために、本発明の実施形態に関連する部分のみが示されており、これらの部分に含まれた機能モジュール/ユニットは、ソフトウェアモジュール/ユニット、ハードウェアモジュール/ユニット、またはソフトウェアとハードウェアを組み込んだモジュール/ユニットでもよい(この説明の原理は本明細書で提供されるそれぞれの実施形態に適用可能である)。図5に例示された高速データ配布用のこのシステムは、中央処理装置501、高速転送モジュール502、およびネットワークインターフェースコントローラ503を含んでおり、
中央処理装置501は、ユーザが要求したデータのアドレスおよび長さの情報を含んでいるデータ記述情報を高速転送モジュール502に送るように構成されており、
高速転送モジュール502は、データ記述情報に従って、ユーザが要求したデータを読み取り、ユーザが要求したデータをネットワークインターフェースコントローラ503へ転送するように構成されており、また、
ネットワークインターフェースコントローラ503は、ユーザが要求したデータをユーザに送るように構成されている。ユーザに対するリンクが確立されたとき、パッケージモード識別情報(Package ID)がユーザに割り当てられ、パッケージモード識別情報は、ユーザの応答のパケットフォーマットによって高速転送モジュールに配送される。本発明の実施形態では、パッケージIDはパッケージモードに対応しており、高速転送モジュールのパッケージリスト(packagelist)に置かれる。リスト項目は、主としてパケットフォーマットの定義であり、すなわちIPヘッダフォーマットの内容である。次にデータが記憶装置から読み取られるとき、データは、定義されたフォーマットによってパッケージ化され、直接送られて用いられ得る。
【００４１】
ユーザがデータを要求したとき、ユーザが送った要求は、中央処理装置501がネットワークインターフェースコントローラ503を使用して受け取り、これらの要求は、ユーザが要求したアドレスおよびデータ長さなどの情報を搬送する。中央処理装置501は、ユーザが要求したデータを読み取るために、ネットワークインターフェースコントローラ503のDMAモジュールを起動するように、ユーザがネットワークインターフェースコントローラ503に対して要求したアドレスおよびデータ長さなどの情報を送る。
【００４２】
図6は本発明の別の実施形態による高速データ配布用のシステムを示しており、中央処理装置501は、構成ユニット601および送信ユニット602を含んでもよく、
構成ユニット601は、たとえば送信ディスクリプタ(Transmit Descriptor)などのデータ記述情報を構成し、図3に示されたように、ユーザが要求したアドレスおよびデータの長さの情報をデータ記述情報で搬送するように構成されており、さらに、構成ユニット601は、データ記述情報を構成するとき、パッケージモード識別情報、パッケージ選択識別情報、およびメモリ選択識別情報もデータ記述情報で搬送してもよく、パッケージモード識別情報は、データを要求しているユーザに対応しており、パッケージ選択識別情報は、ユーザが要求したデータをパッケージ化する必要があるかどうかを識別するために用いられ、メモリ選択識別情報は、記憶されたデータを、メモリ(Memory)から読み取るべきかそれとも記憶装置(Storage)から読み取るべきかを識別するために用いられ、
送信ユニット602は、ネットワークインターフェースコントローラ503がデータ記述情報を高速転送モジュール502へ転送するように、データ記述情報をネットワークインターフェースコントローラ503に送るように構成されている。
【００４３】
本発明によって提供される実施形態では、高速転送モジュール502は、PCIスイッチの中に組み込まれたまたはネットワークインターフェースコントローラ503の中に組み込まれた機能モジュールであり、直接的な送受機能をもたらす。この機能モジュールは、中央処理装置501によって構成された後に、記憶装置またはメモリの中のデータを読み取り、ネットワークインターフェースコントローラNICにデータを送って、DMAおよびデータ送信を完了してもよく、すなわち、高速転送モジュール502は、ユーザが要求したデータをDMAで読み取り、ユーザが要求したデータをネットワークインターフェースコントローラへ転送する。
【００４４】
概して、ネットワークインターフェースコントローラ503は、対応する送信ディスクリプタ(Transmit Descriptor)のリンクリストをメモリの中に有する。中央処理装置501がデータを送る必要があるとき、中央処理装置501は、送信ディスクリプタ(Transmit Descriptor)を構成する。このとき、ネットワークインターフェースコントローラ503は、送信ディスクリプタ(Transmit Descriptor)の中のバッファアドレス(Buffer Address)フィールドおよび長さ(Length)フィールドによって送るべきデータを取得し、内部のDMAモジュールに、対応アドレスからデータを読み取ることを通知してデータを送る。送るべきデータのそれぞれの部分について送信ディスクリプタ(Transmit Descriptor)を構成する必要があり、送信ディスクリプタが構成される都度、データの一部分が送られる。
【００４５】
送るべきデータが、連続したデータの一部分または中央処理装置501によって予測され得るデータの固定ストリームである場合、記憶装置がデータを記憶するように、中央処理装置501が高速転送モジュールを構成し、ネットワークインターフェースコントローラ503がデータを記憶装置(Storage)に直接送るか、あるいは、PCIスイッチと中央処理装置の間の帯域幅を占有することなく、ネットワークインターフェースコントローラ503と記憶装置(Storage)の間のやりとりのDMA動作を完了するように、データが、記憶装置(Storage)からネットワークインターフェースコントローラ503へ直接送られてもよい。
【００４６】
したがって、本発明の実施形態では、データの送信は、中央処理装置の介在を必要とせず、データをコピーすることによってメモリ資源が消費されるので、中央処理装置に必要とされるのは、データ記述情報を構成することのみであって、データをコピーする必要はない。
【００４７】
図7は本発明の別の実施形態による高速データ配布用のシステムを示しており、高速転送モジュール502は、第1の判断ユニット701およびパッケージユニット702を含んでもよく、
第1の判断ユニット701は、ユーザが要求したデータを、データ記述情報に従って読み取り、パッケージ選択識別情報に従って、ユーザが要求したデータをパッケージ化する必要があるかどうかを判断するように構成されており、
パッケージユニット702は、第1の判断ユニット701によって、ユーザが要求したデータをパッケージ化する必要があると判断された場合には、ユーザが要求したデータをパッケージ化し、パッケージ化されたデータをネットワークインターフェースコントローラ503へ転送するように構成されている。
【００４８】
図8は本発明の別の実施形態による高速データ配布用のシステムを示しており、高速転送モジュール502は、第2の判断ユニット801および転送ユニット802を含んでもよく、
第2の判断ユニット801は、メモリ選択識別情報に従って、ユーザが要求したデータをメモリから読み取るべきかそれともユーザが要求したデータを記憶装置から読み取るべきかを判断するように構成されており、また、
転送ユニット802は、第2の判断ユニット801によって、ユーザが要求したデータを記憶装置から読み取るべきと判断された場合には、ユーザが要求したデータを記憶装置から読み取り、ユーザが要求したデータをネットワークインターフェースコントローラ503へ転送し、そうでなければ、ユーザが要求したデータをメモリから読み取り、ユーザが要求したデータをネットワークインターフェースコントローラ503へ転送するように構成されている。
【００４９】
図5から図8のいずれかに例示された中央処理装置501は、図9に示される配送モジュール901をさらに含む。配送モジュール901は、パッケージモード識別情報を高速転送モジュール502に配送するように構成されており、パッケージモード識別情報はパッケージモードに対応する。
【００５０】
図10は、本発明の一実施形態による高速データ配布のための装置の概略構造図である。説明を簡単にするために、本発明の実施形態に関連する部分のみが示されており、これらの部分に含まれた機能モジュール/ユニットは、ソフトウェアモジュール/ユニット、ハードウェアモジュール/ユニット、またはソフトウェアとハードウェアを組み込んだモジュール/ユニットでもよい(この説明の原理は本明細書で提供されるそれぞれの実施形態に適用可能である)。図10に例示された高速データ配布用のこの装置は、図5から図9のいずれかに例示された高速転送モジュール502でもよく、受信モジュール1001およびデータ読取りモジュール1002を含んでおり、
受信モジュール1001は、中央処理装置が送ったデータ記述情報を受け取るように構成されており、データ記述情報は、図3に例示された送信ディスクリプタ(Transmit Descriptor)でもよく、ユーザが要求したデータのアドレスおよび長さの情報を含み、また、
データ読取りモジュール1002は、ネットワークインターフェースコントローラが、ユーザが要求したデータをユーザに送るように、ユーザが要求したデータをデータ記述情報に従って読み取り、ユーザが要求したデータをネットワークインターフェースコントローラへ転送するように構成されている。具体的には、データ読取りモジュール1002は、データ記述情報に従って、直接メモリアクセス方式で、ユーザが要求したデータを読み取り、ユーザが要求したデータをネットワークインターフェースコントローラへ転送するように構成されている。
【００５１】
したがって、この実施形態では、データを送信するのに中央処理装置の介在が不要であり、データをコピーすることによってメモリ資源が消費されるので、中央処理装置に必要とされるのは、データ記述情報を構成することのみであって、データをコピーする必要はない。
【００５２】
高速データ配布用の装置の前述の実装形態のやり方では、機能モジュールの分割は単なる例示であり、実際の用途では、前述の機能が、実装のために、たとえば関連したハードウェアの構成の要求またはソフトウェアの実装上の都合といった要求に従って種々の機能モジュールに割り当てられてもよく、すなわち、高速データ配布用の装置の内部構造は、前述の説明における機能のすべてまたは一部分を完成するように、種々の機能モジュールに分割されることに留意されたい。その上、実際の用途では、この実施形態における対応する機能モジュールは、対応するハードウェアによって実施されてもよく、対応するソフトウェアを実行する対応するハードウェアによって完成されてもよく、たとえば、前述の受信モジュールは、中央処理装置が送ったデータ記述情報の受信を実行する、たとえば受信器といったハードウェアでもよく、対応するコンピュータプログラムを実行することができ、それによって前述の機能を完成する共通のプロセッサまたは別のハードウェアデバイスでもよい(前述の説明の原理は、本明細書で提供されるそれぞれの実施形態に適用可能である)。
【００５３】
さらに、データ記述情報は、パッケージモード識別情報およびパッケージ選択識別情報をさらに含んでもよく、パッケージモード識別情報は、データを要求しているユーザに対応しており、パッケージ選択識別情報は、ユーザが要求したデータをパッケージ化する必要があるかどうかを識別するために用いられる。図11に示されるように、図10に例示されたデータ読取りモジュール1002は、第1の判断ユニット1101およびパッケージユニット1102を含んでもよく、図11には、本発明の別の実施形態による高速データ配布用の装置が示されており、
第1の判断ユニット1101は、データ記述情報に従って、ユーザが要求したデータを読み取り、パッケージ選択識別情報に従って、ユーザが要求したデータをパッケージ化する必要があるかどうかを判断するように構成されており、また、
パッケージユニット1102は、第1の判断ユニット1101によって、ユーザが要求したデータをパッケージ化する必要があると判断された場合には、ユーザが要求したデータをパッケージ化し、パッケージ化されたデータをネットワークインターフェースコントローラへ転送するように構成されている。
【００５４】
さらに、データ記述情報は、メモリ選択識別情報をさらに含んでもよく、メモリ選択識別情報は、ユーザが要求したデータをメモリから読み取るべきかそれともユーザが要求したデータを記憶装置から読み取るべきかを識別するのに用いられる。図12に示されるように、図10に例示されたデータ読取りモジュール1002は、第2の判断ユニット1201および転送ユニット1202を含んでもよく、図12には、本発明の別の実施形態による高速データ配布用の装置が示されており、
第2の判断ユニット1201は、メモリ選択識別情報に従って、ユーザが要求したデータをメモリから読み取るべきかそれともユーザが要求したデータを記憶装置から読み取るべきかを判断するように構成されており、また、
転送ユニット1202は、第2の判断ユニット1201によって、ユーザが要求したデータを記憶装置から読み取るべきと判断された場合には、ユーザが要求したデータを記憶装置から読み取り、ユーザが要求したデータをネットワークインターフェースコントローラへ転送し、そうでなければ、ユーザが要求したデータをメモリから読み取り、ユーザが要求したデータをネットワークインターフェースコントローラへ転送するように構成されている。
【００５５】
装置のモジュール/ユニットとその実行プロセスとの間の情報交換などの内容は、本発明の方法の実施形態と同一の概念に基づくものであり、本発明の方法の実施形態と同一の技術的な効果をもたらすことに留意されたい。特定の内容については、本発明の方法の実施形態における説明が参照されてもよく、本明細書でその詳細を繰り返すことはない。
【００５６】
当業者なら、たとえば次の方法の1つまたは複数あるいはすべてを用いることにより、関連するハードウェアに指示するプログラムによって、前述の実施形態の方法のステップのすべてまたは一部分が完成され得ることを理解するであろう。
【００５７】
方法1:
中央処理装置で、ユーザが要求したデータのアドレスおよび長さの情報を含んでいるデータ記述情報を高速転送モジュールに送り、
高速転送モジュールで、データ記述情報に従って、ユーザが要求したデータを読み取り、ユーザが要求したデータをネットワークインターフェースコントローラへ転送し、
ネットワークインターフェースコントローラで、ユーザが要求したデータをユーザに送る。
【００５８】
方法2:
中央処理装置が送った、ユーザが要求したデータのアドレスおよび長さの情報を含んでいるデータ記述情報を受け取り、
ネットワークインターフェースコントローラが、ユーザが要求したデータをユーザに送るように、データ記述情報に従って、ユーザが要求したデータを読み取り、ユーザが要求したデータをネットワークインターフェースコントローラへ転送する。
【００５９】
プログラムは、コンピュータ可読記憶媒体に記憶されてもよい。この記憶媒体は、読取り専用メモリ(ROM、Read Only Memory)、ランダムアクセスメモリ(RAM、Random Access Memory)、磁気ディスク、光ディスクなどを含んでもよい。
【００６０】
本発明の実施形態で提供される高速データ配布のための方法、装置、およびシステムが、上記で詳細に説明されている。本明細書では、本発明の原理および実施方法を説明するのに特定の実例が用いられており、これらの実施形態の説明は、本発明の方法および核心概念をより理解可能にするように意図されたものに過ぎない。一方、当業者なら、本発明の概念に基づき、特定の実装形態のやり方および用途の範囲に関して修正形態を製作し得る。したがって、本明細書の内容は、本発明に対する限定として解釈されないものとする。
【符号の説明】
【００６１】
501  中央処理装置
502  高速転送モジュール
503  ネットワークインターフェースコントローラ
601  構成ユニット
602  送信ユニット
701  第1の判断ユニット
702  パッケージユニット
801  第2の判断ユニット
802  転送ユニット
901  配送モジュール
1001  受信モジュール
1002  データ読取りモジュール
1101  第1の判断ユニット
1102  パッケージユニット
1201  第2の判断ユニット
1202  転送ユニット
【図１】
0005966229.tif 000002
【図２】
0005966229.tif 000003
【図３】
0005966229.tif 000004
【図４】
0005966229.tif 000005
【図５】
0005966229.tif 000006
【図６】
0005966229.tif 000007
【図７】
0005966229.tif 000008
【図８】
0005966229.tif 000009
【図９】
0005966229.tif 000010
【図１０】
0005966229.tif 000011
【図１１】
0005966229.tif 000012
【図１２】
0005966229.tif 000013