(57)【要約】【課題】向上したパフォーマンスを有し、パフォーマンスケイパビルティを自己報告できる不揮発性メモリー貯蔵装置、報告する方法、及びデータを不揮発性メモリーエクスプレスに割り当てる方法を提供する。【解決手段】  本発明の実施例による貯蔵装置は、第１パフォーマンスケイパビリティを有する第１不揮発性貯蔵媒体と、第１パフォーマンスケイパビリティと異なる第２パフォーマンスケイパビリティを有する第２不揮発性貯蔵媒体と、第１パフォーマンスケイパビリティ、第２パフォーマンスケイパビリティ、第１パフォーマンスケイパビリティに対する変化、及び前記第２パフォーマンスケイパビリティに対する変化をホストソフトウェアに報告するように構成された装置コントローラーと、を含むことを特徴とする。【選択図】  図１
2018147490.tif 000002
【特許請求の範囲】
【請求項１】
第１パフォーマンスケイパビリティ（ｐｅｒｆｏｒｍａｎｃｅ  ｃａｐａｂｉｌｉｔｉｅｓ）を有する第１不揮発性貯蔵媒体と、
前記第１パフォーマンスケイパビリティと異なる第２パフォーマンスケイパビリティを有する第２不揮発性貯蔵媒体と、
前記第１パフォーマンスケイパビリティ、前記第２パフォーマンスケイパビリティ、前記第１パフォーマンスケイパビリティに対する変化、及び前記第２パフォーマンスケイパビリティに対する変化をホストソフトウェアに報告（ｒｅｐｏｒｔ）するように構成された装置コントローラーと、を包含することを特徴とする貯蔵装置。
【請求項２】
前記貯蔵装置は、ＮＶＭｅ  ＳＳＤ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  ｅｘｐｒｅｓｓ  Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）である、ことを特徴とする請求項１に記載の貯蔵装置。
【請求項３】
前記装置コントローラーは、
前記第１パフォーマンスケイパビリティに対する前記変化を検出し、前記第１パフォーマンスケイパビリティに対する前記変化を非同期イベント（ａｓｙｎｃｈｒｏｎｏｕｓ  ｅｖｅｎｔ）により、前記ホストソフトウェアに報告するように、さらに構成される、ことを特徴とする請求項１に記載の貯蔵装置。
【請求項４】
前記装置コントローラーは、
装置のパラメーターを収集して装置のパフォーマンスを較正（ｃａｌｉｂｒａｔｅ）し、前記第１パフォーマンスケイパビリティ及び前記第２パフォーマンスケイパビリティを算出（ｃａｌｃｕｌａｔｅ）し、前記ホストソフトウェアに前記第１パフォーマンスケイパビリティ及び第２パフォーマンスケイパビリティを通報することにより、前記第１パフォーマンスケイパビリティ及び第２パフォーマンスケイパビリティを報告するように、さらに構成される、ことを特徴とする請求項１に記載の貯蔵装置。
【請求項５】
前記装置コントローラーは、前記装置コントローラーにおいて前記ホストソフトウェアから較正要請（ｃａｌｉｂｒａｔｉｏｎ  ｒｅｑｕｅｓｔ）が受信された場合、前記第１パフォーマンスケイパビリティ及び前記第２パフォーマンスケイパビリティを報告する、ことを特徴とする請求項４に記載の貯蔵装置。
【請求項６】
前記装置コントローラーは、
前記第１パフォーマンスケイパビリティに対する前記変化について、前記第１不揮発性貯蔵媒体をモニター（ｍｏｎｉｔｏｒ）し、前記第２パフォーマンスケイパビリティに対する前記変化について、前記第２不揮発性貯蔵媒体をモニター（ｍｏｎｉｔｏｒ）し、前記第１パフォーマンスケイパビリティに対する前記変化、又は前記第２パフォーマンスケイパビリティに対する前記変化を検出し、
前記第１パフォーマンスケイパビリティに対する前記変化、又は前記第２パフォーマンスケイパビリティに対する前記変化が検出された場合、装置のパラメーターを収集して装置のパフォーマンスを較正し、前記第１パフォーマンスケイパビリティ及び前記第２パフォーマンスケイパビリティを算出し、前記ホストソフトウェアに前記第１パフォーマンスケイパビリティに対する前記変化又は前記第２パフォーマンスケイパビリティに対する前記変化を通報するようにさらに構成される、ことを特徴とする請求項１に記載の貯蔵装置。
【請求項７】
装置コントローラー及び一つ又はそれ以上の不揮発性メモリー（ＮＶＭ、Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ）ブロックを含む貯蔵装置からホストソフトウェアにパフォーマンスケイパビリティを報告する方法であって、
前記装置コントローラーにより、装置のパラメーターを収集して装置のパフォーマンスを較正するステップと、
前記装置コントローラーにより、装置のパフォーマンス属性（ａｔｔｒｉｂｕｔｅｓ）を算出するステップと、
前記装置コントローラーにより、前記ホストソフトウェアに前記装置のパフォーマンス属性を通報する（ｎｏｔｉｆｙ）ステップと、を包含することを特徴とする報告する方法。
【請求項８】
前記方法は、前記装置コントローラーにおいて、前記ホストソフトウェアから較正要請（ｃａｌｉｂｒａｔｉｏｎ  ｒｅｑｕｅｓｔ）を受信する場合遂行される、ことを特徴とする請求項７に記載の報告する方法。
【請求項９】
前記装置コントローラーにより、前記装置のパフォーマンス属性での変化において、前記貯蔵装置をモニター（ｍｏｎｉｔｏｒ）するステップをさらに包含する、ことを特徴とする請求項７に記載の報告する方法。
【請求項１０】
前記収集するステップ、前記算出するステップ、及び前記通報するステップは前記装置のパフォーマンス属性に対する変化が、前記装置コントローラーにより検出された場合遂行される、ことを特徴とする請求項９に記載の報告する方法。
【請求項１１】
前記通報するステップは非同期イベントにより遂行される、ことを特徴とする請求項１０に記載の報告する方法。
【請求項１２】
前記モニター（ｍｏｎｉｔｏｒ）するステップは、前記装置コントローラーが前記ホストソフトウェアからパフォーマンス変化の通報に対する登録（ｒｅｇｉｓｔｒａｔｉｏｎ）を受信した以後遂行される、ことを特徴とする請求項９に記載の報告する方法。
【請求項１３】
ホストソフトウェアにより、データボリュームパフォーマンス要件（ｄａｔａ  ｖｏｌｕｍｅ  ｐｅｒｆｏｒｍａｎｃｅ  ｒｅｑｕｉｒｅｍｅｎｔｓ）を含むデータを、一つ又はそれ以上の名前空間プロファイルの内の適切な不揮発性メモリーエクスプレス（ＮＶＭｅ、ｎｏｎ−ｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ  ｅｘｐｒｅｓｓ）名前空間プロファイルに割り当てる方法であって、
前記ホストソフトウェアにおいて、前記データボリュームパフォーマンス要件を受信するステップと、
前記ホストソフトウェアにより、前記データボリュームパフォーマンス要件を装置のパフォーマンス属性に変換するステップと、
前記ホストソフトウェアにより、前記装置のパフォーマンス属性を一つ又はそれ以上のＮＶＭｅ名前空間プロファイルのパフォーマンス属性と比較し、一つ又はそれ以上のＮＶＭｅ名前空間プロファイルの内の、どれが前記適切なＮＶＭｅ名前空間プロファイルであるか判別するステップと、
前記一つ又はそれ以上のＮＶＭｅ名前空間プロファイルの内の少なくとも一つが前記適切なＮＶＭｅ名前空間プロファイルであると判別された場合、前記ホストソフトウェアにより、前記データを前記適切なＮＶＭｅ名前空間プロファイルに貯蔵されるように割り当てるステップと、を包含することを特徴とする割り当てる方法。
【請求項１４】
前記方法は、前記一つ又はそれ以上のＮＶＭｅ名前空間プロファイルの内に、前記適切なＮＶＭｅ名前空間プロファイルがないと判別された場合、
前記ホストソフトウェアにより、前記装置のパフォーマンス属性を複数の貯蔵装置の装置パフォーマンス属性を貯蔵する装置のパフォーマンスケイパビリティマトリックスと比較して、前記複数の貯蔵装置の内のどのリソースが前記データボリュームパフォーマンス要件を満足する新しいＮＶＭｅ名前空間プロファイルに割り当てられるかを判別するステップと、
前記ホストソフトウェアにより、前記複数の貯蔵装置の内で、適切なリソースを前記新しいＮＶＭｅ名前空間プロファイルに割り当てることにより、前記新しいＮＶＭｅ名前空間プロファイルを生成するステップと、
前記ホストソフトウェアにより、前記データを前記新しいＮＶＭｅ名前空間プロファイルに貯蔵されるように割り当てるステップと、をさらに包含する、ことを特徴とする請求項１３に記載の割り当てる方法。
【請求項１５】
前記複数の貯蔵装置の各々は、一つ以上のタイプの不揮発性メモリー（ＮＶＭ、ｎｏｎ−ｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ）データブロックを包含する、ことを特徴とする請求項１４に記載の割り当てる方法。
【請求項１６】
前記適切なリソースは、前記複数の貯蔵装置の内の一つ以上のリソースを包含する、ことを特徴とする請求項１４に記載の割り当てる方法。
【請求項１７】
前記装置のパフォーマンス属性を前記装置のパフォーマンスケイパビリティマトリックスと比較するステップの前に、
前記ホストソフトウェアによりかつ前記複数の貯蔵装置から、アップデートされた装置のパフォーマンス属性を要請するステップと、
前記装置のパフォーマンスケイパビリティマトリックスをアップデートするステップと、を包含する、ことを特徴とする請求項１４に記載の割り当てる方法。
【請求項１８】
前記一つ又はそれ以上のＮＶＭｅ名前空間プロファイルの内の一つ以上が前記適切なＮＶＭｅ名前空間プロファイルであると判別された場合、前記データは前記装置のパフォーマンス属性に一番近いパフォーマンス属性を含む、前記適切なＮＶＭｅ名前空間プロファイルに貯蔵されるように割り当てられる、ことを特徴とする請求項１３に記載の割り当てる方法。
【請求項１９】
前記ホストソフトウェアは、前記データボリュームパフォーマンス要件及びデータを、ホストシステムに含まれたアプリケーションから受信し、前記ホストシステムは前記ホストソフトウェアを、さらに包含する、ことを特徴とする請求項１３に記載の割り当てる方法。
【請求項２０】
前記ホストシステムは、複数の貯蔵装置をさらに包含する、ことを特徴とする請求項１９に記載の割り当てる方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリー貯蔵装置に係り、より詳しくは、パフォーマンスケイパビリティ（ｐｅｒｆｏｒｍａｎｃｅ  ｃａｐａｂｉｌｉｔｉｅｓ）を自己報告（ｓｅｌｆ−ｒｅｐｏｒｔｉｎｇ）できる不揮発性メモリー貯蔵装置、パフォーマンスケイパビリティを報告する方法、及びデータを適切な不揮発性メモリーエクスプレス名前空間プロファイルに割り当てる方法に関する。
【背景技術】
【０００２】
不揮発性メモリーエクスプレス（ＮＶＭｅ、Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  ｅｘｐｒｅｓｓ）のソリッドステートドライブ（ＳＳＤ、Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）は、識別コントローラー、及び名前空間識別コマンドなど（ｉｄｅｎｔｉｆｙ  ｃｏｎｔｒｏｌｌｅｒ  ａｎｄ  ｉｄｅｎｔｉｆｙ  ｎａｍｅｓｐａｃｅ  ｃｏｍｍａｎｄｓ）により、装置レベルの情報を提供する。これはＳＳＤの容量、名前空間の個数、ハードウェアキューなどの装置のリソース情報（ｄｅｖｉｃｅ  ｌｅｖｅｌ  ｉｎｆｏｒｍａｔｉｏｎ）を提供する。一般的なホストソフトウェアは、アプリケーション貯蔵容量の要件（ａｐｐｌｉｃａｔｉｏｎ  ｓｔｏｒａｇｅ  ｃａｐａｃｉｔｙ  ｒｅｑｕｉｒｅｍｅｎｔｓ）をＳＳＤにマッピングするにあたっての容量調達のため、斯かる情報を使用する。しかし、ホストソフトウェアがアプリケーションパフォーマンス要件を管理できる斯かる情報がない場合、ホストソフトウェアはデータシートに列挙されたパフォーマンスケイパビリティのようなアウト・オブ・バンド情報（ｏｕｔ−ｏｆ−ｂａｎｄ  ｉｎｆｏｒｍａｔｉｏｎ）を使用する。
【０００３】
相異なるＳＳＤモデルは、相異なるパフォーマンスレベルを支援する。或る所与のＳＳＤモデルに対してさえ、パフォーマンスが装置の容量により変動する。
一般的に、ホストソフトウェアは、装置のモデル、容量、パフォーマンスにより形成された複数のタプル（ｔｕｐｌｅｓ、組）のデータベースを維持し、データベースについての検索サービスを提供する。なお、ホストソフトウェアは、システム寿命の間における、ドライブの追加・削除によるシステム構成の変化に伴って、ドライブのパフォーマンスケイパビリティのアップデートされたデータベースの記録を維持するのに追加的な複雑性をきたす。
【０００４】
ＳＳＤの消耗により、それらのパフォーマンスケイパビリティは減少することが知られている。これはデータシート基盤のパフォーマンス計画を信頼できないようにする。
【０００５】
一般的なＳＳＤのデータシートは、装置のレベルにおいてレイテンシ（ｌａｔｅｎｃｙ）、ランダムＩＯＰＳ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｐｅｒ  Ｓｅｃｏｎｄ）及び順次処理量などの総合的なパフォーマンスを列挙する。しかし、装置当たりの一つ又はそれ以上の名前空間を支援するＳＳＤについて、データシートに列挙されたような総合的なパフォーマンスは、アプリケーションレベルパフォーマンス要件を名前空間にマッピングするにあたって、あまり有用ではない。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許第８４２９６７７Ｂ２号明細書
【特許文献２】米国特許第８４７８７９９Ｂ２号明細書
【特許文献３】米国特許第８９１８５８３Ｂ２号明細書
【特許文献４】米国特許第９４９５４７８Ｂ２号明細書
【特許文献５】米国公開公報特許第２０１２／０１９８１５２Ａ１号明細書
【特許文献６】米国公開公報特許第２０１６／００９８２２５Ａ１号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、向上したパフォーマンスを有し、パフォーマンスケイパビルティを自己報告できる不揮発性メモリー貯蔵装置、パフォーマンスケイパビリティを報告する方法、及びデータを適切な不揮発性メモリーエクスプレス名前空間プロファイルに割り当てる方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の実施例によると、貯蔵装置は、第１パフォーマンスケイパビリティ（ｐｅｒｆｏｒｍａｎｃｅ  ｃａｐａｂｉｌｉｔｉｅｓ）を有する第１不揮発性貯蔵媒体と、前記第１パフォーマンスケイパビリティと異なる第２パフォーマンスケイパビリティを有する第２不揮発性貯蔵媒体と、前記第１パフォーマンスケイパビリティ、前記第２パフォーマンスケイパビリティ、前記第１パフォーマンスケイパビリティに対する変化、及び前記第２パフォーマンスケイパビリティに対する変化をホストソフトウェアに報告（ｒｅｐｏｒｔ）するように構成された装置コントローラーと、を含むことを特徴とする。
【０００９】
本発明の一実施例によると、装置コントローラー及び一つ又はそれ以上の不揮発性メモリー（ＮＶＭ、Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ）ブロックを含む貯蔵装置からホストソフトウェアに、パフォーマンスケイパビリティを報告する方法を提供する。前記方法は前記装置コントローラーにより、装置のパラメーターを収集して装置のパフォーマンスを較正するステップと、前記装置コントローラーにより、装置のパフォーマンス属性を算出するステップと、及び前記装置コントローラーにより、前記ホストソフトウェアに前記装置のパフォーマンス属性を通報するステップと、を包含する。
【００１０】
本発明の実施例によると、ホストソフトウェアにより、データボリュームパフォーマンス要件（ｄａｔａ  ｖｏｌｕｍｅ  ｐｅｒｆｏｒｍａｎｃｅ  ｒｅｑｕｉｒｅｍｅｎｔｓ）を含むデータを一つ又はそれ以上の名前空間プロファイルの内の適切な不揮発性メモリーエクスプレス（ＮＶＭｅ、ｎｏｎ−ｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ  ｅｘｐｒｅｓｓ）名前空間プロファイルに割り当てる方法を提供する。前記方法は前記ホストソフトウェアにおいて、前記データボリュームパフォーマンス要件を受信するステップと、前記ホストソフトウェアにより、前記データボリュームパフォーマンス要件を装置のパフォーマンス属性に変換するステップと、前記ホストソフトウェアにより、前記装置のパフォーマンス属性を一つ又はそれ以上のＮＶＭｅ名前空間プロファイルのパフォーマンス属性と比較し、一つ又はそれ以上のＮＶＭｅ名前空間プロファイルの内の、どれが前記適切なＮＶＭｅ名前空間プロファイルであるか判別するステップと、前記一つ又はそれ以上のＮＶＭｅ名前空間プロファイルの内の少なくとも一つが前記適切なＮＶＭｅ名前空間プロファイルであると判別された場合、前記ホストソフトウェアにより、前記データを前記適切なＮＶＭｅ名前空間プロファイルに貯蔵されるように割り当てるステップと、を包含する。
【発明の効果】
【００１１】
本発明の実施例により、向上したパフォーマンスを有しパフォーマンスケイパビリティを自己報告できる不揮発性メモリー貯蔵装置、報告する方法、及びデータを不揮発性メモリーエクスプレスに割り当てる方法が提供される。
【図面の簡単な説明】
【００１２】
本発明の上述の特徴及び態様、他の特徴及び態様は、詳細な説明、特許請求範囲、及び添付した図面を参照して、理解され、認識されるはずである。
【００１３】
【図１】本発明の実施例によるコンピュータシステムのブロック図である。
【図２】図１の実施例によるコンピュータシステムのブロック図である。
【図３】図１の実施例によるコンピュータシステムの他のブロック図である。
【図４】本発明の他の実施例によるコンピュータシステムのブロック図である。
【図５】本発明の他の実施例によるコンピュータシステムのブロック図である。
【図６】本発明の一実施例による適切なデータボリューム（又は適切な名前空間プロファイル）を検査する方法を示す順序図である。
【図７】本発明の一実施例による適切なデータボリュームを検査する他の方法を示す順序図である。
【図８】本発明の一実施例による適切なデータボリュームを検査する他の方法を示す順序図である。
【図９】本発明の一実施例によるデータボリュームパフォーマンスを較正するか又は初期化する方法を示す順序図である。
【図１０】本発明の一実施例によるデータボリュームパフォーマンスをアップデートする方法を示す順序図である。
【発明を実施するための形態】
【００１４】
本発明による実施例の態様は、パフォーマンスケイパビリティを自己報告（ｓｅｌｆ−ｒｅｐｏｒｔｉｎｇ）できる不揮発性メモリー（ＮＶＭ、Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ）貯蔵装置と関連する。本発明の一実施例によると、ＮＶＭ貯蔵装置は装置コントローラー及び他のパフォーマンスケイパビリティを有する複数の不揮発性貯蔵媒体を包含する。装置コントローラーは複数の不揮発性貯蔵媒体のパフォーマンスケイパビリティを追跡し、貯蔵する。装置コントローラーは、パフォーマンスケイパビリティ、及びパフォーマンスケイパビリティに対する変化をホストソフトウェアに提供する。
【００１５】
添付した図面と関連して以下に記述する詳細な説明は、例示的な実施例についての説明として意図する。詳細な説明は、開示した実施例と関連した本発明の特徴を提示する。しかし、同一又は均等な機能及び構造などが、本発明の思想及び範囲に属すると意図される他の実施例により達成されることが理解されるはずである。特に言及しない限り、類似の参照番号は類似の要素又は特徴などを示すと意図される。
【００１６】
本発明の実施例は、不揮発性メモリー（ＮＶＭ、Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ）貯蔵装置（例えば、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｅｖｉｃｅ））がアプリケーションのパフォーマンス要件をＮＶＭ貯蔵装置にマッピングするにあたって、ホストソフトウェアを支援する内臓されたロジックを含む方法を提供する。
【００１７】
詳細な説明において、‘‘要件（ｒｅｑｕｉｒｅｍｅｎｔｓ）’’（例えば、アプリケーションマッピング要件）の用語を使用するが、仮にそれらが必須的であるとしても、斯かる要求が必須的な条件ではない。例えば、‘‘要件（ｒｅｑｕｉｒｅｍｅｎｔｓ）’’の用語は、理想的条件（ｉｄｅａｌ  ｃｏｎｄｉｔｉｏｎｓ）、最適の条件（ｏｐｔｉｍａｌ  ｃｏｎｄｉｔｉｏｎｓ）、提案された条件（ｓｕｇｇｅｓｔｅｄ  ｃｏｎｄｉｔｉｏｎｓ）、最小条件（ｍｉｎｉｍｕｍ  ｃｏｎｄｉｔｉｏｎｓ）、最大条件（ｍａｘｉｕｍ  ｃｏｎｄｉｔｉｏｎｓ）、プリセット条件（ｐｒｅｓｅｔ  ｃｏｎｄｉｔｉｏｎｓ）、推薦された条件（ｒｅｃｏｍｍｅｎｄｅｄ  ｃｏｎｄｉｔｉｏｎｓ）、及び／または一般条件（ｎｏｒｍａｌ  ｃｏｎｄｉｔｉｏｎｓ）などを表わす。
【００１８】
本発明の実施例は、パフォーマンスケイパビリティ（ｐｅｒｆｏｒｍａｎｃｅ  ｃａｐａｂｉｌｉｔｉｅｓ）をホストソフトウェア階層に提供する新しい装置のレベル特徴及び変化をホストソフトウェアに通報する方法を提示する。本発明の実施例は、ホストソフトウェアにより通信される名前空間プロファイル（ｎａｍｅｓｐａｃｅ  ｐｒｏｆｉｌｅｓ）に装置のリソースを知能的に割り当てられる、新しい装置のレベル特徴を提示する。
【００１９】
本発明の実施例は、アプリケーションパフォーマンス要件をＮＶＭ貯蔵装置に最適にマッチングさせるため、単純化されたソフトウェアを構成するにあたって、新しい装置のレベル特徴に影響を与える新しいホストソフトウェア方法を提示し、細部レベル（ｆｉｎｅｒ  ｇｒａｎｕｌａｒ  ｌｅｖｅｌ）におけるパフォーマンスプロファイルを提示する。本発明の実施例は貯蔵システムの内で、他のパフォーマンスケイパビルティを有する異種貯蔵装置（ｈｅｔｅｒｏｇｅｎｅｏｕｓ  ｓｔｏｒａｇｅ  ｄｅｖｉｃｅｓ）を管理できる。
【００２０】
図１は、本発明の一実施例によるコンピュータシステムのブロック図を示す。図１を参照すると、コンピュータシステム１００は不揮発性メモリー（ＮＶＭ、Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ）貯蔵装置２００、ホストソフトウェア３００、及び一つ又はそれ以上のアプリケーション３２０を包含する。ＮＶＭ貯蔵装置２００は装置コントローラー２２０及びＮＶＭデータブロック２４０を包含する。一つ又はそれ以上のアプリケーション３２０はＮ（Ｎは整数）個のアプリケーション（例えば、第１乃至第Ｎアプリケーション）を包含する。
【００２１】
一つ又はそれ以上のアプリケーション３２０は、最適なパフォーマンス（ｏｐｔｉｍａｌ  ｐｅｒｆｏｒｍａｎｃｅ）のために、他のアプリケーションデータボリュームパフォーマンス要件（ａｐｐｌｉｃａｔｉｏｎ  ｄａｔａ  ｖｏｌｕｍｅ  ｐｅｒｆｏｒｍａｎｃｅ  ｒｅｑｕｉｒｅｍｅｎｔｓ）（例えば、データ読込み及び書込み要件）を包含する。一つ又はそれ以上のアプリケーション３２０の全部に対する全てのデータが同一のタイプのデータブロックに貯蔵された場合、データボリュームパフォーマンス特性（ｄａｔａ  ｖｏｌｕｍｅ  ｐｅｒｆｏｒｍａｎｃｅ  ｃｈａｒａｃｔｅｒｉｓｔｉｃｓ）は、最適より高いか又は最適より低いか、又は最適であり得る。データボリュームパフォーマンス特性が低すぎる場合、一つ又はそれ以上のアプリケーション３２０は最適に作動できないこともあり得る。データボリュームパフォーマンス特性が一つ又はそれ以上のアプリケーション３２０に対して、最適より高い場合、貯蔵装置に対するコスト（ｃｏｓｔ）がかかりすぎる。
【００２２】
本発明の実施例によると、一つ又は一つ以上のアプリケーション３２０は、それらのアプリケーションデータボリュームパフォーマンス要件をホストソフトウェア３００に直接提供する。本発明の他の実施例によると、アプリケーションはそれらのデータボリュームパフォーマンス要件をアプリケーション管理ソフトウェアに提供する。アプリケーション管理ソフトウェアはホストソフトウェア３００に対するアプリケーションデータを管理する。
【００２３】
ホストソフトウェア３００（又はアプリケーション管理ソフトウェア）が、アプリケーション３２０の要求を満足するデータボリュームパフォーマンス特性を検索するための要請を受信した場合、ホストソフトウェア３００はデータボリュームパフォーマンス特性を装置のパフォーマンス属性（ｄｅｖｉｃｅ  ｐｅｒｆｏｒｍａｎｃｅ  ａｔｔｒｉｂｕｔｅｓ）に変換する。
【００２４】
ホストソフトウェア３００は、ＮＶＭデータブロック２４０及び／又は一つ又はそれ以上のデータボリューム（図４参照）の各々に対する装置のパフォーマンス属性を貯蔵するデータベース（ｄａｔａｂａｓｅ）を維持する。又は、装置コントローラー２２０はＮＶＭデータブロック２４０及び／又は一つ又はそれ以上のデータボリューム（図４参照）の各々に対する装置のパフォーマンス属性を貯蔵するデータベース（ｄａｔａｂａｓｅ）を維持する。
【００２５】
一部の実施例によると、ホストソフトウェア３００がデータボリュームパフォーマンス特性を装置のパフォーマンス属性に変換した後に、ホストソフトウェア３００は変換された装置のパフォーマンス属性をホストソフトウェア３００によって維持されるデータベースに貯蔵された装置のパフォーマンス属性と比較し、ＮＶＭデータブロック２４０が可用である（ａｖａｉｌａｂｌｅ）か判別する。適切なマッチングが可用であるか判別するにあたって、ホストソフトウェア３００は読込み速度、書込み速度、容量などを考慮する。一部の実施例によると、ホストソフトウェア３００は装置のパフォーマンス属性の全てを超過するか又は満足するＮＶＭデータブロック２４０が存在する場合にのみ、そのＮＶＭデータブロック２４０が可用であると判別する。他の実施例によると、ホストソフトウェア３００は装置のパフォーマンス属性の一部又は大部分を超過するか又は満足するＮＶＭデータブロックが存在する場合に、そのＮＶＭデータブロック２４０が可用であると判別する。また、他の実施例によると、ホストソフトウェア３００は装置のパフォーマンス属性の各々に対して、特定の比率又はそれ以上（例えば、９０％又は９５％以上）を持つＮＶＭデータブロック２４０が存在する場合に、そのＮＶＭデータブロック２４０が可用であると判別する。
【００２６】
一つ以上の適切なＮＶＭデータブロック２４０が存在する場合、ホストソフトウェア３００は変換された装置のパフォーマンス属性に一番近い装置のパフォーマンス属性を有するＮＶＭデータブロック２４０を選択する。しかし、本発明はこれに限定されず、例えば、ホストソフトウェア３００は最高の可用貯蔵空間、最低の可用貯蔵空間、最高容量、最低容量、最高読込み速度、最低読込み速度、最高書込み速度、及び／又は最低書込み速度などを有するＮＶＭデータブロック２４０を選択する。
【００２７】
ホストソフトウェア３００がアプリケーション管理ソフトウェアを含む場合、ホストソフトウェア３００はアプリケーション管理ソフトウェアに適切なＮＶＭデータブロック２４０を通報する。
【００２８】
他の実施例によると、ホストソフトウェア３００がデータボリュームパフォーマンス特性を装置のパフォーマンス属性に変換した後に、ホストソフトウェア３００は装置のパフォーマンス属性及びマッチングするＮＶＭデータブロック２４０を検索するための要請を装置コントローラー２２０に提供する。以後、装置コントロ−ラー２２０は、変換された装置のパフォーマンス属性を装置コントローラー２２０によって維持されるデータベースに貯蔵された装置のパフォーマンス属性と比較し、適切なＮＶＭデータブロック２４０が可用であるか判別する。適切なマッチングが可用であるか判別するにあたって、装置コントローラー２２０は読込み速度、書込み速度、容量などを考慮する。一部の実施例によると、装置コントローラー２２０は、装置のパフォーマンス属性の全てを超過するか又は満足するＮＶＭデータブロック２４０が存在する場合にのみ、そのＮＶＭデータブロック２４０が可用であると判別する。他の実施例においては、装置コントローラー２２０は装置のパフォーマンス属性の一部又は大部分を超過するか又は満足するＮＶＭデータブロック２４０が存在する場合に、そのＮＶＭデータブロック２４０が可用であると判別する。また、他の実施例においては、装置コントローラー２２０は装置のパフォーマンス属性の各々について特定の比率又はそれ以上（例えば、９０％又は９５％）を有するＮＶＭデータブロック２４０が存在する場合に、そのＮＶＭデータブロック２４０が可用であると判別する。
【００２９】
二つ以上の適切なＮＶＭデータブロック２４０が存在する場合、装置コントローラー２２０は、変換された装置のパフォーマンス属性に一番近い装置のパフォーマンス属性を含むＮＶＭデータブロック２４０を選択する。しかし、本発明はこれに限定されず、例えば、装置コントローラー２２０は、最高の可用貯蔵空間、最低の可用貯蔵空間、最高容量、最低容量、最高読込み速度、最低読込み速度、最高書込み速度、及び／又は最低書込み速度などを有するＮＶＭデータブロック２４０を選択する。
【００３０】
装置コントローラ２２０は、適切で可用なＮＶＭデータブロック２４０が存在するか否かをホストソフトウェア３００に通報する。適切で可用なＮＶＭデータブロック２４０が存在する場合、装置コントローラー２２０は装置コントローラー２２０がどのＮＶＭデータブロック２４０を選択したかをホストソフトウェア３００に通報する。
【００３１】
ホストソフトウェア３００がアプリケーション管理ソフトウェアを含む場合、ホストソフトウェア３００は適切なＮＶＭデータブロック２４０をアプリケーション管理ソフトウェアに通報する。
【００３２】
このように、装置のケイパビリティを基盤にして、ホストソフトウェア３００又は装置コントローラー２２０は、装置をマッピングしてアプリケーションの容量要件を満足させる。
【００３３】
ホストソフトウェア３００は、標準に定義されたインターフェース（例えば、ＳＣＳＩである場合、ＳＣＳＩ  ＩＮＱＵＩＲＹコマンド、ＮＶＭｅ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  ｅｘｐｒｅｓｓ）である場合、Ｉｄｅｎｔｉｆｙ  Ｃｏｎｔｒｏｌｌｅｒ  ａｎｄ  Ｉｄｅｎｔｉｆｙ  Ｎａｍｅｓｐａｃｅコマンドであり得る。）を使用して装置コントローラーと通信する。しかし、既存のインターフェースは装置のパフォーマンス属性に対する、いかなる情報も提供しない。
【００３４】
本発明の一部の実施例によると、ＮＶＭ貯蔵装置２００はＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、又はハイブリッドＳＳＤ−ＨＤＤであり得るが、本発明はこれに制限されない。適切な不揮発性メモリーのデータ貯蔵装置がＮＶＭ貯蔵装置２００として使用される。ＮＶＭデータブロック２４０はフラッシュメモリーであり得るが、本発明はこれに制限されない。
【００３５】
図２は図１の実施例によるコンピュータシステムのブロック図である。図２はホストソフトウェア３００がパフォーマンス属性を要請して、ホストソフトウェア３００が、パフォーマンス属性の報告（ｒｅｐｏｒｔ）を受信する方法を示す。装置コントローラ２２０はこのようなメカニズム（ｍｅｃｈａｎｉｓｍ）を使用してパフォーマンス属性をホストソフトウェア３００に報告する。
【００３６】
ホストソフトウェア３００は、装置コントローラー２２０にパフォーマンス属性を要請する。スタート時に（ａｔ  ｓｔａｒｔ−ｕｐ）、ホストソフトウェアがＮＶＭ貯蔵装置２００（図１参照）の一部の変化を検出する時、及び／又は設定された時間が経過した後に、ホストソフトウェア３００はパフォーマンス属性を要請する。
【００３７】
ＮＶＭ貯蔵装置２００は、装置コントローラー２２０及び装置パフォーマンスモニター４００を包含する。装置パフォーマンスモニター４００は装置コントローラー２２０の一部であるか又は装置コントローラー２２０と区分される。
【００３８】
装置コントローラー２２０がホストソフトウェア３００からパフォーマンス属性に対する要請を受信した場合、装置コントローラー２２０は装置のパフォーマンスモニター４００にパフォーマンス属性を要請する。
【００３９】
装置パフォーマンスモニター４００は、ＮＶＭデータブロック２４０（図１参照）のパフォーマンスをモニター（ｍｏｎｉｔｏｒ）する。本発明の実施例によると、装置パフォーマンスモニター４００はモニタリング方式（ｍｏｎｉｔｏｒｉｎｇ  ｓｃｈｅｍｅ）により、ＮＶＭデータブロック２４０をモニターする。モニタリング方式は連続的に（ｃｏｎｔｉｎｕｏｕｓｌｙ）ＮＶＭデータブロック２４０をモニターする方式、設定されたスケジュール（ｓｅｔ  ｓｃｈｅｄｕｌｅ）によりＮＶＭブロックをモニターする方式、及び／又はランダムに（ｒａｎｄｏｍｌｙ）ＮＶＭデータブロック２４０をモニターする方式などである。
【００４０】
本発明の実施例によると、装置パフォーマンスモニター４００がパフォーマンス属性に対する要請を受信した場合、装置パフォーマンスモニター４００は上述したモニタリング方式を基盤にして獲得された現在の（又は最近の）装置のパフォーマンス属性を判別する。本発明の他の実施例によると、装置パフォーマンスモニター４００が装置のパフォーマンス属性に対する要請を受信した場合、装置パフォーマンスモニター４００は現在の装置のパフォーマンス属性を判別するために、ＮＶＭデータブロック２４０をポーリング（ｐｏｌｌｉｎｇ）するか又はテストする。
【００４１】
装置パフォーマンスモニター４００が現在の装置のパフォーマンス属性を判別した場合、装置パフォーマンスモニター４００は現在の装置のパフォーマンス属性を装置コントローラー２２０に報告する。
【００４２】
装置コントローラー２２０が現在の装置のパフォーマンス属性を受信した場合、装置コントローラー２２０は現在の装置のパフォーマンス属性をホストソフトウェア３００に報告する。
【００４３】
図３は、図１の実施例によるコンピュータシステムの他のブロック図である。図３は、ホストソフトウェア３００が動的パフォーマンス変化の通報（ｄｙｎａｍｉｃ  ｐｅｒｆｏｒｍａｎｃｅ  ｃｈａｎｇｅ  ｎｏｔｉｆｉｃａｔｉｏｎｓ）に登録して、ホストソフトウェア３００が動的パフォーマンス変化の通報を受信する方法を示す。装置コントローラー２２０は、斯かるメカニズムを使用し、ホストソフトウェア３００に装置のパフォーマンスに対する重要な変化（ｓｉｇｎｉｆｉｃａｎｔ  ｃｈａｎｇｅｓ）を通報する。
【００４４】
ホストソフトウェア３００は、装置コントローラー２２０からパフォーマンス変化の通報（ｐｅｒｆｏｒｍａｎｃｅ  ｃｈａｎｇｅ  ｎｏｔｉｆｉｃａｔｉｏｎｓ）を受信するために登録する。例えば、ホストソフトウェア３００は、パフォーマンス変化の通報に対する登録要請（ｒｅｇｉｓｔｅｒ  ｒｅｑｕｅｓｔ）を装置コントローラー２２０に伝送する。ホストソフトウェア３００はＮＶＭデータブロック２４０（図１参照）のパフォーマンス属性に対する変化（例えば、重要な変化（ｓｉｇｎｉｆｉｃａｎｔ  ｃｈａｎｇｅｓ））が非同期イベントにより報告されるように要請する。非同期イベントは、主要プログラムの流れと独立的に発生される。斯かるイベントは、主要プログラムの流れが継続されるようにする非遮断型方式（ｎｏｎ−ｂｌｏｃｋｉｎｇ  ｓｃｈｅｍｅ）により実行される。
【００４５】
ＮＶＭ貯蔵装置２００は、装置コントローラー２２０及び装置パフォーマンスモニター４００を包含する。装置パフォーマンスモニター４００は装置コントローラー２２０の一部であるか又は装置コントローラー２２０と別個である。
【００４６】
装置パフォーマンスモニター４００は、ＮＶＭデータブロック２４０のパフォーマンスをモニターする。本発明の一実施例によると、装置パフォーマンスモニター４００はモニタリング方式によりＮＶＭデータブロック２４０をモニターする。モニタリング方式は、連続的に（ｃｏｎｔｉｎｕｏｕｓｌｙ）ＮＶＭデータブロック２４０をモニターする方式、設定されたスケジュール（ｓｅｔ  ｓｃｈｅｄｕｌｅ）によりＮＶＭブロックをモニターする方式、及び／又はランダムに（ｒａｎｄｏｍｌｙ）ＮＶＭデータブロック２４０をモニターする方式などである。
【００４７】
装置パフォーマンスモニター４００が、装置のパフォーマンス属性において、重要な変化（ｓｉｇｎｉｆｉｃａｎｔ  ｃｈａｎｇｅｓ）が発生したと判別した場合、装置パフォーマンスモニター４００は装置コントローラー２２０に変化が発生したことを通報し、装置コントローラー２２０に現在の装置のパフォーマンス属性を通報する。
【００４８】
装置コントローラー２２０が装置のパフォーマンス属性に対する変化の通報を受信した場合、装置コントローラー２２０は現在の装置のパフォーマンス属性を非同期イベントにより、ホストソフトウェア３００に報告する。
【００４９】
図４は、本発明の他の実施例によるコンピュータシステムのブロック図である。図４を参照すると、コンピュータシステム１０２は不揮発性メモリー（ＮＶＭ、Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ）貯蔵装置２０２、ホストソフトウェア３０２、及び一つ又はそれ以上のアプリケーション３２２を包含する。ＮＶＭ貯蔵装置２０２は装置コントローラー２２２、第１ＮＶＭデータブロック２４２、及び第２ＮＶＭデータブロック２４４を包含する。装置コントローラー２２２は第１データボリューム２２４Ａ（又は第１パフォーマンスプロファイル）及び第２データボリューム２２４Ｂ（又は第２パフォーマンスプロファイル）を包含する。データボリュームの各々は、各々に割り当てられたＮＶＭデータブロックに対する情報を包含する。例えば、データボリュームの各々は、データボリュームに割り当てられたＮＶＭデータブロックの容量２２８Ａ、２２８Ｂ及びデータボリュームのパフォーマンス特性２２６Ａ、２２６Ｂに対する情報を包含する。一つ又はそれ以上のアプリケーション３２２はＮ（Ｎは整数）個のアプリケーション（例えば、第１乃至第Ｎアプリケーション）を包含する。
【００５０】
図４は、二つのデータボリューム（第１データボリューム２２４Ａ及び第２データボリューム２２４Ｂ）及び二つの形態のＮＶＭデータブロック（第１ＮＶＭデータブロック２４２及び第２ＮＶＭ  データブロック２４４）を含むＮＶＭ貯蔵装置２０２を示すが、本発明はこれに制限されない。例えば、ＮＶＭ貯蔵装置２０２は二つ以上のデータボリューム及び／又は二つ以上のタイプのＮＶＭデータブロックを包含できる。
【００５１】
一つ又はそれ以上のアプリケーション３２２は、最適なパフォーマンスのために、他のアプリケーションデータボリュームパフォーマンス要件（例えば、データの読み込み及び書込みの要件）を包含する。一つ又はそれ以上のアプリケーション３２２の全部に対する全てのデータが全て同一のタイプのデータブロックに貯蔵された場合、データボリュームパフォーマンス特性が最適より高いか、最適より低いか、又は最適であり得る。データボリュームパフォーマンス特性が低すぎる場合、一つ又はそれ以上のアプリケーション３２２は最適に作動できないことも有る。データボリュームパフォーマンス特性が一つ又はそれ以上のアプリケーション３２２に対する最適より高い場合、貯蔵装置に対するコストがかかりすぎる。
【００５２】
本発明の実施例によると、一つ又はそれ以上のアプリケーション３２２は、それらのアプリケーションデータボリュームパフォーマンス要件をホストソフトウェア３０２に、直接に提供する。本発明の他の実施例によると、アプリケーションはそれらのアプリケーションデータボリュームパフォーマンス要件をアプリケーション管理ソフトウェアに提供する。アプリケーション管理ソフトウェアは、ホストソフトウェア３０２に対するアプリケーションデータを管理する。
【００５３】
ホストソフトウェア３０２は、第１データボリューム２２４Ａ及び第２データボリューム２２４Ｂに対するデータボリュームパフォーマンス特性（ｄａｔａ  ｖｏｌｕｍｅ  ｐｅｒｆｏｒｍａｎｃｅ  ｃｈａｒａｃｔｅｒｉｓｔｉｃｓ）を貯蔵するデータベースを維持する。又は、装置コントローラー２２２は第１データボリューム２２４Ａ及び第２データボリューム２２４Ｂに対するデータボリュームパフォーマンス特性を貯蔵するデータベースを維持する。
【００５４】
本発明の実施例によると、ホストソフトウェア３０２（又はアプリケーション管理ソフトウェア）がアプリケーション３２２の要求を満足するデータボリュームパフォーマンス特性を検索するための要請を受信した場合、ホストソフトウェア３０２は要請されたデータボリュームパフォーマンス特性を、ホストソフトウェア３０２により維持されるデータベースに貯蔵されたデータボリュームパフォーマンス特性と比較して、適切なデータボリュームが可用であるか判別する。適切なマッチングが可用であるか判別する時、ホストソフトウェア３０２は読込み速度、書込み速度、容量などを考慮する。一部の実施例によると、ホストソフトウェア３０２はデータボリュームパフォーマンス特性の全てを超過するか又は満足するデータボリュームが存在する場合にのみ、適切なデータボリュームが可用であると判別する。他の実施例によると、ホストソフトウェア３０２はデータボリュームパフォーマンス特性の内で、一部又は大部分を超過するか又は満足するデータボリュームが存在する場合に、適切なデータボリュームが可用であると判別する。また、本発明の他の実施例によると、ホストソフトウェア３０２は、データボリュームパフォーマンス特性の各々に対して、特定の比率又はそれ以上（例えば、９０％又は９５％）を持つデータボリュームが存在する場合、適切なデータボリュームが可用であると判別する。
【００５５】
一つ以上の適切なデータボリュームが存在する場合、ホストソフトウェア３０２は要請されたデータボリュームパフォーマンス特性に一番近いデータボリューム特性を持つデータボリュームを選択する。しかし、本発明はこれに制限されるのではなく、例えば、ホストソフトウェア３０２は最高の可用貯蔵空間、最低の可用貯蔵空間、最高容量、最低容量、最高読込み速度、最低読込み速度、最高書込み速度、及び／又は最低書込み速度などを持つＮＶＭデータブロック２４０を選択する。
【００５６】
ホストソフトウェア３０２がアプリケーション管理ソフトウェアを包含する場合、ホストソフトウェア３０２はアプリケーション管理ソフトウェアに適切なデータボリュームを通報する。
【００５７】
本発明の他の実施例によると、ホストソフトウェア３０２（又はアプリケーション管理ソフトウェア）がアプリケーション３２２の要求を満足させるデータボリュームパフォーマンス特性を検索するための要請を受信した場合、ホストソフトウェア３０２は要請されたデータボリュームパフォーマンス特性及びマッチングされたデータボリュームを検索するための要請を装置コントローラー２２２に提供する。以後、装置コントローラー２２２は要請されたデータボリュームパフォーマンス特性を、装置コントローラー２２２により維持されるデータベースに貯蔵された装置のボリュームパフォーマンス特性と比較して、適切なデータボリュームが可用であるか判別する。適切なマッチングが可用であるか判別する時、装置コントローラー２２２は読込み速度、書込み速度、容量などを考慮する。一部の実施例によると、装置コントローラー２２２はデータボリュームパフォーマンス特性の全てを超過するか又は満足するデータボリュームが存在する場合にのみ、適切なデータボリュームが可用であると判別する。他の実施例によると、装置コントローラー２２２はデータボリュームパフォーマンス特性の内で、一部又は大部分を超過するか又は満足するデータボリュームが存在する場合に、適切なデータボリュームが可用であると判別する。本発明の他の実施例によると、装置コントローラー２２２は、データボリュームパフォーマンス特性の各々に対して、特定の比率又はそれ以上（例えば、９０％又は９５％）を持つデータボリュームが存在する場合、適切なデータボリュームが可用であると判別する。
【００５８】
一つ以上の適切なデータボリュームが存在する場合、装置コントローラー２２２は要求されたデータボリュームパフォーマンス特性に一番近いデータボリューム特性を持つデータボリュームを選択する。しかし、本発明はこれに制限されず、例えば、装置コントローラー２２２は最高の可用貯蔵空間、最低の可用貯蔵空間、最高容量、最低容量、最高読込み速度、最低読込み速度、最高書込み速度、及び／又は最低書込み速度などを有するデータボリュームを選択する。
【００５９】
装置コントローラー２２２は、適切な可用データボリュームが存在するか否かをホストソフトウェア３０２に通報する。適切な可用データボリュームが存在する場合、装置コントローラー２２２はホストソフトウェア３０２に装置コントローラー２２２がどのデータボリュームを選択したかを通報する。
【００６０】
ホストソフトウェア３０２がアプリケーション管理ソフトウェアを包含する場合、ホストソフトウェア３０２はアプリケーション管理ソフトウェアに適切なデータボリュームを通報する。
【００６１】
このように、装置のケイパビリティを基盤にして、ホストソフトウェア３０２又は装置コントローラー２２２は装置のデータボリュームをマッピングして、アプリケーションの容量要求を充足させる。
【００６２】
ホストソフトウェア３０２は、標準に定義されたインターフェース（例えば、ＳＣＳＩの場合、ＳＣＳＩ  ＩＮＱＵＩＩＴＹコマンドであり得、ＮＶＭｅの場合、Ｉｄｅｎｔｉｆｙ  Ｃｏｎｔｒｏｌｌｅｒ及びＩｄｅｎｔｉｆｙ  Ｎａｍｅｓｐａｃｅコマンドであり得る。）を使用して装置コントローラー２２２と通信する。しかし、既存のインターフェースは装置のパフォーマンス属性のいかなる情報も提供しない。
【００６３】
本発明の一部の実施例によると、ＮＶＭ貯蔵装置２０２はＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、又はハイブリッドＳＳＤ−ＨＤＤであり得るが、本発明はこれに制限されない。適切な不揮発性メモリーのデータ貯蔵装置がＮＶＭ貯蔵装置２０２として使用される。ＮＶＭデータブロックはフラッシュメモリーであり得るが、本発明はこれに制限されない。
【００６４】
図４は、また、他のパフォーマンス属性を有する他のデータボリューム（又は名前空間）を支援する貯蔵装置を示す。装置コントローラーは割り当てられたパフォーマンス属性を有する独立的な他のデータボリュームを生成できる。装置コントローラーはＳＳＤにおいて、使用できる一つ又はそれ以上のタイプのＮＶＭを使用し、データボリュームパフォーマンス要件を充足させる。
【００６５】
本発明の実施例によると、データボリュームは特定のパフォーマンスプロファイルを包含する。上述したように、装置コントローラーは装置のパフォーマンスケイパビリティを較正（ｃａｌｉｂｒａｔｅ）し、データボリュームパフォーマンス要件を装置のパフォーマンスケイパビリティでマッピングする。従って、装置コントローラーは一つ又はそれ以上のＮＶＭの形態及び他のハードウェアリソースを選択し、データボリュームに対して特定されたパフォーマンスを提供する。与えられた時間に、装置コントローラーにおいて、実際に表われるデータボリュームに対するパフォーマンスケイパビリティの簿記（ｂｏｏｋｋｅｅｐｉｎｇ）の管理において、特定のパフォーマンス基準をこれ以上提供できない場合、新しいデータボリュームに対する要請は失敗する。
【００６６】
本発明の実施例によると、ホストソフトウェアはアプリケーション管理パフォーマンスの基準（ａｐｐｌｉｃａｔｉｏｎ  ｍａｎａｇｅｍｅｎｔ  ｐｅｒｆｏｒｍａｎｃｅ  ｓｐｅｃｉｆｉｃａｔｉｏｎ）を装置のパフォーマンス属性（ｄｅｖｉｃｅ  ｐｅｒｆｏｒｍａｎｃｅ  ａｔｔｒｉｂｕｔｅｓ）に変換し、パフォーマンス属性情報を貯蔵装置にデータボリューム生成要請により伝達し、貯蔵装置からの応答を処理し、アプリケーション管理ソフトウェアにより成功／失敗（ｓｕｃｃｅｓｓ／ｆａｉｌｕｒｅ）を応答するように構成される。
【００６７】
本発明の実施例によると、装置コントローラーはデータボリューム生成要請を処理し、データボリューム属性を基本ＮＶＭケイパビリティ（ｕｎｄｅｒｌｙｉｎｇ  ＮＶＭ  ｃａｐａｂｉｌｉｔｉｅｓ）でマッピングし、一つ又はそれ以上のＮＶＭタイプを選択してデータボリュームパフォーマンス要件を提供し、ハードウェアキュー、バッファリングメモリーなどの他のリソースを割り当てて、パフォーマンス要件を充足させ、ホストソフトウェアに成功／失敗（ｓｕｃｃｅｓｓ／ｆａｉｌｕｒｅ）を応答するように構成される。
【００６８】
図５は、本発明の他の実施例によるコンピュータシステムのブロック図である。図５を参照すると、コンピュータシステム１０４は複数の不揮発性メモリー（ＮＶＭ、Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ）貯蔵装置（例えば、第１ＮＶＭ貯蔵装置２０４Ａ、第２ＮＶＭ貯蔵装置２０４Ｂ、第３ＮＶＭ貯蔵装置２０４Ｃ）、ホストソフトウェア３０４及び一つ又はそれ以上のアプリケーション３２４を包含する。ＮＶＭ貯蔵装置の各々は装置コントローラー（例えば、第１装置コントローラー２３０Ａ、第２装置コントローラー２３０Ｂ、第３装置コントローラー２３０Ｃ）、及びＮＶＭデータブロック２４６を包含する。ＮＶＭ貯蔵装置の各々のＮＶＭデータブロック２４６は単一タイプのデータブロックのみ包含するか、又は複数のタイプのデータブロックを包含する。一つ又はそれ以上のアプリケーション３２２はＮ（Ｎは整数）個のアプリケーション（例えば、第１乃至第Ｎアプリケーション）を包含する。
【００６９】
貯蔵装置の各々は、複数のパフォーマンスプロファイル（ｐｅｒｆｏｒｍａｎｃｅ  ｐｒｏｆｉｌｅｓ）を包含する。各々のパフォーマンスプロファイルは、それに割り当てられＮＶＭデータブロック２４６に対する情報を包含する。例えば、パフォーマンスプロファイルの各々は、パフォーマンスプロファイルに割り当てられたＮＶＭデータブロック２４６の容量及びパフォーマンス特性に対する情報を包含する。
【００７０】
図５において、各々二つのプロファイルのみ含むＮＶＭ貯蔵装置を示しているが、本発明はこれに制限されない。例えば、ＮＶＭ貯蔵装置は二つ以上のパフォーマンスプロファイルを各々包含できる。同一のパフォーマンスプロファイルが一つ以上のＮＶＭ貯蔵装置に存在できる。例えば、図５において、パフォーマンスプロファイルＡ（２３２Ａ）は第１ＮＶＭ貯蔵装置２０４Ａ及び第２ＮＶＭ貯蔵装置２０４Ｂの両方に存在し、パフォーマンスプロファイルＢ（２３２Ｂ）は第１ＮＶＭ貯蔵装置２０４Ａ及び第３ＮＶＭ貯蔵装置２０４Ｃの両方に存在する。また、パフォーマンスプロファイルは一つのＮＶＭ貯蔵装置のみに存在できる。例えば、図５において、パフォーマンスプロファイルＣ（２３２Ｃ）は第２ＮＶＭ貯蔵装置２０４Ｂにのみ存在する。パフォーマンスプロファイルＤ（２３２Ｄ）は第３ＮＶＭ貯蔵装置２０４Ｃにのみ存在する。
【００７１】
一つ又はそれ以上のアプリケーション３２４は、最適なパフォーマンスのために、他のアプリケーションデータボリュームパフォーマンス要件（例えば、データの読み込み及び書込みの要求）を包含する。一つ又はそれ以上のアプリケーション３２４の全部が全て同一のタイプのデータブロックに貯蔵された場合、データボリュームパフォーマンス特性が最適より高いか、最適より低いか、又は最適であり得る。データボリュームパフォーマンス特性が低すぎる場合、一つ又はそれ以上のアプリケーション３２４は最適に作動できないことも有り得る。データボリュームパフォーマンス特性が一つ又はそれ以上のアプリケーション３２４に対する最適より高い場合、貯蔵装置に対するコストがかかりすぎる。
【００７２】
本発明の実施例によると、一つ又はそれ以上のアプリケーション３２４は、それらのアプリケーションパフォーマンス要件をホストソフトウェア３０４に、直接提供する。本発明の他の実施例によると、アプリケーションはそれらのアプリケーションパフォーマンス要件をアプリケーション管理ソフトウェアに提供する。アプリケーション管理ソフトウェアは、ホストソフトウェア３０４に対するアプリケーションデータを管理する。
【００７３】
ホストソフトウェア３０４は、パフォーマンスプロファイルに対するパフォーマンス特性を貯蔵するデータベースを維持する。又は、装置コントローラー２３０Ａ乃至２３０Ｃの各々はパフォーマンスプロファイルに対するパフォーマンス特性を貯蔵するデータベースを維持する。
【００７４】
本発明の一実施例によると、ホストソフトウェア３０４（又はアプリケーション管理ソフトウェア）がアプリケーション３２４の要求を満足するパフォーマンスプロファイルを検索するための要請を受信した場合、ホストソフトウェア３０４は要請されたパフォーマンス特性を、ホストソフトウェア３０４により維持されるデータベースに貯蔵されたパフォーマンス特性と比較して、パフォーマンスプロファイルが可用であるか判別する。マッチングが可用であるか判別する時、ホストソフトウェア３０４は読込み速度、書込み速度、容量などを考慮する。一部の実施例によると、ホストソフトウェア３０４は要請されたパフォーマンス特性の全てを超過するか又は満足するパフォーマンスプロファイルが存在する場合にのみ、そのパフォーマンスプロファイルが可用であると判別する。他の実施例によると、ホストソフトウェア３０４は要請されたパフォーマンス特性の一部又は大部分を超過するか又は満足するパフォーマンスプロファイルが存在する場合に、そのパフォーマンスプロファイルが可用であると判別する。また、本発明の他の実施例によると、ホストソフトウェア３０４は、要請されたパフォーマンス特性の各々に対して、特定の比率又はそれ以上（例えば、９０％又は９５％）を含むパフォーマンスプロファイルが存在する場合に、そのパフォーマンスプロファイルが可用であると判別する。
【００７５】
一つ以上の適切なパフォーマンスプロファイルが存在する場合、ホストソフトウェア３０４は要求されたパフォーマンス特性に一番近いパフォーマンス特性を持つパフォーマンスプロファイルを選択する。しかし、本発明はこれに制限されず、例えば、ホストソフトウェア３０４は最高の可用貯蔵空間、最低の可用貯蔵空間、最高容量、最低容量、最高読込み速度、最低読込み速度、最高書込み速度、及び／又は最低書込み速度などを有するパフォーマンスプロファイルを選択する。
【００７６】
ホストソフトウェア３０４がアプリケーション管理ソフトウェアを含む場合、ホストソフトウェア３０４はアプリケーション管理ソフトウェアに適切なパフォーマンスプロファイルを通報する。
【００７７】
このように、装置のケイパビリティを基盤にして、ホストソフトウェア３０４は装置のパフォーマンスプロファイルをマッピングして、アプリケーション容量要件を満足させる。
【００７８】
本発明の一部の実施例によると、ＮＶＭ貯蔵装置はＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、  ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、又はハイブリッドＳＳＤ−ＨＤＤであり得るが、本発明はこれに制限されない。適切な不揮発性メモリーのデータ貯蔵装置がＮＶＭ貯蔵装置として使用される。ＮＶＭデータブロックはフラッシュメモリーであり得るが、本発明はこれに制限されない。
【００７９】
ホストソフトウェア３０４は、標準で定義されたインターフェース（例えば、ＳＣＳＩの場合、ＳＣＳＩ  ＩＮＱＵＩＩＴＹコマンド、ＮＶＭｅ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  ｅｘｐｒｅｓｓ）の場合、Ｉｄｅｎｔｉｆｙ  Ｃｏｎｔｒｏｌｌｅｒ  ａｎｄ  Ｉｄｅｎｔｉｆｙ  Ｎａｍｅｓｐａｃｅコマンドであり得る。）を使用して装置コントローラーと通信する。しかし、既存のインターフェースは装置のパフォーマンス属性に対する、いかなる情報も提供しない。
【００８０】
図５は、また、各々が他のパフォーマンスプロファイルを支援する三つの他の貯蔵装置を管理するホストソフトウェアを示す。図示したように、ホストソフトウェアは同一の貯蔵装置リソースプールを共有する他のパフォーマンスプロファイルを有する多数のアプリケーションを包含できる。ホストソフトウェアはアプリケーションの各々について、適切な貯蔵装置にデータボリュームを生成し、それらの各々のパフォーマンスプロファイルを充足する。
【００８１】
本発明の一実施例によると、ホストソフトウェアはアプリケーション管理パフォーマンスの仕様（ａｐｐｌｉｃａｔｉｏｎ  ｍａｎａｇｅｍｅｎｔ  ｐｅｒｆｏｒｍａｎｃｅ  ｓｐｅｃｉｆｉｃａｔｉｏｎ）を装置のパフォーマンス属性（ｄｅｖｉｃｅ  ｐｅｒｆｏｒｍａｎｃｅ  ａｔｔｒｉｂｕｔｅｓ）に変換し、装置のパフォーマンスケイパビリティマトリックスを参照してアプリケーションパフォーマンス要件を充足する一つ又はそれ以上の装置を選択し、パフォーマンス属性情報を貯蔵装置にデータボリューム生成要請により伝送し、貯蔵装置からの応答を処理し、アプリケーション管理ソフトウェアにより成功／失敗（ｓｕｃｃｅｓｓ／ｆａｉｌｕｒｅ）を応答するように構成される。
【００８２】
本発明の一実施例によると、ホストソフトウェアは初期化時間及び／又は装置連結イベントを管理する間、システムに実際表れる全ての装置に対する装置パフォーマンスケイパビリティを収集し、必要によって、装置のパフォーマンスケイパビリティマトリックスをデータボリュームにアップデートするように構成される。
【００８３】
本発明の実施例によると、貯蔵装置コントローラーはデータボリューム生成要請を処理し、データボリュームパフォーマンス属性を、基本ＮＶＭケイパビリティでマッピングし、一つ又はそれ以上のＮＶＭタイプを選択してデータボリュームパフォーマンス要件を提供し、ハードウェアキュー、バッファリングメモリーなどの他のリソースを割り当てて、パフォーマンス要件を充足させ、ホストソフトウェアに成功／失敗（ｓｕｃｃｅｓｓ／ｆａｉｌｕｒｅ）を応答するように構成される。
【００８４】
本発明の一実施例によると、貯蔵装置コントローラーは、初期化の間、ホストソフトウェアにより（例えば、較正要請（ｃａｌｉｂｒａｔｉｏｎ  ｒｅｑｕｅｓｔ）により）、要請されたように装置のパフォーマンスケイパビリティを較正（ｃａｌｉｂｒａｔｅ）し、装置のパフォーマンスケイパビリティマトリックスをアップデートし、必要によって、パフォーマンスケイパビリティについて、ホストソフトウェアに通報するように構成される。
【００８５】
図１乃至図５の実施例を参照すると、装置識別コマンド（ｄｅｖｉｃｅ  ｉｄｅｎｔｉｆｉｃａｔｉｏｎ  ｃｏｍｍａｎｄ）に対する応答は、製造社特定フィールド（ｖｅｎｄｏｒ  ｓｐｅｃｉｆｉｃ  ｆｉｅｌｄｓ）及び／又は定義され得る追加的なフィールドであり、他のＮＶＭタイプ及びパフォーマンス属性についての情報を通報する。
【００８６】
装置は、装置のケイパビリティのような追加的な情報を提供できる。ケイパビリティはＮＶＭ属性情報、装置パフォーマンスケイパビリティ情報、装置のパフォーマンス属性のリスト、パフォーマンスケイパビリティの動的計測、及び／又は装置のパフォーマンス属性における変化などを包含する。
【００８７】
ホストソフトウェアは装置のケイパビリティについて、まず調査する。上述した装置のケイパビリティを支援する装置について、ホストソフトウェアはアプリケーション作業負荷を貯蔵媒体にマッピングするのに、使用され得る追加的な装置情報を、さらに調査する。
【００８８】
加えて、ＮＶＭ属性情報は、各貯蔵装置に表れたＮＶＭタイプの個数、ＡＳＣＩＩテキスト形態のＮＶＭテキスト（ＮＶＭ  ｄｅｓｃｒｉｐｔｉｏｎ  ｉｎ  ＡＳＣＩＩ  ｔｅｘｔ）、装置内のＮＶＭ容量、及び／又はＮＶＭタイプ及び装置の具現と関連したＮＶＭパフォーマンス特性を包含する。
【００８９】
装置のパフォーマンスケイパビリティ情報は、他のＩＯサイズのＩＯに対するランダム読込みＩＯＰＳ、他のＩＯサイズのＩＯに対するランダム書込みＩＯＰＳ、他のＩＯサイズのＩＯに対する順次読込帯域幅（ＢＷ、ＢａｎｄＷｉｄｔｈ）、他のＩＯサイズのＩＯに対する順次書込みＢＷ、他のＩＯサイズのＩＯに対するランダム読込みレイテンシ、他のＩＯサイズのＩＯに対するランダム書込みレイテンシ、装置が一つ又はそれ以上の他のアプリケーションにより作動される間１００％読込み、１００％書込み、それらが組み合わされた作業負荷などを含むが、これに限定されない他のＩＯ作業負荷の条件下での上述されたパフォーマンス属性、ＳＳＤにおいて使用されるＮＶＭタイプに適用可能なＮＶＭの残った寿命（％）及び他のオーバープロビジョニングレベル（ｏｖｅｒ  ｐｒｏｖｉｓｉｏｎｉｎｇ）の測定による予想されるパフォーマンスレベルなどを包含する。
【００９０】
装置は、装置の全体について及び／又はＮＶＭｅ装置において、名前空間のように、サブ単位（ｓｕｂ−ｇｒａｎｕｌａｒｉｔｙ）でこのような情報を提供する。このようなパフォーマンス属性のセットはアプリケーションからホストソフトウェアに、貯蔵装置に、容易に交換され得るパフォーマンスプロファイル下でグループ化される。
【００９１】
装置コントローラーは多様な装置属性、例えば、コントローラーの内部ケイパビリティ、ホストインターフェースケイパビリティ、ＮＶＭインターフェースケイパビリティ、ＮＶＭケイパビリティ、ＳＳＤで構成されたオーバープロビジョニングレベル、及び／又は貯蔵装置ケイパビリティに影響を与える他の関連パラメーターなどの測定（ｍｅａｓｕｒｅ）によりパフォーマンスを計測（ｃａｌｉｂｒａｔｅ）する。
【００９２】
コントローラーの内部ケイパビリティは、バス幅及び比率、ＩＯ処理ケイパビリティ、並列ＩＯ処理ケイパビリティ、該当する場合、装置ファームウェアにより許容されるパフォーマンス基準、及び／又はパフォーマンスに影響を与える他の属性などを包含する。
【００９３】
ホストインターフェースケイパビリティは、連結されたホストインターフェース及び物理的リンクが、与えられた時間でのトレーニング（ｔｒａｉｎｉｎｇ）により許容される物理的リンクにおいて見られるパフォーマンスエラー比率（ｅｒｒｏｒ  ｒａｔｅｓ）、物理的リンクで経験されるレイテンシジッタ比率（ｌａｔｅｎｃｙ  ｊｉｔｔｅｒ  ｒａｔｅ）、及び／又はＭＴＵ、バースト（ｂｕｒｓｔ）速度、プリフェッチキャッシュ（ｐｒｅ−ｆｅｔｃｈ  ｃａｃｈｅ）などのリンク属性を包含する。
【００９４】
ＮＶＭインターフェースケイパビリティは、読込み／書込みＩＯを提供する並列メモリーチャンネルの個数、メモリーチャンネルの速度、及び／又はパフォーマンスに影響を与える他の関連属性を包含する。
【００９５】
ＳＳＤの各々の他のタイプについて、ＮＶＭケイパビリティは、ＳＳＤの全体のＮＶＭの読込み及び書込みＩＯ比率、ＳＳＤの全体のＮＶＭの読込み及び書込みＩＯレイテンシ、及び／又はＳＳＤにフェイル（ｆａｉｌ）された又は隔離されたメモリーモジュールを計算する与えられた時間での可用なＮＶＭ容量などを包含する。ＮＶＭケイパビリティは、経験されたメモリーエラー比率、及び／又はパフォーマンスに影響を与える他の関連属性を、さらに包含する。
【００９６】
上述した装置のパラメーターの機能として列挙したパフォーマンス属性を較正する多様な方法が存在する。例示的な方法は、順次的な読込み／書込みの処理量が以下の属性の最小値と同一である。（貯蔵装置のホストインターフェースがトレーニング（ｔｒａｉｎｉｎｇ）される比率の効率的な帯域幅、大きなＩＯを処理するメモリーチャンネルの個数、コントローラーでのバス（ｂｕｓ）幅の効率的な帯域幅）。
【００９７】
本発明の実施例によると、ホストソフトウェアは上述したような、新しいインターフェースを使用して装置のパフォーマンスケイパビリティを調査する。ホストソフトウェアは、システムで管理されている全ての貯蔵装置及びそれらの各々のパフォーマンスケイパビリティの記録を維持する。なお、貯蔵装置により報告される非同期イベントを支援するものからの動的パフォーマンスの変化を登録し、管理する。
【００９８】
本発明の一実施例によると、アプリケーションパフォーマンス要件について、ホストソフトウェアはアプリケーション管理ソフトウェアから受信された、全てのデータボリューム要請の記録及びそれらが基本貯蔵装置でどのようにマッピングされたかの履歴を維持する。アプリケーションデータボリュームのパフォーマンス及び容量要求を基盤にして、ホストソフトウェアは適切な貯蔵装置を選択してデータボリュームを生成する。
【００９９】
なお、ホストソフトウェアは、超過加入率（ｏｖｅｒ  ｓｕｂｓｃｒｉｐｔｉｏｎ  ｒａｔｉｏｓ）を調整するためのアプリケーションの実時間使用、生成されて検出されるパフォーマンス基準についての一般的な簿記（ｂｏｏｋｋｅｅｐｉｎｇ）動作などを維持する。
【０１００】
図６は、本発明の一実施例による、適切なデータボリューム（又は適切な名前空間プロファイル）を検査する方法を示す順序図である。アプリケーション管理ソフトウェアは、アプリケーションデータボリュームパフォーマンス要件をアプリケーションから受信する（６００）。アプリケーション管理ソフトウェアは、アプリケーションデータボリュームパフォーマンス要件をホストソフトウェアに提供する（６１０）。ホストソフトウェアは、データボリュームパフォーマンス要件を装置のパフォーマンス属性に変換する（６２０）。ホストソフトウェアは、装置のパフォーマンス属性を装置コントローラーに提供する（６３０）。装置コントローラーは、装置のパフォーマンス属性を貯蔵されたデータボリュームパフォーマンス属性と比較し、適切なマッチングが存在するか判別する（６４０）。
【０１０１】
適切なマッチングが存在する場合、装置コントローラーは、適切なデータボリュームをホストソフトウェアに報告（ｒｅｐｏｒｔ）する（６５０）。ホストソフトウェアは、適切なデータボリュームをアプリケーション管理ソフトウェアに報告する（６６０）。アプリケーション管理ソフトウェアは、アプリケーションデータを適切なデータボリュームに貯蔵されるように割り当てる（６７０）。
【０１０２】
適切なマッチングが存在しない場合、装置コントローラーは、ホストに適切なデータボリュームが無いことを報告する（６８０）。ホストソフトウェアは、アプリケーション管理ソフトウェアに適切なデータボリュームが無いことを報告する（６９０）。
【０１０３】
図７は、本発明の実施例による、適切なデータボリュームを検査する他の方法を示す順序図である。アプリケーション管理ソフトウェアは、アプリケーションデータボリュームパフォーマンス要件をアプリケーションから受信する（７００）。アプリケーション管理ソフトウェアは、アプリケーションデータボリュームパフォーマンス要件をホストソフトウェアに伝送する（７１０）。ホストソフトウェアは、データボリュームパフォーマンス要件を装置のパフォーマンス属性に変換する（７２０）。ホストソフトウェアは、装置のパフォーマンスケイパビリティマトリックスを参照して装置のパフォーマンス属性を満足させる貯蔵装置を選択する（７３０）。ホストソフトウェアは、装置のパフォーマンス属性を選択された装置コントローラーに提供する（７４０）。選択された装置コントローラーは、装置のパフォーマンス属性及び貯蔵されたデータボリュームパフォーマンス属性を比較し、適切なマッチングが存在するか判別する（７５０）。
【０１０４】
適切なマッチングが存在する場合、選択された装置コントローラーは、適切なデータボリュームをホストソフトウェアに報告する（７６０）。ホストソフトウェアは、適切なデータボリュームをアプリケーション管理ソフトウェアに報告する（７７０）。アプリケーション管理ソフトウェアは、アプリケーションデータを適切なデータボリュームに貯蔵されるように割り当てる（７８０）。
【０１０５】
適切なマッチングが存在しない場合、選択された装置コントローラーは、ホストソフトウェアに適切なデータボリュームが無いことを報告する（７９０）。ホストソフトウェアは、アプリケーション管理ソフトウェアに適切なデータボリュームが無いことを報告する（７９５）。
【０１０６】
図８は、本発明の一実施例による、適切なデータボリュームを検査する他の方法を示す順序図である。アプリケーション管理ソフトウェアは、アプリケーションデータボリュームパフォーマンス要件をアプリケーションから受信する（８００）。アプリケーション管理ソフトウェアは、アプリケーションデータボリュームパフォーマンス要件をホストソフトウェアに提供する（８１０）。ホストソフトウェアは、データボリュームパフォーマンス要件を装置のパフォーマンス属性に変換する（８２０）。ホストソフトウェアは、装置のパフォーマンス属性を貯蔵されたデータボリュームパフォーマンス属性（又は一つ又はそれ以上のＮＶＭｅ名前空間プロファイルのパフォーマンス属性）と比較し、適切なマッチングが存在するか判別する（８３０）。
【０１０７】
適切なマッチングが存在する場合、ホストソフトウェアは、適切なデータボリュームをアプリケーション管理ソフトウェアに報告する（８４０）。アプリケーション管理ソフトウェアは、アプリケーションデータを適切なデータボリュームに貯蔵されるように割り当てる（８５０）。
【０１０８】
適切なマッチングが存在しない場合、ホストソフトウェアは、アプリケーション管理ソフトウェアに適切なデータボリュームが無いことを報告する（８６０）。
【０１０９】
図９は、本発明の一実施例によるデータボリュームパフォーマンスを較正するか又は初期化する方法を示す順序図である。
【０１１０】
装置の初期化の間に又は装置がパフォーマンスを較正する明示的なホストソフトウェア要請を受信した場合（９００）、装置コントローラー又はファームウェアは装置のパフォーマンスを較正するために、装置のパラメーターを収集する（９１０）。装置コントローラー又はファームウェアは装置のパフォーマンス属性を計算する（９２０）。装置コントローラー又はファームウェアは、ホストソフトウェアに装置のパフォーマンス属性の変化を通報するべきか点検する（９３０）。
【０１１１】
装置コントローラー又はファームウェアがホストソフトウェアに装置のパフォーマンス属性の変化を通報するべき場合、装置コントローラー又はファームウェアがホストソフトウェアに非同期イベントにより、パフォーマンスの変化を通報する（９４０）。
【０１１２】
装置コントローラー又はファームウェアが、ホストソフトウェアに装置のパフォーマンス属性の変化を通報するべきではない場合、装置コントローラー又はファームウェアは、装置に貯蔵されたパフォーマンス属性をアップデートする（９５０）。
【０１１３】
図１０は、本発明の一実施例によるデータボリュームパフォーマンスをアップデートする方法を示す順序図である。
【０１１４】
装置コントローラー又はファームウェアは、装置のパフォーマンス属性を動的にモニターする（１０００）。装置コントローラー又はファームウェアは、装置のパフォーマンスに影響を与える装置のパラメーターから一部の変化を検出する（１０１０）。装置のパフォーマンスの再較正が始まる（１０２０）。
【０１１５】
装置コントローラー又はファームウェアは、装置のパフォーマンスを較正するため、装置のパラメーターを収集する（１０３０）。装置コントローラー又はファームウェアは装置のパフォーマンス属性を計算する（１０４０）。装置コントローラー又はファームウェアは、ホストソフトウェアに装置のパフォーマンス属性の変化を通報するべきか検査する（１０５０）。
【０１１６】
装置コントローラー又はファームウェアが装置のパフォーマンス属性の変化を通報するべき場合、装置コントローラー又はファームウェアは非同期イベントによりホストソフトウェアにパフォーマンスの変化を通報する（１０６０）。
【０１１７】
装置コントローラー又はファームウェアが、ホストソフトウェアに装置のパフォーマンス属性の変化を通報するべきではない場合、装置コントローラー又はファームウェアは、装置に貯蔵されたパフォーマンス属性をアップデートする（１０７０）。
【０１１８】
本発明による実施例の態様は、パフォーマンスケイパビリティを自己報告（ｓｅｌｆ−ｒｅｐｏｒｔｉｎｇ）できる不揮発性メモリー（ＮＶＭ、Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ）の貯蔵装置に関する。本発明の一実施例によると、貯蔵装置は装置コントローラー及び他のパフォーマンスケイパビリティを持つ複数の不揮発性貯蔵媒体を包含する。装置コントローラーは複数の不揮発性貯蔵媒体のパフォーマンスケイパビリティを追跡し、貯蔵する。装置コントローラーは、パフォーマンスケイパビリティ及びパフォーマンスケイパビリティの変化をホストソフトウェアに提供する。
【０１１９】
本発明の実施例は、ホストソフトウェア階層にパフォーマンスケイパビリティを提供する方法を包含する。
【０１２０】
本発明の実施例は、装置からパフォーマンス属性の変化をホストソフトウェアに通報するいかなる方法も包含する。
【０１２１】
本発明の実施例は、ホストソフトウェアにより通信されるＮＶＭｅ名前空間プロファイルに、装置リソースを知能的に割り当てる方法を包含する。
【０１２２】
例えば、本発明の実施例は、ホストソフトウェアにより、データボリュームパフォーマンス要件を含むデータを一つ又はそれ以上の不揮発性メモリーエクスプレス（ＮＶＭｅ、ｎｏｎ−ｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ  ｅｘｐｒｅｓｓ）名前空間プロファイルの内で、適切なＮＶＭｅ名前空間プロファイルに割り当てる方法を包含する。方法は前記ホストソフトウェアにおいて、前記データボリュームパフォーマンス要件を受信するステップ、ホストソフトウェアにより、前記データボリュームパフォーマンス要件を装置のパフォーマンス属性に変換するステップ、ホストソフトウェアにより、装置のパフォーマンス属性を一つ又はそれ以上のＮＶＭｅ名前空間プロファイルのパフォーマンス属性と比較し、一つ又はそれ以上のＮＶＭｅ名前空間プロファイルの内の、どれが適切なＮＶＭｅ名前空間プロファイルであるか判別するステップ、及び一つ又はそれ以上のＮＶＭｅ名前空間プロファイルの内の少なくとも一つが前記適切なＮＶＭｅ名前空間プロファイルであると判別された場合、ホストソフトウェアにより、データを前記適切なＮＶＭｅ名前空間プロファイルに貯蔵されるように割り当てるステップを包含する。
【０１２３】
方法は、一つ又はそれ以上のＮＶＭｅ名前空間プロファイルの内に、適切なＮＶＭｅ名前空間プロファイルがないと判別される場合、ホストソフトウェアにより、装置のパフォーマンス属性及び複数の貯蔵装置の装置パフォーマンス属性を貯蔵する装置のパフォーマンスケイパビリティマトリックスと比較して、データボリュームパフォーマンス要件を満足する新しいＮＶＭｅ名前空間プロファイルに、複数の貯蔵装置のどのリソースを割り当てるかを判別するステップ、ホストソフトウェアにより、前記複数の貯蔵装置の内に、適切なリソースを新しいＮＶＭｅ名前空間プロファイルに割り当てることにより、新しいＮＶＭｅ名前空間プロファイルを生成するステップ、及びホストソフトウェアにより、データを新しいＮＶＭｅ名前空間プロファイルに貯蔵されるように割り当てるステップを、さらに包含する。
【０１２４】
複数の貯蔵装置は、各々一つ以上のタイプの不揮発性メモリー（ＮＶＭ、  Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ）データブロックを包含する。
【０１２５】
適切なリソースは、複数の貯蔵装置の一つ以上のリソースを包含する。
【０１２６】
方法は、装置のパフォーマンス属性を装置のパフォーマンスケイパビリティマトリックスと比較する以前に、ホストソフトウェアによりかつ複数の貯蔵装置によりアップデートされた装置パフォーマンスを要請するステップ、及び装置のパフォーマンスケイパビリティマトリックスをアップデートするステップをさらに包含する。
【０１２７】
一つ又はそれ以上のＮＶＭｅ名前空間プロファイルの内で、一つ以上が適切なＮＶＭｅ名前空間プロファイルであると判別された場合、データは前記装置のパフォーマンス属性に一番近いパフォーマンス属性を含む適切なＮＶＭｅ名前空間プロファイルに貯蔵されるように割り当てられる。
【０１２８】
ホストソフトウェアは、データボリュームパフォーマンス要件及びデータを、ホストシステムの内のアプリケーションから受信するホストシステムはホストソフトウェア及び複数の貯蔵装置を、さらに包含する。
【０１２９】
本発明の実施例は、単純化されたソフトウェアを構成して、アプリケーションパフォーマンス要件を装置に最適にマッチングし、微細なレベル（ｆｉｎｅｒ  ｇｒａｎｕｌａｒ  ｌｅｖｅｌ）によりパフォーマンスプロファイルを定義するにあたって、新しい装置のレベルの特徴を行使する（ｌｅｖｅｒａｇｉｎｇ）方法を包含する。
【０１３０】
本発明の実施例は、ストレージ（貯蔵、ｓｔｏｒａｇｅ）システムにおいて、他のパフォーマンスケイパビリティを有する異種貯蔵装置を管理する方法を包含する。
【０１３１】
本発明の実施例は、ＳＡＳ、ＳＡＴＡ、又は他のインターフェースに適用できる。
【０１３２】
本発明の実施例は、データ（例えば、大容量データ）を貯蔵する不揮発性貯蔵媒体に適用できる。
【０１３３】
仮に、‘‘第１（ｆｉｒｓｔ）’’、‘‘第２（ｓｅｃｏｎｄ）’’、‘‘第３（ｔｈｉｒｄ）’’などの用語が多様な要素、構成、領域、階層、及び／又は区域を説明するために本明細書において使用される場合、斯かる要素、構成、領域、階層、及び／又は区域が、斯かる要素により制限されてはならないことが充分に理解されるはずである。斯かる用語は一つの要素、構成、領域、階層、又は区域を他の一つの要素、構成、領域、階層、又は区域から区分するのに使用する。即ち、本明細書において言及された第１要素、構成、領域、階層、又は区域は、本発明の思想及び範囲から逸脱することなしに、第２要素、構成、領域、階層、又は区域を示す。
【０１３４】
本明細書に開示した本発明の実施例による、関連した装置又は構成（又は関連された装置等又は構成等）は、適切なハードウェア（例えば、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ−Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ））、ファームウェア（例えば、ＤＳＰ又はＦＰＧＡ）、ソフトウェア、又はソフトウェア、ファームウェア、及びハードウェアの適切な組み合せを活用して具現される。例えば、関連した装置等の多様な構成等は一つの集積回路（ＩＣ、Ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）チップ又は別のＩＣチップにより形成され得る。なお、関連した装置等の多様な構成は軟性印刷回路フィルム（ｆｌｅｘｉｂｌｅ  ｐｒｉｎｔｅｄ  ｃｉｒｃｕｉｔ  ｆｉｌｍ）、ＴＣＰ（Ｔａｐｅ  Ｃａｒｒｉｅｒ  Ｐａｃｋａｇｅ）、印刷回路基板（ＰＣＢ、Ｐｒｉｎｔｅｄ  Ｃｉｒｃｕｉｔ  Ｂｏａｒｄ）により具現されるか、又は一つ又はそれ以上の回路及び／又は他の装置として同一の基板上に形成される。なお、関連した装置等の多様な構成は、本明細書に開示した多様な機能を遂行するためにコンピュータプログラムの命令語を実行し、他のシステム構成と通信する一つ又はそれ以上のコンピューティング装置の一つ又はそれ以上のプロセッサー上において駆動するプロセス（ｐｒｏｃｅｓｓ）又はスレッド（ｔｈｒｅａｄ）である。コンピュータプログラムの命令語は、ランダムアクセスメモリー（ＲＡＭ、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のような標準メモリー装置を使用して、コンピュータ装置により具現されるメモリーに貯蔵される。コンピュータプログラムの命令語、例えば、ＣＤ−ＲＯＭ、フラッシュドライブなどの他の非一時的なコンピュータ判読可能な媒体に貯蔵される。当業者は、本発明の例示的な実施例等の思想及び範囲から逸脱することなしに、多様なコンピューティング装置の機能が単一のコンピューティング装置に組み合わせられるか又は集積されうるか、又は特定のコンピューティング装置の機能が一つ又はそれ以上の他のコンピューティング装置等に分散され得ることを理解できる。
【０１３５】
本明細書において使用する用語等は、特定の実施例を説明するためのもので、本発明の制限を意図するものではない。本明細書において使用する単数の用語は、明確に別に言及されない限り、複数の形態を含む。本明細書において使用する‘‘包含する（ｃｏｍｐｒｉｓｅ、ｃｏｍｐｒｉｓｅｓ、ｃｏｍｐｒｉｓｉｎｇ、ｉｎｃｌｕｄｅｓ、ｉｎｃｌｕｄｉｎｇ、ｉｎｃｌｕｄｅ）’’の用語等は言及された特徴、整数、ステップ、作動、要素、及び／又は構成の存在を定義するか、一つ又はそれ以上の他の特徴、整数、ステップ、作動、要素、構成、又はそれらの組み合せの追加又は存在を排除しないことが理解されるはずである。
【０１３６】
本明細書において使用する‘‘及び／又は（ａｎｄ／ｏｒ）’’の用語は、列挙された目録等の一つ又はそれ以上の一部又は全体の組み合せを包含する。要素等の目録の  ‘‘少なくとも一つ（ａｔ  ｌｅａｓｔ  ｏｎｅ  ｏｆ）’’、‘‘〜内一つ（ｏｎｅ  ｏｆ）’’、‘‘〜から選択された（ｓｅｌｅｃｔｅｄ  ｆｒｏｍ）’’のような表現等は、要素等の全体目録を変形し、目録の個別的な要素等は変形しない。なお、本発明の実施例を説明する時の‘‘〜できる（ｍａｙ）’’の使用は、‘‘本発明の一つ又はそれ以上の実施例等（ｏｎｅ  ｏｒ  ｍｏｒｅ  ｅｍｂｏｄｉｍｅｎｔｓ  ｏｆ  ｔｈｅ  ｐｒｅｓｅｎｔ  ｉｎｖｅｎｔｉｏｎ）’’を参照する。‘‘例示的な（ｅｘｅｍｐｌａｒｙ）’’の用語は、例又は例示を参照すると意図される。
【０１３７】
本明細書において使用する‘‘使用（ｕｓｅ、ｕｓｉｎｇ、ｕｓｅｄ）’’の用語は、‘‘活用（ｕｔｉｌｉｚｅ、ｕｔｉｌｉｚｉｎｇ、ｕｔｉｌｉｚｅｄ）’’の用語と各々同義語と見なせる。
【０１３８】
本発明の一つ又はそれ以上の実施例と関連して説明した特徴は、本発明の他の実施例の特徴と共に使用され得る。例えば、仮に本明細書において第３実施例を詳しく説明できないことがあっても、第１実施例に開示された特徴は第２実施例に開示された特徴と組み合わされて、第３実施例を構成する。
【０１３９】
当業者は、プロセスがハードウェア、ファームウェア（例えば、ＡＳＩＣにより）、又はソフトウェア、ファームウェア、及び／又はハードウェアの組み合わせにより実行され得ることを認識できる。なお、プロセスのステップの順序は固定されていないし、当業者により認識され得る適切な順序に代替できる。代替された順序は、ステップの全体又はステップの一部を包含できる。
【０１４０】
仮に、本発明が特定の実施例等について説明されていても、当業者は本発明の範囲及び思想から逸脱せずに、開示した実施例の変形等を容易に考案できるはずである。なお、当業者に、本明細書に開示した本発明は、他のアプリケーションのための他の作業及び適用の解決策を提案するだろう。本発明の思想及び範囲から逸脱せずに、開示の目的のために本明細書において選択した本発明の実施例について、行われることのできる本発明の全ての斯かる用途及び変形及び修正を特許請求範囲に含むことは出願人の意図である。従って、本発明の実施例は、例示的で制限的ではない全ての側面から考慮されるべきであり、本発明の範囲は、添付した特許請求範囲及びそれらの均等物により指示されるべきである。
【産業上の利用可能性】
【０１４１】
本発明は、向上したパフォーマンスケイパビリティを自己報告できる不揮発性メモリーの貯蔵装置に有用である。
【符号の説明】
【０１４２】
１００、１０２、１０４  コンピュータシステム
２００、２０２  ＮＶＭ貯蔵装置
２０４Ａ  第１ＮＶＭ貯蔵装置  
２０４Ｂ  第２ＮＶＭ貯蔵装置  
２０４Ｃ  第３ＮＶＭ貯蔵装置      
２２０、２２２  装置コントローラー
２２４Ａ  第１データボリューム
２２４Ｂ  第２データボリューム
２２６Ａ、２２６Ｂ  データボリュームのパフォーマンス特性
２２８Ａ、２２８Ｂ  ＮＶＭデータブロックの容量
２３０Ａ  第１装置コントローラー
２３０Ｂ  第２装置コントローラー
２３０Ｃ  第３装置コントローラー
２３２Ａ  パフォーマンスプロファイルＡ
２３２Ｂ  パフォーマンスプロファイルＢ
２３２Ｃ  パフォーマンスプロファイルＣ
２３２Ｄ  パフォーマンスプロファイルＤ
２４０、２４２、２４４、２４６  ＮＶＭデータブロック
３００、３０２、３０４  ホストソフトウェア
３２０、３２２、３２４  アプリケーション
４００  装置パフォーマンスモニター
【図１】
2018147490.tif 000003
【図２】
2018147490.tif 000004
【図３】
2018147490.tif 000005
【図４】
2018147490.tif 000006
【図５】
2018147490.tif 000007
【図６】
2018147490.tif 000008
【図７】
2018147490.tif 000009
【図８】
2018147490.tif 000010
【図９】
2018147490.tif 000011
【図１０】
2018147490.tif 000012