IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドの特許一覧

特表2024-512087階層型メモリ管理をオフロードするための方法及び装置
<>
  • 特表-階層型メモリ管理をオフロードするための方法及び装置 図1
  • 特表-階層型メモリ管理をオフロードするための方法及び装置 図2
  • 特表-階層型メモリ管理をオフロードするための方法及び装置 図3
  • 特表-階層型メモリ管理をオフロードするための方法及び装置 図4
  • 特表-階層型メモリ管理をオフロードするための方法及び装置 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-18
(54)【発明の名称】階層型メモリ管理をオフロードするための方法及び装置
(51)【国際特許分類】
   G06F 12/0862 20160101AFI20240311BHJP
   G06F 12/1009 20160101ALI20240311BHJP
【FI】
G06F12/0862 105
G06F12/1009 105
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023559705
(86)(22)【出願日】2022-03-17
(85)【翻訳文提出日】2023-10-31
(86)【国際出願番号】 US2022020828
(87)【国際公開番号】W WO2022212081
(87)【国際公開日】2022-10-06
(31)【優先権主張番号】17/219,138
(32)【優先日】2021-03-31
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ケビン エム. リパク
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205JJ13
5B205KK16
5B205MM36
5B205MM51
5B205NN44
5B205NN45
5B205NN92
5B205RR05
5B205VV03
(57)【要約】
方法及び装置は、階層型メモリ管理をオフロードする。方法は、階層型メモリに関連付けられた、記憶されたメモリ管理構造へのポインタを取得することを含み、メモリ管理構造は、複数のメモリ管理エントリを含み、複数のメモリ管理エントリの各メモリ管理エントリは、何れかの階層型メモリにおけるメモリセクションについての情報を含む。いくつかの例では、方法は、複数のメモリ管理エントリの少なくとも一部をスキャンすることを含む。特定の例では、方法は、メモリプロファイルリストを生成することを含み、メモリプロファイルリストは、複数のプロファイルエントリを含み、複数のプロファイルエントリの各プロファイルエントリは、メモリ管理構造内のスキャンされたメモリ管理エントリに対応する。
【選択図】図1
【特許請求の範囲】
【請求項1】
メモリコントローラによって実施される方法であって、
前記メモリコントローラが、階層型メモリに関連付けられた、記憶されたメモリ管理構造へのポインタを取得することであって、前記メモリ管理構造は、複数のメモリ管理エントリを含み、前記複数のメモリ管理エントリの各メモリ管理エントリは、何れかの階層型メモリにおけるメモリセクションについての情報を含む、ことと、
前記メモリコントローラが、前記複数のメモリ管理エントリの少なくとも一部をスキャンすることと、
前記メモリコントローラが、メモリプロファイルリストを生成することであって、前記メモリプロファイルリストは、複数のプロファイルエントリを含み、前記複数のプロファイルエントリの各プロファイルエントリは、前記メモリ管理構造内のスキャンされたメモリ管理エントリに対応する、ことと、を含む、
方法。
【請求項2】
前記メモリコントローラが、前記メモリプロファイルリストを生成するためのプロファイリングコマンドを受信することと、
前記メモリコントローラが、前記プロファイリングコマンドを受信した後に、前記複数のメモリ管理エントリの少なくとも一部をスキャンすることと、を更に含む、
請求項1の方法。
【請求項3】
前記プロファイリングコマンドは、前記記憶されたメモリ管理構造へのポインタと、何れかの階層型メモリのメモリ範囲と、一致基準と、のうち少なくとも1つを含む、
請求項2の方法。
【請求項4】
前記一致基準は、前記複数のメモリ管理エントリの各メモリ管理エントリの評価される部分を示す基準マスクと、前記メモリ管理エントリの前記部分の所定の値を示す基準値と、を含む、
請求項3の方法。
【請求項5】
各メモリ管理エントリの前記部分は、アクセスビット及びダーティビットのうち少なくとも1つを含む、
請求項4の方法。
【請求項6】
前記メモリプロファイルリストは、前記階層型メモリの第2階層メモリ内の1つ以上のホットメモリページの第1のリストを含み、前記第2階層メモリは、前記階層型メモリの第1階層メモリよりも遅いメモリアクセス速度を有する、
請求項1の方法。
【請求項7】
前記メモリプロファイルリストは、前記第1階層メモリ内の1つ以上のコールドメモリページの第2のリストを含む、
請求項6の方法。
【請求項8】
前記メモリコントローラが、前記メモリプロファイルリストについてのメモリ位置を取得することと、
前記メモリコントローラが、前記メモリプロファイルリストを前記メモリ位置に記憶することと、
前記メモリコントローラが、前記メモリプロファイルリストが生成されたという指標を送信することと、を更に含む、
請求項7の方法。
【請求項9】
前記メモリコントローラが、移動コマンドを受信することと、
前記メモリコントローラが、前記第2階層メモリ内の少なくとも1つのホットメモリページを前記第1階層メモリに移行することと、を更に含む、
請求項8の方法。
【請求項10】
前記複数のプロファイルエントリの各プロファイルエントリは、対応するメモリセクションのメモリ管理エントリを含む、
請求項1の方法。
【請求項11】
集積回路であって、
メモリコントローラを備え、
前記メモリコントローラは、
階層型メモリに関連付けられた、記憶されたメモリ管理構造へのポインタを取得することであって、前記メモリ管理構造は、複数のメモリ管理エントリを含み、前記複数のメモリ管理エントリの各メモリ管理エントリは、何れかの階層型メモリにおけるメモリセクションについての情報を含む、ことと、
前記複数のメモリ管理エントリの少なくとも一部をスキャンすることと、
メモリプロファイルリストを生成することであって、前記メモリプロファイルリストは、複数のプロファイルエントリを含み、前記複数のプロファイルエントリの各プロファイルエントリは、前記メモリ管理構造内のスキャンされたメモリ管理エントリに対応する、ことと、
を行うように構成されている、
集積回路。
【請求項12】
前記メモリコントローラは、
前記メモリプロファイルリストを生成するためのプロファイリングコマンドを受信することと、
前記プロファイリングコマンドを受信した後に、前記複数のメモリ管理エントリの少なくとも一部をスキャンすることと、
を行うように構成されている、
請求項11の集積回路。
【請求項13】
前記プロファイリングコマンドは、前記記憶されたメモリ管理構造へのポインタと、何れかの階層型メモリのメモリ範囲と、一致基準と、のうち少なくとも1つを含む、
請求項12の集積回路。
【請求項14】
前記一致基準は、前記複数のメモリ管理エントリの各メモリ管理エントリの評価される部分を示す基準マスクと、前記メモリ管理エントリの前記部分の所定の値を示す基準値と、を含む、
請求項13の集積回路。
【請求項15】
各メモリ管理エントリの前記部分は、アクセスビット及びダーティビットのうち少なくとも1つを含む、
請求項14の集積回路。
【請求項16】
前記メモリプロファイルリストは、前記階層型メモリの第2階層メモリ内の1つ以上のホットメモリページの第1のリストを含み、前記第2階層メモリは、前記階層型メモリの第1階層メモリよりも遅いメモリアクセス速度を有する、
請求項11の集積回路。
【請求項17】
前記メモリプロファイルリストは、前記第1階層メモリ内の1つ以上のコールドメモリページの第2のリストを含む、
請求項16の集積回路。
【請求項18】
前記メモリコントローラは、
前記メモリプロファイルリストについてのメモリ位置を取得することと、
前記メモリプロファイルリストを前記メモリ位置に記憶することと、
前記メモリプロファイルリストが生成されたという指標を送信することと、
を行うように構成されている、
請求項17の集積回路。
【請求項19】
前記メモリコントローラは、
移動コマンドを受信することと、
前記第2階層メモリ内の少なくとも1つのホットメモリページを前記第1階層メモリに移行することと、
を行うように構成されている、
請求項18の集積回路。
【請求項20】
前記複数のプロファイルエントリの各プロファイルエントリは、対応するメモリセクションのメモリ管理エントリを含む、
請求項11の集積回路。
【請求項21】
前記メモリコントローラを備える第1のプロセッサと、
前記メモリコントローラに動作可能に結合されたデータファブリックと、
前記階層型メモリとインターフェースするように構成された第2のプロセッサと、を更に備える、
請求項11の集積回路。
【請求項22】
システムであって、
アプリケーションデータを記憶するように構成された階層型メモリと、
アプリケーションを起動するように構成されたプロセッサと、
前記階層型メモリに動作可能に結合されたメモリコントローラと、を備え、
前記メモリコントローラは、
前記プロセッサからページテーブルへのポインタを受信することであって、前記ページテーブルは、複数のページテーブルエントリを含み、各ページテーブルエントリは、前記階層型メモリ内のページに関するページ情報を含む、ことと、
前記ページテーブル内の前記複数のページテーブルエントリの少なくとも一部をスキャンすることと、
ページプロファイルリストを生成することであって、前記ページプロファイルリストは、複数のプロファイルエントリを含み、前記複数のプロファイルエントリの各プロファイルエントリは、前記ページテーブル内のスキャンされたページテーブルエントリに対応する、ことと、
を行うように構成されている、
システム。
【請求項23】
前記メモリコントローラは、
前記メモリプロファイルリストを生成するためのプロファイリングコマンドを受信することと、
前記プロファイリングコマンドを受信した後に、前記複数のメモリ管理エントリの少なくとも一部をスキャンすることと、
を行うように構成されている、
請求項22のシステム。
【請求項24】
前記プロファイリングコマンドは、前記記憶されたメモリ管理構造へのポインタと、何れかの階層型メモリのメモリ範囲と、一致基準と、のうち少なくとも1つを含む、
請求項23のシステム。
【請求項25】
前記一致基準は、前記複数のメモリ管理エントリの各メモリ管理エントリの評価される部分を示す基準マスクと、前記メモリ管理エントリの前記部分の所定の値を示す基準値と、を含む、
請求項24のシステム。
【請求項26】
各メモリ管理エントリの前記部分は、アクセスビット及びダーティビットのうち少なくとも1つを含む、
請求項25のシステム。
【請求項27】
前記メモリプロファイルリストは、前記階層型メモリの第2階層メモリ内の1つ以上のホットメモリページの第1のリストを含み、前記第2階層メモリは、前記階層型メモリの第1階層メモリよりも遅いメモリアクセス速度を有する、
請求項22のシステム。
【請求項28】
前記メモリプロファイルリストは、前記第1階層メモリ内の1つ以上のコールドメモリページの第2のリストを含む、
請求項27のシステム。
【請求項29】
前記メモリコントローラは、
前記メモリプロファイルリストについてのメモリ位置を取得することと、
前記メモリプロファイルリストを前記メモリ位置に記憶することと、
前記メモリプロファイルリストが生成されたという指標を送信することと、
を行うように構成されている、
請求項28のシステム。
【請求項30】
前記メモリコントローラは、
移動コマンドを受信することと、
前記第2階層メモリ内の少なくとも1つのホットメモリページを前記第1階層メモリに移行することと、
を行うように構成されている、
請求項28のシステム。
【請求項31】
前記複数のプロファイルエントリの各プロファイルエントリが、対応するメモリセクションのメモリ管理エントリを含む、請求項22に記載のシステム。
【請求項32】
集積回路であって、
メモリコントローラを備え、
前記メモリコントローラは、階層型メモリに結合されており、
前記階層型メモリに関連付けられた、記憶されたメモリ管理構造へのポインタを取得することであって、前記メモリ管理構造は、複数のメモリ管理エントリを含み、前記複数のメモリ管理エントリの各メモリ管理エントリは、何れかの階層型メモリにおけるメモリセクションについての情報を含む、ことと、
前記複数のメモリ管理エントリの少なくとも一部をスキャンすることと、
メモリプロファイルリストを生成することであって、前記メモリプロファイルリストは、複数のプロファイルエントリを含み、前記複数のプロファイルエントリの各プロファイルエントリは、前記メモリ管理構造内のスキャンされたメモリ管理エントリに対応する、ことと、
を行うように構成されている、
集積回路。
【請求項33】
前記メモリコントローラは、
前記メモリプロファイルリストを生成するためのプロファイリングコマンドを受信することと、
前記プロファイリングコマンドを受信した後に、前記複数のメモリ管理エントリの少なくとも一部をスキャンすることと、
を行うように構成されている、
請求項32の集積回路。
【請求項34】
前記プロファイリングコマンドは、前記記憶されたメモリ管理構造へのポインタと、何れかの階層型メモリのメモリ範囲と、一致基準と、のうち少なくとも1つを含む、
請求項33の集積回路。
【請求項35】
前記一致基準は、前記複数のメモリ管理エントリの各メモリ管理エントリの評価される部分を示す基準マスクと、前記メモリ管理エントリの前記部分の所定の値を示す基準値と、を含む、
請求項34の集積回路。
【請求項36】
各メモリ管理エントリの前記部分は、アクセスビット及びダーティビットのうち少なくとも1つを含む、
請求項35の集積回路。
【請求項37】
前記メモリプロファイルリストは、前記階層型メモリの第2階層メモリ内の1つ以上のホットメモリページの第1のリストを含み、前記第2階層メモリは、前記階層型メモリの第1階層メモリよりも遅いメモリアクセス速度を有する、
請求項32の集積回路。
【請求項38】
前記メモリプロファイルリストは、前記第1階層メモリ内の1つ以上のコールドメモリページの第2のリストを含む、
請求項37の集積回路。
【請求項39】
前記メモリコントローラは、
前記メモリプロファイルリストについてのメモリ位置を取得することと、
前記メモリプロファイルリストを前記メモリ位置に記憶することと、
前記メモリプロファイルリストが生成されたという指標を送信することと、
を行うように構成されている、
請求項38の集積回路。
【請求項40】
前記メモリコントローラは、
移動コマンドを受信することと、
前記第2階層メモリ内の少なくとも1つのホットメモリページを前記第1階層メモリに移行することと、
を行うように構成されている、
請求項39の集積回路。
【請求項41】
前記複数のプロファイルエントリの各プロファイルエントリは、対応するメモリセクションのメモリ管理エントリを含む、
請求項32の集積回路。
【発明の詳細な説明】
【背景技術】
【0001】
ダイレクトメモリアクセス(direct memory access、DMA)コントローラを含むメモリコントローラは、データプロセッサ等のメモリアクセスエージェントによって生成されたアクセスを、コンピュータメモリによって理解される1つ以上のコマンドに変換する回路である。メモリコントローラは、個別のチップとして実装することができるか、又は、単一の集積回路チップ上のデータプロセッサ等の他の構成要素と統合され得る。後者の場合、メモリコントローラは、通常、集積メモリコントローラと呼ばれる。集積メモリコントローラは、ダイナミックランダムアクセスメモリ(dynamic random-access memory、DRAM)バスプロトコル及びダブルデータレートダイナミックランダムアクセスメモリ(double data rate dynamic random-access memory、DDR DRAM)バスプロトコル等の様々なバスプロトコルをサポートする。メモリと、中央処理ユニット(central processing unit、CPU)、グラフィックス処理ユニット(graphics processing unit、GPU)、デジタル信号プロセッサ(digital signal processor、DPS)等のプロセッサのようなコンピューティングリソースと、の密結合の必要性は、メモリ容量要件、メモリコントローラ可用性、メモリ寿命制限、及び、CPUに対するメモリ帯域幅可用性に関連するシステム設計者への課題を提起する。メモリ内作業負荷及びサーバ仮想化等の機能により、メモリ容量を増加させる必要性が高まっている。更に、CPU(例えば、1つ以上のコア)の性能の向上により、ソケットごとにより多くのメモリチャネルが必要となる。例えば、多くの作業負荷に対してバランスのとれた計算リソースを維持するために、メモリ容量要件はCPUの数によって決定される。
【0002】
これらの進化するニーズに対処する努力の中で、設計者は新しいタイプのメモリ及びメモリシステムを開発してきた。例えば、ストレージクラスメモリ(storage class memory、SCM)として知られる1つの新しいタイプのメモリは、デュアルインラインメモリモジュール(dual inline memory module、DIMM)を使用し、これは、標準DDR DRAMと同様であるが、NANDフラッシュ又は他の相変化メモリをバッキングストアとして使用し、DRAMをアクティブデータ用のローカルキャッシュとして使用する。階層型メモリは、様々なメモリアクセス速度及び/又はメモリ空間を有するメモリを指す。例えば、メモリの1つの階層は、別の階層よりも速いバス転送速度を有するメモリを含む。別の例として、1つの階層は、別の階層よりも小さいメモリ空間を有し、そのようなDIMMモジュールは、JEDEC(Joint Electron Device Engineering Council)のNVDIMM-P(non-volatile dual in-line memory module-persistent)規格を活用して接続されることができ、このNVDIMM-Pは、既存のDDR DRAMバスを活用するが、従来のDDR DRAMとは異なるように構造化された新しいメモリタイプがこのバス上に配置されることを可能にする。
【0003】
既存のx86システムでは、特定のオペレーティングシステム及び/又はハイパーバイザ(operating system and/or hypervisor、OS/HV)ページテーブル内の「Accessed」及び「Dirty」ビット(A/Dビット)は、メモリの特定のページがアクセス又は書き込まれる場合に、ハードウェア、I/Oアクセスの場合にはx86 CPU又はIOMMU(入出力メモリ管理ユニット、input-output memory management unit)の何れかによって更新される。いくつかのOSページングアルゴリズムは、これらのA/Dビットを周期的にリセットし、次に、メモリの特定の部分が「ホット」(頻繁にアクセスされる)又は「コールド」(まれにアクセスされる)であることを評価するために、何れのA/Dビットが周期的にセット及びクリアされているかを調べる。しかしながら、そのようなOSページングアルゴリズムは、x86 CPUコアを用いて評価を行い、評価を、非常にゆっくりと及び/又は「オンデマンド」でのみ行う(x86 CPUコアが「メモリ不足」により何かをページアウトする必要がある場合)。この場合、OSページングアルゴリズムは、ページテーブルをスキャンする(すなわち、クロールする)ためにx86 CPUを使用しているが、そのようなスキャンは、現在のDRAMサイズに対して30~120秒ごとにDRAMの全てをスキャンするだけである。そのような手法は、はるかに大容量の階層型メモリシステム、例えば、DRAMよりも8倍大きい第2階層メモリに対して性能的にスケーリングしないであろう。
【0004】
加えて、CPUプロセッサコアは、ホットメモリページ及び/又はコールドメモリページを見つけるためにページテーブル等を周期的にウォークするために使用されるが、これは、ソフトウェアコード(例えば、アプリケーション、ソフトウェアプログラム)を起動するためにCPUプロセッサコアから貴重なリソースを奪う。
【0005】
更に、これらの新しいメモリ相互接続規格及びインターフェースを活用するタイプのファブリックメモリシステムが出現している。GenZとして知られる1つの新しいタイプのメモリシステムは、通信ファブリック内のプロセッサと媒体との間の標準インターフェースプロトコルを使用して、直接接続されたメモリと、異なるタイプの複数レベルのファブリック接続されたリモートメモリと、の両方をサポートする。
【0006】
実施形態は、以下の図を伴う以下の説明を考慮するとより容易に理解され、同様の符号は同様の要素を表す。
【図面の簡単な説明】
【0007】
図1】本開示に記載される特定の実施形態による、階層型メモリ内のデータを管理するためのコンピューティングアーキテクチャを示す概略ブロック図である。
図2】本開示に記載される特定の実施形態による、階層型メモリ管理をオフロードするための方法の一例を示すフローチャートである。
図3】本開示に記載される特定の実施形態による、階層型メモリ管理をオフロードするための方法の一例を示すフローチャートである。
図4】本開示に記載される特定の実施形態による、ページテーブル及びページプロファイルリストの例示的な例である。
図5】本開示に記載される特定の実施形態による、階層型メモリ管理をオフロードするための方法の一例を示すフローチャートである。
【発明を実施するための形態】
【0008】
本開示は、概して、とりわけ、階層型メモリの少なくとも一部の管理をオフロードするための方法及び装置に関する。いくつかの例では、階層型メモリは、様々なメモリアクセス速度及び/又はメモリ空間を有するメモリを指す。コンピューティングプロセッサ及び/又は入力/出力(input/output、I/O)デバイスが特定のタイプのメモリ及び階層型メモリに触れる(例えば、アクセスする、読み取る、修正する、削除する)と、メモリ管理データ構造(例えば、ページテーブル)が自動的に更新される。本明細書で使用される場合、コンピューティングプロセッサは、ソフトウェアコードを実行するプロセッサを指す。いくつかの実施形態では、メモリコントローラは、コンピューティングプロセッサからメモリ管理の少なくとも一部をオフロードする。いくつかの例では、メモリコントローラは、これらのメモリ管理構造をスキャンしてメモリプロファイルリストをコンパイルし、メモリプロファイルリストをコンピューティングプロセッサに提供する。
【0009】
いくつかの変形例では、メモリコントローラは、集積メモリコントローラ、非集積メモリコントローラ又はダイレクトメモリアクセス(DMA)コントローラのうち1つ以上を含み、複数の階層型メモリのメモリページにわたるメモリ割り当てと使用情報とを有するページテーブルをスキャンし、階層型メモリ内のメモリページのページプロファイル情報を含むページプロファイルリストを生成する。本明細書で使用される場合、集積メモリコントローラは、集積回路チップ上のプロセッサと統合されたメモリコントローラを指す。いくつかの例では、集積メモリコントローラは、オペレーティングシステム、ハイパーバイザ及び/又はソフトウェアアプリケーション(operating system, hypervisor, and/or software application、OS/HV/アプリケーション)を起動しないデータプロセッサと統合される。特定の例では、処理システムは、OS/HV/アプリケーションを起動することができるいくつかの中央処理ユニット(CPU)コアと、CPUコアと同じチップ(例えば、システムオンチップ(system-on-a-chip、SOC))に物理的に統合されてもされなくてもよい多くのサポート処理ユニット(例えば、データファブリック、DMAコントローラ、他のマイクロコントローラ)と、を有するが、これらのサポート処理ユニットは、OS/HV/アプリケーションを起動するために使用することができない。いくつかの例では、メモリコントローラは、メイン中央処理ユニット(CPU)等のコンピューティングプロセッサからメモリ管理の少なくとも一部をオフロードする別の回路チップである。特定の例では、メモリコントローラは、低速階層型メモリ上のホットメモリページを識別し、自動的に又はコマンド下で、そのようなホットメモリページを高速階層型メモリに移動又はコピーする。一例では、メモリコントローラは、DMAコントローラであるか又はDMAエンジンと呼ばれる。
【0010】
SCM及びファブリックメモリシステム等の非従来型メモリをコンピュータシステムに接続するための様々なメモリインターフェース規格がある。いくつかの実施形態では、これらの規格は、異なるタイプのメモリが、CPU上で起動されるアプリケーションコードによって直接アドレス指定されること(例えば、ロード、ストア等)を可能にし、ブロックベースの(例えば、ディスク様の)ストレージインターフェース(例えば、PCIe(Peripheral Component Interconnect Express)又はSATAのようなもの(Serial Advanced Technology Attachment))を必要としない。実際、メモリは、CPU及びコンピューティングプロセッサがメモリにアクセスする方法において、従来のDRAMと論理的に等価である。メモリアクセスレイテンシ、帯域幅及び他の性能中心の特性は、場合によっては実質的に異なり得る。JEDEC NVDIMM-P規格及びcompute express link(CXL)規格を含むいくつかのメモリインターフェース規格は、差動シリアライザ/デシリアライザ(serializer/deserialize、SerDes)リンクを使用してメモリデバイスが接続されることを可能にする。
【0011】
階層型メモリは、透過的又は非透過的に管理することができる。透過的に管理されるシステムでは、オペレーティングシステム及び/又はハイパーバイザ(OS/HV)に対して単一のメモリ空間が表される。これは、追加のハードウェアレベル変換及び/又はキャッシング/追跡機構を必要とする。非透過的に管理されるシステムでは、階層型メモリは、メモリ管理構造(例えば、ページテーブル)を使用して、OS/HVによって(例えば、既存の不均一メモリアクセス(non-uniform memory access、NUMA)スタイルのメモリトポロジ報告機構を介して)管理される。いくつかの実施形態では、OS/HVは、既存のページング機構を利用してアプリケーションメモリ配置を最適化することを担う。
【0012】
本開示のいくつかの実施形態は、非透過的メモリシステムのためのメモリ管理のための方法及び装置を対象とする。一例では、階層型メモリは、DRAMの第1階層メモリと、標準インターフェース(例えば、NVDIMM-P又はCXL)のうち何れかを使用して接続された第2階層メモリと、を含む。第2階層メモリのいくつかの例は、相変化メモリ、相変化様メモリ、SCM、CPUを有するレガシーシステムから回収されたDRAMの再利用を可能にするためのCXLメモリバッファチップの背後にあるレガシーDRAM技術等を含むことができる。一例では、第2階層メモリは、複数のホストシステムのターゲットアプリケーションのメモリニーズに基づいて、これらのホストシステム間のメモリ容量の動的再割り当てをサポートするファブリックメモリとすることができる。
【0013】
特定の実施形態では、メモリコントローラによって実施される方法は、階層型メモリに関連付けられた記憶されたメモリ管理構造へのポインタを取得することを含み、メモリ管理構造は、複数のメモリ管理エントリを含み、複数のメモリ管理エントリの各メモリ管理エントリは、階層型メモリのうち何れかにおけるメモリセクションについての情報を含む。いくつかの例では、方法は、複数のメモリ管理エントリの少なくとも一部をスキャンすることを含む。特定の例では、方法は、メモリプロファイルリストを生成することを含み、メモリプロファイルリストは、複数のプロファイルエントリを含み、複数のプロファイルエントリの各プロファイルエントリは、メモリ管理構造内のスキャンされたメモリ管理エントリに対応する。
【0014】
いくつかの例では、方法は、メモリプロファイルリストを生成するためのプロファイリングコマンドを受信することと、プロファイリングコマンドを受信した後に、複数のメモリ管理エントリの少なくとも一部をスキャンすることと、を含む。いくつかの例では、プロファイリングコマンドは、記憶されたメモリ管理構造へのポインタ、階層型メモリのうち何れかのメモリ範囲及び一致基準のうち少なくとも1つを含む。特定の例では、一致基準は、評価される複数のメモリ管理エントリの各メモリ管理エントリの一部を示す基準マスクと、メモリ管理エントリの一部の所定の値を示す基準値と、を含む。
【0015】
いくつかの例では、各メモリ管理エントリの一部は、アクセスビット及びダーティビットのうち少なくとも1つを含む。いくつかの例では、メモリプロファイルリストは、階層型メモリの第2階層メモリ内の1つ以上のホットメモリページの第1のリストを含み、第2階層メモリは、階層型メモリの第1階層メモリよりも遅いメモリアクセス速度を有する。特定の例では、メモリプロファイルリストは、第1階層メモリ内の1つ以上のコールドメモリページの第2のリストを含む。
【0016】
特定の例では、方法は、メモリコントローラによって、メモリプロファイルリストのためのメモリ位置を取得することと、メモリコントローラによって、メモリプロファイルリストをメモリ位置に記憶することと、メモリコントローラによって、メモリプロファイルリストが生成されているという指標を送信することと、を含む。いくつかの例では、方法は、移動コマンドを受信することと、第2階層メモリ内の少なくとも1つのホットメモリページを第1階層メモリに移行することと、を含む。いくつかの例では、複数のプロファイルエントリの各プロファイルエントリは、対応するメモリセクションのメモリ管理エントリを含む。
【0017】
いくつかの実施形態では、集積回路はメモリコントローラを含み、メモリコントローラは、階層型メモリに関連付けられた記憶されたメモリ管理構造へのポインタを取得することを含み、メモリ管理構造は、複数のメモリ管理エントリを含み、複数のメモリ管理エントリの各メモリ管理エントリは、階層型メモリのうち何れかにおけるメモリセクションについての情報を含む。いくつかの例では、メモリコントローラは、複数のメモリ管理エントリの少なくとも一部をスキャンし、メモリプロファイルリストを生成し、メモリプロファイルリストは、複数のプロファイルエントリを含み、複数のプロファイルエントリの各プロファイルエントリは、メモリ管理構造内のスキャンされたメモリ管理エントリに対応する。
【0018】
いくつかの例では、メモリコントローラは、メモリプロファイルリストを生成するためのプロファイリングコマンドを受信し、プロファイリングコマンドを受信した後に、複数のメモリ管理エントリの少なくとも一部をスキャンする。いくつかの例では、プロファイリングコマンドは、記憶されたメモリ管理構造へのポインタ、階層型メモリのうち何れかのメモリ範囲及び一致基準のうち少なくとも1つを含む。いくつかの変形例では、一致基準は、評価される複数のメモリ管理エントリの各メモリ管理エントリの一部を示す基準マスクと、メモリ管理エントリの一部の所定の値を示す基準値と、を含む。いくつかの例では、各メモリ管理エントリの一部は、アクセスビット及びダーティビットのうち少なくとも1つを含む。
【0019】
特定の例では、メモリプロファイルリストは、階層型メモリの第2階層メモリ内の1つ以上のホットメモリページの第1のリストを含み、第2階層メモリは、階層型メモリの第1階層メモリよりも遅いメモリアクセス速度を有する。いくつかの例では、メモリプロファイルリストは、第1階層メモリ内の1つ以上のコールドメモリページの第2のリストを含む。
【0020】
いくつかの例では、メモリコントローラは、メモリプロファイルリストのためのメモリ位置を取得し、メモリプロファイルリストをメモリ位置に記憶し、メモリプロファイルリストが生成されているという指標を送信する。いくつかの例では、メモリコントローラは、移動コマンドを受信し、第2階層メモリ内の少なくとも1つのホットメモリページを第1階層メモリに移行する。いくつかの変形例では、複数のプロファイルエントリの各プロファイルエントリは、対応するメモリセクションのメモリ管理エントリを含む。いくつかの実施形態では、集積回路は、メモリコントローラを含む第1のプロセッサと、メモリコントローラに動作可能に結合されたデータファブリックと、階層型メモリとインターフェースするように構成された第2のプロセッサと、を含む。
【0021】
特定の実施形態では、システムは、アプリケーションデータを記憶するように構成された階層型メモリと、アプリケーションを起動するように構成されたプロセッサと、階層型メモリに動作可能に結合されたメモリコントローラと、を含む。いくつかの例では、メモリコントローラは、プロセッサからページテーブルへのポインタを受信し、ページテーブルは、複数のページテーブルエントリを含み、各ページテーブルエントリは、階層型メモリ内のページに関するページ情報を含む。いくつかの変形例では、メモリコントローラは、ページテーブル内の複数のページテーブルエントリの少なくとも一部をスキャンし、ページプロファイルリストを生成し、ページプロファイルリストは、複数のプロファイルエントリを含み、複数のプロファイルエントリの各プロファイルエントリは、ページテーブル内のスキャンされたページテーブルエントリに対応する。
【0022】
いくつかの例では、メモリコントローラは、メモリプロファイルリストを生成するためのプロファイリングコマンドを受信し、プロファイリングコマンドを受信した後に、複数のメモリ管理エントリの少なくとも一部をスキャンする。いくつかの例では、プロファイリングコマンドは、記憶されたメモリ管理構造へのポインタ、階層型メモリのうち何れかのメモリ範囲及び一致基準のうち少なくとも1つを含む。いくつかの変形例では、一致基準は、評価される複数のメモリ管理エントリの各メモリ管理エントリの一部を示す基準マスクと、メモリ管理エントリの一部の所定の値を示す基準値と、を含む。特定の変形例では、各メモリ管理エントリの一部は、アクセスビット及びダーティビットのうち少なくとも1つを含む。
【0023】
特定の例では、メモリプロファイルリストは、階層型メモリの第2階層メモリ内の1つ以上のホットメモリページの第1のリストを含み、第2階層メモリは、階層型メモリの第1階層メモリよりも遅いメモリアクセス速度を有する。いくつかの例では、メモリプロファイルリストは、第1階層メモリ内の1つ以上のコールドメモリページの第2のリストを含む。
【0024】
いくつかの例では、メモリコントローラは、メモリプロファイルリストのためのメモリ位置を取得し、メモリプロファイルリストをメモリ位置に記憶し、メモリプロファイルリストが生成されているという指標を送信する。いくつかの例では、メモリコントローラは、移動コマンドを受信し、第2階層メモリ内の少なくとも1つのホットメモリページを第1階層メモリに移行する。いくつかの変形例では、複数のプロファイルエントリの各プロファイルエントリは、対応するメモリセクションのメモリ管理エントリを含む。
【0025】
いくつかの実施形態では、集積回路は、階層型メモリに結合されたメモリコントローラを含み、階層型メモリに関連付けられた記憶されたメモリ管理構造へのポインタを取得し、メモリ管理構造は、複数のメモリ管理エントリを含み、複数のメモリ管理エントリの各メモリ管理エントリは、階層型メモリのうち何れかにおけるメモリセクションについての情報を含む。いくつかの例では、メモリコントローラは、複数のメモリ管理エントリの少なくとも一部をスキャンし、メモリプロファイルリストを生成し、メモリプロファイルリストは、複数のプロファイルエントリを含み、複数のプロファイルエントリの各プロファイルエントリは、メモリ管理構造内のスキャンされたメモリ管理エントリに対応する。
【0026】
いくつかの例では、メモリコントローラは、メモリプロファイルリストを生成するためのプロファイリングコマンドを受信し、プロファイリングコマンドを受信した後に、複数のメモリ管理エントリの少なくとも一部をスキャンする。いくつかの例では、プロファイリングコマンドは、記憶されたメモリ管理構造へのポインタ、階層型メモリのうち何れかのメモリ範囲及び一致基準のうち少なくとも1つを含む。
【0027】
いくつかの変形例では、一致基準は、評価される複数のメモリ管理エントリの各メモリ管理エントリの一部を示す基準マスクと、メモリ管理エントリの一部の所定の値を示す基準値と、を含む。
【0028】
特定の例では、各メモリ管理エントリの一部は、アクセスビット及びダーティビットのうち少なくとも1つを含む。いくつかの例では、メモリプロファイルリストは、階層型メモリの第2階層メモリ内の1つ以上のホットメモリページの第1のリストを含み、第2階層メモリは、階層型メモリの第1階層メモリよりも遅いメモリアクセス速度を有する。いくつかの変形例では、メモリプロファイルリストは、第1階層メモリ内の1つ以上のコールドメモリページの第2のリストを含む。
【0029】
いくつかの例では、メモリコントローラは、メモリプロファイルリストのためのメモリ位置を取得し、メモリプロファイルリストをメモリ位置に記憶し、メモリプロファイルリストが生成されているという指標を送信する。いくつかの例では、メモリコントローラは、移動コマンドを受信し、第2階層メモリ内の少なくとも1つのホットメモリページを第1階層メモリに移行する。いくつかの変形例では、複数のプロファイルエントリの各プロファイルエントリは、対応するメモリセクションのメモリ管理エントリを含む。
【0030】
図1は、本開示に記載される特定の実施形態による、階層型メモリ内のデータを管理するためのコンピューティングシステム100を示す概略ブロック図である。いくつかの実施形態では、コンピューティングシステム100は、開示される発明の実施形態の態様を実装するのに適した任意のタイプのコンピューティングデバイスによって実装される。コンピューティングデバイスの例としては、限定されないが、ラップトップ、デスクトップ、タブレットコンピュータ、ハンドヘルドデバイス、ディスプレイデバイス、メディアプレーヤ、テレビ、ゲームコンソール、プリンタ、サーバ、クラウドコンピューティングプラットフォーム、集積回路等が挙げられ、それらの全ては、コンピューティングデバイス100の様々な構成要素に関して、図1の範囲内で企図される。
【0031】
いくつかの例では、コンピューティングシステム100は、データプロセッサ110、階層型メモリ140、コンピューティングプロセッサ150(例えば、中央処理ユニット(CPU)、グラフィカル処理ユニット(GPU)、デジタル信号プロセッサ(DSP)等)、及び、1つ以上のI/Oデバイス170を含む。また、コンピューティングシステム100には、任意の数の追加の構成要素、異なる構成要素及び/又は構成要素の組み合わせも含まれる。構成要素のうち1つ以上は、コンピューティングシステム100に対してオプションである。いくつかの例では、階層型メモリの各階層メモリは、直接アドレス指定可能なメモリである。
【0032】
いくつかの実施形態では、コンピューティングシステム100は、コンピューティングデバイス100の様々な構成要素を直接及び/又は間接的に結合する1つ以上のアドレスバス及び/又はデータバス(例えば、162、163、164、165等)を含む。いくつかの設計では、コンピューティングデバイス100の任意の数の構成要素又はそれらの組み合わせが、いくつかのコンピューティングデバイスにわたって分散及び/又は複製され得る。いくつかの変形例では、コンピューティングシステム100は、任意の数のプロセッサ(例えば、CPU、GPU等)を含む。例えば、変形例では、コンピューティングシステム100は、データプロセッサ110及びコンピューティングプロセッサ150を含む。いくつかの変形例では、コンピューティングシステム100は、複数のデータプロセッサ及び/又はコンピューティングプロセッサを含む。本明細書で使用される場合、プロセッサは、1つ以上のCPU、GPU、GPGPU、APU及び/又は他の処理ユニットを指す。いくつかの実施形態では、プロセッサ110及び/又はプロセッサ150は、仮想化処理システム(例えば、ゲストマシン、仮想マシン)を提供するためにハイパーバイザによって管理されるサーバシステム内のポート及び他の通信リンクを介して相互接続された多くのプロセッサの一部である。
【0033】
いくつかの実施形態では、プロセッサは、データファブリック120及び入力/出力ホストコントローラ(input/output host controller、IOHC)132を含む。いくつかの変形例では、データファブリック120は、通信リンク162を介して階層型メモリ140に関連付けられたアクセス、読み取り、書き込み、割り当て、移動、コピー、及び、他のデータ機能を容易にする。いくつかの例では、データファブリック120は、1つ以上のデータファブリック構成要素を含む。いくつかの変形例では、IOHC132は、データファブリック120に結合された、ダイレクトメモリアクセス(DMA)エンジン130とも呼ばれるDMAコントローラ130を含む。いくつかの例では、DMAエンジン130は、例えば、プロセッサ150のプロセッサコアとは対照的に、階層型メモリにアクセスすることができるI/Oデバイス170のためのメモリ管理機能を実施するマイクロコントローラ135を含む。いくつかの変形例では、1つ以上のI/Oデバイス170は、通信リンク163を介してデータファブリック120に結合される。
【0034】
いくつかの実施形態では、コンピューティングシステム100は、コンピューティングプロセッサ150を含む。一例では、コンピューティングプロセッサ150は、x86 CPUである。いくつかの変形例では、コンピューティングプロセッサ150は、オペレーティングシステム及び/又はハイパーバイザ(OS/HV)155を含む。いくつかの変形例では、コンピューティングプロセッサ150は、通信リンク165を介して、DMAエンジン130からの及びそれへのコマンド、データ及び/又は信号を送信及び受信する。いくつかの例では、コンピューティングプロセッサ150は、プロファイリングコマンド166をDMAエンジン130に送信する。いくつかの例では、プロファイリングコマンド166は、メモリ管理構造(例えば、ページテーブル)146へのアドレス及び/又はポインタを含む。一例では、プロファイリングコマンド166は、メモリプロファイルリスト148へのアドレス及び/又はポイントを含む。
【0035】
いくつかの実施形態では、コンピューティングシステム100は、第1階層メモリ142と第2階層メモリ144とを含む階層型メモリ140を含む。いくつかの例では、第1階層メモリ142は、第2階層メモリ144のアクセス速度よりも速いアクセス速度を有する。いくつかの例では、第1階層メモリ142は、第2階層メモリ144のメモリ空間よりも小さいメモリ空間を有する。一例では、第1階層メモリ142は、DRAMである。一例では、第2階層メモリ144は、ストレージクラスメモリ(SCM)である。
【0036】
いくつかの実施形態では、階層型メモリ140は、メモリ管理構造(例えば、ページテーブル)146を含む。いくつかの変形例では、メモリ管理構造146は、複数のページテーブルエントリを含むページテーブルであり、各ページテーブルエントリ(page table entry、PTE)は、メモリページのページ情報を含む。いくつかの例では、ページ情報は、物理アドレス、仮想アドレス、アクセスビット(Aビット)、ダーティビット(Dビット)及び他のメモリページ情報のうち1つ以上を含む。いくつかの変形例では、コンピューティングプロセッサ150は、プロファイリングコマンド166においてメモリ管理構造(例えば、ページテーブル)146へのアドレス及び/又はポインタを提供する。一例では、ページ情報は、対応するページが所定の期間内にアクセスされたかどうかを示すアクセスビットを含む。一例では、ページ情報は、対応するページが所定の期間内に書き込まれたかどうかを示すダーティビット(例えば、修正ビット)を含む。
【0037】
いくつかの例では、プロセッサ及び/又は入力/出力(I/O)デバイスは、システムアーキテクチャに応じて、仮想アドレスから物理アドレス(実際のメモリ位置)に変換するための通常動作の一部として、ページテーブル(例えば、メモリ管理構造(例えば、ページテーブル)146)にアクセスする。他のアドレス変換、例えば、ホスト物理アドレスからシステム物理アドレスの変換を使用することができる。本明細書で使用される場合、仮想アドレスは、ゲスト物理アドレス又はホスト物理アドレスを含む。これらの変換/ページング機構により、コンピュータシステムが複数の仮想マシン(virtual machine、VM)をホストし、メモリのプライベート(すなわち、プログラムレベルビュー)を有するが、物理メモリの異なる領域を利用する複数のプログラムを同時に起動することが可能になる。これらの変換は、通常、アクセスを高速化するために、変換ルックアサイドバッファ(translation lookaside buffer、TLB)のような構造にキャッシュされる。いくつかの例では、これらの変換テーブルを使用して、ページがいつアクセス又は書き込まれるかを追跡する。この情報は、ホットメモリページ及びコールドメモリページを決定するために階層型メモリ管理に通知するために利用することができる。
【0038】
いくつかの実施形態では、階層型メモリ140は、DMAエンジン130によって生成されるメモリプロファイルリスト148(例えば、ページプロファイルリスト)を含む。いくつかの実施形態では、ハイパーバイザ又はOSからのプロファイリングコマンド166に応じて、DMAエンジン130は、メモリ管理構造146をスキャンし、メモリプロファイルリスト148を生成することを開始する。いくつかの例では、DMAエンジン130は、所定の頻度でメモリ管理構造146をスキャンし、各スキャンは、プロファイリングサイクルとも呼ばれる。いくつかの変形例では、DMAエンジン130は、受信されたプロファイリングコマンドに基づいて又は所定の頻度に基づいて、5秒に1回よりも高い頻度でメモリ管理構造146をスキャンする。いくつかの変形例では、DMAエンジン130は、受信されたプロファイリングコマンドに基づいて又は所定の頻度に基づいて、1秒に1回よりも高い頻度でメモリ管理構造146をスキャンする。一例では、DMAエンジン130は、コンピューティングプロセッサ150から受信したプロファイリングコマンド166を用いて、メモリ管理構造146を1回スキャンする。いくつかの実施形態では、DMAエンジン130は、メモリ管理構造(例えば、ページテーブル)146内のページテーブルエントリの一部又は全てをスキャンする。いくつかの変形例では、DMAエンジン130は、ページテーブルエントリ内のアクセスビット及び/又はダーティビットを読み取って、対応するメモリページがアクセスされているかどうかを判定する。
【0039】
特定の実施形態では、DMAエンジン130は、x86ページテーブルフォーマットを理解するプロセッサ150(例えば、CPU)との特殊コード/インターフェースを提供する。いくつかの変形例では、DMAエンジン130には、「何れのページテーブルをウォークするか」という単純なポインタ(又は別様の)記述を与えられ、例えば、「Aビット」が設定されたページのリストを返す。DMAエンジン130には、第2階層メモリ144内のホットページのみを見つけるように、第1階層メモリ142及び/又は第2階層メモリ144を定義するメモリ範囲を更に通知することができる。いくつかの変形例では、第2階層メモリ144内のほとんどのページは「ホット」であると予想されず、したがって、このスキャンプロセスは、多くのPTE(ページテーブルエントリ)を見ることができ、それらのほとんどは関心のないものであり、例えば、アクセスビット及び/又はダーティビットはクリアであり、それらが「最近」使用されていないことを示す。特定の変形例では、DMAエンジン130は、単純なプログラムを実行することができるように、1つ以上の小型マイクロコントローラ(例えば、マイクロコントローラ135)を含む。
【0040】
いくつかの実施形態では、メモリプロファイルリスト148は、1つ以上のメモリ管理エントリを含む。いくつかの例では、メモリ管理エントリは、ページテーブルを含むメモリ管理構造146からのものである。一例では、メモリ管理エントリは、ページテーブル構造とは異なるメモリ管理構造146からのものである。いくつかの変形例では、メモリプロファイルリスト148は、第2階層メモリ144内のホットメモリページのリストを含む。本明細書で使用される場合、ホットメモリページは、ホットページとも呼ばれ、所定の閾値よりも高い頻繁でアクセスされるメモリページ及び/又は所定の期間内にアクセスされるページである。いくつかの変形例では、メモリプロファイルリスト148は、第1階層メモリ142内のコールドメモリページのリストを含む。本明細書で使用される場合、コールドメモリページは、コールドページとも呼ばれ、所定の閾値よりも低い頻繁でアクセスされるメモリページ及び/又は所定の期間内にアクセスされないページである。いくつかの例では、メモリプロファイルリスト148は、複数のメモリプロファイルエントリを含み、各メモリプロファイルエントリは、メモリ管理構造内のスキャンされたメモリ管理エントリに対応する。特定の例では、メモリプロファイリングエントリは、対応するメモリページがホットメモリページであるかどうかの指標を含むページプロファイルエントリである。
【0041】
特定の実施形態では、プロファイリングコマンド166は、階層型メモリ内のメモリの各階層についてのアドレス範囲を含む。場合によっては、プロファイリングコマンド166は、第1階層メモリの物理アドレス範囲に対応する第1のアドレス範囲と、第2階層メモリの物理アドレス範囲に対応する第2のアドレス範囲と、を含む。いくつかの例では、DMAエンジン130は、メモリ管理構造(例えば、ページテーブル)146をスキャンし、アドレス範囲に少なくとも部分的に基づいて、スキャンされた各メモリ管理エントリが関連付けられる特定の階層メモリ(例えば、第1階層メモリ、第2階層メモリ)を決定する。本開示におけるいくつかの例は、2つの階層型メモリを使用しているが、メモリプロファイリング手法は、3つ以上の階層型メモリにおいて使用することができる。
【0042】
いくつかの例では、DMAエンジン130は、特定の階層メモリ(例えば、第1階層メモリ、第2階層メモリ等)内のメモリページに関連付けられたメモリ管理エントリ(例えば、PTE)のみをスキャンする。いくつかの例では、DMAエンジン130は、全てのメモリ管理エントリ(例えば、PTE)をスキャンする。特定の例において、DMAエンジン130は、特定の階層メモリ(例えば、第1階層メモリ、第2階層メモリ等)に対するメモリプロファイルリスト148を生成する。いくつかの例では、DMAエンジン130は、特定の階層メモリ内の特有のタイプのページについてのメモリプロファイルリスト148(例えば、第2階層メモリ内のホットページリスト、第1階層メモリ内のコールドページリスト等)を生成する。特定の例では、DMAエンジン130は、特定の階層メモリ内の全てのメモリページについてのメモリプロファイルリスト148を、対応するメモリページがホットであるかコールドであるかの指標とともに生成する。いくつかの例では、DMAエンジン130は、何れかの階層型メモリにおける特定のタイプのページ、及び、別の階層型メモリにおける全てのメモリページについてのメモリプロファイルリスト148を生成する。例えば、メモリプロファイルリスト148は、第2階層メモリ内のホットメモリページと、第1階層メモリ内の全てのメモリページと、のリストを含む。特定の例では、ページプロファイリングコマンド166は、何れのタイプのページプロファイルリストが生成されるか、及び/又は、何れの情報がページプロファイルリストに含まれるかを示す情報を含む。
【0043】
いくつかの実施形態では、DMAエンジン130は、メモリプロファイルリスト148のアドレス及び/又はポインタに、メモリプロファイルリスト148(例えば、ページプロファイルリスト)を記憶する。メモリプロファイルリスト148が生成及び/又は更新された後、DMAエンジン130は、メモリプロファイリングの完了を示す割り込み167をコンピューティングプロセッサ150に送信する。いくつかの実施形態では、コンピューティングプロセッサ150は、移動コマンド168(例えば、ページ移動コマンド)をDMAエンジン130に送信する。一例では、DMAエンジン130は、データファブリック120を介して、第2階層メモリ144内の一部又は全てのホットメモリページを第1階層メモリ142に移行する。一例では、DMAエンジン130は、データファブリック120を介して、第1階層メモリ142内の一部又は全てのコールドメモリページを第2階層メモリ144に移行する。
【0044】
いくつかの変形例では、データプロセッサ110の構成要素の一部又は全ては、単一の集積回路(integrated circuit、IC)に組み合わされる。特定の変形例では、データプロセッサ110の全ての構成要素は、単一の集積回路(IC)に組み合わされる。いくつかの変形例では、データプロセッサ110の1つ以上の構成要素(例えば、データファブリック120の一部)は、別のIC上に実装される。いくつかの変形例では、データプロセッサ110の構成要素の一部又は全てと、コンピューティングプロセッサ150の構成要素の一部又は全てとが、単一のICに組み合わされる。特定の変形例では、データプロセッサ110の構成要素の一部又は全てと、階層型メモリ140の構成要素の一部又は全てとが、単一のICに組み合わされる。
【0045】
図2は、本開示に記載される特定の実施形態による、階層メモリ管理をオフロードするための方法200の一例を示すフローチャートである。方法200の実施形態の態様は、例えば、コンピューティングデバイス(例えば、図1のコンピューティングシステム100を実装するデバイス)又はメモリコントローラ(例えば、図1のDMAエンジン130)によって実施される。いくつかの実施形態では、方法200の1つ以上のステップは、オプションであり、及び/又は、本明細書に記載される他の実施形態の1つ以上のステップによって修正される。いくつかの実施形態では、本明細書に記載される他の実施形態の1つ以上のステップが方法200に追加される。この例では、メモリコントローラは、プロファイリングコマンド(例えば、ページプロファイリングコマンド)を受信して(210)、例えば、階層型メモリに対してメモリプロファイリングを行う。いくつかの変形例では、プロファイリングコマンドは、CPUからメモリプロファイリングをオフロードするために、CPUのオペレーティングシステム及び/又はハイパーバイザ(OS/HV)から送信される。
【0046】
いくつかの変形例では、プロファイリングコマンドは、階層型メモリに関連付けられたページテーブル(例えば、図1のメモリ管理構造146)のポインタ、メモリ位置及び/又はアドレスを含む。特定の変形例では、プロファイリングコマンドは、それぞれの階層型メモリのアドレス範囲を含む。例えば、プロファイリングコマンドは、第1階層メモリの第1のアドレス範囲(例えば、アドレス0000~0100等)及び第2階層メモリの第2のアドレス範囲(例えば、アドレス0101~0999等)を含む。いくつかの例では、第1階層メモリは、第2階層メモリのアクセス速度よりも速いアクセス速度を有する。いくつかの例では、第1階層メモリは、第2階層メモリのメモリ空間よりも小さいメモリ空間を有する。一例では、第1階層メモリは、DRAMである。一例では、第2階層メモリは、ストレージクラスメモリ(SCM)である。
【0047】
いくつかの例では、メモリ管理構造は、複数のページテーブルエントリを含むページテーブルであり、各ページテーブルエントリは、階層型メモリ内のメモリページ又はメモリセクションについてのページ情報を含む。いくつかの例では、ページ情報は、物理アドレス、仮想アドレス、アクセスビット、ダーティビット(例えば、修正ビット)及び他のメモリページ情報のうち1つ以上を含む。特定の変形例では、プロファイリングコマンドは、メモリプロファイルリスト(例えば、図1のメモリプロファイルリスト148)のポインタ、メモリ位置及び/又はアドレスを含む。
【0048】
いくつかの実施形態では、メモリコントローラは、階層型メモリに関連付けられたメモリ管理構造をスキャンする(215)。いくつかの例では、メモリコントローラは、所定の頻度でメモリ管理構造(例えば、ページテーブル)をスキャンする。一例では、メモリコントローラ(例えば、集積メモリコントローラ、DMAエンジン/コントローラ等)は、CPUのOS/HVから受信された各プロファイリングコマンドでメモリ管理構造を1回スキャンする。いくつかの変形例では、メモリコントローラ(例えば、DMAエンジン/コントローラ等)は、5秒に1回よりも高い頻度でメモリ管理構造をスキャンする。いくつかの変形例では、メモリコントローラ(例えば、DMAエンジン/コントローラ等)は、1秒に1回よりも高い頻度でメモリ管理構造をスキャンする。いくつかの実施形態では、メモリコントローラ(例えば、DMAエンジン/コントローラ等)は、メモリ管理構造の一部又は全てをスキャンする。いくつかの変形例では、メモリコントローラ(例えば、DMAエンジン/コントローラ等)は、ページテーブルエントリ内のアクセスビット及び/又はダーティビットを読み取って、対応するメモリページがアクセスされているかどうかを判断する。
【0049】
いくつかの実施形態では、メモリコントローラは、メモリ管理構造(例えば、ページテーブル)と、階層型メモリ内の対応するメモリページと、に関連付けられたメモリプロファイルリスト(例えば、図1のメモリプロファイルリスト148)を生成する。いくつかの変形例では、メモリプロファイルリストは、第2階層メモリ(例えば、より遅いメモリアクセス速度を有するメモリ、SCM等)内のホットメモリページのリストを含むページプロファイルリストである。特定の変形例では、メモリプロファイルリストは、第1階層メモリ(例えば、より速いメモリアクセス速度を有するメモリ、DRAM等)内のコールドメモリページのリストを含むページプロファイルリストである。いくつかの例では、メモリプロファイルリストは、複数のメモリプロファイルエントリを含み、各メモリプロファイルエントリは、メモリ管理構造内のスキャンされたメモリ管理構造エントリに対応する。特定の例では、各メモリプロファイルエントリは、対応するメモリページがホットメモリページであるかどうかの指標を含むページプロファイルエントリである。
【0050】
特定の実施形態では、メモリコントローラによって受信されたプロファイリングコマンドは、対応する階層型メモリのアドレス範囲を含む。例えば、プロファイリングコマンドは、第1階層メモリの物理アドレス範囲に対応する第1のアドレス範囲と、第2階層メモリの物理アドレス範囲に対応する第2のアドレス範囲と、を含む。いくつかの例では、メモリコントローラ(例えば、集積メモリコントローラ、DMAエンジン/コントローラ等)は、ページテーブルをスキャンし、スキャンされた各ページテーブルエントリが関連付けられている特定の階層メモリ(例えば、第1階層メモリ、第2階層メモリ)を決定する。本開示におけるいくつかの例は、2つの階層型メモリを使用しているが、ページプロファイリング手法は、3つ以上の階層型メモリにおいて使用することができる。
【0051】
いくつかの例では、メモリコントローラ(例えば、集積メモリコントローラ、DMAエンジン/コントローラ等)は、特定の階層メモリ(例えば、第1階層メモリ、第2階層メモリ等)内のメモリページに関連付けられたメモリ管理構造内のメモリ管理エントリのみをスキャンする。いくつかの例では、メモリコントローラは、全てのページテーブルエントリをスキャンする。特定の例では、メモリコントローラは、特定の階層メモリ(例えば、第1階層メモリ、第2階層メモリ等)についてのページプロファイルリストを生成する。いくつかの例では、メモリコントローラは、特定の階層メモリ内の特有のタイプのページについてのページプロファイルリスト(例えば、第2階層メモリ内のホットページリスト、第1階層メモリ内のコールドページリスト等)を生成する。
【0052】
特定の例では、メモリコントローラは、特定の階層メモリ内の全てのメモリページについてのメモリプロファイルリストを、対応するメモリページがホットであるかコールドであるかの指標とともに生成する。いくつかの例では、メモリコントローラは、何れかの階層型メモリにおける特定のタイプのページ、及び、別の階層型メモリにおける全てのメモリページについてのメモリプロファイルリスト(例えば、ページプロファイルリスト)を生成する。例えば、メモリプロファイルリストは、第2階層メモリ内のホットメモリページと、第1階層メモリ内の全てのメモリページと、のリストを含む。いくつかの実施形態では、プロファイリングコマンドは、スキャンされるページ及び/又はメモリプロファイルリストに含まれるページのタイプを指定する特定の一致基準を含む。いくつかの例では、メモリコントローラは、プロファイリングコマンドで指定されたメモリ管理エントリのみをスキャンする。特定の例では、プロファイリングコマンドは、何れのタイプのページプロファイルリストが生成されるか、及び/又は、何れの情報がページプロファイルリストに含まれるかを示す情報を含む。
【0053】
いくつかの実施形態では、メモリコントローラ(例えば、DMAエンジン/コントローラ等)は、プロファイリングコマンドにおいて提供されるか又はCPUから受信されるかの何れかである、ページプロファイルリストのアドレス及び/又はポインタにメモリプロファイルリストを記憶する。メモリプロファイルリストが生成及び/又は更新された後、メモリコントローラは、ページプロファイリングの完了を示す割り込みをCPUに送信する。いくつかの変形例では、メモリコントローラは、CPUからページ移動コマンドを受信する。
【0054】
いくつかの実施形態では、メモリコントローラは、メモリプロファイルリスト内の特定のメモリセクションを移行する(225)。いくつかの例では、メモリコントローラは、CPUからのページ移動コマンドに応じて、特定のメモリページを移行する。特定の例では、メモリコントローラは、ページ移動コマンドに従って特定のメモリページを移行する。いくつかの例では、メモリコントローラは、第2階層メモリ内の一部又は全てのホットメモリページを第1階層メモリに移行する。一例では、メモリコントローラは、第1階層メモリ内の一部又は全てのコールドメモリページを第2階層メモリに移行する。
【0055】
図3は、本開示に記載される特定の実施形態による、階層メモリ管理をオフロードするための方法300の一例を示すフローチャートである。方法300の態様は、例えば、コンピューティングデバイス(例えば、図1のコンピューティングシステム100を実装するデバイス)、メモリコントローラ(例えば、集積メモリコントローラ、図1のDMAエンジン130)、CPU(例えば、図1のCPU150)によって実施される。いくつかの実施形態では、方法300の1つ以上のステップは、オプションであり、及び/又は、本明細書に記載される他の例の1つ以上のステップによって修正される。いくつかの実施形態では、本明細書に記載される他の例の1つ以上のステップが方法300に追加される。いくつかの例では、CPUは、ページプロファイルコマンド(例えば、図1のページプロファイリングコマンド166)をメモリコントローラに送信する(305)。いくつかの変形例では、ページプロファイルコマンドは、CPUからページプロファイリングをオフロードするために、CPUのオペレーティングシステム及び/又はハイパーバイザ(OS/HV)から送信される。この例では、ページプロファイルコマンドは、ページテーブルポインタと、要求されたページプロファイル情報と、を含む。
【0056】
いくつかの変形例では、ページプロファイルコマンドは、階層型メモリに関連付けられたページテーブル(例えば、図1のメモリ管理構造(例えば、ページテーブル)146)のポインタ、メモリ位置及び/又はアドレスを含む。特定の変形例では、ページプロファイルコマンドは、それぞれの階層型メモリのアドレス範囲を含む。例えば、プロファイルコマンドは、第1階層メモリの第1のアドレス範囲(例えば、アドレス0000~0100等)及び第2階層メモリの第2のアドレス範囲(例えば、アドレス0101~0999等)を含む。いくつかの例では、第1階層メモリは、第2階層メモリのアクセス速度よりも速いアクセス速度を有する。いくつかの例では、第1階層メモリは、第2階層メモリのメモリ空間よりも小さいメモリ空間を有する。一例では、第1階層メモリは、DRAMである。一例では、第2階層メモリは、ストレージクラスメモリ(SCM)である。
【0057】
いくつかの例では、ページテーブルは、複数のページテーブルエントリを含み、各ページテーブルエントリは、階層型メモリ内のメモリページ又はメモリセクションについてのページ情報を含む。いくつかの例では、ページ情報は、物理アドレス、仮想アドレス、アクセスビット、ダーティビット(例えば、修正ビット)及び他のメモリページ情報のうち1つ以上を含む。特定の変形例では、ページプロファイルコマンドは、ポインタ、メモリ位置及び/又はページプロファイルリスト(例えば、図1のメモリプロファイルリスト148)のアドレスを含む。
【0058】
特定の実施形態では、ページプロファイルコマンドは、要求されたページプロファイル情報を含む。例えば、要求されたページプロファイル情報は、ページリストのタイプ(例えば、コールドメモリページリスト、ホットメモリページリスト又はその両方等)、1つ以上の指定された階層型メモリ、アクセス情報、及び/又は、同様のものを含む。いくつかの例では、要求されたページプロファイル情報は、第2階層メモリ内のホットメモリページのページプロファイルリストである。特定の例では、要求されたページプロファイル情報は、第1階層メモリ内のコールドメモリページのページプロファイルリストである。
【0059】
いくつかの実施形態では、メモリコントローラ(例えば、集積メモリコントローラ、DMAエンジン/コントローラ等)は、ページプロファイルコマンドを受信して(310)、例えば、階層型メモリへのページプロファイリングを行う。いくつかの変形例では、メモリコントローラは、データファブリック(例えば、図1のデータファブリック120)を介してページテーブルにアクセスする。いくつかの例では、メモリコントローラは、階層型メモリに関連付けられたページテーブルをスキャンする(315)。いくつかの例では、メモリコントローラは、所定の頻度でページテーブルをスキャンする。一例では、メモリコントローラは、CPUのOS/HVから受信された各プロファイルコマンドでページテーブルを1回スキャンする。いくつかの変形例では、メモリコントローラは、5秒に1回よりも高い頻度でページテーブルをスキャンする。いくつかの変形例では、メモリコントローラは、1秒に1回よりも高い頻度でページテーブルをスキャンする。いくつかの実施形態では、メモリコントローラは、ページテーブル内のページテーブルエントリの一部又は全てをスキャンする。いくつかの変形例では、メモリコントローラは、ページテーブルエントリ内のアクセスビット及び/又はダーティビットを読み取って、対応するメモリページがアクセスされているかどうかを判定する。
【0060】
いくつかの実施形態では、メモリコントローラは、ページテーブルと、階層型メモリ内の対応するメモリページと、に関連付けられたページプロファイルリスト(例えば、図1のメモリプロファイルリスト148)を生成する(320)。いくつかの変形例では、ページプロファイルリストは、第2階層メモリ(例えば、より遅いメモリアクセス速度を有するメモリ、SCM等)内のホットメモリページのリストを含む。特定の変形例では、ページプロファイルリストは、第1階層メモリ(例えば、より速いメモリアクセス速度を有するメモリ、DRAM等)内のコールドメモリページのリストを含む。いくつかの例では、ページプロファイルリストは、複数のページプロファイルを含み、複数のページプロファイルの各ページプロファイルは、ページテーブル内のスキャンされたページテーブルエントリに対応する。特定の例では、複数のページプロファイルの各ページプロファイルは、対応するメモリページがホットメモリページであるかどうかの指標を含む。
【0061】
特定の実施形態では、メモリコントローラによって受信されたページプロファイルコマンドは、対応する階層型メモリのアドレス範囲を含む。例えば、ページプロファイルコマンドは、第1階層メモリの物理アドレス範囲に対応する第1のアドレス範囲と、第2階層メモリの物理アドレス範囲に対応する第2のアドレス範囲と、を含む。いくつかの例では、メモリコントローラ(例えば、DMAエンジン/コントローラ等)は、ページテーブルをスキャンし、スキャンされた各ページテーブルエントリが関連付けられている特定の階層メモリ(例えば、第1階層メモリ、第2階層メモリ)を決定する。本開示におけるいくつかの例は、2つの階層型メモリを使用しているが、ページプロファイリング手法は、3つ以上の階層型メモリにおいて使用することができる。
【0062】
いくつかの実施形態では、メモリコントローラは、CPUから受信された要求されたページプロファイル情報に従ってページプロファイルリストを生成する。いくつかの例では、要求されたページプロファイル情報に従って、メモリコントローラ(例えば、DMAエンジン/コントローラ、集積メモリコントローラ等)は、特定の階層メモリ(例えば、第1階層メモリ、第2階層メモリ等)内のメモリページに関連付けられたページテーブルエントリのみをスキャンする。いくつかの例では、要求されたページプロファイル情報に従って、メモリコントローラは、全てのページテーブルエントリをスキャンする。特定の例では、メモリコントローラは、特定の階層メモリ(例えば、第1階層メモリ、第2階層メモリ等)についてのページプロファイルリストを生成する。いくつかの例では、要求されたページプロファイル情報に従って、メモリコントローラは、特定の階層メモリ内の特有のタイプのページについてのページプロファイルリスト(例えば、第2階層メモリ内のホットページリスト、第1階層メモリ内のコールドページリスト等)を生成する。
【0063】
特定の例では、メモリコントローラは、特定の階層メモリ内の全てのメモリページについてのページプロファイルリストを、対応するメモリページがホットであるかコールドであるかの指標とともに生成する。いくつかの例では、メモリコントローラは、何れかの階層型メモリにおける特定のタイプのページ、及び、別の階層型メモリにおける全てのメモリページについてのページプロファイルリストを生成する。例えば、ページプロファイルリストは、第2階層メモリ内のホットメモリページと、第1階層メモリ内の全てのメモリページと、のリストを含む。特定の例では、ページプロファイルコマンドは、何れのタイプのページプロファイルリストが生成されるか、及び/又は、何れの情報がページプロファイルリストに含まれるかを示す情報を含む。
【0064】
いくつかの実施形態では、メモリコントローラ(例えば、集積メモリコントローラ、DMAエンジン/コントローラ等)は、ページプロファイルコマンドにおいて提供されるか又はCPUから受信されるかの何れかである、ページプロファイルリストのアドレス及び/又はポインタにページプロファイルリストを記憶する(325)。ページプロファイルリストが生成及び/又は更新された後、いくつかの変形例では、メモリコントローラは、ページプロファイリングの完了を示す完了指標をCPUに送信する(330)。いくつかの例では、完了指標は、ページプロファイルリストが生成されていることの指標である。いくつかの例では、完了指標は、CPUへの割り込みである。
【0065】
特定の実施形態では、完了指標を受信した後、CPUは、ページプロファイルリストを取り出し、ページプロファイルリストを解釈する(335)。いくつかの例では、CPUは、ページプロファイルリストを評価し、移行のために特定のメモリページを選択する。いくつかの例では、CPUは、ページプロファイルリストから第2階層メモリ内の特定のホットメモリページを選択する。特定の例では、CPUは、ページプロファイルリストから第1階層メモリ内の特定のコールドメモリページを選択する。いくつかの例では、メモリページ選択はオプションである。
【0066】
いくつかの実施形態では、CPUは、ページ移動コマンドをメモリコントローラに送信する(340)。いくつかの例では、ページ移動コマンドは、ページ番号、元アドレス、ターゲットアドレス及び/又は他の情報等の特定のパラメータを含む。特定の例では、ページ移動コマンドは、第2階層メモリ内の全てのホットメモリページを移動させる要求を含む。いくつかの例では、メモリコントローラ(又はメインプロセッサコア)は、様々な機能を実施して、現在のページ変換をブロック及び無効にし、ソースページから宛先ページにデータをコピーし、データ移動が完了した場合に新しいページ変換を設定する。いくつかの例では、メモリコントローラ(又はメインプロセッサコア)は、様々な機能を実施して、ソースページから宛先ページにデータをコピーし、データ移動が完了した場合に中間ページ変換を提供する。
【0067】
いくつかの変形例では、メモリコントローラは、ページ移動コマンドを受信し、特定のメモリページを移行する(345)。いくつかの例では、メモリコントローラは、ページ移動コマンドに従って特定のメモリページを移行する。いくつかの例では、メモリコントローラは、第2階層メモリ内のページプロファイルリスト内にある一部又は全てのホットメモリページを第1階層メモリに移行する。特定の例では、メモリコントローラは、ページ移動コマンドに従って、第2階層メモリ内の特定のホットメモリページを第1階層メモリに移行する。いくつかの例では、メモリコントローラは、第1階層メモリ内の一部又は全てのコールドメモリページを第2階層メモリに移行する。いくつかの例では、メモリコントローラは、第1階層メモリ内のページ移動コマンドに従って、特定のコールドメモリページを第2階層メモリに移行する。
【0068】
図4は、本開示に記載される特定の実施形態による、アドレス変換のためのページテーブル構造410及びページプロファイルリスト450の例示的な例である。ページテーブル構造410は、この例では、階層的なアドレス変換テーブルのセットを含む。ページテーブル構造410は、仮想アドレス430を物理アドレス420に変換する。仮想アドレス430は6つのフィールドを有し、フィールドのうち4つはページテーブル構造410にマッピングされ、物理ページオフセットフィールドは物理ページ420におけるアドレスオフセットを提供し、符号拡張フィールドは追加フィールドである。ページテーブル構造410は、仮想アドレス430内のページマップレベル4オフセットフィールドへのマッピングを提供するページマップレベル4テーブル412を含む。ページテーブル構造410は、仮想アドレス430内のページディレクトリポインタオフセットフィールドへのマッピングを提供するページディレクトリポインタテーブル414を含む。ページテーブル構造410は、仮想アドレス430内のページディレクトリオフセットフィールドへのマッピングを提供するページディレクトリテーブル416を含む。ページテーブル構造410は、仮想アドレス430内のページテーブルフィールドへのマッピングを提供するページテーブル418を含む。ページテーブル構造410は、ページマップレベル4ベースアドレスをポイントするためのCR3レジスタ(制御レジスタ、Control Register)413を更に含む。
【0069】
ページテーブル構造410は、複数のページテーブルエントリ(PTE)412を含む。この例では、ページテーブルエントリ412は、物理ページベースアドレスと、物理ページがアクセスされたかどうかを示す「A」又はアクセスビットと、物理ページが変更されたかどうかを示す「D」又はダーティビットと、を含む。
【0070】
メモリコントローラ(例えば、図1のDMAエンジン130)は、プロファイリングコマンド440を受信して、ページプロファイルリスト450を生成する。いくつかの実施形態では、プロファイリングコマンド440は、図1に示されるプロファイリングコマンド166の例である。いくつかの例では、ページプロファイルリスト450は、2つ以上のリスト452を含む。表1は、複数のコマンドフィールドを含むプロファイリングコマンド440の一例を示す。この例では、プロファイリングコマンドは、ページテーブル構造(例えば、図1のメモリ管理構造146、図4のページテーブル構造410)の開始メモリ位置である「ページテーブルベース」フィールドを含む。また、プロファイリングコマンドは、ページプロファイルリスト450を記憶するための開始物理アドレスを提供する「ページプロファイルリストベース」と、ページプロファイルリスト450の終了物理アドレスを提供する「ページプロファイルリスト制限」と、を含む。プロファイリングコマンド440は、スキャンされる開始仮想アドレス(仮想アドレス又はゲスト物理アドレスを含む)を提供する「ページテーブル最小」と、スキャンされる終了仮想アドレスを提供する「ページテーブル最大」と、を更に含む。2つのフィールド「ページテーブル最小」及び「ページテーブル最大」はオプションである。いくつかの変形例では、2つのフィールド「ページテーブル最小」及び「ページテーブル最大」は、非常に大きいアドレス空間のためのプロファイリングコマンドごとのスキャンの数及び完了時間を制限することができる。
【0071】
【表1】
【0072】
いくつかの実施形態では、プロファイリングコマンド440のコマンドフィールドは、階層「I」メモリ(例えば、階層1メモリ、階層2メモリ)を識別する最下位システム物理アドレスを提供する「システム物理最小[I]」と、階層「I」メモリを識別する最上位システム物理アドレスを提供する「システム物理最大[I]」と、を含む。コマンドフィールドは、マスクされたフィールド(例えば、スキャンされるフィールド)のフォーマットで基準Jの記述を提供する「一致基準マスク[J]」と、基準J内のマスクされたフィールドに必要な値を提供する「一致基準値[J]」と、を更に含む。例えば、基準Jが、アクセスビット及びダーティビットを一致の一部(例えば、ビット6,5)にすることである場合、一致基準マスクは、0x0000_0000_0000_0060に設定され、「A」ビットが設定され(例えば、1の値を有する)及び「D」ビットが設定されていない(例えば、0の値を有する)ページのみを一致させるために、一致基準値は、0x0000_0000_0000_0020に設定される。
【0073】
他の一致基準をページプロファイリングコマンド440に追加することができる。例えば、ページプロファイリング基準と呼ばれる一致基準は、複数のプロファイリングコマンド又はプロファイリングの反復においてアクセスされる特有のページを要求することである。別の例として、ページプロファイリング基準は、複数のプロファイリングコマンド又はプロファイリングの反復においてアクセスされていないメモリページを要求することである。更に別の例として、ページプロファイリング基準は、特定のパターン及び/又は割り当てに従うPTEエントリ内の1つ以上のビットの特定の値に関連付けられたメモリページを要求することである。
【0074】
いくつかの実施形態では、メモリコントローラは、ページテーブル構造410をスキャンして、ページプロファイルリスト450を生成する。いくつかの例では、ページプロファイルリスト450は、複数のページプロファイルエントリ452を含む。図4に示す例では、ページプロファイルエントリ452は、予約又は「R」フィールド、アドレス(例えば、物理アドレス)フィールド、ページテーブルエントリコンテンツ又はPTEコンテンツフィールド、及び、ステータス又は「S」フィールドを含む。一例では、「R」フィールドは、エントリが有効であるかどうかを示す。いくつかの例では、「R」フィールドは、ページプロファイルリスト450内のエントリ及び残りのエントリが有効であるかどうかを示す。いくつかの例では、「R」フィールドは、ページプロファイルリスト450の終わりを示す。いくつかの例では、アドレスフィールドは、ページプロファイルコマンド440において識別された基準(例えば、一致基準マスク及び一致基準値)を満たす仮想アドレス又はゲスト物理アドレスを含む。PTEコンテンツフィールドは、システム物理アドレスと、仮想アドレスに対応するページテーブル構造410内の関連するページメタデータと、を含む。「S」フィールドは、対応するページに関連付けられたステータス情報(例えば、ホット、コールド等)を含む。
【0075】
特定の実施形態では、一致基準に従って、プロファイリングコマンド440は、一致基準を満たすエントリのリストを生成する。ページプロファイルリスト455及び456は、そのようなエントリのリストを示す。一例では、ページプロファイルリスト455は、第1階層メモリよりも遅いメモリアクセス速度を有する第2階層メモリ内のホットメモリページのリストを含む。いくつかの変形例では、ページプロファイルリスト455は、1つ以上のプロファイルエントリ147を含む。いくつかの例では、ページプロファイルエントリ457は、予約又は「R」フィールド、アドレス(例えば、物理アドレス)フィールド、及び、ページテーブルエントリコンテンツ又はPTEコンテンツフィールドを含む。一例では、「R」フィールドは、エントリが有効であるかどうかを示す。いくつかの例では、「R」フィールドは、ページプロファイルリスト455内のエントリ及び残りのエントリが有効であるかどうかを示す。いくつかの例では、アドレスフィールドは、ページプロファイルコマンド440において識別された基準(例えば、一致基準マスク及び一致基準値)を満たす仮想アドレス又はゲスト物理アドレスを含む。特定の例では、「R」フィールドは、ページプロファイルリスト455の終わりを示す。いくつかの例では、PTEコンテンツフィールドは、システム物理アドレスと、仮想アドレスに対応するページテーブル構造410内の関連するページメタデータと、を含む。
【0076】
一例では、ページプロファイルリスト456は、第2階層メモリよりも速いメモリアクセス速度を有する第1階層メモリ内のコールドメモリページのリストを含む。いくつかの変形例では、ページプロファイルリスト456は、1つ以上のプロファイルエントリ148を含み、いくつかの例では、ページプロファイルエントリ458は、予約又は「R」フィールド、アドレス(例えば、物理アドレス)フィールド、及び、ページテーブルエントリコンテンツ又はPTEコンテンツフィールドを含み、これらのフィールドは、上述したプロファイルエントリと同じである。いくつかの例では、ページプロファイルエントリ458は、予約又は「R」フィールド、アドレス(例えば、物理アドレス)フィールド、及び、ページテーブルエントリコンテンツ又はPTEコンテンツフィールドを含む。一例では、「R」フィールドは、エントリが有効であるかどうかを示す。いくつかの例では、「R」フィールドは、ページプロファイルリスト456内のエントリ及び残りのエントリが有効であるかどうかを示す。いくつかの例では、アドレスフィールドは、ページプロファイルコマンド440において識別された基準(例えば、一致基準マスク及び一致基準値)を満たす仮想アドレス又はゲスト物理アドレスを含む。特定の例では、「R」フィールドは、ページプロファイルリスト456の終わりを示す。いくつかの例では、PTEコンテンツフィールドは、システム物理アドレスと、仮想アドレスに対応するページテーブル構造410内の関連するページメタデータと、を含む。
【0077】
図5は、本開示に記載される特定の実施形態による、階層メモリ管理をオフロードするための方法500の一例を示すフローチャートである。方法500の態様は、例えば、コンピューティングデバイス(例えば、図1のコンピューティングシステム100を実装するデバイス)、メモリコントローラ(例えば、集積メモリコントローラ、図1のDMAエンジン130)、CPU(例えば、図1のCPU150)によって実施される。いくつかの実施形態では、方法500の1つ以上のステップは、オプションであり、及び/又は、本明細書に記載される他の例の1つ以上のステップによって修正される。いくつかの実施形態では、本明細書に記載される他の例の1つ以上のステップが方法500に追加される。いくつかの例では、CPU又はコンピューティングプロセッサは、仮想アドレス範囲と、一致基準と、他のコマンド情報と、を含むページプロファイリングコマンド(例えば、図4のプロファイリングコマンド440)をメモリコントローラに送信する(505)。いくつかの例では、ページプロファイリングコマンドは、ページテーブルベースアドレス及びページプロファイルリストベースアドレスを含む。
【0078】
特定の実施形態では、ページプロファイリングコマンドは、一致基準を含む要求されたページプロファイル情報を含む。例えば、一致基準は、ページリストのタイプ、例えば、コールドメモリページリスト、ホットメモリページリスト、アクセスビットが設定されたページ、所定のプロファイリングサイクルに対してアクセスビットが設定されたページ、アクセスビット及びダーティビットの両方が設定されたページ、アクセスビットが設定されているがダーティビットが設定されていないページ等を指定する。いくつかの例では、要求されたページプロファイル情報は、スキャンするページテーブル範囲、物理アドレス範囲及び他の情報を含む。
【0079】
いくつかの実施形態では、メモリコントローラ(例えば、集積メモリコントローラ、DMAエンジン/コントローラ等)は、ページプロファイリングコマンドを受信して(510)、例えば、階層型メモリへのページプロファイリングを行う。いくつかの例では、メモリコントローラは、ページテーブルをトラバースして(515)、一致基準を満たすエントリを識別する。特定の例では、メモリコントローラは、有効なページテーブルエントリのみをスキャンし、これにより、スキャンされるエントリの数を大幅に低減することができる。いくつかの例では、メモリコントローラは、所定の頻度でページテーブルをスキャンする。一例では、メモリコントローラは、CPUのOS/HVから受信された各プロファイリングコマンドでページテーブルを1回スキャンする。いくつかの変形例では、メモリコントローラは、受信されたプロファイリングコマンドに基づいて又は所定の頻度に基づいて、5秒に1回よりも高い頻度でページテーブルをスキャンする。いくつかの変形例では、メモリコントローラは、受信されたプロファイリングコマンドに基づいて又は所定の頻度に基づいて、1秒に1回よりも高い頻度でページテーブルをスキャンする。いくつかの実施形態では、メモリコントローラは、ページテーブル内のページテーブルエントリの一部又は全てをスキャンする。いくつかの変形例では、メモリコントローラは、ページテーブルエントリ内のアクセスビット及び/又はダーティビットを読み取って、対応するメモリページがアクセス及び/又は修正されているかどうかを判定する。
【0080】
いくつかの実施形態では、ページテーブルスキャン中に、各ページテーブルエントリについて、メモリコントローラは、ページテーブルエントリが一致基準を満たすかどうかを判定する(520)。一致基準が満たされた場合、メモリコントローラは、ページテーブルエントリのPTEコンテンツをページプロファイルリスト(例えば、図4のページプロファイルリスト450)に書き込む(525)。メモリコントローラは、例えば、ページプロファイリングコマンドにおいて指定されたページテーブル範囲及び物理アドレス範囲について、スキャンが完了したかどうかを判定する(530)。スキャンが完了していない場合、メモリコントローラは、ページテーブルをトラバースし続ける(515)。スキャンが完了した場合、メモリコントローラは、ページプロファイルリストを、例えば、ページプロファイリングコマンドにおいて指定されたメモリ位置に記憶する(535)。いくつかの実施形態では、CPU又はコンピューティングプロセッサは、例えば、割り込み、メモリ位置ポーリング又は他の通知手法を介して通知される(540)。
【0081】
特徴及び要素が特定の組み合わせで上に説明されているが、各特徴又は要素は、他の特徴及び要素を用いずに単独で、又は、他の特徴及び要素を用いて若しくは用いずに様々な組み合わせで使用することができる。いくつかの実施形態において本明細書に記載される装置は、汎用コンピュータ又はプロセッサによる実施のために非一時的なコンピュータ可読記憶媒体に組み込まれるコンピュータプログラム、ソフトウェア又はファームウェアにおいて実施され得る。コンピュータ可読記憶媒体の例としては、読み取り専用メモリ(read only memory、ROM)、ランダムアクセスメモリ(random-access memory、RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、磁気媒体(例えば、内蔵ハードディスク及びリムーバブルディスク)、磁気光学媒体、並びに、光学媒体(例えば、CD-ROMディスク及びデジタル多用途ディスク(digital versatile disk、DVD))が挙げられる。
【0082】
様々な実施形態の上述した詳細な説明では、その一部を形成し、本発明を実施することができる特定の好ましい実施形態を例として示す添付図面を参照した。これらの実施形態は、当業者が本発明を実施することを可能にするために十分に詳細に説明されており、他の実施形態が利用されてもよく、本発明の範囲から逸脱することなく論理的、機械的及び電気的変更が行われてもよいことを理解されたい。当業者が本発明を実施することを可能にするために必要でない詳細を避けるために、説明は、当業者に知られている特定の情報を省略する場合がある。更に、本開示の教示を組み込む多くの他の様々な実施形態が当業者によって容易に構築され得る。したがって、本発明は、本明細書に記載の特定の形態に限定されることを意図するものではなく、逆に、本発明の範囲内に合理的に含まれ得るそのような代替形態、修正形態及び均等物を包含することを意図している。したがって、上述した詳細な説明は、限定的な意味で解釈されるべきではなく、本発明の範囲は、添付の特許請求の範囲によってのみ定義される。本明細書に記載される実施形態及び実施例の上記の詳細な説明は、限定ではなく、例示及び説明のためにのみ提示されている。例えば、説明された動作は、任意の適切な順序又は方法で行われる。したがって、本発明は、上記で開示され、本明細書で特許請求される基本的な基礎原理の範囲内に入るあらゆる修正、変形例又は等価物を包含することが企図される。
【0083】
上記の詳細な説明及びそこに記載される実施例は、限定のためではなく、例示及び説明のためにのみ提示されている。
図1
図2
図3
図4
図5
【手続補正書】
【提出日】2023-11-28
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
メモリコントローラによって実施される方法であって、
前記メモリコントローラが、階層型メモリに関連付けられた、記憶されたメモリ管理構造へのポインタを取得することであって、前記メモリ管理構造は、複数のメモリ管理エントリを含み、前記複数のメモリ管理エントリの各メモリ管理エントリは、何れかの階層型メモリにおけるメモリセクションについての情報を含む、ことと、
前記メモリコントローラが、前記複数のメモリ管理エントリの少なくとも一部をスキャンすることと、
前記メモリコントローラが、メモリプロファイルリストを生成することであって、前記メモリプロファイルリストは、複数のプロファイルエントリを含み、前記複数のプロファイルエントリの各プロファイルエントリは、前記メモリ管理構造内のスキャンされたメモリ管理エントリに対応する、ことと、を含む、
方法。
【請求項2】
前記メモリコントローラが、前記メモリプロファイルリストを生成するためのプロファイリングコマンドを受信することと、
前記メモリコントローラが、前記プロファイリングコマンドを受信した後に、前記複数のメモリ管理エントリの少なくとも一部をスキャンすることと、を更に含む、
請求項1の方法。
【請求項3】
前記プロファイリングコマンドは、前記記憶されたメモリ管理構造へのポインタと、何れかの階層型メモリのメモリ範囲と、一致基準と、のうち少なくとも1つを含む、
請求項2の方法。
【請求項4】
前記一致基準は、前記複数のメモリ管理エントリの各メモリ管理エントリの評価される部分を示す基準マスクと、前記メモリ管理エントリの前記部分の所定の値を示す基準値と、を含む、
請求項3の方法。
【請求項5】
各メモリ管理エントリの前記部分は、アクセスビット及びダーティビットのうち少なくとも1つを含む、
請求項4の方法。
【請求項6】
前記メモリプロファイルリストは、前記階層型メモリの第2階層メモリ内の1つ以上のホットメモリページの第1のリストを含み、前記第2階層メモリは、前記階層型メモリの第1階層メモリよりも遅いメモリアクセス速度を有する、
請求項1の方法。
【請求項7】
前記メモリプロファイルリストは、前記第1階層メモリ内の1つ以上のコールドメモリページの第2のリストを含む、
請求項6の方法。
【請求項8】
前記メモリコントローラが、前記メモリプロファイルリストについてのメモリ位置を取得することと、
前記メモリコントローラが、前記メモリプロファイルリストを前記メモリ位置に記憶することと、
前記メモリコントローラが、前記メモリプロファイルリストが生成されたという指標を送信することと、を更に含む、
請求項7の方法。
【請求項9】
回路を備えるメモリコントローラであって
回路は、
階層型メモリに関連付けられた、記憶されたメモリ管理構造へのポインタを取得することであって、前記メモリ管理構造は、複数のメモリ管理エントリを含み、前記複数のメモリ管理エントリの各メモリ管理エントリは、何れかの階層型メモリにおけるメモリセクションについての情報を含む、ことと、
前記複数のメモリ管理エントリの少なくとも一部をスキャンすることと、
メモリプロファイルリストを生成することであって、前記メモリプロファイルリストは、複数のプロファイルエントリを含み、前記複数のプロファイルエントリの各プロファイルエントリは、前記メモリ管理構造内のスキャンされたメモリ管理エントリに対応する、ことと、
を行うように構成されている、
メモリコントローラ
【請求項10】
記メモリプロファイルリストを生成するためのプロファイリングコマンドを受信することと、
前記プロファイリングコマンドを受信した後に、前記複数のメモリ管理エントリの少なくとも一部をスキャンすることと、
を行うように構成されている、
請求項メモリコントローラ
【請求項11】
前記プロファイリングコマンドは、前記記憶されたメモリ管理構造へのポインタと、何れかの階層型メモリのメモリ範囲と、一致基準と、のうち少なくとも1つを含む、
請求項10メモリコントローラ
【請求項12】
前記一致基準は、前記複数のメモリ管理エントリの各メモリ管理エントリの評価される部分を示す基準マスクと、前記メモリ管理エントリの前記部分の所定の値を示す基準値と、を含む、
請求項11メモリコントローラ
【請求項13】
各メモリ管理エントリの前記部分は、アクセスビット及びダーティビットのうち少なくとも1つを含む、
請求項12メモリコントローラ
【請求項14】
前記メモリプロファイルリストは、前記階層型メモリの第2階層メモリ内の1つ以上のホットメモリページの第1のリストを含み、前記第2階層メモリは、前記階層型メモリの第1階層メモリよりも遅いメモリアクセス速度を有する、
請求項メモリコントローラ
【請求項15】
前記メモリプロファイルリストは、前記第1階層メモリ内の1つ以上のコールドメモリページの第2のリストを含む、
請求項14メモリコントローラ
【請求項16】
記メモリプロファイルリストについてのメモリ位置を取得することと、
前記メモリプロファイルリストを前記メモリ位置に記憶することと、
前記メモリプロファイルリストが生成されたという指標を送信することと、
を行うように構成されている、
請求項15メモリコントローラ
【請求項17】
請求項9~16の何れかのメモリコントローラを備える集積回路であって、
前記メモリコントローラを備える第1のプロセッサと、
前記メモリコントローラに動作可能に結合されたデータファブリックと、
前記階層型メモリとインターフェースするように構成された第2のプロセッサと、を更に備える、
積回路。
【請求項18】
請求項9~16の何れかのメモリコントローラを備えるシステムであって、
アプリケーションデータを記憶するように構成された階層型メモリと、
アプリケーションを起動するように構成されたプロセッサと、を備え、
前記メモリコントローラは、前記階層型メモリに動作可能に結合されており、
前記メモリコントローラは、
前記プロセッサからページテーブルへのポインタを受信することであって、前記ページテーブルは、複数のページテーブルエントリを含み、各ページテーブルエントリは、前記階層型メモリ内のページに関するページ情報を含む、ことと、
前記ページテーブル内の前記複数のページテーブルエントリの少なくとも一部をスキャンすることと、
ページプロファイルリストを生成することであって、前記ページプロファイルリストは、複数のプロファイルエントリを含み、前記複数のプロファイルエントリの各プロファイルエントリは、前記ページテーブル内のスキャンされたページテーブルエントリに対応する、ことと、
を行うように構成されている、
システム。
【請求項19】
請求項18のシステムを備える集積回路。
【国際調査報告】