(57)【要約】  アドレス変換キャッシュ  装置は、ページテーブルの１つまたは複数のページテーブルエントリに依存するアドレス変換データを格納するためのいくつかのキャッシュエントリ（４０）を有するアドレス変換キャッシュ（１２，１６）を有する。制御回路（５０）は、無効化ルックアップ操作を実行して無効化される少なくとも１つのターゲットキャッシュエントリを識別するためのアドレス情報を指定する無効化要求に応答する。ターゲットキャッシュエントリは、対応するアドレス変換データがアドレス情報に対応する少なくとも１つのターゲットページテーブルエントリに依存するエントリである。制御回路（５０）は、ターゲットページテーブルエントリのページサイズを示すページサイズ情報に応じて、無効化ルックアップ操作に使用するいくつかの無効化ルックアップモードのうちの１つを選択する。さまざまな無効化ルックアップモードは、アドレス情報に基づいてターゲットキャッシュエントリを識別するさまざまな方法に対応している。
2020529656.tif 000002
【特許請求の範囲】
【請求項１】
複数のキャッシュエントリを含むアドレス変換キャッシュであって、各キャッシュエントリは、メモリシステムに格納された１つまたは複数のページテーブルの１つまたは複数のページテーブルエントリに依存するアドレス変換データを格納する、アドレス変換キャッシュと、
少なくとも１つのターゲットページテーブルエントリに対応するアドレス情報を指定する無効化要求に応答して、無効化ルックアップ操作を実行して、前記アドレス変換データが前記少なくとも１つのターゲットページテーブルエントリに依存している前記アドレス変換キャッシュの少なくとも１つのターゲットキャッシュエントリを識別して、前記少なくとも１つのターゲットキャッシュエントリに格納されている前記アドレス変換データの無効化をトリガする、制御回路と、
を備える装置であって、
前記制御回路は、前記少なくとも１つのターゲットページテーブルエントリのページサイズを示すページサイズ情報に応じて、前記無効化ルックアップ操作に使用する複数の無効化ルックアップモードのいずれかを選択するように構成され、前記複数の無効化ルックアップモードは、前記アドレス情報に応じて前記少なくとも１つのターゲットキャッシュエントリを識別するさまざまな方法に対応する、
装置。
【請求項２】
前記無効化ルックアップモードが、
前記無効化ルックアップ操作が、前記アドレス情報に基づいて選択された前記アドレス変換キャッシュの少なくとも１つの選択されたキャッシュエントリにインデックスを付けること、および各選択されたキャッシュエントリが前記少なくとも１つのターゲットキャッシュエントリの１つであるかどうかの判断することを含む、キャッシュインデックスモードと、
前記無効化ルックアップ操作が、前記アドレス情報とは無関係に選択された前記アドレス変換キャッシュのキャッシュエントリの少なくともサブセットにアクセスすること、およびアクセスされた各キャッシュエントリが前記少なくとも１つのターゲットキャッシュエントリの１つであるかどうかを判断することを含む、キャッシュウォークモードと
を含む、請求項１に記載の装置。
【請求項３】
前記制御回路は、前記ページサイズが閾値サイズよりも小さいことを前記ページサイズ情報が示すとき、前記キャッシュインデックスモードを選択し、前記ページサイズが前記閾値サイズよりも大きいことを前記ページサイズ情報が示すとき、前記キャッシュウォークモードを選択するように構成される、請求項２に記載の装置。
【請求項４】
第１アドレスの第２アドレスへの変換を制御するためのステージ１ページテーブルを構成し、かつ前記第２アドレスの第３アドレスへの変換を制御するためのステージ２ページテーブルを構成する処理回路を備え、
前記アドレス変換キャッシュは、前記第１アドレスの前記第３アドレスへの直接変換を制御するための結合アドレス変換データを格納するように構成される、
請求項１から３のいずれか一項に記載の装置。
【請求項５】
各キャッシュエントリが、前記アドレス変換キャッシュによってサポートされる複数の異なるブロックサイズの１つを有するアドレスのブロックを変換するためのアドレス変換データを格納するように構成される、請求項１から４のいずれか一項に記載の装置。
【請求項６】
前記複数の無効化ルックアップモードが、前記無効化要求によって指定された前記アドレス情報に応じてアクセスされるキャッシュエントリを選択するための複数のキャッシュインデックスモードを含み、各インデックスモードは異なるブロックサイズに対応し、
前記無効化要求に応答して、前記制御回路は、前記ページサイズ情報に応じて前記複数のキャッシュインデックスモードのサブセットを選択し、かつ前記複数のキャッシュインデックスモードの前記選択されたサブセットに対応する１つまたは複数の無効化ルックアップ操作をトリガするように構成される、請求項５に記載の装置。
【請求項７】
前記ページサイズ情報が、
前記ページサイズの明示的な表示、
前記ページサイズの上限、
前記ページサイズの下限、
前記ページサイズが閾値サイズより小さいかどうかの表示、
前記ページサイズが閾値サイズより大きいかどうかの表示、
前記アドレス情報で指定されたアドレス変換範囲の開始アドレスおよび終了アドレス、
複数のページサイズから選択された適用可能なページサイズのサブセットを識別する情報、および
前記無効化要求に関連付けられたアドレス変換の複数のステージのうちの１つの表示、
のうちの少なくとも１つを含む、請求項１から６のいずれか一項に記載の装置。
【請求項８】
前記ページサイズ情報が、前記無効化要求によって指定される、請求項１から７のいずれか一項に記載の装置。
【請求項９】
前記無効化要求は、前記アドレス情報が前記少なくとも１つのターゲットページテーブルエントリを識別するための単一アドレスを指定するアドレス指定無効化要求を含む、請求項１から８のいずれか一項に記載の装置。
【請求項１０】
前記無効化要求は、前記アドレス情報がアドレスの無効化範囲を指定する範囲指定無効化要求を含み、前記少なくとも１つのターゲットページテーブルエントリは、前記無効化範囲内に少なくとも部分的に存在するアドレスグループに対応する少なくとも１つのページテーブルエントリを含む、請求項１から８のいずれか一項に記載の装置。
【請求項１１】
包括的範囲指定無効化要求に応答して、前記少なくとも１つのターゲットページテーブルエントリが、前記アドレスグループのいずれかの部分が前記無効化範囲内にあるアドレスグループに対応する１つまたは複数のページテーブルエントリを含む、請求項１０に記載の装置。
【請求項１２】
排他的範囲指定無効化要求に応答して、前記少なくとも１つのターゲットページテーブルエントリが、完全に前記無効化範囲内にあるアドレスグループに対応する１つまたは複数のページテーブルエントリを含む、請求項１０または１１に記載の装置。
【請求項１３】
各ページテーブルエントリが、
次のレベルのページテーブルエントリのアドレスを指定する中間ページテーブルエントリ、および、
アドレス変換マッピングを指定するリーフページテーブルエントリ、
のいずれかを含む、請求項１から１２のいずれか一項に記載の装置。
【請求項１４】
各ページテーブルエントリが、
次のレベルのページテーブルエントリのアドレスを指定する中間ページテーブルエントリ、および、
アドレス変換マッピングを指定するリーフページテーブルエントリ
のいずれかを含み、
リーフおよび中間の排他的範囲指定無効化要求に応答して、前記少なくとも１つのターゲットページテーブルエントリは、完全に前記無効化範囲内にあるアドレスグループに対応する所与のページテーブルの任意のリーフページテーブルエントリおよび前記所与のページテーブルの任意の中間ページテーブルエントリを含む、
請求項１２に記載の装置。
【請求項１５】
前記リーフおよび中間の排他的範囲指定無効化要求に応答して、前記少なくとも１つのターゲットページテーブルエントリが、少なくとも部分的に前記無効化範囲外にあるアドレスグループに対応する前記所与のページテーブルの中間ページテーブルエントリを除外する、請求項１４に記載の装置。
【請求項１６】
複数のキャッシュエントリを含むアドレス変換キャッシュからのアドレス変換データを無効化するための方法であって、各キャッシュエントリは、メモリシステムに格納された１つまたは複数のページテーブルの１つまたは複数のページテーブルエントリに依存してアドレス変換データを格納し、前記方法は、
少なくとも１つのターゲットページテーブルエントリに対応するアドレス情報を指定する無効化要求に応答して、
前記アドレス変換データが前記少なくとも１つのターゲットページテーブルエントリに依存する前記アドレス変換キャッシュの少なくとも１つのターゲットキャッシュエントリを識別するために、無効化ルックアップ操作を実行するステップであって、複数の無効化ルックアップモードのいずれが前記無効化ルックアップ操作に使用されるかは、前記少なくとも１つのターゲットページテーブルエントリのページサイズを示すページサイズ情報に応じて選択され、前記複数の無効化ルックアップモードは、前記アドレス情報に応じて前記少なくとも１つのターゲットキャッシュエントリを識別するさまざまな方法に対応する、ステップと、
前記少なくとも１つのターゲットエントリに格納された前記アドレス変換データの無効化をトリガするステップと
を含む、方法。
【請求項１７】
複数のキャッシュエントリを含むアドレス変換キャッシュであって、各キャッシュエントリは、メモリシステムに格納された１つまたは複数のページテーブルの１つまたは複数のページテーブルエントリに依存するアドレス変換データを格納し、
各ページテーブルエントリは、
次のレベルのページテーブルエントリのアドレスを指定する中間ページテーブルエントリ、および、
アドレス変換マッピングを指定するリーフページテーブルエントリ
のいずれかを含む、アドレス変換キャッシュと、
前記アドレス変換データが少なくとも１つのターゲットページテーブルエントリに依存する前記アドレス変換キャッシュの少なくとも１つのターゲットキャッシュエントリの無効化をトリガするために、アドレスの無効化範囲を示す範囲情報を識別するリーフおよび中間の排他的範囲指定無効化要求に応答する制御回路であって、前記少なくとも１つのターゲットページテーブルエントリは、完全に前記無効化範囲内にあるアドレスグループに対応する、所与のページテーブルの任意のリーフページテーブルエントリ、および前記所与のページテーブルの任意の中間ページテーブルエントリを含む、制御回路と
を備える、装置。
【請求項１８】
複数のキャッシュエントリを含むアドレス変換キャッシュであって、各キャッシュエントリはアドレス変換データを格納する、アドレス変換キャッシュと、
無効化ルックアップ操作を実行して、単一アドレスとページサイズ情報に応じて前記アドレス変換キャッシュの少なくとも１つのターゲットキャッシュエントリを識別し、前記少なくとも１つのターゲットキャッシュエントリに格納されている前記アドレス変換データの無効化をトリガするために、前記単一アドレスと、前記単一アドレスに対応するページテーブルエントリに関連付けられたページサイズを示すページサイズ情報とを指定する無効化要求に応答する制御回路と
を備える、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術はデータ処理の分野に関する。より詳細には、アドレス変換データのキャッシングに関する。
【０００２】
データ処理システムは、メモリシステムアクセス用にアドレスを変換するために使用されるアドレス変換データをキャッシュするための少なくとも１つのアドレス変換キャッシュを有し得る。キャッシュ内のアドレス変換データは、メモリシステム自体に格納されている１つまたは複数のページテーブルのページテーブルエントリに依存し得る。アドレス変換データをアドレス変換キャッシュにキャッシュすることにより、アドレス変換が必要になるたびにメモリからページテーブルを検索する必要がある場合よりも、アドレスをより速く変換できる。ページテーブルに変更が加えられた場合（例えば、オペレーティングシステムが所与のソフトウェアプロセスまたはコンテキストに使用されているメモリマッピングを変更することができる場合）、無効化要求がアドレス変換キャッシュに送信され、変更されたページテーブルエントリに依存するアドレス変換データを提供するアドレス変換キャッシュの少なくとも１つのターゲットキャッシュエントリが無効化され得る。
【発明の概要】
【０００３】
少なくともいくつかの例では、
複数のキャッシュエントリを含むアドレス変換キャッシュであって、各キャッシュエントリは、メモリシステムに格納された１つまたは複数のページテーブルの１つまたは複数のページテーブルエントリに依存するアドレス変換データを格納する、アドレス変換キャッシュと、
少なくとも１つのターゲットページテーブルエントリに対応するアドレス情報を指定する無効化要求に応答して、無効化ルックアップ操作を実行して、アドレス変換データが前記少なくとも１つのターゲットページテーブルエントリに依存しているアドレス変換キャッシュの少なくとも１つのターゲットキャッシュエントリを識別して、前記少なくとも１つのターゲットキャッシュエントリに格納されているアドレス変換データの無効化をトリガする、制御回路と、
を備える装置が提供され、
制御回路は、前記少なくとも１つのターゲットページテーブルエントリのページサイズを示すページサイズ情報に応じて、無効化ルックアップ操作に使用する複数の無効化ルックアップモードのいずれかを選択するように構成され、複数の無効化ルックアップモードは、アドレス情報に応じて前記少なくとも１つのターゲットキャッシュエントリを識別するさまざまな方法に対応する。
【０００４】
少なくともいくつかの例は、複数のキャッシュエントリを含むアドレス変換キャッシュからのアドレス変換データを無効化するための方法を提供し、各キャッシュエントリは、メモリシステムに格納された１つまたは複数のページテーブルの１つまたは複数のページテーブルエントリに依存してアドレス変換データを格納し、方法は：
少なくとも１つのターゲットページテーブルエントリに対応するアドレス情報を指定する無効化要求に応答して：
アドレス変換データが前記少なくとも１つのターゲットページテーブルエントリに依存するアドレス変換キャッシュの少なくとも１つのターゲットキャッシュエントリを識別するために、無効化ルックアップ操作を実行するステップであって、複数の無効化ルックアップモードのいずれが無効化ルックアップ操作に使用されるかは、前記少なくとも１つのターゲットページテーブルエントリのページサイズを示すページサイズ情報に応じて選択され、複数の無効化ルックアップモードは、アドレス情報に応じて前記少なくとも１つのターゲットキャッシュエントリを識別するさまざまな方法に対応する、ステップと、
前記少なくとも１つのターゲットエントリに格納されたアドレス変換データの無効化をトリガするステップと
を含む。
【０００５】
少なくともいくつかので例は、
複数のキャッシュエントリを含むアドレス変換キャッシュであって、各キャッシュエントリは、メモリシステムに格納された１つまたは複数のページテーブルの１つまたは複数のページテーブルエントリに依存するアドレス変換データを格納し、
各ページテーブルエントリは、
次のレベルのページテーブルエントリのアドレスを指定する中間ページテーブルエントリ、および、
アドレス変換マッピングを指定するリーフページテーブルエントリ
のいずれかを備える、アドレス変換キャッシュと、
アドレス変換データが少なくとも１つのターゲットページテーブルエントリに依存するアドレス変換キャッシュの少なくとも１つのターゲットキャッシュエントリの無効化をトリガするために、アドレスの無効化範囲を示す範囲情報を識別するリーフおよび中間の排他的範囲指定無効化要求に応答する制御回路であって、前記少なくとも１つのターゲットページテーブルエントリは、完全に前記無効化範囲内にある所与のページテーブルの任意のリーフページテーブルエントリおよびアドレスグループに対応する前記所与のページテーブルの任意の中間ページテーブルエントリを含む、制御回路と
を備える装置が提供される。
【０００６】
少なくともいくつかの例では、
複数のキャッシュエントリを含むアドレス変換キャッシュであって、各キャッシュエントリはアドレス変換データを格納する、アドレス変換キャッシュと、
無効化ルックアップ操作を実行して、単一アドレスとページサイズ情報に応じてアドレス変換キャッシュの少なくとも１つのターゲットキャッシュエントリを識別し、前記少なくとも１つのターゲットキャッシュエントリに格納されているアドレス変換データの無効化をトリガするために、単一アドレスと、前記単一アドレスに対応するページテーブルエントリに関連付けられたページサイズを示すページサイズ情報とを指定する無効化要求に応答する、制御回路と
を備える装置が提供される。
【０００７】
本技術のさらなる態様、特徴および利点は、添付の図面と併せて読まれるべきである以下の例の説明から明らかとされよう。
【図面の簡単な説明】
【０００８】
【図１】少なくとも１つのアドレス変換キャッシュを有するデータ処理システムの例を概略的に示す図である。
【図２】所与のアドレスを変換するためのアドレスマッピングを見つけるためのマルチレベルページテーブルウォーク操作の例を示す図である。
【図３】２ステージのアドレス変換プロセスの例を示す図である。
【図４】アドレス変換キャッシュのエントリの例を示す図である。
【図５】仮想アドレスのさまざまな部分を使用してアドレス変換キャッシュにインデックスを付ける例を示す図である。
【図６】無効化要求を処理する方法を示すフロー図である。
【図７】ページサイズ情報を提供する４つの異なる例を示す図である。
【図８】ページサイズ情報に基づいて無効化ルックアップモードを選択する方法を示すフロー図である。
【図９】ページサイズ情報に基づいて無効化ルックアップモードを選択する第２の例示的な方法を示す図である。
【図１０】範囲指定無効化要求の対象となるページテーブルエントリを選択するためのさまざまなオプションを示す図である。
【０００９】
アドレス変換キャッシュにはいくつかのキャッシュエントリがあり得、各キャッシュエントリには、メモリシステムに格納された１つまたは複数のページテーブルからの１つまたは複数のページテーブルエントリに依存するアドレス変換データが格納され得る。一部のアドレス変換キャッシュでは、各エントリがメモリ内のページテーブルの１つのページテーブルエントリにのみ対応する場合がある。ただし、所与のキャッシュエントリが、ページテーブルの２つ以上のページテーブルエントリに依存するアドレス変換データを提供することも可能である。例えば、これは、１つのキャッシュエントリが、アドレス変換の複数のステージに対応する結合アドレス変換を格納する可能性があるためである。それらのキャッシュエントリが依存する対応するページテーブルエントリが変更された場合、無効化要求を使用してアドレス変換キャッシュからアドレス変換データを削除できる。無効化要求は、少なくとも１つのターゲットページテーブルエントリに対応するアドレス情報を指定することができ、これにより、アドレス変換キャッシュの制御回路がトリガされ、無効化ルックアップ操作が実行され、アドレス変換データが少なくとも１つのターゲットページテーブルエントリに依存する少なくとも１つのターゲットキャッシュエントリが識別され、少なくとも１つのターゲットキャッシュエントリに格納されているアドレス変換データを無効化することができる。無効化ルックアップ情報はアドレス情報に依存するが、特定の実装によって異なり得る他の情報にも依存する可能性がある。例えば、キャッシュエントリには、そのエントリに対応するアドレスブロックのサイズの表示などの追加情報、および／または仮想マシン識別子やストリーム識別子などのコンテキスト識別子を格納するこができ、これを使用して、無効化要求に応答して、所与のキャッシュエントリを無効化すべきかどうかを決定することができる。
【００１０】
一部のアドレス変換キャッシュでは、無効化ルックアップ操作を実行して無効化される必要なターゲットキャッシュエントリを見つけるさまざまな方法に対応するいくつかの無効化ルックアップモードが存在する場合がある。場合によっては、同じ無効化要求に対して２つ以上の無効化ルックアップモードを実行できる。一部の無効化ルックアップモードは、他の無効化ルックアップモードよりも待機時間と消費電力の点で実行コストが高くなる場合がある。発明者は、所与の無効化ルックアップモードが必要かどうかは、所与の無効化要求の対象となるページテーブルエントリのページサイズに依存する可能性があることがわかった。一部のページサイズでは、すべての無効化ルックアップモードが必要なわけではない。したがって、制御回路は、少なくとも１つのターゲットページテーブルエントリのページサイズを示す無効化要求に関連付けられたページサイズ情報に基づいて、無効化ルックアップ操作に使用する複数の無効化ルックアップモードのいずれかを選択することができる。ページサイズ情報を考慮することにより、不要な無効化ルックアップモードを省略したり、より高価なルックアップモードを使用するか、より安価なルックアップモードを使用するかについて、より多くの情報に基づいた決定を行ったりすることができる。これにより、アドレス変換キャッシュからの無効化の処理のパフォーマンスを改善できる。
【００１１】
一例では、無効化ルックアップモードは、キャッシュインデックスモードとキャッシュウォークモードを備えてもよい。キャッシュインデックスモードでは、無効化ルックアップ操作は、アドレス情報に基づいて選択されたアドレス変換キャッシュの少なくとも１つの選択されたキャッシュエントリにインデックスを付けること、および各選択されたキャッシュエントリが少なくとも１つのターゲットキャッシュエントリの１つであるかどうかを判断することを含む。キャッシュウォークモードでは、無効化ルックアップ操作は、アドレス情報とは無関係に選択されたアドレス変換キャッシュのキャッシュエントリの少なくともサブセットにアクセスすること、およびアクセスされた各キャッシュエントリが前記少なくとも１つのターゲットキャッシュエントリの１つであるかどうかを判断することを含んでもよい。制御回路は、ページサイズ情報に基づいて、キャッシュインデックスモードおよびキャッシュウォークモードのどちらを使用するかを選択してもよい。
【００１２】
無効化要求の形式によっては、通常はアドレス変換キャッシュの１つのエントリにマッピングされると予想される単一のターゲットアドレスを指定する場合があるため、無効化ルックアップに応答して１つのヒットのみが予想され得る。キャッシュインデックスモードは、このような無効化要求に使用して、アドレス情報に基づいて選択された１つまたは複数のエントリのセットにアクセスし、キャッシュ内のすべてのエントリをチェックする必要なしに、選択した各キャッシュエントリが必要なターゲットキャッシュエントリであるかどうかを判断できる。例えば、少なくとも１つの選択されたキャッシュエントリは、セットアソシアティブキャッシュ実装の複数のエントリのセットに対応し得るか、直接マッピングされたキャッシュ構造の１つのエントリに対応する可能性がある。
【００１３】
ただし、一部のキャッシュは、同じページテーブルエントリに依存して複数のキャッシュエントリをサポートすることがある（例えば、アドレス変換のさまざまなステージによるエントリが単一のキャッシュエントリに結合される場合）。所与の無効化要求のアドレス情報に複数のエントリがヒットできる場合、キャッシュウォークモードを使用してキャッシュの一部をステップスルーし、無効化が必要な可能性のあるすべての可能なエントリを識別できる。場合によっては、キャッシュウォークモードがキャッシュストレージ全体のすべてのエントリをウォークスルーすることがある。ただし、キャッシュの他の部分が必要なデータを格納できないことがわかっている場合、キャッシュウォークモードでキャッシュエントリのサブセットのみを対象とすることもできる。キャッシュウォークモードは、指定されたアドレス情報に基づいて特定のエントリにインデックスを付けるのではなく、アドレスに関係なくキャッシュのすべての部分にアクセスすることが可能であり、したがってより多くのキャッシュエントリにアクセスする必要があるため、キャッシュインデックスモードよりもパフォーマンスおよび消費電力の点でコストが高くなる場合がある。通常、同じ無効化要求に対してヒットする複数のキャッシュエントリをサポートするキャッシュでは、そのようなエントリが存在し得るリスクがあるとすぐに、制御回路はキャッシュウォークモードに切り替わる。ただし、これは、すべての無効化要求が特に大きなアドレス変換キャッシュでは非常に遅くなる可能性があるキャッシュウォークモードを使用して処理され得ることを意味することができる。
【００１４】
以下の例では、キャッシュウォークモードが実際に必要かどうかは、無効化要求の対象となるページテーブルエントリのサイズに依存する可能性があることがわかった。例えば、ページサイズが閾値サイズよりも小さい場合、複数のエントリが同じアドレスにマッピングされるリスクがない場合があるため、キャッシュインデックスモードが選択され得、ページサイズが閾値サイズより大きいことをページサイズ情報が示している場合は、キャッシュウォークモードが選択され得る。ページサイズが閾値サイズに等しい場合、閾値が設定されている特定のレベルに依存して、キャッシュインデックスモードまたはキャッシュウォークモードのいずれかを選択できる。したがって、ページサイズ情報に基づいてキャッシュ無効化ルックアップモードを選択することにより、不必要なフルキャッシュウォークを回避できる。
【００１５】
システムによっては、複数のステージのアドレス変換を提供する場合があり、第１ステージは第１アドレスから第２アドレスに変換し、第２ステージは第２アドレスから第３アドレスに変換する。処理回路は、第１アドレスの第２アドレスへの変換を制御するためのステージ１ページテーブルを構成し、第２アドレスの第３アドレスへの変換を制御するためのステージ２ページテーブルを構成し得る。例えば、第１のアドレスは、処理回路によって実行されるプログラム命令によって指定される仮想アドレスであってもよく、これは、ステージ１ページテーブルの制御下で中間物理アドレスにマッピングされてもよい。ステージ１ページテーブルは、例えばオペレーティングシステムによって構成され得る。ただし、仮想化をサポートするために、ハイパーバイザは、中間物理アドレスをメモリシステムで実際に使用される物理アドレスにマッピングするステージ２ページテーブルで、さらなるアドレス変換を提供できる。
【００１６】
一部の実装形態では、ステージ１およびステージ２に個別のキャッシュエントリ（共有キャッシュまたは個別のキャッシュ）をそれぞれ提供する場合があるが、アドレス変換ルックアップのパフォーマンスは、第１アドレス（仮想アドレス）を、第２アドレスをバイパスして第３アドレス（物理アドレス）に直接変換するために結合アドレス変換データをキャッシュに格納することで改善できる。ただし、この場合、結合された各エントリは、少なくとも１つのステージ１ページテーブルエントリと少なくとも１つのステージ２ページテーブルエントリに依存し得る。ステージ１およびステージ２のページテーブルは異なるページサイズで定義され得、これは、複数のキャッシュエントリがそれぞれ同じステージ１ページテーブルエントリまたはステージ２ページテーブルエントリに対応し得ることを意味することができる。これは、より大きなサイズの所与のページテーブルエントリに対応するエントリを対象とする無効化が、より小さなアドレスブロックにそれぞれ対応する複数のキャッシュエントリを無効化する必要があり得ることを意味することができる。
【００１７】
ステージ１／ステージ２を組み合わせたアドレス変換データのキャッシングをサポートするキャッシュの場合、上記の手法は特に有用であり得、これは、ステージ１とステージ２を組み合わせたアドレス変換データを格納するキャッシュを対象とするすべての無効化要求にキャッシュウォークモードを要求するのではなく、ページテーブルのサイズが十分に大きいため、対応するターゲットページテーブルエントリが複数のキャッシュエントリにわたって断片化されるリスクがある場合にキャッシュウォークモードを使用できるからである。ページサイズが、複数のキャッシュエントリにわたって大きなページの断片化を開始する閾値よりも小さい場合、キャッシュインデックスモードを選択できる。したがって、不要なフルキャッシュウォークを回避することにより、無効化のパフォーマンスを改善できる。
【００１８】
複数のキャッシュルックアップモードを使用できる別の例は、アドレス変換キャッシュでサポートされるさまざまなブロックサイズのいずれかを有するアドレスのブロックを変換するためのアドレス変換データを格納するアドレス変換キャッシュであってもよい。例えば、一部のページテーブルは可変ページサイズで定義され得るため、異なるページテーブルエントリが異なるサイズのアドレスブロックに対応する場合がある。また、一部のアドレス変換キャッシュは、マルチレベルページテーブルの複数レベルのエントリをキャッシュする場合があり、この場合、異なるレベルに対応するエントリは、アドレスの異なるサイズのブロックに対応し得る。異なるキャッシュエントリが異なるサイズのアドレスブロックに対応する可能性がある場合、キャッシュは、異なるブロックサイズにそれぞれ対応する異なる無効化ルックアップモードを使用して、同じ無効化要求に対して複数の無効化ルックアップ操作を実行できる。例えば、異なるルックアップモードでは、入力アドレスの異なるビット数を使用して、キャッシュにアクセスするためのインデックスを生成できる。各キャッシュエントリに格納されているサイズ情報を使用して、所与のキャッシュエントリが所与のルックアップモードのターゲットアドレスと一致するかどうかを判断できる。
【００１９】
さまざまなブロックサイズに対してさまざまな無効化ルックアップモードを実行すると、パフォーマンスと消費電力の点でコストがかかり、無効化要求の処理が遅れる可能性がある。以下で説明する例では、ページサイズ情報がわかっている場合、無効化要求の対象となるページテーブルエントリのサイズを推定できるため、これを使用して実際に必要なキャッシュインデックスモードを制限できる。例えば、ページサイズ情報が所与の閾値よりも小さい場合、そのページサイズより大きいブロックサイズに関連付けられたキャッシュインデックスモードを提供する必要はない場合がある。したがって、無効化要求に応答して、制御回路はページサイズ情報に基づいてキャッシュインデックスモードのサブセットを選択し、キャッシュインデックスモードの選択されたサブセットに対応する１つまたは複数の無効化ルックアップ操作を実行してもよい。不要な無効化ルックアップモードを回避することにより、アドレス変換キャッシュからの無効化のパフォーマンスを改善できる。
【００２０】
ページサイズ情報は、いくつかのさまざまな方法で表すことができる。一般に、ページサイズ情報は、例えば、要求のエンコード内にページサイズ情報を識別するパラメータを含めることにより、無効化要求によって指定され得る。例えば、ページサイズ情報は、ページサイズの明示的な表示；ページサイズの上限；ページサイズの下限；ページサイズが閾値サイズより小さいかどうかの表示；ページサイズが閾値サイズより大きいかどうかの表示；アドレス情報で指定されたアドレス変換範囲の開始アドレスおよび終了アドレス；複数のページサイズから選択された適用可能なページサイズのサブセットを識別する情報；および無効化要求に関連付けられたアドレス変換の複数のステージのうちの１つの表示；のうちの少なくとも１つを含んでもよい。
【００２１】
したがって、ページサイズを明示的に識別する必要はない。例えば、実際のページサイズを明示的に指定するのではなく、単にページサイズが閾値サイズよりも大きいか小さいかを示す情報や、ページサイズの上限または下限を提供する情報で、ページサイズを不正確に識別できれば十分であり得る。
【００２２】
また、場合によっては、ページサイズ情報が他の情報から暗黙的である場合がある。例えば、一部の無効化要求では、アドレスが少なくとも部分的に範囲内にある１つまたは複数のページに対応するキャッシュエントリの無効化をトリガするためのアドレス範囲を指定できる。範囲ベースの無効化の一部の形式（排他的範囲指定無効化要求など）では、ページサイズの上限が範囲のサイズから暗黙的になる場合があるため、ページサイズ情報を個別に指定する必要はない。
【００２３】
別のオプションは、無効化要求が、サポートされている複数のページサイズから選択されたページサイズの特定のサブセットに設定されたビットでビットマップを指定することであってもよい。設定されているビットマップのビットに依存して、制御回路はどのページサイズが適用され得るかを決定し、それに応じて無効化ルックアップモードを制限できる。例えば、一般にページテーブルは複数の異なるページサイズで定義できるが、所与のページサイズがどのページテーブルでも使用されていないことがわかっている場合、対応するビットをクリアのままにしておくことができ、アドレス変換キャッシュから無効化を実行するときに、そのページサイズに基づいてルックアップ操作を実行する必要はないことを示している。
【００２４】
別の例では、ページサイズ情報は、アドレス変換のどのステージが無効化要求に関連付けられているかを指定する情報から暗黙的であってもよい。例えば、アドレス変換の複数のステージでは、各ステージを固定ページサイズに関連付けることができるため、無効化がステージ１を対象とする場合、これは対応するページサイズを効果的に示す可能性があり、ステージ２も同様である。所与のステージのページテーブルが可変ページサイズをサポートしている場合でも、一部のページサイズはステージ１およびステージ２のいずれかでのみサポートされている可能性があり、そのため、無効化の影響を受けるステージを指定することで、いくつかの可能なページサイズを排除できる。
【００２５】
上記の手法は、いくつかのさまざまなタイプの無効化要求に使用できる。一例では、アドレス指定無効化要求は、無効化されるアドレス変換データに対応する少なくとも１つのターゲットページテーブルエントリを識別する単一アドレスを指定してもよい。単一アドレス指定無効化要求では、通常、そのページサイズに関係なく、暗黙的に、そのアドレスに対応するページテーブルエントリが無効化されるため、ページサイズ情報を識別する必要はないことが想定される（一致する変換コンテキスト識別子など、追加の非アドレスベースの基準も満たしていると仮定する）。通常、アドレスは、ページテーブル内の単一のページテーブルエントリにマッピングされるアドレス空間の対応するページを識別できるだけであり、これにより、アドレス変換キャッシュ内の関連データの対応する無効化をトリガできる。したがって、当業者は無効化されるページのサイズを指定する必要がない。しかし、発明者は、単一アドレス指定無効化要求のページサイズ情報を指定すると、例えば前述のようにキャッシュウォークモードの使用を排除したり、キャッシュインデックスモードのサブセットを省略したりすることで、キャッシュルックアップをより効率的に実行できることがわかった。例えば、ページサイズ情報を、ページサイズの明示的な表示、または複数のオプションの１つからのページサイズを表すコードとすることができる。ただし、効率的なエンコードは、ページサイズが特定の閾値サイズよりも大きいか小さいかを示し得る単一ビットフラグを単に提供できる（実装の選択に依存して、ページサイズがビットフラグのいずれかの値で表される閾値サイズと等しい場合）。ページサイズが閾値サイズより大きいか小さいかを単に示すだけで、上記のキャッシュウォークモードおよびキャッシュインデックスモードの選択を可能にするのに十分であり得る。したがって、ページサイズ情報は、無効化要求に関連するビット数の大幅な拡張を必要としない。
【００２６】
無効化要求の別の形式は、アドレスの無効化範囲を指定し、無効化範囲内に少なくとも部分的に存在するアドレスグループに対応する少なくとも１つのターゲットページテーブルエントリを対象とし得る範囲指定無効化要求である。範囲指定無効化要求は、包括的範囲指定無効化要求である場合があり、制御回路は、アドレスグループのいずれかの部分が無効化範囲内にあるアドレスグループに対応する少なくとも１つのターゲットページテーブルエントリに依存するキャッシュエントリの無効化をトリガする。包括的範囲ベースの無効化の場合、ページテーブルエントリは、指定された範囲に部分的にしかマッピングされていなくても対象にされる。
【００２７】
あるいは、範囲指定無効化要求は排他的範囲指定無効化要求である場合があり、制御回路は無効化をトリガし、対象のキャッシュエントリが完全に無効化範囲内にあるアドレスグループに対応するページテーブルエントリに依存するエントリになるようにする。したがって、このオプションでは、範囲内に部分的にしか存在しないページテーブルエントリは影響を受けない。制御回路は、各キャッシュエントリ内のタグ情報を使用して、対応するエントリが完全にまたは部分的にクレーム範囲にマッピングされるかどうかを識別することができ、例えば、各キャッシュエントリ内のアドレスタグとサイズフィールドの組み合わせを使用できる。範囲ベースの無効化の場合、無効化するかどうかを決定するために使用される基準は、範囲へのマッピングだけではない場合があり、例えば、他の基準には、無効化要求を発行した現在のプロセスに関連付けられたコンテキスト識別子に一致するコンテキスト識別子が含まれる場合があり、または無効化要求は、無効化の影響を受けるページテーブル構造の特定のレベルを指定でき、他のレベルは無効化から除外される。同様に、一部の無効化要求は、マルチステージ変換のステージ１またはステージ２に関連付けられているエントリのみを対象とすることができる。範囲指定無効化要求に関連付けられた範囲は、さまざまな方法で、例えば、明示的な開始アドレスと終了アドレス、または開始アドレスと無効化範囲のサイズを指定するサイズフィールドを識別することができる。
【００２８】
一部の無効化要求は、マルチレベルのページテーブル構造の特定のレベルのページテーブルエントリを対象とする場合がある。ただし、リーフページテーブルエントリと中間ページテーブルエントリ（または非リーフページテーブルエントリ）を区別することが望ましい場合が多い。リーフページテーブルエントリは、あるタイプのアドレスを別のタイプのアドレスに変換するために使用される実際のアドレス変換マッピングを指定するページテーブルの最終レベルを参照する場合がある。ページテーブルがステージ１、ステージ２、またはステージ１／ステージ２の組み合わせに対応するかどうかに依存して、リーフページテーブルエントリは、仮想アドレスから中間物理アドレスへ、中間物理アドレスから物理アドレスへ、または仮想アドレスから直接物理アドレスへ、のマッピングを提供してもよい。一方、中間ページテーブルエントリは実際のアドレスマッピングを提供しない場合があるが、ページテーブル構造内の次のレベルのページテーブルエントリのアドレスを単に指定してもよい。リーフページテーブルエントリのみを対象とすることにより、実際の最終アドレスマッピングを無効化することができるが、これらを変更する必要がない場合、ページテーブル構造の上位レベルをそのまま残す。他の無効化は、中間またはリーフページテーブルエントリであるかどうかに関係なく、ページテーブルのすべてのレベルを対象としてもよい。
【００２９】
しかしながら、一例では、無効化要求は、完全に無効化範囲内にあるアドレスグループに対応するリーフおよび中間ページテーブルエントリの両方を対象とする排他的範囲指定無効化要求であってもよい。リーフおよび中間の排他的範囲指定無効化要求に応答して、制御回路は、ターゲットキャッシュエントリとして、完全に無効化範囲内にあるアドレスブロックのリーフまたは中間ページテーブルエントリに依存するキャッシュエントリを検出できる。このタイプの無効化要求は、１つの要求でページテーブル構造のブランチ全体を無効化し、ページテーブル構造の他のブランチをそのまま残す場合に非常に役立つことができる。したがって、少なくとも部分的に無効化範囲外にあるアドレスグループに対応する少なくとも１つの中間ページテーブルエントリは、アドレス変換データがアドレス変換キャッシュから無効化される少なくとも１つのターゲットページテーブルエントリから除外され得る。このアプローチは、複数レベルのウォークキャッシングが採用され、アドレス変換キャッシュの異なるエントリが異なるレベルのページテーブルに対応する可能性があるシステムメモリ管理ユニットまたはアドレス変換キャッシュに特に役立つことができる。
【００３０】
図１は、１つまたは複数のアドレス変換キャッシュを含むデータ処理装置２の例を概略的に示している。装置２は、この例では２つの中央処理装置（ＣＰＵ）４と、周辺デバイスへの／からのデータの入力または出力を制御するための入出力ユニット６とを含むいくつかのマスタデバイス４，６を含む。グラフィック処理ユニット（ＧＰＵ）、モニタ上のデータの表示を制御するディスプレイコントローラ、メモリへのアクセスを制御するダイレクトメモリアクセスコントローラなど、他の多くのタイプのマスタデバイスも提供できることが理解されよう。マスタデバイスの少なくともいくつかは、デバイスにローカルな命令またはデータをキャッシュするための内部データまたは命令キャッシュ８を備えていてもよい。入出力インタフェース６などの他のマスタは、キャッシュされていないマスタであってもよい。各キャッシュ内のデータと各マスタがアクセスするデータとの間のコヒーレンシは、コヒーレント相互接続１０によって管理されてもよく、コヒーレント相互接続１０は、所与のアドレスからのデータへのアクセスのための要求を追跡し、コヒーレンシを維持するために必要なときに他のマスタのキャッシュ内のデータのスヌーピングを制御する。他の実施形態では、そのようなコヒーレンシ操作をソフトウェアで管理できるが、そのようなコヒーレンシを追跡するためのハードウェア相互接続１０を提供する利点は、システムによって実行されるソフトウェアのプログラマがコヒーレンシを考慮する必要がないことであることが理解されよう。
【００３１】
図１に示すように、一部のマスタには、ソフトウェアによって指定されたアドレスをメモリ１４の特定の位置を参照する物理アドレスに変換するために使用されるアドレス変換データをキャッシュするための少なくとも１つのアドレス変換キャッシュを含み得るメモリ管理ユニット（ＭＭＵ）１２が含まれてもよい。所与のマスタデバイス内には提供されないが、組み込みのＭＭＵを用いて設計されていない単純なマスタデバイスでアドレス変換機能を使用できるようにするために、特定のマスタ６とコヒーレント相互接続１０との間の追加コンポーネントとして提供されるシステムメモリ管理ユニット（ＳＭＭＵ）１６を設けることも可能である。他の例では、ＳＭＭＵ１６は相互接続１０の一部と見なすことができる。
【００３２】
ページテーブルは、所与のアドレス空間にわたるアドレスブロックのアドレス変換マッピングを格納するためにメモリ１４内で定義されてもよい。図２に示すように、ページテーブルは、特定のターゲットアドレスのアドレスマッピングを識別するためにページテーブルウォーク操作でトラバースされ得る複数レベルのページテーブルで実装できる。図２に示すように、インデックスビットＬ０Ｉの所与のセットを使用して、メモリ内の位置がレベルゼロ（Ｌ０）ベースアドレス２２によって識別されるレベルゼロページテーブル２０にインデックスを付けることができる。Ｌ０ベースアドレス２２は、例えば（Ｓ）ＭＭＵ１２，１６のレジスタに格納されてもよい。Ｌ０テーブル２０のインデックス付きエントリは、Ｌ１ページテーブル２２のメモリ内の位置を識別するＬ１ベースアドレスを識別する。ターゲットアドレスからのインデックスビットＬ１Ｉの異なるサブセットは、Ｌ１ページテーブル２２のエントリの１つを選択し、それにより、Ｌ２ページテーブル２４のメモリ位置を識別するＬ２ベースアドレスを識別する。Ｌ３ページテーブル２６の位置を識別するＬ３ベースアドレスを識別するために、ターゲットアドレスからのインデックスビットＬ２Ｉの別のサブセットがＬ２ページテーブル２４にインデックスを付ける。次に、ターゲットアドレスのビットＬ３Ｉのさらに別のサブセットは、ターゲットアドレスを物理アドレスなどの変換済みアドレスにマッピングするための実際のアドレスマッピングを提供するＬ３ページテーブル２６の特定のエントリを選択する。したがって、Ｌ３ページテーブル２６は、実際のアドレスマッピング情報を提供するリーフページテーブルエントリを提供する最終ページテーブルであり、高レベルページテーブル２０，２２，２４は、次のレベルのページテーブルのベースアドレスを識別する中間エントリを提供する。４つのレベルのページテーブルを提供することは一例に過ぎず、他のものは異なる数のページテーブルを使用できることが理解されよう。この方法でページテーブルを異なるレベルに分割することにより、ページテーブル構造全体を格納するために必要なメモリストレージの総量を削減することができ、これは、領域内の所与の量のアドレス空間またはマッピングされるアドレスサイズと同等のサイズを有するメモリを変換するためのアドレスマッピングを見つける必要がないためであり、多くの場合、アドレス空間の大きなチャンクには、オペレーティングシステムまたはアドレス変換データを設定する他のプロセスによってまだマッピングが定義されていないという事実を利用する。図２は、インデックスビットＬ０Ｉ，Ｌ１Ｉなどが、対応するページテーブルエントリを選択するためのインデックスとして直接使用される例を示しているが、インデックスはインデックスビットに適用されたハッシュ関数の結果であってもよい。
【００３３】
一部のシステムでは、（Ｓ）ＭＭＵ１２，１６は、ページテーブルの異なるレベルからのエントリを変換するための完全に独立したアドレス変換キャッシュを有する場合がある。通常、最終レベルのページテーブル２６からエントリをキャッシュするキャッシュは、変換ルックアサイドバッファと呼ばれてもよく、ページテーブル２０，２２，２４からより高いレベルのページテーブルエントリをキャッシュするキャッシュは、ウォークキャッシュと呼ばれてもよい。一方、他の実施形態は、ページテーブルの複数のレベルからのアドレス変換データをキャッシュできる共有アドレス変換キャッシュを提供してもよい。どちらのアプローチも本手法で使用できる。以下に１つのキャッシュについて説明するが、一部の（Ｓ）ＭＭＵにはキャッシュ階層に複数レベルのアドレス変換キャッシュが含まれ、アクセス待機時間に対して容量をトレードオフする場合がある（例えば、高速アクセスのためにレベル０アドレス変換キャッシュに格納されるエントリ数が少ない場合、およびレベル０アドレス変換キャッシュでミスが発生した場合のアクセスを遅くするために、レベル１アドレス変換キャッシュに格納されたエントリ数が多い場合）。
【００３４】
図３に示すように、アドレス変換プロセスには、異なるアドレス空間の間にアドレス変換の複数のステージが含まれることもある。例えば、ＣＰＵ４で実行されるアプリケーションまたはオペレーティングシステムによって実行される命令によってメモリ位置を識別するために使用される仮想アドレス（第１アドレス）は、ステージ１変換で中間物理アドレス（第２アドレス）に変換され得る。ステージ１アドレスを制御するための構成データは、例えばオペレーティングシステムによって設定され得る。オペレーティングシステムの観点からは、ステージ１のアドレス変換で生成された中間物理アドレスは、アクセスされている実際のメモリアドレスの物理アドレスであると見なされてもよい。ただし、仮想化をサポートし、同じデバイス上に共存する異なるオペレーティングシステムで使用される同一の中間物理アドレスが競合するのを防ぐために、ハイパーバイザは、メモリ１４で読み書きされるメモリ位置を実際に参照する中間物理アドレス（第２アドレス）と物理アドレス（第３アドレス）との間のさらなる第２のステージアドレス変換を提供する場合がある。したがって、ステージ２アドレス変換に対応するハイパーバイザによって定義されたページテーブルの第２のセットがある場合がある。
【００３５】
図２に示すように、アドレス変換の２つのステージではそれぞれ、複数レベルのページテーブルを使用できることに留意されたい。したがって、ターゲット仮想アドレスによって識別されるアドレスの所与のブロックのアドレスマッピングを識別するためのフルページテーブルウォークでは、ステージ１アドレス変換で使用されるページテーブルの各ベースアドレスがステージ１ページテーブルの対応するレベルにアクセスする前に、ステージ２アドレス変換を経る必要があり得る。つまり、フルページテーブルウォークプロセスには、次の順序で複数レベルのページテーブルにアクセスすることが含まれ得る。
・ステージ１レベル０ページテーブルのベースアドレスの物理アドレスへのステージ２変換（ステージ１変換はオペレーティングシステムによって設定されるため、ステージ１レベル０ベースアドレスは通常、中間物理アドレスである）。ステージ２変換は、４回のルックアップ（ステージ２，レベル０；ステージ２，レベル１；ステージ２，レベル２；ステージ２，レベル３）を含む。
・ステージ１レベル１ベースアドレス（中間物理アドレス）を識別するための、ターゲット仮想アドレスのレベル０インデックス部分Ｌ０Ｉに基づくステージ１レベル０ルックアップ。
・ステージ１レベル１ベースアドレスの物理アドレスへのステージ２変換（これも、４回のルックアップを含む）。
・ステージ１レベル２ベースアドレス（中間物理アドレス）を識別するための、ターゲット仮想アドレスのレベル１インデックス部分Ｌ１Ｉに基づくステージ１レベル１ルックアップ。
・ステージ１レベル２ベースアドレスの物理アドレスへのステージ２変換（これも、４回のルックアップを含む）。
・ステージ１レベル３ベースアドレス（中間物理アドレス）を識別するための、ターゲット仮想アドレスのレベル２インデックス部分Ｌ２Ｉに基づくステージ１レベル２ルックアップ。
・ステージ１レベル３ベースアドレスの物理アドレスへのステージ２変換（これも、４回のルックアップを含む）。
・ターゲット仮想アドレスに対応するターゲット中間物理アドレスを識別するための、ターゲット仮想アドレスのレベル３インデックス部分Ｌ３Ｉに基づくステージ１レベル３ルックアップ。
・元のターゲット仮想アドレスに対応してアクセスするためにメモリ内の位置を表すターゲット物理アドレスへのターゲット中間物理アドレスのステージ２変換（これも、４回のルックアップを含む）。
【００３６】
したがって、キャッシュを使用しない場合、変換は合計２４のルックアップを含むことになる。上記の順序からわかるように、ページテーブルウォークプロセス全体の実行は、アドレス変換の各ステージでページテーブルの各レベルをステップスルーするためにメモリへの多数のアクセスを必要とし得るため、非常に遅くなる可能性がある。これが、最終レベルのアドレスマッピングだけでなく、（Ｓ）ＭＭＵ１２，１６内のステージ１およびステージ２テーブルのより高いレベルのページテーブルからのエントリもキャッシュすることがしばしば望ましい理由である。これにより、所与のターゲットアドレスの最終レベルのアドレスマッピングが現在アドレス変換キャッシュにない場合でも、フルページテーブルウォークの少なくともいくつかのステップをバイパスできる。
【００３７】
図３に示すように、ステージ１およびステージ２のアドレス変換では、異なるサイズのアドレスブロックにマッピングするページテーブルエントリを提供できる。例えば、ステージ１のアドレス変換は２ＭＢのブロックサイズで動作し、ステージ２のアドレス変換は４ｋＢのブロックサイズで動作し得る（明らかに、特定のサイズ４ｋＢと２ＭＢは単なる例であるが、理解を容易にするために、以下のサイズを参照し、より一般的には、ステージ１とステージ２のテーブルで異なるページサイズを使用できる）。ステージ１およびステージ２のアドレス変換が、別個のアドレス変換キャッシュを使用して、または共有キャッシュの別個のステージ１およびステージ２エントリで実装されている場合、ステージ１とステージ２の両方についてページテーブルエントリとアドレス変換キャッシュエントリとの間に１対１のマッピングが存在し得る。ただし、仮想アドレスを物理アドレスに直接変換するために、ステージ１およびステージ２のアドレス変換を単一の結合キャッシュエントリに結合するシステムでは、ステージ２よりもステージ１のページサイズが大きいため、ステージ２の４ｋＢページアドレス変換ではそれぞれ、異なるキャッシュエントリを割り当てる必要があるが、同じ２ＭＢブロック内の４ｋＢページはすべて、同じステージ１ページテーブルエントリに対応し得る。したがって、ステージ１変換の単一ページは、ステージ１／ステージ２を組み合わせたキャッシュの複数のエントリ間でフラグメント化され得る。つまり、ステージ１ページテーブルエントリに変更が加えられた場合、対応するキャッシュ無効化では、２ＭＢページ内の異なる４ｋＢブロックにそれぞれ対応するステージ１／ステージ２を組み合わせた複数のキャッシュエントリを無効化する必要があり得る。これは、キャッシュインデックスモードを使用して無効化を実行できないことを意味し、このモードでは、選択されたエントリのセットは、ターゲットアドレスと、エントリのセット内のタグに基づいて識別され、ターゲットアドレスに関連付けられたタグと比較されて、無効化するエントリが決定される。代わりに、複数のエントリがターゲットアドレスにヒットする可能性があるため、キャッシュの少なくとも一部内のすべてのエントリがアドレスに関係なくアクセスされるキャッシュウォークモードが必要になる場合があり、アクセスされたエントリの各タグはそのエントリを無効化すべきかどうかを決定するターゲットアドレスのタグと比較される。このようなキャッシュウォークモードは、キャッシュインデックスモードよりも待機時間と消費電力の点で高価になる場合がある。
【００３８】
図４は、ステージ１／ステージ２を組み合わせたアドレス変換をサポートするアドレス変換キャッシュの例を示している。キャッシュ１２，１６は、アドレス変換データを格納するためのいくつかのエントリ４０を含む。各エントリには、エントリに有効なアドレス変換データが含まれるかどうかを指定する有効ビット４２、アドレス変換データが適用されるアドレスブロックに対応する仮想アドレスの一部を指定する仮想タグ４４、および対応する物理アドレス４６が含まれる。非リーフ変換エントリの場合、物理アドレス４６はページテーブル構造内の次のレベルのページテーブルエントリのアドレスを指定できるが、リーフエントリ（レベル３ページテーブルなど）の場合、物理アドレスは、仮想ページアドレスが変換される実際の変換済みアドレスを識別できる。
【００３９】
この例では、キャッシュは可変ページサイズをサポートするため、変換サイズフィールド４８は、対応するアドレス変換マッピングが適用されるアドレスブロックのサイズを指定する。また、これは、仮想アドレスを物理アドレスに直接マッピングする（中間物理アドレスを経由せずに）ステージ１／ステージ２を組み合わせたキャッシュであるため、エントリ４０は、アドレスグループのサイズを表す無効化サイズ５０も指定し、無効化ターゲットアドレスがそのアドレスの無効化グループに含まれる場合、ターゲットアドレスが変換サイズ４８で指定された範囲内にない場合でも、エントリ４０内の対応するアドレス変換データは無効化されるべきである。これにより、例えば、アドレスがそのエントリの４ＫＢの範囲外にある場合でも、ステージ１／ステージ２を組み合わせたエントリが無効化され、これは、ターゲットアドレスが、仮想タグ４４から物理アドレス４６へのアドレス変換マッピングが依存するステージ１ページテーブルエントリに関連付けられた同じ２ＭＢページ内に収まるためである。また、ステージ１とステージ２の両方のページテーブルは、アドレス空間内の異なるページの可変ページサイズを有することができる。
【００４０】
図４に示すように、制御回路５０は、アドレス変換キャッシュ１２，１６へのアクセスを制御し、またアドレス変換データの無効化を制御するために設けられる。仮想アドレスの一部は、キャッシュインデックスルックアップモードでアクセスされる対応するセットのキャッシュエントリを選択するためのインデックスを生成するために制御回路５０によって使用される。図５に示すように、インデックスの形成に使用される仮想アドレスのビットは、アクセスされるページテーブルエントリのレベルによって異なる。また、複数の異なる変換ブロックサイズ４８をサポートする実施形態では、所与のレベルにアクセスするために使用されるビットの特定のサブセットはブロックサイズに依存して異なり得るため、所与のアドレスのアドレス変換データにアクセスするには、それぞれ異なるブロックサイズに対応し、したがって仮想アドレスからのインデックスビットの異なる選択に対応する複数のルックアップモードを試みる必要があり得る。所与のルックアップモードでは、インデックス５２が生成され、１つまたは複数のキャッシュエントリ４０の対応するセットがアクセスされると、制御回路５０は、アクセスされた各エントリに格納されたタグ４４と仮想アドレスのタグ部分（通常はインデックスに使用される部分よりも重要な仮想アドレスのビット）を比較する。タグが一致しない場合、エントリ４０は現在のターゲットアドレスの相対アドレス変換データを格納しない。比較されるタグのサイズは、アドレス変換ルックアップの変換サイズ４８および無効化ルックアップの無効化サイズ５０に依存し得る。図４には示されていないが、アドレスルックアップは、アドレス変換データに関連付けられた特定の変換連絡先を識別するコンテキスト識別子など、各エントリに格納されている他の情報にも依存し得る。キャッシュルックアップは、一致するキャッシュエントリ内のコンテキスト識別子がアドレスルックアップまたは無効化要求に関連付けられたコンテキスト識別子と同じ場合にのみヒットすると見なされる。
【００４１】
図４の例は、物理アドレスに直接変換される、仮想的にインデックス付けされタグ付けされたアドレス変換キャッシュを示している。他の例は、専用のステージ１アドレス変換キャッシュを提供する場合があり、その場合、変換済みアドレスフィールド４６は物理アドレスの代わりに中間物理アドレスを提供してもよく、専用のステージ２アドレス変換キャッシュを提供する場合には、仮想アドレスの代わりに中間物理アドレスでインデックス付けされタグ付けされてもよい。
【００４２】
図６は、無効化要求に応答してアドレス変換キャッシュの無効化ルックアップを実行する方法を示すフロー図を示している。ステップ７０で、制御回路５０は無効化要求を受信する。例えば、無効化要求は、ＣＰＵ４の１つによって実行された無効化命令によってトリガされ得る。無効化要求は、無効化される少なくとも１つのターゲットページテーブルエントリに対応するアドレス情報を指定する。例えば、アドレス情報は、無効化される１つのページの開始アドレスを単に指定することも、アドレスの範囲に対応してその範囲内のいくつかのページを無効化することもできる。無効化要求は、無効化される各ページのサイズを明示的または暗黙的に識別するページサイズ情報も指定する。
【００４３】
図７は、ページサイズ情報の表示方法のさまざまな例を示している。例Ａでは、無効化要求は、ページサイズ情報を提供するサイズヒントフラグ８２とともに、無効化されるページテーブルのターゲットページの単一のターゲットアドレス８０を指定する。サイズヒントフラグは、ターゲットページのページサイズが所与の閾値より大きいか小さいかを示す。例えば、閾値を、より大きなページサイズを有するステージ１またはステージ２のページテーブルのいずれかのページのサイズとすることができ、例えば、上記の例では２ＭＢである。例えば、フラグのサイズは、ページサイズが閾値以上の場合は１、ページサイズが閾値より小さい場合は０になる。
【００４４】
図７の例Ｂは、範囲指定無効化要求が、ページテーブルエントリが無効化される範囲の開始点と終了点を識別する範囲開始アドレスと範囲終了アドレスを指定する別の例を示している。排他的範囲指定無効化要求（指定された範囲内に完全にあるページを対象とする）の場合、可能な最大ページサイズが範囲のサイズ以下であると判断できるため、ページサイズ情報は暗黙的であり得る。同様に、例Ｃは無効化要求を指定する範囲を示し、終了アドレスの代わりに範囲サイズが指定され、この場合、ページサイズは範囲サイズ以下であると判断され得る。
【００４５】
あるいは、対応するアドレスグループの一部が範囲と重複するページテーブルのエントリを対象とする包括的範囲指定無効化要求の場合、ページサイズは範囲サイズのみから暗黙的ではない場合があり、この場合、例Ｂおよび例Ｃの無効化要求を指定する範囲には、例Ａに示すのと同様のサイズヒントフラグ８２を追加するか、ページサイズの別の表現を使用できる。
【００４６】
図７の例Ｄは、無効化要求が無効化されるページの単一のターゲットアドレス８０を指定し、また無効化がステージ１とステージ２のどちらに関連するかを指定する別の例を示している。一部のページサイズがステージ１とステージ２のいずれかのページテーブルでのみ使用される実施形態では、無効化がステージ１とステージ２のどちらに関連するかを指定する単純な１ビットフラグが、適用可能なページサイズを制限するのに十分であり得る。ステージ１およびステージ２の変換が図７に示されていない例Ａ〜Ｃの場合でも、これらの要求では、適切な無効化を実行できるように、どのステージに変換が関連するかを指定できることを理解されよう。
【００４７】
ページサイズ情報を表すために、他の多くの例も使用できる。例えば、ページサイズは、ページサイズを識別する実際の数値、またはページサイズの複数のオプションのいずれかを表すコードとして明示的に指定され得る。また、所与の無効化に適用できるページサイズに依存して、１つまたは複数のビットが設定またはクリアされたビットマップを提供できる。ページサイズは、ページサイズの上限または下限で表すことができるため、実際のページサイズを明示的に表す必要はない。少なくともいくつかの潜在的なページサイズを排除できる一部の情報を指定するだけで十分である。
【００４８】
図６に戻ると、ステップ７２で、制御回路５０は、ページサイズ情報に基づいて無効化要求に使用する無効化ルックアップモードを選択する。図８は、無効化ルックアップモードの選択の一例を示している。ステップ９０において、制御回路は、ページサイズが所与の閾値以上であるかどうかをページサイズ情報から決定する。例えば、これは、上述のサイズヒントフラグ８２が１に設定されているか０に設定されているかに基づいていてもよい。ページサイズが閾値以上である場合、ステップ９２でキャッシュウォークモードが選択され、これは、キャッシュエントリの所与のサブセット（またはすべてのキャッシュエントリ４０）が、無効化要求の現在のターゲットアドレス情報に関係なくアクセスのために選択されるモードであり、選択された各エントリにアクセスし、エントリ４０のタグ４４またはその他の情報を無効化要求のアドレス情報または他のパラメータと比較して、そのエントリがターゲットアドレスにヒットするかどうかを判断する。ステージ１／ステージ２を組み合わせたアドレス変換キャッシュのページサイズが閾値よりも大きい場合、１つのページテーブルエントリが複数のキャッシュエントリにわたって断片化され得るリスクがあるため、キャッシュインデックスモードでは無効化する必要があるすべてのエントリを識別するのに十分ではない場合がある。対照的に、無効化要求に関連付けられたページサイズが閾値よりも小さい場合、これは、ページサイズが十分に小さいため、複数のキャッシュエントリにわたるターゲットページテーブルエントリの断片化のリスクがないことを示している可能性があり、このため、ステップ９４でキャッシュインデックスモードが選択される。キャッシュインデックスモードでは、エントリのセットがターゲットアドレスに基づいて選択され、選択された（インデックス５２に基づいて選択された）セット内のエントリのみがアクセスされる。図９で後述するように、場合によっては、ステップ９４で異なるブロックサイズの複数のキャッシュインデックスモードが選択され得る。通常、キャッシュインデックスモードは、キャッシュウォークモードよりも効率的である。したがって、キャッシュ４内にステージ１とステージ２を組み合わせたエントリがある場合でも、ページサイズ情報を考慮することにより、ステージ１／ステージ２を組み合わせた変換キャッシュのすべての無効化についてキャッシュウォークモード９２を使用する必要はなく、また、キャッシュインデックスモード９４は、無効化が小さいページサイズにのみ影響する場合に使用できる。
【００４９】
図８の例は、ステージ１／ステージ２を組み合わせたキャッシュに役立つ。すべての無効化に対して、図８に示す方法を使用する必要はない。例えば、制御回路１５は、ステージ１／ステージ２を組み合わせた任意のエントリがキャッシュに割り当てられているかどうかを指定し得るステータスレジスタを維持することができる。別個のキャッシュエントリ４０に別個のステージ１およびステージ２エントリのみが割り当てられている場合、キャッシュインデックスモード９４を常に使用できる。ただし、仮想アドレスから物理アドレスに直接マッピングされる少なくとも１つのステージ１／ステージ２を組み合わせたエントリがキャッシュに割り当てられているので、制御回路５０は図８の方法を使用して、キャッシュウォークモードの使用を、無効化が閾値より大きいページサイズに影響する場合に限定することができる。
【００５０】
図９は、無効化ルックアップモードを選択する第２の例を示している。この方法は、図６のステップ７２で（図８の方法も実行せずに）実行することができ、または、図８のステップ９４でキャッシュインデックスモードを選択する一部であってもよい。ステップ１００で、制御回路は、無効化要求のページサイズ情報に基づいて、適用可能なブロックサイズのセットを決定する。例えば、システムは、例えば４ｋＢ、８ｋＢ、１６ｋＢ、３２ｋＢなど、ページテーブルの複数の異なるサイズのページをサポートできる。制御回路は、ページサイズ情報から、キャッシュ内のエントリの特定のブロックサイズが可能でないことを判断できる。例えば、ページサイズ情報が、ページサイズが２ＭＢ未満であると識別した場合、これよりも大きいブロックサイズは考慮されない。同様に、無効化要求を指定する排他的範囲の場合、特定のブロックサイズが可能でないことは範囲のサイズから暗黙的である場合がある。通常、アドレス変換キャッシュに複数のサイズのエントリが同時に含まれている場合、すべてのアクティブなサイズに対して複数のルックアップが実行される。ページサイズ情報を使用すると、これらのルックアップの一部を不要なものとして排除して、電力および待機時間を削減できる。したがって、ステップ１０２で、ステップ１００で決定された適用可能なブロックサイズに対応するキャッシュインデックスモードのサブセットが無効化ルックアップのために選択される。
【００５１】
したがって、図６に戻ると、ステップ７４で、図８および図９の方法のいずれかを使用して、ステップ７２で決定された選択されたルックアップモードに対して１つまたは複数の無効化ルックアップ操作が実行される。無効化ルックアップ操作に基づいて少なくとも１つのターゲットエントリが識別され、ステップ７６で、少なくとも１つのターゲットエントリ内のアドレス変換データが無効化される。
【００５２】
範囲指定無効化要求の場合、ページテーブルのどのターゲットエントリが無効化の影響を受けるか、したがってどのキャッシュエントリ４０が無効化されるかを制御するためのいくつかのオプションが利用可能である。図１０は、ページテーブルのさまざまなレベルによるページテーブルエントリが仮想アドレス空間のさまざまな領域にどのように対応するかを説明する例を示している。例えば、単一のレベル０ページテーブルエントリＡは、レベル０のエントリがカバーする範囲内で、いくつかのレベル１ページテーブルエントリＣ，Ｄよりも大きいアドレス空間の領域にマッピングできる。簡潔にするために、図１０はレベル０ページテーブルの１つのエントリに対応するレベル１ページテーブルの２つのエントリのみを示しているが、実際には１つのレベル０エントリがより多くのレベル１エントリに対応し得ることが理解されよう。同様に、１つのレベル１ページテーブルエントリＣで表されるアドレスデータの部分は、いくつかのレベル２ページテーブルエントリＦ，Ｇにマッピングでき、１つのレベル２ページテーブルエントリＦは、いくつかのレベル３ページテーブルエントリＫ，Ｌ，Ｍにマッピングできる。アドレス空間のすべての部分をマッピングする必要はない。例えば、図１０に示すように、アドレスマッピングが定義されていない領域１２０がいくつかある。ＣＰＵ４またはマスタ６がこれらのアドレスの１つにアクセスしようとすると、例外がトリガされ得、オペレーティングシステムまたは他のソフトウェアがアドレスを割り当ててから、操作を再試行する。図１０でアスタリスクが付いているエントリは、実際のアドレス変換マッピングを提供するリーフエントリである。リーフエントリが異なるレベルにある可能性があることに留意されたい。例えば、図１０のレベル２ページテーブルエントリＧは、特定のアドレスブロックの実際のアドレスマッピングを提供するが、レベル３ページテーブルエントリは、アドレス空間の他の部分のリーフエントリを提供する。例えば、レベル２のページサイズに対応するアドレス空間の特定のブロックがすべて同じアドレスマッピングを必要とする場合、いくつかの同一のレベル３エントリを割り当てるよりも、レベル２エントリを使用してリーフエントリを提供する方が効率的である。アスタリスクでマークされていない他のエントリは、アドレスマッピングを提供しないが、代わりに次のレベルのページテーブルエントリのアドレスを提供する中間リーフエントリまたは非リーフエントリである。
【００５３】
図１０に示すように、さまざまなサイズのアドレスブロックにさまざまなページテーブルエントリが対応する場合がある。例えば、レベル３エントリＰは４ｋＢに対応し、レベル３エントリＱは１６ｋＢに対応する。これが、図４に示すようにキャッシュ内で変換サイズを指定することが有用な理由であり、また所与の仮想アドレスにマッピングできる変換範囲のさまざまな可能なサイズに対応するさまざまなサイズのインデックスとタグ部分を使用して、いくつかのさまざまな無効化ルックアップモードを必要とする理由である。
【００５４】
範囲指定無効化の場合、範囲の影響を受けるエントリを識別するために利用できるいくつかのオプションがある。例えば、図１０は、範囲指定無効化要求によって指定された特定の無効化範囲の例を示している。異なるタイプの無効化要求は、例えば次のように異なるページテーブルエントリのセットを対象とする場合がある：
・排他的範囲指定無効化要求は、指定された範囲内に完全に存在するエントリのみを対象とする場合があり、範囲内に部分的にのみ存在するエントリを対象としない場合がある；
・排他的範囲指定無効化要求は、範囲内に部分的または完全に存在するエントリを対象とする場合があり、範囲内に部分的にのみ存在するエントリでも無効化の対象となる；
・リーフ無効化要求は、リーフエントリのみを対象とする場合があり、ページテーブルの中間エントリには影響しない場合がある；
・リーフおよび中間の無効化は、リーフおよび非リーフ（中間）エントリの両方に影響する場合がある。
【００５５】
これらのオプションのさまざまな組み合わせを定義できる。例えば、図１０では、示された範囲内の排他的リーフ無効化は、指定された範囲内に完全にリーフエントリであるエントリＮ，Ｏ，Ｐ，Ｑを対象とするが、エントリＲは範囲内に部分的にしか存在しないため無効化されず、また、エントリＨは、リーフエントリではなく中間エントリであるため、無効化されない。包括的範囲無効化も、例えばエントリＲを対象とする。
【００５６】
提供できる無効化の特定のタイプの１つは、排他的なリーフおよび中間の無効化であり、これは指定された範囲内に完全にあり、リーフエントリまたは非リーフエントリのいずれかとすることができるページテーブルエントリを対象とする。例えば、図１０に示す範囲を使用して排他的なリーフおよび中間の無効化が実行される場合、すべて完全に無効化範囲内にありかつリーフまたは非リーフエントリのいずれかであるエントリＨ，Ｎ，Ｏ，Ｐ，Ｑを対象とする。このような無効化は、ページテーブルツリーのブランチ全体を１回の操作で無効化するのに非常に役立ち得るが、指定された無効化範囲外に少なくとも部分的に拡張されるため、ツリーの上位レベルをそのまま残す。
【００５７】
要約すると、上記で説明した手法により、アドレス変換キャッシュ、例えば変換ルックアサイドバッファ（ＴＬＢ）からの無効化のパフォーマンスを改善できる。ステージ１＋２の組み合わせたＴＬＢでは、ステージ１変換はステージ２変換よりも大きくなる可能性があり、例えば多くのＴＬＢロケーション間で断片化されているページにつながる。仮想アドレスによる単一の無効化命令は、通常、単一のＴＬＢエントリを無効化することが期待されるが、この場合、多くのエントリを無効化する必要がある。そのようなエントリがＴＬＢに存在する場合、キャッシュはすべての無効化操作がＴＬＢコンテンツ全体をウォークする必要があるモードに切り替えることができる。特に大きなＴＬＢの場合、これは非常に遅くなる。前述のように、ソフトウェアは無効化要求に対して無効化されるページのサイズを示すことができ、キャッシュハードウェアはこの情報を使用して小さなエントリの場合は完全なＴＬＢのウォークを回避し、ＴＬＢの断片化されたエントリのステージ１ブロックサイズと少なくとも同じ大きさ以上のエントリの場合はＴＬＢのみをウォークする。例えば、ブロックがステージ１で２ＭＢであるが、ステージ２で４ＫＢページにマッピングする場合、２ＭＢ以上の無効化のみが完全なＴＬＢのウォークを引き起こし、他の無効化は、通常どおりキャッシュインデックスルックアップモードを使用して「高速」無効化として進行する可能性がある。
【００５８】
ページサイズの知識により、ＴＬＢでのルックアップの数を実装で最適化することもでき、これにより、いくつかのさまざまなブロックサイズとページサイズを同時に格納できる。ＴＬＢに複数のサイズのエントリが同時に含まれている場合、いくつかのルックアップが実行される。通常のルックアップはヒット後に停止できるが、無効化にはすべてのアクティブなサイズのルックアップが必要である。したがって、検索スペースを削減すると、無効化が高速化される。
【００５９】
範囲を指定すると、中間ウォークキャッシュをインテリジェントに無効化できる。範囲の無効化は「リーフ」または「非リーフ」として定義することができ、非リーフの無効化では、存在する場合Ｌ０、Ｌ１、およびＬ２ウォークキャッシュエントリを無効化する必要があり、リーフは最終レベルのＬ３エントリのみを対象とする場合がある。特にＳＭＭＵで見られるように、多くの変換シナリオの断片的な性質により、複数レベルのウォークキャッシュが実装される。したがって、無効化操作は範囲によって指定され得、各ウォークキャッシュレベルは、範囲がそのレベルのエントリを包含するのに十分な大きさである場合にのみ無効化され得る。
【００６０】
ブロックの範囲、例えばページグラニュルが４ＫＢである１６個の２ＭＢブロックの範囲が無効化される場合がある。ＴＬＢとの通信時間を最小限に抑えるために、一連のコマンドを発行する代わりに、無効化するページの範囲を指定できると便利である。リアルタイムユーザのＴＬＢまたは他のＴＬＢへの影響のため、すべて無効化コマンドを使用した過剰な無効化は望ましくない。範囲ごとの無効化操作が提供され、これには最小ページサイズのパラメータもあり、そのサイズ以下のキャッシュエントリを調べる必要がない。例えば、前の例では、１６個の２ＭＢブロックエントリを検索することができ、可能な４ＫＢエントリをすべて検索する必要がないため、ＴＬＢ帯域幅と時間を節約できる。
【００６１】
本発明の例示的な実施形態を添付の図面を参照しながら本明細書で詳細に説明してきたが、本発明はそれらの正確な実施形態に限定されず、添付の特許請求の範囲によって規定されるような本発明の範囲および趣旨から逸脱することなく、当業者によってさまざまな変更および修正がなされ得る。
【図１】
2020529656.tif 000003
【図２】
2020529656.tif 000004
【図３】
2020529656.tif 000005
【図４】
2020529656.tif 000006
【図５】
2020529656.tif 000007
【図６】
2020529656.tif 000008
【図７】
2020529656.tif 000009
【図８】
2020529656.tif 000010
【図９】
2020529656.tif 000011
【図１０】
2020529656.tif 000012
【国際調査報告】
2020529656.tif 000013
2020529656.tif 000014
2020529656.tif 000015
2020529656.tif 000016