(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-02-15
(45)【発行日】2023-02-24
(54)【発明の名称】サイレントアクティブページ移行障害
(51)【国際特許分類】
G06F 12/1009 20160101AFI20230216BHJP
G06F 12/1027 20160101ALI20230216BHJP
【FI】
G06F12/1009
G06F12/1027 100
(21)【出願番号】P 2019557821
(86)(22)【出願日】2018-04-24
(86)【国際出願番号】 US2018029188
(87)【国際公開番号】W WO2018200559
(87)【国際公開日】2018-11-01
【審査請求日】2021-03-05
(32)【優先日】2017-04-24
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(73)【特許権者】
【識別番号】508301087
【氏名又は名称】エーティーアイ・テクノロジーズ・ユーエルシー
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
【住所又は居所原語表記】One Commerce Valley Drive East, Markham, Ontario, L3T 7X6 Canada
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ウェイド ケイ. スミス
(72)【発明者】
【氏名】アンソニー アサロ
【審査官】北村 学
(56)【参考文献】
【文献】米国特許出願公開第2007/0106874(US,A1)
【文献】米国特許出願公開第2012/0023280(US,A1)
【文献】米国特許出願公開第2014/0281299(US,A1)
【文献】米国特許出願公開第2016/0378674(US,A1)
【文献】米国特許第09575815(US,B1)
【文献】特表2009-537922(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
IPC G06F 12/08 - 12/128
(57)【特許請求の範囲】
【請求項1】
メモリサブシステムと、
回路を備えるプロセッサであって、前記メモリサブシステムに接続されたプロセッサと、を備え、
第1ページが前記メモリサブシステム内の第1メモリ位置から第2メモリ位置に移行されることになるのを検出することと、
前記第1ページに対応する第1ページテーブルエントリ(PTE)を見つけることと、
移行保留指標を前記第1PTEに記憶することと、
前記第1PTEを対象とする書き込み要求に対応する変換要求を検出したこと(605)と、前記第1PTE内の前記移行保留指標を検出したこと(610)と、に応じて、
前記第1ページに対して書き込み動作が実行されるのを抑制すること(625)と、
サイレント再試行要求を生成すること(625)であって、前記サイレント再試行要求は、割り込みの生成又はステータスレジスタの更新を含まない、ことと、
を行うように構成されている、
システム。
【請求項2】
前記システムは、
前記第1PTEを対象とする変換要求を検出したことと、前記第1PTE内の前記移行保留指標を検出したことと、に応じて、
前記変換要求が前記第1ページを対象とする読み出し要求に対応する場合に、前記第1ページに対する読み出し動作が実行されるのを許可することを行うように構成されている、
請求項1のシステム。
【請求項3】
前記第1PTEを対象とする書き込み要求に対応する変換要求を検出したことと、前記第1PTE内の前記移行保留指標を検出したことと、に応じて、ページフォルトが発生しない、
請求項2のシステム。
【請求項4】
前記
書き込み要求を発行した要求元のクライアントは、
前記サイレント再試行要求が前記要求元のクライアントに伝達された後の時点で前記書き込み要求
を再試行するように構成されている、
請求項3のシステム。
【請求項5】
前記移行保留指標は、
前記第1PTEのビットを、前記第1PTEの読み出し及び書き込み許可が無効であることを示す
値に設定することによって、前記第1PTEにおいて符号化される、
請求項1のシステム。
【請求項6】
前記システムは、
前記第1メモリ位置から前記第2メモリ位置への前記第1ページの移行が完了していることに応じて、
前記移行保留指標をクリアすることと、
前記第1PTEに対応するキャッシュされたアドレス変換を無効にすることと、
を行うように構成されている、
請求項1のシステム。
【請求項7】
前記メモリサブシステムは、第1メモリと第2メモリとを備え、
前記第1メモリ位置は、前記第1メモリ内に存在し、
前記第2メモリ位置は、前記第2メモリ内に存在する、
請求項1のシステム。
【請求項8】
ページテーブルエントリを管理するための方法であって、
回路を備えるコンピューティングシステム(100)が、第1ページが第1メモリ位置から第2メモリ位置に移行されることになるのを検出することと、
前記第1ページに対応する第1ページテーブルエントリ(PTE)を見つけることと、
移行保留指標を前記第1PTEに記憶することと、
前記第1PTEを対象とする書き込み要求に対応する変換要求を検出したこと(605)と、前記第1PTE内の前記移行保留指標を検出したこと(610)と、に応じて、
前記第1ページに対して書き込み動作が実行されるのを抑制すること(625)と、
割り込みを生成することなくサイレント再試行要求を生成することであって、前記サイレント再試行要求は、割り込みの生成又はステータスレジスタの更新を含まない、ことと、を含む、
方法。
【請求項9】
前記方法は、
前記第1PTEを対象とする変換要求を検出したことと、前記第1PTE内の前記移行保留指標を検出したことと、に応じて、
前記変換要求が前記第1ページを対象とする読み出し要求に対応する場合に、前記第1ページに対する読み出し動作が実行されるのを許可することを含む、
請求項8の方法。
【請求項10】
前記第1PTEを対象とする書き込み要求に対応する変換要求を検出したことと、前記第1PTE内の前記移行保留指標を検出したことと、に応じて、ページフォルトが発生しない、
請求項9の方法。
【請求項11】
前記
書き込み要求を発行した要求元のクライアントが、
前記サイレント再試行要求が前記要求元のクライアントに伝達された後の時点で前記書き込み要求
を再試行することを含む、
請求項10の方法。
【請求項12】
前記移行保留指標は、
前記第1PTEのビットを、前記第1PTEの読み出し及び書き込み許可が無効であることを示す
値に設定することによって、前記第1PTEにおいて符号化される、
請求項8の方法。
【請求項13】
前記第1メモリ位置から前記第2メモリ位置への前記第1ページの移行が完了していることに応じて、
前記移行保留指標をクリアすることと、
前記第1PTEに対応するキャッシュされたアドレス変換を無効にすることと、を含む、
請求項8の方法。
【請求項14】
前記第1メモリ位置は、第1メモリ内に存在し、前記
第2メモリ位置は、第2メモリ内に存在する、
請求項8の方法。
【請求項15】
回路を備えるメモリ管理ユニット(MMU)であって、
第1ページ
がメモリサブシステム内の第1メモリ位置から第2メモリ位置に移行されることになるのを検出することと、
前記第1ページに対応する第1ページテーブルエントリ(PTE)を見つけることと、
移行保留指標を前記第1PTEに記憶することと、
前記第1PTEを対象とする書き込み要求に対応する変換要求を検出したこと(605)と、前記第1PTE内の前記移行保留指標を検出したこと(610)と、に応じて、
前記第1ページに対して書き込み動作が実行されるのを抑制すること(625)と、
サイレント再試行要求を生成すること(625)であって、前記サイレント再試行要求は、割り込みの生成又はステータスレジスタの更新を含まない、ことと、
を行うように構成されている、
MMU。
【請求項16】
前記MMUは、
前記第1PTEを対象とする変換要求を検出したことと、前記第1PTE内の前記移行保留指標を検出したことと、に応じて、
前記変換要求が前記第1ページを対象とする読み出し要求に対応する場合に、前記第1ページに対する読み出し動作が実行されるのを許可することを行うように構成されている、
請求項15のMMU。
【請求項17】
前記第1PTEを対象とする書き込み要求に対応する変換要求を検出したことと、前記第1PTE内の前記移行保留指標を検出したことと、に応じて、ページフォルトが発生しない、
請求項16のMMU。
【請求項18】
前記
書き込み要求を発行した要求元のクライアントが、
前記サイレント再試行要求が前記要求元のクライアントに伝達された後の時点で前記書き込み要求
を再試行するように構成される、請求項17のMMU。
【請求項19】
前記移行保留指標は、
前記第1PTEのビットを、前記第1PTEの読み出し及び書き込み許可が無効であることを示す
値に設定することによって、前記第1PTEにおいて符号化される、
請求項15のMMU。
【請求項20】
前記第1メモリ位置から前記第2メモリ位置への前記第1ページの移行が完了していることに応じて、
前記移行保留指標をクリアすることと、
前記第1PTEに対応するキャッシュされたアドレス変換を無効にすることと、
を行うように構成されている、
請求項15のMMU。
【発明の詳細な説明】
【背景技術】
【0001】
(関連技術の説明)
多くのコンピューティングデバイスは、ソフトウェアプログラムによるデータアクセスを処理するために仮想メモリ技術を使用している。仮想メモリのページ変換メカニズムによって、システムソフトウェアがプロセス又はアプリケーション毎に別々のアドレス空間を生成することができる。これらのアドレス空間は、仮想アドレス空間として知られている。このシステムソフトウェアは、ページングメカニズムを使用して、ページテーブルと総称される階層型アドレス変換テーブルのセットを用いて、物理メモリの個々のページを仮想アドレス空間に選択的にマッピングする。仮想メモリは、中央処理装置(CPU)、グラフィックス処理ユニット(GPU)、アクセラレーテッドプロセッシングユニット(APU)を含むがこれらに限定されない任意のプロセッサによって実装可能である。
【0002】
プログラムによってデータがアクセスされると、メモリの「ページ」と呼ばれる、データを含む所定のサイズ(例えば、4キロバイト(KB))のメモリブロックが、バッキングストレージ(例えば、ディスクドライブ又は半導体メモリ)からコンピューティングデバイス内のメインメモリの利用可能な物理的位置にコピーされる。いくつかのシステムは、メモリに記憶される複数の異なるページサイズを含む。ページの物理的位置をプログラムに管理させるのではなく、コンピューティングデバイス内のメモリ管理ユニットがページの物理的位置を管理する。メモリにアクセスするためにページの物理的位置に基づくアドレス(又は、「物理アドレス」)を使用する代わりに、プログラムは、仮想アドレス空間の仮想アドレスを使用して、メモリにアクセスする。プログラムの観点から、仮想アドレスは、メモリ内のページにデータが記憶される実際の物理アドレス(すなわち、物理的位置)を示し、これにより、仮想アドレスを使用するプログラムによってメモリアクセスが行われる。しかしながら、仮想アドレスは、データが記憶されている物理的位置の物理アドレスに直接マッピングされているわけではない。したがって、メモリ管理ユニットは、ページの物理的位置を管理する一部として、プログラムによって使用される仮想アドレスを、データが実際に位置する物理アドレスに変換する。変換された物理アドレスは、プログラムのメモリアクセスを実行するために使用される。上述した変換を実行するために、メモリ管理ユニットは、メモリに記憶されたページの仮想アドレスから物理アドレスへの変換のセットを含むメモリ内のページテーブルを使用する。
【0003】
システムは、メモリ位置間でページを移行することがあり、仮想アドレスから物理アドレスへの変換が変更されることがある。場合によっては、システムは、ページを第1メモリから第2メモリに移動させることを決定する。或いは、システムは、ガベージコレクション動作の一部として、単一のメモリ内のページを移動させることができる。しかしながら、プロセスの実行中(例えば、グラフィックスプログラムがレンダリングタスクを実行している)に、ページの移行に混乱が生じる可能性がある。
【0004】
本明細書に記載される方法及びメカニズムの利点は、添付の図面と併せて以下の説明を参照することによって、より良く理解することができる。
【図面の簡単な説明】
【0005】
【
図1】コンピューティングシステムの一実施形態のブロック図である。
【
図2】ページテーブルエントリ(PTE)フォーマットの例を示す図である。
【
図3】ページ移行が進行中のシステムの一実施形態のブロック図である。
【
図4】ページ移行が完了した後のシステムの一実施形態のブロック図である。
【
図5】メモリ位置間で第1ページを移行する方法の一実施形態を示す一般化されたフロー図である。
【
図6】移行保留指標(migration pending indication)を用いてPTEにヒットする変換要求を処理する方法の一実施形態を示す一般化されたフロー図である。
【
図7】変換要求を処理する方法の一実施形態を示す一般化されたフロー図である。
【発明を実施するための形態】
【0006】
以下の説明では、本明細書に提示される方法及びメカニズムの十分な理解を提供するために、多くの具体的な詳細が示されている。しかしながら、当業者は、様々な実施形態がこれらの具体的な詳細無しに実施され得ることを認識すべきである。いくつかの例では、周知の構造、コンポーネント、信号、コンピュータプログラム命令及び技術は、本明細書に記載されるアプローチを不明瞭にすることを避けるために、詳細に示されていない。説明を簡単且つ明確にするために、図に示される要素が必ずしも縮尺通りに描かれていないことが理解されるであろう。例えば、いくつかの要素の寸法は、他の要素と比較して誇張されている場合がある。
【0007】
本明細書において、メモリ位置間でページを移行するシステム、装置及び方法が開示される。一実施形態では、システムは、少なくとも1つのプロセッサと、メモリ管理ユニット(MMU)と、メモリサブシステムと、を備える。一実施形態では、第1ページがメモリサブシステムの第1メモリ位置から第2メモリ位置に移行されるという指標が検出される。第1ページを移行する前に、第1ページに対応する第1ページテーブルエントリ(PTE)を見つける。次に、移行保留指標を第1PTEに記憶する。一実施形態では、移行保留指標は、第1ページに対する読み出し及び書き込み許可を無効にすることによって、第1PTEにおいて符号化される。移行保留指標を第1PTEに記憶した後に、第1ページの移行を開始することが可能である。
【0008】
一実施形態では、第1PTEを対象とする変換要求がMMUによって受信され、移行保留指標が第1PTEにおいて符号化される。変換要求が読み出し要求に対応する場合、第1ページに対する読み出し動作の実行を可能にする。そうでなければ、変換要求が第1ページを対象とする書き込み要求に対応する場合、第1ページへの書き込み動作の実行が抑制され、サイレント再試行要求が生成され、要求元のクライアントに伝達される。一実施形態では、サイレント再試行は、割り込みの生成又は状態レジスタの更新を含まないので、「サイレント」と呼ばれる。したがって、要求元のクライアントは、後の時点で書き込み要求を再試行するように構成されている。
【0009】
ここで
図1を参照すると、コンピューティングシステム100の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステム100は、中央処理装置(CPU)チップセット140を介してシステムメモリ150に接続されたシステムオンチップ(SoC)105を備える。また、SoC105は、集積回路(IC)と呼ぶこともできる。一実施形態では、SoC105は、少なくとも入出力(I/O)インタフェース155と、ファブリック120と、グラフィックス処理ユニット(GPU)130と、ローカルメモリ110と、を備える。また、SoC105は、図面を不明瞭にすることを避けるために、
図1に示されていない他のコンポーネントを備えることができる。別の実施形態では、GPU130は、別のタイプの処理ユニット(例えば、中央処理装置(CPU)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP))であってもよい。
【0010】
GPU130は、少なくともトランスレーションルックアサイドバッファ(TLB)コンプレックス(複合体)135と、グラフィックス又は汎用処理に使用される任意の数及びタイプの計算ユニットを表す計算ユニット145A~145Nと、を備える。GPU130は、ファブリック120を介してローカルメモリ110に接続されている。一実施形態では、ローカルメモリ110は、高帯域幅メモリ(HBM)を使用して実装される。一実施形態では、GPU130は、描画コマンド、ピクセル動作、幾何学的計算、及び、画像をディスプレイにレンダリングするための他の動作等のグラフィックスパイプライン動作を実行するように構成されている。別の実施形態では、GPU130は、グラフィックスに関連しない動作を実行するように構成されている。さらなる実施形態では、GPU130は、グラフィックス動作及び非グラフィックス関連動作の両方を実行するように構成されている。
【0011】
一実施形態では、GPU130は、TLBを使用して、これらのデバイス上で実行される異なるプロセスに割り当てられる仮想アドレスの物理アドレスへのマッピングをキャッシュする。これらのTLBは、それぞれ計算ユニット145A~145NではL1 TLB170A~170Nとして示されており、TLBコンプレックス135ではL2 TLB160として示されている。また、TLBコンプレックス135は、テーブルウォーカー165を備える。一般的に、メモリ管理ユニットは、1つ以上のTLBと、テーブルウォーキングロジックと、障害ハンドラと、実装に応じた回路と、を備えることができる。いくつかの実施形態では、命令又はデータについてGPU130内に異なるTLBを実装することができる。例えば、比較的小さく高速なL1 TLBは、ルックアップを実行するためにより多くのサイクルを必要とする、より大きなL2 TLBによってバックアップされる。L2 TLBによって実行されるルックアップは、ページテーブル125A~125Bへのテーブルウォークに比べて比較的高速である。実施形態に応じて、ページテーブル125A~125Bを、ローカルメモリ110、システムメモリ150に配置することができ、又は、ページテーブル125A~125Bの一部を、ローカルメモリ110及びシステムメモリ150に配置することができる。TLBコンプレックスのいくつかの実施形態は、命令TLB(ITLB)と、レベル1データTLB(L1 DTLB)と、レベル2データTLB(L2 DTLB)と、を含む。TLBコンプレックスの他の実施形態は、TLBの他の構成及び/又はレベルを含むことができる。
【0012】
GPU130内のロード命令又はストア命令のアドレス変換は、仮想アドレス変換の要求をL1 TLBにポストすることによって実行することができる。L1 TLBは、仮想アドレスがL1 TLBのエントリで見つかった場合に、物理アドレスを返す。仮想アドレス変換の要求がL1 TLBでミスした場合、当該要求がL2 TLBにポストされる。仮想アドレス変換の要求がL2 TLBでミスした場合、当該要求に対してページテーブルウォークが実行される。ページテーブルウォークは、1つ以上のルックアップをページテーブル階層にもたらし得る。
【0013】
本明細書において、システムメモリ150からローカルメモリ110へ又はその逆にページを移動させるプロセスは、「ページ移行」と呼ばれる。また、本明細書において、システムメモリ150内でページを移動させること、又は、ローカルメモリ110内でページを移動させることも「ページ移行」と呼ばれる。本明細書において、ローカルメモリ110及びシステムメモリ150の組み合わせを「メモリサブシステム」と呼ぶことができる。或いは、本明細書において、ローカルメモリ110又はシステムメモリ150を「メモリサブシステム」と呼ぶことができる。システム100は、所定のページがメモリサブシステム内の位置間で移動する場合に、当該所定のページがページ移行状態にあるという指標を生成するように構成されている。これにより、他の操作をシームレスに継続することができる。一実施形態では、システム100は、所定のページがページ移行状態にある場合に、当該所定のページのページテーブルエントリを変更し、読み出し及び書き込み特権の両方をオフにするように構成されている。この特定の組み合わせ(読み出し及び書き込み特権の無効)の意味は、所定のページがページ移行状態であることを示すように変更されている。他の実施形態では、所定のページがページ移行状態にあることを符号化する他の方法が可能であり、企図される。
【0014】
本明細書に使用される場合、「ページ」という用語は、仮想メモリの固定長の連続ブロックとして定義される。また、「ページ」は、システム100によるメモリ管理に利用されるデータの単位として定義される。ページサイズは実施形態毎に異なり、単一の実施形態では複数の異なるページサイズを利用することができる。「メモリページ」及び「ページ」という用語は、任意のサイズのメモリ領域を表すのを意図していることを理解されたい。
【0015】
一実施形態では、メモリ位置間の第1ページの移行が開始されていることを検出したことに応じて、第1ページに対応する第1ページテーブルエントリ(PTE)が見つけられ、移行保留指標が第1PTEに記憶される。一実施形態では、移行保留指標は、読み出し及び書き込み許可を無効にすることによって、第1PTEにおいて符号化される。移行保留指標が第1PTEにおいて符号化され、変換要求が読み出し要求に対応している間に、第1PTEを対象とする変換要求がMMUによって受信される場合には、第1ページに対する読み出し動作が許可される。そうでなければ、変換要求が書き込み要求に対応する場合に、第1ページヘの書き込み動作が抑制され、サイレント再試行要求が生成され、要求元のクライアントに伝達される。次に、要求元のクライアントは、後の時点で書き込み要求を再試行することができる。別の実施形態では、変換要求が読み出し要求に対応する場合に、読み出し要求がブロックされ、読み出し動作に関する再試行要求が生成される。
【0016】
I/Oインタフェース155は、ファブリック120及びCPUチップセット140に接続されており、任意の数及びタイプのインタフェース(例えば、ペリフェラルコンポーネントインターコネクト(PCI)バス、PCI‐Extended(PCI‐X)、PCIE(PCI Express)バス、ギガビットEthernet(登録商標)(GBE)バス、ユニバーサルシリアルバス(USB))を表している。SoC105は、CPUチップセット140を介してメモリ150に接続されており、メモリ150は、1つ以上のメモリモジュールを含む。各メモリモジュールは、それに搭載された1つ以上のメモリデバイスを含む。いくつかの実施形態では、メモリ150は、SoC105も搭載されたマザーボード、又は、他のキャリアに搭載された1つ以上のメモリデバイスを含む。一実施形態では、メモリ150は、動作中にSoC105と共に用いられるランダムアクセスメモリ(RAM)を実装するために使用される。実装されるRAMは、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、抵抗変化型RAM(ReRAM)、相変化RAM(PCRAM)、又は、他の任意の揮発性若しくは不揮発性RAMであってもよい。メモリ150を実装するのに使用されるDRAMのタイプには、ダブルデータレート(DDR)DRAM、DDR2 DRAM、DDR3 DRAM等が含まれるが、これらに限定されない。
【0017】
様々な実施形態では、コンピューティングシステム100は、コンピュータ、ラップトップ、モバイルデバイス、サーバ、又は、他の様々なタイプのコンピューティングシステム若しくはデバイスであってもよい。コンピューティングシステム100及び/又はSoC105のコンポーネントの数は、実施形態毎に異なっていてもよいことに留意されたい。各コンポーネント/サブコンポーネントの数は、
図1に示す数より多くてもよいし、少なくてもよい。例えば、別の実施形態では、SoC105は、複数のメモリに接続された複数のメモリコントローラを含むことができる。また、コンピューティングシステム100及び/又はSoC105は、
図1に示されていない他のコンポーネントを含むことができることに留意されたい。例えば、別の実施形態では、SoC105は、1つ以上のプロセッサコアを有する中央処理装置(CPU)を含むことができる。また、他の実施形態では、コンピューティングシステム100及びSoC105は、
図1に示されている以外の方法で構成することができる。
【0018】
ここで
図2を参照すると、ページテーブルエントリ(PTE)のフォーマットの例が示されている。
図2の上部のPTEフォーマット205は、一実施形態によるPTEフォーマットを示している。一実施形態では、物理ページアドレスは、ビット39~12に記憶される。一実施形態では、PTEフォーマット205内で物理ページアドレスによって示されるページのサイズは、4KBである。したがって、アドレス指定可能なメモリの4KB論理ページ毎に1つのPTEが存在する。他の実施形態では、PTEフォーマット205内で物理ページアドレスによって示されるページのサイズは、様々な他のサイズであってもよい。
【0019】
書き込み許可フィールド210及び読み出し許可フィールド215は、PTEフォーマット205で示されている。一実施形態では、これらのフィールドの両方が「0」に設定されている場合には、エントリによって示されたページがページ移行状態にあることを示している。例えば、ページ移行状態のPTEフォーマット220が
図2の中央部に示されており、メモリ位置間で移行されるページを示すエントリの書き込み及び読み出し許可フィールドの値が示されている。また、エントリ220は、アドレス225と、PTEフォーマット205に示される他のフィールドと、を含む。他の実施形態では、PTE内でページ移行状態指標を符号化する他の方法が可能であり、企図されることに留意されたい。
【0020】
別の実施形態によるPTEフォーマットの例を、PTEフォーマット235として
図2の下部に示している。PTEフォーマット235では、Tフィールド240を使用して、対応するページが読み出し許可を有しているかどうかを示している。Tフィールド240を用いて読み出し許可をPTEフォーマット235内で符号化すると、書き込み専用ページの移行が可能になる。一実施形態では、Tフィールド240が1に設定されている場合、対応するページが読み出し許可を有している。そうではなく、Tフィールド240が0に設定されている場合、対応するページが読み出し許可を有していない。一実施形態では、所定のページについてR及びWフィールドが0に等しい(すなわち、所定のページがページ移行状態にある)場合には、Tフィールド240が1に設定されている場合に所定のページに対する読み出しが許可される。しかしながら、所定のページについてR及びWフィールドが0に等しい場合には、Tフィールド240が0に設定されている場合に所定のページに対する読み出しがブロックされる。他の実施形態では、
図2に示すものとは異なる他の適切なPTEフォーマットを利用することができることに留意されたい。
【0021】
ここで
図3を参照すると、ページ移行が進行中のシステム300の一実施形態のブロック図が示されている。ページテーブルエントリ330は、ページテーブルブロック305に示されており、エントリ330は、少なくとも1つのページアドレス310と、書き込み許可フィールド315と、読み出し許可フィールド320と、を含む。エントリ330に示すように、書き込み許可フィールド315及び読み出し許可フィールド320の両方を0に設定する。一実施形態では、これは、エントリ330によって示されるページ345Aがページ移行状態にあることを示している。他の実施形態では、対応するページがページ移行状態にあることを符号化する他の方法を利用することができる。ページ移行前に、ページ345Aは、ローカルメモリ340に記憶される。この説明のために、ページ345Aがシステムメモリ350へ移行されていると仮定する。これは、システムメモリ350内の移行ページ345Bとして示されている。他の実施形態では、ページ345Aは、他の位置に移行されてもよい。例えば、ページ345Aは、ローカルメモリ340内の別の位置、又は、システムメモリ350以外の別のメモリに移行されてもよい。
【0022】
一実施形態では、変換要求がエントリ330にヒットした場合には、メモリ要求が読み出し要求である場合に、ページアドレス310への後続のメモリ要求を進行することが許可される。次に、読み出し要求が、ローカルメモリ340のページ345Aに対して実行される。そうではなく、メモリ要求が書き込み要求である場合には、サイレント再試行要求が生成され、要求元のクライアントに送信される。この時点では、書き込み要求が進行することが許可されない。クライアントは、後の時点で書き込み要求を再試行することができ、再試行された書き込み要求に対して別の変換要求が処理されたときにページ移行が完了した場合に、書き込み要求の継続が許可される。
【0023】
ここで
図4を参照すると、ページ移行の完了後のシステム400の一の実施形態のブロック図が示されている。システム400のページテーブルブロック405、ローカルメモリ440及びシステムメモリ450は、アドレス410に現在位置する移行ページ445についてのページ移行動作が完了した後の時点でのシステム300(
図3)のページテーブルブロック305、ローカルメモリ340及びシステムメモリ350の各々を表すことを意図している。したがって、エントリ430の書き込み許可フィールド415及び読み出し許可フィールド420の両方が1に設定され、ページ移行が完了し、書き込み及び読み出し許可が移行ページ445に復元されたことを示している。或いは、移行ページ445が書き込み権限又は読み出し権限しか有していない場合、ページ移行の完了後に、これらのフィールドのうち1つのみが設定される。移行ページ445を対象とする変換要求がページテーブルブロック405によって受信された場合、書き込み又は読み出し許可の何れかがエントリ430で有効になったのを検出したことに応じて、通常の方法で変換要求及び後続のメモリ要求を処理する。
【0024】
ここで
図5を参照すると、メモリ位置間で第1ページを移行する方法500の一実施形態が示されている。説明のために、この実施形態のステップ及び
図6~
図7のステップを順番に示している。しかしながら、説明する方法の様々な実施形態では、説明した要素のうち1つ以上を、同時に実行してもよいし、示した順序と異なる順序で実行してもよいし、完全に省略してもよいことに留意されたい。他の追加要素も必要に応じて実行される。本明細書に記載する様々なシステム又は装置の何れも、方法500を実施するように構成されている。
【0025】
第1ページを第1メモリ位置から第2メモリ位置に移行するという指標が検出される(ブロック505)。一実施形態では、第1メモリ位置は、第1メモリ(例えば、ローカルメモリ)に存在し、第2メモリ位置は、第2メモリ(例えば、グローバルメモリ)に存在する。別の実施形態では、第1メモリ位置及び第2メモリ位置の両方は、単一のメモリ内に位置している。
【0026】
次に、第1ページに対応する第1ページテーブルエントリ(PTE)と、第1PTEのキャッシュされたコピーと、が見つけられる(ブロック510)。第1ページがページ移行状態にあるという指標が、第1PTE及び第1PTEのキャッシュされたコピーに記憶される(ブロック515)。一実施形態では、第1ページの読み出し及び書き込み許可を無効にすることによって、指標が第1PTEで符号化される。他の実施形態では、第1PTE内の移行保留指標を符号化する他の方法を利用することができる。また、第1ページの無効化要求がTLBに送信され、メモリへの保留中の書き込みがフラッシュされる(ブロック520)。メモリへの保留中の書き込みが解決されると、第1ページのページ移行コピープロセスを開始することができる(ブロック522)。
【0027】
第1ページの移行が完了した場合(条件付きブロック525:Yes)、移行保留指標を、第1PTE及び第1PTEのキャッシュされたコピーからクリアする(ブロック530)。また、第1PTEは、第1ページを移行した第2メモリ位置を示すように変更される(ブロック535)。さらに、第1PTEのキャッシュされたコピーについて無効化要求が生成される(ブロック540)。次に、システムは、第1メモリ位置を再利用する前に、無効化完了確認(invalidation completion acknowledgment)を待機する(ブロック542)。ブロック542の後に、方法500は終了する。第1ページの移行が未だ完了していない場合(条件付きブロック525:No)、システムは、ページ移行が完了するまで待機し(ブロック545)、条件付きブロック525に戻る。
【0028】
ここで
図6を参照すると、移行保留指標を用いてPTEにヒットする変換要求を処理する方法600の一実施形態が示されている。プロセッサは、所定の仮想アドレスの変換要求を生成する(ブロック605)。一実施形態では、プロセッサは、少なくとも1つのプロセッサと、MMUと、メモリサブシステムとを含むシステム(例えば、
図1のシステム100)の一部である。また、システムは、実施形態に応じて、任意の数の他のコンポーネントを含むことができる。MMUは、所定の仮想アドレスのPTEが移行保留指標を含むことを検出する(ブロック610)。所定の仮想アドレスを対象とするメモリ要求が読み出し要求である場合(条件付きブロック615:「読み出し」)、対象となる物理ページへの読み出しが許可されるかどうかが判別される(条件付きブロック620)。一実施形態では、対象となる物理ページへの読み出しが許可されるかどうかは、プログラム可能な制御下にあることとしてもよい。対象となる物理ページへの読み出しが許可される場合(条件付きブロック620:Yes)、対象となる物理ページへの読み出し動作の実行が許可される(ブロック635)。ブロック635の後に、方法600は終了する。対象となる物理ページへの読み出しが許可されていない場合(条件付きブロック620:No)、対象となる物理ページへの読み出し動作の実行が抑制され、サイレント再試行障害が生成され、要求元のクライアントに伝達される(ブロック640)。後の時点で、クライアントは、所定の仮想アドレスへの読み出し要求を再試行する(ブロック645)。ブロック645の後に、方法600は終了する。
【0029】
仮想アドレスを対象とするメモリ要求が書き込み要求である場合(条件付きブロック615:「書き込み」)、対象となる物理ページへの書き込み動作の実行が抑制され、サイレント再試行障害が生成され、要求元のクライアントに伝達される(ブロック625)。一実施形態では、サイレント再試行障害は、割り込みの生成又はステータスレジスタの更新を含まないので、「サイレント」と呼ばれる。サイレント再試行障害は、クライアントが書き込み要求を後で再試行する必要があることを示す。後の時点で、クライアントは、仮想アドレスへの書き込み要求を再試行する(ブロック630)。移行が完了すると、新たな位置の物理ページへの書き込み要求を実行する。ブロック630の後に、方法600は終了する。
【0030】
ここで
図7を参照すると、変換要求を処理する方法700の一実施形態が示されている。読み出し及び書き込み許可が無効になっているページテーブルエントリ(PTE)へのヒットが検出される(ブロック705)。一実施形態では、読み出し及び書き込み許可がPTEについて無効にされている場合には、対応する物理ページがメモリ位置間で現在移行中であることを示している。後続のメモリ要求が読み出し要求である場合(条件付きブロック710:「読み出し」)、当該ページに対する読み出し許可が無効にされている場合であっても、対象となる物理ページへの読み出し要求の実行が許可される(ブロック715)。また、システムソフトウェアは、メモリ要求に対する障害の発生を抑制する(ブロック720)。ブロック720の後に、方法700は終了する。後続のメモリ要求が書き込み要求である場合(条件付きブロック710:「書き込み」)、再試行要求がクライアントに送信され、書き込み要求がブロックされる(ブロック725)。後の時点で、クライアントは、書き込み要求を再試行することができる(ブロック730)。ブロック730の後に、方法700は終了する。
【0031】
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、上述した方法及び/又はメカニズムが実施される。プログラム命令は、例えばC言語等の高水準プログラミング言語でハードウェアの挙動を記述する。或いは、Verilog等のハードウェア設計言語(HDL)が使用される。プログラム命令は、非一時的なコンピュータ可読記憶媒体に記憶される。複数のタイプの記憶媒体が利用可能である。記憶媒体は、使用中にコンピューティングシステムによってアクセス可能であり、プログラム命令及び付随するデータを、プログラム実行のためにコンピューティングシステムに提供する。コンピューティングシステムは、少なくとも1つ以上のメモリと、プログラム命令を実行するように構成された1つ以上のプロセッサと、を含む。
【0032】
上述した実施形態は、実施の非限定的な例に過ぎないことを強調する。上記の開示が十分に理解されれば、多くの変形及び修正が当業者に明らかになるであろう。以下の特許請求の範囲が、かかる変形及び修正を全て包含するように解釈されることを意図している。