(57)【要約】本明細書では、メモリページを移行するためのシステム、装置及び方法が開示されている。メモリ位置間の第１ページの移行が開始されているのを検出したことに応じて、第１ページに対応する第１ページテーブルエントリ（ＰＴＥ）が見つけられ、移行保留指標が第１ＰＴＥに記憶される。一実施形態では、移行保留指標は、読み出し及び書き込み許可を無効にすることによって、第１ＰＴＥにおいて符号化される。第１ＰＴＥを対象とする変換要求がＭＭＵによって受信され、変換要求が読み出し要求に対応する場合には、第１ページに対する読み出し動作が許可される。そうではなく、変換要求が書き込み要求に対応する場合には、第１ページに対する書き込み動作がブロックされ、サイレント再試行要求が生成され、要求元のクライアントに伝達される。【選択図】図５
2020518063.tif 000002
【特許請求の範囲】
【請求項１】
メモリサブシステムと、
前記メモリサブシステムに接続されたプロセッサと、を備え、
第１ページが前記メモリサブシステム内の第１メモリ位置から第２メモリ位置に移行されるのを検出することと、
前記第１ページに対応する第１ページテーブルエントリ（ＰＴＥ）を見つけることと、
移行保留指標を前記第１ＰＴＥに記憶することと、
を行うように構成されている、
システム。
【請求項２】
前記システムは、
前記第１ＰＴＥを対象とする変換要求を検出したことと、前記第１ＰＴＥ内の前記移行保留指標を検出したことと、に応じて、
前記変換要求が前記第１ページを対象とする読み出し要求に対応する場合に、前記第１ページに対する読み出し動作が実行されるのを許可することと、
前記変換要求が前記第１ページを対象とする書き込み要求に対応する場合に、前記第１ページに対する書き込み動作が実行されるのを抑制して、サイレント再試行要求を生成することと、
を行うように構成されている、
請求項１のシステム。
【請求項３】
前記システムは、前記サイレント再試行要求を要求元のクライアントに伝達するように構成されている、
請求項２のシステム。
【請求項４】
前記要求元のクライアントは、前記書き込み要求を後の時点で再試行するように構成されている、
請求項３のシステム。
【請求項５】
前記移行保留指標は、前記第１ＰＴＥの読み出し及び書き込み許可を無効にすることによって、前記第１ＰＴＥにおいて符号化される、
請求項１のシステム。
【請求項６】
前記システムは、
前記第１メモリ位置から前記第２メモリ位置への前記第１ページの移行が完了していることに応じて、
前記移行保留指標をクリアすることと、
前記第１ＰＴＥに対応するキャッシュされた変換の無効化要求を生成することと、
を行うように構成されている、
請求項１のシステム。
【請求項７】
前記メモリサブシステムは、第１メモリと第２メモリとを備え、
前記第１メモリ位置は、前記第１メモリ内に存在し、
前記第２メモリ位置は、前記第２メモリ内に存在する、
請求項１のシステム。
【請求項８】
第１ページが第１メモリ位置から第２メモリ位置に移行されるのをコンピューティングシステムによって検出することと、
前記第１ページに対応する第１ページテーブルエントリ（ＰＴＥ）を見つけることと、
移行保留指標を前記第１ＰＴＥに記憶することと、を含む、
方法。
【請求項９】
前記方法は、
前記第１ＰＴＥを対象とする変換要求を検出したことと、前記第１ＰＴＥ内の前記移行保留指標を検出したことと、に応じて、
前記変換要求が前記第１ページを対象とする読み出し要求に対応する場合に、前記第１ページに対する読み出し動作が実行されるのを許可することと、
前記変換要求が前記第１ページを対象とする書き込み要求に対応する場合に、前記第１ページに対する書き込み動作が実行されるのを抑制して、サイレント再試行要求を生成することと、をさらに含む、
請求項８の方法。
【請求項１０】
前記移行保留指標を前記第１ＰＴＥ内で検出したことに応じて、前記サイレント再試行要求を要求元のクライアントに伝達することをさらに含む、
請求項９の方法。
【請求項１１】
前記要求元のクライアントが、前記書き込み要求を後の時点で再試行することをさらに含む、
請求項１０の方法。
【請求項１２】
前記移行保留指標は、前記第１ＰＴＥの読み出し及び書き込み許可を無効にすることによって、前記第１ＰＴＥにおいて符号化される、
請求項８の方法。
【請求項１３】
前記第１メモリ位置から前記第２メモリ位置への前記第１ページの移行が完了していることに応じて、
前記移行保留指標をクリアすることと、
前記第１ＰＴＥに対応するキャッシュされた変換の無効化要求を生成することと、をさらに含む、
請求項８の方法。
【請求項１４】
前記第１メモリ位置は、第１メモリ内に存在し、前記２二メモリ位置は、第２メモリ内に存在する、
請求項８に記載の方法。
【請求項１５】
メモリサブシステムと、
メモリ管理ユニット（ＭＭＵ）と、を備え、
前記ＭＭＵは、
第１ページが前記メモリサブシステム内の第１メモリ位置から第２メモリ位置に移行されるのを検出することと、
前記第１ページに対応する第１ページテーブルエントリ（ＰＴＥ）を見つけることと、
移行保留指標を前記第１ＰＴＥに記憶することと、
を行うように構成されている、
装置。
【請求項１６】
前記ＭＭＵは、
前記第１ＰＴＥを対象とする変換要求を検出したことと、前記第１ＰＴＥ内の前記移行保留指標を検出したことと、に応じて、
前記変換要求が前記第１ページを対象とする読み出し要求に対応する場合に、前記第１ページに対する読み出し動作が実行されるのを許可することと、
前記変換要求が前記第１ページを対象とする書き込み要求に対応する場合に、前記第１ページに対する書き込み動作が実行されるのを抑制して、サイレント再試行要求を生成することと、
を行うように構成されている、
請求項１５の装置。
【請求項１７】
前記移行保留指標を前記第１ＰＴＥ内で検出したことに応じて、前記サイレント再試行要求を要求元のクライアントに伝達するように構成されている、
請求項１６の装置。
【請求項１８】
前記要求元のクライアントが、前記書き込み要求を後の時点で再試行するように構成される、請求項１７の装置。
【請求項１９】
前記移行保留指標は、前記第１ＰＴＥの読み出し及び書き込み許可を無効にすることによって、前記第１ＰＴＥにおいて符号化される、
請求項１５に記載の装置。
【請求項２０】
前記第１メモリ位置から前記第２メモリ位置への前記第１ページの移行が完了していることに応じて、
前記移行保留指標をクリアすることと、
前記第１ＰＴＥに対応するキャッシュされた変換の無効化要求を生成することと、
を行うように構成されている、請求項１５に記載の装置。
【発明の詳細な説明】
【背景技術】
【０００１】
（関連技術の説明）
多くのコンピューティングデバイスは、ソフトウェアプログラムによるデータアクセスを処理するために仮想メモリ技術を使用している。仮想メモリのページ変換メカニズムによって、システムソフトウェアがプロセス又はアプリケーション毎に別々のアドレス空間を生成することができる。これらのアドレス空間は、仮想アドレス空間として知られている。このシステムソフトウェアは、ページングメカニズムを使用して、ページテーブルと総称される階層型アドレス変換テーブルのセットを用いて、物理メモリの個々のページを仮想アドレス空間に選択的にマッピングする。仮想メモリは、中央処理装置（ＣＰＵ）、グラフィックス処理ユニット（ＧＰＵ）、アクセラレーテッドプロセッシングユニット（ＡＰＵ）を含むがこれらに限定されない任意のプロセッサによって実装可能である。
【０００２】
プログラムによってデータがアクセスされると、メモリの「ページ」と呼ばれる、データを含む所定のサイズ（例えば、４キロバイト（ＫＢ））のメモリブロックが、バッキングストレージ（例えば、ディスクドライブ又は半導体メモリ）からコンピューティングデバイス内のメインメモリの利用可能な物理的位置にコピーされる。いくつかのシステムは、メモリに記憶される複数の異なるページサイズを含む。ページの物理的位置をプログラムに管理させるのではなく、コンピューティングデバイス内のメモリ管理ユニットがページの物理的位置を管理する。メモリにアクセスするためにページの物理的位置に基づくアドレス（又は、「物理アドレス」）を使用する代わりに、プログラムは、仮想アドレス空間の仮想アドレスを使用して、メモリにアクセスする。プログラムの観点から、仮想アドレスは、メモリ内のページにデータが記憶される実際の物理アドレス（すなわち、物理的位置）を示し、これにより、仮想アドレスを使用するプログラムによってメモリアクセスが行われる。しかしながら、仮想アドレスは、データが記憶されている物理的位置の物理アドレスに直接マッピングされているわけではない。したがって、メモリ管理ユニットは、ページの物理的位置を管理する一部として、プログラムによって使用される仮想アドレスを、データが実際に位置する物理アドレスに変換する。変換された物理アドレスは、プログラムのメモリアクセスを実行するために使用される。上述した変換を実行するために、メモリ管理ユニットは、メモリに記憶されたページの仮想アドレスから物理アドレスへの変換のセットを含むメモリ内のページテーブルを使用する。
【０００３】
システムは、メモリ位置間でページを移行することがあり、仮想アドレスから物理アドレスへの変換が変更されることがある。場合によっては、システムは、ページを第１メモリから第２メモリに移動させることを決定する。或いは、システムは、ガベージコレクション動作の一部として、単一のメモリ内のページを移動させることができる。しかしながら、プロセスの実行中（例えば、グラフィックスプログラムがレンダリングタスクを実行している）に、ページの移行に混乱が生じる可能性がある。
【０００４】
本明細書に記載される方法及びメカニズムの利点は、添付の図面と併せて以下の説明を参照することによって、より良く理解することができる。
【図面の簡単な説明】
【０００５】
【図１】コンピューティングシステムの一実施形態のブロック図である。
【図２】ページテーブルエントリ（ＰＴＥ）フォーマットの例を示す図である。
【図３】ページ移行が進行中のシステムの一実施形態のブロック図である。
【図４】ページ移行が完了した後のシステムの一実施形態のブロック図である。
【図５】メモリ位置間で第１ページを移行する方法の一実施形態を示す一般化されたフロー図である。
【図６】移行保留指標（migration pending indication）を用いてＰＴＥにヒットする変換要求を処理する方法の一実施形態を示す一般化されたフロー図である。
【図７】変換要求を処理する方法の一実施形態を示す一般化されたフロー図である。
【発明を実施するための形態】
【０００６】
以下の説明では、本明細書に提示される方法及びメカニズムの十分な理解を提供するために、多くの具体的な詳細が示されている。しかしながら、当業者は、様々な実施形態がこれらの具体的な詳細無しに実施され得ることを認識すべきである。いくつかの例では、周知の構造、コンポーネント、信号、コンピュータプログラム命令及び技術は、本明細書に記載されるアプローチを不明瞭にすることを避けるために、詳細に示されていない。説明を簡単且つ明確にするために、図に示される要素が必ずしも縮尺通りに描かれていないことが理解されるであろう。例えば、いくつかの要素の寸法は、他の要素と比較して誇張されている場合がある。
【０００７】
本明細書において、メモリ位置間でページを移行するシステム、装置及び方法が開示される。一実施形態では、システムは、少なくとも１つのプロセッサと、メモリ管理ユニット（ＭＭＵ）と、メモリサブシステムと、を備える。一実施形態では、第１ページがメモリサブシステムの第１メモリ位置から第２メモリ位置に移行されるという指標が検出される。第１ページを移行する前に、第１ページに対応する第１ページテーブルエントリ（ＰＴＥ）を見つける。次に、移行保留指標を第１ＰＴＥに記憶する。一実施形態では、移行保留指標は、第１ページに対する読み出し及び書き込み許可を無効にすることによって、第１ＰＴＥにおいて符号化される。移行保留指標を第１ＰＴＥに記憶した後に、第１ページの移行を開始することが可能である。
【０００８】
一実施形態では、第１ＰＴＥを対象とする変換要求がＭＭＵによって受信され、移行保留指標が第１ＰＴＥにおいて符号化される。変換要求が読み出し要求に対応する場合、第１ページに対する読み出し動作の実行を可能にする。そうでなければ、変換要求が第１ページを対象とする書き込み要求に対応する場合、第１ページへの書き込み動作の実行が抑制され、サイレント再試行要求が生成され、要求元のクライアントに伝達される。一実施形態では、サイレント再試行は、割り込みの生成又は状態レジスタの更新を含まないので、「サイレント」と呼ばれる。したがって、要求元のクライアントは、後の時点で書き込み要求を再試行するように構成されている。
【０００９】
ここで図１を参照すると、コンピューティングシステム１００の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステム１００は、中央処理装置（ＣＰＵ）チップセット１４０を介してシステムメモリ１５０に接続されたシステムオンチップ（ＳｏＣ）１０５を備える。また、ＳｏＣ１０５は、集積回路（ＩＣ）と呼ぶこともできる。一実施形態では、ＳｏＣ１０５は、少なくとも入出力（Ｉ／Ｏ）インタフェース１５５と、ファブリック１２０と、グラフィックス処理ユニット（ＧＰＵ）１３０と、ローカルメモリ１１０と、を備える。また、ＳｏＣ１０５は、図面を不明瞭にすることを避けるために、図１に示されていない他のコンポーネントを備えることができる。別の実施形態では、ＧＰＵ１３０は、別のタイプの処理ユニット（例えば、中央処理装置（ＣＰＵ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、デジタル信号プロセッサ（ＤＳＰ））であってもよい。
【００１０】
ＧＰＵ１３０は、少なくともトランスレーションルックアサイドバッファ（ＴＬＢ）コンプレックス（複合体）１３５と、グラフィックス又は汎用処理に使用される任意の数及びタイプの計算ユニットを表す計算ユニット１４５Ａ〜１４５Ｎと、を備える。ＧＰＵ１３０は、ファブリック１２０を介してローカルメモリ１１０に接続されている。一実施形態では、ローカルメモリ１１０は、高帯域幅メモリ（ＨＢＭ）を使用して実装される。一実施形態では、ＧＰＵ１３０は、描画コマンド、ピクセル動作、幾何学的計算、及び、画像をディスプレイにレンダリングするための他の動作等のグラフィックスパイプライン動作を実行するように構成されている。別の実施形態では、ＧＰＵ１３０は、グラフィックスに関連しない動作を実行するように構成されている。さらなる実施形態では、ＧＰＵ１３０は、グラフィックス動作及び非グラフィックス関連動作の両方を実行するように構成されている。
【００１１】
一実施形態では、ＧＰＵ１３０は、ＴＬＢを使用して、これらのデバイス上で実行される異なるプロセスに割り当てられる仮想アドレスの物理アドレスへのマッピングをキャッシュする。これらのＴＬＢは、それぞれ計算ユニット１４５Ａ〜１４５ＮではＬ１  ＴＬＢ１７０Ａ〜１７０Ｎとして示されており、ＴＬＢコンプレックス１３５ではＬ２  ＴＬＢ１６０として示されている。また、ＴＬＢコンプレックス１３５は、テーブルウォーカー１６５を備える。一般的に、メモリ管理ユニットは、１つ以上のＴＬＢと、テーブルウォーキングロジックと、障害ハンドラと、実装に応じた回路と、を備えることができる。いくつかの実施形態では、命令又はデータについてＧＰＵ１３０内に異なるＴＬＢを実装することができる。例えば、比較的小さく高速なＬ１  ＴＬＢは、ルックアップを実行するためにより多くのサイクルを必要とする、より大きなＬ２  ＴＬＢによってバックアップされる。Ｌ２  ＴＬＢによって実行されるルックアップは、ページテーブル１２５Ａ〜１２５Ｂへのテーブルウォークに比べて比較的高速である。実施形態に応じて、ページテーブル１２５Ａ〜１２５Ｂを、ローカルメモリ１１０、システムメモリ１５０に配置することができ、又は、ページテーブル１２５Ａ〜１２５Ｂの一部を、ローカルメモリ１１０及びシステムメモリ１５０に配置することができる。ＴＬＢコンプレックスのいくつかの実施形態は、命令ＴＬＢ（ＩＴＬＢ）と、レベル１データＴＬＢ（Ｌ１  ＤＴＬＢ）と、レベル２データＴＬＢ（Ｌ２  ＤＴＬＢ）と、を含む。ＴＬＢコンプレックスの他の実施形態は、ＴＬＢの他の構成及び／又はレベルを含むことができる。
【００１２】
ＧＰＵ１３０内のロード命令又はストア命令のアドレス変換は、仮想アドレス変換の要求をＬ１  ＴＬＢにポストすることによって実行することができる。Ｌ１  ＴＬＢは、仮想アドレスがＬ１  ＴＬＢのエントリで見つかった場合に、物理アドレスを返す。仮想アドレス変換の要求がＬ１  ＴＬＢでミスした場合、当該要求がＬ２  ＴＬＢにポストされる。仮想アドレス変換の要求がＬ２  ＴＬＢでミスした場合、当該要求に対してページテーブルウォークが実行される。ページテーブルウォークは、１つ以上のルックアップをページテーブル階層にもたらし得る。
【００１３】
本明細書において、システムメモリ１５０からローカルメモリ１１０へ又はその逆にページを移動させるプロセスは、「ページ移行」と呼ばれる。また、本明細書において、システムメモリ１５０内でページを移動させること、又は、ローカルメモリ１１０内でページを移動させることも「ページ移行」と呼ばれる。本明細書において、ローカルメモリ１１０及びシステムメモリ１５０の組み合わせを「メモリサブシステム」と呼ぶことができる。或いは、本明細書において、ローカルメモリ１１０又はシステムメモリ１５０を「メモリサブシステム」と呼ぶことができる。システム１００は、所定のページがメモリサブシステム内の位置間で移動する場合に、当該所定のページがページ移行状態にあるという指標を生成するように構成されている。これにより、他の操作をシームレスに継続することができる。一実施形態では、システム１００は、所定のページがページ移行状態にある場合に、当該所定のページのページテーブルエントリを変更し、読み出し及び書き込み特権の両方をオフにするように構成されている。この特定の組み合わせ（読み出し及び書き込み特権の無効）の意味は、所定のページがページ移行状態であることを示すように変更されている。他の実施形態では、所定のページがページ移行状態にあることを符号化する他の方法が可能であり、企図される。
【００１４】
本明細書に使用される場合、「ページ」という用語は、仮想メモリの固定長の連続ブロックとして定義される。また、「ページ」は、システム１００によるメモリ管理に利用されるデータの単位として定義される。ページサイズは実施形態毎に異なり、単一の実施形態では複数の異なるページサイズを利用することができる。「メモリページ」及び「ページ」という用語は、任意のサイズのメモリ領域を表すのを意図していることを理解されたい。
【００１５】
一実施形態では、メモリ位置間の第１ページの移行が開始されていることを検出したことに応じて、第１ページに対応する第１ページテーブルエントリ（ＰＴＥ）が見つけられ、移行保留指標が第１ＰＴＥに記憶される。一実施形態では、移行保留指標は、読み出し及び書き込み許可を無効にすることによって、第１ＰＴＥにおいて符号化される。移行保留指標が第１ＰＴＥにおいて符号化され、変換要求が読み出し要求に対応している間に、第１ＰＴＥを対象とする変換要求がＭＭＵによって受信される場合には、第１ページに対する読み出し動作が許可される。そうでなければ、変換要求が書き込み要求に対応する場合に、第１ページヘの書き込み動作が抑制され、サイレント再試行要求が生成され、要求元のクライアントに伝達される。次に、要求元のクライアントは、後の時点で書き込み要求を再試行することができる。別の実施形態では、変換要求が読み出し要求に対応する場合に、読み出し要求がブロックされ、読み出し動作に関する再試行要求が生成される。
【００１６】
Ｉ／Ｏインタフェース１５５は、ファブリック１２０及びＣＰＵチップセット１４０に接続されており、任意の数及びタイプのインタフェース（例えば、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）バス、ＰＣＩ‐Ｅｘｔｅｎｄｅｄ（ＰＣＩ‐Ｘ）、ＰＣＩＥ（ＰＣＩ  Ｅｘｐｒｅｓｓ）バス、ギガビットＥｔｈｅｒｎｅｔ（登録商標）（ＧＢＥ）バス、ユニバーサルシリアルバス（ＵＳＢ））を表している。ＳｏＣ１０５は、ＣＰＵチップセット１４０を介してメモリ１５０に接続されており、メモリ１５０は、１つ以上のメモリモジュールを含む。各メモリモジュールは、それに搭載された１つ以上のメモリデバイスを含む。いくつかの実施形態では、メモリ１５０は、ＳｏＣ１０５も搭載されたマザーボード、又は、他のキャリアに搭載された１つ以上のメモリデバイスを含む。一実施形態では、メモリ１５０は、動作中にＳｏＣ１０５と共に用いられるランダムアクセスメモリ（ＲＡＭ）を実装するために使用される。実装されるＲＡＭは、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、抵抗変化型ＲＡＭ（ＲｅＲＡＭ）、相変化ＲＡＭ（ＰＣＲＡＭ）、又は、他の任意の揮発性若しくは不揮発性ＲＡＭであってもよい。メモリ１５０を実装するのに使用されるＤＲＡＭのタイプには、ダブルデータレート（ＤＤＲ）ＤＲＡＭ、ＤＤＲ２  ＤＲＡＭ、ＤＤＲ３  ＤＲＡＭ等が含まれるが、これらに限定されない。
【００１７】
様々な実施形態では、コンピューティングシステム１００は、コンピュータ、ラップトップ、モバイルデバイス、サーバ、又は、他の様々なタイプのコンピューティングシステム若しくはデバイスであってもよい。コンピューティングシステム１００及び／又はＳｏＣ１０５のコンポーネントの数は、実施形態毎に異なっていてもよいことに留意されたい。各コンポーネント／サブコンポーネントの数は、図１に示す数より多くてもよいし、少なくてもよい。例えば、別の実施形態では、ＳｏＣ１０５は、複数のメモリに接続された複数のメモリコントローラを含むことができる。また、コンピューティングシステム１００及び／又はＳｏＣ１０５は、図１に示されていない他のコンポーネントを含むことができることに留意されたい。例えば、別の実施形態では、ＳｏＣ１０５は、１つ以上のプロセッサコアを有する中央処理装置（ＣＰＵ）を含むことができる。また、他の実施形態では、コンピューティングシステム１００及びＳｏＣ１０５は、図１に示されている以外の方法で構成することができる。
【００１８】
ここで図２を参照すると、ページテーブルエントリ（ＰＴＥ）のフォーマットの例が示されている。図２の上部のＰＴＥフォーマット２０５は、一実施形態によるＰＴＥフォーマットを示している。一実施形態では、物理ページアドレスは、ビット３９〜１２に記憶される。一実施形態では、ＰＴＥフォーマット２０５内で物理ページアドレスによって示されるページのサイズは、４ＫＢである。したがって、アドレス指定可能なメモリの４ＫＢ論理ページ毎に１つのＰＴＥが存在する。他の実施形態では、ＰＴＥフォーマット２０５内で物理ページアドレスによって示されるページのサイズは、様々な他のサイズであってもよい。
【００１９】
書き込み許可フィールド２１０及び読み出し許可フィールド２１５は、ＰＴＥフォーマット２０５で示されている。一実施形態では、これらのフィールドの両方が「０」に設定されている場合には、エントリによって示されたページがページ移行状態にあることを示している。例えば、ページ移行状態のＰＴＥフォーマット２２０が図２の中央部に示されており、メモリ位置間で移行されるページを示すエントリの書き込み及び読み出し許可フィールドの値が示されている。また、エントリ２２０は、アドレス２２５と、ＰＴＥフォーマット２０５に示される他のフィールドと、を含む。他の実施形態では、ＰＴＥ内でページ移行状態指標を符号化する他の方法が可能であり、企図されることに留意されたい。
【００２０】
別の実施形態によるＰＴＥフォーマットの例を、ＰＴＥフォーマット２３５として図２の下部に示している。ＰＴＥフォーマット２３５では、Ｔフィールド２４０を使用して、対応するページが読み出し許可を有しているかどうかを示している。Ｔフィールド２４０を用いて読み出し許可をＰＴＥフォーマット２３５内で符号化すると、書き込み専用ページの移行が可能になる。一実施形態では、Ｔフィールド２４０が１に設定されている場合、対応するページが読み出し許可を有している。そうではなく、Ｔフィールド２４０が０に設定されている場合、対応するページが読み出し許可を有していない。一実施形態では、所定のページについてＲ及びＷフィールドが０に等しい（すなわち、所定のページがページ移行状態にある）場合には、Ｔフィールド２４０が１に設定されている場合に所定のページに対する読み出しが許可される。しかしながら、所定のページについてＲ及びＷフィールドが０に等しい場合には、Ｔフィールド２４０が０に設定されている場合に所定のページに対する読み出しがブロックされる。他の実施形態では、図２に示すものとは異なる他の適切なＰＴＥフォーマットを利用することができることに留意されたい。
【００２１】
ここで図３を参照すると、ページ移行が進行中のシステム３００の一実施形態のブロック図が示されている。ページテーブルエントリ３３０は、ページテーブルブロック３０５に示されており、エントリ３３０は、少なくとも１つのページアドレス３１０と、書き込み許可フィールド３１５と、読み出し許可フィールド３２０と、を含む。エントリ３３０に示すように、書き込み許可フィールド３１５及び読み出し許可フィールド３２０の両方を０に設定する。一実施形態では、これは、エントリ３３０によって示されるページ３４５Ａがページ移行状態にあることを示している。他の実施形態では、対応するページがページ移行状態にあることを符号化する他の方法を利用することができる。ページ移行前に、ページ３４５Ａは、ローカルメモリ３４０に記憶される。この説明のために、ページ３４５Ａがシステムメモリ３５０へ移行されていると仮定する。これは、システムメモリ３５０内の移行ページ３４５Ｂとして示されている。他の実施形態では、ページ３４５Ａは、他の位置に移行されてもよい。例えば、ページ３４５Ａは、ローカルメモリ３４０内の別の位置、又は、システムメモリ３５０以外の別のメモリに移行されてもよい。
【００２２】
一実施形態では、変換要求がエントリ３３０にヒットした場合には、メモリ要求が読み出し要求である場合に、ページアドレス３１０への後続のメモリ要求を進行することが許可される。次に、読み出し要求が、ローカルメモリ３４０のページ３４５Ａに対して実行される。そうではなく、メモリ要求が書き込み要求である場合には、サイレント再試行要求が生成され、要求元のクライアントに送信される。この時点では、書き込み要求が進行することが許可されない。クライアントは、後の時点で書き込み要求を再試行することができ、再試行された書き込み要求に対して別の変換要求が処理されたときにページ移行が完了した場合に、書き込み要求の継続が許可される。
【００２３】
ここで図４を参照すると、ページ移行の完了後のシステム４００の一の実施形態のブロック図が示されている。システム４００のページテーブルブロック４０５、ローカルメモリ４４０及びシステムメモリ４５０は、アドレス４１０に現在位置する移行ページ４４５についてのページ移行動作が完了した後の時点でのシステム３００（図３）のページテーブルブロック３０５、ローカルメモリ３４０及びシステムメモリ３５０の各々を表すことを意図している。したがって、エントリ４３０の書き込み許可フィールド４１５及び読み出し許可フィールド４２０の両方が１に設定され、ページ移行が完了し、書き込み及び読み出し許可が移行ページ４４５に復元されたことを示している。或いは、移行ページ４４５が書き込み権限又は読み出し権限しか有していない場合、ページ移行の完了後に、これらのフィールドのうち１つのみが設定される。移行ページ４４５を対象とする変換要求がページテーブルブロック４０５によって受信された場合、書き込み又は読み出し許可の何れかがエントリ４３０で有効になったのを検出したことに応じて、通常の方法で変換要求及び後続のメモリ要求を処理する。
【００２４】
ここで図５を参照すると、メモリ位置間で第１ページを移行する方法５００の一実施形態が示されている。説明のために、この実施形態のステップ及び図６〜図７のステップを順番に示している。しかしながら、説明する方法の様々な実施形態では、説明した要素のうち１つ以上を、同時に実行してもよいし、示した順序と異なる順序で実行してもよいし、完全に省略してもよいことに留意されたい。他の追加要素も必要に応じて実行される。本明細書に記載する様々なシステム又は装置の何れも、方法５００を実施するように構成されている。
【００２５】
第１ページを第１メモリ位置から第２メモリ位置に移行するという指標が検出される（ブロック５０５）。一実施形態では、第１メモリ位置は、第１メモリ（例えば、ローカルメモリ）に存在し、第２メモリ位置は、第２メモリ（例えば、グローバルメモリ）に存在する。別の実施形態では、第１メモリ位置及び第２メモリ位置の両方は、単一のメモリ内に位置している。
【００２６】
次に、第１ページに対応する第１ページテーブルエントリ（ＰＴＥ）と、第１ＰＴＥのキャッシュされたコピーと、が見つけられる（ブロック５１０）。第１ページがページ移行状態にあるという指標が、第１ＰＴＥ及び第１ＰＴＥのキャッシュされたコピーに記憶される（ブロック５１５）。一実施形態では、第１ページの読み出し及び書き込み許可を無効にすることによって、指標が第１ＰＴＥで符号化される。他の実施形態では、第１ＰＴＥ内の移行保留指標を符号化する他の方法を利用することができる。また、第１ページの無効化要求がＴＬＢに送信され、メモリへの保留中の書き込みがフラッシュされる（ブロック５２０）。メモリへの保留中の書き込みが解決されると、第１ページのページ移行コピープロセスを開始することができる（ブロック５２２）。
【００２７】
第１ページの移行が完了した場合（条件付きブロック５２５：Ｙｅｓ）、移行保留指標を、第１ＰＴＥ及び第１ＰＴＥのキャッシュされたコピーからクリアする（ブロック５３０）。また、第１ＰＴＥは、第１ページを移行した第２メモリ位置を示すように変更される（ブロック５３５）。さらに、第１ＰＴＥのキャッシュされたコピーについて無効化要求が生成される（ブロック５４０）。次に、システムは、第１メモリ位置を再利用する前に、無効化完了確認（invalidation completion acknowledgment）を待機する（ブロック５４２）。ブロック５４２の後に、方法５００は終了する。第１ページの移行が未だ完了していない場合（条件付きブロック５２５：Ｎｏ）、システムは、ページ移行が完了するまで待機し（ブロック５４５）、条件付きブロック５２５に戻る。
【００２８】
ここで図６を参照すると、移行保留指標を用いてＰＴＥにヒットする変換要求を処理する方法６００の一実施形態が示されている。プロセッサは、所定の仮想アドレスの変換要求を生成する（ブロック６０５）。一実施形態では、プロセッサは、少なくとも１つのプロセッサと、ＭＭＵと、メモリサブシステムとを含むシステム（例えば、図１のシステム１００）の一部である。また、システムは、実施形態に応じて、任意の数の他のコンポーネントを含むことができる。ＭＭＵは、所定の仮想アドレスのＰＴＥが移行保留指標を含むことを検出する（ブロック６１０）。所定の仮想アドレスを対象とするメモリ要求が読み出し要求である場合（条件付きブロック６１５：「読み出し」）、対象となる物理ページへの読み出しが許可されるかどうかが判別される（条件付きブロック６２０）。一実施形態では、対象となる物理ページへの読み出しが許可されるかどうかは、プログラム可能な制御下にあることとしてもよい。対象となる物理ページへの読み出しが許可される場合（条件付きブロック６２０：Ｙｅｓ）、対象となる物理ページへの読み出し動作の実行が許可される（ブロック６３５）。ブロック６３５の後に、方法６００は終了する。対象となる物理ページへの読み出しが許可されていない場合（条件付きブロック６２０：Ｎｏ）、対象となる物理ページへの読み出し動作の実行が抑制され、サイレント再試行障害が生成され、要求元のクライアントに伝達される（ブロック６４０）。後の時点で、クライアントは、所定の仮想アドレスへの読み出し要求を再試行する（ブロック６４５）。ブロック６４５の後に、方法６００は終了する。
【００２９】
仮想アドレスを対象とするメモリ要求が書き込み要求である場合（条件付きブロック６１５：「書き込み」）、対象となる物理ページへの書き込み動作の実行が抑制され、サイレント再試行障害が生成され、要求元のクライアントに伝達される（ブロック６２５）。一実施形態では、サイレント再試行障害は、割り込みの生成又はステータスレジスタの更新を含まないので、「サイレント」と呼ばれる。サイレント再試行障害は、クライアントが書き込み要求を後で再試行する必要があることを示す。後の時点で、クライアントは、仮想アドレスへの書き込み要求を再試行する（ブロック６３０）。移行が完了すると、新たな位置の物理ページへの書き込み要求を実行する。ブロック６３０の後に、方法６００は終了する。
【００３０】
ここで図７を参照すると、変換要求を処理する方法７００の一実施形態が示されている。読み出し及び書き込み許可が無効になっているページテーブルエントリ（ＰＴＥ）へのヒットが検出される（ブロック７０５）。一実施形態では、読み出し及び書き込み許可がＰＴＥについて無効にされている場合には、対応する物理ページがメモリ位置間で現在移行中であることを示している。後続のメモリ要求が読み出し要求である場合（条件付きブロック７１０：「読み出し」）、当該ページに対する読み出し許可が無効にされている場合であっても、対象となる物理ページへの読み出し要求の実行が許可される（ブロック７１５）。また、システムソフトウェアは、メモリ要求に対する障害の発生を抑制する（ブロック７２０）。ブロック７２０の後に、方法７００は終了する。後続のメモリ要求が書き込み要求である場合（条件付きブロック７１０：「書き込み」）、再試行要求がクライアントに送信され、書き込み要求がブロックされる（ブロック７２５）。後の時点で、クライアントは、書き込み要求を再試行することができる（ブロック７３０）。ブロック７３０の後に、方法７００は終了する。
【００３１】
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、上述した方法及び／又はメカニズムが実施される。プログラム命令は、例えばＣ言語等の高水準プログラミング言語でハードウェアの挙動を記述する。或いは、Ｖｅｒｉｌｏｇ等のハードウェア設計言語（ＨＤＬ）が使用される。プログラム命令は、非一時的なコンピュータ可読記憶媒体に記憶される。複数のタイプの記憶媒体が利用可能である。記憶媒体は、使用中にコンピューティングシステムによってアクセス可能であり、プログラム命令及び付随するデータを、プログラム実行のためにコンピューティングシステムに提供する。コンピューティングシステムは、少なくとも１つ以上のメモリと、プログラム命令を実行するように構成された１つ以上のプロセッサと、を含む。
【００３２】
上述した実施形態は、実施の非限定的な例に過ぎないことを強調する。上記の開示が十分に理解されれば、多くの変形及び修正が当業者に明らかになるであろう。以下の特許請求の範囲が、かかる変形及び修正を全て包含するように解釈されることを意図している。
【図１】
2020518063.tif 000003
【図２】
2020518063.tif 000004
【図３】
2020518063.tif 000005
【図４】
2020518063.tif 000006
【図５】
2020518063.tif 000007
【図６】
2020518063.tif 000008
【図７】
2020518063.tif 000009
【国際調査報告】
2020518063.tif 000010
2020518063.tif 000011
2020518063.tif 000012