(57)【特許請求の範囲】
【請求項１】
ポリモルフィック格納装置（ｐｏｌｙｍｏｒｐｈｉｃ  ｓｔｏｒａｇｅ  ｄｅｖｉｃｅ、以下、‘‘ＰＳＤ’’）外部インタフェイスを通じてホストコンピュータと通信する格納システムの構成要素であるＰＳＤであって、
１つ以上のアプリケーションを含むアプリケーションコンテナと、
格納装置内で実行され、
ホストコンピュータからデータ、メッセージ、及びコマンドを有する複数のパケットを受信し、前記複数のパケットに含まれたコマンドに基づいて前記アプリケーションコンテナ内の１つのアプリケーションへ前記複数のパケットをルーティングするＰＳＤカーネルと、
前記１つ以上のアプリケーション及び前記ＰＳＤカーネルの間にインタフェイスを提供するＰＳＤインタフェイス階層と、を含み、
前記ＰＳＤカーネルは、さらに前記ホストコンピュータ上で動作し、格納システムインタフェイスとして動作する複数のデバイスドライバーとインタフェイスし、前記ホストコンピュータから受信した制御コマンドに基づいて前記複数のデバイスドライバーを使用して、ブロックデータ格納装置とキーバリューストア装置の間で格納装置を変換させ、
前記ブロックデータ格納装置は、ブロックアドレスにより識別される複数のデータブロックデータを格納し、前記キーバリューストア装置は複数のキーバリューデータを格納することを特徴とする格納装置。
【請求項２】
前記ホストコンピュータからの前記制御コマンドに従って再構成可能な１つ以上のハードウェアを更に含み、
前記再構成可能なハードウェアは、１つ以上のプロセッサ、不揮発性メモリ、及びＤＲＡＭ（ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）を含むことを特徴とする請求項１に記載の格納装置。
【請求項３】
ＰＳＤ制御インタフェイス及び１つ以上のアプリケーションインタフェイスを有するホストサイドインタフェイスが、前記ホストコンピュータに提供されることを特徴とする請求項１に記載の格納装置。
【請求項４】
前記制御コマンドは、前記ＰＳＤ制御インタフェイスを通じて前記ホストコンピュータから受信されることを特徴とする請求項３に記載の格納装置。
【請求項５】
前記ブロックデータ格納装置は、インストレージコンピューティング装置（ｉｎ−ｓｔｏｒａｇｅ  ｃｏｍｐｕｔｉｎｇ  ｄｅｖｉｃｅ）、Ｈａｄｏｏｐ分散ファイルシステム（Ｈａｄｏｏｐ  ｄｉｓｔｒｉｂｕｔｅｄ  ｆｉｌｅ  ｓｙｓｔｅｍ、ＨＤＦＳ）のブロック型ストレージ装置の何れか１つであることを特徴とする請求項１に記載の格納装置。
【請求項６】
前記ＰＳＤ制御インタフェイスは、前記格納装置に制御コマンド及びメッセージを提供するように構成されることを特徴とする請求項３に記載の格納装置。
【請求項７】
前記アプリケーションインタフェイスは、バックワード交換性を与えるように構成されたエミュレートされたホストサイドインタフェイス（ｅｍｕｌａｔｅｄ  ｈｏｓｔ−ｓｉｄｅ  ｉｎｔｅｒｆａｃｅ）及びＰＳＤ対応アプリケーションインタフェイス（ＰＳＤ−ａｗａｒｅ  ａｐｐｌｉｃａｔｉｏｎ  ｉｎｔｅｒｆａｃｅ）を含むことを特徴とする請求項３に記載の格納装置。
【請求項８】
１つ以上のベンダーコマンド（ｖｅｎｄｏｒ  ｃｏｍｍａｎｄｓ）が、前記ＰＳＤ制御インタフェイスを通じて提供されることを特徴とする請求項３に記載の格納装置。
【請求項９】
前記１つ以上のベンダーコマンドは、前記ＰＳＤ制御インタフェイスを通じて、前記格納装置において動作するアプリケーションを他の格納装置に移動するための移動コマンド（ｍｉｇｒａｔｉｏｎ  ｃｏｍｍａｎｄ）、或いは前記格納装置において動作するアプリケーションを他の格納装置において複製するための複製コマンド（ｄｕｐｌｉｃａｔｉｏｎ  ｃｏｍｍａｎｄ）を含むことを特徴とする請求項８に記載の格納装置。
【請求項１０】
前記アプリケーションは、ＰＳＤのＣＴＸマネージャ及びＰＳＤ制御インタフェイスによって移動及び複製動作が具現される集中化方式（ｃｅｎｔｒａｌｉｚｅｄ  ｍａｎｎｅｒ）或いは、各ＰＳＤが隣接する装置の間でピアツーピア（ｐｅｅｒ−ｔｏ−ｐｅｅｒ）通信に基づいてアプリケーション移動／複製動作を遂行する非集中化方式（ｄｅｃｅｎｔｒａｌｉｚｅｄ  ｍａｎｎｅｒ）により移動されるか、或いは複製されることを特徴とする請求項９に記載の格納装置。
【請求項１１】
ホストコンピュータと、
ポリモルフィック格納装置（ｐｏｌｙｍｏｒｐｈｉｃ  ｓｔｏｒａｇｅ  ｄｅｖｉｃｅ、以下、‘‘ＰＳＤ’’）と、
前記ホストコンピュータと前記ＰＳＤとの間にインタフェイスを提供するＰＳＤ外部インタフェイスと、を含み、
前記ＰＳＤは、
１つ以上のアプリケーションを含むアプリケーションコンテナと、
前記ホストコンピュータからデータ、メッセージ、及びコマンドを有する複数のパケットを受信し、前記複数のパケットに含まれたコマンドに基づいて前記アプリケーションコンテナ内の１つのアプリケーションへ前記複数のパケットをルーティングするＰＳＤカーネルと、
前記１つ以上のアプリケーション及び前記ＰＳＤカーネルの間にインタフェイスを提供するＰＳＤインタフェイス階層と、を含み、
前記ＰＳＤカーネルは、さらに前記ホストコンピュータ上で動作し、格納システムインタフェイスとして動作する複数のデバイスドライバーとインタフェイスし、前記ホストコンピュータから受信した制御コマンドに基づいて前記複数のデバイスドライバーを使用して、ブロックデータ格納装置とキーバリューストア装置の間で格納装置を変換させ、
前記ブロックデータ格納装置は、ブロックアドレスにより識別される複数のデータブロックデータを格納し、前記キーバリューストア装置は複数のキーバリューデータを格納することを特徴とする格納システム。
【請求項１２】
前記ホストコンピュータから制御コマンドに従って再構成される１つ以上のハードウェアを更に含み、
前記再構成されるハードウェアは、１つ以上のプロセッサ、不揮発性メモリ、及びＤＲＡＭ（ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）を含むことを特徴とする請求項１１に記載の格納システム。
【請求項１３】
ＰＳＤ制御インタフェイス及びアプリケーションインタフェイスを有するホストサイドインタフェイスが、前記ホストコンピュータに提供されることを特徴とする請求項１１に記載の格納システム。
【請求項１４】
前記制御コマンドは、前記ＰＳＤ制御インタフェイスを通じて受信されることを特徴とする請求項１３に記載の格納システム。
【請求項１５】
前記ＰＳＤ制御インタフェイスは、前記ＰＳＤに制御コマンド及びメッセージを提供するように構成されることを特徴とする請求項１３に記載の格納システム。
【請求項１６】
ポリモルフィック格納装置（ｐｏｌｙｍｏｒｐｈｉｃ  ｓｔｏｒａｇｅ  ｄｅｖｉｃｅ、以下、‘‘ＰＳＤ’’）外部インタフェイスを通じてホストコンピュータと通信する格納システムの構成要素であるＰＳＤ格納装置の使用時に実行される制御方法において、
前記格納装置のアプリケーションコンテナに１つ以上のアプリケーションを格納する段階と、
ホストコンピュータからデータ、メッセージ、及びコマンドを有する複数のパケットを受信する段階と、
前記複数のパケットに含まれたコマンドに基づいて前記アプリケーションコンテナ内の１つの前記アプリケーションへ前記複数のパケットをルーティングする段階と、
ＰＳＤカーネルが、前記ホストコンピュータ上で動作し、格納システムインタフェイスとして動作する複数のデバイスドライバーとインタフェイスし、ＰＳＤインタフェイスを通じて前記ホストコンピュータから受信した制御コマンドに従って、前記複数のデバイスドライバーを使用して、ブロックデータ格納装置とキーバリューストア装置の間で格納装置を変換させるように、前記ＰＳＤ格納装置で前記ＰＳＤカーネルを実行する段階と、
前記ＰＳＤカーネルによって構成されたように前記ブロックデータ格納装置又は前記キーバリューストア装置として前記ＰＳＤ格納装置を動作する段階と、を含み、
前記ブロックデータ格納装置は、ブロックアドレスにより識別される複数のデータブロックデータを格納し、前記キーバリューストア装置は複数のキーバリューデータを格納することを特徴とする方法。
【請求項１７】
前記ホストコンピュータからの前記制御コマンドに従って１つ以上のハードウェアを再構成する段階を更に含み、
前記再構成されるハードウェアは、１つ以上のプロセッサ、不揮発性メモリ、及びＤＲＡＭ（ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）を含むことを特徴とする請求項１６に記載の方法。
【請求項１８】
前記ホストコンピュータにＰＳＤ制御インタフェイス及びアプリケーションインタフェイスを有するホストサイドインタフェイスを提供する段階を更に含むことを特徴とする請求項１６に記載の方法。
【請求項１９】
前記制御コマンドは、前記ＰＳＤ制御インタフェイスを通じて受信される段階を更に含むことを特徴とする請求項１８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は格納装置に係り、更に詳細には装置制御インタフェイスを通じて相異なる装置に変換可能なポリモルフィック格納装置及びその方法に係る。
【背景技術】
【０００２】
ハードディスクドライバのような伝統的なデータ格納装置と比較して、ＳＳＤｓ（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅｒｓ）は、さらなる複雑性（ｃｏｍｐｌｅｘｉｔｙ）と擬似的に汎用なプログラム可能性（ｐｓｅｕｄｏ−ｇｅｎｅｒａｌ  ｐｒｏｇｒａｍｍａｂｉｌｉｔｙ）を提供する。例えば、フラッシュメモリ基盤のＳＳＤ（複数）は、益々強力なＣＰＵ（複数）と高容量メモリ及びストレージを組み入れ（ｐａｃｋａｇｅ）、このようなリソースをユーザアプリケーション（ｕｓｅｒ  ａｐｐｌｉｃａｔｉｏｎ）に利用可能にする。その上、データ集中化（ｄａｔａ−ｉｎｔｅｎｓｉｖｅ）アプリケーションの場合、コードをデータに移動することはデータをコードに移動することよりはるかに更に効率的であると考えられている。
従って、効率的なデータ処理システムは、早期選択プッシュダウン（ｅａｒｌｙ  ｓｅｌｅｃｔｉｏｎ  ｐｕｓｈｄｏｗｎ）及び早期集約（ｅａｒｌｙ  ａｇｇｒｅｇａｔｉｏｎ、又は  ｐｒｅ−ａｇｇｒｅｇａｔｉｏｎ）のような技術を利用してクエリー（検索要求）処理パイプライン（ｑｕｅｒｙ  ｐｒｏｃｅｓｓｉｎｇ  ｐｉｐｅｌｉｎｅ）のなるべく下の方にコードをプッシュしようと試図（ｔｒｙ）する。同様に、並列或いは分散データ処理システムは、データを保持するノードに近いなるべく多くのクエリーを実行できる。
【０００３】
伝統的に、コード・オフロード（ｃｏｄｅ−ｏｆｆｌｏａｄｉｎｇ）技術は、臨機応変に（アドホック（ａｄ−ｈｏｃ））ＳＳＤのファームウェア及びホストコンピュータのＯＳ（ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍ）を微調整（ｔｗｅａｋ、いじくる）することによって具現された。
永久的なストレージ、揮発性ストレージ、及びプロセシングの間の境界が段々、更に曖昧になっているけれども、ホストＯＳ、ライブラリ、固定されたプロトコル、及び格納装置の抽象化層の間に存在する機能的な分離は、冗長（重複的）な具現をよく（ｃｏｍｍｏｍｌｙ）引き起こし、隘路（ｂｏｔｔｌｅｎｅｃｋ）或いはリソースの浪費屋になり得る。    ＮｏＳＱＬ（ｎｏｎ  ＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ＿Ｑｕｅｒｙ＿Ｌａｍｇａｕａｇｅ）データベース（ＤＢ）（例、キーバリューストア、ドキュメントストア、グラフ、オブジェクトデータベース、等）は、最近のコンピュータシステムで幅広く使用される。関係型（ｒｅｌａｔｉｏｎａｌ）ＤＢと比較して、ＮｏＳＱＬ  ＤＢは簡単、柔軟、軽量、かつ特定ワークロード（ｗｏｒｋｌｏａｄｓ）に対しては優れて拡張性及び大幅な性能向上の利点を期待できる。ビッグデータ（ｂｉｇ  ｄａｔａ）を有するクラウドディングコンピュータ及び大型システムへの速やかな移行は、ＮｏＳＱＬ  ＤＢｓの進展する普及に寄与している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第８，５８３，９３８号公報
【特許文献２】米国特許第７，６７６，６６５号公報
【特許文献３】米国特許第８，８１２，９７６号公報
【特許文献４】米国特許公開第２００９／００９４５９７号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、ハードウェアリソースの使用を削減し、或いは最適化できるポリモルフィック格納装置及びその方法を提供することにある。
【課題を解決するための手段】
【０００６】
本発明の実施形態に係る格納装置は、１つ以上のアプリケーションを含むアプリケーションコンテナ、ホストコンピュータからデータ、メッセージ、及びコマンドを有する複数のパケットを受信し、前記複数のパケットに含まれたコマンドに基づいて前記アプリケーションコンテナ内の１つのアプリケーションへ前記複数のパケットをルーティングするポリモルフィック格納装置（ｐｏｌｙｍｏｒｐｈｉｃ  ｓｔｏｒａｇｅ  ｄｅｖｉｃｅ、以下、“ＰＳＤ”）カーネル、並びに前記１つ以上のアプリケーション及び前記ＰＳＤカーネルの間にインタフェイスを提供するＰＳＤインタフェイス階層を含む。
【０００７】
本発明の実施形態に係る格納システムは、ホストコンピュータ、ＰＳＤ、及び前記ホストコンピュータと前記ＰＳＤとの間にインタフェイスを提供するＰＳＤ制御インタフェイスを含み、前記ＰＳＤは、１つ以上のアプリケーションを含むアプリケーションコンテナ、前記ホストコンピュータからデータ、メッセージ、及びコマンドを有する複数のパケットを受信し、前記複数のパケットに含まれたコマンドに基づいて前記アプリケーションコンテナ内の１つのアプリケーションに前記複数のパケットをルーティングするＰＳＤカーネル、並びに、前記１つ以上のアプリケーション及び前記ＰＳＤカーネルの間にインタフェイスを提供するＰＳＤインタフェイス階層を含む。
【０００８】
本発明の実施形態に係る格納装置の方法は、前記格納装置のアプリケーションコンテナに１つ以上のアプリケーションを格納する段階、ホストコンピュータからデータ、メッセージ、及びコマンドを有する複数のパケットを受信する段階、前記複数のパケットに含まれたコマンドに基づいて前記アプリケーションコンテナからアプリケーションに前記複数のパケットをルーティングする段階、ＰＳＤ制御インタフェイスを通じて前記ホストコンピュータから受信された制御コマンドに従って前記格納装置の１つ以上のハードウェアを構成するように前記格納装置上でＰＳＤカーネルを動作させる段階、並びに前記ＰＳＤカーネルにより構成されたように前記格納装置を動作する段階を含む。
【発明の効果】
【０００９】
本発明の実施形態に係るポリモルフィック格納装置及びその方法は、ポリモルフィック格納装置制御インタフェイスを通じてハードウェアリソースを再構成することによって、リソースの浪費を削減し、或いはリソースの使用を最適化できる。
【図面の簡単な説明】
【００１０】
【図１】伝統的なＮｏＳＱＬデータベースＤＢシステムを示す図面である。
【図２】他の伝統的なＮｏＳＱＬ  ＤＢシステムのためのシステム構造に対する実施形態を示す。
【図３】例示的な格納装置のメモリ制御器の階層を示す図面である。
【図４】本発明の実施形態に係るポリモルフィック格納装置ＰＳＤを有する例示的な格納システムに対するブロックダイヤグラムである。
【図５】本発明の実施形態に係るポリモルフィック格納装置のファームウェアスタック（ｆｉｒｍｗａｒｅ  ｓｔａｃｋ）を示す図面である。
【図６】（Ａ）は、本発明の実施形態に係る集中化方式に従うアプリケーションの移動及び複製を例示的に示す図面であり、（Ｂ）は、本発明の実施形態に係る非集中化方式に従うアプリケーションの移動及び複製を例示的に示す図面である。
【発明を実施するための形態】
【００１１】
ここに開示された特徴及び教示の各々は、装置制御インタフェイスを通じて他の装置に変換できるポリモルフィック格納装置（ｐｏｌｙｍｏｒｐｈｉｃ  ｓｔｏｒａｇｅ  ｄｅｖｉｃｅ）を提供するために、個別的に又は他の特徴及び教示と組み合わせて利用できる。このような追加的特徴及び教示の多くを、個別的に、及び組み合わせて利用する実施形態は、添付された図面を参照して詳細に説明される。このような詳細な説明は単に、当業者が本教示の態様を実行できるよう教示することを意図し、請求項の範囲を制限しない。従って、詳細な説明に上述された特徴の組み合わせは、最も広い意味で教示を実施するためには必要とは限らず、代わりに、単に本教示の特に代表的な実施形態を記述するために教示される。
【００１２】
以下の説明で、説明の目的として、特定名称が本発明の完全な理解を提供するために説明される。しかし、このような特定細部事項は本発明の思想を実施しなくともよいことが当業者に明確である。
【００１３】
本明細書の一部分ではコンピュータメモリ内にデータビットに対する演算のシンボル表現とアルゴリズムの用語で表現される。このようなアルゴリズムの説明及び表現は効果的に他の当業者に作業の実体を伝達するためにデータ処理分野の当業者によって使用される。ここで、アルゴリズムは、伝統的に、最終結果に至る段階の一貫性あるシークェンス（ｓｅｌｆ−ｃｏｎｓｉｓｔｅｎｔ  ｓｅｑｕｅｎｃｅ）が考慮される。段階は物理的量の物理的操作を要求するものである。ほとんど、必須的ではないが、このような量は、便利のためにしばしば電気或いは磁気信号の形態に取ってもよい。このような信号はビット、値、要素、シンボル、キャラクター、用語、数字、或いはそのようなことと言及される。
【００１４】
しかし、これらの全て及び類似な用語は、適切な物理量と連関され単なるこのような量に適用される便利なラベルであることを有意しなければならない。具体的には下の説明から明になるように、説明を通じて、このような“プロセシング”、“コンピューティング”、“計算”、“決定”、“表示”、或いはそのような用語を利用する論議は、コンピュータシステム或いは類似な電子コンピューティング装置のアクション（ａｃｔｉｏｎｓ）及び処理であると言及される。コンピュータシステム或いは類似な電子コンピューティング装置は、コンピュータシステムのレジスター内部の物理的（電子的）量として表現されたデータを、コンピュータシステムメモリ或いはレジスター或いは他の情報格納、伝送或いはディスプレイ装置内の物理的量として類似に表現された他のデータ操作及び変換する。
【００１５】
ここに提供されたアルゴリズムは本質的に任意の特定コンピュータ又は他の装置に関連されたことではない。多様な汎用システム、コンピュータサーバー又は個人用コンピュータは本明細書の教示に従うプログラムと共に使用され、或いは要求された方法段階を遂行するようにより特殊化された装置を構成することが便利であることができる。多様なこれらのシステムのための要求される構造は、下の説明から開示される。多様なプログラミング言語が本明細書に記載されたように発明の教示を具現するのに使用されることもできると理解されるべきである。
【００１６】
また、代表的な実施形態の多様な特徴と従属請求項は本教示の追加的な有用な実施形態を提供するために列挙されない方式に結合されることができる。また、請求された発明を制限する目的のみならず、オリジナル発明の目的のためにエンティティーグループのすべての値の範囲或いは指示は、可能なすべての中間値又は中間エンティティーを開示することが明確である。また、明示的な基準及び図面に図示された構成要素の形状は、本開示で実施される方式を理解できるように設計するが、寸法及び実施形態に示した形状に限定されないことを有意しなければならない。
【００１７】
図１は伝統的なＮｏＳＱＬ＿ＤＢ（データベース）システムを示す図面である。ＮｏＳＱＬ＿ＤＢシステム１００は、オーバラップされた構成要素及び冗長なマッピングを含む。ＮｏＳＱＬ＿ＤＢシステム１００は、ホストコンピュータ１１０及び格納装置１５０を含む。ここで、格納装置１５０はホストツーＳＳＤインタフェイス（Ｈｏｓｔ−ｔｏ−ＳＳＤ  ｉｎｔｅｒｆａｃｅ）１９０を通じてホストコンピュータ１１０と通信する。ホストコンピュータ１１０は、キーをＬＢＡ（ｌｏｇｉｃａｌ  ｂｌｏｃｋ  ａｄｄｒｅｓｓ）変換するためのキーＬＢＡマッピングテーブル１２１を有するＮｏＳＱＬ＿ＤＢ（１２０）、オペレーティングシステム（ＯＳ）１３０、及びＳＳＤインタフェイス１４０を含む。
ホストツーＳＳＤインタフェイス１９０の実例は、下記に限定されないが、ＰＣＩｅ（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ）、ＳＡＳ（ｓｅｒｉａｌ  ａｔｔａｃｈｅｄ  ＳＣＳＩ）、イーサーネット（ｅｔｈｅｒｎｅｔ）、及びＳＡＴＡ（ｓｅｒｉａｌ  ＡＴ  ａｔｔａｃｈｍｅｎｔ）を含み得る。
格納装置１５０はメモリ制御器１６０及び不揮発性メモリ１７０を含む。メモリ制御器１６０はホストインタフェイス１６１、ＬＢＡ−ＰＢＡマッピングテーブル１６２、エラー訂正コード（ＥＣＣ）メモリ１６３、及び不揮発性メモリ１７０とのインタフェイシングのためのフラッシュインタフェイス１６４を含む。ホストコンピュータ１１０と格納装置１５０とは、ホストツーＳＳＤインタフェイス１９０を通じてコマンド、アドレス（ＬＢＡｓ）、及びデータを通信する。
【００１８】
ここで、２つの冗長なマッピング階層が存在する。キー（ｋｅｙ）ＬＢＡマッピングのための第１マッピング階層と、ＬＢＡ−ＰＢＡマッピングのための第２マッピング階層である。伝統的に、ホストコンピュータ１１０及び格納装置１５０は、格納装置１５０における格納位置のアドレスを特定するためにＬＢＡに基づいて互いに通信する。互換性のために、格納装置１５０はＬＢＡを用いて動作し、メモリ制御器１６０のフラッシュ変換階層ＦＴＬ（１６２）はＬＢＡ−ＰＢＡ変換を維持する。
ＦＴＬはＬＢＡ−ＰＢＡマッピングテーブル１６２を利用して論理ブロックアドレス（ＬＢＡ）を物理ブロックアドレス（ＰＢＡ）に変換し、不揮発性メモリ１７０の物理ブロックに対する要請された動作（例、読出し、書込み、読出し／変更（ｍｏｄｉｆｙ）／書込み（ＲＭＷ）、及び削除）を遂行するためにマッピングテーブル１６２によって提示されたように不揮発性メモリ１７０の物理ブロックにアクセスする。
【００１９】
ホストコンピュータ１１０のキーＬＢＡマッピングは、ホストコンピュータと格納装置との間に適切な約束が形成されておれば、省略できる。
図２は、他の伝統的なＮｏＳＱＬＤＢシステムのためのシステムを示す。ＮｏＳＱＬ  ＤＢシステム２００はホストコンピュータ２１０及びホストツーＳＳＤインタフェイス２９０を通じて通信する格納装置２５０を含む。ホストコンピュータ２１０はＮｏＳＱＬユーザアプリケーションプログラムインタフェイス（ＡＰＩ）２２０、オペレーティングシステム（ＯＳ）２３０、及びＳＳＤインタフェイス２４０を含む。図１に示されたホストツーＳＳＤインタフェイス１９０と同様に、ホストツーＳＳＤインタフェイス２９０はＰＣＩｅ、ＳＡＳ、イーサーネット、及びＳＡＴＡ或いはそのようなものの中で任意のものである。
格納装置２５０は不揮発性メモリ２７０とメモリ制御器２６０を含む。メモリ制御器２６０はホストインタフェイス２６１、ＮｏＳＱＬ＿ＤＢ統合（ｉｎｔｅｇｒａｔｅｄ）ＦＴＬ（２６２）、エラー訂正コード（ＥＣＣ）メモリ２６３、及び不揮発性メモリ２７０とのインタフェイシングのためのフラッシュインタフェイス２６４を含む。ＮｏＳＱＬ＿ＤＢ統合（ｉｎｔｅｇｒａｔｅｄ）ＦＴＬ（２６２）はホストコンピュータ２１０内のキーＬＢＡマッピングテーブルを排除する。従って、ＮｏＳＱＬ＿ＤＢシステム２００は、２つの重複マッピング階層を要求する図１のＮｏＳＱＬ＿ＤＢシステム１００と比較して更に集約（ａｇｇｒｅｇａｔｅ）された性能を有する。
【００２０】
ホストコンピュータ２１０及び格納装置２５０は、ホストツーＳＳＤインタフェイス２９０を通じてクエリーコマンド、キー、及びデータを通信する。不揮発性メモリ２７０は、下記に限定されないが、フラッシュメモリ、ＰＲＡＭ（ｐｈａｓｅ  ｃｈａｎｇｅ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、ＳＴＴ−ＭＲＡＭ（ｓｐｉｎ−ｔｒａｎｓｆｅｒ  ｔｏｒｑｕｅ  ｍａｇｎｅｔｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、及びＲｅＲＡＭ（ｒｅｓｉｓｔｉｖｅ  ＲＡＭ）等を含む多様な種類の不揮発性メモリである。
【００２１】
格納装置の行動を定義する本発明のポリモルフィック格納装置（ｐｒｅｓｅｎｔ  ｐｏｌｙｍｏｒｐｈｉｃ  ｓｔｏｒａｇｅ  ｄｅｖｉｃｅ）のファームウェアはファームウェアアップデートを通じて再構成される。ファームウェアアップデートを通じて、本発明のポリモルフィック格納装置はオリジナル構成から異なる型の装置に変換できる。例えば、本発明のポリモルフィック格納装置は、最初、汎用格納装置として構成され、ファームウェアアップデートによって、特殊目的装置に変換できる。このような特殊目的装置は、インストレージコンピューティング装置（ｉｎ−ｓｔｏｒａｇｅ  ｃｏｍｐｕｔｉｎｇ  ｄｅｖｉｃｅ、格納装置内コンピューティング可能な格納装置）、キーバリュー格納装置（ｋｅｙ−ｖａｌｕｅ  ｓｔｏｒｅ  ｄｅｖｉｃｅ）、Ｈａｄｏｏｐ分散ファイルシステム（Ｈａｄｏｏｐ（又は、Ａｐａｃｈｅ＿Ｈａｄｏｏｐ）  ｄｉｓｔｒｉｂｕｔｅｄ  ｆｉｌｅ  ｓｙｓｔｅｍ、ＨＤＦＳ）装置、オブジェクトストア装置（ｏｂｊｅｃｔ−ｓｔｏｒｅ  ｄｅｖｉｃｅ）、その他である。
【００２２】
図３は、従来技術に係る例示的な格納装置のメモリ制御器の階層を示す図面である。メモリ制御器３６０は、ＨＩＬ（ｈｏｓｔ  ｉｎｔｅｒｆａｃｅ  ｌａｙｅｒ、ホストインタフェイス階層）３１０、ＦＴＬ（ｆｌａｓｈ  ｔｒａｎｓｌａｔｉｏｎ  ｌａｙｅｒ、フラッシュ翻訳階層）３２０、ＶＦＬ（ｖｉｒｔｕａｌ  ｆｌａｓｈ  ｌａｙｅｒ、仮想フラッシュ階層）３３０、及びＦＩＬ（ｆｌａｓｈ  ｉｎｔｅｒｆａｃｅ  ｌａｙｅｒ、フラッシュインタフェイス階層）３４０の４つの階層を含む。このような４つの階層は格納装置のファームウェア内に具現される。ここで、該ファームウェアは格納装置に埋め込まれた（ｅｍｂｅｄｄｅｄ）１つ以上のプロセッサ上で作動する。ＨＩＬ（３１０）はＳＡＴＡ、ＳＡＳ、或いはＰＣＩｅと同一バスインタフェイスプロトコルを具現する。ＦＴＬ（３２０）はホストＯＳの論理ブロックアドレス（ＬＢＡ）を格納装置の不揮発性メモリの物理ブロックアドレス（ＰＢＡｓ）にマッピングする役割を遂行する。ＶＦＬ（３３０）及びＦＩＬ（３４０）は格納装置の不揮発性メモリと格納装置のＤＲＡＭとの間のデータを伝送する役割を遂行する。格納装置のファームウェアは、ＥＣＣロジック及びＤＭＡ（ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）を含む他の特徴を提供できる。不揮発性メモリの入出力性能を向上するために、メモリ制御器３６０はチップレベル及び／或いはチャンネルレベルでインタリービング技術を利用できる。
【００２３】
本発明は装置制御インタフェイス（ｄｅｖｉｃｅ  ｃｏｎｔｒｏｌ  ｉｎｔｅｒｆａｃｅ）を通じて１つの形態の装置から他の形態の装置に変換可能であるポリモルフィック格納装置（ｐｏｌｙｍｏｒｐｈｉｃ  ｓｔｏｒａｇｅ  ｄｅｖｉｃｅ、以下、“ＰＳＤ”）を提供する。
図４は本発明の実施形態に係るポリモルフィック格納装置を有する例示的な格納システムに関するブロックダイヤグラムである。格納システム４００はホストコンピュータ４１０、及びＰＳＤ外部インタフェイス４９０を通じてホストコンピュータ４１０と通信するＰＳＤ（４５０）を含む。ホストコンピュータ４１０は、ＰＳＤ（４５０）を再構成するのに使用される複数の装置ドライバ４１１ａ〜４１１ｃを格納するための装置ドライバプール４１３を含む。
ＰＳＤ（４５０）はＰＳＤカーネル４５５、ＰＳＤカーネル４５５とアプリケーション４５１とをインタフェイシングするためのＰＳＤインタフェイス階層（ＰＩＬ）４５２、及び再構成及び拡張可能なハードウェアを含む。ここで、再構成及び拡張可能なハードウェアは複数のＣＰＵ（４６１ａ〜４６１ｄ）、不揮発性メモリ４７０、及びＤＲＡＭ４８０を含む。
ＰＳＤ（４５０）は、再構成及び拡張可能なハードウェアとの通信をアプリケーション４５１に対して可能にする装置ドライバインタフェイスを提供するためのハードウェア抽象化階層（ｈａｒｄｗａｒｅ  ａｂｓｔｒａｃｔｉｏｎ  ｌａｙｅｒ）４５６を更に含む。
本実施形態では、ＰＳＤ（４５０）が再構成及び拡張可能なハードウェアを含むように開示されているが、本発明のＰＳＤ（４５０）は再構成及び拡張可能でないハードウェアを含み得ると理解されるべきである。再構成及び拡張可能なハードウェアはＰＳＤ（４５０）の柔軟性（ｆｌｅｘｉｂｉｌｉｔｙ）及びプログラマビリティ（ｐｒｏｇｒａｍｍａｂｉｌｉｔｙ）を提供できる。
【００２４】
本発明の実施形態において、ホストサイドインタフェイス４１５は第１ユーザインタフェイス４２０、第２ユーザインタフェイス４２１、ＰＳＤ（４５０）のためのＰＳＤ制御インタフェイス４２２を含む。
第１ユーザインタフェイス４２０は、例えば、ファイルシステム（ＦＳ）及び／或いはデータベース（ＤＢ）、或いはそのようなものとのインタフェイスを提供する。第１ユーザインタフェイス４２０を通じて、ファイルシステム及びデータベースに要求される入出力（Ｉ／Ｏ）制御コマンド（例、装置制御コマンド及びメタデータ）４３０はホストコンピュータ４１０へ／から、伝送される。
第２ユーザインタフェイス４２１は、例えばキーバリュー（ＫＶ）ストア及び／或いはオブジェクト（ＯＢＪ）ストアにインタフェイスを提供し、キーバリュー及び／或いはオブジェクトストアのためのクエリー４３１（例、ｐｕｔ、ｇｅｔ）を提供する。
ＰＳＤ制御インタフェイス４２２は、ＰＳＤ（４５０）に対する装置制御インタフェイスであって、ＰＳＤ外部インタフェイス４９０を通じてホストコンピュータ４１０及びＰＳＤ（４５０）にコマンド及びメッセージ４３２を提供する。ホストコンピュータ４１０の装置ドライバプール４１３内の複数の装置ドライバ４１１ａ〜４１１ｃの中で何れか１つを利用して、ＰＳＤ（４５０）はＰＳＤ制御インタフェイス４２２から受信されたコマンド（コマンド及びメッセージ４３２のコマンド部分）に従って構成（或いは再構成）される。
ＰＳＤ制御インタフェイス４２２を通じた該コマンドはＰＳＤ（４５０）で動作するアプリケーション４５１ａ〜４５１ｄを制御する。ここで、ＰＳＤ（４５０）で動作するアプリケーション４５１ａ〜４５１ｄは、ＰＳＤ対応（ＰＳＤ−ａｗａｒｅ、正確には、「ＰＳＤを意識した」である）アプリケーションと言及される。何故ならば、アプリケーション４５１ａ〜４５１ｄは、ＰＳＤ制御インタフェイス４２２を通じて受信された該コマンドを利用してＰＳＤ（４５０）を（再）構成し、ＰＳＤ（４５０）を第１種類の格納装置から第２種類格納装置に変換するからである。
また、ＰＳＤ制御インタフェイス４２２はホストサイドの装置ドライバプール４１３に格納された装置ドライバ及びそれらの装置ドライバマネージャに対する制御も提供する。
【００２５】
本発明の実施形態において、ＰＳＤ外部インタフェイス４９０はバックワード互換性のためのホストサイドユーザインタフェイス４２０、４２１、或いはＰＳＤ（４５０）上で動作するＰＳＤ対応アプリケーション４５１ａ〜４５１ｄを管理及び制御するためのＰＳＤ制御インタフェイス４２２をエミュレート（ｅｍｕｌａｔｅ）する。
ベンダー固有（ｖｅｎｄｏｒ−ｓｐｅｃｉｆｉｃ）コマンドはＰＳＤ外部インタフェイス４９０を通じてＰＳＤ対応アプリケーション４５１ａ〜４５１ｄに提供される。このようなベンダー固有コマンドの実施形態は、下記に限定されないが、“生成（ｃｒｅａｔｅ）”、“開始／停止（ｓｔａｒｔ／ｓｔｏｐ）”、“休止／再開（ｐａｕｓｅ／ｒｅｓｕｍｅ）”、等を含み得る。ＰＳＤ（４５０）はホストコンピュータ４１０と通信してファームウェアアップデートをせずに機能とアプリケーションを追加、削除、及び変更できる。
【００２６】
本発明の実施形態において、ホストコンピュータ４１０とＰＳＤ（４５０）との間のＰＳＤインタフェイス４９０は、ＰＳＤ（４５０）内のオフロードされた（ｏｆｆｌｏａｄｅｄ）或いは集積化された（ｉｎｔｅｇｒａｔｅｄ）機能を提供する。
例えば、ＰＳＤ対応アプリケーション４５１或いはホストサイドアプリケーションは、格納システムインタフェイスとよりは、むしろＰＳＤ（４５０）のユーザインタフェイスと相互作用する。ここで、格納システムインタフェイスはホストＯＳ及びホストコンピュータ４１０の装置ドライバ４１１ａ〜４１１ｃによって伝統的に提供される。
伝統的に、ホストコンピュータ４１０上で動作するホストサイドアプリケーションは、アプリケーションロジックを有するホストコンピュータでその機能性を具現する。本発明の実施形態において、ホストコンピュータ４１０で動作するホストサイドアプリケーションのためのアプリケーションロジックはＰＳＤ（４５０）内に分散される。
例えば、ＰＳＤ（４５０）の集積化されたキーバリューＦＴＬはホストサイドアプリケーションで実質的に（ｖｉｒｔｕａｌｌｙ）全てのロジックを除去でき、キーバリューＮｏＳＱＬ動作のためのユーザＡＰＩのみがＰＳＤ（４５０）のＰＳＤカーネル４５５に提供される。この動作の残りはＰＳＤ（４５０）の内部で処理され、ＰＳＤ対応アプリケーション４５１はＰＳＤ外部インタフェイス４９０を通じて受信されたコマンド及びメッセージを利用してキーバリューＮｏＳＱＬ動作を実行する。
【００２７】
ＰＳＤ（４５０）が１回に１つ以上のアプリケーション（例、４１５ａ〜４５１ｄ）を処理できるので、対応するホストサイド装置ドライバ４１１は装置ドライバプール４１３に存在する。もし、ＰＳＤ（４５０）が装置ドライバの唯一の活性インスタンスを有すれば、装置ドライバプール４１３は伝統的な格納システムと同様の方法で１つの装置ドライバ４１１として動作する。
図４に示したように、ＰＳＤ（４５０）はＰＳＤ（４５０）の内部アプリケーションのインスタンス４５１ａ〜４５１ｄを制御するＰＳＤ制御インタフェイス４２２を利用。この意味で、ＰＳＤ制御インタフェイス４２２がアプリケーション４５１と直接相互作用するのではなく、アプリケーション４５１の制御メカニズムを提供する、という点で、ＰＳＤ制御インタフェイス４２２の提供（ｐｒｏｖｉｓｉｏｎｉｎｇ）は、仮想マシン（ＶＭ）マネージャ或いはハイパーバイザー（ｈｙｐｅｒｖｉｓｏｒ）に類似する。。
【００２８】
多重アプリケーション４５１ａ〜４５１ｄはＰＳＤ（４５０）上で同時に実行される。しかし、ホストコンピュータ４１０とＰＳＤ（４５０）との間の物理的な通信チャンネルの個数は物理的装置の個数により制限される。このような理由で、各アプリケーション４５１ａ〜４５１ｄとＰＳＤ（４５０）の内部アプリケーションコンテナとの間の通信はＰＳＤ（４５０）の内部でマルチプレクシングされ、デマルチプレクシングされ得る。ＰＳＤ外部インタフェイス４９０は任意の物理インタフェイスを含み得る。該物理インタフェイスは、下記に限定されないが、ＳＡＴＡ、ＳＡＳ、ＮＶＭｅ、イーサーネット、ＦＣ（ｆｉｂｅｒ  ｃｈａｎｎｅｌ）、ＩＢ（ＩｎｆｉｎｉＢａｎｄ）、ＲＤＭＡ（ｒｅｍｏｔｅ  ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）、等である。
また、ホストサイドの装置ドライバプール４１３は、物理インタフェイスを提供する現存の通信プロトコル内に全てのメッセージ／コマンド／データを埋め込み／カプセル化（ｅｍｂｅｄ／ｅｎｃａｐｓｕｌａｔｅ）するマルチプレクシングに係る処理を行う。幾つかの実施形態において、ＰＳＤ（４５０）の自己のプロトコルは現存するプロトコルにデータをオーバローディングする際のオーバヘッドを低減するために使用される。
【００２９】
図５は本発明の実施形態に係るポリモルフィック格納装置ＰＳＤのファームウェアスタック（ｆｉｒｍｗａｒｅ  ｓｔａｃｋ）を示す図面である。ＰＳＤファームウェアスタック５００はフラッシュ制御器階層５３５、ＰＳＤカーネル５５５、及びＰＳＤインタフェイス階層５５２、及びアプリケーションコンテナ５１０を含む。アプリケーションコンテナ５１０は１つ以上のアプリケーション５１１ａ、５１１ｂ、５１１ｃを含む。
本発明の実施形態において、アプリケーション５１１ｃは残りのアプリケーション５１１ａ、５１１ｂから自分自身を差別化してＰＳＤ５００で動作する現在のテナント（ｔｅｎａｎｔ）としてユーザアプリケーション５１１ｃと言及される。以後、アプリケーション５１１ａ、５１１ｂ、５１１ｃはアプリケーション５１１として集合的に言及される。アプリケーション５１１は、ホストプロトコル及びメッセージプロセッサ５１３、ＡＴＬ（ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ａｄｄｒｅｓｓ  ｔｒａｎｓｌａｔｉｏｎ  ｌｏｇｉｃ、特定アプリケーション用アドレス変換ロジック）５１４、アプリケーション固有ウェアレベリング（ＷＬ）５１５、及びアプリケーション固有ガーベッジコレクションロジック（ＧＣ）５１６を含む。
【００３０】
例えば、アプリケーション５１１は、キーバリューキャッシングアプリケーション（ｋｅｙ−ｖａｌｕｅ  ｃａｃｈｉｎｇ  ａｐｐｌｉｃａｔｉｏｎ）、ＨＤＦＳ（Ｈａｄｏｏｐ分散ファイルシステム）アプリケーション、及びＭｏｎｇｏＤＢ（ドキュメント指向ＤＢ）アプリケーションの中の何れか１つとする。
キーバリューアプリケーションの場合、アプリケーション固有アドレス変換ロジックＡＴＬ（５１４）はインデックス集積化（ｉｎｄｅｘ−ｉｎｔｅｇｒａｔｅｄ）フラッシュ変換階層ＦＴＬであり得、アプリケーション固有ガーベッジコレクションロジックＧＣ（５１６）はＬＲＵ（ｌｅａｓｔ−ｒｅｃｅｎｔｌｙ  ｕｓｅｄ）リスト（ｌｉｓｔ）を利用することによって更に効率的になる。
ＨＤＦＳアプリケーションの場合、ＡＴＬ（５１４）はメモリ−フットプリントの観点（ｍｅｍｏｒｙ−ｆｏｏｔｐｒｉｎｔ  ｐｅｒｓｐｅｃｔｉｖｅ）からは、例えば細分性（ｇｒａｎｕｌａｒｉｔｙ）のために従来一律に必要とされる６４ＭＢよりも更に小さく構成され得る。従って、該アプリケーション固有アドレス変換ロジックＡＴＬ５１４が必須になる。
その上に、幾つかのＨＤＦＳアプリケーションの場合、ＧＳ５１６及びＷＬ５１５は、それが含む、全部又は大部分のデータがコールドデータ（一旦生成された後に全くアップデートされないデータ）である場合、最小化（或いは最適化）され得る。
ＭｏｎｇｏＤＢアプリケーションの場合、ホスト動作の一部はＡＴＬ（５１４）及びＧＣ（５１６）にオフロードされる。各アプリケーション５１１は該アプリケーション５１１の特性及び要求に適するように相異なるＡＴＬ（５１４）、ＧＣ（５１６）、ＷＬ（５１５）を含む。
【００３１】
フラッシュ制御器階層５３５は仮想フラッシュ階層（ｖｉｒｔｕａｌ  ｆｌａｓｈ  ｌａｙｅｒ、ＶＦＬ）５３０及びフラッシュインタフェイス階層（ＦＩＬ）５４０を含む。フラッシュ制御器階層５３５はＰＳＤの効率性を向上するハードウェア支援を提供する。即ち、フラッシュ制御器階層５３５は、ＰＳＤ上で動作するアプリケーション５１１に依存しながら、フラッシュメモリに効率的なインタフェイスを提供するように再構成及び拡張可能なハードウェアの使用を最適化する。結局、フラッシュ制御器階層５３５は、アプリケーション５１１の特徴を支援するようにファームウェアをアップデートすることによってアップデートされる。
【００３２】
ホストコンピュータから受信されたパケット（例、データ、メッセージ、及びコマンド）は先ず、ＰＳＤカーネル５５５に伝送される。コンテキスト（ＣＴＸ）マネージャ５５６及びＰＳＤカーネル５５５のメッセージ（ＭＳＧ）ルータ５５７は、ホストコンピュータから受信されたパケットをルーティングする役割を遂行する。
ＣＴＸマネージャ５５６は、現在ＰＳＤのテナントとなっているアプリケーションをその特性と共に認識（ａｗａｒｅ）している。そのため、ＣＴＸマネージャ５５６は、現在動作しているアプリケーションと他の現存するアプリケーションの双方をトラッキングするためのアプリケーションＩＤ、及びＡＴＬ（５１４）、ＷＬ（５１５）、及びＧＣ（５１６）に関連する構成のテーブルを含む。
また、ＣＴＸマネージャ５５６は、スタート／ストップ（ｓｔａｒｔ／ｓｔｏｐ）、レジューム（ｒｅｓｕｍｅ）、及びポーズ（ｐａｕｓｅ）（別名、サスペンド（ｓｕｓｐｅｎｄ））、等の、現在テナントのアプリケーションの施行及びライブネス（ｌｉｖｅｎｅｓｓ）（例、コンテキスト制御）を制御する役割を遂行する。
これらのコマンドは、ベンダーコマンドに由来する場合、ＰＳＤ制御インタフェイス４２２を通じてＰＳＤカーネル４５５内のＣＴＸマネージャ５５６に伝えられる。
ＰＳＤカーネル５５５はルーティングされたパケットのカプセル化を解除し、従ってルーティングされたパケットを処理する。例えば、アプリケーションを“クリエート（生成）”するためのコマンドを受信する場合、ＣＴＸマネージャ５５６はホストから提供されたデータと共にアプリケーション５１１のアプリケーションコンテキストを発生する。ホストから提供されるデータは、ＡＴＬ（５１４）、ＷＬ（５１５）、及びＧＣ（５１６）のための構成プロフィール或いはロジック、ＰＳＤ上で実行可能なアプリケーション５１１のバイナリコード、そしてアプリケーション５１１がＰＤＳカーネル５５５と通信可能にするＰＳＤライブラリを含むメタデータを含む。
【００３３】
もし、ホストコンピュータから受信されたメッセージがＰＳＤに登録されたアプリケーション５１１に連関され、登録されたアプリケーション５１１のコンテキストが活性であれば、ＰＳＤカーネル５５５はメッセージ及び対応するデータ及び／或いはコマンドを登録されたアプリケーション５１１にルーティングする。もし、登録されたアプリケーションのコンテキストが非活性であれば、ＰＳＤカーネル５５５はホストコンピュータにエラーメッセージをリターンする。もし、登録されないか、或いは認識されないメッセージがホストコンピュータから受信されれば、ＰＳＤカーネル５５５はホストコンピュータに他のエラーメッセージを伝送する。
【００３４】
ＣＴＸマネージャ５５６はアプリケーションコンテナ５１０を制御する役割を遂行する。ＣＴＸマネージャ５５６はアプリケーション５１１のためのアプリケーションコンテキストを生成し、ＰＳＤのハードウェアリソースをＡＴＬ（５１４）、ＷＬ（５１５）、及びＧＣ（５１６）に分配及び管理する。ＣＴＸマネージャ５５６は仮想マシン（ＶＭ）と類似な完全（フル）仮想化方式（ｆｕｌｌｙ  ｖｉｒｔｕａｌｉｚｅｄ  ｍａｎｎｅｒ）、或いは近似的（パラ）仮想化方式（ｐａｒａ−ｖｉｒｔｕａｌｉｚｅｄ  ｍａｎｎｅｒ）により具現される。
実施形態によっては、アプリケーション５１１はＰＳＤカーネル５５５を具現せずに、一般的な（ｇｅｎｅｒｉｃ）格納装置上で通常の（ｎｏｒｍａｌ）ファームウェアとして動作する。他の実施形態においては、アプリケーション５１１は、アプリケーションの特徴の認識能力を備えたＰＳＤに合わせて特別に設計された新しいアプリケーションとして動作する。
【００３５】
一部のアプリケーション５１１は、アプリケーション固有ウェアレベリングＷＬ及び／或いはガーベッジコレクションＧＣロジックを必要とする。このようなロジックはＰＳＤの性能のために非常に重要である。ＰＳＤカーネル５５５はＰＳＤライブラリ５５８を提供する。ここで、ＰＳＤライブラリ５５８は、アプリケーション固有ＷＬ／ＧＣインタフェイス、及びＰＳＤカーネル５５５とインタフェイスするための一般的なＡＰＩを含む。
後者の場合、アプリケーション５１１は自分自身のＷＬ／ＧＣロジック５１５、５１６を具現する代わりに提供された（一般的な）ライブラリを登録する。前者の場合、ＰＳＤカーネル５５５はＰＳＤファームウェアスタック５００の階層における全ての権限をアプリケーション５１１に提供する代わりに、ＷＬ／ＧＣに関連する作業を一切遂行しない。
【００３６】
アプリケーション５１１はＰＳＤインタフェイス階層５５２を通じて基底のＰＳＤカーネル５５５と通信する。ＰＳＤインタフェイス階層５５２は通信ＡＰＩ及びパケット（例、メッセージ、コマンド、及びデータ）を提供する。ここで、パケットはＰＳＤインタフェイス階層５５２を通じてＰＳＤにパスされる。
【００３７】
複数のアプリケーション５１１は、アプリケーションコンテキストの形態を取って単一のＰＳＤに共存し得る。アプリケーションコンテナ５１０は活性（ａｃｔｉｖｅ）或いは遊休（ｉｄｌｅ）状態にあるアプリケーション５１１のアプリケーションコンテキストを保持する。アプリケーション５１１はアプリケーションロジック、ホストプロトコルとメッセージプロセッサの階層５１３、アプリケーション固有のアドレス変換ロジック（ＡＴＬ）５１４、ウェアレベリング（ＷＬ）ロジック５１５、ガーベッジコレクション（ＧＣ）ロジック５１６、等を含む。
幾つかの実施形態において、ＷＬ及びＧＣロジック５１４、５１５はオプションである。例えば、キーバリューストアアプリケーションは、コアロジックのためのそれらのキーバリュー構造とアルゴリズムを有し得る。ホストプロトコルとメッセージプロセッサの階層５１３はコアロジックの機能のラッパー（ｗｒａｐｐｅｒ）と同様に簡単である。キーバリューストアアプリケーションの場合に、アプリケーション固有のＡＴＬ（５１４）は統合（ｉｎｔｅｇｒａｔｅｄ）ＦＴＬ（例、図２のＮｏＳＱＬ＿ＤＢ統合（ｉｎｔｅｇｒａｔｅｄ）ＦＴＬ（２６２））に合併（ｍｅｒｇｅ）される。
【００３８】
追加的なロジックは、最近のＳＳＤハードウェアの観点からは強制的（ｍａｎｄａｔｏｒｉｌｙ）に要求されるわけではないが、次に述べる因子はＰＳＤの実行を加速できる。ＰＳＤの実行の加速因子の例としては、以下に限定されないが、（ａ）多重ＴＬＢ（ｍｕｌｔｉｐｌｅ  ｔｒａｎｓｌａｔｉｏｎ  ｌｏｏｋａｓｉｄｅ  ｂｕｆｆｅｒｓ、多重の変換ルックアサイドバッファ）或いは更に大きいＴＬＢ、（ｂ）アプリケーションコンテナＩＤを有するキャッシュ、（ｃ）衝突を低減する更に多いバンクを有するメモリ及び／或いはＤＩＭＭ（ｄｕａｌ  ｉｎｌｉｎｅ  ｍｅｍｏｒｙ  ｍｏｄｕｌｅ）当たり、更に多いレジスター、（ｄ）ＤＭＡ（ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）に対す多い柔軟した提供、そして（ｅ）更に多い個数の現存するＤＭＡ、（ｆ）埋め込み型プロセッサから仮想化のための支援、（ｇ）アプリケーションコンテキスト認識フラッシュ制御器、（ｈ）ポリモルフィズム（ｐｏｌｙｍｏｒｐｈｉｓｍ）を敏感に認識するファイングレイン電源制御（ｆｉｎｅ−ｇｒａｉｎ  ｐｏｗｅｒ  ｃｏｎｔｒｏｌ）、（ｉ）ハードウェア支援メッセージルーティング（ｈａｒｄｗａｒｅ−ａｓｓｉｓｔｅｄ  ｍｅｓｓａｇｅ  ｒｏｕｔｉｎｇ）等を含む。
他の実施形態において、ＰＳＤはアプリケーション固有の機能性を加速して提供するＦＰＧＡ（ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）を含む。機械学習（ｍａｃｈｉｎｅ−ｌｅａｒｎｉｇ）カーネル、ビッグデータ処理における科学的計算などのアアプリケーションは、伝統的な装置のＣＰＵ上でコードを走らせるよりＦＰＧＡを用いて加速できる。ここで、ビッグデータ処理は、ニューラルネットワーク（Ｎｅｕｒａｌ  ｎｅｔｗｏｒｋ）、マトリックス操作、ＦＦＴ（ｆａｓｔ  ｆｏｕｒｉｅｒ  ｔｒａｎｓｆｏｒｍ、高速フーリエ変換）、パターンマッチング、等を含む。
【００３９】
一実施形態において、格納システム４００はシングルＰＳＤ（４５０）又は複数のＰＳＤ毎に複数のインスタンス（アプリケーション）を提供する。追加に、格納システム４００は複数のＰＳＤ（４５０）の間における移動（ｍｉｇｒａｔｉｏｎ）及び複製（ｒｅｐｌｉｃａｔｉｏｎ）を支援する。
【００４０】
図６（Ａ）及び図６（Ｂ）は複数のＰＳＤの間におけるアプリケーションの移動及び複製を例示的に示す図面である。複数のＰＳＤ（６５０ａ〜６５０ｃ）は集中化方式（ｃｅｎｔｒａｌｉｚｅｄ  ｍａｎｎｅｒ）或いは非集中化方式（ｄｅｃｅｎｔｒａｌｉｚｅｄ  ｍａｎｎｅｒ）の内の何れか１つの方式によりアプリケーションの移行及び複製を支援する。
【００４１】
図６（Ａ）は本発明の実施形態に係る集中化方式によるアプリケーションの移動及び複製を例示する図面である。ＰＳＤ制御インタフェイス６２２は複数のＰＳＤ（６５０ａ〜６５０ｃ）の間における移動及び複製を遂行するためのコマンド及びメッセージ４３２を提供する。集中化方式の具現の際、移動及び複製動作はＰＳＤ（６５０ａ〜６５０ｃ）のＣＴＸマネージャ（例、図５のＣＴＸマネージャ５５６）及びＰＳＤ制御インタフェイス６２２によって具現される。ＰＳＤ制御インタフェイス６２２は集中化された移動及び複製動作を実行するためのＰＳＤ外部インタフェイス６５３を生成（ｓｐａｗｎ）する。
【００４２】
図６（Ｂ）は本発明の実施形態に係る非集中化方式によるアプリケーションの移動及び複製を例示する図面である。非集中化方式による具現の場合、各ＰＳＤは隣接する装置の間でピアツーピア（ｐｅｅｒ−ｔｏ−ｐｅｅｒ）通信に基づいてアプリケーション移動／複製動作を遂行する。
【００４３】
本発明の実施形態に係る格納装置は、１つ以上のアプリケーションを含むアプリケーションコンテナと、ホストコンピュータからデータ、メッセージ、及びコマンドを有する複数のパケットを受信し、前記複数のパケットに含まれたコマンドに基づいて前記アプリケーションコンテナ内の１つのアプリケーションへ前記複数のパケットをルーティングするポリモルフィック格納装置（ｐｏｌｙｍｏｒｐｈｉｃ  ｓｔｏｒａｇｅ  ｄｅｖｉｃｅ、以下、“ＰＳＤ”）カーネルと、前記１つ以上のアプリケーション及び前記ＰＳＤカーネルの間にインタフェイスを提供するＰＳＤインタフェイス階層と、を含む。
【００４４】
一実施形態において、前記ホストコンピュータからの制御コマンドに従って再構成可能な１つ以上のハードウェアを更に含み、前記再構成可能なハードウェアは１つ以上のプロセッサ、不揮発性メモリ、及びＤＲＡＭ（ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）を含む。
【００４５】
一実施形態において、ＰＳＤ制御インタフェイス及び１つ以上のアプリケーションインタフェイスを有するホストサイドインタフェイスが、前記ホストコンピュータに提供される。
【００４６】
一実施形態において、前記格納装置は、前記ＰＳＤ制御インタフェイスを通じて受信された制御コマンドに従って第１種類の格納装置から第２種類の格納装置に変換される。
【００４７】
一実施形態において、前記第１種類の格納装置はインストレージコンピューティング装置（ｉｎ−ｓｔｏｒａｇｅ  ｃｏｍｐｕｔｉｎｇ  ｄｅｖｉｃｅ）、キーバリューストア（ｋｅｙ−ｖａｌｕｅ  ｓｔｏｒｅ）装置、及びＨａｄｏｏｐ分散ファイルシステム（Ｈａｄｏｏｐ  ｄｉｓｔｒｉｂｕｔｅｄ  ｆｉｌｅ  ｓｙｓｔｅｍ；ＨＤＦＳ）装置、オブジェクト−ストア装置の中の何れか１つであり、前記第２種類の格納装置は前記インストレージコンピューティング装置、前記キーバリューストア装置、及び前記ＨＤＦＳ装置の中の他の１つである。
【００４８】
一実施形態において、前記ＰＳＤ制御インタフェイスは前記格納装置に制御コマンド及びメッセージを提供するように構成される。
【００４９】
一実施形態において、前記アプリケーションインタフェイスは、バックワード交換性のためにエミュレートされたホストサイドインタフェイス（ｅｍｕｌａｔｅｄ  ｈｏｓｔ−ｓｉｄｅ  ｉｎｔｅｒｆａｃｅ）及びＰＳＤ対応アプリケーションインタフェイス（ＰＳＤ−ａｗａｒｅ  ａｐｐｌｉｃａｔｉｏｎ  ｉｎｔｅｒｆａｃｅ）を含む。
【００５０】
一実施形態において、１つ以上のベンダーコマンド（ｖｅｎｄｏｒ  ｃｏｍｍａｎｄｓ）が、前記ＰＳＤ制御インタフェイスを通じて提供されることができる。
【００５１】
一実施形態において、前記１つ以上のベンダーコマンドは、クリエートコマンド（ｃｒｅａｔｅ  ｃｏｍｍａｎｄ）、スタートコマンド（ｓｔａｒｔ  ｃｏｍｍａｎｄ）、ストップコマンド（ｓｔｏｐ  ｃｏｍｍａｎｄ）、ポーズコマンド（ｐａｕｓｅ  ｃｏｍｍａｎｄ）、及びレジュームコマンド（ｒｅｓｕｍｅ）を含む。
【００５２】
一実施形態において、前記１つ以上のベンダーコマンドは、前記ＰＳＤ制御インタフェイスを通じて前記格納装置で動作するアプリケーションを他の格納装置に移動するための移動コマンド（ｍｉｇｒａｔｉｏｎ  ｃｏｍｍａｎｄ）、或いは前記格納装置において動作するアプリケーションを他の格納装置において複製するための複製コマンド（ｄｕｐｌｉｃａｔｉｏｎ  ｃｏｍｍａｎｄ）を含む。
【００５３】
一実施形態において、前記アプリケーションは集中化方式（ｃｅｎｔｒａｌｉｚｅｄ  ｍａｎｎｅｒ）或いは非集中化方式（ｄｅｃｅｎｔｒａｌｉｚｅｄ  ｍａｎｎｅｒ）により移動されるか、或いは複製される。
【００５４】
本発明の実施形態に係る格納システムは、ホストコンピュータと、ポリモルフィック格納装置（ｐｏｌｙｍｏｐｈｉｃ  ｓｔｏｒａｇｅ  ｄｅｖｉｃｅ、以下、“ＰＳＤ”）と、前記ホストコンピュータと前記ＰＳＤとの間にインタフェイスを提供するＰＳＤ外部インタフェイスと、を含み、前記ＰＳＤは１つ以上のアプリケーションを含むアプリケーションコンテナと、前記ホストコンピュータからデータ、メッセージ、及びコマンドを有する複数のパケットを受信し、前記複数のパケットに含まれたコマンドに基づいて前記アプリケーションコンテナ内の１つのアプリケーションへ前記複数のパケットをルーティングするＰＳＤカーネルと、前記１つ以上のアプリケーション及び前記ＰＳＤカーネルの間にインタフェイスを提供するＰＳＤインタフェイス階層と、を含む。
【００５５】
一実施形態において、前記ホストコンピュータから制御コマンドに従って再構成される１つ以上のハードウェアを更に含み、前記ＰＳＤの前記再構成可能なハードウェアは１つ以上のプロセッサ、不揮発性メモリ、及びＤＲＡＭ（ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）を含む。
【００５６】
一実施形態において、ＰＳＤ制御インタフェイス及びアプリケーションインタフェイスを有するホストサイドインタフェイスが、前記ホストコンピュータに提供される。
【００５７】
一実施形態において、前記ＰＳＤは前記ＰＳＤ制御インタフェイスを通じて受信された制御コマンドに従って第１種類の格納装置から格納装置の第２種類の格納装置に変換される。
【００５８】
一実施形態において、前記ＰＳＤ制御インタフェイスは前記ＰＳＤに制御コマンド及びメッセージを提供するように具現される。
【００５９】
本発明の実施形態に係る格納装置の方法は、前記格納装置のアプリケーションコンテナに１つ以上のアプリケーションを格納する段階と、ホストコンピュータ内の１つのからデータ、メッセージ、及びコマンドを有する複数のパケットを受信する段階と、前記複数のパケットに含まれたコマンドに基づいて前記アプリケーションコンテナからアプリケーションに前記複数のパケットをルーティングする段階と、ＰＳＤ（ｐｏｌｙｍｏｒｐｈｉｃ  ｓｔｏｒａｇｅ  ｄｅｖｉｃｅ）制御インタフェイスを通じて前記ホストコンピュータから受信された制御コマンドに従って前記格納装置の１つ以上のハードウェアを（再）構成するように前記格納装置でＰＳＤカーネルを駆動する段階と、前記ＰＳＤカーネルによって構成されたように前記格納装置を動作する段階と、を含む。
【００６０】
一実施形態において、前記ホストコンピュータから制御コマンドに従って１つ以上のハードウェアを再構成する段階を更に含み、前記再構成可能なハードウェアは１つ以上のプロセッサ、不揮発性メモリ、及びＤＲＡＭ（ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）を含む。
【００６１】
一実施形態において、前記ホストコンピュータにＰＳＤ制御インタフェイス及びアプリケーションインタフェイスを有するホストサイドインタフェイスを提供する段階を更に含む。
【００６２】
一実施形態において、前記ＰＳＤ制御インタフェイスを通じて受信された制御コマンドに従って第１種類の格納装置から第２種類の格納装置に前記ＰＳＤを変換させる段階を更に含む。
【００６３】
一方、詳述された本発明の内容は発明を実施するための具体的な実施形態に過ぎない。本発明は具体的であり実際に利用できる手段のみならず、将来の技術で活用できる、抽象的であり且つ概念的なアイディアである技術的思想を含む。
【符号の説明】
【００６４】
１００      伝統的な、ＮｏＳＱＬ＿ＤＢシステム
２００      他の伝統的な、ＮｏＳＱＬ＿ＤＢシステム
１１０、２１０、４１０      ホスト、ホストコンピュータ
１２０      ＮｏＳＱＬ＿ＤＢ
２２０      ＮｏＳＱＬ＿ＡＰＩ
１２１      キーＬＢＡマッピングテーブル
１３０，２３０      ＯＳ
１４０、２４０      ＳＳＤインタフェイス
１５０、２５０      格納装置
１６０、２６０      メモリ制御器
１６１、２６１      ホストインタフェイス
１６２      ＬＢＡ−ＰＢＡマッピングテーブル、ＦＴＬ（フラッシュ変換（翻訳）階層）
２６２      ＮｏＳＱＬ＿ＤＢ統合（ｉｎｔｅｇｒａｔｅｄ）ＦＴＬ
１６３、２６３      エラー訂正コード（ＥＣＣ）メモリ
１６４、２６４      フラッシュインタフェイス
１７０、２７０      不揮発性メモリ
１９０、２９０      ホストツーＳＳＤインタフェイス
３６０      メモリ制御器
３１０      ＨＩＬ（ホストインタフェイス階層）
３２０      ＦＴＬ（フラッシュ翻訳階層）
３３０      ＶＦＬ（仮想フラッシュ階層）
３４０      ＦＩＬ（フラッシュインタフェイス階層）
４００      格納システム
４１０      ホストコンピュータ、ホスト
４１１ａ〜４１１ｃ      装置ドライバ
４１３      装置ドライバプール
４１５      ホストサイドインタフェイス
４２０、４２１      第１、第２ユーザインタフェイス
４２２      ＰＳＤ制御インタフェイス
４３０      入出力（Ｉ／Ｏ）制御コマンド（例、装置制御コマンド及びメタデータ）
４３１      クエリー（ｐｕｔ、ｇｅｔ、等）
４３２      コマンド（再構成、移動／複製）及びメッセージ
４５０      ＰＳＤ、ポリモルフィック格納装置
４５１、４５１ａ〜４５１ｄ      アプリケーション
４５２、４５２ａ〜ｄ      ＰＩＬ（ＰＳＤインタフェイス階層）
４５５      ＰＳＤカーネル
４５６      ハードウェア抽象化階層
４６１、４６１ａ〜４６１ｄ      ＣＰＵ
４８０      ＤＲＡＭ
４９０      ＰＳＤ外部インタフェイス
５００      ＰＳＤファームウェアスタック
５１０      アプリケーションコンテナ
５１１      アプリケーション（集合的名称）
５１１ａ、５１１ｂ      アプリケーション
５１１ｃ      アプリケーション、ユーザアプリケーション
５１３      ホストプロトコル及びメッセージプロセッサ
５１４      ＡＴＬ（アプリケーション固有アドレス変換ロジック）
５１５      ＷＬ（アプリケーション固有ウェアレベリング）
５１６      ＧＣ（アプリケーション固有ガーベッジコレクションロジック）
５３０      ＶＦＬ（仮想フラッシュ階層）
５３５      フラッシュ制御器階層
５４０      ＦＩＬ（フラッシュインタフェイス階層）
５５２      ＰＳＤインタフェイス階層
５５５      ＰＳＤカーネル  ５５６      ＣＴＸ（コンテキスト）マネージャ
５５７      ＭＳＧ（メッセージ）ルータ
５５８      ＰＳＤライブラリ
６２２      ＰＳＤ制御インタフェイス
６５３      ＰＳＤ外部インタフェイス
６５０ａ〜６５０ｃ      ＰＳＤ
【図１】
0006734792.tif 000002
【図２】
0006734792.tif 000003
【図３】
0006734792.tif 000004
【図４】
0006734792.tif 000005
【図５】
0006734792.tif 000006
【図６】
0006734792.tif 000007