(57)【要約】記載された実施形態は、２つ以上のトランスレーションルックアサイドバッファ（ＴＬＢ）を有するコンピューティングデバイスを含む。動作中、コンピューティングデバイスは、ページテーブルウォーク中にページテーブルエントリから取得された仮想アドレスから物理アドレスへの変換及びメタデータに基づいて、ＴＬＢのエントリを更新する。次に、コンピューティングデバイスは、リース長の式に基づいて、ＴＬＢのエントリのリース長を計算する。次いで、コンピューティングデバイスは、ＴＬＢのエントリについて、リース値をリース長に設定する。ここで、リース値は、ＴＬＢのエントリのリースが期限切れになるまでの時間を表しており、ＴＬＢのエントリは、関連するリースが期限切れになると無効になる。次に、コンピューティングデバイスは、リース値を使用して、ＴＬＢのエントリからの情報を使用して実行可能な動作を制御する。【選択図】図１
2019512815.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングデバイス内でトランスレーションルックアサイドバッファ（ＴＬＢ）のエントリを処理する方法であって、
ページテーブルウォーク中にページテーブルエントリから取得された仮想アドレスから物理アドレスへの変換及びメタデータに基づいて、前記ＴＬＢのエントリを更新することと、
リース長の式に基づいて、前記ＴＬＢのエントリのリース長を計算することと、
前記ＴＬＢのエントリについて、リース値を前記リース長に設定することであって、前記リース値は、前記ＴＬＢのエントリのリースが期限切れになるまでの時間を表し、前記ＴＬＢのエントリは、関連するリースが期限切れになると無効になる、ことと、
前記リース値を使用して、前記ＴＬＢのエントリからの情報を使用して実行可能な動作を制御することと、を含む、
方法。
【請求項２】
前記ＴＬＢエントリの延長カウンタを維持することであって、前記延長カウンタは、前記ＴＬＢのエントリのリース延長数を表す値を記憶し、前記リースは、期限切れになり、別のリースが前記ＴＬＢエントリに設定されると、延長される、ことをさらに含み、
前記リース長の式は、少なくとも前記延長カウンタの関数である、
請求項１の方法。
【請求項３】
前記リース長の式は、前記延長カウンタと基準リース値との乗算を含む、
請求項２の方法。
【請求項４】
前記リース長の式は、前記延長カウンタの指数関数又は一次関数を含む、
請求項２の方法。
【請求項５】
前記延長カウンタを指定された値に設定する要求を、前記コンピューティングデバイス内のエンティティから受信することと、
前記延長カウンタを前記指定された値に設定することであって、前記コンピューティングデバイス内のエンティティが、前記リース長の式に基づいて計算されたリース長を指定するのを可能にする、ことと、をさらに含む、
請求項２の方法。
【請求項６】
前記延長カウンタを維持することは、前記延長カウンタをページテーブル内で維持することを含む、
請求項２の方法。
【請求項７】
１つ以上のランタイム条件に基づいて、前記リース長が計算されるのを決定することであって、前記ランタイム条件は、リース長が所望のリース長よりも長い又は短いという１つ以上の指標を含む、ことをさらに含む、
請求項１の方法。
【請求項８】
前記リース長が所望のリース期間よりも長い又は短いという指標は、
期限切れのＴＬＢエントリに基づいてＴＬＢミスによって生じたページテーブルウォークの数と、ＴＬＢシュートダウンの数と、のうち１つ以上を含む、
請求項７の方法。
【請求項９】
前記ページテーブルエントリが前記ページテーブルにおいて変更されるのを決定することと、
前記ページテーブルエントリに関連するＴＬＢエントリの全てのリースが期限切れであり、これにより、前記ページテーブルエントリに関連する何れのＴＬＢエントリも有効ではないと判断することと、
ＴＬＢシュートダウンを実行することなく、前記ページテーブルにおいて前記ページテーブルエントリを変更することであって、前記ＴＬＢシュートダウンは、前記コンピューティングデバイス内の１つ以上のＴＬＢに対して、前記ページテーブルエントリに関連付けられた対応するＴＬＢエントリを無効化させることを含む、ことと、をさらに含む、
請求項１の方法。
【請求項１０】
前記ページテーブルエントリが前記ページテーブルにおいて変更されるのを決定することと、
前記ページテーブルエントリに関連するＴＬＢエントリの少なくとも１つのリースが期限切れではなく、これにより、少なくとも１つのＴＬＢが前記ページテーブルエントリに基づく情報と共に有効なエントリを現在有していると判断することと、
ＴＬＢシュートダウンを実行することであって、前記ＴＬＢシュートダウンは、前記コンピューティングデバイス内の１つ以上のＴＬＢに対して、前記ページテーブルエントリに関連付けられた対応するＴＬＢエントリを無効化させることを含む、ことと、
前記ページテーブルエントリを前記ページテーブルにおいて変更することと、をさらに含む、
請求項１の方法。
【請求項１１】
前記リース値を使用して、前記ＴＬＢのエントリからの情報を使用して実行可能な動作を制御することは、
物理アドレスに変換される仮想アドレスを取得することと、
前記ＴＬＢのエントリが対応する仮想アドレスから物理アドレスへの変換を含むことを判断することと、
前記ＴＬＢのエントリのリース値をチェックして、前記エントリのリースが期限切れであるかどうかを判断することと、
前記リースが期限切れの場合、ページテーブルウォークを実行して、前記仮想アドレスから物理アドレスへの変換又は前記メタデータを取得することと、
前記リースが期限切れではない場合、前記ＴＬＢのエントリから、前記仮想アドレスから物理アドレスへの変換又は前記メタデータを取得することと、を含む、
請求項１の方法。
【請求項１２】
コンピューティングデバイスであって、
コアを備えるプロセッサと、
ページテーブルを備えるメモリと、
前記コア内のトランスレーションルックアサイドバッファ（ＴＬＢ）と、を備え、
前記プロセッサは、
ページテーブルウォーク中にページテーブルエントリから取得された仮想アドレスから物理アドレスへの変換及びメタデータに基づいて、前記ＴＬＢのエントリを更新することと、
リース長の式に基づいて、前記ＴＬＢのエントリのリース長を計算することと、
前記ＴＬＢのエントリについて、リース値を前記リース長に設定することであって、前記リース値は、前記ＴＬＢのエントリのリースが期限切れになるまでの時間を表し、前記ＴＬＢのエントリは、関連するリースが期限切れになると無効になる、ことと、
前記リース値を使用して、前記ＴＬＢのエントリからの情報を使用して実行可能な動作を制御することと、を行うように構成されている。
コンピューティングデバイス。
【請求項１３】
前記プロセッサは、
前記ＴＬＢエントリの延長カウンタを維持することであって、前記延長カウンタは、前記ＴＬＢのエントリのリース延長数を表す値を記憶し、前記リースは、期限切れになり、別のリースが前記ＴＬＢエントリに設定されると、延長される、ことを行うように構成されており、
前記リース長の式は、少なくとも前記延長カウンタの関数である、
請求項１２のコンピューティングデバイス。
【請求項１４】
前記リース長の式は、前記延長カウンタと基準リース値との乗算を含む、
請求項１３のコンピューティングデバイス。
【請求項１５】
前記リース長の式は、前記延長カウンタの指数関数又は一次関数を含む、
請求項１３のコンピューティングデバイス。
【請求項１６】
前記プロセッサは、
前記延長カウンタを指定された値に設定する要求を、前記コンピューティングデバイス内のエンティティから受信することと、
前記延長カウンタを前記指定された値に設定することであって、前記コンピューティングデバイス内のエンティティが、前記リース長の式に基づいて計算されたリース長を指定するのを可能にする、ことと、を行うように構成されている、
請求項１３のコンピューティングデバイス。
【請求項１７】
前記プロセッサは、
前記延長カウンタをページテーブル内で維持するように構成されている、
請求項１３のコンピューティングデバイス。
【請求項１８】
前記プロセッサは、
１つ以上のランタイム条件に基づいて、前記リース長が計算されるのを決定することであって、前記ランタイム条件は、リース長が所望のリース長よりも長い又は短いという１つ以上の指標を含む、ことを行うように構成されている、
請求項１２のコンピューティングデバイス。
【請求項１９】
前記リース長が所望のリース期間よりも長い又は短いという指標は、
期限切れのＴＬＢエントリに基づいてＴＬＢミスによって生じたページテーブルウォークの数と、ＴＬＢシュートダウンの数と、のうち１つ以上を含む、
請求項１８のコンピューティングデバイス。
【請求項２０】
前記プロセッサは、
前記ページテーブルエントリが前記ページテーブルにおいて変更されるのを決定することと、
前記ページテーブルエントリに関連するＴＬＢエントリの全てのリースが期限切れであり、これにより、前記ページテーブルエントリに関連する何れのＴＬＢエントリも有効ではないと判断することと、
ＴＬＢシュートダウンを実行することなく、前記ページテーブルにおいて前記ページテーブルエントリを変更することであって、前記ＴＬＢシュートダウンは、前記コンピューティングデバイスの１つ以上のＴＬＢに対して、前記ページテーブルエントリに関連付けられた対応するＴＬＢエントリを無効化させることを含む、ことと、を行うように構成されている、
請求項１２のコンピューティングデバイス。
【請求項２１】
前記プロセッサは、
前記ページテーブルエントリが前記ページテーブルにおいて変更されるのを決定することと、
前記ページテーブルエントリに関連するＴＬＢエントリの少なくとも１つのリースが期限切れではなく、これにより、少なくとも１つのＴＬＢが前記ページテーブルエントリに基づく情報と共に有効なエントリを現在有していると判断することと、
ＴＬＢシュートダウンを実行することであって、前記ＴＬＢシュートダウンは、前記コンピューティングデバイス内の１つ以上のＴＬＢに対して、前記ページテーブルエントリに関連付けられた対応するＴＬＢエントリを無効化させることを含む、ことと、
前記ページテーブルエントリを前記ページテーブルにおいて変更することと、を行うように構成されている、
請求項１２のコンピューティングデバイス。
【請求項２２】
前記リース値を使用して、前記ＴＬＢのエントリからの情報を使用して実行可能な動作を制御する場合、前記プロセッサは、
物理アドレスに変換される仮想アドレスを取得することと、
前記ＴＬＢのエントリが対応する仮想アドレスから物理アドレスへの変換を含むことを判断することと、
前記ＴＬＢのエントリのリース値をチェックして、前記エントリのリースが期限切れであるかどうかを判断することと、
前記リースが期限切れの場合、ページテーブルウォークを実行して、前記仮想アドレスから物理アドレスへの変換又は前記メタデータを取得することと、
前記リースが期限切れではない場合、前記ＴＬＢのエントリから、前記仮想アドレスから物理アドレスへの変換又は前記メタデータを取得することと、を行うように構成されている、
請求項１２のコンピューティングデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
記載される実施形態は、コンピューティングデバイスに関する。より具体的には、記載される実施形態は、トランスレーションルックアサイドバッファ内のエントリに対するリースの適応拡張に関する。
【背景技術】
【０００２】
多数の最新のコンピューティングデバイスは、コンピューティングデバイスで実行されるプログラム（例えば、アプリケーション、オペレーティングシステム、デバイスドライバ等）によるデータアクセスを処理するための仮想メモリ技術を使用している。このようなコンピューティングデバイスでは、プログラムによってデータがアクセスされると、データを含む所定のサイズ（例えば、４ｋＢ）のメモリブロックであって、メモリの「ページ」と呼ばれるメモリブロックが、大容量ストレージ（例えば、ディスクドライブ又は半導体メモリ）からコンピューティングデバイス内のメインメモリにおける利用可能な物理的位置にコピーされ、又は、（例えば、計算操作等から生成された結果を記憶するために）メモリ内に新たに生成される。プログラムがメモリ内のページの物理的位置を追跡することを要求されないようにするために、コンピューティングデバイス内のプロセッサは、プログラムのページの物理的位置を追跡する。このようなコンピューティングデバイスでは、プログラムは、ページの物理的位置に基づくアドレス（又は「物理アドレス」）を使用してメモリにアクセスするのではなく、対応するプログラムに対して固有のローカルアドレス空間である「仮想アドレス空間」内の「仮想アドレス」を使用してメモリにアクセスする。プログラムの観点から、仮想アドレスは、メモリのページ内にデータが記憶される実際の物理的位置を示しており、これにより、プログラムは、仮想アドレスを使用してメモリアクセスを行う。しかし、仮想アドレスは、メモリのページ内にデータが記憶されている物理的位置の物理アドレスに直接マッピングされていない場合がある。ページの物理的位置を管理する一環として、プロセッサは、メモリアクセス要求においてプログラムによって使用される仮想アドレスを、データが実際に位置する物理アドレスに変換する。次に、プロセッサは、物理アドレスを使用してプログラムのメモリアクセスを実行する。
【０００３】
上述した仮想アドレスから物理アドレスへの変換を可能にするために、コンピューティングデバイスは、「ページテーブル」を含む。ページテーブルは、コンピューティングデバイスのメモリに記憶されたレコード（又はレコードの階層）であって、メインメモリに記憶されたデータのページ毎に仮想アドレスから物理アドレスへの変換情報を有するエントリ又は「ページテーブルエントリ」を含む。プロセッサは、所定の仮想アドレスのメモリにアクセスするためのプログラムからの要求を受信すると、「ページテーブルウォーク」を実行することによって、対応する物理アドレス情報をページテーブルから取得する。ページテーブルウォークの間、ページテーブルは、仮想アドレスに関連する物理アドレスを提供するページテーブルエントリに対して検索され、場合によってはエントリ毎に検索される。
【０００４】
上述したページテーブルウォークは比較的遅いため、ページテーブルウォークを行わないことが望ましい。したがって、コンピューティングデバイスは、トランスレーションルックアサイドバッファ（ＴＬＢ）を含む。ＴＬＢは、各プロセッサ内のローカルキャッシュであって、ページテーブルウォーク中に取得されたページテーブルエントリに基づいて限られた数の情報のコピーを記憶するためにプロセッサによって使用される。動作中、プロセッサは先ず、仮想アドレスから物理アドレスへの変換を実行するために、対応するＴＬＢからキャッシュされたページテーブルエントリを取得しようと試みる。対応するページテーブルエントリのコピーがＴＬＢに存在しない場合、すなわち「ＴＬＢミス」が発生した場合、プロセッサは、ページテーブルウォークを実行して所望のページテーブルエントリを取得し、その後、取得したページテーブルエントリのコピーをＴＬＢにキャッシュすることができる。
【０００５】
動作中、上述したコンピューティングデバイスのプロセッサは、ページテーブル内のページテーブルエントリを変更（例えば、ページテーブルエントリの仮想アドレスから物理アドレスへの変換情報の変更、ページテーブルエントリの読み出し／書き込みプロパティの変更等）することができる。ページテーブルと、コンピューティングデバイスの他のプロセッサのＴＬＢに保持されたページテーブルエントリのコピーと、の間の不一致を避けるために、ページテーブルエントリの変更を開始する「開始プロセッサ」は、「ＴＬＢシュートダウン」と呼ばれる動作を実行することができる。一般に、ＴＬＢシュートダウンの間、ページテーブルエントリを変更するプロセッサは、ページテーブルエントリのキャッシュされたコピーを保持する他のプロセッサに対して、キャッシュされたコピーを無効化させ、これにより不一致を避ける。ページテーブルエントリの変更を可能にするためにＴＬＢシュートダウンを実行する場合、開始プロセッサ（例えば、開始プロセッサのメモリ管理ユニット、開始プロセッサ上で実行されるオペレーティングシステム等）がページテーブルエントリを変更する。また、開始プロセッサは、ＴＬＢにキャッシュされたページテーブルエントリからの情報のコピーを有する他のプロセッサを決定し、他のプロセッサの各々に、変更中のページテーブルエントリを示すプロセス間割り込み（ＩＰＩ）を送信する。他のプロセッサの各々は、ＩＰＩを受信すると、対応するＴＬＢ内にそのようなエントリが存在する場合、ページテーブルエントリを含む対応するＴＬＢ内のエントリを無効化する。また、他のプロセッサの各々は、確認応答（acknowledgement）を開始プロセッサに返す。開始プロセッサは、確認応答を収集し、確認応答が他のプロセッサの各々から受信した場合、後続の動作を開始する。これらの動作中、一部のプロセッサは、カーネルモードとユーザモードとの間で１回以上切り替わる。
【０００６】
ＴＬＢシュートダウンを実行するための上述した動作はレイテンシが長いため、ＴＬＢシュートダウンを実行するには、通常、完了までにかなりの時間（例えば、プロセッサ内で数万クロックサイクル）が必要となる。この問題が悪化すると、コンピューティングデバイス内のプロセッサの数が増加するにつれて、これらの動作のレイテンシが増加する。例えば、中央処理装置（ＣＰＵ）及びグラフィックス処理装置（ＧＰＵ）がコンピューティングデバイス内のアドレス空間を共有する場合、ＣＰＵ及びＧＰＵの両方がＴＬＢシュートダウンに参加する必要があり得る。したがって、ＴＬＢシュートダウンが完了するのを待つことによって、プロセッサ、及び、より一般的にはコンピューティングデバイスによる他の動作の実行が遅延する可能性がある。
【図面の簡単な説明】
【０００７】
【図１】いくつかの実施形態による、コンピューティングデバイスを示すブロック図である。
【図２】いくつかの実施形態による、ページテーブルを示すブロック図である。
【図３】いくつかの実施形態による、ページテーブルエントリのメタデータを示すブロック図である。
【図４】いくつかの実施形態による、ＴＬＢを示すブロック図である。
【図５】いくつかの実施形態による、ＴＬＢ内のエントリのメタデータを示すブロック図である。
【図６】いくつかの実施形態による、ＴＬＢ内のエントリのリース値及び対応するページテーブルエントリの最新リース値を設定するプロセスを示すフロー図である。
【図７】いくつかの実施形態による、ＴＬＢ内のエントリのリース値を使用するプロセスを示すフロー図である。
【図８】いくつかの実施形態による、ページテーブル内のページテーブルエントリの最新リースを使用するプロセスを示すフロー図である。
【図９】いくつかの実施形態による、ページテーブル内のページテーブルエントリの最新リースを使用するプロセスを示すフロー図である。
【図１０】いくつかの実施形態による、リース値を動的に設定するプロセスを示すフロー図である。
【図１１】いくつかの実施形態による、リース値を動的に設定する疑似コードの一例を示す図である。
【図１２】いくつかの実施形態による、複数のテーブルを使用して実装されたページテーブルを示すブロック図である。
【発明を実施するための形態】
【０００８】
図面及び説明全体に亘って、同様の参照番号は同様の図面要素を指す。
【０００９】
以下の説明は、記載された実施形態を当業者が実施及び使用できるように提示され、特定の用途及びその要件の文脈において提供される。記載された実施形態に対する様々な修正は、当業者には容易に明らかであり、本明細書で定義された一般的な趣旨は、他の実施形態及び用途に適用され得る。したがって、記載された実施形態は、示された実施形態に限定されず、本明細書に開示された趣旨及び特徴に一致する最も広い範囲が与えられるべきである。
【００１０】
（概要）
記載された実施形態は、プロセッサ内の２つ以上のプロセッサコアの各々に別々のトランスレーションルックアサイドバッファ（ＴＬＢ）を含む。各ＴＬＢは、多数のエントリを有しており、各エントリは、ページテーブルエントリに基づく情報（例えば、仮想アドレスから物理アドレスへの変換及び対応するメタデータ）を記憶（すなわち、キャッシュ）するのに使用されるように構成されている。記載された実施形態では、プロセッサは、ページテーブル内のページテーブルエントリを変更するときに、上述したＴＬＢシュートダウンを実行することができる。しかしながら、ＴＬＢシュートダウンは比較的遅いので、記載された実施形態では、可能な場合に、ＴＬＢシュートダウンの実行を回避するために、リース値及び最新リース値を使用する。
【００１１】
記載された実施形態では、リース値は、ページテーブルエントリに基づく情報を含むＴＬＢ内の各エントリに関連付けられている。例えば、リース値は、ＴＬＢ内のエントリに関連付けられたメタデータに記憶されてもよく、別の位置に記憶されてもよい。各エントリのリース値は、エントリが有効な時間を表している。例えば、リース値は、特定の絶対時間又は相対時間であってもよく、その前であればＴＬＢ内の対応するエントリが有効であるとみなされる。リースが「期限切れ」になると、対応するエントリが無効であるとみなされ、エントリ内のページテーブルエントリ情報は、指定された動作（例えば、仮想アドレスから物理アドレスへの変換等）にもはや使用できなくなる。例えば、リース値が経過した特定の時間である場合、そのエントリは期限切れとみなされ、無効であり、指定された動作のためにもはや使用することができない。
【００１２】
記載された実施形態では、プロセッサ内の複数のＴＬＢは、異なるリース値、したがって異なる有効期限を有する同じページテーブルエントリに基づいて、情報のキャッシュされたコピーを保持することができる。最新／最後のリース有効期限を追跡するために、記載された実施形態は、ページテーブルエントリの最新リース値をページテーブルに記憶する。例えば、最新リース値は、ページテーブルエントリに関連付けられたメタデータに記憶されてもよいし、メモリの別の位置に記憶されてもよい。各ページテーブルエントリの最新リース値は、ＴＬＢに保持されているページテーブルエントリに基づく情報のコピーの最長のリース値を表す値を保持する。例えば、第１コアのＴＬＢが、リース値が時間Ｘであるページテーブルエントリに基づく情報のコピーを保持している場合であって、第２コアのＴＬＢが、リース値が時間Ｘ＋Ｚ（ここで、Ｘ及びＺは正の値である）であるページテーブルエントリに基づく情報のコピーを保持している場合、ページテーブル内のページテーブルエントリの最新リース値は時間Ｘ＋Ｚである。いくつかの実施形態では、ページテーブルエントリに基づく情報の第１コピーが、対応するリース値を有するＴＬＢに記憶される場合に、ページテーブルエントリの最新リース値が設定される。ページテーブルエントリに基づく情報の後続の各コピーが、対応するリース値を有するＴＬＢに記憶される場合であって、対応するリース値が既存の最新リース値よりも長い場合に、ページテーブルエントリの最新リース値を更新することができる。
【００１３】
記載された実施形態は、可能であれば、ＴＬＢシュートダウンを避けるためにページテーブル内の最新リース値を使用する。記載された実施形態は、ページテーブルエントリに最新リース値を使用して、ページテーブルエントリに基づく情報のキャッシュされた有効なコピーがＴＬＢに存在するかどうかを判断することによって、これを行う。より具体的には、ページテーブルエントリを変更する前に、プロセッサ（例えば、開始プロセッサのメモリ管理ユニット、開始プロセッサ上で実行されるオペレーティングシステム等）が、ページテーブルエントリに関連する最新リース値をチェックする。最新リース値が経過すると、ＴＬＢに保持されているページテーブルエントリに基づく情報の各コピーのリースが期限切れになったことを示すので、プロセッサは、ＴＬＢシュートダウンを実行することなくページテーブルエントリを変更することができる。換言すれば、ＴＬＢ内のページテーブルエントリに基づく情報の各コピーのリースは期限切れであり、そのコピーは無効であることが分かっているので、各コアがページテーブルウォークをトリガして、ページテーブルエントリから情報を取り出すことも分かる。したがって、プロセッサは、（ＴＬＢのシュートダウン中に発生する）ＴＬＢ内のページテーブルエントリのコピーを無効にすることなく、ページテーブルエントリを変更することができる。対照的に、最新リース値が経過していない場合、ＴＬＢにキャッシュされたページテーブルエントリに基づく情報の少なくとも１つのコピーがまだ有効である（したがって、対応するコアによってまだ使用されている可能性がある）。この場合、プロセッサは、ページテーブルエントリを変更する前に、（ａ）ＴＬＢシュートダウンを実行するか、又は、（ｂ）最新リース値が経過するまで待つ（すなわち、ＴＬＢのページテーブルエントリに基づく情報の全コピーのリースが期限切れになり、したがって、コピーが無効になるまで待つ）。
【００１４】
記載された実施形態では、ＴＬＢエントリのリース値を動的に決定することができる。換言すれば、プロセッサは、実行時に所定のＴＬＢエントリにリース値が設定されると、１つ以上のポリシー、ルール、閾値等に基づいて、ＴＬＢエントリのリースの長さを時間（例えば、ミリ秒、間隔等）で決定し、それに応じてリース値を設定してもよい。例えば、いくつかの実施形態では、所定のＴＬＢエントリに関連付けられた延長カウンタを使用して、所定のＴＬＢエントリのリースが延長された（すなわち、期限切れの後に再設定された）回数を記録する。プロセッサは、リースの長さを決定すると、対応する式（例えば、数式及び／又は論理式等）の結果としてのリースの長さを計算するために、場合によっては１つ以上の他の値と共に延長カウンタを使用してもよい。
【００１５】
リース値及び最新リース値を使用してＴＬＢシュートダウンを回避することにより、記載された実施形態は、ページテーブルエントリに対する変更を含む動作の速度及び効率を（例えば、遅延、通信帯域幅、電力消費等に関して）改善することができる。これらの動作を改善することにより、結果的に、コンピューティングデバイスの動作全体を改善することができる。例えば、コンピューティングデバイスは、ＴＬＢシュートダウンを実行する代わりに他の動作を実行することができる。
【００１６】
（コンピューティングデバイス）
図１は、いくつかの実施形態による、コンピューティングデバイス１００を示すブロック図である。図１に示すように、コンピューティングデバイス１００は、プロセッサ１０２と、メモリ１０６と、大容量ストレージ１１６と、ダイレクトメモリアクセス機構１１８（ＤＭＡ１１８）と、を含む。プロセッサ１０２は、コンピューティングデバイス１００内で計算動作を実行するデバイスである。プロセッサ１０２は、中央処理装置（ＣＰＵ）、グラフィックス処理装置（ＧＰＵ）、組込みプロセッサ、特定用途向け集積回路（ＡＳＩＣ）及び／又は他の計算機構等の１つ以上の計算機構をそれぞれ含む２つのコア（コア１０８，１０９）を含む。
【００１７】
また、プロセッサ１０２は、計算動作を実行するためにコア１０８によって使用されるデータ及び命令をローカルに記憶するのに使用されるキャッシュメモリ（又はキャッシュ）を含む。図１に示すように、プロセッサ１０２内のキャッシュは、コア１０８，１０９の各々にレベル１（Ｌ１）キャッシュ１１０，１１１（Ｌ１  １１０及びＬ１  １１１）を含み、各Ｌ１キャッシュは、例えば、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、ダブルデータレート同期ＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）、及び／又は、対応するコア１０８，１０９による使用のためのデータ及び命令を記憶する他のタイプのメモリ回路等のメモリ回路と、メモリ回路に記憶されたデータ及び命令のアクセスを処理する制御回路と、を含む。いくつかの実施形態では、Ｌ１キャッシュ１１０，１１１は、（メモリ回路の容量に関して）プロセッサ１０２内のキャッシュのセットの中で最小であり、対応するコア１０８内のデータ及び命令を使用する機能ブロック（例えば、実行ユニット、命令フェッチユニット等）の最も近くに配置される。
【００１８】
プロセッサ１０２は、例えば、ＳＲＡＭ、ＤＲＡＭ、ＤＤＲ  ＳＤＲＡＭ、及び／又は、両方のコア１０８による使用のためにデータ及び命令を記憶する他のタイプのメモリ回路の１つ以上等のメモリ回路と、メモリ回路に記憶されたデータ及び命令のアクセスを処理する制御回路と、を含む共有レベル２（Ｌ２）キャッシュを有する。いくつかの実施形態では、Ｌ２キャッシュ１１２は、Ｌ１キャッシュ１１０，１１１よりも大きく、データ及び命令を使用する機能ブロックからＬ１キャッシュ１１０，１１１よりも遠くに配置されている。
【００１９】
さらに、プロセッサ１０２は、例えば、ＳＲＡＭ、ＤＲＡＭ、ＤＤＲ  ＳＤＲＡＭ、及び／又は、両方のコア１０８による使用のためにデータ及び命令を記憶する他のタイプのメモリ回路の１つ以上等のメモリ回路と、メモリ回路に記憶されたデータ及び命令のアクセスを処理する制御回路と、を含む共有レベル３（Ｌ３）キャッシュ１０４を有する。いくつかの実施形態では、Ｌ３キャッシュ１０４は、プロセッサ１０２内のキャッシュの中で（Ｌ１キャッシュ１１０，１１１及びＬ２キャッシュ１１２と比べて）最も大きく、データ及び命令を使用する機能ブロックから最も遠くに配置されている。
【００２０】
メモリ１０６は、コンピューティングデバイス１００の「メインメモリ」であり、例えば、ＤＲＡＭ、ＤＤＲ  ＳＤＲＡＭ、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）、及び／又は、コンピューティングデバイス１００内の機能ブロックによる使用のためにデータ及び命令を記憶する他のタイプのメモリ回路の１つ以上等のメモリ回路と、メモリ回路に記憶されたデータ及び命令のアクセスを処理する制御回路と、を含む。いくつかの実施形態では、メモリ１０６は、コンピューティングデバイス１００内のキャッシュよりも（メモリ回路の容量に関して）かなり多くのメモリ回路を含むが、キャッシュよりもアクセスが遅い。
【００２１】
大容量ストレージ１１６は、コンピューティングデバイス１００で使用するためのデータ及び命令を記憶する大容量の半導体メモリ（例えばフラッシュメモリ又はＮＶＲＡＭ等の不揮発性半導体メモリ）、ディスクドライブ（例えばハードドライブ等）、光学ドライブ等の大容量ストレージデバイスである。記載された実施形態では、大容量ストレージ１１６は、メモリ管理ユニット１１４によって取り出され、コンピューティングデバイス１００内の機能ブロックが後続して使用するためにメモリ１０６に記憶されるデータ及び命令を保持する。例えば、データ及び命令は、「ページ」と呼ばれる所定のサイズ（例えば、４ｋＢ、８ｋＢ等）のブロックで大容量ストレージ１１６から取り出されてもよく、プロセッサ１０２内のコア１０８，１０９、キャッシュ等によるアクセスに備えて、ページをメモリ１０６に記憶することができる。また、ページは、メモリ内の利用可能な物理的位置に新たに生成されてもよい（例えば、計算結果を記憶するためにメモリのブロックが生成された場合等）。
【００２２】
メモリ管理ユニット１１４は、プロセッサ１０２内のメモリアクセス要求を処理する機能ブロックである。プロセッサ１０２の機能ブロックによってデータ又は命令がアクセスされる場合（すなわち、コア１０８又は別の機能ブロックによる読み出し、書き込み、チェック／検証、削除、無効化等）、機能ブロックは、メモリアクセス要求をメモリ管理ユニット１１４に送信する。メモリ管理ユニット１１４は、メモリアクセス要求の達成／解決のために、対応する要求を、Ｌ２キャッシュ１１２、Ｌ３キャッシュ１０４及びメモリ１０６のうち１つ以上に送信する。例えば、メモリアクセス要求に基づいてデータを取り出す場合、メモリ管理ユニット１１４は、Ｌ２キャッシュ１１２、Ｌ３キャッシュ１０４又はメモリ１０６（データがＬ２キャッシュ１１２、Ｌ３キャッシュ１０４又はメモリ１０６の何れにも存在しない場合には、大容量ストレージ１１６）からデータを取得し、データを要求側の機能ブロックに転送し得る。
【００２３】
記載された実施形態では、コンピューティングデバイス１００は、仮想メモリを使用して、（例えば、コア１０８，１０９によって実行される）ソフトウェアプログラムが、メモリ１０６内のページの物理的位置を管理することなくメモリにアクセスできるようにする。上述したように、プログラムは、仮想メモリの場合、ページの物理的位置に基づくアドレス（又は物理アドレス）を使用してメモリにアクセスするのではなく、対応するプログラムに固有のローカルアドレス空間である「仮想アドレス空間」の「仮想アドレス」を使用してメモリにアクセスする。これらの実施形態では、メモリ管理ユニット１１４は、仮想アドレスを有するプログラムからメモリアクセス要求を受信すると、仮想アドレスを、メモリ１０６にデータが配置されているページの物理アドレスに変換する動作を実行する。
【００２４】
いくつかの実施形態では、メモリ管理ユニット１１４は、仮想アドレスから物理アドレスへの変換を実行するための２つのメカニズムを使用する。第１メカニズムは、メモリ１０６に記憶されたデータ構造（例えば、テーブル、配列、リスト等）であるページテーブル１２２である。いくつかの実施形態では、ページテーブル１２２は、メモリ１０６に存在する各ページの少なくとも１つの変換を記憶する。したがって、これらの実施形態では、ページが大容量ストレージ１１６からメモリ１０６にコピーされた場合、又は、ページがメモリ１０６に新たに生成されてメモリ１０６に利用可能に残っている場合、対応する仮想アドレスから物理アドレスへの変換がページテーブル１２２に存在するはずである。メモリ管理ユニット１１４は、仮想アドレスを有するプログラムからメモリアクセス要求を受信すると、ページテーブル１２２を検索し（又は「ページテーブルウォーク」を実行して）、仮想アドレスの物理アドレスを取得する。ページテーブル１２２については、以下により詳細に説明する。
【００２５】
仮想アドレスから物理アドレスへの変換を実行する第２メカニズムは、トランスレーションルックアサイドバッファ１２０，１２１（ＴＬＢ１２０及びＴＬＢ１２１）である。これらは、コア１０８，１０９の各々のキャッシュであり、ページテーブル１２２のページテーブルウォーク中に取得された仮想アドレスから物理アドレスへの変換情報を記憶／キャッシュするように構成されている。コア１０８，１０９は、ページテーブルウォークの実行を回避可能な場合に、仮想アドレスから物理アドレスへの変換情報を、対応するＴＬＢ１２０，１２１から取得する。ＴＬＢ１２０，１２１については、以下により詳細に説明する。
【００２６】
ダイレクトメモリアクセス機構１１８は、大容量ストレージ１１６からメモリ１０６へ又はその逆方向のデータの転送を実行するように構成された機能ブロックである。一般に、ダイレクトメモリアクセス機構１１８は、プロセッサ１０２からのデータ転送動作をオフロードし、これにより、プロセッサ１０２は、メモリ転送の実行に伴う一部の計算作業の実行を回避することができる。これにより、プロセッサ１０２は、ダイレクトメモリアクセス機構１１８によって実行されるメモリ転送の代わりに、及び／又は、メモリ転送と並行して、他の計算処理を実行することができる。いくつかの実施形態では、本明細書で説明するように、大容量ストレージ１１６からメモリ１０６へデータページをコピーする動作は、メモリ管理ユニット１１４から受信した要求に基づいてダイレクトメモリアクセス機構１１８によって実行される。
【００２７】
いくつかの実施形態では、通信パス（１つ以上のバス、ワイヤ、ガイド及び／又は他の接続を含む）は、要素間の矢印の線で示すように、コンピューティングデバイス１００内の様々な機能ブロック（プロセッサコア１０８，１０９、メモリ管理ユニット１１４、メモリ１０６等）間に接続されている。通信パスは、コマンド、データ、制御信号及び／又は他の情報を機能ブロック間で送信するために使用される。
【００２８】
実施形態では、特定の構成のコアを記載しているが、いくつかの実施形態では、異なる数及び／又は構成のコアを含む。例えば、いくつかの実施形態では１つのコアのみを有しており、他の実施形態では２つ、５つ、８つ又は別の数のコアを有している。一般に、記載された実施形態は、本明細書に記載した動作を実行可能な任意のコアの構成を使用することができる。
【００２９】
実施形態では、特定の構成のキャッシュを記載しているが、いくつかの実施形態では、異なる数及び／又は構成のキャッシュを含む。例えば、キャッシュの一部又は全て（例えば、Ｌ１キャッシュ１１０，１１１等）は、別個の命令キャッシュ及びデータキャッシュに分割されてもよい。また、Ｌ２キャッシュ１１２は共有されないことがあり、したがって、単一のコア（すなわち、プロセッサ１０２内に２つのＬ２キャッシュが存在し得る）によってのみ使用され得る。別の例として、いくつかの実施形態は、１つのレベルのみのキャッシュから複数のレベルのキャッシュまで、異なるレベルのキャッシュを含み、これらのキャッシュは、プロセッサ１０２の内部及び／又は外部に配置されてもよい。一般に、記載された実施形態は、本明細書に記載された動作を実行可能な任意のキャッシュの構成を使用することができる。
【００３０】
コンピューティングデバイスが１つのメモリ管理ユニット１１４を有する実施形態が記載されているが、いくつかの実施形態では、異なる数及び／又は構成のメモリ管理ユニットを有する。例えば、いくつかの実施形態では、コア１０８，１０９の各々は別個のメモリ管理ユニット１１４を有する。一般に、記載された実施形態は、本明細書に記載された動作を実行するのに十分なメモリ管理ユニットを含む。
【００３１】
ＴＬＢの特定の構成が図１に示されているが、いくつかの実施形態では、ＴＬＢの異なる構成がコンピューティングデバイス１００で使用される。例えば、いくつかの実施形態では、別個のデータ及び命令ＴＬＢがコンピューティングデバイス１００で使用される。別の例として、いくつかの実施形態では、ＴＬＢの階層が使用され、階層は、対応するアクセス時間及びサイズ（すなわち、エントリの数）を有するＴＬＢの２つ以上のレベルを含む。一般に、記載された実施形態は、本明細書に記載された動作を実行するのに十分なＴＬＢを含む。
【００３２】
コンピューティングデバイス１００及びプロセッサ１０２は、図１では説明のために簡略化されているが、いくつかの実施形態では、コンピューティングデバイス１００及び／又はプロセッサ１０２は、本明細書に記載された動作及び他の動作を実行するための追加のメカニズムを含む。例えば、コンピューティングデバイス１００及び／又はプロセッサ１０２は、電力コントローラ、バッテリ、メディアプロセッサ、入出力メカニズム、通信メカニズム、ネットワークメカニズム、表示メカニズム等を含んでもよい。
【００３３】
コンピューティングデバイス１００は、計算操作を実行する任意の電子デバイスであってもよいし、当該電子デバイスに含まれていてもよい。例えば、コンピューティングデバイス１００は、デスクトップコンピュータ、ラップトップコンピュータ、ウェアラブルコンピューティングデバイス、タブレットコンピュータ、スマートフォン、サーバ、ネットワーク機器、玩具、オーディオビジュアル機器、家電製品、コントローラ、車両等の電子デバイス及び／又はこれらの組み合わせであってもよいし、これらに含まれてもよい。
【００３４】
（ページテーブル）
上述したように、コンピューティングデバイス１００は、仮想アドレスから物理アドレスへの変換を実行するためにページテーブルを使用する。図２は、いくつかの実施形態による、ページテーブル１２２を示すブロック図である。図２に示すように、ページテーブル１２２は、複数のエントリ２００（図２において、エントリ２００は、破線で強調されている）を含み、各エントリは、仮想アドレス（ＶＡ）から物理アドレス（ＰＡ）への変換２０２と、対応するメタデータ２０４と、を記憶するように構成されている。
【００３５】
仮想アドレスから物理アドレスへの変換２０２は、１つ以上の仮想アドレスに関連付けられたデータが配置されているメモリ内のページ（つまり、例えば４ｋＢ、８ｋＢ等の所定のサイズのデータブロック）の物理的位置（例えば、メモリ１０６の開始アドレス）を示している。例えば、いくつかの実施形態では、各仮想アドレスから物理アドレスへの変換２０２は、１つ以上の仮想アドレスの一部又は全てを有する第１フィールドと、１つ以上の仮想アドレスがマッピング／マッチングする物理アドレスの一部又は全てを有する第２フィールドと、を含む。例えば、いくつかの実施形態では、仮想アドレスから物理アドレスへの変換２０２の各々の第１フィールドは、仮想アドレスのビットのサブセット（例えば、上位４０、３６ビット等）を含み、第２フィールドは、対応する物理アドレスのビットのサブセットを含む。いくつかの実施形態では、ページが大容量ストレージ１１６から取り出されてメモリ１０６に記憶されるか、メモリ１０６に新たに生成されると、対応するエントリ２００が、仮想アドレスから物理アドレスへの変換２０２と共にページテーブル１２２に追加される。したがって、ページが大容量ストレージ１１６からメモリ１０６にコピーされた場合、又は、メモリ１０６に新たに生成された（メモリ１０６に利用可能に残っている）場合、対応する仮想アドレスから物理アドレスへの変換２０２がページテーブル１２２に存在するはずである。
【００３６】
メタデータ２０４は、対応する仮想アドレスから物理アドレスへの変換２０２を関連付ける、特徴付ける、制御する及び／又はそうでなければ関連する情報を含む。仮想アドレスから物理アドレスへの変換２０２がページテーブル１２２に追加されると、メタデータが取得、生成等され、メタデータ２０４として対応するエントリ２００に追加される。図３は、いくつかの実施形態による、メタデータ２０４を示すブロック図である。図３に示すように、メタデータ２０４は、対応する仮想アドレスから物理アドレスへの変換２０２及び／又はメモリ１０６内の対応するページの有効性に関する１つ以上の値を有する有効性３００を含む。例えば、有効性３００は、メモリ１０６内の対応するページが有効／アクセス可能であるかどうか、及び／又は、エントリ２００自体が有効／アクセス可能であるかどうかを示す１つ以上のビットを含んでもよい。
【００３７】
また、メタデータ２０４は、メモリ１０６の対応するページに対するアクセス許可に関する１つ以上の値を有する許可３０２を含む。例えば、メタデータ２０４は、メモリ１０６内の対応するページが読み出し専用又は読み書きの許可セットを有するかどうか、特定の権限（管理者、ユーザ、カーネル等）のみページにアクセス可能かどうか、及び／又は、他の許可情報を示す１つ以上のビットを含んでもよい。
【００３８】
さらに、メタデータ２０４は、エントリ２００及び／又はメモリ１０６の対応するページの使用に関する１つ以上の値を有する制御３０４を含む。例えば、制御３０４は、ページサイズインジケータ、ダーティインジケータ（メモリ１０６内の対応するページが変更され、したがって大容量ストレージ１１６の関連するメモリブロックと一致しない場合）、アクセスインジケータ（メモリ１０６内のページが１回以上アクセスされた場合）、ライトスルーインジケータ（メモリ１０６内のページへの変更が、大容量ストレージ１１６のメモリの関連するブロックに直ちに反映される場合）、及び／又は、他の値を含んでもよい。
【００３９】
さらにまた、メタデータ２０４は、ＴＬＢ（例えば、ＴＬＢ１２０及び／又は１２１）に保持されている仮想アドレスから物理アドレスへの変換２０２のコピーに対する既存の最長リース有効期限の絶対時間又は相対時間、最長リース有効期限までの絶対時間又は相対時間等を表す値（例えば、１つ以上のビット）を有する最新リース３０６を含む。例えば、最新リース３０６は、開始点からの特定のシステム時間（例えば、指定された開始時間からの秒数等）、年−月−日−時−分−秒−ミリ秒値等を表す値を含んでもよい。別の例として、最新リース３０６は、例えば、より長い形式の時間値のいくつかの関連するビット又はバイトのみを保持し、入力が時間値であるハッシュ関数の出力を保持する等のように、省略形式又は短縮形式の時間を表す、縮小、圧縮又は単純化された値を含んでもよい。例えば、ＴＬＢに保持されている仮想アドレスから物理アドレスへの変換の最長の既存のリースが５００ミリ秒、１秒、５秒等である場合、年−月−日−時−分−秒−ミリ秒の全てを通常含む時間値から、年−月−日−時−分の除外、破棄、取り除き等が行われてもよい。さらに別の例として、エポック等のセグメント内の時間を追跡するシステムにおいて、最新リース３０６は、エポックカウンタ等のセグメントカウンタを含んでもよい。さらに別の例として、イベントの発生（例えば、周期的イベント又は非同期イベント、割り込みイベント等）を監視又は追跡するシステムにおいて、最新リース３０６は、イベントカウンタ、識別子等を含んでもよい。一般に、記載された実施形態では、最新リース３０６は、コンピューティングデバイス１００（例えば、メモリ管理ユニット１１４、対応するコア１０８，１０９等）が、対応する仮想アドレスから物理アドレスへの変換２０２の既存の全てのリースが期限切れかどうかを判断するのに十分な情報を含む。例えば、コア１０８，１０９の両方が、対応するＴＬＢ１２０，１２１の仮想アドレスから物理アドレスへの変換のコピーを保持し、コア１０８が時間Ｐのリース値を有し、コア１０９が時間Ｋのリース値を有し、時間Ｐが時間Ｋの後に生じる場合、対応する最新リース３０６は時間Ｐを示し、これにより、少なくとも１つのコア（すなわち、この例ではコア１０８）が有効期限Ｐでキャッシュされた仮想アドレスから物理アドレスへの変換を有することを示す。
【００４０】
いくつかの実施形態では、最新リース３０６は、最長の既存のリースの有効期限を表す値の他に情報を含む。例えば、いくつかの実施形態では、最新リース３０６は、仮想アドレスから物理アドレスへの変換２０２のコピーが保持されているか、最近保持されていた（例えば、最長の既存のリースの閾値時間内に既存のリースで保持されている／保持された）ＴＬＢの数をカウントするために使用されるカウンタ値を含む。別の例として、いくつかの実施形態では、最新リース３０６は、最長の既存のリースを有する仮想アドレスから物理アドレスへの変換のコピーを保持する１つ以上のＴＬＢの識別子を含む。
【００４１】
また、メタデータ２０４は、ページテーブルエントリに関連するＴＬＢエントリのリースが「延長」された回数、すなわち、リース延長の数を表す数値又は他の値を保持する延長カウンタ（ＥＸＴ  ＣＯＵＮＴＥＲ）３０８を含む。通常、リースは、リースがＴＬＢエントリのリース有効期限後にＴＬＢエントリに対して再設定又は更新されたときに延長される。換言すると、メモリ管理ユニット１１４が、ＴＬＢエントリのリースが期限切れであることに気づき、テーブルウォークを実行して、ＴＬＢエントリを更新するために対応するページテーブルエントリから情報を再取得する場合に延長が生じる。メモリ管理ユニット１１４は、延長が生じる毎に、ページテーブルエントリのメタデータ内のカウンタをインクリメント又は更新する。いくつかの実施形態では、延長カウンタをインクリメントすることは、有効期限／延長が（例えば、最後のＮミリ秒内等）十分に最近であった場合にのみ発生する。このように、「延長」は、所定の時間より前に発生した有効期限についてはカウントしない。
【００４２】
本明細書に記載したように、仮想アドレスから物理アドレスへの変換２０２及びメタデータ２０４の一方又は両方は、ページテーブル１２２に追加された後に、変更、更新等されてもよい。例えば、ページがメモリ１０６の第１位置から第２位置に移動した場合、対応するエントリ２００内の仮想アドレスから物理アドレスへの変換２０２が更新され得る。別の例として、メタデータ２０４が許可３０２（例えば、読み出し／書き込み許可）を含む実施形態では、メモリ１０６内の対応するページの読み出し専用、読み出し及び書き込み等の許可を示すために、許可３０２を更新することができる。変更を実行するために、記載された実施形態では、本明細書に記載したように、最新リース３０６を使用して、対応するＴＬＢにキャッシュされた仮想アドレスから物理アドレスへの変換２０２のコピーをコア１０８，１０９の何れが有しているのかを判断する。
【００４３】
上述したように、メモリ管理ユニット１１４（又はコンピューティングデバイス１００内の別のエンティティ）は、指定された仮想アドレスの物理アドレス情報を取得しようとするときに、ページテーブルウォークを実行し得る。メモリ管理ユニット１１４は、ページテーブルウォークの間、シーケンシャル又はエントリ毎のチェック等の対応する検索技術を使用してメモリ１０６内のページテーブル１２２を検索し、エントリ２００等が存在する場合にはエントリ２００を見つけ、エントリ内において、対応する仮想アドレスから物理アドレスへの変換２０２が保持される。このようなエントリ２００を見つけると、メモリ管理ユニット１１４は、指定された仮想アドレスの物理アドレスをエントリ２００から（すなわち、エントリ２００の仮想アドレスから物理アドレスへの変換２０２から）取得する。対応する仮想アドレスから物理アドレスへの変換を有するエントリ２００をメモリ管理ユニット１１４が見つけることができない場合、エラー処理動作が実行される（例えば、ページフォールトが発行され、その後処理される等）。
【００４４】
ページテーブル１２２は、特定の数のエントリ２００で示されているが、いくつかの実施形態では、異なる数のエントリ２００を含む（図２の省略符号によって示される）。また、エントリ２００及びメタデータ２０４は、特定の構成及びタイプの情報と共に示されているが、いくつかの実施形態では、エントリ２００及びメタデータ２０４の一方又は両方は、異なる情報を含む。例えば、いくつかの実施形態では、メタデータ２０４の少なくともいくつかは、エントリ２００以外の位置に記憶される。例えば、いくつかの実施形態では、最新リース値を記憶するために別個のメモリ内データ構造が使用される。これらの実施形態のいくつかでは、別個のメモリ内データ構造は、ページテーブルエントリ識別子（アドレス又はその一部等）と、メタデータ２０４について上述した対応するリース情報とのペアを含むテーブル、リスト等であってもよい。別の例として、いくつかの実施形態では、延長カウンタ３０８が使用されない（すなわち、リース期間を決定するために別の技術が使用される）ため、延長カウンタ３０８はメタデータ２０４に含まれない。一般に、ページテーブル１２２、より詳細にはコンピューティングデバイス１００は、本明細書に記載したように、コンピューティングデバイス１００が仮想アドレスから物理アドレスへの変換情報を記憶して取り出し、ページテーブルエントリの変更を処理するのに十分な情報を含む。
【００４５】
ページテーブル１２２は図２において単一のテーブルとして示されているが、いくつかの実施形態では、複数のテーブル又は他のデータ構造の配置がページテーブル１２２を実装するために使用される。図１２は、いくつかの実施形態による、複数のテーブルを使用して実装されたページテーブルを示すブロック図である。図１２に示すように、ページテーブル１２００は、ページマップレベル４テーブル１２０６と、ページディレクトリポインタテーブル（ＰＡＧＥ  ＤＩＲ  ＰＴＲ  ＴＡＢＬＥ）１２０８と、ページディレクトリテーブル（ＰＡＧＥ  ＤＩＲ  ＴＡＢＬＥ）１２１０と、ページテーブル１２１２と、メモリページ１２１４と、を含む。ページマップレベル４テーブル１２０６、ページディレクトリポインタテーブル１２０８、ページディレクトリテーブル１２１０及びページテーブル１２１２は、メモリに記憶されたデータ構造（例えば、テーブル、リンクリスト等）である。ページマップレベル４テーブル１２０６、ページディレクトリポインタテーブル１２０８及びページディレクトリテーブル１２１０の各々は、仮想アドレス１２０２に対応する物理アドレスを見つけるために、テーブルウォークの次のステップ中に検索される（又はウォークされる）次のテーブルに関する情報を含む。例えば、ページマップレベル４テーブル１２０６は、仮想アドレス１２０２からページディレクトリポインタテーブル（図３に示すように、ページディレクトリポインタテーブル１２０８等）の対応するアドレスビットのサブセットをマッピングする情報を有するいくつかのエントリを含む。ページテーブル１２１２は、仮想アドレスの対応する部分に関連する特定のメモリページを示す物理アドレスを含む。メモリページ１２１４は、仮想アドレス１２０２によって示されるデータが配置されるメモリ内の特定のページである。
【００４６】
いくつかの実施形態では、テーブルウォーカは、仮想アドレス１２０２に関連する物理アドレスを取得するためにページテーブル１２００内でテーブルウォークを実行する場合、制御レジスタ（ＣＲ）１２０４を読み出して、対応する仮想マシンに関連するページマップレベルテーブル（例えば、ページマップレベル４テーブル１２０６）のメモリ内での位置を判断する。次に、テーブルウォーカは、次にウォークすべきページディレクトリポインタテーブル（例えば、ページディレクトリポインタテーブル１２０８）の位置を示すエントリ（「ＰＭＬ４Ｅ」として図示されている）に対する仮想アドレス１２０２からのビットのサブセット（例えば、６４ビット仮想アドレスのビット３９〜４７）を使用して、ページマップレベル４テーブル１２０６を検索（又はウォーク）する。次に、テーブルウォーカは、残りのテーブル、すなわち、ページディレクトリポインタテーブル１２０８、ページディレクトリテーブル（例えば、ページディレクトリテーブル１２１０）及びページテーブル（例えば、ページテーブル１２１２）に進み、仮想アドレス１２０２からの対応するビットのサブセットを使用して各テーブルをウォークし、ウォークされる次のテーブルを示すテーブル内のエントリ（「ＰＤＰＥ」及び「ＰＤＥ」として図示されている）の位置を特定する。最終的に、テーブルウォーカは、ページテーブル１２１２（ページテーブルエントリ又は「ＰＴＥ」）から取得された物理アドレスを使用して、特定のメモリページ（例えば、メモリページ１２１４）に到着する。テーブルウォーカは、仮想アドレス１２０２のビットの対応する部分（例えば、６４ビット仮想アドレスのビット０〜１１）を使用して、仮想アドレス１２０２によって示されるデータを含むメモリページ１２１４のエントリ（ＤＡＴＡ）を判断する。テーブルウォーカが仮想アドレス１２０２に対するアドレス変換を見つけられない場合、エラー処理動作が実行される（例えば、ページフォールトが発行され、その後処理される等）。
【００４７】
図１２に示すように、ＬＥＡＳＥは、最新リース３０６がページテーブル１２１２内の他の位置にどのように記憶することができるかを表すために、ページテーブル１２１２のページテーブルエントリとは別に示されている。しかしながら、上述したように、最新リース３０６を含むメタデータは、ページテーブルエントリと共に（例えば、連続したメモリブロックで）記憶され得る。
【００４８】
（トランスレーションルックアサイドバッファ）
上述したように、コンピューティングデバイス１００は、コア１０８，１０９の各々にＴＬＢ１２０，１２１を含む。各ＴＬＢは、対応するコア、メモリ管理ユニット１１４等によるアクセスのために、ページテーブル１２２のページテーブルウォーク中に取得された仮想アドレスから物理アドレスへの変換情報を記憶するように構成されたキャッシュである。図４は、いくつかの実施形態による、ＴＬＢ４００を示すブロック図である。いくつかの実施形態では、ＴＬＢ１２０，１２１の一方又は両方は、ＴＬＢ４００と同様に構成されている。
【００４９】
図４に示すように、ＴＬＢ４００は、制御機構４０４と、いくつかのエントリ４０２（図４において、エントリ４０２は破線で強調されている）と、を含み、各エントリは、仮想アドレス（ＶＡ）から物理アドレス（ＰＡ）への変換４０６及び対応するメタデータ４０８を記憶するように構成されている。
【００５０】
仮想アドレスから物理アドレスへの変換４０６は、１つ以上の仮想アドレスに関連するデータが配置されるメモリ内のページの物理的位置（例えば、メモリ１０６の開始アドレス）を示している。例えば、いくつかの実施形態では、仮想アドレスから物理アドレスへの変換４０６の各々は、１つ以上の仮想アドレスの一部又は全てを有する第１フィールドと、１つ以上の仮想アドレスがマッピング／マッチングするメモリ１０６内の物理アドレスの一部又は全てを有する第２フィールドと、を含む。いくつかの実施形態では、仮想アドレスから物理アドレスへの変換２０２及び対応するメタデータ２０４がページテーブル１２２から取得されると（すなわち、ページテーブルウォークの間に）、仮想アドレスから物理アドレスへの変換４０６及びメタデータ４０８は、仮想アドレスから物理アドレスへの変換２０２及び／又は対応するメタデータ２０４に少なくとも部分的に基づいて、エントリ４０２において更新される。
【００５１】
いくつかの実施形態では、仮想アドレスから物理アドレスへの変換情報は、対応するページテーブルエントリから直接コピーされるが、他の実施形態では、ページテーブルエントリからの仮想アドレスから物理アドレスへの変換情報は、仮想アドレスから物理アドレスへの変換４０６に記憶される前に、１つ以上の動作（例えば、縮小、再フォーマット、ハッシング等）が実行される。例えば、いくつかの実施形態では、ＴＬＢ４００は、仮想アドレスから物理アドレスへの変換４０６が記憶されるマルチレベルルックアップメカニズム（図示省略）を含み、ページテーブル１２２からの仮想アドレスから物理アドレスへの変換情報は、マルチレベルルックアップメカニズムの各レベルに記憶される部分に分割される。
【００５２】
いくつかの実施形態では、ＴＬＢ４００内のエントリ４０２の数が制限されているので、ＴＬＢ４００内のエントリ４０２を更新することは、エントリ４０２内の既存の情報を上書きすることを含むことができる。例えば、ＴＬＢ４００内の指定されたエントリ４０２（例えば、全てのエントリや、特定のサブセットのエントリ等）が仮想アドレスから物理アドレスへの変換を保持する場合、ＴＬＢ４００に書き込まれる次の仮想アドレスから物理アドレスへの変換は、エントリ４０２内の既存の仮想アドレスから物理アドレスへの変換を上書きする。これらの実施形態では、ＦＩＦＯ（first-in-first-out）、ＬＲＵ（least recently used）、ＭＯＵ（most often used）等などのポリシーを使用して、何れのエントリ４０２を上書きするかを決定してもよい。また、いくつかの実施形態では、ＴＬＢ４００内のエントリは、ダイレクトマッピング方式、セットアソシアティブ方式、スキュードアソシアティブ方式等の特定のタイプのアソシアティブ方式を使用して管理される。換言すると、いくつかの実施形態では、キャッシュであるＴＬＢ４００は、様々な置換技術を使用して管理することができる。
【００５３】
メタデータ４０８は、対応する仮想アドレスから物理アドレスへの変換４０６を関連付ける、特徴付ける、制御する、及び／又は、そうでなければ関連する情報を含む。いくつかの実施形態では、仮想アドレスから物理アドレスへの変換４０６がページテーブルウォーク中に取得されると、メタデータが取得され、生成され、対応するエントリ４０２に追加される（又は、ＴＬＢ４００の他の位置に記憶される）。
【００５４】
図５は、いくつかの実施形態による、メタデータ４０８を示すブロック図である。図５に示すように、メタデータ４０８は、対応する仮想アドレスから物理アドレスへの変換４０６及び／又はメモリ１０６内の対応するページの有効性に関する１つ以上の値を有する有効性５００を含む。例えば、有効性５００は、メモリ１０６内の対応するページが有効／アクセス可能であるかどうか、及び／又は、エントリ４０２自体が有効／アクセス可能であるかどうかを示す１つ以上のビットを含み得る。
【００５５】
また、メタデータ４０８は、メモリ１０６の対応するページに対するアクセス許可に関する１つ以上の値を有する許可５０２を含む。例えば、許可５０２は、メモリ１０６内の対応するページが読み出し専用又は読み書きの許可セットを有するかどうか、特定の権限（管理者、ユーザ、カーネル等）のみページにアクセス可能かどうか、及び／又は、他の許可情報を示す１つ以上のビットを含んでもよい。
【００５６】
さらに、メタデータ４０８は、エントリ４０２及び／又はメモリ１０６の対応するページの使用に関する１つ以上の値を有する制御５０４を含む。例えば、制御５０４は、ページサイズインジケータ、ダーティインジケータ（メモリ１０６内の対応するページが変更され、したがって大容量ストレージ１１６の関連するメモリブロックと一致しない場合）、アクセスインジケータ（メモリ１０６内のページが１回以上アクセスされた場合）、ライトスルーインジケータ（メモリ１０６内のページへの変更が、大容量ストレージ１１６のメモリの関連するブロックに直ちに反映される場合）、及び／又は、他の値を含んでもよい。
【００５７】
さらにまた、メタデータ４０８は、さらにリース値５０６を含み、これは、仮想アドレスから物理アドレスへの変換４０６のリース有効期限の絶対時間又は相対時間、リース有効期限までの絶対時間又は相対時間等を表す値（例えば、１つ以上のビット）を含む。本明細書に記載したように、仮想アドレスから物理アドレスへの変換４０６のリースが期限切れになると、仮想アドレスから物理アドレスへの変換４０６が無効とみなされ、指定された動作（例えば、仮想アドレスから物理アドレスへの変換、メモリ１０６の対応するページへの許可の決定等）をこれ以上使用できなくなる。例えば、リース値５０６は、開始点からの特定のシステム時間（例えば、指定された開始時間からの秒数等）、年−月−日−時−分−秒−ミリ秒の値等を表す値を含んでもよい。別の例として、リース値５０６は、例えば、より長い形式の時間値のいくつかの関連するビット又はバイトのみを保持し、入力が時間値であるハッシュ関数の出力を保持する等のように、省略形式又は短縮形式の時間を表す、縮小、圧縮又は単純化された値を含んでもよい。例えば、対応する仮想アドレスから物理アドレスへの変換４０６の最長の既存のリースが５００ミリ秒、１秒、５秒等である場合、年−月−日−時−分−秒−ミリ秒の全てを通常含む時間値から、年−月−日−時−分の除外、破棄、取り除き等が行われてもよい。さらに別の例として、エポック等のセグメント内の時間を追跡するシステムにおいて、リース値５０６は、エポックカウンタ等のセグメントカウンタを含んでもよい。さらに別の例として、イベントの発生（例えば、周期的イベント又は非同期イベント、割り込みイベント等）を監視又は追跡するシステムにおいて、リース値５０６は、イベントカウンタ、識別子等を含んでもよい。一般に、記載された実施形態では、リース値５０６は、コンピューティングデバイス１００（例えば、メモリ管理ユニット１１４、対応するコア等）が、対応する仮想アドレスから物理アドレスへの変換４０６のリースが期限切れかどうかを判断するのに十分な情報を含む。例えば、所定の仮想アドレスから物理アドレスへの変換４０６のリース値５０６がＦ（Ｆは絶対時間又は相対時間）であり、現在のシステム時間がＨであり、過去の時間値がＦである場合、リースは期限切れであり、仮想アドレスから物理アドレスへの変換４０６が無効とみなされる。別様には、Ｈが過去の時間値Ｆではない場合（すなわち、Ｆより前である場合）、リースは期限切れではなく、仮想アドレスから物理アドレスへの変換４０６が有効あるとみなされる（少なくともリース値に関しては有効であり、仮想アドレスから物理アドレスへの変換４０６は他の理由により無効とみなされ得る）。
【００５８】
図４に戻ると、制御機構４０４は、エントリ４０２内の情報を取得し、使用し及び管理するための様々な動作を実行するように構成された機能ブロックである。例えば、制御機構４０４は、仮想アドレスから物理アドレスへの変換情報をエントリ４０２に記憶し、エントリ４０２内の情報を使用して仮想アドレスから物理アドレスへの変換を実行し、リース値及び／又は他のメタデータ値を決定し、リース値及び／又は他の値でメタデータを更新する等を行ってもよい。
【００５９】
動作中、メモリ管理ユニット１１４（及び／又はコンピューティングデバイス１００内の別のハードウェア若しくはソフトウェアエンティティ）が仮想アドレスを物理アドレスに変換する場合、メモリ管理ユニット１１４は、仮想アドレスの一部又は全てを含む要求をＴＬＢ４００内の制御機構４０４に送信する。次に、制御機構４０４は、エントリ４０２が存在する場合には、シーケンシャル又はインオーダ（in-order）のエントリ毎のチェック、アドレスマッチング等のような対応する検索技術を使用してエントリ４０２を見つけ、対応する仮想アドレスから物理アドレスへの変換４０６がこのエントリに保持される。例えば、いくつかの実施形態では、ＴＬＢ１２０は、エントリ４０２が配置されたコンテンツアドレス可能メモリを含み、制御機構は、コンテンツアドレス可能メモリ内の仮想アドレスを検索する。別の例として、いくつかの実施形態では、ＴＬＢ１２０は、エントリ４０２が配置されたテーブル、ディレクトリ及び／又は別のデータ構造を含み、制御機構は、テーブル、ディレクトリ及び／または他のデータ構造に対応する検索を実行する。制御機構４０４は、対応する仮想アドレスから物理アドレスへの変換４０６を有するエントリ４０２を見つけると、指定された仮想アドレスに対応する物理アドレスをエントリ４０２から（すなわち、仮想アドレスから物理アドレスへの変換４０６）取得し、物理アドレス変換をメモリ管理ユニット１１４に返す。仮想アドレスから物理アドレスへの変換がＴＬＢ４００のエントリ４０２に存在しない場合、ＴＬＢ４００内の仮想アドレスから物理アドレスへの変換の検索が「ミス」し、制御機構４０４は、ミスをメモリ管理ユニット１１４に伝送する。そして、メモリ管理ユニット１１４は、ページテーブルウォークを開始して、仮想アドレスから物理アドレスへの変換を取得する。
【００６０】
ＴＬＢ４００は、機能ブロックの特定の構成で示されているが、いくつかの実施形態では、ＴＬＢ４００は、異なるように構成されている。例えば、いくつかの実施形態では、ＴＬＢ４００は、仮想アドレスから物理アドレスへの変換情報のマルチレベル検索を実行するための機能要素（ディレクトリ、１つ以上のテーブル等）で構成されている。一般に、記載された実施形態は、ＴＬＢ４００の任意の内部構成を使用することができ、ここでは、上述したリース値５０６が、対応する仮想アドレスから物理アドレスへの変換に関連付けられる。また、ＴＬＢ４００は、特定の数のエントリ４０２で示されているが、いくつかの実施形態では、異なる数のエントリ４０２を含む（図４の省略符号によって示される）。さらに、エントリ４０２及びメタデータ４０８は、特定の構成及びタイプの情報と共に示されているが、いくつかの実施形態では、エントリ４０２及びメタデータ４０８の一方又は両方は、異なる情報を含む。例えば、メタデータ４０８の一部又は全ては、メタデータレコードデータ構造（図示省略）等のＴＬＢ４００の別の位置に記憶されてもよい。一般に、エントリ４０２及びメタデータ４０８は、コンピューティングデバイス１００が本明細書に記載の動作を実行するのに十分な情報を含む。
【００６１】
（リース値及び最新リース値の設定）
図６は、いくつかの実施形態による、ＴＬＢ内のエントリのリース値及び対応するページテーブルエントリの最新リース値を設定するためのプロセスを示すフロー図である。図６に示す動作は、いくつかの実施形態によって実行される動作の一般的な例として表されることに留意されたい。他の実施形態によって実行される動作は、異なる動作及び／又は異なる順序で実行される動作を含む。さらに、特定のメカニズム（例えば、メモリ管理ユニット１１４、コア１０８／ＴＬＢ１２０等）は、動作を説明するために使用されるが、いくつかの実施形態では、他のメカニズムが動作を実行してもよい。例えば、コア１０９／ＴＬＢ１２１は、コア１０８／ＴＬＢ１２０の代わりに動作を実行してもよい。
【００６２】
図６に示すプロセスは、メモリ管理ユニット１１４が物理アドレスに変換される仮想アドレスを受信すると開始する（ステップ６００）。例えば、メモリ管理ユニット１１４は、コア１０８から、仮想アドレスを含むメモリ書き込み等のメモリアクセスを実行する要求を受信し得る。次に、メモリ管理ユニット１１４は、メモリアクセス要求から仮想アドレスを取得する（例えば、抽出する、決定する等）。
【００６３】
次に、メモリ管理ユニット１１４は、仮想アドレスに関連する物理アドレスの要求をＴＬＢ１２０に送信する（ステップ６０２）。換言すると、メモリ管理ユニット１１４は、ＴＬＢ１２０が、ＴＬＢ１２０内のエントリ（かかるエントリが存在する場合）に記憶された対応する仮想アドレスから物理アドレスへの変換に基づいて物理アドレスを決定し、物理アドレスを返すように要求する。この例では、ＴＬＢ１２０内の何れのエントリも、仮想アドレスに対して、対応する仮想アドレスから物理アドレスへの変換を含まないので、ＴＬＢ１２０において要求は「ミス」する。したがって、メモリ管理ユニット１１４は、ＴＬＢ１２０内のミスの指示をＴＬＢ１２０から受信する（ステップ６０４）。
【００６４】
ＴＬＢ１２０内のルックアップが結果的にミスになったため、メモリ管理ユニット１１４は、ページテーブルウォークを実行して、ページテーブル１２２から仮想アドレスに関連する物理アドレスを取得する（ステップ６０６）。ページテーブルウォークの間、メモリ管理ユニット１１４は、仮想アドレスに関連する物理アドレスを有する（すなわち、対応する仮想アドレスから物理アドレスへの変換を有する）ページテーブルエントリについてページテーブル１２２を検索する。いくつかの実施形態では、ページテーブルウォークは、シーケンシャル又はエントリ毎の検索、階層的検索（例えば、ディレクトリ、ハッシングスキーム等を使用する）、及び／又は、別の技術などの技術を使用して実行される。この例では、ページテーブル１２２は、対応する仮想アドレスから物理アドレスへの変換を伴うページテーブルエントリを含むと仮定される。そうでなければ、是正措置（例えば、ページフォールト）が実行される。
【００６５】
次に、メモリ管理ユニット１１４は、取得した仮想アドレスから物理アドレスへの変換を用いてＴＬＢ１２０のエントリを更新する（ステップ６０８）。上述したように、更新は、既知の仮想アドレスに基づいて対応する物理アドレスを決定するために直接的又は間接的に使用できる情報をエントリに記憶することを含む。例えば、いくつかの実施形態では、各エントリは、１つ以上の仮想アドレスの一部又は全て（例えば、１つ以上の仮想アドレス内のビットのセットの少なくとも一部）を含む第１フィールドと、対応する物理アドレス（例えば、メモリのページの開始アドレス、既知のアドレスからのオフセット等）の一部又は全てを含む第２フィールドと、を含む。
【００６６】
いくつかの実施形態では、ＴＬＢ１２０は、置換アルゴリズムを使用して管理され、仮想アドレスから物理アドレスへの変換は、置換アルゴリズムのルール、ポリシー等に従ってエントリに記憶される。例えば、ＴＬＢ１２０は、少なくとも部分的にセットアソシアティブ方式を使用して管理されてもよく、仮想アドレスから物理アドレスへの変換を記憶するエントリは、対応するセットから選択されてもよい。
【００６７】
メモリ管理ユニット１１４（及び／又はＴＬＢ１２０、コア１０８等の別のエンティティ）は、エントリ内の仮想アドレスから物理アドレスへの変換を記憶することに加えて、ＴＬＢ１２０内のエントリに関連するメタデータを更新する。エントリに関連するメタデータを更新する場合、メモリ管理ユニット１１４は、様々なソースからメタデータを更新するために使用される情報を決定、生成又は取得してもよい。例えば、メモリ管理ユニット１１４は、ページテーブル１２２から取得されたページテーブルエントリに関連するメタデータ（例えば、メタデータ２０４）に基づいて、更新のための情報の少なくとも一部を取得又は決定してもよい。例えば、メモリ管理ユニット１１４は、メモリ１０６内の対応するページに対するアクセス許可を示すページテーブル１２２内のページテーブルエントリのメタデータを取得し、アクセス許可を示すためにＴＬＢ１２０内のエントリのメタデータを更新してもよい。別の例として、メモリ管理ユニット１１４は、メタデータを更新するために使用される情報、値等を生成してもよい。例えば、メモリ管理ユニット１１４は、ＴＬＢ１２０内のエントリの有効性情報を設定してもよく、エントリに関連するアクセスカウンタを設定又は更新等してもよい。さらに別の例として、メモリ管理ユニット１１４は、コンピューティングデバイス（例えば、コア１０８及び／又は１０９、メモリ１０６等）の１つ以上の他の機能ブロックからメタデータを更新するための情報を取得してもよい。一般に、メモリ管理ユニット１１４（及び／又は別のエンティティ）は、本明細書に記載されたように、メタデータを更新するのに十分な情報を取得する。
【００６８】
エントリに関連するメタデータを更新する場合、メモリ管理ユニット１１４は、ＴＬＢ１２０内のエントリのメタデータのリース値を更新する（ステップ６１０）。一般に、この動作のために、メモリ管理ユニット１１４は、仮想アドレスから物理アドレスへの変換に使用されるリース値を最初に決定し、決定されたリース値に基づいてエントリのメタデータにリース値を設定する。リース値は、エントリが有効であるとみなされる時間であり、したがって、指定された動作（例えば、仮想アドレスから物理アドレスへの変換、エントリのメタデータへのアクセス等）中に使用可能な時間又はそれまでの時間であることに留意されたい。非効率的な動作を避けるために、リース値は、エントリのリースがあまりに早く期限切れにならないように（これにより、余計なページテーブルウォークが生じ得る）、及び／又は、リースがあまりに遅く期限切れにならないような十分な長さ（これにより、余計なＴＬＢシュートダウン又は遅延が生じ得る）の値に設定する必要がある。いくつかの実施形態では、ＴＬＢシュートダウンは、ページテーブルウォークよりも実行に時間を要することがあるため、メモリ管理ユニット１１４は、優先的にリース期間を長くするのではなく、短くなるよう設定する。リースの期限切れが早くなるため、ページテーブルウォークが増える可能性があるが、ＴＬＢシュートダウンを回避するのに役立つことがある。
【００６９】
リース値を決定するとき、メモリ管理ユニット１１４は、ＴＬＢ１２０内のエントリが期限切れになる時間を決定する。これは、絶対時間／特定時間（例えば、特定の時、分、秒、ミリ秒等）又は相対時間／オフセット時間（例えば、時間ＺからのＸ秒等）であってもよい。メモリ管理ユニット１１４は、コンピューティングデバイス１００内の１つ以上のソースからの情報に基づいて、リース値（すなわち、時間）を決定してもよい。例えば、メモリ管理ユニット１１４は、（例えば、ファームウェア、他のハードウェア又はソフトウェアエンティティから受信した入力、メモリ管理ユニット１１４内のハードウェアプリセット等を介して）ＴＬＢ１２０内の全てのエントリに使用される単一のリース値を用いて構成されてもよい。別の例として、メモリ管理ユニット１１４は、ＴＬＢ１２０内の対応するエントリに使用される２つ以上のリース値で構成されてもよい。例えば、メモリ管理ユニット１１４は、対応するメモリ領域（例えば、物理アドレスの範囲）内の物理アドレスの全てのＴＬＢ１２０エントリに使用される２つ以上のリース値を含んでもよい。いくつかの実施形態では、個別のリース値が個々のＴＬＢ１２０エントリ、すなわちメモリ内の特定のアドレスのページのＴＬＢ１２０エントリに対して使用される。これらの実施形態では、アルゴリズム又はポリシーを使用して、各ＴＬＢ１２０エントリのリース値を決定してもよく、これは、他のＴＬＢ１２０エントリのリース値と異なっていてもよいし、異なっていなくてもよい。
【００７０】
いくつかの実施形態では、リース値は、コンピューティングデバイス１００の実行中に決定される、すなわち「動的に」決定される。これらの実施形態では、ＴＬＢ１２０内に新たに追加されたエントリのメタデータを更新するために使用されるリース値は、コンピューティングデバイス１００が動作するにつれて経時的に変化し得る（所定のエントリのリース値は、一旦設定されると通常変更されることがない。しかしながら、これは必須ではない）。これらの実施形態では、コンピューティングデバイス１００は、上述したように、長すぎたり短すぎたりするリース値の使用を回避し得る。
【００７１】
いくつかの実施形態では、メモリ管理ユニット１１４（又はコンピューティングデバイス１００内の別のハードウェア若しくはソフトウェアエンティティ）は、リース値を動的に決定するために使用される１つ以上のポリシー、ルール、閾値等で構成されている。例えば、１つ以上のリース値（すなわち、リース期間）は、ＴＬＢ１２０のヒット率又はミス率（期限切れエントリによって引き起こされるミスを含む）、ＴＬＢ１２０内のエントリのアクセス数、実行されたページテーブルウォークの回数（ＴＬＢ内の期限切れエントリに基づくページテーブルウォークを含む）、メモリアクセスの数、タイプ若しくは位置、ＴＬＢ１２０及び／又は別のエンティティの動作モード（例えば、メモリ１０６、コア１０８等）等の閾値等のような、対応するランタイム条件閾値に関連付けることができる。例えば、ＴＬＢ１２０のヒット若しくはミスの割合、又は、ヒット若しくはミスの数が閾値（例えば、Ｙマイクロ秒あたりＸヒット）を下回る場合に、第１リース値が使用されてもよく、その一方で、ＴＬＢ１２０内のヒット若しくはミスの割合、又は、ヒット若しくはミスの数が閾値以上の場合に、第２リース値が使用されてもよい。別の例として、第１リース値は、ＴＬＢ１２０で見つけた期限切れエントリの率又は数が閾値を下回る場合に使用されてもよく、第２リース値は、ＴＬＢ１２０内の期限切れエントリの率又は数が閾値以上の場合に使用されてもよい。別の例として、３つのリース値のうち何れを使用すべきかを決定するために、コア１０８又はコンピューティングデバイス１００の動作モードに基づく２つの閾値（例えば、低電力、全出力、高性能等）を使用してもよく、これにより、第１閾値未満の場合に（例えば、低電力モードで）第１リース値が使用され、第１閾値と第２閾値との間の場合に（例えば、全出力モードで）第２リース値が使用され、第２閾値より高い場合に（例えば、高性能モードで）第３リース値が使用される。
【００７２】
いくつかの実施形態では、最新リースが期限切れになっている（又は期限切れになっていない）ページテーブルエントリを変更しようとする試みに基づいてリース値を動的に決定してもよい。これらの実施形態では、特定の数のＴＬＢシュートダウンが発生するまでに、最新リース値が期限切れでない及び／又は閾値より大きいページテーブルエントリを期限切れから変更するために複数の試みが行われるため、リース値を段階的に短くすることができる。さらに（又は代替的に）、指定された数のページテーブルウォークが発生するまで、期限切れのリース値に起因して複数のＴＬＢミスが発生すると、リース値が徐々に長くなる。
【００７３】
いくつかの実施形態では、リース値は、メモリ１０６内のページのプロパティ及び／又はメモリ１０６内のページのプロパティの変化若しくは期待される変化に基づいて動的に決定されてもよい。例えば、メモリ管理ユニット１１４は、ページ、ページのアクセス、メモリアクセス等を監視して、１つ以上のページの１つ以上のプロパティが変更されたこと及び／又は変更が予測されることを決定してもよい。別の例として、コンピューティングデバイス１００内のハードウェア又はソフトウェアエンティティ（例えば、プロファイリングエンティティ）は、１つ以上のページの１つ以上のプロパティが変更されたこと、当該変更が予測されること及び／又は今後変更されることをメモリ管理ユニット１１４に伝送してもよい。これらのプロパティには、リース値を動的に決定するために使用できるページのプロパティ又はページに関連するプロパティ（アクセス許可、ページサイズ、メモリ内のページ位置、ページにアクセスする１つ以上のプログラムのタイプ、当該プログラムの動作フェーズ等を含む）を含むことができる。メモリ管理ユニット１１４は、長すぎる又は短すぎるリース値の使用を避けるように、リース値を設定することができる。
【００７４】
リース値を設定する場合、メモリ管理ユニット１１４は、ＴＬＢ１２０内のエントリが期限切れとなる時間の表現を用いて、ＴＬＢ１２０内のエントリのメタデータ（例えば、リース値５０６）を更新する。上述したように、リース値は、ＴＬＢ１２０やメモリ管理ユニット１１４等が有効期限として認識可能な任意の値であってもよい。例えば、時間は、将来のシステムクロック時間、開始時間からのオフセット、エポック識別子／カウンタ／番号、イベント識別子／カウンタ／番号、カウントダウン時間、別の位置（例えば、ＴＬＢ１２０内の他の位置、メモリ１０６等の他の位置）に記憶されたリース値への参照若しくはポインタ、及び／又は、有効期限の別の表現を含むことができる。時間は、周知のマルチバイト表現の時間、ビットパターン、ストリング等を含む様々な形態の何れかで記憶することができる。時間は、例えば、長い形式の時間の表現の無関係な部分又は不要な部分を切り捨て、時間値の一部又は全てをハッシュする等のように、縮小、単純化及び／又は圧縮された形式で記憶されてもよい。
【００７５】
メモリ管理ユニット１１４は、ＴＬＢ１２０内のエントリを更新することに加えて、リース値に基づいてページテーブルエントリのメタデータの最新リース値（例えば、最新リース３０６）をページテーブル１２２内で選択的に更新する（ステップ６１２）。本明細書で使用されるように、「選択的に」更新することは、条件が満たされたときに最新リース値が更新され、既存の最新リース値がリース値よりも後にならないことを意味する。この動作のために、メモリ管理ユニット１１４は、既存の最新リース値をＴＬＢ１２０内のエントリのリース値と比較して、既存の最新リース値が、有効期限に関して、エントリのリース値の時間より後（すなわち、それ以降）であるかどうかを判定する。リース値が既存の最新リース値よりも後である場合、メモリ管理ユニット１１４は、既存の最新リース値をリース値（又は、リース値を表す値、リース値に比例する値等）で上書きする。例えば、リース値が絶対時間／特定時間、相対時間／オフセット時間、イベントベース又はエポックベースの基準等である場合、メモリ管理ユニット１１４は、最新リース値をリース値で（又は、リース値に基づいて）上書きする。一方、リース値が最新リース値より前である／早い場合、メモリ管理ユニット１１４は、最新リース値を更新しない。このようにして、ページテーブルエントリの最長／最新の有効期限リースがページテーブル１２２に維持される。これにより、図８〜図９に記載するように、ＴＬＢシュートダウン又は遅延の回避が可能になる。
【００７６】
ステップ６１２は、ページテーブルエントリに対する既存の最新リース値が既に存在するかのように記載されているが、最新リース値がまだ存在しない可能性がある。例えば、ページテーブルエントリからの仮想アドレスから物理アドレスへの変換の他のコピーがＴＬＢに記憶されていない場合、最新リース値はデフォルト値（例えば、時間０等のように、既に期限切れになっているはずの時間）に設定され得る。この場合、何れのリース値も最新リース値より後であるため、上述した比較では、最新リース値を常に上書きする結果になる。
【００７７】
（ＴＬＢのエントリに対するリース値の使用）
図７は、いくつかの実施形態による、ＴＬＢ内のエントリのリース値を使用するプロセスを示すフロー図である。図７に示す動作は、いくつかの実施形態によって実行される動作の一般的な例として表されることに留意されたい。他の実施形態によって実行される動作は、異なる動作及び／又は異なる順序で実行される動作を含む。また、特定のメカニズム（例えば、メモリ管理ユニット１１４、コア１０８／ＴＬＢ１２０等）が、動作を説明するために使用されるが、いくつかの実施形態では、他のメカニズムが動作を実行してもよい。例えば、コア１０９／ＴＬＢ１２１は、コア１０８／ＴＬＢ１２０の代わりに動作を実行してもよい。
【００７８】
図７に示すプロセスは、ＴＬＢ１２０内の制御機構が、仮想アドレスに関連する物理アドレスの要求をメモリ管理ユニット１１４から受信すると開始する（ステップ７００）。換言すると、ＴＬＢ１２０は、仮想アドレスから物理アドレスへの変換に対する仮想アドレスの要求を受信する。
【００７９】
次に、制御機構は、仮想アドレスから物理アドレスへの変換（すなわち、仮想アドレスから物理アドレスへの変換が記憶されているエントリ）についてＴＬＢ１２０内のエントリを検索する（ステップ７０２）。一般に、この動作中、ＴＬＢ１２０は、仮想アドレスの一部又は全てを、ＴＬＢ１２０内のエントリに記憶された仮想アドレスから物理アドレスへの変換のセットの一部又は全ての仮想アドレス情報と比較する。例えば、いくつかの実施形態では、ＴＬＢ１２０は、仮想アドレスから物理アドレスへの変換を記憶するコンテンツアドレス可能メモリを含み、制御機構は、コンテンツアドレス可能メモリ内の仮想アドレスを検索する。別の例として、いくつかの実施形態では、ＴＬＢ１２０は、テーブル、ディレクトリ及び／又は別のデータ構造を含み、制御機構は、テーブル、ディレクトリ及び／又は他のデータ構造において対応する検索を実行する。
【００８０】
いくつかの実施形態では、仮想アドレスは、ハッシュ関数を使用してハッシュ値を生成するために使用され、切り捨てられ、さもなければ縮小される等のように、検索が実行される前に処理される。これらの実施形態では、仮想アドレスから物理アドレスへの変換は、同様の方法で対応する仮想アドレスから生成されたタグ、キー、ポインタ等と共にＴＬＢ１２０に記憶される。
【００８１】
仮想アドレスから物理アドレスへの変換がＴＬＢ１２０内で見つからない場合（ステップ７０４）、制御機構は、ＴＬＢ１２０のミスの指示をメモリ管理ユニット１１４に返す（ステップ７０６）。ミスの指示を受信したことに基づいて、メモリ管理ユニット１１４は、ページテーブルウォークを実行して、仮想アドレスから物理アドレスへの変換を取得する。
【００８２】
仮想アドレスから物理アドレスへの変換がＴＬＢ１２０内で見つかった場合（ステップ７０４）、制御機構は、仮想アドレスから物理アドレスへの変換のリースが期限切れかどうかを判断する（ステップ７０８）。一般に、この動作は、リースが期限切れになる時間（又は他の値）を現在時刻（又は他の参照値）と比較して、リースが期限切れになったかどうかを判断することを含む。例えば、リース値が絶対時間／指定時間（例えば、時、分、秒等）である場合、絶対時間／指定時間は、現在のシステム時間、参照タイマ及び／又は別のカウンタ若しくはクロックと比較され得る。別の例として、リース値が相対時間／オフセット時間である場合、相対時間／オフセット時間は、オフセットタイマ又はカウンタの現在の値、基準時間値＋オフセット等に基づいて計算、決定等された時間値と比較することができる。さらに別の例として、リース値がイベントベース又はエポックベースの参照値である場合、イベントベース又はエポックベースの参照値を現在のイベント識別子又はエポックカウンタと比較することができる。
【００８３】
いくつかの実施形態では、現在の絶対時間／特定時間又は相対時間／オフセット時間がリース値を上回る場合、イベントベース又はエポックベースの基準値を上回る場合等において、リースが期限切れしたと判断される。例えば、システム時間がＰ（リース値Ｋよりも後の値）である場合、リースは期限切れである。別の例として、システムのエポックカウンタがＭ（最新リース値Ｈよりも高いカウンタ）である場合、最新リースは期限切れである。
【００８４】
リースが期限切れでない場合、制御機構は、仮想アドレスに関連する物理アドレスをメモリ管理ユニット１１４に返す（ステップ７１０）。例えば、ＴＬＢ１２０がコンテンツアドレス可能メモリを含む場合、制御機構は、コンテンツアドレス可能メモリから物理アドレスを取り出し、その物理アドレスをメモリ管理ユニット１１４に返すことができる。別の例として、ＴＬＢ１２０がディレクトリ、テーブル又は他のデータ構造を含む場合、制御機構は、対応する検索動作を実行して、仮想アドレスに基づく物理アドレスを取り出し、その物理アドレスをメモリ管理ユニット１１４に返すことができる。
【００８５】
リース値は、ＴＬＢ１２０内の仮想アドレスから物理アドレスへの変換の使用を制御するために使用されるものとして記載されているが、エントリのメタデータへのアクセスも同様に制御することができる。例えば、所定の仮想アドレスに対するアクセス許可情報（読み出し／書き込み、読み出し専用等）を取得する要求が受信された場合、上記のようにリース値を使用して、アクセス許可情報をエントリから返すかどうか（又は返さない）ことを制御することができる。一般に、いくつかの実施形態では、所定のエントリ内の一部又は全ての情報へのアクセスは、記述されたリース値を使用して制御されてもよい。
【００８６】
ＴＬＢ１２０のエントリからの情報（例えば、仮想アドレスから物理アドレスへの変換、メタデータ等）を上述したように戻す（または戻さない）ことにより、記載された実施形態では、ＴＬＢ１２０内のエントリの寿命を制御するためにリース値を使用する。換言すると、ＴＬＢ１２０内のエントリは、期限切れになる前に寿命が制限されており、指定された動作のためにそれ以上使用することができない。本明細書に記載したように、これにより、コンピューティングデバイス１００は、ＴＬＢシュートダウンの実行を回避することができる。
【００８７】
（ページテーブルエントリの最新リース値の使用）
図８は、いくつかの実施形態による、ページテーブル１２２内のページテーブルエントリの最新リースを使用するプロセスを示すフロー図である。図８に示す動作は、いくつかの実施形態によって実行される動作の一般的な例として表されることに留意されたい。他の実施形態によって実行される動作は、異なる動作及び／又は異なる順序で実行される動作を含む。また、特定のメカニズム（例えば、メモリ管理ユニット１１４、コア１０８／ＴＬＢ１２０等）が動作を説明するために使用されているが、いくつかの実施形態では、他のメカニズムが動作を実行してもよい。例えば、コア１０９／ＴＬＢ１２１は、コア１０８／ＴＬＢ１２０の代わりに動作を実行してもよい。
【００８８】
図８に示すプロセスは、メモリ管理ユニット１１４が、ページテーブルエントリが変更されることを判断すると、開始する（ステップ８００）。例えば、メモリ管理ユニット１１４は、例えば、メモリのページがメモリ１０６内で移動した場合、仮想アドレスが変更した場合等において、ページテーブルエントリ内の仮想アドレスから物理アドレスへの変換を変更する要求をコア１０８から受信することができる。別の例として、メモリ管理ユニット１１４は、例えば、メモリ１０６内の対応するページのアクセス許可が変更された場合、アクセスカウンタが変更されることになる場合等において、ページテーブルに関連するメタデータを変更する要求を、コア１０８から受信することができる。
【００８９】
そして、メモリ管理ユニット１１４は、ページテーブルから、ページテーブルエントリの最新リース値を取得する（ステップ８０２）。一般に、最新リース値を取得すると、メモリ管理ユニット１１４は、（例えば、上述したように、ページテーブルを検索又はウォーキングすることによって）ページテーブル１２２内のページテーブルエントリを見つけ、エントリに関連するメタデータ（例えば、メタデータ２０４）から最新リース値を取得する。
【００９０】
次に、メモリ管理ユニット１１４は、ページテーブルエントリの最新リース値が期限切れかどうかを判断する（ステップ８０４）。より具体的には、メモリ管理ユニット１１４は、最新リース値に基づいて、ＴＬＢに保持されているページテーブルエントリに基づく仮想アドレスから物理アドレスへの変換の全てのコピーが期限切れであるかどうかを判断する。一般に、この動作は、最新リースが期限切れになる時間（又は他の値）を現在時刻（又は他の参照値）と比較して、最新リースが期限切れになったかどうかを判断することを含む。例えば、最新リースが絶対時間／指定時間（例えば、時、分、秒等）である場合、絶対時間／指定時間を、現在のシステム時間、参照タイマ及び／又は別のカウンタ若しくはクロックと比較することができる。別の例として、最新リースが相対時間／オフセット時間である場合、相対時間／オフセット時間を、オフセットタイマ又はカウンタの現在の値、基準時間値＋オフセット等に基づいて計算、決定等された時間値と比較することができる。さらに別の例として、最新リースがイベントベース又はエポックベースの参照値である場合、イベントベース又はエポックベースの参照値を、現在のイベント識別子又はエポックカウンタと比較することができる。
【００９１】
いくつかの実施形態では、現在の絶対時間／特定時間又は相対時間／オフセット時間が最新リース値を上回る場合、イベントベース又はエポックベースの基準値を上回る場合等において、最新リースが期限切れしたと判断される。例えば、システム時間がＰ（最新リース値Ｋよりも後の値）である場合、最新リースは期限切れである。別の例として、システムのエポックカウンタがＭ（最新リース値Ｈよりも高いカウンタ）である場合、最新リースは期限切れである。
【００９２】
最新リースが期限切れでなく（ステップ８０４）、ＴＬＢに保持されているページテーブルエントリからの仮想アドレスから物理アドレスへの変換の少なくとも１つの有効な（したがって使用可能な）コピーが存在する場合、メモリ管理ユニット１１４は、ページテーブルエントリとそのコピー（又は複数のコピー）との間に不一致を生じさせることなくページテーブルエントリを変更することができない。したがって、メモリ管理ユニット１１４は、ＴＬＢの対応するエントリを無効化するためにＴＬＢシュートダウンを実行する（ステップ８０６）。上述したように、メモリ管理ユニット１１４は、ＴＬＢシュートダウンを実行する場合、仮想アドレスから物理アドレスへの変換、及び、ページテーブルエントリからのメタデータのコピーを保持し得る各ＴＬＢに対して、当該コピーを無効化させる。
【００９３】
ＴＬＢシュートダウンを実行した後、メモリ管理ユニット１１４は、ページテーブルエントリを変更する（ステップ８０８）。この動作中、メモリ管理ユニット１１４は、仮想アドレスから物理アドレスへの変換及び／又はページテーブルエントリのメタデータを更新する。
【００９４】
最新リースが期限切れであり（ステップ８０４）、ＴＬＢに保持されているページテーブルエントリからの仮想アドレスから物理アドレスへの変換の有効な（したがって使用可能な）コピーが存在しない場合、メモリ管理ユニット１１４は、不一致を生じさせることなくページテーブルエントリを変更することができる。したがって、メモリ管理ユニット１１４は、ページテーブルエントリを変更する（ステップ８０８）。最新リース値を使用して、仮想アドレスから物理アドレスへの変換のコピーがＴＬＢに保持されていないことを確認することができるので、この変更は、ＴＬＢシュートダウンを実行することなく行われることに留意されたい。
【００９５】
図９は、いくつかの実施形態による、ページテーブル１２２内のページテーブルエントリの最新リースを使用するプロセスを示すフロー図である。図９に示す動作は、いくつかの実施形態によって実行される動作の一般的な例として表されることに留意されたい。他の実施形態によって実行される動作は、異なる動作及び／又は異なる順序で実行される動作を含む。また、特定のメカニズム（例えば、メモリ管理ユニット１１４、コア１０８／ＴＬＢ１２０等）が動作を説明するために使用されるが、いくつかの実施形態では、他のメカニズムが動作を実行してもよい。例えば、コア１０９／ＴＬＢ１２１は、コア１０８／ＴＬＢ１２０の代わりに動作を実行してもよい。
【００９６】
図９に示すプロセスは、メモリ管理ユニット１１４が、ページテーブルエントリが変更されることを判断すると開始する（ステップ９００）。例えば、メモリ管理ユニット１１４は、例えばメモリのページがメモリ１０６内で移動した場合、仮想アドレスが変更した場合等において、ページテーブルエントリ内の仮想アドレスから物理アドレスへの変換を変更する要求をコア１０８から受信することができる。別の例として、メモリ管理ユニット１１４は、例えば、メモリ１０６内の対応するページのアクセス許可が変更された場合、アクセスカウンタが変更されることになる場合等において、ページテーブルに関連するメタデータを変更する要求をコア１０８から受信することができる。
【００９７】
そして、メモリ管理ユニット１１４は、ページテーブルから、ページテーブルエントリの最新リース値を取得する（ステップ９０２）。一般に、最新リース値を取得すると、メモリ管理ユニット１１４は、（例えば、上述したように、ページテーブルを検索又はウォーキングすることによって）ページテーブル１２２内のページテーブルエントリを見つけ、エントリに関連するメタデータ（例えば、メタデータ２０４）から、最新リース値を取得する。
【００９８】
次に、メモリ管理ユニット１１４は、ページテーブルエントリの最新リース値が期限切れかどうかを判断する（ステップ９０４）。より具体的には、メモリ管理ユニット１１４は、最新リース値に基づいて、ＴＬＢに保持されているページテーブルエントリに基づく仮想アドレスから物理アドレスへの変換の全てのコピーが期限切れであるかどうかを判断する。一般に、この動作は、最新リースが期限切れになる時間（又は他の値）を現在時刻（又は他の参照値）と比較して、最新リースが期限切れになったかどうかを判断することを含む。例えば、最新リースが絶対時間／指定時間（例えば、時、分、秒等）である場合、絶対時間／指定時間を、現在のシステム時間、参照タイマ及び／又は別のカウンタ若しくはクロックと比較することができる。別の例として、最新リースが相対時間／オフセット時間である場合、相対時間／オフセット時間を、オフセットタイマ又はカウンタの現在の値、基準時間値＋オフセット等に基づいて計算、決定等された時間値と比較することができる。さらに別の例として、最新リースがイベントベース又はエポックベースの参照値である場合、イベントベース又はエポックベースの参照値を、現在のイベント識別子又はエポックカウンタと比較することができる。
【００９９】
いくつかの実施形態では、現在の絶対時間／特定時間又は相対時間／オフセット時間が最新リース値を上回る場合、イベントベース又はエポックベースの基準値を上回る場合等において、最新リースが期限切れしたと判断される。例えば、システム時間がＰ（最新リース値Ｋよりも後の値）である場合、最新リースは期限切れである。別の例として、システムのエポックカウンタがＭ（最新リース値Ｈよりも高いカウンタ）である場合、最新リースは期限切れである。
【０１００】
最新リースが期限切れでなく（ステップ９０４）、ＴＬＢに保持されているページテーブルエントリからの仮想アドレスから物理アドレスへの変換の少なくとも１つの有効な（したがって使用可能な）コピーが存在する場合、メモリ管理ユニット１１４は、ページテーブルエントリとそのコピー（又は複数のコピー）との間に不一致を生じさせることなくページテーブルエントリを変更することができない。したがって、メモリ管理ユニット１１４は、最新リースが期限切れになるまで待つ（ステップ９０６）。いくつかの実施形態では、待つことは、最新リースが期限切れになるまでに残った時間が閾値時間よりも短いと判断し、最新リースが期限切れになるまでページテーブルエントリの変更を中断することを含む。いくつかの実施形態では、メモリ管理ユニット１１４は、１つ以上の後続／新たに取得したリースを待つのを回避するように待つ一方で、仮想アドレスから物理アドレスへの変換の他のコピーがＴＬＢに記憶されるのを防いでもよい。
【０１０１】
最新リースが期限切れになるまで待った後、メモリ管理ユニット１１４は、ページテーブルエントリを変更する（ステップ９０８）。この動作中、メモリ管理ユニット１１４は、仮想アドレスから物理アドレスへの変換及び／又はページテーブルエントリのメタデータを更新する。
【０１０２】
最新リースが期限切れであり（ステップ９０４）、ＴＬＢに保持されているページテーブルエントリからの仮想アドレスから物理アドレスへの変換の有効な（したがって使用可能な）コピーが存在しない場合、メモリ管理ユニット１１４は、不一致を生じさせることなくページテーブルエントリを変更することができる。したがって、メモリ管理ユニット１１４は、ページテーブルエントリを変更する（ステップ９０８）。最新リース値を使用して、仮想アドレスから物理アドレスへの変換のコピーがＴＬＢに保持されていないことを確認することができるので、この変更は、ＴＬＢシュートダウンを実行することなく行われることに留意されたい。
【０１０３】
（延長カウンタに基づくリース値の動的な設定）
上述したように、いくつかの実施形態では、ＴＬＢエントリに対してリース値が動的に設定される。これらの実施形態のいくつかでは、ページテーブルエントリに関連する延長カウンタが、リース値を動的に設定するために使用される。図１０は、いくつかの実施形態による、延長カウンタに基づいてリース値を動的に設定するプロセスを示すフロー図である。図１０に示す動作は、いくつかの実施形態によって実行される動作の一般的な例として表されることに留意されたい。他の実施形態によって実行される動作は、異なる動作及び／又は異なる順序で実行される動作を含む。また、特定のメカニズム（例えば、メモリ管理ユニット１１４等）が動作を説明するために使用されるが、いくつかの実施形態では、他のメカニズムが動作を実行してもよい。
【０１０４】
図１０に示すプロセスは、メモリ管理ユニット１１４が所定の仮想アドレスに対する仮想アドレスから物理アドレスへの変換のためにＴＬＢのルックアップを実行するときに開始する（ステップ１０００）。この例では、対応するエントリがＴＬＢに存在するが、リースが期限切れである（すなわち、ＴＬＢエントリのリース値が現在時刻より早い／前である）と仮定する。したがって、メモリ管理ユニット１１４は、ＴＬＢ内の対応するエントリのメタデータのリース値を現在時刻と比較して、リースが期限切れであると判断する（ステップ１００２）。次に、メモリ管理ユニット１１４は、ページテーブルウォークを実行して、対応するページテーブルエントリから情報（すなわち、仮想アドレスから物理アドレスへの変換及びメタデータ）を取得する（ステップ１００４）。メモリ管理ユニット１１４は、対応するページテーブルエントリから情報を取得し、ＴＬＢエントリが期限切れであると発見したことに基づいて、対応するページテーブルエントリの延長カウンタをインクリメント又は更新する（ステップ１００６）。
【０１０５】
次に、メモリ管理ユニット１１４は、ページテーブルエントリから取得した情報（すなわち、仮想アドレスから物理アドレスへの変換及びメタデータ）に基づいてＴＬＢ内の対応するエントリを更新する（ステップ１００８）。また、メモリ管理ユニット１１４は、延長カウンタに少なくとも部分的に基づいて、ＴＬＢ内の対応するエントリのリース値を設定する（ステップ１０１０）。換言すると、メモリ管理ユニット１１４は、延長カウンタの値を、その結果がリース値（すなわち、時間についてのリースの長さ）となる１つ以上の数学演算、論理演算等を含むリース長の式に対する入力として使用する。例えば、延長カウンタには、以前／既存のリース値、定数、デフォルト値若しくは基準リース値、及び／又は、リース値に達するための別の値を乗算することができる。別の例として、延長カウンタは、指数式、一次式等の数式で使用することができる。一般に、リース延長数が増加するにつれて、延長カウンタを使用して、リース長を対応する量ずつ増加させることができる。
【０１０６】
いくつかの実施形態では、特定のイベントが発生すると、延長カウンタが低減し、及び／又は、指定された値に設定される。例えば、ページがメモリ内で移動し、割り当てられる場合等では、延長カウンタを初期値（例えば、１又は別の値）に設定することができる。別の例として、例えば、指定された間隔で指定された量だけ延長カウンタを減らす等によって、１つ以上のページテーブルエントリの延長カウンタを経時的に低減することができる。このようにして、対応するＴＬＢエントリのリースは、比較的長い期間にわたり限定された数のローカルな有効期限／延長によって（例えば、対応するページを含むアクティビティの短い間隔に起因して）比較的長い期間影響を受けることがなく、例えば、リースは、特定のイベントの後等に、経時的に初期値又はデフォルト値に戻る。
【０１０７】
いくつかの実施形態では、コンピューティングデバイス１００の１つ以上のエンティティ（例えば、オペレーティングシステム、ハードウェア機能ブロック等）は、延長カウンタの値を（例えば、リースが延長されるとき以外のときに）設定することができる。例えば、所定のページが長期間に亘り使用される場合、オペレーティングシステムは、対応するページテーブルエントリの延長カウンタをより大きい値に設定することができ、これにより、ＴＬＢエントリのリースが急速に期限切れになるのを回避することができる。別の例として、所定のページが短期間に亘り使用される場合、オペレーティングシステムは、延長カウンタをより小さい値に設定することができ、これにより、ＴＬＢエントリがより早く期限切れになる。
【０１０８】
いくつかの実施形態では、リース値を設定することに加えて、延長カウンタを他の動作に使用することができる。例えば、いくつかの実施形態では、ページは、使用レベルに基づいて、メモリ内の異なるタイプ及び／又は位置の間で移行される（例えば、「ホット」又は使用頻度の高いページがより高速なメモリに移行され、「コールド」又は使用頻度の低いページがより低速なメモリに移行される等）。これらの実施形態では、ページを移行する１つ以上の時間を決定する場合（例えば、移行間隔を設定する等）、１つ以上のページテーブルエントリの延長カウンタを考慮に入れることができる。例えば、閾値数を超えるページテーブルエントリが指定された値を超えるカウンタを有する場合、ページの移行をスケジュールし、及び／又は、移行間隔を更新してもよい。
【０１０９】
（リース値を動的に設定する疑似コードの例）
図１１は、いくつかの実施形態による、リース値を動的に設定する疑似コードの一例を示す図である。図１１に示す例では、メモリ内のアドレス「Ａ」のページに関連するＴＬＢエントリに対してリース値が設定される。換言すると、図１１に示す動作中、アドレスＡのページのＴＬＢエントリに対してリースを設定する際に使用されるリース値が決定され、設定される。そして、リース値は、本明細書に記載したように、メモリ内のアドレスＡに関連するＴＬＢエントリに対してリースを設定するために使用されてもよい。図１１に示す動作は、いくつかの実施形態によって実行される動作の一般的な例として表されることに留意されたい。他の実施形態によって実行される動作は、異なる動作及び／又は異なる順序で実行される動作を含む。また、特定のメカニズム（例えば、メモリ管理ユニット１１４等）が動作を説明するために使用されるが、いくつかの実施形態では、他のメカニズムが動作を実行してもよい。
【０１１０】
図１０及び図１１に示すように、図１１の例は、リース値を設定するために図１０に示す動作とは異なる動作を使用する。したがって、図１０〜図１１は、異なる実施形態を示しており、異なる実施形態では、リース値を決定するための異なるタイプ及び構成の動作を実行し得る。一般的には、上述したように、記載された実施形態は、エントリのリースがあまりに早く期限切れにならないような十分な長さ及び／又はリースがあまりに遅く期限切れにならないような十分な短さの値になるように、リース値を設定する動作を実行する。
【０１１１】
擬似コードは、２つのセクション（セクション１１００，１１０２）を含む。セクション１１００は、ページテーブルエントリが上書き、更新又は他の方法で変更された場合に実行可能な動作を示す。ページテーブルエントリは、ページがメモリ内の第１位置から第２位置に移動したとき等に無効化することができる。一般に、セクション１１００では、リースがまだ期限切れになっていないページテーブルエントリの無効化の後に、リース値を低減／短縮する。
【０１１２】
セクション１１００に示すように、アドレスＡのページのページテーブルエントリが無効化されると、メモリ管理ユニット１１４は、ページテーブルエントリに関連するメタデータの最新リースをチェックして、ページテーブルエントリの最新リースが現在時刻より後かどうか（すなわち、最新リースが期限切れでないかどうか）を判断する。期限切れでない場合、メモリ管理ユニット１１４は、リース値（ＬＥＡＳＥ＿Ａ）を指定された値にリセットする。例えば、図１１に示すように、メモリ管理ユニット１１４は、リース値を、現在時刻（ＣＵＲＲＥＮＴ  ＴＩＭＥ）から、ＴＬＢ内のミスエントリ又は期限切れのエントリ（ＴＬＢ内の任意のエントリであってもよく、アドレスＡのエントリである必要はない）の最後のページテーブルウォークの時間（ＬＡＳＴ＿ＰＴＷ＿ＴＩＭＥ＿ＳＴＡＭＰ）を引いた値を定数値（Ｃ）で除算した値に設定する。例えば、定数の値は、２、５等の値、又は、コンピューティングデバイス１００内のＴＬＢシュートダウン、ページテーブルウォーク及び／若しくは他の動作条件のレートに基づいて設定された値であってもよい。
【０１１３】
セクション１１０２は、ＴＬＢエントリの期限切れによりページウォークが発生したときに実行可能な動作を示す。そのような情報がＴＬＢに存在しない場合、仮想アドレスから物理アドレスへの変換情報を取得するために、ページテーブルウォークを実行する必要がある。これには、ＴＬＢエントリのリースが期限切れになった場合も含まれるが、ＴＬＢ内にエントリが残っていても当該エントリはもはや有効であるとみなされない。一般に、セクション１１０２では、ＴＬＢエントリが見つからないために、設定された数のページテーブルウォークに従ってリース値が増加する。
【０１１４】
セクション１１０２に示すように、期限切れによりページテーブルウォークが発生すると、メモリ管理ユニットは、連続するＴＬＢミスの数（ＮＵＭ＿ＴＬＢ＿ＭＩＳＳＥＳ）のカウンタをインクリメントする。メモリ管理ユニット１１４は、連続するＴＬＢのミス数のカウンタが閾値（例えば、１６、２０又は別の値）を上回る場合、リース値を、（１）現在時刻（ＣＵＲＲＥＮＴ  ＴＩＭＥ）からＴＬＢ内のミスエントリ（ＴＬＢ内の任意のエントリであってもよく、アドレスＡのエントリである必要はない）の最後のページテーブルウォークのタイムスタンプ（ＬＡＳＴ＿ＰＴＷ＿ＴＩＭＥ＿ＳＴＡＭＰ＿ＯＮ＿ＭＩＳＳ）を引いた値に定数値（Ｃ’）を加算した値、又は、（２）定数値（Ｃ’’）で乗算したリース値の最大値に設定する。定数Ｃ’及びＣ’’の値は、コンピューティングデバイス１００内のＴＬＢシュートダウン、ページテーブルウォーク及び／又は他の動作条件のレートに基づいて設定される。そして、連続するＴＬＢのミス数のカウンタは、０に設定される（すなわち、後続のカウントを開始するためにクリアされる）。他に、連続するＴＬＢのミス数のカウンタが閾値を下回る場合、ミスエントリの最後のページテーブルウォークのタイムスタンプは、現在時刻に設定される。そして、ミスエントリの最後のページテーブルウォークの時間は、現在時刻に設定される。
【０１１５】
（リース値及び最新リース値に基づく追加動作）
上述したように、記載された実施形態は、ＴＬＢシュートダウンを回避するためにリース値及び最新リースを使用することができる。また、記載された実施形態は、他の動作のためにリース値を使用することができる。例えば、いくつかの実施形態では、ＴＬＢエントリの削除を選択する置換ポリシー（すなわち、新しいＴＬＢエントリのためのスペースを生成する）は、リース値を使用して拡張される。これらの実施形態では、拡張は、置換ポリシーに基づくＴＬＢエントリの置換決定の一部として、期限切れの（又は期限切れでない）リースを使用することを含む。例えば、期限切れのリースを有するＴＬＢエントリは、優先的に削除されるように選択されてもよく、及び／又は、リースの有効期限は、他の置換ポリシー要素（例えば、最も最近に使用されたもの、少なくとも使用されたもの等）と共に、削除するＴＬＢエントリを選択する要素として使用されてもよい。一般に、記載された実施形態は、ＴＬＢエントリ及び／又はその有効期限を対象として任意のタイプの動作を実行する場合、リース値及び／又は最新リース値を使用することができる。
【０１１６】
いくつかの実施形態では、コンピューティングデバイス（例えば、図１のコンピューティングデバイス１００及び／又はその一部）は、本明細書に記載された動作の一部又は全てを実行するために非一時的なコンピュータ可読記憶媒体に記憶されたコード及び／又はデータを使用する。より具体的には、コンピューティングデバイスは、コンピュータ可読記憶媒体からコード及び／又はデータを読み出し、記載された動作を実行するときにコードを実行し、及び／又は、データを使用する。
【０１１７】
コンピュータ可読記憶媒体は、コンピューティングデバイスによって使用されるコード及び／又はデータを記憶する任意のデバイス若しくは媒体又はこれらの組み合わせであってもよい。例えば、コンピュータ可読記憶媒体は、フラッシュメモリ、ランダムアクセスメモリ（ｅＤＲＡＭ、ＲＡＭ、ＳＲＡＭ、ＤＲＡＭ、ＤＤＲ、ＤＤＲ２／ＤＤＲ３／ＤＤＲ４  ＳＤＲＡＭ等）、読み出し専用メモリ（ＲＯＭ）及び／又は磁気若しくは光学記憶媒体（例えば、ディスクドライブ、磁気テープ、ＣＤ、ＤＶＤ）を含む揮発性メモリ又は不揮発性メモリを含むことができるが、これらに限定されるものではない。
【０１１８】
いくつかの実施形態では、１つ以上のハードウェアモジュールは、本明細書に記載された動作を実行するように構成されている。例えば、ハードウェアモジュールは、１つ以上のプロセッサ／コア／中央処理装置（ＣＰＵ）、特定用途向け集積回路（ＡＳＩＣ）チップ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、キャッシュ／キャッシュコントローラ、メモリ管理ユニット、計算ユニット、組込みプロセッサ、グラフィックスプロセッサ（ＧＰＵ）／グラフィックスコア、パイプライン、アクセラレーテッドプロセッシングユニット（ＡＰＵ）及び／又は他のプログラム可能論理デバイスを備えることができるが、これらに限定されるものではない。このようなハードウェアモジュールが起動すると、ハードウェアモジュールは、動作の一部又は全てを実行する。いくつかの実施形態では、ハードウェアモジュールは、動作を実行するための命令（プログラムコード、ファームウェア等）を実行することによって、構成された１つ以上の汎用回路を含む。
【０１１９】
いくつかの実施形態では、本明細書に記載された構造及びメカニズム（例えば、コンピューティングデバイス１００及び／又はその一部）の一部又は全てを表すデータ構造は、データベース又は他のデータ構造を含む非一時的なコンピュータ可読記憶媒体に記憶されており、データ構造は、コンピューティングデバイスによって読み出され、構造及びメカニズムを備えるハードウェアを製造するために、直接的又は間接的に使用することができる。例えば、データ構造は、Ｖｅｒｉｌｏｇ又はＶＨＤＬ等の高レベル設計言語（ＨＤＬ）におけるハードウェア機能の動作レベル記述、又は、レジスタ転送レベル（ＲＴＬ）記述であってもよい。記述は、合成ツールによって読み出されてもよく、このツールは、記述を合成して、上述した構造及びメカニズムを備えるハードウェアの機能を表す合成ライブラリからのゲート／回路要素のリストを備えるネットリストを生成し得る。次に、ネットリストを配置及び経路指定して、マスクに適用される幾何学的形状を記述するデータセットを生成してもよい。次いで、マスクは、上述した構造及びメカニズムに対応する１つ以上の半導体回路を製造するために、様々な半導体製造工程で使用されてもよい。或いは、コンピュータアクセス可能な記憶媒体上のデータベースは、所望により、ネットリスト（合成ライブラリ有り又は無し）、データセット、又は、グラフィックデータシステム（ＧＤＳ）ＩＩデータであってもよい。
【０１２０】
この説明では、いくつかの実施形態を説明において、機能ブロックを参照してもよい。一般に、機能ブロックは、記載された動作を実行する１つ以上の相互回路を含む。いくつかの実施形態では、機能ブロック内の回路は、記載された動作を実行するためにプログラムコード（例えば、マイクロコード、ファームウェア、アプリケーション等）を実行する回路を含む。
【０１２１】
上述した実施形態の記載は、例示及び説明のみのために提示されたものである。これらは、網羅的であることを意図するものでもないし、実施形態を開示された形態に限定するものでもない。したがって、当業者には多くの修正及び変更が明らかであろう。さらに、上記の開示は、実施形態を限定するものではない。実施形態の範囲は、添付の特許請求の範囲によって規定される。
【図１】
2019512815.tif 000003
【図２】
2019512815.tif 000004
【図３】
2019512815.tif 000005
【図４】
2019512815.tif 000006
【図５】
2019512815.tif 000007
【図６】
2019512815.tif 000008
【図７】
2019512815.tif 000009
【図８】
2019512815.tif 000010
【図９】
2019512815.tif 000011
【図１０】
2019512815.tif 000012
【図１１】
2019512815.tif 000013
【図１２】
2019512815.tif 000014
【国際調査報告】
2019512815.tif 000015
2019512815.tif 000016