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