JP2022548642A - タイプ付けされていないメモリアクセスのタイプ付けされているメモリアクセスに対するマッピング - Google Patents
タイプ付けされていないメモリアクセスのタイプ付けされているメモリアクセスに対するマッピング Download PDFInfo
- Publication number
- JP2022548642A JP2022548642A JP2022517124A JP2022517124A JP2022548642A JP 2022548642 A JP2022548642 A JP 2022548642A JP 2022517124 A JP2022517124 A JP 2022517124A JP 2022517124 A JP2022517124 A JP 2022517124A JP 2022548642 A JP2022548642 A JP 2022548642A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- data
- memory device
- virtual
- stored
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 855
- 238000013507 mapping Methods 0.000 title claims description 52
- 230000004044 response Effects 0.000 claims abstract description 66
- 238000012545 processing Methods 0.000 claims description 189
- 238000000034 method Methods 0.000 claims description 176
- 239000000872 buffer Substances 0.000 claims description 48
- 238000003860 storage Methods 0.000 claims description 29
- 238000013519 translation Methods 0.000 claims description 26
- 238000013459 approach Methods 0.000 abstract description 6
- 230000008569 process Effects 0.000 description 106
- 238000007726 management method Methods 0.000 description 37
- 230000027455 binding Effects 0.000 description 31
- 238000009739 binding Methods 0.000 description 31
- 238000004891 communication Methods 0.000 description 23
- 230000008859 change Effects 0.000 description 21
- 230000001360 synchronised effect Effects 0.000 description 7
- 230000009471 action Effects 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 238000013500 data storage Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 4
- 238000003491 array Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000005415 magnetization Effects 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000002070 nanowire Substances 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/205—Hybrid memory, e.g. using both volatile and non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Preparation Of Compounds By Using Micro-Organisms (AREA)
Abstract
コンピュータシステムには、ランダムにアクセス可能なデータをコンピュータシステムのメインメモリに格納する様々なタイプの物理メモリデバイスが含まれている。1つのアプローチでは、データは、オペレーティングシステムによってアプリケーションに割り当てられた1つ以上の論理アドレスのメモリに格納される。データは、第1のメモリタイプ(例えば、NVRAM)の第1のメモリデバイスに物理的に格納される。オペレーティングシステムは、格納されたデータのアクセスパターンを決定する。アクセスパターンを決定することに応答して、データは、第1のメモリデバイスから異なるメモリタイプ(例えば、DRAM)の第2のメモリデバイスに移動される。
Description
関連出願
本願は、米国特許出願公開第16/573,541号、2019年9月17日出願、発明の名称「MAPPING NON-TYPED MEMORY ACCESS TO TYPED MEMORY ACCESS」に対する優先権を主張するものであり、その開示全体が参照により本明細書に組み込まれる。
本願は、米国特許出願公開第16/573,541号、2019年9月17日出願、発明の名称「MAPPING NON-TYPED MEMORY ACCESS TO TYPED MEMORY ACCESS」に対する優先権を主張するものであり、その開示全体が参照により本明細書に組み込まれる。
本明細書に開示される少なくともいくつかの実施形態は、概してメモリシステムに関し、より具体的には、データアクセスパターンに基づいてデータをメモリデバイスのタイプにマッピングするためのメモリシステムに関連するが、これらに限定されない。
コンピュータシステムのメインメモリにデータを格納するために、様々なタイプのメモリデバイスを使用できる。揮発性メモリデバイスの1つのタイプは、ダイナミックランダムアクセスメモリ(DRAM)デバイスである。様々なタイプの不揮発性メモリデバイスには、NANDフラッシュメモリデバイスまたは不揮発性ランダムアクセスメモリ(NVRAM)デバイスが含まれる。
オペレーティングシステムでは、メモリ管理はコンピュータシステムのメインメモリを管理することを担う。メモリ管理は、メインメモリ内のメモリの場所のステータス(例えば、割り当て済みまたは空きのいずれかのメモリステータス)を追跡する。メモリ管理はさらに、オペレーティングシステムで実行されている様々なプロセス間のメモリの割り当てを決定する。プロセスにメモリが割り当てられると、オペレーティングシステムがプロセスに割り当てられるメモリの場所を決定する。
1つのアプローチでは、オペレーティングシステムはページ割り当てを使用して、メインメモリをページフレームと呼ばれる固定のサイズの単位に分割する。ソフトウェアプログラムの仮想アドレス空間は、同じサイズのページに分割される。ハードウェアメモリ管理ユニットは、ページを物理メモリ内のフレームにマップする。ページメモリ管理アプローチでは、各プロセスは通常、独自のアドレス空間で実行される。
場合によっては、メモリ管理ユニット(MMU)はページングメモリ管理ユニット(PMMU)と呼ばれる。MMUは、オペレーティングシステムで使用されるすべてのメモリ参照を管理し、仮想メモリアドレスから物理アドレスへの変換を実行する。MMUは通常、プロセッサが使用するアドレスの範囲である仮想アドレス空間をページに分割する。
一部のアプローチでは、MMUはページテーブルエントリを含むページテーブルを使用して、仮想ページ番号をメインメモリ内の物理ページ番号にマップする。場合によっては、仮想アドレスがマップされるときにメインメモリに格納されているページテーブルにアクセスする必要をなくすために、トランスレーションルックアサイドバッファ(TLB)と呼ばれるページテーブルエントリのキャッシュが使用される。仮想メモリを使用するとき、連続する範囲の仮想アドレスを、物理メモリのいくつかの連続しないブロックにマップできる。
場合によっては、ページテーブルエントリにページの使用法に関する情報を含めることができる。様々な例には、データがページに書き込まれたかどうか、ページが最後に使用された日時、ページを読み書きできるプロセスのタイプ(例えば、ユーザモードまたはスーパーバイザーモード)、及びページをキャッシュする必要があるかどうかに関する情報が含まれる。
1つのアプローチでは、TLBは連想メモリ(CAM)として実装される。検索キーは仮想アドレスであり、検索結果は物理アドレスである。要求されたアドレスがTLBにある場合、検索から取得された物理アドレスは、物理メモリデバイスへのアクセスに使用される。要求されたアドレスがTLBにない場合、ページテーブルはメインメモリでアクセスされる。
場合によっては、仮想メモリ管理システムはプロセス識別子を使用して各ページをプロセスに関連付ける。プロセス識別子と仮想ページの関連付けは、ページアウトするページを選択するのに役立ち得る。例えば、プロセスのメインコードページがページアウトされている場合、そのプロセスに属する他のページがすぐに必要になる可能性は低くなる。
より一般的には、コンピュータシステムは、1つまたは複数のメモリサブシステムを有することができる。メモリサブシステムは、デュアルインラインメモリモジュール(DIMM)、スモールアウトラインDIMM(SO-DIMM)、または不揮発性デュアルインラインメモリモジュール(NVDIMM)などのメモリモジュールであり得る。メモリサブシステムには、データを格納する1つ以上のメモリ構成要素を含めることができる。メモリ構成要素は、例えば、不揮発性メモリ構成要素及び揮発性メモリ構成要素であり得る。メモリ構成要素の例には、メモリ集積回路が含まれる。一部のメモリ集積回路は揮発性であり、格納されたデータを維持するために電力を必要とする。一部のメモリ集積回路は不揮発性であり、電源が入っていない場合でも格納されたデータを保持できる。不揮発性メモリの例には、フラッシュメモリ、読み取り専用メモリ(ROM)、プログラム可能読み取り専用メモリ(PROM)、消去可能プログラム可能読み取り専用メモリ(EPROM)、及び電子的消去可能プログラム可能読み取り専用メモリ(EEPROM)のメモリなどが含まれる。揮発性メモリの例には、ダイナミックランダムアクセスメモリ(DRAM)及び静的ランダムアクセスメモリ(SRAM)が含まれる。一般に、コンピュータシステムは、メモリサブシステムを利用して、メモリ構成要素にデータを格納し、メモリ構成要素からデータを取得することができる。
例えば、コンピュータシステムは、コンピュータシステムに接続された1つまたは複数のメモリサブシステムを含むことができる。コンピュータシステムは、データ及び命令を格納及び/または検索するために、1つまたは複数のメモリサブシステムと通信する中央処理装置(CPU)を有することができる。コンピュータの命令には、オペレーティングシステム、デバイスドライバ、及びアプリケーションプログラムを含めることができる。オペレーティングシステムは、コンピュータ内のリソースを管理し、メモリ割り当てやリソースのタイムシェアリングなどのアプリケーションプログラムに共通のサービスを提供する。デバイスドライバは、コンピュータ内の特定のタイプのデバイスを操作または制御する。オペレーティングシステムは、デバイスドライバを使用して、デバイスのタイプによって提供されるリソース及び/またはサービスを提供する。コンピュータシステムの中央処理装置(CPU)は、オペレーティングシステムとデバイスドライバを実行して、アプリケーションプログラムにサービス及び/またはリソースを提供できる。中央処理装置(CPU)は、サービス及び/またはリソースを使用するアプリケーションプログラムを実行できる。例えば、あるタイプのアプリケーションを実装するアプリケーションプログラムは、中央処理装置(CPU)に、メモリサブシステムのメモリ構成要素にデータを格納し、メモリ構成要素からデータを取得するように命令できる。
コンピュータシステムのオペレーティングシステムは、アプリケーションプログラムがメモリの仮想アドレスを使用して、コンピュータシステムの1つまたは複数のメモリサブシステムのメモリ構成要素にデータを格納し得、そこからデータを取得し得ることを可能にする。オペレーティングシステムは、仮想アドレスを、コンピュータシステムの中央処理装置(CPU)に接続された1つまたは複数のメモリサブシステムの物理アドレスにマップする。オペレーティングシステムは、仮想アドレスで指定されたメモリアクセスをメモリサブシステムの物理アドレスに変換する。
仮想アドレス空間はページに分割できる。仮想メモリのページは、メモリサブシステム内の物理メモリのページにマップできる。オペレーティングシステムは、ページング技術を使用して、メモリモジュール内のメモリページを介してストレージデバイス内のメモリページにアクセスできる。異なる時点で、メモリモジュール内の同じ仮想メモリページをプロキシとして使用して、ストレージデバイスまたはコンピュータシステム内の別のストレージデバイス内の異なる物理ページのメモリにアクセスできる。
コンピュータシステムには、仮想マシンを作成またはプロビジョニングするためのハイパーバイザ(または仮想マシンモニター)を含めることができる。仮想マシンは、コンピュータシステムで利用可能なリソースとサービスを使用して仮想的に実装されるコンピューティングデバイスである。ハイパーバイザは、仮想マシンの構成要素が専用の物理構成要素であるかのように、仮想マシンをオペレーティングシステムに提示する。ゲストオペレーティングシステムは仮想マシンで実行され、コンピュータシステムで実行されているホストオペレーティングシステムと同様に、仮想マシンで使用可能なリソースとサービスを管理する。ハイパーバイザを使用すると、複数の仮想マシンがコンピュータシステムのリソースを共有でき、仮想マシンがコンピュータ上で実質的に互いに独立して動作できるようになる。
いくつかの実施形態を、添付の図面の図において、限定ではなく一例として例示する。同様の参照は、同様の要素を示している。
本明細書の少なくともいくつかの実施形態は、データが格納されているメモリシステムのメモリデバイスを識別するために格納されたメタデータにアクセスすることに関する。本明細書で論じられるような様々な実施形態では、メタデータは、様々なタイプのコンピュータシステムによって格納及びアクセスされ得る。一例では、コンピュータシステムは、システムオンチップ(SoC)デバイス上で実行されている1つまたは複数のプロセスによるメモリ使用量を管理するためのメタデータを格納するSoCデバイスである。一例では、モバイルデバイスは、SoCデバイスを使用して、モバイルデバイス上で実行されている1つまたは複数のアプリケーションのメインメモリの割り当てを管理する。
他の実施形態は、仮想ページの仮想アドレスを、異なるメモリタイプのメモリデバイス内の物理アドレスにマッピングするページテーブルエントリに関する。これらの実施形態は、以下の「メモリタイプへのページテーブルフック」というタイトルのセクションで説明されている。
さらに他の実施形態は、異なるメモリタイプの物理メモリを有するメモリシステム内の名前空間にデータをバインドすることに関する。これらの実施形態は、「データを名前空間にバインドする」というタイトルの以下のセクションで説明されている。
追加の実施形態は、格納されたデータのアクセスパターンに基づいて、あるタイプのメモリデバイスにデータをマッピングすることに関する。一実施形態では、オペレーティングシステムは、第1のタイプのメモリデバイスに格納されたデータのアクセスパターン(例えば、読み取り及び/または書き込みアクセスの頻度)を決定する。アクセスパターンに基づいて、オペレーティングシステムは、データを第1のタイプのメモリデバイス(NVRAMなど)に物理的に格納されているものから、別のタイプのメモリデバイス(ユースケース次第で、高速のDRAMデバイスや低速のNANDフラッシュなど)に移動する。
別の実施形態では、アクセスパターンは、第1のタイプのメモリデバイスに対応する第1のアドレス範囲に格納されたデータに対して決定される。決定されたアクセスパターンに基づいて、データは異なるタイプのメモリデバイスに対応する第2のアドレス範囲に格納される。これらの実施形態は、「アクセスパターンに基づくメモリタイプへのデータのマッピング」というタイトルの以下のセクションで説明されている。
以前のコンピュータシステムは、データを格納するために異なるタイプのメモリデバイスを使用することがよくある。通常使用されるメモリデバイスの1つのタイプはDRAMであり、これは一般に高速の読み取り及び書き込みアクセスを提供すると考えられている。DRAMは通常、コンピュータシステムのメインメモリにデータを格納するために使用される。
フラッシュメモリなどの他のメモリデバイスは、通常、DRAMよりも低速であると見なされる。例えば、DRAMの読み取りまたは書き込みアクセス待ち時間は、通常、フラッシュメモリの読み取りまたは書き込みアクセス待ち時間よりも大幅に短くなる。特定の例として、一部のメモリデバイスの書き込みアクセス待ち時間は、DRAMデバイスの場合よりも数十倍または数百倍も大きくなる可能性がある。
メインメモリにデータを格納するために異なるタイプの物理メモリデバイスを使用する以前のコンピュータシステムでは、プロセッサが様々なプロセスのメモリが実際にメモリデバイスにどのようにマッピングされるかを認識しないという技術的な問題が存在する。例えば、プロセッサは仮想アドレス範囲をプロセスに割り当てることができる。ただし、プロセッサは、仮想アドレス範囲が様々なメモリデバイスにどのようにマップされているかを認識していない。
一例では、プロセスの仮想アドレス範囲が、他のメモリデバイス(DRAMなど)よりも大幅に遅い物理メモリデバイス(フラッシュメモリなど)にマップされている場合、プロセスは、プロセスの実行を継続するために必要なメインメモリからデータに迅速にアクセスできないために、強制的に低速で実行される可能性がある。例えば、プロセスは、データ計算または他の処理を続行するためにメインメモリからの応答を必要とする場合がある(例えば、プロセスによる実行中に必要なデータを取得するためにプロセッサがメインメモリに対して行う読み取りアクセス要求のデータを含む応答)。メインメモリから必要なデータが実際に低速の物理メモリデバイスに格納されている場合、応答を待つ間、処理は大幅に遅れる。
本開示の様々な実施形態は、上記の技術的問題の1つまたは複数に対する技術的解決策を提供する。いくつかの実施形態では、コンピュータシステムは、コンピュータシステムによって使用されるメモリデバイス(例えば、メインメモリを提供するために使用されるメモリデバイス)の待ち時間に関するデータを格納する。一例では、コンピュータシステムのプロセッサに見える様々なメモリ領域の待ち時間が知られている(例えば、以下で説明するように、格納されたメタデータに収集及び/または集約された情報によって表される)。
いくつかの実施形態では、プロセッサ、オペレーティングシステム、及び/またはアプリケーション(ソフトウェア設計者によってプログラムされる)は、遅いメモリアクセスによる重大なプロセスの遅延を回避するために、コンピュータシステムによってアクションを開始及び/または実行することができる。例えば、高速メモリ応答を必要とする優先度の高いプロセスは、DRAMで実行するように構成できる。
別の例では、モバイルデバイス上で実行されているアプリケーションの優先度を監視できる。アプリケーションの優先度が上がるときに(例えば、低から高に変わると)、プロセッサ及び/またはオペレーティングシステムは、低速メモリデバイスに対応するメインメモリのアドレス範囲からアプリケーションを自動的に転送し、アプリケーションを高速メモリデバイスに対応する新しいアドレス範囲に移動できる。
一例では、メモリデバイスタイプには、DRAM、NVRAM、及びNANDフラッシュが含まれる。プロセスの優先順位は、プロセッサによって決定される(例えば、プロセスによる使用パターンに基づいて)。これらのメモリデバイスタイプへのアドレス範囲マッピングに関する格納されたメタデータに基づいて、プロセッサはプロセスを適切なメモリの待ち時間を有するアドレス範囲に割り当てる。例えば、プロセッサは、プロセスの優先度が低、中、高のいずれであるかを判断できる。プロセスが中の優先度を有すると判断することに基づいて、プロセスに関連するソフトウェア及び/またはデータは、中の待ち時間を有するNVRAMメモリデバイスタイプの物理ストレージに対応するアドレス範囲に格納される。
一例では、NVRAMデバイスタイプは3D XPointメモリである。一例では、NVRAMデバイスタイプは、抵抗性ランダムアクセスメモリ、磁気抵抗性RAM、相変化RAM、及び/または強誘電体RAMであり得る。一例では、NVRAMチップは、コンピュータシステム(例えば、NVDIMM-P)のメインメモリとして使用される。一例では、NVRAMデバイスは、DIMMパッケージの不揮発性3D XPointメモリを使用して実装される。
別の例では、プロセッサ及び/またはオペレーティングシステムが、優先順位の変更に応答してアプリケーションを異なるアドレス範囲に自動的に転送するように構成されていない場合、アプリケーションのソフトウェアコードは、それ自体、格納されたメタデータから1つ以上の値を読み取るように構成できる。読み取られた値に基づいて、アプリケーション自体がデータストレージを管理できるため、データはより高速なメモリデバイスに対応するアドレス範囲に優先的に保存される。一例では、アプリケーションは、格納されたメタデータへのアクセスを読み取るか、さもなければ提供されることに基づいて、コンピュータシステムで利用可能なメモリデバイスの相対的な待ち時間を決定することができる。一例では、格納されたメタデータは、どのデータが、異なる待ち時間を有する様々な異なるメモリデバイスのどのメモリデバイス上にあるかを指定する。このようにメモリデバイスを指定することにより、アプリケーションは、データの格納に使用されているメモリデバイスに応じて、特定のデータへのアクセスの待ち時間を決定できる。
一例では、モバイルデバイス上のアプリケーションは、オペレーティングシステムによるメインメモリの割り当てを要求するときに(例えば、システムオンチップデバイス上で実行する)、格納されたメタデータを読み取る。一例では、アプリケーションは、特定のタイプのメモリデバイス及び/またはメモリの読み取りまたは書き込みアクセスに関連する特定の待ち時間に対応するメインメモリ内のアドレス範囲を要求する。
一例では、アプリケーションは、格納されたメタデータを読み取るか、さもなければアクセスして、どのメモリが高速で、どのメモリが低速であるかを判断する。モバイルデバイスの第1のコンテキストでは、アプリケーションは高速メモリの割り当てを要求する。モバイルデバイスの第2のコンテキストでは、アプリケーションは低速メモリの割り当てを要求する。一例では、所定のコンテキストの検出に応答して、アプリケーションは、メモリの割り当ての変更を開始または要求する。一例では、アプリケーションは、格納されたメタデータ(例えば、プロセッサによって)に対して行われた更新されたクエリ、及び/またはコンピュータシステムのプロセッサによってアプリケーションに提供されたデータ(例えば、モバイルデバイスの動作特性)に基づいて、コンテキストの変化を決定する。
一実施形態では、コンピュータシステムは、第1のメモリデバイス(例えば、DRAM)及び第2のメモリデバイス(例えば、NVRAMまたはNANDフラッシュ)、及び1つまたは複数の処理デバイス(例えば、CPUまたはシステムオンチップ(SoC))を含む。コンピュータシステムはさらに、1つまたは複数の処理デバイスに、オペレーティングシステムによって維持されるアドレス空間のメモリにアクセスすることであって、アクセスすることがアドレス空間内のアドレスを使用した第1のメモリデバイスと第2のメモリデバイスへのアクセスを含む、アクセスすること、アドレス空間の第1のアドレス範囲を第1のメモリデバイスに関連付け、アドレス空間の第2のアドレス範囲を第2のメモリデバイスに関連付けるメタデータを格納すること、及び格納されたメタデータに基づいて、オペレーティングシステムによって、第1のプロセス及び第2のプロセスを含むプロセスを管理することであって、第1のプロセスのデータは第1のメモリデバイスに格納され、第2のプロセスのデータは第2のメモリデバイスに格納される、管理することを命令するように構成された命令を含むメモリを含む。
一実施形態では、コンピュータシステムは、DRAM、NVRAM、及びNANDフラッシュを含むメモリデバイスタイプを使用する。一例では、DRAMはNVRAMよりも高速であり、これはNANDフラッシュよりも高速である。コンピュータシステムは、仮想メモリアドレスを使用してコンピュータシステムのプロセッサが3つの異なるタイプのメモリすべてに直接アクセスできるように構成されている。一例では、プロセッサは、メモリ管理ユニットと通信して、仮想アドレスから物理アドレスへのマッピングシステムを実装する。
一実施形態では、アプリケーションは、異なるタイプのメモリデバイスに基づくメモリ割り当ての最適化を管理または処理するように事前にプログラムされていないか、そうでなければ構成されていない。例えば、これはレガシーソフトウェアプログラムで発生する可能性がある。このタイプの状況では、アプリケーションのメモリ割り当ての最適化を管理するようにオペレーティングシステムを構成できる。
一例では、オペレーティングシステムは、アプリケーションの1つまたは複数の特性を検出するか、さもなければ決定する。オペレーティングシステムは、特性に基づいて、格納されたメタデータを使用して、メインメモリ内の1つ以上のアドレス範囲をアプリケーションにアサインする。一例では、特性は、アプリケーション自体によって提供される情報に基づいて決定される(例えば、アプリケーションがモバイルデバイス上で起動されるとき)。別の例では、特性は、アプリケーションが実行されているコンピュータシステム以外のコンピューティングデバイスによって提供される。一例では、中央リポジトリを使用して、アプリケーションのデータベースまたは特性のテーブルを格納及び更新する。一例では、中央サーバは、使用する物理メモリのタイプに関してオペレーティングシステムにインディケーションを提供する。
一実施形態では、オペレーティングシステムは、コンピュータシステム及び/またはアプリケーションの実行に関連するコンテキストを決定する。オペレーティングシステムは、コンテキストに基づいて、格納されたメタデータを使用して、メインメモリ内の1つ以上のアドレス範囲をアプリケーションにアサインする。
一実施形態では、格納されたメタデータは、データが格納されているデバイスを識別するために使用される。メモリサブシステムには、メモリアドレス空間内のプロセッサ(SoCなど)でアドレス指定できる複数の物理メモリデバイス(DRAM、NVRAM、NANDフラッシュなど)がある。メタデータは、どのメモリアドレス領域がどの物理メモリデバイスにマップされるかを指定するために使用される。メタデータをDRAM及び/またはプロセッサにロードして(例えば、プロセッサのキャッシュにロードして)、どのデータがどのデバイスにあるかを判断し、及び/またはそれぞれのデータへのアクセスの待ち時間を推定するために使用することができる。
一実施形態では、アプリケーションは、メインメモリを使用するプロセッサを有するモバイルデバイス上で実行されている。アプリケーションは、モバイルデバイスのオペレーティングシステムがアプリケーションで使用するためにメインメモリの一部を割り当てることを要求する。割り当てられたメモリは、論理/仮想メモリ空間にある(例えば、プログラマとプロセッサの実行ユニットから見たメモリアドレスは仮想である)。一実施形態では、仮想メモリアドレスは、ページテーブルによって実際のメモリ/物理メモリにマッピングされる。ページテーブルのマッピングデータの一部は、プロセッサのバッファにキャッシュされる。一例では、バッファはトランスレーションルックアサイドバッファ(TLB)である。
一実施形態では、コンピュータシステムは、DRAM、NVRAM、及びNANDフラッシュメモリデバイスを含む。コンピュータシステムのプロセッサは、アドレスによってメインメモリにランダムにアクセスする。メインメモリ内のアドレスは、これら3タイプのメモリデバイス上のデータストレージの物理的な場所に対応している。一例では、デバイスの各々は、同期メモリバスを使用してプロセッサによってアクセスされる。一例では、DRAMは、CPUとメモリコントローラハブとの間でデータを運ぶシステムバスと同期するインターフェイスを有する同期ダイナミックランダムアクセスメモリ(SDRAM)である。
図1は、いくつかの実施形態による、メモリサブシステム110を有する例示的なコンピューティング環境100を示す。メモリサブシステム110は、メモリ構成要素109A~109Nなどの媒体を含むことができる。メモリ構成要素109A~109Nは、揮発性メモリ構成要素、不揮発性メモリ構成要素、またはそれらの組み合わせであり得る。いくつかの実施形態では、メモリサブシステム110はメモリモジュールである。メモリモジュールの例には、DIMMとNVDIMMが含まれる。いくつかの実施形態では、メモリサブシステム110は、ハイブリッドメモリ/ストレージサブシステムである。一般に、コンピューティング環境100は、メモリサブシステム110を使用するコンピュータシステム120を含むことができる。例えば、コンピュータシステム120は、メモリサブシステム110にデータを書き込み、メモリサブシステム110からデータを読み取ることができる。
コンピュータシステム120は、コンピューティングデバイス、例えばモバイルデバイス、IoTデバイス、デスクトップコンピュータ、ラップトップコンピュータ、ネットワークサーバ、またはメモリ及び処理デバイスを含むそのようなコンピューティングデバイスであり得る。コンピュータシステム120は、メモリサブシステム110を含むか、またはそれに結合することができ、その結果、コンピュータシステム120は、メモリサブシステム110からデータを読み取る、またはメモリサブシステム110にデータを書き込むことができる。コンピュータシステム120は、物理ホストインターフェイスを介してメモリサブシステム110に結合することができる。本明細書で使用する場合、「結合する」とは、概して、構成要素間の接続を指し、これは、電気、光、磁気などの接続を含め、有線であろうと無線であろうと、間接的な通信接続または直接的な通信接続(例えば、介入構成要素無し)であり得る。物理ホストインターフェイスの例には、シリアルアドバンストテクノロジーアタッチメント(SATA)インターフェイス、ペリフェラル構成要素インターコネクトエクスプレス(PCIe)インターフェイス、ユニバーサルシリアルバス(USB)インターフェイス、ファイバーチャネル、シリアル接続SCSI(SAS)、ダブルデータレート(DDR)メモリバスなどが含まれるが、これらに限定されない。物理ホストインターフェイスを使用して、コンピュータシステム120とメモリサブシステム110の間でデータを送信できる。コンピュータシステム120は、メモリサブシステム110がPCIEインターフェイスによってコンピュータシステム120と結合されているときに、NVM Express(NVMe)インターフェイスをさらに利用して、メモリ構成要素109A~109Nにアクセスすることができる。物理ホストインターフェイスは、メモリサブシステム110とコンピュータシステム120との間で制御、アドレス、データ、及び他の信号を渡すためのインターフェイスを提供することができる。
図1は、例としてメモリサブシステム110を示している。一般に、コンピュータシステム120は、共有通信接続、複数の別個の通信接続、及び/または通信接続の組み合わせを介して、複数のメモリサブシステムにアクセスすることができる。一例では、各メモリサブシステム110は、メモリバスを介して処理デバイス118によってランダムにアクセスされる異なるタイプのメモリデバイスであり得る。
コンピュータシステム120は、処理デバイス118及びコントローラ116を含む。処理デバイス118は、例えば、マイクロプロセッサ、中央処理装置(CPU)、プロセッサの処理コア、実行ユニットなどであり得る。場合によっては、コントローラ116は、メモリコントローラ、メモリ管理ユニット、及び/またはイニシエータと呼ばれることがある。一例では、コントローラ116は、コンピュータシステム120と1つまたは複数のメモリサブシステム110との間で結合されたバスを介した通信を制御する。
一般に、コントローラ116は、メモリ構成要素109A~109Nへの所望のアクセスのために、コマンドまたは要求をメモリサブシステム110に送信することができる。コントローラ116は、メモリサブシステム110と通信するためのインターフェイス回路をさらに含むことができる。インターフェイス回路は、メモリサブシステム110から受信した応答をコンピュータシステム120のための情報に変換することができる。
コンピュータシステム120のコントローラ116は、メモリサブシステム110のコントローラ115と通信して、メモリ構成要素109A~109Nでのデータの読み取り、データの書き込み、またはデータの消去などの動作及び他のそのような動作を実行することができる。場合によっては、コントローラ116は、処理デバイス118の同じパッケージ内に統合される。他の場合では、コントローラ116は、処理デバイス118のパッケージから分離されている。コントローラ116及び/または処理デバイス118は、ハードウェア、例えば1つまたは複数の集積回路及び/または個別の構成要素、バッファメモリ、キャッシュメモリ、またはそれらの組み合わせを含むことができる。コントローラ116及び/または処理デバイス118は、マイクロコントローラ、特殊目的の論理回路(例えば、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)など)、または別の適切なプロセッサであり得る。
メモリ構成要素109A~109Nは、様々な異なるタイプの不揮発性メモリ構成要素及び/または揮発性メモリ構成要素の任意の組み合わせを含むことができる。不揮発性メモリ構成要素の例には、否定論理積(NAND)タイプのフラッシュメモリが含まれる。一例では、メモリ構成要素109A~109Nのそれぞれは、シングルレベルセル(SLC)またはマルチレベルセル(MLC)(例えば、トリプルレベルセル(TLC)またはクワッドレベルセル(QLC))などのメモリセルの1つまたは複数のアレイを含むことができる。いくつかの実施形態では、特定のメモリ構成要素は、メモリセルのSLC部分及びMLC部分の両方を含むことができる。メモリセルの各々は、コンピュータシステム120によって使用されるデータの1つまたは複数のビット(例えば、データブロック)を格納することができる。
NANDタイプのフラッシュメモリなどの不揮発性メモリ構成要素は一例であるが、メモリ構成要素109A~109Nは、揮発性メモリなどの他の任意のタイプのメモリに基づくことができる。いくつかの実施形態では、メモリ構成要素109A~109Nは、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、ダイナミックランダムアクセスメモリ(DRAM)、同期ダイナミックランダムアクセスメモリ(SDRAM)、位相変化メモリ(PCM)、磁気ランダムアクセスメモリ(MRAM)、スピン注入磁化反転(STT)MRAM、強誘電体トランジスタランダムアクセスメモリ(FeTRAM)、強誘電体RAM(FeRAM)、導電性ブリッジRAM(CBRAM)、抵抗性ランダムアクセスメモリ(RRAM)、酸化物ベースのRRAM(OxRAM)、否定論理和(NOR)フラッシュメモリ、電気的に消去可能なプログラム可能な読み取り専用メモリ(EEPROM)、ナノワイヤベースの不揮発性メモリ、メモリスタテクノロジを組み込んだメモリ、及び不揮発性メモリセルの3D XPointアレイであり得るが、これらに限定されない。不揮発性メモリのクロスポイントアレイは、スタック可能なクロスグリッドデータアクセスアレイと組み合わせて、バルク抵抗の変化に基づいてビットストレージを実行できる。さらに、多くのフラッシュベースのメモリとは対照的に、クロスポイント不揮発性メモリは、不揮発性メモリセルを事前に消去せずに不揮発性メモリセルをプログラムできるインプレース書き込み操作を実行できる。さらに、メモリ構成要素109A~109Nのメモリセルは、データを格納するために使用されるメモリ構成要素のユニットを参照することができるメモリページまたはデータブロックとしてグループ化することができる。
メモリサブシステム110のコントローラ115は、メモリ構成要素109A~109Nと通信して、メモリ構成要素109A~109Nでのデータの読み取り、データの書き込み、またはデータの消去などの操作及び他のそのような操作を実行できる(例えば、コントローラ116によってコマンドバスにスケジュールされたコマンドに応答して)。コントローラ115は、1つまたは複数の集積回路及び/または個別の構成要素、バッファメモリ、またはそれらの組み合わせなどのハードウェアを含むことができる。コントローラ115は、マイクロコントローラ、特殊目的の論理回路(例えば、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)など)、または別の適切なプロセッサであり得る。コントローラ115は、ローカルメモリ119に格納された命令を実行するように構成された処理デバイス117(プロセッサ)を含むことができる。図示の例では、コントローラ115のローカルメモリ119は、様々なプロセス、操作、論理フロー、及びメモリサブシステム110とコンピュータシステム120との間の通信の処理を含む、メモリサブシステム110の動作を制御するルーチンを実行するための命令を格納するように構成された埋め込みメモリを含む。いくつかの実施形態では、ローカルメモリ119は、メモリポインタ、フェッチされたデータを格納するメモリレジスタを含むことができる。ローカルメモリ119はまた、マイクロコードを記憶するための読み取り専用メモリ(ROM)を含むことができる。図1の例示的なメモリサブシステム110は、コントローラ115を含むものとして示され、本開示の別の実施形態では、メモリサブシステム110は、コントローラ115を含まなくてもよく、代わりに、外部制御(例えば、外部ホストによって、またはメモリサブシステムとは別のプロセッサまたはコントローラによって提供される)に依拠し得る。
一般に、コントローラ115は、コンピュータシステム120からコマンドまたは操作を受信することができ、コマンドまたは操作を命令または適切なコマンドに変換して、メモリ構成要素109A~109Nへの所望のアクセスを達成することができる。コントローラ115は、ウェアレベリング操作、ガベージコレクション操作、エラー検出及びエラー訂正コード(ECC)操作、暗号化操作、キャッシング操作、及び論理ブロックアドレスと物理ブロックアドレスとの間のアドレス変換などの他の操作を担うことができ、これらは、メモリ構成要素109A~109Nに関連付けられている。コントローラ115は、物理ホストインターフェイスを介してコンピュータシステム120と通信するためのホストインターフェイス回路をさらに含むことができる。ホストインターフェイス回路は、コンピュータシステムから受信したコマンドをコマンド命令に変換して、メモリ構成要素109A~109Nにアクセスし、また、メモリ構成要素109A~109Nに関連する応答をコンピュータシステム120の情報に変換することができる。
メモリサブシステム110はまた、図示されていない追加の回路または構成要素を含むことができる。いくつかの実施形態では、メモリサブシステム110は、キャッシュまたはバッファ121(例えば、DRAMまたはSRAM)、及びコントローラ115からアドレスを受信し、メモリ構成要素109A~109Nにアクセスするためのアドレスを復号できるアドレス回路(例えば、行デコーダと列デコーダ)を含み得る。
コンピューティング環境100は、データが格納されているメモリデバイスを識別するために使用されるメタデータを格納するコンピュータシステム120内のメタデータ構成要素113を含む(例えば、上記の様々な実施形態で論じられるように)。メタデータ構成要素113の一部は、コンピュータシステム120及び/またはメモリサブシステム110上に常駐することができる。一例では、メタデータの一部は、ローカルメモリ119及び/またはバッファ121に格納される。一例では、メタデータの一部は、代替的に及び/または追加的に、コントローラ116のキャッシュに格納される(例えば、トランスレーションルックアサイドバッファに格納される)。
一例では、メモリサブシステム110は、DDRまたは他のタイプの同期メモリバスを介して、コンピュータシステム120が異なるタイプのメモリデバイス内のデータにアクセスすることを提供することができる。一実施形態では、DIMM上のNVRAM内のデータ及びDRAM内のデータへのアクセスが提供される。一例では、データは、DDRメモリバスを介して行われるホスト読み取り/書き込み要求中にアクセスするために、コンピュータシステム120のランダムアクセスメモリアドレス空間でアクセス可能にされる。
一例では、コンピュータシステム120は、(ページへのアクセスのための)ページイン要求をコントローラ115に送信する。ページイン要求を受信することに応答して、コントローラ115は、不揮発性メモリデバイスなどの低速デバイスから揮発性メモリデバイス(例えば、メモリサブシステム110上のDRAM)にページを移動する。
一例では、コンピュータシステム120は、ページアウト要求をコントローラ115に送信する。ページアウト要求を受信することに応答して、コントローラ115は、揮発性メモリ(例えば、メモリサブシステム110上のDRAM)からデータを、バッファ121を介して不揮発性メモリに移動する。
いくつかの実施形態では、コンピュータシステム120内のコントローラ116及び/または処理デバイス118は、メタデータ構成要素113の少なくとも一部を含む。例えば、コントローラ116及び/または処理デバイス118は、メタデータ構成要素113を実装する論理回路を含むことができる。例えば、コンピュータシステム120の処理デバイス118(プロセッサ)は、本明細書で説明するように、どのデバイスにデータがメタデータ構成要素113用に格納されているかを識別する操作を実行するためにメモリに格納された命令を実行するように構成することができる。いくつかの実施形態では、メタデータ構成要素113は、コンピュータシステム120のオペレーティングシステム、デバイスドライバ、またはアプリケーション(例えば、コンピュータシステム120上で実行されるアプリケーション)の一部である。
いくつかの実施形態では、メモリサブシステム110内のコントローラ115及び/または処理デバイス117は、メタデータ構成要素113の少なくとも一部を含む。例えば、コントローラ115及び/または処理デバイス117は、メタデータ構成要素113を実装する論理回路を含むことができる。
一例では、中央処理装置(CPU)は、CPUに接続されたメモリシステム内のメモリにアクセスすることができる。例えば、中央処理装置(CPU)は、メタデータ構成要素113の格納されたメタデータへのクエリに基づいてメモリにアクセスするように構成することができる。
図2は、いくつかの実施形態による、メモリバス203を使用してメモリモジュール205内の異なるタイプのメモリにアクセスするモバイルデバイス200を示す。図2は、異なるタイプのメモリを有するコンピュータシステムを示している。図2のコンピュータシステムは、モバイルデバイス200と、メモリバス203を介してモバイルデバイス200に接続されたメモリモジュール205とを含む。メモリモジュール205は、図1に示されるメモリサブシステム110の例である。
モバイルデバイス200は、中央処理装置または1つまたは複数の処理コアを備えたマイクロプロセッサであり得る処理デバイス118を含む。モバイルデバイス200は、キャッシュメモリ211を有することができる。キャッシュメモリ211の少なくとも一部は、任意選択で、処理デバイス118の同じ集積回路パッケージ内に統合することができる。
図2に示されるメモリモジュール205は、複数のタイプのメモリがある(例えば、221と223)。例えば、タイプAの221のメモリ(例えば、DRAM)は、タイプBの223のメモリ(例えば、NVRAM)よりも高速である。例えば、メモリバス203は、ダブルデータレートバスであり得る。一般に、いくつかのメモリモジュール(例えば、205)をメモリバス203に結合することができる。
処理デバイス118は、メタデータ構成要素113を使用してコンピュータシステム内のメモリの一部にアクセスするように、命令(例えば、オペレーティングシステム及び/または1つまたは複数のデバイスドライバ)を介して構成される。例えば、メモリモジュール205のタイプB223(例えば、NVRAM)のメモリにアクセスすることができ、またはメモリモジュール205のタイプA221(例えば、DRAM)のメモリにアクセスすることができる。一実施形態では、メモリモジュール205のタイプB223のメモリは、メモリモジュール205のタイプA221のメモリをアドレス指定することによってのみアクセス可能である。
タイプA221のメモリ及びタイプB223のメモリへのデータアクセスを管理するために、コントローラ227をメモリモジュール205に設けることができる。一実施形態では、コントローラ227は、バッファ121との間でデータを転送するときに、モバイルデバイス200及びメモリモジュール205によるDRAMまたはNVRAMへのアクセスを多重化する。一例では、メモリバス203は、モバイルデバイス200とメモリモジュール205との間のDDRインターフェイスとしてホストDDRチャネルを提供する。一例では、ページがNVRAMメモリからバッファ121に取り出されると、従来のDDR4スロット(例えば、ホストDDRチャネル)を介してモバイルデバイスがアクセスするためにページをロードすることができる。
一般に、メモリサブシステム(例えば、205)は、メモリ(例えば、221、…、223)などの媒体を含むことができる。メモリ(例えば、221、…、223)は、揮発性メモリ、不揮発性メモリ(NVM)、及び/またはそれらの組み合わせを含むことができる。処理デバイス118は、各メモリサブシステム(例えば、メモリモジュール205)にデータを書き込み、メモリサブシステム(例えば、メモリモジュール205)から直接または間接的にデータを読み取ることができる。
一実施形態では、メモリモジュール205は、バッファ121を使用することによって、不揮発性メモリまたは揮発性メモリへのメモリバスアクセスを提供する。一例では、メモリモジュール205は、DDRバスを介してモバイルデバイス200に結合されたDIMMである。記憶媒体は、例えば、クロスポイントメモリである。
一実施形態では、モバイルデバイスは、読み取り/書き込み操作のために(例えば、DDR4バスを使用して)通信チャネルを介してメモリモジュールと通信する。モバイルデバイスは、メモリモジュールなどのコンピュータ周辺機器をコンピュータバス(シリアルAT接続(SATA)、周辺機器相互接続(PCI)、PCIeXtended(PCI-X)、PCIExpress(PCIe))、通信部分、及び/またはコンピュータネットワークなど)などの相互接続を介して接続できる1つまたは複数の中央処理装置(CPU)を持つことができる。
一実施形態では、メモリモジュールを使用して、プロセッサのデータを不揮発性または揮発性の記憶媒体に記憶することができる。メモリモジュールは、通信チャネルを使用してモバイルデバイスとの通信を実装するホストインターフェイスを有する。一実施形態では、メモリモジュール205は、例えば、処理デバイス118からの通信に応答して動作を実行するためのファームウェアを実行するコントローラ227を有する。一例では、メモリモジュールは、揮発性ダイナミックランダムアクセスメモリ(DRAM)及びNVRAMを含む。DRAM及びNVRAMは、処理デバイス118によってアクセス可能なデータをメモリアドレス空間に格納する。
図示のように、図2のコンピュータシステムは、モバイルデバイスを実装するために使用される。処理デバイス118は、メモリサブシステム(例えば、205)からデータを読み取る、またはメモリサブシステムにデータを書き込むことができる。
物理ホストインターフェイスを使用して、処理デバイス118とメモリサブシステム(例えば、205)との間でデータを送信することができる。物理ホストインターフェイスは、メモリサブシステム(例えば、205)と処理デバイス118との間で制御、アドレス、データ、及び他の信号を渡すためのインターフェイスを提供することができる。
一般に、メモリサブシステム(例えば、メモリモジュール205)は、メモリ(例えば、221、…、223)を提供するメモリ集積回路などのメモリデバイスのセットを接続するプリント回路基板を含む。メモリサブシステム(例えば、205)上のメモリ(例えば、221、…、223)は、異なるタイプの不揮発性メモリデバイス及び/または揮発性メモリデバイスの任意の組み合わせを含むことができる。
いくつかの実装形態では、メモリ(例えば、221、…、223)は、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、ダイナミックランダムアクセスメモリ(DRAM)、静的ランダムアクセスメモリ(SRAM)、同期ダイナミックランダムアクセスメモリ(SDRAM)、位相変化メモリ(PCM)、マグネトランダムアクセスメモリ(MRAM)、否定論理和(NOR)フラッシュメモリ、電気的に消去可能なプログラム可能な読み取り専用メモリ(EEPROM)、及び/または不揮発性メモリセルのクロスポイントアレイを含むことができるが、これらに限定されない。
メモリサブシステム(例えば、メモリモジュール205)は、処理デバイス118からの要求、コマンドまたは命令に応答するメモリ(例えば、221、…、223)と通信して、メモリ(例えば、221、…、223)のデータの読み取り、データの書き込み、またはデータの消去などの操作及び他のそのような操作を実行するコントローラ(例えば、227)を有することができる。コントローラ(例えば、227)は、1つまたは複数の集積回路及び/または個別の構成要素、バッファメモリ、またはそれらの組み合わせなどのハードウェアを含むことができる。コントローラ(例えば、227)は、マイクロコントローラ、特殊目的の論理回路(例えば、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)など)、または別の適切なプロセッサであり得る。コントローラ(例えば、227)は、ローカルメモリに格納された命令を実行するように構成された1つまたは複数のプロセッサ(処理デバイス)を含むことができる。
コントローラのローカルメモリ(例えば、227)は、メモリサブシステム(例えば、205)と処理デバイス118との間の通信の処理を含む、メモリサブシステム(例えば、205)の動作を制御する様々なプロセス、操作、論理フロー、及びルーチンを実行するための命令、及び以下でより詳細に説明される他の機能を格納するように構成された組み込みメモリを含むことができる。コントローラのローカルメモリ(例えば、227)は、マイクロコードを格納するための読み取り専用メモリ(ROM)及び/または、例えば、メモリポインタ、フェッチされたデータなどを格納するメモリレジスタを含むことができる。
図2の例示的なメモリサブシステム205は、コントローラ227を含むものとして示され、本開示の別の実施形態では、メモリサブシステム(例えば、205)は、コントローラ(例えば、227)を含まなくてもよく、代わりに、外部制御(例えば、メモリサブシステム(例えば、205)とは別のプロセッサまたはコントローラによって提供される)に依拠し得る。
一般に、コントローラ(例えば、227)は、通信チャネル(例えば、203)の標準通信プロトコルに従って、処理デバイス118からコマンド、要求、または命令を受信することができ、メモリ(例えば、221、…、223)への所望のアクセスを達成するための、メモリサブシステム(例えば、205)内の詳細な命令または適切なコマンドへの標準プロトコルに準拠してコマンド、要求、または命令を変換することができる。例えば、コントローラ(例えば、227)は、メモリ(例えば、221、…、223)に関連付けられている論理アドレスと物理アドレスの間のアドレス変換などの操作を担う。コントローラ(例えば、227)は、物理ホストインターフェイスを介して処理デバイス118と通信するためのホストインターフェイス回路をさらに含むことができる。ホストインターフェイス回路は、処理デバイス118から受信したコマンドをコマンド命令に変換して、メモリデバイス(例えば、221、…、223)にアクセスし、また、メモリデバイス(例えば、221、…、223)に関連する応答を処理デバイス118のための情報に変換することができる。
メモリサブシステム(例えば、205)はまた、図示されていない追加の回路または構成要素を含むことができる。いくつかの実施形態では、メモリサブシステム205は、キャッシュまたはバッファ(例えば、DRAM)、及びコントローラ(例えば、227)からアドレスを受信し、メモリ(例えば、221、…、223)にアクセスするためのアドレスを復号できるアドレス回路(例えば、行デコーダと列デコーダ)を含み得る。
一例では、メモリバス203は、メモリサブシステム(例えば、205)に電力を供給し、及び/または所定のプロトコルを介してメモリサブシステム(例えば、205)と通信するための1つまたは複数のコネクタを有し、メモリサブシステム(例えば、205)は、処理デバイス118から電力、データ、及びコマンドを受信するための1つまたは複数のコネクタを有する。一例では、処理デバイス118は、1つまたは複数のオペレーティングシステムを実行して、コンピュータシステム内のメモリの一部(例えば、NVRAMに格納されたページ)が同期メモリアクセスを使用してアクセスされるメモリアクセスを含むサービスを提供することができる。
図3は、いくつかの実施形態による、メモリサブシステム302のメモリデバイスにアクセスするために使用されるメタデータ320を格納する例示的なコンピュータシステム300を示す。メモリサブシステム302でアクセスされるメモリデバイスには、DRAM304、NVRAM306、及びNANDフラッシュ308が含まれる。一実施形態では、コンピュータシステム300は、代替的に及び/または追加的に、メモリデバイスにアクセスするために使用されるDRAM304にメタデータ322を格納する。
一実施形態では、コンピュータシステム300の処理デバイス310は、アドレス空間内のメモリにアクセスする。一例では、メモリは、1つまたは複数のアプリケーションを実行するときに処理デバイス310によって使用されるメインメモリである。処理デバイス310は、アドレス空間内のアドレスを使用して異なるメモリデバイスにアクセスする。
一実施形態では、メタデータ320、322は、アドレス空間の第1のアドレス範囲をメモリデバイス(例えば、DRAM304)に関連付け、アドレス空間の第2のアドレス範囲を、異なるメモリデバイス(例えば、NVRAM306またはNANDフラッシュ308)に関連付ける。一例では、DRAM304の待ち時間は、NVRAM306及びNANDフラッシュ308の待ち時間よりも短い。
処理デバイス310上で実行されるアプリケーションは、メモリタイプ314を含むように構成されるアプリケーション312を含む。アプリケーション312が最初に起動されるとき、アプリケーション312は、コンピュータシステム300のメインメモリ内のメモリの割り当ての要求とともに、メモリタイプ314を処理デバイス310に提供する。
メモリの割り当ての要求に応答して、処理デバイス310は、メタデータ320へのクエリを行い、及び/またはメタデータ322へのクエリを送信する。これらのクエリの一方または両方からの結果に基づいて、処理デバイス310は、アドレス空間内のアドレス範囲をアプリケーション312に割り当てる。
一実施形態では、アプリケーション312は、メモリデバイスに関連する待ち時間のインディケーションを処理デバイス310に要求する。処理デバイス310は、メタデータ320、322にアクセスして結果を取得し、この結果に基づいて、アプリケーション312への待ち時間のインディケーションを提供する。アプリケーション312は、待ち時間のインディケーションを受信することに応答して、メモリデバイスの特定の1つに対応するメモリの割り当て、メモリタイプ314に対応するメモリデバイス、または少なくとも1つ以上の所定の閾値及び/または要件を満たす性能特性を有するメモリの割り当てを要求する。
一実施形態では、メタデータ322は、仮想アドレス空間内のアドレス範囲をメモリサブシステム302のメモリデバイス内の物理アドレスに関連付けるデータを格納する。一例では、メタデータ322は、NVRAMの場合はアドレス範囲324を格納し、NANDフラッシュの場合はアドレス範囲326を格納する。一例では、アドレス範囲324は、処理デバイス310の仮想アドレスまたは論理アドレスをNVRAM306の物理アドレスにマッピングする。一例では、アドレス範囲326は、処理デバイス310の仮想アドレスまたは論理アドレスをNANDフラッシュ308の物理アドレスにマッピングする。一実施形態では、メタデータ320または322は、DRAM304に格納されたデータのために処理デバイス310のアドレスをマッピングする1つまたは複数のアドレス範囲を格納する。
一実施形態では、メタデータ322は、コンピュータシステム300のメモリ管理ユニット316の物理アドレスへの仮想アドレスのマッピングを提供するページテーブル328の一部として格納される。処理デバイス310は、メモリ管理ユニット316に仮想アドレスを提供し、メモリ管理ユニット316は、トランスレーションルックアサイドバッファ318にアクセスして、メモリサブシステム302のメモリデバイスの1つで物理アドレスを取得する。
一実施形態では、トランスレーションルックアサイドバッファ318は、ページテーブル328からのデータの一部を格納するキャッシュである。一例では、バッファ318は、メタデータ322の一部を格納する。一実施形態では、コンピュータシステム300に格納されたメタデータ320の一部は、メモリサブシステム302内のメモリデバイスにアクセスするときにメモリ管理ユニット316によるアクセスのためにトランスレーションルックアサイドバッファ318にコピーされる。
一実施形態では、処理デバイス310は、異なるメモリデバイスのメモリ特性をアプリケーション312に提供する。アプリケーション312は、提供されたメモリ特性に基づいてメモリの割り当てを要求する。
一実施形態では、処理デバイス310は、アプリケーション312から要求された待ち時間を受け取る。アドレス範囲は、要求された待ち時間に基づいてアプリケーション312に割り当てられる。
一実施形態では、処理デバイス310は、アプリケーション312に関連する優先度を決定する。アプリケーション312に割り当てられるアドレス範囲は、決定された優先度に基づく。一例では、決定された優先度で使用するために、より高速なメモリデバイスタイプが選択される。処理デバイス310は、メタデータ320、322を使用して、選択されたより高速なメモリデバイスタイプのメモリデバイスにデータを物理的に格納するアドレス範囲を選択する。
一実施形態では、処理デバイス310は、アプリケーション312の優先度の変更を決定する。一例では、アプリケーション312の優先度の増加に基づいて、処理デバイス310は、アドレス空間においてアプリケーション312に使用されるメモリ割り当てを変更する。一例では、優先度の増加に応答して、処理デバイス310は、メタデータ320、322にアクセスして、より高速な物理メモリデバイスに対応するアドレス範囲を決定する。
一実施形態では、処理デバイス310は、アドレス空間におけるアプリケーション312によるデータアクセスに関連する特性を観察することに基づいて、アプリケーション312の優先度を決定する。観察された特性は、アプリケーション312のメモリ使用量を割り当てるために使用することができる。一実施形態では、処理デバイス310は、物理メモリデバイスに関連する1つまたは複数の待ち時間を決定する。メタデータ320、322は、決定された1つまたは複数の待ち時間に関するデータを格納し、これは、メインメモリの割り当てを最初に割り当て及び/または変更するときに処理デバイス310によって使用することができる。
図4は、いくつかの実施形態による、ホストコンピュータシステム(図示せず)による揮発性メモリ402及び不揮発性メモリ404へのメモリバスアクセスのために構成されるメモリモジュール401を示す。メモリモジュール401は、メモリサブシステム302またはメモリモジュール205の例である。一例では、メモリモジュール401はハイブリッドDIMMである。揮発性メモリ402は、例えば、DRAMである。
メモリモジュール401は、マルチプレクサ408を使用して、メモリコントローラ416による揮発性メモリ402及び不揮発性メモリ404へのアクセスを提供する。メモリコントローラ416は、ホストシステムによる読み取り/書き込みアクセスを処理するためにホストインターフェイス406に結合されている。一実施形態では、マルチプレクサ408は、ホストインターフェイス406を介してホストシステムから読み取りまたは書き込みコマンドを受信することに応答して、メモリコントローラ416から受信された信号に基づいて制御される。
一例では、ホストシステムは、メモリモジュール401(例えば、DIMM)上のメモリ空間(例えば、DRAMメモリアドレス空間)にアクセスする。DIMMは、DRAMのチャネルとして自身をホストに公開する。一実施形態では、ホストシステムのハイパーバイザは、DIMM上のデータ移動を制御する。例えば、メモリブロックをDRAMアドレス空間に出し入れし、DRAMページをホスト上で実行されているソフトウェアに公開するように要求される。ソフトウェアは、例えば、仮想マシン(VM)で実行される。
一例では、ページイン/アウト制御パスが、ドライバが現在DRAMまたはNVRAMにあるページを要求するために提供される。一例では、NVRAMはDRAMよりもはるかに大きな容量を有する。
一例では、メモリモジュール401はDIMMとして実装される。不揮発性メモリ404は、3D XPointメモリパッケージによって提供される。一例では、3D XPointメモリから取得されたデータのページがバッファにコピーされ、バッファからコピーされる(ページイン/ページアウト)。
一例では、ホストシステムは、通常のDDR4タイミングを使用して、任意のDRAMまたはNVRAMアドレスへの読み取り/書き込みアクセスを有する。例えば、ホストは、これらの時間帯にDDR4ルールごとに任意のトラフィックを生成できる。
一例では、不揮発性メモリ404の完全なDDRアドレス空間がホストシステムに公開されている。様々な実施形態によれば、コンピュータシステム120のコントローラ(例えば、コントローラ116)は、従来のDRAMへのアクセスの場合と同じように(例えば、同じ読み取り/書き込み及びリフレッシュタイミングサイクル)動作することができる。
図5は、少なくともいくつかの実施形態による、メモリバスを使用してメモリモジュール502にアクセスするホストオペレーティングシステム241を示している。メモリモジュール502は、バッファ410を含む。バッファ410は、バッファ121の例である。一例では、バッファ410は、メタデータ322及び/またはページテーブル328の少なくとも一部を格納する。コマンド及びデータは、ホストインターフェイス406を介してホストオペレーティングシステム241から受信される。一例では、ホストオペレーティングシステム241は、コンピュータシステム120または300上で実行される。
一実施形態では、デバイスドライバ247(例えば、バックエンドドライバ)は、ハイパーバイザ245を介したメモリアクセスのために構成される。一例では、図5のシステムは、図1~3のコンピュータシステムに実装されている。
一例では、ホストオペレーティングシステム241は、図1または2のコンピュータシステムの処理デバイス118、または図3の処理デバイス310上で動作する。ホストオペレーティングシステム241は、メモリモジュール205またはメモリサブシステム302などのメモリサブシステムのメモリ(例えば、221、…、223)を使用してメモリサービスを提供する1つまたは複数のデバイスドライバ(例えば、247)を含む。
一実施形態では、バックエンドドライバ247は、マッピングテーブル246を維持する。例えば、ドライバ247は、マッピングテーブル246を維持して、DRAM304、NVRAM306、及びNANDフラッシュ308に格納されたデータのページのマッピングを含む。
一実施形態では、ホストオペレーティングシステム241は、仮想マシン249をプロビジョニングするハイパーバイザ245を含む。仮想マシン249は、図1~3のコンピューティングシステムのハードウェアを使用してホストオペレーティングシステム241によって提供されるリソース及びサービスを介して実装される仮想ハードウェアを有する。例えば、ハイパーバイザ245は、メモリモジュール205などのメモリサブシステムのメモリの一部(例えば、221、…、223)を使用して、仮想マシン249の一部として仮想メモリをプロビジョニングすることができる。
仮想マシン249は、ゲストオペレーティングシステム243が、オペレーティングシステム243が仮想マシンでのプロビジョニングと同じまたは類似のハードウェアのセットを有する物理コンピューティングマシン上で実行されているのと同じように、ゲストオペレーティングシステム243で実行されているアプリケーション(例えば、251、…、253)にリソース及び/またはサービスを提供することを可能にする。ハイパーバイザ245は、仮想マシンにプロビジョニングされた仮想ハードウェアと、ホストオペレーティングシステム241によって管理されるコンピューティングシステム内のハードウェアのサービスとの間のマッピングを管理する。
デバイスドライバ248(例えば、フロントエンドドライバ)は、バックエンドドライバ247と通信する。ドライバ247及びドライバ248は、追加のDDR容量(例えば、DRAMまたはNVRAMの容量)が利用可能である場合、メモリバルーニングのために通信することができる。
図5は、仮想マシン249がハイパーバイザ245によってプロビジョニングされる例を示している。一般に、ハイパーバイザ245は、同じゲストオペレーティングシステム243または異なるゲストオペレーティングシステムを実行できる複数の仮想マシン(例えば、249)をプロビジョニングすることができる。様々な仮想マシンを使用するために、様々なユーザ及び/またはアプリケーションプログラムのセットをアサインすることができる。
場合によっては、ホストオペレーティングシステム241は、仮想マシンのプロビジョニングのためのサービスを提供することに特化されており、他のアプリケーションプログラムを実行しない。あるいは、ホストオペレーティングシステム241は、アプリケーション(例えば、251、…、253)などの他のアプリケーションプログラムをサポートするための追加のサービスを提供することができる。
一実施形態では、デバイスドライバ247は、仮想マシン249によって使用するために、より遅いメモリ(例えば、NVRAM)からより速いメモリ(例えば、DRAM)へのページのページインを要求するように構成され得る。この要求は、アプリケーション(例えば、図3のアプリケーション312)からの要求に応答して行われ得る。ページを要求した後、データのページを低速のメモリから高速のメモリにロード及び/または転送することにより、ページは高速のメモリで使用可能になる。一例では、処理デバイス310は、メタデータ320、322として格納されたアドレス範囲情報に基づいて、ページを低速メモリから高速メモリに移動する。一例では、低速メモリは、メモリモジュール401内の不揮発性メモリ404であり得、より高速なメモリは、同じメモリモジュール401内の揮発性メモリ402である。
一実施形態では、データの転送(例えば、ホストオペレーティングシステム241によるページイン要求に応答して実行される)は、同じメモリモジュール401内などの同じメモリサブシステム内で実行され、メモリバス203などの処理デバイス118に接続された通信チャネルの輻輳を回避または低減する。例えば、データは、デバイスドライバ247からの1つまたは複数のコマンド、要求、及び/または命令に応答して、メモリモジュール205内のコントローラ227の制御下にて、メモリモジュール205内のより遅いメモリ223(例えば、NVRAMまたはNANDフラッシュ)からメモリモジュール205内のより速いメモリ221(例えば、DRAM)にコピーされ得る。
一実施形態では、ハイパーバイザ245は、デバイスドライバ247に、メモリサブシステム(例えば、メモリモジュール205)内のメモリ(例えば、221、…、223)にアクセスするように要求するだけでなく、デバイスドライバ247に、使用するメモリ(例えば、221、…、223、…、または225)内のページの管理に使用できる情報を提供する。一例では、提供される情報は、格納されたメタデータ320または322を含む。
一例では、ドライバ247は、メモリモジュール502(例えば、DIMM)内のメモリアドレス空間にアクセスするために使用されるメモリモードドライバである。ドライバ247は、どのページがDIMMの揮発性メモリにあるかをいつでも制御できる。1つのアプローチでは、例えば、メモリアドレス空間はゲストオペレーティングシステム243に公開される。このハイパーバイザ環境では、ゲストオペレーティングシステム243は、DIMMの不揮発性メモリ(例えば、NVRAM及びDRAM)の全記憶容量を見る。
一例では、DDR DRAM内にあるいくつかのページのみが、ホストオペレーティングシステム241を介してアクティブにページインされる。存在しないページへのゲストアクセスがある場合、ホストシステムのメモリ管理ユニット(MMU)のページフォールトパスは、ドライバ247をトリガーして、ページのロード(ページイン)を引き起こす。一例では、ページは制御レジスタを介してロードされる。ページが実際にDDR DRAMに存在すると、ドライバ247は(マッピングテーブル246を介して)MMUマッピングを設定できるため、ゲストアプリケーションはそのデータを直接読み書きできる。
一例では、ゲストのフロントエンドドライバとホストのバックエンドドライバは、メモリアドレス空間へのアクセスに関して通信する。一例では、ページが古くなっていると判断する場合(例えば、所定の閾値に基づいて頻繁に使用されていない場合)、DDRメモリアドレス空間に現在マップされているデータの一部をNVRAMメモリ(例えば、SRAMバッファを介して)にプッシュバックして他のページをページインするためにDRAMメモリ内のスペースを利用可能にするように要求される。バックエンドドライバ247は、DDR DRAMからNVRAMメモリにデータを移動するためのページアウト要求を通信する。
一実施形態では、バックエンドドライバ247は、メモリモードドライバとして動作する。ドライバ247がロードされるまで、メモリモジュール502のNVRAMメモリ容量にアクセスできない。メモリモードドライバとしてのこの動作中、ゲストオペレーティングシステム243はメモリを通常どおりに認識し、ドライバ247はページイン及びページアウト操作用にメモリモジュールにDRAMページを予約する。
ドライバ247は、NVRAMメモリをゲストオペレーティングシステム243に公開し、ページマッピングを維持する(例えば、マッピングテーブル246において)。例えば、ドライバ247は、現在DRAMにあるページとNVRAMメモリにあるページの間のマッピングを維持する。
一例では、ドライバ247は、現在DRAMに格納されている任意のページをマッピングするために、ホストシステムにメモリ管理ユニットマッピングテーブルを設定する。マップされたページの外部にアクセスしてページイン要求をトリガーする場合は、ゲストからのページフォールトパスを使用できる。ページアウト要求を実行して、DRAMのメモリ空間を維持することができる。
一実施形態では、動作はメモリモードに限定されない。ドライバ247は、NVRAMメモリがブロックモードストレージとして公開されているブロックモードドライバとしても動作できる。
一実施形態では、メモリモジュール502は、SRAMバッファ(図示せず)にあるページのリストを含むそれ自体のマッピングテーブルを維持する。ページがSRAMバッファに移動されると、メモリモジュール502は、ページイン完了信号をホストシステムに返すことができる。これらにより、ホストシステムがこれらの特定のページ(複数可)にアクセスするまでの待ち時間を短縮できる。ドライバ247は、そのマッピングが設定されるまで、ページイン要求が完了するまでホストがそのページ(複数可)にアクセスしないことを保証する。
一実施形態では、ドライバ247は、ページアウト操作を実施する。一例では、この操作はスレッドとしてトリガーされる。この操作は、空きページをDRAMメモリから交換し、有効なページのマッピングを変更する。
図6は、いくつかの実施形態による、アドレス空間内のプロセスの仮想アドレス範囲をコンピュータシステム内のメモリデバイス用の物理アドレスに関連付ける格納されたメタデータに基づいて、コンピュータシステムのアドレス空間内のプロセスのメモリを管理する方法を示す。例えば、図6の方法は、図1~3のシステムに実装することができる。
図6の方法は、ハードウェア(例えば、処理デバイス、回路、専用論理、プログラム可能な論理、マイクロコード、デバイスのハードウェア、集積回路など)、ソフトウェア(例えば、処理デバイスで実行される命令)、またはそれらの組み合わせを含むことができる処理論理によって実行することができる。いくつかの実施形態では、図6の方法は、少なくとも部分的に、1つまたは複数の処理デバイス(例えば、図3の処理デバイス310)によって実行される。
特定のシーケンスまたは順序で示されているが、別段の指定がない限り、プロセスの順序は変更することができる。したがって、図示された実施形態は例としてのみ理解されるべきであり、図示されたプロセスは異なる順序で実行することができ、いくつかのプロセスは並行して実行することができる。さらに、様々な実施形態では、1つまたは複数のプロセスを省略することができる。したがって、すべての実施形態ですべてのプロセスが必要とされるわけではない。他のプロセスフローも可能である。
ブロック601において、オペレーティングシステムは、アドレス空間にメモリを維持する。アドレス空間内のアドレスを使用して第1のメモリデバイス及び第2のメモリデバイスにアクセスすることを含めて、メモリにアクセスする。一例では、オペレーティングシステムは、図3の処理デバイス310上で実行される。一例では、第1のメモリデバイスは、DRAM304であり、第2のメモリデバイスは、NVRAM306である。一例では、第1のメモリデバイスは、NVRAM306であり、第2のメモリデバイスは、NANDフラッシュ308である。
ブロック603において、アドレス空間の第1のアドレス範囲を第1のメモリデバイスに関連付けるメタデータが格納される。メタデータは、アドレス空間の第2のアドレス範囲を第2のメモリデバイスにも関連付ける。一例では、格納されたメタデータは、図3のメタデータ320及び/または322である。一例では、第1のアドレス範囲はアドレス範囲324であり、第2のアドレス範囲はアドレス範囲326である。
ブロック605において、コンピュータシステムで実行されているプロセスは、格納されたメタデータに基づいて管理される。プロセスには、第1のプロセスと第2のプロセスが含まれる。第1のプロセスのデータは第1のメモリデバイスに格納され、第2のプロセスのデータは第2のメモリデバイスに格納される。一例では、第1のプロセスのデータは、アドレス範囲324に格納され、第2のプロセスのデータは、アドレス範囲326に格納される。一例では、第1のプロセスのデータは、メタデータ320、322のアドレス範囲に格納され、DRAM304の物理メモリストレージに対応する。一例では、コンピュータシステムは、コンピュータシステム120または300である。
一実施形態では、方法は、コンピュータシステムの処理デバイス(例えば、図3の処理デバイス310)によって、アドレス空間内のメモリにアクセスすることであって、コンピュータシステムのメモリデバイスは、アドレス空間のアドレスを使用する処理デバイスによりアクセスされる、アクセスすること、アドレス空間の第1のアドレス範囲を第1のメモリデバイス(例えば、DRAM304)に関連付け、アドレス空間の第2のアドレス範囲を第2のメモリデバイス(例えば、NVRAM306)に関連付けるメタデータ(例えば、メタデータ320及び/または322)を格納することであって、第1のメモリデバイスの第1の待ち時間は、第2のメモリデバイスの第2の待ち時間とは異なる、格納すること、及び格納されたメタデータに基づいて、コンピュータシステム上で実行されているアプリケーション(例えば、アプリケーション312)に第1のアドレス範囲を割り当てること、を含む。
一実施形態では、第1のアドレス範囲をアプリケーションに割り当てることは、アプリケーションによる要求に応答して実行される。
一実施形態では、方法はアプリケーションによる第1の要求に応答して、第1の待ち時間が第2の待ち時間よりも大きいというインディケーションを提供すること、インディケーションに基づいてアプリケーションによって行われた第2の要求を受信すること、第2の要求の受信に応答して、第2のアドレス範囲をアプリケーションに割り当てることを、さらに含む。
一実施形態では、第1の待ち時間は第2の待ち時間よりも短く、メタデータは第1のメモリデバイスに格納される。
一実施形態では、コンピュータシステムは、メモリバスを使用して、第1のメモリデバイス及び第2のメモリデバイスにアクセスし、メタデータは、第2のメモリデバイスに格納される。
一実施形態では、メタデータは、第1のメモリデバイスに格納され、方法は、メタデータの少なくとも一部をバッファ(例えば、トランスレーションルックアサイドバッファ318)にロードすることをさらに含み、処理デバイスは、バッファをクエリし、第1のアドレス範囲の仮想アドレスに対応する物理アドレスを決定する。
一実施形態では、コンピュータシステムはシステムオンチップデバイスであり、バッファはトランスレーションルックアサイドバッファである。
一実施形態では、方法は、アプリケーションに、第1のメモリデバイス及び第2のメモリデバイスのメモリ特性を提供することをさらに含み、第1のアドレス範囲をアプリケーションに割り当てることは、提供されたメモリ特性に基づいてアプリケーションによって行われた要求に応答することである。
一実施形態では、方法は、アプリケーションから要求された待ち時間を受信することをさらに含み、第1のアドレス範囲をアプリケーションに割り当てることは、要求された待ち時間にさらに基づく。
一実施形態では、方法は、アプリケーションに関連する優先度を決定することをさらに含み、第1のアドレス範囲をアプリケーションに割り当てることは、優先度にさらに基づく。
一実施形態では、第1の待ち時間は第2の待ち時間よりも短く、第1のアドレス範囲をアプリケーションに割り当てる前に、アプリケーションは第2のアドレス範囲に割り当てられ、第1のアドレス範囲をアプリケーションに割り当てることは、アプリケーションに関連する優先度の増加を決定することに応答して実行される。
一実施形態では、アプリケーションに関連する優先度の増加を決定することは、アドレス空間におけるアプリケーションによるデータアクセスに関する1つまたは複数の観察に基づく。
一実施形態では、方法は、処理デバイスによって、メモリデバイスに関連する待ち時間を決定することをさらに含み、メタデータを格納することは、決定された待ち時間をさらに格納することを含む。
一実施形態では、システムは、第1のメモリデバイス、第2のメモリデバイス、少なくとも1つの処理デバイス、及び少なくとも処理デバイスに、オペレーティングシステムによって維持されるアドレス空間のメモリにアクセスすることであって、アクセスすることがアドレス空間内のアドレスを使用した第1のメモリデバイスと第2のメモリデバイスへのアクセスを含む、アクセスすること、アドレス空間の第1のアドレス範囲を第1のメモリデバイスに関連付け、アドレス空間の第2のアドレス範囲を第2のメモリデバイスに関連付けるメタデータを格納すること、及び格納されたメタデータに基づいて、オペレーティングシステムによって、第1のプロセス及び第2のプロセスを含むプロセスを管理することであって、第1のプロセスのデータは第1のメモリデバイスに格納され、第2のプロセスのデータは第2のメモリデバイスに格納される管理すること、を命令するように構成された命令を含むメモリを含む。
一実施形態では、第1のプロセスは第1の優先度を有し、第2のプロセスは第2の優先度を有し、第1のメモリデバイスは、第1の優先度が第2の優先度よりも高いとの決定に応答して、第1のプロセスのデータを格納するように選択される。
一実施形態では、第1のプロセスは、第1のアプリケーションに対応する。命令はさらに、データを格納するために使用するメモリのタイプを示す第1のアプリケーションからの要求を受信するように少なくとも1つの処理デバイスに指示するように構成され、第1のメモリデバイスは、示されたタイプのメモリに基づいて、第1のプロセスのデータを格納するために選択される。
一実施形態では、システムは、メタデータを格納するためのバッファをさらに含み、オペレーティングシステムは、第1のプロセスから第1のアドレス範囲の仮想アドレスを受け取り、バッファにアクセスして、仮想アドレスに対応する第1のメモリデバイスの物理アドレスを決定する。
一実施形態では、第1のメモリデバイスの読み取り待ち時間は、第2のメモリデバイスの読み取り待ち時間よりも短く、命令は、メタデータを第1のメモリデバイスに格納するように少なくとも1つの処理デバイスに指示するようにさらに構成される。
一実施形態では、システムは、第1のプロセスのために格納されたデータにアクセスするときに、第1のアドレス範囲の仮想アドレスを第1のメモリデバイスの物理アドレスにマッピングするように構成されたメモリ管理ユニット(例えば、メモリ管理ユニット316)をさらに備える。
一実施形態では、非一時的な機械可読記憶媒体は、少なくとも1つの処理デバイスで実行されるとき、少なくとも1つの処理デバイスに、少なくとも、アドレスのメモリにアクセスすることであって、コンピュータシステムのメモリデバイスは、アドレス空間内のアドレスを使用して、少なくとも1つの処理デバイスによってアクセスされる、アクセスすること、アドレス空間の第1のアドレス範囲を第1のメモリデバイスに関連付け、アドレス空間の第2のアドレス範囲を第2のメモリデバイスに関連付けるメタデータを格納すること、コンピュータシステム上で実行されるアプリケーションに、第1のメモリデバイスの第1の待ち時間が第2のメモリデバイスの第2の待ち時間よりも小さいことを示す第1のデータを提供すること、アプリケーションに第1のデータを提供することに応答して、アプリケーションに関連する第2のデータが第1のメモリデバイスに格納されるという要求をアプリケーションから受信すること、第2のデータを保存するというアプリケーションからの要求に応答して、格納されたメタデータをクエリして結果を提供すること、及び結果に基づいて、第2のデータを第1のメモリデバイスに格納すること、を引き起こす命令を格納する。
図7は、本開示の実施形態が動作することができる例示的なコンピュータシステムのブロック図である。図7は、コンピュータシステム600の例示的なマシンを示しており、その中で、マシンに、本明細書で論じられる方法論のいずれか1つまたは複数を実行させるための命令のセットを実行することができる。いくつかの実施形態では、コンピュータシステム600は、メモリサブシステム(例えば、図1のメモリサブシステム110)を含む、結合される、または利用するホストシステム(例えば、図1のコンピュータシステム120)に対応することができる、またはメタデータ構成要素113の動作を実行するために使用することができる(例えば、図1~6を参照して説明したメタデータ構成要素113に対応する動作を実行するための命令を実行するため)。代替の実施形態では、マシンを、LAN、イントラネット、エキストラネット、及び/またはインターネット内の他のマシンに接続する(例えば、ネットワーク接続する)ことができる。マシンは、クライアントサーバネットワーク環境内のサーバまたはクライアントマシンの資格で、ピアツーピア(または分散)ネットワーク環境内のピアマシンとして、またはクラウドコンピューティングインフラストラクチャまたは環境内のサーバまたはクライアントマシンとして動作することができる。
マシンは、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、パーソナルデジタルアシスタント(PDA)、携帯電話、ウェブアプライアンス、サーバ、ネットワークルータ、スイッチもしくはブリッジ、モノのインターネット(IOT)デバイス、またはそのマシンによって講じられるアクションを指定する命令のセットを(連続してまたは別の方法で)実行できる任意のマシンである場合がある。さらに、単一のマシンが例示されるが、用語「マシン」はまた、本明細書で考察される方法論のうちの任意の1つまたは複数の全てあるいは一部を実行するために、個々でまたは共同して命令のセット(または複数のセット)を実行するマシンの任意の集まりを含めるように利用されるべきである。
例示的なコンピュータシステム600は、処理デバイス602、メインメモリ604(例えば、読み出し専用メモリ(ROM)、フラッシュメモリ、ダイナミックランダムアクセスメモリ(DRAM)、例えば同期DRAM(SDRAM)またはラムバスDRAM(RDRAM)、静的ランダムアクセスメモリ(SRAM)など)、及びデータストレージシステム618を含んでおり、これらは、バス630(多重バスを含むことができる)を介して互いに通信する。
処理デバイス602は、マイクロプロセッサ、中央処理装置などのような1つ以上の汎用処理デバイスを表すことができる。より詳細には、処理デバイスは、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、または他の命令セットを実施するプロセッサ、または命令セットの組み合わせを実施するプロセッサとすることができる。処理デバイス602はまた、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサなどのような、1つ以上の専用処理デバイスとすることができる。処理デバイス602は、本明細書で論じられる動作及びステップを遂行するための命令626を実行するように構成することができる。コンピュータシステム600は、ネットワーク620を介して通信するためのネットワークインターフェイスデバイス608を、さらに含むことができる。
データストレージシステム618は、本明細書で説明される方法論または機能のうちの任意の1つ以上を具体化する命令626またはソフトウェアの1つまたは複数のセットが記憶される機械可読記憶媒体624(コンピュータ可読媒体としても知られる)を含むことができる。命令626はまた、メインメモリ604内または処理デバイス602内に、コンピュータシステム600による当該処理デバイスの実行中に完全にまたは少なくとも部分的に常駐することができ、メインメモリ604及び/または処理デバイス602はまた、機械可読記憶媒体を構成する。機械可読記憶媒体624、データストレージシステム618、及び/またはメインメモリ604は、図1のメモリサブシステム110に対応することができる。
一実施形態では、命令626は、メタデータ構成要素113(例えば、図1~6を参照して説明されたメタデータ構成要素113)に対応する機能を実装するための命令を含む。機械可読記憶媒体624は単一の媒体であるように一例の実施形態には示されているが、用語「機械可読記憶媒体」は、命令の1つまたは複数のセットを格納する単一の媒体または複数の媒体を含むように利用されるべきである。
メモリタイプへのページテーブルフック
次に、仮想ページの仮想アドレスを異なるメモリタイプのメモリデバイス内の物理アドレスにマッピングするページテーブルエントリに関連する様々な実施形態を以下に説明する。以下の説明の一般性は、上記の様々な実施形態によって制限されない。
次に、仮想ページの仮想アドレスを異なるメモリタイプのメモリデバイス内の物理アドレスにマッピングするページテーブルエントリに関連する様々な実施形態を以下に説明する。以下の説明の一般性は、上記の様々な実施形態によって制限されない。
データを格納するために異なるタイプの物理メモリデバイスを使用するコンピュータシステムの以前のメモリ管理ユニットでは、MMUが様々な仮想ページのメモリが異なるタイプのメモリデバイスに物理的にマッピングされる方法を認識しないという技術的な問題が存在する(例えば、仮想ページがDRAM対NVRAMまたはフラッシュメモリの物理アドレスにマップされているかどうか)。例えば、MMUは、各仮想ページが様々なタイプのメモリデバイスにどのようにマップされるかに関するデータを格納しない。さらに、メモリタイプの無知は1つの制限にすぎない。物理アドレスが異なれば、同種のメモリシステム(NUMAアーキテクチャなど)でもアクセス特性(MMUは認識しない)に違いが生じる可能性がある。
一例では、プロセスの仮想ページが、他のメモリデバイス(DRAMなど)よりも大幅に遅い物理メモリデバイス(フラッシュメモリなど)にマップされている場合、プロセスは、データに迅速にアクセスできないために強制的に低速で実行される可能性がある。例えば、プロセスを続行するために、メインメモリからの仮想ページが必要になる場合がある。必要な仮想ページが実際に低速の物理メモリデバイスに格納されている場合、仮想ページへのアクセスを待機している間、プロセスは大幅に遅れる。
以下に説明する様々な実施形態は、上記の技術的問題の1つまたは複数に対する技術的解決策を提供する。一実施形態では、方法は、少なくとも1つの処理デバイス(例えば、CPU及び/またはMMU)によって、仮想ページを第1のメモリタイプと関連付けること、仮想ページの仮想アドレスを第1のメモリタイプの第1のメモリデバイス内の物理アドレスにマップするためのページテーブルエントリを生成すること、及び、ページテーブルエントリを使用して、第1のメモリデバイスの物理アドレスに仮想ページを格納することを含む。一例では、ページテーブルエントリは、メモリ管理ユニット及び/またはマイクロプロセッサのキャッシュにコピーされている。一例では、ページテーブルエントリは、中央処理装置のメインメモリに仮想ページを格納するときにメモリ管理ユニットによって使用されるトランスレーションルックアサイドバッファ(TLB)にコピーされている。
一実施形態では、モバイルデバイスのオペレーティングシステムは、メモリタイプに関連付けられた仮想ページの位置を管理する。例えば、メモリタイプは、DRAM、NVRAM、またはNANDフラッシュである。仮想ページが特定のメモリタイプに関連付けられているとき、オペレーティングシステムは、仮想ページの論理アドレスを対応するメモリタイプにマップするためのページテーブルエントリを生成する。プロセッサは、メモリタイプを変更することにより、メモリページを別のタイプのメモリに転送するように要求できる。
一例では、コンピューティングデバイス上で実行されるアプリケーションまたは他のソフトウェアは、アプリケーションまたは他のソフトウェアが処理に使用することを望むメモリタイプを識別する情報をオペレーティングシステムに提供した。それに応じて、オペレーティングシステムは、アプリケーションまたはソフトウェアの1つまたは複数の仮想ページを、アプリケーションまたはソフトウェアによって要求された識別されたメモリタイプに対応する物理メモリデバイスに関連付ける。例えば、アプリケーションからのNVRAMメモリタイプの要求に応答して、仮想ページがアプリケーションに割り当てられる。割り当てられた仮想ページに対応する物理アドレスは、NVRAMデバイス(クロスポイントメモリデバイスなど)にデータを格納するために使用される。
図8は、いくつかの実施形態による、メモリバス812上のメモリデバイスにアクセスするために1つまたは複数のページテーブル804、806を使用する例示的なコンピュータシステム800を示す。メモリデバイスは、メモリサブシステム802のDRAM304、NVRAM306、及びNANDフラッシュ308を含むことができる。
コンピュータシステム800は、図3のコンピュータシステム300の例である。メモリサブシステム802は、図3のメモリサブシステム302の例である。メモリバス812は、図2のメモリバス203の例である。
オペレーティングシステム808は、処理デバイス310上で実行される。オペレーティングシステム808は、処理デバイス310のメインメモリを様々なアプリケーションに割り当てる。これらのアプリケーションには、メモリタイプ314を有するアプリケーション312が含まれる。一例では、メモリタイプ314は、アプリケーション312のコードに埋め込まれている。一例では、メモリタイプ314は、異なるコンピューティングデバイス(図示せず)によって処理デバイス310に提供される。一例では、異なるコンピューティングデバイスは、メモリ割り当てのためのアプリケーション312による要求に関連してメモリタイプ314を提供するサーバである。
オペレーティングシステム808は、メモリ管理ユニット(MMU)316を使用してコンピュータシステム800のメモリを管理する。一実施形態では、アプリケーション312を含むアプリケーションに関連付けられた仮想ページは、メモリサブシステム802に存在する物理メモリにマッピングされる。MMU316は、ページテーブルエントリにアクセスして、アプリケーションがアクセスする必要のある仮想ページに対応するメモリ内の物理アドレスを決定する。
ページテーブルエントリは、ページテーブル804及び/またはページテーブル806に格納することができる。一例では、MMU316は、仮想ページに対応する仮想アドレスを提供することによって、ページテーブル804、806をクエリする。クエリの結果は、メモリデバイス(DRAM304など)の物理アドレスである。
一実施形態では、ページテーブル804は、DRAM304に格納されている。一実施形態では、ページテーブル806は、コンピュータシステム800のメモリに格納される。一例では、ページテーブルエントリがコンピュータシステム800に存在しないとき、MMU316はページテーブル804にアクセスする。一例では、ページテーブルエントリは、ページテーブル804とページテーブル806との間で分割される。一例では、ページテーブル806のページテーブルエントリは、より高い優先度を有するプロセスに対応する。一例では、処理デバイス310は、アプリケーションに対応する処理デバイス310によって受信されたメモリタイプに基づいて、アプリケーションに対応するプロセスに優先度をアサインする。
一実施形態では、MMU316は、メモリ管理のためにページテーブル804とメタデータ322の両方を使用する。一例では、MMU316は、メタデータ322を使用して、仮想ページに対応するデータを記憶するためのメモリデバイスを選択する。選択されたメモリデバイスは、要求されたメモリタイプ(例えば、メモリタイプ314)に対応することができる。一実施形態では、MMU316は、メモリ管理のためにページテーブル806とメタデータ320の両方を使用する。
一実施形態では、ページテーブル804、806からのページテーブルエントリのいくつかは、トランスレーションルックアサイドバッファ(TLB)810にコピーされる。仮想アドレスを物理アドレスにマッピングするとき、MMU316は最初に仮想アドレスに対応するページテーブルエントリのためのTLB810をチェックする。TLB810のページテーブルエントリには、メタデータ320、322からコピーされたデータを含めることもできる。
一実施形態では、アプリケーション312は、処理デバイス310によるメモリの割り当てを要求する。それに応答して、オペレーティングシステム808は、MMU316を使用してページテーブルエントリを生成し、アプリケーション312の仮想ページの仮想アドレスをメモリデバイス内の物理アドレスにマッピングする。メモリデバイスは、メモリタイプ314のものとして選択される。一実施形態では、メタデータ322は、メモリデバイスを選択するために使用される。一実施形態では、ページテーブルエントリを生成した後、ページテーブルエントリのコピーがTLB810に格納され、及び/またはメタデータ320、322が更新される。
一実施形態では、処理デバイス310は、アプリケーション312に関連する変更を決定する。一例では、変更は、アプリケーション312によって実行される1つまたは複数の機能の優先度の変更である。一例では、変更は、セキュリティコンテキストなど、アプリケーション312に関連するコンテキストの変更である。
変更を決定することに応答して、オペレーティングシステム808は、アプリケーション312の1つまたは複数の仮想ページを新しいメモリタイプに関連付ける。例えば、アプリケーション312のメモリタイプは、アプリケーション312のより高い優先度を決定することに応答して、NVRAMからDRAMに変更することができる。新しいメモリタイプへの変更に応答して、ページテーブルエントリが更新され、仮想ページの仮想アドレスが新しいメモリタイプの新しいメモリデバイスの物理アドレスにマップされる。次に、MMU316は、更新されたページテーブルエントリを使用して、現在使用されているメモリデバイスから新しいメモリデバイスに仮想ページを転送する。
一実施形態では、コンピュータシステム800及び/または処理デバイス310は、システムオンチップ(SoC)である。一例では、SoCは、コンピューティングデバイスの任意の2つ以上の構成要素を統合する集積回路またはチップであるか、またはそれらを含むことができる。2つ以上の構成要素は、中央処理装置(CPU)、グラフィックス処理デバイス(GPU)、メモリ、入出力ポート、及びセカンダリストレージのうちの少なくとも1つまたは複数を含むことができる。例えば、SoCには、CPU、GPU、グラフィックス及びメモリインターフェイス、ハードディスク、USB接続、ランダムアクセスメモリ、読み取り専用メモリ、セカンダリストレージ、またはそれらの任意の組み合わせを単一の回路ダイに含めることができる。また、プロセッサチップがSoCである場合、SoCは少なくともCPU及び/またはGPUを含むことができる。
SoCの一例では、2つ以上の構成要素を単一の基板またはマイクロチップ(チップ)に埋め込むことができる。一般に、SoCは、SoCがそのすべての構成要素を単一の集積回路に統合するという点で、従来のマザーボードベースのアーキテクチャとは異なるが、一方、マザーボードは取り外し可能または交換可能な構成要素を収納して接続する。2つ以上の構成要素が単一の基板またはチップに統合されているため、SoCは、同等の機能を備えたマルチチップ設計よりも消費電力が少なく、占有面積もはるかに少なくなる。いくつかの実施形態では、本明細書で説明するメモリシステムまたはサブシステムは、モバイルコンピューティングデバイス(スマートフォンなど)、組み込みシステム、及びモノのインターネット(IoT)デバイスのSoCに接続するか、またはその一部にすることができる。一実施形態では、メモリサブシステム802は、S oCであるか、またはSoCに含まれることができる。また、メモリサブシステム802がSoCである場合、SoCは、少なくともデータ処理ユニットを含むことができる。
図9は、いくつかの実施形態による、ページテーブルエントリ902、904を有する例示的なページテーブル900を示す。各ページテーブルエントリ902、904は、仮想アドレス、対応する物理アドレス、及びメモリタイプを含む。一例では、メモリタイプはメモリタイプ314である。一例では、メモリタイプ314は、プロセスへのメインメモリの新しい割り当てまたは割り当ての変更に応答してページテーブルエントリを更新するために使用される。様々な実施形態では、各エントリ902、904は、プロセス識別子、使用状況データ、及び/またはメモリデバイス識別子をさらに含み得る。ページテーブル900は、ページテーブル804または806の例である。
一実施形態では、各ページテーブルエントリについて、仮想アドレスは、アプリケーション312などのアプリケーションの仮想ページに対応する。物理アドレスは、メモリサブシステム802のメモリデバイス内の場所に対応する。メモリタイプは、物理アドレスのメモリデバイスのタイプに対応している。
一実施形態では、各ページテーブルエントリのプロセス識別子は、仮想アドレスで仮想ページを使用している処理デバイス310上で実行されているプロセスを識別するために使用される。例えば、プロセス識別子は、コンピュータシステム800で実行されている各プロセスの一意の識別子である。
一実施形態では、各ページテーブルエントリの使用状況データは、ページテーブルエントリの仮想アドレスで仮想ページに格納されたデータに関連するアクセスまたは他の使用法に関するデータに対応することができる。一例では、使用状況データは、仮想ページの使用パターンに関連している。一例では、使用パターンは、仮想ページ内のデータへのアクセスの頻度である。一例では、アクセスの頻度は、読み取り及び/または書き込みアクセスのためであり得る。一例では、使用状況データは、仮想ページ内のデータの最後の使用時間に関連している。
一実施形態では、各ページテーブルエントリは、メモリデバイス識別子を含むことができる。一例では、メモリデバイス識別子は、仮想アドレスに対応するデータが格納されている物理メモリデバイスを一意に識別する。一例では、メモリデバイス識別子は、DRAM304またはNVRAM306に一意に対応する。
一実施形態では、各ページテーブルエントリは、メタデータ320及び/または322の少なくとも一部をさらに含むことができる。一例では、含まれるメタデータは、物理メモリデバイスのアドレス範囲である可能性がある。
図10は、いくつかの実施形態による、仮想ページの仮想アドレスを異なるメモリタイプのメモリデバイス内の物理アドレスにマッピングするためのページテーブルエントリを生成するための方法を示す。例えば、図10の方法は、図8のシステム、または図7のコンピュータシステム600に実装することができる。
図10の方法は、ハードウェア(例えば、処理デバイス、回路、専用論理、プログラム可能な論理、マイクロコード、デバイスのハードウェア、集積回路など)、ソフトウェア(例えば、処理デバイスで実行される命令)、またはそれらの組み合わせを含むことができる処理論理によって実行することができる。いくつかの実施形態では、図10の方法は、少なくとも部分的に、1つまたは複数の処理デバイス(例えば、図8の処理デバイス310)によって実行される。
特定のシーケンスまたは順序で示されているが、別段の指定がない限り、プロセスの順序は変更することができる。したがって、図示された実施形態は例としてのみ理解されるべきであり、図示されたプロセスは異なる順序で実行することができ、いくつかのプロセスは並行して実行することができる。さらに、様々な実施形態では、1つまたは複数のプロセスを省略することができる。したがって、すべての実施形態ですべてのプロセスが必要とされるわけではない。他のプロセスフローも可能である。
ブロック1001において、仮想ページは、第1のメモリタイプに関連付けられている。一例では、第1のメモリタイプはDRAM、NVRAM、またはフラッシュメモリである。一例では、仮想ページはアプリケーション312に対応する。一例では、仮想ページは、処理デバイス310によって使用されるメインメモリの割り当ての要求に応答して、アプリケーション312に割り当てられたメモリに対応する。
ブロック1003で、ページテーブルエントリが生成される。ページテーブルエントリは、仮想ページの仮想アドレスを、第1のメモリタイプのメモリデバイスの物理アドレスにマップする。一例では、ページテーブルエントリは、ページテーブル804または806に存在する。一例では、メモリデバイスは、DRAM304、NVRAM306、またはNANDフラッシュ308である。
ブロック1005で、ページテーブルエントリを使用して、仮想ページはメモリデバイスの物理アドレスに格納される。一例では、メモリ管理ユニット316は、トランスレーションルックアサイドバッファ810にキャッシュされたページテーブルエントリを使用して仮想ページを格納する。
一実施形態では、方法は、少なくとも1つの処理デバイス(例えば、処理デバイス310及び/またはメモリ管理ユニット316)によって、仮想ページを第1のメモリタイプと関連付けること、仮想ページの仮想アドレスを第1のメモリタイプの第1のメモリデバイス(例えば、DRAM304)内の物理アドレスにマップするためのページテーブルエントリ(例えば、ページテーブルエントリ902)を生成すること、及びページテーブルエントリを使用して、第1のメモリデバイスの物理アドレスに仮想ページを格納することを含む。
一実施形態では、方法は、少なくとも1つの処理デバイスによって、仮想ページを第2のメモリタイプに関連付けること、ページテーブルエントリを更新して、仮想ページの仮想アドレスを、第2のメモリタイプの第2のメモリデバイス(例えば、NVRAM306)内の物理アドレスにマッピングすること、及び更新されたページテーブルエントリを使用して、仮想ページを第1のメモリデバイスから第2のメモリデバイスに転送することをさらに含む。
一実施形態では、オペレーティングシステム(例えば、オペレーティングシステム808)は、少なくとも1つの処理デバイス上で実行され、ページテーブルエントリの生成は、仮想ページを第1のメモリタイプに関連付けることに応答して、オペレーティングシステムによって実行される。
一実施形態では、仮想ページを第1のメモリタイプに関連付けることは、オペレーティングシステムによってアプリケーション(例えば、アプリケーション312)から受信された要求に応答して実行される。
一実施形態では、第1のメモリタイプ(例えば、メモリタイプ314)は、アプリケーションからの要求とともに提供される。
一実施形態では、方法は、コンピューティングデバイスのオペレーティングシステムによって、メモリデバイスに格納された仮想ページの物理的場所を管理することをさらに含み、メモリデバイスは、第1のメモリデバイス及び第2のメモリタイプの第2のメモリデバイスを含み、第1のメモリデバイスの待ち時間は、第2のメモリデバイスの待ち時間よりも短い。
一実施形態では、待ち時間以外に、及び/または待ち時間に加えて、第1のメモリデバイスと第2のメモリデバイスとの間に差異が存在し得る。一例では、第1のメモリデバイスの電力及び/または性能特性は、第2のメモリデバイスとは異なり、これはより低い電力のメモリ及び/またはより耐久性のあるメモリを有する。異なるメモリデバイスまたはタイプまたはメモリの間のメモリ特性の違いの例には、性能、電力、耐久性、エラー率、及び/またはそれらの組み合わせが含まれ得る。場合によっては、例えば、これらの違いは同じメモリタイプのデバイス間に存在する可能性がある(例えば、プロセスのデータを格納するために使用される同じメモリタイプの異なるチップごとにエラー率が異なる)。
一実施形態では、第1のメモリタイプはダイナミックランダムアクセスメモリであり、第2のメモリタイプは不揮発性ランダムアクセスメモリまたはフラッシュメモリである。
一実施形態では、方法は、オペレーティングシステムによって、少なくとも1つの処理デバイス上で実行されているアプリケーションを監視すること、及び監視に基づいて、ページテーブルエントリを更新して、仮想ページの仮想アドレスを、第2のメモリタイプの第2のメモリデバイス内の物理アドレスにマッピングすることをさらに含む。
一実施形態では、方法は、少なくとも1つの処理デバイスに関連する動作のコンテキストを決定すること、決定されたコンテキストに基づいて、第2のメモリタイプを選択すること、及び第2のメモリタイプを選択することに応答して、ページテーブルエントリを更新して、仮想ページの仮想アドレスを、第2のメモリタイプの第2のメモリデバイス内の物理アドレスにマッピングすることをさらに含む。
一実施形態では、方法は、少なくとも1つの処理デバイスによって、仮想ページを第2のメモリタイプに関連付けること、仮想ページを第2のメモリタイプに関連付けることに応答して、トランスレーションルックアサイドバッファ(例えば、TLB810)内のマッピングデータを更新すること、及びトランスレーションルックアサイドバッファ内の更新されたマッピングデータへのアクセスに基づくメモリ管理ユニットによって、仮想ページを第1のメモリデバイスから第2のメモリデバイスに転送することをさらに含む。
一実施形態では、プロセスは少なくとも1つの処理デバイス上で実行されており、ページテーブルエントリは、仮想ページを使用する第1のプロセスのプロセス識別子を含む。
一実施形態では、ページテーブルエントリは、少なくとも1つの処理デバイス上で実行されている1つまたは複数のアプリケーションによる使用パターンに関するデータを含む。
一実施形態では、使用パターンに関するデータは、使用頻度または最後の使用時間のうちの少なくとも1つである。
一実施形態では、システムは、第1のメモリデバイス、異なるメモリタイプのメモリデバイスの物理アドレスに仮想アドレスをマップするページテーブルエントリを格納するページテーブルであって、メモリデバイスが第1のメモリデバイスを含む、ページテーブル、少なくとも1つの処理デバイス、及び仮想ページの第1のメモリタイプへの関連付けを決定すること、第1のメモリデバイスが第1のメモリタイプに対応することを決定すること、及び仮想ページの仮想アドレスを第1のメモリデバイスの第1の物理アドレスにマップするためのページテーブルエントリを生成すること、を少なくとも1つの処理デバイスに命令するように構成された命令を含むメモリ、を含む。
一実施形態では、少なくとも1つの処理デバイスは、メモリデバイスに格納されたデータを有するメインメモリを使用し、仮想ページの第1のメモリタイプへの関連付けを決定することは、メインメモリの割り当てのアプリケーションによる要求に応答して実行される。
一実施形態では、命令は、少なくとも1つの処理デバイスに、メインメモリ内のアドレス範囲をメモリデバイス内の物理アドレスに関連付けるメタデータ(例えば、メタデータ320、322)を格納することを命令するようにさらに構成され、第1のメモリデバイスが第1のメモリタイプに対応することを決定することは、格納されたメタデータに基づく。
一実施形態では、命令は、ページテーブルエントリを使用して、第1のメモリデバイスの第1の物理アドレスに仮想ページを格納するように少なくとも1つの処理デバイスに命令するようにさらに構成される。
一実施形態では、システムは、メモリ管理ユニット(例えば、メモリ管理ユニット316)及びトランスレーションルックアサイドバッファをさらに含み、命令は、少なくとも1つの処理デバイスに、仮想ページに関連付けられたメモリタイプの第1のメモリタイプから第2のメモリタイプへの変更に基づくトランスレーションルックアサイドバッファのマッピングデータを更新すること、及び更新されたマッピングデータに基づいて、メモリ管理ユニットによって、仮想ページを第1のメモリデバイスから第2のメモリタイプの第2のメモリデバイスに転送することを命令するようにさらに構成される。
一実施形態では、メモリタイプの変更は、少なくとも1つの処理デバイス上で実行されるアプリケーションによる要求に応答して、またはプロセスまたはアプリケーションの優先度が変更した少なくとも1つの処理デバイスによる決定に応答して、実行される。
一実施形態では、非一時的な機械可読記憶媒体は、少なくとも1つの処理デバイスで実行されるとき、少なくとも1つの処理デバイスに、少なくとも、仮想ページを第1のメモリタイプに関連付けること、仮想ページの仮想アドレスを、第1のメモリタイプの第1のメモリデバイス内の物理アドレスにマップするためのページテーブルエントリを生成すること、及びページテーブルエントリを使用して、第1のメモリデバイスの物理アドレスに仮想ページを格納することを引き起こす命令を格納する。
名前空間へのデータのバインド
次に、異なるメモリタイプの物理メモリを有するメモリシステム内の名前空間にデータをバインドすることに関連する様々な実施形態を以下に説明する。以下の説明の一般性は、上記の様々な実施形態によって制限されない。
次に、異なるメモリタイプの物理メモリを有するメモリシステム内の名前空間にデータをバインドすることに関連する様々な実施形態を以下に説明する。以下の説明の一般性は、上記の様々な実施形態によって制限されない。
以前のメモリシステムでは、メインメモリはオペレーティングシステムによってアプリケーションにアクセス可能にされ、単一の論理アドレス空間から(例えば、アドレス空間内の仮想アドレスから)割り当てられる。特に、オペレーティングシステムは、アプリケーションがいずれかのマッピングコントロールにアクセスできるようにしないため、アプリケーションは、データの格納に使用されるメモリの種類を制御できない。代わりに、オペレーティングシステム及び/またはプロセッサは、ページテーブルとトランスレーションルックアサイドバッファを介してマッピングを制御する。ページテーブルは、コンピュータシステムのメモリデバイス内の論理アドレスのページから物理メモリユニットのページへのマッピングを定義する。ページテーブルの合計サイズは比較的大きい。したがって、ほとんどのページテーブルはメモリ(例えば、メインメモリのDRAM)に格納される。物理メモリアドレスを見つけるために現在使用されているページテーブルのデータの一部は、プロセッサ/メモリコントローラのトランスレーションルックアサイドバッファにキャッシュされる。
以前のメモリシステムの前述の状況は、データを格納する実際の物理メモリデバイスの待ち時間が大きいため、アプリケーションが特定のデータにタイムリーにアクセスできないという技術的な問題を引き起こす。したがって、アプリケーションの実行が長期間延期され得る。場合によっては、この遅れにより、タイムリーな応答またはその他のアクションを必要とするシステムの障害が発生する可能性がある。例えば、リアルタイム制御システムは、メインメモリからのデータアクセスが遅いために失敗する可能性がある。一例では、自動運転車のナビゲーションの制御は、重要なデータが格納されているメインメモリの部分の過度の待ち時間のために失敗する可能性がある。
アプリケーションが特定の物理メモリデバイスへのメインメモリ使用量のマッピングを制御できないことも、アプリケーションがより高い信頼性を持つメモリを選択することを妨げる。これにより、メモリの機能障害(例えば、障害率の高い物理メモリデバイスからのデータアクセスの障害)が原因で重要なデータが失われる可能性があるという技術的な問題が発生する。
以下に説明する様々な実施形態は、上記の技術的問題の1つまたは複数に対する技術的解決策を提供する。一実施形態では、アプリケーションは、データが格納されるメモリタイプを指定することによって、ランダムメモリアクセスのためにオペレーティングシステムによって使用される物理メモリデバイスへのマッピングを管理する。アプリケーションは、オペレーティングシステムを使用してメモリの一部を割り当て(例えば、アプリケーションからオペレーティングシステムへの要求に基づいて)、メモリユニットのメモリアドレスに基づいて指定されたメモリタイプのメモリユニットを使用する。一例では、オペレーティングシステムは、指定されたメモリタイプに対応する仮想メモリアドレス範囲をアプリケーションに通知する。
一実施形態では、データへのアクセスは、オペレーティングシステムによって管理される名前空間テーブルを介してオペレーティングシステムによって実行される。一実施形態では、名前空間テーブルは、メインメモリ内のメモリアドレスに名前をアサインする。一実施形態では、名前は、アプリケーションによって使用されるメインメモリのアドレス空間内の仮想アドレスの範囲にアサインされる。一実施形態では、名前空間は、名前空間識別子によって識別される(例えば、任意の識別子、名前空間A、名前空間B、及び名前空間Cを使用し、各識別子は、異なるタイプのメモリに関連付けられる)。
一実施形態では、名前空間は、メモリアクセスに使用される。各名前空間は、メモリアドレスが定義されているメモリユニットのセットへの名前付き論理的参照である。アプリケーションは名前空間からメモリを割り当てる。オペレーティングシステムは、名前空間を特定のタイプのメモリ(DRAM、NVRAM、NANDフラッシュなど)にバインド及び/または再バインドするためにアプリケーションから呼び出すことができるサービスを提供する。名前空間がメモリのタイプにバインドされるとき、オペレーティングシステムは、1つ以上のページテーブルを調整して、名前空間の論理メモリアドレスをコンピュータシステムの特定のメモリタイプの物理メモリユニットにマップする。名前空間内の論理アドレスを介してメモリユニットにアクセスするとき、1つ以上のページテーブルからのデータがロードされ、物理メモリアドレスに変換するためにプロセッサ/メモリコントローラのトランスレーションルックアサイドバッファにキャッシュされる。
一実施形態では、名前空間は、異なるタイプのメモリデバイス(例えば、DRAM、NVRAM、及びNANDフラッシュ)に作成される。アプリケーションは、データのセットと名前空間の間のバインドを動的に変更して、データを所望のメモリデバイスに移動できる。一実施形態では、オペレーティングシステムは、バインドの変化を検出し、データを移動させる。一実施形態では、オペレーティングシステムは、メモリ管理ユニットにページテーブルを更新させて、データが現在使用されているメモリデバイスから所望のメモリデバイスに移動されるようにする。
一実施形態では、メインメモリとしてランダムアクセスのために格納されたデータは、様々な仮想アドレス範囲によって編成される。仮想アドレス範囲のセットは、名前空間識別子に関連付けることができる。
一実施形態では、オペレーティングシステムのカーネルは、ファームウェア及びデバイスドライバの支援を受けて、コンピュータシステム内のすべてのハードウェアデバイスを制御する。カーネルは、ランダムアクセスメモリ(RAM)内のプログラムのメモリアクセスを管理し、特定のハードウェアリソースにアクセスするプログラムを決定する。
オペレーティングシステムは、アプリケーションプログラムとコンピュータシステムのコンピュータハードウェア間のインターフェイスを提供する。アプリケーションプログラムは、オペレーティングシステムによって管理される手順に基づいてハードウェアと相互作用する。オペレーティングシステムは、アプリケーションプログラムにもサービスを提供する。アプリケーションプログラムが実行されるとき、オペレーティングシステムのカーネルがプロセスを作成する。カーネルは、プロセスにメモリ空間と優先度をアサインし、プログラムのバイナリコードをメモリにロードし、アプリケーションプログラムの実行を開始する。
一実施形態では、カーネルによるメモリ空間のアサインは、少なくとも部分的に、アプリケーションから提供される名前空間データに基づく。一例では、アプリケーションは、メモリタイプに対応する名前空間を提供する。それに応じて、カーネルはそのメモリタイプの物理メモリデバイスに対応するメモリ空間をアサインする。一例では、カーネルは仮想メモリのアドレス指定(例えば、ページングまたはセグメンテーション)を使用して、各プログラムがいつでもアクセスできるメモリを決定する。
図11は、いくつかの実施形態による、名前空間テーブル1104を使用して、名前空間をコンピュータシステム内の物理メモリの異なるメモリタイプにマッピングする例示的なコンピュータシステムを示す。物理メモリは、メモリバス812を介してコンピュータシステム1100によってアクセス可能なランダムアクセスメモリを提供するために使用される。メモリサブシステム1102は、ランダムアクセスメモリとして使用され、メモリ管理ユニット316を使用して処理デバイス310によってアクセスされる物理メモリを提供する。一例では、コンピュータシステム1100及びメモリサブシステム1102は、同じ集積回路(IC)チップ上または異なるICチップ上にある。一例では、コンピュータシステム1100及びメモリサブシステム1102は、それぞれ、チップ上の同じシステム(SoC)の一部である。
コンピュータシステム1100は、図8のコンピュータシステム800の例である。メモリサブシステム1102は、図8のメモリサブシステム802の例である。
物理メモリは、DRAM304、NVRAM306、NANDフラッシュ308などの異なるメモリタイプのメモリデバイスによって提供される。他の実施形態では、様々な他のタイプのメモリ及び/または他のメモリタイプの組み合わせを使用することができる。
各メモリデバイスは、名前空間識別子に対応している。例えば、DRAM304は識別子「名前空間A」に対応する。NVRAM306は、識別子「名前空間B」に対応する。NANDフラッシュ308は、識別子「名前空間C」に対応する。
一実施形態では、各メモリデバイスは、アサインされた名前空間に関連付けられた様々なデータを格納することができる。それぞれの名前空間データが、図11に、「名前空間Aデータ」、「名前空間Bデータ」、及び「名前空間Cデータ」として示されている。一例では、名前空間データは名前空間識別子を含む。一例では、名前空間データは、DRAM304に対応する物理アドレス範囲を含む。一例では、名前空間データは、メタデータ320、322からのデータの一部を含む。一例では、名前空間データは、ページテーブル804からのデータの一部を含む。
一実施形態では、名前空間テーブル1104は、コンピュータシステム1100のメモリに格納される。名前空間テーブル1104は、名前空間識別子とメモリタイプとの間のマッピングを提供する。例えば、名前空間識別子「名前空間A」は、DRAMのメモリタイプにマップされる。
一実施形態では、アプリケーション312がランダムアクセスメモリの割り当てを処理デバイス310に要求すると、オペレーティングシステム808は名前空間識別子を作成し、メモリタイプを名前空間識別子に関連付ける。名前空間テーブル1104は、この関連付けを格納するように更新される。一例では、メモリタイプは、アプリケーション312によって提供されるメモリタイプ314である。一例では、オペレーティングシステム808は、アプリケーション312に関連する特性に基づいてメモリタイプを決定する。一例では、オペレーティングシステム808は、アプリケーション312の優先度に基づいてメモリタイプを決定する。
一実施形態では、アプリケーション312は、メモリ管理に関連するオペレーティングシステム808に要求を提供する。要求には、識別されたデータに関連付けられている、または関係する名前空間識別子が含まれている。要求を受信することに応答して、オペレーティングシステム808は、識別されたデータに関連する1つまたは複数の様々なアクションまたは操作を実行するために名前空間テーブル1104にアクセスする。一例では、オペレーティングシステム808は、識別されたデータを、あるメモリタイプの既存のメモリデバイスから、受信した名前空間識別子に対応する別のメモリタイプの新しいメモリデバイスに移動する。一例では、オペレーティングシステム808は、識別されたデータに対して1つまたは複数の操作を実行し、操作の結果を、要求とともに提供される名前空間に関連付けられたメモリタイプに格納する。一例では、オペレーティングシステム808は、アクションの完了の確認をアプリケーション312に提供する。
一実施形態では、メモリは、アプリケーション312によって使用するために割り当てられる。メモリは名前空間から割り当てられる。一例では、名前空間は名前空間テーブル1104にすでに存在している。別の例では、名前空間はメモリ割り当ての要求に応答して作成される。作成された名前空間は、名前空間テーブル1104に格納される。
既存または新しく作成された名前空間は、メモリタイプにバインドされる。名前空間をメモリタイプにバインドすることに応答して、1つまたは複数のページテーブルが調整され、論理メモリアドレスと名前空間がメモリタイプのメモリデバイスにマップされる。一例では、ページテーブル806及び/またはページテーブル804は、名前空間をメモリタイプにバインドすることに応答して更新される。
一実施形態では、オペレーティングシステム808は、メモリデバイスの名前空間を作成する。データは名前空間にバインドされる。一例では、データは仮想アドレス範囲によって識別される。データを名前空間にバインドすることに応答して、データは作成された名前空間に関連付けられたメモリデバイスに格納される。一例では、データを名前空間にバインドすることは、名前空間の仮想アドレスとメモリデバイスの物理アドレスとの間のマッピングを格納することを含む。
一実施形態では、名前空間の1つまたは複数の仮想アドレスは、ページテーブル804を使用してオペレーティングシステム808によって管理されるプロセスの仮想ページに対応する。一例では、ページテーブル804は、名前空間の仮想アドレスをメモリデバイスの物理アドレスにマップするページテーブルエントリを含む。
図12は、いくつかの実施形態による、コンピュータシステムの異なるタイプのメモリに名前空間をマップするレコード1202、1204、1206を有する例示的な名前空間テーブル1200を示す。一例では、コンピュータシステムは、コンピュータシステム1100である。名前空間テーブル1200は、名前空間テーブル1104の例である。
各レコードには、メモリタイプ(DRAMやNVRAMなど)に関連付けられた名前空間識別子(名前空間Aなど)が含まれている。一例では、レコード1202のメモリタイプの変更により、ページテーブル900が更新され、ページテーブルエントリ902が一致するメモリタイプを有するようになる。
各レコードには、仮想アドレス、物理アドレス、及び/またはデータ識別子をさらに含めることができる。一例では、仮想アドレスは、レコードのメモリタイプに対応する仮想アドレス範囲であり得る。一例では、物理アドレスは、レコードのメモリタイプの1つまたは複数のメモリデバイスに対応する物理アドレス範囲であり得る。
一例では、データ識別子は、名前空間識別子に関連付けられているデータを識別する。一例では、データ識別子は、処理デバイス310のアドレス空間内のアドレス範囲である。一例では、データ識別子は、レコードのメモリタイプの1つまたは複数のメモリデバイスに格納されたデータの物理アドレス範囲である。
一実施形態では、格納されたメタデータ320、322からのデータの一部は、名前空間テーブル1200内のレコードにコピーされる。一例では、データの一部は、レコードの名前空間識別子に関連付けられているメモリタイプの変更に応答してコピーされる。一例では、データの一部は、レコードに関連付けられた仮想アドレス、物理アドレス、及び/またはデータ識別子の変更に応答してコピーされる。
図13は、いくつかの実施形態による、異なるメモリタイプの物理メモリを有するメモリシステム内の名前空間にデータをバインドするための方法を示す。例えば、図13の方法は、図11のシステムに実装することができる。
図13の方法は、ハードウェア(例えば、処理デバイス、回路、専用論理、プログラム可能な論理、マイクロコード、デバイスのハードウェア、集積回路など)、ソフトウェア(例えば、処理デバイスで実行される命令)、またはそれらの組み合わせを含むことができる処理論理によって実行することができる。いくつかの実施形態では、図13の方法は、少なくとも部分的に、1つまたは複数の処理デバイス(例えば、図11の処理デバイス310)によって実行される。
特定のシーケンスまたは順序で示されているが、別段の指定がない限り、プロセスの順序は変更することができる。したがって、図示された実施形態は例としてのみ理解されるべきであり、図示されたプロセスは異なる順序で実行することができ、いくつかのプロセスは並行して実行することができる。さらに、様々な実施形態では、1つまたは複数のプロセスを省略することができる。したがって、すべての実施形態ですべてのプロセスが必要とされるわけではない。他のプロセスフローも可能である。
ブロック1301において、メモリは、アプリケーションによって使用されるために名前空間から割り当てられる。名前空間は、物理アドレスが定義されている1つ以上の物理メモリデバイスへの論理的参照である。一例では、物理アドレスは、オペレーティングシステム808によって定義される。一例では、アプリケーションはアプリケーション312である。
ブロック1303で、名前空間はメモリタイプにバインドされている。一例では、名前空間はメモリタイプ314にバインドされている。一例では、メモリタイプへの名前空間のバインドは、名前空間テーブル1104に格納される。
ブロック1305で、名前空間をメモリタイプにバインドすることに応答して、ページテーブルが調整され、名前空間の論理メモリアドレスがメモリタイプのメモリデバイスにマップされる。一例では、ページテーブル804及び/またはページテーブル806が調整される。一例では、論理メモリアドレスは、アプリケーション312の仮想ページの仮想アドレスである。一例では、メモリデバイスはDRAM304である。
一実施形態では、方法は、少なくとも1つの処理デバイス(例えば、処理デバイス310及び/またはメモリ管理ユニット316)によって、異なるメモリタイプのメモリデバイス(例えば、DRAM304、NVRAM306、及びNANDフラッシュ308)の名前空間を作成することであって、名前空間が第1のメモリタイプの第1のメモリデバイスのための第1の名前空間(例えば、「名前空間A」)、及び第2のメモリタイプの第2のメモリデバイスのための第2の名前空間(例えば、「名前空間B」)を含む、作成すること、データを第1の名前空間にバインドする(例えば、名前空間テーブル1104のバインドを格納する)こと、及びデータを第1の名前空間にバインドすることに応答して、データを第1のメモリデバイスに格納することを含む。
一実施形態では、データを第1のメモリデバイスに格納することは、データを第2のメモリデバイスから第1のメモリデバイスに移動することを含む。
一実施形態では、データを第1の名前空間にバインドすることは、第2の名前空間から第1の名前空間へのデータのバインドの変更を含む。
一実施形態では、オペレーティングシステム(例えば、オペレーティングシステム808)は、少なくとも1つの処理デバイス上で実行され、データを第1の名前空間にバインドすることは、アプリケーション(例えば、アプリケーション312)による要求に応答してオペレーティングシステムによって実行される。
一実施形態では、第1の名前空間は、アプリケーションによる要求に応答してオペレーティングシステムによって作成される。
一実施形態では、名前空間を作成することは、それぞれの仮想アドレス(例えば、ページテーブル804、806の仮想アドレス、メタデータ320、322の仮想アドレス)を各名前空間に関連付けることを含む。
一実施形態では、データを第1の名前空間にバインドすることは、第1の名前空間の仮想アドレス(例えば、ページテーブル804、806の仮想アドレス、メタデータ320、322の仮想アドレス)と、第1のメモリデバイスの第1の物理アドレスとの間のマッピングを格納することを含む。
一実施形態では、第1の名前空間の仮想アドレスは、1つの処理デバイスのアドレス空間の第1のアドレス範囲内にあり、マッピングを格納することは、第1のアドレス範囲を第1のメモリデバイスに関連付けるメタデータ(例えば、メタデータ320、322)を格納することを含む。
一実施形態では、第1の名前空間の仮想アドレスは、ページテーブル(例えば、ページテーブル804、806)を使用してオペレーティングシステムによって管理されるプロセスの仮想ページに対応し、マッピングを格納することは、第1の名前空間の仮想アドレスを第1の物理アドレスにマップするページテーブルのページテーブルエントリを生成することを含む。
一実施形態では、方法は、オペレーティングシステムによってメモリに、名前空間と名前空間にバインドされたデータのセットとの間の関連付け(例えば、名前空間テーブル1104内のレコードのバインド)を格納することをさらに含む。
一実施形態では、方法は、少なくとも1つの処理デバイス上で実行されるアプリケーションの優先度の増加を決定することをさらに含み、データを第1の名前空間にバインドすることは、優先度の増加を決定することに応答して実行され、データを第1の名前空間にバインドすることは、第2の名前空間から第1の名前空間へのバインドの変更を含み、第1のメモリデバイス(例えば、DRAM304)の待ち時間は、第2のメモリデバイス(例えば、NVRAM306またはNANDフラッシュ308)の待ち時間よりも短い。
一実施形態では、第1の名前空間を作成することは、第1の名前空間の識別情報を第1のメモリデバイスのメモリに格納すること(例えば、図11の「名前空間Aデータ」の一部として名前空間識別子及び/または他の識別情報を格納すること)を含む。
一実施形態では、方法は、アプリケーションから、メモリの割り当ての要求を受信することをさらに含み、要求は、データが第1のメモリタイプ(例えば、DRAM)の物理メモリに格納されることを指定する。
一実施形態では、システムは、第1のメモリタイプの第1のメモリデバイス、少なくとも1つの処理デバイス、少なくとも1つの処理デバイスに、オペレーティングシステムによって、アプリケーションによって使用するために名前空間からメモリを割り当てることであって、名前空間は、物理アドレスが定義されている1つまたは複数の物理メモリデバイスへの論理的参照である、割り当てること、名前空間を第1のメモリタイプにバインドすること、及び名前空間を第1のメモリタイプにバインドすることに応答して、オペレーティングシステムによって、名前空間内の論理メモリアドレスを第1のメモリデバイスにマップするようにページテーブルを調整することを命令するように構成された命令を含むメモリを含む。
一実施形態では、命令は、ページテーブルからのデータを使用して、名前空間の論理メモリアドレスに対応する第1のメモリデバイスの第1の物理アドレスのデータにアクセスするように少なくとも1つの処理デバイスに指示するようにさらに構成される。
一実施形態では、ページテーブルからのデータは、トランスレーションルックアサイドバッファ(例えば、TLB810)にキャッシュされ、メモリ管理ユニット(例えば、MMU316)は、トランスレーションルックアサイドバッファにアクセスして、論理メモリアドレスを第1の物理アドレスに変換する。
一実施形態では、システムは、第2のメモリタイプの第2のメモリデバイスをさらに含み、命令は、ページテーブルからのデータを使用して、第2のメモリタイプの第2のメモリデバイスから第1のメモリデバイスへデータ移動することによって第1のメモリデバイスにデータを格納するように少なくとも1つの処理デバイスに命令するようにさらに構成される。
一実施形態では、非一時的な機械可読記憶媒体は、少なくとも1つの処理デバイスで実行されるとき、少なくとも1つの処理デバイスに、少なくとも、異なるメモリタイプのメモリデバイスの名前空間を作成することであって、名前空間が第1のメモリタイプの第1のメモリデバイスのための第1の名前空間、及び第2のメモリタイプの第2のメモリデバイスのための第2の名前空間を含む、作成すること、データを第1の名前空間にバインドすること、及びデータを第1の名前空間にバインドすることに応答して、データを第1のメモリデバイスに格納することを引き起こす命令を格納する。
一実施形態では、データを第1の名前空間にバインドすることは、アプリケーションから受信した第1のメモリタイプ(例えば、メモリタイプ314)の要求に応答して実行され、データを第1の名前空間にバインドすることは、第2の名前空間から第1の名前空間へのデータのバインドの変更を含み、第1のメモリデバイスの待ち時間は、第2のメモリデバイスの待ち時間よりも短い。
一実施形態では、データを第1の名前空間にバインドすることは、第1の名前空間の仮想アドレス範囲と、第1のメモリデバイスの第1の物理アドレスとの間のマッピングを格納することを含み、マッピングを格納することは、仮想アドレス範囲を第1のメモリデバイスに関連付けるメタデータ(例えば、メタデータ320、322)を格納することを含む。
アクセスパターンに基づくメモリタイプへのデータのマッピング
次に、データアクセスパターンに基づいて、データをあるタイプのメモリデバイスにマッピングすることに関連する様々な実施形態を説明する。以下の説明の一般性は、上記の様々な実施形態によって制限されない。
次に、データアクセスパターンに基づいて、データをあるタイプのメモリデバイスにマッピングすることに関連する様々な実施形態を説明する。以下の説明の一般性は、上記の様々な実施形態によって制限されない。
以前のメモリシステムでは、アプリケーションのデータに割り当てられたメモリ(例えば、実行可能コード及び/またはアプリケーションの作業データに割り当てられたランダムアクセスメモリ)は、特定のメモリタイプに明示的に分割されていない(例えば、アプリケーションは作業データには特定のメモリタイプを使用するようコード化されていない)。一例では、レガシーアプリケーションは、DRAM、NVRAM、NANDフラッシュなどの様々なタイプのいずれのメモリの概念をも実装せずに記述されている。したがって、アプリケーションのすべてのデータは、メモリアクセスがレガシーアプリケーションの実行中のパフォーマンスにどのように影響するかを一切考慮または管理することなく、オペレーティングシステムによって割り当てられる。多くの場合、データは頻繁に読み取りまたは書き込みを行う必要があるが、比較的低速のメモリ(例えば、DRAMデバイスではなくNANDフラッシュデバイス)に対する読み取りまたは書き込みが行われる。したがって、様々なタイプのデータに対するメモリデバイスの待ち時間とメモリアクセスのニーズの間に、重大な不一致が生じる可能性がある。
以前のメモリシステムの前述の状況は、特定の重大なデータを格納する実際の物理メモリデバイスの待ち時間が大きいため、アプリケーションが特定のデータにタイムリーにアクセスできないという技術的な問題を引き起こす。結果、アプリケーションの実行が長期間延期され得る。場合によっては、この遅れにより、タイムリーな応答またはその他のアクションを必要とするコンピュータシステムの障害が発生する可能性がある。例えば、機械のリアルタイム制御システム(例えば、製造施設内の機械、またはロジスティクスパッケージ処理センターなどの他の状況での車両、機械、またはロボット)は、メインメモリからのデータアクセスが遅いため必要なサービス品質(QoS)の保証を満たさない可能性がある。
以下に説明する様々な実施形態は、上記の技術的問題の1つまたは複数に対する技術的解決策を提供する。一実施形態では、コンピュータシステムは、データのアクセスパターンに基づいてメモリタイプを自動的にアサインするように構成される。
一例では、データは最初にデフォルトで、NVRAMデバイスでホストされる(例えば、モバイルデバイスにインストールされた新しいアプリケーションの起動にメモリを割り当てるときのオペレーティングシステムのデフォルト構成)。決定されたアクセスパターンが、データが頻繁に使用されていることを示している場合(例えば、所与の期間あたりの所定の閾値アクセス数よりも頻繁な読み取りまたは書き込みアクセス)、コンピュータシステムはメモリタイプを変更してデータをDRAMデバイスに移動する(例えば、データに関連付けられているメモリタイプが変更される)。
決定されたアクセスパターンが、データが最近使用されていないことを示している場合(例えば、最後の使用からの期間が所定の閾値より大きい場合)、コンピュータシステムはデータをNANDフラッシュデバイスに移動する。任意選択で、アクセスパターンに基づいて、コンピュータシステムは、頻繁なアクセス(例えば、将来の操作において発生する可能性が高いと判断されたアプリケーションによる頻繁な読み取りまたは書き込みアクセス)を見越して、低速メモリデバイスから高速メモリデバイスにデータをさらに事前に移動できる。一実施形態では、アクセスパターンに基づいて、システムは、頻繁なアクセスを見越して、格納されたデータをより遅いメモリからより速いメモリに事前に転送、移動、及び/またはコピーすることができる。
図14、いくつかの実施形態による、異なるタイプの物理メモリへのメモリアクセスをマッピングするためにアクセステーブル1404を使用する例示的なコンピュータシステム1400を示す。コンピュータシステム1400は、データをメモリサブシステム1402に対して読み書きする。データは、DRAM304、NVRAM306、NANDフラッシュ308を含むメモリデバイスに格納される。一例では、メモリサブシステム1402は、処理デバイス310のメインメモリにランダムアクセスメモリを提供する。
一例では、処理デバイス310は、メインメモリをアドレス指定し、メモリバス812を使用してデータにアクセスする(例えば、メモリバス812は、コマンド及び制御、アドレス、及びデータバスなどの複数のバスを含むことができる)。メインメモリのアドレス空間には、物理メモリデバイスによって提供されるランダムアクセスメモリ(RAM)が含まれる。RAMは、データ(SDRAMなど)の読み取りと書き込みに使用される。一例では、RAMはDRAM304及びNVRAM306によってホストされる。
オペレーティングシステム808は、処理デバイス310上で実行され、メモリバス812を介した読み取り及び書き込みのアクセスを管理する。データはコンピュータシステム1400によってアクセスされるので、オペレーティングシステム808はデータをアクセステーブル1404に維持する。一例では、維持されるデータは、データへの読み取りまたは書き込みのアクセスに関連する特性を格納する。一例では、格納された特性は、格納されたデータへのアクセスの頻度に関するデータを含む。
一実施形態では、アクセステーブル1404に格納されたアクセスデータは、アプリケーションに関連付けられている。一例では、アプリケーション1420のデータアクセスパターン(例えば、アクセスの頻度を含む)は、アクセステーブル1404に格納される。一例では、データアクセスパターンは、アプリケーション1420によって使用されるデータのタイプ(例えば、実行可能コード、作業データ、またはメモリスタック)に関連付けられている。
一実施形態では、キャッシュメモリ(例えば、SRAM)は、処理デバイス310と同じチップ(例えば、SoC)上に配置される。一例では、アクセスパターンは、キャッシュメモリの使用に関するデータを格納する。一例では、メモリタイプのセットは、1つまたは複数のキャッシュメモリタイプをさらに含む。一例では、キャッシュメモリ内のストレージへの特定の識別されたデータの将来の割り当ては、現在使用されているメモリタイプ(例えば、DRAM)からキャッシュメモリタイプ(例えば、L1、L2、L3、またはその他の「最後のレベル」のキャッシュ)へのデータに関連付けられたメモリタイプを変更することによって(例えば、アクセステーブル1404のデータに基づいて)実装される。
一実施形態では、メモリサブシステム1402に格納されたデータへの読み取りまたは書き込みのアクセスに関するアクセスデータは、アクセス操作が実行されるときに収集することができる。例えば、アクセスデータ1408は、DRAM304内のデータへの読み取りまたは書き込みのアクセスが実行されるときに収集することができる。一例では、アクセスデータ1408は、DRAM304の動作のコンテキストに関するデータを含む。
一実施形態では、DRAM304のコンテキストは、DRAM304及び/またはメモリサブシステム1402のセンサによって収集されたセンサデータによって表される。一実施形態では、センサは、温度、湿度、電気的及び/または磁場の強度などのような周囲環境条件に関するデータを収集する。
一実施形態では、アクセスデータ1408は、DRAM304内のメモリセルの性能及び/または信頼性に関するデータを含む。一例では、アクセスデータ1408は、DRAM304内の1つまたは複数のデータまたは他のバスの電圧特性に関するデータ、及び/またはDRAM304への読み取りまたは書き込みアクセスに関連するタイミングデータを含む。一例では、アクセスデータ1408は、DRAM304のコントローラまたは他の処理デバイス(図示せず)によって収集される。
一実施形態では、アクセスデータ1410は、NVRAM306について収集される。アクセスデータ1410は、アクセスデータ1408と同様のタイプのデータを含むことができる。同様に、アクセスデータ1412は、NANDフラッシュ308について収集される。一実施形態では、アクセスデータ1408、1410、及び/または1412は、オペレーティングシステム808によって収集され、アクセステーブル1404に格納される。
一実施形態では、オペレーティングシステム808は、アクセステーブル1404からのデータを使用せずに、アクセスデータ1408、1410、及び/または1412に基づいてデータのアクセスパターンを決定する。アクセスパターンの決定に応答して、データのメモリタイプが変更され、データが1つのメモリデバイスに格納される、及び/または1つのメモリデバイスから別のメモリデバイスに移動される。一例では、データは、メモリ管理ユニット316によって移動される。一例では、メモリタイプの変更は、ページテーブル804、806で更新される。一例では、新しいメモリタイプは、トランスレーションルックアサイドバッファ810に格納される。
図15は、いくつかの実施形態による、異なるタイプのメモリへのメモリアクセスをマッピングするために使用されるレコードを有する例示的なアクセステーブル1500を示す。アクセステーブル1500は、図14のアクセステーブル1404の例である。
アクセステーブル1500は、レコード1502及び1504を含み、これらは、読み取りまたは書き込みアクセス操作が実行されるときにオペレーティングシステム808によって作成及び更新される。レコード1502、1504は、仮想アドレス1506、物理アドレス1508、メモリタイプ1510、アクセスパターン1512、アクセスデータ1514、及び/またはアプリケーションまたはプロセス識別子1516などの様々なフィールドを含む。
仮想アドレス1506は、例えば、仮想ページのデータに対応する仮想アドレス範囲である。一例では、仮想ページはアプリケーション1420に関連付けられている。メモリタイプ1510は、例えば、仮想ページのデータが格納されるタイプのメモリデバイスである。物理アドレス1508は、データがメモリデバイスに格納される物理アドレス範囲である。
一例では、アクセスパターン1512は、仮想アドレス1506に格納されたデータに関連する様々なメモリアクセス操作に関して収集されたデータを含む。一例では、アクセスパターン1512は、データへのアクセスの頻度及び/またはデータへの最後のアクセスからの時間である。一例では、ページテーブル900のエントリ902の使用状況データは、アクセスパターン1512に対応する。
一例では、アクセスデータ1514は、仮想アドレス1506及び/または物理アドレス1508に対応するデータが格納されているメモリデバイスから受信されたアクセスデータを含む。一例では、アクセスデータ1514は、アクセスデータ1408、1410、及び/または1412からのデータを含む。一例では、アクセスデータ1408、1410、及び/または1412は、オペレーティングシステム808によって管理されるように、処理デバイス310によって受信される。
一実施形態では、識別子1516は、仮想アドレス1506に格納されたデータを使用する実行中のアプリケーションを識別する。一実施形態では、識別子1516は、仮想アドレス1506または物理アドレス1508でアクセスされるデータに関連付けられている、処理デバイス310上で実行されている1つまたは複数のプロセスを識別する。一例では、プロセス識別子1516は、仮想アドレス1506に対応する仮想アドレスを有するページテーブル900のエントリに格納される。
一実施形態では、アクセステーブル1500は、メタデータ320及び/または322から取り出されたデータに基づいて更新される。一例では、物理アドレス1508は、検索入力として仮想アドレス1506に基づくメタデータ320、322を使用して決定される。一例では、メモリタイプ1510は、入力として仮想アドレス1506に基づくメタデータ320、322を使用して決定される。
図16は、いくつかの実施形態による、アクセスパターンに基づいてメモリアクセスをメモリにマッピングするための方法を示す。例えば、図16の方法は、図14のシステムに実装することができる。一例では、アクセスパターンはアクセステーブル1404に格納されている。
図16の方法は、ハードウェア(例えば、処理デバイス、回路、専用論理、プログラム可能な論理、マイクロコード、デバイスのハードウェア、集積回路など)、ソフトウェア(例えば、処理デバイスで実行される命令)、またはそれらの組み合わせを含むことができる処理論理によって実行することができる。いくつかの実施形態では、図16の方法は、少なくとも部分的に、1つまたは複数の処理デバイス(例えば、図14の処理デバイス310)によって実行される。
特定のシーケンスまたは順序で示されているが、別段の指定がない限り、プロセスの順序は変更することができる。したがって、図示された実施形態は例としてのみ理解されるべきであり、図示されたプロセスは異なる順序で実行することができ、いくつかのプロセスは並行して実行することができる。さらに、様々な実施形態では、1つまたは複数のプロセスを省略することができる。したがって、すべての実施形態ですべてのプロセスが必要とされるわけではない。他のプロセスフローも可能である。
ブロック1601で、データは、1つまたは複数の論理アドレスでランダムアクセスメモリに格納される。アドレスはオペレーティングシステムによって管理されるアプリケーションに割り当てられ、データは第1のメモリデバイスに物理的に保存される。一例では、論理アドレスは、オペレーティングシステム808によってアプリケーション1420に割り当てられた仮想アドレス範囲を表す。一例では、第1のメモリデバイスはNVRAM306である。
ブロック1603で、格納されたデータのアクセスパターンが決定される。一例では、アクセスパターンは、アクセステーブル1500のアクセスパターン1512である。一例では、アクセスパターンは、アプリケーション1420に関連するデータへのアクセスの頻度が増加したことを示す(例えば、所定の閾値を超えて)。一例では、アクセスパターンは、格納されたデータに関連付けられたプロセスまたはアプリケーションの優先度が増加したことを示す。
ブロック1605で、アクセスパターンを決定することに応答して、データは、第1のメモリデバイスから、異なる待ち時間を有する第2のメモリデバイスに移動される。一例では、データは、NVRAM306から、待ち時間がより短いDRAM304に移動される。
一実施形態では、方法は、コンピュータシステムの少なくとも1つの処理デバイス(例えば、図14の処理デバイス310)によって、コンピュータシステム上で実行するアプリケーション(例えば、アプリケーション1420)に割り当てられた1つまたは複数の第1の仮想アドレスにデータを格納することであって、第1の仮想アドレスは、第1のメモリタイプの第1のメモリデバイス(例えば、NVRAM306)に対応する、格納すること、格納されたデータのアクセスパターン(例えば、アクセステーブル1404に格納されたアクセスパターン)を決定すること、及びアクセスパターンを決定することに応答して、アプリケーションに割り当てられた1つまたは複数の第2の仮想アドレスにデータを格納することであって、第2の仮想アドレスは、第2のメモリタイプの第2のメモリデバイス(例えば、DRAM304)に対応する、格納すること、を含む。
一実施形態では、第2の仮想アドレスにデータを格納することは、第2の仮想アドレスを第2のメモリデバイスの1つまたは複数の物理アドレスにマッピングする格納されたメタデータ(例えば、メタデータ320、322)にアクセスすることを含む。
一実施形態では、格納されたメタデータにアクセスすることは、メモリ管理ユニット(例えば、MMU316)によって、トランスレーションルックアサイドバッファ(例えば、TLB810)にキャッシュされた格納されたメタデータからのデータにアクセスすることを含む。
一実施形態では、方法は、アクセスパターンに基づいて、格納されたデータに第2のメモリタイプをアサインすることをさらに含む。
一実施形態では、方法は、アサインされた第2のメモリタイプを使用して、データが格納されている第2のメモリデバイスの物理アドレスを決定することをさらに含む。一例では、物理アドレスは、格納されたメタデータ320、322を使用して決定される。
一実施形態では、第2の仮想アドレスにデータを格納することは、データのメモリタイプを第1のメモリタイプから第2のメモリタイプに変更すること、メモリタイプを変更することに応答して、データを第1のメモリデバイスから第2のメモリデバイスに移動することを含む。一例では、データは、オペレーティングシステム808によって管理されるメモリタイプの変更に応答して、メモリ管理ユニット316によって移動される。
一実施形態では、データを第1のメモリデバイスから第2のメモリデバイスに移動することは、ページテーブル(例えば、ページテーブル804)を更新して、第2の仮想アドレスを第2のメモリデバイス内の1つまたは複数の物理アドレスにマッピングすることを含む。
一実施形態では、格納されたデータのアクセスパターンを決定することは、第1の仮想アドレスに対応する1つまたは複数のページテーブルエントリ内の使用状況データにアクセスすることを含む。
一実施形態では、ページテーブルエントリのそれぞれは、第1のメモリタイプを有するフィールドを含む。
一実施形態では、格納されたデータのアクセスパターンを決定することは、使用頻度または最後の使用時間のうちの少なくとも1つを決定することを含む。
一実施形態では、第2の仮想アドレスにデータを格納することは、名前空間テーブルにおいて、データにバインドされた名前空間を、第1のメモリタイプに関連付けられた第1の名前空間から第2のメモリタイプに関連付けられた第2の名前空間に変更することを含む。
一実施形態では、格納されたデータのアクセスパターンを決定することは、データの使用頻度が所定の閾値よりも大きいことを決定することを含む。
一実施形態では、第2のメモリデバイスの待ち時間は、第1のメモリデバイスの待ち時間よりも短く、格納されたデータのアクセスパターンを決定することは、データの使用頻度が所定の閾値よりも大きいことを決定することを含む。
一実施形態では、第2のメモリデバイスの待ち時間は、第1のメモリデバイスの待ち時間よりも大きく、格納されたデータのアクセスパターンを決定することは、データの使用頻度が所定の閾値よりも少ないことを決定すること、またはデータの最後の使用からの期間が所定の閾値よりも大きいことを決定することの少なくとも1つを含む。
一実施形態では、第2のメモリデバイスの待ち時間は、第1のメモリデバイスの待ち時間よりも短く、格納されたデータのアクセスパターンを決定することは、アプリケーションによるデータの将来の使用頻度が所定の閾値よりも大きくなることを決定することを含み、第2の仮想アドレスにデータを格納することは、第1の仮想アドレスに対応する1つまたは複数の仮想ページを含むページテーブルを更新することによって、格納されたデータを第1のメモリデバイスから第2のメモリデバイスに移動することを含む。
一実施形態では、将来の使用頻度が所定の閾値よりも大きくなることを決定することは、アプリケーションまたはコンピュータシステムのうちの少なくとも1つのコンテキストを決定すること、決定されたコンテキストを、アプリケーションの履歴アクセスパターンに関するデータに関連付けること、及び履歴アクセスパターンが、所定の閾値よりも大きい使用頻度に対応することを決定することを含む。一例では、コンテキストは、アクセステーブル1500に格納されたアクセスデータ1514に基づいて決定される。
一実施形態では、システムは、第1のメモリタイプの第1のメモリデバイス、第2のメモリタイプの第2のメモリデバイス、少なくとも1つの処理デバイス、及び少なくとも1つの処理デバイスに、オペレーティングシステム(例えば、オペレーティングシステム808)によって管理されるアプリケーションに割り当てられた1つまたは複数の論理アドレスでデータをランダムアクセスメモリにおいて格納することであって、データは第1のメモリデバイスに保存される、格納すること、オペレーティングシステムによって、格納されたデータのアクセスパターンを決定すること、及びアクセスパターンの決定に応答して、データを第1のメモリデバイスから第2のメモリデバイスに移動することを指示するように構成された命令を含むメモリを含む。
一実施形態では、データは、オペレーティングシステムによってデータにアサインされたメモリタイプを変更することによって、第1のメモリデバイスから第2のメモリデバイスに移動される。
一実施形態では、論理アドレスは、アプリケーションの1つまたは複数の仮想ページの仮想アドレスである。
一実施形態では、非一時的な機械可読記憶媒体は、少なくとも1つの処理デバイスで実行されるとき、少なくとも1つの処理デバイスに、少なくとも、アプリケーションへ割り当てられたアドレス範囲でランダムアクセスメモリにデータを格納することであって、アドレス範囲が第1のメモリタイプの第1のメモリデバイスに対応する、格納すること、格納されたデータのアクセスパターンを決定すること、及びアクセスパターンの決定に応答して、データを第1のメモリデバイスから第2のメモリタイプの第2のメモリデバイスに移動することを引き起こす命令を格納する。
結び
本開示は、これらの方法を実行するデータ処理システム、及びデータ処理システム上で実行されるときにシステムにこれらの方法を実行させる命令を含むコンピュータ可読媒体を含む、上記の方法を実行し、システムを実装する様々なデバイスを含む。
本開示は、これらの方法を実行するデータ処理システム、及びデータ処理システム上で実行されるときにシステムにこれらの方法を実行させる命令を含むコンピュータ可読媒体を含む、上記の方法を実行し、システムを実装する様々なデバイスを含む。
説明及び図面は例示的なものであり、限定的なものとして解釈されるべきではない。完全な理解を提供するために、多数の具体的な詳細が説明されている。ただし、説明が不明瞭になるのを避けるために、特定の例では、よく知られた、または従来の詳細が説明されていない。本開示における1つまたは実施形態への言及は、必ずしも同じ実施形態への言及ではなく、そのような参照は少なくとも1つを意味する。
本明細書での、「一実施形態(one embodiment)」または「実施形態(an embodiment)」へのあらゆる参照は、その実施形態と関係して記載される特定の機能、構造、または特性が、本開示の少なくとも1つの実施形態に含まれることを意味する。本明細書の種々の場所において「一実施形態では」という語句が出現することは、必ずしもすべてが同一の実施形態であること、また、他の実施形態を相互に排除する別個のまたは代替の実施形態であることを参照しない。さらに、いくつかの実施形態によって示され、他の実施形態によって示されない可能性がある様々な特徴が記載されている。同様に、いくつかの実施形態の要件であり得るが他の実施形態ではない様々な要件が説明されている。
この説明では、説明を簡略化するために、ソフトウェアコードによって実行される、またはソフトウェアコードによって引き起こされるものとして、様々な機能及び操作を行うことを説明することができる。しかしながら、当業者は、そのような表現が意味することは、機能が、マイクロプロセッサ、特定用途向け集積回路(ASIC)、グラフィックプロセッサ、及び/またはフィールドプログラマブルゲートアレイ(FPGA)などの1つまたは複数のプロセッサによるコードの実行から生じることであることを認識するであろう。あるいは、または組み合わせて、機能及び動作は、ソフトウェア命令の有無にかかわらず、特別な目的の回路(例えば、論理回路)を使用して実装することができる。実施形態は、ソフトウェア命令なしで、またはソフトウェア命令と組み合わせて、ハードワイヤード回路を使用して実装することができる。したがって、技術がハードウェア回路及びソフトウェアのいずれかの特定の組み合わせにも、コンピューティングデバイスによって実行される命令についてのいずれの特定のソースにも限定されない。
いくつかの実施形態は、完全に機能するコンピュータ及びコンピュータシステムに実装することができるが、様々な実施形態は、様々な形態のコンピューティング製品として配布することができ、実際に分布に影響を与えるよう使用される特定のタイプの機械またはコンピュータ可読媒体に関係なく適用することができる。
開示される少なくともいくつかの態様は、少なくとも部分的に、ソフトウェアで具体化することができる。つまり、技術は、マイクロプロセッサなどのプロセッサに応答して、コンピューティングデバイスまたは他のシステムで実行され、ROM、揮発性RAM、不揮発性メモリ、キャッシュ、またはリモートストレージデバイスなどのメモリに含まれる命令のシーケンスを実行することができる。
実施形態を実装するために実行されるルーチンは、オペレーティングシステム、ミドルウェア、サービス提供プラットフォーム、SDK(ソフトウェア開発キット)構成要素、ウェブサービス、または他の特定のアプリケーション、構成要素、プログラム、オブジェクト、モジュール、または「コンピュータプログラム」として参照される命令のシーケンスの一部として実装され得る。これらのルーチンへの呼び出しインターフェイスは、API(アプリケーションプログラミングインターフェイス)としてソフトウェア開発コミュニティに公開できる。コンピュータプログラムは、通常、コンピュータ内の様々なメモリ及び記憶装置に様々な時点で設定された1つまたは複数の命令を含み、コンピュータ内の1つまたは複数のプロセッサによって読み取られて実行されるとき、コンピュータに、様々な態様を含む要素を実行するために必要な操作を実行させる。
機械可読媒体を使用して、コンピューティングデバイスによって実行されたときにデバイスに様々な方法を実行させるソフトウェア及びデータを格納することができる。実行可能なソフトウェア及びデータは、例えば、ROM、揮発性RAM、不揮発性メモリ及び/またはキャッシュを含む様々な場所に格納され得る。このソフトウェア及び/またはデータの一部は、これらのストレージデバイスのいずれかに保存できる。さらに、データと命令は、集中型サーバまたはピアツーピアネットワークから取得できる。データ及び命令の異なる部分は、異なる集中型サーバ及び/またはピアツーピアネットワークから、異なる時間に、異なる通信セッションで、または同じ通信セッションで取得することができる。データと命令は、アプリケーションの実行前に完全に取得できる。あるいは、データと命令の一部を、実行に必要なときに、ちょうど間に合うように動的に取得することもできる。したがって、データ及び命令が、特定の時点で完全に機械可読媒体上にあることは必要ではない。
コンピュータ可読媒体の例には、記録可能及び記録不可能なタイプの媒体、例えば揮発性及び不揮発性メモリデバイス、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、フラッシュメモリデバイス、ソリッドステートドライブストレージメディア、リムーバブルディスク、磁気ディスクストレージメディア、光ストレージメディア(例えば、コンパクトディスク読み取り専用メモリ(CDROM)、デジタル多用途ディスク(DVD)などが含まれるが、これらに限定されない。コンピュータ可読媒体は、命令を格納することができる。
一般に、有形または非一時的な機械可読媒体には、機械(例えば、コンピュータ、モバイルデバイス、ネットワークデバイス、パーソナルデジタルアシスタント、製造ツール、1つまたは複数のプロセッサのセットを備えたいずれかのデバイスなど)によってアクセス可能な形式で情報を提供する(例えば、保存する)メカニズムが含まれる。
様々な実施形態において、ハードワイヤード回路は、技術を実装するためにソフトウェア及びファームウェア命令と組み合わせて使用され得る。したがって、技術は、ハードウェア回路及びソフトウェアのいずれかの特定の組み合わせにも、コンピューティングデバイスによって実行される命令についてのいずれの特定のソースにも、限定されない。
一部の図面は特定の順序でいくつかの操作を示しているが、順序に依存しない操作は、並べ替えることができ、他の操作を組み合わせたり、分割したりすることができる。いくつかの並べ替えまたは他とのグループ化が具体的に言及されているが、他のことが当業者に明らかであり、したがって、代替案の完全な列挙を提示してはいない。さらに、ステージは、ハードウェア、ファームウェア、ソフトウェア、またはそれらの任意の組み合わせで実装できることを認識しておく必要がある。
前述の明細書では、本開示が、その特定の例示的な実施形態を参照して説明されてきた。以下の請求項に述べるより広い趣旨及び範囲から逸脱することなく、様々な変更を加えることができることが明らかである。したがって、明細書及び図面は限定的な意味ではなく例示的な意味で考慮されるべきである。
本明細書に記載の様々な実施形態は、多種多様な異なるタイプのコンピューティングデバイスを使用して実装することができる。本明細書で使用される場合、「コンピューティングデバイス」の例には、サーバ、集中型コンピューティングプラットフォーム、複数のコンピューティングプロセッサ及び/または構成要素のシステム、モバイルデバイス、ユーザ端末、車両、パーソナル通信デバイス、ウェアラブルデジタルデバイス、電子キオスク、汎用コンピュータ、電子ドキュメントリーダー、タブレット、ラップトップコンピュータ、スマートフォン、デジタルカメラ、家庭用電化製品、テレビ、またはデジタル音楽プレーヤーが挙げられるが、これらに限定されない。コンピューティングデバイスのその他の例には、いわゆる「モノのインターネット」(IOT)の一部であるデバイスが含まれる。このような「モノ」は、モノを監視し得、これらのモノの設定を変更し得る、所有者または管理者と時折やり取りする場合がある。場合によっては、そのような所有者または管理者は、「モノ」のデバイスに関してユーザの役割を果たす。いくつかの例では、ユーザのプライマリモバイルデバイス(例えば、Apple iPhone(登録商標))は、ユーザが着用するペアの「モノ」のデバイス(例えば、Apple(登録商標) Watch)に関する管理者サーバである場合がある。
いくつかの実施形態では、コンピューティングデバイスは、例えば、デスクトップコンピュータ、ラップトップコンピュータ、ネットワークサーバ、モバイルデバイス、またはメモリ及び処理デバイスを含む他のコンピューティングデバイスとして実装されるコンピュータまたはホストシステムであり得る。ホストシステムは、メモリサブシステムを含むか、またはメモリサブシステムに結合して、ホストシステムがメモリサブシステムからデータを読み取る、またはメモリサブシステムにデータを書き込むことができるようにする。ホストシステムは、物理ホストインターフェイスを介してメモリサブシステムに結合することができる。一般に、ホストシステムは、同じ通信接続、複数の別個の通信接続、及び/または通信接続の組み合わせを介して、複数のメモリサブシステムにアクセスすることができる。
Claims (20)
- 方法であって、
コンピュータシステムの少なくとも1つの処理デバイスによって、前記コンピュータシステム上で実行されるアプリケーションに割り当てられた1つまたは複数の第1の仮想アドレスにデータを格納することであって、前記第1の仮想アドレスは、第1のメモリタイプの第1のメモリデバイスに対応する、前記格納すること、
前記格納されたデータのアクセスパターンを決定すること、及び
前記アクセスパターンを決定することに応答して、前記アプリケーションに割り当てられた1つまたは複数の第2の仮想アドレスに前記データを格納することであって、前記第2の仮想アドレスは、第2のメモリタイプの第2のメモリデバイスに対応する、前記格納すること、
を含む、方法。 - 前記第2の仮想アドレスに前記データを格納することは、前記第2の仮想アドレスを前記第2のメモリデバイスの1つまたは複数の物理アドレスにマッピングする格納されたメタデータにアクセスすることを含む、請求項1に記載の方法。
- 前記格納されたメタデータにアクセスすることは、メモリ管理ユニットによって、トランスレーションルックアサイドバッファにキャッシュされた前記格納されたメタデータからのデータにアクセスすることを含む、請求項2に記載の方法。
- 前記アクセスパターンに基づいて、前記第2のメモリタイプを前記格納されたデータにアサインすることをさらに含む、請求項1に記載の方法。
- 前記アサインされた第2のメモリタイプを使用して、前記データが格納されている前記第2のメモリデバイスの物理アドレスを決定することをさらに含む、請求項4に記載の方法。
- 前記第2の仮想アドレスに前記データを格納することは、
前記データのメモリタイプを前記第1のメモリタイプから前記第2のメモリタイプに変更すること、
前記メモリタイプを変更することに応答して、前記データを前記第1のメモリデバイスから前記第2のメモリデバイスに移動すること、を含む、請求項1に記載の方法。 - 前記データを前記第1のメモリデバイスから前記第2のメモリデバイスに移動することは、ページテーブルを更新して、前記第2の仮想アドレスを前記第2のメモリデバイス内の1つまたは複数の物理アドレスにマッピングすることを含む、請求項6に記載の方法。
- 前記格納されたデータの前記アクセスパターンを決定することは、前記第1の仮想アドレスに対応する1つまたは複数のページテーブルエントリ内の使用状況データにアクセスすることを含む、請求項1に記載の方法。
- 前記ページテーブルエントリのそれぞれが、前記第1のメモリタイプを有するフィールドを含む、請求項8に記載の方法。
- 前記格納されたデータの前記アクセスパターンを決定することは、使用頻度または最後の使用時間のうちの少なくとも1つを決定することを含む、請求項1に記載の方法。
- 前記第2の仮想アドレスに前記データを格納することは、名前空間テーブルにおいて、前記データにバインドされた名前空間を、前記第1のメモリタイプに関連付けられた第1の名前空間から前記第2のメモリタイプに関連付けられた第2の名前空間に変更することを含む、請求項1に記載の方法。
- 前記格納されたデータの前記アクセスパターンを決定することは、前記データの使用頻度が所定の閾値よりも大きいことを決定することを含む、請求項1に記載の方法。
- 前記第2のメモリデバイスの待ち時間は、前記第1のメモリデバイスの待ち時間よりも短く、前記格納されたデータの前記アクセスパターンを決定することは、前記データの使用頻度が所定の閾値より高いことを決定することを含む、請求項1に記載の方法。
- 前記第2のメモリデバイスの待ち時間は、前記第1のメモリデバイスの待ち時間よりも大きく、前記格納されたデータのアクセスパターンを決定することは、前記データの使用頻度が所定の閾値よりも小さいことを決定すること、または前記データが最後に使用されてからの期間が所定の閾値よりも大きいと決定することの少なくとも1つを含む、請求項1に記載の方法。
- 前記第2のメモリデバイスの待ち時間は、前記第1のメモリデバイスの待ち時間よりも短く、
前記格納されたデータの前記アクセスパターンを決定することは、前記アプリケーションによるデータの将来の使用頻度が所定の閾値よりも大きくなることを決定することを含み、
前記第2の仮想アドレスに前記データを格納することは、前記第1の仮想アドレスに対応する1つまたは複数の仮想ページを含むページテーブルを更新することによって、前記格納されたデータを前記第1のメモリデバイスから前記第2のメモリデバイスに移動することを含む、請求項1に記載の方法。 - 前記将来の使用頻度が前記所定の閾値よりも大きくなることを決定することは、
前記アプリケーションまたは前記コンピュータシステムの少なくとも1つのコンテキストを決定すること、
前記決定されたコンテキストを、前記アプリケーションの履歴アクセスパターンに関するデータに関連付けること、及び
前記履歴アクセスパターンが、前記所定の閾値よりも大きい使用頻度に対応していることを決定することを含む、請求項15に記載の方法。 - システムであって、
第1のメモリタイプの第1のメモリデバイス、
第2のメモリタイプの第2のメモリデバイス、
少なくとも1つの処理デバイス、及び
オペレーティングシステムによって管理されるアプリケーションに割り当てられた1つまたは複数の論理アドレスでデータをランダムアクセスメモリに格納することであって、前記データは前記第1のメモリデバイスに格納される、前記格納すること、
前記オペレーティングシステムによって、前記格納されたデータのアクセスパターンを決定すること、及び
前記アクセスパターンを決定することに応答して、前記データを前記第1のメモリデバイスから前記第2のメモリデバイスに移動すること、
を、前記少なくとも1つの処理デバイスに命令するように構成された命令を含むメモリ、
を含む、システム。 - 前記オペレーティングシステムによって前記データにアサインされたメモリタイプを変更することによって、前記データが前記第1のメモリデバイスから前記第2のメモリデバイスに移動される、請求項17に記載のシステム。
- 前記論理アドレスは、前記アプリケーションの1つまたは複数の仮想ページの仮想アドレスである、請求項17に記載のシステム。
- 少なくとも1つの処理デバイスで実行されるとき、前記少なくとも1つの処理デバイスに少なくとも、
アプリケーションに割り当てられたアドレス範囲でランダムアクセスメモリにデータを格納することであって、前記アドレス範囲は、第1のメモリタイプの第1のメモリデバイスに対応する、前記格納すること、
前記格納されたデータのアクセスパターンを決定すること、及び
前記アクセスパターンを決定することに応答して、前記データを前記第1のメモリデバイスから第2のメモリタイプの第2のメモリデバイスに移動することを引き起こす命令を格納する、非一時的な機械可読記憶媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/573,541 US11269780B2 (en) | 2019-09-17 | 2019-09-17 | Mapping non-typed memory access to typed memory access |
US16/573,541 | 2019-09-17 | ||
PCT/US2020/051065 WO2021055471A1 (en) | 2019-09-17 | 2020-09-16 | Mapping non-typed memory access to typed memory access |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022548642A true JP2022548642A (ja) | 2022-11-21 |
Family
ID=74868481
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022517124A Pending JP2022548642A (ja) | 2019-09-17 | 2020-09-16 | タイプ付けされていないメモリアクセスのタイプ付けされているメモリアクセスに対するマッピング |
Country Status (7)
Country | Link |
---|---|
US (3) | US11269780B2 (ja) |
EP (1) | EP4031975A4 (ja) |
JP (1) | JP2022548642A (ja) |
KR (1) | KR20220045216A (ja) |
CN (1) | CN114402306A (ja) |
TW (1) | TWI781439B (ja) |
WO (1) | WO2021055471A1 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11650742B2 (en) | 2019-09-17 | 2023-05-16 | Micron Technology, Inc. | Accessing stored metadata to identify memory devices in which data is stored |
US10963396B1 (en) | 2019-09-17 | 2021-03-30 | Micron Technology, Inc. | Memory system for binding data to a memory namespace |
US11269780B2 (en) | 2019-09-17 | 2022-03-08 | Micron Technology, Inc. | Mapping non-typed memory access to typed memory access |
US11494311B2 (en) | 2019-09-17 | 2022-11-08 | Micron Technology, Inc. | Page table hooks to memory types |
US11579910B2 (en) * | 2019-09-20 | 2023-02-14 | Netapp, Inc. | Policy enforcement and performance monitoring at sub-LUN granularity |
US11061770B1 (en) * | 2020-06-30 | 2021-07-13 | EMC IP Holding Company LLC | Reconstruction of logical pages in a storage system |
US20220122686A1 (en) * | 2020-09-24 | 2022-04-21 | Ecole Polytechnique Federale De Lausanne (Epfl) | Method For Reading And Writing Unreliable Memories And A Corresponding Memory Controller Device and Memory |
US20220311801A1 (en) * | 2021-03-24 | 2022-09-29 | Corelight, Inc. | System and method for identifying authentication method of secure shell (ssh) sessions |
CN113094119B (zh) * | 2021-04-28 | 2022-07-12 | 杭州国芯科技股份有限公司 | 一种嵌入式设备程序动态加载方法 |
US20230342067A1 (en) * | 2022-04-26 | 2023-10-26 | Nvidia Corporation | Solid state memory interface |
US12007900B2 (en) | 2022-07-08 | 2024-06-11 | Realtek Semiconductor Corp. | Data accessing method and data accessing system capable of providing high data accessing performance and low memory utilization |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07254204A (ja) * | 1994-03-16 | 1995-10-03 | Toshiba Corp | 光ディスク装置 |
JP2005216053A (ja) * | 2004-01-30 | 2005-08-11 | Matsushita Electric Ind Co Ltd | 最適メモリ配置演算装置及び最適メモリ配置方法 |
JP2006099748A (ja) * | 2004-08-30 | 2006-04-13 | Hitachi Ltd | ストレージシステム及びデータ再配置制御装置。 |
WO2013161073A1 (ja) * | 2012-04-27 | 2013-10-31 | 株式会社日立製作所 | データ管理システム及び方法 |
US20140207741A1 (en) * | 2010-12-17 | 2014-07-24 | Microsoft Corporation | Data retention component and framework |
JP2015522886A (ja) * | 2012-07-18 | 2015-08-06 | マイクロン テクノロジー, インク. | 階層メモリシステムのためのメモリ管理 |
WO2015132873A1 (ja) * | 2014-03-04 | 2015-09-11 | 株式会社 東芝 | 階層化ブロックストレージ装置を有するコンピュータシステム、ストレージコントローラ、及びプログラム |
US20160124674A1 (en) * | 2014-11-04 | 2016-05-05 | Samsung Electronics Co., Ltd. | Method and apparatus for managing a plurality of memory devices |
JP2017027387A (ja) * | 2015-07-23 | 2017-02-02 | 株式会社東芝 | メモリシステム |
JP2017138852A (ja) * | 2016-02-04 | 2017-08-10 | 株式会社東芝 | 情報処理装置、記憶装置およびプログラム |
Family Cites Families (114)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6376034A (ja) * | 1986-09-19 | 1988-04-06 | Hitachi Ltd | 多重アドレス空間制御方式 |
JP3369580B2 (ja) | 1990-03-12 | 2003-01-20 | ヒューレット・パッカード・カンパニー | 直接メモリアクセスを行うためのインターフェース装置及び方法 |
US6256714B1 (en) | 1998-09-02 | 2001-07-03 | Sharp Laboratories Of America, Inc. | Computer system with efficient memory usage for managing multiple application programs |
US6681311B2 (en) | 2001-07-18 | 2004-01-20 | Ip-First, Llc | Translation lookaside buffer that caches memory type information |
US7346664B2 (en) | 2003-04-24 | 2008-03-18 | Neopath Networks, Inc. | Transparent file migration using namespace replication |
US7444547B2 (en) | 2003-06-19 | 2008-10-28 | International Business Machines Corproation | Method, system, and product for programming in a simultaneous multi-threaded processor environment |
US7533195B2 (en) | 2004-02-25 | 2009-05-12 | Analog Devices, Inc. | DMA controller for digital signal processors |
US7269708B2 (en) | 2004-04-20 | 2007-09-11 | Rambus Inc. | Memory controller for non-homogenous memory system |
US7552282B1 (en) | 2004-08-04 | 2009-06-23 | Emc Corporation | Method, computer readable medium, and data storage system for selective data replication of cached data |
JP5338859B2 (ja) | 2004-10-27 | 2013-11-13 | ソニー株式会社 | 記憶装置および情報処理システム |
US8452929B2 (en) | 2005-04-21 | 2013-05-28 | Violin Memory Inc. | Method and system for storage of data in non-volatile media |
US7949845B2 (en) | 2005-08-03 | 2011-05-24 | Sandisk Corporation | Indexing of file data in reprogrammable non-volatile memories that directly store data files |
US7669003B2 (en) | 2005-08-03 | 2010-02-23 | Sandisk Corporation | Reprogrammable non-volatile memory systems with indexing of directly stored data files |
US7984084B2 (en) | 2005-08-03 | 2011-07-19 | SanDisk Technologies, Inc. | Non-volatile memory with scheduled reclaim operations |
US7533198B2 (en) | 2005-10-07 | 2009-05-12 | International Business Machines Corporation | Memory controller and method for handling DMA operations during a page copy |
JP2007254204A (ja) | 2006-03-23 | 2007-10-04 | Seiko Epson Corp | マルチレンズアレイの強化処理方法 |
JP2008077325A (ja) | 2006-09-20 | 2008-04-03 | Hitachi Ltd | ストレージ装置及びストレージ装置に対する設定方法 |
US11336511B2 (en) | 2006-09-25 | 2022-05-17 | Remot3.It, Inc. | Managing network connected devices |
US8621137B2 (en) | 2007-12-27 | 2013-12-31 | Sandisk Enterprise Ip Llc | Metadata rebuild in a flash memory controller following a loss of power |
US8270356B2 (en) | 2008-01-22 | 2012-09-18 | Lg Electronics Inc. | Method for encoding data unit by using a plurality of CRC algorithms |
US8151076B2 (en) | 2008-04-04 | 2012-04-03 | Cisco Technology, Inc. | Mapping memory segments in a translation lookaside buffer |
US20090254851A1 (en) | 2008-04-08 | 2009-10-08 | Techneos Systems Inc. | Method and system for conducting a survey by using a wireless device |
US8725927B2 (en) | 2008-10-15 | 2014-05-13 | Micron Technology, Inc. | Hot memory block table in a solid state storage device |
US8117496B2 (en) | 2009-06-18 | 2012-02-14 | International Business Machines Corporation | Detecting and recovering from silent data errors in application cloning systems |
JP5531476B2 (ja) | 2009-07-15 | 2014-06-25 | 富士ゼロックス株式会社 | 情報処理装置及び情報処理プログラム |
JP2011154547A (ja) | 2010-01-27 | 2011-08-11 | Toshiba Corp | メモリ管理装置及びメモリ管理方法 |
US9075733B1 (en) | 2010-05-20 | 2015-07-07 | Seagate Technology Llc | Selective storage of address mapping metadata in a system having multiple memories |
DE112010000004B4 (de) | 2010-06-13 | 2016-03-03 | Lianyungang Zhongfu Lianzhong Composites Group Co., Ltd. | Verfahren zur Herstellung eines Turbinenflügelfusses einer Megawatt-Windturbine |
US8521944B2 (en) | 2010-08-31 | 2013-08-27 | Intel Corporation | Performing memory accesses using memory context information |
US8595463B2 (en) | 2010-09-15 | 2013-11-26 | International Business Machines Corporation | Memory architecture with policy based data storage |
US9558040B2 (en) | 2011-06-20 | 2017-01-31 | Microsoft Technology Licensing, Llc | Memory manager with enhanced application metadata |
US8935491B2 (en) | 2011-07-15 | 2015-01-13 | Throughputer, Inc. | Memory architecture for dynamically allocated manycore processor |
US9678863B2 (en) | 2012-06-12 | 2017-06-13 | Sandisk Technologies, Llc | Hybrid checkpointed memory |
US10303618B2 (en) | 2012-09-25 | 2019-05-28 | International Business Machines Corporation | Power savings via dynamic page type selection |
US9304828B2 (en) | 2012-09-27 | 2016-04-05 | Hitachi, Ltd. | Hierarchy memory management |
US9747000B2 (en) | 2012-10-02 | 2017-08-29 | Razer (Asia-Pacific) Pte. Ltd. | Launching applications on an electronic device |
US20140101370A1 (en) | 2012-10-08 | 2014-04-10 | HGST Netherlands B.V. | Apparatus and method for low power low latency high capacity storage class memory |
US9330736B2 (en) | 2012-11-09 | 2016-05-03 | Qualcomm Incorporated | Processor memory optimization via page access counting |
WO2014102886A1 (en) | 2012-12-28 | 2014-07-03 | Hitachi, Ltd. | Information processing apparatus and cache control method |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US9229854B1 (en) | 2013-01-28 | 2016-01-05 | Radian Memory Systems, LLC | Multi-array operation support and related devices, systems and software |
CN103174406B (zh) | 2013-03-13 | 2015-12-02 | 吉林大学 | 一种油页岩地下原位加热的方法 |
US20140351151A1 (en) * | 2013-05-23 | 2014-11-27 | International Business Machines Corporation | Providing a lease period determination |
KR20150044370A (ko) | 2013-10-16 | 2015-04-24 | 삼성전자주식회사 | 이종 메모리들을 관리하는 시스템들 |
US9785558B2 (en) | 2013-10-29 | 2017-10-10 | Hua Zhong University Of Science Technology | Mixed cache management |
US9619155B2 (en) | 2014-02-07 | 2017-04-11 | Coho Data Inc. | Methods, systems and devices relating to data storage interfaces for managing data address spaces in data storage devices |
JP6118285B2 (ja) | 2014-03-20 | 2017-04-19 | 株式会社東芝 | キャッシュメモリシステムおよびプロセッサシステム |
US10108220B2 (en) | 2014-05-01 | 2018-10-23 | Wisconsin Alumni Research Foundation | Computer architecture having selectable, parallel and serial communication channels between processors and memory |
US9450879B2 (en) | 2014-05-09 | 2016-09-20 | Nexgen Storage, Inc. | Adaptive bandwidth throttling |
US9792227B2 (en) | 2014-08-19 | 2017-10-17 | Samsung Electronics Co., Ltd. | Heterogeneous unified memory |
CN105612505B (zh) | 2014-09-17 | 2018-12-14 | 华为技术有限公司 | Cpu调度的方法和装置 |
JP2016085677A (ja) | 2014-10-28 | 2016-05-19 | 富士通株式会社 | メモリ管理方法、メモリ管理プログラム及び情報処理装置 |
US9977734B2 (en) | 2014-12-11 | 2018-05-22 | Toshiba Memory Corporation | Information processing device, non-transitory computer readable recording medium, and information processing system |
US9766819B2 (en) | 2014-12-30 | 2017-09-19 | Sandisk Technologies Llc | Systems and methods for managing storage endurance |
US10691375B2 (en) | 2015-01-30 | 2020-06-23 | Hewlett Packard Enterprise Development Lp | Memory network to prioritize processing of a memory access request |
US20180024853A1 (en) | 2015-02-17 | 2018-01-25 | Coho Data, Inc. | Methods, systems, devices and appliances relating to virtualized application-layer space for data processing in data storage systems |
US10049035B1 (en) | 2015-03-10 | 2018-08-14 | Reniac, Inc. | Stream memory management unit (SMMU) |
JP6384375B2 (ja) | 2015-03-23 | 2018-09-05 | 富士通株式会社 | 情報処理装置、記憶装置制御方法、記憶装置制御プログラム及び情報処理システム |
US10331384B2 (en) * | 2015-03-31 | 2019-06-25 | International Business Machines Corporation | Storing data utilizing a maximum accessibility approach in a dispersed storage network |
US10157008B2 (en) | 2015-04-29 | 2018-12-18 | Qualcomm Incorporated | Systems and methods for optimizing memory power consumption in a heterogeneous system memory |
US10235282B2 (en) | 2015-06-01 | 2019-03-19 | Hitachi, Ltd. | Computer system, computer, and method to manage allocation of virtual and physical memory areas |
US9734009B2 (en) | 2015-10-08 | 2017-08-15 | Sandisk Technologies Llc | Data encoding techniques for a device |
US10289722B2 (en) | 2015-11-17 | 2019-05-14 | Samsung Electronics Co., Ltd. | System and methods for multi-level key-value store |
US10216643B2 (en) | 2015-11-23 | 2019-02-26 | International Business Machines Corporation | Optimizing page table manipulations |
US10248447B2 (en) | 2015-11-25 | 2019-04-02 | Red Hat, Inc. | Providing link aggregation and high availability through network virtualization layer |
US20170153892A1 (en) * | 2015-11-30 | 2017-06-01 | Intel Corporation | Instruction And Logic For Programmable Fabric Hierarchy And Cache |
US10095413B2 (en) | 2016-01-28 | 2018-10-09 | Toshiba Memory Corporation | Memory system with address translation between a logical address and a physical address |
US10007614B2 (en) | 2016-02-02 | 2018-06-26 | Cavium, Inc. | Method and apparatus for determining metric for selective caching |
JP2017138823A (ja) | 2016-02-04 | 2017-08-10 | キヤノン株式会社 | 情報処理装置、情報処理方法および撮像装置 |
JP6423809B2 (ja) | 2016-02-19 | 2018-11-14 | イーソル株式会社 | オペレーティングシステム、プログラミングシステム及びメモリ割り当て方法 |
US11977484B2 (en) | 2016-07-19 | 2024-05-07 | Sap Se | Adapting in-memory database in hybrid memory systems and operating system interface |
JP6674101B2 (ja) | 2016-07-27 | 2020-04-01 | 富士通株式会社 | 制御装置および情報処理システム |
US10223228B2 (en) | 2016-08-12 | 2019-03-05 | International Business Machines Corporation | Resolving application multitasking degradation |
JP6666813B2 (ja) | 2016-08-24 | 2020-03-18 | キオクシア株式会社 | 記憶装置及びその制御方法 |
US10372635B2 (en) | 2016-08-26 | 2019-08-06 | Qualcomm Incorporated | Dynamically determining memory attributes in processor-based systems |
JP2018049381A (ja) | 2016-09-20 | 2018-03-29 | 東芝メモリ株式会社 | メモリ制御回路、メモリシステムおよびプロセッサシステム |
JP2018049385A (ja) | 2016-09-20 | 2018-03-29 | 東芝メモリ株式会社 | メモリシステムおよびプロセッサシステム |
US20180173419A1 (en) | 2016-12-21 | 2018-06-21 | Western Digital Technologies, Inc. | Hybrid ssd with delta encoding |
US10409603B2 (en) | 2016-12-30 | 2019-09-10 | Intel Corporation | Processors, methods, systems, and instructions to check and store indications of whether memory addresses are in persistent memory |
JP6391719B2 (ja) | 2017-01-10 | 2018-09-19 | マイクロン テクノロジー, インク. | トレーニング、データ再構築および/またはシャドウィングを含むメモリシステムおよび方法 |
US11886732B2 (en) | 2017-01-31 | 2024-01-30 | Seagate Technology Llc | Data storage server with multi-memory migration |
US10482049B2 (en) | 2017-02-03 | 2019-11-19 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Configuring NVMe devices for redundancy and scaling |
US10866912B2 (en) | 2017-03-10 | 2020-12-15 | Toshiba Memory Corporation | Integrated heterogeneous solid state storage drive |
US10289555B1 (en) * | 2017-04-14 | 2019-05-14 | EMC IP Holding Company LLC | Memory read-ahead using learned memory access patterns |
US10747568B2 (en) | 2017-05-30 | 2020-08-18 | Magalix Corporation | Systems and methods for managing a cloud computing environment |
US10339067B2 (en) | 2017-06-19 | 2019-07-02 | Advanced Micro Devices, Inc. | Mechanism for reducing page migration overhead in memory systems |
KR102319189B1 (ko) | 2017-06-21 | 2021-10-28 | 삼성전자주식회사 | 스토리지 장치, 이를 포함하는 스토리지 시스템 및 스토리지 장치의 동작 방법 |
US20200174926A1 (en) | 2017-06-22 | 2020-06-04 | Telefonaktiebolaget Lm Ericsson (Publ) | Apparatuses and methods for allocating memory in a data center |
US10310985B2 (en) | 2017-06-26 | 2019-06-04 | Ati Technologies Ulc | Systems and methods for accessing and managing a computing system memory |
US10642744B2 (en) | 2017-06-28 | 2020-05-05 | Nvidia Corporation | Memory type which is cacheable yet inaccessible by speculative instructions |
US10152428B1 (en) | 2017-07-13 | 2018-12-11 | EMC IP Holding Company LLC | Virtual memory service levels |
US10540203B2 (en) | 2017-08-29 | 2020-01-21 | Micro Focus Llc | Combining pipelines for a streaming data system |
US20190095329A1 (en) * | 2017-09-27 | 2019-03-28 | Intel Corporation | Dynamic page allocation in memory |
CN109656833B (zh) | 2017-10-12 | 2022-11-11 | 慧荣科技股份有限公司 | 数据储存装置 |
US10678703B2 (en) | 2017-11-16 | 2020-06-09 | Micron Technology, Inc. | Namespace mapping structual adjustment in non-volatile memory devices |
US11138121B2 (en) * | 2017-11-20 | 2021-10-05 | Samsung Electronics Co., Ltd. | Systems and methods for efficient cacheline handling based on predictions |
US11231852B2 (en) | 2017-12-18 | 2022-01-25 | Microsoft Technology Licensing, Llc | Efficient sharing of non-volatile memory |
US20190213165A1 (en) | 2018-01-09 | 2019-07-11 | Qualcomm Incorporated | Priority scheme for fast arbitration procedures |
US11416395B2 (en) * | 2018-02-05 | 2022-08-16 | Micron Technology, Inc. | Memory virtualization for accessing heterogeneous memory components |
US10528489B2 (en) | 2018-02-28 | 2020-01-07 | Micron Technology, Inc. | Multiple memory type memory module systems and methods |
JP6508382B1 (ja) | 2018-03-26 | 2019-05-08 | 日本電気株式会社 | 情報処理装置、情報処理方法、プログラム |
US20190370043A1 (en) | 2018-04-30 | 2019-12-05 | Nutanix, Inc. | Cooperative memory management |
KR102518095B1 (ko) * | 2018-09-12 | 2023-04-04 | 삼성전자주식회사 | 스토리지 장치 및 시스템 |
US10795586B2 (en) * | 2018-11-19 | 2020-10-06 | Alibaba Group Holding Limited | System and method for optimization of global data placement to mitigate wear-out of write cache and NAND flash |
US11144231B2 (en) | 2018-12-12 | 2021-10-12 | International Business Machines Corporation | Relocation and persistence of named data elements in coordination namespace |
WO2020142431A1 (en) | 2019-01-02 | 2020-07-09 | Formulus Black Corporation | Systems and methods for memory failure prevention, management, and mitigation |
US11307768B2 (en) | 2019-06-07 | 2022-04-19 | Seagate Technology Llc | Namespace auto-routing data storage system |
US11650742B2 (en) | 2019-09-17 | 2023-05-16 | Micron Technology, Inc. | Accessing stored metadata to identify memory devices in which data is stored |
US11494311B2 (en) | 2019-09-17 | 2022-11-08 | Micron Technology, Inc. | Page table hooks to memory types |
US11269780B2 (en) | 2019-09-17 | 2022-03-08 | Micron Technology, Inc. | Mapping non-typed memory access to typed memory access |
US10963396B1 (en) | 2019-09-17 | 2021-03-30 | Micron Technology, Inc. | Memory system for binding data to a memory namespace |
US11899952B2 (en) | 2020-10-29 | 2024-02-13 | Seagate Technology Llc | Lossless namespace metadata management system |
US20220147279A1 (en) | 2020-11-06 | 2022-05-12 | Seagate Technology Llc | Heat management solid-state data storage system |
US11474749B2 (en) | 2021-01-21 | 2022-10-18 | EMC IP Holding Company LLC | Configuring host access for virtual volumes |
-
2019
- 2019-09-17 US US16/573,541 patent/US11269780B2/en active Active
-
2020
- 2020-09-07 TW TW109130616A patent/TWI781439B/zh active
- 2020-09-16 JP JP2022517124A patent/JP2022548642A/ja active Pending
- 2020-09-16 CN CN202080064975.4A patent/CN114402306A/zh active Pending
- 2020-09-16 WO PCT/US2020/051065 patent/WO2021055471A1/en unknown
- 2020-09-16 EP EP20865596.9A patent/EP4031975A4/en active Pending
- 2020-09-16 KR KR1020227008386A patent/KR20220045216A/ko unknown
-
2022
- 2022-02-07 US US17/665,823 patent/US11868268B2/en active Active
-
2024
- 2024-01-05 US US18/405,653 patent/US20240152464A1/en active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07254204A (ja) * | 1994-03-16 | 1995-10-03 | Toshiba Corp | 光ディスク装置 |
JP2005216053A (ja) * | 2004-01-30 | 2005-08-11 | Matsushita Electric Ind Co Ltd | 最適メモリ配置演算装置及び最適メモリ配置方法 |
JP2006099748A (ja) * | 2004-08-30 | 2006-04-13 | Hitachi Ltd | ストレージシステム及びデータ再配置制御装置。 |
US20140207741A1 (en) * | 2010-12-17 | 2014-07-24 | Microsoft Corporation | Data retention component and framework |
WO2013161073A1 (ja) * | 2012-04-27 | 2013-10-31 | 株式会社日立製作所 | データ管理システム及び方法 |
JP2015522886A (ja) * | 2012-07-18 | 2015-08-06 | マイクロン テクノロジー, インク. | 階層メモリシステムのためのメモリ管理 |
WO2015132873A1 (ja) * | 2014-03-04 | 2015-09-11 | 株式会社 東芝 | 階層化ブロックストレージ装置を有するコンピュータシステム、ストレージコントローラ、及びプログラム |
US20160124674A1 (en) * | 2014-11-04 | 2016-05-05 | Samsung Electronics Co., Ltd. | Method and apparatus for managing a plurality of memory devices |
JP2017027387A (ja) * | 2015-07-23 | 2017-02-02 | 株式会社東芝 | メモリシステム |
JP2017138852A (ja) * | 2016-02-04 | 2017-08-10 | 株式会社東芝 | 情報処理装置、記憶装置およびプログラム |
Also Published As
Publication number | Publication date |
---|---|
CN114402306A (zh) | 2022-04-26 |
EP4031975A1 (en) | 2022-07-27 |
US20220156201A1 (en) | 2022-05-19 |
US11269780B2 (en) | 2022-03-08 |
TWI781439B (zh) | 2022-10-21 |
EP4031975A4 (en) | 2023-10-18 |
US20240152464A1 (en) | 2024-05-09 |
TW202117536A (zh) | 2021-05-01 |
WO2021055471A1 (en) | 2021-03-25 |
US11868268B2 (en) | 2024-01-09 |
US20210081326A1 (en) | 2021-03-18 |
KR20220045216A (ko) | 2022-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI781439B (zh) | 映射未經分類之記憶體存取至經分類之記憶體存取 | |
TWI752620B (zh) | 與記憶體類型相關的頁表 | |
JP7427081B2 (ja) | メモリ名前空間へデータをバインドするためのメモリシステム | |
CN114402282B (zh) | 存取存储的元数据以识别存储数据的存储器装置 | |
CN110597742A (zh) | 用于具有持久***存储器的计算机***的改进存储模型 | |
US20240069758A1 (en) | Shared memory snapshots |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220516 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230221 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20230919 |