(57)【要約】【課題】ホストのサービス品質インジケータに重みを割り当てるための装置および方法を提供する。【解決手段】サービス品質インジケータは、ホストインターフェースを介して、ホストから提供される。サービス品質インジケータは、ホストを介して不揮発性データストレージに記憶されたデータに関連する。サービス品質インジケータに関連するワークロードインジケータが測定され、サービス品質インジケータと測定されたワークロードインジケータとの相関関係に応じて、重みがホストに割り当てられる。重みは、ホストからデータアクセス要求に応じるときに、サービス品質インジケータに適用される。【選択図】図２
2014164769.tif 000002
【特許請求の範囲】
【請求項１】
装置であって、
不揮発性データストレージおよびホストインターフェースに連結することができるコントローラであって、
ホストを介して前記不揮発性データストレージに記憶されたデータに関連する、前記ホストから提供されるサービス品質インジケータを、前記ホストインターフェースを介して受け取ること、
前記サービス品質インジケータに関連するワークロードインジケータを測定すること、
前記サービス品質インジケータと前記測定されたワークロードインジケータとの相関関係に応じて、重みを前記ホストに割り当てること、および
前記ホストからのデータアクセス要求に応じるときに、前記重みを前記サービス品質インジケータに適用すること、を少なくとも行うように構成される、コントローラを備える、
装置。
【請求項２】
データアクセス要求に応じることは、前記重みに基づいて前記ホストからのデータを記憶するための前記不揮発性データストレージの２つ以上のタイプの非階層ストレージから、メモリを選択することを含む、請求項１に記載の装置。
【請求項３】
前記２つ以上のタイプの非階層ストレージは、メモリサイズ、待ち時間、スループット、電力消費、保持時間、および信頼性のうちの少なくとも１つに関連する、異なる属性を有することに基づいて選択される、請求項２に記載の装置。
【請求項４】
前記サービス品質インジケータは、２つを超える値の範囲を含み、前記重みをサービス品質インジケータに適用することは、前記範囲と前記２つ以上のタイプの非階層ストレージとの間のマッピングを調整することを含む、請求項２に記載の装置。
【請求項５】
前記タイプの非階層ストレージの少なくとも１つは、抵抗に基づくメモリまたはスピントルクメモリを備える、請求項２に記載の装置。
【請求項６】
前記測定されたワークロードインジケータおよびサービス品質インジケータは、関連データが、ランダムであるか順次的であるかを記述する、請求項１に記載の装置。
【請求項７】
前記測定されたワークロードインジケータおよびサービス品質インジケータは、関連データが、かなりの読み出しアクティビティおよびかなりの書き込みアクティビティのうちの少なくとも１つを経験すると予想されるかどうかを記述する、請求項１に記載の装置。
【請求項８】
前記測定されたワークロードインジケータおよびサービス品質インジケータは、関連データが、長いデータ保持時間を必要とすると予想されるかどうかを記述する、請求項１に記載の装置。
【請求項９】
前記サービス品質インジケータは、前記ワークロードインジケータに直接関連しないことが、ホスト提供のメタデータを介して暗示される、請求項１に記載の装置。
【請求項１０】
前記ホスト提供のメタデータは、ホスト識別子、論理ブロックアドレス範囲、およびファイル識別子のうちの１つ以上を含む、請求項９に記載の装置。
【請求項１１】
方法であって、
ホストを介して不揮発性データストレージに記憶されたデータに関連する、前記ホストから提供されるサービス品質インジケータを受け取ることと、
前記サービス品質インジケータに関連するワークロードインジケータを測定することと、
前記サービス品質インジケータと前記測定されたワークロードインジケータとの相関関係に応じて、重みを前記ホストに割り当てることと、
前記ホストからのデータアクセス要求に応じるときに、前記重みを前記サービス品質インジケータに適用することと、
を含む、方法。
【請求項１２】
データアクセス要求に応じて順次データを記憶することは、前記重みに対応する前記ホストからのデータを記憶するための前記不揮発性データストレージの２つ以上のタイプの非階層ストレージから、メモリを選択することを含む、請求項１１に記載の方法。
【請求項１３】
前記２つ以上のタイプの非階層ストレージは、メモリサイズ、待ち時間、スループット、電力消費、保持時間、および信頼性のうちの少なくとも１つに関連する、異なる属性を有することに基づいて選択される、請求項１２に記載の方法。
【請求項１４】
前記サービス品質インジケータは、２つを超える値の範囲を含み、前記重みを以降のサービス品質インジケータに適用することは、前記範囲と前記２つ以上のタイプの非階層ストレージとの間のマッピングを調整することを含む、請求項１２に記載の方法。
【請求項１５】
前記測定されたワークロードインジケータおよびサービス品質インジケータは、
関連データが、ランダムであるか順次的であるか、
関連データが、かなりの読み出しアクティビティおよびかなりの書き込みアクティビティのうちの少なくとも１つを経験すると予想されるかどうか、および
関連データが、長いデータ保持時間を必要とすると予想されるかどうか、のうちの少なくとも１つを記述する、請求項１１に記載の方法。
【請求項１６】
前記重みを前記ホストに返信することをさらに含む、請求項１１に記載の方法。
【請求項１７】
請求項１１に記載の方法を行うために、プロセッサによって操作可能な命令を記憶する、非一時的なコンピュータが読み出し可能な媒体。
【請求項１８】
装置であって、
２つ以上の非階層メモリユニットであって、それぞれが異なるタイプの不揮発性メモリであり、前記タイプの不揮発性メモリは、抵抗に基づくメモリを備える、２つ以上の非階層メモリユニットと、
前記２つ以上のメモリユニットに連結されるコントローラであって、
ホストを介して前記装置に記憶されたデータに関連する、前記ホストから提供されるサービス品質インジケータを記憶すること、
前記記憶されたサービス品質インジケータに関連するワークロードインジケータを測定すること、
前記記憶されたサービス品質インジケータと前記測定されたワークロードインジケータとの相関関係に応じて、重みを前記ホストに割り当てること、および
以降のホストのデータアクセス要求に応じて、前記重みを、以降のデータを記憶するときに前記２つ以上のメモリユニットの間で選択するための以降のサービス品質インジケータに適用すること、を少なくとも行うように構成される、コントローラと、
を備える、装置。
【請求項１９】
前記２つ以上のメモリユニットは、データアクセス速度、電力消費、保持時間、および信頼性のうちの少なくとも１つに関連する、異なる属性を有する、請求項１８に記載の装置。
【請求項２０】
前記測定されたワークロードインジケータおよびサービス品質インジケータは、
関連データが、ランダムであるか順次的であるか、
関連データが、かなりの読み出しアクティビティおよびかなりの書き込みアクティビティのうちの少なくとも１つを経験すると予想されるかどうか、および
関連データが、長いデータ保持時間を必要とすると予想されるかどうか、のうちの少なくとも１つを記述する、請求項１８に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホストのサービス品質インジケータに重みを割り当てるための装置および方法ならびに記憶媒体に関する。
【発明の概要】
【課題を解決するための手段】
【０００２】
本開示は、重みをホストのサービス品質インジケータに割り当てることに関する。一実施例において、方法および装置は、ホストを介して不揮発性データストレージに記憶されたデータに関連する、ホストから提供されるサービス品質インジケータを、ホストインターフェースを介して受け取るのを容易にする。サービス品質インジケータに関連するワークロードインジケータが測定され、サービス品質インジケータと測定されたワークロードインジケータとの相関関係に応じて、重みがホストに割り当てられる。重みは、ホストからのデータアクセス要求に応じるときに、サービス品質インジケータに適用される。
【０００３】
別の実施例において、装置は、２つ以上の非階層メモリユニットを含む。各ユニットは、異なるタイプの不揮発性メモリであり、不揮発メモリのタイプの少なくとも１つは、抵抗に基づくメモリを含む。この２つ以上のメモリユニットに、コントローラが連結される。このコントローラは、ホストを介して装置に記憶されたデータに関連する、ホストから提供される品質サービスインジケータを記憶することを少なくとも行うように構成される。記憶されたサービス品質インジケータに関連するワークロードインジケータが測定され、記憶されたサービス品質インジケータと測定されたワークロードインジケータとの相関関係に応じて、重みがホストに割り当てられる。以降のホストのデータアクセス要求に応じて、重みが、以降のデータを記憶するときに２つ以上のメモリユニット間で選択するための以降のサービス品質インジケータに適用される。
【０００４】
種々の実施形態のこれらのおよび他の特徴および態様は、以下の詳細な議論および添付図面を考慮して理解され得る。
【０００５】
以下の図表では、複数の図面の中の類似する／同じ構成要素を識別するために、同じ参照番号が使用され得る。
【図面の簡単な説明】
【０００６】
【図１】例示的な実施形態による、装置のブロック図である。
【図２】例示的な実施形態による、ホストおよびワークロードインジケータのデータを示すブロック図である。
【図３】例示的な実施形態に従って、ワークロードインジケータとホスト提供のインジケータとを比較したときに、重みがどのように調整され得るのかを示す表である。
【図４】例示的な実施形態に従って、複数のワークロードインジケータを考慮して、重みがどのように調整され得るのかを示す表である。
【図５】例示的な実施形態による、方法のフローチャートである。
【図６】例示的な実施形態による、方法のフローチャートである。
【図７】例示的な実施形態による、方法のフローチャートである。
【発明を実施するための形態】
【０００７】
以下の種々の例示的な実施形態の説明では、本明細書の一部を形成し、種々の例示的な実施形態が実例として示される、添付図面を参照する。他の実施形態が用いられ得ること、また、本明細書に添付される特許請求の範囲から逸脱することなく、構造上および操作上の変更が行われ得ることを理解されたい。
【０００８】
本開示は、全体として、固体メモリストレージを使用するデバイス等の、持続的データストレージデバイスに関する。固体メモリストレージとしては、磁気ディスク、フラッシュメモリ（例えば、ＮＡＮＤまたはＮＯＲタイプメモリ）、抵抗に基づくメモリ（例えば、抵抗性ランダムアクセスメモリ、相変化メモリ）、およびスピントランスファトルクのランダムアクセスメモリが挙げられるが、それらに限定されない。これらのメモリタイプのそれぞれは、異なる特徴および利点を有し得るが、異なるメモリタイプを使用するメモリデバイスの効果的な使用は、デバイスに記憶されたホストデータと関連付けられるワークロード属性／インジケータを効果的に特徴付けることに関わり得る。
【０００９】
「ワークロード属性」または「ワークロードインジケータ」という用語は、通常操作中に測定され得る特定のデータユニットと関連付けられる、時間および場所に基づく特徴を指す。例えば、インジケータは、頻度データが読み出されること、頻度データが書き込まれる／変更されること、保持時間、データへのアクセスが順次的であるかランダムであるか、等の任意の組み合わせに基づいて、データユニットに割り当てられ得る。インジケータは、データユニットに向けられたアクションによってだけでなく、近傍のデータユニットに向けられたアクションによっても決定され得る。
【００１０】
属性が関連するデータユニットは、コンピューティングアーキテクチャのどのような層がデータストレージを管理しているかに基づいて変動し得る。例えば、ホストアプリケーションは、ファイルまたはファイルシステムメタデータに関するデータユニットを確認し得る。下位レベルのホストドライバは、論理ブロックアドレス（ＬＢＮＡ）の範囲に関して、データユニットを確認し得る。デバイスの内部プロセッサは、論理アドレスおよび物理アドレスの双方に関して、データユニットを確認し得る。
【００１１】
本開示は、持続的データストレージデバイスのワークロード属性の特徴付けおよび管理に関する。類似したインジケータは、ホストデバイスから通信され得、ワークロード属性／インジケータと比較され得る。これは、図１で示されるデバイス１００等のデータストレージデバイスで使用され得る。
【００１２】
図１において、ブロック図は、例示的な実施形態による、データストレージデバイス１００を図示する。このデバイス１００は、固体メモリの任意の組み合わせを利用する、ソリッドステートドライブ（ＳＳＤ）（またはその副構成要素）として構成され得る。デバイス１００の特徴は、固体メモリおよび磁気ディスクの組み合わせを使用する混合ドライブ等の、他のタイプのハードドライブデバイスに適用可能であり得る。デバイス１００の特徴はまた、標準的なハードドライブデータインターフェースを利用しない、特殊用途の固体および／またはディスクデータストレージデバイス（またはその副構成要素）にも適用可能であり得る。例えば、デバイス１００は、例えばホスト１１４の中央処理ユニット（ＣＰＵ）およびメモリコントローラと緊密に統合される、ホストのメインボード基盤の一部として構成され得る。
【００１３】
デバイス１００は、デバイス１００の不揮発性メモリのいくつかまたは全部を含む、２つ以上のメモリユニット１０２、１０３を含む。メモリユニット１０２、１０３は、１つ以上のそれぞれ別個の物理ユニット１０４、１０５、例えばメモリチップを含み得る。この実施例において、メモリユニット１０２、１０３は非階層ユニットであり、それぞれの物理ユニット１０４、１０５は、それぞれが、互いに異なるタイプの不揮発性メモリストレージ媒体を含む。各物理ユニット１０４、１０５内で、メモリは、より小さいブロック１０６、１０７にグループ化され得る。物理ユニット１０４、１０５の下層の媒体が異なるので、ブロック１０６、１０７のメモリサイズは異なり得る。デバイス１００の特徴のいくつかは、非階層混合媒体ストレージに適用可能である一方で、この概念はまた、単一のストレージ媒体タイプを使用するデバイスでも利用され得るが、ユニット１０２、１０３間で異なる構成を伴い、メモリサイズ、読み出し待ち時間、書き込み待ち時間、電力消費、電力消費、保持時間、信頼性等のうちの１つ以上に関連する、異なる性能属性をもたらす。
【００１４】
デバイス１００は、ホストインターフェース１１２を介してホスト１１４から受け取られる要求をサービスすることを容易にする、１つ以上のコントローラ１１０を含み得る。ホストインターフェース１１２は、ハードドライブインターフェース、または他のタイプのコンピュータインタフェース（例えば、メモリコントローラインターフェース、周辺バスインターフェース）を含み得る。コントローラ１１０は、一般に、論理アドレスを参照するホスト１１４から、読み出し要求または書き込み要求を受け取り得る。コントローラ１１０は、論理アドレスを物理アドレスに翻訳し、メモリユニット１０２、１０３の適切な物理アドレスに対してそれぞれの読み出し操作または書き込み操作を行う。
【００１５】
メモリユニット１０２、１０３は、特定のメモリタイプに適切な読み出し／書き込み操作を行うために、媒体への信号の符号化、復号化、および他のアプリケーションを少なくとも行う、別々のコントローラ（図示せず）を含み得る。別々のコントローラはまた、特定のメモリアーキテクチャに適切な、それら自体の論理−物理マッピングも行い得る。そのような場合、主コントローラ１１０は、論理ホストアドレスを、メモリユニット１０２、１０３によって使用可能な内部論理アドレスに翻訳し得る。
【００１６】
デバイス１００は、数ある中でも、不揮発性メモリユニット１０２、１０３のための揮発性キャッシュ１１８に使用され得る、揮発性ランダムアクセスメモリ（ＲＡＭ）１１６を含み得る。一般に、揮発性キャッシュ１１８は、不揮発性メモリ１０２、１０３の一部分をミラーリングするが、不揮発性メモリ１０２、１０３よりも迅速にそこからの読み出しおよび／またはそこへの書き込みを行うことができる、階層メモリ構造である。いくつかの状況、例えば、短時間に読み取り／書き込みアクティビティが繰り返されると分かるデータについて、揮発性キャッシュ１１８は、性能を高める。
【００１７】
上で述ベられるように、メモリユニット１０２、１０３は、異なるタイプのメモリストレージ媒体を含む、非階層ユニットである。例えば、メモリユニット１０２、１０３は、それぞれが、フラッシュメモリ、抵抗性ＲＡＭ（ＲｅＲＡＭ）、スピントルクＲＡＭ（ＳＴＲＡＭ）、または相変化メモリ（ＰＳＭ）ユニットのうちの異なるものであり得る。コントローラ１１０は、データと関連付けられるワークロード属性に基づいて、ユニット１０２、１０３のうちの特定の１つに記憶するためのデータを選択し得る。例えば、メモリユニット１０２、１０３は、メモリサイズ、読み出し／書き込み待ち時間、読み出し／書き込みスループット、電力消費、保持時間、信頼性等に関して、異なる性能を有し得る。ホスト１１４はまた、記憶されたデータと関連する所望の性能属性に基づいて、ユニット１０２、１０３に記憶する特定のデータも目標とし得る。所望のデータ属性としては、高速アクセスに対する必要性、書き込み／更新の頻度、信頼性に対する必要性、長い保持時間、順次的またはランダムなアクセス等が挙げられる。
【００１８】
一般に、所望のデータ属性を、データが記憶されるメモリユニット１０２、１０３の特徴と一致させることが有用である。例えば、頻繁に書き込まれるデータは、高耐久性のメモリタイプに最良に記憶され得る。高速アクセスを必要とするデータは、低い読み出し待ち時間のメモリタイプに最良に記憶され得る。書き込まれる頻度は低いが、高い信頼性を必要とするデータは、良好な信頼性および保持特徴を有する、比較的高い待ち時間のメモリタイプに最良に記憶することができる。データは、より良好にまたはより容易に特定のメモリサイズと一致され得る。例えば、ある要求サイズが、メモリページサイズに適合され得るか、または一致していない要求が、読み出し−修正−書き込み操作（例えば、低い待ち時間、高い耐久性）に、より良好に適するメモリに適合され得る。
【００１９】
メモリユニット１０２、１０３は、非階層であるので、階層キャッシュ配置のようにユニット１０２、１０３間で冗長データを同期させる必要はない。一般に、データを記憶するために、ユニット１０２、１０３が選択される（例えば、データの論理アドレスが、選択されたメモリユニット１０２、１０３の物理アドレスにマップされる）と、データは、データが必要とされている限り、そのユニットの中に存在し続け得る。データ属性が再評価され、再評価に基づいてデータが一方のユニット１０２、１０３からもう一方のユニットに移動されるときの事例があり得る。再評価は、一定の間隔でスケジュールされたプロセスである場合もあれば、そうでない場合もあり、例えば、ユーザ要求に基づいて、デバイスがかなりのアクティビティを起こす、満杯になる、増加したビットエラーレートを経験する、等のときに起こり得る。再評価中に、データに影響を及ぼす現在のアクティビティが、初期のデータの分類に基づいて予想されるアクティビティと異なる場合、データは、移動され得る。
【００２０】
図示される実施形態において、ホスト１１４は、例えばホストインターフェース１１４を介してシグナリングすることによって、所望のストレージ属性をデバイス１００に報告し得る。このシグナリングは、データが転送されているとき、またはいつかの他のときに生じ得る。本開示の目的で、この所望の属性のシグナリングで使用されるデータは、サービス品質（ＱｏＳ）インジケータと称される。
【００２１】
ＱｏＳインジケータは、高速アクセスに対する必要性、書き込み／更新の頻度、信頼性に対する必要性、長い保持時間、順次的またはランダムなアクセス等の、本明細書で説明される所望のストレージ属性の任意の組み合わせを示すために使用され得る。ＱｏＳインジケータは、アクセス速度、信頼性、ランダム性等の目標属性を明示的に記述し得る。ＱｏＳインジケータは、暗示的であり得、例えば、ワークロードインジケータに関連しない、他のホスト提供のメタデータから導き出され得るが、そこからは、ＱｏＳ要件が導き出され得る。そのような暗示的ＱｏＳインジケータとしては、ファイル識別子、ホスト識別子、論理ブラックアドレス範囲、アプリケーション名等が挙げられるが、それらに限定されない。これらの暗示的インジケータは、履歴的解析、帯域外シグナリング等によって決定され得る。ホスト１１４は、ＱｏＳインジケータを、論理ブロックアドレス（ＬＢＡ）範囲、ファイル、ディレクトリ、アプリケーション等の、任意の記憶されたデータユニットと関連付け得る。ホスト１１４は、ホスト要求が論理アドレスに影響を及ぼす前、その間、またはその後に、ＱｏＳインジケータを論理アドレスと関連付けることによって、インジケータをデバイス１００に通信し得る。
【００２２】
図１で示されるように、デバイス１００は、コントローラ１１０を介して操作可能な機能モジュールのためのメモリの予約部分１２０と、デバイスによって内部的に使用される持続的データを記憶するためのデータベース１２２とを含む。例えば、ホスト属性モジュール１２４は、デバイス１００の操作中に、ホスト１１４から受け取られるＱｏＳインジケータを監視し得る。ホスト属性モジュール１２４はまた、ＱｏＳデータをデータベース１２２に記憶し得る。ＱｏＳデータは、インデックスとして個々の論理アドレスまたはアドレスの範囲を使用して、データベースに記憶され得る。
【００２３】
ホスト供給のＱｏＳインジケータが、データのワークロード要件に関して常時正しい場合、ＱｏＳインジケータを記憶する必要はない。そのような場合、ホスト供給のＱｏＳインジケータを使用して、データをどこに記憶するのかを決定することができ、次いで、ＱｏＳインジケータを安全に破棄することができる。しかしながら、ホスト供給のインジケータが正しくない場合があり得る。例えば、ホストプログラムまたはオペレーティングシステムは、正しくない推測を行い得ること、正しくないまたは次善のデフォルト値に依存し得ること、等があり得る。
【００２４】
データが最初に書き込まれるときに、ホスト供給のＱｏＳデータが正しい場合であっても、ホスト通信プロトコルは、例えば記憶されたデータの以降の読み出しまたは更新中に、ＱｏＳを更新するためのプロビジョニングを有しないことがあり得る。その結果、データが最初に記憶されたときにメモリユニット１０２、１０３のうちの１つに最適にプロビジョニングされたある量のデータが、経時的なデータ変更の使用につれて、後で準最適にプロビジョニングされる。
【００２５】
ホスト供給のＱｏＳデータを有効に管理するために、デバイス１００は、経時的にデータワークロードアクティビティを追跡する、ワークロード属性モジュール１２６を含み、アクティビティのインジケータをデータベース１２２に記憶する。ワークロードは、到来する書き込みデータを監視し、以降の読み出しを測定することによって決定することができる。ワークロードはまた、空間的局所性のための関連付けられるコマンドを時間的に監視することによっても決定され得る。
【００２６】
時間的局所性は、ある時点で参照またはアクセスされ、近い将来に再度参照される可能性がある情報を含む。空間的局所性は、近隣のデータが最近アクセスされていれば、データがアクセスされる可能性がより高いという概念を連想させる。順次データは、複数のコマンドが、特定の空間的局所性に当てはまる時間的局所性を有するときに決定される。これは、２つ以上の異なる組のＬＢＡ範囲（またはファイル）が、１組として（例えば、全てのｉノード、ファイルおよびｉノード、キーおよび値等）まとめてアクセスされるときに生じ得る。ワークロード属性は、時間的に関連付けられたコマンドと、共通の時間的アフィニティを有するグループ化コマンドとを比較することによって決定される、ワークロード関連データセットとして構成することができる。
【００２７】
ワークロードデータは、ワークロード属性モジュール１２６およびホスト属性モジュール１２４からのデータを比較する、解決／重みモジュール１２８に利用できるようにされる。解決／重みモジュール１２８は、特定のデータユニットについてホスト１１４によって提供されるＱｏＳインジケータと、該データユニットについて実際に測定されたワークロードアクティビティとの間の相違を解決する。これは、ホストＱｏＳインジケータの重みを作成するために使用することができる。
【００２８】
重みは、データをメモリユニット１０２、１０３のどこに記憶するかを選択するときに、データ割り当てモジュール１３０によって適用することができる。重みは、測定されたワークロード属性によって補足される「ヒント」とみなされる、ＱｏＳインジケータをもたらし得る。別の実施例において、ＱｏＳインジケータは、ホスト１１４からの以前のＱｏＳインジケータの精度に基づいてスケーリングすることができる。単一の重みが、特定のホスト１１４からの全てのインジケータに適用され得るか、またはいくつかの重みが、異なる細かさのレベル、例えば、ＱｏＳインジケータのタイプ、ホストコマンドのタイプ、メモリ範囲、ホストコマンドまたはデータのコンテキスト等で使用され得る。
【００２９】
重みは、異なるメモリタイプ間でのより良好なデータ移送／割り当ての際にホスト１１４を補助するために、ホストインターフェース１１２を介してホスト１１４に返信することができる。重みは、データに対する予想された変更のため、データのマッピング状態に対する変更が行われない、または以前の内部追跡データがデータセットのトリミング時にクリアされる、データのトリミング等の他のヒントに適用され得る。重み付けは、メモリユニット１０２、１０３間でのデータのバックグラウンドの再割り当てに応じて行われ得る。バックグラウンドのプロセスは、時として、既存のデータについてＱｏＳ値を再確認し、リソースのより良好な使用をもたらす場合に、データを再割り当てすることができる。例えば、ホスト供給のＱｏＳは、それが頻繁にアクセスされることを示唆しているが、ワークロードインジケータは、それが長期間にわたってアクセスされていないことを示す場合、そのようなプロセスは、データの格下げを生じさせ得る。
【００３０】
本明細書で説明される実施形態の１つの態様は、異なる抽象化層（ホストファイル、デバイス、ＬＢＡ、コントローラ、物理アドレス）が必要とされ得ないことである。例えば、デバイス１００およびコントローラ１１０は、ファイルまたはオブジェクトのより抽象的な概念によって作動することができ、したがって、システムの中の層の数を低減させることができる。ホスト１１４とストレージデバイス１００との間のこの種の通信の概念は、デバイス１００が、実際にはホスト１１４の一部とみなされること、例えば、オペレーティングシステムおよび／またはカーネルレベルのアクセスが（例えば、インテリジェントＤＲＡＭコントローラのような）デバイスコントローラ１１０によって直接理解されることであり得る。そのような場合、サービス品質インジケータの通信は、要求の性質によって暗示され得る。例えば、オペレーティングシステムのページングが高速ストレージを獲得し得ること、アプリケーションのページングが低速ストレージを獲得し得ること、動的リンクライブラリ（ＤＬＬ）のローディングが中速を獲得すること等である。
【００３１】
以下、図２を参照すると、ブロック図は、例示的な実施形態による、属性データセット２００の比較を図示する。ブロック２０２〜２０５は、４つの異なるアドレス（例えば、ＬＢＡ）について収集されたメタデータを表す。ブロック２０２〜２０５のメタデータは、個々のアドレスおよび／またはアドレスのブロックと関連付けられるアクティビティを記述し得る。各ブロック２０２〜２０５のデータは、２つのカテゴリ、例えば、ブロック２０２で示されるように、ホストインジケータ２０２Ａおよびワークロードインジケータ２０２Ｂに分割される。
【００３２】
ホストインジケータ２０２Ａは、この実施例において速度（例えば、待ち時間、スループット）、保持、およびデータがランダムであるか否かに関する、ホストによって提供されるＱｏＳインジケータを含む。これらのインジケータの最初の２つは、２ビットの数（０〜３）によって指定され、ランダム性は、単一のビット、すなわち、ランダムの場合は「１」、順次的な場合「０」である。この実施例では、ホストとストレージデバイスとの間の通信オーバーヘッドを低減させるために、ホストインジケータが最小のワードサイズを使用すると予想される。しかしながら、本実施形態は、ホストまたはワークロードインジケータの任意の特定の形態またはワード長に限定されない。
【００３３】
ワークロードインジケータ２０２Ｂは、ストレージデバイスによって測定される。ワークロードインジケータ２０２Ｂも、ホストインジケータ２０２Ａとの比較を簡単にするために、２ビットの数として示される。実際には、ワークロードインジケータは、比較的大きいデータセットから数学的に導き出され得るので、ワークロードインジケータ２０２Ｂは、より高い精度（例えば、８ビット以上の数）を使用して表され得る。そのような場合、ワークロードインジケータ２０２Ｂは、ホストインジケータ２０２Ａの利用可能な値に適合する範囲に分割することができる。
【００３４】
この実施例においてデバイスによって測定されるワークロードインジケータは、一般に、読み出し／書き込みの回数および／または読み出し／書き込みの時間的近さの尺度である、「読み出しホットネス」および「書き込みホットネス」を含む。高い値の読み出しホットネスおよび書き込みホットネスは、データブロックがかなりの量のアクティビティを受けることを示し、これは、どのくらい前にアクティビティが発生したのか従って重み付けされる場合もあれば、そうでない場合もある。キャッシュは、一般に、最近の読み出しまたは書き込みアクティビティを追跡することだけしか必要としないので、これは、読み出しキャッシュまたは書き込みキャッシュがアクティビティをどのように追跡し得るのかということとは異なり得る。しかしながら、アクティビティが比較的低い頻度で（例えば、システムのブート中にだけ）起こる場合であっても、性能的な目的で、繰り返しの集中的なアクティビティを経験する、あるデータユニットへの高速アクセスを提供することが望ましくなり得る。
【００３５】
図２の実施例のデバイスはまた、ランダム性ワークロードインジケータによって示されるように、アドレス範囲に対する読み出しがどのくらい頻繁に同じ順序で生じるのかも測定する。順次データユニット（例えば、メディアファイル）は、通常、予測可能な順序で読み直される。ハードドライブのメタデータ（例えば、ジャーナル、ファイルアロケーションテーブル）等の他のデータは、ランダムな順序で書き込まれ、読み出され、および／または更新され得る。あるデータストレージタイプおよび関連アクセスアルゴリズムは、ランダムなデータに関して比較的より良好に機能し得、他のものは、順次データに関して比較的より良好に機能し得る。
【００３６】
図１の解決／重みモジュール１２８等の解析モジュールは、ホストインジケータ２０２Ａをワークロードインジケータ２０２Ｂと相関させるように構成される。例えば、システム性能は、一般に、高頻度または低頻度で集中的なアクティビティを経験するデータが、より高速なストレージ媒体に配置される場合に向上し得る。このように、速度ＱｏＳインジケータは、読み出し／書き込みホットネスのワークロードインジケータに相関させることができる。インジケータ２０２Ａ、２０２Ｂの間には、負の相関関係があり得る。例えば、長期の保持は、頻繁に書き直されるデータにとって優先事項となり得ないので、ＱｏＳインジケータ２０２Ａにおける保持は、ワークロードインジケータ２０２Ｂの書き込みホットネスに逆相関し得る。この例は、仮想メモリであり、それは、短期間だけ依存され得る。
【００３７】
ブロック２０２において、ホストインジケータ２０２Ａのいくつかは、いくつかの測定されたワークロードインジケータ２０２Ｂと良好に相関しないと思われる。例えば、ホストは、最も高い速度のインジケータを示したが、読み出しホットネスおよび書き込みホットネスは、データが最初に記憶されてから、かなりの読み出し／書き込みアクセスが見られなかったことを示す。しかしながら、データのランダム性は、ホストによって示されるものと相関すると思われるが、この場合はデータがほとんど使用されていないと思われるので、このパラメータは、性能にあまり影響を及ぼし得ない。
【００３８】
ブロック２０３および２０４における関連するホストインジケータは、測定されたワークロードインジケータ、例えば高い／低い読み出し／書き込みホットネスのワークロードインジケータと適合する高い／低い速度のＱｏＳインジケータと密に相関すると思われる。ブロック２０５における読み出しおよび書き込みホットネスのインジケータは、速度および保持のためのホストインジケータに矛盾すると思われる。その結果、この少数のサンプルについて、ホストは、ランダム／順次データを良好に分類していると思われるが、アクセス速度に対する必要性を過大評価し、データ保持に対する必要性を過小評価している可能性があると結論され得る。このように、ストレージシステムは、将来、データを異なるメモリユニットに割り当てるときに、より少ない重みをホスト提供の速度および保持インジケータに与える傾向があり得る。
【００３９】
以下、図３を参照すると、表３００は、例示的な実施形態に従って、重みがシステムにどのように適用され得るのかを図示する。表３００は、ストレージデバイスによって独立して評価することができる、ホストによってストレージデバイスに提要される任意のメトリックまたはインジケータに適用可能であり得る。縦軸は、ホスト提供のインジケータを示し、横軸は、測定されたワークロードインジケータを示す。この実施例において、インジケータは、横軸および縦軸上の「低」および「高」という表記から分かるように、ある値の範囲を有し得る。
【００４０】
図中の４つの領域３０２〜３０５は、ホスト提供のインジケータを、測定されたワークロードインジケータとどのように比較するのかに応じて、ホストインジケータが、どのように重み付けされ得るのかを図示する。領域３０３および３０４は、測定されたワークロードインジケータがホスト提供のインジケータと一致する場所を示す。領域３０２は、測定されたワークロードインジケータと比較して、ホストインジケータが高い場所を示し、領域３０４は、測定されたワークロードインジケータと比較して、ホストインジケータが低い場所を示す。
【００４１】
領域３０２〜３０５は、ホスト提供のインジケータの精度の一般的なインジケータを提供し得るが、重みのそれぞれの増加または減少は、各領域３０２〜３０５に対して均一に適用される必要はない。例えば、ホスト提供のインジケータの大部分が領域３０４と３０５との間で等しく分割される場合、これは、ホストが圧倒的に低く評価していることを示し得る。領域３０４および３０５によって示される重みの変化が等しく適用された場合、ホストは、中間の重みを有することになる。しかしながら、領域３０４における正しい指示は、偶然に起因し得、それは、領域３０４の中にあるインジケータが重みに対して及ぼす影響がより少ない（または全く影響を及ぼさない）ことが望ましくなり得る。類似する解析を、領域３０３および領域３０２の中のインジケータに適用し得る。
【００４２】
ホストが一貫して高いまたは低いと評価する場合、これはまた、ＱｏＳインジケータを異なるストレージユニットにマップするときに、ホストインジケータがどのように翻訳され、適用され得るかという指示も提供し得る。図２による例示的な速度メトリックを使用すると、ホストが適度に正確であり、異なる速度属性を伴う２つのメモリユニットタイプがあった場合、０または１のホスト提供の速度メトリックを有するデータは、より遅い方のメモリユニットにマップされる。２または３のホスト提供のメトリックを有するデータは、より速い方のメモリユニットにマップされる。
【００４３】
上で説明されるマッピングは、ホストの重みに基づいて調整され得る。例えば、ホストのインジケータが一貫して領域３０２および３０３の中にある（ホストが、速度に対する必要性を過大評価している）場合、０〜２のホスト提供のメトリックを有するデータが、より遅い方のメモリユニットに適用され、３のホスト提供のメトリックを有するデータが、より速い方のメモリユニットに適用される。一方で、ホストのインジケータが一貫して領域３０４および３０５の中にある（ホストが、速度に対する必要性を過小評価している）場合、０のホスト提供のメトリックを有するデータが、より遅い方のメモリユニットに適用され、１〜３のホスト提供のメトリックを有するデータが、より速い方のメモリユニットに適用される。
【００４４】
ホストが１つを超えるＱｏＳメトリックを提供する場合、ホスト提供のインジケータに対する重みおよび修正は、各メトリックを単独で調べる必要がないことが認識されるであろう。一実施例として図２によるメトリックを使用すると、ホストは、速度インジケータが低いときはいつも正確な保持インジケータを提供し得るが、速度インジケータが高いときにはいつも不正確な保持インジケータを提供し得る。その結果、データを記憶する場所に関する決定は、図４にあるような、統合決定表を使用し得、該図は、例示的な実施形態による、統合決定表４００を示す。
【００４５】
図４において、２つ以上のメモリユニットタイプのうちの１つに１つのユニットを記憶するという決定は、２つのホスト提供のインジケータＩ１およびＩ２に依存し得る。ＱｏＳ値Ｑは、Ｑ＝Ｗ×（Ｃ１×Ｉ１＋Ｃ２×Ｉ２）使用して見出され得、式中、Ｃ１およびＣ２は、スケーリング定数である。ＱＴを閾値とすると、Ｑ≧ＱＴである場合、データは、一方のメモリユニットに配置され得、Ｑ＜ＱＴである場合、データは、もう一方のメモリユニットに配置され得る。これは、複数の閾値ＱＴを使用することによって、任意の数のメモリユニットに拡張され得る。重みＷは、ホストインジケータが表４００の四半部４０２〜４０５のどこに入るかに依存して調整され得る。これは、Ｑ＝Ｗ１×Ｃ１×Ｉ１＋Ｗ２×Ｃ２×Ｉ２に設定することによって、さらに精緻化され得る。そのような場合、Ｗ１およびＷ２のそれぞれは、ホストインジケータが入る表４００の四半部４０２〜４０５に基づいて、独立に決定／調整される。
【００４６】
表３００および表４００は、さらなる仕切りを含むように修正され得、そのような仕切りは、互いに対して直線的または非直線的にサイズ決定され得ることが認識されるであろう。表３００および表４００はまた、「低」／「高」の表記が「０」／「１」、「真」／「偽」等と置き換えられる、２進数のホスト提供のインジケータまたはワークロードインジケータにも使用され得る。そのような２進数のインジケータは、一方または双方の軸に使用され得、前者の場合、多値軸とともに使用され得る。
【００４７】
以下、図５を参照すると、フローチャートは、例示的な実施形態による手順を図示する。フローチャートは、５００で、記憶場所に影響を及ぼす要求、例えば、読み出し、書き込み、更新をホストから受け取ることによって引き起こされる。記憶場所は、１つ以上のアドレス（例えば、隣接する範囲）を含み得る。この要求は、決定ブロック５０２で示されるように、ＱｏＳインジケータを含む場合もあれば、含まない場合もある。読み出し等のいくつかの要求は、ＱｏＳインジケータを含み得ないが、それでも、内部メトリックを追跡する目的で重要であり得る。要求がＱｏＳインジケータを有する場合、５０４で、それがデータベースに加えられ、５０６で、メトリックカウンタが１つ増加される。
【００４８】
メトリックカウンタは、時として、ホスト供給のＱｏＳインジケータの重みの更新を引き起こすことが意図されるが、経過時間等の他のトリガーも使用され得る。決定ブロック５０８で試験されたときに、メトリックカウンタが閾値を超えた場合、５１０で、図６でさらに詳細に示される機能を使用して調整される。５１０で重みが調整された後に、カウンタは、所望の数の操作が再度生じるまで５１０での調整が繰り返されないように、５１２でリセットされる。
【００４９】
ブロック５０２でＱｏＳインジケータが見つかったか否かに関わらず、要求は、それでも、５１４で、記憶場所に関する内部ワークロードインジケータを更新するために使用され得る。例えば、ＱｏＳインジケータが、最初にデータが書き込まれるときにだけ使用される場合、以降の読み出しまたは更新操作は、ＱｏＳインジケータを有しないが、それでも、５１４でワークロードインジケータを更新するのに有用である。更新されたワークロードインジケータは、データが書き込まれたときに提供されたアドレスと関連付けられるＱｏＳインジケータと比較することができる。ワークロードインジケータは、キャッシングおよびガーベージコレクション等の他の操作にも使用され得る。
【００５０】
決定ブロック５１６で、イベントが新しいストレージ場所を画定する（例えば、新しいデータを書き込む）ことを要求すると決定された場合、サービス品質インジケータの重み付けした値に基づいて、５１８で、データを記憶する適切なメモリユニットが決定される。ＱｏＳインジケータが、新しいデータを書き込むことに対する要求にも随意である配設では、５１８で、重み付けしたＱｏＳの代わりに、ワークロードインジケータ（例えば、時間またはアドレスが現行データと関連する他のデータと関連付けられるインジケータ）、またはデフォルト値等の、他のデータが使用され得る。ＱｏＳが提供される場合であっても、ホストの重みが十分に低い場合、デバイスは、ＱｏＳインジケータの代わりに、ワークロードインジケータまたはいくつかの他の属性を使用し得る。
【００５１】
要求は、５２０で、ルーチンを出る前に満たされる。５２０で要求を満たすことは、１つまたは複数の目標アドレスの読み出し、書き込み、更新を含み得る。これらの操作の順序が変更され得ること、およびいくつかの操作が並列に行われ得ることが認識されるであろう。例えば、要求は、５２０で、ルーチンの開始時に満たされ得、他の操作は、並列に行われ得るか、または後で実行するようにキューに入れられ得る。
【００５２】
以下、図６を参照すると、フローチャートは、例示的な実施形態による、ホストの重みを調整するために使用される、図５による調整機能５１０の実施例を図示する。手順は、ループ端ブロック６００で示されるように、ホスト提供の属性を有する全てのアドレスを通してループすることを含む。例えば、ホスト提供のＱｏＳ属性が、ＬＢＡによってインデックスが付けられたデータベース（例えば、図１のデータベース１２２）に記憶されている場合、ループ６００を通して繰り返すために、ＬＢＡによって記憶された全ての記録に対するクエリーが使用され得る。
【００５３】
６０２で、ループ６００の各アドレスについて、ホスト提供のＱｏＳインジケータが見つけられる。６０４で、同じアドレスについて、測定されたワークロードインジケータが見つけられる。６０６で、ワークロードインジケータとの比較に基づいて、ホスト提供のＱｏＳインジケータの精度が決定される。この比較は、ルックアップテーブルに基づいて、または当技術分野で知られる他の相関関数を使用して、数字で示される。６０８で、この比較に基づいて、ホストの重みが調整される。重みは、総じてホストに適用可能であり得、または異なるホスト提供のＱｏＳインジケータおよび／またはＱｏＳインジケータの組み合わせに対する、１つを超える別々の重みを含み得る。ループ６００を出た後に、６１０で、１つ以上の調整されたまたは新しい重みが記憶される。
【００５４】
６０８で重みを調整することは、既存の重みを修正すること、または新しい重みを作成することを含み得る。例えば、ループ６００を通した各繰り返しは、累算器に対して加算または減算することができる。６１０で、ループは出たが、重みが記憶される前に、累算器は、適切な値、例えば０と１との間に平均化し、スケーリングすることができる。このスケーリングされた谷は、存在していれば以前の重みと組み合わせる（例えば、平均化する）ことができ、または任意の以前の重みを置き換えることができる。
【００５５】
以下、図７を参照すると、フローチャートは、例示的な実施形態による方法を図示する。この方法は、７０２で、ホストから提供されるサービス品質インジケータを、（例えば、ホストインターフェースを介して）受け取ることを含む。サービス品質インジケータは、ホストを介して不揮発性データストレージに記憶されるデータに関連する。
【００５６】
７０２で、サービス品質インジケータに関連するワークロード属性が測定され、７０４で、属性と監視されたワークロード属性との相関関係に応じて、重みがホストに割り当てられる。測定されたワークロードインジケータおよびサービス品質インジケータは、ａ）関連データがランダムであるか、順次的であるか、ｂ）関連データが、かなりの読み出しアクティビティおよびかなりの書き込みアクティビティのうちの少なくとも１つを経験すると予想されるかどうか、ｃ）関連データが、長いデータ保持時間を必要とすると予想されるかどうか、のうちの少なくとも１つを記述し得る。
【００５７】
７０６で、以降のホストのデータアクセス要求に応じるときに、重みがサービス品質インジケータに適用される。例えば、重み付けした以降のサービス品質インジケータに応じて、以降のデータを記憶するメモリが、不揮発性データストレージの２つ以上のタイプの非階層ストレージから選択され得る。２つ以上のタイプの非階層ストレージは、例えば、メモリサイズ、読み出し待ち時間、書き込み待ち時間、電力消費、保持時間、および信頼性のうちの少なくとも１つに関連する、異なる属性を有することに基づいて選択され得る。重みは、ホストに返信して、例えば、以降のデータの分類、およびＱｏＳインジケータの使用において、ホストを支援し得る。
【００５８】
別の配設において、サービス品質の測定値は、２つを超える値の範囲を含み得る。そのような場合、重みを以降のサービス品質インジケータに適用することは、範囲と２つ以上のタイプの非階層ストレージとの間のマッピングを調整することを含む。２つ以上のタイプの非階層ストレージの少なくとも１つは、抵抗に基づくメモリ（例えば、ＲｅＲＡＭ、ＰＣＭ）を含み得る。
【００５９】
上で説明される種々の実施形態は、特定の結果を提供するように相互作用する回路および／またはソフトウェアモジュールを使用して実現され得る。コンピューティング技術の当業者は、モジュールレベルで、または総じて当技術分野で一般に知られている知識を使用して、そのような説明される機能を容易に実現することができる。例えば、本明細書で図示されるフローチャートは、プロセッサによって実行するためのコンピュータが読み出し可能な命令／コードを作成するために使用され得る。そのような命令は、コンピュータが読み出し可能な媒体に記憶され、当技術分野で知られているように実行するためのプロセッサへ転送され得る。上で示される構造および手順は、上で説明されるデータストレージデバイスにおけるキャッシングの管理を容易にするために使用することができる実施形態の代表例に過ぎない。
【００６０】
例示的な実施形態の前述の説明は、例示および説明の目的で提示したものである。本記述は、網羅的であること、または本発明の概念を開示された形態に限定することを意図したものではない。上述の教示に照らして、多数の修正および変形が可能である。開示される実施形態の特徴のいずれかまたは全ては、個々にまたは任意の組み合わせで適用することができ、限定することを意味するものではなく、単なる実例である。範囲は、この詳細な説明によって限定されるのではなく、むしろ本明細書に添付される特許請求の範囲によって限定されることを意図する。
【図１】
2014164769.tif 000003
【図２】
2014164769.tif 000004
【図３】
2014164769.tif 000005
【図４】
2014164769.tif 000006
【図５】
2014164769.tif 000007
【図６】
2014164769.tif 000008
【図７】
2014164769.tif 000009