(57)【要約】【課題】ＳＳＤのようなストレージ装置、ＦＰＧＡ、及び他のコプロセッサのペアリングを構築するためのシステム及び方法を提供する。【解決手段】本発明のシステムは、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）とコプロセッサを備える。ＳＳＤは、データに対するストレージ、固有のＳＳＤ  ＩＤ（Ｉｄｅｎｔｉｆｉｅｒ）に対するストレージ、及びコプロセッサＩＤに対するストレージを含む。コプロセッサは、固有のＳＳＤ  ＩＤに対するストレージ、及びコプロセッサＩＤに対するストレージを含む。ハードウェアインターフェースは、ＳＳＤとコプロセッサとの間の通信を許容する。【選択図】図１
2020047277.tif 000002
【特許請求の範囲】
【請求項１】
データに対する第１ストレージ、固有のＳＳＤ  ＩＤ（ｉｄｅｎｔｉｆｉｅｒ）に対する第２ストレージ、及び固有のコプロセッサＩＤに対する第３ストレージを含むＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）と、
前記固有のコプロセッサＩＤに対する第４ストレージ、前記固有のＳＳＤ  ＩＤに対する第５ストレージを含むコプロセッサと、
前記ＳＳＤと前記コプロセッサとの間のハードウェアインターフェースと、を備えることを特徴とするシステム。
【請求項２】
前記コプロセッサは、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ−Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＴＰＵ（Ｔｅｎｓｏｒ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、イレイジャーコーディングコントローラ、及びスモールプロセッサコアのいずれか一つを含むことを特徴とする請求項１に記載のシステム。
【請求項３】
前記コプロセッサは、前記固有のＳＳＤ  ＩＤに対するＳＳＤをクエリし、前記固有のＳＳＤ  ＩＤを前記第５ストレージに格納するように動作することを特徴とする請求項１に記載のシステム。
【請求項４】
前記コプロセッサは、前記ＳＳＤに前記固有のコプロセッサＩＤを提供するように動作することを特徴とする請求項１に記載のシステム。
【請求項５】
前記ＳＳＤは、前記コプロセッサに前記固有のＳＳＤ  ＩＤを提供するように動作することを特徴とする請求項１に記載のシステム。
【請求項６】
前記ＳＳＤは、前記ＳＳＤ及び前記コプロセッサに関するクエリをアウト・オブ・バンド（Ｏｕｔ−Ｏｆ−Ｂａｎｄ）で受信するように動作することを特徴とする請求項１に記載のシステム。
【請求項７】
前記ＳＳＤは、前記固有のＳＳＤ  ＩＤ及び前記固有のコプロセッサＩＤの両方を含む前記クエリに応答するように動作することを特徴とする請求項６に記載のシステム。
【請求項８】
前記コプロセッサは、前記ＳＳＤ及び前記コプロセッサに関するクエリをアウト・オブ・バンドで受信するように動作することを特徴とする請求項１に記載のシステム。
【請求項９】
前記コプロセッサは、前記固有のＳＳＤ  ＩＤ及び前記固有のコプロセッサＩＤの両方を含む前記クエリに応答するように動作することを特徴とする請求項８に記載のシステム。
【請求項１０】
前記ＳＳＤは、前記ＳＳＤ及び前記コプロセッサに関するクエリをイン・バンド（Ｉｎ−Ｂａｎｄ）で受信するように動作することを特徴とする請求項１に記載のシステム。
【請求項１１】
前記ＳＳＤは、前記固有のＳＳＤ  ＩＤ及び前記固有のコプロセッサＩＤの両方を含む前記クエリに応答するように動作することを特徴とする請求項１０に記載のシステム。
【請求項１２】
第１装置から第２装置にクエリを伝送する段階と、
前記第１装置で前記第２装置から第１ペアリングデータを含む応答を受信する段階と、
前記第１装置の第１ストレージに前記第１ペアリングデータを格納する段階と、
前記第１装置の第２ストレージから第２ペアリングデータにアクセスする段階と、
前記第１装置から前記第２装置に前記第２ペアリングデータを伝送する段階と、を有することを特徴とする方法。
【請求項１３】
前記第１装置から第２装置にクエリを伝送する段階は、前記第１装置と前記第２装置との間のハードウェアインターフェースを介して前記第１装置から第２装置にクエリを伝送する段階を含み、
前記第１装置で前記第２装置から前記応答を受信する段階は、前記第１装置と前記第２装置との間のハードウェアインターフェースを介して前記第１装置で前記第２装置から前記応答を受信する段階を含み、
前記第１装置から前記第２装置に前記第２ペアリングデータを伝送する段階は、前記第１装置と前記第２装置との間のハードウェアインターフェースを介して前記第１装置から前記第２装置に前記第２ペアリングデータを伝送する段階を含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
第１仮想ＩＤによって示されるＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）に第１クエリを伝送する段階と、
前記第１クエリに応答して、前記ＳＳＤから固有のＳＳＤ  ＩＤ及び固有のコプロセッサＩＤを受信する段階と、
第２仮想ＩＤによって示されるコプロセッサに第２クエリを伝送する段階と、
前記第２クエリに応答して、前記コプロセッサから前記固有のＳＳＤ  ＩＤ及び前記固有のコプロセッサＩＤを受信する段階と、
前記第１仮想ＩＤと前記第２仮想ＩＤとをペアリングする段階と、を有することを特徴とする方法。
【請求項１５】
前記第１仮想ＩＤと前記第２仮想ＩＤとをペアリングする段階は、前記固有のＳＳＤ  ＩＤ及び前記固有のコプロセッサＩＤを返す前記ＳＳＤ及び前記コプロセッサの両方に応答して、前記第１仮想ＩＤと前記第２仮想ＩＤとをペアリングする段階を含むことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記第１仮想ＩＤと前記第２仮想ＩＤとのペアリングに関連するクエリに応答するように動作するＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）を提供する段階を更に含むことを特徴とする請求項１４に記載の方法。
【請求項１７】
前記第１仮想ＩＤに対するペアのためのペアリングのクエリを受信する段階と、
前記第１仮想ＩＤと前記第２仮想ＩＤとのペアリングに応答して前記第２仮想ＩＤを返す段階と、を更に含むことを特徴とする請求項１６に記載の方法。
【請求項１８】
前記第１仮想ＩＤに対するペアのためのペアリングのクエリを受信する段階は、前記ＡＰＩを介してアプリケーションから前記第１仮想ＩＤに対するペアのためのペアリングのクエリを受信する段階を含み、
前記第１仮想ＩＤと前記第２仮想ＩＤとのペアリングに応答して前記第２仮想ＩＤを返す段階は、前記第１仮想ＩＤと前記第２仮想ＩＤとのペアリングに応答して前記アプリケーションに前記第２仮想ＩＤを返す段階を含むことを特徴とする請求項１７に記載の方法。
【請求項１９】
ファイルに関連するペアに対するファイルのクエリを受信する段階と、
前記ファイルを格納する前記ＳＳＤを識別する段階と、
前記ファイルのクエリに応答して前記第１仮想ＩＤ及び前記第２仮想ＩＤを返す段階と、を更に含むことを特徴とする請求項１６に記載の方法。
【請求項２０】
前記ファイルに関連するペアに対するファイルのクエリを受信する段階は、前記ＡＰＩを介してアプリケーションから前記ファイルに関連するペアに対するファイルのクエリを受信する段階を含み、
前記ファイルのクエリに応答して前記第１仮想ＩＤ及び前記第２仮想ＩＤを返す段階は、前記ファイルのクエリに応答して前記アプリケーションに前記第１仮想ＩＤ及び前記第２仮想ＩＤを返す段階と、を含むことを特徴とする請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムに関し、より詳細には、多数の装置環境でペアリングするＦＰＧＡとＳＳＤを識別するためのストレージ装置及びコプロセッサ（ｃｏ−ｐｒｏｃｅｓｓｏｒ）を含むシステム及び方法に関する。
【背景技術】
【０００２】
ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）及びＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）サブ装置は、フォームファクタ、電力、密度、及び性能利益のために、一つのエンクロージャに、しばしば（しかし、常にではない）パッケージされる。ＦＰＧＡ及びＳＳＤは、ホストのＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）の観点から、別途の物理的機能（ＰＦ：ｐｈｙｓｉｃａｌ  ｆｕｎｃｔｉｏｎ）として表われる。ＦＰＧＡ及びＳＳＤサブ装置は、相互関係がない別途の入力／出力（Ｉ／Ｏ）スタック（特に、ストレージ及びＯｐｅｎＣＬ）上に装着される。
【０００３】
ＦＰＧＡ及びＳＳＤ装置の両方を含むフォームファクタは、三つのＰＦを示す筈である。即ち、Ｄａｔａ  ＰＦ（ユーザー空間ＰＦと称される）、管理ＰＦ、及びＮＶＭｅ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｅｘｐｒｅｓｓ）ＰＦである。最初の二つのＰＦはＦＰＧＡのためのものであり、三つ目のＰＦはＳＳＤのためのものである。
【０００４】
マシンが一つのＦＰＧＡ／ＳＳＤのペアのみを含む場合には、別途のＰＦはペアリングの識別（例えば、ｘ８６ホストサーバから）に問題とならない。しかし、一つ以上の装置が存在する場合（例えば、密度の高いｘ８６ホストサーバのように）、どのＦＰＧＡがどのＳＳＤとペアリングされるかが識別されない。ＰＣＩｅパススルー（ｐａｓｓ−ｔｈｏｕｇｈ）がエネーブルされ、多機能装置が多数の単一機能装置として表われる場合には、仮想化された環境で問題は更に深刻である。
【０００５】
ペアリングは、Ｐ２Ｐ（ｐｅｅｒ−ｔｏ−ｐｅｅｒ）コンピューティングが適切に機能するために必要である。ペアリングをしていない場合、データが誤ったＦＰＧＡ装置のコンテキストにロードされ、正しいデータを保持していないハードウェアのカーネルに導かれるため、Ｐ２Ｐが失敗する。ホストユーザーがペアリングの要求事項でアプリケーションを識別できないときに問題が深刻になる。
【０００６】
ＳＳＤのようなストレージ装置、ＦＰＧＡ、及び他のコプロセッサのペアリングを構築する必要がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】米国特許第８４１７８８０号明細書
【特許文献２】米国特許第９７１２６１９号明細書
【特許文献３】米国特許第９８０１２１９号明細書
【特許文献４】米国特許出願公開第２０１８／０３５７０１８号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明は、上記従来の問題点に鑑みてなされたものであって、本発明の目的は、ＳＳＤのようなストレージ装置、ＦＰＧＡ、及び他のコプロセッサのペアリングを構築するためのシステム及び方法を提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するためになされた本発明の一態様によるシステムは、データに対する第１ストレージ、固有のＳＳＤ  ＩＤ（ｉｄｅｎｔｉｆｉｅｒ）に対する第２ストレージ、及び固有のコプロセッサＩＤに対する第３ストレージを含むＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）と、前記固有のコプロセッサＩＤに対する第４ストレージ、前記固有のＳＳＤ  ＩＤに対する第５ストレージを含むコプロセッサと、前記ＳＳＤと前記コプロセッサとの間のハードウェアインターフェースと、を備える。
【発明の効果】
【００１０】
本発明によれば、ＳＳＤ／ＦＰＧＡ装置のペアリングソリューションを有することで、装置をより有用に使用するために有益である。短期的に、ペアリングソリューションは、識別間隔を扱うことができる。長期的に、ペアリングソリューションは、アクセラレーション装置をこれからどのようにするかの決定を下すのに役立つ。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施形態によるストレージ装置とコプロセッサとのペアリングをサポートするために設計されたマシンを示す図である。
【図２】図１のコプロセッサの異なる形態を示す図である。
【図３】図１のマシンの追加的な詳細を示す図である。
【図４】図１の装置のオペレーティングシステムを示す図である。
【図５】ペアリングに関する情報を格納するように備えられた図１の装置を示す図である。
【図６】図１のＳＳＤ及びコプロセッサをクエリ（ｑｕｅｒｙ）して装置をペアリングするオペレーティングシステムを示す図である。
【図７】本発明の一実施形態における単一のフォームファクタとしての図１のＳＳＤ及びコプロセッサを示す図である。
【図８】本発明の他の実施形態における単一のフォームファクタとしての図１のＳＳＤ及びコプロセッサを示す図である。
【図９】本発明の一実施形態によるペアリングを構築する図１のＳＳＤ及びコプロセッサを示す図である。
【図１０】本発明の他の実施形態によるペアリングを構築する図１のＳＳＤ及びコプロセッサを示す図である。
【図１１】本発明の一実施形態による図１のＳＳＤ及びコプロセッサを含む第１トポロジーを示す図である。
【図１２】本発明の他の実施形態による図１のＳＳＤ及びコプロセッサを含む第２トポロジーを示す図である。
【図１３】本発明の一実施形態による図１のＳＳＤ及びコプロセッサを含む第３トポロジーを示す図である。
【図１４】本発明の他の実施形態による図１のＳＳＤ及びコプロセッサを含む第４トポロジーを示す図である。
【図１５】本発明の一実施形態によるペアリングデータに対するパートナー（ｐａｒｔｎｅｒ）をクエリ（ｑｕｅｒｙ）するための図１のＳＳＤ（又は、図１のコプロセッサ）の手順を示すフローチャートである。
【図１６】本発明の一実施形態によるペアリングデータに対するクエリをパートナーから受信するための図１のＳＳＤ（又は、図１のコプロセッサ）の手順を示すフローチャートである。
【図１７】本発明の一実施形態によるペアリングパートナー及び関連する図５のオペレーティングシステムからのクエリに応答するための図１のＳＳＤ及び／又はコプロセッサの手順を示すフローチャートである。
【図１８】本発明の一実施形態による図１のＳＳＤ及びコプロセッサをクエリしてペアリングするための図５のオペレーティングシステムの手順を示すフローチャートである。
【図１９】本発明の一実施形態による装置に対するペアリング情報に関するアプリケーションからのクエリに応答するための図５のオペレーティングシステムの手順を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。後述する詳細な説明で、多様な特定の実施形態を、本発明の技術的思想の十分な理解を助けるために提供する。しかし、この分野における通常の技術を有する者は、これらの特定の実施形態がなくても、本発明の技術的思想を具現することができる。他の例として、よく知られた方法、手順、構成エレメント、回路、及びネットワークは、本発明を不必要に曖昧にしないために詳細に説明しない。
【００１３】
ここで、第１、第２などのような用語を多様な構成要素を説明するために使用するが、これらの構成要素は、これらの用語によって限定されない。これらの用語は、一つのエレメントを他の一つのエレメントと区別するためにのみ使用される。例として、本発明の技術的思想の範囲から逸脱せずに、第１モジュールは、第２モジュールと命名される。同様に、第２モジュールは、第１モジュールと命名される。
【００１４】
本発明の技術的思想の説明において、使用される用語は、特定の実施形態を説明するための目的でのみ使用され、本発明の技術的思想を限定するものとして意図しない。本発明の技術的思想の説明及び請求項において使用されるように、コンテキスト上明確に明示していると判定されない限り、単数表現は複数表現もまた含むものとして意図する。「及び／又は」の用語は、一つ以上の関連する項目の任意且つ可能な全ての組み合わせを含むものとして参照される。「含む（ｃｏｍｐｒｉｓｅ）」及び／又は「含む（ｃｏｍｐｒｉｓｉｎｇ）」の用語は、詳細な説明で使用される際に、言及する特性、整数、段階、動作、エレメント、及び／又は構成要素の存在を明示し、一つ以上の他の特性、整数、段階、動作、エレメント、構成要素、及び／又はそれらのグループの存在又は追加を排除しない。図面の構成要素及び特性は、実際の比率に必ずしも比例しない。
【００１５】
装置の一つ以上のＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）／ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）のペアが同じサーバ上で利用可能な場合、ホストアプリケーションのユーザーは、これらの二つの別途のペアリング上でピアリング（ｐｅｅｒｉｎｇ）バッファ及びＳＳＤを選択する可能性が存在する。このような選択は、データの損傷（ｄａｔａ  ｃｏｒｒｕｐｔｉｏｎ）及びアクセラレーション（ａｃｃｅｌｅｒａｔｉｏｎ）の不正確な結果を生む。ＳＳＤ／ＦＰＧＡペアは、三つの物理的機能（Ｐｈｙｓｉｃａｌ  Ｆｕｎｃｔｉｏｎ：ＰＦ）を露出させる。即ち、（ＦＰＧＡに対する）データＰＦ（ユーザー空間ＰＦとも称される）、（ＦＰＧＡに対する）管理ＰＦ、（ＳＳＤに対する）ＮＶＭｅ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｅｘｐｒｅｓｓ）ＰＦである。三つのＰＦが同じ装置に基づく場合に、この問題は緩和される。しかし、「Ｘｉｌｉｎｘ（登録商標）」の３ポートスイッチの設計アプローチを使用すると、ＦＰＧＡ及びＳＳＤはその物理的な関連についての詳細がない別途の装置として表われる（「Ｘｉｌｉｎｘ（登録商標）」は「Ｘｉｌｉｎｘ（登録商標）」の商標として登録されている）。「Ｘｉｌｉｎｘ（登録商標）」は、それ自身のアプリケーションに晒す「ＯｐｅｎＣＬ」のソフトウェアインターフェースのために、この問題は更に複雑になる。ソフトウェアのインターフェースは、バス／装置／機能（Ｂｕｓ／Ｄｅｖｉｃｅ／Ｆｕｎｃｔｉｏｎ：ＢＤＦ）の詳細を仮想化し、各ＦＰＧＡ装置を０、１、２などの論理番号で示す。ソフトウェアレベルにおけるこのような追加的な間接指定は、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）  ＢＤＦレベルにおいて前に推論されたペアリングの関連付けを完全に曖昧にする。アプリケーション又はユーザーは、ＰＣＩ  ＢＤＦレベルで多機能装置の連結、「Ｘｉｌｉｎｘ（登録商標）」のドライバ内部、及びファイルシステムレベルのマッピングの複雑さをよく知らなければならない。
【００１６】
この取り決めは、エラーが発生しやすい傾向を有し、使用される環境に基づいて異なる問題として表われる。これらの取り決めは、ピアリング要請がユーザーにつながる可能性があることから、デバッグすることが面倒な可能性もある。
【００１７】
＜密度の高いシステム＞
【００１８】
上述の場合に、全ての装置が同じルートコンプレックスの下にあるものと期待される。しかし、ＳＳＤ／ＦＰＧＡ装置が密集したシステムは、各ＣＰＵソケットに連結された各ルートコンプレックスの下に構成される一つ以上のＰＣＩｅ（ＰＣＩ  Ｅｘｐｒｅｓｓ）スイッチの使用が必要である。仮想化のコンテキストで活用され、ＣＰＵ／チップセットによるサポートが多様化されたＡＣＳ（Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ｓｅｒｖｉｃｅ）に対して、ピアリングが均一にサポートされず、トポロジーにおいてこれらのニュアンスをアプリケーションのユーザーが理解するのに負担になる。
【００１９】
ＳＳＤからＰ２Ｐ−ＤＤＲ（Ｄｉａｌ  Ｏｎ  Ｄｅｍａｎｄ  Ｒｏｕｔｉｎｇ）へのＰ２Ｐ伝送がサポートされないために、Ｐ２Ｐ伝送が失敗することがある。この結果は、ＰＣＩルートコンプレックスがルートポートの間のパケットの伝送をサポートすることが要求されないという事実に起因する。この設計の選択は、ストレージアクセラレーションコンテキストにおけるＰ２Ｐの使用には実質的に良いが、ユーザーの経験には良くない。
【００２０】
高密度のＳＳＤ／ＦＰＧＡ配置は、多様なシステムベンダーによる任意のＩｎｔｅｌ／ＡＭＤソリューションで構築され、システムがどのように相互作用するかに対する制御が制限されたり、できなかったりする。この事実は、動作するものと動作しないものに対する複雑さをもたらす。
【００２１】
＜仮想化環境におけるＰＣＩパススルー（ｐａｓｓ−ｔｈｒｏｕｇｈ）＞
【００２２】
特定のＬｉｎｕｘ（登録商標）仮想化環境において、ＳＳＤ／ＦＰＧＡ装置のような多機能装置が仮想マシン（ＶＭ）に対する通過属性にマッピングされる場合、各物理的機能に対して別途の単一機能の装置として表われる。従って、ＳＳＤとＦＰＧＡとの間に露出された三つのＰＦは、互いに関連付けられない三つの単一機能の装置としてマッピングされる。
【００２３】
＜ＰＣＩ知識のないユーザー＞
【００２４】
以上の場合に加えて、アプリケーションのユーザーは、ＢＤＦの連結を知るのに十分な知識がない場合もある。この事実は、ユーザーがこのレベルのシステムの詳細に対して教育を受ける必要のない上位レベルのアプリケーションユーザーである可能性があるからである。この問題は、この知識のギャップを解決するために、高いレベルの抽象化が要求される状況をもたらす。
【００２５】
＜提案ソリューション＞
【００２６】
ＳＳＤ／ＦＰＧＡ装置は、ストレージアクセラレーションを提供し、他のスタンドアロンＳＳＤ及びＦＰＧＡと区別することで、新しいＳＳＤの装置クラスと見なされる。新しい装置は、それ自体を識別する明確な方法を必要とする。即ち、近くのストレージ容量を有するＦＰＧＡか又はそれに近くのアクセラレーションがあるＮＶＭｅ  ＳＳＤか？であり、ソリューションは、次の構成を含む。
【００２７】
低いレベルの装置インターフェースの変更は、特性を共有するためのＦＰＧＡとＳＳＤとの間のＳＭＢｕｓ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｂｕｓ）のようなプライベート（ｐｒｉｖａｔｅ）ハードウェアインターフェ−スと、アクセラレーション属性を収容するためのＮＶＭｅ  ＳＳＤファームウェアに対する小さなアップデートと、ＳＳＤをクエリしてＳＳＤの識別ペアリング属性を知らせるＦＰＧＡファームウェアのアップデートと、を備える。
【００２８】
高いレベルのソフトウェアインターフェースの変更は、低いレベルのペアリングの詳細をクエリし、ＮＶＭｅ識別コントローラの新しい特性を存在するソフトウェアのパスに露出させて管理ソフトウェアモジュールを強化し、ペアリングのためにＦＰＧＡ及びＳＳＤをクエリするＦＰＧＡへのインターフェースを含む。
【００２９】
装置名やファイル名などでペアリングを識別するアプリケーションインターフェースコールを含むエコシステムを採択するためにイネーブルされたＡＰＩを含む。
【００３０】
これらの変更は、ＮＶＭｅ  ＳＳＤを、必要な程度、一般的に維持するように十分に小さくなければならない。例として、既存のＮＶＭｅ  ＳＳＤは、ＳＳＤ／ＦＰＧＡ装置内のＳＳＤとして収容されるように再プログラミングされる。
【００３１】
＜ＦＰＧＡを含むペアリングのためのＮＶＭｅ  ＳＳＤへの変更＞
【００３２】
ハードウェアの小さな変更は、ＦＰＧＡとＳＳＤとが互いに通信できるようにする。
【００３３】
ＳＳＤコントローラは、（図７、図８、及びテキストを参照して、以下で示して説明するように）二つのＳＭＢｕｓマスターインターフェースをサポートする。一番目のＳＭＢｕｓマスターインターフェースは、ＢＭＣ（Ｂｏａｒｄ  Ｍａｎａｇｅｍｅｎｔ  Ｃｏｎｔｒｏｌｌｅｒ）又はそのような管理項目からのコネクタを介して出力される外部ＳＭＢｕｓ（アウト・オブ・バンド（Ｏｕｔ  Ｏｆ  Ｂａｎｄ：ＯＯＢ））に連結される。ＳＳＤ上の二番目のＳＭＢｕｓマスタポートは、ＦＰＧＡ装置のスレーブ又はマスターＳＭＢｕｓポートに連結される。アウト・オブ・バンド（ＯＯＢ）のＳＭＢｕｓインターフェースは、ＮＶＭｅ管理インターフェース（ＮＭＶｅ−ＭＩ）のような管理プロトコルを具現するために使用される。ＳＳＤコントローラとＦＰＧＡとの間の内部ＳＭＢｕｓインターフェースは、この二つの装置間の通信のために排他的に使用される。ＳＳＤコントローラのファームウェアは、ＦＰＧＡ装置にユニーク識別をクエリする。このインターフェースは、ＢＭＣ又はホストからのガイダンス下でＳＳＤコントローラによってＦＰＧＡ装置の構成、状態、及び監視のために使用される。ホスト又はＢＭＣがＮＶＭｅ−ＭＩのような管理プロトコルを使用してＦＰＧＡの識別情報をＳＳＤコントローラにクエリすると、ＳＳＤコントローラがＦＰＧＡから必要な情報をフェッチ（ｆｅｔｃｈｉｎｇ）して、ホスト又はＢＭＣに返す。
【００３４】
ＳＳＤコントローラは、メッセージベースのプロトコルを使用してＦＰＧＡ装置と通信する。ＳＳＤコントローラは、多様なコマンドメッセージをＦＰＧＡのスレーブＳＭＢｕｓポートに書き込んで応答の可用性をポーリング（ｐｏｌｌｉｎｇ）する。ＦＰＧＡ応答メッセージが準備されると、ＳＳＤコントローラは、応答メッセージを読み出す。ＦＰＧＡがＳＳＤコントローラの注意を必要とする場合、ＦＰＧＡはＳＳＤコントローラによって周期的にポーリングされるフラグを設定する。
【００３５】
ＳＳＤのファームウェアに収容された小さな変更は、上述のハードウェアの設定をサポートする。ＰＣＩｅ装置の初期化完了は、多機能装置内のエンベデッドオペレーティングシステム（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ：Ｏ／Ｓ）環境で、前もって発生する。その後、多機能装置は、ｘ８６ホストのコンテキストで再び初期化される。
【００３６】
ＰＣＩｅ初期化段階の一部として、ソフトウェアの構成要素（ＳＳＤ装置のファームウェア）が多機能装置に対するローカル及び連結された装置をクエリして発見する。ＮＶＭｅ  ＳＳＤ及びＦＰＧＡの構成要素の初期化が完了すると、ソフトウェアの構成要素は、ユニークな（固有の）シリアル番号及び製品の部品番号を提供する装置の詳細に対するＦＰＧＡをクエリする。このような詳細は、メモリマップされたＮＶＭｅ  ＢＡＲ（Ｂａｓｅ  Ａｄｄｒｅｓｓ  Ｒｅｇｉｓｔｅｒ）空間のプライベートオフセットでＳＳＤレジスタに書き込まれる。書き込みウィンドウは、リセット後にＰＣＩ構成アクセスが行われてこのアップデートを受け入れる前に、ＳＳＤのファームウェアによって使用可能になる。これはアップデートをＯＳの制御内で維持する。
【００３７】
ＮＶＭｅ仕様は、識別コントローラ及びＮａｍｅｓｐａｃｅコマンドを定義してＮＶＭｅ  ＳＳＤの機能を探し出す。これらの機能の一部として、コントローラは、アクセラレーション（加速）機能を知らせるために、次を定義する。
【００３８】
＜識別コントローラのデータ構造＞
【００３９】
【表１】
2020047277.tif 000003
【００４０】
＜拡張された特徴＞
【００４１】
【表２】
2020047277.tif 000004
【００４２】
【表３】
2020047277.tif 000005
【００４３】
＜ＳＳＤ装置のペアリングを知らせるためのＦＰＧＡへの変更＞
【００４４】
ＮＶＭｅ  ＳＳＤと同様に、ＦＰＧＡは、エンベデッドＯ／Ｓの構成要素によって固有のＳＳＤの詳細からプログラミングされる。これらの詳細は、インターフェースを介してｘ８６ホストソフトウェアの構成要素に使用される。
【００４５】
＜ペアリングのためのエンベデッドＯ／Ｓの構成要素＞
【００４６】
ソフトウェアの構成要素は、（ＳＳＤのファームウェアも）多機能装置にローカル及び連結された装置をクエリして探し出すことができる。ＮＶＭｅ  ＳＳＤ及びＦＰＧＡの構成要素の初期化が完了すると、ソフトウェアの構成要素は、固有のシリアル番号及び製品の部品番号を提供する装置の詳細をＦＰＧＡにクエリする。これらの詳細は、メモリマップされたＮＶＭｅ  ＢＡＲ空間のプライベートオフセットでＳＳＤレジスタに書き込まれる。同様に、ソフトウェアの構成要素は、固有のＳＳＤの詳細事項でＦＰＧＡにプログラミングし、互いにペアリングされるようにする。
【００４７】
ＳＭＢｕｓ上の電源ＯＮ／ＲＥＳＥＴ時のサンプルリスト
１．ＦＰＧＡがＮＶＭｅ（読み取り識別コントローラ）をＳＳＤに発行
２．ＳＳＤが識別データに応答
３．ＦＰＧＡがシリアル番号、モデル番号の詳細を格納
４．ＦＰＧＡがＮＶＭｅを発行（識別データ設定−拡張された特徴のオフセット−プロバイダーの詳細３０７２〜４０９５バイト）することは以下を含む。
演算タイプ：ＦＰＧＡ、カウント、独占／共有
演算タイプ：ＣＰＵ−ＡＲＭ、カウント、独占／共有
５．ＦＰＧＡがＮＶＭｅを発行（識別データ設定）
６．ＦＰＧＡがＮＶＭｅを発行（ＬｏｇＰａｇｅ−ｃｏｍｐｕｔｅ＿ＦＰＧＡ設定）することは以下を含む。
シリアル番号、モデル番号、
ハードウェア機能（ＬＵＴｓ、ＢＲＡＭ、ＵＲＡＭ、Ｒｅｇ、ＤＳＰ、ＤＲＡＭ）
７．ＳＳＤはＮＶＭｅを確認する（ＬｏｇＰａｇｅ−ｃｏｍｐｕｔｅ＿ＦＰＧＡを設定）
【００４８】
ペアリング及び他の特徴に対する追加のクエリのために、ｘ８６ホストソフトウェアと構成要素との間にプライベートインターフェースが存在する。
【００４９】
＜新しいペアリングを収容するための管理可能性ソフトウェアの変更＞
【００５０】
ＢＭＣは、一般的にＳＭＢｕｓ上のＳＳＤとインターフェースする。このインターフェースは、ＦＰＧＡのペアを収容するように拡張され、更に有用性及び管理可能性性のための特性及びその他の属性を収容する。
【００５１】
サンプルの流れは、次の通りである。
１．ＢＭＣがＮＶＭｅをＳＳＤに発行（ＬｏｇＰａｇｅ  Ｔｅｍｐ２を設定）
２．ＳＳＤが読み取り温度センサーを含むＦＰＧＡを要請
３．ＦＰＧＡが、温度データをリターン（ｒｅｔｕｒｎ）
４．ＳＳＤがＬｏｇＰａｇｅデータをリターン
５．ＢＭＣがＮＶＭｅをＳＳＤに発行（ＬｏｇＰａｇｅ  ＦＰＧＡ  Ｕｔｉｌｉｚａｔｉｏｎ読み取り）
６．ＳＳＤがＬｏｇＰａｇｅ  ＦＰＧＡ  Ｕｔｉｌｉｚａｔｉｏｎを含むＦＰＧＡの要請
７．ＦＰＧＡがＵｔｉｌｉｚａｔｉｏｎデータをリターン
８．ＳＳＤがＬｏｇＰａｇｅデータをリターン
【００５２】
＜ペアリングのためのｘ８６ホストソフトウェアの構成要素＞
【００５３】
このソフトウェア構成要素は、ライブラリとして利用可能であり、多機能装置に共存するＮＶＭｅ  ＳＳＤとＦＰＧＡとの間のペアリングの詳細を提供する。この構成要素は、ｘ８６  ＳＤ  Ａｃｃｅｌランタイムドライバ及びライブラリと共に動作してペアリングの詳細を提供する。
【００５４】
現在のＯｐｅｎＣＬインターフェースは、装置のＢＤＦレベルの詳細を公開していないが、オフセット０から始まる数字によって論理的抽象化を提供する。インターフェースは、プロバイダーによって内部的に変更され、ハードウェアで公開された低いレベルの詳細をクエリし、そうすることで、コンピュータ側に対するペアリングの詳細も提供される。ここでは、プロバイダーがインターフェースの変更を担当する。
【００５５】
＜ペアリングをクエリするためのコマンドラインツール＞
【００５６】
コマンドラインツールは、オプションなしで遂行されると、下記表４に記載されたような詳細を提供する。二つのＩ／Ｏスタック及びプログラム可能な装置の参照は、詳細事項に反映される。ＮＶＭｅ  ＳＳＤの／ｄｅｖ／ｎｖｍｅ２は、インデックス０のアクセラレーション装置（アクセラレーション機又はアクセラレータ）とペアリングされる。サーバに示されたように、ＳＳＤ装置の順序がＦＰＧＡアクセラレーション装置ほどには増加しないことに留意しなければならない。
【００５７】
＜コマンドラインツール出力＞
【００５８】
【表４】
2020047277.tif 000006
【００５９】
コマンドラインツールは、システム管理者のように、プライベートフィールドに、より重要な追加の詳細を示す冗長なオプションをサポートすることもできる。これらの追加の詳細には、シリアル番号、モデル、ファームウェアの詳細、ネーム空間、及びパーティションマッピング情報のような装置クラスを介して固有のＮＶＭｅ  ＳＳＤの属性を含む。固有の詳細なセットは、装置が連結されたスロットを識別するＰＣＩｅ装置チェーンを含む。下記表５は、このような情報の例を示す。
【００６０】
＜コマンドラインツールの出力＞
【００６１】
【表５】
2020047277.tif 000007
【００６２】
装置「／ｄｅｖ／ｎｖｍｅ０」の場合、ＳＳＤ／ＦＰＧＡ装置は、「ｎｕｍａ  ｎｏｄｅ  ０」ＣＰＵにも近いスロット番号１に連結される。この情報は、ＣＰＵ親和性のためのアプリケーションレベルだけでなく、フィールドレベルでも使用される。この情報は、深くネストされた（ｎｅｓｔｅｄ）ＰＣＩｅスイッチファブリックに含まれる場合、装置の階層構造を理解するために使用され、例えば、システム管理者のための装置の問題を切り分けることもできる。
【００６３】
＜利点＞
【００６４】
ＳＳＤ／ＦＰＧＡ装置のペアリングソリューションを有することは、これらの装置をより有用に使用するために有益である。短期的に、このペアリングソリューションは、識別のギャップを扱う。長期的に、このペアリングソリューションは、アクセラレーション装置をこれからどのようにするかの決定を下すのに役立つ。このソリューションは、ＧＰＵ、Ａｄｖａｎｃｅｄ  ＲＩＳＣ（Ｒｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ）Ｍａｃｈｉｎｅ（ＡＲＭ）のようなエンベデッドＣＰＵｓ、ＲＩＳＣ−Ｖ、ＴＰＵ（Ｔｅｎｓｏｒ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、及び特定のハードウェアベースの加速機、ＮＶＭｅ仕様拡張、又はいくつかの他のメカニズムのような他の加速機のタイプのために使用される。
【００６５】
図１は、本発明の一実施形態によるストレージ装置とコプロセッサのペアリングをサポートするために設計されたマシンを示す図である。図１に、マシン１０５を図示する。マシン１０５は、プロセッサ１１０を含む。プロセッサ１１０は、任意の多様なプロセッサである。例えば、Ｉｎｔｅｌ  Ｘｅｏｎ（登録商標）、Ｃｅｌｅｒｏｎ（登録商標）、Ｉｔａｎｉｕｍ（登録商標）、又はＡｔｏｍ（登録商標）プロセッサ、ＡＭＤ  Ｏｐｔｅｒｏｎ（登録商標）プロセッサ、ＡＲＭ（登録商標）プロセッサである。図１は、マシン１０５内の一つのプロセッサ１１０を図示するが、マシン１０５は、任意の数のプロセッサを含むことができ、そのプロセッサのそれぞれは、シングル（単一）コア又はマルチコアプロセッサであり、任意の望ましい組み合わせで混合され得る。
【００６６】
マシン１０５は、メモリ１１５を含む。メモリ１１５は、ＭＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などのフラッシュメモリ、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＰＲＡＭ（Ｐｅｒｓｉｓｔｅｎｔ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、又はＮＶＲＡＭ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のような任意の多様なメモリである。メモリ１１５は、異なるメモリタイプの任意の所望の組み合わせであり得る。メモリ１１５は、メモリコントローラ１２０によって管理される。
【００６７】
マシン１０５は、デバイス（装置）ドライバ（図示せず）によって制御可能なストレージ装置（１２５−１、１２５−２）を含む。ストレージ装置（１２５−１、１２５−２）は、任意の望みの形態のストレージ装置である。例として、ストレージ装置（１２５−１、１２５−２）は、不揮発性メモリエクスプレス（ＮＶＭｅ）ＳＳＤ、ハードディスクドライブ、又は任意の他の所望の形態のストレージ装置のようなＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）である。なお、ストレージ装置（１２５−１、１２５−２）は、異なるタイプ、製造業者、及び／又はモデルであり得る。例えば、ストレージ装置１２５−１はＳＳＤであり得、ストレージ装置１２５−２はハードディスクドライブであり得る。
【００６８】
マシン１０５は、コプロセッサ（１３０−１〜１３０−２）も含む。コプロセッサ（１３０−１〜１３０−２）は、ストレージ装置（１２５−１、１２５−２）をサポートする任意の必要な機能を提供する。例として、コプロセッサ１２５−１は、データアクセラレーション、データ重複排除、データインテグリティ（ｉｎｔｅｇｒｉｔｙ）、データの暗号化、データ圧縮、及び／又はイレイジャーコーディング（Ｅｒａｓｕｒｅ  Ｃｏｄｉｎｇ）のような機能を提供する。コプロセッサ（１３０−１〜１３０−２）のそれぞれは一つのそのような機能を提供したり、コプロセッサ（１３０−１〜１３０−２）のそれぞれはこれらの機能を多数提供したりする。コプロセッサ（１３０−１〜１３０−２）は、任意の所望の構成要素を使用して具現される。
【００６９】
図２は、図１のコプロセッサの異なる形態を示す図であり、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）２０５、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ−Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）２１０、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２１５、ＴＰＵ（Ｔｅｎｓｏｒ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２２０、イレイジャーコーディングコントローラ２２５、及びスモール（ｓｍａｌｌ）プロセッサコア２３０を含むが、本発明の実施形態は、コプロセッサ（１３０−１〜１３０−２）の他の具現も含むことができる。
【００７０】
図１を再び参照すると、図１は、各ストレージ装置に対する一つのコプロセッサを有する二つのストレージ装置を図示するが、本発明の実施形態は、所望により、任意の数のストレージ装置及び他のタイプの各ストレージ装置に対する任意の数のコプロセッサを含むことができる。なお、一部の実施形態で、いくつかのストレージ装置はコプロセッサを有し、他のストレージ装置はコプロセッサを有さない。しかし、唯一つのストレージ装置及び一つのコプロセッサのように、ストレージ装置とコプロセッサとのペアリングに対する心配はないため、本発明の殆どの実施形態は、対応するコプロセッサを有する少なくとも二つのストレージ装置を含む。以下では、「ペアリング」という用語は、ペアリングされた一つの装置が他の装置をサポートする装置を称し、ペアリングを二つの装置にのみ限定するものと理解してはならない。例として、ストレージ装置にＦＰＧＡ及びＧＰＵの両方を含めると、三つの装置の全てが「ペアリングされた（ｐａｉｒｅｄ）」と見なされる。（或いは、ＦＰＧＡ及びＧＰＵは、共通のストレージ装置とは別途にペアリングされたものとして考慮され、必要な場合、ＦＰＧＡとＧＰＵとの間の関連性が間接的に決定される。）
【００７１】
図１は、（スタンドアロン（ｓｔａｎｄａｌｏｎｅ）又はラック（ｒａｃｋ）サーバであり得る）サーバとしてマシン１０５を図示するが、本発明の実施形態は、任意の所望のタイプのマシン１０５を制限なしに含む。例として、マシン１０５は、デスクトップ、ラップトップコンピュータ、又は本発明の実施形態から恩恵を得ることができる任意の他のマシンに置き換えられる。マシン１０５は、特殊なポータブルコンピューティングマシン、タブレットコンピュータ、スマートフォン、及び他のコンピューティングマシンを含む。
【００７２】
図３は、図１のマシンの追加的な詳細を示す図である。図３において、一般的に、マシン１０５は、装置（マシン１０５）の構成要素の動作を調整するために使用可能なメモリコントローラ１２０及びクロック３０５を含む一つ以上のプロセッサ１１０を含む。プロセッサ１１０は、例として、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、又は他の状態保存媒体を含むメモリ１１５に連結される。プロセッサ１１０は、ストレージ装置１２５と、例えば、イーサネット（登録商標）（Ｅｔｈｅｒｎｅｔ（登録商標））コネクタ又はワイヤレスコネクタであるネットワークコネクタ３１０に連結される。プロセッサ１１０は、バス３１５に連結され、バス３１５には、他の構成要素の中の、ユーザーインターフェース３２０、及び入力／出力エンジン３２５を使用して管理される入力／出力インターフェースポートが実装される。
【００７３】
図４は、図１の装置のオペレーティングシステムを示す図である。従来のシステムにおいて、オペレーティングシステム４０５は、仮想識別子（Ｉｄｅｎｔｉｆｉｅｒ：ＩＤ）（４１０、４１５、４２０、及び４２５）を使用してＳＳＤ（１２５−１、１２５−２）及びコプロセッサ（１３０−１〜１３０−２）を識別する。（以降、本明細書の説明はコプロセッサを含むストレージ装置の特定の例としてＳＳＤに焦点を合わせるが、本発明の実施形態は、変わらずＳＳＤ以外のタイプのストレージ装置に拡張され得る。）仮想ＩＤ（４１０、４１５、４２０、及び４２５）は、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）エニュメレーター（ｅｎｕｍｅｒａｔｏｒ）のようなコントローラによって、装置の列挙（ｅｎｕｍｅｒａｔｉｏｎ）中に割り当てられたり、図１のマシン１０５内の仮想マシン（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ：ＶＭ）を「構成」したりすることを含む。（又はその両方）いずれにせよ、オペレーティングシステム４０５は、仮想ＩＤ（４１０、４１５、４２０、及び４２５）の結果として提供された情報のみを有する。オペレーティングシステム４０５は、ＳＳＤ１２５−１及びＳＳＤ１２５−２がＳＳＤであるという事実によって、割り当てられた仮想ＩＤ４１０であるＳＳＤ１２５−１がデータストレージ装置４３０を含み、割り当てられた仮想ＩＤ４１５であるＳＳＤ１２５−２がデータストレージ装置４３５を含むことを知る。しかし、オペレーティングシステム４０５は、仮想ＩＤ４２０を割り当てられたコプロセッサ１３０−１が仮想ＩＤ４１０を割り当てられたＳＳＤ１２５−１の動作をサポートすること、又は仮想ＩＤ４２５を割り当てられたコプロセッサ１３０−２がＳＳＤ１２５−２の動作をサポートすることを知らない可能性がある。
【００７４】
図５は、ペアリングに関する情報を格納するように備えられた図１の装置を示す図である。図５において、装置（１２５−１、１２５−２、１３０−１、及び１３０−２）は、ペアリングに関する多様な情報ピース（ｐｉｅｃｅ）のためのストレージを含む。従って、ＳＳＤ１２５−１は、それ自身及びペアリングされたコプロセッサ（コプロセッサ１３０−１）に関する情報のためのストレージ装置（５０５−１、５０５−２）を含み、ＳＳＤ１２５−２は、それ自身及びペアリングされたコプロセッサ（コプロセッサ１３０−２）に関する情報のためのストレージ（５１５−１、５１５−２）を含み、コプロセッサ１３０−１は、それ自身及びペアリングされたＳＳＤ（ＳＳＤ１２５−１）に関する情報のためのストレージ（５１５−１、５１５−２）を含み、コプロセッサ１３０−２は、それ自身及びペアリングされたＳＳＤ（ＳＳＤ１２５−２）に関する情報のためのストレージ（５２０−１、５２０−２）を含む。一部の実施形態で、ストレージ装置（５０５−１、５０５−２、５１０−１、５１０−２、５１５−１、５１５−２、５２０−１、及び５２０−２）に格納された情報は、ＧＵＩＤ（Ｇｌｏｂａｌｌｙ  Ｕｎｉｑｕｅ  ＩＤ）のシリアル番号のように、各装置に固有の情報を含む。他の実施形態で、ストレージ装置（５０５−１、５０５−２、５１０−１、５１０−２、５１５−１、５１５−２、５２０−１、５２０−２）は、固有の又は略確実に固有のペアリングされた装置間の合意された情報を格納する。例として、アンセキュア（ｕｎｓｅｃｕｒｅ）連結を介して、二つのパーティーが二つのパーティー間の通信セキュリティに使用される共有シークレットに同意するアルゴリズムがある。即ち、ＳＳＤ１２５−１及びコプロセッサ１３０−１は、合意された情報として使用される共有されたシークレット（ｓｅｃｒｅｔ）に同意するこれらのアルゴリズムを使用することができる。或いは、ＳＳＤ１２５−１とコプロセッサ１３０−１とは、物理的にペアリングされるときに、製造時のデータの共通ピースが割り当てられる。ペアリングされた装置が他の装置によって使用されない一部の固有の情報を使用する場合、装置（１２５−１、１２５−２、１３０−１、及び１３０−２）は、ペアリング中の各装置に関する情報を格納する代わりに、少なくともペアリングの目的のために固有の情報を格納する必要のみが有り得る。
【００７５】
オペレーティングシステム４０５が個々の装置にそれ自身に関する情報をクエリするとき、各装置は、ペアリングに関する情報をリターンする。従って、例として、ＳＳＤ１２５−１は、それ自身の情報をストレージ装置５０５−１に格納し、コプロセッサ１３０−１に関する情報をストレージ装置５０５−２に格納する。同様に、コプロセッサ１３０−１は、それ自身の情報をストレージ５１５−２に格納し、ＳＳＤ１２５−１に関する情報をストレージ５１５−１に格納する。次に、オペレーティングシステム４０５は、ストレージ装置（５０５−１〜５０５−２、５１５−１〜５１５−２）からの情報を利用してＳＳＤ１２５−１とコプロセッサ１３０−１とがペアリングされたか否かを判定する。これらの情報は、例として、ＧＵＩＤ、又は計算された共有シークレットのように固有のものと期待されるその他の情報や多様な装置のシリアル番号である。例として、二つ（又はそれ以上）の装置のそれぞれがそれ自身のシリアル番号及びそれらのペアのシリアル番号を提供し、シリアル番号が期待通り対応する場合、オペレーティングシステム４０５は、二つの装置がペアリングされることを考慮することができる。同様に、二つ（又はそれ以上）の装置のそれぞれが固有の識別子（又は固有のものと予想される識別子）を提供すると、装置の全てがその識別子を提供するという事実は、装置がペアリングされたものとみなされるべきであることを示すことになる。このような方法で、オペレーティングシステム４０５は、適切に仮想ＩＤ（４１０、４１５、４２０、及び４２５）のペアリングを生成することができる。
【００７６】
図６は、図１のＳＳＤ１２５−１及びコプロセッサ（１３０−１）をクエリして装置をペアリングする図５のオペレーティングシステム４０５を示す図である。図６で、オペレーティングシステム４０５は、装置の詳細を要請するＳＳＤ１２５−１にクエリ６０５を伝送する。既存のオペレーティングシステムは、起動の一部として、装置の特性及び特徴を決定するために装置をクエリする。ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）も、どの装置が連結されているかを調べるためにクエリすることがある。応答６１０で新しい点は、ＳＳＤ１２５−１がそれ自体に関する情報及びコプロセッサ１３０−１に関する情報を含むことである。同様に、オペレーティングシステム４０５は、その装置の詳細を要請するコプロセッサ１３０−１にクエリ６１５を伝送する。即ち、コプロセッサ（１３０−１）は、それ自身に関する情報やＳＳＤ１２５−１に関する情報を含む応答６２０を伝送する。オペレーティングシステム４０５が応答（６１０及び６２０）を受信すると、オペレーティングシステム４０５は、その情報を使用して動作６２５に示すように、ＳＳＤ１２５−１とコプロセッサ１３０−１とがペアリングされたか否かを判定する。その後、オペレーティングシステム４０５は、このペアリング情報を格納する。
【００７７】
オペレーティングシステム４０５は、どのストレージ装置がどのコプロセッサとペアリングされているかを知ると、オペレーティングシステム４０５は、この情報をアプリケーション及び／又はユーザーに利用可能にする。例として、オペレーティングシステム４０５は、アプリケーションが情報をペアリングするために、オペレーティングシステム４０５をクエリするために使用されるＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）を提供する。例として、アプリケーションは、ＳＳＤ１２５−１に対してＡＰＩを介して当該装置とペアリングされたＳＳＤ１２５−１を要請するクエリを伝送する。次に、オペレーティングシステム４０５は、コプロセッサ１３０−１がＳＳＤ１２５−１とペアリングされたとの情報で応答する。他のアプリケーションは、データの特定のピースに関連付けられたペアリングされた装置に関する情報を要請する。例として、ストレージ装置がそのデータを格納し、他の装置がそのストレージ装置とペアリングされたという特定のファイル（又はキーバリューオブジェクト（ｋｅｙ  ｖａｌｕｅ  ｏｂｊｅｃｔ）、又はストレージ装置上の他の形式で格納されるデータ）が与えられる。その後、オペレーティングシステム４０５は、どのストレージ装置がそのデータを格納するかを決定してから、そのストレージ装置及びペアリングに関する情報を返す。（勿論、アプリケーションは、二つのＡＰＩのクエリを伝送することができる。即ち、一つは、ターゲットデータを格納する特定のストレージ装置を決定し、もう一つは、当該ストレージ装置とペアリングされる装置を決定する。二つのクエリを一つに結合することは単純化されることである。）
【００７８】
アプリケーションが、どの装置がペアリングされているかを、ＡＰＩを介して知ると、アプリケーションはそれに応じて当該情報を使用する。例として、図１のコプロセッサ（１３０−１、１３０−２）は、データアクセラレーションサービスを提供する二つのＦＰＧＡである。アプリケーションがターゲットデータを格納するストレージ装置を知ると、アプリケーションはターゲットデータのデータアクセラレーションサービスを要請する当該ストレージ装置とペアリングされたＦＰＧＡに要請を伝送する。同じ原理が、図１のコプロセッサ（１３０−１、１３０−２）によって提供される任意の他の機能に適用される。即ち、データアクセラレーションは機能の例としてのみ使用される。
【００７９】
この時点で、一つの疑問点が残る。即ち、ペアリングで装置を識別する情報を装置がどのように認識するか？であり、情報が製造時にペアリングされた装置によって共有される固有のデータとして割り当てられる場合、その答えは明らかである。但し、装置が、シリアル番号又は個別に各装置に固有の他のデータを使用してそれらのペアリングの識別を助ける場合、答えはそれほど容易ではない。図７〜図９は、装置がこの情報を得る方法を示す。
【００８０】
図７は、本発明の一実施形態における単一のフォームファクタとしての図１のＳＳＤ１２５−１及びコプロセッサ１３０−１を示す図である。図７において、ＳＳＤ１２５−１とコプロセッサ１３０−１とは、装置を連結するハードウェアインターフェースを使用して通信する。例として、このハードウェアインターフェースは、ＳＳＤ１２５−１とコプロセッサ１３０−１とを連結するＳＭＢｕｓ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｂｕｓ）である。ＳＭＢｕｓが使用された場合、装置ＳＳＤ１２５−１及びコプロセッサ１３０−１のどちらかがマスター装置であり、他の一つは、スレーブ装置であるか又は両方がマルチマスタバス上のマスター装置である。例として、いくつかの実施形態で、ＳＳＤ１２５−１はＳＭＢｕｓ７０５のマスターであり、コプロセッサ１３０−１はスレーブである。
【００８１】
図示したように、ＳＳＤ１２５−１は、アウト・オブ・バンド（ｏｕｔ−ｏｆ−ｂａｎｄ）連結及びイン・バンド（ｉｎ−ｂａｎｄ）連結を介して図１のマシン１０５に連結される。例として、イン・バンド連結７１０はＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）連結を介して伝送されたメッセージを含む一方、アウト・オブ・バンド連結７１５は、例として（ＳＳＤ１２５−１がスレーブであり、ＢＭＣ（Ｂｏａｒｄ  Ｍａｎａｇｅｍｅｎｔ  Ｃｏｎｔｒｏｌｌｅｒ）がマスターであるか、ＳＳＤ１２５−１及びＢＭＣの両方が多重マスターバス上のマスターである）他のＳＭＢｕｓ連結である。一般的に、イン・バンド連結７１０はＳＳＤ１２５−１に発行された読み書きの要請のような従来の要請のために使用されてコプロセッサ１３０−１の機能を使用する反面、アウト・オブ・バンド連結７１５は制御タイプの要請のために使用される。例えば、ＳＳＤ１２５−１及び／又はコプロセッサ１３０−１の現在の動作温度に対するクエリを含む。イン・バンド連結７１０がコプロセッサ（１３０−１）と通信するために使用される場合、ＳＳＤ１２５−１は、コプロセッサ１３０−１へのメッセージに依存するパススルー（ｐａｓｓ−ｔｈｒｏｕｇｈ）装置として動作する。或いは、ＳＳＤ１２５−１は、図１のマシン１０５から受信された要請をコプロセッサ（１３０−１）への伝送のための別の形式に変換するいくつかのトランスレータ（ｔｒａｎｓｌａｔｏｒ）機能で動作する。
【００８２】
図８は、図７とは対照的に、本発明の他の実施形態における単一のフォームファクタとしての図１のＳＳＤ１２５−１及びコプロセッサ１３０−１を示す図である。図８に示した実施形態では、コプロセッサ１３０−１は、ＳＳＤ１２５−１ではなく、イン・バンド連結７１０に直接連結される。本実施形態で、コプロセッサ１３０−１は、ＳＳＤ１２５−１のために意図された要請をＳＳＤ１２５−１へのメッセージに依存するパススルー装置として動作する。或いは、コプロセッサ１３０−１は、図１のマシン１０５から受信された要求をＳＳＤ１２５−１への伝送のための別の形式に変換するいくつかのトランスレータ機能で動作する。他の全ての側面は、ＳＳＤ１２５−１及びコプロセッサ１３０−１が図７でのようにＳＳＤ１２５−１及びコプロセッサ１３０−１と同様に動作する。
【００８３】
一方、図７及び図８は、ＳＳＤ１２５−１及びコプロセッサ１３０−１の両方が同じフォームファクタで販売される可能性を示し、ＳＳＤ１２５−１及びコプロセッサ１３０−１は、装置が図４のオペレーティングシステム４０５とペアリング情報を共有するために、二つのペアリングされた装置間の通信を許容するハードウェアインターフェース５０５のいくつかの形態がある場合、別途の構成要素として販売され得る。
【００８４】
図９は、本発明の一実施形態によるペアリングを構築する図１のＳＳＤ１２５−１及びコプロセッサ１３０−１を示す図である。ＳＳＤ１２５−１及びコプロセッサ１３０−１は、図７及び図８のハードウェアインターフェース７０５のようなハードウェアインターフェースを共有する場合に、図９を使用する。図９において、ＳＳＤ１２５−１は、コプロセッサ１２５−１から装置情報に対する問い合わせを開始する。ＳＳＤ１２５−１は、識別装置９０５をコプロセッサ１３０−１に伝送する（このコマンド及び図９及び図１０の他の全てのコマンドは、ＮＶＭｅコマンドであるか又は他のプロトコルを使用するコマンドである）。コプロセッサ１３０−１は、ＳＳＤ１２５−１とコプロセッサ１３０−１とのペアリングに関連する固有の情報を含む識別応答９１０で応答する。この情報は、例として、ＧＵＩＤ、或いは製造業者のモデル番号及びコプロセッサ１３０−１のシリアル番号を含む。識別応答９１０を受信すると、ＳＳＤ１２５−１は、コプロセッサ１３０−１の情報を格納する。例として、図５のストレージ５０２−２に格納する。その後、ＳＳＤ１２５−１は、ＳＳＤ１２５−１の固有情報、例として、ＧＵＩＤ、或いはＳＳＤ１２５−１の製造業者のモデル番号及びシリアル番号を含む設定ペアリングデータ９１５を伝送する。その後、コプロセッサ１３０−１は、ＳＳＤ１２５−１の情報を格納する。例として、図５のストレージ５１５−１に格納する。次に、コプロセッサ１３０−１は、設定ペアリングデータ（Ｓｅｔ  Ｐａｉｒｉｎｇ  Ｄａｔａ）コマンドのペアリングデータが受信されたことをＳＳＤ１２５−１に通知するために設定応答９２０を伝送する。最後に、ＳＳＤ１２５−１は、コプロセッサ１３０−１が知りたい任意の他のデータをコプロセッサ１３０−１に知らせるために、設定アドバンスドデータ（Ｓｅｔ  Ａｄｖａｎｃｅｄ  Ｄａｔａ）９２５を伝送し、コプロセッサ１３０−１は、識別応答（Ｓｅｔ  Ｒｅｓｐｏｎｓｅ）９３０で応答する。
【００８５】
図１０は、本発明の他の実施形態によるペアリングを構築する図１のＳＳＤ１２５−１及びコプロセッサ１３０−１を示す図である。コプロセッサ１３０−１がＳＳＤ１２５−１ではなく情報の交換を開始することを除いて、図１０は図９に類似する。図１０において、コプロセッサ１３０−１は、読み取り識別データ１００５をＳＳＤ１２５−１に伝送する。ＳＳＤ１２５−１は、コプロセッサ１３０−１とＳＳＤ１２５−１とのペアリングに関する固有の情報を含む読み取り応答１０１０で応答する。この情報は、例として、ＧＵＩＤ、或いは製造業者のモデル番号及びＳＳＤ１２５−１のシリアル番号を含む。読み取り応答１０１０を受信すると、コプロセッサ１３０−１は、例えばＳＳＤ１２５−１の情報を格納する。例として、図５のストレージ装置５０５−２に格納する。次に、コプロセッサ１３０−１は、コプロセッサ１３０−１の固有の情報を含む設定識別データ１０１５を伝送する。例として、ＧＵＩＤ、或いはコプロセッサ１３０−１の製造業者のモデル番号及びシリアル番号を含む設定識別データ１０１５を伝送する。次に、ＳＳＤ１２５−１は、例として、図５のストレージ５１５−１にコプロセッサ１３０−１の情報を格納する。次に、ＳＳＤ１２５−１は、設定識別データコマンドのペアリングデータが受信されたことをコプロセッサ１３０−１に通知するために、設定応答１０２０を伝送する。最後に、コプロセッサ１３０−１は、ＳＳＤ１２５−１が知りたい任意の他のデータをＳＳＤ１２５−１に通知するために、設定ログページ（Ｓｅｔ  Ｌｏｇ  Ｐａｇｅ）１０２５を伝送し、ＳＳＤ１２５−１は設定応答１０３０で応答する。
【００８６】
図１１は、本発明の一実施形態による図１のＳＳＤ１２５−１及びコプロセッサ１３０−１を含む第１トポロジーを示す図である。図１１〜図１４は、共にペンディング（ｐｅｎｄｉｎｇ）された２０１８年１０月１２日に出願した仮出願番号１６／２０７，０８０の利益を主張した２０１８年１１月３０日に出願されたＵＳ特許出願番号１６／２２６，６２９から取得され、全ての出願は全ての目的のために本明細書で結合して参照される。しかし、共にペンディングされたＵＳ特許出願番号１６／２６０，０８７はイレイジャーコーディングを含むＰＣＩｅスイッチの全体的な組み合わせが考慮される反面、本明細書は、ＳＳＤ及びコプロセッサの構造と共に更に考慮される。
【００８７】
図１１は、図１のマシン１０５の分離された構成要素として具現されるＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を有するＰＣＩｅスイッチを示す。即ち、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を有するＰＣＩｅスイッチは、図１のプロセッサ１１０、ストレージ装置１２５−１、又はコプロセッサ１３０−１のような任意の他の構成要素とは別途に製造販売される。
【００８８】
Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を有するＰＣＩｅスイッチは、ストレージ装置１２５−１に連結される。図１１において、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を有するＰＣＩｅスイッチは、イレイジャーコーディングをサポートしない可能性がある一つのストレージ装置にのみ連結されるものとして図示する。即ち、イレイジャーコーディングは、ストライピング（ｓｔｒｉｐｉｎｇ）、チャンキング（ｃｈｕｎｋｉｎｇ）、グルーピング（ｇｒｏｕｐｉｎｇ）、及びパリティ（ｐａｒｉｔｙ）又はコード情報の使用を遂行するために、少なくとも二つのストレージ装置又はストレージ装置の少なくとも二つの部分を要求する。しかし、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を有する単一のストレージ装置ＰＣＩｅスイッチもいくつかの利点を提供する。例として、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を有するＰＣＩｅスイッチは、ストレージ装置１２５−１によってサービスがネイティブに（ｎａｔｉｖｅｌｙ）提供されない場合に、ストレージ装置１２５−１でエラー訂正コード（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）を使用するか、或いはストレージ装置１２５−１に格納されたデータを暗号化するようにサポートする。
【００８９】
ストレージ装置１２５−１は、図１のコプロセッサ１３０−１の例であるＦＰＧＡ２０５に連結される（図１１〜図１４に関する説明の残りの部分について、ＦＰＧＡ２０５に対する任意の参照は、図２に示した任意の代替のコプロセッサ、或いは、より一般的には、図１のコプロセッサ１３０−１への参照を含むものと理解される）。ＦＰＧＡ２０５は、アクセラレーションをサポートする。即ち、データを処理して廃棄しなければならない状況が有る。処理を遂行するために全てのデータを図１のプロセッサ１１０にロードすることには多くの費用と時間がかかる。即ち、計算は、データの近くでより簡単に行われる。ＦＰＧＡ２０５は、計算を遂行するために、図１のプロセッサ１１０にロードされるデータに対する必要性を回避しながら、ストレージ装置の近くで計算を遂行することをサポートする。即ち、この概念を「アクセラレーション（加速）」と称する。ＦＰＧＡベースのアクセラレーションは、２０１８年３月１３日に出願されたＵＳ特許仮出願番号６２／６４２，５６８、２０１８年３月１３日に出願されたＵＳ特許仮出願番号６２／６４１，２６７、及び２０１８年３月５日に出願されたＵＳ特許仮出願番号６２／６３８，９０４の利益を主張した２０１８年９月５日に出願されたＵＳ特許出願番号１６／１２２，８６５において更に説明され、以上の出願だけではなく、２０１８年９月５日に出願されたＵＳ特許出願番号１６／１２２，８６５の継続出願である２０１８年９月６日に出願されたＵＳ特許出願番号１６／１２４，１７９、２０１８年９月６日に出願されたＵＳ特許出願番号１６／１２４，１８２、及び２０１８年９月６日に出願されたＵＳ特許出願番号１６／１２４，１８３は、本明細書で共に参照されて結合される。アクセラレーションの目的は、データを図１のプロセッサ１１０にデータを伝送せずにそのデータを処理することから、図１１は、ストレージ装置１２５−１に近いＦＰＧＡ２０５を示す。しかし、図１１に示した特定の取り決めは必須ではない可能性があることに留意する。即ち、ＦＰＧＡ２０５は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を有するＰＣＩｅスイッチとストレージ装置１２５−１との間に位置することもできる。
【００９０】
データアクセラレーションとは別途に、ＦＰＧＡ２０５は、ストレージ装置１２５−１をサポートする他の機能を提供する。例えば、ＦＰＧＡ２０５は、ストレージ装置１２５−１に同じデータが格納される回数を減らすために、ストレージ装置１２５−１上にデータ重複排除機能を具現する。ＦＰＧＡ２０５は、特定のデータがストレージ装置１２５−１上に二回以上格納されたか否かを判定し、多様な論理ブロックアドレス（又はデータを識別するためにホストによって使用される他の情報）とストレージ装置上のデータが格納された場所との間の関連性を構築して追加のコピーを削除する。
【００９１】
或いは、ＦＰＧＡ２０５は、ストレージ装置１２５−１の動作でのエラーを通じたデータの損失、又はエンドツーエンド（ｅｎｄ−ｔｏ−ｅｎｄ）の保護のためにＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｏｒｒｅｃｔｉｏｎ）を使用するＴ１０ＤＩＦ（データインテグリティのフィールド）からの保護のために、エラー訂正コードを追加するようなストレージ装置１２５−１上のデータインテグリティの機能を具現する。このように、ＦＰＧＡ２０５は、ストレージ装置１２５−１上にデータを読み書きするにあたり、又は伝送中のデータに対してエラーが発生するときを検出したり、元のデータを復元したりする。ＦＰＧＡ２０５は、データのインテグリティの機能が提供されていることをホストが認識しないようにデータインテグリティの機能を具現する。即ち、ホストは、エラー訂正コードではないデータそのものだけを見る。
【００９２】
或いは、ＦＰＧＡ２０５は、ストレージ装置１２５−１上のデータにアクセスする権限がないパーティーからの保護のために、ストレージ装置１２５−１上にデータの暗号化機能を実装することができある。即ち、適切な暗号化キーが提供されていない場合、ＦＰＧＡ２０５からリターンされるデータは、要請者に意味がない可能性がある。ホストは、データを読み書きするときに使用される暗号化キーを提供する。又は、ＦＰＧＡ２０５は、データの暗号化及び復号化を自動的に遂行する。即ち、ＦＰＧＡ２０５は、暗号化キーを格納し（そして、ホストの代わりに暗号化キーを生成する）、誰がデータを要請するかに基づいて、使用する適切な暗号化キーを決定する。
【００９３】
或いは、ＦＰＧＡ２０５は、ストレージ装置１２５−１にデータを格納するのに必要な空間の量を減らすために、ストレージ装置１２５−１上にデータ圧縮機能を具現する。ストレージ装置１２５−１にデータを書き込むとき、ＦＰＧＡ２０５は、ホストによって提供されたデータをより少ない量のストレージ装置に圧縮する機能を具現し、圧縮されたデータを（ストレージ装置１２５−１からデータを読み取るとき、元のデータを復元するのに必要な任意の情報と共に）格納する。ストレージ装置１２５−１からデータを読み取るとき、ＦＰＧＡ２０５は、圧縮されたデータを（圧縮されたデータから元のデータを復元するのに必要な任意の情報と共に）読み取り、元のデータを復元するために圧縮を解除する。
【００９４】
データ重複排除、データインテグリティ、データの暗号化、及びデータ圧縮の任意の所望の具現が使用される。本発明の実施形態は、これらの機能のうちのいずれかの特定の具現に限定されない。
【００９５】
ＦＰＧＡ２０５は、必要に応じて、ストレージ装置１２５−１上の機能の任意の組み合わせを具現するすることもできる。例として、ＦＰＧＡ２０５は、データ圧縮及びデータのインテグリティの両方を具現する（データ圧縮は、エラーに対するデータの感度を増加させることから、ストレージ装置１２５−１に格納されたデータの単一エラーは、大量のデータを使用不可能にすることがある）。或いは、ＦＰＧＡ２０５は、（可能な限りデータのために少ないストレージを使用しながらデータを保護するために）データの暗号化及びデータ圧縮の両方を具現する。二つ以上の機能の別の組み合わせがＦＰＧＡ２０５によって提供される。
【００９６】
全体的な動作の観点から、この機能のうちの任意のものを具現する場合、ＦＰＧＡ２０５は、適切なソースからデータを読み取る。「ソース」という用語は、単数の名詞であるが、本発明の実施形態は、適切な場合、多数のソース（例えば、複数のストレージ装置）からデータを読み取ることができる。ＦＰＧＡ２０５は、データアクセラレーション、データ統合、データ暗号化、及び／又はデータ圧縮のようなデータの適切な動作を遂行する。次に、ＦＰＧＡ２０５は、動作の結果に対して適切なアクションを取る。即ち、例として、図１のマシン１０５に結果を伝送したり、ストレージ装置１２５−１にデータを書き込んだりする。
【００９７】
以上の機能を図１１のＦＰＧＡ２０５を参照して説明したが、本発明の実施形態は、ＦＰＧＡを含むシステム内の任意の位置にこれらの機能を含む。なお、本発明の実施形態は、ＦＰＧＡ２０５が「遠く」のストレージ装置からデータにアクセスできるようにする。例として、図１に一旦戻って、ストレージ装置１２５−１がＦＰＧＡ２０５に類似するＦＰＧＡを含むが、ストレージ装置１２５−２はこのようなコプロセッサを有しないと仮定する。ストレージ装置１２５−１に含まれるＦＰＧＡは、ストレージ装置１２５−２に要請を伝送することにより、ストレージ装置１２５−２にその機能を適用するために使用される。例として、ストレージ装置１２５−１のＦＰＧＡがデータアクセラレーションを提供する場合、ストレージ装置１２５−１のＦＰＧＡは、ストレージ装置１２５−２からデータを読み取り、適切なアクセラレーションを遂行し、その後、その結果を適切な宛先（図１のマシン１０５のような）に伝送するための要請を伝送する。
【００９８】
図１１において（そして、以下の図１２〜図１４に示すトポロジーにおいて）、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を有するＰＣＩｅスイッチは、イレイジャーコーディングに適していない装置に装着される。例として、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を有するＰＣＩｅスイッチは、ビルトイン（ｂｕｉｌｔ−ｉｎ）イレイジャーコーディング機能を有する他のストレージ装置、又は図１１のＦＰＧＡ２０５若しくは図２のＧＰＵ２１５のようなストレージ装置ではない装置に装着される。これらの全ての装置は、イレイジャーコーディング（又は、少なくともＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を含むＰＣＩｅスイッチによるイレイジャーコーディングのための）に適合しない装置として説明される。
【００９９】
Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を有するＰＣＩｅスイッチがイレイジャーコーディングに適していない装置に連結される場合、システムは使用され得る多様な代替的なアプローチを有する。本発明の一実施形態において、イレイジャーコーディングに適していない任意の装置を含む場合、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を有するＰＣＩｅスイッチのＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックがディセーブルされる。従って、例として、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を有するＰＣＩｅスイッチが図１１のＦＰＧＡ２０５若しくは図２のＧＰＵ２１５、又はネイティブのイレイジャーコーディングロジックを有するストレージ装置に連結される場合、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を有するＰＣＩｅスイッチに連結されたストレージ装置の中のいずれも、イレイジャーコーディングと共に使用することができない。Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を含むＰＣＩｅスイッチのＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックをディセーブルしようとする決定が、同じか又は別のシャーシでＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含む他のＰＣＩｅスイッチに必ずしも変換されるものではないことに留意する。例として、図１３を一時的に見ると、図１３は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック（１１０５及び１３０５）を有する二つのＰＣＩｅスイッチを示し、そのうちの一つはイネーブルされたＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを有し、他の一つはディセーブルされたＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを有する。
【０１００】
本発明の他の実施形態は、イレイジャーコーディングに適していない装置をディセーブルし、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を含むＰＣＩｅスイッチに全く連結されていないかのようにそれらを処理することができる。本発明のこのような実施形態で、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を有するＰＣＩｅスイッチは、ストレージ装置１２５−１に対するＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを可能にし、イレイジャーコーディングのために適切な任意の他のストレージ装置は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を有するＰＣＩｅスイッチに連結されていないかのようにディセーブルされる。
【０１０１】
本発明の他の実施形態において、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を有するＰＣＩｅスイッチは、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックによってカバーされるストレージ装置のためのＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを可能にするが、アクセスされるイレイジャーコーディングに適していない他の装置を変わらずイネーブルする。本発明のこの実施形態は、最も複雑な具現である。即ち、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を有するＰＣＩｅスイッチは、どの装置がイレイジャーコーディングに適合し、どの装置が適合していないかを判定し、その後、トラフィックを分析してトラフィックが仮想ストレージ装置に伝送されるか（この場合、トラフィックはＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックによってインターセプトされる）否か（この場合は、トラフィックが元の宛先に伝送される）を判定する。
【０１０２】
図１のマシン１０５は、インストールした装置の全ての機能を提供しない本発明の一実施形態である。即ち、イレイジャーコーディングに適していない装置の存在により、イレイジャーコーディングがディセーブルされるか、或いはこれらの装置がＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を含むＰＣＩｅスイッチによりディセーブルされる本発明の一実施形態であり、図１のマシン１０５は、この事実をユーザーに知らせる。この通知は、図１のプロセッサ１１０、ＢＭＣやＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチによって提供される。一部の機能がディセーブルされたことをユーザーに通知することに加えて、通知は、追加された機能を許容するために、図１のマシン１０５を再構成する方法をユーザーに知らせることもできる。例えば、通知は、イレイジャーコーディングに適していない装置がミッドプレーンの特定のスロットに連結されるように提案する（おそらく、これらのスロットは、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１３０５を含むＰＣＩｅスイッチに連結される）。そして、イレイジャーコーディングに適していないストレージ装置は、イレイジャーコーディングロジック１１０５を含むＰＣＩｅスイッチに連結されたスロットのような他のスロットに連結される。このように、イレイジャーコーディングに適した少なくともいくつかのストレージ装置は、イレイジャーコーディングに適していない他の装置へのアクセスを遮断せず、イレイジャーコーディングスキームから恩恵を得ることができる。
【０１０３】
図１２は、本発明の他の実施形態による図１のＳＳＤ及びコプロセッサを含む第２トポロジーを示す図である。図１２において、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を有するＰＣＩｅスイッチは、ＦＰＧＡ２０５内に位置する。即ち、ＦＰＧＡ２０５は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を有するＰＣＩｅスイッチを具現する。Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を有するＦＰＧＡ２０５及びＰＣＩｅスイッチは、ストレージ装置（１２５−１〜１２５−４）に連結される。図１２は、４つのストレージ装置（１２５−１〜１２５−４）に連結されたＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を有するＦＰＧＡ２０５及びＰＣＩｅスイッチを示しているが、本発明の実施形態は、任意の数のストレージ装置（１２５−１〜１２５−４）を含む。
【０１０４】
一般的に、図１２に示したトポロジーは、図示した全ての構成要素を含む単一のシェル（ｓｈｅｌｌ）又はハウジング（ｈｏｕｓｉｎｇ）内に具現される（ＳＳＤ（１２５−１〜１２５−４）は、それ自体に含まれる（ｓｅｌｆ−ｃｏｎｔａｉｎｅｄ）ＳＳＤではなく別途のフラッシュメモリであり得る）。即ち、別途の構成要素として販売されるのではなく、図１２に示した全体の構造が単一のユニットとして販売される。しかし、本発明の実施形態は、ストレージ装置（１２５−１〜１２５−４）に連結するために他端上にＵ．２、Ｍ．３、又はＳＦＦ−ＴＡ−１００８のようなコネクタを有し、一端（ｏｎｅ  ｅｎｄ）上にコネクタを有する図１のマシン１０５に（おそらく、ミッドプレーンに）連結するライザーカード（ｒｉｓｅｒ  ｃａｒｄ）を含む。そして、図１２は、ＦＰＧＡ２０５の一部としてＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を有するＰＣＩｅスイッチを示し、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を有するＰＣＩｅスイッチは、スマートＳＳＤの一部として具現される。
【０１０５】
図１３は、本発明の一実施形態による図１のＳＳＤ及びコプロセッサを含む第３トポロジーを示す図であり、図１１のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を有するＰＣＩｅスイッチを使用するための第３トポロジーを示す。図１３は、それらの間に最大２４個のストレージ装置（１２５−１〜１２５−６）を連結するＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック（１１０５及び１３０５）を有する二つのＰＣＩｅスイッチを示す。Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック（１１０５及び１３０５）を有するＰＣＩｅスイッチのそれぞれは、ストレージ装置（１２５−１〜１２５−６）のいずれかと通信するために、各方向に使用される４つのＰＣＩｅレーン（ｌａｎｅ）を有する９６個のＰＣＩｅレーンを含む。即ち、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック（１１０５及び１３０５）を有する各ＰＣＩｅスイッチは、最大１２個のストレージ装置をサポートする。Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック（１１０５及び１３０５）を有する多数のＰＣＩｅスイッチによってサポートされるストレージ装置全体のイレイジャーコーディングをサポートするために、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を有する一つのＰＣＩｅスイッチは、全ての装置に亘ってイレイジャーコーディングを担当するように指定され、イネーブルされたＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを有する。Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１３０５を有する他のＰＣＩｅスイッチは、ディセーブルされたＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを有するＰＣＩｅスイッチとして純粋に動作する。イレイジャーコーディングを処理するためにどのＰＣＩｅスイッチが選択されるべきかの選択は、任意の所望の方法で遂行すされる。即ち、例として、二つのＰＣＩｅスイッチは、それらの間でこれを交渉するか、或いは最初に列挙されたＰＣＩｅスイッチは、イレイジャーコーディングを処理するように指定される。イレイジャーコーディングを処理するように選択されたＰＣＩｅスイッチは、仮想ストレージ装置（二つのＰＣＩｅスイッチに亘る）を報告する反面、イレイジャーコーディングを処理していないＰＣＩｅスイッチは、ダウンストリーム装置を報告しない可能性がある（図１のプロセッサ１１０は、イレイジャーコーディングスキームの一部であるストレージ装置にアクセスする試みを防止するために）。
【０１０６】
Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック（１１０５及び１３０５）を有するＰＣＩｅスイッチが全て同じシャーシに有り得るが、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック（１１０５及び１３０５）を有するＰＣＩｅスイッチは、異なるシャーシに有り得ることに留意する。即ち、イレイジャーコーディングスキームは、多数のシャーシに亘ってストレージ装置を拡張することができる。必要なのは、多様なシャーシのＰＣＩｅスイッチがイレイジャーコーディングスキームの一部となるストレージ装置が位置する場所について、互いに交渉できなければならないことである。また、本発明の実施形態は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック（１１０５及び１３０５）を有する二つのＰＣＩｅスイッチに限定されない。即ち、イレイジャーコーディングスキームに含まれるストレージ装置は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を有する任意の数のＰＣＩｅスイッチに連結される。
【０１０７】
ホスト論理ブロックアドレス（ＬＢＡ）は、任意の所望の方法でＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック（１１０５及び１３０５）を有するＰＣＩｅスイッチに分割される。例として、ホストＬＢＡの最下位ビットは、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック（１１０５又は１３０５）を有するどちらかのＰＣＩｅスイッチがそのホストＬＢＡを含むデータを格納するストレージ装置を含むかを識別するのに使用される。Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを有する二つ以上のＰＣＩｅスイッチを使用する場合、どのＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを有するＰＣＩｅスイッチがデータを格納するストレージ装置を管理するのかを判定するための複数のビットが使用される。Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを有する適切なＰＣＩｅスイッチが識別されると、伝送がＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを有する適切なＰＣＩｅスイッチにルーティング（ｒｏｕｔｅｄ）される（Ｌｏｏｋ−ＡｓｉｄｅイレイジャーコーディングロジックがイネーブルされたＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを有するＰＣＩｅスイッチに連結されたストレージ装置に伝送が予定されていないと仮定する）。
【０１０８】
本発明の他の実施形態で、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを有する単一のＰＣＩｅスイッチがＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを有する二つのＰＣＩｅスイッチに連結された全てのストレージ装置を仮想化するよりも、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを有する各ＰＣＩｅスイッチが（別途のイレイジャーコーディングドメインを含む）別途の仮想ストレージ装置を生成する。このように、小さい容量であるが、異なる顧客に対して異なるイレイジャーコーディングドメインが生成される。
【０１０９】
図１３は、ストレージ装置（１２５−１〜１２５−６）のみがＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック（１１０５及び１３０５）を有するＰＣＩｅスイッチに連結され、全てのストレージ装置（１２５−１〜１２５−６）がイレイジャーコーディングスキームと共に使用されることを意味するが、上述した本発明の実施形態は、これに限定されない。即ち、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック（１１０５及び１３０５）を有するＰＣＩｅスイッチは、それらに連結されたイレイジャーコーディングに適していない装置を有し得る。Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を有する他のＰＣＩｅスイッチの下にグループ化されたイレイジャーコーディングに適したストレージ装置と共に、これらの装置は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを有する単一のＰＣＩｅスイッチの下にグループ化される。このような方式で、Ｌｏｏｋ−ＡｓｉｄｅイレイジャーコーディングロジックをイネーブルするＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを有する一つの（又は、いくつか）ＰＣＩｅスイッチ、及びＬｏｏｋ−ＡｓｉｄｅイレイジャーコーディングをディセーブルするＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを有する一つの（又は、いくつか）ＰＣＩｅスイッチと共に、図１のマシン１０５の最適な機能性が達成される。
【０１１０】
図１４は、本発明の他の実施形態による図１のＳＳＤ及びコプロセッサを含む第４トポロジーを示す図である。図１４で、図１３と比較すると、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック（１１０５、１３０５、及び１４０５）を有するＰＣＩｅスイッチは、階層的に構成される。階層の最上部にあるＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を有するＰＣＩｅスイッチは、階層内のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を有するＰＣＩｅスイッチの下の全てのストレージ装置に対するイレイジャーコーディングを管理し、それによりイネーブルされたＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを有する。一方、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック（１３０５及び１４０５）を有するＰＣＩｅスイッチは、（それらのストレージ装置は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を有するＰＣＩｅスイッチのＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックによって管理されるために）ディセーブルされたそれらのＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを有する。
【０１１１】
図１４は、２段階の階層（ｔｗｏ−ｔｉｅｒ  ｈｉｅｒａｒｃｈｙ）で構成されたＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック（１１０５、１３０５、及び１４０５）を有する三つのＰＣＩｅスイッチを示すが、本発明は、それらの階層的取り決めに含まれるか、又はその階層的取り決め内にあるＰＣＩｅスイッチの数に制限されない。従って、本実施形態は、任意の所望の階層に取り決めされたＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを有する任意の数のＰＣＩｅスイッチをサポートする。
【０１１２】
図１〜図１４を参照して上述した本発明の実施形態は、単一のポートのストレージ装置に重点を置く。しかし、本発明の実施形態は、一つ（又は、それ以上の）のストレージ装置がＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを有する多数のＰＣＩｅスイッチと通信するデュアルポートストレージ装置に拡張される。本発明のこれらの実施形態で、図１１のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を有するＰＣＩｅスイッチがデュアルポートストレージ装置と通信できない場合、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を有するＰＣＩｅスイッチは、ストレージ装置との通信を試みるためにＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１３０５を有するＰＣＩｅスイッチに伝送を送る。Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１３０５を有するＰＣＩｅスイッチは、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック１１０５を有するＰＣＩｅスイッチがストレージ装置と通信させるブリッジとして効果的に動作する。
【０１１３】
図１５は、本発明の一実施形態によるペアリングデータに対するパートナーをクエリするための図１のＳＳＤ１２５−１（又は、図１のコプロセッサ１３０−１）の手順を示すフローチャートである。図１５において、段階１５０５で、図１のＳＳＤ１２５−１は、図９の識別装置９０５をそのパートナーに伝送する（又は、図１のコプロセッサ１３０−１は、図１０の読み取り識別データ１００５をそのパートナーに伝送する）。段階１５１０で、図１のＳＳＤ１２５−１は、図９の識別応答９１０を受信する（又は、図１のコプロセッサ１３０−１は、図１０の読み取り応答１０１０を受信する）。段階１５１５で、図１のＳＳＤ１２５−１は、受信したペアリング情報を図５のストレージ装置５０５−２に格納する（又は、図１のコプロセッサ１３０−１は、受信したペアリング情報を図５のストレージ５１５−１に格納する）。段階１５２０で、図１のＳＳＤ１２５−１は、図５のストレージ装置５０５−１からそれ自身のペアリング情報にアクセスする（又は、図１のコプロセッサ１３０−１は、図５のストレージ５１５−２からそのペアリング情報にアクセスする）。最後に、段階１５２５で、図１のＳＳＤ１２５−１は、図９のセットのペアリングデータ９１５をそのパートナーに伝送し（又は、図１のコプロセッサ１３０−１は、図１０のセットの識別データ１０１５を伝送し）、これにより、そのパートナーは、ペアリング情報を格納する。
【０１１４】
図１６は、本発明の一実施形態によるペアリングデータに対するクエリをパートナーから受信するための図１のＳＳＤ１２５−１（又は、図１のコプロセッサ１３０−１）の手順を示すフローチャートである。図１６において、段階１６０５で、図１のＳＳＤ１２５−１は、図１０の読み取り識別データ１００５を図１のコプロセッサ１３０−１から受信する（又は、図１のコプロセッサ１３０−１は、図１のＳＳＤ１２５−１から図９の識別装置９０５を受信する）。段階１６１０で、図１のＳＳＤ１２５−１は、図５のストレージ装置５０５−１からペアリング情報にアクセスする。（又は、図１のコプロセッサ１３０−１は、図５のストレージ５１５−２からペアリング情報にアクセスする）。段階１６１５で、図１のＳＳＤ１２５−１は、図１０の読み取り応答１０１０のペアリング情報を図１のコプロセッサ１３０−１に伝送する（又は、図１のコプロセッサ１３０−１は、図９の識別応答９１０のペアリング情報を伝送する）。段階１６２０で、図１のＳＳＤ１２５−１は、図１０の設定識別データ１０１５を図１のコプロセッサ１３０−１から受信する（又は、図１のコプロセッサ１３０−１は、図１のＳＳＤ１２５−１から図９の設定ペアリングデータ９１５を受信する）。最後に、段階１６２５で、図１のＳＳＤ１２５−１は、図１のコプロセッサ１３０−１のペアリング情報を図５のストレージ装置５０５−２に格納する（図１のコプロセッサ１３０−１は、図１のＳＳＤ１２５−１のペアリング情報を図５のストレージ５１５−１に格納する）。
【０１１５】
図１７は、本発明の一実施形態によるペアリングパートナー及び関連する図５のオペレーティングシステム４０５からのクエリに応答するための図１のＳＳＤ１２５−１及び／又はコプロセッサ１３０−１の手順を示すフローチャートである。図１７において、段階１７０５で、図１のＳＳＤ１２５−１及び／又はコプロセッサ１３０−１は、図６のクエリ（６０５及び／又は６１５）を図５のオペレーティングシステム４０５から受信する。段階１７１０で、図１のＳＳＤ１２５−１及び／又はコプロセッサ１３０−１は、図１のＳＳＤ１２５−１及び／又はコプロセッサ１３０−１に対する図５のストレージ装置（５０５−１及び／又は５１５−２）から固有のＩＤや製造業者のモデル番号及び／又はシリアル番号のようなペアリング情報にアクセスする。段階１７１５で、図１のＳＳＤ１２５−１及び／又はコプロセッサ１３０−１は、パートナー装置に対して、図５のストレージ装置（５０５−２及び／又は５１５−１）から固有のＩＤや製造業者のモデル番号及び／又はシリアル番号のようなペアリング情報にアクセスする。最後に、段階１７２０で、図１のＳＳＤ１２５−１及び／又はコプロセッサ１３０−１は、ペアリングされた装置に関するペアリング情報を図５のオペレーティングシステム４０５に伝送する。
【０１１６】
図１８は、本発明の一実施形態による図１のＳＳＤ１２５−１及びコプロセッサ１３０−１をクエリしてペアリングするための図５のオペレーティングシステム４０５の手順を示すフローチャートである。図１８において、段階１８０５で、図５のオペレーティングシステム４０５は、図６のクエリ（６０５及び／又は６１５）のようなクエリを仮想ＩＤによって示す装置に（図５のオペレーティングシステム４０５に）伝送する。段階１８１０で、図５のオペレーティングシステム４０５は、装置からペアリング情報を受信する。段階１８１５で、図５のオペレーティングシステム４０５は、図６のクエリ（６０５及び／又は６１５）のような他のクエリを仮想ＩＤによって示す他の装置に（図５のオペレーティングシステム４０５に）伝送する。段階１８２０で、図５のオペレーティングシステム４０５は、その装置からペアリング情報を受信する。段階１８２５で、図５のオペレーティングシステム４０５は、二つの装置が同じペアリング情報を提供したことを決定し、図５のオペレーティングシステム４０５内で装置をどうにかしてペアリングする。最後に、段階１８３０で、図５のオペレーティングシステム４０５は、装置のペアリングに関するクエリをサポートしているアプリケーションにＡＰＩを提供する。
【０１１７】
図１９は、本発明の一実施形態による装置に対するペアリング情報に関するアプリケーションからのクエリに応答するための図５のオペレーティングシステムの手順を示すフローチャートである。図１９において、段階１９０５で、図５のオペレーティングシステム４０５は、特定の装置のペアリングの要求をアプリケーションから受信する。段階１９１０で、図５のオペレーティングシステム４０５は、ペアリング情報を格納するテーブル内で要求された装置を検出する。段階１９１５で、図５のオペレーティングシステム４０５は、テーブル内の装置のペアリングを判別する。段階１９２０で、図５のオペレーティングシステム４０５は、装置のペアリングに関するアプリケーション情報に戻る。
【０１１８】
或いは、段階１９２５で、図５のオペレーティングシステム４０５は、アプリケーションからデータの識別子（ファイル、オブジェクト、キーなど）に関する情報をペアリングするための要請を受信する。段階１９３０で、図５のオペレーティングシステム４０５は、データ識別子によって識別されたデータを格納する装置を決定する。この時点で、矢印１９３５で示すように、図５のオペレーティングシステム４０５は、上述したように、段階１９１０、段階１９１５を遂行する。次に、矢印１９４０で示すように、図５のオペレーティングシステム４０５は、データを貯蔵する装置及びそのペアの両方に関するアプリケーション情報に戻る。
【０１１９】
図１５〜図１９に、本発明の一部の実施形態を示した。しかし、当該技術の通常の技術者は、各段階の順序を変更したり、一部の段階を省略したり、図面に示していない連結を含んだりすることにより、本発明の他の実施形態も可能であることを認識する筈である。フローチャートの全てのこれらの変形は、明示的に説明されようがしまいが、本発明の実施形態とみなされる。
【０１２０】
本発明の実施形態は、従来技術を超える技術的利点を提供する。本発明の実施形態は、図１のＳＳＤ（１２５−１〜１２５−２）及びコプロセッサ（１３０−１〜１３０−２）がペアリングパートナーに対するペアリング情報を決定することを許容する。次に、図１のＳＳＤ（１２５−１〜１２５−２）及びコプロセッサ（１３０−１〜１３０−２）は、図５のオペレーティングシステム４０５にこのペアリング情報を提供し、図５のオペレーティングシステム４０５は、任意の装置が他の装置とペアリングされているかに関する情報を格納する。図５のオペレーティングシステム４０５が適切にペアリングされた装置を有している場合、図５のオペレーティングシステム４０５は、この情報を、ＡＰＩを介してアプリケーションに提供し、どのサービスが遂行されるかに関するデータを格納する図１のＳＳＤ（１２５−１〜１２５−２）とペアリングされた図１のコプロセッサ（１３０−１〜１３０−２）からアプリケーションがサービスを要請できるようにする。
【０１２１】
以下の説明は、本発明の技術的思想のいくつかの側面が具現される適切なマシンやマシンの短い一般的な説明を提供する。一つ又は複数のマシンは、少なくとも一部が他のマシンから受信される指示、仮想現実（ＶＲ）環境との相互作用、生体フィードバック、他の入力信号だけでなく、キーボード、マウスなどのような通常の入力装置からの入力により制御される。ここで使用するように、「マシン」の用語は、単一のマシン、仮想マシン、複数のマシン若しくは複数の仮想マシン、又は共に動作する装置と通信するように結合されたシステムを広く含むものと意図する。例としてのマシンは、例えば、自動車、電車、タクシーなどのような、パーソナル（ｐｅｒｓｏｎａｌ）又は公共交通などのような輸送装置だけでなく、パーソナルコンピュータ、ワークステーション、サーバ、ポータブルコンピュータ、ハンドヘルド装置、携帯電話、タブレットなどのようなコンピューティング装置を含む。
【０１２２】
一つのマシン又は複数のマシンは、プログラム可能な又はプログラム不可能な論理装置若しくはアレイ、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、エンベデッドコンピュータ、スマートカードなどのようなエンベデッドコントローラを含む。一つのマシン又は複数のマシンは、ネットワークインターフェース、モデム、又は他の通信結合を介してのように一つ以上の多くのリモートマシンに対する一つ以上の多くの連結を活用する。マシンは、イントラネット、インターネット、ＬＡＮ（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋｓ）、ＷＡＮ（ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋｓ）などのような物理的及び／又は論理的ネットワークの手段により互いに連結され。この分野に熟練した者は、ネットワーク通信が、無線周波数（ＲＦ）、衛星、マイクロウェーブ、ＩＥＥＥ８０２．１１、ブルートゥース（登録商標）、光学、赤外線、ケーブル、レーザーなどを含む多様な有線及び／又は無線近距離又は遠距離キャリアとプロトコルを活用することを理解するだろう。
【０１２３】
本発明の実施形態は、マシンによってアクセスされときに、マシンが作業を遂行するか、又は抽象データ型若しくは低レベルのハードウェアコンテキストを定義することを誘発する機能、プロシージャ、データ構造、アプリケーションなどを含む関連するデータを参照して若しくは協力して説明される。関連付けられたデータは、例えば、ＲＡＭ、ＲＯＭなどのような揮発性及び／又は不揮発性メモリ、他のストレージ装置、ハードディスクドライブ、フロッピー（登録商標）ディスク、光学ストレージ、テープ、フラッシュメモリ、メモリスティック（登録商標）、デジタルビデオディスク、生体ストレージなどを含む関連する記憶媒体に格納される。関連するデータは、物理的及び／又は論理的なネットワークを含む伝送環境を経てパケット、シリアルデータ、パラレルデータ、伝送信号などの形で伝達され、圧縮された又は暗号化されたフォーマットで利用される。関連付けられたデータは、分散環境で使用され、マシンアクセスに対してローカル及び／又はリモートで格納される。
【０１２４】
本発明の実施形態は、一つ以上の多くのプロセッサによって遂行可能であり、ここで説明したように、本発明の技術的思想の構成要件を実行するコマンドを含む実在する非一時的マシン読み取り可能な記録媒体を含む。
【０１２５】
上述した方法の多様な動作は、多様なハードウェア及び／又はソフトウェア構成要素、回路、及び／又はモジュールのように、動作を遂行する任意の適切な手段によって遂行される。ソフトウェアは、論理機能を具現するための実行可能なコマンドの順序付きリストを構成し、コマンドを遂行するシステム、装置、シングル若しくはマルチコアプロセッサ、又はプロセッサを含むシステムのような装置によるか又はこれに関連する使用のための任意の「プロセッサ読み取り可能な記録媒体」に内蔵される。
【０１２６】
本明細書で開示した実施形態に関連して説明した方法又はアルゴリズム、及び関数のブロック又は段階は、ハードウェアで直接プロセッサによって実行されるソフトウェアモジュール又はその両方の組み合わせによって具現される。ソフトウェアで具現される場合、機能は、有形且つ非一時的なコンピュータ読み取り可能な媒体上の一つ以上のコマンド又はコードとして格納又は伝送される。ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、フラッシュメモリ、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、レジスタ、ハードディスク、ＲＤ（Ｒｅｍｏｖａｂｌｅ  Ｄｉｓｋ）、ＣＤ  ＲＯＭ、又は従来から知られている任意の他の形態の記憶媒体に内蔵される。
【０１２７】
図示した実施形態を参照して説明し例示した本発明の技術的思想の原則を有する場合、図示した実施形態がこれらの原則から逸脱せずに取り決めと詳細で修正され、必要な任意の方法で組み合わされることが理解されるはずである。上述した説明は具体的な実施形態に集中したが、他の構成もまた考慮される。具体的に、「本発明の実施形態による」のような説明や、ここで使用した同様なものにも拘らず、これらのフレーズは、一般的に実施形態の可能性を参照して、本発明の技術的思想を具体的な実施形態の構成に限定することを意図しない。ここで使用するように、これらの用語は、他の実施形態に組み合わせ可能な同一又は異なる実施形態を参照する。
【０１２８】
上述した実施形態は、本発明の技術的思想を、それらに限定するものと解釈されない。少ない実施形態のみを説明したが、この分野における熟練した者は、本明細書に記載の新規な説明と利点から実質的に逸脱せずに、これらの実施形態に多くの修正が可能であることを十分に理解するだろう。従って、これらの全ての修正は、本発明の技術的思想の範囲内に属するものとして意図される。
【０１２９】
本発明の実施形態は、以下の説明に限定されずに拡張される。即ち、次の事項である。
【０１３０】
説明１．本発明の一実施形態によるシステムは、
データに対する第１ストレージと、
固有のＳＳＤ  ＩＤ（ｉｄｅｎｔｉｆｉｅｒ）に対する第２ストレージと、
固有のコプロセッサＩＤに対する第３ストレージと、
固有のコプロセッサＩＤに対する第４ストレージと、
固有のＳＳＤ  ＩＤに対する第５ストレージと、
ＳＳＤとコプロセッサとの間のハードウェアインターフェースと、を含むＳＳＤを備える。
【０１３１】
説明２．本発明の一実施形態は、説明１によるシステムを含み、コプロセッサは、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ−Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＴＰＵ（Ｔｅｎｓｏｒ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、イレイジャーコーディングコントローラ、及びスモールプロセッサコアのいずれか一つを含む。
【０１３２】
説明３．本発明の実施形態は、説明１によるシステムを含み、ハードウェアインターフェースは、ＳＭＢｕｓ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｂｕｓ）及びＩ２Ｃ（Ｉｎｔｅｒ−Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）バスを含む。
【０１３３】
説明４．本発明の実施形態は、説明１によるシステムを含み、第４ストレージは、ＯＴＰ（ｏｎｅ−ｔｉｍｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｍｅｍｏｒｙ）、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＰＲＯＭ（Ｅｒａｓｅａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、及びＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）を含む．
【０１３４】
説明５．本発明の実施形態は、説明１によるシステムを含み、コプロセッサは、固有のＳＳＤ  ＩＤのＳＳＤを照会して、第５ストレージの固有ＳＳＤ  ＩＤを保存するように動作する。
【０１３５】
説明６．本発明の実施形態は、説明１によるシステムを含み、コプロセッサは、固有のコプロセッサＩＤを含むＳＳＤを提供するように動作する。
【０１３６】
説明７．本発明の実施形態は、説明１によるシステムを含み、ＳＳＤは、固有のコプロセッサＩＤに対するコプロセッサをクエリし、第３ストレージの固有のコプロセッサＩＤを格納するように動作する。
【０１３７】
説明８．本発明の実施形態は、説明１によるシステムを含み、ＳＳＤは、固有のＳＳＤ  ＩＤを含むコプロセッサを提供するように動作する。
【０１３８】
説明９．本発明の実施形態は、説明１によるシステムを含み、ＳＳＤは、ＳＳＤ及びコプロセッサに関するクエリをアウト・オブ・バンド（ｏｕｔ−ｏｆ−ｂａｎｄ）で受信するように動作する。
【０１３９】
説明１０．本発明の実施形態は、説明９によるシステムを含み、ＳＳＤは、クエリをアウト・オブ・バンドで受信するためのＳＭＢｕｓ連結を含む。
【０１４０】
説明１１．本発明の実施形態は、説明９によるシステムを含み、ＳＳＤは、固有のＳＳＤ  ＩＤ及び固有のコプロセッサＩＤの両方に対するクエリに応答するように動作する。
【０１４１】
説明１２．本発明の実施形態は、説明９によるシステムを含み、クエリはＮＶＭｅ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｅｘｐｒｅｓｓ）ＭＩ（Ｍａｎａｇｅｍｅｎｔ  Ｉｎｔｅｒｆａｃｅ）コマンドを含む。
【０１４２】
説明１３．本発明の一実施形態は、説明１によるシステムを含み、コプロセッサは、ＳＳＤ及びコプロセッサに関するクエリをアウト・オブ・バンドで受信するように動作する。
【０１４３】
説明１４．本発明の実施形態は、説明１３によるシステムを含み、コプロセッサは、固有のＳＳＤ  ＩＤ及び固有コプロセッサＩＤの両方に対するクエリに応答するように動作する。
【０１４４】
説明１５．本発明の実施形態は、説明１３によるシステムを含み、クエリは、ＮＶＭｅ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｅｘｐｒｅｓｓ）ＭＩ（Ｍａｎａｇｅｍｅｎｔ  Ｉｎｔｅｒｆａｃｅ）コマンドを含む。
【０１４５】
説明１６．本発明の実施形態は、説明１によるシステムを含み、ＳＳＤは、ＳＳＤ及びコプロセッサに関するクエリをイン・バンド（ｉｎ−ｂａｎｄ）で受信するように動作する。
【０１４６】
説明１７．本発明の実施形態は、説明１６によるシステムを含み、ＳＳＤは、クエリをイン・バンドで受信するためのＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）連結を含む。
【０１４７】
説明１８．本発明の実施形態は、説明１６によるシステムを含み、ＳＳＤは、固有のＳＳＤ  ＩＤ及び固有のコプロセッサＩＤの両方のクエリに応答するように動作する。
【０１４８】
説明１９．本発明の実施形態は、説明１６によるシステムを含み、クエリは、ＮＶＭｅ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｅｘｐｒｅｓｓ）ＭＩ（Ｍａｎａｇｅｍｅｎｔ  Ｉｎｔｅｒｆａｃｅ）コマンドを含む。
【０１４９】
説明２０．本発明の一実施形態による方法は、
第１装置から第２装置にクエリを伝送する段階と、
第１装置で第２装置から第１ペアリングデータを含む応答を受信する段階と、
第１装置の第２ストレージに第１ペアリングデータを格納する段階と、
第１装置の第１ストレージから第２ペアリングデータにアクセスする段階と、
第１装置から第２装置に第２ペアリングデータを伝送する段階と、を有する。
【０１５０】
説明２１．本発明の一実施形態は、説明２０による方法を含み、第１装置及び第２装置のそれぞれは、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ−Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＴＰＵ（Ｔｅｎｓｏｒ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、イレイジャーコーディングコントローラ、及びスモールプロセッサコアのいずれか一つを含む。
【０１５１】
説明２２．本発明の実施形態は、説明２０による方法を含み、
第１装置から第２装置にクエリを伝送する段階は、第１装置と第２装置との間のハードウェアインターフェースを通して第１装置から第２装置にクエリを伝送する段階を含み、
第１装置で第２装置から応答を受信する段階は、第１装置と第２装置との間のハードウェアインターフェースを通して第１装置で第２装置から応答を受信する段階を含み、
第１装置から第２装置に第２ペアリングデータを伝送する段階は、第１装置と第２装置との間のハードウェアインターフェース通して第１装置から第２装置に第２ペアリングデータを伝送する段階を含む。
【０１５２】
説明２３．本発明の実施形態は、説明２０による方法を含み、第２ストレージは、ＯＴＰ（ｏｎｅ−ｔｉｍｅ  ｐｒｏｇｒａｍｍａｂｌｅ）メモリ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＰＲＯＭ（Ｅｒａｓｅａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、及びＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）のいずれか一つを含む。
【０１５３】
説明２４．本発明の一実施形態による方法は、
第１装置で第２装置からクエリを受信する段階と、
第１装置の第１ストレージから第１ペアリングデータにアクセスする段階と、
第１装置から第２装置に第１ペアリングデータを含む応答を伝送する段階と、
第１装置で第２装置から第２ペアリングデータを受信する段階と、
第１装置の第２ストレージに第２ペアリングデータを格納する段階と、を有する。
【０１５４】
説明２５．本発明の実施形態は、説明２４による方法を含み、第１装置及び第２装置のそれぞれは、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ−Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＴＰＵ（Ｔｅｎｓｏｒ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、イレイジャーコーディングコントローラ、及びスモールプロセッサコアのいずれか一つを含む。
【０１５５】
説明２６．本発明の実施形態は、説明２４による方法を含み、
第１装置で第２装置からクエリを受信する段階は、第１装置と第２装置との間のハードウェアインターフェースを通して第１装置で第２装置からクエリを受信する段階を含み、
第１装置から第２装置に応答を伝送する段階は、第１装置と第２装置との間のハードウェアインターフェースを通して第１装置から第２装置に応答を伝送する段階を含み、
第１装置で第２装置から第２ペアリングデータを受信する段階は、第１装置と第２装置との間のハードウェアインターフェースを通して第１装置で第２装置から第２ペアリングデータを受信する段階を含む。
【０１５６】
説明２７．本発明の実施形態は、説明２４による方法を含み、第２ストレージは、ＯＴＰ（ｏｎｅ−ｔｉｍｅ  ｐｒｏｇｒａｍｍａｂｌｅ）メモリ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＰＲＯＭ（Ｅｒａｓｅａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、及びＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）のいずれか一つを含む。
【０１５７】
説明２８．本発明の一実施形態による方法は、
第１装置でクエリを受信する段階と、
第１装置の第１ストレージから第１装置に対する第１固有のＩＤ（Ｉｄｅｎｔｉｆｉｅｒ）にアクセスする段階と、
第１装置の第２ストレージから第１装置とペアリングされた第２装置に対する第２固有のＩＤにアクセスする段階と、
第１固有のＩＤ及び第２固有のＩＤの両方を含む応答を第１装置からクエリに伝送する段階と、を有する。
【０１５８】
説明２９．本発明の実施形態は、説明２８による方法を含み、
第１装置でクエリを受信する段階は、アウト・オブ・バンドで、第１装置でクエリを受信する段階を含み、
第１装置からクエリに応答を伝送する段階は、アウト・オブ・バンドで、第１装置からクエリに応答を伝送する段階を含む。
【０１５９】
説明３０．本発明の実施形態は、説明２９による方法を含み、
アウト・オブ・バンドで、第１装置でクエリを受信する段階は、ＳＭＢｕｓ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｂｕｓ）連結を介して第１装置でクエリを受信する段階を含み、
アウト・ボブ・バンドで第１装置からクエリに応答を伝送する段階は、ＳＭＢｕｓ連結を介して第１装置からクエリに応答を伝送する段階を含む。
【０１６０】
説明３１．本発明の実施形態は、説明２８による方法を含み、
第１装置でクエリを受信する段階は、イン・バンドで、第１装置でクエリを受信する段階を含み、
第１装置からクエリに応答を伝送する段階は、イン・バンドで第１装置からクエリに応答を伝送する段階を含む。
【０１６１】
説明３２．本発明の実施形態は、説明３１による方法を含み、
第１装置でクエリを受信する段階は、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）連結を介して第１装置でクエリを受信する段階を含み、
イン・バンドで第１装置からクエリに応答を伝送する段階は、ＰＣＩｅ連結を介して第１装置からクエリに応答を伝送する段階を含む。
【０１６２】
説明３３．本発明の実施形態は、説明３１による方法を含み、クエリは、ＮＶＭｅ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍａｎａｇｅｍｅｎｔ  Ｅｘｐｒｅｓｓ）ＭＩ（Ｍａｎａｇｅｍｅｎｔ  Ｉｎｔｅｒｆａｃｅ）コマンドを含む。
【０１６３】
説明３４．本発明の一実施形態による方法は、
第１仮想ＩＤによって示されるＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）に第１クエリを伝送する段階と、
第１クエリに応答して、ＳＳＤから固有のＳＳＤ  ＩＤ及び固有のコプロセッサＩＤを受信する段階と、
第２仮想ＩＤによって示されるコプロセッサに第２クエリを伝送する段階と、
第２クエリに応答して、コプロセッサから固有のＳＳＤ  ＩＤ及び固有のコプロセッサＩＤを受信する段階と、
第１仮想ＩＤと第２仮想ＩＤとをペアリングする段階と、有する。
【０１６４】
説明３５．本発明の実施形態は、説明３４による方法を含み、ＳＳＤに第１クエリを伝送する段階は、アウト・オブ・バンドでＳＳＤに第１クエリを伝送する段階を含む。
【０１６５】
説明３６．本発明の実施形態は、説明３５による方法を含み、アウト・オブ・バンドでＳＳＤに第１クエリを伝送する段階は、ＳＭＢｕｓ連結を介してＳＳＤに第１クエリを伝送する段階を含む。
【０１６６】
説明３７．本発明の実施形態は、説明３４による方法を含み、ＳＳＤに第１クエリを伝送する段階は、イン・バンドでＳＳＤに第１クエリを伝送する段階を含む。
【０１６７】
説明３８．本発明の実施形態は、説明３７による方法を含み、イン・バンドでＳＳＤに第１クエリを伝送する段階は、ＰＣＩｅ連結を介してＳＳＤに第１クエリを伝送する段階を含む。
【０１６８】
説明３９．本発明の実施形態は、説明３４による方法を含み、第１クエリは、ＮＶＭｅ  ＭＩコマンドを含む。
【０１６９】
説明４０．本発明の実施形態は、説明３４による方法を含み、コプロセッサに第２クエリを伝送する段階は、アウト・オブ・バンドでコプロセッサに第２クエリを伝送する段階を含む。
【０１７０】
説明４１．本発明の実施形態は、説明４０による方法を含み、アウト・オブ・バンドでコプロセッサに第２クエリを伝送する段階は、ＳＭＢｕｓ連結を介してコプロセッサに第２クエリを伝送する段階を含む。
【０１７１】
説明４２．本発明の実施形態は、説明３４による方法を含み、第２クエリは、ＮＶＭｅ  ＭＩコマンドを含む。
【０１７２】
説明４３．本発明の実施形態は、説明３４による方法を含み、第１仮想ＩＤと第２仮想ＩＤとをペアリングする段階は、固有のＳＳＤ  ＩＤ及び固有のコプロセッサＩＤを返すＳＳＤ及びコプロセッサの両方に応答して第１仮想ＩＤと第２仮想ＩＤとをペアリングする段階を含む。
【０１７３】
説明４４．本発明の実施形態は、説明３４による方法を含み、第１仮想ＩＤと第２仮想ＩＤとのペアリングに関するクエリに応答するように動作するＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）を提供する段階を更に含む。
【０１７４】
説明４５．本発明の実施形態は、説明４４による方法を含み、
第１仮想ＩＤに対するペアのためのペアリングのクエリを受信する段階と、
第１仮想ＩＤと第２仮想ＩＤとのペアリングに応答して第２仮想ＩＤを返す段階と、を更に含む。
【０１７５】
説明４６．本発明の実施形態は、説明４５による方法を含み、
第１仮想ＩＤに対するペアのためのペアリングのクエリを受信する段階は、ＡＰＩを介してアプリケーションから第１仮想ＩＤのペアのためのペアリングに対するクエリを受信する段階を含み、
第１仮想ＩＤと第２仮想ＩＤとのペアリングに応答して第２仮想ＩＤを返す段階は、第１仮想ＩＤと第２仮想ＩＤとのペアリングに応答してアプリケーションに第２仮想ＩＤを返す段階を含む。
【０１７６】
説明４７．本発明の実施形態は、説明４４による方法を含み、
ファイルに関連するペアに対するファイルのクエリを受信する段階と、
ファイルを格納するＳＳＤを識別する段階と、
ファイルのクエリに応答して第１仮想ＩＤ及び第２仮想ＩＤを返す段階と、を更に含む。
【０１７７】
説明４８．本発明の実施形態は、説明４７による方法を含み、
ファイルに関連するペアに対するファイルのクエリを受信する段階は、ＡＰＩを介してアプリケーションからファイルに関連するペアに対するファイルのクエリを受信する段階を含み、
ファイルのクエリに応答して第１仮想ＩＤ及び第２想ＩＤを返す段階は、ファイルのクエリに応答してアプリケーションに第１仮想ＩＤ及び第２仮想ＩＤを返す段階を含む。
【０１７８】
説明４９．本発明の一実施形態による非一時的なコンピュータ読み取り可能な記録媒体は、格納されたコマンドを含み、マシンによってコマンドが実行される方法は、
第１装置から第２装置にクエリを伝送する段階と、
第１装置で第２の装置から第１ペアリングデータを含む応答を受信する段階と、
第１装置の第２ストレージに第１ペアリングデータを格納する段階と、
第１装置の第１ストレージから第２ペアリングデータにアクセスする段階と、
第１装置から第２装置に第２ペアリングデータを伝送する段階と、を有する。
【０１７９】
説明５０．本発明の実施形態は、説明４９による記録媒体を含み、第１装置及び第２装置のそれぞれは、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ−Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＴＰＵ（Ｔｅｎｓｏｒ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、イレイジャーコーディングコントローラ、及びスモールプロセッサコアのいずれか一つを含む。
【０１８０】
説明５１．本発明の実施形態は、説明４９による記録媒体を含み、
第１装置から第２装置にクエリを伝送する段階は、第１装置と第２装置との間のハードウェアインターフェースを通して第１装置から第２装置にクエリを伝送する段階を含み、
第１装置で第２装置から応答を受信する段階は、第１装置と第２装置との間のハードウェアインターフェースを介して第１装置で第２装置から応答を受信する段階を含み、
第１装置から第２装置に第２ペアリングデータを伝送する段階は、第１装置と第２装置との間のハードウェアインターフェースを介して第１装置から第２装置に第２ペアリングデータを伝送する段階を含む。
【０１８１】
説明５２．本発明の実施形態は、説明４９による記録媒体を含み、第２ストレージは、ＯＴＰ（ｏｎｅ−ｔｉｍｅ  ｐｒｏｇｒａｍｍａｂｌｅ）メモリ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、及びＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）のいずれか一つを含む。
【０１８２】
説明５３．本発明の一実施形態による非一時的なコンピュータ読み取り可能な記録媒体は、格納されたコマンドを含み、マシンによってコマンドが実行される方法は、
第１装置で第２装置からクエリを受信する段階と、
第１装置の第１ストレージから第１ペアリングデータにアクセスする段階と、
第１装置から第２装置に第１ペアリングデータを含む応答を伝送する段階と、
第１装置で第２装置から第２ペアリングデータを受信する段階と、
第１装置の第２ストレージに第２ペアリングデータを格納する段階と、を有する。
【０１８３】
説明５４．本発明の実施形態は、説明５３による記録媒体を含み、第１装置及び第２装置のそれぞれは、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ−Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＴＰＵ（Ｔｅｎｓｏｒ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、イレイジャーコーディングコントローラ、及びスモールプロセッサコアのいずれか一つを含む。
【０１８４】
説明５５．本発明の実施形態は、説明５３による記録媒体を含み、
第１装置で第２装置からのクエリを受信する段階は、第１装置と第２装置との間のハードウェアインターフェースを通して第１装置で第２装置からクエリを受信する段階を含み、
第１装置から第２装置に応答を伝送する段階は、第１装置と第２装置との間のハードウェアインターフェースを通して第１装置から第２装置に応答を伝送する段階を含み、
第１装置で第２装置から第２ペアリングデータを受信する段階は、第１装置と第２装置との間のハードウェアインターフェースを介して第１装置で第２装置から第２ペアリングデータを受信する段階を含む。
【０１８５】
説明５６．本発明の実施形態は、説明５３による記録媒体を含み、第２ストレージは、ＯＴＰ（ｏｎｅ−ｔｉｍｅ  ｐｒｏｇｒａｍｍａｂｌｅ）メモリ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＰＲＯＭ（Ｅｒａｓｅａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、及びＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）のいずれか一つを含む。
【０１８６】
説明５７．本発明の一実施形態による非一時的なコンピュータ読み取り可能な記録媒体は、格納されたコマンドを含み、マシンによってコマンドが実行される方法は、
第１装置でクエリを受信する段階と、
第１装置の第１ストレージから第１装置に対する第１固有のＩＤ（Ｉｄｅｎｔｉｆｉｅｒ）にアクセスする段階と、
第１装置の第２ストレージから第１装置とペアリングされた第２装置に対する第２固有のＩＤにアクセスする段階と、
第１固有のＩＤ及び第２固有ＩＤの両方を含む応答を第１装置からクエリに伝送する段階と、を有する。
【０１８７】
説明５８．本発明の実施形態は、説明５３による記録媒体を含み、
第１装置でクエリを受信する段階は、アウト・オブ・バンドで、第１装置でクエリを受信する段階を含み、
第１装置からクエリに応答を伝送する段階は、アウト・オブ・バンドで、第１装置からクエリに応答を伝送する段階を含む。
【０１８８】
説明５９．本発明の実施形態は、説明５８による記録媒体を含み、
アウト・オブ・バンドで、第１装置でクエリを受信する段階は、ＳＭＢｕｓ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｂｕｓ）連結を介して第１装置でクエリを受信する段階を含み、
アウト・ボブ・バンドで第１装置からクエリに応答を伝送する段階は、ＳＭＢｕｓ連結を介して第１装置からクエリに応答を伝送する段階を含む。
【０１８９】
説明６０．本発明の実施形態は、説明５７による記録媒体を含み、
第１装置でクエリを受信する段階は、イン・バンドで、第１装置でクエリを受信する段階を含み、
第１装置からクエリに応答を伝送する段階は、イン・バンドで第１装置からクエリに応答を伝送する段階を含む。
【０１９０】
説明６１．本発明の実施形態は、説明５７による記録媒体を含み、
第１装置でクエリを受信する段階は、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）連結を介して第１装置でクエリを受信する段階を含み、
イン・バンドで第１装置からクエリに応答を伝送する段階は、ＰＣＩｅ接続を介して第１装置からクエリに応答を伝送する段階を含む。
【０１９１】
説明６２．本発明の実施形態は、説明５７による記録媒体を含み、クエリは、ＮＶＭｅ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍａｎａｇｅｍｅｎｔ  Ｅｘｐｒｅｓｓ）ＭＩ（Ｍａｎａｇｅｍｅｎｔ  Ｉｎｔｅｒｆａｃｅ）コマンドを含む。
【０１９２】
説明６３．本発明の一実施形態による非一時的なコンピュータ読み取り可能な記録媒体は、格納されたコマンドを含み、マシンによってコマンドが実行され方法は、
第１仮想ＩＤによって示されるＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）に第１クエリを伝送する段階と、
第１クエリに応答して、ＳＳＤから固有のＳＳＤ  ＩＤ及び固有コプロセッサＩＤを受信する段階と、
第２仮想ＩＤによって示されるコプロセッサに第２クエリを伝送する段階と、
第２クエリに応答して、コプロセッサから固有のＳＳＤ  ＩＤ及び固有のコプロセッサＩＤを受信する段階と、
第１仮想ＩＤと第２仮想ＩＤとをペアリングする段階と、を有する。
【０１９３】
説明６４．本発明の実施形態は、説明６３による記録媒体を含み、ＳＳＤに第１クエリを伝送する段階は、アウト・オブ・バンドでＳＳＤに第１クエリを伝送する段階を含む。
【０１９４】
説明６５．本発明の実施形態は、説明６５による記録媒体を含み、アウト・オブ・バンドでＳＳＤに第１クエリを伝送する段階は、ＳＭＢｕｓ連結を介してＳＳＤに第１クエリを伝送する段階を含む。
【０１９５】
説明６６．本発明の実施形態は、説明６３による記録媒体を含み、ＳＳＤに第１クエリを伝送する段階は、イン・バンドでＳＳＤに第１クエリを伝送する段階を含む。
【０１９６】
説明６７．本発明の実施形態は、説明６６による記録媒体を含み、イン・バンドでＳＳＤに第１クエリを伝送する段階は、ＰＣＩｅ連結を介してＳＳＤに第１クエリを伝送する段階を含む。
【０１９７】
説明６８．本発明の実施形態は、説明６３による記録媒体を含み、第１クエリは、ＮＶＭｅ  ＭＩコマンドを含む。
【０１９８】
説明６９．本発明の実施形態は、説明６３による記録媒体を含み、コプロセッサに第２クエリを伝送する段階は、アウト・オブ・バンドでコプロセッサに第２クエリを伝送する段階を含む。
【０１９９】
説明７０．本発明の実施形態は、説明６９による記録媒体を含み、アウト・オブ・バンドでコプロセッサに第２クエリを伝送する段階は、ＳＭＢｕｓ連結を介してコプロセッサに第２クエリを伝送する段階を含む。
【０２００】
説明７１．本発明の実施形態は、説明６３による記録媒体を含み、第２クエリは、ＮＶＭｅ  ＭＩコマンドを含む。
【０２０１】
説明７２．本発明の実施形態は、説明６３による記録媒体を含み、第１仮想ＩＤと第２仮想ＩＤとをペアリングする段階は、固有のＳＳＤ  ＩＤ及び固有のコプロセッサＩＤを返すＳＳＤ及びコプロセッサの両方に応答して第１仮想ＩＤと第２仮想ＩＤとをペアリングする段階を含む。
【０２０２】
説明７３．本発明の実施形態は、説明６３による記録媒体を含み、方法は、第１仮想ＩＤと第２仮想ＩＤとのペアリングに関するクエリに応答するように動作するＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）を提供する段階を更に含む。
【０２０３】
説明７４．本発明の実施形態は、説明７３による記録媒体を含み、方法は、
第１仮想ＩＤに対するペアのためのペアリングのクエリを受信する段階と、
第１仮想ＩＤと第２仮想ＩＤとのペアリングに応答して第２仮想ＩＤを返す段階と、を更に含む。
【０２０４】
説明７５．本発明の実施形態は、説明７４による記録媒体を含み、
第１仮想ＩＤに対するペアのためのペアリングのクエリを受信する段階は、ＡＰＩを介してアプリケーションから第１仮想ＩＤに対するペアのためのペアリングに対するクエリを受信する段階を含み、
第１仮想ＩＤと第２仮想ＩＤとのペアリングに応答して第２仮想ＩＤを返す段階は、第１仮想ＩＤと第２仮想ＩＤとのペアリングに応答してアプリケーションに第２仮想ＩＤを返す段階を含む。
【０２０５】
説明７６．本発明の実施形態は、説明７３による記録媒体を含み、方法は、
ファイルに関連するペアに対するファイルのクエリを受信する段階と、
ファイルを格納するＳＳＤを識別する段階と、
ファイルのクエリに応答して第１仮想ＩＤ及び第２仮想ＩＤを返す段階と、を更に含む。
【０２０６】
説明７７．本発明の実施形態は、説明７３による記録媒体を含み、
ファイルに関連するペアに対するファイルのクエリを受信する段階は、ＡＰＩを介してアプリケーションからファイルに関連するペアに対するファイルのクエリを受信する段階を含み、
ファイルのクエリに応答して第１仮想ＩＤ及び第２仮想ＩＤを返す段階は、ファイルのクエリに応答してアプリケーションに第１の仮想ＩＤ及び第２仮想ＩＤを返す段階を含む。
【０２０７】
以上、本発明の実施形態について図面を参照しながら詳細に説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の技術的思想から逸脱しない範囲内で多様に変更実施することが可能である。
【符号の説明】
【０２０８】
１０５    マシン
１１０    プロセッサ
１１５    メモリ
１２０    メモリコントローラ
１２５、１２５−１、１２５−２、１２５−３、１２５−４、１２５−５、１２５−６、５０５−１、５０５−２、５１０−１、５１０−２、５１５−１、５１５−２、５２０−１、５２０−２    ストレージ装置
１３０−１、１３０−２    コプロセッサ
２０５    ＦＰＧＡ
２１０    ＡＳＩＣ
２１５    ＧＰＵ
２２０    ＴＰＵ
２２５    イレイジャーコーディングコントローラ
２３０    スモールプロセッサコア
３０５    クロック
３１０    ネットワークコネクタ
３１５    バス
３２０    ユーザーインターフェース
３２５    入力／出力エンジン
４０５    オペレーティングシステム
４１０、４１５、４２０、４２５    仮想識別子（ＩＤ）１〜４
４３０、４３５    データストレージ装置
１１０５、１３０５、１４０５    イレイジャーコーディングロジック
【図１】
2020047277.tif 000008
【図２】
2020047277.tif 000009
【図３】
2020047277.tif 000010
【図４】
2020047277.tif 000011
【図５】
2020047277.tif 000012
【図６】
2020047277.tif 000013
【図７】
2020047277.tif 000014
【図８】
2020047277.tif 000015
【図９】
2020047277.tif 000016
【図１０】
2020047277.tif 000017
【図１１】
2020047277.tif 000018
【図１２】
2020047277.tif 000019
【図１３】
2020047277.tif 000020
【図１４】
2020047277.tif 000021
【図１５】
2020047277.tif 000022
【図１６】
2020047277.tif 000023
【図１７】
2020047277.tif 000024
【図１８】
2020047277.tif 000025
【図１９】
2020047277.tif 000026