JP2020009492A - ハイブリッドメモリ管理 - Google Patents

ハイブリッドメモリ管理 Download PDF

Info

Publication number
JP2020009492A
JP2020009492A JP2019183022A JP2019183022A JP2020009492A JP 2020009492 A JP2020009492 A JP 2020009492A JP 2019183022 A JP2019183022 A JP 2019183022A JP 2019183022 A JP2019183022 A JP 2019183022A JP 2020009492 A JP2020009492 A JP 2020009492A
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.)
Granted
Application number
JP2019183022A
Other languages
English (en)
Other versions
JP2020009492A5 (ja
JP6944983B2 (ja
Inventor
ジョエル・ディラン・コバーン
dylan coburn Joel
アルバート・ボーチャーズ
Borchers Albert
クリストファー・ライル・ジョンソン
Lyle Johnson Christopher
ロバート・エス・スプリンクル
S Sprinkle Robert
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US15/235,495 external-priority patent/US10152427B2/en
Application filed by Google LLC filed Critical Google LLC
Publication of JP2020009492A publication Critical patent/JP2020009492A/ja
Publication of JP2020009492A5 publication Critical patent/JP2020009492A5/ja
Application granted granted Critical
Publication of JP6944983B2 publication Critical patent/JP6944983B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0835Cache 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)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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ストレージはコンピューティング環境においては限られたリソースになっている。
DRAMとNANDフラッシュなどのより低速の技術との間の性能のギャップを埋める不揮発性メモリなどの二番手のメモリが用いられる可能性もある。この二番手のメモリは、メモリもしくはIOバスを介してローカルにアクセスされ得るか、または高速ネットワークを介して遠隔でアクセスされ得る。しかしながら、アプリケーションがデータ配置を明確に管理する必要があるか、または、システムが、メモリ層同士の間でデータをトランスペアレントに移動させる自動管理を行なわなければならなくなる。このため、より低速の記憶装置のために設計された既存の技術の不備点を克服するために、性能に対する影響を最小限に抑えた自動管理のための新しい技術が必要とされている。
概要
この明細書に記載される主題の革新的な一局面が具体化されるシステムおよび方法は、プロセッサの少なくとも1つのページテーブルウォーカでのページテーブルのスキャンに基づいて、アクセスビットがページテーブルの各ページテーブルエントリ毎に設定されているかどうかを、プロセッサで判断することを含む。アクセスビットは、ページテーブルエントリに関連付けられたページが最後のスキャン期間においてアクセスされたかどうかを示している。当該システムおよび方法はさらに、アクセスビットがページに関連付けられたページテーブルエントリ毎に設定されていないと判断したことに応じて、各ページ毎にカウントをインクリメントすることと、アクセスビットが各ページテーブルエントリ毎に設定されているかどうかをプロセッサで判断した後、アクセスビットをリセットすることと、データの第1のページにアクセスするようにとの要求をメインメモリから受取ることと、データの第1のページがメインメモリに格納されていないと判断したことに基づいて、ページフォルトを開始することと、ダイレクトメモリアクセス(direct memory access:DMA)エンジンを用いてページフォルトを処理することとを含む。
いくつかの実現例においては、DMAエンジンを用いてページフォルトを処理することは、メインメモリがページ転送を受取ることができない場合、各ページ毎のカウントに基づいて使用頻度が最も低いページのうちの1つを決定し、使用頻度が最も低いページのうちの1つを二次メモリにリリースし、使用頻度が最も低いページのうちリリースされた1つのページの位置において、第1のページデータを二次メモリからメインメモリに転送することと、メインメモリがページ転送を受取ることができる場合、第1のページデータを
二次メモリからメインメモリに転送することとを含む。
いくつかの実現例においては、ページフォルトを開始することは、ページフォルトが処理されている間にスレッドの実行をストールさせることと、ページフォルトが処理された後、メインメモリにアクセスするためにスレッドをリリースすることとを含む。さらに、いくつかの実現例においては、各ページ毎のカウントは、スタティックランダムアクセスメモリに格納された各ページ毎のカウンタ、カウンティング・ブルーム・フィルタ、または、ダイナミックランダムアクセスメモリに格納された各ページ毎のカウンタ、のうち少なくとも1つによって維持される。
この明細書に記載される主題の革新的な一局面が具体化されるシステムおよび方法は、少なくとも1つのページテーブルウォーカでのページテーブルのスキャンに基づいて、アクセスビットがページテーブルの各ページテーブルエントリ毎に設定されているかどうかを判断することを含む。アクセスビットは、ページテーブルエントリに関連付けられたページが最後のスキャン期間においてメインメモリにおいてアクセスされたかどうかを示している。当該システムおよび方法はさらに、アクセスビットがページに関連付けられたページテーブルエントリ毎に設定されていないと判断したことに応じて、メインメモリにおける各ページ毎に一次カウントをインクリメントすることと、アクセスビットが各ページテーブルエントリ毎に設定されているかどうかを判断した後、アクセスビットをリセットすることと、ホームエージェントが二次メモリにおけるページにアクセスするようにとの要求を受取ったことに基づいて、二次メモリにおけるページがアクセスされるかどうかを判断することと、ホームエージェントが二次メモリにおけるページにアクセスするようにとの要求を受取ったことに基づいて、二次メモリにおけるページがアクセスされると判断したことに応じて、二次メモリにおける各ページ毎に二次カウントをインクリメントすることと、二次カウントに基づいて、二次メモリにおける特定のページを頻繁にアクセスされるものとして識別することと、頻繁にアクセスされるものとして識別された特定のページを二次メモリからメインメモリに移行する(migrating)こととを含む。
この明細書に記載される主題の別の局面が具体化され得るシステムおよび方法は、メインメモリにおける或るページを、一次カウントに基づいて、希にしかアクセスされないものとして識別することと、希にしかアクセスされないものとして識別された或るページをメインメモリから二次メモリに移行することとを含む。加えて、希にしかアクセスされないものとして識別された或るページを移行することは、或るページに関連付けられたページテーブルエントリを無効にし、或るページに関連付けられたいずれかのエントリのためにトランスレーション・ルックアサイド・バッファのシュートダウンを実行し、或るページをメインメモリから二次メモリに転送することを含む。
いくつかの実現例においては、メインメモリにおける各ページ毎の一次カウントおよび二次メモリにおける各ページ毎の二次カウントの各々は、スタティックランダムアクセスメモリに格納された各ページ毎のカウンタ、カウンティング・ブルーム・フィルタ、または、ダイナミックランダムアクセスメモリに格納された各ページ毎のカウンタ、のうち少なくとも1つによって維持される。
いくつかの実現例においては、一次カウントに基づいて、メインメモリにおける或るページを希にしかアクセスされないものとして識別することは、或るページについての相互アクセス時間が相互アクセス時間しきい値を満たすと判断することを含む。加えて、いくつかの実現例においては、或るページについての相互アクセス時間が相互アクセス時間しきい値を満たすと判断したことに応じて、希にしかアクセスされないものとして識別された或るページがメインメモリから二次メモリに移行される。
この明細書に記載される主題の別の革新的な局面が具体化されるシステム、方法および装置は、データのページの第1のキャッシュラインにアクセスするようにとの要求をメインメモリから受取ることと、第1のキャッシュラインがメインメモリに格納されているのではなく二次メモリに格納されていると判断することとを含む。第1のキャッシュラインがメインメモリに格納されているのではなく二次メモリに格納されていると判断したことに応じて、データのページ全体を転送することなく、データのページの残余部分が二次メモリに格納されたままで、データのページの第1のキャッシュラインを二次メモリからメインメモリに転送することと、データのページに関連付けられたページテーブルエントリを更新して、メインメモリにおけるデータのページの位置を示すことと、データのページの残余部分を二次メモリからメインメモリに転送することとを含む。
いくつかの実現例においては、キャッシュ・コヒーレンシ・メカニズムは、データのページの第2のキャッシュラインのアクセスを処理するために、データのページの残余部分を二次メモリからメインメモリに転送している間に、実現される。
いくつかの実現例においては、キャッシュ・コヒーレンシ・メカニズムは、データのページにおけるキャッシュラインの所有権についての要求を、キャッシュエージェントによって発行することと、キャッシュラインが二次メモリからメインメモリに転送されていることに応じて、各キャッシュラインの所有権を解放することとを含む。
いくつかの実現例においては、システム、方法および装置は、キャッシュエージェントのキャッシュにデータのページのキャッシュラインを格納することを含む。いくつかの実現例においては、システム、方法および装置は、データのページのキャッシュラインに関連付けられたタグおよびコヒーレンス状態ビットを格納することを含む。
この明細書に記載される主題の別の局面が具体化され得るシステム、方法および装置は、データのページの残余部分が転送されている間にデータのページの第2のキャッシュラインにアクセスするようにとの要求に応じて、第2のキャッシュラインについてのスヌープ要求を認識し、第2のキャッシュラインが二次メモリから転送されるとスヌープ要求に応じて第2のキャッシュラインを戻すことを含む。
この明細書に記載される主題のさらに別の局面が具体化され得るシステム、方法および装置は、メインメモリがページ転送を受取ることができない場合、メインメモリに格納された使用頻度が最も低いページのうちの1つを決定し、使用頻度が最も低いページのうちの1つを二次メモリに解放して、使用頻度が最も低いページのうち解放された1つのページの位置において、データのページを二次メモリからメインメモリに転送することを含む。
これらの局面の他の実施形態は、上記方法の動作を実行するように構成された対応するシステムと、装置と、コンピュータ記憶装置上で符号化されるコンピュータプログラムとを含む。
この明細書に記載される主題の特定の実施形態は以下の利点のうち1つ以上を達成するように実現することができる。たとえば、ハードウェアによって決定されるメモリ内のページについての使用統計またはアクセス統計は、ソフトウェアおよびサンプリング技術を必要とする現在の方法よりも精密かつ正確であり得る。さらに、データの全ページではなく、最初にアクセスが要求される特定のキャッシュラインを転送することにより、ページにアクセスするようにとの要求に応じてページを転送することによって生じる遅延が少なくなる可能性があり、結果として、実行されているアプリケーションまたはプロセスがより高速で実行されることになり得る。
本発明の1つ以上の実施形態の詳細を添付の図面および以下の記載において説明する。本発明の他の特徴および利点は、以下の記載、添付の図面および添付の特許請求の範囲から明らかになるだろう。
添付のさまざまな図面における同様の参照番号および符号は同様の要素を示している。
本開示の実現例に従ったメモリデバイスを含むシステムの一例を示す図である。 本開示の実現例に従ったメモリデバイスを含むシステムの一例を示す図である。 本開示の実現例に従った、ページフォルトを処理するためのプロセスの一例を示すフローチャートである。 本開示の実現例に従った、ライトバックスレッドのためのプロセスの一例を示すフローチャートである。 本開示の実現例に従った、ページの使用頻度をハードウェアで判断し、DMAエンジンを用いてページフォルトを処理するためのプロセスの一例を示すフローチャートである。 本開示の実現例に従った、ページの使用頻度をハードウェアで判断し、判断された使用頻度に基づいてページマイグレーション(page migration)を実行するためのプロセスの一例を示すフローチャートである。 本開示の実現例に従った、重要なキャッシュラインを最初に転送することによってページフォルトを処理するためのプロセスの一例を示すフローチャートである。
詳細な説明
新しい不揮発性メモリ技術は、メモリもしくはIOバスを介してローカルにアクセスされ得るか、または高速ネットワークを介して遠隔でアクセスされ得る。これらの技術の性能は2つの重要な意味合いを持っている。第1に、これらの技術は、アクセスするためのソフトウェアオーバーヘッドを最小限にしなければならないほどに高速であり、第2に、これらの技術は、DRAMが典型的にキャッシュとして用いられ得るほどに十分に低速である。これらのタイプの不揮発性メモリの利点を利用するために、アプリケーションがデータ配置を明確に管理する必要があるか、または、システムが、メモリのさまざまな部分同士の間でデータをトランスペアレントに移動させる自動管理を実行しなければならない。
したがって、本開示の実施形態は、メモリもしくはIOバスを介してローカルに利用可能であるか、またはネットワークを介して遠隔に利用可能である二次メモリを高性能に自動管理するためのシステムを提供する。二次メモリは、本質的に、不揮発性かつ持続的なコンピュータメモリであってもよい。二次メモリは、プロセッサによって直接アクセスされなくてもよく、一次メモリまたはメインメモリよりも低速であってもよい。メインメモリは、一次メモリ、一次ストレージ、内部メモリまたは第1層メモリとも称されており、CPUに直接アクセス可能であり得る。以下により詳細に記載されるように、ハードウェアは、最新のプロセッサベースのシステムにおけるキャッシュコヒーレンスプロトコルおよび相互接続を利用して、アクセスレイテンシを減らして一貫性を維持する。加えて、最適化されたカーネルドライバは、たとえば、二番手のメモリに高速経路を提供し、メモリ管理ハードウェアとの通信をすべて処理し得る。このプロセスは、同期、メモリ管理およびブロックIO転送などのためにコストが高くなってしまう、ページング用のカーネルを介する既存の経路と比べて、有利である。
これらの特徴および追加の特徴を以下においてより詳細に記載する。
図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で実現され得る。
MMU150は、その内部にわたってメモリ参照され得るハードウェアユニットであって、仮想メモリアドレスを物理アドレスに翻訳し、キャッシュ制御を処理する。たとえば、MMU150は、メインメモリにおいて仮想ページ番号を物理ページ番号にマッピングするために、1ページ毎に1つのページテーブルエントリ(page table entry:PTE)を収納しているインメモリテーブルとしてページテーブルを用いてもよい。PTEの連想型キャッシュとしてトランスレーション・ルックアサイド・バッファ165を用いることにより、仮想アドレスがマッピングされるたびにメインメモリにアクセスする必要性をなくし得る。PTEが仮想ページへのアクセスを禁止すると、たとえば、その仮想ページにはどの物理的なランダムアクセスメモリも割当てられていないので、MMU150は、CPU110にページフォルトを信号で知らせ得る。図1を参照して、システム100は、付加的に、不揮発性メモリ180を含んでもよく、任意には、専用のDRAM170を含んでもよい。
図2は、本開示の実現例に従ったメモリデバイスを含むシステム200の一例を示す。システム200はCPU210およびDRAM220を含み得る。システム200はさらに、ダイレクトメモリアクセス(DMA)エンジン230および二次ストレージ240を含み得る。CPU210、DRAM220、DMAエンジン230および二次ストレージ240は、1つ以上のバス215、225または他のデータ通信手段を介してデータ通信してもよい。
動作の際、ページフォルトの処理、ライトバック(write backs)の処理またはページ
マイグレーションのためにDMAエンジン230が用いられてもよい。二次ストレージ240は、CPU210によって直接アクセスされない可能性もある二番手のメモリとして機能するメモリデバイスであってもよい。DMAエンジン230は、CPU210に直接接続されてもよく、またはキャッシュエージェントなどの別個のエンティティの一部であってもよい。CPU210がメインメモリ(すなわち第1層のメモリまたは一次メモリ)として、DRAM220からページにアクセスしようと試みて、そのページがページアウトされており二次ストレージ240に存在している場合、ページフォルトが発生する可能性がある。ページフォルトは、オペレーティングシステム(operating system:OS)が
二次ストレージ240からメインメモリ、DRAM220にページを移動させる必要があることを示し得る。この明細書中に記載される実施形態に従うと、ハードウェアDMAエンジン230は、ページフォルトを管理して、メインメモリDRAM220にはないページにアクセスしようとする試みを検出する。これに応じて、ページフォルトが処理されている間、スレッドの実行はストールされている。次いで、メインメモリDRAM220にアクセスするためにスレッドがリリースされて、実行が継続され得る。
この態様では、ハードウェアは、DMAエンジン230を用いてページフォルトを処理することによって、ページ転送を開始し得る。したがって、ページフォルトを処理し、汚染されたページをライトバックし、ページを移行する際にページ転送を加速するためのプログラマブルなDMAエンジン230が存在する。DMAエンジン230は、複数の同時発生的な要求の処理を管理し得る。DMAエンジン230の要求は、共有メモリのための相互接続であり得るコヒーレントな相互接続を介する低オーバーヘッド・コマンドおよび応答インターフェイスを用いて、開始および終了され得る。DMAエンジン230は、メモリコヒーレンスプロトコルを用いて、コヒーレントなメモリのユーザとなるように構成され得るので、このDMAエンジン230は、プロセッサまたはCPU210の最終レベルのキャッシュに直接データを転送し得る。
図3Aは、本開示の実現例に従った、ページフォルトを処理するためのプロセス300の一例のフローチャートを示す。上述のとおり、ページフォルトは、仮想アドレス空間にマッピングされているが実際にはメインメモリにロードされていないメモリページにスレッドまたは実行プログラムがアクセスしたときに、発生する可能性がある。プロセッサのMMU150はページフォルトを検出し得る。ページフォルトが310において検出されると、320において、空きページがあるかどうかについての判断がなされ得る。空きページがある「yes」である場合、330において、ページデータが二次ストレージまたは
バッキングストアから空きページ位置にコピーされ得る。空きページがない「no」である場合、360において、ページがFIFO待ち行列から引出されてよく、最も新しく到着したものが後ろに配置され最も古く到着したものが前に配置されている状態で、待ち行列にあるメモリ内の全ページを追跡し得る。そのページが汚染されている場合、すなわち、変更されていた場合、370において、システムは二次メモリまたはバッキングストアにページを書き込んでもよい。ページをメインメモリから二次メモリに転送する際、380において、ページに関連付けられたページテーブルエントリが無効にされてもよく、ページに関連付けられたいずれかのエントリのためのTLBシュートダウンが実行されてもよく、たとえば、他のプロセッサのためにTLBエントリがフラッシュされてもよい。このときそのページが空いていれば、330において、ページデータが二次ストレージまたはバッキングストアから空きページ位置にコピーされ得る。ページに関連付けられたPTEを更新してページのメインメモリにおける位置を指し示すことによって有効なPTEを作成するために、340において、ページテーブルが更新されてもよい。ページフォルトが処理されると、スレッドまたは実行プログラムが350において再開され得る。
図3Bは、本開示の実現例に従った、ライトバックスレッドのためのプロセス305の一例のフローチャートを示す。315においてウェイクアップすると、空きページの数が、(所与のアーキテクチャが処理するように構成されている任意のページ数であり得る)しきい値ページ数を満たしているかどうかが判断され得る。たとえば、325において、空きページの数がしきい値以下であるかどうかについて判断がなされてもよい。空きページの数がしきい値を満たさない(「no」である)場合、たとえば、しきい値よりも大きい場合、335において、スレッドがスリープになり得る。しかしながら、325において、空きページの数がしきい値を満たす(「yes」である)と判断された場合、345にお
いて、システムが、FIFO待ち行列にある次のページを判断し得る。370において、そのページが汚染されている場合、すなわち変更されていた場合、システムは二次メモリ
またはバッキングストアにページを書き込み得る。メインメモリから二次メモリにページを転送する際、380において、ページに関連付けられたページテーブルエントリが無効にされ得るとともに、ページに関連付けられたいずれかのエントリのためのTLBシュートダウンが実行され得る。そのページが空きページであれば、325において、空きページの数がしきい値を満たしているかどうかが、再度、判断され得る。
ページテーブルスキャン(すなわちページテーブル全体にわたるスキャン)は、CPUオーバーヘッドを必要とするソフトウェアではなくハードウェアによって実行されてもよく、結果として、しばしば、メモリアクセスがより低速になってしまい、他の有用なキャッシュ情報が処理されて廃棄されてしまうこととなる。一般に、ページデータへのアクセスの頻度は、たとえば、データの他のページと比べてどのページデータが頻繁にアクセスされているか、および、データの他のページと比べてどのページデータが希にしかアクセスされていないかを表わすものであるが、ページテーブルをスキャンすることによって判断され得る。ページテーブルにおいてマッピングされた各ページ(たとえば各々のPTE)は、ページがアクセスされるたびに設定され得るとともにページテーブルのスキャン後にCPUによってクリアされ得る、フラグまたはアクセスビットを有してもよい。
このハードウェアは、ページテーブルを読み込んで仮想−物理翻訳を自動的にTLBにロードするために1つ以上のページテーブルウォーカ(たとえば内蔵されたハードウェア)を含み得るページテーブルウォーカまたはMMUを増強することによって実現されてもよい。このため、ハードウェアは、プロセッサ内のページテーブルスキャンメカニズムを用いるプロセッサアーキテクチャの一部であってもよい。たとえば、ハードウェアは、最後にスキャンがなされてからアクセスビットが各PTEにおいて設定されたかどうかを判断するために、ページテーブル全体わたってスキャンする(すなわち、PTEのスキャン)ルーチンを実現してもよい。アクセスビットは、当該アクセスビットが設定されたかどうかを判断した後にクリアされてもよく、次いで、ページテーブルの次のスキャンが行なわれるまで動作が進められてもよい。スキャンは定期的に(たとえば、スキャンの合間に所定の期間を空けて)行なわれてもよく、または、スキャンは何らかの外部イベントが引き金となってトリガされてもよい。アクセスビットまたはフラグが設定されていないと判断されるたびに、カウントが各ページ毎にインクリメントされてもよい。
時間の経過とともに、スキャンからプロファイルが作成されてもよく、当該プロファイルは、各ページがどのくらいの頻度でアクセスされているか、および/または、どのくらい最近アクセスされたかを示す。たとえば、ハードウェアは、使用統計(たとえば未設定のアクセスビットもしくはフラグのカウント)を維持するために各ページ毎に1つ以上のカウンタもしくは複数のブルームフィルタを含み得るか、または、使用頻度が最も高いページおよび使用頻度が最も低いページもしくはアクセス頻度のより高いページおよびアクセス頻度のより低いページをソートおよびフィルタリングすることを可能にするために、結果がメモリ(たとえば2レベルのメモリ)に格納され得る。より詳細には、ハードウェアは、ページがどれくらい最近アクセスされたかを判断するためにページ毎のカウンタを維持してもよく、各々のカウンタは、それぞれのPTEがスキャンされたときに更新されてもよい。ページ毎のカウンタは、高速アクセスを得るためにオンチップSRAMに設けられてもよい。代替的には、二次メモリのサイズが大型であるせいで、カウンタの面積コストがより高くなる可能性があるので、カウンティング・ブルーム・フィルタを用いてページの設定についてのアクセス統計を維持することにより、面積を節約することもできる。代替的には、ハードウェアは、少量の専用のDRAMを用いてもよく、またはシステムDRAMにカウンタを格納してもよい。
いくつかの実施形態においては、アクセス統計を収集するためのページテーブルスキャンは、プロセッサのページテーブルウォーカに格納されているかもしくは当該ページテー
ブルウォーカと密に結合されたハードウェアモジュールで実現されてもよく、または、MMUにおいて実現されてもよい。なぜなら、MMUは、IO装置において既に利用可能な1つ以上のページテーブルウォーカを有し得るからである。したがって、上述したように、そのハードウェアはページテーブルをスキャンし得るとともに、各PTEのアクセスビットを用いて、最後のスキャンがなされて以来アクセスビットが設定されたかどうかの判断に基づいて、各ページの各々の古さを判断し得る。たとえば、アクセスビットが設定されているのであれば、最後のスキャン期間内にそのページにクセスされていたこととなる。そうではなく、アクセスビットが設定されていない場合、ページにはアクセスされておらず、コールド(「cold」)である(たとえば最後のスキャン期間中にはアクセスされていない)と判断される可能性がある。有利には、ハードウェアによって判断されるこれらの使用統計またはアクセス統計は、ソフトウェアおよびサンプリング技術を必要とする現在の方法よりも精密かつ正確であり得る。
このため、メインメモリの場合、アクセスビットが設定されていなかった回数は、コールドページ(cold page)を識別するために各ページ毎にカウントされてもよく、この場
合、たとえば、ページ毎のカウントが大きくなればなるほど、ページは、よりコールドになる。ページがアクセスされ、アクセスビットが設定されると、そのカウントはゼロにリセットされ得る。ページテーブルはアクセスビットに対する変更を検出するために定期的にスキャンされてもよく、すべてのアクセスビットは各スキャン毎にクリアされてもよい。このため、カウントは、ページの古さを表わし得る。すなわち、ページがどのくらいの期間アクセスされていなかったかを表わし得る。
上述のとおり、DMAエンジン230はページフォルトを処理するのに用いられてもよい。いくつかの実施形態においては、アクセス統計を用いることにより、ページ転送の宛先を判断し得るか、または、どのページを転送するかとそれらのページをいつ転送するかとを識別するために実現され得るポリシーを決定し得る。たとえば、アクセス統計に基づいて、ページが使用頻度の最も高いものから使用頻度の最も低いものへと順序付けされてもよく、またはこれとは逆に順序付けされてもよい。DMAエンジン230を用いてページフォルトが処理されると、メインメモリDRAM220に空きページがない場合、ハードウェア支援型のページングプロセスは、使用頻度が最も低いページのうちの1つを二次メモリにリリースするかまたはライトバックし得るとともに、その使用頻度が最も低いページの位置を用いて新しいページをメインメモリに転送し得る。
図4は、本開示の実現例に従った、ハードウェアでページの使用頻度を判断し、DMAエンジンを用いてページフォルトを処理するためのプロセス400の一例のフローチャートを示す。プロセス400は、410において、ページテーブルスキャナでページテーブルをスキャンしたことに基づいて、ページテーブルの各PTE毎にアクセスビットが設定されているかどうかを、プロセッサを用いて判断するステップを含む。たとえば、プロセッサにおける少なくとも1つのページテーブルウォーカは、アクセスビットが設定されているかどうかについてページテーブルをスキャンするために変更されてもよい。たとえば、ページテーブルをスキャンするためにスレッドがページテーブルウォーカに追加されてもよく、または、スキャンは、ハードウェアによってページテーブルウォーカとは別個に行なわれてもよい。アクセスビットは、PTEに関連付けられたページが、たとえば、ページテーブルにおける最後のスキャンと現在のスキャンとの間で、最後のスキャン期間内にアクセスされたかどうかを示し得る。
420において、各ページ毎のカウントは、アクセスビットがページに関連付けられたPTE毎に設定されていないと判断されたことに応じてインクリメントされてもよい。アクセスビットが各PTE毎に設定されているかどうかを判断した後、430において、プロセッサがアクセスビットをリセットしてもよい。各ページ毎のカウントは、スタティッ
クランダムアクセスメモリに格納された各ページ毎のカウンタによって維持されてもよく、または、カウンティング・ブルーム・フィルタが、ページの設定についてのアクセス統計を維持してもよい。代替的には、各ページ毎のカウンタは、ダイナミックランダムアクセスメモリ(たとえば、少量の専用のDRAMまたはシステムDRAM)に格納されてもよい。
プロセス400はさらに、440において、データのページにアクセスするようにとの要求をメインメモリから受取るステップを含む。450において、ページフォルトが、アクセスが要求されているデータのページがメインメモリに格納されていないと判断したことに基づいて、開始され得る。460において、ページフォルト・ハンドラが、ページフォルトを検出し得るとともに、DMAエンジン230を用いてページフォルトを処理し得る。
たとえば、メインメモリが空きページを有しておらず、ページ転送を受取ることができない場合、470において、メインメモリ内の特定のページ(たとえば、メインメモリ内の使用頻度が最も低いページのうち1つ)が、各ページ毎のカウントに基づいて決定され得る。470において、DMAエンジン230がページ転送を管理し得るとともに、これらのページのうち決定された1ページが二次メモリにリリースされ得るかまたはライトバックされ得る。さらに、470において、アクセスが要求されているデータのページは、使用頻度が最も低いページのうちリリースされた1ページの位置において、二次メモリからメインメモリに転送され得る。代替的には、480において、メインメモリが空きページを有しており、ページ転送を受取ることができる場合、DMAエンジン230は、二次メモリからメインメモリへのページデータの転送を管理し得る。
いくつかの実施形態においては、ページフォルトが開始されると、上述のとおり、DMAエンジン230がページフォルトを処理するためにデータ転送を管理している間、スレッドの実行または実行中のプログラムがストールされてもよい。スレッドは、ページフォルトが処理された後、メインメモリ内のページにアクセスするためにリリースされてもよい。
データにアクセスするようにとのIO要求や、二次メモリからページデータを転送するためにページフォルトを開始する代わりに、いくつかのシステムにおいては、二次メモリは、ページマイグレーションを用いて、負荷および記憶装置を備えたプロセッサによって直接アクセスされてもよい。これらのシステムにおいては、データは、ページ粒度でアクセスされる必要がないかもしれない。しかしながら、データが「ホット(hot)」または
「コールド(cold)」であるかどうか(すなわち、どれくらい最近アクセスされたか、どれくらいの頻度でアクセスされたか、または、再びアクセスされる可能性があるかどうか)に基づいて、自動的にデータを移行するために、上述の使用統計またはアクセス統計を利用することが有益であるかもしれない。
概して、二次メモリにおけるデータが、物理アドレス空間の或る領域(たとえばその領域におけるすべての二次メモリ)に関与しているホームエージェント145に関連付けられ得るキャッシュ・コヒーレンス・アーキテクチャの特徴を利用して、ホームエージェント145は、当該ホームエージェントが関与しているメモリへのすべてのアクセスを維持し得るとともに、その識別を用いてアクセス統計を維持し得る。二次メモリに関連付けられたホームエージェント145は、どのページがアクセスされているかと、それらのページがいつアクセスされているかとについてのデータを維持し得る。アクセスの頻度に基づいて、たとえば、アクセスの頻度がしきい値を満たしている場合、ホームエージェント145は、頻繁にアクセスされたデータが二次メモリからメインメモリDRAM120に転送され得ると判断してもよい。
そのマイグレーションを実行するために、二次メモリ内のページが「ホット(hot)」
になりつつあること(すなわちアクセスの頻度の増大)を判断するだけではなく、メインメモリDRAM内のどのページが「コールド(cold)」になりつつあるか(すなわち、アクセスの頻繁の減少)を判断することも有利である。言いかえれば、メインメモリよりも低速であり得る二次メモリにおいてどのページがより頻繁にアクセスされているかを判断すること、および、メインメモリにおいてどのページへのアクセス頻度がより低いかを判断することである。メインメモリにおいてどのページへのアクセス頻度がより低いかを判断する1つのプロセスは、たとえば、未設定であるアクセスビットのカウントに基づいて、メインメモリDRAMについての使用統計またはアクセス統計に関連付けて上述したとおりである。システムは、いつデータをメインメモリDRAMから二次メモリに移動させるべきかと、メインメモリについて上述されたアクセス統計に基づいて、いつデータを二次メモリからメインメモリDRAMに移動させるべきかとを判断し得るとともに、二次メモリに連結されたホームエージェントを利用して、二次メモリについてのアクセス統計を判断し得る。
このため、ハードウェアは、メインメモリ(たとえば、DRAM220)と二次メモリ(たとえば、二次ストレージ240)との間でページをいつ移行するかを判断し得る。たとえば、ハードウェアは、ホームエージェントでのキャッシュ・コヒーレンス・メッセージとアクセスビットでのPTEとの組合せを用いて、データの「温度」を判断し得る。すなわち、どの程度「ホット」であるかまたは或るデータへのアクセスがどれくらい頻繁であるかと、どの程度「コールド」であるかまたは或るデータへのアクセスがどれくらい希であるかとを判断し得る。したがって、アクセス頻度が増大する割合を有するページが二次メモリからメインメモリに移行される。上述のとおり、「昇温している(warming)」
かまたはより頻繁にアクセスされているそれらのページは、これらのアクセスを検出するホームエージェントを介して二次メモリへのメモリアクセスを管理するハードウェアによって判断されてもよい。なぜなら、物理アドレス範囲がホームエージェントによって所有されているからである。それらの判断されたアクセスに基づいて、ページ毎のアクセスカウンタが、たとえばオンチップSRAMにおいて維持されてもよい。代替的には、二次メモリのサイズが大きいせいで、カウンタのハードウェア面積コストがより高くなる可能性があるので、カウンティング・ブルーム・フィルタを用いて、ページの設定についてのアクセス統計を維持することによって、面積を節約し得る。代替的には、ハードウェアは少量の専用のDRAMを用いてもよく、または、システムDRAMにカウンタを格納してもよい。
加えて、より詳細に上述したように、クーリングオフしているページ、またはアクセス頻度のより低いページは、PTEを監視することによって判断され得る。たとえば、ページについての相互アクセス時間が相互アクセス時間しきい値を満たすと、システムは、ページに関連付けられたPTEを無効にし、ページに関連付けられたいずれかのエントリのためのTLBシュートダウンを実行し、メインメモリDRAMから二次メモリにページを転送することによって、メインメモリDRAMから二次メモリへのページの転送を開始し得る。
図5は、本開示の実現例に従った、ハードウェアでのページの使用頻度を判断し、判断された使用頻度に基づいてページマイグレーションを実行するためのプロセス500の一例のフローチャートを示す。プロセス500は、510において、プロセッサのページテーブルスキャナでのページテーブルのスキャンに基づいて、アクセスビットがページテーブルの各PTE毎に設定されているかどうかを判断するステップを含む。アクセスビットは、PTEに関連付けられたページが、たとえば、ページテーブルのうち最後のスキャンと現在のスキャンとの間で、最後のスキャン期間内にアクセスされたかどうかを示し得る
。520において、メインメモリにおける各ページ毎のカウントは、アクセスビットがページに関連付けられたPTE毎に設定されていないと判断したことに応じて、インクリメントされ得る。代替的には、メインメモリにおける各ページ毎のカウントは、アクセスビットがページに関連付けられたPTE毎に設定されていると判断したことに応じて、インクリメントされ得る。アクセスビットが各PTE毎に設定されているかどうかを判断した後、530において、プロセッサはアクセスビットをリセットし得る。メインメモリにおける各ページ毎のカウントは、スタティックランダムアクセスメモリに格納された各ページ毎のカウンタによって維持されてもよく、または、カウンティング・ブルーム・フィルタが、ページの設定についてのアクセス統計を維持してもよい。代替的には、各ページ毎のカウンタは、ダイナミックランダムアクセスメモリ(たとえば少量の専用のDRAMまたはシステムDRAM)において格納されてもよい。
プロセス500はさらに、540において、二次メモリにおけるページが、二次メモリにおけるページにアクセスするようにとの要求をホームエージェントが受取ったことに基づいて、アクセスされるかどうかを判断するステップを含み得る。加えて、二次メモリにおける各ページ毎のカウントは、540において、二次メモリにおけるページが、二次メモリにおけるページにアクセスするようにとの要求をホームエージェントが受取ったことに基づいてアクセスされていると判断したことに応じて、インクリメントされてもよい。そのカウントに基づいて、二次メモリにおけるページは、550において、頻繁にアクセスされるものとして識別され得る。さらに、頻繁にアクセスされるものとして識別されたそのページは、550において、二次メモリからメインメモリに移行され得る。いくつかの実施形態においては、メモリのページまたは部分のグループは、頻繁にアクセスされるものとして識別され、二次メモリからメインメモリに移行され得る。
プロセス500はさらに、560において、メインメモリにおける或るページを、メインメモリにおける各ページ毎のカウントに基づいて、希にしかアクセスされないものとして識別するステップを含み得る。希にしかアクセスされないものとして識別されたそのページは、560において、メインメモリから二次メモリに移行され得る。いくつかの実施形態においては、メモリのページまたは部分のグループは、希にしかアクセスされないものして識別され、メインメモリから二次メモリに移行され得る。560において、メインメモリにおける或るページを、カウントに基づいて、希にしかアクセスされないものとして識別するステップは、ページについての相互アクセス時間(すなわち、アクセス間の時間)が、相互アクセス時間しきい値を満たしている(たとえば、ページについての相互アクセス時間が相互アクセス時間しきい値より大きいかまたは相互アクセス時間しきい値以上である)と判断するステップを含み得る。これにより、希にしかアクセスされないものとして識別されたページまたはページのグループは、ページまたはページのグループについての相互アクセス時間が相互アクセス時間しきい値を満たしていると判断したことに応じて、メインメモリから二次メモリに移行され得る。
560において、希にしかアクセスされないものとして識別されたページを移行するプロセスは、ページまたはページのグループに関連付けられたPTEまたは複数のPTEを無効にし、ページまたはページのグループに関連付けられたいずれかのエントリのためのトランスレーション・ルックアサイド・バッファ・シュートダウンを実行し、ページまたはページのグループをメインメモリから二次メモリに転送するステップを含み得る。二次メモリにおける各ページ毎のカウントは、スタティックランダムアクセスメモリに格納された各ページ毎のカウンタによって維持されてもよく、または、カウンティング・ブルーム・フィルタが、ページの設定についてのアクセス統計を維持してもよい。代替的には、各ページ毎のカウンタは、ダイナミックランダムアクセスメモリ(たとえば、少量の専用のDRAMまたはシステムDRAM)に格納されてもよい。
上述のとおり、たとえば、アプリケーションがメモリ(たとえばページ)にアクセスしようと試みて、ページがメインメモリに存在していない場合、ページフォルトが発生する。ページフォルトは、二次メモリからメインメモリDRAMへのページ全体の転送をトリガしてもよく、次いで、そのアプリケーションが実行を継続し得る。しかしながら、そのプロセスはページのデータを読取る間に遅延を引起こす可能性がある。たとえば、4KBサイズのページの場合、4KB全体が転送される可能性があり、これにより、4KBのデータを読取る間に遅延を引起こす可能性がある。この明細書中に記載される実施形態に従うと、この遅延が有利に減じられる可能性があり、これにより、結果として、実行中のアプリケーションまたはプロセスがより高速で実行されることになり得る。
ページ全体(たとえば、上述の例における4KB全体)を転送するのではなく、システムは、アプリケーションがどのキャッシュライン(たとえばデータブロック)にアクセスしようと試みたかを識別し、最初に、そのキャッシュラインだけを二次メモリからメインメモリに転送する。アクセスが要求されていたキャッシュラインが転送されていれば、アプリケーションは、そのデータの読出しおよび書き込みを行って、実行を継続し得る。ページ全体を転送することなく、その重要なキャッシュラインが転送された後、ページの残余部分(たとえば4KBの残余部分)がバックグラウンドにおいて転送され得る。
いくつかの実施形態においては、重要なキャッシュラインがCPUに提供され得るとともに、キャッシュ・コヒーレンシ・メカニズムまたはプロトコルが使用され得る。このプロセスはページフォルトを処理するために、より高速の性能を実現する。たとえば、動作の際に、アプリケーションは、ページから1本または2本のキャッシュラインにアクセスすることを要求するだけであってもよく、重要なキャッシュラインはページ全体が転送されるのを待つことなく提供され得る。次いで、その実行を継続するために、要求されたデータ(たとえば重要なキャッシュライン)がアプリケーションに提供された後、ページの残余部分がバックグラウンドにおいて転送されてもよい。
これにより、ハードウェアが重要なキャッシュラインを最初に配信することによって、ページフォルト待ち時間が減らされる可能性がある。ハードウェアは、要求されたキャッシュラインを二次メモリから、たとえばプロセッサのキャッシュおよびホストDRAMに転送してもよい。したがって、要求されたデータが提供されてから、要求されたページにおけるキャッシュラインの残りが転送される可能性がある。さらに、たとえば、カスタム・ページフォルト・ハンドラまたはハードウェアは、PTEを更新して、ホストDRAMにおける新しいページを示し得る。結果として、他のプロセッサは、ページにおけるキャッシュラインに対して、それらのキャッシュラインがメインメモリに実際に存在する前に、アクセスし得ることとなる。
いくつかの実施形態においては、メモリの一貫したビューを維持するために、キャッシュエージェント140は、ページにおけるキャッシュライン上で所有権の要求(request-for-ownership:RFO)を実行することにより、ページ転送が行なわれている間それら
を排他的に保持し得る。ハードウェアがキャッシュラインを転送し終えた後、キャッシュエージェント140は、そのキャッシュラインの所有権をリリースしてもよく、これにより、将来の要求がホストのキャッシュまたはホストDRAMから提供され得ることとなる。さらに、たとえば、ページが転送されている間に、ホストがページ内の他のキャッシュラインのうちの1つにアクセスしようと試みたとき、ハードウェアは、キャッシュ・コヒーレンス・メカニズムに従って、その他のキャッシュラインのためのスヌープ要求(たとえば、プロセッサ間キャッシュコヒーレンシ動作)を認識し得るとともに、他のキャッシュラインが二次メモリから転送されたときには、スヌープ要求に応じて他のキャッシュラインを提供し得る。
いくつかの実施形態においては、ハードウェアは、送信中のページについてのキャッシュラインを実際にはキャッシュエージェントのキャッシュに格納しない可能性がある。むしろ、それらのラインについてのタグおよびコヒーレンス状態ビットが格納される可能性があり、次いで、ホストDRAMまたはより低速のメモリからの要求についてのデータが転送される可能性がある。いずれの構成においても、転送されているページをキャッシュに入れるのに必要なオンチップSRAMを減らすことができる。
図6は、本開示の実現例に従った、重要なキャッシュラインを最初に転送することによってページフォルトを処理するためのプロセス600の一例のフローチャートを示す。プロセス600は、610において、データのページのキャッシュラインにアクセスするようにとの要求をメインメモリから受取るステップを含み得る。620において、要求されたキャッシュラインがメインメモリに格納されておらず、二次メモリに格納され得ると判断され得る。二次メモリからの、データのページについての要求されたキャッシュライン(たとえばデータブロック)が、630において、データのページ全体を転送することなく、メインメモリに転送され得る。これにより、要求されたキャッシュラインが提供され、要求されたキャッシュライン以外のデータのページの残余部分が二次メモリに格納されたままになり得る。
プロセス600はさらに、640において、データのページに関連付けられたPTEを更新して、メインメモリにおけるデータのページの位置を示し得る。650において、データのページの残余部分は、キャッシュラインにアクセスするようにとの要求に応じて、要求されたキャッシュラインが提供された後、バックグラウンドにおいて二次メモリからメインメモリに転送され得る。
いくつかの実施形態においては、キャッシュ・コヒーレンシ・メカニズムは、要求された第1のキャッシュラインとは異なるデータのページの第2のキャッシュラインのアクセスを処理するために、650において、二次メモリからメインメモリにデータのページの残余部分を転送している間に、実現され得る。キャッシュ・コヒーレンシ・メカニズムは、キャッシュエージェント140によって、データのページにおけるキャッシュラインのRFOを発行することと、キャッシュラインが二次メモリからメインメモリに転送されていることに応じて各キャッシュラインの所有権をリリースすることとを含み得る。キャッシュ・コヒーレンシ・メカニズムに従って、データのページのキャッシュラインがキャッシュエージェント140のキャッシュに格納されてもよい。代替的には、データのページのそれらのキャッシュラインに関連付けられたタグおよびコヒーレンス状態ビットが格納されてもよい。さらに、650において、データのページの残余部分が転送されている間に、データのページの第2のキャッシュラインにアクセスするようにとの要求に応じて、スヌープ要求が第2のキャッシュラインについて認識され得るとともに、第2のキャッシュラインが二次メモリから転送されたときにスヌープ要求に応じて第2のキャッシュラインを戻し得る。メインメモリがページ転送を受取ることができない場合、たとえば、空きページがない場合、メインメモリに格納された使用頻度が最も低いページのうちの1ページが、上述の使用統計に基づいて決定されてもよく、使用頻度が最も低いページのうちの1ページが、二次メモリにリリースまたはライトバックされてもよい。したがって、データのページは、使用頻度が最も低いページのうちリリースされた1ページの位置において、二次メモリからメインメモリに転送され得る。
いくつかの実現例が記載されてきた。しかしながら、本開示の精神および範囲から逸脱することなく、さまざまな変更が実施され得ることが理解されるだろう。たとえば、上述のフローは、ステップが順序付けられるか、追加されるかまたは削除されたさまざまな形式で用いられてもよい。
この明細書に記載された本発明の実現例および機能的動作のすべては、この明細書に開示された構造、およびそれらの構造的な同等例、またはそれらのうち1つ以上の組合せを含むデジタル電子回路、ファームウェアまたはハードウェアにおいて実現することができる。本発明の実現例は、1つ以上のコンピュータプログラムプロダクトとして、すなわち、データ処理装置によって、またはデータ処理装置の動作を制御することによって、実行されるべきコンピュータ読取可能媒体上において符号化されるコンピュータプログラム命令の1つ以上のモジュールとして、実現することができる。コンピュータ読取可能媒体は、機械読取可能な記憶装置、機械読取可能な記憶基板、メモリデバイス、またはそれらの1つ以上の組合せであってもよい。「データ処理装置」という語は、一例として、プログラマブルプロセッサ、コンピュータまたは複数のプロセッサもしくはコンピュータを含む、データを処理するためのすべての装置、デバイスおよび機械を包含する。装置は、ハードウェアに加えて、当該コンピュータプログラムのための実行環境を作成するコード、たとえば、プロセッサ・ファームウェア、プロトコル・スタック、データベース管理システム、オペレーティングシステムまたはそれらの1つ以上の組合せを構成するコード、を含み得る。
この開示は多くの詳細を含んでいるが、これらは、本発明の範囲に対する限定、または本発明によって主張され得るものに対する限定として解釈されるべきでなく、本発明の特定の実現例に特有の特徴の記述として解釈されるべきである。別個の実現例の文脈においてこの明細書に記載されているいくつかの特徴は、また、単一の実現例における組合せで実現することができる。逆に、単一の実現例の文脈において記載されているさまざまな特徴は、また、複数の実現例において別個に、またはいずれかの好適な副次的組合わせで実現することができる。さらに、いくつかの組合せで、最初に主張されたように機能するものとしていくつかの特徴が上述されているかもしれないが、主張された組合せからの1つ以上の特徴を、場合によってはその組合せから排除することができ、さらに、主張された組合せは、副次的組合わせまたは副次的組合わせの変形例に誘導される可能性もある。
同様に、動作が特定の順序で添付の図面に示されているが、これは、望ましい結果を達成するために、このような動作が図示された特定の順序もしくは連続的順序で実行されること、または、図示されたすべての動作が実行されることを必要とするものとして理解されるべきではない。いくつかの環境においては、マルチタスクおよび並列処理が有利である可能性もある。さらに、上述の実現例においてさまざまなシステム構成要素が分離されているが、すべての実現例においてこのような分離が必要になるものと理解されるべきではなく、記載されたプログラムコンポーネントおよびシステムが、一般には、単一のソフトウェアプロダクトにともに一体化され得るかまたは複数のソフトウェアプロダクトにパッケージングされ得ることが理解されるべきである。
このように、本開示の特定の実現例が記載されてきた。他の実現例も添付の特許請求の範囲内にある。たとえば、請求項において記載される動作は、異なる順序で実行されても、依然として望ましい結果を達成することができる。いくつかの実現例が記載されてきた。しかしながら、開示の精神および範囲から逸脱することなく、さまざまな変更がなされ得ることが理解されるだろう。たとえば、上述のフローは、ステップが順序付けられるか、追加されるかまたは削除されたさまざまな形式で用いられてもよい。したがって、他の実現例は添付の特許請求の範囲内である。
主題の他の革新的な局面が、データのページの第1のキャッシュラインにアクセスするようにとの要求をメインメモリから受取り、第1のキャッシュラインがメインメモリに格納されずに、二次メモリに格納されていると判断し、これに応じて、データのページの残余部分が二次メモリに格納されたままの状態で、データのページ全体を転送することなく、データのページの第1のキャッシュラインを二次メモリからメインメモリに転送し、デ
ータのページに関連付けられたページテーブルエントリを更新して、メインメモリにおけるデータのページの位置を示し、データのページの残余部分を二次メモリからメインメモリに転送するための方法、システムおよび装置に向けられている。
110 CPU、120 DRAM、130 リモートメモリ、140 キャッシュエージェント、145 ホームエージェント、150 メモリ管理ユニット、160 ページテーブルウォーカ、165 トランスレーション・ルックアサイド・バッファ、170
DRAM、180 不揮発性メモリ。

Claims (41)

  1. コンピュータによって実現される方法であって、
    ページテーブルスキャナでのページテーブルのスキャンに基づいて、アクセスビットが前記ページテーブルの各ページテーブルエントリ毎に設定されているかどうかを、プロセッサで判断するステップを含み、前記アクセスビットは、前記ページテーブルエントリに関連付けられたページが最後のスキャン期間においてアクセスされたかどうかを示しており、前記方法はさらに、
    前記アクセスビットが前記ページに関連付けられた前記ページテーブルエントリ毎に設定されていないと判断したことに応じて、各ページ毎にカウントをインクリメントするステップと、
    前記アクセスビットが各ページテーブルエントリ毎に設定されているかどうかを前記プロセッサで判断した後、前記アクセスビットをリセットするステップと、
    データの第1のページにアクセスするようにとの要求をメインメモリから受取るステップと、
    前記データの第1のページが前記メインメモリに格納されていないと判断したことに基づいて、ページフォルトを開始するステップと、
    ダイレクトメモリアクセス(DMA)エンジンを用いて前記ページフォルトを処理するステップとを含み、
    DMAエンジンを用いて前記ページフォルトを処理する前記ステップは、
    前記メインメモリがページ転送を受取ることができないと判断したことに応じて、各ページ毎の前記カウントに基づいて特定のページを決定し、前記二次メモリに前記特定のページをリリースし、前記リリースされた特定のページの位置において、前記データの第1のページを前記二次メモリから前記メインメモリに転送するステップを含む、方法。
  2. 前記特定のページは、各ページ毎の前記カウントに基づいて、使用頻度が最も低いページのうちの1つであると判断される、請求項1に記載の方法。
  3. 前記ページフォルトを開始する前記ステップは、前記ページフォルトが処理されている間、スレッドの実行をストールさせるステップと、
    前記ページフォルトが処理された後、前記メインメモリにアクセスするために前記スレッドをリリースするステップとを含む、請求項1に記載の方法。
  4. 各ページ毎の前記カウントは、スタティックランダムアクセスメモリに格納された各ページ毎のカウンタ、カウンティング・ブルーム・フィルタ、または、ダイナミックランダムアクセスメモリに格納された各ページ毎のカウンタ、のうち少なくとも1つによって維持される、請求項1に記載の方法。
  5. システムであって、
    1つ以上のプロセッサと、
    メインメモリおよび二次メモリを含むメモリとを含み、前記メモリは、実施可能な命令を格納しており、前記命令は、実行されると、前記1つ以上のプロセッサに以下の動作を実行させ、前記以下の動作は、
    ページテーブルスキャナでのページテーブルのスキャンに基づいて、アクセスビットが前記ページテーブルの各ページテーブルエントリ毎に設定されているかどうかを、プロセッサで判断する動作を含み、前記アクセスビットは、前記ページテーブルエントリに関連付けられたページが最後のスキャン期間においてアクセスされたかどうかを示しており、前記以下の動作はさらに、
    前記アクセスビットが前記ページに関連付けられた前記ページテーブルエントリ毎に設定されていないと判断したことに応じて、各ページ毎にカウントをインクリメントする動
    作と、
    前記アクセスビットが各ページテーブルエントリ毎に設定されているかどうかを前記プロセッサで判断した後、前記アクセスビットをリセットする動作と、
    データの第1のページにアクセスするようにとの要求をメインメモリから受取る動作と、
    前記データの第1のページが前記メインメモリに格納されていないと判断したことに基づいて、ページフォルトを開始する動作と、
    ダイレクトメモリアクセス(DMA)エンジンを用いて前記ページフォルトを処理する動作とを含み、
    DMAエンジンを用いて前記ページフォルトを処理する前記動作は、
    前記メインメモリがページ転送を受取ることができないと判断したことに応じて、各ページ毎の前記カウントに基づいて特定のページを決定し、前記特定のページを前記二次メモリにリリースし、前記リリースされた特定のページの位置において、前記データの第1のページを前記二次メモリから前記メインメモリに転送する動作を含む、システム。
  6. 前記特定のページは、各ページ毎の前記カウントに基づいて、使用頻度が最も低いページのうちの1つであると判断される、請求項5に記載のシステム。
  7. 前記ページフォルトを開始する前記動作は、
    前記ページフォルトが処理されている間、スレッドの実行をストールさせる動作と、
    前記ページフォルトが処理された後、前記メインメモリにアクセスするために前記スレッドをリリースする動作とを含む、請求項5に記載のシステム。
  8. 各ページ毎の前記カウントは、
    スタティックランダムアクセスメモリに格納された各ページ毎のカウンタ、カウンティング・ブルーム・フィルタ、または、ダイナミックランダムアクセスメモリに格納された各ページ毎のカウンタ、のうち少なくとも1つによって維持される、請求項5に記載のシステム。
  9. コンピュータによって実現される方法であって、
    少なくとも1つのページテーブルウォーカでのページテーブルのスキャンに基づいて、アクセスビットが前記ページテーブルの各ページテーブルエントリ毎に設定されているかどうかを判断するステップを含み、前記アクセスビットは、前記ページテーブルエントリに関連付けられたページが最後のスキャン期間においてメインメモリにおいてアクセスされたかどうかを示しており、前記方法はさらに、
    前記アクセスビットが前記ページに関連付けられた前記ページテーブルエントリ毎に設定されていないと判断したことに応じて、前記メインメモリにおける各ページ毎に一次カウントをインクリメントするステップと、
    前記アクセスビットが各ページテーブルエントリ毎に設定されているかどうかを判断した後、前記アクセスビットをリセットするステップと、
    ホームエージェントが二次メモリにおけるページにアクセスするようにとの要求を受取ったことに基づいて、前記二次メモリにおける前記ページがアクセスされるかどうかを判断するステップと、
    前記ホームエージェントが前記二次メモリにおける前記ページにアクセスするようにとの要求を受取ったことに基づいて、前記二次メモリにおける前記ページがアクセスされると判断したことに応じて、前記二次メモリにおける各ページ毎に二次カウントをインクリメントするステップと、
    前記二次カウントに基づいて、前記二次メモリにおける特定のページを頻繁にアクセスされるものとして識別するステップと、
    頻繁にアクセスされるものとして識別された前記特定のページを前記二次メモリから前
    記メインメモリに移行するステップとを含む、方法。
  10. 前記メインメモリにおける或るページを、前記一次カウントに基づいて、希にしかアクセスされないものとして識別するステップと、
    希にしかアクセスされないものとして識別された前記或るページを、前記メインメモリから前記二次メモリに移行するステップとをさらに含む、請求項9に記載の方法。
  11. 希にしかアクセスされないものとして識別された前記或るページを移行する前記ステップは、前記或るページに関連付けられた前記ページテーブルエントリを無効にし、前記或るページに関連付けられたいずれかのエントリのためにトランスレーション・ルックアサイド・バッファ・シュートダウンを実行し、前記或るページを前記メインメモリから前記二次メモリに転送するステップを含む、請求項10に記載の方法。
  12. 前記メインメモリにおける各ページ毎の前記一次カウントおよび前記二次メモリにおける各ページ毎の前記二次カウントの各々は、スタティックランダムアクセスメモリに格納された各ページ毎のカウンタ、カウンティング・ブルーム・フィルタ、または、ダイナミックランダムアクセスメモリに格納された各ページ毎のカウンタ、のうち少なくとも1つによって維持される、請求項9に記載の方法。
  13. 前記一次カウントに基づいて、前記メインメモリにおける或るページを、希にしかアクセスされないものとして識別するステップは、前記或るページについての相互アクセス時間が相互アクセス時間しきい値を満たすと判断するステップを含む、請求項10に記載の方法。
  14. 前記或るページについての前記相互アクセス時間が前記相互アクセス時間しきい値を満たすと判断したことに応じて、希にしかアクセスされないものとして識別された前記或るページが、前記メインメモリから前記二次メモリに移行される、請求項13に記載の方法。
  15. システムであって、
    1つ以上のプロセッサと、
    メインメモリおよび二次メモリを含むメモリとを含み、前記メモリは、実施可能な命令を格納しており、前記命令は、実行されると、前記1つ以上のプロセッサに以下の動作を実行させ、前記以下の動作は、
    少なくとも1つのページテーブルウォーカでのページテーブルのスキャンに基づいて、アクセスビットが前記ページテーブルの各ページテーブルエントリ毎に設定されているかどうかを判断する動作を含み、前記アクセスビットは、前記ページテーブルエントリに関連付けられたページが最後のスキャン期間においてメインメモリにおいてアクセスされたかどうかを示しており、前記以下の動作はさらに、
    前記アクセスビットが前記ページに関連付けられた前記ページテーブルエントリ毎に設定されていないと判断したことに応じて、前記メインメモリにおける各ページ毎に一次カウントをインクリメントする動作と、
    前記アクセスビットが各ページテーブルエントリ毎に設定されているかどうかを判断した後、前記アクセスビットをリセットする動作と、
    ホームエージェントが二次メモリにおけるページにアクセスするようにとの要求を受取ったことに基づいて、前記二次メモリにおける前記ページがアクセスされるかどうかを判断する動作と、
    前記ホームエージェントが前記二次メモリにおける前記ページにアクセスするようにとの要求を受取ったことに基づいて、前記二次メモリにおける前記ページがアクセスされると判断したことに応じて、前記二次メモリにおける各ページ毎に二次カウントをインクリ
    メントする動作と、
    前記二次カウントに基づいて、前記二次メモリにおける特定のページを頻繁にアクセスされるものとして識別する動作と、
    頻繁にアクセスされるものとして識別された前記特定のページを前記二次メモリから前記メインメモリに移行する動作とを含む、システム。
  16. 前記動作はさらに、
    前記一次カウントに基づいて、前記メインメモリにおける或るページを、希にしかアクセスされないものとして識別する動作と、
    希にしかアクセスされないものとして識別された前記或るページを、前記メインメモリから前記二次メモリに移行する動作とを含む、請求項15に記載のシステム。
  17. 希にしかアクセスされないものとして識別された前記或るページを移行する前記動作は、
    前記或るページに関連付けられた前記ページテーブルエントリを無効にし、前記或るページに関連付けられたいずれかのエントリのためのトランスレーション・ルックアサイド・バッファ・シュートダウンを実行し、前記或るページを前記メインメモリから前記二次メモリに転送する動作を含む、請求項16に記載のシステム。
  18. 前記メインメモリにおける各ページ毎の前記一次カウントおよび前記二次メモリにおける各ページ毎の前記二次カウントの各々は、スタティックランダムアクセスメモリに格納された各ページ毎のカウンタ、カウンティング・ブルーム・フィルタ、または、ダイナミックランダムアクセスメモリに格納された各ページ毎のカウンタ、のうち少なくとも1つによって維持される、請求項15に記載のシステム。
  19. 前記一次カウントに基づいて、前記メインメモリにおける或るページを、希にしかアクセスされないものとして識別する動作は、前記或るページについての相互アクセス時間が相互アクセス時間しきい値を満たすと判断する動作を含む、請求項16に記載のシステム。
  20. 前記或るページについての前記相互アクセス時間が前記相互アクセス時間しきい値を満たすと判断したことに応じて、希にしかアクセスされないものとして識別された前記或るページが、前記メインメモリから前記二次メモリに移行される、請求項19に記載のシステム。
  21. コンピュータによって実現される方法であって、
    データのページの第1のキャッシュラインにアクセスするようにとの要求をメインメモリから受取るステップと、
    前記第1のキャッシュラインが前記メインメモリに格納されず、二次メモリに格納されていると判断するステップと、これに応じて、
    データのページ全体を転送することなく、前記データのページの前記第1のキャッシュラインを前記二次メモリから前記メインメモリに転送するステップとを含み、前記データのページの残余部分は前記二次メモリに格納されたままであり、前記方法はさらに、
    前記データのページに関連付けられたページテーブルエントリを更新して、前記メインメモリにおける前記データのページの位置を示すステップと、
    前記データのページの前記残余部分を前記二次メモリから前記メインメモリに転送するステップとを含む、方法。
  22. キャッシュ・コヒーレンシ・メカニズムは、前記データのページの第2のキャッシュラインのアクセスを処理するために、前記データのページの前記残余部分を前記二次メモリ
    から前記メインメモリに転送する間に、実現される、請求項21に記載の方法。
  23. 前記キャッシュ・コヒーレンシ・メカニズムは、
    前記データのページにおけるキャッシュラインの所有権についての要求を、キャッシュエージェントによって発行するステップと、
    前記キャッシュラインが前記二次メモリから前記メインメモリに転送されていることに応じて各キャッシュラインの所有権をリリースするステップとを含む、請求項22に記載の方法。
  24. 前記キャッシュエージェントのキャッシュに前記データのページのキャッシュラインを格納するステップをさらに含む、請求項23に記載の方法。
  25. 前記データのページのキャッシュラインに関連付けられたタグおよびコヒーレンス状態ビットを格納するステップをさらに含む、請求項23に記載の方法。
  26. 前記データのページの前記残余部分が転送されている間に、前記データのページの前記第2のキャッシュラインにアクセスするようにとの要求に応じて、前記第2のキャッシュラインについてのスヌープ要求を認識し、前記第2のキャッシュラインが前記二次メモリから転送されると前記スヌープ要求に応じて前記第2のキャッシュラインを戻すステップをさらに含む、請求項23に記載の方法。
  27. 前記メインメモリがページ転送を受取ることができない場合、前記メインメモリに格納された使用頻度が最も低いページのうちの1ページを決定し、前記使用頻度が最も低いページのうちの前記1ページを前記二次メモリにリリースし、前記使用頻度が最も低いページのうちリリースされた前記1ページの位置において、前記データのページを前記二次メモリから前記メインメモリに転送するステップをさらに含む、請求項21に記載の方法。
  28. システムであって、
    1つ以上のプロセッサと、
    実施可能な命令を格納する1つ以上の記憶装置とを備え、前記命令は、前記1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに以下の動作を実行させ、前記以下の動作は、
    データのページの第1のキャッシュラインにアクセスするようにとの要求をメインメモリから受取る動作と、
    前記第1のキャッシュラインが前記メインメモリに格納されず、二次メモリに格納されていると判断する動作と、
    データのページ全体を転送することなく、前記データのページの前記第1のキャッシュラインを前記二次メモリから前記メインメモリに転送する動作とを含み、前記データのページの残余部分は前記二次メモリに格納されたままであり、前記以下の動作はさらに、
    前記データのページに関連付けられたページテーブルエントリを更新して、前記メインメモリにおける前記データのページの位置を示す動作と、
    前記データのページの前記残余部分を前記二次メモリから前記メインメモリに転送する動作とを含む、システム。
  29. キャッシュ・コヒーレンシ・メカニズムは、前記データのページの第2のキャッシュラインのアクセスを処理するために、前記データのページの前記残余部分を前記二次メモリから前記メインメモリに転送する間に、実現される、請求項28に記載のシステム。
  30. 前記キャッシュ・コヒーレンシ・メカニズムは、
    前記データのページにおけるキャッシュラインの所有権についての要求をキャッシュエ
    ージェントによって発行することと、
    前記キャッシュラインが前記二次メモリから前記メインメモリに転送されていることに応じて各キャッシュラインの所有権をリリースすることとを含む、請求項29に記載のシステム。
  31. 前記動作はさらに、
    前記キャッシュエージェントのキャッシュに前記データのページのキャッシュラインを格納することを含む、請求項30に記載のシステム。
  32. 前記動作はさらに、
    前記データのページのキャッシュラインに関連付けられたタグおよびコヒーレンス状態ビットを格納することを含む、請求項30に記載のシステム。
  33. 前記動作はさらに、
    前記データのページの前記残余部分が転送されている間に、前記データのページの前記第2のキャッシュラインにアクセスするようにとの要求に応じて、前記第2のキャッシュラインについてのスヌープ要求を認識し、前記第2のキャッシュラインが前記二次メモリから転送されると前記スヌープ要求に応じて前記第2のキャッシュラインを戻すことを含む、請求項30に記載のシステム。
  34. 前記動作はさらに、
    前記メインメモリがページ転送を受取ることができない場合、前記メインメモリに格納された使用頻度が最も低いページのうちの1ページを決定し、前記使用頻度が最も低いページのうちの前記1ページを前記二次メモリにリリースし、前記使用頻度が最も低いページのうちリリースされた前記1ページの位置において、前記データのページを前記二次メモリから前記メインメモリに転送することを含む、請求項28に記載のシステム。
  35. 1つ以上のプロセッサによって実行可能な命令を格納しているコンピュータ読取可能記憶装置であって、前記命令は、実行されると、前記1つ以上のプロセッサに以下の動作を実行させ、前記以下の動作は、
    データのページの第1のキャッシュラインにアクセスするようにとの要求をメインメモリから受取ることと、
    前記第1のキャッシュラインが前記メインメモリに格納されず、二次メモリに格納されていると判断することと、
    データのページ全体を転送することなく、前記データのページの前記第1のキャッシュラインを前記二次メモリから前記メインメモリに転送することとを含み、前記データのページの残余部分は前記二次メモリに格納されたままであり、前記以下の動作はさらに、
    前記データのページに関連付けられたページテーブルエントリを更新して、前記メインメモリにおける前記データのページの位置を示すことと、
    前記データのページの前記残余部分を前記二次メモリから前記メインメモリに転送することとを含む、コンピュータ読取可能記憶装置。
  36. キャッシュ・コヒーレンシ・メカニズムは、前記データのページの第2のキャッシュラインのアクセスを処理するために、前記データのページの前記残余部分を前記二次メモリから前記メインメモリに転送する間に、実現される、請求項35に記載のコンピュータ読取可能記憶装置。
  37. 前記キャッシュ・コヒーレンシ・メカニズムは、
    前記データのページにおけるキャッシュラインの所有権についての要求を、キャッシュエージェントによって発行することと、
    前記キャッシュラインが前記二次メモリから前記メインメモリに転送されていることに応じて各キャッシュラインの所有権をリリースすることとを含む、請求項36に記載のコンピュータ読取可能記憶装置。
  38. 前記動作はさらに、
    (i)前記キャッシュエージェントのキャッシュにおける前記データのページのキャッシュライン、または、(ii)前記データのページのキャッシュラインに関連付けられたタグおよびコヒーレンス状態ビット、のうち1つを格納することを含む、請求項37に記載のコンピュータ読取可能記憶装置。
  39. 前記動作はさらに、
    前記データのページの前記残余部分が転送されている間に、前記データのページの前記第2のキャッシュラインにアクセスするようにとの要求に応じて、前記第2のキャッシュラインについてのスヌープ要求を認識し、前記第2のキャッシュラインが前記二次メモリから転送されると前記スヌープ要求に応じて前記第2のキャッシュラインを戻すことを含む、請求項37に記載のコンピュータ読取可能記憶装置。
  40. 前記動作はさらに、
    前記メインメモリがページ転送を受取ることができない場合、前記メインメモリに格納された使用頻度が最も低いページのうちの1ページを決定し、前記使用頻度が最も低いページのうちの前記1ページを前記二次メモリにリリースし、前記使用頻度が最も低いページのうちリリースされた前記1ページの位置において、前記データのページを前記二次メモリから前記メインメモリに転送することを含む、請求項35に記載のコンピュータ読取可能記憶装置。
  41. 請求項1から4、9から13、および21から27のいずれか一項に記載の前記方法をコンピュータに実行させるためのプログラム。
JP2019183022A 2016-08-12 2019-10-03 ハイブリッドメモリ管理 Active JP6944983B2 (ja)

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 2016-08-12
US15/235,495 US10152427B2 (en) 2016-08-12 2016-08-12 Hybrid memory management
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 true JP2020009492A (ja) 2020-01-16
JP2020009492A5 JP2020009492A5 (ja) 2020-09-24
JP6944983B2 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) EP3282364B1 (ja)
JP (2) JP2018026136A (ja)
CN (2) CN111177030B (ja)
DE (2) DE202017104840U1 (ja)
TW (1) TWI643073B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113742115A (zh) * 2020-05-29 2021-12-03 成均馆大学校产学协力团 用于通过处理器处理页面错误的方法
US11709773B2 (en) 2021-04-09 2023-07-25 Fujitsu Limited Computer-readable recording medium storing information processing program, information processing method, and information processing device

