JP6944983B2 - ハイブリッドメモリ管理 - Google Patents
ハイブリッドメモリ管理 Download PDFInfo
- Publication number
- JP6944983B2 JP6944983B2 JP2019183022A JP2019183022A JP6944983B2 JP 6944983 B2 JP6944983 B2 JP 6944983B2 JP 2019183022 A JP2019183022 A JP 2019183022A JP 2019183022 A JP2019183022 A JP 2019183022A JP 6944983 B2 JP6944983 B2 JP 6944983B2
- Authority
- JP
- Japan
- Prior art keywords
- page
- data
- cache line
- main memory
- memory
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0835—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- 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/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- 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/1021—Hit rate improvement
-
- 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/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- 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/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Description
本明細書は、概してメモリシステムに関する。
さまざまなコンピュータおよび同様のシステムのためのデータおよび命令を維持して格納するために、多種多様なメモリデバイスを用いることができる。従来のコンピューティングシステムにおいては、典型的には、アプリケーションを高速で動作させるために、コンピュータのダイナミックメモリを動作させるためのダイナミックランダムアクセスメモリ(Dynamic Random Access Memory:DRAM)技術が用いられてきた。しかしながら、コンピュータシステムにおいてメインメモリとして用いられるDRAMは、もはや、過去におけるほど速やかに基準化されていない。結果として、DRAMストレージはコンピューティング環境においては限られたリソースになっている。
この明細書に記載される主題の革新的な一局面が具体化されるシステムおよび方法は、プロセッサの少なくとも1つのページテーブルウォーカでのページテーブルのスキャンに基づいて、アクセスビットがページテーブルの各ページテーブルエントリ毎に設定されているかどうかを、プロセッサで判断することを含む。アクセスビットは、ページテーブルエントリに関連付けられたページが最後のスキャン期間においてアクセスされたかどうかを示している。当該システムおよび方法はさらに、アクセスビットがページに関連付けられたページテーブルエントリ毎に設定されていないと判断したことに応じて、各ページ毎にカウントをインクリメントすることと、アクセスビットが各ページテーブルエントリ毎に設定されているかどうかをプロセッサで判断した後、アクセスビットをリセットすることと、データの第1のページにアクセスするようにとの要求をメインメモリから受取ることと、データの第1のページがメインメモリに格納されていないと判断したことに基づいて、ページフォルトを開始することと、ダイレクトメモリアクセス(direct memory access:DMA)エンジンを用いてページフォルトを処理することとを含む。
二次メモリからメインメモリに転送することとを含む。
新しい不揮発性メモリ技術は、メモリもしくはIOバスを介してローカルにアクセスされ得るか、または高速ネットワークを介して遠隔でアクセスされ得る。これらの技術の性能は2つの重要な意味合いを持っている。第1に、これらの技術は、アクセスするためのソフトウェアオーバーヘッドを最小限にしなければならないほどに高速であり、第2に、これらの技術は、DRAMが典型的にキャッシュとして用いられ得るほどに十分に低速である。これらのタイプの不揮発性メモリの利点を利用するために、アプリケーションがデータ配置を明確に管理する必要があるか、または、システムが、メモリのさまざまな部分同士の間でデータをトランスペアレントに移動させる自動管理を実行しなければならない。
図1は、本開示の実現例に従ったメモリデバイスを含むシステム100の一例を示す。中央処理装置(central processing unit:CPU)110は、DRAM120およびメ
モリ管理ユニット(memory management unit:MMU)150と通信し得る。システム100はさらに、ネットワークを介してアクセスされ得るリモートメモリ130を含んでもよい。キャッシュエージェント140およびホームエージェント145は、メモリを管理しているMMU150と共に動作し得る。キャッシュエージェントという語は、キャッシュデータを格納し、メモリ要求を開始することができる処理ユニットエージェントを指している。言いかえれば、キャッシュエージェントという語は、コヒーレントメモリへのトランザクションを開始し得るエンティティであって、それ自体のキャッシュ構造にコピーを保持し得るエンティティを表わし得る。ホームエージェント145はたとえばメモリコントローラであってもよい。ホームエージェントという語は、メモリの一領域または一部分を管理または所有する処理ユニットエージェントを指している。言いかえれば、ホームエージェントという語は、コヒーレントトランザクションを処理する(services)エンティティ、コヒーレントメモリの一部を監視するエンティティ、および/または、さまざまなキャッシュエージェント間で生じる可能性のある矛盾を管理するエンティティを表わし得る。加えて、ページテーブルウォーカ160およびトランスレーション・ルックアサイド・バッファ(translation lookaside buffer:TLB)165は、MMU150の一部であり得るか、またはMMU150で実現され得る。
マイグレーションのためにDMAエンジン230が用いられてもよい。二次ストレージ240は、CPU210によって直接アクセスされない可能性もある二番手のメモリとして機能するメモリデバイスであってもよい。DMAエンジン230は、CPU210に直接接続されてもよく、またはキャッシュエージェントなどの別個のエンティティの一部であってもよい。CPU210がメインメモリ(すなわち第1層のメモリまたは一次メモリ)として、DRAM220からページにアクセスしようと試みて、そのページがページアウトされており二次ストレージ240に存在している場合、ページフォルトが発生する可能性がある。ページフォルトは、オペレーティングシステム(operating system:OS)が
二次ストレージ240からメインメモリ、DRAM220にページを移動させる必要があることを示し得る。この明細書中に記載される実施形態に従うと、ハードウェアDMAエンジン230は、ページフォルトを管理して、メインメモリDRAM220にはないページにアクセスしようとする試みを検出する。これに応じて、ページフォルトが処理されている間、スレッドの実行はストールされている。次いで、メインメモリDRAM220にアクセスするためにスレッドがリリースされて、実行が継続され得る。
バッキングストアから空きページ位置にコピーされ得る。空きページがない「no」である場合、360において、ページがFIFO待ち行列から引出されてよく、最も新しく到着したものが後ろに配置され最も古く到着したものが前に配置されている状態で、待ち行列にあるメモリ内の全ページを追跡し得る。そのページが汚染されている場合、すなわち、変更されていた場合、370において、システムは二次メモリまたはバッキングストアにページを書き込んでもよい。ページをメインメモリから二次メモリに転送する際、380において、ページに関連付けられたページテーブルエントリが無効にされてもよく、ページに関連付けられたいずれかのエントリのためのTLBシュートダウンが実行されてもよく、たとえば、他のプロセッサのためにTLBエントリがフラッシュされてもよい。このときそのページが空いていれば、330において、ページデータが二次ストレージまたはバッキングストアから空きページ位置にコピーされ得る。ページに関連付けられたPTEを更新してページのメインメモリにおける位置を指し示すことによって有効なPTEを作成するために、340において、ページテーブルが更新されてもよい。ページフォルトが処理されると、スレッドまたは実行プログラムが350において再開され得る。
いて、システムが、FIFO待ち行列にある次のページを判断し得る。370において、そのページが汚染されている場合、すなわち変更されていた場合、システムは二次メモリ
またはバッキングストアにページを書き込み得る。メインメモリから二次メモリにページを転送する際、380において、ページに関連付けられたページテーブルエントリが無効にされ得るとともに、ページに関連付けられたいずれかのエントリのためのTLBシュートダウンが実行され得る。そのページが空きページであれば、325において、空きページの数がしきい値を満たしているかどうかが、再度、判断され得る。
ブルウォーカと密に結合されたハードウェアモジュールで実現されてもよく、または、MMUにおいて実現されてもよい。なぜなら、MMUは、IO装置において既に利用可能な1つ以上のページテーブルウォーカを有し得るからである。したがって、上述したように、そのハードウェアはページテーブルをスキャンし得るとともに、各PTEのアクセスビットを用いて、最後のスキャンがなされて以来アクセスビットが設定されたかどうかの判断に基づいて、各ページの各々の古さを判断し得る。たとえば、アクセスビットが設定されているのであれば、最後のスキャン期間内にそのページにクセスされていたこととなる。そうではなく、アクセスビットが設定されていない場合、ページにはアクセスされておらず、コールド(「cold」)である(たとえば最後のスキャン期間中にはアクセスされていない)と判断される可能性がある。有利には、ハードウェアによって判断されるこれらの使用統計またはアクセス統計は、ソフトウェアおよびサンプリング技術を必要とする現在の方法よりも精密かつ正確であり得る。
合、たとえば、ページ毎のカウントが大きくなればなるほど、ページは、よりコールドになる。ページがアクセスされ、アクセスビットが設定されると、そのカウントはゼロにリセットされ得る。ページテーブルはアクセスビットに対する変更を検出するために定期的にスキャンされてもよく、すべてのアクセスビットは各スキャン毎にクリアされてもよい。このため、カウントは、ページの古さを表わし得る。すなわち、ページがどのくらいの期間アクセスされていなかったかを表わし得る。
クランダムアクセスメモリに格納された各ページ毎のカウンタによって維持されてもよく、または、カウンティング・ブルーム・フィルタが、ページの設定についてのアクセス統計を維持してもよい。代替的には、各ページ毎のカウンタは、ダイナミックランダムアクセスメモリ(たとえば、少量の専用のDRAMまたはシステムDRAM)に格納されてもよい。
「コールド(cold)」であるかどうか(すなわち、どれくらい最近アクセスされたか、どれくらいの頻度でアクセスされたか、または、再びアクセスされる可能性があるかどうか)に基づいて、自動的にデータを移行するために、上述の使用統計またはアクセス統計を利用することが有益であるかもしれない。
になりつつあること(すなわちアクセスの頻度の増大)を判断するだけではなく、メインメモリDRAM内のどのページが「コールド(cold)」になりつつあるか(すなわち、アクセスの頻繁の減少)を判断することも有利である。言いかえれば、メインメモリよりも低速であり得る二次メモリにおいてどのページがより頻繁にアクセスされているかを判断すること、および、メインメモリにおいてどのページへのアクセス頻度がより低いかを判断することである。メインメモリにおいてどのページへのアクセス頻度がより低いかを判断する1つのプロセスは、たとえば、未設定であるアクセスビットのカウントに基づいて、メインメモリDRAMについての使用統計またはアクセス統計に関連付けて上述したとおりである。システムは、いつデータをメインメモリDRAMから二次メモリに移動させるべきかと、メインメモリについて上述されたアクセス統計に基づいて、いつデータを二次メモリからメインメモリDRAMに移動させるべきかとを判断し得るとともに、二次メモリに連結されたホームエージェントを利用して、二次メモリについてのアクセス統計を判断し得る。
かまたはより頻繁にアクセスされているそれらのページは、これらのアクセスを検出するホームエージェントを介して二次メモリへのメモリアクセスを管理するハードウェアによって判断されてもよい。なぜなら、物理アドレス範囲がホームエージェントによって所有されているからである。それらの判断されたアクセスに基づいて、ページ毎のアクセスカウンタが、たとえばオンチップSRAMにおいて維持されてもよい。代替的には、二次メモリのサイズが大きいせいで、カウンタのハードウェア面積コストがより高くなる可能性があるので、カウンティング・ブルーム・フィルタを用いて、ページの設定についてのアクセス統計を維持することによって、面積を節約し得る。代替的には、ハードウェアは少量の専用のDRAMを用いてもよく、または、システムDRAMにカウンタを格納してもよい。
。520において、メインメモリにおける各ページ毎のカウントは、アクセスビットがページに関連付けられたPTE毎に設定されていないと判断したことに応じて、インクリメントされ得る。代替的には、メインメモリにおける各ページ毎のカウントは、アクセスビットがページに関連付けられたPTE毎に設定されていると判断したことに応じて、インクリメントされ得る。アクセスビットが各PTE毎に設定されているかどうかを判断した後、530において、プロセッサはアクセスビットをリセットし得る。メインメモリにおける各ページ毎のカウントは、スタティックランダムアクセスメモリに格納された各ページ毎のカウンタによって維持されてもよく、または、カウンティング・ブルーム・フィルタが、ページの設定についてのアクセス統計を維持してもよい。代替的には、各ページ毎のカウンタは、ダイナミックランダムアクセスメモリ(たとえば少量の専用のDRAMまたはシステムDRAM)において格納されてもよい。
を排他的に保持し得る。ハードウェアがキャッシュラインを転送し終えた後、キャッシュエージェント140は、そのキャッシュラインの所有権をリリースしてもよく、これにより、将来の要求がホストのキャッシュまたはホストDRAMから提供され得ることとなる。さらに、たとえば、ページが転送されている間に、ホストがページ内の他のキャッシュラインのうちの1つにアクセスしようと試みたとき、ハードウェアは、キャッシュ・コヒーレンス・メカニズムに従って、その他のキャッシュラインのためのスヌープ要求(たとえば、プロセッサ間キャッシュコヒーレンシ動作)を認識し得るとともに、他のキャッシュラインが二次メモリから転送されたときには、スヌープ要求に応じて他のキャッシュラインを提供し得る。
ータのページに関連付けられたページテーブルエントリを更新して、メインメモリにおけるデータのページの位置を示し、データのページの残余部分を二次メモリからメインメモリに転送するための方法、システムおよび装置に向けられている。
DRAM、180 不揮発性メモリ。
Claims (17)
- コンピュータによって実現される方法であって、
データのページの第1のキャッシュラインにアクセスするようにとの要求をメインメモリから受取るステップと、
前記第1のキャッシュラインが前記メインメモリに格納されず、二次メモリに格納されていると判断するステップと、これに応じて、
データのページ全体を転送することなく、前記データのページの前記第1のキャッシュラインを前記二次メモリから前記メインメモリに転送するステップとを含み、前記データのページの残余部分は前記二次メモリに格納されたままであり、前記方法はさらに、
前記データのページに関連付けられたページテーブルエントリを更新して、前記メインメモリにおける前記データのページの位置を示すステップと、
前記データのページの第2のキャッシュラインのアクセスを処理するために、前記データのページの前記残余部分を前記二次メモリから前記メインメモリに転送するステップとを含み、前記転送するステップは、
前記データのページにおけるキャッシュラインの所有権についての要求を、キャッシュエージェントによって発行するステップと、
前記キャッシュエージェントにより、前記キャッシュラインが前記二次メモリから前記メインメモリに転送されていることに応じて各キャッシュラインの前記キャッシュエージェントによる所有権をリリースするステップとを含む、方法。 - キャッシュ・コヒーレンシ・メカニズムは、前記データのページの前記第2のキャッシュラインの前記アクセスを処理するために、前記データのページの前記残余部分を前記二次メモリから前記メインメモリに転送する間に、実現される、請求項1に記載の方法。
- 前記キャッシュエージェントのキャッシュに前記データのページのキャッシュラインを格納するステップをさらに含む、請求項1または2に記載の方法。
- 前記データのページのキャッシュラインに関連付けられたタグおよびコヒーレンス状態ビットを格納するステップをさらに含む、請求項1から3のいずれか1項に記載の方法。
- 前記データのページの前記残余部分が転送されている間に、前記データのページの前記第2のキャッシュラインにアクセスするようにとの要求に応じて、前記第2のキャッシュラインについてのスヌープ要求を認識し、前記第2のキャッシュラインが前記二次メモリから転送されると前記スヌープ要求に応じて前記第2のキャッシュラインを戻すステップをさらに含む、請求項1から4のいずれか1項に記載の方法。
- 前記メインメモリがページ転送を受取ることができない場合、前記メインメモリに格納された使用頻度が最も低いページのうちの1ページを決定し、前記使用頻度が最も低いページのうちの前記1ページを前記二次メモリにリリースし、前記使用頻度が最も低いページのうちリリースされた前記1ページの位置において、前記データのページを前記二次メモリから前記メインメモリに転送するステップをさらに含む、請求項1から5のいずれか1項に記載の方法。
- システムであって、
1つ以上のプロセッサと、
実施可能な命令を格納する1つ以上の記憶装置とを備え、前記命令は、前記1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに以下の動作を実行させ、前記以下の動作は、
データのページの第1のキャッシュラインにアクセスするようにとの要求をメインメモリから受取る動作と、
前記第1のキャッシュラインが前記メインメモリに格納されず、二次メモリに格納されていると判断する動作と、
データのページ全体を転送することなく、前記データのページの前記第1のキャッシュラインを前記二次メモリから前記メインメモリに転送する動作とを含み、前記データのページの残余部分は前記二次メモリに格納されたままであり、前記以下の動作はさらに、
前記データのページに関連付けられたページテーブルエントリを更新して、前記メインメモリにおける前記データのページの位置を示す動作と、
前記データのページの第2のキャッシュラインのアクセスを処理するために、前記データのページの前記残余部分を前記二次メモリから前記メインメモリに転送する動作とを含み、前記転送する動作は、
前記データのページにおけるキャッシュラインの所有権についての要求を、キャッシュエージェントによって発行する動作と、
前記キャッシュエージェントにより、前記キャッシュラインが前記二次メモリから前記メインメモリに転送されていることに応じて各キャッシュラインの前記キャッシュエージェントによる所有権をリリースする動作とを含む、システム。 - キャッシュ・コヒーレンシ・メカニズムは、前記データのページの前記第2のキャッシュラインの前記アクセスを処理するために、前記データのページの前記残余部分を前記二次メモリから前記メインメモリに転送する間に、実現される、請求項7に記載のシステム。
- 前記動作はさらに、
前記キャッシュエージェントのキャッシュに前記データのページのキャッシュラインを格納することを含む、請求項7または8に記載のシステム。 - 前記動作はさらに、
前記データのページのキャッシュラインに関連付けられたタグおよびコヒーレンス状態ビットを格納することを含む、請求項7から9のいずれか1項に記載のシステム。 - 前記動作はさらに、
前記データのページの前記残余部分が転送されている間に、前記データのページの前記第2のキャッシュラインにアクセスするようにとの要求に応じて、前記第2のキャッシュラインについてのスヌープ要求を認識し、前記第2のキャッシュラインが前記二次メモリから転送されると前記スヌープ要求に応じて前記第2のキャッシュラインを戻すことを含む、請求項7から10のいずれか1項に記載のシステム。 - 前記動作はさらに、
前記メインメモリがページ転送を受取ることができない場合、前記メインメモリに格納された使用頻度が最も低いページのうちの1ページを決定し、前記使用頻度が最も低いページのうちの前記1ページを前記二次メモリにリリースし、前記使用頻度が最も低いページのうちリリースされた前記1ページの位置において、前記データのページを前記二次メモリから前記メインメモリに転送することを含む、請求項7から11のいずれか1項に記載のシステム。 - 1つ以上のプロセッサに命令を実行させるプログラムであって、前記命令は、実行されると、前記1つ以上のプロセッサに以下の動作を実行させ、前記以下の動作は、
データのページの第1のキャッシュラインにアクセスするようにとの要求をメインメモリから受取ることと、
前記第1のキャッシュラインが前記メインメモリに格納されず、二次メモリに格納されていると判断することと、
データのページ全体を転送することなく、前記データのページの前記第1のキャッシュラインを前記二次メモリから前記メインメモリに転送することとを含み、前記データのページの残余部分は前記二次メモリに格納されたままであり、前記以下の動作はさらに、
前記データのページに関連付けられたページテーブルエントリを更新して、前記メインメモリにおける前記データのページの位置を示すことと、
前記データのページの第2のキャッシュラインのアクセスを処理するために、前記データのページの前記残余部分を前記二次メモリから前記メインメモリに転送することとを含み、前記転送することは、
前記データのページにおけるキャッシュラインの所有権についての要求を、キャッシュエージェントによって発行することと、
前記キャッシュエージェントにより、前記キャッシュラインが前記二次メモリから前記メインメモリに転送されていることに応じて各キャッシュラインの前記キャッシュエージェントによる所有権をリリースすることとを含む、プログラム。 - キャッシュ・コヒーレンシ・メカニズムは、前記データのページの前記第2のキャッシュラインの前記アクセスを処理するために、前記データのページの前記残余部分を前記二次メモリから前記メインメモリに転送する間に、実現される、請求項13に記載のプログラム。
- 前記動作はさらに、
(i)前記キャッシュエージェントのキャッシュにおける前記データのページのキャッシュライン、または、(ii)前記データのページのキャッシュラインに関連付けられたタグおよびコヒーレンス状態ビット、のうち1つを格納することを含む、請求項13または14に記載のプログラム。 - 前記動作はさらに、
前記データのページの前記残余部分が転送されている間に、前記データのページの前記第2のキャッシュラインにアクセスするようにとの要求に応じて、前記第2のキャッシュラインについてのスヌープ要求を認識し、前記第2のキャッシュラインが前記二次メモリから転送されると前記スヌープ要求に応じて前記第2のキャッシュラインを戻すことを含む、請求項13から15のいずれか1項に記載のプログラム。 - 前記動作はさらに、
前記メインメモリがページ転送を受取ることができない場合、前記メインメモリに格納された使用頻度が最も低いページのうちの1ページを決定し、前記使用頻度が最も低いページのうちの前記1ページを前記二次メモリにリリースし、前記使用頻度が最も低いページのうちリリースされた前記1ページの位置において、前記データのページを前記二次メモリから前記メインメモリに転送することを含む、請求項13から16のいずれか1項に記載のプログラム。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/236,171 US10037173B2 (en) | 2016-08-12 | 2016-08-12 | Hybrid memory management |
US15/235,495 US10152427B2 (en) | 2016-08-12 | 2016-08-12 | Hybrid memory management |
US15/235,495 | 2016-08-12 | ||
US15/236,171 | 2016-08-12 | ||
JP2017156543A JP2018026136A (ja) | 2016-08-12 | 2017-08-14 | ハイブリッドメモリ管理 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017156543A Division JP2018026136A (ja) | 2016-08-12 | 2017-08-14 | ハイブリッドメモリ管理 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2020009492A JP2020009492A (ja) | 2020-01-16 |
JP2020009492A5 JP2020009492A5 (ja) | 2020-09-24 |
JP6944983B2 true JP6944983B2 (ja) | 2021-10-06 |
Family
ID=60579714
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017156543A Pending JP2018026136A (ja) | 2016-08-12 | 2017-08-14 | ハイブリッドメモリ管理 |
JP2019183022A Active JP6944983B2 (ja) | 2016-08-12 | 2019-10-03 | ハイブリッドメモリ管理 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017156543A Pending JP2018026136A (ja) | 2016-08-12 | 2017-08-14 | ハイブリッドメモリ管理 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10037173B2 (ja) |
EP (2) | EP3291097A3 (ja) |
JP (2) | JP2018026136A (ja) |
CN (2) | CN107729168A (ja) |
DE (2) | DE202017104841U1 (ja) |
TW (1) | TWI643073B (ja) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10108550B2 (en) | 2016-09-22 | 2018-10-23 | Google Llc | Memory management supporting huge pages |
US10437800B2 (en) * | 2016-12-02 | 2019-10-08 | International Business Machines Corporation | Data migration using a migration data placement tool between storage systems based on data access |
US10437799B2 (en) * | 2016-12-02 | 2019-10-08 | International Business Machines Corporation | Data migration using a migration data placement tool between storage systems based on data access |
US20180336158A1 (en) * | 2017-05-16 | 2018-11-22 | Dell Products L.P. | Systems and methods for data transfer with coherent and non-coherent bus topologies and attached external memory |
WO2020056610A1 (zh) * | 2018-09-18 | 2020-03-26 | 华为技术有限公司 | 一种存储装置及电子设备 |
US11609858B2 (en) | 2018-12-26 | 2023-03-21 | Samsung Electronics Co., Ltd. | Bypass predictor for an exclusive last-level cache |
US11113207B2 (en) * | 2018-12-26 | 2021-09-07 | Samsung Electronics Co., Ltd. | Bypass predictor for an exclusive last-level cache |
KR20200085522A (ko) * | 2019-01-07 | 2020-07-15 | 에스케이하이닉스 주식회사 | 이종 메모리를 갖는 메인 메모리 장치, 이를 포함하는 컴퓨터 시스템 및 그것의 데이터 관리 방법 |
US11474828B2 (en) | 2019-10-03 | 2022-10-18 | Micron Technology, Inc. | Initial data distribution for different application processes |
US11436041B2 (en) | 2019-10-03 | 2022-09-06 | Micron Technology, Inc. | Customized root processes for groups of applications |
US11599384B2 (en) | 2019-10-03 | 2023-03-07 | Micron Technology, Inc. | Customized root processes for individual applications |
US11429445B2 (en) | 2019-11-25 | 2022-08-30 | Micron Technology, Inc. | User interface based page migration for performance enhancement |
KR102400977B1 (ko) | 2020-05-29 | 2022-05-25 | 성균관대학교산학협력단 | 프로세서를 통한 페이지 폴트 처리 방법 |
US11393548B2 (en) * | 2020-12-18 | 2022-07-19 | Micron Technology, Inc. | Workload adaptive scans for memory sub-systems |
CN113311994A (zh) * | 2021-04-09 | 2021-08-27 | 中企云链(北京)金融信息服务有限公司 | 一种基于高并发的数据缓存方法 |
JP2022161746A (ja) | 2021-04-09 | 2022-10-21 | 富士通株式会社 | 情報処理プログラム、情報処理方法、および情報処理装置 |
US11733902B2 (en) * | 2021-04-30 | 2023-08-22 | International Business Machines Corporation | Integrating and increasing performance of disaggregated memory in operating systems |
CN114201444B (zh) * | 2021-12-06 | 2023-11-14 | 海飞科(南京)信息技术有限公司 | 用于存储管理的方法、介质、程序产品、系统和装置 |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6159557A (ja) * | 1984-08-30 | 1986-03-27 | Toshiba Corp | 仮想記憶制御装置 |
JPH047653A (ja) * | 1990-04-25 | 1992-01-13 | Matsushita Electric Ind Co Ltd | 仮想記憶メモリ装置 |
US5361345A (en) | 1991-09-19 | 1994-11-01 | Hewlett-Packard Company | Critical line first paging system |
JPH05241958A (ja) * | 1992-02-26 | 1993-09-21 | Nec Corp | 仮想記憶制御方式 |
US5493663A (en) | 1992-04-22 | 1996-02-20 | International Business Machines Corporation | Method and apparatus for predetermining pages for swapping from physical memory in accordance with the number of accesses |
US5432917A (en) * | 1992-04-22 | 1995-07-11 | International Business Machines Corporation | Tabulation of multi-bit vector history |
US5613153A (en) | 1994-10-03 | 1997-03-18 | International Business Machines Corporation | Coherency and synchronization mechanisms for I/O channel controllers in a data processing system |
US6029224A (en) | 1995-06-07 | 2000-02-22 | Lucent Technologies Inc. | Self-contained memory apparatus having diverse types of memory and distributed control |
US6671791B1 (en) | 2001-06-15 | 2003-12-30 | Advanced Micro Devices, Inc. | Processor including a translation unit for selectively translating virtual addresses of different sizes using a plurality of paging tables and mapping mechanisms |
US6782453B2 (en) * | 2002-02-12 | 2004-08-24 | Hewlett-Packard Development Company, L.P. | Storing data in memory |
JP3982353B2 (ja) | 2002-07-12 | 2007-09-26 | 日本電気株式会社 | フォルトトレラントコンピュータ装置、その再同期化方法及び再同期化プログラム |
US6804729B2 (en) | 2002-09-30 | 2004-10-12 | International Business Machines Corporation | Migrating a memory page by modifying a page migration state of a state machine associated with a DMA mapper based on a state notification from an operating system kernel |
US20040117587A1 (en) * | 2002-12-12 | 2004-06-17 | International Business Machines Corp. | Hardware managed virtual-to-physical address translation mechanism |
JP2005216053A (ja) * | 2004-01-30 | 2005-08-11 | Matsushita Electric Ind Co Ltd | 最適メモリ配置演算装置及び最適メモリ配置方法 |
US7409580B2 (en) | 2005-02-09 | 2008-08-05 | International Business Machines Corporation | System and method for recovering from errors in a data processing system |
US7546416B2 (en) * | 2006-06-26 | 2009-06-09 | Micron Technology, Inc. | Method for substantially uninterrupted cache readout |
US7882309B2 (en) * | 2007-07-26 | 2011-02-01 | Globalfoundries Inc. | Method and apparatus for handling excess data during memory access |
US8055876B2 (en) | 2008-06-06 | 2011-11-08 | International Business Machines Corporation | Selectively mark free frames as unused for cooperative memory over-commitment |
US20100070678A1 (en) * | 2008-09-12 | 2010-03-18 | Vmware, Inc. | Saving and Restoring State Information for Virtualized Computer Systems |
US8832353B2 (en) * | 2009-04-07 | 2014-09-09 | Sandisk Technologies Inc. | Host stop-transmission handling |
JP2011165093A (ja) * | 2010-02-12 | 2011-08-25 | Nippon Telegr & Teleph Corp <Ntt> | メモリアクセス調査装置、メモリアクセス調査方法、及びプログラム |
US9015441B2 (en) * | 2010-04-30 | 2015-04-21 | Microsoft Technology Licensing, Llc | Memory usage scanning |
US9195612B2 (en) * | 2011-11-29 | 2015-11-24 | Microsoft Technology Licensing, Llc | Computer system with memory aging for high performance |
US9330736B2 (en) * | 2012-11-09 | 2016-05-03 | Qualcomm Incorporated | Processor memory optimization via page access counting |
US10133677B2 (en) | 2013-03-14 | 2018-11-20 | Nvidia Corporation | Opportunistic migration of memory pages in a unified virtual memory system |
US10409730B2 (en) | 2013-03-15 | 2019-09-10 | Nvidia Corporation | Microcontroller for memory management unit |
US20150058520A1 (en) | 2013-08-22 | 2015-02-26 | International Business Machines Corporation | Detection of hot pages for partition migration |
US9535831B2 (en) | 2014-01-10 | 2017-01-03 | Advanced Micro Devices, Inc. | Page migration in a 3D stacked hybrid memory |
US20170177482A1 (en) * | 2015-12-18 | 2017-06-22 | Intel Corporation | Computing system having multi-level system memory capable of operating in a single level system memory mode |
US10114559B2 (en) | 2016-08-12 | 2018-10-30 | International Business Machines Corporation | Generating node access information for a transaction accessing nodes of a data set index |
-
2016
- 2016-08-12 US US15/236,171 patent/US10037173B2/en active Active
-
2017
- 2017-08-11 DE DE202017104841.1U patent/DE202017104841U1/de active Active
- 2017-08-11 EP EP17185832.7A patent/EP3291097A3/en not_active Withdrawn
- 2017-08-11 TW TW106127201A patent/TWI643073B/zh active
- 2017-08-11 DE DE202017104840.3U patent/DE202017104840U1/de active Active
- 2017-08-11 EP EP17185833.5A patent/EP3282364B1/en active Active
- 2017-08-14 JP JP2017156543A patent/JP2018026136A/ja active Pending
- 2017-08-14 CN CN201710691364.2A patent/CN107729168A/zh active Pending
- 2017-08-14 CN CN201911227514.XA patent/CN111177030B/zh active Active
-
2019
- 2019-10-03 JP JP2019183022A patent/JP6944983B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
TW201810057A (zh) | 2018-03-16 |
JP2018026136A (ja) | 2018-02-15 |
EP3291097A2 (en) | 2018-03-07 |
DE202017104841U1 (de) | 2017-11-22 |
EP3282364B1 (en) | 2019-10-09 |
DE202017104840U1 (de) | 2017-12-12 |
CN107729168A (zh) | 2018-02-23 |
EP3282364A1 (en) | 2018-02-14 |
CN111177030B (zh) | 2021-08-20 |
US10037173B2 (en) | 2018-07-31 |
TWI643073B (zh) | 2018-12-01 |
US20180046411A1 (en) | 2018-02-15 |
EP3291097A3 (en) | 2018-05-30 |
CN111177030A (zh) | 2020-05-19 |
JP2020009492A (ja) | 2020-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6944983B2 (ja) | ハイブリッドメモリ管理 | |
US10705975B2 (en) | Hybrid memory management | |
CN110209601B (zh) | 存储器接口 | |
CN109791523B (zh) | 支持巨页的内存管理 | |
US8180981B2 (en) | Cache coherent support for flash in a memory hierarchy | |
CN110209610B (zh) | 存储器接口 | |
EP3596601A1 (en) | Memory access monitoring | |
US20130227224A1 (en) | Information processing apparatus, control method, and computer-readable recording medium | |
US20140006716A1 (en) | Data control using last accessor information | |
US10754791B2 (en) | Software translation prefetch instructions | |
CN115087961B (zh) | 用于相干及非相干存储器请求的仲裁方案 | |
US20220197506A1 (en) | Data placement with packet metadata | |
EP3724774B1 (en) | Rinsing cache lines from a common memory page to memory | |
JP2017107320A (ja) | 情報処理装置、演算処理装置および情報処理装置の制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20200812 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200812 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20210817 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20210913 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6944983 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |