(57)【要約】  本出願の実施形態によって開示されるのは、データバッファリング方法、データ処理方法、コンピュータデバイス、および記憶媒体である。本方法は、仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置情報を取得することと、物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を仮想位置情報として指定することと、データが物理データバッファに記憶されているときに仮想位置情報にしたがってデータを記憶することと、を備える。物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報は、物理デバイスによる割り当てによって判定される代わりに、仮想位置情報として指定されるため、物理ネットワークインターフェースコンポーネントは、データを受信すると、仮想ネットワークインターフェースコンポーネントによって指定されたデータバッファにデータを記憶することができ、それにより、物理ネットワークインターフェースコンポーネントによって指定されたデータバッファから仮想ネットワークインターフェースコンポーネントによって指定されたデータバッファにデータをコピーするプロセスを不要にし、これは、データの受信にかかる時間を短縮し、データ受信のネットワーク性能を向上させ、ネットワークの遅延を低減する。
2021525983.tif 000002
【特許請求の範囲】
【請求項１】
データバッファリング方法であって、
仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置情報を取得することと、
物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を前記仮想位置情報として指定することと、
データを前記物理データバッファに記憶するときに、前記仮想位置情報にしたがって前記データを記憶することと、を備える、方法。
【請求項２】
前記仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置情報を取得する前に、前記方法が、さらに、
前記仮想ネットワークインターフェースコンポーネントに仮想記憶空間を割り当てることと、
前記仮想記憶空間内の複数の仮想データバッファの仮想位置情報を判定することと、を備える、請求項１に記載の方法。
【請求項３】
前記仮想記憶空間内の前記複数の仮想データバッファの前記仮想位置情報を前記判定することが、
前記仮想ネットワークインターフェースコンポーネントの仮想受信キューを作成することであって、前記仮想受信キューが仮想バッファ制御情報を含む、作成することと、
前記仮想記憶空間から、前記仮想位置情報を取得することと、
前記仮想位置情報を前記仮想バッファ制御情報に追加することと、を備える、請求項２に記載の方法。
【請求項４】
前記仮想ネットワークインターフェースコンポーネントのデータバッファの前記仮想位置情報を前記取得することが、
前記仮想受信キュー内の前記仮想位置情報の検出を実行することを備える、請求項３に記載の方法。
【請求項５】
前記仮想受信キュー内の前記仮想位置情報の検出を前記実行する前に、前記方法が、さらに、
前記仮想ネットワークインターフェースコンポーネントの初期化が完了した旨の通知を受信することを備える、請求項４に記載の方法。
【請求項６】
前記物理ネットワークインターフェースコンポーネントの前記物理データバッファの前記物理位置情報を前記仮想位置情報として前記指定することが、
前記仮想位置情報を物理アドレスに変換することと、
前記物理アドレスにしたがって、前記物理データバッファの前記物理位置情報を判定することと、を備える、請求項１に記載の方法。
【請求項７】
前記物理アドレスにしたがって、前記物理データバッファの前記物理位置情報を前記判定することが、
前記物理データバッファの物理バッファ制御情報に前記物理アドレスを追加することを備える、請求項６に記載の方法。
【請求項８】
前記物理ネットワークインターフェースコンポーネントの前記物理データバッファの前記物理位置情報を前記仮想位置情報として前記指定する前に、前記方法が、さらに、
前記物理バッファ制御情報から構成される情報キューを作成し、空の物理記憶空間を作成することを備え、
前記物理データバッファの前記物理バッファ制御情報に前記物理アドレスを前記追加することが、
前記情報キュー内の前記物理バッファ制御情報を取得することと、
前記取得した物理バッファ制御情報に順番に前記物理アドレスを追加することと、
前記物理バッファ制御情報を前記物理記憶空間に記憶することと、を備える、請求項７に記載の方法。
【請求項９】
前記データを前記物理データバッファに記憶するときに、前記仮想位置情報にしたがって前記データを前記記憶する前に、前記方法が、さらに、
前記物理記憶空間内の前記物理バッファ制御情報を取得することと、
前記物理ネットワークインターフェースコンポーネントの物理受信キューを作成することと、
前記物理バッファ制御情報を前記物理受信キューに追加することと、を備える、請求項８に記載の方法。
【請求項１０】
前記仮想ネットワークインターフェースコンポーネントが、前記物理ネットワークインターフェースコンポーネントの前記物理受信キューへの１対１のマッピングを有し、
前記物理受信キューが、前記物理データバッファへの１対１のマッピングを有し、
データを前記物理データバッファに記憶するときに、前記仮想位置情報にしたがって前記データを記憶することが、
前記データにしたがって、前記データが送信されるべき仮想ネットワークインターフェースコンポーネントを判定することと、
前記仮想ネットワークインターフェースコンポーネントに対応する物理受信キューから、対応する物理データバッファの物理位置情報を取得することと、
前記物理位置情報にしたがって前記データを記憶することと、を備える、請求項１に記載の方法。
【請求項１１】
前記仮想ネットワークインターフェースコンポーネントに対応する前記物理受信キューから前記対応する物理データバッファの前記物理位置情報を前記取得することが、
前記物理受信キュー内の前記物理バッファ制御情報を取得することであって、前記物理バッファ制御情報が前記物理位置情報を含む、取得することを備え、
前記物理位置情報にしたがって前記データを前記記憶した後、前記方法が、さらに、
物理マシンが受信データを検出するように、前記データが受信された旨を前記物理制御バッファ情報にマークすることを備える、請求項１０に記載の方法。
【請求項１２】
さらに、
前記物理バッファ制御情報にしたがって、前記仮想ネットワークインターフェースコンポーネントが前記受信データを検出するように、前記仮想ネットワークインターフェースコンポーネント内の前記仮想受信キューの前記仮想バッファ制御情報に前記データが受信された旨をマークすることを備える、請求項１１に記載の方法。
【請求項１３】
さらに、
前記物理バッファ制御情報にしたがって、前記仮想ネットワークインターフェースコンポーネントに前記データが受信された旨を通知することを備える、請求項１１に記載の方法。
【請求項１４】
データ処理方法であって、
物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置にデータを記憶するために使用されるデータ記憶命令を受信することと、
前記物理ネットワークインターフェースコンポーネントの前記物理データバッファの前記物理位置に対応する仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置を取得することと、
前記データを前記仮想位置に記憶することと、を備える、方法。
【請求項１５】
メモリと、プロセッサと、前記メモリに記憶されて前記プロセッサ上で実行可能なコンピュータプログラムとを備えるコンピュータデバイスであって、前記プロセッサが、前記コンピュータプログラムを実行したときに請求項１〜１４のうちの１つ以上に記載の方法を実装する、コンピュータデバイス。
【請求項１６】
コンピュータプログラムが記憶されたコンピュータ可読記憶媒体であって、前記コンピュータプログラムが、プロセッサによって実行されたときに請求項１〜１４のうちの１つ以上に記載の方法を実装する、コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２０１８年５月３０日に出願された「データバッファリング方法、データ処理方法、コンピュータデバイス、記憶媒体」と題された中国特許出願第２０１８１０５３９１５３．１号の優先権を主張し、これは参照によりその全体が本明細書に組み込まれる。
【０００２】
本出願は、データ処理の技術分野に関し、より具体的には、データバッファリング方法、データ処理方法、コンピュータデバイス、およびコンピュータ可読記憶媒体に関する。
【背景技術】
【０００３】
仮想ネットワークでは、物理マシン（物理マシンはまた、物理コンピュータ、コンピュータデバイス、またはホストデバイスとも呼ばれることができる）でシミュレートされた仮想マシン（ＶＭ）は、ｖＳｗｉｔｃｈ（仮想スイッチ）を介して、仮想スイッチルーティングやトンネルエンドポイント（ＴＥＰ）などのネットワークサービスを提供する。ｖＳｗｉｔｃｈは、優れたネットワークスループット性能も提供するソフトウェアを純粋に使用して実装される。しかしながら、その主な問題は、物理マシンのリソース使用率を妨げる、ｖＳｗｉｔｃｈが物理マシンのＣＰＵおよびメモリリソースの一部を占有する必要があるということである。
【０００４】
上記に照らして、スマートネットワークカードを使用する解決策が作成された。主な目的は、より多くの物理マシンリソースがクライアントに解放されるように、ｖＳｗｉｔｃｈ機能をスマートネットワークカードに組み込み、より良好なネットワークスループットを提供することを目的とすることである。
【０００５】
調査の結果、特許出願人は、パケット受信プロセスに関して、物理マシンのネットワークカードが、仮想マシンに送信されたパケットを受信すると、ネットワークカードドライバによって指定されたデータバッファにパケットを最初に記憶した後、仮想マシンの仮想ネットワークカードによって指定されたデータバッファにデータをコピーする必要があることを見出した。これは、データ受信プロセス中にデータがコピーされる必要があるという問題につながる。そのようなコピー処理は、データ受信時の時間コストの増加およびネットワーク性能の低下、ならびにネットワーク遅延の増加につながる。
【発明の概要】
【課題を解決するための手段】
【０００６】
上述した問題を考慮して、本出願は、上述した問題を解消するか、または少なくとも部分的に解決するデータバッファリング方法、データ処理方法、コンピュータデバイス、およびコンピュータ可読記憶媒体を提供するために提案される。
【０００７】
本出願の一態様によれば、データバッファリング方法であって、
仮想ネットワークインターフェースコンポーネントの仮想データバッファのｖｉを取得することと、
物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を仮想位置情報として指定することと、
データが物理データバッファに記憶されているときに、仮想位置情報にしたがってデータを記憶することと、を備える、方法が提供される。
必要に応じて、前記仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置情報を取得する前に、本方法は、さらに、
仮想ネットワークインターフェースコンポーネントに仮想記憶空間を割り当てることと、
仮想記憶空間内の複数の仮想データバッファの仮想位置情報を判定することと、を備える。
【０００８】
必要に応じて、前記仮想記憶空間内の複数の仮想データバッファの仮想位置情報を判定することは、
仮想ネットワークインターフェースコンポーネントの仮想受信キューを作成することであって、仮想受信キューが仮想バッファ制御情報を含むことと、
仮想記憶空間から、仮想位置情報を取得することと、
仮想位置情報を仮想バッファ制御情報に追加することと、を備える。
【０００９】
必要に応じて、前記仮想ネットワークインターフェースコンポーネントのデータバッファの仮想位置情報を取得することは、
仮想受信キュー内の仮想位置情報の検出を実行することを備える。
【００１０】
必要に応じて、前記仮想受信キュー内の仮想位置情報の検出を実行する前に、本方法は、さらに、
仮想ネットワークインターフェースコンポーネントの初期化が完了した旨の通知を受信することを備える。
【００１１】
必要に応じて、前記仮想位置情報としての物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を指定することは、
仮想位置情報を物理アドレスに変換することと、
物理アドレスにしたがって、物理データバッファの物理位置情報を判定することと、を備える。
【００１２】
必要に応じて、前記物理アドレスにしたがって物理データバッファの物理位置情報を判定することは、
物理データバッファの物理バッファ制御情報に物理アドレスを追加することを備える。
【００１３】
必要に応じて、前記物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を仮想位置情報として指定する前に、本方法は、さらに、
物理バッファ制御情報から構成される情報キューを作成し、空の物理記憶空間を作成することを備え、
前記物理データバッファの物理バッファ制御情報に物理アドレスを追加することは、
情報キュー内の物理バッファ制御情報を取得することと、
取得した物理バッファ制御情報に順番に物理アドレスを追加することと、
物理バッファ制御情報を物理記憶空間に記憶することと、を備える。
【００１４】
必要に応じて、前記データが物理データバッファに記憶されているときに仮想位置情報にしたがってデータを記憶する前に、本方法は、さらに、
物理記憶空間内の物理バッファ制御情報を取得することと、
物理ネットワークインターフェースコンポーネントの物理受信キューを作成することと、
物理バッファ制御情報を物理受信キューに追加することと、を備える。
【００１５】
必要に応じて、仮想ネットワークインターフェースコンポーネントは、物理ネットワークインターフェースコンポーネントの物理受信キューへの１対１のマッピングを有し、物理受信キューは、物理データバッファへの１対１のマッピングを有し、前記データが物理データバッファに記憶されているときに仮想位置情報にしたがってデータを記憶することは、
データにしたがって、データが送信されるべき仮想ネットワークインターフェースコンポーネントを判定することと、
前記仮想ネットワークインターフェースコンポーネントに対応する物理受信キューから、対応する物理データバッファの物理位置情報を取得することと、
物理位置情報にしたがってデータを記憶することと、を備える。
【００１６】
必要に応じて、前記仮想ネットワークインターフェースコンポーネントに対応する物理受信キューから対応する物理データバッファの物理位置情報を取得することは、
物理受信キュー内の物理バッファ制御情報を取得することであって、物理バッファ制御情報が物理位置情報を含むことを備え、
前記物理位置情報にしたがってデータを記憶した後、本方法は、さらに、物理マシンが受信したデータを検出するように、物理的制御バッファ情報にデータが受信された旨をマークすることを備える。
【００１７】
必要に応じて、本方法は、さらに、
物理バッファ制御情報にしたがって、仮想ネットワークインターフェースコンポーネントが受信データを検出するように、仮想ネットワークインターフェースコンポーネント内の仮想受信キューの仮想バッファ制御情報にデータが受信された旨をマークすることを備える。
【００１８】
必要に応じて、本方法は、さらに、
物理バッファ制御情報にしたがって、仮想ネットワークインターフェースコンポーネントにデータが受信された旨を通知することを備える。
したがって、本出願の別の態様によれば、
物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置にデータを記憶するために使用されるデータ記憶命令を受信することと、
物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置に対応する仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置を取得することと、
データを仮想位置に記憶することと、を備える、データ処理方法がさらに提供される。
したがって、本出願の別の態様によれば、メモリと、プロセッサと、メモリに記憶され且つプロセッサ上で実行可能なコンピュータプログラムとを備え、プロセッサが、コンピュータプログラムを実行したときに上述した方法の１つ以上を実装する、コンピュータデバイスがさらに提供される。
【００１９】
したがって、本出願の別の態様によれば、記憶されたコンピュータプログラムを有し、プログラムがプロセッサによって実行されたときに上述した方法の１つ以上を実装する、コンピュータ可読記憶媒体がさらに提供される。
【００２０】
本出願の実施形態によれば、仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置情報を取得し、物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を仮想位置情報として指定し、データが物理データバッファに記憶されているときの仮想位置情報にしたがってデータを記憶することにより、本出願は、物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報が物理デバイスによる割り当てを介して判定される代わりに仮想位置情報として指定されるため、データを受信すると、物理ネットワークインターフェースコンポーネントが、受信データを仮想ネットワークインターフェースコンポーネントによって指定されたデータバッファに直接記憶することを可能にし、それにより、物理ネットワークインターフェースコンポーネントによって指定されたデータバッファから仮想ネットワークインターフェースコンポーネントによって指定されたデータバッファにデータをコピーするプロセスを不要にし、これは、データの受信にかかる時間を短縮し、データ受信のネットワーク性能を向上せ、ネットワークの遅延を低減する。
【００２１】
上記の説明は、本出願の技術的解決策の概要にすぎない。当業者が本出願の技術的手段をよりよく理解するために、さらに本明細書の内容にしたがって実装するために、および本出願の上記および他の目的、特徴、および利点をより明白で理解可能にするために、本出願の特定の実装方法が以下に示される。
【００２２】
本開示の例示的な実施形態における技術的解決策をより明確に説明するために、以下に添付の図面を簡単に説明する。明らかに、以下の説明の添付図面は、本開示のいくつかの実施形態を単に表すだけであり、当業者は、発明の努力なしに、これらの添付図面から他の添付図面をさらに導出することができる。
【図面の簡単な説明】
【００２３】
【図１】図１は、仮想マシン展開の概略図を示している。
【図２】図２は、データバッファリングプロセスの概略図を示している。
【図３】図３は、本出願の実施形態Ｉにかかるデータバッファリング方法の実施形態のフローチャートを示している。
【図４】図４は、本出願の実施形態ＩＩにかかるデータバッファリング方法の実施形態のフローチャートを示している。
【図５】図５は、本出願の実施形態ＩＩＩにかかるデータ処理方法の実施形態のフローチャートを示している。
【図６】図６は、最適化されていないデータバッファリングプロセスの概略図を示している。
【図７】図７は、最適化されたデータバッファリングプロセスの概略図を示している。
【図８】図８は、本出願の実施形態ＩＶにかかるデータバッファリング装置の実施形態の構造ブロック図を示している。
【図９】図９は、本出願の実施形態Ｖにかかるデータバッファリング装置の実施形態の構造ブロック図を示している。
【図１０】図１０は、本開示に記載される様々な実施形態を実施するために使用されることができる例示的なシステムを示している。
【発明を実施するための形態】
【００２４】
以下、本開示の例示的な実施形態を、添付の図面を参照してより詳細に説明する。図面は、本開示の例示的な実施形態を示しているが、本開示は、様々な形態で実施することができ、本明細書に記載の実施形態によって限定されるべきではないことを理解されたい。むしろ、これらの実施形態は、本開示のより完全な理解を可能にし、本開示の範囲を当業者に完全に伝えるために提供される。
【００２５】
当業者が本出願をよりよく理解できるようにするために、本出願に含まれる概念を以下に説明する。
【００２６】
仮想ネットワークインターフェースコンポーネントは、仮想マシンと仮想ネットワーク内の伝送媒体とを接続するインターフェースを含み、仮想マシンによって使用されるネットワークからデータを受信することができる。具体的には、それは、本出願の実施形態によって限定されない、任意の適用可能な仮想ネットワークインターフェースコンポーネントとすることができる。例えば、図１に示されるような仮想マシン展開の概略図において、図１に示すように、ｖＳｗｉｔｃｈ機能を備えたスマートネットワークカードが物理マシンに採用されている。物理マシン上の各仮想マシンは、仮想ネットワークカードインターフェース（すなわち、仮想ネットワークインターフェースコンポーネント）としてバートアイオー−ネットを採用している。
【００２７】
仮想ネットワークインターフェースコンポーネントは、データを記憶および処理するための仮想データバッファ、例えば、バートアイオー−ネットインターフェースドライバによって指定された位置のメモリ領域を事前に指定する。具体的には、本出願の実施形態によって限定されない、任意の適用可能な仮想データバッファを含むことができる。
【００２８】
したがって、仮想位置情報は、仮想データバッファの位置、例えば、バートアイオー−ネットインターフェースドライバによって指定されたメモリプール内の複数の仮想データバッファのメモリアドレスを指定するために使用される。具体的には、本出願の実施形態によって限定されない、任意の適用可能な仮想位置情報を含むことができる。
【００２９】
物理ネットワークインターフェースコンポーネントは、物理マシンとネットワーク内の伝送媒体を接続するインターフェースを含み、物理マシンによって使用されるデータをネットワークから受信することができる。具体的には、本出願の実施形態によって限定されない、任意の適用可能な物理ネットワークインターフェースコンポーネントを含むことができる。例えば、図１に示すように、物理マシンによって採用されるｖＳｗｉｔｃｈ機能を有するスマートネットワークカードは、物理ネットワークインターフェースコンポーネントである。業界では一般に標準のバートアイオー−ネット仮想ネットワークカードインターフェースを採用しており、現在のスマートネットワークカードがバートアイオー−ネット仮想ネットワークカードインターフェースをサポートしていないため、ネットワーク上のトラフィックは、仮想マシンに直接送信されることができないが、ＳＲＩＯＶ（ハードウェアベースの仮想化ソリューション）のＶＦデバイス（物理機能に関連付けられた機能）にのみ送信されることは注目に値する。物理マシン上の各ＳＲＩＯＶ  ＶＦデバイスは、仮想マシンのバートアイオー−ネットインターフェースとの１対１のマッピング関係を有する。物理マシン上の１つの単純な転送プログラムは、ＶＦデバイスからバートアイオー−ネットインターフェースへの変換を完了し、それによって仮想マシンネットワークを物理ネットワークカードに接続する。
【００３０】
物理ネットワークインターフェースコンポーネントは、データを記憶および処理するために、物理データバッファ、例えば、スマートネットワークカードドライバによって指定された位置のメモリ領域を事前に指定する。具体的には、それは、本出願の実施形態によって限定されない、任意の適用可能な物理データバッファを含むことができる。
【００３１】
したがって、物理位置情報は、物理データバッファの位置、例えば、スマートネットワークカードドライバが指定するメモリプール内の複数の物理データバッファのメモリアドレスを指定するために使用される。具体的には、それは、本出願の実施形態によって限定されない、任意の適用可能な物理位置情報を含むことができる。
【００３２】
本出願の任意の実施形態では、仮想マシンのカーネルまたは仮想マシン上で実行されるＡＰＰ（アプリケーション）は、仮想ネットワークインターフェースコンポーネントのための仮想記憶空間をデータ記憶領域として割り当てることができる。仮想記憶空間は、複数の仮想データバッファを含むことができる。例えば、仮想マシンのカーネルまたはＡＰＰは、１つのメモリプール（メモリプール）、すなわち仮想記憶空間を初期化し、これは、パケットの記憶領域としてバートアイオー−ネットインターフェースドライバに提供される。
【００３３】
本出願の任意の実施形態では、仮想ネットワークインターフェースコンポーネントのために仮想受信キューが作成される必要があり、キューは、ソフトウェアドライバとハードウェアとの間の通信に使用され、主にネットワークからパケットデータを受信するための制御情報を記憶する。仮想受信キューの各要素は、仮想バッファ制御情報と呼ばれる。仮想バッファ制御情報は、パケット長、データバッファ長など、仮想データバッファの特性および状態を記述するために使用される。異なるネットワークデバイスによって定義された仮想バッファ制御情報は、異なるフォーマットおよびサイズを有することができるが、少なくとも本出願の実施形態によって限定されない仮想データバッファのアドレスを含む。
【００３４】
例えば、バートアイオー−ネットインターフェースドライバは、デバイスを初期化し、最終的に、本質的にソフトウェアドライバとハードウェアとの間の通信に使用される１つのキューであるｒｘｑ（受信キュー）を初期化する。キューの各要素は、記述子（すなわち、仮想バッファ制御情報）と呼ばれる。記述子は、パケットキューを送受信し、ソフトウェア通信を実行するためにネットワークカードによって定義されるデータフォーマットである。様々なタイプのネットワークデバイスによって定義された各記述子は、少なくともデータバッファのアドレスを含む。
【００３５】
本出願の任意の実施形態では、仮想マシンによって定義され、物理マシンのハードウェア記憶デバイス上の物理アドレス（すなわち、物理アドレス）ではない仮想位置情報は、物理マシン上のメモリアドレス、ハードディスクアドレスなど、または本出願の実施形態によって限定されない他の任意の適用可能な物理アドレスを含む。仮想マシンの仮想位置情報は、物理アドレスに変換されることができる。
【００３６】
本出願の任意の実施形態では、物理バッファ制御情報を使用して、パケット長、データバッファ長などの物理データバッファの特性および状態を記述する。異なるネットワークデバイスによって定義された物理バッファ制御情報は、異なるフォーマットおよびサイズを有することができるが、少なくとも、本出願の実施形態によって限定されない、物理データバッファのアドレスまたは任意の他の適用可能な情報を含むことができる。
【００３７】
例えば、メモリプールの各要素は、１つのデータバッファだけではない。むしろ、各データバッファは、１つの制御構造、すなわち、同じタイプまたは異なるタイプのデータを有するデータセットを含まなければならず、これは、本出願において物理バッファ制御情報と呼ばれる。物理マシンのメモリプール（メモリプール）がｂｃｔｌと呼ばれる制御構造を定義すると仮定する：
ｔｙｐｅｄｅｆ  ｓｔｒｕｃｔ  ｂｕｆ  ｃｔｒｌ｛
ｖｏｉｄ＊ａｄｄｒ
・・・・・・
｝ｂｃｔｌ。
【００３８】
本出願の任意の実施形態では、情報キューを使用して、物理バッファ制御情報を記憶する。換言すれば、キューの各要素は、物理バッファ制御情報である。物理マシンに割り当てられた物理記憶空間は、データの記憶領域として使用される。
【００３９】
本出願の任意の実施形態では、物理ネットワークインターフェースコンポーネントのために物理受信キューが作成される必要があり、キューは、ソフトウェアドライバとハードウェアとの間の通信に使用され、主にネットワークからパケットデータを受信するための制御情報を記憶する。物理受信キューの各要素は、物理バッファ制御情報と呼ばれる。
【００４０】
本出願の任意の実施形態では、物理マシンは、ｖＳｗｉｔｃｈ機能を有するスマートネットワークカードを採用するため、スマートネットワークカードは、データを受信すると、異なる仮想マシンに向けられたデータを対応するＶＦデバイスに配信することができる。ＶＦデバイスは、スマートネットワークカードの出力ポートとして機能するため、物理マシン上に対応する物理受信キューを有する必要がある。ＶＦデバイスは、仮想ネットワークインターフェースコンポーネントへの１対１のマッピングを有し、ＶＦデバイスは、物理受信キューへの１対１のマッピングを有するため、仮想ネットワークインターフェースコンポーネントもまた、物理ネットワークインターフェースコンポーネントの物理受信キューへの１対１のマッピングを有する。さらに、物理受信キューはまた、異なる仮想マシンに送信されたデータが異なる物理受信キューを介して異なる物理データバッファにバッファリングされることができるように、物理データバッファへの１対１のマッピングも有する。
【００４１】
本出願の実施形態によれば、パケット受信プロセスにおいて、物理マシンのネットワークカードは、仮想マシンに送信されたパケットを受信すると、最初に、ネットワークカードドライバによって指定されたデータバッファにパケットを記憶した後、仮想マシンの仮想ネットワークカードによって指定されたデータバッファにデータをコピーしなければならず、これは、データ受信プロセス中にデータがコピーされる必要があるという問題につながる。データバッファリングプロセスの概略図である図２に示すように、本出願は、仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置情報を取得し、仮想位置情報として物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を指定し、データが物理データバッファに記憶されているときに仮想位置情報にしたがってデータを記憶するデータバッファリングメカニズムを提供する。物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報は、物理デバイスによる割り当てによって判定される代わりに、仮想位置情報として指定されるため、物理ネットワークインターフェースコンポーネントは、データを受信すると、仮想ネットワークインターフェースコンポーネントによって指定されたデータバッファに受信したデータを直接記憶することができ、それにより、物理ネットワークインターフェースコンポーネントによって指定されたデータバッファから仮想ネットワークインターフェースコンポーネントによって指定されたデータバッファにデータをコピーするプロセスを不要にし、これは、データの受信にかかる時間を短縮し、データ受信のネットワーク性能を向上せ、ネットワークの遅延を低減する。本出願は、上記の適用シナリオに適用可能であるが、限定されるものではない。
【００４２】
図３を参照すると、本出願の実施形態Ｉにかかるデータ処理方法の実施形態のフローチャートが示されている。本方法は、具体的には、以下のステップを備えることができる。
【００４３】
ステップ１０１：仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置情報を取得する。本出願の実施形態では、仮想ネットワークインターフェースコンポーネントが初期化された後、仮想データバッファの仮想位置情報を取得することができる。例えば、全てのデータバッファ（すなわち、仮想データバッファ）のポインタ情報は、バートアイオー−ネットインターフェースのｒｘｑキューをスキャンすることによって取得される。具体的には、これは、本出願の実施形態によって限定されない、任意の適用可能な方法で仮想位置情報を取得することを含むことができる。
【００４４】
ステップ１０２：物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を仮想位置情報として指定する。
【００４５】
本出願の実施形態では、物理ネットワークインターフェースコンポーネントの初期化プロセスにおいて、物理位置情報は、もともと物理マシンによって指定され、これは、物理データバッファと仮想データバッファとの間に位置差をもたらす。受信データの物理データバッファから仮想データバッファへのコピーを排除するために、物理データバッファの物理位置情報は、取得された仮想位置情報として直接指定される。物理位置情報を仮想位置情報として指定するために様々な方法を採用することができ、これは本出願の実施形態によって限定されない。
【００４６】
例えば、物理マシン上の転送プログラムが１つのキューを作成することができ、キュー内の各要素は、上記で定義されたｂｃｔｌ制御構造である。物理マシンは、データバッファまたは制御構造を有しない空のメモリプールを１つ作成する。物理マシンの転送プログラムは、バートアイオー−ネットインターフェースが初期化された旨の通知を受信し、バートアイオー−ネットインターフェースのｒｘｑ仮想受信キューをスキャンして、全てのデータバッファのポインタ情報を取得する。データバッファの仮想位置情報は、物理マシンの物理アドレスに変換された後、データバッファを有しないｂｃｔｌ制御構造がキューから取得され、ｂｃｔｌ制御構造内の物理位置情報には、割り当て動作を使用して仮想位置情報から変換された物理アドレスになる値が割り当てられる。最終的に、ｂｃｔｌ制御構造は、メモリプールにエンキューされる。この時点で、物理マシンのメモリプール内のデータバッファは、本質的に、仮想マシンによって割り当てられたアドレスである。その後、転送プログラムが物理ネットワークインターフェースコンポーネントのｒｘｑ物理受信キューを初期化すると、物理位置情報は、メモリプールからデキューすることによって取得され、これは、実際には仮想マシンによって割り当てられた仮想位置情報である。
【００４７】
ステップ１０３：データが物理データバッファに記憶されているときに、仮想位置情報にしたがってデータを記憶する。
【００４８】
ネットワークからデータを受信すると、物理ネットワークインターフェースコンポーネントは、物理ネットワークインターフェースコンポーネントのメモリにデータをバッファリングする。次に、ｖＳｗｉｔｃｈ機能は、データにしたがって、データが送信されるべき仮想マシンを決定する。データが仮想マシンに送信される前に、まず物理マシンの物理データバッファに記憶されてから、転送プログラムによって仮想マシンに送信される必要がある。
【００４９】
本出願の実施形態では、データが物理データバッファに記憶されているとき、仮想マシンに対応する物理受信キューが読み取られて、物理データバッファの情報を取得し、物理データバッファは、前の初期化プロセスで満たされている。次に、ハードウェアは、ＤＭＡ（ダイレクトメモリアクセス）を使用して、物理マシンの指定されたメモリにデータを送信する。換言すれば、データが物理データバッファに記憶されているとき、物理位置情報が仮想位置情報として指定されているため、データは、実際には仮想位置情報にしたがって記憶されている。その後、対応する制御情報を単に構成して、ネットワークからのデータが物理ネットワークインターフェースコンポーネントの物理データバッファに配信されることを示す。転送プログラムは、制御情報にしたがって、配信されたデータが存在することを検出し、それに応じて、データが配信されるべき仮想マシンにしたがって仮想ネットワークインターフェースコンポーネントの制御情報を更新するか、または仮想ネットワークインターフェースコンポーネントにアクティブに通知する。最後に、仮想ネットワークインターフェースコンポーネントは、配信されたデータが存在することを検出した後、仮想位置情報にしたがって仮想データバッファからデータをフェッチするように仮想マシンに通知する。
【００５０】
本出願の実施形態では、データは、仮想位置情報にしたがって物理データバッファに記憶され、これは、物理データバッファおよび仮想データバッファが同じ位置にあることを意味する。物理マシンの場合、データは、物理データバッファに記憶され、仮想マシンの場合、データは、仮想データバッファに記憶されている。したがって、物理データバッファから仮想データバッファにデータをコピーする必要はない。データが配信されたことが仮想マシンに通知されている限り、データは仮想データバッファからフェッチされることができる。
【００５１】
本出願の実施形態によれば、仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置情報を取得し、物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を仮想位置情報として指定し、データが物理データバッファに記憶されているときの仮想位置情報にしたがってデータを記憶することにより、本出願は、物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報が物理デバイスによる割り当てを介して判定される代わりに仮想位置情報として指定されるため、データを受信すると、物理ネットワークインターフェースコンポーネントが、受信データを仮想ネットワークインターフェースコンポーネントによって指定されたデータバッファに直接記憶することを可能にし、それにより、物理ネットワークインターフェースコンポーネントによって指定されたデータバッファから仮想ネットワークインターフェースコンポーネントによって指定されたデータバッファにデータをコピーするプロセスを不要にし、これは、データの受信にかかる時間を短縮し、データ受信のネットワーク性能を向上せ、ネットワークの遅延を低減する。
【００５２】
図４を参照すると、本出願の実施形態ＩＩにかかるデータ処理方法の一実施形態のフローチャートが示されている。本方法は、具体的には、以下のステップを備えることができる。
【００５３】
ステップ２０１：仮想ネットワークインターフェースコンポーネントに仮想記憶空間を割り当てる。
【００５４】
本出願の実施形態では、物理データバッファから仮想データバッファにデータをコピーするプロセスを排除するために、初期化プロセスを最初に最適化する必要がある。仮想マシンの初期化プロセスは、仮想記憶空間を準備するステップを含む。このステップは、最初に仮想ネットワークインターフェースコンポーネントに１つの仮想記憶空間を割り当てることと、その空間をデータ記憶領域として仮想ネットワークインターフェースコンポーネントのドライバに提供することとを含む。メモリプールは、パケットデータによって満たされるように構成された仮想データバッファを含む。
【００５５】
例えば、仮想マシンのカーネルまたはＡＰＰは、パケットの記憶領域としてバートアイオー−ネットインターフェースのドライバに提供される１つのメモリプール（すなわち、仮想記憶空間）の初期化の責を担う。
【００５６】
ステップ２０２：仮想記憶空間内の複数の仮想データバッファの仮想位置情報を判定する。
【００５７】
本出願の実施形態では、仮想記憶空間は、複数の仮想データバッファを含み、仮想ネットワークインターフェースコンポーネントは、最初に、具体的には仮想ネットワークインターフェースコンポーネントに割り当てられた仮想記憶空間から連続的にデキューして新たな仮想データバッファの仮想位置情報を取得することができる複数の仮想データバッファの仮想位置情報を判定する必要がある。具体的には、それは、本出願の実施形態によって限定されない任意の適用可能な方法を含むことができる。
【００５８】
本出願の実施形態では、必要に応じて、仮想記憶空間内の複数の仮想データバッファの仮想位置情報を判定する実装方法は、以下を含むことができる：
サブステップＳ１：仮想ネットワークインターフェースコンポーネントの仮想受信キューを作成することであって、仮想受信キューが仮想バッファ制御情報を含むこと、
サブステップＳ２：仮想記憶空間から仮想位置情報を取得すること、および、
サブステップＳ３：仮想位置情報を仮想バッファ制御情報に追加すること。
例えば、バートアイオー−ネットインターフェースのドライバは、デバイスの初期化を実行し、最終的にｒｘｑ仮想受信キューを初期化する。ｒｘｑの各要素は、記述子、すなわち仮想バッファ制御情報と呼ばれる。ｒｘｑキューを初期化するプロセスは、ここではＧＰＡ（ゲスト物理アドレス、仮想マシンの物理アドレス）と呼ばれる１つの有効な仮想データバッファを指す１つのデータバッファポインタを各記述子に入力することを含む。ドライバは、メモリプールから連続的にデキューすることにより、新たな仮想データバッファの仮想位置情報を取得した後、それを記述子（すなわち、仮想バッファ制御情報）に入力する。
【００５９】
ステップ２０３：仮想ネットワークインターフェースコンポーネントの初期化が完了した旨の通知を受信する。
【００６０】
本出願の実施形態では、仮想ネットワークインターフェースコンポーネントが初期化された後、仮想ネットワークインターフェースコンポーネントの仮想受信キューが有効にされて、ネットワーク上でデータパケットを受信する準備をすることができる。物理マシンの転送プログラムは、仮想ネットワークインターフェースコンポーネントが初期化された旨の通知を受信した後、ステップ２０４を実行する。
【００６１】
ステップ２０４：仮想受信キュー内の仮想位置情報に対して検出を実行する。
【００６２】
本出願の実施形態では、仮想ネットワークインターフェースコンポーネントが初期化された旨の通知が受信された後、全ての仮想データバッファの仮想位置情報が取得されることができるように、仮想ネットワークインターフェースコンポーネントの仮想受信キューのスキャンおよび検出が実行される。例えば、バートアイオー−ネットインターフェースのｒｘｑキューがスキャンされ、全てのデータバッファポインタの情報、すなわち仮想位置情報を取得する。
【００６３】
ステップ２０５：仮想位置情報を物理アドレスに変換する。
【００６４】
本出願の実施形態では、仮想マシンによって使用される仮想データバッファは、本質的に物理マシン上にある。しかしながら、仮想マシンの仮想位置情報は、仮想マシンによって使用される仮想データバッファ用である。仮想位置情報は仮想化されているため、物理マシン上の実際の物理アドレスとは異なる。しかしながら、それらの間の対応関係は存在する。物理マシン上の実際の物理アドレスを判定するために、仮想位置情報と、仮想位置関係と物理アドレスとの対応関係とにしたがって変換を行う必要がある。例えば、データバッファのＧＰＡは、ＨＰＡ（ホスト物理アドレス、物理マシンの物理アドレス）に変換される。
【００６５】
ステップ２０６：物理アドレスにしたがって、物理データバッファの物理位置情報を判定する。
【００６６】
本出願の実施形態では、仮想位置情報が物理アドレスに変換された後、物理データバッファの物理位置情報は、物理アドレスにしたがって判定されることができる。具体的には、物理位置情報が物理アドレスと等しくなるように割り当てを行うことができる。
【００６７】
本出願の実施形態では、必要に応じて、物理アドレスにしたがって物理データバッファの物理位置情報を判定する実装方法は、物理データバッファの物理バッファ制御情報に物理アドレスを追加することを含むことができる。
【００６８】
物理データバッファの物理バッファ制御情報は、物理位置情報を含む。割り当て動作は、物理位置情報が物理アドレスと等しくなるように実行され、これは、物理アドレスが物理バッファ制御情報に追加されることを意味する。具体的には、物理アドレスは、本出願の実施形態によって限定されない、任意の適用可能な方法で物理データバッファの物理バッファ制御情報に追加されることができる。
【００６９】
本出願の実施形態では、必要に応じて、前記物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を仮想位置情報として指定する前に、以下がさらに含められることができる：物理バッファ制御情報コンポーネントから構成される情報キューを作成すること、および空の物理記憶空間を作成すること。したがって、物理データバッファの物理バッファ制御情報に物理アドレスを追加する実装方法は、以下を含むことができる：情報キュー内の物理バッファ制御情報を取得すること、取得した物理バッファ制御情報に順番に物理アドレスを追加すること、および、物理バッファ制御情報を物理記憶空間に記憶すること。
【００７０】
例えば、バートアイオー−ネットインターフェースが初期化された後、物理マシン上の転送プログラムは、１つのキュー、すなわち情報キューを作成する。キューの各要素は、データバッファ（物理データバッファ）の定義済み制御構造ｂｃｔｌであり、これはまた、記述子、すなわち物理バッファ制御情報と呼ばれることもある。空のメモリプールがさらに１つ作成され、いかなるデータバッファまたは制御構造も含んでいない。仮想位置情報が物理アドレスに変換された後、データバッファを有しない制御構造ｂｃｔｌが情報キューから取得され、ｂｃｔｌ．ａｄｄｒは、ＧＰＡと等しくなるように設定され、最終的にメモリプール（すなわち、物理記憶空間）にエンキューされる。この時点で、メモリプールのデータバッファは、本質的に、仮想マシンによって割り当てられた仮想位置情報である。
【００７１】
ステップ２０７：物理記憶空間内の物理バッファ制御情報を取得する。
【００７２】
本出願の実施形態では、物理ネットワークインターフェースコンポーネントの物理受信キューが初期化されると、物理位置情報を含む物理バッファ制御情報が物理記憶空間から取得される。物理位置情報は、本質的に、指定された仮想位置情報である。
【００７３】
例えば、転送プログラムがスマートネットワークカード（すなわち、物理ネットワークインターフェースコンポーネント）のｒｘｑ物理受信キューを初期化する場合、メモリプール（すなわち、物理記憶空間）からのデキューが実行される。記述子（すなわち、物理バッファ制御情報）によって満たされたデータバッファポインタは、実際には仮想マシンの仮想位置情報である。
【００７４】
ステップ２０８：物理ネットワークインターフェースコンポーネントの物理受信キューを作成する。
【００７５】
本出願の実施形態では、物理ネットワークインターフェースコンポーネントを初期化するプロセスは、物理受信キューの初期化を含み、これは、物理受信キューが作成されることを意味する。物理受信キューは、それぞれの物理受信キューが異なる仮想ネットワークインターフェースコンポーネントに対して対応して作成されるように、複数の物理受信キューを含むことができる。
【００７６】
ステップ２０９：物理バッファ制御情報を物理受信キューに追加する。
【００７７】
本出願の実施形態では、取得された物理バッファ制御情報は、物理受信キューに追加される。例えば、スマートネットワークカードのｒｘｑ物理受信キューでは、物理バッファ制御情報は、記述子フォーマットでｒｘｑに追加される。すなわち、記述子によって満たされたデータバッファ（すなわち、物理データバッファ）のポインタは、実際には仮想マシンのデータバッファ（すなわち、仮想データバッファ）のポインタである。
【００７８】
ステップ２１０：データにしたがって、データが送信されるべき仮想ネットワークインターフェースコンポーネントを判定する。
【００７９】
本出願の実施形態では、仮想ネットワークインターフェースコンポーネントおよび物理ネットワークインターフェースコンポーネントの双方が初期化されて有効にされた後、それらは、ネットワーク上でパケットデータの受信を開始することができる。
【００８０】
本出願の実施形態では、仮想ネットワークインターフェースコンポーネントは、物理ネットワークインターフェースコンポーネントの物理受信キューへの１対１のマッピングを有し、物理受信キューは、物理データバッファへの１対１のマッピングを有する。物理ネットワークインターフェースコンポーネントはｖＳｗｉｔｃｈ機能を有するため、物理ネットワークインターフェースコンポーネントは、最初にパケットデータが物理マシンに送信されてパケットデータが送信されるべき仮想マシンを物理マシンに決定させるのではなく、パケットデータが送信されるべき仮想マシンを決定する必要があることを意味する。したがって、データが送信されるべき仮想ネットワークインターフェースコンポーネント、すなわちデータが送信されるべき仮想マシンは、データに応じて判定される必要がある。
【００８１】
例えば、スマートネットワークカードは、ネットワークから１つのパケットデータを受信し、それをネットワークカードのメモリにバッファリングする。次に、パケットヘッダにしたがって、ｖＳｗｉｔｃｈ関数は、パケットデータが送信されるべき仮想マシン（すなわち、特定の仮想ネットワークインターフェースコンポーネント）を決定する。
【００８２】
ステップ２１１：仮想ネットワークインターフェースコンポーネントに対応する物理受信キューから、対応する物理データバッファの物理位置情報を取得する。
【００８３】
本出願の実施形態では、仮想ネットワークインターフェースコンポーネントは、物理ネットワークインターフェースコンポーネントの物理受信キューへの１対１のマッピングを有するため、異なる仮想ネットワークインターフェースコンポーネントは、異なる物理受信キューに対応する。データが送信されるべき仮想ネットワークインターフェースコンポーネントへのデータの送信を可能にするために、対応する物理データバッファの物理位置情報は、前記仮想ネットワークインターフェースコンポーネントに対応する物理受信キューから取得される必要がある。具体的には、それは、本出願の実施形態によって限定されない、物理位置情報を取得する任意の適用可能な方法を含むことができる。
【００８４】
ステップ２１２：物理位置情報にしたがってデータを記憶する。
【００８５】
本出願の実施形態では、取得された物理位置情報は、本質的には仮想位置情報である。したがって、物理位置情報にしたがってデータを記憶することは、仮想位置情報にしたがってデータを記憶することと同等である。
【００８６】
本出願の実施形態では、必要に応じて、前記仮想ネットワークインターフェースコンポーネントに対応する物理受信キューから対応する物理データバッファの物理位置情報を取得する実装方法は、以下を備えることができる：
物理受信キュー内の物理バッファ制御情報を取得することであって、物理バッファ制御情報が物理位置情報を含むこと、および、
物理位置情報にしたがってデータを記憶した後、以下がさらに含められることができる：
物理マシンが受信データを検出するように、データが受信された旨を物理制御バッファ情報にマークすること。
【００８７】
例えば、対応する物理受信キュー内の記述子（すなわち、物理バッファ制御情報）は、物理データバッファの情報を取得するために物理マシン上で読み取られる。物理位置情報を含む物理データバッファは、前の初期化プロセス中に満たされる。データが記憶された後、データ記憶が行われた旨を物理マシンが検出するために、記述子内の対応する制御ビットは、物理マシンの転送プログラムが受信データを検出することができるように、データが受信された旨をマークするように構成されることができる。
【００８８】
本出願の実施形態では、必要に応じて、それは、仮想ネットワークインターフェースコンポーネントが受信データを検出するように、物理バッファ制御情報にしたがって、データが受信される仮想ネットワークインターフェースコンポーネント内の仮想受信キューの仮想バッファ制御情報にマークすることをさらに備えることができる。
【００８９】
仮想ネットワークインターフェースコンポーネントが受信データを検出するために、データが受信された旨を物理バッファ制御情報がマークされていることが検出されると、仮想ネットワークインターフェースコンポーネントの仮想受信キュー内の仮想バッファ制御情報もマークされ、データが受信された旨を示す。例えば、転送プログラムは、ｒｘｑ（すなわち、物理受信キュー）内の記述子（すなわち、物理バッファ制御情報）が更新されていることを検出し、更新されたマークは、受信パケットデータが存在することを示す。次に、例えば、パケット長が要件を満たしているかどうかのチェック、パケットタイプのチェックなどの特定の論理チェックが実行された後、パケットデータをバートアイオー−ネットインターフェース（すなわち、仮想ネットワークインターフェースコンポーネント）のｒｘｑ（すなわち、仮想受信キュー）に送信するように判定される。次に、転送プログラムは、バートアイオー−ネットインターフェースの対応する記述子（すなわち、仮想バッファ制御情報）を更新し、対応する制御ビットの状態を変更して、データが受信された旨をマークする。
【００９０】
本出願の実施形態では、必要に応じて、以下がさらに含められることができる：物理バッファ制御情報にしたがって、仮想ネットワークインターフェースコンポーネントにデータが受信された旨を通知する。
【００９１】
仮想ネットワークインターフェースコンポーネントの仮想受信キュー内の仮想バッファ制御情報に受信データが存在する旨をマークすることは、仮想ネットワークインターフェースコンポーネントが仮想バッファ制御情報の検出を最初に実行した後にのみ、受信データが存在する旨を検出することを必要とするため、仮想ネットワークインターフェースコンポーネントが受信データを検出することを可能にする受動的な方法である。別の実装方法は、データが受信された旨を仮想ネットワークインターフェースコンポーネントに割り込みによって直接通知することである。最後に、仮想ネットワークインターフェースコンポーネントは、受信したパケットデータが存在する旨を検出し、データを処理するように仮想マシンのカーネルまたはＡＰＰに通知し、受信プロセス全体が終了する。
【００９２】
本出願の実施形態によれば、仮想ネットワークインターフェースコンポーネントに１つの仮想記憶空間を割り当て、仮想記憶空間内の複数の仮想データバッファの仮想位置情報を判定し、仮想ネットワークインターフェースコンポーネントの初期化が完了した旨の通知を受信し、仮想受信キュー内の仮想位置情報の検出を実行し、仮想位置情報を物理アドレスに変換し、物理アドレスにしたがって物理データバッファの物理位置情報を判定し、物理記憶空間内の物理バッファ制御情報を取得し、物理ネットワークインターフェースコンポーネントの物理受信キューを作成し、物理バッファ制御情報を物理受信キューに追加し、データにしたがってデータが送信されるべき仮想ネットワークインターフェースコンポーネントを判定し、前記仮想ネットワークインターフェースコンポーネントに対応する物理受信キューから対応する物理データバッファの物理位置情報を取得し、物理位置情報にしたがってデータを記憶することにより、本出願は、データを受信すると、物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報が物理デバイスによる割り当てを介して判定される代わりに仮想位置情報として指定されるため、物理ネットワークインターフェースコンポーネントが、受信データを仮想ネットワークインターフェースコンポーネントによって指定されたデータバッファに直接記憶することを可能にし、それにより、物理ネットワークインターフェースコンポーネントによって指定されたデータバッファから仮想ネットワークインターフェースコンポーネントによって指定されたデータバッファにデータをコピーするプロセスを不要にし、これは、データの受信にかかる時間を短縮し、データ受信のネットワーク性能を向上せ、ネットワークの遅延を低減する。
【００９３】
図５を参照すると、本出願の実施形態ＩＩＩにかかるデータ処理方法の実施形態のフローチャートが示されている。本方法は、具体的には、以下のステップを備えることができる。
【００９４】
ステップ３０１：データ記憶命令を受信する。
【００９５】
本出願の実施形態では、データ記憶命令は、物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置にデータを記憶するために使用される。物理データバッファの位置は、物理位置として示される。したがって、仮想ネットワークインターフェースコンポーネントの仮想データバッファの位置は、仮想位置として示される。
【００９６】
ステップ３０２：物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置に対応する仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置を取得する。
【００９７】
本出願の実施形態では、スマートネットワークカード（すなわち、物理ネットワークインターフェースコンポーネント）がｖＳｗｉｔｃｈ機能を実装した後、データが物理データバッファに記憶されることになる場合、スマートネットワークカードは、データを異なる仮想マシンの対応する物理データバッファに記憶する必要がある。受信データを物理データバッファから仮想データバッファにコピーするプロセスを排除するために、物理データバッファの物理位置は、対応する仮想マシンの仮想データバッファの仮想位置として直接事前に指定される。データ記憶命令を受信した後、物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置に対応する仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置が取得される。
【００９８】
実装方法は、以下を含むことができる：対応する仮想マシンの仮想位置を、物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置に記憶すること。データが物理位置に記憶される場合、対応する仮想位置は、物理位置から取得されることができる。具体的には、それは、本出願の実施形態によって限定されない、任意の適用可能な実装方法を含むことができる。
【００９９】
ステップ３０３：データを仮想位置に記憶する。
【０１００】
本出願の実施形態では、仮想位置が取得された後、仮想位置へのデータの記憶が実行される。
【０１０１】
本出願の実施形態によれば、データ記憶命令を受信し、物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置に対応する仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置を取得し、データを仮想位置に記憶することにより、本出願は、物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報が物理デバイスによる割り当てを介して判定される代わりに仮想位置情報として指定されるため、データを受信すると、物理ネットワークインターフェースコンポーネントが、受信データを仮想ネットワークインターフェースコンポーネントによって指定されたデータバッファに直接記憶することを可能にし、それにより、物理ネットワークインターフェースコンポーネントによって指定されたデータバッファから仮想ネットワークインターフェースコンポーネントによって指定されたデータバッファにデータをコピーするプロセスを不要にし、これは、データの受信にかかる時間を短縮し、データ受信のネットワーク性能を向上せ、ネットワークの遅延を低減する。
【０１０２】
当業者が本出願をよりよく理解できるようにするために、本出願の実装方法が特定の例とともに以下に説明される。
【０１０３】
図６は、最適化されていないデータバッファリングプロセスの概略図を示している。
【０１０４】
データが受信される前に、仮想ネットワークインターフェースコンポーネントおよび物理ネットワークインターフェースコンポーネントの初期化が最初に実行される。
【０１０５】
仮想ネットワークインターフェースコンポーネントが初期化される。初期化プロセスは、データバッファ（すなわち、仮想データバッファ）を提供するために使用されるメモリプールの準備を含む。この例では、ＶＭ（すなわち、仮想マシン）は、バートアイオー−ネットＲＸリング（すなわち、仮想受信キュー）を含み、キュー内の要素記述子（すなわち、仮想バッファ制御情報）は、ＧＰＡ（すなわち、仮想位置情報）を含む。ＶＭは、ゲストメモリ（すなわち、仮想マシンで利用可能な記憶装置）をさらに含む。メモリプール（すなわち、仮想記憶空間）がゲストメモリに割り当てられ、メモリプール内のデータバッファが判定される。
【０１０６】
物理ネットワークインターフェースコンポーネントが初期化される。初期化プロセスは、データバッファ（すなわち、物理データバッファ）を提供するために使用されるメモリプールの準備を含む。この例では、ホスト（すなわち、物理マシン）は、ＮＩＣ  ＲＸリング（すなわち、物理受信キュー）を含み、キュー内の要素記述子（物理バッファ制御情報）は、アドレス（すなわち、物理位置情報）を含む。ホストは、ホストメモリ（すなわち、物理マシンで利用可能な記憶装置）をさらに含む。メモリプール（すなわち、物理記憶空間）がホストメモリに割り当てられ、メモリプール内のデータバッファが判定される。
【０１０７】
パケットデータを受信するプロセスは、以下のとおりである。
【０１０８】
ステップ１：スマートＮＩＣ（すなわち、物理ネットワークインターフェースコンポーネント）がパケットを受信してスマートＮＩＣのデータバッファに記憶する。スマートＮＩＣは、ｖＳｗｉｔｃｈ機能を含む。
【０１０９】
ステップ２：ＤＭＡを使用してスマートＮＩＣからホストメモリにデータを書き込む。物理受信キュー内の物理バッファ制御情報が読み取られ、物理位置情報にしたがって、ハードウェアは、ＤＭＡを使用して指定されたホストメモリ（すなわち、物理データバッファ）にパケットデータを送信し、記述子内の対応する制御ビットは、ネットワークパケットデータが物理受信キューに配信される旨を示すように構成される。
【０１１０】
ステップ３：物理データバッファから仮想データバッファにデータをコピーする。物理マシン上の転送プログラムは、バートアイオー−ネットの仮想受信キュー内の対応する記述子が更新された旨、パケットデータが受信された旨を検出し、特定の論理チェックの後、バートアイオー−ネットの特定のｒｘｑに送信するように判定する。転送プログラムは、バートアイオー−ネットインターフェースのｒｘｑ（すなわち、仮想受信キュー）内の対応する記述子情報を読み取り、ＶＭ内のデータバッファのアドレスを取得する。転送プログラムは、ホストメモリのデータバッファからＶＭのデータバッファにデータをコピーし、記述子の対応する制御ビット（すなわち、仮想バッファ制御情報）を更新し、必要に応じてバートアイオー−ネットインターフェースに通知する。最後に、バートアイオー−ネットインターフェースは、ＶＭがデータを消費するように、１つのパケットデータが受信された旨の通知をＶＭに送信し、受信プロセス全体が終了する。
【０１１１】
図７は、最適化されたデータバッファリングプロセスの概略図を示している。
【０１１２】
初期化プロセスは、以下のステップを含む。
【０１１３】
ステップ１．１：仮想ネットワークインターフェースコンポーネントを初期化する。ＶＭ内のカーネルまたはＡＰＰは、パケットデータによって満たされるように構成されたデータバッファ（すなわち、仮想データバッファ）を含む１つのメモリプールを準備する。バートアイオー−ネットインターフェースは、ｒｘｑ仮想受信キューを初期化してから、ｒｘｑ仮想受信キューを有効にする。
【０１１４】
ステップ１．２：バートアイオー−ネットＲＸリング（すなわち、仮想受信キュー）をスキャンし、全てのデータバッファポインタ（すなわち、仮想データバッファの仮想位置情報）を取得する。
【０１１５】
ステップ１．３：転送プログラムが１つのキューを作成する。各要素は、ｂｃｔｌとして定義された１つの制御構造である。
【０１１６】
ステップ１．４：キューからｂｃｔｌ制御構造を取得し、ステップ１．２において取得したデータバッファポインタにしたがってｂｃｔｌ．ａｄｄｒ（すなわち、物理位置情報）を入力し、それをメモリプールにエンキューする。具体的には、ステップ１．２において取得したデータバッファのＧＰＡをＨＰＡに変換してから、キューからデータバッファを有しない制御構造ｂｃｔｌを取得し、ｂｃｔｌ．ａｄｄｒ＝ＨＰＡを設定し、最後にメモリプールにエンキューすることを含む。この時点で、メモリプールのデータバッファは、本質的に、ＶＭによって割り当てられたアドレスである。
【０１１７】
ステップ１．５：スマートＮＩＣ（すなわち、物理ネットワークインターフェースコンポーネント）のドライバがｒｘｑ（すなわち、物理受信キュー）を初期化し、ＶＭのデータバッファポインタ（すなわち、仮想位置情報）をメモリプール（すなわち、物理記憶空間）から取得する。転送プログラムがＮＩＣネットワークカードのｒｘｑを初期化しているとき、メモリプールからのデキューが実行される。物理受信キューの記述子に入力されるデータバッファポインタは、実際にはＶＭによって準備されるデータバッファポインタである。ＮＩＣネットワークカードは、ｒｘｑ物理受信キューの初期化を完了し、ｒｘｑ物理受信キューがネットワークパケットの受信を開始することを可能にする。
【０１１８】
データ受信プロセスは、以下のステップを含む。
【０１１９】
ステップ２．１：スマートＮＩＣ（すなわち、物理ネットワークインターフェースコンポーネント）がパケットを受信し、スマートＮＩＣのデータバッファに記憶する。スマートＮＩＣは、ｖＳｗｉｔｃｈ機能を含む。ｖＳｗｉｔｃｈ機能は、パケットのヘッダにしたがってパケットが送信されるべきＶＭを判定する。
【０１２０】
ステップ２．２：ＤＭＡを使用して仮想マシン（ＶＭ）のメモリにデータを記憶する。ＶＭに対応する物理受信キュー内の記述子（すなわち、物理バッファ制御情報）が読み取られて、前の初期化プロセス中に満たされた物理データバッファの情報を取得する。次に、ハードウェアは、ＤＭＡを使用してパケットデータを指定されたホストメモリに送信し、ネットワークパケットデータがｒｘｑ物理受信キューに配信されることを示すように、物理受信キュー内の記述子の対応する制御ビットを構成する。
【０１２１】
ステップ２．３：バートアイオー−ネットＲＸリングの記述子（すなわち、仮想バッファ制御情報）を更新する。ホスト上の転送プログラムは、ｒｘｑ物理受信キューの記述子が更新されてパケットデータが受信された旨を検出し、特定の論理チェックの後、それをバートアイオー−ネットインターフェースのｒｘｑ（すなわち仮想受信キュー）に送信するように判定する。転送プログラムは、バートアイオー−ネットＲＸリングの記述子を更新し、必要に応じて、バートアイオー−ネットインターフェースに通知する。最終的に、バートアイオー−ネットインターフェースは、パケットデータが受信された旨を検出し、データを消費するように仮想マシンに通知する。受信プロセス全体が終了する。
【０１２２】
図８を参照すると、本出願の実施形態ＩＶにかかるデータバッファリング装置の実施形態の構造ブロック図が示されており、これは、具体的には、
【０１２３】
仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置情報を取得するように構成された情報取得モジュール４０１と、
【０１２４】
物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を仮想位置情報として指定するように構成された情報指定モジュール４０２と、
【０１２５】
データが物理データバッファに記憶されているときに仮想位置情報にしたがってデータを記憶するように構成されたデータ記憶モジュール４０３と、を備えることができる。
【０１２６】
本出願の実施形態では、必要に応じて、装置は、さらに、
前記仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置情報を取得する前に、仮想ネットワークインターフェースコンポーネントに１つの仮想記憶空間を割り当てるように構成された空間割り当てモジュールと、
仮想記憶空間内の複数の仮想データバッファの仮想位置情報を判定するように構成された情報判定モジュールと、を備える。
【０１２７】
本出願の実施形態では、必要に応じて、情報判定モジュールは、
仮想ネットワークインターフェースコンポーネントの仮想受信キューを作成するように構成され、仮想受信キューが仮想バッファ制御情報を含む仮想キュー作成サブモジュールと、
仮想記憶空間から仮想位置情報を取得するように構成された情報取得サブモジュールと、
仮想位置情報を仮想バッファ制御情報に追加するように構成された情報追加サブモジュールと、を備える。
本出願の実施形態では、必要に応じて、情報取得モジュールは、
仮想受信キュー内の仮想位置情報に対して検出を実行するように構成された情報検出サブモジュールを備える。
【０１２８】
本出願の実施形態では、必要に応じて、装置は、さらに、
前記仮想受信キュー内の仮想位置情報の検出を実行する前に、仮想ネットワークインターフェースコンポーネントが初期化された旨の通知を受信するように構成された通知受信モジュールを備える。
【０１２９】
本出願の実施形態では、必要に応じて、情報指定モジュールは、
仮想位置情報を物理アドレスに変換するように構成されたアドレス変換サブモジュールと、
物理アドレスにしたがって物理データバッファの物理位置情報を判定するように構成された情報判定サブモジュールと、を備える。
【０１３０】
本出願の実施形態では、必要に応じて、情報判定サブモジュールは、
物理データバッファの物理バッファ制御情報に物理アドレスを追加するように構成された情報追加ユニットを備える。
【０１３１】
本出願の実施形態では、必要に応じて、装置は、さらに、
前記物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を仮想位置情報として指定する前に、物理バッファ制御情報から構成される情報キューを作成し、空の物理記憶空間を作成するように構成された空間作成モジュールを備え、
情報追加ユニットは、
情報キュー内の物理バッファ制御情報を取得するように構成された情報取得サブユニットと、取得した物理バッファ制御情報に物理アドレスを順番に追加するように構成されたアドレス追加サブユニットと、
物理バッファ制御情報を物理記憶空間に記憶するように構成された情報記憶サブユニットと、を備える。
【０１３２】
本出願の実施形態では、必要に応じて、装置は、さらに、
前記データが物理データバッファに記憶されているときに仮想位置情報にしたがってデータを記憶する前に、物理記憶空間内の物理バッファ制御情報を取得するように構成された制御情報取得モジュールと、
物理ネットワークインターフェースコンポーネントの物理受信キューを作成するように構成された物理キュー作成モジュールと、物理バッファ制御情報を物理受信キューに追加するように構成された制御情報追加モジュールと、を備える。
【０１３３】
本出願の実施形態では、必要に応じて、仮想ネットワークインターフェースコンポーネントは、物理ネットワークインターフェースコンポーネントの物理受信キューへの１対１のマッピングを有し、物理受信キューは、物理データバッファへの１対１のマッピングを有し、データ記憶モジュールは、
データにしたがって、データが送信されるべき仮想ネットワークインターフェースコンポーネントを判定するように構成されたコンポーネント判定サブモジュールと、
前記仮想ネットワークインターフェースコンポーネントに対応する物理受信キューから、対応する物理データバッファの物理位置情報を取得するように構成された物理情報取得サブモジュールと、
物理位置情報にしたがってデータを記憶するように構成されたデータ記憶サブモジュールと、を備える。
【０１３４】
本出願の実施形態では、必要に応じて、物理情報取得サブモジュールは、
物理受信キュー内の物理バッファ制御情報を取得するように構成され、物理バッファ制御情報が物理位置情報を含む物理制御情報取得ユニットを備え、
装置は、さらに、
前記物理位置情報にしたがって物理制御バッファ情報にデータを記憶した後、物理マシンが受信データを検出するように、データが受信された旨をマークするように構成された第１のマーキングモジュールを備える。
【０１３５】
本出願の実施形態では、必要に応じて、装置は、さらに、
仮想ネットワークインターフェースコンポーネントが受信データを検出するように、物理バッファ制御情報にしたがって、仮想ネットワークインターフェースコンポーネントの仮想受信キューの仮想バッファ制御情報にデータが受信された旨をマークするように構成された第２のマーキングモジュールを備える。
【０１３６】
本出願の実施形態では、必要に応じて、装置は、さらに、
物理バッファ制御情報にしたがって、データが受信された旨を仮想ネットワークインターフェースコンポーネントに通知するように構成された通知モジュールを備える。
【０１３７】
本出願の実施形態によれば、仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置情報を取得し、物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を仮想位置情報として指定し、データが物理データバッファに記憶されているときの仮想位置情報にしたがってデータを記憶することにより、本出願は、物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報が物理デバイスによる割り当てを介して判定される代わりに仮想位置情報として指定されるため、データを受信すると、物理ネットワークインターフェースコンポーネントが、受信データを仮想ネットワークインターフェースコンポーネントによって指定されたデータバッファに直接記憶することを可能にし、それにより、物理ネットワークインターフェースコンポーネントによって指定されたデータバッファから仮想ネットワークインターフェースコンポーネントによって指定されたデータバッファにデータをコピーするプロセスを不要にし、これは、データの受信にかかる時間を短縮し、データ受信のネットワーク性能を向上せ、ネットワークの遅延を低減する。
【０１３８】
図９を参照すると、本出願の実施形態Ｖにかかるデータ処理装置の構造ブロック図が示されており、これは、具体的には、
データ記憶命令を受信するように構成され、データ記憶命令が、物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置にデータを記憶するために使用される命令受信モジュール５０１と、
物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置に対応する仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置を取得するように構成された位置取得モジュール５０２と、
データを仮想位置に記憶するように構成されたデータ記憶モジュール５０３と、を備えることができる。
【０１３９】
本出願の実施形態によれば、データ記憶命令を受信し、物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置に対応する仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置を取得し、データを仮想位置に記憶することにより、本出願は、物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報が物理デバイスによる割り当てを介して判定される代わりに仮想位置情報として指定されるため、データを受信すると、物理ネットワークインターフェースコンポーネントが、受信データを仮想ネットワークインターフェースコンポーネントによって指定されたデータバッファに直接記憶することを可能にし、それにより、物理ネットワークインターフェースコンポーネントによって指定されたデータバッファから仮想ネットワークインターフェースコンポーネントによって指定されたデータバッファにデータをコピーするプロセスを不要にし、これは、データの受信にかかる時間を短縮し、データ受信のネットワーク性能を向上せ、ネットワークの遅延を低減する。
【０１４０】
装置の実施形態は、本質的に方法の実施形態と類似しているため、それらは、より簡潔な方法で説明される。関連する内容については、方法の実施形態の説明を参照することができる。
【０１４１】
本開示の実施形態は、任意の適切なハードウェア、ファームウェア、ソフトウェア、またはそれらの任意の組み合わせを使用して、所望の構成を形成するシステムとして実装されることができる。図１０は、本開示に記載される様々な実施形態を実装するために使用されることができる例示的なシステム（または装置）６００を概略的に示している。
【０１４２】
一実施形態では、図１０は、１つ以上のプロセッサ６０２と、（１つ以上の）プロセッサ６０２の少なくとも１つに結合されたシステム制御モジュール（チップセット）６０４と、システム制御モジュール６０４に結合されたシステムメモリ６０６と、システム制御モジュール６０４に結合された不揮発性メモリ（ＮＶＭ）／記憶装置６０８と、システム制御モジュール６０４に結合された１つ以上の入力／出力装置６１０と、システム制御モジュール６０４に結合されたネットワークインターフェース６１２と、を有する例示的なシステム６００を示している。
【０１４３】
プロセッサ６０２は、１つ以上のシングルコアまたはマルチコアプロセッサを備えることができ、プロセッサ６０２は、汎用プロセッサまたは専用プロセッサ（例えば、グラフィックス処理ユニット、アプリケーションプロセッサ、ベースバンドプロセッサなど）の任意の組み合わせを含むことができる。いくつかの実施形態では、システム６００は、本出願で説明されるブラウザとして機能することができる。
【０１４４】
いくつかの実施形態では、システム６００は、命令（例えば、システムメモリ６０６またはＮＶＭ／記憶装置６０８）を有する１つ以上のコンピュータ可読媒体と、１つ以上のコンピュータ可読媒体と互換性があり、モジュールを実装するための命令を実行し、したがって本開示に記載された動作を実行するように構成された１つ以上のプロセッサ６０２とを備えることができる。
【０１４５】
一実施形態では、システム制御モジュール６０４は、（１つ以上の）プロセッサ６０２の少なくとも１つおよび／またはシステム制御モジュール６０４と通信する任意の適切な装置またはコンポーネントに対する任意の適切なインターフェースを提供する任意の適切なインターフェースコントローラを備えることができる。
【０１４６】
システム制御モジュール６０４は、システムメモリ６０６へのインターフェースを提供するためのメモリコントローラモジュールを備えることができる。メモリコントローラモジュールは、ハードウェアモジュール、ソフトウェアモジュール、および／またはファームウェアモジュールとすることができる。
【０１４７】
システムメモリ６０６は、例えば、システム６００のデータおよび／または命令をロードおよび記憶するために使用されることができる。一実施形態では、システムメモリ６０６は、任意の適切な揮発性メモリ、例えば、適切なＤＲＡＭを備えることができる。いくつかの実施形態では、システムメモリ６０６は、ダブルデータレートの第４世代同期ダイナミックランダムアクセスメモリ（ＤＤＲ４  ＳＤＲＡＭ）を備えることができる。
【０１４８】
一実施形態では、システム制御モジュール６０４は、ＮＶＭ／記憶装置６０８および（１つ以上の）入力／出力装置６１０へのインターフェースを提供するための１つ以上の入力／出力コントローラを備えることができる。
【０１４９】
例えば、ＮＶＭ／記憶装置６０８は、データおよび／または命令を記憶するために使用されることができる。ＮＶＭ／記憶装置６０８は、任意の適切な不揮発性メモリ（例えば、フラッシュメモリ）を備えることができ、および／または任意の適切な（１つ以上の）不揮発性記憶装置（例えば、１つ以上のハードディスクドライブ（ＨＤＤ）、１つ以上のコンパクトディスク（ＣＤ）ドライブ、および／または１つ以上のデジタル多用途ディスク（ＤＶＤ）ドライブ）を含むことができる。
【０１５０】
ＮＶＭ／記憶装置６０８は、システム６００が設置される装置の物理的に一部であるか、または必ずしも装置の一部でなくても装置にとってアクセス可能とすることができる記憶リソースを備えることができる。例えば、ＮＶＭ／記憶装置６０８は、ネットワークを介して（１つ以上の）入力／出力装置６１０によってアクセスされることができる。
【０１５１】
（１つ以上の）入力／出力装置６１０は、他の任意の適切な装置と通信するためのシステム６００へのインターフェースを提供することができる。入力／出力装置６１０は、通信コンポーネント、音声コンポーネント、センサコンポーネントなどを備えることができる。ネットワークインターフェース６１２は、１つ以上のネットワークを介して通信するためのシステム６００へのインターフェースを提供することができ、システム６００は、例えば、Ｗｉ−Ｆｉ、２Ｇ、３Ｇ、またはそれらの組み合わせなどの通信規格ベースの無線ネットワークにアクセスして無線通信を実行することにより、１つ以上の無線ネットワーク規格および／またはプロトコルのいずれかにしたがって、無線ネットワーク内の１つ以上のコンポーネントと無線通信を実行することができる。
【０１５２】
一実施形態では、（１つ以上の）プロセッサ６０２の少なくとも１つは、システム制御モジュール６０４の１つ以上のコントローラ（例えば、メモリコントローラモジュール）のロジックとともにパッケージ化されることができる。一実施形態では、（１つ以上の）プロセッサ６０２の少なくとも１つは、システム制御モジュール６０４の１つ以上のコントローラのロジックとともにパッケージ化されて、システムインパッケージ（ＳｉＰ）を形成することができる。一実施形態では、（１つ以上の）プロセッサ６０２の少なくとも１つは、同じ型上のシステム制御モジュール６０４の１つ以上のコントローラのロジックと統合されることができる。一実施形態では、（１つ以上の）プロセッサ６０２の少なくとも１つは、同じ型上のシステム制御モジュール６０４の１つ以上のコントローラのロジックと統合されてシステムオンチップ（ＳｏＣ）を形成することができる。
【０１５３】
様々な実施形態では、システム６００は、限定されるものではないが、ブラウザ、ワークステーション、デスクトップコンピューティング装置、またはモバイルコンピューティング装置（例えば、ラップトップコンピューティング装置、ハンドヘルドコンピューティング装置、タブレットコンピュータ、ネットブックなど）とすることができる。様々な実施形態では、システム６００は、より多くのまたはより少ないコンポーネントおよび／または異なるアーキテクチャを有することができる。例えば、いくつかの実施形態では、システム６００は、１つ以上のカメラ、キーボード、液晶ディスプレイ（ＬＣＤ）画面（タッチ画面ディスプレイを含む）、不揮発性メモリポート、複数のアンテナ、グラフィックチップ、特定用途向け集積回路（ＡＳＩＣ）、およびスピーカを備え、
ディスプレイがタッチパネルを含む場合、ディスプレイ画面は、ユーザからの入力信号を受信するためのタッチ画面ディスプレイとして実装されることができる。タッチパネルは、タッチパネル上のタッチ、スワイプ、およびジェスチャを検知するための１つ以上のタッチセンサを備える。タッチセンサは、タッチまたはスワイプ動作の境界を検知するだけでなく、タッチまたはスワイプ操作に関連する持続時間および圧力を検出することもできる。
【０１５４】
本出願の実施形態は、さらに、１つ以上のモジュール（プログラム）が記憶される不揮発性の可読記憶媒体を提供し、端末装置に１つ以上のモジュールを適用することは、端末装置が本出願の実施形態における各方法ステップの命令を実行することを可能にする。
【０１５５】
例は、メモリ、プロセッサ、およびメモリに記憶されてプロセッサ上で実行可能なコンピュータプログラムを備えるコンピュータデバイスを提供し、プロセッサは、コンピュータプログラムを実行したときに、本出願の実施形態に記載されている方法を実行する。
【０１５６】
例は、さらに、コンピュータプログラムが記憶されたコンピュータ可読記憶媒体を提供し、プログラムは、プロセッサによって実行されたときに、本出願の実施形態に記載された方法の１つ以上を実装する。
【０１５７】
本出願の実施形態は、データバッファリング方法および装置を開示する。例１は、データバッファリング方法であって、
仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置情報を取得することと、
物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を仮想位置情報として指定することと、
データが物理データバッファに記憶されているときに、仮想位置情報にしたがってデータを記憶することと、を備える、方法を含む。
【０１５８】
例２は、前記仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置情報を取得する前に、方法が、さらに、
仮想ネットワークインターフェースコンポーネントに仮想記憶空間を割り当てることと、
仮想記憶空間内の複数の仮想データバッファの仮想位置情報を判定することと、を備える、例１に記載の方法を含むことができる。
【０１５９】
例３は、前記仮想記憶空間内の複数の仮想データバッファの仮想位置情報を判定することが、
仮想ネットワークインターフェースコンポーネントの仮想受信キューを作成することであって、仮想受信キューが仮想バッファ制御情報を含むことと、
仮想記憶空間から、仮想位置情報を取得することと、
仮想位置情報を仮想バッファ制御情報に追加することと、を備える、例１および／または例２の方法を含むことができる。
【０１６０】
例４は、前記仮想ネットワークインターフェースコンポーネントのデータバッファの仮想位置情報を取得することが、
仮想受信キュー内の仮想位置情報の検出を実行することを備える、例１から３のうちの１つ以上に記載の方法を含むことができる。
【０１６１】
例５は、前記仮想受信キュー内の仮想位置情報の検出を実行する前に、本方法が、さらに、
仮想ネットワークインターフェースコンポーネントの初期化が完了した旨の通知を受信することを備える、例１から４のうちの１つ以上に記載の方法を含むことができる。
【０１６２】
例６は、前記物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を仮想位置情報として指定することが、
仮想位置情報を物理アドレスに変換することと、
物理アドレスにしたがって、物理データバッファの物理位置情報を判定することと、を備える、例１から５のうちの１つ以上に記載の方法を含むことができる。
【０１６３】
例７は、前記物理アドレスにしたがって物理データバッファの物理位置情報を判定することが、
物理データバッファの物理バッファ制御情報に物理アドレスを追加することを備える、例１から６のうちの１つ以上に記載の方法を含むことができる。
【０１６４】
例８は、前記物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を仮想位置情報として指定する前に、本方法が、さらに、
物理バッファ制御情報から構成される情報キューを作成し、空の物理記憶空間を作成することを備え、
前記物理データバッファの物理バッファ制御情報に物理アドレスを追加することが、
情報キュー内の物理バッファ制御情報を取得することと、
取得した物理バッファ制御情報に順番に物理アドレスを追加することと、
物理バッファ制御情報を物理記憶空間に記憶することと、を備える、例１から７のうちの１つ以上に記載の方法を含むことができる。
【０１６５】
例９は、前記データが物理データバッファに記憶されているときに仮想位置情報にしたがってデータを記憶する前に、本方法が、さらに、
物理記憶空間内の物理バッファ制御情報を取得することと、
物理ネットワークインターフェースコンポーネントの物理受信キューを作成することと、
物理バッファ制御情報を物理受信キューに追加することと、を備える、例１から８のうちの１つ以上に記載の方法を含むことができる。
【０１６６】
例１０は、仮想ネットワークインターフェースコンポーネントが、物理ネットワークインターフェースコンポーネントの物理受信キューへの１対１のマッピングを有し、物理受信キューが、物理データバッファへの１対１のマッピングを有し、前記データが物理データバッファに記憶されているときに仮想位置情報にしたがってデータを記憶することが、
データにしたがって、データが送信されるべき仮想ネットワークインターフェースコンポーネントを判定することと、
前記仮想ネットワークインターフェースコンポーネントに対応する物理受信キューから、対応する物理データバッファの物理位置情報を取得することと、
物理位置情報にしたがってデータを記憶することと、を備える、例１から９のうちの１つ以上に記載の方法を含むことができる。
【０１６７】
例１１は、前記仮想ネットワークインターフェース構成要素に対応する物理受信キューから対応する物理データバッファの物理位置情報を前記取得することが、
物理受信キュー内の物理バッファ制御情報を取得することであって、物理バッファ制御情報が物理位置情報を含むことを備え、
物理位置情報にしたがってデータを前記記憶した後、本方法が、さらに、
物理マシンが受信データを検出するように、データが受信された旨を物理制御バッファ情報にマークすることを備える、例１から１０のうちの１つ以上に記載の方法を含むことができる。
【０１６８】
例１２は、本方法が、さらに、
物理バッファ制御情報にしたがって、仮想ネットワークインターフェースコンポーネントが受信データを検出するように、仮想ネットワークインターフェースコンポーネント内の仮想受信キューの仮想バッファ制御情報にデータが受信された旨をマークすることを備える、例１から１１のうちの１つ以上に記載の方法を含むことができる。
【０１６９】
例１３は、本方法が、さらに、
物理バッファ制御情報にしたがって、仮想ネットワークインターフェースコンポーネントにデータが受信された旨を通知することを備える、例１から１２のうちの１つ以上に記載の方法を含むことができる。
【０１７０】
例１４は、データ処理方法であって、
物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置にデータを記憶するために使用されるデータ記憶命令を受信することと、
物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置に対応する仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置を取得することと、
データを仮想位置に記憶することと、を備える、方法を含む。
【０１７１】
例１５は、データバッファリング装置であって、
仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置情報を取得するように構成された情報取得モジュールと、
物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を仮想位置情報として指定するように構成された情報指定モジュールと、
データが物理データバッファに記憶されているときに仮想位置情報にしたがってデータを記憶するように構成されたデータ記憶モジュールと、を備える、装置を含む。
【０１７２】
例１６は、装置が、さらに、
前記仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置情報を取得する前に、仮想ネットワークインターフェースコンポーネントに１つの仮想記憶空間を割り当てるように構成された空間割り当てモジュールと、
仮想記憶空間内の複数の仮想データバッファの仮想位置情報を判定するように構成された情報判定モジュールと、を備える、例１５に記載の装置を含むことができる。
【０１７３】
例１７は、情報判定モジュールが、
仮想ネットワークインターフェースコンポーネントの仮想受信キューを作成するように構成され、仮想受信キューが仮想バッファ制御情報を含む仮想キュー作成サブモジュールと、
仮想記憶空間から仮想位置情報を取得するように構成された情報取得サブモジュールと、
仮想位置情報を仮想バッファ制御情報に追加するように構成された情報追加サブモジュールと、を備える、例１５および／または例１６に記載の装置を含むことができる。
【０１７４】
例１８は、情報取得モジュールが、
仮想受信キュー内の仮想位置情報に対して検出を実行するように構成された情報検出サブモジュールを備える、例１５から１７のうちの１つ以上に記載の装置を含むことができる。
【０１７５】
例１９は、装置が、さらに、
前記仮想受信キュー内の仮想位置情報の検出を実行する前に、仮想ネットワークインターフェースコンポーネントが初期化された旨の通知を受信するように構成された通知受信モジュールを備える、例１５から１８のうちの１つ以上に記載の装置を含むことができる。
【０１７６】
例２０は、情報指定モジュールが、
仮想位置情報を物理アドレスに変換するように構成されたアドレス変換サブモジュールと、
物理アドレスにしたがって物理データバッファの物理位置情報を判定するように構成された情報判定サブモジュールと、を備える、例１５から１９のうちの１つ以上に記載の装置を含むことができる。
【０１７７】
例２１は、情報判定サブモジュールが、
物理データバッファの物理バッファ制御情報に物理アドレスを追加するように構成された情報追加ユニットを備える、例１５から２０のうちの１つ以上に記載の装置を含むことができる。
【０１７８】
例２２は、装置が、さらに、
前記物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を仮想位置情報として指定する前に、物理バッファ制御情報から構成される情報キューを作成し、空の物理記憶空間を作成するように構成された空間作成モジュールを備え、
情報追加ユニットが、
情報キュー内の物理バッファ制御情報を取得するように構成された情報取得サブユニットと、
物理データバッファの物理バッファ制御情報に物理アドレスを追加するように構成されたアドレス追加サブユニットと、
物理バッファ制御情報を物理記憶空間に記憶するように構成された情報記憶サブユニットと、を備える、例１５から２１のうちの１つ以上に記載の装置を含むことができる。
【０１７９】
例２３は、装置が、さらに、
前記データが物理データバッファに記憶されているときに仮想位置情報にしたがってデータを記憶する前に、物理記憶空間内の物理バッファ制御情報を取得するように構成された制御情報取得モジュールと、
物理ネットワークインターフェースコンポーネントの物理受信キューを作成するように構成された物理キュー作成モジュールと、
物理バッファ制御情報を物理受信キューに追加するように構成された制御情報追加モジュールと、を備える、例１５から２２のうちの１つ以上に記載の装置を含むことができる。
【０１８０】
例２４は、仮想ネットワークインターフェースコンポーネントが、物理ネットワークインターフェースコンポーネントの物理受信キューへの１対１のマッピングを有し、物理受信キューが、物理データバッファへの１対１のマッピングを有し、データ記憶モジュールが、
データにしたがって、データが送信されるべき仮想ネットワークインターフェースコンポーネントを判定するように構成されたコンポーネント判定サブモジュールと、
前記仮想ネットワークインターフェースコンポーネントに対応する物理受信キューから、対応する物理データバッファの物理位置情報を取得するように構成された物理情報取得サブモジュールと、
物理位置情報にしたがってデータを記憶するように構成されたデータ記憶サブモジュールと、を備える、例１５から２３のうちの１つ以上に記載の装置を含むことができる。
【０１８１】
例２５は、物理情報取得サブモジュールが、
物理受信キュー内の物理バッファ制御情報を取得するように構成され、物理バッファ制御情報が物理位置情報を含む物理制御情報取得ユニットを備え、
装置が、さらに、
前記物理位置情報にしたがって物理制御バッファ情報にデータを記憶した後、物理マシンが受信データを検出するように、データが受信された旨をマークするように構成された第１のマーキングモジュールを備える、例１５から２４のうちの１つ以上に記載の装置を含むことができる。
【０１８２】
例２６は、装置が、さらに、
仮想ネットワークインターフェースコンポーネントが受信データを検出するように、物理バッファ制御情報にしたがって、仮想ネットワークインターフェースコンポーネントの仮想受信キューの仮想バッファ制御情報にデータが受信された旨をマークするように構成された第２のマーキングモジュールを備える、例１５から２５のうちの１つ以上に記載の装置を含むことができる。
【０１８３】
例２７は、装置が、さらに、
物理バッファ制御情報にしたがって、データが受信された旨を仮想ネットワークインターフェースコンポーネントに通知するように構成された通知モジュールを備える、例１５から２６のうちの１つ以上に記載の装置を含むことができる。
【０１８４】
例２８は、データ処理装置であって、
データ記憶命令を受信するように構成され、データ記憶命令が、物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置にデータを記憶するために使用される命令受信モジュールと、
物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置に対応する仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置を取得するように構成された位置取得モジュールと、
データを仮想位置に記憶するように構成されたデータ記憶モジュールと、を備える、装置を含む。
【０１８５】
例２９は、メモリと、プロセッサと、メモリに記憶されてプロセッサ上で実行可能なコンピュータプログラムとを備えるコンピュータデバイスであって、プロセッサが、コンピュータプログラムを実行したときに例１〜１４のうちの１つ以上の方法を実装する、コンピュータデバイスを含む。
【０１８６】
例３０は、コンピュータプログラムが記憶されたコンピュータ可読記憶媒体であって、プログラムが、プロセッサによって実行されたときに例１〜１４のうちの１つ以上の方法を実装する、コンピュータ可読記憶媒体を含む。
【０１８７】
いくつかの実施形態は、例示的および説明的な目的のためであるが、客観的な実施形態を例示および説明する同じ目的を達成するために使用される様々な代替および／または同等の実装方法または計算は、本出願の実装の範囲から逸脱しない。本出願は、本明細書に記載の実施形態の任意のいかなる変更または変形もカバーすることを意図している。したがって、本明細書に記載の実施形態は、特許請求の範囲およびその均等物によってのみ限定されることは明らかである。
【符号の説明】
【０１８８】
４０１  情報取得モジュール
４０２  情報指定モジュール
４０３  データ記憶モジュール
５０１  命令受信モジュール
５０２  位置取得モジュール
５０３  データ記憶モジュール
６００  システム／装置
６０２  プロセッサ
６０４  システム制御モジュール
６０６  システムメモリ
６０８  記憶装置
６１０  出力装置
６１２  ネットワークインターフェース
【図１】
2021525983.tif 000003
【図２】
2021525983.tif 000004
【図３】
2021525983.tif 000005
【図４】
2021525983.tif 000006
【図５】
2021525983.tif 000007
【図６】
2021525983.tif 000008
【図７】
2021525983.tif 000009
【図８】
2021525983.tif 000010
【図９】
2021525983.tif 000011
【図１０】
2021525983.tif 000012
【国際調査報告】
2021525983.tif 000013
2021525983.tif 000014
2021525983.tif 000015
2021525983.tif 000016