Families Citing this family (18)

* Cited by examiner, † Cited by third party
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
CN111512294A (zh) * 2018-09-18 2020-08-07 华为技术有限公司 一种存储装置及电子设备
US11113207B2 (en) * 2018-12-26 2021-09-07 Samsung Electronics Co., Ltd. Bypass predictor for an exclusive last-level cache
US11609858B2 (en) 2018-12-26 2023-03-21 Samsung Electronics Co., Ltd. Bypass predictor for an exclusive last-level cache
KR20200085522A (ko) * 2019-01-07 2020-07-15 에스케이하이닉스 주식회사 이종 메모리를 갖는 메인 메모리 장치, 이를 포함하는 컴퓨터 시스템 및 그것의 데이터 관리 방법
US11055221B2 (en) * 2019-03-22 2021-07-06 Samsung Electronics Co., Ltd. Speculative DRAM read, in parallel with cache level search, leveraging interconnect directory
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
US11436041B2 (en) 2019-10-03 2022-09-06 Micron Technology, Inc. Customized root processes for groups of applications
US11429445B2 (en) 2019-11-25 2022-08-30 Micron Technology, Inc. User interface based page migration for performance enhancement
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 中企云链(北京)金融信息服务有限公司 一种基于高并发的数据缓存方法
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 海飞科(南京)信息技术有限公司 用于存储管理的方法、介质、程序产品、系统和装置
CN115794397A (zh) * 2022-11-29 2023-03-14 阿里云计算有限公司 冷热页管理加速设备、方法、mmu、处理器及电子设备

