JP2018026136A - ハイブリッドメモリ管理 - Google Patents
ハイブリッドメモリ管理 Download PDFInfo
- Publication number
- JP2018026136A JP2018026136A JP2017156543A JP2017156543A JP2018026136A JP 2018026136 A JP2018026136 A JP 2018026136A JP 2017156543 A JP2017156543 A JP 2017156543A JP 2017156543 A JP2017156543 A JP 2017156543A JP 2018026136 A JP2018026136 A JP 2018026136A
- Authority
- JP
- Japan
- Prior art keywords
- page
- memory
- data
- main memory
- access
- 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
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/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
- 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/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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
【解決手段】ページテーブルエントリに関連付けられたページが最後のスキャン期間にアクセスされたか否かを示すアクセスビットがページテーブルの各ページテーブルエントリ毎に設定されているか否かを少なくとも1つのページテーブルウォーカでのページテーブルのスキャンに基づいて判断し、アクセスビットがページに関連付けられたページテーブルエントリ毎に設定されているとの判断に応じて各ページ毎にカウントをインクリメントし、アクセスビットが各ページテーブルエントリ毎に設定されているか否かの判断後にアクセスビットをリセットし、データの第1のページへのアクセス要求をメインメモリから受取り、データの第1のページがメインメモリに格納されていないとの判断に基づいてページフォルトを開始し、DMAエンジンでページフォルトを処理する。
【選択図】図1
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で実現され得る。
Claims (41)
- コンピュータによって実現される方法であって、
ページテーブルスキャナでのページテーブルのスキャンに基づいて、アクセスビットが前記ページテーブルの各ページテーブルエントリ毎に設定されているかどうかを、プロセッサで判断するステップを含み、前記アクセスビットは、前記ページテーブルエントリに関連付けられたページが最後のスキャン期間においてアクセスされたかどうかを示しており、前記方法はさらに、
前記アクセスビットが前記ページに関連付けられた前記ページテーブルエントリ毎に設定されていないと判断したことに応じて、各ページ毎にカウントをインクリメントするステップと、
前記アクセスビットが各ページテーブルエントリ毎に設定されているかどうかを前記プロセッサで判断した後、前記アクセスビットをリセットするステップと、
データの第1のページにアクセスするようにとの要求をメインメモリから受取るステップと、
前記データの第1のページが前記メインメモリに格納されていないと判断したことに基づいて、ページフォルトを開始するステップと、
ダイレクトメモリアクセス(DMA)エンジンを用いて前記ページフォルトを処理するステップとを含み、
DMAエンジンを用いて前記ページフォルトを処理する前記ステップは、
前記メインメモリがページ転送を受取ることができないと判断したことに応じて、各ページ毎の前記カウントに基づいて特定のページを決定し、前記二次メモリに前記特定のページをリリースし、前記リリースされた特定のページの位置において、前記データの第1のページを前記二次メモリから前記メインメモリに転送するステップを含む、方法。 - 前記特定のページは、各ページ毎の前記カウントに基づいて、使用頻度が最も低いページのうちの1つであると判断される、請求項1に記載の方法。
- 前記ページフォルトを開始する前記ステップは、前記ページフォルトが処理されている間、スレッドの実行をストールさせるステップと、
前記ページフォルトが処理された後、前記メインメモリにアクセスするために前記スレッドをリリースするステップとを含む、請求項1に記載の方法。 - 各ページ毎の前記カウントは、スタティックランダムアクセスメモリに格納された各ページ毎のカウンタ、カウンティング・ブルーム・フィルタ、または、ダイナミックランダムアクセスメモリに格納された各ページ毎のカウンタ、のうち少なくとも1つによって維持される、請求項1に記載の方法。
- システムであって、
1つ以上のプロセッサと、
メインメモリおよび二次メモリを含むメモリとを含み、前記メモリは、実施可能な命令を格納しており、前記命令は、実行されると、前記1つ以上のプロセッサに以下の動作を実行させ、前記以下の動作は、
ページテーブルスキャナでのページテーブルのスキャンに基づいて、アクセスビットが前記ページテーブルの各ページテーブルエントリ毎に設定されているかどうかを、プロセッサで判断する動作を含み、前記アクセスビットは、前記ページテーブルエントリに関連付けられたページが最後のスキャン期間においてアクセスされたかどうかを示しており、前記以下の動作はさらに、
前記アクセスビットが前記ページに関連付けられた前記ページテーブルエントリ毎に設定されていないと判断したことに応じて、各ページ毎にカウントをインクリメントする動作と、
前記アクセスビットが各ページテーブルエントリ毎に設定されているかどうかを前記プロセッサで判断した後、前記アクセスビットをリセットする動作と、
データの第1のページにアクセスするようにとの要求をメインメモリから受取る動作と、
前記データの第1のページが前記メインメモリに格納されていないと判断したことに基づいて、ページフォルトを開始する動作と、
ダイレクトメモリアクセス(DMA)エンジンを用いて前記ページフォルトを処理する動作とを含み、
DMAエンジンを用いて前記ページフォルトを処理する前記動作は、
前記メインメモリがページ転送を受取ることができないと判断したことに応じて、各ページ毎の前記カウントに基づいて特定のページを決定し、前記特定のページを前記二次メモリにリリースし、前記リリースされた特定のページの位置において、前記データの第1のページを前記二次メモリから前記メインメモリに転送する動作を含む、システム。 - 前記特定のページは、各ページ毎の前記カウントに基づいて、使用頻度が最も低いページのうちの1つであると判断される、請求項5に記載のシステム。
- 前記ページフォルトを開始する前記動作は、
前記ページフォルトが処理されている間、スレッドの実行をストールさせる動作と、
前記ページフォルトが処理された後、前記メインメモリにアクセスするために前記スレッドをリリースする動作とを含む、請求項5に記載のシステム。 - 各ページ毎の前記カウントは、
スタティックランダムアクセスメモリに格納された各ページ毎のカウンタ、カウンティング・ブルーム・フィルタ、または、ダイナミックランダムアクセスメモリに格納された各ページ毎のカウンタ、のうち少なくとも1つによって維持される、請求項5に記載のシステム。 - コンピュータによって実現される方法であって、
少なくとも1つのページテーブルウォーカでのページテーブルのスキャンに基づいて、アクセスビットが前記ページテーブルの各ページテーブルエントリ毎に設定されているかどうかを判断するステップを含み、前記アクセスビットは、前記ページテーブルエントリに関連付けられたページが最後のスキャン期間においてメインメモリにおいてアクセスされたかどうかを示しており、前記方法はさらに、
前記アクセスビットが前記ページに関連付けられた前記ページテーブルエントリ毎に設定されていないと判断したことに応じて、前記メインメモリにおける各ページ毎に一次カウントをインクリメントするステップと、
前記アクセスビットが各ページテーブルエントリ毎に設定されているかどうかを判断した後、前記アクセスビットをリセットするステップと、
ホームエージェントが二次メモリにおけるページにアクセスするようにとの要求を受取ったことに基づいて、前記二次メモリにおける前記ページがアクセスされるかどうかを判断するステップと、
前記ホームエージェントが前記二次メモリにおける前記ページにアクセスするようにとの要求を受取ったことに基づいて、前記二次メモリにおける前記ページがアクセスされると判断したことに応じて、前記二次メモリにおける各ページ毎に二次カウントをインクリメントするステップと、
前記二次カウントに基づいて、前記二次メモリにおける特定のページを頻繁にアクセスされるものとして識別するステップと、
頻繁にアクセスされるものとして識別された前記特定のページを前記二次メモリから前記メインメモリに移行するステップとを含む、方法。 - 前記メインメモリにおける或るページを、前記一次カウントに基づいて、希にしかアクセスされないものとして識別するステップと、
希にしかアクセスされないものとして識別された前記或るページを、前記メインメモリから前記二次メモリに移行するステップとをさらに含む、請求項9に記載の方法。 - 希にしかアクセスされないものとして識別された前記或るページを移行する前記ステップは、前記或るページに関連付けられた前記ページテーブルエントリを無効にし、前記或るページに関連付けられたいずれかのエントリのためにトランスレーション・ルックアサイド・バッファ・シュートダウンを実行し、前記或るページを前記メインメモリから前記二次メモリに転送するステップを含む、請求項10に記載の方法。
- 前記メインメモリにおける各ページ毎の前記一次カウントおよび前記二次メモリにおける各ページ毎の前記二次カウントの各々は、スタティックランダムアクセスメモリに格納された各ページ毎のカウンタ、カウンティング・ブルーム・フィルタ、または、ダイナミックランダムアクセスメモリに格納された各ページ毎のカウンタ、のうち少なくとも1つによって維持される、請求項9に記載の方法。
- 前記一次カウントに基づいて、前記メインメモリにおける或るページを、希にしかアクセスされないものとして識別するステップは、前記或るページについての相互アクセス時間が相互アクセス時間しきい値を満たすと判断するステップを含む、請求項10に記載の方法。
- 前記或るページについての前記相互アクセス時間が前記相互アクセス時間しきい値を満たすと判断したことに応じて、希にしかアクセスされないものとして識別された前記或るページが、前記メインメモリから前記二次メモリに移行される、請求項13に記載の方法。
- システムであって、
1つ以上のプロセッサと、
メインメモリおよび二次メモリを含むメモリとを含み、前記メモリは、実施可能な命令を格納しており、前記命令は、実行されると、前記1つ以上のプロセッサに以下の動作を実行させ、前記以下の動作は、
少なくとも1つのページテーブルウォーカでのページテーブルのスキャンに基づいて、アクセスビットが前記ページテーブルの各ページテーブルエントリ毎に設定されているかどうかを判断する動作を含み、前記アクセスビットは、前記ページテーブルエントリに関連付けられたページが最後のスキャン期間においてメインメモリにおいてアクセスされたかどうかを示しており、前記以下の動作はさらに、
前記アクセスビットが前記ページに関連付けられた前記ページテーブルエントリ毎に設定されていないと判断したことに応じて、前記メインメモリにおける各ページ毎に一次カウントをインクリメントする動作と、
前記アクセスビットが各ページテーブルエントリ毎に設定されているかどうかを判断した後、前記アクセスビットをリセットする動作と、
ホームエージェントが二次メモリにおけるページにアクセスするようにとの要求を受取ったことに基づいて、前記二次メモリにおける前記ページがアクセスされるかどうかを判断する動作と、
前記ホームエージェントが前記二次メモリにおける前記ページにアクセスするようにとの要求を受取ったことに基づいて、前記二次メモリにおける前記ページがアクセスされると判断したことに応じて、前記二次メモリにおける各ページ毎に二次カウントをインクリメントする動作と、
前記二次カウントに基づいて、前記二次メモリにおける特定のページを頻繁にアクセスされるものとして識別する動作と、
頻繁にアクセスされるものとして識別された前記特定のページを前記二次メモリから前記メインメモリに移行する動作とを含む、システム。 - 前記動作はさらに、
前記一次カウントに基づいて、前記メインメモリにおける或るページを、希にしかアクセスされないものとして識別する動作と、
希にしかアクセスされないものとして識別された前記或るページを、前記メインメモリから前記二次メモリに移行する動作とを含む、請求項15に記載のシステム。 - 希にしかアクセスされないものとして識別された前記或るページを移行する前記動作は、
前記或るページに関連付けられた前記ページテーブルエントリを無効にし、前記或るページに関連付けられたいずれかのエントリのためのトランスレーション・ルックアサイド・バッファ・シュートダウンを実行し、前記或るページを前記メインメモリから前記二次メモリに転送する動作を含む、請求項16に記載のシステム。 - 前記メインメモリにおける各ページ毎の前記一次カウントおよび前記二次メモリにおける各ページ毎の前記二次カウントの各々は、スタティックランダムアクセスメモリに格納された各ページ毎のカウンタ、カウンティング・ブルーム・フィルタ、または、ダイナミックランダムアクセスメモリに格納された各ページ毎のカウンタ、のうち少なくとも1つによって維持される、請求項15に記載のシステム。
- 前記一次カウントに基づいて、前記メインメモリにおける或るページを、希にしかアクセスされないものとして識別する動作は、前記或るページについての相互アクセス時間が相互アクセス時間しきい値を満たすと判断する動作を含む、請求項16に記載のシステム。
- 前記或るページについての前記相互アクセス時間が前記相互アクセス時間しきい値を満たすと判断したことに応じて、希にしかアクセスされないものとして識別された前記或るページが、前記メインメモリから前記二次メモリに移行される、請求項19に記載のシステム。
- コンピュータによって実現される方法であって、
データのページの第1のキャッシュラインにアクセスするようにとの要求をメインメモリから受取るステップと、
前記第1のキャッシュラインが前記メインメモリに格納されず、二次メモリに格納されていると判断するステップと、これに応じて、
データのページ全体を転送することなく、前記データのページの前記第1のキャッシュラインを前記二次メモリから前記メインメモリに転送するステップとを含み、前記データのページの残余部分は前記二次メモリに格納されたままであり、前記方法はさらに、
前記データのページに関連付けられたページテーブルエントリを更新して、前記メインメモリにおける前記データのページの位置を示すステップと、
前記データのページの前記残余部分を前記二次メモリから前記メインメモリに転送するステップとを含む、方法。 - キャッシュ・コヒーレンシ・メカニズムは、前記データのページの第2のキャッシュラインのアクセスを処理するために、前記データのページの前記残余部分を前記二次メモリから前記メインメモリに転送する間に、実現される、請求項21に記載の方法。
- 前記キャッシュ・コヒーレンシ・メカニズムは、
前記データのページにおけるキャッシュラインの所有権についての要求を、キャッシュエージェントによって発行するステップと、
前記キャッシュラインが前記二次メモリから前記メインメモリに転送されていることに応じて各キャッシュラインの所有権をリリースするステップとを含む、請求項22に記載の方法。 - 前記キャッシュエージェントのキャッシュに前記データのページのキャッシュラインを格納するステップをさらに含む、請求項23に記載の方法。
- 前記データのページのキャッシュラインに関連付けられたタグおよびコヒーレンス状態ビットを格納するステップをさらに含む、請求項23に記載の方法。
- 前記データのページの前記残余部分が転送されている間に、前記データのページの前記第2のキャッシュラインにアクセスするようにとの要求に応じて、前記第2のキャッシュラインについてのスヌープ要求を認識し、前記第2のキャッシュラインが前記二次メモリから転送されると前記スヌープ要求に応じて前記第2のキャッシュラインを戻すステップをさらに含む、請求項23に記載の方法。
- 前記メインメモリがページ転送を受取ることができない場合、前記メインメモリに格納された使用頻度が最も低いページのうちの1ページを決定し、前記使用頻度が最も低いページのうちの前記1ページを前記二次メモリにリリースし、前記使用頻度が最も低いページのうちリリースされた前記1ページの位置において、前記データのページを前記二次メモリから前記メインメモリに転送するステップをさらに含む、請求項21に記載の方法。
- システムであって、
1つ以上のプロセッサと、
実施可能な命令を格納する1つ以上の記憶装置とを備え、前記命令は、前記1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに以下の動作を実行させ、前記以下の動作は、
データのページの第1のキャッシュラインにアクセスするようにとの要求をメインメモリから受取る動作と、
前記第1のキャッシュラインが前記メインメモリに格納されず、二次メモリに格納されていると判断する動作と、
データのページ全体を転送することなく、前記データのページの前記第1のキャッシュラインを前記二次メモリから前記メインメモリに転送する動作とを含み、前記データのページの残余部分は前記二次メモリに格納されたままであり、前記以下の動作はさらに、
前記データのページに関連付けられたページテーブルエントリを更新して、前記メインメモリにおける前記データのページの位置を示す動作と、
前記データのページの前記残余部分を前記二次メモリから前記メインメモリに転送する動作とを含む、システム。 - キャッシュ・コヒーレンシ・メカニズムは、前記データのページの第2のキャッシュラインのアクセスを処理するために、前記データのページの前記残余部分を前記二次メモリから前記メインメモリに転送する間に、実現される、請求項28に記載のシステム。
- 前記キャッシュ・コヒーレンシ・メカニズムは、
前記データのページにおけるキャッシュラインの所有権についての要求をキャッシュエージェントによって発行することと、
前記キャッシュラインが前記二次メモリから前記メインメモリに転送されていることに応じて各キャッシュラインの所有権をリリースすることとを含む、請求項29に記載のシステム。 - 前記動作はさらに、
前記キャッシュエージェントのキャッシュに前記データのページのキャッシュラインを格納することを含む、請求項30に記載のシステム。 - 前記動作はさらに、
前記データのページのキャッシュラインに関連付けられたタグおよびコヒーレンス状態ビットを格納することを含む、請求項30に記載のシステム。 - 前記動作はさらに、
前記データのページの前記残余部分が転送されている間に、前記データのページの前記第2のキャッシュラインにアクセスするようにとの要求に応じて、前記第2のキャッシュラインについてのスヌープ要求を認識し、前記第2のキャッシュラインが前記二次メモリから転送されると前記スヌープ要求に応じて前記第2のキャッシュラインを戻すことを含む、請求項30に記載のシステム。 - 前記動作はさらに、
前記メインメモリがページ転送を受取ることができない場合、前記メインメモリに格納された使用頻度が最も低いページのうちの1ページを決定し、前記使用頻度が最も低いページのうちの前記1ページを前記二次メモリにリリースし、前記使用頻度が最も低いページのうちリリースされた前記1ページの位置において、前記データのページを前記二次メモリから前記メインメモリに転送することを含む、請求項28に記載のシステム。 - 1つ以上のプロセッサによって実行可能な命令を格納しているコンピュータ読取可能記憶装置であって、前記命令は、実行されると、前記1つ以上のプロセッサに以下の動作を実行させ、前記以下の動作は、
データのページの第1のキャッシュラインにアクセスするようにとの要求をメインメモリから受取ることと、
前記第1のキャッシュラインが前記メインメモリに格納されず、二次メモリに格納されていると判断することと、
データのページ全体を転送することなく、前記データのページの前記第1のキャッシュラインを前記二次メモリから前記メインメモリに転送することとを含み、前記データのページの残余部分は前記二次メモリに格納されたままであり、前記以下の動作はさらに、
前記データのページに関連付けられたページテーブルエントリを更新して、前記メインメモリにおける前記データのページの位置を示すことと、
前記データのページの前記残余部分を前記二次メモリから前記メインメモリに転送することとを含む、コンピュータ読取可能記憶装置。 - キャッシュ・コヒーレンシ・メカニズムは、前記データのページの第2のキャッシュラインのアクセスを処理するために、前記データのページの前記残余部分を前記二次メモリから前記メインメモリに転送する間に、実現される、請求項35に記載のコンピュータ読取可能記憶装置。
- 前記キャッシュ・コヒーレンシ・メカニズムは、
前記データのページにおけるキャッシュラインの所有権についての要求を、キャッシュエージェントによって発行することと、
前記キャッシュラインが前記二次メモリから前記メインメモリに転送されていることに応じて各キャッシュラインの所有権をリリースすることとを含む、請求項36に記載のコンピュータ読取可能記憶装置。 - 前記動作はさらに、
(i)前記キャッシュエージェントのキャッシュにおける前記データのページのキャッシュライン、または、(ii)前記データのページのキャッシュラインに関連付けられたタグおよびコヒーレンス状態ビット、のうち1つを格納することを含む、請求項37に記載のコンピュータ読取可能記憶装置。 - 前記動作はさらに、
前記データのページの前記残余部分が転送されている間に、前記データのページの前記第2のキャッシュラインにアクセスするようにとの要求に応じて、前記第2のキャッシュラインについてのスヌープ要求を認識し、前記第2のキャッシュラインが前記二次メモリから転送されると前記スヌープ要求に応じて前記第2のキャッシュラインを戻すことを含む、請求項37に記載のコンピュータ読取可能記憶装置。 - 前記動作はさらに、
前記メインメモリがページ転送を受取ることができない場合、前記メインメモリに格納された使用頻度が最も低いページのうちの1ページを決定し、前記使用頻度が最も低いページのうちの前記1ページを前記二次メモリにリリースし、前記使用頻度が最も低いページのうちリリースされた前記1ページの位置において、前記データのページを前記二次メモリから前記メインメモリに転送することを含む、請求項35に記載のコンピュータ読取可能記憶装置。 - 請求項1から4、9から13、および21から27のいずれか一項に記載の前記方法をコンピュータに実行させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019183022A JP6944983B2 (ja) | 2016-08-12 | 2019-10-03 | ハイブリッドメモリ管理 |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/236,171 | 2016-08-12 | ||
US15/235,495 US10152427B2 (en) | 2016-08-12 | 2016-08-12 | Hybrid memory management |
US15/235,495 | 2016-08-12 | ||
US15/236,171 US10037173B2 (en) | 2016-08-12 | 2016-08-12 | Hybrid memory management |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019183022A Division JP6944983B2 (ja) | 2016-08-12 | 2019-10-03 | ハイブリッドメモリ管理 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018026136A true JP2018026136A (ja) | 2018-02-15 |
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 After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019183022A Active JP6944983B2 (ja) | 2016-08-12 | 2019-10-03 | ハイブリッドメモリ管理 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10037173B2 (ja) |
EP (2) | EP3291097A3 (ja) |
JP (2) | JP2018026136A (ja) |
CN (2) | CN111177030B (ja) |
DE (2) | DE202017104840U1 (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 |
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 |
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 |
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 | 에스케이하이닉스 주식회사 | 이종 메모리를 갖는 메인 메모리 장치, 이를 포함하는 컴퓨터 시스템 및 그것의 데이터 관리 방법 |
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 |
US11474828B2 (en) | 2019-10-03 | 2022-10-18 | Micron Technology, Inc. | Initial data distribution for different application processes |
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 | 海飞科(南京)信息技术有限公司 | 用于存储管理的方法、介质、程序产品、系统和装置 |
Citations (7)
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 | 仮想記憶メモリ装置 |
JPH05241958A (ja) * | 1992-02-26 | 1993-09-21 | Nec Corp | 仮想記憶制御方式 |
JPH0683713A (ja) * | 1992-04-22 | 1994-03-25 | Internatl Business Mach Corp <Ibm> | マルチビット・ベクトル履歴のリスト表示を利用するメモリ管理方法および装置 |
US6029224A (en) * | 1995-06-07 | 2000-02-22 | Lucent Technologies Inc. | Self-contained memory apparatus having diverse types of memory and distributed control |
JP2005216053A (ja) * | 2004-01-30 | 2005-08-11 | Matsushita Electric Ind Co Ltd | 最適メモリ配置演算装置及び最適メモリ配置方法 |
JP2011165093A (ja) * | 2010-02-12 | 2011-08-25 | Nippon Telegr & Teleph Corp <Ntt> | メモリアクセス調査装置、メモリアクセス調査方法、及びプログラム |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5361345A (en) | 1991-09-19 | 1994-11-01 | Hewlett-Packard Company | Critical line first paging system |
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 |
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 |
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 |
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 |
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 DE202017104840.3U patent/DE202017104840U1/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 EP EP17185833.5A patent/EP3282364B1/en active Active
- 2017-08-11 DE DE202017104841.1U patent/DE202017104841U1/de active Active
- 2017-08-14 CN CN201911227514.XA patent/CN111177030B/zh active Active
- 2017-08-14 JP JP2017156543A patent/JP2018026136A/ja active Pending
- 2017-08-14 CN CN201710691364.2A patent/CN107729168A/zh active Pending
-
2019
- 2019-10-03 JP JP2019183022A patent/JP6944983B2/ja active Active
Patent Citations (8)
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 | 仮想記憶メモリ装置 |
JPH05241958A (ja) * | 1992-02-26 | 1993-09-21 | Nec Corp | 仮想記憶制御方式 |
JPH0683713A (ja) * | 1992-04-22 | 1994-03-25 | Internatl Business Mach Corp <Ibm> | マルチビット・ベクトル履歴のリスト表示を利用するメモリ管理方法および装置 |
US5432917A (en) * | 1992-04-22 | 1995-07-11 | International Business Machines Corporation | Tabulation of multi-bit vector history |
US6029224A (en) * | 1995-06-07 | 2000-02-22 | Lucent Technologies Inc. | Self-contained memory apparatus having diverse types of memory and distributed control |
JP2005216053A (ja) * | 2004-01-30 | 2005-08-11 | Matsushita Electric Ind Co Ltd | 最適メモリ配置演算装置及び最適メモリ配置方法 |
JP2011165093A (ja) * | 2010-02-12 | 2011-08-25 | Nippon Telegr & Teleph Corp <Ntt> | メモリアクセス調査装置、メモリアクセス調査方法、及びプログラム |
Also Published As
Publication number | Publication date |
---|---|
EP3291097A2 (en) | 2018-03-07 |
DE202017104840U1 (de) | 2017-12-12 |
EP3282364B1 (en) | 2019-10-09 |
US20180046411A1 (en) | 2018-02-15 |
TW201810057A (zh) | 2018-03-16 |
DE202017104841U1 (de) | 2017-11-22 |
CN111177030B (zh) | 2021-08-20 |
EP3291097A3 (en) | 2018-05-30 |
CN111177030A (zh) | 2020-05-19 |
JP6944983B2 (ja) | 2021-10-06 |
EP3282364A1 (en) | 2018-02-14 |
US10037173B2 (en) | 2018-07-31 |
JP2020009492A (ja) | 2020-01-16 |
CN107729168A (zh) | 2018-02-23 |
TWI643073B (zh) | 2018-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6944983B2 (ja) | ハイブリッドメモリ管理 | |
US10705975B2 (en) | Hybrid memory management | |
CN109791523B (zh) | 支持巨页的内存管理 | |
CN110209601B (zh) | 存储器接口 | |
CN108701092B (zh) | 自愈粗粒探听过滤器 | |
EP2430551B1 (en) | Cache coherent support for flash in a memory hierarchy | |
US6295582B1 (en) | System and method for managing data in an asynchronous I/O cache memory to maintain a predetermined amount of storage space that is readily available | |
US8782348B2 (en) | Microprocessor cache line evict array | |
US20180267741A1 (en) | Memory access monitoring | |
WO2008092159A1 (en) | Snoop filtering using a snoop request cache | |
US5987544A (en) | System interface protocol with optional module cache | |
US6643741B1 (en) | Method and apparatus for efficient cache management and avoiding unnecessary cache traffic | |
US20200210346A1 (en) | Software translation prefetch instructions | |
CN115087961B (zh) | 用于相干及非相干存储器请求的仲裁方案 | |
US11782832B2 (en) | Low latency host processor to coherent device interaction | |
JP7311959B2 (ja) | 複数のデータ・タイプのためのデータ・ストレージ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20171024 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20171024 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20180725 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180905 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20181204 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20190604 |
|
C60 | Trial request (containing other claim documents, opposition documents) |
Free format text: JAPANESE INTERMEDIATE CODE: C60 Effective date: 20191003 |
|
C22 | Notice of designation (change) of administrative judge |
Free format text: JAPANESE INTERMEDIATE CODE: C22 Effective date: 20200616 |
|
C23 | Notice of termination of proceedings |
Free format text: JAPANESE INTERMEDIATE CODE: C23 Effective date: 20200707 |
|
C03 | Trial/appeal decision taken |
Free format text: JAPANESE INTERMEDIATE CODE: C03 Effective date: 20200818 |
|
C30A | Notification sent |
Free format text: JAPANESE INTERMEDIATE CODE: C3012 Effective date: 20200818 |