(57)【特許請求の範囲】
【請求項１】
データ処理のための装置であって、
メモリに格納されたデータ値を参照して、データ処理動作を行うように構成されたデータ処理回路であって、それぞれのデータ処理動作が、それに関連付けられた識別子を有する、データ処理回路と、
前記データ処理回路によって行われた前記データ処理動作に対応する、第１のアドレッシング・システムで使用された第１のアドレスと、前記メモリによって使用された、第２のアドレッシング・システムで使用された第２のアドレスとの間のアドレス変換を格納するように構成されたアドレス変換回路であって、それぞれの格納されるアドレス変換が、対応する識別子といっしょに格納される、アドレス変換回路と
を備え、
前記アドレス変換回路は、選択され格納されたアドレス変換において無効化プロセスを行うよう命令する無効化コマンドに応じて、前記選択され格納されたアドレス変換を無効化するように構成され、前記選択され格納されたアドレス変換が、指定の第１のアドレス及び指定の識別子によって、前記無効化コマンドで特定され、
前記アドレス変換回路は、識別子グルーピング情報によってさらに構成された前記無効化プロセスを行うようにさらに構成され、前記識別子グルーピング情報が、複数の識別子を、識別子グループとして互いに関連付け、前記無効化プロセスが、前記指定の第１のアドレスに一致し、且つ前記指定の識別子が属する前記識別子グループ内のいずれかの識別子に一致する、全ての格納されたアドレス変換に適用され、
前記データ処理回路が、２つのデータ処理モードのうちの１つで動作するように構成され、第１のデータ処理モードでは、前記データ処理回路が、前記無効化コマンドを、前記識別子グルーピング情報なしで発行するように構成され、且つ前記装置が、前記識別子グルーピング情報を、前記無効化コマンドに付加するように構成され、第２のデータ処理モードでは、前記データ処理回路が、前記無効化コマンドを発行し、且つ前記識別子グルーピング情報を、前記無効化コマンドそのものに付加するように構成される、データ処理のための装置。
【請求項２】
前記データ処理回路が、前記データ処理動作を行う複数の仮想マシンをホストするように構成され、それぞれのアドレス変換に関連付けて、前記アドレス変換回路によって格納された前記対応する識別子が、仮想マシン識別子である、請求項１に記載の装置。
【請求項３】
前記アドレス変換回路が、それぞれの格納されたアドレス変換に関連付けて、前記識別子グルーピング情報を格納するように構成される、請求項１又は請求項２に記載の装置。
【請求項４】
前記識別子グルーピング情報が、前記無効化プロセスで、格納されたアドレス変換をマッチングする際に無視されるべき、前記指定の識別子の一部を前記無効化コマンドで指定する、請求項１から３までのいずれかに記載の装置。
【請求項５】
前記識別子グルーピング情報が、前記指定の識別子の前記一部が、最上位部分であるか、又は最下位部分であるかを指定する、請求項４に記載の装置。
【請求項６】
前記識別子グルーピング情報が、非ブロードキャスト・マーカを指定するように構成され、前記無効化コマンドがブロードキャスト無効化コマンドとして受信される場合、前記無効化コマンドに応じて、前記非ブロードキャスト・マーカで印付けされた、格納されたアドレス変換に対して、前記無効化プロセスが行われないようにする、請求項３から５までのいずれかに記載の装置。
【請求項７】
前記装置が、前記アドレス変換回路によって行われた全てのアドレス無効化プロセスに適用するための、前記アドレス変換回路にとってアクセス可能な前記識別子グルーピング情報を格納するように構成される、請求項１から６までのいずれかに記載の装置。
【請求項８】
前記アドレス変換回路が、前記無効化コマンド内の前記識別子グルーピング情報を特定するように構成される、請求項１から７までのいずれかに記載の装置。
【請求項９】
前記データ処理回路が、少なくとも２つのデータ処理デバイスを備え、それぞれの識別子グループに対して、前記アドレス変換回路が、前記少なくとも２つのデータ処理デバイスのうちの第１のデータ処理デバイスに、その識別子グループの第１の識別子のみに対するアドレス変換を提供し、且つ前記少なくとも２つのデータ処理デバイスのうちの第２のデータ処理デバイスに、その識別子グループのいずれかの識別子に対するアドレス変換を提供するように構成される、請求項１から８までのいずれかに記載の装置。
【請求項１０】
前記アドレス変換回路が、受信された第１のアドレス及び受信された識別子に対して、アドレス変換が格納されるかどうかを判断するルックアップ・プロセスを行うように構成され、前記アドレス変換回路が、それぞれの格納されたアドレス変換に関連付けて、ルックアップ・マッチ修飾子を格納するように構成され、前記ルックアップ・マッチ修飾子が第１の値を有する場合、前記ルックアップ・プロセスが、前記受信された識別子が格納された識別子に完全に一致する場合にのみ、前記アドレス変換を確認するように構成され、前記ルックアップ・マッチ修飾子が第２の値を有する場合、前記ルックアップ・プロセスが、前記受信された識別子が、前記格納された識別子用の識別子グルーピング情報によって定義されるように、前記格納された識別子が属する識別子グループ内のいずれかの識別子に一致する場合に、前記アドレス変換を確認するように構成される、請求項１から９までのいずれかに記載の装置。
【請求項１１】
前記アドレス変換回路が、前記ルックアップ・プロセスの結果としてアドレス変換が確認されない場合には、メモリから前記アドレス変換をフェッチする検索プロセスを開始するように構成され、前記ルックアップ・マッチ修飾子が前記第１の値を有し、前記検索プロセスが、前記受信された識別子は一致しなかったが、前記受信された識別子が、前記アドレス変換回路における一致する格納された識別子も属する識別子グループに属することから、前記ルックアップ・プロセスの結果として、アドレス変換が確認されなかったことを示し、且つ、前記検索プロセスが、メモリからフェッチされた前記アドレス変換が、そうでなければ、前記格納された識別子に対して格納された前記アドレス変換に一致することを示す場合、前記アドレス変換回路が、前記格納された識別子に対する前記ルックアップ・マッチ修飾子が前記第２の値を有するよう変更するように、さらに構成される、請求項１０に記載の装置。
【請求項１２】
前記アドレス変換回路が、前記第１のアドレッシング・システムにおけるページ・テーブルに対する、前記第２のアドレッシング・システムにおけるページ・テーブルへのアドレス変換を格納するように構成される、トランスレーション・ルックアサイド・バッファである、請求項１から１１までのいずれかに記載の装置。
【請求項１３】
前記データ処理回路が、少なくとも２つのデータ処置デバイスを備え、前記少なくとも２つのデータ処置デバイスのうちの第１のデータ処理デバイスが、汎用中央処理ユニットであり、前記少なくとも２つのデータ処置デバイスのうちの第２のデータ処理デバイスが、前記汎用中央処理ユニットに代わって、前記データ処理動作の少なくともいくつかを行うように構成されたスレーブ・デバイスである、請求項１から１２までのいずれかに記載の装置。
【請求項１４】
データ処理の方法であって、
メモリに格納されたデータ値を参照して、データ処理動作を行うステップであって、それぞれのデータ処理動作が、それに関連付けられた識別子を有する、ステップと、
データ処理回路によって行われた前記データ処理動作に対応する、第１のアドレッシング・システムで使用された第１のアドレスと、前記メモリによって使用された、第２のアドレッシング・システムで使用された第２のアドレスとの間のアドレス変換を格納するステップであって、それぞれの格納されるアドレス変換が、対応する識別子といっしょに格納される、ステップと、
無効化コマンドに応じて、選択され格納されたアドレス変換に無効化プロセスを行って、前記選択され格納されたアドレス変換を無効化するステップであって、前記選択され格納されたアドレス変換が、指定の第１のアドレス及び指定の識別子によって、無効化コマンドで特定される、ステップと、
識別子グルーピング情報によってさらに構成された前記無効化プロセスを行うステップであって、前記識別子グルーピング情報が、複数の識別子を、識別子グループとして互いに関連付け、前記無効化プロセスが、前記指定の第１のアドレスに一致し、且つ前記指定の識別子が属する前記識別子グループ内のいずれかの識別子に一致する、全ての格納されたアドレス変換に適用される、ステップと
を含み、
前記データ処理回路が、２つのデータ処理モードのうちの１つで動作し、第１のデータ処理モードでは、前記データ処理回路が、前記無効化コマンドを、前記識別子グルーピング情報なしで発行し、且つデータ処理のための装置が、前記識別子グルーピング情報を、前記無効化コマンドに付加し、第２のデータ処理モードでは、前記データ処理回路が、前記無効化コマンドを発行し、且つ前記識別子グルーピング情報を、前記無効化コマンドそのものに付加する、データ処理の方法。
【請求項１５】
データ処理のための装置であって、
メモリに格納されたデータ値を参照して、データ処理動作を行う手段であって、それぞれのデータ処理動作が、それに関連付けられた識別子を有する、手段と、
データ処理回路によって行われた前記データ処理動作に対応する、第１のアドレッシング・システムで使用された第１のアドレスと、前記メモリによって使用された、第２のアドレッシング・システムで使用された第２のアドレスとの間のアドレス変換を格納する手段であって、それぞれの格納されるアドレス変換が、対応する識別子といっしょに格納される、手段と、
無効化コマンドに応じて、選択され格納されたアドレス変換に無効化プロセスを行って、前記選択され格納されたアドレス変換を無効化する手段であって、前記選択され格納されたアドレス変換が、指定の第１のアドレス及び指定の識別子によって、前記無効化コマンドで特定される、手段と、
識別子グルーピング情報によってさらに構成された前記無効化プロセスを行う手段であって、前記識別子グルーピング情報が、複数の識別子を、識別子グループとして互いに関連付け、前記無効化プロセスが、前記指定の第１のアドレスに一致し、且つ前記指定の識別子が属する前記識別子グループ内のいずれかの識別子に一致する、全ての格納されたアドレス変換に適用される、手段と
を備え、
前記データ処理回路が、２つのデータ処理モードのうちの１つで動作するように構成され、第１のデータ処理モードでは、前記データ処理回路が、前記無効化コマンドを、前記識別子グルーピング情報なしで発行するように構成され、且つ前記装置が、前記識別子グルーピング情報を、前記無効化コマンドに付加するように構成され、第２のデータ処理モードでは、前記データ処理回路が、前記無効化コマンドを発行し、且つ前記識別子グルーピング情報を、前記無効化コマンドそのものに付加するように構成される、データ処理のための装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理に関する。より詳細には、本発明は、アドレス変換回路における格納されたアドレス変換の無効化に関する。
【背景技術】
【０００２】
メモリに格納されたデータ値を参照して、データ処理動作を行うデータ処理装置では、第１のアドレッシング・システムのアドレスを、第２のアドレッシング・システムのアドレスに変換するように構成されるアドレス変換回路を提供することが知られている。例えば、この場合、データ処理装置のデータ処理回路（例えば、ＣＰＵ）は、仮想アドレスを使用して、そのデータ処理動作を行うように構成され、一方、メモリに格納されるデータ値は、物理アドレスを使用して、メモリによって参照される。したがって、この実例では、アドレス変換回路は、仮想アドレスを物理アドレスに変換するように構成される。いくつかのアドレス変換が、繰り返し行われる可能性があるとすれば、アドレス変換プロセスの実行を容易にするために、特にメモリからアドレス変換定義を検索することに関連するレイテンシを回避するために、データ処理回路に密接に関連付けて提供されたストレージに、一連のアドレス変換をキャッシュすることがさらに知られている。このようなアドレス変換回路は、例えば、トランスレーション・ルックアサイド・バッファ（ＴＬＢ：Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ）によって提供される。
【０００３】
指定のメモリ・アドレスへの必要とされるタイプのアクセスを行うことが許される要求元のみに、対応するアドレス変換が提供されることができるように、特定のアドレス変換が、メモリの特定のセクションに関連付けられ、これによって、通常それらに関連した定義済み許可を有するようになるということにより、例えば、コンテキスト・スイッチ後、アドレス変換が、無効になる可能性があることがさらに知られている。この状態に対処する簡単で、それでいて単刀直入な技術は、このような状態でローカルに格納される（キャッシュされる）全ての格納されたアドレス変換をフラッシュして、その後に要求されるアドレス変換が、メモリに格納されたページ・テーブルなどの限定的な参照元を参照して判断される必要があるようにし、これによって、メモリ・アクセス許可が、確実に正しく守られるようにするというものである。しかし、ローカル・ストレージの内容全部が削除され、それによって、ローカル・ストレージを有することの十分な利益が再び実感されることができないうちに、再配置される必要があるため、この技術は、ローカル・アドレス変換ストレージ（例えば、ＴＬＢ）のむしろ非効率な使用をもたらす可能性がある。
【０００４】
そのため、特定のメモリ・アドレスを指定し、且つデータ処理装置におけるいずれかのアドレス変換回路に、そのアドレスに対応する格納されたアドレス変換を無効化させる無効化コマンドに応じるように、このようなアドレス変換回路を構成することも知られている。さらに、データ処理回路が、コンテキスト間を効率的に切り替えできるようにするために、又は、例えば、複数の仮想マシンをホストできるようにするために、それぞれのローカルに格納されたアドレス変換に関連付けて識別子（例えば、アドレス空間識別子及び／又は仮想マシン識別子）を格納して、いずれか所定のアドレス変換が、一致する識別子を提供することができる要求元のみに使用可能であるようにすることも知られている。したがって、そのようなデータ処理装置における無効化コマンドも、対応する関連付けられた識別子を有することとなり、それぞれのプロセス及び／又は仮想マシンが、それ自身の格納されたアドレス変換の無効化は制御するが、その他のプロセス／仮想マシンの格納されたアドレス変換の無効化は制御しないようにする。
【発明の概要】
【課題を解決するための手段】
【０００５】
第１の態様から見ると、本発明は、データ処理のための装置を提供し、この装置は、メモリに格納されたデータ値を参照して、データ処理動作を行うように構成されたデータ処理回路であって、それぞれのデータ処理動作が、それに関連付けられた識別子を有する、データ処理回路と、
データ処理回路によって行われたデータ処理動作に対応する、第１のアドレッシング・システムで使用された第１のアドレスと、メモリによって使用された第２のアドレッシング・システムで使用された第２のアドレスとの間のアドレス変換を格納するように構成されたアドレス変換回路であって、それぞれの格納されるアドレス変換が、対応する識別子といっしょに格納される、アドレス変換回路と
を備え、
アドレス変換回路は、選択され格納されたアドレス変換において無効化プロセスを行うよう命令する無効化コマンドに応じて、選択され格納されたアドレス変換を無効化するように構成され、選択され格納されたアドレス変換は、指定の第１のアドレス及び指定の識別子によって、無効化コマンドで特定され、
アドレス変換回路は、識別子グルーピング情報によってさらに構成された無効化プロセスを行うようにさらに構成され、識別子グルーピング情報は、複数の識別子を、識別子グループとして互いに関連付け、無効化プロセスは、指定の第１のアドレスに一致し、且つ指定の識別子が属する識別子グループ内のいずれかの識別子に一致する、全ての格納されたアドレス変換に適用される。
【０００６】
本発明の発明者は、アドレス変換回路での格納されたアドレス変換の無効化における有利なフレキシビリティが、識別子グルーピング情報にさらに応じて、その無効化プロセスを行うようにアドレス変換回路を構成することによって提供されてもよいことを実現した。無効化プロセスは、無効化コマンドで指定されたアドレス及び識別子に既に基づいている。この識別子は、いくつかの形態をとる可能性があることに留意されるべきであり、例えば、指定の識別子は、アドレス空間識別子（ＡＳＩＤ：Ａｄｄｒｅｓｓ  Ｓｐａｃｅ  ＩＤｅｎｔｉｆｉｅｒ）などのプロセス識別子であってもよく、この場合、指定の識別子は、ＡＳＩＤであり、指定のアドレスは、ＡＳＩＤによって特定されたプロセスがアクセスを求めているアドレスを表す。代替えとして、識別子は、例えば、指定のアドレスへのアクセスを求めている、プロセスが実行されている種々のホストに対応してもよい。この実例では、指定の識別子は、装置のデータ処理回路によってホストされる特定の仮想マシンに対応し、これによって、その仮想マシンによって実行されるプロセスは、指定のアドレスへのアクセスを求めている。
【０００７】
装置のアドレス変換回路は、第１のアドレッシング・システムと第２のアドレッシング・システムのアドレス間のアドレス変換を格納するように構成される。これらのアドレッシング・システムは、例えば、仮想アドレス（例えば、ＣＰＵで使用されるような）、ゲスト物理アドレス（すなわち、中間物理アドレス）、及び物理アドレス（例えば、メモリで使用されるような）からそれぞれに応じて選択される、いくつかの形態をとる可能性がある。したがって、アドレス変換回路は、仮想アドレスと物理アドレスとの間のアドレス変換をもたらすように構成されてもよく、この変換全体は、それ自体、２つの段階、すなわち仮想アドレスからゲスト物理アドレスへの変換と、ゲスト物理アドレスから物理アドレスへの変換を含んでもよい。したがって、仮想アドレスとゲスト物理アドレスとの両方が、データ処理回路によって行われたデータ処理動作に対応することから、上記の第１のアドレッシング・システムで使用された第１のアドレスは、これらの上記の実例では、仮想アドレス又はゲスト物理アドレスに対応する可能性がある。第２のアドレスは、メモリによって、第２のアドレッシング・システムで使用されたアドレス（すなわち、物理メモリ・アドレス）である。
【０００８】
本発明によって提供されるフレキシビリティは、識別子グルーピング情報の提供から生じる。この識別子グルーピング情報は、複数の識別子を、識別子グループとして互いに関連付け、アドレス変換回路は、無効化コマンドに応じて、無効化コマンドそのものによって与えられた指定の第１のアドレス及び指定の識別子に一致する、格納されたアドレス変換を無効にするだけではなく、指定の第１のアドレスに一致し、且つ指定の識別子（無効化コマンドにおける）が属する識別子グループ内のその他の識別子に一致する、それ以上の格納されたアドレス変換を無効にするように構成される。
【０００９】
したがって、この方法における識別子グループの形態は、アドレス変換回路に格納された複数のアドレス変換が、１回の無効化コマンドに応じて無効化されることができるという利点がある。無効化コマンドそのものが、いくつかのソース、例えば、データ処理回路（それぞれがＣＰＵとＴＬＢの場合の、このスレーブ・アドレス変換回路に対するマスタ・デバイスとして動作する）から来る可能性がある、又は、無効化コマンドが、アドレス変換回路の内部に生成される（すなわち、一種のハウスキーピング作用として）可能性があることに留意されるべきである。
【００１０】
識別子グループは、これによって、例えば、アドレス空間識別子グループ（ＡＳＩＤなど）に対応してもよく、又は、別の実例としては、仮想マシン識別子グループに対応してもよい。無効化コマンドで指定された第１のアドレスに一致し、且つ識別子グループ内のいずれかの識別子に一致する、全ての格納されたアドレス変換において無効化プロセスを行うようにアドレス変換回路を構成することは、いずれかの特定の識別子の発信元（例えば、特定のプロセス又は仮想マシン）が、特定のアドレス（その発信元が、そこへの正当なアクセスを有する）に対する格納されたアドレス変換の全てが、識別子が属するグループの全てに対して無効化されるようにすることができることを意味する。したがって、本発明は、特定の識別子間に関係性を導入し、したがって、それらの識別子の発信元（例えば、プロセス又は仮想マシン）間に関係性を導入し、それらの発信元が、以下でより詳細に説明される有利な方法で、互いに関連付けられることを可能にする。
【００１１】
さらに、アドレス変換回路のこの構成によって、複数の格納されたアドレス変換が素早く無効化されることが可能である。この構成は、例えば、アドレス変換がメモリ管理ユニット（ＭＭＵ：Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）内のＴＬＢに格納されるコンテキストにおいて、複数のアドレス変換無効化が、かなり遅い可能性がある、全ての作動している仮想マシンの制御全体を維持するハイパバイザを介して、ＭＭＵと通信するソフトウェアによって実行されるような代替えの構成と比較されるべきである。
【００１２】
上述のように、識別子は、いくつかの形態をとる可能性があるが、一実施例では、データ処理回路は、データ処理動作を行う複数の仮想マシンをホストするように構成され、それぞれのアドレス変換に関連付けて、アドレス変換回路によって格納された対応する識別子は、仮想マシン識別子である。したがって、このような実施例では、識別子グルーピング情報は、複数の仮想マシン識別子を互いに関連付けて、無効化プロセスが、所定の第１のアドレス、及び関連の仮想マシン識別子グループのいずれかに対する全ての格納されたアドレス変換に適用されるようにする。
【００１３】
識別子グルーピング情報は、それぞれに関連した異なる利点を有する様々な異なる方法で提供されてもよい。例えば、いくつかの実施例では、アドレス変換回路は、識別子グルーピング情報を、それぞれの格納されたアドレス変換に関連付けて格納するように構成される。これによって、特定の識別子グループ定義が、それぞれの格納されたアドレス変換に直接関連付けられることが可能になり、したがって、これらの関連付けの構成における特定のフレキシビリティ（エントリ毎の）が可能になる。
【００１４】
識別子グルーピング情報そのものは、様々な形態をとってもよいが、いくつかの実施例では、識別子グルーピング情報は、無効化プロセスのために、格納されたアドレス変換をマッチングする時に無視されるべき、無効化コマンドにおける指定の識別子の一部を指定する。したがって、指定の識別子の一部を無視することによって、ワイルドカード・タイプのマッチング手順が提供され、アドレス変換回路に格納された複数の識別子は、無効化コマンドにおける指定の識別子に対してマッチングされることができる。この形態はさらに、指定の識別子の無視されるべき一部を特定することが、非常に限定された量の情報だけしか必要とせず（例えば、指定の識別子の無視するべき限定されたビット数を特定する）、それによって、この識別子グルーピング情報は、特に、識別子グルーピング情報がそれぞれの格納されたアドレス変換に関連付けて格納される場合、大きな負担を掛けることなく提供されることができる（したがって、アドレス変換回路において、追加空間を少ししか必要としない）という利点がある。格納されたアドレス変換をマッチングする際に無視されるべき、指定の識別子の一部を指定することは、受信された指定の識別子とのマッチングの際に無視すべき、それぞれの格納された識別子の一部を指定することと同じであると論理的に見なされてもよく、したがって、これらの同等の定義のそれぞれが、本明細書で考慮されることが留意されるべきである。
【００１５】
識別子グルーピング情報は、いくつかの方法で、指定の識別子の無視すべき一部を指定してもよいが、いくつかの実施例では、識別子グルーピング情報は、指定の識別子の一部が、最上位部分であるか、又は最下位部分であるかを指定する。これによって、識別子グルーピング情報は、例えば、指定の識別子の無視すべき最上位ビット数を指定してもよく、又は反対に、指定の識別子の無視すべき最下位ビット数を指定してもよい。これらの可能性のそれぞれに関連した特定の利点があり、例えば、指定の識別子の最下位部分を無視することは、それらの論理的関連付けを容易にしてもよい、識別子のナンバリング体系内で連続する識別子グループをもたらすが、他の状態では、グループとして互いに関連付けられた識別子が、識別子用に使用されるナンバリングシステム内で間隔を空けて置かれ、また「ミラーリングされた」識別子グループがサポートされることができるように、指定の識別子の最上位部分を無視することが好ましい場合がある。
【００１６】
いくつかの実施例では、識別子グルーピング情報は、非ブロードキャスト・マーカを指定するように構成可能で、無効化コマンドがブロードキャスト無効化コマンドとして受信される場合、無効化プロセスが、無効化コマンドに応じて、非ブロードキャスト・マーカで印付けされた、格納されたアドレス変換に対して行われないようにする。したがって、この構成は、特定の格納されたアドレス変換が、ブロードキャスト無効化コマンド、例えば、ＣＰＵによって開始され、それ自身のＭＭＵ／ＴＬＢ装備の周辺デバイスによって受信される、分散型仮想メモリ無効化ブロードキャストの結果として、無効化から「保護される」ことができるという、このような形態によってサポートされてもよい有利なさらなる特徴を提供する。この状態では、周辺デバイスは、通常、それを介してＣＰＵが周辺デバイスをプログラムすることができる、より一般的には、周辺デバイスと相互作用する、追加のインタフェースを提供されることとなり、この追加のインタフェースは、ＴＬＢ内のエントリが無効化されるようにするのに使用されることもできる。
【００１７】
したがって、識別子グルーピング情報は、アドレス変換回路が、無効化コマンドに応じて実行することを求めるブロードキャスト無効化プロセスから、アドレス変換回路における特定の格納されたアドレス変換が保護されるべきであることを特定する、この特定の構成で使用されることができる。これは、追加レベルのフレキシビリティを、本発明によって提供された新しい構成にもたらすが、一般的には、識別子グルーピング情報は、特定の無効化コマンドに応じて、より多くのアドレス変換が無効化されるようにするのに使用され、この特定の構成は、指定のアドレス変換が、ブロードキャスト無効化コマンドによって開始された、その拡張された無効化プロセスから免れることを可能にする。
【００１８】
しかし、識別子グルーピング情報は、それぞれの格納されたアドレス変換に関連付けて直接格納されなくてもよく、例えば、いくつかの実施例では、装置は、アドレス変換回路によって行われた全てのアドレス無効化プロセスに適用するための、アドレス変換回路にとってアクセス可能な識別子グルーピング情報を格納するように構成される。したがって、この識別子グルーピング情報は、一般的に使用可能な方法で、アドレス変換回路の中央に格納されることができ（すなわち、アドレス変換回路そのものの中、又はより一般的には、データ処理装置内）、アドレス変換回路によって行われたいずれの無効化プロセスに対しても、この一般的な識別子グルーピング情報が参照されるようにする。これは、この識別子グルーピング情報を格納することに関連するストレージ・スペースを縮小する。
【００１９】
他の実施例では、アドレス変換回路は、無効化コマンド内の識別子グルーピング情報を特定するように構成される。したがって、この識別子グルーピング情報が、無効化コマンド毎に無効化コマンドに提供されるように、無効化コマンドそのものが、識別子グルーピング情報を含むように拡張されてもよい。これも、アドレス変換回路内のストレージ・スペースを節約し、さらに、識別子グルーピング情報が、それぞれの無効化コマンドに対してどのように定義されるかを定義するフレキシビリティを、無効化コマンドの発信元に提供する。
【００２０】
いくつかのこのような実施例では、データ処理回路は、２つのデータ処理モードのうちの１つのモードで動作するように構成され、第１のデータ処理モードでは、データ処理回路は、識別子グルーピング情報なしで無効化コマンドを発行するように構成され、装置は、識別子グルーピング情報を無効化コマンドに付加するように構成され、また第２のデータ処理モードでは、データ処理回路は、無効化コマンドを発行し、且つ識別子グルーピング情報を、無効化コマンドそのものに付加するように構成される。
【００２１】
これら２つのデータ処理モードは、いくつかの形態をとってもよいが、具体的には、データ処理装置内の様々な特権レベルでの動作に対応してもよい。したがって、第１のデータ処理モードは、低レベルの特権に対応し、ここで、無効化コマンドが、識別子グルーピング情報を定義するための十分な特権を有していない発信元（例えば、プロセス又は仮想マシン）によって発行され、したがって、この識別子グルーピング情報の無効化コマンドへの付加が、装置の別の部分（すなわち、これを行うための十分な特権を有する装置の部分）で取り扱われる。例えば、無効化コマンドを発行する仮想マシンが、識別子グルーピング情報を定義するための十分な特権を有していないという仮想マシン実施例のコンテキストでは、この識別子グルーピング情報は、十分な特権を有するハイパバイザによって付加されてもよい。言い換えれば、この実例では、ハイパバイザは、第２のデータ処理モードで動作しており、それによって、ハイパバイザ自身の無効化コマンドを発行する際には、識別子グルーピング情報を無効化コマンドそのものに付加するための十分な特権を有する。
【００２２】
いくつかの実施例では、データ処理回路は、少なくとも２つのデータ処理デバイスを備え、それぞれの識別子グループに対して、アドレス変換回路は、少なくとも２つのデータ処理デバイスのうちの第１のデータ処理デバイスに、その識別子グループの第１の識別子のみに対してのアドレス変換を提供し、且つ少なくとも２つのデータ処理デバイスのうちの第２のデータ処理デバイスに、その識別子グループのいずれかの識別子に対してのアドレス変換を提供するように構成される。
【００２３】
したがって、識別子グルーピング情報によって、複数の識別子を識別子グループとして互いに関連付けることは、特定の（第２の）データ処理デバイスに利益をもたらすが、別の（第１の）データ処理デバイスには利益をもたらさなくてもよい。これは、また、それによってデータ処理装置内の様々なレベルの特権がサポートされてもよい機構を提供し、ここで、第２のデータ処理デバイスのみが、識別子グループ内の識別子一式に対するアドレス変換が提供されるが、第１のデータ処理デバイスは、グループにおける特定の識別子とその他の識別子との関連付けが見えない。したがって、これは、第２のデータ処理デバイスが、第１のデータ処理デバイスと、第１の識別子を有効に共有することができるとともに、第１のデータ処理デバイスにとってアクセス可能ではない指定のグループ内のその他の識別子にアクセスできることを意味することが重要である。これは、例えば、第２のデータ処理デバイスのみが、識別子グループ内の全ての識別子といっしょに、無効化コマンドを発行することができるが、第１のデータ処理デバイスは、それに関連付けられた第１の識別子といっしょに無効化コマンドを発行するだけしかできないように制約されるという形態によって実施されてもよい。
【００２４】
いくつかの実施例では、アドレス変換回路は、アドレス変換が受信された第１のアドレス及び受信された識別子に対して格納されたかどうかを判断するルックアップ・プロセスを行うように構成され、アドレス変換回路は、それぞれの格納されたアドレス変換に関連付けて、ルックアップ・マッチ修飾子を格納するように構成され、そこでは、ルックアップ・マッチ修飾子が第１の値を有する場合には、ルックアップ・プロセスは、受信された識別子が格納された識別子に完全に一致する場合にのみ、アドレス変換を確認するように構成され、またルックアップ・マッチ修飾子が第２の値を有する場合には、ルックアップ・プロセスは、受信された識別子が、格納された識別子に対して識別子グルーピング情報によって定義されるように、格納された識別子が属する識別子グループ内のいずれかの識別子に一致する場合にアドレス変換を確認するように構成される。
【００２５】
したがって、識別子グループ内の複数の識別子に無効化プロセスを拡張するのに使用される識別子グルーピング情報も、アドレス変換回路によって実行されるルックアップ・プロセス内で使用されることができる。したがって、これは、アドレス変換回路に格納された１つのアドレス変換が、複数の識別子（それらの識別子はグループを形成する）に関連したルックアップ要求に応じて使用されることができ、したがって、指定のアドレス変換が、そのグループの個々の識別子に対して、アドレス変換回路に格納される必要がないことから、アドレス変換回路内のストレージ・スペースが有利に節約されることができる、ことを意味する。ルックアップ・マッチ修飾子は、この特徴が、所定の格納されたアドレス変換に対して、選択的に有効にされる、又は無効にされることを可能にする。
【００２６】
いくつかの実施例では、アドレス変換回路は、ルックアップ・プロセスの結果としてアドレス変換が確認されない場合、メモリからアドレス変換をフェッチする検索プロセスを開始し、またルックアップ・マッチ修飾子が第１の値を有し、検索プロセスが、受信された識別子は一致しなかったが、この受信された識別子が、アドレス変換回路における一致する格納された識別子も属する識別子グループに属することから、ルックアップ・プロセスの結果として、アドレス変換が確認されなかったことを示す場合、アドレス変換回路は、格納された識別子に対するルックアップ・マッチ修飾子を、第２の値を有するように変更するように、さらに構成される。
【００２７】
したがって、ルックアップ・プロセスの結果として、アドレス変換が確認されない状態では（例えば、ＴＬＢ「ミス」が起こる場合）、メモリからアドレス変換をフェッチする検索プロセスが開始されることができる（例えば、ページ・テーブル・ウォーク）。受信された識別子が一致しなかったが、その受信された識別子が属する識別子グループ内の別の識別子に対して、一致するアドレス変換がアドレス変換回路に格納されることから、ルックアップ・プロセスがミスとなったことが、検索プロセスの結果として確認され、また、検索プロセスが、メモリからフェッチされたアドレス変換が、そうでなければ、格納された識別子に対して格納されたアドレス変換に一致することを示す場合、アドレス変換回路は、格納された識別子に対するルックアップ・マッチ修飾子を、第２の値を有するように変更して、アドレス変換回路における新しいエントリが、ルックアップ・プロセスを開始した、要求されたアドレス変換に対して作られる必要がないようにし、このアドレス及び受信された識別子に関する、さらなるアドレス変換要求が、その後、既存の一致するエントリを利用することができるようにする。したがって、アドレス変換回路内のストレージ・スペースは、それらの識別子が識別子グループに属する場合、それらの関連する識別子のみによって異なる、複数のアドレス変換が格納されるよう求める要求を回避することによって、節約される。
【００２８】
いくつかの実施例では、アドレス変換回路は、第１のアドレッシング・システムにおけるページ・テーブルに対する、第２のアドレッシング・システムにおけるページ・テーブルへのアドレス変換を格納するように構成されたトランスレーション・ルックアサイド・バッファである。
【００２９】
いくつかの実施例では、データ処理回路は、少なくとも２つのデータ処理デバイスを備え、少なくとも２つのデータ処理デバイスのうちの第１のデータ処理デバイスは、汎用中央処理ユニットであり、少なくとも２つのデータ処理デバイスのうちの第２のデータ処理デバイスは、汎用中央処理ユニットの代わりに、データ処理動作の少なくともいくつかを行うように構成されたスレーブ・デバイスである。
【００３０】
第２の態様から見ると、本発明は、データ処理の方法を提供し、方法は、メモリに格納されたデータ値を参照して、データ処理動作を行うステップであって、それぞれのデータ処理動作がそれに関連した識別子を有するステップと、データ処理回路によって行われたデータ処理動作に対応する、第１のアドレッシング・システムで使用された第１のアドレスと、メモリによって使用された、第２のアドレッシング・システムで使用された第２のアドレスとの間のアドレス変換を格納するステップであって、それぞれの格納されるアドレス変換が、対応する識別子といっしょに格納される、ステップと、無効化コマンドに応じて、選択され格納されたアドレス変換に無効化プロセスを行って、選択され格納されたアドレス変換を無効化するステップであって、選択され格納されたアドレス変換が、指定の第１のアドレス及び指定の識別子によって、無効化コマンドで特定される、ステップと、識別子グルーピング情報によってさらに構成された無効化プロセスを行うステップであって、識別子グルーピング情報が、複数の識別子を、識別子グループとして互いに関連付け、無効化プロセスが、指定の第１のアドレスに一致し、且つ指定の識別子が属する識別子グループ内のいずれかの識別子に一致する、全ての格納されたアドレス変換に適用される、ステップと、を含む。
【００３１】
第３の態様から見ると、本発明は、データ処理のための装置を提供し、装置は、メモリに格納されたデータ値を参照して、データ処理動作を行う手段であって、それぞれのデータ処理動作が、それに関連した識別子を有する、手段と、データ処理回路によって行われたデータ処理動作に対応する、第１のアドレッシング・システムで使用された第１のアドレスと、メモリによって使用された、第２のアドレッシング・システムで使用された第２のアドレスとの間のアドレス変換を格納する手段であって、それぞれの格納されるアドレス変換が、対応する識別子といっしょに格納される、手段と、無効化コマンドに応じて、選択され格納されたアドレス変換に無効化プロセスを行って、選択され格納されたアドレス変換を無効化する手段であって、選択され格納されたアドレス変換が、指定の第１のアドレス及び指定の識別子によって、無効化コマンドで特定される、手段と、識別子グルーピング情報によってさらに構成された無効化プロセスを行う手段であって、識別子グルーピング情報が、複数の識別子を、識別子グループとして互いに関連付け、無効化プロセスが、指定の第１のアドレスに一致し、且つ指定の識別子が属する識別子グループ内のいずれかの識別子に一致する、全ての格納されたアドレス変換に適用される、手段と、を備える。
【００３２】
本発明は、単に例示されるものとして、添付の図面で図示されるその実施例を参照して、さらに説明される。
【図面の簡単な説明】
【００３３】
【図１】一実施例におけるデータ処理装置を概略的に図示する図である。
【図２】一実施例におけるＴＬＢ無効化コマンドのブロードキャスティングを概略的に図示する図である。
【図３】一実施例における、ＣＰＵ及びＧＰＵによって使用された一組のゲスト物理アドレスの、メモリによって使用された物理メモリ・アドレスへのマッピングを概略的に図示する図である。
【図４Ａ】一実施例におけるアドレス変換回路の例示的な内容を示す図である。
【図４Ｂ】図４Ａのアドレス変換回路に格納された無効化ワイルドカード情報のより詳細な定義を示す図である。
【図５Ａ】一実施例におけるワイルドカード・ルックアップ情報の使用を図示する図である。
【図５Ｂ】一実施例におけるワイルドカード・ルックアップ情報の使用を図示する図である。
【図５Ｃ】一実施例におけるワイルドカード・ルックアップ情報の使用を図示する図である。
【図６】一実施例における装置によってとられる一連のステップを概略的に図示する図である。
【図７Ａ】無効化ワイルドカード情報がどのように提供されるかの３つの異なる構成で、３つの異なる実施例を概略的に図示する図である。
【図７Ｂ】無効化ワイルドカード情報がどのように提供されるかの３つの異なる構成で、３つの異なる実施例を概略的に図示する図である。
【図７Ｃ】無効化ワイルドカード情報がどのように提供されるかの３つの異なる構成で、３つの異なる実施例を概略的に図示する図である。
【図８】ハイパバイザが、無効化ワイルドカード情報を、仮想マシンによって発行された無効化コマンドに付加するように構成される一実施例における、データ処理回路を概略的に図示する図である。
【図９】一実施例におけるアドレス変換回路を概略的に図示する図である。
【図１０】一実施例の方法においてとられてもよい一連のステップを概略的に図示する図である。
【発明を実施するための形態】
【００３４】
図１は、一実施例におけるデータ処理装置１０を概略的に図示する。データ処理装置は、メモリ２６に格納されたデータ値を参照して、データ処理動作を行う、ＣＰＵ１１、ＣＰＵ１２、ＧＰＵ１３及び暗号化−エンジン１４を備える。これらのデータ処理ユニットは、システム相互接続２５を介して、メモリ２６に格納されたデータ値にアクセスする。実際には、図示された２つのＣＰＵ１１、１２よりも多いＣＰＵ（それらの間をつなぐ大きな点によって示される）が提供されてもよいが、図１の説明図では、見やすくするためにＣＰＵは２つのみ示される。データ処理ユニット１１〜１４のそれぞれは、仮想メモリ・アドレスを参照して、そのデータ処理動作を行うように構成され、各データ処理ユニットは、それによって、メモリ２６に格納されるページ・テーブルを参照して、メモリ２６によって使用された物理メモリ・アドレスに、それぞれのデータ処理ユニットによって使用された仮想メモリ・アドレスを変換するように構成される、メモリ管理ユニット１５〜１８をそれぞれ備える（すなわち、ＣＰＵ１１、１２はそれぞれＭＭＵ１５、１６を備え、ＧＰＵ１３、暗号化−エンジン１４はそれぞれ入出力ＭＭＵ（ＩＯＭＭＵ：Ｉｎｐｕｔ−Ｏｕｔｐｕｔ  ＭＭＵ）１７、１８を備える）。メモリ２６からのページ・テーブルの検索に関連したレイテンシを避けるために、それぞれのＭＭＵは、最後に使用された一組のアドレス変換をキャッシュするように構成されるトランスレーション・ルックアサイド・バッファ（ＴＬＢ）１９〜２２を備える。
【００３５】
データ処理装置１０は、いくつかの仮想マシンをホストするように構成され、これらの仮想マシンは、具体的にはＣＰＵ１１、１２によってホストされる。図１で示されるように、特定の仮想マシンが、特定のＣＰＵに関連付けられてもよいが（例えば、示されるように、ＶＭ１はＣＰＵ１に、ＶＭ２はＣＰＵ１２に）、例えば、仮想マシンがいくつかのＣＰＵによってホストされる、その他の構成も可能である。ハイパバイザも、ＣＰＵによってホストされ、図示された実例では、データ処理装置内の全てのＣＰＵによってホストされるが、これも、単に１つの例示的な構成を表すもので、ハイパバイザは、他の実例では、提供された全てのＣＰＵよりも少ないＣＰＵでホストされる可能性がある。したがって、ＣＰＵ１１、１２は、汎用データ処理ユニットであり、一方、ＧＰＵ１３及び暗号化−エンジン１４は、ＣＰＵに代わって特定のデータ処理タスクを実行するように構成された、より専用的なデバイスであることが理解されよう。例えば、ＧＰＵ１３は、特定のグラフィックス処理動作（例えば、映像の符号化及び復号化）を実行するために提供されてもよく、一方、暗号化−エンジン１４は、データの復号化及び暗号化を行うことができる。
【００３６】
一般的に、所定のＴＬＢにおけるエントリは、そのＴＬＢエントリに関連する仮想マシンを特定する識別子ＶＭＩＤでタグ付けされる。これによって、データ処理装置によってホストされる様々な仮想マシンのデータ処理動作間の切り替え、したがってそれらの仮想マシンに割り当てられたページ・テーブル間の切り替えが、ＴＬＢのフラッシュを必要とすることなく、可能になる。所定のＣＰＵが、その関連するＴＬＢにおけるＴＬＢエントリの無効化を望む場合、図２に図示されるように、そのＣＰＵ１１は、ページの無効化されるべき仮想アドレス（ＶＡ：Ｖｉｒｔｕａｌ  Ａｄｄｒｅｓｓ）、アドレス空間識別子（ＡＳＩＤ：Ａｄｄｒｅｓｓ  Ｓｐａｃｅ  ＩＤｅｎｔｉｆｉｅｒ）及び仮想マシン識別子（ＶＭＩＤ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  ＩＤｅｎｔｉｆｉｅｒ）を指定するＴＬＢ無効化命令をブロードキャストすることができる。したがって、無効化は、アドレス、ＡＳＩＤ及びＶＭＩＤ固有であり、例えば、ＶＭＩＤ１４におけるＡＳＩＤ３に対するページ０×１２０００の無効化が、ＶＭＩＤ１５におけるＡＳＩＤ３に対するページ０×１２０００を無効化しないようにする。
【００３７】
メモリ・システムの分散される性質は、このＴＬＢエントリがローカルＴＬＢ１９で無効化されるだけではなく、システム相互接続２５にわたるブロードキャストによって、いずれかの関連のＴＬＢエントリも、システムにおけるその他のＴＬＢ（図２には、説明を簡単にするために、ＴＬＢ２０、２１のみが示される）において次いで無効化されるということに反映される。ＧＰＵ１３も、ＣＰＵからプログラミング・コマンドを受信するとして、図２に示され、これらのコマンドは、ブロードキャストＴＬＢ無効化命令とは別に受信されることに留意されたい。したがって、これは、それを介してＣＰＵがＧＰＵをプログラムすることができる追加のインタフェースを表し、この追加のインタフェースは、その後、ＴＬＢにおけるエントリが無効化されるようにするために、ＣＰＵによって使用されることができる。これは、ＧＰＵ  ＴＬＢにおけるエントリが、ブロードキャスト無効化コマンドを「受け付けない」として印付けされる場合、使用されてもよい（図４Ｂに関連して以下により詳細に説明されるように）。
【００３８】
図３は、ＣＰＵにおける特定の仮想マシン識別子にとって可視のアドレス空間と、ＧＰＵにおける対応する仮想マシン識別子及び関連の仮想マシン識別子（以下により詳細に説明される）とに対する、ゲスト物理アドレス（中間物理アドレス）の物理メモリ・アドレスへの変換の概略図を提示する。図３の説明図は、特に、様々なレベルの特権が存在し、それに応じて、システムにおける特権の少ないデバイスからの保護を必要とする、メモリに格納されたデータがあるシステムのコンテキストにおいて理解されるべきである。図３に図示された実例では、ＧＰＵは、システム内の特権の多いデバイスであり、一方、ＣＰＵによってホストされた仮想マシン（識別子ＶＭＩＤ４を有する）は、システムにおいて特権の少ないエージェントである。簡単にするために図示されていないが、ゲスト物理アドレスが、仮想アドレスの変換によって（ステージ１のページ・テーブルを使用して）生成されたであろうことが、図３の説明図で暗に示されることにも留意されたい。
【００３９】
ハイパバイザも、もちろんシステムにおいて特権の多いエージェントであり、メモリにおける保護されたページへのアクセスを仲介するために使用される。したがって、ハイパバイザは、仮想マシンから、それに関連して、特定のデータ処理タスクが実行されるＧＰＵに、指定のページを露出することを求める要求を受信することができる。このために、ハイパバイザは、ＧＰＵによって使用されるための仮想マシンのステージ２のページ・テーブルをコピーし、次に、指定のページを仮想マシン自身のステージ２のページ・テーブルから削除する。結果として、これらのページは、ＧＰＵにとってはアクセス可能となり（それらの元のメモリ・アドレスで）、一方、発信側仮想マシンそのものにとってはアクセス不可となる。仮想マシン・ソフトウェアは、次に、ＧＰＵがそれらの位置に含まれたデータにアクセスできることを通常は除いて、ＧＰＵをポインタといっしょに、これらの保護されたページ内のバッファにプログラムする、ジョブを投入する、などのことができる。
【００４０】
通常、仮想マシンに割り当てられたデバイス（ＧＰＵ１３など）は、ステージ２のアドレス変換を共有して、このデバイスと仮想マシンが、同一のゲスト物理アドレス空間を見るようにする可能性がある。この状態では、デバイスＭＭＵが、仮想マシンのＣＰＵステージ２のページ・テーブルを共有すると、ＭＭＵは、同じＶＭＩＤを、ページ・テーブルから作成されたそのＴＬＢエントリに関連付ける必要がある。これは、ＣＰＵからの分散型仮想メモリ（ＤＶＭ：Ｄｉｓｔｒｉｂｕｔｅｄ  Ｖｉｒｔｕａｌ  Ｍｅｍｏｒｙ）ＴＬＢ無効化命令が、これらのエントリが、ＣＰＵ自身のＴＬＢにおけるエントリと同じ時点で正しく無効化されるようにするデバイスＭＭＵ  ＴＬＢエントリに一致することとなるのを意味する。これは、ＤＶＭブロードキャストＴＬＢ無効化が、ハイパバイザを通じたデバイスＭＭＵとのソフトウェア通信の代替え方法よりはるかに速くなることができるため、有利である。
【００４１】
しかし、この状態では、特権の少ない仮想マシンが、ＧＰＵに与えられた保護されたバッファを制御する場合、ＣＰＵのＭＭＵとＧＰＵのＭＭＵは、様々なステージ２のページ・テーブルを使用して、ＧＰＵが、ＣＰＵがアクセスできる全てにアクセスすることを、しかし、ＣＰＵのビューから削除された保護されたバッファにアクセスできることに加えて、可能にする必要がある。
【００４２】
仮想マシンが、ＧＰＵに、データの２つの異なるブロック、一方は上記のように（様々なページ・テーブル・マッピングを使用して、バッファを保護する）保護されたブロック、もう一方は非保護で、仮想マシンのステージ２のページ・テーブルを共有するブロックを同時に処理することを要求する場合、問題が生じる。非保護のバッファに関連するデータ処理は、共有されたページ・テーブルに割り当てられた仮想マシン識別子（図３の実例におけるＶＭＩＤ４）を有することとなる。しかし、保護されたバッファは、そうすることによって、いくつかのＭＭＵ実施が、２つの異なるソースからのマッピングを混同することによって、保護を無効にすることとなるので、異なるページ・テーブル（保護されたバッファへのアクセスを可能にする）に対して同じＶＭＩＤに関連付けられることができない。
【００４３】
したがって、必要なページ・テーブル・マッピングが確実に正しく考慮されるようにするために、保護されたデータが、異なるＶＭＩＤによってアクセスされることが必要である。しかし、先行技術のＴＬＢ無効化技術によれば、これが元のＶＭＩＤに対するＣＰＵからのＤＶＭブロードキャストＴＬＢ無効化に適合しないこととなるため、これは、追加のＶＭＩＤに関連付けられたエントリの上述の追加の手動ソフトウェア無効化を必要とするであろう。これは、ハイパバイザ・トラップを伴って、動作を低下させる可能性がある。
【００４４】
しかし、本技術は、１回のＤＶＭブロードキャストＴＬＢ無効化が、発信側仮想マシンに一致するＶＭＩＤ、及び仮想マシン（すなわち、図３の実例におけるＧＰＵ）に割り当てられたデバイス内で割り当てられた「２次的な」ＶＭＩＤに対するエントリを無効化するために使用されることを可能にし、これによって動作を高める、という修正をＭＭＵに加えることによって、この問題に取り組む。
【００４５】
本技術によって導入される修正は、システムのハイパバイザが、特定の発信側仮想マシンに関連付けられた、関連のＶＭＩＤのブロックを割り当てることを可能にする「ワイルドカード」の修正である。例えば、この「ワイルドカード」は、図４Ａの例示的な構成で示されるように、ＴＬＢエントリに、フィールドとして格納されてもよい。これらのＴＬＢエントリを利用するデータ処理タスク（すなわち、所定のページ・アドレスに対して、このＴＬＢにおいてルックアップを行う）は、ＴＬＢエントリを、ページ・アドレス及びＶＭＩＤに正確にマッチングさせ、ＭＭＵが、２つの異なるページ・テーブルの保護を実施できるようにする。しかし、着信側ＤＶＭ無効化命令は、ワイルドカードを使用して、ＴＬＢエントリに対してマッチングを行うことができ、１回の無効化が、複数のＶＭＩＤ及び両方のページ・テーブルに影響を及ぼすことができるようにする。余談として、図４Ａで構成されたＴＬＢエントリも、アドレス空間識別子ＡＳＩＤを含み、また受信された無効化命令が、ＡＳＩＤ固有であるように、又はＡＳＩＤ値が、無効化のために無視されるように、構成されることができることに留意されるべきである。
【００４６】
図４Ａに示された、ＴＬＢエントリにおける無効化ワイルドカード・フィールドは、図４Ｂで提示されるように構成される。したがって、図４Ｂで見られるように、無効化ワイルドカード・フィールドの上位ビットは、ワイルドカードが、ＶＭＩＤ値の最上位ビット（「トップ」）に適用されるべきであるか、ＶＭＩＤ値の最下位ビット（「ボトム」）に適用されるべきであるかを指定する。次に、無効化ワイルドカード・フィールドの下位２ビットは、ＶＭＩＤ値において無視されるべきビット数を指定する。示されるように、このワイルドカード値が「００」に設定されると、「ワイルドカーディング」機能が停止され、ＶＭＩＤ値の完全一致が、無効化命令に応じて要求される。ＶＭＩＤ値の１又は２ビットは、ワイルドカード値に対して、それぞれ「０１」と「１０」の値を指定することによって、無視されてもよい。ワイルドカーディングが、ＶＭＩＤ値の最下位ビットに適用される場合、ハイパバイザは、関連するＶＭＩＤを連続するペアで割り当て（例えば、図４Ａの実例におけるＶＭＩＤ４とＶＭＩＤ５）、又は代替えとして、ワイルドカードが、ＶＭＩＤ値の最上位ビットに適用される場合、これは、ハイパバイザが、ＶＭＩＤ空間を、「ミラーリングされた」グループに分割して割り当てることを可能にする。例えば、１６−ビットＶＭＩＤの場合、仮想マシンは、ＶＭＩＤ０×３００を使用する可能性があり、その保護されたデバイスＭＭＵデータ処理ストリームは、０×８３００を使用する可能性がある。「１１」のワイルドカード値の追加の構成も提供され、特定のＴＬＢエントリが、ブロードキャスト無効化命令に対して保護され、それを受け付けないようにすることを可能にする。上述のように、これは、例えば、周辺データ処理ユニット（図１の実例におけるＧＰＵ１３又は暗号化−エンジン１４）のうちの１つのＩＯＭＭＵに提供されたＴＬＢの特定の内容を「保護」するために使用されて、この内容が、独立したインタフェースを介して、ＣＰＵから受信された直接プログラミング命令によってのみ無効化されることができ、ブロードキャスト無効化命令に応じては無効化されることができないようにする。
【００４７】
したがって、この構成は、ハイパバイザが、所定の仮想マシンに対してＶＭＩＤグループを割り当てることを可能にして、１つのＶＭＩＤが、仮想マシンによって（直接ＣＰＵから、又は仮想マシンの制御下のデバイスを介して）開始される「正常な」トランザクションに使用できるようにし、一方、その他のＶＭＩＤは、保護を必要とする関連のデータ処理タスクで使用できるようにする。この方法で追加として構成されることができる「保護された」ＶＭＩＤの数は、このため、提供されたワイルドカードのサイズに応じて変わる可能性があるが、図４Ａ、４Ｂの実例では、４つのＶＭＩＤから成るグループであることが分かる。図４ＡのＴＬＢにおいて示された例示的なエントリを参照すると、ページ・アドレス＜Ａ＞及びＶＭＩＤ４を指定する着信側ＤＶＭ無効化は、テーブルにおける第１のエントリが無効化されるようにするであろうが、ページ・アドレス＜Ａ＞及びＶＭＩＤ５を指定する着信側ＤＶＭ無効化は、テーブルにおける第１のエントリに関連した無効化ワイルドカード・フィールドが、ＶＭＩＤ値の１最下位ビットが無視されるべきであり、したがって、無効化命令がＶＭＩＤ４を指定するか、又はＶＭＩＤ５を指定するかについて、この無効化命令が、ＴＬＢテーブルにおける第１のエントリに対してマッチングを行う、ということを示してから、そのようにするであろう。同様に、図４Ａで示されるＴＬＢテーブルにおける第３のエントリも、同じ無効化ワイルドカード値（００１）のおかげで、ページ・アドレス＜Ａ＞及びＶＭＩＤ４か、又はページ・アドレス＜Ａ＞及びＶＭＩＤ５を指定する着信側ＤＶＭ無効化命令によって、無効化されるであろう。反対に、図４Ａで示されるＴＬＢテーブルにおける第２のエントリは、無効化ワイルドカード・フィールドが、完全一致が必要とされることを示すことから、ページ・アドレス＜Ｂ＞及びＶＭＩＤ５を指定するＤＭＶ無効化命令によってのみ無効化されることができる。
【００４８】
次に、図４Ａ、４Ｂに関連して説明された実施例の変形例が、図５Ａ〜５Ｃに関連して説明される。２つのＴＬＢエントリが、同じページ・アドレスに対して、しかし異なるＶＭＩＤ、すなわち第１のエントリと第３のエントリで作成されたことは、図４Ａの例示的なＴＬＢテーブルにおける第１と第３のエントリの比較によって理解されよう。ＶＭＩＤ識別子が一つにグループ化される本発明のコンテキストでは、１つのみのＴＬＢエントリが必要とされ、したがってＴＬＢ容量をより有効に使用できるようになる状態が実際にある。図５Ａは、ページ・アドレス、ＶＭＩＤ値及びワイルドカード無効化フィールド用のフィールドのみが示される図４Ａで示されたＴＬＢエントリの簡略形を示す。しかし、この変形例では、ＴＬＢエントリ内の追加のフィールド、すなわち、「ワイルドカード・ルックアップ」のフィールドが付加されている。このワイルドカード・ルックアップ値がゼロである場合、「正常な」完全マッチングＴＬＢルックアップ挙動がもたらされる（すなわち、ＶＭＩＤ値とページ・アドレスの完全一致が要求される）。したがって、図５Ａの上部に示された実例では、着信側アドレス＜Ｅ＞とＶＭＩＤ４とに対してルックアップが行われ、これは、ＶＭＩＤ値が一致しないことからＴＬＢミスとなるであろう。これは、次に、メモリにおけるページ・テーブルから要求された変換を検索するページ・テーブル・ウォークをトリガする。この結果として、次にこの実施例では、生成されたエントリが、ＶＭＩＤ５の代わりにＶＭＩＤ４をもつのではなく、ＴＬＢに既にあるエントリと同じであり、ＶＭＩＤ４及びＶＭＩＤ５が、ワイルドカード無効化フィールドによって定義されるように、同じワイルドカード処理されたグループに属する、ということが判断される。この状態では、次に、ワイルドカード・ルックアップ値は、ルックアップにおけるＶＭＩＤマッチ動作を緩めることとなる１に更新されることができる。したがって、アドレス＜Ｅ＞及びＶＭＩＤ４に対して、さらなるルックアップが行われると、このルックアップもこのエントリにおいてヒットとなることができる。この状態に対応するアドレス空間ビューは、アドレスＥにアクセスするＶＭＩＤ４とＶＭＩＤ５の両方を示す図５Ｂで概略的に図示される。しかし、ＶＭＩＤ４がアクセスしないアドレスＦに、ＶＭＩＤ５が、さらに追加的にアクセスすることに留意されたい。図５Ｃを参照すると、ＶＭＩＤ５に関連付けられたこのアドレスＦに対してルックアップが初めて行われると、図示されたＴＬＢエントリが、アドレスＦ及びＶＭＩＤ５に対して生成される結果となり、ここで、このアドレスが厳格にＶＭＩＤ５のみに属し、このアドレスに対するＶＭＩＤ４との関連付けはないことから、ワイルドカード無効化値は、完全一致を示すように設定される。したがって、アドレスＦ及びＶＭＩＤ４に対する次のルックアップが行われる場合、このエントリに対する更新は行われないこととなる（すなわち、ワイルドカード・ルックアップ値は、ゼロのままであり、アドレスＦ及びＶＭＩＤ４のルックアップは、このエントリに対しては常にミスとなることとなる）。
【００４９】
図６は、ブロードキャスト無効化コマンドがＭＭＵによって受信される場合に、一実施例の方法においてとられる一連のステップを概略的に図示する。フローはステップ５０で始まり、このプロセスは、無効化コマンドが受信されるまで待機する。このような無効化コマンドが受信されると、フローはステップ５１に進み、ワイルドカード情報が適用可能であるかどうかが判断される。言い換えれば、ワイルドカード情報が、ＶＭＩＤ値がマッチングされる方法（ＴＬＢエントリそのものに、グローバルに定義された値として、又は無効化コマンドそのものの一部として格納される）を修正するのに使用できるかどうかが判断される。ワイルドカード情報が適用可能でない場合、フローはステップ５２に進み、ＶＭＩＤ値の完全一致が、ＴＬＢヒットの結果となるために要求される。次にステップ５３では、指定のアドレス及びＶＭＩＤ値に対して、確かにＴＬＢヒットとなったかどうかが判断される。ＴＬＢヒットとなった場合、次にステップ５４で、ＴＬＢにおける特定されたエントリが無効化される。フローは、次にステップ５０に戻り、次の無効化コマンドが受信されるまで待機する。しかし、ステップ５３で、指定のアドレス及びＶＭＩＤ値に対してＴＬＢヒットとならない場合、次にフローは、ステップ５５（ＴＬＢ無効化が行われない）を経てステップ５０に進む。
【００５０】
しかし、ステップ５１で、ワイルドカード情報が適用可能であると判断されると、次にステップ５６で、そのワイルドカード情報が、実際にはＶＭＩＤの完全一致が要求されることを示す「００」を指定するかどうかが判断され、フローは、５２を経て、上記のように進む。しかし、ワイルドカード情報が「００」を指定しない場合、次にステップ５７で、無効化ワイルドカード情報が、ブロードキャストＴＬＢ無効化がこのエントリに対して無視されるべきであることを示す「１１」を指定するかどうかが判断され、フローは、ステップ５５を経て進み、ＴＬＢ無効化は行われない。しかし、無効化ワイルドカード情報が「０１」又は「１０」を指定する場合、次にフローは、ＴＬＢマッチが起こったと判断される場合にＶＭＩＤ値の指定のビットが無視される（図４Ｂで定義されるように）ステップ５８を経て進み、流れは上記のようにステップ５３に続く。
【００５１】
図７Ａ、７Ｂ及び７Ｃは、無効化ワイルドカード情報が提供されてもよい複数の方法を示す３つの異なるＭＭＵ構成を概略的に図示する。図７Ａに示された構成は、図４Ａ及び図５Ａ〜５Ｃに関連して上に説明された構成に対応し、無効化ワイルドカード情報が、それぞれのＴＬＢエントリに関連付けて個々に格納される、この実施例では、ＭＭＵ１００におけるＴＬＢ１０１の制御ユニット１０２は、無効化コマンドが受信された時を特定し、アドレス・マッチング回路１０３をそれに従って制御し、ＴＬＢエントリ１０４から受信された無効化ワイルドカード情報が、無効化コマンドで受信されたＶＭＩＤの、ＴＬＢエントリに格納されたＶＭＩＤとのマッチングを修正するために使用される必要があるようにする。反対に、ＭＭＵ１００内でルックアップが行われると、制御ユニット１０２は、アドレス・マッチング回路１０３を、受信されたＶＭＩＤと、ＴＬＢエントリ１０４に格納されたＶＭＩＤとの間の厳格なマッチングを要求するように制御する。図７Ｂに示された実施例では、ＭＭＵ１１０は、無効化ワイルドカード情報が、ＴＬＢ１１１のＴＬＢエントリ１１４に、それぞれ個々のエントリに関連付けて格納されないが、代わりに、ＭＭＵ１１０によって受信された全ての無効化コマンドに関して使用するグローバルにアクセス可能なレジスタ１１５で定義されることを除いて、図７ＡのＭＭＵ１００とほぼ同様に構成される。したがって、この実施例では、制御ユニット１１２が、無効化コマンドが受信されたことを特定し、アドレス・マッチング回路１１３を、無効化ワイルドカード情報を利用するように構成すると、アドレス・マッチング回路１１３は、ＴＬＢエントリ１１４から読み出された特定のＴＬＢエントリに関連付けてではなく、無効化ワイルドカード・レジスタ１１５から、この無効化ワイルドカード情報を受信する。グローバルにアクセス可能な無効化ワイルドカード・レジスタ１１５が、図７Ｂの実施例において、ＭＭＵ１１０の形成部分として図示されるが、これは必須ではなく、例えば、無効化ワイルドカード・レジスタ１１５は、例えば、そのレジスタ１１５が、例えば複数のＭＭＵにとってより一般的にアクセス可能となるように、様々なその他の位置に、データ処理装置によって提供される可能性があることにも留意されるべきである。最後に、図７Ｃは、それ自体が、無効化ワイルドカード情報をコマンドの一部として含む無効化コマンドに応じて構成されるＭＭＵ１２０を概略的に図示する。したがって、このような実施例では、ＴＬＢエントリ１２４に対して一致が確認されたかどうかを判断する際に、無効化ワイルドカード情報を利用するようにアドレス・マッチング回路１２３を適宜構成するために、ＴＬＢ１２１の制御ユニット１２２は、無効化コマンドが受信されたことを特定し、且つその無効化コマンドから無効化ワイルドカード情報を引き出すように、構成される。
【００５２】
図７Ａ〜７Ｃに図示され、また上で説明されたように、一致（すなわち、ＴＬＢヒット）が確認されたか否かを判断するアドレス・マッチングが、ＶＭＩＤ値に基づいて行われるが、ＡＳＩＤ値に基づいて行われてもよいということに留意することは有意義である。実際には、上述のように、本明細書で明示的に説明された実施例における変形例では、ＡＳＩＤ値は、実際、一つにグループ化される「識別子」であってもよく、したがって、１つのＡＳＩＤ値を指定する無効化コマンドは、複数のＡＳＩＤ値を有するエントリ（しかし、その他の点では同じ）に適用するよう、本技術によって拡張されてもよい。
【００５３】
図８は、関連するＶＭＩＤ値及びワイルドカード情報（図７Ｃに示された実施例におけるＭＭＵ１２０によって受信されるような）でのＴＬＢ無効化コマンドの生成に関連してＣＰＵ１３０を概略的に図示する。ＣＰＵ１３０は、仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）１３１及びハイパバイザ１３４をホストしている。この実施例では、仮想マシン１３１は、仮想マシン１３１が生成するＴＬＢ無効化コマンドに関連付けられる必要のある特定のアドレス空間識別子（ＡＳＩＤ１３２）と、仮想マシン１３１は無効化を望むが、この仮想マシンがデータ処理システムの特権の少ない構成要素であり、代わりにこの情報の付加が、特権のあるハイパバイザ１３４に任されることから、仮想マシンそのものでは、いずれの仮想マシン識別子（ＶＭＩＤ）又はワイルドカード情報も、無効化コマンドの最後に付加しないアドレス１３３と、を知っている。ハイパバイザ１３４は、仮想マシン１３１がアクセスしないシステム・レジスタ１３５で、ＶＭＩＤ情報１３６及びワイルドカード情報１３７を保持し、ＴＬＢ無効化コマンドが仮想マシン１３１によって生成されると、ハイパバイザ１３４は、この無効化コマンドを「傍受」し、適切なＶＭＩＤ情報（発信元を仮想マシン１３１として特定するための）、及び適切なワイルドカード情報１３７を付加する。したがって、これは、ＶＭＩＤ及びワイルドカード情報の提供に関連した高レベルのセキュリティを維持する。
【００５４】
図９は、図５Ａ〜５Ｃの実施例に関する上記の機能性をサポートする実施例におけるＴＬＢ１４０の構成を概略的に図示する。ルックアップ要求がＴＬＢ１４０によって受信されると、制御ユニット１４１は、ＴＬＢ１４０のＴＬＢエントリ１４２間でルックアップを開始するよう構成される。ここでは、簡単にするために、ダイレクトマッピングされたＴＬＢの実例のみが説明されるが、当業者であれば、本技術が、同様にうまく適用されてもよいセット−アソシアティブ方式のＴＬＢエントリ・ストレージもよく知っているだろう。しかし、このダイレクトマッピングされた実施例では、保留ルックアップ・アドレス１４３は、ＴＬＢエントリ１４２にインデックス化するために使用され、次に１４４で、特定されたＴＬＢエントリが読み出され、一時的に保持される。次に、制御ユニット１４１の制御下で構成されたエントリ・マッチング・ロジック１４５は、要求されたルックアップ（ページアドレス、ＶＭＩＤなど）が、読み出されたＴＬＢエントリ１４４と一致するかどうかを判断する。要求されたルックアップが、読み出されたＴＬＢエントリ１４４と一致する場合、次に、このエントリは、単純に返信アドレス変換として返信されることができる。しかし、要求された一致が確立されない場合、次に、メモリにおけるページ・テーブルから要求されたアドレス変換を検索するページ・テーブル・ウォーク・プロセス１４６が開始される。ページ・テーブル・ウォーク応答が戻ると、制御ユニット１４１は、エントリ・マッチング・ロジック１４５を、ページ・テーブル・ウォーク応答から返信されたエントリが、事実、ＶＭＩＤ値は異なっているが、それにも関わらず同じＶＭＩＤグループに属する（すなわち、上記の方法におけるワイルドカード情報のおかげで、関連するＶＭＩＤ値がある）という以外は、読み出されたＴＬＢエントリ１４４に一致するかどうかを判断するように制御する。ページ・テーブル・ウォーク応答から返信されたエントリが読み出されたＴＬＢエントリ１４４に一致すると、次に、制御ユニット１４１は、図５Ａに関連した上記の方法で、ＴＬＢエントリ１４２に、読み出されたＴＬＢエントリに関連付けて格納されたワイルドカード・ルックアップ値を更新するように構成される。次に、読み出されたＴＬＢエントリ１４４も、返信アドレス変換として返信される。しかし、ページ・テーブル・ウォーク応答が、異なるエントリを、いずれかのその他の方法で返信する場合、次に、このエントリは、保留ルックアップ・アドレス１４３によって特定されたインデックスにあるＴＬＢエントリに取って代わるようにされ、ページ・テーブル・ウォーク応答そのものから返信されたエントリは、返信アドレス変換として返信される。
【００５５】
図１０は、ルックアップがＴＬＢによって受信される時に、一実施例の方法においてとられる一連のステップを概略的に図示する。フローは、ステップ１５０で始まり、そこでは、フローは、ルックアップが受信されるまで、それ自体でループする。次に、フローは、ステップ１５１に進み、ＴＬＢにおいてルックアップが行われる。次に、ステップ１５２で、ワイルドカード・ルックアップ・フラグが、ＴＬＢにおいて、特定された１つのエントリ（又は複数のエントリ）に対して設定されたかどうかが判断される。ルックアップ・フラグが設定された場合、次に、フローは、マッチング回路を、ルックアップで一致を求める時に、ＶＭＩＤの指定されたビットを無視するように構成する、ステップ１５３を経る。次にステップ１５４で、読み出されたＴＬＢエントリと要求されたルックアップとの間で一致が確認されたかどうかが、マッチング回路によって判断される。一致が確認されると、次に、ステップ１５５で、一致した変換が返信され、フローはステップ１５０に戻る。
【００５６】
しかし、ステップ１５４で一致が確認されない場合、次に、フローはステップ１５６に進み、ページ・テーブル・ウォーク・プロセスが開始される。次に、ステップ１５７で、ページ・テーブル・ウォーク応答が返信されると、その応答が、変換が得られないことを示すかどうかが判断される。変換が得られない場合は、次に、対応する「変換なし」応答が、ステップ１５８で返信され、フローはステップ１５０に戻る。しかし、要求されたルックアップで変換が可能である場合、次に、フローはステップ１５９に進み、ページ・テーブル・ウォーク応答が、読み出されたＴＬＢエントリとは、ＶＭＩＤ値のみ異なるかどうか、また、それぞれのＶＭＩＤ値が、互いに関連付けられているかどうか、が判断される。このような状態ではない場合、次に、フローは、ページ・テーブル・ウォーク応答によって生成されたエントリが、新しいＴＬＢエントリを作成するために使用されるステップ１６０を経て、ステップ１６１で、このエントリは、要求された変換として返信され、次に、フローはステップ１５０に戻る。しかし、ページ・テーブル・ウォーク応答が、特定されたエントリとは、ＶＭＩＤ値のみ異なっており、ＶＭＩＤ値が、互いに関連付けられている（すなわち、それらのＶＭＩＤ値が１つのグループに属する）ことが特定される場合、次に、フローはステップ１６２に進み、ワイルドカード・フラグ・ルックアップが対応するエントリに対して設定され、いずれかのＶＭＩＤ値に関するさらなるルックアップ要求が、格納されたＴＬＢエントリにおいてヒットとなることができるようにする。次に、フローは、このエントリがアドレス変換として返信されるステップ１６１を経て、フローは、ステップ１５０に進む。
【００５７】
全体の概要では、本技術は、第１のアドレッシング・システムで使用された第１のアドレスと、第２のアドレッシング・システムで使用された第２のアドレスとの間のアドレス変換がローカルに格納される、データを処理するデータ処理装置及び方法を提供する。それぞれの格納されるアドレス変換は、対応する識別子といっしょに格納される。選択され格納されたアドレス変換において、無効化プロセスを行うよう命令する無効化コマンドに応じて、選択され格納されたアドレス変換が無効化され、ここで、選択され格納されたアドレス変換は、指定の第１のアドレス及び指定の識別子によって、無効化コマンドで特定される。無効化プロセスは、複数の識別子を、識別子グループとして互いに関連付ける識別子グルーピング情報によって、さらに構成され、無効化プロセスは、指定の第１のアドレスに一致し、且つ指定の識別子が属する識別子グループ内のいずれかの識別子に一致する、全ての格納されたアドレス変換に適用される。
【００５８】
本発明の特定の実施例が本明細書で説明されたが、本発明は、それらに限定されるものでなく、多くの修正及び追加が、本発明の範囲内で行われてもよいことが明らかであろう。例えば、以下の従属請求項の特徴と独立請求項の特徴との様々な組み合わせが、本発明の範囲を逸脱することなく行われる可能性がある。
【図１】
0006509241.tif 000002
【図２】
0006509241.tif 000003
【図３】
0006509241.tif 000004
【図４Ａ】
0006509241.tif 000005
【図４Ｂ】
0006509241.tif 000006
【図５Ａ】
0006509241.tif 000007
【図５Ｂ】
0006509241.tif 000008
【図５Ｃ】
0006509241.tif 000009
【図６】
0006509241.tif 000010
【図７Ａ】
0006509241.tif 000011
【図７Ｂ】
0006509241.tif 000012
【図７Ｃ】
0006509241.tif 000013
【図８】
0006509241.tif 000014
【図９】
0006509241.tif 000015
【図１０】
0006509241.tif 000016