(57)【要約】例示的な装置は、ホストに結合するためのハイブリッドメモリシステム、及びハイブリッドメモリシステムに結合されたコントローラを含む。コントローラは、コマンドに感度を割り当て、少なくとも部分的に割り当てられた感度に基づいてコマンドをハイブリッドメモリシステムに選択的に転換させるように構成されてよい。
2021517307.tif 000002
【特許請求の範囲】
【請求項１】
装置であって、
ホストに結合するためのハイブリッドメモリシステムと、
前記ハイブリッドメモリシステムに結合されたコントローラであって、
コマンドに感度を割り当て、
少なくとも部分的に前記割り当てられた感度に基づいて、前記ハイブリッドメモリシステムに前記コマンドを選択的に転換させる
ように構成される前記コントローラと、
を備える、前記装置。
【請求項２】
前記感度が、少なくとも部分的に前記コマンドの実行の頻度及び前記コマンドのサイズのうちの少なくとも１つに基づく、請求項１に記載の装置。
【請求項３】
前記ハイブリッドメモリシステムに結合可能なホストが、前記コマンドの前記割り当てられた感度に基づいて、前記コマンドにインジケータを割り当てるように構成される、請求項１に記載の装置。
【請求項４】
前記コントローラが、
前記コマンドの実行と関連付けられた書き込みレイテンシを決定し、
前記コマンドの実行と関連付けられた前記書き込みレイテンシが、特定の書き込みレイテンシ閾値を超える旨の判断に応えて、前記ハイブリッドメモリシステムに前記コマンドを選択的に転換させる
ようにさらに構成される、請求項１〜３のいずれか１項に記載の装置。
【請求項５】
前記感度が、少なくとも部分的に、前記コマンドの実行で消費されるリソースの量に基づく、請求項１〜３のいずれか１項に記載の装置。
【請求項６】
前記コントローラが、前記ハイブリッドメモリシステムの別の部分よりもより低いアクセスレイテンシ及びより高い耐久性のうちの少なくとも１つによって特徴付けられる前記ハイブリッドメモリシステムの一部分に、前記コマンドを選択的に転換させるようにさらに構成される、請求項１〜３のいずれか１項に記載の装置。
【請求項７】
装置であって、
ホストに結合するためのハイブリッドメモリシステムと、
前記ハイブリッドメモリシステムに結合されたコントローラであって、
前記ホストによって実行された特定のタイプのコマンドトラフィックを識別し、
少なくとも部分的に前記識別された特性に基づいて、前記ハイブリッドメモリシステムに前記コマンドトラフィックを選択的に転換させる
ように構成される前記コントローラと、
を備える、前記装置。
【請求項８】
前記特定のタイプのコマンドトラフィックが、ファイルシステムメタデータの更新に対応するコマンドトラフィックである、請求項７に記載の装置。
【請求項９】
前記特定のタイプのコマンドトラフィックが、反復的な書き込みパターン及び予測可能な書き込みパターンのうちの少なくとも１つを示すコマンドトラフィックである、請求項７に記載の装置。
【請求項１０】
前記特定のタイプのコマンドトラフィックが、ファイルシステムメタデータに対応するコマンドトラフィックを含む、請求項７に記載の装置。
【請求項１１】
前記コントローラが、前記コマンドトラフィックの実行の頻度及び前記コマンドトラフィックのサイズのうちの少なくとも１つに基づいて、前記特定のタイプのコマンドトラフィックを識別するようにさらに構成される、請求項７に記載の装置。
【請求項１２】
前記コントローラが、前記コマンドトラフィックの実行で消費されるリソースの量に基づいて、前記特定のタイプのコマンドトラフィックを識別するようにさらに構成される、請求項７に記載の装置。
【請求項１３】
前記ハイブリッドメモリシステムが、第１の部分及び第２の部分を含み、前記第１の部分がＮＡＮＤ部分であり、前記第２の部分が、新たに出現したタイプのメモリ部分である、請求項８〜１２のいずれか１項に記載の装置。
【請求項１４】
方法であって、
コマンドに感度を割り当てることと、
少なくとも部分的に前記割り当てられた感度に基づいて、ハイブリッドメモリシステムに前記コマンドを選択的に転換させることと、
を含む、前記方法。
【請求項１５】
前記コマンドの実行で消費されるリソースの量、前記コマンドのサイズ、前記コマンドの実行の頻度、またはその組み合わせに基づいて、前記コマンドに前記感度を割り当てることをさらに含む、請求項１４に記載の方法。
【請求項１６】
前記ハイブリッドメモリシステムの別の部分よりもより低いアクセスレイテンシ及びより高い耐久性のうちの少なくとも１つによって特徴付けられる前記ハイブリッドメモリシステムの一部分に前記コマンドを選択的に転換させることをさらに含む、請求項１４〜１５のいずれか１項に記載の方法。
【請求項１７】
前記コマンドがデータベース管理システムコマンドを含む、請求項１４〜１５のいずれか１項に記載の方法。
【請求項１８】
前記コマンドが、複数のランダム書き込み動作によって特徴付けられると判断することと、
少なくとも部分的に、前記コマンドが前記複数のランダム書き込み動作によって特徴付けられる旨の前記判断に基づいて、前記ハイブリッドメモリシステムに前記コマンドを選択的に転換させることと、
をさらに含む、請求項１４〜１５のいずれか１項に記載の方法。
【請求項１９】
前記コマンドが閾値コマンドサイズよりも小さいと判断することと、
少なくとも部分的に、前記コマンドが前記閾値コマンドサイズよりも小さい旨の前記判断に基づいて、前記ハイブリッドメモリシステムに前記コマンドを選択的に転換させることと、
をさらに含む、請求項１４〜１５のいずれか１項に記載の方法。
【請求項２０】
方法であって、
ホストによって実行される特定のタイプのコマンドトラフィックを識別することと、
少なくとも部分的に、前記識別された特性に基づいて、前記ホストに結合可能なハイブリッドメモリシステムに、前記コマンドトラフィックを選択的に転換させることと、
を含む、前記方法。
【請求項２１】
前記特定のタイプのコマンドトラフィックが、ファイルシステムメタデータの更新に対応するコマンドトラフィック、反復的な書き込みパターンを示すコマンドトラフィック、予測可能な書き込みパターンを示すコマンドトラフィック、前記ホストと関連付けられたジャーナル処理ファイルシステムに対応するコマンドトラフィック、またはその組み合わせである、請求項２０に記載の方法。
【請求項２２】
前記コマンドが複数のランダム書き込み動作によって特徴付けられること、前記コマンドが閾値コマンドサイズよりも小さいこと、またはその組み合わせであると判断することと、
少なくとも部分的に前記判断に基づいて、前記ハイブリッドメモリシステムに前記コマンドを選択的に転換させることと、
をさらに含む、請求項２０〜２１のいずれか１項に記載の方法。
【請求項２３】
少なくとも部分的に、前記コマンドトラフィックが特定の書き込みパターンを示す旨の判断に基づいて、前記ハイブリッドメモリシステムの一部分に前記コマンドトラフィックを選択的に転換させることをさらに含む、請求項２０〜２１のいずれか１項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に半導体メモリ及び方法に関し、より詳細には、ハイブリッドメモリシステムに関係する装置及び方法に関する。
【背景技術】
【０００２】
メモリデバイスは、通常はコンピューティングシステムの中の内部半導体集積回路として提供される。揮発性メモリ及び不揮発性メモリを含む多くの異なるタイプのメモリがある。揮発性メモリは、そのデータ（例えば、ホストデータ、エラーデータなど）を維持するために電力を必要とする場合があり、中でも、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）、及びサイリスタランダムアクセスメモリ（ＴＲＡＭ）を含む。不揮発性メモリは、電力が供給されていないときに記憶されているデータを保持することによって永続的データを提供することができ、中でも、ＮＡＮＤフラッシュメモリ、ＮＯＲフラッシュメモリ、及び相変化ランダムアクセスメモリ（ＰＣＲＡＭ）、抵抗ランダムアクセスメモリ（ＲＲＡＭ）などの抵抗可変メモリ、及びスピントルクトランスファランダムアクセスメモリ（ＳＴＴ  ＲＡＭ）などの磁気抵抗ランダムアクセスメモリ（ＭＲＡＭ）を含む場合がある。
【０００３】
コンピューティングシステムは、多くの場合、命令を取り出し、実行し、実行した命令の結果を適切な場所に格納し得るいくつかの処理リソース（例えば、１つ以上のプロセッサ）を含む。処理リソースは、例えばコンピューティングシステムの動作のための命令を実行するために使用できる、算術論理演算ユニット（ＡＬＵ）回路、浮動小数点演算ユニット（ＦＰＵ）回路、及び組み合わせ論理ブロックなどのいくつかの機能ユニットを含む場合がある。
【０００４】
コンピューティングシステムの中のいくつかの構成要素は、実行のために機能ユニット回路に命令を提供することに関与する場合がある。命令は、例えばコントローラ及び／またはホストプロセッサなどの処理リソースによって実行されてよい。さらに、異なるタイプの動作が、機能ユニット回路を通して１つまたは複数のクロックサイクルの中で実行され得るので、命令の中間結果及びデータも順序付けされてよい、及び／またはバッファされてよい。
【図面の簡単な説明】
【０００５】
【図１】本開示のいくつかの実施形態による、フレームワーク、ホスト、及びメモリシステムを含むコンピューティングシステムの形をとる装置のブロック図である。
【図２】本開示のいくつかの実施形態による、メインメモリを含むホスト、及びメモリシステムを含むコンピューティングシステムの形をとる装置のブロック図である。
【図３Ａ】本開示のいくつかの実施形態による、ハイブリッドメモリシステムに論理ブロックアドレス範囲をマッピングするための例示的な流れ図を示す。
【図３Ｂ】本開示のいくつかの実施形態による、ホストメモリ（例えば、ホストに関連付けられたメインメモリ）にハイブリッドメモリシステムの部分をマッピングするための例示的な流れ図３１７を示す。
【図３Ｃ】コードページング動作の実行に応えてハイブリッドメモリシステムにデータを選択的に転送するための例示的な流れ図を示す。
【図４】本開示のいくつかの実施形態による、ハイブリッドメモリシステムにコマンドトラフィックを選択的に転送するための例示的な流れ図を示す。
【図５Ａ】本開示のいくつかの実施形態による、ハイブリッドメモリシステムにコマンドを選択的に転換（ｄｉｖｅｒｔ）させるための例示的な流れ図を示す。
【図５Ｂ】本開示のいくつかの実施形態による、ハイブリッドメモリシステムにコマンドトラフィックを選択的に転換させるための例示的な流れ図を示す。
【図５Ｃ】本開示のいくつかの実施形態による、ハイブリッドメモリシステムに、識別された書き込みパターンを有するコマンドトラフィックを選択的に転換させるための例示的な流れ図を示す。
【図５Ｄ】識別されたコマンド特性別にハイブリッドメモリシステムに選択的に転換させるための例示的な流れ図を示す。
【発明を実施するための形態】
【０００６】
本開示は、ハイブリッドメモリシステムに関係する装置及び方法を含む。例示的な装置は、ホストに結合するためのハイブリッドメモリシステム及びハイブリッドメモリシステムに結合されたコントローラを含む。コントローラは、コマンドに感度を割り当て、少なくとも部分的に割り当てられた感度に基づいてハイブリッドメモリシステムにコマンドを選択的に転換させるように構成されてよい。
【０００７】
パーソナルコンピュータ、ラップトップ、タブレット、ファブレット、スマートフォン、モノのインターネット（ＩｏＴ）対応デバイスなどのコンピューティングシステムは、コンピューティングシステムと関連付けられたデータ及び／または命令を記憶するために１つ以上のメモリリソースを含んでよい。本明細書で使用される場合、「ＩｏＴ対応デバイス」は、物理デバイス、車両、家電製品、及び電子機器、ソフトウェア、センサ、アクチュエータが組み込まれた他のデバイス、及び／またはそのようなオブジェクトが接続し、データを交換できるようにするネットワーク接続性を含む。ＩｏＴ対応デバイスの例は、他のサイバーフィジカルシステムの中でも、ウェアラブル技術、スマートホームデバイス、インテリジェントショッピングシステム、及び監視デバイスを含む。さらに、コンピューティングシステムは、コンピューティングシステム上で実行中のアプリケーションに共通のサービスを提供するために、オペレーティングシステムなどのシステムソフトウェアを実行するための１つ以上の処理リソースを含んでよい。オペレーティングシステムの例は、Ｌｉｎｕｘ（登録商標）、Ｕｎｉｘ（登録商標）、Ｗｉｎｄｏｗｓ（登録商標）などを含む。
【０００８】
動作中、コンピューティングシステムは、コンピューティングシステムに機能性を提供するために、ファームウェア、コンピュータコード、メタコード、フレームワークファイルなどの命令を実行してよい。これらの命令の少なくともいくつかは、他の命令よりも頻繁に実行されてよい、及び／またはこれらの命令の少なくともいくつかは、コンピューティングシステムの動作の特定のときに実行されてよい。
【０００９】
例えば、コンピューティングシステムが命令の同じ部分を複数回読み取ろうと試みる場合、例外（例えば、障害）が発生する場合がある。いくつかの手法では、そのような例外を生じさせる命令は、コンピューティングシステムが命令に複数回アクセスする際に使用する時間の量を低減するために、リードアヘッド機構（または他の適切なプリフェッチ機構）を介してコンピューティングシステムと関連付けられたキャッシュの中にロードされてよい。例外に遭遇した（または例外に遭遇する可能性がある）命令をプリフェッチすると、コンピューティングシステムが命令に複数回アクセスする際に使用する時間の量を低減し得るが、そのような手法で利用されるキャッシュは、一般に他のメモリリソースほど高速ではない。
【００１０】
いくつかの実施形態では、ユーザー空間及び／またはカーネルサービスもしくはライブラリの中に配備されたプログラム（例えば、アプリケーション）がコンピューティングシステムまたはコンピューティングシステムのプロセッサと関連付けられた内部キャッシュの中に記憶された命令にアクセスしようと試み、その命令が、命令にアクセスする試みが発生するときにコンピューティングシステムのメモリ（例えば、ＲＡＭ）の中に存在しないときに、ページフォールトなどの例外が発生する場合がある。そのような例外は、命令が記憶されるストレージデバイスにアクセスし、ストレージデバイスから命令と関連付けられたメモリのページをロードすることによって修正され得る。リードアヘッド動作がコンピューティングシステムによって実施されると、そのような例外は、ストレージデバイスから命令と関連付けられた連続したメモリをロードすることによって修正され得る。
【００１１】
別の例として、例えば、複数のプロセスが仮想メモリの中で実行されるときなど、物理メモリリソースが過剰に利用されると、命令は実行の前に物理メモリ（例えば、メモリの物理ページ）にマッピングされる場合がある。しかしながら、命令をマッピングするために十分な物理メモリがない場合、物理メモリリソースは過剰に利用されるようになる場合があり、これがコンピューティングシステム性能の低下及び／またはコンピューティングシステムの読み取り／書き込み時間の増加につながる場合がある。
【００１２】
さらに別の例では、コンピューティングシステムが動作しているとき、特定の書き込みパターンが共通である場合がある。例えば、特定の命令が反復的な及び／または予測可能な書き込みパターンを示す場合がある。ただし、いくつかの手法では、これらの書き込みパターンに関する情報にコンピューティングシステムがアクセスできない場合がある。結果として、いくつかの手法では、反復的な及び／または予測可能な読み取りパターンまたは書き込みパターンを有する命令を繰り返しフェッチし、書き込む際に、時間及び／または処理リソースが消費される場合がある。
【００１３】
対照的に、本明細書の実施形態は、命令が複数回アクセスされるときに発生する場合がある例外に対処する際に消費される時間の量及び／または処理リソースの量を低減し得る、仮想メモリアドレス指定を利用するコンピューティングシステムの計算速度及び／または読み取り／書き込み時間の増加をもたらし得る、及び／または反復的な及び／または予測可能な読み取りパターンまたは書き込みパターンを示す命令を繰り返しフェッチする際にコンピューティングシステムによって消費される時間及び／または処理リソースを軽減し得る。
【００１４】
例えば、いくつかの実施形態では、コンピューティングシステムと関連付けられた１つ以上のメモリリソースは、ハイブリッドストレージデバイスの形で配備されてよい。例えば、少なくとも１つのメモリリソースは、特定のタイプのメモリリソースを含んでよい。一方、少なくとも１つの他のメモリリソースは、異なる特定のタイプのメモリリソースを含んでよい。非限定的な例として、コンピューティングシステムと関連付けられた１つのメモリリソースは、例えば３Ｄ  Ｘｐｏｉｎｔ不揮発性メモリなどの不揮発性メモリリソースであってよく、第２のメモリリソースは、フラッシュメモリ（例えば、ストレージボリューム）などの異なる不揮発性メモリリソースであってよい。実施形態はこれらの特定の例に限定されていないが、ハイブリッドストレージデバイスを含むメモリリソースは、他のタイプの不揮発性メモリ（例えば、ＲＯＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＮＶＲＡＭなど）及び／または揮発性メモリ（例えば、ＲＡＭ、ＤＲＡＭ、ＳＲＡＭなど）の組み合わせを含んでよい。
【００１５】
いくつかの実施形態では、本明細書により詳細に説明するように、特定の特性を示すと判断される命令は記憶されてよい、及び／または第１のメモリリソースもしくは第２のメモリリソースからアクセスされてよい。例えば、いくつかの実施形態では、特定の命令は、命令が記憶される、及び／または第１のメモリリソースからアクセスされる場合、より低いレイテンシがコンピューティングシステムによって実現され得るとの判断に応えて、記憶されてよい、及び／または第１のメモリリソースからアクセスされてよい。
【００１６】
本開示の以下の詳細な説明では、本明細書の一部を形成する添付図面が参照され、図面には本開示の１つ以上の実施形態がどのようにして実施され得るのかが実例として示される。これらの実施形態は、当業者が本開示の実施形態を実施できるようにするために十分に詳細に説明され、他の実施形態が利用され得ること、ならびにプロセス変更、電気的な変更、及び／または構造的な変更が、本開示の範囲から逸脱することなく行われ得ることが理解されるべきである。本明細書で使用されるように、特に図面中の参照番号に関する「Ｎ」などの指示子は、このように指示されたいくつかの特定の特徴が含まれる場合があることを示す。本明細書で使用されるように、「いくつかの」特定のものは、そのようなものの１つ以上を指す（例えば、いくつかのメモリアレイは１つ以上のメモリアレイを指す場合がある）。「複数の」は、そのようなものの２つ以上を指すことを目的とする。
【００１７】
本明細書の図は、最初の１つまたは複数の数字が図面の図番号に相当し、残りの数字が図面中の要素または構成要素を識別する付番規則に従う。異なる図の間の類似した要素または構成要素は、類似する数字を使用することによって識別されてよい。例えば、１０４は、図１の要素「０４」を参照してよく、類似する要素は、図２では２０４として参照されてよい。理解されるように、本明細書の多様な実施形態に示す要素は、本開示のいくつかの追加の実施形態を提供するために追加、交換、及び／または排除される場合がある。さらに、理解されるように、図に示される要素の割合及び相対的な尺度は本発明の特定の実施形態を示すことを目的としており、限定的な意味で解釈されるべきではない。
【００１８】
図１は、本開示のいくつかの実施形態による、フレームワーク１１０、ホスト１０２、及びメモリシステム１０４を含むコンピューティングシステム１００の形をとる装置のブロック図である。本明細書で使用されるように、フレームワーク１１０、ホスト１０２、及びメモリシステム１０４は、個別に「装置」と見なされる可能性もある。いくつかの実施形態では、メモリシステム１０４は、図２と関連して説明するハイブリッドメモリシステムであってよい。
【００１９】
システム１００は、本明細書で図２に示すように１つ以上のメモリリソースを含むメモリシステム１０４に結合された（例えば、接続された）ホスト１０２を含む。ホスト１０２は、多様な他のタイプのホストの中でも、パーソナルラップトップコンピュータ、デスクトップコンピュータ、デジタルカメラ、スマートフォン、メモリカードリーダ、ＩｏＴ対応デバイスなどのホストシステムである場合がある。ホスト１０２は、システムマザーボード及び／またはバックプレーンを含む場合があり、いくつかの処理リソース（例えば、１つ以上のプロセッサ、マイクロプロセッサ、またはなんらかの他のタイプの制御回路）を含む場合がある。システム１００が別々の集積回路を含む場合もあれば、ホスト１０２とメモリシステム１０４の両方が同じ集積回路上にある場合もある。システム１００は、例えばサーバシステム及び／または高性能コンピューティング（ＨＰＣ）システム及び／またはその一部分である場合がある。
【００２０】
明確にするために、システム１００は、本開示に特定の関連性を有する特徴に焦点をあてるように簡略化されている。メモリシステム１０４は、ＤＲＡＭアレイ（例えば、２Ｔ２Ｃ  ＤＲＡＭアレイ、３Ｔ  ＤＲＡＭアレイなど）、ＦｅＲＡＭ、ＳＲＡＭアレイ、ＳＴＴ  ＲＡＭアレイ、ＰＣＲＡＭアレイ、ＴＲＡＭアレイ、ＲＲＡＭアレイ、ＮＡＮＤフラッシュアレイ、３Ｄ  Ｘｐｏｉｎｔメモリ、ＮＯＲフラッシュアレイ、及び／または例えばコントローラ、３Ｄ  Ｘｐｏｉｎｔメモリ部分、及びＮＡＮＤフラッシュ部分を含むストレージサブシステムなどの１つまたはメモリリソースを含む場合がある。
【００２１】
フレームワーク１１０は、システム１００の動作を容易にするためにホスト１０２と関連付けられた処理リソースによって実行可能な命令を含んでよい。例えば、フレームワークは、読み取り、書き込み、開く、閉じるなどのコンピューティング動作を制御して、１つ以上のファイルシステム（例えば、仮想ファイルシステム、拡張ファイルシステムなどのファイルシステムなど）及び／またはブロックデバイスに対応する１つ以上の命令を提供するためにホスト１０２の処理リソースによって実行可能な命令を含んでよい。いくつかの実施形態では、フレームワーク１１０は、Ａｎｄｒｏｉｄ（登録商標）フレームワークなどのＬｉｎｕｘ（登録商標）フレームワークであってよい。さらに、フレームワーク１１０は、ホスト１０２上で実行中のオペレーティングシステムがホスト１０２に結合された１つ以上のデバイスと通信できるようにするために、実行可能なドライバ（例えば、１つ以上のソフトウェアドライバ）を含んでよい。
【００２２】
いくつかの実施形態では、フレームワーク１１０は、オペレーティングシステムを表してよい。例えば、フレームワーク１１０は、それと関連付けられたＬｉｎｕｘ（登録商標）カーネルを有するオペレーティングシステムを表してよい。そのような実施形態では、フレームワーク１１０は、「ソフトウェアストレージスタック」と見なされてよい（例えば、フレームワーク１１０は、オペレーティングシステムのソフトウェアベースのカーネルの実施態様を表してよい）。したがって、フレームワーク１１０は、コンピューティングシステム１００を動作するために実行可能な命令を記憶するためにフレームワーク１１０と関連付けられた１つ以上のメモリリソースを有する場合がある、及び／またはフレームワーク１１０は、コンピューティングシステム１００の動作のためにフレームワーク１１０によって利用される命令が記憶される仮想化されたメモリリソースを含む場合がある。実施形態はこのように限定されていないが、フレームワーク１１０によって利用される命令は、本明細書にさらに詳細に説明するように、メモリシステム１０４またはホストのメインメモリの中に記憶されてよい、及び／またはメモリシステム１０４またはホストのメインメモリからアクセスされてよい。
【００２３】
上述のように、フレームワーク１１０は、特定のタスク及び／または動作を実行するように構成された多様な構成要素を含んでよい。例えば、フレームワーク１１０は、システムコール構成要素１１１、仮想ファイルシステム構成要素１１２、ファイルシステム構成要素１１３、ブロックデバイス構成要素１１４、及び／またはドライバ構成要素１１５を含んでよい。
【００２４】
システムコール構成要素１１１は、処理リソース（例えば、ホストと関連付けられた処理リソース）によって実行可能な命令を含む場合がある、及び／または命令が実行されるオペレーティングシステムのカーネルから１つ以上のサービスを要求するために、その上で命令を最終的に実行してよいハードウェアリソースでプロビジョニングされる場合がある。いくつかの実施形態では、システムコール構成要素１１１は、アプリケーションプログラミングインタフェースを介してアクセスされてよい。実装時、システムコール構成要素１１１と関連付けられた命令は、ユーザー空間からカーネル空間にコンピューティングシステム１００の制御を移行してよい。いくつかの実施形態では、この制御の移行は、ソフトウェア割り込みに応えて起こる場合がある。
【００２５】
仮想ファイルシステム構成要素１１２は、処理リソース（例えば、ホストと関連付けられた処理リソース）によって実行可能な命令を含む場合がある、及び／またはファイルシステム構成要素１１３の上部に抽象化層を提供するために、その上で命令を最終的に実行してよいハードウェアリソースでプロビジョニングされる場合がある。例えば、仮想ファイルシステム構成要素１１２は、ローカルストレージデバイス及び／またはネットワークストレージデバイスにアクセスするために実行されてよい命令を含んでよい。いくつかの実施形態では、仮想ファイルシステム１１２は、ローカルストレージデバイス及び／またはネットワークストレージデバイスに透過的に（例えば、クライアントアプリケーションの対話なしに）アクセスするために実行されてよい命令を含む場合がある。仮想ファイルシステム構成要素１１２と関連付けられた命令は、カーネルとファイルシステム構成要素１１３との間のインタフェースを指定してよい。
【００２６】
ファイルシステム構成要素１１３は、処理リソース（例えば、ホストと関連付けられた処理リソース）によって実行可能な命令を含む場合がある、及び／またはコンピューティングシステム１００と関連付けられたデータがどのように格納される、及び／または取り出されるのかを制御するために、その上で命令を最終的に実行してよいハードウェアリソースでプロビジョニングされる場合がある。例えば、ファイルシステム構成要素１１３は、本明細書により詳細に説明するように、データを格納する、及び／またはメモリシステム１０４から取り出すために実行可能な命令を含んでよい。
【００２７】
ブロックデバイス構成要素１１４は、処理リソース（例えば、ホストと関連付けられた処理リソース）によって実行可能な命令を記憶する場合がある、及び／またはコンピューティングシステム１００と関連付けられたある特定の１つまたは複数の記憶場所を参照するために、その上で命令を最終的に実行してよいハードウェアリソースでプロビジョニングされる場合がある。いくつかの実施形態では、ブロックデバイス構成要素１１４は、コンピューティングシステム１００へのバッファリングされたアクセスを提供してよいハードディスクドライブ及び／またはソリッドステートドライブを含んでよい。例えば、ブロックデバイス構成要素１１４と関連付けられた命令は、コンピューティングシステム１００と関連付けられたデバイス（例えば、メモリシステム１０４）へのアクセスを提供するために実行されてよい。
【００２８】
ドライバ構成要素１１５は、処理リソース（例えば、ホストと関連付けられた処理リソース）によって実行可能な命令を含む場合がある、及び／またはコンピューティングシステム１００と関連付けられた多様な構成要素にドライバサポートを提供するために、その上で命令を最終的に実行してよいハードウェアリソースでプロビジョニングされる場合がある。例えば、ドライバ構成要素１１５は、ホスト１０２、メモリシステム１０４、及び／またはコンピューティングシステム１００と関連付けられてよい他の周辺機器（図示せず）と関連付けられたドライバをロード及び／または更新する命令を実行するように構成されてよい。
【００２９】
いくつかの実施形態では、フレームワーク１１０の多様な構成要素は、異なるアクセスパターンを示す場合があり、そのうちの少なくともいくつかは、本明細書により詳細に説明するように、予測可能な及び／または反復的な動きを示す場合がある。したがって、本明細書に説明する実施形態は、ハイブリッドストレージシステムが、多様な構成要素、及び／またはフレームワーク１１０、ホスト１０２、及び／またはメモリシステム１０４の多様な構成要素と関連付けられたアクセスパターンの管理を容易にできるようにしてよい。
【００３０】
フレームワーク１１０は、ホスト１０２を介してメモリシステム１０４に結合されてよい。例えば、ホスト１０２は、フレームワーク１１０に記憶された命令（例えば、システムコール構成要素１１１、仮想ファイルシステム構成要素１１２、ファイルシステム構成要素１１３、ブロックデバイス構成要素１１４、及び／またはドライバ構成要素１１５と関連付けられた命令）を実行するように構成された１つ以上の処理リソース（例えば、中央演算処理装置及び／または他のコンピュータプロセッサなどのコンピュータプロセッサ）を含んでよい。
【００３１】
図２は、本開示のいくつかの実施形態による、メインメモリ２０９を含むホスト２０２と、メモリシステム２０４（例えば、ハイブリッドメモリシステム）とを含むコンピューティングシステム２００の形をとる装置のブロック図である。メインメモリ２０９は、コンピューティングシステム２００の動作と関連付けられた１ページ以上のデータを記憶するために使用されてよい、ＲＡＭ、ＤＲＡＭ、ＳＲＡＭなどの揮発性メモリであってよい。実施形態は、揮発性メモリに限定されていないが、メインメモリは、揮発性メモリに加えて、または揮発性メモリの代わりに不揮発性メモリを含んでよい。
【００３２】
図２に示すように、ハイブリッドメモリシステム２０４は、コントローラ２０６に結合された１つ以上のメモリリソース２０８−１、・・・、２０８−Ｎを含んでよい。図２に示すように、コントローラ２０６は、それぞれの通信チャネル２１０−１、・・・、２１０−Ｎを介してメモリリソース２０８−１、・・・、２０８−Ｎに通信で結合される。通信チャネル２１０−１、・・・、２１０−Ｎは、コントローラ２０６とメモリリソース２０８−１、・・・、２０８−Ｎとの間でデータ及び／またはコマンドを転送できるようにしてよい。多様な実施形態では、コントローラ２０６は、フレームワーク（例えば図１に示すフレームワーク１１０）及び／またはホスト２０２からの命令を実行させる、及び／またはメモリシステム２０４へのアクセスを順序付けする責任を負う。
【００３３】
コントローラ２０６は、状態機械、シーケンサ、またはなんらかの他のタイプのコントローラである場合があり、ハードウェア、及び／または特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイなどの形をとるファームウェア（例えば、マイクロコード命令）を含む場合がある。コントローラ２０６は、例えば、コンピューティングシステム２００の動作を容易にするために実行される命令のアクセスパターンを制御できる。また、本明細書で使用されるように、ホスト２０２、メモリシステム２０４、コントローラ２０６、及び／またはメモリリソース２０８−１、・・・、２０８−Ｎは、個別に「装置」と見なされる可能性もある。
【００３４】
いくつかの実施形態では、メモリシステム２０４は、ハイブリッドストレージシステムであってよく、１つ以上のメモリリソース２０８−１、・・・、２０８−Ｎを含んでよい。メモリリソース２０８−１、・・・、２０８−Ｎは、異なる種類のメモリリソースである場合がある。例えば、メモリリソース２０８−１は、３Ｄ  Ｘｐｏｉｎｔメモリリソース、強誘電体ＲＡＭ（ＦｅＲＡＭ）などの新たに出現した不揮発性メモリリソースである場合がある。一方、メモリリソース２０８−Ｎは、ＮＡＮＤメモリリソースである場合がある。実施形態はこれらの特定の例に限定されておらず、メモリリソース２０８−１及び／またはメモリリソース２０８−Ｎは、他の適切なタイプのメモリリソースを含んでよい。
【００３５】
コンピューティングシステム２００の動作中、メモリシステム２０４はコードページングのために利用されてよい。本明細書で使用される場合、「コードページング」は、それによってコンピューティングシステム２００が、ホスト２０２のメインメモリ２０９（例えば、システムメモリ）による使用のために、データを格納し、メモリシステム２０４から取り出すメモリ管理方式である。いくつかの実施形態では、ホスト２０２のメインメモリ２０９に格納されてよい、コードページングを容易にするために実行可能な命令は、コンピューティングシステム２００の動作の一部として実行されてよい。
【００３６】
しかしながら、コンピューティングシステム２００の動作中、メインメモリ２０９の同じ部分にアクセスするための複数の命令（例えば、データを格納する、及び／またはメインメモリ２０９から取り出す命令）が実行されてよい。これにより、例外（例えば、障害）がコンピューティングシステム２００によって生成される場合がある。いくつかの実施形態では、プログラムは、コンピューティングシステム２００のメインメモリ２０９の中にマッピングされないデータ及び／または命令にアクセスしてよい。この場合、データ及び／または命令は、メモリシステム２０４からアクセスされ、それによってデータ及び／または命令がメインメモリ２０９からアクセス可能ではない結果として発生するページフォールトを処理し得る。いくつかの手法では、この例外は、メインメモリ２０９以外の記憶場所に読み取りアクセス及び／または書き込みアクセスを提供することによって処理（例えば、修正）され得る。例えば、いくつかの手法では、例外に遭遇したことがある命令のセットをプリフェッチし、それらを以後の実行のためにコンピューティングシステム２００及び／またはホスト２０２と関連付けられたキャッシュに格納するために、リードアヘッド機構が利用されてよい。
【００３７】
そのような例外は、コンピューティングシステム２００の動作では非常に一般的である場合がある。例えば、マルチプロセッシングコンピューティング環境では、非常に大量の読み取りデータ及び／または書き込みデータ（いくつかの例では、最高で１日に数百ギガバイトまで）を生成してよい。いくつかの実施形態では、例外が生成されることにつながる場合がある読み取り動作／書き込み動作で消費される処理リソース及び時間を軽減するために、メモリリソース（例えば、メモリリソース２０８−１）の中に、閾値数の例外を生成する命令を格納して、読み取りレイテンシ／書き込みレイテンシを低減し、リードアヘッド機構の利用で発生するような命令のセットをプリフェッチする際に消費される処理リソースの量を低減することが有益である場合がある。
【００３８】
例えば、いくつかの実施形態では、コントローラ２０６は、データの特定のセットに対する読み取りアクセス要求または書き込みアクセス要求に対応する例外が発生することになる（または発生した）と判断し、コンピューティングシステム２００による以後の実行及び／または取り出しのために、データの特定のセットをメモリリソース２０８−１に書き込ませるように構成されてよい。いくつかの実施形態では、データの特定のセットは、メモリリソース２０８−１の中のパーティションまたはＬＢＡブロックの中に格納されてよい。パーティション及び／またはＬＢＡブロックは、本明細書で図３Ａ、図３Ｂ、及び図３Ｃと関連してより詳細に説明するように、特定のデータ以外のデータ（例えば、読み取りアクセス要求または書き込みアクセス要求に対応していないデータ）がパーティション及び／またはＬＢＡブロックに格納されないように、割り当てられて（例えば、予約されて）よい。
【００３９】
上述のように、ホストのメインメモリ２０９は、揮発性メモリリソース（例えば、ＲＡＭ、ＤＲＡＭ、ＳＲＡＭなど）、不揮発性メモリリソース（例えば、ＨＤＤ、フラッシュメモリ、強誘電性ＲＡＭなど）、またはその組み合わせなどの物理メモリリソースであってよい。結果として、メインメモリ２０９に記憶できるデータの量は、メインメモリ２０９の物理的性質のために制限される場合がある。例えば、メインメモリ２０９は、データが記憶されてよい有限量の空間を含む場合がある。
【００４０】
したがって、いくつかの動作条件下では、メインメモリ２０９は、ホスト２０２がメインメモリ２０９の中にあまりに多くのデータを記憶しようと試みると、いっぱいになる場合がある、及び／または性能の低下を示す場合がある。これは、メモリリソース（例えば、メインメモリ２０９）を抽象化して、メモリ空間の量が、メインメモリ２０９によって定められた物理メモリ空間の実際の量よりも大きいという錯覚を生み出すために仮想メモリ技術を利用するシステムにおいてさらに悪化する場合がある。
【００４１】
そのような実施態様では、仮想アドレス空間は、論理対物理アドレス指定技術を使用し、（例えば、ホスト２０２と関連付けられたメモリ管理ユニットなどの制御回路によって）管理される場合がある。例えば、仮想アドレスは、対応する物理アドレスに割り当てられてよく、その物理アドレスは、その上でプロセスが最終的に実行されてよいメインメモリ２０９の物理的な場所（例えば、１ページ以上のメモリなど）に対応する場合がある。しかしながら、複数の仮想メモリアドレスが同じ物理メモリアドレスにマッピングされると、コンピューティングシステム２００は、性能が低下する場合がある、及び／またはハングする場合がある（例えば、プロセスが終了される場合がある、及び／または予想外に動作する場合がある）。
【００４２】
例えば、仮想メモリ技術を利用するコンピューティング実施態様では、１つ以上のプロセスは、メインメモリ２０９の物理記憶場所の上にマッピングされる場合がある１つ以上の仮想記憶場所（例えば、メモリページ、メモリブロックなど）を参照してよい。さらに、メインメモリ２０９がいっぱいであると、プロセスを実行するために利用可能な十分な物理メモリリソースがないので、仮想メモリページを呼び出すことができない場合がある。
【００４３】
いくつかの手法では、これは、メインメモリ２０９の中のデータのページをスワップ空間に転送して、メインメモリ２０９の物理メモリリソースを解放することによって軽減され得る。例えば、いくつかの手法では、オペレーティングシステムのカーネルは、匿名ページのために割り当てられたメインメモリ２０９の物理メモリリソースを解放するための機構を含んでよい。本明細書で使用される場合、「匿名ページ」は、関連付けられたファイルを有さないメモリのページである。例えば、匿名ページは、ファイルによってバックアップされていないメモリのページ（例えば、ファイルが指定されていないメモリのページ）である場合がある。しかしながら、匿名ページはファイルに関連付けられない場合があるが、匿名ページは、プロセス及び／またはプロセスワーキングセットに関連付けられる場合がある。プロセス及びプロセスワーキングセットの非限定的な例は、ヒープ、スタック、定数などのデータ構造を含む。本明細書で使用される場合、プロセスワーキングセットは、ホストのメインメモリなどのホストの物理メモリに記憶されるホストの仮想アドレス空間の中に１ページ以上のデータを含む。例えば、プロセスワーキングセットは、ホストのメインメモリに見えるメモリのページ（例えば、ホストによって最近参照されたページ）を含む。
【００４４】
そのような手法では、ページ（例えば、匿名ページ）の関連する内容は、スワップ空間及び／またはスワップデバイスに一時的に転送（例えば、コピー）されてよい。ページが後で参照される場合、ページはメインメモリ２０９に転送（例えば、コピー）し直されてよい。しかしながら、メインメモリ２０９からスワップ空間またはスワップデバイスにページを転送し、次いで後にスワップ空間またはスワップデバイスからメインメモリ２０９にページを転送し直すことと関連付けられた時間及びエネルギーの消費のために、従来のスワップ技術は、特に、そのような技術が繰り返し利用される実施態様では決して望ましくない場合がある。本明細書で使用される場合、プロセスワーキングセットは、ホストのメインメモリなどのホストの物理メモリに記憶される、ホストの仮想アドレス空間の中の１ページ以上のデータを含む。例えば、プロセスワーキングセットは、ホストのメインメモリに見えるメモリのページ（例えば、ホストによって最近参照されたページ）を含む。
【００４５】
メモリのページに対応するデータなどのデータの選択的な転送を容易にするために、いくつかの実施形態では、ハイブリッドメモリデバイス２０４の一部分が、スワップデバイスとして動作するように構成されてよい（例えば、ハイブリッドメモリシステム２０４のその部分との間でのメモリのページの選択的な転送を可能にするように構成されてよい）。例えば、メモリリソース２０８−１の一部分は、メモリのページがメモリリソース２０８−１のその部分に選択的に転送されるように、スワップデバイスとして動作するように構成されてよい。いくつかの実施形態では、メモリリソース２０８−１の１ページ以上のメモリまたはメモリリソース２０８−１と関連付けられた１つ以上の論理ブロックアドレスが、図４との関連でさらに詳細に説明するスワップ動作を実行するために割り当てられてよい。１ページ以上のメモリ及び／または１つ以上の論理ブロックアドレスは、ハイブリッドメモリシステム２０４が製造されるときに（例えば、ハイブリッドメモリシステム２０４がエンドユーザーへの販売に供される前に）割り当てられる場合もあれば、１ページ以上のメモリ及び／または１つ以上の論理ブロックアドレスは、ハイブリッドメモリシステム２０４が初期化されるときに（例えば、コンピューティングシステム２００が起動されるときに）割り当てられる場合もある。実施形態はこのように限定されていないが、いくつかの実施形態では、ハイブリッドメモリシステム２０４がコンピューティングシステム２００の実行時中に動的に割り当てられるときに、１ページ以上のメモリ及び／または１つ以上の論理ブロックアドレスが割り当てられてよい。
【００４６】
いくつかの実施形態では、スワップデバイスとして割り当てられるハイブリッドメモリシステム２０４の部分は、ハイブリッドメモリシステム２００の他の部分よりも少ないアクセス時間を有するハイブリッドメモリシステム２００の一部分である場合がある。例えば、メモリリソース２０８−１は、メモリリソース２０８−１が３Ｄ  Ｘｐｏｉｎｔメモリリソースなどの新たに出現したタイプのメモリリソースであるためにメモリリソース２０８−Ｎよりもより少ないアクセス時間を有する場合がある。さらに、いくつかの実施形態では、スワップデバイスとして割り当てられるハイブリッドメモリシステム２０４の部分は、ハイブリッドメモリシステム２００の他の部分よりも高い耐久性を有するハイブリッドメモリシステム２００の一部分である場合がある。
【００４７】
いくつかの実施形態では、ホスト２０２によって実行されるプロセス及び／またはアプリケーションは、ＮｏＳＱＬ、ＳＱＬｉｔｅ、クラウドベースのＤＢＭＳ、または他の適切なＤＢＭＳなどのデータベース管理システム（ＤＢＭＳ）に依存する場合がある。ＤＢＭＳは、エンドユーザーが、コンピューティングシステム２００と関連付けられたデータベースの中のデータを作成する、読み取る、更新する、及び／または削除することを可能にしてよい。いくつかの実施形態では、ＤＭＢＳは、データ整合性及び／またはシステム耐久性を実現できるようにし得るジャーナル処理方針に従って動作してよい。ＤＢＭＳは、それと関連付けられたコマンドを有する場合がある。いくつかの実施形態では、ＤＢＭＳと関連付けられたコマンドは、少なくとも部分的にＤＢＭＳコマンドに割り当てられた感度に基づいてハイブリッドメモリシステムの一部分に選択的に転換されてよい。
【００４８】
ジャーナル処理システムは、ファイルシステム（例えば、本明細書で図１に示すファイルシステム１１３）にまだコミットされていない変更を追跡するジャーナル処理ファイルシステムであってよい。コンピューティングシステム２００の動作中、ジャーナル処理システムは、メモリシステム２０４及び／またはメインメモリ２０９に圧力をかける場合がある複数のランダム書き込みを被る場合がある。例えば、ジャーナル処理システムは、コンピューティングシステム２００のメモリ及び／またはメインメモリ２０９を過剰に利用し、それによってコンピューティングシステム２００のメモリ及び／またはメインメモリに圧力をかける場合がある、複数の同時に起こるランダムかつ頻繁な書き込みを被る場合がある。
【００４９】
これらのランダムかつ頻繁な書き込みは、保守動作が（例えば、書き込みコマンド実行中に）フォアグラウンドで実行されるために、特にフラッシュベースのメモリシステムにおいて長いレイテンシを被る場合がある。これらのレイテンシは、フラッシュベースのメモリシステムが全力でまたはほぼ全力で動作しているとき、及び／またはフラッシュベースのメモリシステムが長時間動作されているときなどの特定の条件下では、フラッシュベースのメモリシステムにおいてさらに悪化する場合がある。対照的に、ハイブリッドメモリシステム２０４は、経時的に、及び／またはハイブリッドメモリシステム２０４が全力でもしくはほぼ全力で動作しているとき、フラッシュベースのメモリシステムよりもより低いレイテンシを被る場合がある。
【００５０】
フラッシュベースのメモリシステムに関連付けられた欠陥を軽減するために、いくつかの実施形態は、コントローラ２０６が、ＤＢＭＳによって処理されるコマンドトラフィックの感度を決定し、決定したトラフィックの感度に基づいて特定のタイプのコマンドトラフィックにインジケータを適用することを可能にする。コマンドトラフィックの感度は、特定のコマンドの実行の頻度、コマンドのサイズ、コマンドの実行によって消費されるリソース（例えば、メモリリソース及び／または処理リソース）の量、コマンドが実行され得る速度、または他の適切な感度特性などのコマンドトラフィックの特性に基づいてよい。いくつかの実施形態では、感度は、コマンドの実行と関連付けられた書き込みレイテンシに基づいてよい。この例では、コマンドは、コマンドの実行と関連付けられた書き込みレイテンシが閾値書き込みレイテンシを超える旨の判断に応えて、ハイブリッドメモリシステム２０４に選択的に転換されてよい。
【００５１】
コントローラ２０６がインジケータをコマンドに付加すると、コマンドはコンピューティングシステム２００の適切な記憶場所に選択的に転換されてよい。例えば、（コンピューティングシステム２００の動作中にジャーナル処理システムによって被られる同時に起こる小さい頻繁かつランダム書き込みなどの）反復的な、ランダムな、及び／または頻繁に実行されるコマンドトラフィックは、ハイブリッドメモリデバイス２０４に選択的に転換されてよい。いくつかの実施形態では、コマンドトラフィックは、ハイブリッドメモリシステム２０４と関連付けられた複数のメモリリソース２０８−１、・・・、２０８−Ｎのうちの特定のメモリリソース（例えば、メモリリソース２０８−１）に対するインジケータに基づいて選択的に転換されてよい。
【００５２】
ハイブリッドメモリシステム２０４にコマンドトラフィックの特定の部分を選択的に転換させることによって、コマンドトラフィックが選択的に転換されない手法と比較して、またはコマンドトラフィックがフラッシュベースのメモリシステムによって処理される手法と比較して、より低いレイテンシ及び／または性能の強化が実現され得る。
【００５３】
いくつかの実施形態では、コンピューティングシステム２００のファイルシステム（例えば、図１に示す仮想ファイルシステム１１２、図１に示すファイルシステム１１３）は、フラッシュフレンドリファイルシステム（Ｆ２ＦＳ）などのフラッシュファイルシステム、またはＥｘｔ４などのジャーナル処理ファイルシステムであってよい。ただし、ファイルシステム（複数可）はこれらの特定の例に限定されない。ファイルシステムは、ファイル更新時に更新される特定のメタデータ更新によってその構造を維持してよい。例えば、コンピューティングシステム２００のファイルシステムは、テーブル、ツリー、データアレイなどのデータ構造を含んでよく、それと関連付けられたファイルがファイルシステムの構造を維持するために更新されるとき更新されてよい。
【００５４】
ファイルシステムが更新されるとき（例えば、ファイル更新に応えて、メタデータ更新がファイルシステムに適用されるとき）、更新は小さいランダム書き込みで実行される。上述のように、これらのタイプの小さいランダム書き込みが、メモリシステム２０４及び／またはメインメモリ２０９が圧力をかける場合がある。これらのランダム書き込みは、保守動作が（例えば、書き込みコマンド実行中に）フォアグラウンドで実行されているために、特にフラッシュベースのメモリシステムにおいて長いレイテンシを被る場合がある。これらのレイテンシは、フラッシュベースのメモリシステムが全力でまたはほぼ全力で動作しているとき、及び／またはフラッシュベースのメモリシステムが長期間動作されているときなどの特定の条件下で、フラッシュベースのメモリシステムにおいてさらに悪化する場合がある。対照的に、ハイブリッドメモリシステム２０４は、経時的に、及び／またはハイブリッドメモリシステム２０４が全力でもしくはほぼ全力で動作しているとき、フラッシュベースのメモリシステムよりもより低いレイテンシを被る場合がある。
【００５５】
例えば、いくつかの実施形態では、ファイルシステム更新（例えば、ファイルシステムメタデータの更新）と関連付けられたコマンドトラフィックは、コンピューティングシステム２００の適切な記憶場所に選択的に転換されてよい。いくつかの実施形態では、コンピューティングシステム２００の適切な記憶場所は、メモリリソース２０８−１などのハイブリッドメモリシステム２０４の一部分であってよい。いくつかの実施形態では、コントローラ２０６は、ハイブリッドメモリシステム２０４のその部分にファイルシステム更新を選択的に転換させるように構成されてよい。
【００５６】
ハイブリッドメモリシステム２０４にファイルシステム書き込みを選択的に転換させることによって、ファイルシステム書き込みが選択的に転換されない手法と比較して、またはファイルシステム書き込みがフラッシュベースのメモリシステムによって処理される手法と比較して、より低いレイテンシ及び／または性能強化が実現され得る。
【００５７】
コンピューティングシステム２００の動作中、特定のファイルシステム（例えば、図１に示す仮想ファイルシステム１１２、図１に示すファイルシステム１１３）は、反復的な及び／または予測可能な書き込みパターンを示す場合がある。例えば、Ｆ２ＦＳチェックポイント及び／またはジャーナル処理システムは、予測可能な方法で特定のコマンド及び／またはデータを繰り返し書き込んでよい。これらのコマンド及び／またはデータは、上述のように、小さいランダム書き込みで書き込まれてよい。
【００５８】
上述のように、これらの小さいランダム書き込みは、保守動作が（例えば、書き込みコマンド実行中に）フォアグラウンドで実行されているために、特にフラッシュベースのメモリシステムにおいて長いレイテンシを被る場合がある。これらのレイテンシは、フラッシュベースのメモリシステムが全力でまたはほぼ全力で動作しているとき、及び／またはフラッシュベースのメモリシステムが長期間動作されているときなどの特定の条件下でフラッシュベースのメモリシステムにおいてさらに悪化する場合がある。対照的に、ハイブリッドメモリシステム２０４は、経時的に、及び／またはハイブリッドメモリシステム２０４が全力でもしくはほぼ全力で動作しているとき、フラッシュベースのメモリシステムよりもより低いレイテンシを被る場合がある。
【００５９】
フラッシュベースのメモリシステムと関連付けられた欠陥を軽減するために、いくつかの実施形態は、ハイブリッドメモリシステム２０４の一部分に対する小さいランダム書き込みの選択的な転換を可能にする。例えば、コンピューティングシステム２００（またはその部分）は、書き込み動作（例えば、小さいランダム書き込み）のソースを決定するように構成されてよい。いくつかの実施形態では、コンピューティングシステム２００と関連付けられたファイルシステム、及び／またはコンピューティングシステム２００と関連付けられたドライバは、ヒント（例えば、インジケータ）をメタデータ書き込み及び／またはデータ構造に関連付けるように構成されてよい。ヒントは、書き込みコマンドの中に転送されてよく、ヒントを含む書き込みコマンドは、ハイブリッドメモリシステム２０４に転送されてよい。いくつかの実施形態では、書き込みコマンド及び書き込みコマンドと関連付けられたヒントがハイブリッドメモリシステム２０４に転送された後、コントローラ２０６は、ハイブリッドメモリシステム２０４にそのようなファイルシステム書き込み（またはメタデータ書き込み）を転換させて、アクセス時間を低減する、及び／またはメインメモリ２０９に対するその耐久性を回避し、それによってコンピューティングシステム２００の性能を高めるようにさらに構成されてよい。
【００６０】
いくつかの実施形態では、コントローラ２０６は、ハイブリッドメモリシステム２０４の部分に転換されたコマンドトラフィックを処理するために最もよく適したハイブリッドメモリシステム２０４の部分に、ファイルシステム書き込みを選択的に転換させるように構成されてよい。例えば、特定のファイルシステムは、特定のタイプのメモリによって最も効率的に処理され得る、特定のコマンドトラフィックパターンを示す場合がある。非限定的な例として、Ｆ２ＦＳでは、ログ構造化ファイルシステム（ＬＦＳ）書き込みは、ＮＡＮＤメモリに適する場合があるマッピングされていないＬＢＡ上でデータが連続して書き込まれる、決定可能なアクセスパターンで実行されてよい。対照的に、スラックスペースリサイクル（ＳＳＲ）書き込みは、３Ｄ  Ｘｐｏｉｎｔメモリなどの低レイテンシメモリに適する場合があるマッピングされたＬＢＡ上でデータがランダムに書き込まれる、決定可能なアクセスパターンで実行されてよい。
【００６１】
したがって、いくつかの実施形態では、コントローラ２０６は、特定のタイプのファイルシステム書き込みを処理することに最も適したハイブリッドメモリシステム２０４の一部分に、決定可能な書き込みパターンと関連付けられたコマンドトラフィックを選択的に転換させることができる。例えば、コントローラ２０６は、ＮＡＮＤメモリである場合があるメモリリソース２０８−Ｎへ、ＬＦＳ書き込みを転換させるように構成される場合がある、及び／またはコントローラ２０６は、本明細書に記載されているように、低レイテンシの新たに出現したメモリリソースである場合があるメモリリソース２０８−１へＳＳＲ書き込みを転換させるように構成される場合がある。
【００６２】
いくつかの手法では、コンピューティングシステム２００と関連付けられたメモリデバイスに、アクセスセマンティックに対応する情報を送信することはできない。例えば、いくつかの手法では、書き込みアクセス要求がユーザーデータと関連付けられているのか、それともファイルシステムメタデータと関連付けられているのかに対応する情報は、コンピューティングシステム２００と関連付けられたメモリデバイスに送信されない。したがって、いくつかの手法では、コンピューティングシステム２００と関連付けられたメモリデバイスは、特定のＬＢＡまたはＬＢＡ範囲がページングプロセスが実行される格納先に記憶される場合に、その特定のＬＢＡまたはＬＢＡ範囲が読み取りコマンドまたは書き込みコマンドによって頻繁にアクセスされるかどうかに関するいかなる知識も与えられない場合がある。
【００６３】
対照的に、本明細書の実施形態は、コントローラ２０６が、書き込みアクセス要求が、例えば、ユーザーデータと関連付けられているのか、それともファイルシステムメタデータと関連付けられているのかを判断する、及び／または特定のＬＢＡまたはＬＢＡ範囲が読み取りコマンドまたは書き込みコマンドによって頻繁にアクセスされるかどうかを判断し、ハイブリッドメモリシステム２０４に、特定の特性を有する読み取りコマンドまたは書き込みコマンドを選択的に転換させることを可能にする。
【００６４】
いくつかの実施形態では、ハイブリッドメモリシステム２０４は、不揮発性メモリエクスプレス（ＮＶＭｅ）仕様に従って動作するように構成されてよい。例えば、ハイブリッドメモリシステム２０４のメモリリソース２０８−１、・・・、２０８−Ｎの１つ以上がＮＶＭｅ仕様に従って動作するように構成されてよい。理解されるように、ＮＶＭｅ仕様は、以下の表１に示すように、ハイブリッドメモリシステム２０４などの不揮発性メモリデバイスに特定の機能を提供する。
【表１】
2021517307.tif 000003
【００６５】
いくつかの実施形態では、表１に記載する機能は、ハイブリッドメモリシステム２０４のコンピューティングシステム２００との最適化された統合を容易にし得る。例えば、ＮＶＭｅ仕様のＬＢＡ範囲タイプの機能は、図１に示す仮想ファイルシステム１１２及び／またはファイルシステム１１３などの指定されたファイルシステムの一部（例えば、名前空間）であるＬＢＡ範囲のタイプ及び／または属性を示すために利用されてよい。いくつかの実施形態では、ＬＢＡ範囲のタイプは、ＲＡＩＤ、ページファイル、スワップファイルを含んでよい、及び／またはベンダ固有のＬＢＡ範囲タイプであってよい。さらに、ＬＢＡ範囲の属性は、ＬＢＡ範囲を上書きできるかどうか、及び／またはＬＢＡ範囲がコンピューティングシステム２００のオペレーティングシステム及び／またはＢＩＯＳに見えるかどうかを示すために利用されるセマンティックスを含んでよい。
【００６６】
表１に示すデータセット管理機能は、特定の量のＬＢＡの範囲に含まれるコマンド及び／またはデータのトラフィックパターンに関係する情報を送信するために利用されてよい。例えば、データセット管理機能は、特定の量のＬＢＡの範囲に含まれるデータ及び／またはコマンドのトラフィックパターンのコマンドアクセスサイズ、書き込み準備、連続書き込み範囲、連続読み取り範囲、アクセスレイテンシ、アクセス頻度などに関係する機能を含んでよい。いくつかの実施形態では、データセット管理機能は、ＬＢＡ範囲、読み取りコマンド、及び／または書き込みコマンドに基づいて動作してよい。
【００６７】
指示は、ホスト２０２が、書き込みコマンドまたは読み取りコマンドの中の指定された論理ブロックが、関連データの単一のグループの一部である旨の表示をコントローラ２０６に提供することを可能にし得るストリーム指示を含む場合がある。さらに、指示は、ホスト２０２とハイブリッドメモリシステム２０４との間のメタデータの交換を可能にしてもよい。いくつかの実施形態では、指示は、ハイブリッドメモリシステム２０４へのデータの同時書き込みを容易にし得、次にこれは、同時に書き込まれるデータの論理ブロックの同時消去を容易にし得る。これにより、ガベージコレクション動作が最小限に抑えられ得る、及び／またはデータを読み取るもしくはハイブリッドメモリシステム２０４に書き込むために指示が利用されない手法と比較して書き込みの増幅が低減され得る。
【００６８】
図３Ａは、本開示のいくつかの実施形態による、論理ブロックアドレス範囲をハイブリッドメモリシステムにマッピングするための例示的な流れ図を示す。ブロック３１２で、コンピューティングシステム（例えば、図２に示すコンピューティングシステム２００）は、コンピューティングシステムの特定の動作条件下での使用のために、ホスト（例えば、図２に示すホスト２００）の、図２に示すメインメモリ２０９などのメインメモリの一部分（例えば、パーティション）を割り当てるように構成されてよい。いくつかの実施形態では、コンピューティングシステムは、ページングプロセス及び／または例外（例えば、障害）の処理のためにホストのメインメモリの一部分を割り当てるように構成されてよい。いくつかの実施形態では、コントローラ（例えば、図２に示すコントローラ２０６）、つまりホストと関連付けられたコントローラは、ページングプロセス及び／またはコンピューティングシステムの動作中に発生する例外の処理のためにメインメモリのその部分を割り当てるように構成されてよい。
【００６９】
例えば、コンピューティングシステムは、メモリのページ、メモリのページの一部分、１つ以上のメモリのブロック、及び／またはページングプロセス及び／またはコンピューティングシステムの動作中に発生する例外の処理のためのメインメモリのいくつかのメモリ格納先を割り当てるように構成されてよい。いくつかの実施形態では、ページングプロセス、及び／またはコンピューティングシステムの動作中に発生する例外の処理のために割り当てられるメインメモリの部分は、メインメモリの論理パーティションである場合がある。
【００７０】
ブロック３１４で、コンピューティングシステムは、ハイブリッドメモリシステムと関連付けられたＬＢＡ範囲に、ページングプロセス及び／またはコンピューティングシステムの動作中に発生する例外の処理のために割り当てられたメインメモリの部分をマッピングするように構成されてよい。例えば、メインメモリの割り当てられた部分と関連付けられた論理アドレスは、特定のＬＢＡ範囲にマッピングされてよい。いくつかの実施形態では、ＬＢＡ範囲は、ページングプロセス及び例外の処理と関連付けられたデータが格納される場所（例えば、ハイブリッドメモリシステムの論理格納先）を指定する論理アドレスの連続シーケンスを含んでよい。いくつかの実施形態では、コントローラ（例えば、図２に示すコントローラ２０６）、つまりホストと関連付けられたコントローラは、実行時にメインメモリにページングされてよい特定のＬＢＡ範囲に、ハイブリッドストレージシステムの部分をマッピングするように構成されてよい。
【００７１】
ブロック３１６で、コンピューティングシステムは、ハイブリッドメモリシステム（例えば、図２に示すハイブリッドメモリシステム２０４）の一部分に、メインメモリのＬＢＡ範囲をマッピングするように構成されてよい。メインメモリと関連付けられたＬＢＡ範囲がマッピングされるハイブリッドメモリシステムの部分は、ハイブリッドメモリシステムのページ（またはページの部分）、サブセクション、１つ以上のＬＢＡ、いくつかのブロックなどを含んでよい。
【００７２】
いくつかの実施形態では、コントローラ（例えば、図２に示すコントローラ２０６）、つまりホストと関連付けられたコントローラは、ハイブリッドメモリシステムの部分に、メインメモリと関連付けられたＬＢＡ範囲をマッピングするように構成されてよい。例えば、コントローラは、ページングプロセス及び例外処理のために使用されるメモリの物理的な場所（例えば、物理アドレス）に相当する、マッピングされたＬＢＡ範囲を記憶するためにハイブリッドメモリシステムの一部分を割り当てるように構成されてよい。
【００７３】
いくつかの実施形態では、ハイブリッドメモリシステムにマッピングされるＬＢＡ範囲は、ハイブリッドメモリシステムの新たに出現した不揮発性メモリリソースであるメモリリソース（例えば、メモリリソース２０８−１、・・・、２０８−Ｎ）の１つにマッピングされてよい。例えば、ＬＢＡ範囲は、ハイブリッドメモリシステムの他のメモリリソースよりもより低い読み取り（または書き込み）レイテンシを示すように構成されるハイブリッドメモリシステムのメモリリソースにマッピングされてよい。ハイブリッドメモリシステムの他のメモリリソースよりもより低い書き込みレイテンシまたは読み取りレイテンシを示すハイブリッドメモリシステムのメモリリソースにＬＢＡ範囲を選択的にマッピングすることによって、コンピューティングシステムの性能は、図２に関連して上述したように改善され得る。
【００７４】
図３Ｂは、本開示のいくつかの実施形態による、ホストメモリ（例えば、ホストに関連付けられたメインメモリ）にハイブリッドメモリシステムの部分をマッピングするための例示的な流れ図３１７を示す。いくつかの実施形態では、コンピューティングデバイスのオペレーティングシステムは、コードファイル（例えば、アプリケーション実行可能ファイル、カーネル動的ライブラリなど）に対応する情報を決定できる場合がある。コードファイルは、コンピューティングデバイスのハイブリッドメモリシステムの専用のＬＢＡ範囲の中に格納されてよい。ハイブリッドメモリシステムに格納されたコードファイルに関係する命令が参照され、ページフォールトが発生すると、ハイブリッドメモリシステムのＬＢＡ範囲が読み取られてよい。いくつかの実施形態では、コードファイルを格納するハイブリッドメモリシステムのＬＢＡ範囲は、ハイブリッドメモリシステムの低レイテンシ部分の上にマッピングされ、それによってコードページング動作を容易にしてよい。
【００７５】
ブロック３１８で、コンピューティングシステムは、ページングプロセスの一部としてコード読み取り内容を決定するように構成されてよい。例えば、コンピューティングシステムは、コンピューティングシステムによって実行されたページングプロセスの一部としてメインメモリのコード読み取り内容を決定するように構成されてよい。実施形態は、ページングプロセスの一部としてメインメモリのコード読み取り内容を決定することに限定されていないが、いくつかの実施形態では、コンピューティングシステムは、本明細書で図２に関連してより詳細に説明するように、リードアヘッド動作が実行された（または実行されることになっている）と判断するように構成されてよい。本明細書に使用される場合、「コード読み取り内容」は、コンピューティングシステムの読み取り動作の一部として利用されるファイルまたはコマンドと関連付けられたデータである。
【００７６】
例えば、本明細書の図２に関連してより詳細に説明するように、コントローラ（例えば、図２に示すコントローラ２０６）、つまりホストに関連するコントローラは、ページングプロセスの一部として読み取られている（または読み取られることになる）ファイルまたはコマンドと関連付けられたデータを認識するように構成される場合もあれば、コントローラ（例えば、図２に示すコントローラ２０６）、つまりホストと関連付けられたコントローラは、コンピューティングシステムによって実行されるリードアヘッド動作を認識するように構成される場合もある。
【００７７】
ブロック３２０で、コンピューティングシステムは、ハイブリッドメモリシステムに、決定したコード読み取り内容を含むホストメモリ（例えば、図２に示すメインメモリ２０９）の部分をマッピングするように構成されてよい。いくつかの実施形態では、決定したコード読み取り内容を含むホストメモリの部分は、決定したコード読み取り内容に対応するデータを格納するために（例えば、コントローラによって）割り当てられるハイブリッドメモリシステムの割り当てられた部分にマッピングされてよい。例えば、ハイブリッドメモリシステムの一部分は、決定したコード読み取り内容に対応するＬＢＡ範囲を記憶するために割り当てられてよい。
【００７８】
いくつかの実施形態では、コード読み取り内容に対応するＬＢＡ範囲を記憶するために割り当てられるハイブリッドメモリシステムの部分は、ハイブリッドメモリシステムの新たに出現した不揮発性メモリリソースであるメモリリソース（例えば、メモリリソース２０８−１、・・・、２０８−Ｎ）の１つにマッピングされてよい。例えば、ＬＢＡ範囲は、ハイブリッドメモリシステムの他のメモリリソースよりもより低い読み取り（または書き込み）レイテンシを示すように構成されるハイブリッドメモリシステムのメモリリソースにマッピングされてよい。ハイブリッドメモリシステムの他のメモリリソースよりもより低い書き込みレイテンシまたは読み取りレイテンシを示すハイブリッドメモリシステムのメモリリソースにＬＢＡ範囲を選択的にマッピングすることによって、コンピューティングシステムの性能は、図２に関連して上述したように改善され得る。
【００７９】
図３Ｃは、コードページング動作の実行に応えて、ハイブリッドメモリシステムにデータを選択的に転送するための例示的な流れ図３１３を示す。ブロック３１５で、ハイブリッドメモリシステムの一部分が、コードページング動作での使用のために割り当てられてよい。コードページング動作での使用のために割り当てられているハイブリッドメモリシステムの部分は、コンピューティングシステムの初期化時（例えば、起動時、再起動時など）に割り当てられる場合もあれば、コンピューティングシステムの動作中（例えば、コンピューティングシステムの実行時中）に動的に割り当てられる場合もあれば、ハイブリッドメモリシステムの製造中（例えば、エンドユーザーがコンピューティングシステムまたはハイブリッドメモリシステムを購入する前に）割り当てられる場合もある。
【００８０】
ハイブリッドメモリシステムの割り当てられた部分は、１ページ以上のメモリ、１つ以上のＬＢＡ、及び／またはメモリの１つ以上のブロックである場合がある。例えば、コントローラは、コードページング動作での使用のためにハイブリッドメモリシステムの特定のＬＢＡ範囲を割り当てるように構成されてよい。いくつかの実施形態では、コードページング動作での使用のために割り当てられるハイブリッドメモリシステムの部分は、ハイブリッドメモリシステムのメモリリソースの中で最も少ないアクセス時間を示すメモリリソース（例えば、図１に示すメモリリソース２０８−１、２０８−Ｎなど）の一部分であってよい。例えば、図２に関連して上述したように、コードページング動作での使用のために割り当てられるハイブリッドメモリシステムの部分は、新たに出現したメモリシステムであるハイブリッドメモリシステムのメモリリソース（例えば、図２に示すメモリリソース２０８−１）の一部分（例えば、ハイブリッドメモリシステムの異なる部分よりもより少ないアクセス時間及び／またはより高い耐久性によって特徴付けられるハイブリッドメモリシステムの一部分）であってよい。
【００８１】
ブロック３１９で、コードページング動作は、ホストがフォールト例外に遭遇したと判断したことに応えて実行されてよい。例えば、コントローラは、フォールト例外が発生したと判断するように構成され得る。図２に関連して上述したように、フォールト例外は、ホストまたはコンピューティングシステムによって遭遇される場合がある。
【００８２】
ブロック３２１で、データは、コードページング動作の実行に応えてハイブリッドメモリシステムの割り当てられた部分からホストに選択的に転送されてよい。例えば、いくつかの実施形態では、コントローラは、データの特定のセットに対する読み取りアクセス要求または書き込みアクセス要求に対応する例外が発生することになる（または発生した）と判断し、コンピューティングシステムによる以後の実行及び／または取り出しのために、データの特定のセットをメモリリソース（例えば、ホストのメインメモリ）に書き込ませるように構成されてよい。いくつかの実施形態では、データの特定のセットは、メモリリソースの中のパーティションまたはＬＢＡブロックに格納されてよい。パーティション及び／またはＬＢＡブロックは、特定のデータ以外のデータ（例えば、読み取りアクセス要求または書き込みアクセス要求に対応しないデータ）がパーティション及び／またはＬＢＡブロックの中に格納されないように、割り当てられてよい（例えば、予約されてよい）。いくつかの実施形態では、データは、ハイブリッドメモリシステムと関連付けられた特定の論理ブロックアドレス範囲に選択的に転送されてよい。
【００８３】
いくつかの実施形態では、コントローラは、コードページング動作の一部としてホストによって読み取られるコードの内容を決定するように構成されてよい。ホストによって読み取られたコードの内容が決定されると、コントローラは、ハイブリッドメモリシステムの割り当てられた部分に、ホストのメモリ（例えば、ホストのメインメモリ）の部分を選択的にマッピングするように構成されてよい。いくつかの実施形態では、コントローラは、ホストが転送されたデータを参照しているとコントローラが判断したことに応えて、ハイブリッドメモリシステムの割り当てられた部分からホストにデータを転送し直すようにさらに構成されてよい。
【００８４】
図４は、本開示のいくつかの実施形態による、ハイブリッドメモリシステムにデータを選択的に転送するための例示的な流れ図４２３を示す。ブロック４２２で、ハイブリッドメモリシステムの一部分が割り当てられてよい。例えば、ハイブリッドメモリシステム（例えば、図２に示すハイブリッドメモリシステム２０４）の一部分は、上述したように、スワップ空間及び／またはスワップデバイスとしての使用のために割り当てられてよい。
【００８５】
例えば、ハイブリッドメモリシステムと関連付けられたコントローラ（例えば、図２に示すコントローラ２０６）は、スワップ空間及び／またはスワップデバイスとしての使用のためにハイブリッドメモリシステムの部分を割り当てるように構成されてよい。スワップ空間及び／またはスワップデバイスとしての使用のために割り当てられるハイブリッドメモリシステムの部分は、コンピューティングシステムの初期化時（例えば、起動時、再起動時など）に割り当てられる場合もあれば、コンピューティングシステムの動作中（例えば、コンピューティングシステムの実行時中）に動的に割り当てられる場合もあれば、ハイブリッドメモリシステムの製造中（例えば、エンドユーザーがコンピューティングシステムまたはハイブリッドメモリシステムを購入する前）に割り当てられる場合もある。
【００８６】
ハイブリッドメモリシステムの割り当てられた部分は、１ページ以上のメモリ、１つ以上のＬＢＡ、及び／またはメモリの１つ以上のブロックである場合がある。例えば、コントローラは、スワップ空間及び／またはスワップデバイスとしての使用のためにハイブリッドメモリシステムの特定のＬＢＡ範囲を割り当てるように構成されてよい。いくつかの実施形態では、スワップ空間及び／またはスワップデバイスとしての使用のために割り当てられるハイブリッドメモリシステムの部分は、ハイブリッドメモリシステムのメモリリソースの中で最も少ないアクセス時間を示す、メモリリソース（例えば、図２に示すメモリリソース２０８−１、２０８−Ｎなど）の一部分であってよい。例えば、スワップ空間及び／またはスワップデバイスとしての使用のために割り当てられるハイブリッドメモリシステムの部分は、図２に関連して上述したように、新たに出現したメモリシステムであるハイブリッドメモリシステムのメモリリソース（例えば、図２に示すメモリリソース２０８−１）の一部分であってよい。
【００８７】
複数の仮想アドレスが、同じ物理メモリアドレスにマッピングされるとき、コンピューティングシステムは、性能低下を経験する場合がある、及び／またはハングする場合がある（例えば、プロセスが終了される場合がある、及び／または予想外に動作する場合がある）。スワップ空間及び／またはスワップデバイスとしてハイブリッドメモリシステムの部分を割り当てることによって、データのページは、以下のブロック４２４に関連してさらに詳細に説明されるのと同じ物理メモリアドレスにマッピングされる複数の仮想アドレスに対する同時呼び出しと関連付けられた性能の低下を軽減するために、ホストとハイブリッドメモリシステムとの間で転送されてよい。
【００８８】
ブロック４２４で、コンピューティングシステム及び／またはコントローラは、ハイブリッドメモリシステムの割り当てられた部分にデータを選択的に転送させるように構成されてよい。例えば、匿名ページなどのデータのページは、ホスト（例えば、ホストのメインメモリ）からハイブリッドメモリシステムの割り当てられた部分に転送されてよい。実施形態は、データのページを転送することに限定されておらず、いくつかの実施形態では、データのブロック及び／またはハイブリッドメモリシステムの特定のＬＢＡ範囲に対応するデータは、ハイブリッドメモリシステムからホストに選択的に転送されてよい。上述のように、データは、スワップ動作の一部として転送される場合があり、したがって、データが後でホストによって参照される場合、ハイブリッドメモリシステムからホストに転送し直される場合がある。
【００８９】
データ（例えば、データのページ、データのブロック、ＬＢＡ範囲など）を選択的に転送することによって、コンピューティングシステムの性能の改善が実現され得る。例えば、新たに出現したタイプのメモリリソースであるメモリリソースに対応するハイブリッドメモリシステムの部分を割り当て、その後スワップ動作の一部としてホストとハイブリッドメモリシステムとの間で選択的にデータを転送することによって、メモリの耐久性は高まり得る、及び／またはスワップ動作を実行することと関連付けられた時間の量は、ハイブリッドメモリシステムを利用しない手法と比較して、及び／またはメモリリソースの１つ以上が新たに出現したタイプのメモリリソースではない手法と比較して、低減され得る。
【００９０】
図５Ａは、本開示のいくつかの実施形態による、ハイブリッドメモリシステムにコマンドを選択的に転換させるための例示的な流れ図５２５を示す。ブロック５２６で、感度をコマンドに割り当てることができる。いくつかの実施形態では、感度は、コントローラ（例えば、図２に示すコントローラ２０６）によってコマンドに割り当てることができる。図２に関連して上述したように、コントローラは、特定のコマンドの実行の頻度、コマンドのサイズ、コマンドの実行によって消費されるリソースの量、コマンドが実行され得る速度、または他の適切な感度特性などのコマンドトラフィックの特性に基づいてコマンドの感度を決定するように構成されてよい。
【００９１】
いくつかの実施形態では、コントローラは、コマンドの決定された感度を示すためにコマンドにインジケータを適用するように構成されてよい。例えば、コントローラは、コマンドの決定された感度に基づいてコマンドに表示を付加してよい。インジケータは、特定の値がコマンドに付加されるフラグまたは数字であってよいが、実施形態はこのように限定されておらず、インジケータは、コマンドに付加された一連の数字、またはコントローラがハイブリッドメモリシステムにコマンドを転換させるべきかどうかを判断できるようにする他の適切なインジケータであってよい。
【００９２】
ブロック５２８で、コマンドは、ハイブリッドメモリシステムに選択的に転換されてよい。いくつかの実施形態では、コマンドは、コマンドの割り当てられた感度に基づいて、ハイブリッドメモリシステムに選択的に転換されてよい。例えば、コントローラは、コマンドの割り当てられた感度を決定し、コマンドに割り当てられた感度に基づいて、ハイブリッドメモリシステムにコマンドを選択的に転換させるように構成されてよい。コントローラがインジケータをコマンドに付加すると、コマンドは、コンピューティングシステムの適切な記憶場所に選択的に転換されてよい。例えば、（コンピューティングシステムの動作中にジャーナル処理システムが被る、同時に起こる小さい頻繁かつランダム書き込みなどの）反復的な、ランダムな、及び／または頻繁に実行されるコマンドトラフィックは、ハイブリッドメモリデバイスに選択的に転換されてよい。
【００９３】
一例として、コントローラは、コマンドが、それに付加された割り当てられた感度に対応する特定のインジケータを有すると判断するように構成されてよい。例えば、コントローラは、コマンドに付加されたインジケータが、高感度を有するコマンド（例えば、反復的な、ランダムな、及び／または頻繁に実行されるコマンド）に相当すると判断する場合があり、後にハイブリッドメモリシステムにそのコマンドを選択的に転換させる場合がある。対照的に、コントローラは、コマンドに付加されたインジケータが低感度を有するコマンド（例えば、反復的ではない、ランダムではない、及び／または頻繁に実行されないコマンド）に相当すると判断する場合があり、低感度を示すインジケータがそれに付加されたコマンドに関して処置を講じない場合がある（例えば、ハイブリッドメモリシステムにコマンドを選択的に転換させない場合がある）。
【００９４】
図２に関連してより詳細に上述したように、ハイブリッドメモリシステムにコマンドトラフィックの特定の部分を選択的に転換させることによって、コマンドトラフィックが選択的に転換されない手法と比較して、またはコマンドトラフィックがフラッシュベースのメモリシステムによって処理される手法と比較してより低いレイテンシ及び／または性能の強化が実現され得る。
【００９５】
図５Ｂは、本開示のいくつかの実施形態による、ハイブリッドメモリシステムにコマンドトラフィックを選択的に転換させるための例示的な流れ図５２９を示す。ブロック５３０で、ファイルシステムメタデータが識別されてよい。いくつかの実施形態では、ファイルシステムメタデータは、コントローラ（例えば、図２に示すコントローラ２０６）によって識別されてよい。例えば、図２に関連して上述したように、コントローラは、ファイルシステムに適用されたメタデータ更新に対応するコマンドトラフィックなどの複数の小さいランダム書き込みによって特徴付けられるコマンドトラフィックを識別するように構成されてよい。
【００９６】
いくつかの実施形態では、コントローラは、メタデータに対応するデータ構造を識別することによって、メタデータ更新に対応するコマンドトラフィックを識別するように構成されてよい。例えば、メタデータは、メタデータが編成されるデータ構造のタイプに基づいて識別されてよい。メタデータが編成されるデータ構造のタイプに対応するデータ構造を識別することによって、コントローラは、メタデータに対応するコマンドトラフィックを識別してよい。コントローラがメタデータに対応するコマンドトラフィックを識別すると、コントローラは、メタデータ更新がファイルシステムにいつ適用されるのかを識別するようにさらに構成されてよい。いくつかの実施形態では、コントローラは、ファイルシステムと関連付けられたメタデータが更新され、ファイルシステムに適用される旨の判断に基づいて、ファイルシステムが更新された（または更新されている）ことを識別するように構成されてよい。
【００９７】
コントローラは、ファイル更新に応えてファイルシステムに適用されるメタデータ更新などのファイルシステム更新トラフィックに相当するコマンドトラフィックに対応するインジケータを識別するように構成されてよい。インジケータは、特定の値がコマンドトラフィックに付加されたフラグまたは数字であってよいが、実施形態はこのように限定されず、インジケータは、コマンドトラフィックに付加された一連の数字、またはコントローラが、コマンドトラフィックがハイブリッドメモリシステムに転換されるべきかどうかを判断できるようにする他の適切なインジケータであってよい。
【００９８】
ブロック５３２で、識別されたファイルシステムメタデータと関連付けられたコマンドトラフィックは、ハイブリッドメモリシステムの一部分に選択的に転換されてよい。いくつかの実施形態では、コントローラは、ハイブリッドメモリシステムの一部分に、識別されたファイルシステムメタデータと関連付けられたコマンドトラフィックを選択的に転換させるように構成されてよい。コントローラは、ファイル更新に応えてファイルシステムに適用されるメタデータ更新などのファイルシステム更新トラフィックに対応するコマンドトラフィックに付加されたインジケータに基づいて、ハイブリッドメモリシステムの一部分に、識別されたファイルシステムメタデータと関連付けられたコマンドトラフィックを選択的に転換させるように構成されてよい。
【００９９】
本明細書の図４の説明と同様に、ハイブリッドメモリシステムの一部分は、コンピューティングシステムの製造時に、またはコンピューティングシステムの動作中に、識別されたファイルシステムメタデータと関連付けられたコマンドトラフィックを選択的に転換させる際に使用するために割り当てられてよい。いくつかの実施形態では、ハイブリッドメモリシステムの部分は、１ページ以上のメモリ、１つ以上のＬＢＡ、及び／またはメモリの１つ以上のブロックである場合がある。例えば、コントローラは、識別されたファイルシステムメタデータと関連付けられたコマンドトラフィックが転換されるハイブリッドメモリシステムの特定のＬＢＡ範囲を割り当てるように構成されてよい。いくつかの実施形態では、ハイブリッドメモリシステムの部分は、ハイブリッドメモリシステムのメモリリソースの中で最も少ないアクセス時間を示すメモリリソース（例えば、図１に示すメモリリソース２０８−１、２０８−Ｎなど）の一部分であってよい。したがって、いくつかの実施形態では、コンピューティングシステムのレイテンシは、ファイルシステムメタデータの更新に対応するコマンドトラフィックがハイブリッドメモリシステムに選択的に転換されないいくつかの方式と比較して低減されてよい。
【０１００】
図５Ｃは、本開示のいくつかの実施形態による、ハイブリッドメモリシステムに、識別された書き込みパターンを有するコマンドトラフィックを選択的に転換させるための例示的な流れ図５３３を示す。ブロック５３４で、反復的な及び／または予測可能な書き込みパターンが識別されてよい。特定のコマンドトラフィックに対応する予測可能な及び／または反復的な書き込みパターンは、コントローラ（例えば、図２に示すコントローラ２０６）によって識別されてよい。
【０１０１】
例えば、コンピューティングシステムの動作中、特定のファイルシステム（例えば、図１に示す仮想ファイルシステム１１２、図１に示すファイルシステム１１３）は、反復的な及び／または予測可能な書き込みパターンを示してよい。例えば、Ｆ２ＦＳチェックポイント及び／またはジャーナル処理システムは、予測可能な方法で特定のコマンド及び／またはデータを繰り返し書き込んでよい。これらのコマンド及び／またはデータは、上述のように、小さいランダム書き込みで書き込まれる場合がある。
【０１０２】
いくつかの実施形態では、コントローラは、カーネルと、コンピューティングデバイスのメモリ（例えば、メインメモリ及び／またはハイブリッドメモリシステム）との間により緊密な結合を提供することによって、これらの反復的な及び／または予測可能な書き込みパターンを識別するように構成されてよい。例えば、いくつかの実施形態では、コントローラは、コンピューティングシステムの１つ以上のセマンティック部分にアクセスしてよく、これにより、コントローラは、コンピューティングシステムの動作中に発生する反復的な及び／または予測可能な書き込みパターンを識別できるようになり得る。
【０１０３】
反復的な及び／または予測可能な書き込みパターンに対応するコマンドトラフィックがコントローラによって識別されると、コントローラは、予測可能な及び／または反復的な書き込みパターンを示す、コマンドトラフィックに対するインジケータを識別するように構成されてよい。インジケータは、特定の値がコマンドトラフィックに付加されたフラグまたは数字であってよいが、実施形態はこのように限定されておらず、インジケータは、コマンドトラフィックに付加された一連の数字、またはコントローラが、コマンドトラフィックがハイブリッドメモリシステムに転換されるべきかどうかを判断できるようにする他の適切なインジケータであってよい。
【０１０４】
ブロック５３６で、反復的な及び／または予測可能な書き込みパターンと関連付けられたコマンドトラフィックは、メモリシステムまたはその部分に選択的に転換されてよい。上述のように、ハイブリッドメモリシステムの一部分は、コンピューティングシステムの製造時に、またはコンピューティングシステムの動作中に、反復的な及び／または予測可能な書き込みパターンと関連付けられたコマンドトラフィックを選択的に転換させる際に使用するために割り当てられてよい。いくつかの実施形態では、ハイブリッドメモリシステムの部分は、１ページ以上のメモリ、１つ以上のＬＢＡ、及び／またはメモリの１つ以上のブロックである場合がある。例えば、コントローラは、反復的な及び／または予測可能な書き込みパターンと関連付けられたコマンドトラフィックが転換されるハイブリッドメモリシステムの特定のＬＢＡ範囲を割り当てるように構成されてよい。いくつかの実施形態では、ハイブリッドメモリシステムの部分は、ハイブリッドメモリシステムのメモリリソースの中で最も少ないアクセス時間を示すメモリリソース（例えば、図１に示すメモリリソース２０８−１、２０８−Ｎなど）の一部分であってよい。したがって、いくつかの実施形態では、コンピューティングシステムのレイテンシは、反復的な及び／または予測可能な書き込みパターンを示すコマンドトラフィックが、ハイブリッドメモリシステムに選択的に転換されないいくつかの手法と比較して低減され得る。
【０１０５】
図５Ｄは、識別されたコマンド特性別にハイブリッドメモリシステムに選択的に転換させるための例示的な流れ図５４０を示す。ブロック５４２で、特定のタイプのコマンドトラフィックが識別されてよい。例えば、ファイルシステムメタデータの更新に対応するコマンドトラフィック、及び／または反復的な及び／または予測可能な書き込みパターンを示すコマンドトラフィックは、図５Ｂ及び図５Ｃに関連して上述したように、識別されてよい。いくつかの実施形態では、コントローラは、特定のタイプのコマンドトラフィックを識別するように構成されてよい。
【０１０６】
ブロック５４４で、コマンドトラフィックは、ハイブリッドメモリシステムに選択的に転換させられてよい。いくつかの実施形態では、コマンドトラフィックは、ハイブリッドメモリシステムに結合可能であるホストによって実行されるコマンドトラフィックに相当してよい。コントローラは、本明細書に説明するように、ハイブリッドメモリシステムの一部分にコマンドトラフィックを選択的に転換させるように構成されてよい。例えば、ハイブリッドメモリシステムの部分は、ハイブリッドメモリシステムのメモリリソースの中で最も少ないアクセス時間を示すメモリリソース（例えば、図１に示すメモリリソース２０８−１、２０８−Ｎなど）の一部分であってよい。したがって、いくつかの実施形態では、コンピューティングシステムのレイテンシは、特定のタイプのコマンドトラフィックがハイブリッドメモリシステムに選択的に転換されないいくつかの手法と比較して低減され得る。
【０１０７】
特定の実施形態が本明細書で例示及び説明されてきたが、当業者は、同じ結果を達成するように推測される配置構成を、示された特定の実施形態に置き換えることができることを認識するであろう。本開示は、本開示の１つ以上の実施形態の適合または変形を網羅することを目的としている。上記説明が、限定的ではなく、例示的になされたものであることを理解されたい。上記の実施形態と、本明細書に具体的に記載されていない他の実施形態との組み合わせは、上記の説明を考察すれば当業者にとって明らかとなるであろう。本開示の１つ以上の実施形態の範囲は、上記の構造及び方法が使用される他の応用例を含む。したがって、本開示の１つ以上の実施形態の範囲は、添付された特許請求の範囲、ならびにかかる特許請求の範囲の権利が与えられる均等物の全範囲を参照して決定されるべきである。
【０１０８】
上述の発明を実施するための形態では、本開示を簡素化するために、単一の実施形態にいくつかの特徴をまとめている。本開示の方法は、開示された本開示の実施形態が、各請求項に明示的に記載されたものよりも多くの特徴を使用する必要があるという意図を反映したものとして解釈されるべきではない。むしろ、以下の特許請求の範囲が反映するように、発明の主題は、単一の開示された実施形態の全ての特徴よりも少ないところにある。したがって、以下の特許請求の範囲は、本明細書によって発明を実施するための形態に組み込まれ、各請求項は、別個の実施形態として独立している。
【図１】
2021517307.tif 000004
【図２】
2021517307.tif 000005
【図３Ａ】
2021517307.tif 000006
【図３Ｂ】
2021517307.tif 000007
【図３Ｃ】
2021517307.tif 000008
【図４】
2021517307.tif 000009
【図５Ａ】
2021517307.tif 000010
【図５Ｂ】
2021517307.tif 000011
【図５Ｃ】
2021517307.tif 000012
【図５Ｄ】
2021517307.tif 000013
【手続補正書】
【提出日】令和2年11月9日(2020.11.9)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
装置であって、
ホストに結合するためのハイブリッドメモリシステムと、
前記ハイブリッドメモリシステムに結合されたコントローラであって、
コマンドに感度を割り当て、
少なくとも部分的に前記割り当てられた感度に基づいて、前記ハイブリッドメモリシステムに前記コマンドを選択的に転換させる
ように構成される前記コントローラと、
を備える、前記装置。
【請求項２】
前記感度が、少なくとも部分的に前記コマンドの実行の頻度、前記コマンドのサイズ、または前記コマンドの実行で消費されるリソースの量のうちの少なくとも１つに基づき、
前記ホストが、前記コマンドの前記割り当てられた感度に基づいて、前記コマンドにインジケータを割り当てるように構成される、
請求項１に記載の装置。
【請求項３】
前記コントローラが、
前記コマンドの実行と関連付けられた書き込みレイテンシを決定し、
前記コマンドの実行と関連付けられた前記書き込みレイテンシが、特定の書き込みレイテンシ閾値を超える旨の判断に応えて、前記ハイブリッドメモリシステムに前記コマンドを選択的に転換させ、
前記ハイブリッドメモリシステムの別の部分よりもより低いアクセスレイテンシ及びより高い耐久性のうちの少なくとも１つによって特徴付けられる前記ハイブリッドメモリシステムの一部分に、前記コマンドを選択的に転換させる
ようにさらに構成される、請求項１〜２のいずれか１項に記載の装置。
【請求項４】
装置であって、
ホストに結合するためのハイブリッドメモリシステムと、
前記ハイブリッドメモリシステムに結合されたコントローラであって、
前記ホストによって実行された特定のタイプのコマンドトラフィックを識別し、
少なくとも部分的に前記識別された特性に基づいて、前記ハイブリッドメモリシステムに前記コマンドトラフィックを選択的に転換させる
ように構成される前記コントローラと、
を備える、前記装置。
【請求項５】
前記特定のタイプのコマンドトラフィックが、ファイルシステムメタデータの更新に対応するコマンドトラフィックであり、
前記特定のタイプのコマンドトラフィックが、反復的な書き込みパターン及び予測可能な書き込みパターンのうちの少なくとも１つを示すコマンドトラフィックであり、
前記特定のタイプのコマンドトラフィックが、ファイルシステムメタデータに対応するコマンドトラフィックを含む、
請求項４に記載の装置。
【請求項６】
前記コントローラが、
前記コマンドトラフィックの実行の頻度及び前記コマンドトラフィックのサイズのうちの少なくとも１つに基づいて、前記特定のタイプのコマンドトラフィックを識別し、
前記コマンドトラフィックの実行で消費されるリソースの量に基づいて、前記特定のタイプのコマンドトラフィックを識別する
ようにさらに構成される、請求項４に記載の装置。
【請求項７】
前記ハイブリッドメモリシステムが、第１の部分及び第２の部分を含み、前記第１の部分がＮＡＮＤ部分であり、前記第２の部分が、新たに出現したタイプのメモリ部分である、請求項４〜６のいずれか１項に記載の装置。
【請求項８】
方法であって、
コマンドに感度を割り当てることと、
少なくとも部分的に前記割り当てられた感度に基づいて、ハイブリッドメモリシステムに前記コマンドを選択的に転換させることと、
を含む、前記方法。
【請求項９】
前記コマンドの実行で消費されるリソースの量、前記コマンドのサイズ、前記コマンドの実行の頻度、またはその組み合わせに基づいて、前記コマンドに前記感度を割り当てること
をさらに含む、請求項８に記載の方法。
【請求項１０】
前記ハイブリッドメモリシステムの別の部分よりもより低いアクセスレイテンシ及びより高い耐久性のうちの少なくとも１つによって特徴付けられる前記ハイブリッドメモリシステムの一部分に前記コマンドを選択的に転換させることをさらに含み、前記コマンドがデータベース管理システムコマンドを含む、請求項８〜９のいずれか１項に記載の方法。
【請求項１１】
前記コマンドが、複数のランダム書き込み動作によって特徴付けられると判断することと、
少なくとも部分的に、前記コマンドが前記複数のランダム書き込み動作によって特徴付けられる旨の前記判断に基づいて、前記ハイブリッドメモリシステムに前記コマンドを選択的に転換させることと、
をさらに含む、請求項８〜１０のいずれか１項に記載の方法。
【請求項１２】
前記コマンドが閾値コマンドサイズよりも小さいと判断することと、
少なくとも部分的に、前記コマンドが前記閾値コマンドサイズよりも小さい旨の前記判断に基づいて、前記ハイブリッドメモリシステムに前記コマンドを選択的に転換させることと、
をさらに含む、請求項８〜１１のいずれか１項に記載の方法。
【請求項１３】
方法であって、
ホストによって実行される特定のタイプのコマンドトラフィックを識別することと、
少なくとも部分的に、前記識別された特性に基づいて、前記ホストに結合可能なハイブリッドメモリシステムに、前記コマンドトラフィックを選択的に転換させることと、
を含む、前記方法。
【請求項１４】
前記特定のタイプのコマンドトラフィックが、ファイルシステムメタデータの更新に対応するコマンドトラフィック、反復的な書き込みパターンを示すコマンドトラフィック、予測可能な書き込みパターンを示すコマンドトラフィック、前記ホストと関連付けられたジャーナル処理ファイルシステムに対応するコマンドトラフィック、またはその組み合わせである、請求項１３に記載の方法。
【請求項１５】
前記コマンドが複数のランダム書き込み動作によって特徴付けられること、前記コマンドが閾値コマンドサイズよりも小さいこと、またはその組み合わせであると判断することと、
少なくとも部分的に前記判断に基づいて、前記ハイブリッドメモリシステムに前記コマンドを選択的に転換させることと、
少なくとも部分的に、前記コマンドトラフィックが特定の書き込みパターンを示す旨の判断に基づいて、前記ハイブリッドメモリシステムの一部分に前記コマンドトラフィックを選択的に転換させることと、
をさらに含む、請求項１３〜１４のいずれか１項に記載の方法。
【国際調査報告】
2021517307.tif 000014
2021517307.tif 000015