Family Cites Families (31)

* Cited by examiner, † Cited by third party
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
US8352705B2 (en) * 2008-01-15 2013-01-08 Vmware, Inc. Large-page optimization in virtual memory paging systems
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
US9792220B2 (en) 2013-03-15 2017-10-17 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

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113742115A (zh) * 2020-05-29 2021-12-03 成均馆大学校产学协力团 用于通过处理器处理页面错误的方法
KR20210147704A (ko) * 2020-05-29 2021-12-07 성균관대학교산학협력단 프로세서를 통한 페이지 폴트 처리 방법
KR102400977B1 (ko) * 2020-05-29 2022-05-25 성균관대학교산학협력단 프로세서를 통한 페이지 폴트 처리 방법
US11436150B2 (en) 2020-05-29 2022-09-06 Research & Business Foundation Sungkyunkwan University Method for processing page fault by processor
CN113742115B (zh) * 2020-05-29 2024-03-12 成均馆大学校产学协力团 用于通过处理器处理页面错误的方法
US11709773B2 (en) 2021-04-09 2023-07-25 Fujitsu Limited Computer-readable recording medium storing information processing program, information processing method, and information processing device

Also Published As

Publication number Publication date
DE202017104841U1 (de) 2017-11-22
EP3291097A2 (en) 2018-03-07
US10037173B2 (en) 2018-07-31
EP3291097A3 (en) 2018-05-30
CN107729168A (zh) 2018-02-23
US20180046411A1 (en) 2018-02-15
EP3282364A1 (en) 2018-02-14
CN111177030A (zh) 2020-05-19
TWI643073B (zh) 2018-12-01
CN111177030B (zh) 2021-08-20
DE202017104840U1 (de) 2017-12-12
TW201810057A (zh) 2018-03-16
JP6944983B2 (ja) 2021-10-06
JP2018026136A (ja) 2018-02-15
EP3282364B1 (en) 2019-10-09

Similar Documents

Publication Publication Date Title
JP6944983B2 (ja) ハイブリッドメモリ管理
US10705975B2 (en) Hybrid memory management
CN109791523B (zh) 支持巨页的内存管理
CN110209601B (zh) 存储器接口
CN108701092B (zh) 自愈粗粒探听过滤器
US10289555B1 (en) Memory read-ahead using learned memory access patterns
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
US8180981B2 (en) Cache coherent support for flash in a memory hierarchy
US10877890B2 (en) Providing dead-block prediction for determining whether to cache data in cache devices
US5987544A (en) System interface protocol with optional module cache
JP2008501190A (ja) マルチプロセッサシステムにおいてデータ変換バッファ項目を無効にするメカニズム
US6918021B2 (en) System of and method for flow control within a tag pipeline
US10754791B2 (en) Software translation prefetch instructions
JP7311959B2 (ja) 複数のデータ・タイプのためのデータ・ストレージ

Legal Events

Date Code Title Description
A521 Request for written amendment filed

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250