(57)【特許請求の範囲】
【請求項１】
リモートダイレクトメモリアクセス（ＲＤＭＡ）のための装置であって、
ターゲットメモリを更新するべく、前記装置の外部のイニシエータからのＲＤＭＡ要求を格納するプロセスキューと、
前記プロセスキューに結合され、前記ＲＤＭＡ要求に基づいて、コミットオペレーションを前記ターゲットメモリへ発し、前記ＲＤＭＡ要求が有するインディケーションに少なくとも部分的に基づいて受信確認（ＡＣＫ）が要求されているか否かを判断し、要求されていると判断した場合、前記コミットオペレーションの完了時に前記ＡＣＫを生成して前記イニシエータへ転送する制御モジュールと、
を備え、
前記ＲＤＭＡ要求は、前記イニシエータにより前記ＡＣＫが時間閾値内で受信されない場合に再送信されるＲＤＭＡ要求を含む、装置。
【請求項２】
前記制御モジュールは、前記ＲＤＭＡ要求内のコミットＡＣＫビットに少なくとも部分的に基づいて、前記ＡＣＫを生成する、請求項１に記載の装置。
【請求項３】
前記制御モジュールは、アトミックオペレーションとして、ＲＤＭＡ書き込みのための前記コミットオペレーションを発する、または、前記ターゲットメモリに関連するシステムアーキテクチャに基づいて前記コミットオペレーションを発する、請求項１に記載の装置。
【請求項４】
前記制御モジュールは、前記ターゲットメモリがペリフェラルコンポーネントインターコネクトバス（ＰＣＩバス）を介して前記装置によりアクセスされたとき、メモリ読み出し要求に基づいて前記コミットオペレーションを、前記ＰＣＩバスを介して、前記ターゲットメモリへ発する、請求項１に記載の装置。
【請求項５】
前記制御モジュールは、前記ターゲットメモリを制御するストレージコントローラに基づいて前記コミットオペレーションを発し、前記コミットオペレーションの前記完了を示す、前記ストレージコントローラから受信される別のＡＣＫに基づいて前記ＡＣＫを生成する、請求項１に記載の装置。
【請求項６】
前記制御モジュールは、前記ＲＤＭＡ要求により更新されるターゲットメモリアドレスに対して読み出しを発する、請求項１に記載の装置。
【請求項７】
前記制御モジュールは、前記コミットオペレーションの前記完了を示すべく、コミットビットを用いて前記ＡＣＫにマークを付ける、請求項１から６のいずれか一項に記載の装置。
【請求項８】
前記装置は、前記ターゲットメモリと、少なくとも１つのプロセッサとをさらに備える、請求項１から６のいずれか一項に記載の装置。
【請求項９】
リモートダイレクトメモリアクセス（ＲＤＭＡ）のための方法であって、
コンピューティングデバイスにより、前記コンピューティングデバイスのターゲットメモリを更新するべく、前記コンピューティングデバイスの外部のイニシエータからＲＤＭＡ要求を受信する段階と、
前記コンピューティングデバイスにより、前記ＲＤＭＡ要求に基づいて、前記ターゲットメモリにコミットオペレーションを発する段階と、
前記コンピューティングデバイスにより、前記ＲＤＭＡ要求が有するインディケーションに少なくとも部分的に基づいて受信確認（ＡＣＫ）が要求されているか否かを判断し、要求されていると判断した場合、前記コミットオペレーションの完了時に前記ＡＣＫを生成して前記イニシエータへ送信する段階と、
を備え、
前記ＲＤＭＡ要求は、前記イニシエータにより前記ＡＣＫが時間閾値内で受信されない場合に再送信されるＲＤＭＡ要求を含む、方法。
【請求項１０】
前記ターゲットメモリがコンピュータバスを介して前記コンピューティングデバイスによってアクセスされるとき、前記コンピューティングデバイスにより、前記コンピュータバスを介して前記ターゲットメモリへメモリ読み出し要求を送信する段階を
さらに備える、請求項９に記載の方法。
【請求項１１】
前記コンピューティングデバイスにより、前記コミットオペレーションを行うように前記ターゲットメモリを制御するストレージコントローラへ要求を送信する段階と、
前記コンピューティングデバイスにより、前記コミットオペレーションの前記完了を示す、前記ストレージコントローラから受信される別のＡＣＫに基づいて前記ＡＣＫを生成する段階と
さらに備える、請求項９に記載の方法。
【請求項１２】
前記コンピューティングデバイスにより、前記ＲＤＭＡ要求により更新されるターゲットメモリアドレスに対して読み出しを発する段階をさらに備える、請求項９に記載の方法。
【請求項１３】
前記コンピューティングデバイスにより、前記コミットオペレーションの前記完了を示すべく、コミットビットを用いて前記ＡＣＫにマークを付ける段階をさらに備える、請求項９に記載の方法。
【請求項１４】
前記コミットオペレーションは、ＲＤＭＡ書き込み、または、アトミックオペレーションを含む、請求項９から１３のいずれか一項に記載の方法。
【請求項１５】
リモートダイレクトメモリアクセス（ＲＤＭＡ）のための装置であって、
フォールトドメインの外部のターゲットメモリを更新するべく、ＲＤＭＡ要求を格納するリクエストキューと、
前記リクエストキューに結合され、ターゲットデバイスによる前記ＲＤＭＡ要求の完了時に前記ターゲットデバイスからのコミットＡＣＫを要求するために、前記ターゲットデバイスに前記コミットＡＣＫが要求されているか否かを判断させるためのインディケーションとともに、前記ＲＤＭＡ要求を前記ターゲットデバイスへ転送する制御モジュールと
を備え、
前記制御モジュールは、前記ターゲットデバイスからの前記コミットＡＣＫが時間閾値内で受信されない場合、前記ターゲットデバイスへ前記ＲＤＭＡ要求を再送信する、装置。
【請求項１６】
前記制御モジュールおよび前記リクエストキューに結合され、前記リクエストキューから転送される前記ＲＤＭＡ要求を格納するアクティブキューをさらに備える、請求項１５に記載の装置。
【請求項１７】
前記制御モジュールは、前記リクエストキューから前記アクティブキューへ前記ＲＤＭＡ要求を転送し、前記ターゲットデバイスから前記コミットＡＣＫを受信すると、前記アクティブキューから前記ＲＤＭＡ要求を除去する、請求項１６に記載の装置。
【請求項１８】
前記制御モジュールは、前記ＲＤＭＡ要求の最後のパケットのトランスポートヘッダ内のビットに基づいて、前記コミットＡＣＫを要求するための前記インディケーションにマークを付ける、請求項１５に記載の装置。
【請求項１９】
前記制御モジュールは、前記ターゲットデバイスから受信される前記コミットＡＣＫ上のコミットビットに基づいて、前記ＲＤＭＡ要求を前記アクティブキューから除去する、請求項１６または１７に記載の装置。
【請求項２０】
リモートダイレクトメモリアクセス（ＲＤＭＡ）のための方法であって、
コンピューティングデバイスにより、ターゲットメモリを更新するべく、イニシエータからメモリ要求を受信する段階と、
前記コンピューティングデバイスにより、ターゲットデバイスによるＲＤＭＡ要求の完了時に前記ターゲットデバイスからのコミットＡＣＫを要求するために、前記ターゲットデバイスに前記コミットＡＣＫが要求されているか否かを判断させるためのインディケーションとともに、前記ターゲットデバイスへの前記メモリ要求に基づく前記ＲＤＭＡ要求を生成する段階と、
前記コンピューティングデバイスにより、前記ターゲットデバイスへ前記ＲＤＭＡ要求を送信する段階と、
前記コンピューティングデバイスにより、前記ターゲットデバイスからの前記コミットＡＣＫが時間閾値内で受信されない場合、前記ターゲットデバイスへ前記ＲＤＭＡ要求を再送信する段階と、
を備える、方法。
【請求項２１】
前記コンピューティングデバイスにより、前記コミットＡＣＫを要求するための前記インディケーションとして、前記ＲＤＭＡ要求の最後のパケットのトランスポートヘッダ内のビットにマークを付ける段階をさらに備える、請求項２０に記載の方法。
【請求項２２】
前記コンピューティングデバイスにより、前記ＲＤＭＡ要求をリクエストキューに格納する段階と、
前記コンピューティングデバイスにより、前記リクエストキューからアクティブキューへ前記ＲＤＭＡ要求を転送する段階と、
前記ターゲットデバイスから前記コミットＡＣＫを受信する段階と、
前記コンピューティングデバイスにより、前記ターゲットデバイスから前記コミットＡＣＫを受信すると、前記アクティブキューから前記ＲＤＭＡ要求を除去する段階と
さらに備える、請求項２０または２１に記載の方法。
【請求項２３】
前記除去する段階は、さらに、前記ターゲットデバイスから受信される前記コミットＡＣＫ上のコミットビットに基づく、請求項２２に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、コンピューティングの技術分野に関するものであり、より具体的には、コミット受信確認（ＡＣＫ）を用いたリモートダイレクトメモリアクセス（ＲＤＭＡ）のための装置および方法に関する。
【背景技術】
【０００２】
本明細書に提供される背景技術の説明は、概して本開示の文脈を提示するものである。本明細書に示されない限り、この節において説明される材料は、本願における特許請求の範囲に対する従来技術でなく、かつ、この節に含めることによって従来技術または従来技術の示唆であることを認めるものではない。
【０００３】
いくつかのアプリケーション（例えば、データベースおよび分散ファイルシステム）は、高い可用性および耐障害性を提供する。これらのアプリケーションは、多くの場合、例えば、ターゲットシステムのターゲットメモリドメインにデータを配信するように、不揮発性メモリから成り得る、ネットワークのフォールトドメインの外部にデータを置く必要がある。したがって、これらのアプリケーションは、ネットワークを介したデータ転送オペレーションが完了したかどうか、および、いつ完了したかを知る必要がある。
【０００４】
従来、アプリケーションソフトウェアは、ターゲットシステム上で動作し、データ転送オペレーションの完了を示す受信確認インディケーションを返送し得る。ソフトウェアベースのソリューションは、多くの場合、ネットワークバッファからアプリケーションバッファ内に転送されるデータを要求する。さらに、ソフトウェアベースのソリューションは、ネットワーク遅延および電力消費の両方の点において、実装上の厳しい制約を導入し得、相当なオーバーヘッドを全体的な動作に与え得る。
【図面の簡単な説明】
【０００５】
複数の実施形態が、添付の図面と併せて以下の詳細な説明によって容易に理解されるだろう。この説明を容易にするべく、同様の参照符号が、同様の構成要素を指定する。複数の実施形態は、添付の図面において、例示として示されており、限定的なものとして示されていない。
【図１】図１は、様々な実施形態に従って本開示の態様を組み込む、コミットＡＣＫを用いたＲＤＭＡのための例示的なシステム構成を示す概略図である。
【図２】図２は、様々な実施形態に従って本開示の態様を組み込む、コミットＡＣＫを用いたＲＤＭＡのために構成される例示的なソースデバイスおよびターゲットデバイスを示す概略図である。
【図３】図３は、様々な実施形態に従って本開示の態様を組み込む、例示的なソース装置により実施され得る、コミットＡＣＫを用いたＲＤＭＡを提供するための例示的な処理のフロー図である。
【図４】図４は、様々な実施形態に従って本開示の態様を組み込む、例示的なターゲット装置により実施され得る、コミットＡＣＫを用いたＲＤＭＡを提供するための別の例示的な処理のフロー図である。
【図５】図５は、様々な実施形態に従って開示された実施形態を実施するのに適している例示的なコンピューティングデバイスを示す。
【図６】図６は、様々な実施形態に従って本開示の態様を組み込む、プログラミング命令を有する製品を示す。
【発明を実施するための形態】
【０００６】
ＡＣＫを用いたＲＤＭＡのための装置および方法の複数の実施形態が説明される。ＲＤＭＡ対応ハードウェアおよび基本的なプロトコルが直接的にターゲットメモリ領域を更新するために修正されてよいが、ターゲット書き込みがコミットされるまでネットワーク受信確認が保留されてよい。いくつかの実施形態において、ソースデバイスは、フォールトドメインの外部のターゲットメモリを更新するべく、リモートダイレクトメモリアクセス（ＲＤＭＡ）要求を格納するリクエストキューを含んでよい。ソースデバイスは、リクエストキューに結合され、ターゲットデバイスによるＲＤＭＡ要求の完了時にターゲットデバイスからのコミットＡＣＫを要求するためのインディケーションを有するＲＤＭＡ要求をターゲットデバイスに転送する制御モジュールをさらに含んでよい。
【０００７】
いくつかの実施形態において、ターゲットデバイスは、ターゲットメモリを更新するべく、イニシエータからのリモートダイレクトメモリアクセス（ＲＤＭＡ）要求を格納するプロセスキューを含んでよい。ターゲットデバイスは、プロセスキューに結合され、ＲＤＭＡ要求に基づいて、ターゲットメモリにコミットオペレーションを発し、コミットオペレーションの完了時に、イニシエータへ送信される受信確認、ＡＣＫ、を生成する制御モジュールをさらに含んでよい。本開示のこれらおよび他の態様は、以下により十分に説明されるだろう。
【０００８】
以下の詳細な説明において、実施形態の一部を形成する添付の図面が参照され、全体を通して同様の参照符号が同様の部分を指定し、実施される可能性がある例示的な実施形態として示される。他の実施形態を利用することができ、構造的または論理的な変更は、本開示の範囲を逸脱することなく、され得ることが理解されるべきである。したがって、以下の詳細な説明は限定的意味に解釈されるべきではなく、実施形態の範囲は、添付の特許請求の範囲およびこれらの同等のものによって定義される。
【０００９】
様々な動作は、特許請求の範囲に記載された主題を理解するのに最も役立つ方法において、複数の個別のアクションまたは動作として順番に説明されてよい。しかしながら、説明の順序は、必ずしも、これらの動作が順序依存性を有することを示唆すると解釈されるべきものではない。特に、これらの動作は提示の順序で実行されなくともよい。説明される複数の動作は、説明された実施形態と異なる順序で実行されてもよい。様々な追加的な動作が実行されてよく、および／または、説明された複数の動作は、複数の追加的な実施形態において省略されてよい。
【００１０】
本開示の目的のため、「Ａおよび／またはＢ」という表現は、（Ａ）、（Ｂ）または（ＡおよびＢ）を意味する。本開示の目的のため、「Ａ、Ｂおよび／またはＣ」の表現は、（Ａ）、（Ｂ）、（Ｃ）、（ＡおよびＢ）、（ＡおよびＣ）、（ＢおよびＣ）または（Ａ、ＢおよびＣ）を意味する。本開示において、「１つの」若しくは「第１の」構成要素又はそれらと同等の表現をする場合、そのような開示は、１または複数のそのような構成要素を含んでおり、２またはそれより多いそのような構成要素を要求したり、排除したりするものではない。さらに、識別された要素に対する序数標識（例えば、第１、第２または第３など）は、複数の要素間を区別するために用いられ、そのような要素の必要な数または限定された数を示しも示唆もしておらず、また別途具体的に述べない限りは、そのような要素の特定の位置または順序を示しもしない。
【００１１】
一実施形態または実施形態の説明における参照は、その実施形態に関連して説明される特定の特徴、構造、または特性が、本発明の少なくとも１つの実施形態に含まれることを意味する。説明は「一実施形態において」、「別の実施形態において」「いくつかの実施形態において」、「実施形態において」または「様々な実施形態において」などという表現を使用する可能性があるが、これらはそれぞれ、１または複数の同一または異なる実施形態を指してよい。さらに、本開示の複数の実施形態に関連して使用される「備える」、「含む」、「有する」などの用語は、同義語である。
【００１２】
実施形態において、「モジュール」という用語は、１または複数のソフトウェアまたはファームウェアプログラム、組み合わせロジック回路および／または、説明される機能を提供する他の適切なコンポーネントを実行する特定用途向け集積回路（ＡＳＩＣ）、電子回路、（共有、専用またはグループ）プロセッサ、および／または、（共有、専用またはグループ）メモリを指す、その一部である、または含み得る。実施形態において、モジュールは、ファームウェア、ハードウェア、ソフトウェアまたはファームウェア、ハードウェアおよびソフトウェアの任意の組み合わせにおいて実装され得る。
【００１３】
図１を参照すると、様々な実施形態に従う、コミットＡＣＫを用いたＲＤＭＡのための例示的なシステム構成が示される。システム１００は、様々なソースデバイスおよび様々なターゲットデバイスを含んでよく、これらのデバイスのいくつかまたは全ては、互いにネットワーキングを介した、例えば、クラウド１４０を介した、直接または間接アクセスを有してよい。図１に示されるように、様々なターゲットデバイスは、例えば、ターゲットデバイス１２０または１４２を含んでよい。ソースデバイスは、例えば、ウェアラブルデバイス１１４、ウェアラブルデバイス１１６、モバイルデバイス１１８またはコンピュータ１１２を含んでよい。
【００１４】
いくつかの実施形態において、ソースデバイスは、例えば、セルラーネットワークを介して、ターゲットデバイスに無線で接続されてよい。いくつかの実施形態において、ソースデバイスは、例えば、イーサネット（登録商標）などの有線ネットワークを介してターゲットデバイスに接続されてよい。いくつかの実施形態において、図１に示されるソースデバイスは、ターゲットデバイスとしての機能を果たしてもよく、またその逆も当てはまる。以下でより詳しく説明されるように、ターゲットデバイスおよびソースデバイスは、それぞれ、コミットＡＣＫを用いたＲＤＭＡを可能にすべく、本開示の対応する教示に組み込まれ得る。
【００１５】
様々な実施形態において、改善されたＲＤＭＡ対応ハードウェアおよび基本的なプロトコルは、ターゲットメモリ領域を直接的に更新するために導入されるが、ターゲット書き込みがコミットされるまでネットワーク受信確認が保留される。中間データのコピーは、ターゲットデータバッファが直接的に更新されるときに必要としなくてよい。単一のＡＣＫは、ターゲットデータバッファに対する更新がコミットされた後にのみ生成されてよい。様々な実施形態において、リモート処理は、ターゲットシステムで動作する必要がない。ターゲットシステムは、任意のソフトウェアを実行する必要がない。いくつかの実施形態において、ターゲットデバイスは、たとえ一般的な処理能力を有していなくても、不揮発性メモリにより支持されるネットワークインタフェースコントローラ（ＮＩＣ）として単に実装されてよい。
【００１６】
実施形態において、前に説明したように、システム１００のソースデバイスは、本開示の教示に組み込まれる、ウェアラブルデバイス１１６または１１４、モバイルデバイス１１８、またはコンピュータ１１２のような、これらに限定されることはないが、異種コンピューティングデバイスを含んでよい。ウェアラブルデバイス１１６または１１４は、ボディボーン（ｂｏｄｙ−ｂｏｒｎｅ）コンピュータとしても知られる、ウェアラブル小型コンピュータであってよい。実施形態において、ウェアラブルデバイス１１６または１１４は、ユーザにより着用されるデバイスのために構成される輪郭、寸法および材料を有するデバイス本体またはフォームファクタを有してよい。例として、ウェアラブルデバイス１１６は、眼鏡の構成のような、頭に着用されるように構成されるフォームファクタを有してよい。別の例として、ウェアラブルデバイス１１４は、時計の構成のような、手首に着用されるように構成されるフォームファクタを有してよい。実施形態において、ウェアラブルデバイス１１６または１１４は、腕、脚、首、足などのような人体の他の部分の付近にある衣類の下部、衣類と一緒に、または上部で、着用者により着用されてもよい。
【００１７】
実施形態において、コンピュータ１１２は、二つ折りのフォームファクタまたは異なフォームファクタを有するラップトップまたはノートブックであってよい。実施形態において、モバイルデバイス１１８は、スマートフォンまたはタブレットコンピュータのような、携帯用通信デバイスであってよい。図示されていないが、システム１００のソースデバイスは、本開示の教示で向上された、ハンドヘルドコンピュータ、ラップトップ、携帯電話、ページャ、オーディオおよび／またはビデオプレーヤ（例えば、ＭＰ３プレーヤ、デジタル多目的ディスク（ＤＶＤ）プレーヤなど）、ゲームデバイス、ビデオカメラ、デジタルカメラ、ナビゲーションデバイス（例えば、全地球測位システム（ＧＰＳ）デバイス）、無線周辺機器（例えば、ヘッドセットなど）、および／または他の適切なユーザ電子デバイスを含んでもよい。
【００１８】
実施形態において、ウェアラブルデバイス１１６および１１４、モバイルデバイス１１８、コンピュータ１１２、ターゲットデバイス１２０または１４２、または他の適切なデバイスは、コミットＡＣＫを用いたＲＤＭＡを可能にする、図２に関連して示されるもののような、適切なモジュールが装備され得る。いくつかの実施形態において、これらの要求またはターゲットデバイスは、インターネットを介したインターネットプロトコル（ＩＰ）を用いて、互いに通信し合うように構成されてよい。いくつかの実施形態において、これらの要求またはターゲットデバイスは、狭域通信（ＤＳＲＣ）、近接場通信（ＮＦＣ）、またはＢｌｕｅｔｏｏｔｈ（登録商標）およびＷｉ−Ｆｉ（登録商標）接続を用いて、互いに通信するように構成されてよい。前述の通信テクノロジーは、ソースデバイスおよびターゲットデバイスの間で用いられ得る潜在的に基本的な通信テクノロジーを示すに過ぎなかったことを認識すべきであり、他の実施形態において異なる通信テクノロジーが用いられてよい。
【００１９】
実施形態において、システム１００のソースデバイスまたはターゲットデバイスは、コンピューティングインフラストラクチャーの複合体であるクラウド１４０と通信するように構成されてよい。クラウド１４０は、クラウドコンピューティングをサポートしてよく、ハードウェア、ストレージ、マネージメントソリューション、セキュリティソリューション、ビジネスアプリケーションなどのような、ネットワーキングを介したサービスとして利用可能なリソースを有する十分に資源のあるコンピューティングモデルを概して指す。クラウド１４０は、概して、ｉｎｆｒａｓｔｒｕｃｔｕｒｅ  ａｓ  ａ  ｓｅｒｖｉｃｅ（ＩａａＳ）、ｐｌａｔｆｏｒｍ  ａｓ  ａ  ｓｅｒｖｉｃｅ（ＰａａＳ）、ｓｏｆｔｗａｒｅ  ａｓ  ａ  ｓｅｒｖｉｃｅ（ＳａａＳ）、ｎｅｔｗｏｒｋ  ａｓ  ａ  ｓｅｒｖｉｃｅ（ＮａａＳ）およびｃｏｍｍｕｎｉｃａｔｉｏｎ  ａｓ  ａ  ｓｅｒｖｉｃｅ（ＣａａＳ）として、そのサービスを提供してよい。その上、クラウド１４０は、具体的、ＩａａＳ、ＰａａＳ、ＳａａＳ、ＮａａＳまたはＣａａＳのような１または複数のサービスタイプに基づいて、コミットされたＡＣＫサービスを有するＲＤＭＡをサポートするサービスを提供してよい。
【００２０】
いくつかの実施形態において、クラウド１４０は、コミットＡＣＫを用いたＲＤＭＡを協調的に可能とするために、本開示の教示に組み込まれる、例えば、ターゲットデバイス１４２などの１または複数のサーバデバイスを含んでよい。いくつかの実施形態において、クラウド１４０は、ソースデバイス（例えば、コンピュータ１１２）と、クラウド１４０にアクセス可能なターゲットデバイス（例えば、ターゲットデバイス１２０）との間でコミットＡＣＫを用いたＲＤＭＡを可能とするために、ネットワーキングサーバ１４４のような、そのサーバデバイスを用いてよい。いくつかの実施形態において、ソースデバイスは、ＲＤＭＡの基準を指定してよく、ネットワーキングサーバ１４４は、例えば、ターゲットデバイス上の負荷に応じて、ＲＤＭＡ要求を受信する適切なターゲットデバイスを判断してよい。
【００２１】
実施形態において、クラウド１４０は、ソースデバイスまたはターゲットデバイスを動作可能に結合する１または複数の無線および／または有線ネットワークを含んでよい。クラウド１４０は、インターネット、電話網（例えば、公衆交換電話網（ＰＳＴＮ））、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、ケーブルネットワーク、イーサネット（登録商標）ネットワークなどのような、これらに限定されることはないが、パブリックおよび／またはプライベートネットワークを介してアクセスされ得る。無線通信ネットワークは、無線パーソナルエリアネットワーク（ＷＰＡＮ）、無線ローカルエリアネットワーク（ＷＬＡＮ）、無線メトロポリタンエリアネットワーク（ＷＭＡＮ）および／または無線ワイドエリアネットワーク（ＷＷＡＮ）の様々な組み合わせを含んでよい。実施形態において、ソースデバイスまたはターゲットデバイスは、セルラーネットワークおよび／または無線接続を介して、これらのネットワークに結合されてよい。
【００２２】
図２を参照すると、様々な実施形態に従って、本開示の態様に組み込む、コミットＡＣＫを用いたＲＤＭＡのためのソースデバイス２１０およびターゲットデバイス２２０の実装例が示される。実施形態において、ターゲットデバイス２２０は、図１におけるターゲットデバイス１２０または１４２のようなサーバデバイスであってよい。実施形態において、ターゲットデバイス２２０は、様々な移動式または固定式のデバイスに分散される様々なコンポーネントまたはサブシステムを有する分散システムの一部であってよい。実施形態において、ソースデバイス２１０は、図１に示される複数のソースデバイスのうちの一つと同様のものであってよい。いくつかの実施形態において、ソースデバイス２１０またはターゲットデバイス２２０は、別のコンピューティングデバイス内のＮＩＣとして実装されてよい。いくつかの実施形態において、ソースデバイス２１０またはターゲットデバイス２２０は、たとえ一般的な計算能力を有していなくても、スタンドアロン型デバイスとして実装されてよい。
【００２３】
実施形態において、ターゲットデバイス２２０は、ソースデバイス２１０との相乗効果で、コミットＡＣＫを用いたＲＤＭＡを可能とし得る。様々な実施形態において、ソース側のバッファ処理は、ターゲットメモリに対するネットワーク転送の完了とデータのコミットとの間でのＲＤＭＡ要求の転送に応答するために必要としなくてよい。
【００２４】
ソースデバイス２１０は、リクエストキュー２１２を含んでよい。実施形態において、リクエストキュー２１２は、ＲＤＭＡ要求をエンキューおよび／またはデキューする適切なデータ構造に関連するコンピューティングモジュールであってよい。いくつかの実施形態において、ユーザまたはアプリケーションは、例えば、ＲＤＭＡ書き込みなどの要求をソースデバイス２１０に提示してよい。ソースデバイス２１０は、次に、要求メッセージをリクエストキュー２１２にエンキューし得る。リクエストキュー２１２内の要求メッセージは、次に順番に保持され、適宜処理され得る。いくつかの実施形態において、ＲＤＭＡ要求は、予め設定されたルール（例えば、データベースメンテナンスルール）に基づいて、ソースデバイス２１０により自動的に生成され、イベント（例えば、ローカルデータ修正によりトリガされたデータ同期）またはＲＤＭＡオペレーションにつながる他の理由によりトリガされてよい。いくつかの実施形態において、リクエストキュー２１２内の要求メッセージは、リモートコミットが要求されることを示してよい。
【００２５】
リクエストキュー２１２は、制御モジュール２１６に結合されてよい。実施形態において、制御モジュール２１６は、ターゲットメモリの更新が完了するまで、ネットワークＡＣＫが保留されるべきであることを示すように、ＲＤＭＡ書き込みプロトコルを修正してよい。例として、制御モジュール２１６は、ターゲットデバイスへのＲＤＭＡ要求の最後のパケットで運ばれるトランスポートヘッダ内のビットを用いて、「コミットＡＣＫを用いたＲＤＭＡ書き込み」の要求を示してよい。例として、制御モジュール２１６は、ＲＤＭＡメッセージに関連付けられた直接データ配置（ＤＤＰ）セグメントのＤＤＰヘッダのような他の手段により、「コミットＡＣＫを用いたＲＤＭＡ書き込み」の要求をエンコードしてよい。様々な実施形態において、制御モジュール２１６は、１または複数のネットワークを介してＲＤＭＡ要求をターゲットデバイス２２０のようなターゲットデバイスへ送信してよい。転送されるＲＤＭＡ要求は、コミット受信確認が要求されることをターゲットデバイスに示してよい。
【００２６】
一旦転送されると、要求メッセージは、リクエストキュー２１２から、制御モジュール２１６および／またはリクエストキュー２１２に結合されるアクティブキュー２１４へ移動されてよい。リクエストキュー２１２と同様に、アクティブキュー２１４は、ＲＤＭＡ要求をエンキューおよび／またはデキューする適切なデータ構造に関連する別のコンピューティングモジュールであってよい。アクティブキュー２１４は、ＲＤＭＡ要求が受信確認されるまで、ＲＤＭＡ要求を格納してよい。いくつかの実施形態において、制御モジュール２１６は、例えば、必要な受信確認が時間閾値内で受信されない場合、アクティブキュー２１４内のＲＤＭＡ要求の再送を促してよい。いくつかの実施形態において、制御モジュール２１６は、アクティブキュー２１４内のＲＤＭＡ要求の数に基づいて、後続のアウトバウンドＲＤＭＡ要求を管理してよい。例として、制御モジュール２１６は、ターゲットデバイスがオーバロードであることを示し得るアクティブキュー２１４内のＲＤＭＡ要求の数が、閾値数を超えるとき、新たなＲＤＭＡ要求を送信することを控えてよい。
【００２７】
様々な実施形態において、ソースデバイス２１０は、１または複数の無線または有線ネットワークを用いて、ターゲットデバイス２２０と通信してよい。これらのネットワークは、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）またはインターネットのような、これらに限定されることはないが、パブリックおよび／またはプライベートネットワークを含んでよい。いくつかの実施形態において、これらのネットワークは、無線パーソナルエリアネットワーク（ＷＰＡＮ）、無線ＬＡＮ（ＷＬＡＮ）、無線メトロポリタンエリアネットワーク（ＷＭＡＮ）または無線ワイドエリアネットワーク（ＷＷＡＮ）のような無線ネットワークを含んでよい。いくつかの実施形態において、これらのネットワークは、セルラーネットワークも含んでよい。
【００２８】
ターゲットデバイス２２０は、プロセスキュー２２２を含んでよい。リクエストキュー２１２またはアクティブキュー２１４と同様に、プロセスキュー２２２は、ソースデバイス（例えば、ソースデバイス２１０）から受信されるＲＤＭＡ要求をエンキューおよび／またはデキューする適切なデータ構造に関連する別のコンピューティングモジュールであってよい。いくつかの実施形態において、ＲＤＭＡ要求は、ＲＤＭＡ書き込み、アトミックオペレーションまたはターゲットメモリを更新する別のタイプの要求であってよい。いくつかの実施形態において、ＲＤＭＡ要求は、コミット受信確認を要求するためのインディケーションを含んでよい。
【００２９】
プロセスキュー２２２は、制御モジュール２２４に結合されてよい。様々な実施形態において、制御モジュール２２４は、プロセスキュー２２２内のＲＤＭＡ要求を処理するように構成されてよい。いくつかの実施形態において、制御モジュール２２４は、上述したように、ＲＤＭＡ要求に関連付けられたコミットＡＣＫビットに基づいて、コミット受信確認が要求されるか否かを判断してよい。コミットＡＣＫビットを処理すると、制御モジュール２２４は、プロセスキュー２２２からコミットキュー２２６へＲＤＭＡ要求を移動させてよい。その間に、制御モジュール２２４は、ＲＤＭＡ要求に関連付けられたターゲットメモリ（例えば、ターゲットメモリ２２８）へコミットオペレーションを発してよい。様々な実施形態において、ターゲットメモリ２２８は、リードオンリーメモリ、フラッシュメモリ、強誘電体ランダムアクセスメモリ（Ｆ―ＲＡＭ）、磁気コンピュータストレージデバイス（例えば、ハードディスク、磁気テープ）、光ディスクなどのような不揮発性メモリであってよい。いくつかの実施形態において、ターゲットメモリ２２８は、ターゲットデバイス２２０の内部に存在してよい。他の実施形態において、ターゲットメモリ２２８は、ターゲットデバイス２２０の外部に位置してよいが、例えば、コンピューティングネットワーキングを介して、ターゲットデバイス２２０にアクセス可能であってよい。
【００３０】
コミットオペレーションの形式は、ターゲットシステムアーキテクチャに依存してよい。例として、いくつかのコンピュータアーキテクチャにおいて、ＲＤＭＡ要求により更新されるターゲットメモリアドレスに対する読み出しは、ターゲットメモリ２２８の外部の全てのシステムバッファをフラッシュすることをもたらし得る。したがって、制御モジュール２２４は、いくつかの実施形態において、コミットオペレーションを確認するために、ＲＤＭＡ要求により更新されるターゲットメモリアドレスに対して読み出しを発してよい。
【００３１】
制御モジュール２２４およびターゲットメモリ２２８の間の相互作用は、アーキテクチャ的に固有であってよい。いくつかの実施形態において、ターゲットメモリ２２８は、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）バスのようなローカルバスを介して制御モジュール２２４によりアクセスされるホストメモリであってよい。この場合、制御モジュール２２４は、全てのシステムバッファをフラッシュするために、ＰＣＩバスを介して、書き込み済みのメモリへメモリ読み出し要求を発してよい。いくつかの実施形態において、制御モジュール２２４およびターゲットメモリ２２８は、統合されてよいが、ターゲットメモリ２２８は、不揮発性メモリエクスプレス（ＮＶＭｅ）に基づくシリアルアドバンスドテクノロジーアタッチメント（ＳＡＴＡ）またはＰＣＩエクスプレスストレージデバイスとして実装されてよい。
【００３２】
いくつかの実施形態において、ターゲットメモリ２２８は、ストレージコントローラの背後にあってよい。この場合、プロトコルは、制御モジュール２２４からストレージコントローラへと拡張される。制御モジュール２２４は、データを有するＲＤＭＡ要求をストレージコントローラへ転送してよく、ストレージコントローラは、キャッシュ、ＮＶＭｅ領域または他のストレージデバイスへデータを書き込み、一旦書き込みがコミットされると、ＡＣＫを用いて制御モジュール２２４に信号を送ってよい。ＮＶＭまたはストレージデバイスに対するインタフェースは、コマンドキューの使用を伴ってよい。制御モジュール２２４は、この場合、処理するためにコマンドキューへ要求を提示してよく、ＮＶＭは、制御モジュール２２４によりモニタされる完了キューまたは他のメカニズムを用いて、動作を完了してよい。
【００３３】
コミットオペレーションの完了時に、制御モジュール２２４は、コミットオペレーションの完了を示すために、ＡＣＫを生成し、これをもとのソースデバイス２１０へ送信してよい。いくつかの実施形態において、制御モジュール２２４は、特に、コミット機能を有さない既存のソースデバイスとの相互運用性をサポートするべく、コミットビットを用いてＡＣＫにマークを付けて、動作が完全にコミットされたことを示してよい。
【００３４】
図３を参照すると、コミットＡＣＫを用いたＲＤＭＡを提供するための例示的な処理のフロー図が示されており、様々な実施形態に従う例示的なソースデバイスにより実施され得る。処理３００は、ハードウェア（例えば、回路、専用ロジック、プログラマブルロジック、マイクロコードなど）、ソフトウェア（例えばハードウェアシミュレーションを実行する処理デバイス上で動作する命令）または、それらの組み合わせを含む処理ロジックにより実行されてよい。処理ロジックは、コミットＡＣＫを用いたＲＤＭＡを促すように構成されてよい。そのようなものとして、処理３００は、本開示の１または複数の実施形態を実装するコンピューティングデバイス（例えば、ソースデバイス２１０）により実行されてよい。
【００３５】
実施形態において、処理は、ブロック３１０で開始してよく、ターゲットデバイスのターゲットメモリを更新する要求は、例えば、ソースデバイス２１０により受信され得る。図２に関連して述べたように、実施形態において、要求は、ユーザまたはアプリケーションにより開始され、または、ソースデバイス２１０内のイベントによりトリガされ得る。様々な実施形態において、要求は、リモートコミットが要求されることを示してよい。要求は、さらに、例えば、図２のリクエストキュー２１２内にエンキューされてよい。
【００３６】
次に、ブロック３２０では、ターゲットデバイスに対するリモートダイレクトメモリアクセス（ＲＤＭＡ）要求は、例えば、制御モジュール２１６により、ＲＤＭＡ要求の完了時にターゲットデバイスからのコミットＡＣＫを要求するためのインディケーションとともに生成されてよい。いくつかの実施形態において、制御モジュール２１６は、コミットＡＣＫを要求するためのインディケーションとして、ＲＤＭＡ要求の最後のパケットのトランスポートヘッダにおけるビットにマークを付けてよい。
【００３７】
次に、ブロック３３０では、ＲＤＭＡ要求は、例えば、制御モジュール２１６によりターゲットデバイスへ送信されてよい。図２に関連して述べたように、ＲＤＭＡ要求は、ＬＡＮ、ＷＡＮまたはインターネットのような、これらに限定されることはないが、パブリックおよび／またはプライベートネットワークを介してターゲットデバイスへ転送されてよい。転送されるＲＤＭＡ要求は、コミット受信確認が要求されることを示してよい。一旦転送されると、ＲＤＭＡ要求は、リクエストキューからアクティブキューへ移動されてよい。アクティブキューは、ＲＤＭＡ要求が受信確認されるまで、ＲＤＭＡ要求を格納してよい。
【００３８】
次に、ブロック３４０では、ターゲットデバイスからのコミットＡＣＫは、例えば、制御モジュール２１６により受信されてよい。いくつかの実施形態において、コミットＡＣＫを受信すると、受信したコミットＡＣＫに対応するＲＤＭＡ要求は、例えば、ＲＤＭＡ要求の識別に基づいて、アクティブキューから除去されてよい。いくつかの実施形態において、コミットＡＣＫを受信すると、ソースデバイスは、完了したＲＤＭＡオペレーションをイニシエータへ報告してよい。いくつかの実施形態において、ソースデバイスは、ターゲットデバイスから受信したコミットＡＣＫ上のコミットビットに基づいて、アクティブキューから受信したコミットＡＣＫに対応するＲＤＭＡ要求を除去してよい。
【００３９】
図４を参照すると、様々な実施形態に従って、例示的なターゲットデバイスにより実施され得る、コミットＡＣＫを用いたＲＤＭＡを提供するための別の例示的な処理のフロー図が示されている。処理４００は、ハードウェア（例えば、回路、専用ロジック、プログラマブルロジック、マイクロコードなど）、ソフトウェア（例えば、ハードウェアシミュレーションを実行するために、処理デバイス上で動作する命令）またはそれらの組み合わせを含む処理ロジックにより実行されてよい。処理ロジックは、コミットＡＣＫを用いたＲＤＭＡを促すために構成されてよい。そのようなものとして、処理４００は、本開示の１または複数の実施形態を実装するコンピューティングデバイス（例えば、ターゲットデバイス２２０）により実行されてよい。実施形態において、図４の様々なブロックは、コミットＡＣＫを用いたＲＤＭＡを可能にするために、例えば、ターゲットデバイスの特定の実施形態に従って、任意の適切な順序で組み合わせられ、または、配列されてよい。
【００４０】
実施形態において、処理は、ブロック４１０で開始してよく、例えば、図２のターゲットデバイス２２０によりコンピューティングデバイスのターゲットメモリを更新するべく、ＲＤＭＡ要求が、コンピューティングデバイスの外部のソースデバイスから受信されてよい。実施形態において、ＲＤＭＡ要求は、ＲＤＭＡ書き込み、アトミックオペレーションまたはターゲットメモリを更新する別のタイプの要求であってよい。実施形態において、ＲＤＭＡ要求は、プロセスキュー（例えば、図２のプロセスキュー２２２）内にエンキューされてよい。いくつかの実施形態において、ＲＤＭＡ要求は、コミットＡＣＫがＲＤＭＡオペレーションのために要求されるインディケーション、例えば、コミットＡＣＫビット、を含んでよい。コミットＡＣＫビットを処理すると、ターゲットデバイスは、ＲＤＭＡ要求をプロセスキューからコミットキュー、例えば、図２のコミットキュー２２６、へ移動させてよい。
【００４１】
次、ブロック４２０では、ターゲットメモリに対するコミットオペレーションは、例えば、図２の制御モジュール２２４により、ＲＤＭＡ要求に基づいて発されてよい。いくつかの実施形態において、コミットオペレーションは、ＲＤＭＡ書き込み、または、アトミックオペレーションを含んでよい。いくつかの実施形態において、読み出しがターゲットメモリアドレスに関連付けられた全てのシステムバッファをフラッシュすることをもたらし得るので、制御モジュールは、コミットオペレーションを確認するためにＲＤＭＡ要求により更新されたターゲットメモリアドレスに対して読み出しを発してよい。いくつかの実施形態において、ターゲットメモリがコンピュータバスを介してコンピューティングデバイスによりアクセスされるときに、制御モジュールは、コンピュータバスを介してターゲットメモリへメモリ読み出し要求を発してよい。いくつかの実施形態において、制御モジュールは、ターゲットメモリを制御するストレージコントローラへ要求を送信してコミットオペレーションを行ってよい。様々な実施形態において、コミットオペレーションの形式は、ターゲットシステムアーキテクチャに依存する。
【００４２】
次に、ブロック４３０では、例えば、制御モジュール２２４によるコミットオペレーションの完了時に、ＡＣＫは生成され、ソースデバイスへ送信されてよい。実施形態において、ＡＣＫは、コミットオペレーションの完了を示すインディケーションに基づいて生成されてよい。いくつかの実施形態において、コミットオペレーションの完了を示すインディケーションは、ターゲットメモリアドレスへの読み出し成功を示すものであってよい。いくつかの実施形態において、コミットオペレーションの完了を示すインディケーションは、コミットオペレーションの完了を示すストレージコントローラから受信される別のＡＣＫであってよい。いくつかの実施形態において、ＡＣＫは、要求されたＲＤＭＡオペレーションが十分にコミットされたことを示すべく、コミットビットを用いてマークが付けられてよい。様々な実施形態において、そのようなＡＣＫは、ターゲット書き込みがコミットされるまで保留され、その後、ＡＣＫは、ソースデバイスへ送り返される。
【００４３】
図５は、本開示の複数の実施形態を実施するのに適しているコンピューティングデバイス５００の実施形態を示す。コンピューティングデバイス５００は、スマートフォン、タブレット、ラップトップ、ウェアラブルデバイス、サーバなどのような形態で、ユーザの届く範囲内にある任意のコンピューティングデバイス（例えば、ユーザが、持ち運び、身に着け、接触し、ジェスチャーするなどのデバイス）であってよい。図示されるように、コンピューティングデバイス５００は、プロセッサ５１０、システムメモリ５３０、不揮発性メモリ（ＮＶＭ）／ストレージ５４０および通信インタフェース５５０に結合されるシステム制御ロジック５２０を含んでよい。様々な実施形態において、プロセッサ５１０は、１または複数のプロセッサコアを含んでよい。
【００４４】
実施形態において、通信インタフェース５５０は、コンピューティングデバイス５００のインタフェースを提供して、図１に関連して既に述べたように、クラウドにおける数々のソースデバイス、数々のターゲットデバイスまたは数々のシステム／サービスと通信してよい。実施形態において、通信インタフェース５５０は、コンピューティングデバイス５００のインタフェースを提供して、１または複数のネットワークを介して通信し、および／または、任意の他の適切なデバイスと通信してよい。通信インタフェース５５０は、ネットワークアダプタ、ネットワークインタフェースカード、１または複数のアンテナ、無線インタフェースなどのような、任意の適切なハードウェアおよび／またはファームウェアを含んでよい。様々な実施形態において、通信インタフェース５５０は、コンピューティングデバイス５００のインタフェースを含み、無線自動識別（ＲＦＩＤ）、近接場通信（ＮＦＣ）、光通信、または、他の同様なテクノロジーを用いて、別のデバイスと（例えば、仲介なしに）直接的に通信してよい。様々な実施形態において、通信インタフェース５５０は、例えば、広帯域符号分割多元接続（ＷＣＤＭＡ（登録商標））、移動体通信用グローバルシステム（ＧＳＭ（登録商標））、ロングタームエボリューション（ＬＴＥ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、Ｚｉｇｂｅｅ（登録商標）などのような無線通信テクノロジーと相互運用してよい。
【００４５】
実施形態において、特に、通信インタフェース５５０は、前に説明したように、コミットＡＣＫを用いたＲＤＭＡ５５２としてまとめて表された、コミットＡＣＫを用いたＲＤＭＡを実施するロジックを含んでよい。コミットＡＣＫを用いたＲＤＭＡ５５２は、プロセッサ５１０により実行されるとき、処理３００および４００のような、これらに限定されることはないが、ＡＣＫを用いたＲＤＭＡを提供することをコンピューティングデバイス５００にもたらす命令を含んでよい。
【００４６】
実施形態において、コミットＡＣＫを用いたＲＤＭＡ５５２は、プロセッサ５１０により実行されるとき、図２に関連するリクエストキュー２１２、制御モジュール２１６、アクティブキュー２１４、プロセスキュー２２２、制御モジュール２２４およびコミットキュー２２６に関連付けられた様々な機能実行することをコンピューティングデバイス５００にもたらす命令を含んでよい。
【００４７】
いくつかの実施形態において、システム制御ロジック５２０は、任意の適切なインタフェースをプロセッサ５１０および／またはシステム制御ロジック５２０と通信する任意の適切なデバイスまたはコンポーネントに提供する任意の適切なインタフェースコントローラを含んでよい。システム制御ロジック５２０は、また、例えばユーザへの情報の表示のためのディスプレイ（不図示）と相互運用してもよい。様々な実施形態において、ディスプレイは、例えば、液晶ディスプレイ、陰極線管ディスプレイ、ｅ-ｉｎｋディスプレイ、投写型ディスプレイのような、様々な表示形式および形態のうちの一つを含んでよい。様々な実施形態において、ディスプレイは、タッチスクリーンを含んでよい。
【００４８】
いくつかの実施形態において、システム制御ロジック５２０は、システムメモリ５３０に対するインタフェースを提供する１または複数のメモリコントローラ（不図示）を含んでよい。システムメモリ５３０は、例えば、コンピューティングデバイス５００のためのデータおよび／または命令をロードし、格納するために用いられてよい。システムメモリ５３０は、例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）のような、任意の適切な揮発性メモリを含んでよい。
【００４９】
いくつかの実施形態において、システム制御ロジック５２０は、ＮＶＭ／ストレージ５４０および通信インタフェース５５０に対するインタフェースを提供する１または複数の入力／出力（Ｉ／Ｏ）コントローラ（不図示）を含んでよい。ＮＶＭ／ストレージ５４０は、例えば、データおよび／または命令を格納するために用いられてよい。ＮＶＭ／ストレージ５４０は、例えば、フラッシュメモリのような任意の適切な不揮発性メモリを含んでよく、および／または、ＮＶＭ／ストレージ５４０は、例えば、１または複数のハードディスクドライブ（ＨＤＤ）、１または複数のソリッドステートドライブ、１または複数のコンパクトディスク（ＣＤ）ドライブ、および／または、１または複数のデジタル多目的ディスク（ＤＶＤ）ドライブのような任意の適切な不揮発性ストレージデバイスを含んでよい。ＮＶＭ／ストレージ５４０は、コンピューティングデバイス５００がインストールされるデバイスの物理的な一部であるストレージリソース、または、コンピューティングデバイス５００によりアクセス可能となり得るが、必ずしもその一部である必要はないストレージリソースを含んでよい。例えば、ＮＶＭ／ストレージ５４０は、通信インタフェース５５０を介してネットワークを経由でコンピューティングデバイス５００によりアクセスされてよい。様々な実施形態において、ＮＶＭ／ストレージ５４０は、図２のターゲットメモリ２２８を含んでよい。
【００５０】
いくつかの実施形態において、プロセッサ５１０は、システム制御ロジック５２０および／またはコミットＡＣＫを用いたＲＤＭＡ５５２のロジックを有するメモリと一緒にパッケージ化されてよい。いくつかの実施形態において、複数のプロセッサ５１０の少なくとも一つは、システム制御ロジック５２０および／またはコミットＡＣＫを用いたＲＤＭＡ５５２のロジックを有するメモリと一緒にパッケージ化されて、システムインパッケージ（ＳｉＰ）を形成してよい。いくつかの実施形態において、プロセッサ５１０は、システム制御ロジック５２０および／またはコミットＡＣＫを用いたＲＤＭＡ５５２のロジックを有するメモリと同じダイ上に統合されてよい。いくつかの実施形態において、プロセッサ５１０は、システム制御ロジック５２０および／またはコミットＡＣＫを用いたＲＤＭＡ５５２のロジックを有するメモリと同じダイ上に統合されて、システムオンチップ（ＳｏＣ）を形成してよい。
【００５１】
図２に関連するソースデバイス２１０またはターゲットデバイス２２０のモジュールのどちらが、コンピューティングデバイス５００によりホストされるのかに応じて、プロセッサ５１０およびシステムメモリ５３０などの機能および／または能力特性を変化させてよい。様々な実施例において、コンピューティングデバイス５００は、本開示の教示で向上された、スマートフォン、タブレット、モバイルコンピューティングデバイス、ウェアラブルコンピューティングデバイス、サーバなどであってよい。
【００５２】
図６は、様々な実施形態に従って、本開示の態様を組み込む、プログラミング命令を有する製品６１０を示す。様々な実施形態において、製品は、本開示の様々な実施形態を実装するべく用いられてよい。示されるように、製品６１０は、コンピュータ可読非一時記憶媒体６２０を含んでよく、命令６３０は、本明細書に説明された実施形態または処理のうちの任意の一つの実施形態の態様を実施するように構成される。記憶媒体６２０は、フラッシュメモリ、ダイナミックランダムアクセスメモリ、スタティックランダムアクセスメモリ、光ディスク、磁気ディスクなどを含むが、それらに限定されることはない、当技術分野において知られている永続的な記憶媒体の広範囲を表してよい。命令６３０は、装置によるこれらの実行に応じて、装置が、本明細書において説明する様々な動作を実行できるようにしてよい。例として、記憶媒体６２０は、本開示の実施形態に従って、図３の処理３００において示されるように、装置、例えば、ソースデバイス２１０に、コミットＡＣＫを用いたＲＤＭＡのいくつかの態様を実施させるように構成される命令６３０を含んでよい。別の例のように、記憶媒体６２０は、本開示の実施形態に従って、図４の処理４００において示されるように、装置、例えば、ターゲットデバイス２２０にコミットＡＣＫを用いたＲＤＭＡのいくつかの態様を実施させるように構成される命令６３０を含んでよい。実施形態において、コンピュータ可読記憶媒体６２０は、１または複数のコンピュータ可読非一時記憶媒体を含んでよい。他の実施形態において、コンピュータ可読記憶媒体６２０は、命令６３０を用いてエンコードされる、信号のように一時的なものであってよい。
【００５３】
特定の実施形態が説明を目的として本明細書に例示され説明されてきたが、本開示の範囲を逸脱せずに、示され、説明されている実施形態を、同じ目的を達成すると推定される幅広い様々な代替的および／または同等のものである実施形態または実装例で置き換えることができる。本願は、本明細書に記載された実施形態の任意の改変又は変更をカバーすることを意図されている。したがって、本明細書に説明された実施形態が特許請求の範囲によってのみ限定されることが明白に意図されている。
【００５４】
以下の段落では、様々な実施形態の実施例が記載されている。
【００５５】
実施例１は、リモートダイレクトメモリアクセス（ＲＤＭＡ）のための装置であり、装置は、ターゲットメモリを更新するべく、装置の外部のイニシエータからのＲＤＭＡ要求を格納するプロセスキューと、プロセスキューに結合され、ＲＤＭＡ要求に基づいて、コミットオペレーションをターゲットメモリへ発し、コミットオペレーションの完了時に、イニシエータへ転送される受信確認、ＡＣＫ、を生成する制御モジュールとを備えてよい。
【００５６】
実施例２は、実施例１の主題を備えてよく、さらに、制御モジュールおよびプロセスキューに結合され、プロセスキューから転送されるＲＤＭＡ要求を格納するコミットキューを備えてよく、制御モジュールは、ＲＤＭＡ要求内のコミットＡＣＫビットに少なくとも部分的に基づいて、ＲＤＭＡ要求をプロセスキューからコミットキューへ転送する。
【００５７】
実施例３は、実施例１または２の主題を備えてよく、さらに、制御モジュールが、ＲＤＭＡ要求内のコミットＡＣＫビットに少なくとも部分的に基づいて、ＡＣＫを生成することを特定してよい。
【００５８】
実施例４は、実施例１―３の任意の主題を備えてよく、さらに、制御モジュールが、アトミックオペレーションとして、ＲＤＭＡ書き込みのためのコミットオペレーションを発する、または、ターゲットメモリに関連するシステムアーキテクチャに基づいてコミットオペレーションを発することを特定してよい。
【００５９】
実施例５は、実施例１―４の任意の主題を備えてよく、さらに、ターゲットメモリがペリフェラルコンポーネントインターコネクト（ＰＣＩ）バスを介して装置によりアクセスされるとき、制御モジュールが、メモリ読み出し要求に基づいて、コミットオペレーションを、ＰＣＩバスを介して、ターゲットメモリへ発することを特定してよい。
【００６０】
実施例６は、実施例１―５の任意の主題を備えてよく、さらに、制御モジュールが、ターゲットメモリを制御するストレージコントローラに基づいてコミットオペレーションを発し、コミットオペレーションの完了を示す、ストレージコントローラから受信される別のＡＣＫに基づいてＡＣＫを生成することを特定してよい。
【００６１】
実施例７は、実施例１―６の任意の主題を備えてよく、さらに、制御モジュールが、ＲＤＭＡ要求により更新されるターゲットメモリアドレスに対して読み出しを発することを特定してよい。
【００６２】
実施例８は、実施例１―７の任意の主題を備えてよく、さらに、制御モジュールが、コミットオペレーションの完了を示すべく、コミットビットを用いてＡＣＫにマークを付けることを特定してよい。
【００６３】
実施例９は、実施例１―８の任意の主題を備えてよく、さらに、ターゲットメモリと、少なくとも１つのプロセッサとを備えてよい。
【００６４】
実施例１０は、リモートダイレクトメモリアクセス（ＲＤＭＡ）のための方法であり、方法は、コンピューティングデバイスにより、コンピューティングデバイスのターゲットメモリを更新するべく、コンピューティングデバイスの外部のイニシエータからＲＤＭＡ要求を受信する段階と、コンピューティングデバイスにより、ＲＤＭＡ要求に基づいて、ターゲットメモリにコミットオペレーションを発する段階と、コンピューティングデバイスにより、コミットオペレーションの完了時にイニシエータへ送信される受信確認、ＡＣＫ、を生成する段階とを備えてよい。
【００６５】
実施例１１は、実施例１０の主題を備えてよく、さらに、コンピューティングデバイスにより、ＲＤＭＡ要求をプロセスキューに格納する段階と、コンピューティングデバイスにより、ＲＤＭＡ要求上のコミットＡＣＫビットに基づいて、ＲＤＭＡ要求をプロセスキューからコミットキューへ転送する段階とを備えてよい。
【００６６】
実施例１２は、実施例１０または１１の主題を備えてよく、さらに、ターゲットメモリがコンピュータバスを介してコンピューティングデバイスによりアクセスされるとき、コンピューティングデバイスにより、コンピュータバスを介してターゲットメモリへメモリ読み出し要求を送信する段階を備えてよい。
【００６７】
実施例１３は、実施例１０―１２の任意の主題を備えてよく、さらに、コンピューティングデバイスにより、コミットオペレーションを行うようにターゲットメモリを制御するストレージコントローラへ要求を送信する段階と、コンピューティングデバイスにより、コミットオペレーションの完了を示す、ストレージコントローラから受信される別のＡＣＫに基づいてＡＣＫを生成する段階とを備えてよい。
【００６８】
実施例１４は、実施例１０―１３の任意の主題を備えてよく、さらに、コンピューティングデバイスにより、ＲＤＭＡ要求により更新されるターゲットメモリアドレスに対して読み出しを発する段階を備えてよい。
【００６９】
実施例１５は、実施例１０―１４の任意の主題を備えてよく、さらに、コンピューティングデバイスにより、コミットオペレーションの完了を示すべく、コミットビットを用いてＡＣＫにマークを付ける段階を備えてよい。
【００７０】
実施例１６は、実施例１０―１５の任意の主題を備えてよく、さらに、コミットオペレーションが、ＲＤＭＡ書き込み、または、アトミックオペレーションを含むことを特定してよい。
【００７１】
実施例１７は、少なくとも１つの記憶媒体であり、少なくとも１つの記憶媒体は、装置に、装置による命令の実行に応じて、実施例１０―１６の任意の主題を実施させるように構成される複数の命令を備えてよい。
【００７２】
実施例１８は、ＲＤＭＡのための装置であり、装置は、コンピューティングデバイスのターゲットメモリを更新するべく、コンピューティングデバイスの外部のイニシエータからＲＤＭＡ要求を受信する手段と、ＲＤＭＡ要求に基づいてターゲットメモリにコミットオペレーションを発する手段と、コンピューティングデバイスにより、コミットオペレーションの完了時にイニシエータへ送信される受信確認、ＡＣＫ、を生成する手段とを備えてよい。
【００７３】
実施例１９は、実施例１８の主題を備えてよく、さらに、プロセスキュー上のＲＤＭＡ要求を格納する手段と、ＲＤＭＡ要求上のコミットＡＣＫビットに基づいて、ＲＤＭＡ要求をプロセスキューからコミットキューへ転送する手段とを備えてよい。
【００７４】
実施例２０は、実施例１８または１９の主題を備えてよく、さらに、ターゲットメモリがコンピュータバスを介してコンピューティングデバイスによりアクセスされるとき、メモリ読み出し要求を、コンピュータバスを介してターゲットメモリへ送信する手段を備えてよい。
【００７５】
実施例２１は、実施例１８―２０の任意の主題を備えてよく、さらに、コミットオペレーションを行うようにターゲットメモリを制御するストレージコントローラへ要求を送信する手段と、コミットオペレーションの完了を示す、ストレージコントローラから受信される別のＡＣＫに基づいてＡＣＫを生成する手段とを備えてよい。
【００７６】
実施例２２は、実施例１８―２１の任意の主題を備えてよく、さらに、ＲＤＭＡ要求により更新されるターゲットメモリアドレスに対して読み出しを発する手段を備えてよい。
【００７７】
実施例２３は、実施例１８―２２の任意の主題を備えてよく、さらに、コミットオペレーションの完了を示すべく、コミットビットを用いてＡＣＫにマークを付ける手段を備えてよい。
【００７８】
実施例２４は、ＲＤＭＡのための装置であり、装置は、フォールトドメインの外部のターゲットメモリを更新するべく、リモートダイレクトメモリアクセス（ＲＤＭＡ）要求を格納するリクエストキューと、リクエストキューに結合され、ターゲットデバイスによるＲＤＭＡ要求の完了時にターゲットデバイスからのコミットＡＣＫを要求するためのインディケーションとともにＲＤＭＡ要求をターゲットデバイスへ転送する制御モジュールとを備えてよい。
【００７９】
実施例２５は、実施例２４の主題を備えてよく、さらに、制御モジュールおよびリクエストキューに結合され、リクエストキューから転送されるＲＤＭＡ要求を格納するアクティブキューを備えてよい。
【００８０】
実施例２６は、実施例２４または２５の主題を備えてよく、さらに、制御モジュールが、リクエストキューからアクティブキューへＲＤＭＡ要求を転送し、ターゲットデバイスからコミットＡＣＫを受信すると、アクティブキューからＲＤＭＡ要求を除去することを特定してよい。
【００８１】
実施例２７は、実施例２４―２６の任意の主題を備えてよく、さらに、制御モジュールが、ＲＤＭＡ要求の最後のパケットのトランスポートヘッダ内のビットに基づいて、コミットＡＣＫを要求するためのインディケーションにマークを付けることを特定してよい。
【００８２】
実施例２８は、実施例２４―２７の任意の主題を備えてよく、さらに、制御モジュールが、ターゲットデバイスから受信されるコミットＡＣＫ上のコミットビットに基づいて、ＲＤＭＡ要求をアクティブキューから除去することを特定してよい。
【００８３】
実施例２９は、実施例２４―２８の任意の主題を備えてよく、さらに、ターゲットメモリと、少なくとも１つのプロセッサとを備えてよい。
【００８４】
実施例３０は、ＲＤＭＡのための方法であり、方法は、コンピューティングデバイスにより、ターゲットメモリを更新するべく、イニシエータからメモリ要求を受信する段階と、コンピューティングデバイスにより、ターゲットデバイスによるリモートダイレクトメモリアクセス（ＲＤＭＡ）要求の完了時に、ターゲットデバイスからのコミットＡＣＫを要求するためのインディケーションを用いて、ターゲットデバイスへのメモリ要求に基づくＲＤＭＡ要求を生成する段階と、コンピューティングデバイスにより、ターゲットデバイスへＲＤＭＡ要求を送信する段階とを備えてよい。
【００８５】
実施例３１は、実施例３０の主題を備えてよく、さらに、コンピューティングデバイスにより、コミットＡＣＫを要求するためのインディケーションとして、ＲＤＭＡ要求の最後のパケットのトランスポートヘッダ内のビットにマークを付ける段階を備えてよい。
【００８６】
実施例３２は、実施例３０または３１の主題を備えてよく、さらに、コンピューティングデバイスにより、ＲＤＭＡ要求をリクエストキューに格納する段階と、コンピューティングデバイスにより、リクエストキューからアクティブキューへＲＤＭＡ要求を転送する段階と、ターゲットデバイスからコミットＡＣＫを受信する段階と、コンピューティングデバイスにより、ターゲットデバイスからコミットＡＣＫを受信すると、アクティブキューからＲＤＭＡ要求を除去する段階とを備えてよい。
【００８７】
実施例３３は、実施例３２の任意の主題を備えてよく、さらに、除去する段階が、ターゲットデバイスから受信されるコミットＡＣＫ上のコミットビットにさらに基づくことを特定してよい。
【００８８】
実施例３４は、少なくとも１つの記憶媒体であり、少なくとも１つの記憶媒体は、装置に、装置による命令の実行に応じて、実施例３０―３３の任意の主題を実施させるように構成される複数の命令を備えてよい。
【００８９】
要約書は、読み手が技術的開示の特質および主旨を究明することを可能にするように提供される。要約書は、特許請求の範囲または意味を限定するように使用されることはないという理解の下で提出される。以下の特許請求の範囲は、本明細書において、別個の実施形態として独立している各請求項とともに、詳細な説明に組み込まれる。
【図１】
0006303242.tif 000002
【図２】
0006303242.tif 000003
【図３】
0006303242.tif 000004
【図４】
0006303242.tif 000005
【図５】
0006303242.tif 000006
【図６】
0006303242.tif 000007